WO2008049938A1 - Comunicación entre múltiples secuencias de procesamiento en un procesador - Google Patents

Comunicación entre múltiples secuencias de procesamiento en un procesador Download PDF

Info

Publication number
WO2008049938A1
WO2008049938A1 PCT/ES2006/070162 ES2006070162W WO2008049938A1 WO 2008049938 A1 WO2008049938 A1 WO 2008049938A1 ES 2006070162 W ES2006070162 W ES 2006070162W WO 2008049938 A1 WO2008049938 A1 WO 2008049938A1
Authority
WO
WIPO (PCT)
Prior art keywords
processing sequence
instruction
log file
core
indicator
Prior art date
Application number
PCT/ES2006/070162
Other languages
English (en)
French (fr)
Inventor
Enric Gibert
Josep M. Codina
Fernando Latorre
José Alejandro Piñeiro
Pedro López
Antonio González
Original Assignee
Intel Corporation
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 Intel Corporation filed Critical Intel Corporation
Priority to CN200680056225.2A priority Critical patent/CN101529377B/zh
Priority to JP2009524212A priority patent/JP2010500679A/ja
Priority to PCT/ES2006/070162 priority patent/WO2008049938A1/es
Priority to US12/446,930 priority patent/US8261046B2/en
Priority to DE112006004005T priority patent/DE112006004005T5/de
Publication of WO2008049938A1 publication Critical patent/WO2008049938A1/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Definitions

  • nuclei by order may be less effective than nuclei without order in the use of ILP. That is, while processors in order can effectively manage applications in parallel, applications with a single processing sequence and portions of serial code in parallel applications may not behave effectively in such architectures. Accordingly, certain processors can separate or divide said applications in order to equate detailed sequence of processing sequences in order to maintain minimal complexity while improving efficiency.
  • Figure 1 is a flow chart of a method according to an embodiment of the present invention.
  • FIG. 2 is a block diagram of a marker frame according to an embodiment of the present invention.
  • Figure 3 is a block diagram of an implementation of the instruction execution according to an embodiment of the present invention.
  • Figure 4 is a flow chart of a method for generating flow mark information in accordance with an embodiment of the present invention.
  • Figure 5 is a block diagram of a system according to an embodiment of the present invention.
  • a multiplicity of processing sequences that are performed or executed in a processor core can access values contained in a log file associated with another processing sequence.
  • the embodiments can provide efficient operation with multiple chains or simultaneous processing sequences (SMT - "simultaneous multithreading").
  • first and second processing sequences can be carried out in a single processor core in order, such as an SMT processor.
  • a control can be provided in order to make possible a producer / consumer model in which the data values generated by the first processing sequence by the second processing sequence can be accessed, and vice versa.
  • Each of the processing sequences may be able to read the state of the structural or architectural records of the other processing sequence during the execution,
  • a synchronization control can be provided in such a way that the sequence of consumer processing read the appropriate data in the production processing sequence.
  • a scoreboard structure such as that which can be used in association with the issuance or assignment of instructions, may include synchronization indicators. More specifically, each entry in the scoreboard structure for a record of a first processing sequence may include a synchronization indicator for the corresponding record of the second processing sequence, and vice versa. The use of this indicator can prevent a consumer instruction from continuing until the corresponding production instruction of the other processing sequence is carried out, such that the desired value is present in the producer's log file.
  • certain embodiments may provide flow information or associated with the instructions.
  • indications or flow marks may be provided along with the content of an instruction.
  • an instruction may include an operation code, source and destination operands, as well as flow marks for each of the source and destination operands.
  • various mechanisms may be responsible for the generation of flow marks or for the corresponding instructions.
  • a compiler support can be provided in such a way that it is possible to generate said stream marks or during compilation according to the instruction support provided in an instruction set architecture (ISA - "instruction set architecture" .
  • an optimization mechanism such as a hardware or software optimization device, can analyze the flow or code control and generate flow marks accordingly. In this way, multiple processing sequences can be synchronized with a degree of shredding or shredding by instructions.
  • a mechanism of deposit of processing sequence of low organizational activity can take advantage of the access of the log files of other sequences of processing. In this way, the expense of copying all the records of the context of a depositing processing sequence to the context of a depositing processing sequence can be avoided. This is so since it is possible to mark the appropriate consuming instructions contained in the deposit processing sequence, so that they read, instead, operands from the register file of the depositing processing sequence.
  • certain embodiments may be used in association with the support of speculative operation with multiple processing sequences, as well as with the deposit of the processing sequences. Still further, certain embodiments may be used in association with the so-called aid processing sequences, which may be initiated in order to handle specific tasks that take place during the execution of another processing sequence.
  • aid processing sequences which may be initiated in order to handle specific tasks that take place during the execution of another processing sequence.
  • the scope of the present invention is not limited in this regard, and that logging access and synchronization mechanisms can be used in many different implementations, including different processor architectures, systems and so on.
  • the method 10 can be used to carry out an instruction of a first chain or processing sequence that can access the information contained in a log file of a second processing sequence.
  • method 10 can begin with the receipt of an instruction from the first processing sequence for execution (block 20). For example, üii uc tuna cCUU ⁇ uc ⁇ I ⁇ U UC C IOÜCS ut u ⁇ l pi ' u C cS ⁇ uux p ucuc i cti a decode the instruction.
  • the instructions may include an operation code, intended to indicate a type of operation to be carried out, as well as an identification of the source and destination operands.
  • the instruction may include information indicating whether any of the source / destination operands are to be accessed from a remote log file, for example, a log file associated with a second processing sequence, or if it is to be provided thereto.
  • a remote log file it should be understood that a local log file and a remote log file may be present in a single core of a processor, such as a multiple processor or many Cores that include, for example, a certain number of cores in order.
  • any operand of the instruction source is to be obtained from a distant processing chain or sequence (rhombus 30). That is, it can be determined, based on the flow mark information (in one of the embodiments), if any source operand is to be obtained from a distant processing sequence, for example, from a second processing sequence that It includes a log file contained within the SMT core. If so, the control goes to rhombus 40, where it can be determined whether the synchronization indicators associated with said operand or all said operands of distant source are active.
  • a marker box or other storage that identifies status information relative to the availability of values in given records can be analyzed, in order to determine if all source operands to be obtained from the remote record file include the desired values. . In other words, it can be determined whether a production processing sequence has completed an operation on which an instruction dependent on the first processing sequence depends.
  • the synchronization indicator (s) is not active, the rhombus 40 can be fed back or closed on itself in order to carry out the instruction until they are present.
  • the synchronization indicators When the indicators of
  • the control passes to block 60, in which the instruction can be issued for its execution.
  • an instruction issuer such as an allocation device, a reserve station or other structure that includes a scoreboard or similar state storage, can issue the instruction to be carried out or executed.
  • an execution unit such as an entire unit, a floating point unit (FPU) or other similar unit, can access the source operands indicated from the log file. specifically identified (block 70).
  • FPU floating point unit
  • the preparation or disposal indicator associated with the destination register can be adjusted accordingly.
  • the synchronization indicator of this register can be reset in order to indicate that the value must not be synchronized. If, instead, it is indicated that the destination operand is to be used remotely, it is possible to set a synchronization indicator of the remote log file accordingly (eg, the second one). In addition, an arrangement indicator of the local log file can be set. In this way, both a distant processing sequence and the local processing sequence can access the destination operand as a source operand, which allows efficient producer / consumer operation, both within the same processing sequence and between sequences of processing.
  • FIG. 2 a block diagram of a marker frame according to an embodiment of the present invention is shown therein, which includes support for synchronization between multiple processing sequences.
  • a marker box 100 which may consist of a storage present within the core of a processor, may include entries intended to store status information associated with the records of multiple file files.
  • each of a first processing sequence and a second processing sequence may include entries for each existing record in its log file. So, as shown in the
  • a first processing sequence may include a plurality of inputs 1 12a-1 12n (generically, input 1 12). Each entry 12 may be indexed by the use of a registration identifier (ID), and each entry may include status information.
  • ID registration identifier
  • a preparation or arrangement indicator 1 14a-1 14n (generically, arrangement indicator 1 14) and a synchronization indicator 1 16a-1 16n (generically, indicator of synchronization 116).
  • the disposition indicator 114 can be used to indicate when the corresponding operand that is stored in the identified register is ready to be used by consuming operations of that processing sequence, while the synchronization indicator 1 16 can indicate whether an operand distant to which it is to be accessed by the local processing sequence, it is ready for access by the local processing sequence, that is, if a production instruction of the production processing sequence (distant) has been carried out and stored the appropriate value in the desired position.
  • a second processing sequence 120 may also include a plurality of entries 122a-122n (generically, entry 122), each of which is associated with a record of its log file.
  • each input 122 may include a corresponding arrangement indicator 124a-124n (generically, arrangement indicator 124), as well as a synchronization indicator 12óa-126n (generically, synchronization indicator 126).
  • arrangement indicator 124a-124n generatorically, arrangement indicator 124
  • synchronization indicator 12óa-126n generatorically, synchronization indicator 126
  • processor architectures may have different control configurations to analyze the instructions and issue them to one or more processor execution units.
  • Some processors may include allocation devices, backup stations, scorecards, controllers and other varieties of logic in order to determine when a decoded instruction has available several resources that are necessary for the execution, and select, either according to a criterion by order or out of order, the instruction to be provided to an execution unit.
  • the marker frame 100 may be part of an instruction emitter, in any form that is available in a given processor architecture, or it may be connected to said instruction emitter or to another logic similar for that purpose. to allow the issuance decisions of the instructions to be made based on the information presented in the marker table 100.
  • a system 200 may include an execution unit 230 that performs various operations on the incoming data.
  • a first log file 220 and a second log file 225 may be connected to the execution unit 230.
  • the first log file 220 may be associated with a first processing sequence
  • the second log file 225 may be associated with a second processing sequence.
  • an instruction 205 from the first processing sequence and to be carried out by the execution unit 230 may include an operation code in order to identify a certain type of instruction, for example, an operation of addition, multiplication or other operation.
  • Instruction 205 also identifies a destination for the result, namely a destination operand, which may correspond to a first register, rax. Associated with this destination operand there is a location indicator, which is identified in Figure 3 as DISTING DESTINATION ("REMOTE_DEST).
  • this location indicator has a value of one, indicating that the destination operand must be accessed later by a distant processing sequence, that is, the second processing sequence in the example of Figure 3, and can also be accessed by consuming instructions existing in the local processing sequence
  • instruction 205 also identifies two source operands, in particular a first source operand (SRC l) that accesses an rbx register, because a location indicator of this source operand (that is, SRCJMSTANTE ⁇ "REMOTE_SRC”) is set to a value of one, it is possible to access this source operand from a remote log file, that is, log file 225.
  • SRC l first source operand
  • REMOTE_SRC REMOTE_SRC
  • instruction 205 includes a second source operand (SRC2) that is intended to access a second register, rcx, which can be obtained from the first register file 220, according to the local indicator for this second source operand (that is, SRC_DISTANTE) is set to a value of zero.
  • SRC2 second source operand
  • instruction 205 may not continue until it is active (for example, it has been set ) a synchronization indicator associated with that source operand.
  • tc can iiu p StahlScg uu Sc COn lá. ma u uuCion 205 lia. ⁇ > The one that ÜC ciic ueu uc also activates a readiness indicator associated with the second source operand.
  • the marker frame 100 includes a first input 1 12b, associated with the first source operand, and a second input 1 12c, associated with the second operating
  • instruction 205 can be issued to the execution unit 230. This is so since the appropriate values are present. in the rbx registers, of the first log file 225, and rcx, of the second log file 220. Accordingly, the execution unit 230 can read the rcx in the first log file 220, and read the rbx in the second log file 225.
  • the result can be stored in the rax target register of the first log file 220.
  • an input 1 12a associated with the first processing sequence can be updated, so that it has an arrangement indicator 1 14a having a value of one, and a synchronization indicator 1 16, which has a value of zero.
  • the input 126a associated with the second processing sequence may have a corresponding synchronization indicator 1 16a, set to a value of one in order to indicate that the appropriate value is present in the rax register, which acts as operating from source for a consuming instruction of the second processing sequence. While shown with this particular implementation in the embodiment of Figure 3, the scope of the present invention is not limited in this regard.
  • a controller 250 may be present within the system 200.
  • the controller 250 may include various combinations of hardware or physical devices, software or programming, firmware or logic permanently installed in the hardware, or combinations of the same, in order to be in charge of issuing instructions from each of the processing sequences to the execution unit 230.
  • the controller 250 may implement a logical functional capability in order to enable the issuance of instructions when the instruction source operands are available.
  • the functional capacity It may correspond to a logical operation Y ("AND") in which the disposition indicators for the local source operands can be analyzed in order to determine whether they are the two indicative of a ready or ready state. If this is not the case, the instruction can be maintained until the two disposition indicators are adjusted, for example, in a high logical state, indicative of a disposition state.
  • the logical operation may correspond to a logical operation Y ("AND") in which a local disposition indicator is checked, for the local operand, and a local synchronization indicator, for the remote operand, in order to determine whether both are indicative of the availability of the operands. If so, the operation can continue; otherwise, the controller 250 may suspend the operation until said two source operands are ready, in accordance with what is indicated by its associated arrangement and synchronization indicators.
  • a multi-core processor such as a dual-core or multi-core processor, may similarly implement the embodiments of the present il ⁇ VciiC x uil.
  • Pümti ü a CL Utii n ⁇ processing performed in a first core can access a log file associated with a sequence of different processing that is carried out in another core. In doing so, however, certain amounts of processes or activities of organization to access said remote log files during the execution of a given processing sequence.
  • the flow information associated with the instruction that is, the indications or flow marks for the various source and destination operands
  • different entities can generate processing sequences and the corresponding code, eg, a dynamic optimization device, a compiler, a hardware optimization device, and so on. Whichever entity generates this code, you can mark the instructions with appropriate flow marks.
  • the entity can guarantee that a record that is involved in a producer / consumer relationship has not been redefined in the production processing sequence before being read by the consuming processing sequence.
  • synchronization points can be established between the processing sequences, such that the production processing sequence is not continued until the consuming processing sequence has read the associated value. While the scope of the present invention is not limited in this respect, in some embodiments, said synchronization points can be implemented using the synchronization indicators described above.
  • the flow marks that have been described in the embodiment of Figure 3 may be single-bit indicators intended to indicate whether an operand is present in a local or distant position, other embodiments may extend said location indicators to multiple bits in order to indicate the presence in more than two such processing sequences. That is, in some implementations, more than two processing sequences may be running in a given core or in multiple given cores.
  • traces of code can be generated by a dynamic optimization device.
  • a compiler-based support or other mechanisms may be used to generate instructions with the appropriate flow mark information.
  • FIG 4 there is shown a flow chart or a method for generating flow mark information or in accordance with an embodiment of the present invention.
  • method 300 may begin by initializing the synchronization indicators for the first and second processing sequences, in a non-synchronized state (block 310).
  • the two processing sequences may consist of traces of code generated by a dynamic optimization device.
  • these multiple traces can be executed simultaneously by different processing sequences of a single processor core, namely the first and second processing sequences.
  • the synchronization indicators can be initialized in a non-synchronized state, for example, a logical value of zero in some embodiments.
  • the optimization device can have control over which of the records are involved in a producer / consumer manner, and, thus, the optimization device can control also the presence of a synchronization point, at which time operands can be synchronized.
  • a record that is consumed at a distance can be defined many times in the production processing sequence, the optimization device can guarantee that the last definition of a record before being used by a c ⁇ & u is the definition that establishes the producer relationship / consumer
  • the control can then proceed to rhombus 320, in which it can be determined whether an operand is both produced and consumed only by a single processing sequence.
  • the control can pass to block 330, in which the location of the use can be indicated in the flow or instruction marks that use the operand. Specifically, if this operand is used, either as a source or destination operand, a corresponding location indicator, that is, a flow mark, may be in a restored state (for example, a logical zero) for the purpose to indicate that that operand is used only locally.
  • the control can pass to rhombus 340.
  • rhombus 340 it can be determined whether the identified operand It is a destination operand to be consumed by another processing sequence. If so, the control goes to block 350, where local uses of the destination operand can be identified according to producing instruction flow marks until a final definition of the destination operand is reached (i.e., the last definition before use by the consuming processing sequence). Once this last definition is reached, the control passes block 360, in which this instruction can be identified with a flow mark in order to indicate the remote use of the destination operand.
  • this instruction may have a location indicator for the destination operand in a set state (for example, a logical one).
  • control passes to rhombus 370, in which it can be determined whether a source operand is to be produced by the other processing sequence. If not, the control returns back to block 330, explained above and in which the flow marks or associated to the operand can be indicated as local (ie, with a logical value of zero). Referring still to Figure 4, if, instead, it is determined in rhombus 370 that the source operand is to be produced
  • two processing sequences that run in the same core can be synchronized by direct access to each other's records.
  • By accessing information at the registration level it is possible to reduce the organizational synchronization activities associated with obtaining information from a different processing sequence through indirect memory, and bandwidth problems can be alleviated or alleviated. memory.
  • Through the use of registers of log files present in the core communication of 64-bit or 128-bit values can take place between two processing sequences that run in the same core. In this way, there may be no need to reproduce or copy a registration status for a processing sequence that has just been deposited, since the operands to be used by the processing sequence that has just been deposited may be read directly in the log file of the depositing processing sequence.
  • certain embodiments can be used in detailed processing sequence sequencing paradigms, such as operation in multiple processing sequences, help sequence processing and processing sequences. forward travel, eg emplo. Accordingly, the instructions present in said processing sequences can be reduced, since copying or other instructions that reproduce the architecture state of a first log file can be avoided. Instead, these additional processing sequences can directly obtain the necessary information from the log file of another processing sequence.
  • the multi-processor system 500 is a point-to-point interconnected system, and includes a first processor 570 and a second processor 580 connected through a point-to-point interconnection 550.
  • each of the 570 and 580 processors can be a multi-core processor that includes first and second processor cores (i.e., processor cores 574a and 574b, and processor cores 584a and 584b). Note that each of the cores can include multiple log files, each of them intended to be used by a different processing sequence.
  • each core may include hardware, software or firmware, or logic permanently installed in the hardware, in order to allow direct access by a consuming processing sequence to a log file of the producing processing sequence, to through flow marks and synchronization indicators, in accordance with an embodiment of the present invention.
  • a processing sequence that runs in the processor core 574a can access a log file associated with a processing sequence that runs in the processor core 574b, and vice versa.
  • the first processor 570 additionally includes interfaces
  • a memory controller hub (MCH's - “memory controller hubs”) 572 and 582 connect the processors to respective memories, namely a 532 memory and a memory 534, which may be portions of a main memory attached locally to the respective processors.
  • the first processor 570 and the second processor 580 can be connected to a chip installation 590 through interconnections of P-P 552 and 554, respectively.
  • the 590 chip installation includes some 594 and 598 PP interfaces.
  • the 590 chip installation includes an 592 interface to connect the 590 chip installation with a high graphics generating device. 538 performance.
  • an Advanced Graphics Port (AGP) bus 539 can be used in order to connect the graphics generator device 538 with the 590 chip installation.
  • the AGP 539 bus can be conform to the Accelerated Graphics Door Interface Specification, Revision 2.0, published on May 4, 1998 by the Intel Corporation, of Santa Clara, California.
  • a point-to-point interconnection 539 can connect these components.
  • the chip installation 590 may be connected to a first bus 516 through an interface 596.
  • the first bus 516 may consist of a Peripheral Component Interconnect (PCI - "Peripheral Component Interconnect” bus. ), as defined by the PCI Local Bus Specification, Production Version, Revision 2, 1, dated June 1995, or on a bus such as a PCI Express TM bus or other input / output interconnect bus ( Third generation I / O - "I / O”), although the scope of the present invention is not limited thereto.
  • PCI - Peripheral Component Interconnect
  • various I / O devices 514 can be connected to a first bus 516, in conjunction with a bus bridge 518 that connects the first bus 516 with a second bus 520.
  • the second bus 520 it can be a low pin bus (LPC - "low pin bus").
  • LPC - "low pin bus” Various devices can be connected to the second bus 520, including, for example, a keyboard /
  • the embodiments can be implemented in code and can be stored in a storage medium that has, stored therein, instructions that can be used to program a system so that it carries out the instructions.
  • the storage medium may include any type of disk, including floppy disks, optical discs, compact disc read-only memories (CD-ROMs), compact discs likely to re-enroll in them (CD-RWs) and magneto-optical discs , semiconductor devices such as read-only memories (ROMs) 5 random access memories (RAMs), such as dynamic random access memories (DRAMs), static random access memories (SRAMs), programmable read-only memories that can be erased (EPROMs), pulse cooling memories (“flash memories”), programmable read-only and electrically erasable memories (EEPROMs), magnetic or optical cards, or any other type of medium suitable for storing electronic instructions, although It is not limited by them.
  • ROMs read-only memories
  • RAMs random access memories
  • DRAMs dynamic random access memories
  • SRAMs static random access memories

Abstract

En una realización, la presente invención incluye un método para el acceso a registros asociados con una primera secuencia de procesamiento al tiempo que se lleva a cabo o ej ecuta una segunda secuencia de procesamiento. En una realización semejante, un método puede incluir evitar que se lleve a cabo una instrucción de una primera secuencia de procesamiento que ha de acceder a un operando de fuente desde un archivo de registro de una segunda secuencia de procesamiento, en el caso de que un indicador de sincronización asociado al operando de fuente indique la falta de terminación de una operación productora de la segunda secuencia de procesamiento, y llevar a cabo la instrucción en el caso de que el indicador de sincronización indique la terminación de la operación productora de la segunda secuencia de procesamiento. Se describen y reivindican otras realizaciones.

Description

COMUNICACIÓN ENTRE MÚLTIPLES SECUENCIAS DE PROCESAMIENTO EN UN PROCESADOR
Antecedentes Los procesadores han llegado a ser máquinas muy complicadas que incluyen numerosas estructuras y complejas técnicas de control para permitir que las instrucciones y los datos pasen a través de la máquina con el fin de llevar a cabo diferentes operaciones solicitadas. Para mej orar el rendimiento del procesador, algunos procesadores se aprovechan del paralelismo en el nivel de las instrucciones (ILP - "instruction level parallelism"). Aunque tales técnicas pueden aumentar el rendimiento, pueden incrementar también el consumo de potencia y la complej idad del diseño. De acuerdo con ello, algunos procesadores están siendo diseñados con el propósito de permitir múltiples cadenas o secuencias de procesamiento en cooperación por medio de arquitecturas que dan soporte y se aprovechan del paralelismo en el nivel de las secuencias de procesamiento (TLP -"thread level parallelism"). Dichos procesadores pueden incluir múltiples núcleos, a menudo muchos núcleos pequeños tales como núcleos pequeños de múltiples secuencias de procesamiento simultáneas (SMT — "simultaneous multithreading") por orden.
Sin embargo, tales núcleos por orden pueden ser menos efectivos que los núcleos carentes de orden en el aprovechamiento del ILP. Es decir, mientras que los procesadores por orden pueden gestionar eficazmente aplicaciones en paralelo, las aplicaciones con una sola secuencia de procesamiento y las porciones de código en serie de las aplicaciones en paralelo pueden no comportarse de una manera eficaz en tales arquitecturas. De acuerdo con ello, ciertos procesadores pueden separar o dividir dichas aplicaciones con el fin de ej ecutar secuencias de procesamiento desgranadas al detalle con el fin de mantener una complejidad mínima al tiempo que se mejora la eficacia. Sin embargo, pütíuC pi'ü u-ilCii'ώQ una. k/Λi/tju α C-¿IΪI IÍ Ü.¿J.U Uo pTüoC S OS úc Oi*gd.iiiZaCi üii cuando una primera secuencia de procesamiento trata de utilizar información de una segunda secuencia de procesamiento . Breve descripción de los dibujos
La Figura 1 es un diagrama de flujo de un método de acuerdo con una realización de la presente invención.
La Figura 2 es un diagrama de bloques de un cuadro marcador de acuerdo con una realización de la presente invención.
La Figura 3 es un diagrama de bloques de una implementación de la ejecución de instrucciones de acuerdo con una realización de la presente invención.
La Figura 4 es un diagrama de flujo de un método para generar información de marcas de flujo de acuerdo con una realización de la presente invención.
La Figura 5 es un diagrama de bloques de un sistema de acuerdo con una realización de la presente invención.
Descripción detallada
En las diversas realizaciones, una multiplicidad de secuencias de procesamiento que se llevan a cabo o ejecutan en un núcleo de procesador pueden acceder a valores contenidos en un archivo de registro asociado a otra secuencia de procesamiento. A través de semej ante canal de comunicación, las realizaciones pueden proporcionar un funcionamiento eficaz con múltiples cadenas o secuencias de procesamiento simultáneas (SMT -"simultaneous multithreading"). Como ej emplo, pueden llevarse a cabo unas primera y segunda secuencias de procesamiento en un único núcleo de procesador por orden, tal como un procesador de SMT. Puede proporcionarse un control con el fin de hacer posible un modelo de productor / consumidor en el que puede tenerse acceso a los valores de datos generados por la primera secuencia de procesamiento por parte de la segunda secuencia de procesamiento, y viceversa. Cada una de las secuencias de procesamiento puede ser capaz de leer el estado de los registros estructurales o de arquitectura de la otra secuencia de procesamiento durante la ej ecución,
una actividad de organización muy baj a.
Al objeto de garantizar la lectura de los valores correctos en los registros dados cuando se tiene acceso a ellos, puede proporcionarse un control de sincronización de tal manera que la secuencia de procesamiento consumidora lea los datos adecuados en la secuencia de procesamiento productora. En diversas realizaciones, una estructura de cuadro marcador tal como la que se puede utilizar en asociación con la emisión o la asignación de instrucciones, puede incluir indicadores de sincronización. Más específicamente, cada entrada en la estructura de cuadro marcador para un registro de una primera secuencia de procesamiento puede incluir un indicador de sincronización para el registro correspondiente de la segunda secuencia de procesamiento, y viceversa. El uso de este indicador puede impedir que una instrucción consumidora prosiga hasta que se lleve a cabo la instrucción productora correspondiente de la otra secuencia de procesamiento, de tal manera que esté presente el valor deseado en el archivo de registro del productor. Con el fin sacar provecho de dicho sistema de sincronización, ciertas realizaciones pueden proporcionar información de fluj o asociada a las instrucciones. Por ejemplo, pueden proporcionarse indicaciones o marcas de flujo junto con el contenido de una instrucción. En una realización, una instrucción puede incluir un código de operación, operandos de fuente y de destino, así como marcas de flujo para cada uno de los operandos de fuente y de destino. Como se describirá adicionalmente más adelante, diversos mecanismos pueden encargarse de la generación de marcas de fluj o para las instrucciones correspondientes. Por ejemplo, puede proporcionarse un soporte de compilador de tal modo que sea posible generar dichas marcas de fluj o durante la compilación de acuerdo con el soporte de instrucciones que se proporciona en una arquitectura de conjunto de instrucciones (ISA -"instruction set architecture"). En otras implementaciones, un mecanismo de optimización, tal como un dispositivo de optimización de hardware o de software, puede analizar el control del fluj o del código y generar marcas de flujo en consecuencia. De esta forma, pueden sincronizarse múltiples secuencias de procesamiento con un grado de desmenuzamiento o desgranamiento por instrucciones.
registro y la sincronización proporcionados por ciertas realizaciones de la presente invención. Por ejemplo, un mecanismo de depósito de secuencia de procesamiento de baja actividad de organización puede aprovecharse del acceso de los archivos de registro de otras secuencias de procesamiento. Puede evitarse de esta forma el gasto de copiar todos los registros del contexto de una secuencia de procesamiento depositante al contexto de una secuencia de procesamiento de depósito. Esto es así puesto que es posible marcar las instrucciones consumidoras apropiadas contenidas en la secuencia de procesamiento de depósito, de manera que lean, en su lugar, operandos procedentes del archivo de registro de la secuencia de procesamiento depositante.
De acuerdo con diversas realizaciones, es posible reducir los procesos de organización asociados con la ejecución cooperativa entre dos secuencias de procesamiento desgranadas al detalle, En consecuencia, pueden utilizarse ciertas realizaciones en asociación con el soporte del funcionamiento especulativo con múltiples secuencias de procesamiento, así como con el depósito de las secuencias de procesamiento. Aún adicionalmente, pueden utilizarse ciertas realizaciones en asociación con las denominadas secuencias de procesamiento de ayuda, a las que puede darse inicio con el fin de encargarse de tareas específicas que tienen lugar durante la ej ecución de otra secuencia de procesamiento. Sin embargo, ha de comprenderse que el ámbito de la presente invención no está limitado a este respecto, y que pueden utilizarse el acceso de registro y los mecanismos de sincronización en muchas implementaciones diferentes, incluyendo diferentes arquitecturas de procesador, sistemas y así sucesivamente.
Haciendo referencia, a continuación, a la Figura 1 , se muestra en ella un diagrama de flujo de un método de acuerdo con una realización de la presente invención. Como se muestra en Ia Figura 1 , el método 10 puede ser utilizado para llevar a cabo una instrucción de una primera cadena o secuencia de procesamiento que puede tener acceso a la información contenida en un archivo de registro de una segunda secuencia de procesamiento. Como se muestra en la Figura 1 , el método 10 puede comenzar con la recepción de una instrucción de la primera secuencia de procesamiento para su ejecución (bloque 20). Por ej emplo, üii uc atúunlCΛUuϊ uc ±IÍΛ U UC C IOÜCS ut uíl pi'u C cSαuux p ucuc i cti un uñ descodificar la instrucción. En una realización, las instrucciones pueden incluir un código de operación, destinado a indicar un tipo de operación que se ha de llevar a cabo, así como una identificación de los operandos de fuente y de destino. Además de ello, la instrucción puede incluir información que indica si se ha de acceder a alguno de los operandos de fuente / destino desde un archivo de registro distante, por ejemplo, un archivo de registro asociado con una segunda secuencia de procesamiento, o si aquél se ha de proporcionar al mismo. Nótese que, si bien se ha descrito aquí como un archivo de registro distante, ha de comprenderse que pueden estar presentes un archivo de registro local y un archivo de registro distante en un único núcleo de un procesador, tal como un procesador múltiple o de muchos núcleos que incluya, por ejemplo, un cierto número de núcleos por orden. Haciendo aún referencia a la Figura 1 , puede determinarse a continuación si se ha de obtener algún operando de fuente de la instrucción a partir de una cadena o secuencia de procesamiento distante (rombo 30). Esto es, puede determinarse, basándose en la información de marca de flujo (en una de las realizaciones), si se ha de obtener algún operando de fuente a partir de una secuencia de procesamiento distante, por ejemplo, de una segunda secuencia de procesamiento que incluye un archivo de registro contenido dentro del núcleo de SMT. Si es así, el control pasa al rombo 40, donde puede determinarse si los indicadores de sincronización asociados con dicho operando o todos dichos operandos de fuente distante están activos. Es decir, puede analizarse un cuadro marcador u otro almacenamiento que identifique información de estado relativa a la disponibilidad de valores en registros dados, a fin de determinar si todos los operandos de fuente que se van a obtener del archivo de registro distante incluyen los valores deseados. En otras palabras, puede determinarse si una secuencia de procesamiento productora ha completado una operación de la que depende una instrucción dependiente de la primera secuencia de procesamiento. En el caso de que el (los) indicador(es) de sincronización no esté(n) activo(s), el rombo 40 puede retroalimentarse o cerrarse sobre sí mismo con el fin de encargarse de la ejecución de la instrucción hasta que estén presentes los indicadores de sincronización. Cuando los indicadores de
ÍjlilCl OiliZáCl üíi ¿ c ildo cil pi"c S cϊil.c; a, lύ q ύ C Sigiϊi i í Cα ή uC CS iα±I pi"Cá C.ii ι.C ≤ los valores deseados en el registro distante, el control pasa al rombo 45, que se expone en lo que sigue. Haciendo aún referencia a la Figura \ , si se determina que ningún operando de fuente procede de alguna secuencia de procesamiento distante (en el rombo 30), o que los indicadores de sincronización asociados con todos los operandos de fuente distantes están activos (según se determina en el rombo 40), el control pasa al rombo 45, donde puede determinarse si algún operando de fuente procede de la secuencia de procesamiento local (es decir, la primera secuencia de procesamiento) . Si es así, el control puede pasar al rombo 50, donde puede determinarse si se encuentran activos unos indicadores de preparación o disposición asociados al operando o a todos los operandos de fuente local. Por ej emplo, es posible acceder al cuadro marcador para determinar si está activo un indicador que indica que se ha completado una instrucción productora previa de la primera secuencia de procesamiento, de tal manera que la operación dependiente procedente de la misma secuencia de procesamiento puede llevarse a cabo utilizando el valor apropiado. En caso contrario, el rombo 50 puede realimentarse o cerrarse sobre sí mismo .
Desde los dos rombos 45 y 50, el control pasa al bloque 60, en el que la instrucción puede ser emitida para su ej ecución. Por ejemplo, un emisor de instrucciones, tal como un dispositivo de asignación, una estación de reserva u otra estructura que incluya un cuadro marcador o un almacenamiento de estado similar, puede emitir la instrucción para que sea llevada a cabo o ejecutada. De acuerdo con ello, una unidad de ejecución, tal como una unidad entera, una unidad de coma flotante (FPU -"floating point unit") u otra unidad semej ante, puede acceder a los operandos de fuente indicados a partir del archivo de registro específicamente identificado (bloque 70). Así pues, para operandos de fuente local, puede accederse al archivo de registro local asociado a la secuencia de procesamiento, con el fin de obtener los operandos de fuente, al tiempo que, para los operandos distantes, puede accederse al archivo de registro asociado a la segunda secuencia de procesamiento, por ejemplo, el archivo de registro distante.
Aún haciendo referencia a la Figura 1 , puede llevarse a cabo
1 _ : „ _ i ,„ . , _ „ : i a lu. u uvu υu ^
Figure imgf000008_0001
iU i( Ut O <J J . i ui tj tüip i u , t j p u si ux c i um αi u u s up ^i tiii uu a de fuente para obtener un resultado deseado, el cual ha de ser almacenado en un operando de destino, por ejemplo, un operando de destino del primer archivo de registro. Basándose en la finalización con éxito de la instrucción, pueden actualizarse diversos indicadores (bloque 90) . Más específicamente, es posible actualizar indicadores de disposición y de sincronización en tanto en cuanto sean aplicables en un cuadro marcador. Continuando con el ejemplo anteriormente descrito, en el caso de que se indique que el operando de destino es un operando local, puede aj ustarse en correspondencia el indicador de preparación o disposición asociado al registro de destino. Por otra parte, el indicador de sincronización de este registro puede ser restablecido con el fin de indicar que el valor no ha de ser sincronizado. Si, en lugar de ello, se indica que el operando de destino se ha de utilizar a distancia, es posible ajustar en consecuencia un indicador de sincronización del archivo de registro distante (por ej emplo, el segundo). Puede ajustarse, además, un indicador de disposición del archivo de registro local. De esta forma, tanto una secuencia de procesamiento distante como la secuencia de procesamiento local pueden acceder al operando de destino como un operando de fuente, lo que permite el funcionamiento de productor / consumidor eficaz, tanto dentro de la misma secuencia de procesamiento como entre secuencias de procesamiento. Si bien se muestra con esta implementación concreta en Ia realización de la Figura 1 , ha de comprenderse que el ámbito de la presente invención no está limitado a este respecto.
Pueden estar presentes diversas estructuras dentro de un procesador con el fin de hacer posibles el acceso de registro y mecanismos de sincronización de acuerdo con una realización de la presente invención. Haciendo referencia, a continuación, a la Figura 2, se muestra en ella un diagrama de bloques de un cuadro marcador de acuerdo con una realización de la presente invención, que incluye soporte para la sincronización entre múltiples secuencias de procesamiento . Como se muestra en la Figura 2, un cuadro marcador 100, que puede consistir en un almacenamiento presente dentro del núcleo de un procesador, puede incluir entradas destinadas a almacenar información de estado asociada a los registros de múltiples archivos de
1'CglS ι.rG . Jl.5p£ C IIi C αj-TiCIl ι.C , C H ± α i'Cα-iI ZciCíGii C[ uC o C Ill uC S tl ct CJ.1 i ά ± igltl d
2, cada una de una primera secuencia de procesamiento y una segunda secuencia de procesamiento pueden incluir entradas para cada registro existente en su archivo de registro. Así pues, según se muestra en la
Figura 2, una primera secuencia de procesamiento puede incluir una pluralidad de entradas 1 12a- 1 12n (genéricamente, entrada 1 12). Cada entrada 1 12 puede estar indexada mediante el uso de un identificador de registro (ID), y cada entrada puede incluir información de estado. En la realización específica que se muestra en la Figura 2, pueden estar presentes un indicador de preparación o disposición 1 14a-1 14n (genéricamente, indicador de disposición 1 14) y un indicador de sincronización 1 16a- 1 16n (genéricamente, indicador de sincronización 116). El indicador de disposición 114 puede ser utilizado para indicar cuándo el operando correspondiente que está almacenado en el registro identificado, está listo para ser utilizado por operaciones consumidoras de esa secuencia de procesamiento, en tanto que el indicador de sincronización 1 16 puede indicar si un operando distante al que se ha de acceder por parte de la secuencia de procesamiento local, está listo para el acceso por parte de la secuencia de procesamiento local, es decir, si una instrucción productora de la secuencia de procesamiento productora (distante) ha llevado a cabo y almacenado el valor apropiado en la posición deseada. Nótese que una segunda secuencia de procesamiento 120 puede incluir también una pluralidad de entradas 122a- 122n (genéricamente, entrada 122), cada una de las cuales está asociada con un registro de su archivo de registro. De forma similar, cada entrada 122 puede incluir un indicador de disposición correspondiente 124a- 124n (genéricamente, indicador de disposición 124), así como un indicador de sincronización 12óa- 126n (genéricamente, indicador de sincronización 126). En lugar de entradas independientes para cada secuencia de procesamiento, es posible instalar un cuadro marcador de tal forma que tenga una única entrada para cada registro correspondiente de las múltiples secuencias de procesamiento, de manera que haya diferentes porciones de la entrada asociadas a cada secuencia de procesamiento. Por otra parte, si bien se muestra con esta configuración particular en la realización de la Figura 2, ha de comprenderse que el ámbito de la presente invención no está limitado a este respecto y en las diversas l ealizaeiones p ueden iie vai se <x Ia. pi άu ticd. di íύ L en Les üittiici <ii> uc gcnci cu , almacenar y utilizar información de estado asociada con los archivos de registro de diferentes secuencias de procesamiento. Por ejemplo, diferentes arquitecturas de procesador pueden tener distintas configuraciones de control para analizar las instrucciones y emitirlas a una o más unidades de ej ecución del procesador. Algunos procesadores pueden incluir dispositivos de asignación, estaciones de reserva, cuadros marcadores, controladores y otras variedades de lógica con el fin de determinar cuándo una instrucción descodificada tiene disponibles varios recursos que son necesarios para la ej ecución, y seleccionar, ya sea según un criterio por orden o fuera de orden, la instrucción que se ha de proporcionar a una unidad de ejecución. En diversas realizaciones, el cuadro marcador 100 puede formar parte de un emisor de instrucciones, en una forma cualquiera que se encuentre disponible en una arquitectura de procesador dada, o bien puede estar conectado a dicho emisor de instrucciones o a otra lógica semej ante con el fin de permitir que se tomen las decisiones de emisión de las instrucciones basándose en la información presente en el cuadro marcador 100.
Como se ha descrito anteriormente, en las diversas realizaciones puede analizarse la información de flujo asociada a una instrucción con el fin de determinar si una instrucción ha de acceder a la información presente en un registro de otra secuencia de procesamiento, y/o si es posible acceder al resultado de la instrucción por parte de una secuencia de procesamiento diferente. Haciendo referencia, a continuación, a la Figura 3, se muestra en ella un diagrama de bloques de una implementación de la ejecución de instrucciones de acuerdo con una realización de la presente invención. Como se muestra en la Figura 3 , un sistema 200 puede incluir una unidad de ejecución 230 que lleva a cabo diversas operaciones en los datos que entran. En la realización que se muestra en la Figura 3, pueden estar conectados un primer archivo de registro 220 y un segundo archivo de registro 225 a la unidad de ejecución 230. En la realización de la Figura 3, el primer archivo de registro 220 puede estar asociado a una primera secuencia de procesamiento, en tanto que el segundo archivo de registro 225 puede estar asociado a una segunda secuencia de procesamiento. Aunque se muestran como archivos de registro independientes en la realización de la r ig ui a 3 , cuiíipi ciiudsc q ue p uede ei> ι<ii pi cíjciitc, en algunas. implementaciones, un archivo de registro global, de tal modo que una primera porción está asociada de forma lógica con la primera secuencia de procesamiento y una segunda porción está asociada de forma lógica con la segunda secuencia de procesamiento . Tal como se muestra en la Figura 3, una instrucción 205 procedente de la primera secuencia de procesamiento y que se ha de llevar a cabo por la unidad de ejecución 230, puede incluir un código de operación con el fin de identificar un cierto tipo de instrucción, por ejemplo, una operación de adición, de multiplicación u otra operación. La instrucción 205 identifica, además, un destino para el resultado, a saber, un operando de destino, que puede corresponder a un primer registro, rax. Asociado a este operando de destino existe un indicador de ubicación, que se identifica en la Figura 3 como DESTINO DISTANTE ("REMOTE_DEST). Como se muestra en la Figura 3, este indicador de ubicación tiene un valor de uno, lo que indica que se ha de acceder más tarde al operando de destino por parte de una secuencia de procesamiento distante, es decir, la segunda secuencia de procesamiento en el ejemplo de la Figura 3 , y se puede acceder a él también por parte de unas instrucciones consumidoras existentes en la secuencia de procesamiento local. Como se muestra adicionalmente, la instrucción 205 identifica también dos operandos de fuente, en particular un primer operando de fuente (SRC l ) que accede a un registro rbx. Debido a que un indicador de ubicación de este operando de fuente (es decir, el SRCJMSTANTE ~"REMOTE_SRC") se ajusta en un valor de uno, es posible acceder a este operando de fuente desde un archivo de registro distante, es decir, el archivo de registro 225. De forma similar, la instrucción 205 incluye un segundo operando de fuente (SRC2) que está destinado a acceder a un segundo registro, rcx, que puede ser obtenido a partir del primer archivo de registro 220, conforme el indicador local para este segundo operando de fuente (es decir, el SRC_DISTANTE) se ajusta en un valor de cero.
Debido a que ha de accederse a uno de los operandos de fuente desde un archivo de registro diferente, es decir, desde el segundo archivo de registro 225, puede no proseguirse con la instrucción 205 hasta que se encuentre activo (por ejemplo, se haya ajustado) un indicador de sincronización asociado a ese operando de fuente. Por otra páf tc, p uede iiu pfüScg uu Sc COn lá. ma u uuCión 205 lia.ϊ> La que ÜC ciic ueu u c también activo un indicador de disposición asociado con el segundo operando de fuente. Así pues, según se muestra en la Figura 3 , el cuadro marcador 100 incluye una primera entrada 1 12b, asociada con el primer operando de fuente, y una segunda entrada 1 12c, asociada con el segundo operando. Una vez que el valor del indicador de disposición 1 14c está ajustado y se ha ajustado también el valor del indicador de sincronización 1 16b, puede emitirse la instrucción 205 a la unidad de ej ecución 230. Esto es así puesto que están presentes los valores apropiados en los registros rbx, del primer archivo de registro 225 , y rcx, del segundo archivo de registro 220. De acuerdo con ello, la unidad de ejecución 230 puede leer el rcx en el primer archivo de registro 220, y leer el rbx en el segundo archivo de registro 225. Una vez que se ha llevado a cabo la instrucción, el resultado puede ser almacenado en el registro de destino rax del primer archivo de registro 220. Por otra parte, puede tener lugar la actualización de los diversos indicadores de disposición y de sincronización. Específicamente, como se muestra en la Figura 3, tras la ejecución, puede actualizarse una entrada 1 12a asociada a la primera secuencia de procesamiento, de manera que tenga un indicador de disposición 1 14a que presenta un valor de uno, y un indicador de sincronización 1 16, que tiene un valor de cero. Por otra parte, la entrada 126a asociada a la segunda secuencia de procesamiento puede tener un indicador de sincronización correspondiente 1 16a, ajustado en un valor de uno con el fin de indicar que está presente el valor apropiado en el registro rax, el cual actúa como operando de fuente para una instrucción consumidora de la segunda secuencia de procesamiento. Si bien se muestra con esta implementación particular en la realización de la Figura 3 , el ámbito de la presente invención no está limitado a este respecto. Como se muestra adicionalmente en la Figura 3, puede estar presente un controlador 250 dentro del sistema 200. El controlador 250 puede incluir diversas combinaciones de hardware o dispositivos físicos, software o programación, firmware o lógica instalada permanentemente en el hardware, o bien combinaciones de los mismos, a fin de encargarse de la emisión de instrucciones desde cada una de las secuencias de procesamiento hasta la unidad de ej ecución 230. Como se muestra en la Fig ui d 3 , el cυiiu υlddui 250 p uede ea ldi cυπdt iddü di c üddi ü íildi CduOi 100 con el fin de analizar la información de estado presente en las diversas entradas a él, al objeto de determinar si los operandos de fuente de una instrucción dada están listos para su ejecución, basándose en el análisis de los indicadores de disposición y/o de sincronización asociados. En una realización, el controlador 250 puede poner en práctica una capacidad funcional lógica con el fin de hacer posible la emisión de instrucciones cuando los operandos de fuente de la instrucción están disponibles. Por ejemplo, en una implementación, en el caso de que se indiquen las fuentes locales (es decir, los indicadores de ubicación asociados con los operandos de fuente apuntan localmente (por ej emplo, tienen un valor lógico baj o)), la capacidad funcional puede corresponder a una operación lógica Y ("AND") en la que los indicadores de disposición para los operandos de fuente local pueden ser analizados con el fin de determinar si son los dos indicativos de un estado de disposición o preparado. Si no es así, la instrucción puede ser mantenida hasta que los dos indicadores de disposición estén ajustados, por ej emplo, en un estado lógico alto, indicativo de un estado de disposición. Si, en lugar de ello, se indica que uno de los dos operandos de fuente es de un origen distante, la operación lógica puede corresponder a una operación lógica Y ("AND") en la que se comprueban un indicador de disposición local, para el operando local, y un indicador de sincronización local, para el operando distante, a fin de determinar si ambos son indicativos de la disponibilidad de los operandos. Si es así, la operación puede proseguir; en caso contrario, el controlador 250 puede suspender la operación hasta que estén listos dichos dos operandos de fuente, de acuerdo con lo que se indique por sus indicadores asociados de disposición y de sincronización. Si bien se ha descrito con esta implementación particular, el ámbito de la presente invención no está limitado a este respecto, y es posible poner en práctica muchas maneras diferentes de analizar la información contenida en un cuadro marcador o en otra estructura con el fin de determinar cuándo los operandos de fuente están listos para su uso en una instrucción consumidora. Por ejemplo, en otras implementaciones, un procesador de múltiples núcleos, tal como un procesador de doble núcleo o de muchos núcleos, puede llevar a la práctica de forma similar las realizaciones de la presente ilϊVciiC x uil . XMi αig uiitift ú έ (.αi ó S ii±ipi CIϊitili tαüi UltCi , uiiti. pümti ü a C L Utii n α de procesamiento que se lleva a cabo en un primer núcleo, puede acceder a un archivo de registro asociado con una secuencia de procesamiento diferente que se lleva a cabo en otro núcleo. Al hacerlo así, pueden emplearse, sin embargo, ciertas cantidades de procesos o actividades de organización para acceder a dichos archivos de registro distantes durante la ej ecución de una secuencia de procesamiento dada.
De acuerdo con ello, basándose en la información de flujo asociada a la instrucción, es decir, las indicaciones o marcas de flujo para los diversos operandos de fuente y de destino, puede hacerse posible el acceso ligero de un archivo de registro diferente y su sincronización. En las diversas implementaciones, diferentes entidades pueden generar secuencias de procesamiento y el código correspondiente, por ej emplo, un dispositivo de optimización dinámica, un compilador, un dispositivo de optimización de hardware, y así sucesivamente. Cualquiera que sea la entidad que genera dicho código, puede marcar las instrucciones con marcas de flujo apropiadas. Por otra parte, la entidad puede garantizar que un registro que está implicado en una relación de productor / consumidor no ha sido redefinido en la secuencia de procesamiento productora antes de ser leído por la secuencia de procesamiento consumidora. En las diversas realizaciones, pueden establecerse puntos de sincronización entre las secuencias de procesamiento, de tal forma que no se continúa con la secuencia de procesamiento productora hasta que la secuencia de procesamiento consumidora haya leído el valor asociado. Si bien el ámbito de la presente invención no está limitado a este respecto, en algunas realizaciones, dichos puntos de sincronización pueden ser implementados utilizando los indicadores de sincronización anteriormente descritos. Por ejemplo, aunque las marcas de flujo que se han descrito en la realización de la Figura 3 pueden ser indicadores de un único bit destinados a indicar si un operando está presente en una posición local o distante, otras realizaciones pueden extender dichos indicadores de ubicación a múltiples bits con el fin de indicar la presencia en más de dos de tales secuencias de procesamiento. Esto es, en algunas implementaciones, más de dos secuencias de procesamiento pueden estar ejecutándose en un núcleo o en múltiples núcleos dados. En el curso de la ejecución de una mαlq ui ci ct J c I HÜ sctucut icis u c JJÍ O ucaaiilicii Lu , jj ucde dUÉUCí sc <x I O Ϊ> archivos de registro asociados con las otras secuencias de procesamiento de acuerdo con marcas de flujo existentes en las instrucciones y con información contenida en un cuadro marcador o en otra estructura semejante, destinada a indicar la disponibilidad de los operandos distantes, por ejemplo, a través de los indicadores de sincronización asociados a los archivos de registro asociados con estas secuencias de procesamiento múltiples.
En algunas realizaciones, pueden generarse trazas de código por parte de un dispositivo de optimización dinámica. Sin embargo, en otras implementaciones, puede utilizarse un soporte basado en compilador u otros mecanismos a fin de generar instrucciones con la apropiada información de marca de fluj o. Haciendo referencia, a continuación, a la Figura 4, se muestra en ella un diagrama de fluj o de un método para generar información de marca de fluj o de acuerdo con una realización de la presente invención. Como se muestra en la Figura 4, el método 300 puede comenzar inicializando los indicadores de sincronización para las primera y segunda secuencias de procesamiento, en un estado no sincronizado (bloque 310). Por ejemplo, las dos secuencias de procesamiento pueden consistir en trazas de código generadas por un dispositivo de optimización dinámica. Es más, estas trazas múltiples pueden ser ejecutadas simultáneamente por diferentes secuencias de procesamiento de un único núcleo de procesador, a saber, las primera y segunda secuencias de procesamiento. Con el fin de garantizar la atribución adecuada de los diferentes operandos, pueden inicializarse los indicadores de sincronización en un estado no sincronizado, por ejemplo, un valor lógico de cero en algunas realizaciones. Nótese que, debido a que estas trazas son identificadas por el dispositivo de optimización dinámica, el dispositivo de optimización puede tener control sobre cuáles de los registros están implicados de una manera productora / consumidora, y, de esta forma, el dispositivo de optimización puede controlar también la presencia de un punto de sincronización, instante en el cual los operandos pueden ser sincronizados. Si bien un registro que es consumido a distancia puede ser definido muchas veces en la secuencia de procesamiento productora, el dispositivo de optimización puede garantizar que la última definición de un regisero antes de ser uiiiizadυ por un cυπ&uiniuoi es Ia definición que establece la relación de productor / consumidor.
Haciendo aún referencia a la Figura 4, el control puede pasar a continuación al rombo 320, en el que puede determinarse si un operando es tanto producido como consumido solamente por una única secuencia de procesamiento. En el caso de que un operando sea utilizado en una única secuencia de procesamiento, el control puede pasar al bloque 330, en el que puede indicarse la ubicación del uso en las marcas de fluj o de instrucciones que utilizan el operando. Específicamente, si se emplea este operando, ya sea como operando de fuente o de destino, un indicador de ubicación correspondiente, es decir, una marca de fluj o, puede estar en un estado restablecido (por ejemplo, un cero lógico) con el fin de indicar que ese operando se utiliza tan solo localmente.
Haciendo aún referencia a la Figura 4, si, en lugar de ello, se determina en el rombo 320 que un operando es utilizado por múltiples secuencias de procesamiento, el control puede pasar al rombo 340. En el rombo 340 puede determinarse si el operando identificado es un operando de destino que ha de ser consumido por otra secuencia de procesamiento. Si es así, el control pasa al bloque 350, donde pueden identificarse usos locales del operando de destino de acuerdo con marcas de flujo de instrucciones productoras hasta que se alcanza una última definición del operando de destino (es decir, la última definición antes del uso por parte de la secuencia de procesamiento consumidora). Una vez alcanzada esta última definición, el control pasa el bloque 360, en el que esta instrucción puede ser identificada con una marca de flujo al objeto de indicar el uso a distancia del operando de destino. En otras palabras, esta instrucción puede tener un indicador de ubicación para el operando de destino en un estado ajustado (por ejemplo, un uno lógico). Del bloque 360, el control pasa al rombo 370, en el que puede determinarse si se ha de producir un operando de fuente por parte de la otra secuencia de procesamiento. Si no es así, el control regresa de vuelta al bloque 330, anteriormente explicado y en el que las marcas de fluj o asociadas al operando pueden ser indicadas como locales (es decir, con un valor lógico de cero). Haciendo aún referencia a la Figura 4, si, en lugar de ello, se determina en el rombo 370 que el operando de fuente ha de ser producido
380, en el que el uso de un operando de fuente distante puede indicarse en marcas de flujo de instrucciones consumidoras de esa cadena o secuencia de procesamiento hasta que una instrucción contenida en esa misma secuencia de procesamiento redefina ese registro (bloque 380). Es decir, las instrucciones de la secuencia de procesamiento consumidora pueden acceder al valor de los datos del archivo de registro distante hasta que la secuencia de procesamiento consumidora redefina el registro . Cuando se produce dicho suceso (en caso de producirse), el control pasa al bloque 390, en el que el uso local del operando de fuente puede ser indicado en marcas de flujo de las instrucciones consumidoras. Es decir, cuando una instrucción consumidora redefine el registro de tal manera que inscribe un valor diferente que se utiliza entonces como operando de fuente para instrucciones ulteriores de esa misma secuencia de procesamiento, las instrucciones ulteriores de la misma secuencia de procesamiento pueden tener marcas de flujo asociadas a ellas con el fin de indicar que es posible obtener ahora de forma local el operando de fuente. Si bien se muestra con esta implementación particular en la realización de la Figura 4, el ámbito de la presente invención no está limitado a este respecto.
Así pues, en las diversas realizaciones, dos secuencias de procesamiento que discurren en el mismo núcleo pueden ser sincronizadas mediante el acceso directo cada una a los registros de la otra. Al acceder a la información en el nivel de registro, es posible reducir las actividades organizativas de sincronización asociadas a la obtención de información de una secuencia de procesamiento diferente a través de una memoria indirecta, y pueden aliviarse o paliarse los problemas de anchura de banda de memoria. A través del uso de registros de archivos de registro presentes en el núcleo, puede tener lugar la comunicación de valores de 64 bits o de 128 bits entre dos secuencias de procesamiento que discurren en el mismo núcleo. De esta forma, puede no haber necesidad de reproducir o copiar un estado de registro para una secuencia de procesamiento que se acaba de depositar, ya que los operandos que se han de utilizar por parte de la secuencia de procesamiento que se acaba de depositar pueden ser leídos directamente en el archivo de registro de la secuencia de procesamiento depositante. S i bien el áiííhiio de la pí eseme m v eiiüióii ιιu e& L¿ limi tado a. e& ιe respecto, ciertas realizaciones pueden ser utilizadas en paradigmas de procesamiento secuencial desgranado al detalle, tales como el funcionamiento en múltiples secuencias de procesamiento, el procesamiento en secuencia de ayuda y las secuencias de procesamiento de recorrido hacia delante, por ej emplo. De acuerdo con ello, las instrucciones presentes en dichas secuencias de procesamiento pueden ser reducidas, ya que puede evitarse la copia u otras instrucciones que reproduzcan el estado de arquitectura de un primer archivo de registro. En lugar de ello, estas secuencias de procesamiento adicionales pueden obtener directamente la información necesaria del archivo de registro de otra secuencia de procesamiento.
Las realizaciones pueden ser implementadas en muchos tipos de sistemas diferentes. Haciendo referencia a continuación a la Figura 5 , se muestra en ella un diagrama de bloques de un sistema de acuerdo con una realización de la presente invención. Como se muestra en la Figura 5, el sistema 500 de múltiples procesadores es un sistema interconectado de punto a punto, e incluye un primer procesador 570 y un segundo procesador 580 conectados a través de una interconexión de punto a punto 550. Como se muestra en la Figura 5, cada uno de los procesadores 570 y 580 puede ser un procesador de múltiples núcleos que incluye unos primer y segundo núcleos de procesador (esto es, los núcleos de procesador 574a y 574b, y los núcleos de procesador 584a y 584b). Nótese que cada uno de los núcleos puede incluir múltiples archivos de registro, cada uno de ellos destinado a ser utilizado por una secuencia de procesamiento diferente. Por otra parte, cada núcleo puede incluir hardware, software o firmware, o lógica instalada permanentemente en el hardware, a fin de permitir el acceso directo por parte de una secuencia de procesamiento consumidora a un archivo de registro de la secuencia de procesamiento productora, a través de marcas de fluj o e indicadores de sincronización, de acuerdo con una realización de la presente invención. Aún adicionalmente, en algunas implementaciones, una secuencia de procesamiento que discurre en el núcleo 574a de procesador puede acceder a un archivo de registro asociado con una secuencia de procesamiento que discurre en el núcleo 574b de procesador, y viceversa. El primer procesador 570 incluye adicionalmente interfaces
-1 _ _ , , _ i _ „ „ , , _ j _ m sr -i C - - C O π , r , „ „ -, ' „„ ' i - - i ~ . 1 uo p u±i LU α p ui± Lo yl ~ i j o 1 u y υ ¡ o . ±> t i Uí iiia. ύimi iαi , ti st g uuu υ procesador 580 incluye interfaces de P-P 586 y 588. Como se muestra en la Figura 5, unos dispositivos concentradores de controlador de memoria (MCH's -"memory controller hubs") 572 y 582 conectan los procesadores a respectivas memorias, a saber, una memoria 532 y una memoria 534, las cuales pueden ser porciones de una memoria principal fij ada localmente a los procesadores respectivos.
El primer procesador 570 y el segundo procesador 580 pueden estar conectados a una instalación de chip 590 a través de unas interconexiones de P-P 552 y 554, respectivamente. Como se muestra en la Figura 5, la instalación de chip 590 incluye unas interfaces de P-P 594 y 598. Por otra parte, la instalación de chip 590 incluye una interfaz 592 para conectar la instalación de chips 590 con un dispositivo generador de gráficos de alto rendimiento 538. En una realización, puede utilizarse un bus 539 de Puerta de Gráficos Avanzados (AGP -"Advanced Graphics Port") con el fin de conectar el dispositivo generador de gráficos 538 con la instalación de chip 590. El bus de AGP 539 puede adecuarse a la Especificación de Interfaz de Puerta de Gráficos Acelerada, Revisión 2.0, publicada el 4 de mayo de 1998 por la Intel Corporation, de Santa Clara, California. Alternativamente, una interconexión de punto a punto 539 puede conectar estos componentes.
A su vez, la instalación de chip 590 puede estar conectada a un primer bus 516 a través de una interfaz 596. En una realización, el primer bus 516 puede consistir en un bus de Interconexión de Componentes Periféricos (PCI -"Peripheral Component Interconnect"), según se define por la Especificación de Bus Local de PCI, Versión de Producción, Revisión 2, 1 , fechada en junio de 1995, o en un bus tal como un bus PCI Express™ u otro bus de interconexión de entrada / salida (E/S -"I/O") de tercera generación, si bien el ámbito de la presente invención no está limitado por ello.
Como se muestra en la Figura 5, pueden conectarse diversos dispositivos de E/S 514 a un primer bus 516, conjuntamente con un puente 518 de buses que conecta el primer bus 516 con un segundo bus 520. En una realización, el segundo bus 520 puede ser un bus de cómputo de patilla baj a (LPC -"low pin bus"). Pueden acoplarse diversos dispositivos al segundo bus 520, incluyendo, por ej emplo, un teclado /
„ ^ j- Λ — τ> -i : . ^ „ ; j. i „ . _ , A r.. „ „, _„ -, „ : „, ,, .-, ; .£ . , r í e . . , ., -, , - . J _ ,τ ^ ^ o j „ l ü í u n u i ^ y j J U ϊ υ .) u. v un í c αv i o n -> u y una uüi uαu u t almacenamiento de datos, tal como un dispositivo de accionamiento de disco u otro dispositivo de almacenamiento masivo que puede incluir, en una realización, un código 530. Por otra parte, puede conectarse una E/S de audio 524 al segundo bus 520. Nótese que son posibles otras arquitecturas. Por ej emplo, en lugar de la arquitectura de punto a punto de la Figura 5, un sistema puede implementar un bus de acometida múltiple u otra arquitectura semejante.
Las realizaciones pueden ser implementadas en código y pueden almacenarse en un medio de almacenamiento que tenga, almacenadas en él, instrucciones que puedan ser utilizadas para programar un sistema de forma que lleve a cabo las instrucciones. El medio de almacenamiento puede incluir cualquier tipo de disco, incluyendo discos flexibles, discos ópticos, memorias de sólo lectura de disco compacto (CD-ROMs), discos compactos susceptibles de volver a inscribir en ellos (CD-RWs) y discos magneto-ópticos, dispositivos semiconductores tales como memorias de sólo lectura (ROMs)5 memorias de acceso aleatorio (RAMs), tales como memorias de acceso aleatorio dinámicas (DRAMs), memorias de acceso aleatorio estáticas (SRAMs), memorias de sólo lectura programables y susceptibles de ser borradas (EPROMs), memorias de refrescamiento por impulsos ("flash memories"), memorias de sólo lectura programables y susceptibles de borrarse eléctricamente (EEPROMs), tarjetas magnéticas u ópticas, o cualquier otro tipo de medio adecuado para almacenar instrucciones electrónicas, si bien no está limitado por ellos.
Si bien la presente invención se ha descrito con respecto a un número limitado de realizaciones, los expertos de la técnica apreciarán numerosas modificaciones y variaciones partiendo de las mismas. Se pretende que las reivindicaciones que se acompañan cubran todas dichas modificaciones y variaciones en la medida en que caigan dentro del verdadero espíritu y ámbito de esta presente invención.

Claims

REIVINDICACIONES
1 . Un método que comprende: acceder a un archivo de registro de una segunda cadena o secuencia de procesamiento por parte de un núcleo con el fin de obtener un operando de fuente para una instrucción de una primera cadena o secuencia de procesamiento, durante la ejecución de la instrucción de la primera secuencia de procesamiento en el núcleo.
2. El método de acuerdo con la reivindicación I 5 que comprende adicionalmente : evitar que la instrucción de la primera secuencia de procesamiento se lleve a cabo o ej ecute si un indicador de sincronización asociado con un registro identificado por el operando de fuente, se encuentra en un primer estado indicativo de la falta de terminación de una operación productora de la segunda secuencia de procesamiento; y llevar a cabo la instrucción de la primera secuencia de procesamiento si el indicador de sincronización asociado con el registro se encuentra en un segundo estado indicativo de la terminación de la operación productora de la segunda secuencia de procesamiento.
3. El método de acuerdo con la reivindicación 2, que comprende adicionalmente ajustar el indicador de sincronización en una entrada de un cuadro marcador para el registro, una vez que la operación productora se ha completado.
4. El método de acuerdo con la reivindicación 3, que comprende adicionalmente ajustar el indicador de sincronización en la entrada del cuadro marcador para el registro asociado con la primera secuencia de procesamiento, y restablecer el indicador de sincronización en la entrada del cuadro marcador para el registro asociado con la segunda secuencia de procesamiento, una vez que se ha completado la operación productora.
5. El método de acuerdo con la reivindicación 2, que
GOT±lprCΩu€ αuIC I OIiα-jiIllCil t C i iCv αl ¿¿ CcL D G id Op Ci αCiO il prOü-UC iO/ά CiC l a. segunda secuencia de procesamiento y la instrucción de la primera secuencia de procesamiento en el núcleo, de tal modo que el núcleo comprende un núcleo común en el cual se han de llevar a cabo tanto la primera secuencia de procesamiento como la segunda secuencia de procesamiento.
6. El método de acuerdo con la reivindicación 1 , que comprende adicionalmente descodificar la instrucción de la primera secuencia de procesamiento, de tal modo que Ia instrucción incluye un indicador de posición para el operando de fuente, de manera que el indicador de posición indica la posición del operando de fuente en un registro del archivo de registro de la segunda secuencia de procesamiento.
7. El método de acuerdo con la reivindicación 6, que comprende adicionalmente almacenar un resultado de la instrucción de la primera secuencia de procesamiento en un registro de destino y actualizar un indicador de sincronización para el registro de destino basándose en un indicador de posición para un operando de destino correspondiente existente en la instrucción de la primera secuencia de procesamiento.
8. Un aparato que comprende: un almacenamiento destinado a almacenar entradas, cada una de ellas correspondiente a un registro de un primer archivo de registro de una primera secuencia de procesamiento, de tal modo que cada una de las entradas ha de incluir un indicador de sincronización destinado a indicar si se ha completado una operación productora de una segunda secuencia de procesamiento que ha de utilizar un registro correspondiente de un segundo archivo de registro de la segunda secuencia de procesamiento, como operando de destino.
9. El aparato de acuerdo con la reivindicación 8, que comprende adicionalmente un controlador destinado a actualizar el indicador de sincronización de la primera secuencia de procesamiento de una entrada para el correspondiente registro, una vez que la segunda secuencia de procesamiento ha llevado a cabo una instrucción que utiliza el registro correspondiente del segundo archivo de registro como operando de destino, de tal modo que la instrucción incluye un indicador
U O p U i3 I ty i U ii y ClL CL U ± U p k/i αilU U U t U. C Λ lli±VJ , i UUi t U U V U U O i U iS VJ U ^ l correspondiente registro por parte de la primera secuencia de procesamiento.
1 0. El aparato de acuerdo con la reivindicación 8, en el cual el almacenamiento comprende un cuadro marcador de un núcleo.
1 1 . El aparato de acuerdo con la reivindicación 10, en el cual el núcleo ha de llevar a cabo o ejecutar simultáneamente la primera secuencia de procesamiento y la segunda secuencia de procesamiento utilizando el primer archivo de registro y el segundo archivo de registro.
12. El aparato de acuerdo con la reivindicación 1 1 , en el cual el núcleo ha de acceder al segundo archivo de registro durante la ej ecución de la primera secuencia de procesamiento.
13. El aparato de acuerdo con la reivindicación 12, en el cual el núcleo ha de acceder al segundo archivo de registro basándose en un indicador de posición para un operando de fuente de una instrucción de la primera secuencia de procesamiento.
14. El aparato de acuerdo con la reivindicación 13, en el cual el núcleo ha de acceder al segundo archivo de registro basándose adicionalmente en el indicador de sincronización de una entrada para el registro correspondiente.
15. El aparato de acuerdo con la reivindicación 8, de tal manera que el aparato comprende un núcleo que incluye el almacenamiento, el primer archivo de registro, el segundo archivo de registro y una unidad de ej ecución, de modo que la unidad de ejecución está destinada a obtener un operando de fuente a partir de un registro del segundo archivo de registro, para la ej ecución de una instrucción de la primera secuencia de procesamiento basándose en un indicador de ubicación de la instrucción.
16. El aparato de acuerdo con la reivindicación 1 5, en el cual ha de evitarse que se lleve a cabo o ejecute la instrucción de la primera secuencia de procesamiento si el indicador de sincronización de una entrada asociada con el registro del segundo archivo de registro, es indicativo de un estado de falta de terminación de una instrucción productora de la segunda secuencia de procesamiento.
17. Un sistema que comprende: un primer archivo de registro, que incluye una pluralidad de
¿"c g± SÍi O S úS Stiii¿lCi C 5 α άüildC CilcLi' tαci tG S út/ tilia pi i ill C i a _> έ C uCju.Ci a u t; procesamiento; un segundo archivo de registro, que incluye una pluralidad de registros destinados a almacenar datos de una segunda secuencia de procesamiento; una unidad de ejecución, conectada al primer archivo de registro y al segundo archivo de registro con el fin de llevar a cabo instrucciones de la primera secuencia de procesamiento y de la segunda secuencia de procesamiento, de tal manera que la unidad de ejecución está destinada a acceder al primer archivo de registro para obtener un operando de fuente para la ej ecución de una instrucción de la segunda secuencia de procesamiento; y una memoria de acceso aleatorio dinámica (DRAM — "dynamic random access memory"), conectada a la unidad de ej ecución.
18. El sistema de acuerdo con la reivindicación 17, en el cual la unidad de ej ecución está destinada a acceder al primer archivo de registro basándose en una indicación de la instrucción de la segunda secuencia de procesamiento, de tal modo que la indicación ha de indicar la presencia del operando de fuente en el archivo de registro.
19. El sistema de acuerdo con la reivindicación 1 8, que comprende adicionalmente un emisor de instrucciones, conectado a la unidad de ejecución para suspender la asignación de la instrucción de la segunda secuencia de procesamiento hasta que esté activo un indicador de sincronización asociado a un registro asociado con el operando de fuente.
20. El sistema de acuerdo con la reivindicación 19, en el cual el emisor de instrucciones está destinado a inscribir el indicador de sincronización asociado al registro una vez que se ha llevado a cabo una instrucción productora de la primera secuencia de procesamiento.
21 . El sistema de acuerdo con la reivindicación 20, en el cual el emisor de instrucciones está destinado a inscribir adicionalmente un indicador de preparación o disposición asociado al registro, una vez que se ha llevado a cabo la instrucción productora de la primera secuencia de procesamiento.
22. El sistema de acuerdo con la reivindicación 21 , en el cual el emisor de instrucciones está destinado a inscribir el indicador de siilCi UllizaCióil y el ífidiυctdυr ue disposición cu una criu'ctdd. ué tul C Uddx υ marcador correspondiente al registro.
23. El sistema de acuerdo con la reivindicación 17, que comprende adicionalmente un primer núcleo que incluye la unidad de ej ecución, el primer archivo de registro y el segundo archivo de registro, de tal manera que el primer núcleo ha de tratar o procesar las instrucciones de la primera secuencia de procesamiento y de la segunda secuencia de procesamiento.
24. El sistema de acuerdo con la reivindicación 23 , que comprende adicionalmente: un segundo núcleo, que incluye una segunda unidad de ejecución y un tercer archivo de registro, de tal manera que el segundo núcleo está destinado a procesar instrucciones de una tercera secuencia de procesamiento, de modo que el segundo núcleo ha de acceder al menos a uno de entre el primer archivo de registro y el segundo archivo de registro, a fin de obtener un operando de fuente para uso en la tercera secuencia de procesamiento.
25. El sistema de acuerdo con la reivindicación 17, que comprende adicionalmente un archivo de registro unificado que incluye el primer archivo de registro y el segundo archivo de registro.
26. Un medio legible por una máquina y que tiene, almacenadas en él, instrucciones que, si se llevan a cabo o ej ecutan por una máquina, hacen que la máquina realice un método que comprende: acceder a un archivo de registro de una primera cadena o secuencia de procesamiento con el fin de obtener un operando de fuente de registro para la ej ecución de una instrucción de una segunda secuencia de procesamiento, en el caso de que la instrucción incluya una indicación para el operando de fuente de registro que apunte a la primera secuencia de procesamiento.
27. El medio legible por una máquina, de acuerdo con la reivindicación 26, en el cual el método comprende adicionalmente acceder a un archivo de registro de la segunda secuencia de procesamiento con el fin de obtener un operando de fuente de registro para la ejecución de una instrucción de la primera secuencia de procesamiento, en el caso de que la instrucción incluya una indicación para el operando de fuente de registro que apunte a la segunda secuencia
Figure imgf000026_0001
28. El medio legible por una máquina, de acuerdo con la reivindicación 26, en el cual el método comprende adicionalmente evitar la ejecución de la instrucción de la segunda secuencia de procesamiento hasta que esté activo un indicador asociado a un registro identificado por el operando de fuente de registro, siendo el indicador indicativo de la terminación de una operación productora de la primera secuencia de procesamiento.
29. El medio legible por una máquina, de acuerdo con la reivindicación 26, en el cual el método comprende adicionalmente ejecutar la instrucción de la segunda secuencia de procesamiento y activar, tras ello, un indicador de sincronización asociado a un registro identificado por un operando de fuente de destino de registro de la instrucción de la segunda secuencia de procesamiento, en el caso de que la instrucción incluya una indicación para el operando de destino de registro que apunte a la primera secuencia de procesamiento.
30. El medio legible por una máquina, de acuerdo con la reivindicación 26, en el cual el método comprende adicionalmente depositar la segunda secuencia de procesamiento desde la primera secuencia de procesamiento sin la reproducción de un estado de la primera secuencia de procesamiento en la segunda secuencia de procesamiento, y hacer que la segunda secuencia de procesamiento acceda al archivo de registro de la primera secuencia de procesamiento durante la ejecución de la instrucción de la segunda secuencia de procesamiento.
PCT/ES2006/070162 2006-10-27 2006-10-27 Comunicación entre múltiples secuencias de procesamiento en un procesador WO2008049938A1 (es)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN200680056225.2A CN101529377B (zh) 2006-10-27 2006-10-27 处理器中多线程之间通信的方法、装置和系统
JP2009524212A JP2010500679A (ja) 2006-10-27 2006-10-27 プロセッサ内のマルチスレッド間通信
PCT/ES2006/070162 WO2008049938A1 (es) 2006-10-27 2006-10-27 Comunicación entre múltiples secuencias de procesamiento en un procesador
US12/446,930 US8261046B2 (en) 2006-10-27 2006-10-27 Access of register files of other threads using synchronization
DE112006004005T DE112006004005T5 (de) 2006-10-27 2006-10-27 Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2006/070162 WO2008049938A1 (es) 2006-10-27 2006-10-27 Comunicación entre múltiples secuencias de procesamiento en un procesador

Publications (1)

Publication Number Publication Date
WO2008049938A1 true WO2008049938A1 (es) 2008-05-02

Family

ID=39324164

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2006/070162 WO2008049938A1 (es) 2006-10-27 2006-10-27 Comunicación entre múltiples secuencias de procesamiento en un procesador

Country Status (5)

Country Link
US (1) US8261046B2 (es)
JP (1) JP2010500679A (es)
CN (1) CN101529377B (es)
DE (1) DE112006004005T5 (es)
WO (1) WO2008049938A1 (es)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2159692A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd Information processor and load cancellation control method
US8832712B2 (en) * 2009-09-09 2014-09-09 Ati Technologies Ulc System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system
US8650554B2 (en) 2010-04-27 2014-02-11 International Business Machines Corporation Single thread performance in an in-order multi-threaded processor
US8667253B2 (en) 2010-08-04 2014-03-04 International Business Machines Corporation Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register
US8793474B2 (en) 2010-09-20 2014-07-29 International Business Machines Corporation Obtaining and releasing hardware threads without hypervisor involvement
US8713290B2 (en) 2010-09-20 2014-04-29 International Business Machines Corporation Scaleable status tracking of multiple assist hardware threads
US8572628B2 (en) 2010-12-02 2013-10-29 International Business Machines Corporation Inter-thread data communications in a computer processor
US8561070B2 (en) 2010-12-02 2013-10-15 International Business Machines Corporation Creating a thread of execution in a computer processor without operating system intervention
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
US9086873B2 (en) 2013-03-15 2015-07-21 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US9389871B2 (en) 2013-03-15 2016-07-12 Intel Corporation Combined floating point multiplier adder with intermediate rounding logic
US9348595B1 (en) 2014-12-22 2016-05-24 Centipede Semi Ltd. Run-time code parallelization with continuous monitoring of repetitive instruction sequences
US9135015B1 (en) 2014-12-25 2015-09-15 Centipede Semi Ltd. Run-time code parallelization with monitoring of repetitive instruction sequences during branch mis-prediction
US9208066B1 (en) 2015-03-04 2015-12-08 Centipede Semi Ltd. Run-time code parallelization with approximate monitoring of instruction sequences
WO2016156908A1 (en) * 2015-03-27 2016-10-06 Intel Corporation Apparatus and method for inter-strand communication
US10296350B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US9715390B2 (en) 2015-04-19 2017-07-25 Centipede Semi Ltd. Run-time parallelization of code execution based on an approximate register-access specification
US10423415B2 (en) * 2017-04-01 2019-09-24 Intel Corporation Hierarchical general register file (GRF) for execution block
US11157276B2 (en) 2019-09-06 2021-10-26 International Business Machines Corporation Thread-based organization of slice target register file entry in a microprocessor to permit writing scalar or vector data to portions of a single register file entry
US11093246B2 (en) 2019-09-06 2021-08-17 International Business Machines Corporation Banked slice-target register file for wide dataflow execution in a microprocessor
US11119774B2 (en) 2019-09-06 2021-09-14 International Business Machines Corporation Slice-target register file for microprocessor
US11816486B2 (en) * 2022-01-18 2023-11-14 Nxp B.V. Efficient inter-thread communication between hardware processing threads of a hardware multithreaded processor by selective aliasing of register blocks
CN114610394B (zh) * 2022-03-14 2023-12-22 海飞科(南京)信息技术有限公司 指令调度的方法、处理电路和电子设备
CN117170750B (zh) * 2023-09-04 2024-04-30 上海合芯数字科技有限公司 多源操作数指令的调度方法、装置、处理器、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
EP0762270A2 (en) * 1995-09-11 1997-03-12 International Business Machines Corporation Microprocessor with load/store operation to/from multiple registers
WO1999008185A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware
US5968160A (en) * 1990-09-07 1999-10-19 Hitachi, Ltd. Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2537526B2 (ja) * 1987-12-02 1996-09-25 富士通株式会社 マルチプロセッサシステム
JP2834298B2 (ja) * 1990-09-19 1998-12-09 株式会社日立製作所 データ処理装置及びデータ処理方法
JPH06242948A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd パイプライン処理計算機
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US5887166A (en) * 1996-12-16 1999-03-23 International Business Machines Corporation Method and system for constructing a program including a navigation instruction
US5845307A (en) * 1997-01-27 1998-12-01 Sun Microsystems, Inc. Auxiliary register file accessing technique
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6317820B1 (en) * 1998-06-05 2001-11-13 Texas Instruments Incorporated Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism
US6286027B1 (en) * 1998-11-30 2001-09-04 Lucent Technologies Inc. Two step thread creation with register renaming
US20030188141A1 (en) * 2002-03-29 2003-10-02 Shailender Chaudhry Time-multiplexed speculative multi-threading to support single-threaded applications
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
US20020103847A1 (en) * 2001-02-01 2002-08-01 Hanan Potash Efficient mechanism for inter-thread communication within a multi-threaded computer system
US6928645B2 (en) * 2001-03-30 2005-08-09 Intel Corporation Software-based speculative pre-computation and multithreading
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US7185338B2 (en) * 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
US7596682B2 (en) * 2004-04-08 2009-09-29 International Business Machines Corporation Architected register file system utilizes status and control registers to control read/write operations between threads
US8166282B2 (en) * 2004-07-21 2012-04-24 Intel Corporation Multi-version register file for multithreading processors with live-in precomputation
US7610470B2 (en) * 2007-02-06 2009-10-27 Sun Microsystems, Inc. Preventing register data flow hazards in an SST processor
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US9047197B2 (en) * 2007-10-23 2015-06-02 Oracle America, Inc. Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187796A (en) * 1988-03-29 1993-02-16 Computer Motion, Inc. Three-dimensional vector co-processor having I, J, and K register files and I, J, and K execution units
US5968160A (en) * 1990-09-07 1999-10-19 Hitachi, Ltd. Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory
EP0762270A2 (en) * 1995-09-11 1997-03-12 International Business Machines Corporation Microprocessor with load/store operation to/from multiple registers
WO1999008185A1 (en) * 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. A dependency table for reducing dependency checking hardware

Also Published As

Publication number Publication date
US20100005277A1 (en) 2010-01-07
JP2010500679A (ja) 2010-01-07
CN101529377A (zh) 2009-09-09
DE112006004005T5 (de) 2009-06-10
CN101529377B (zh) 2016-09-07
US8261046B2 (en) 2012-09-04

Similar Documents

Publication Publication Date Title
WO2008049938A1 (es) Comunicación entre múltiples secuencias de procesamiento en un procesador
CN108351830B (zh) 用于存储器损坏检测的硬件装置和方法
US8639882B2 (en) Methods and apparatus for source operand collector caching
US9727475B2 (en) Method and apparatus for distributed snoop filtering
US9442559B2 (en) Exploiting process variation in a multicore processor
TWI590162B (zh) 用於使處理元件提早離開深度睡眠狀態的處理器和方法
KR20150112774A (ko) 동적 비순차적 프로세서 파이프라인을 구현하기 위한 방법 및 장치
US20140189302A1 (en) Optimal logical processor count and type selection for a given workload based on platform thermals and power budgeting constraints
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
KR20180020985A (ko) 디커플링된 프로세서 명령어 윈도우 및 피연산자 버퍼
KR20180021850A (ko) 블록 크기에 기초하여 명령어 블록을 명령어 윈도우에 맵핑하기
KR20140113444A (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
US9875108B2 (en) Shared memory interleavings for instruction atomicity violations
CN104252392A (zh) 一种访问数据缓存的方法和处理器
CN104969178B (zh) 用于实现便笺式存储器的装置和方法
US9354875B2 (en) Enhanced loop streaming detector to drive logic optimization
BR112015022683B1 (pt) Sistema de processamento e método de realização de uma operação de manipulação de dados
KR20170001577A (ko) 트랜잭션적인 전력 관리를 수행하기 위한 하드웨어 장치들 및 방법들
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
CN108874458A (zh) 一种多核SoC的固件启动方法以及多核SoC设备
US9684541B2 (en) Method and apparatus for determining thread execution parallelism
US20140281612A1 (en) Measurement of performance scalability in a microprocessor
US20140223105A1 (en) Method and apparatus for cutting senior store latency using store prefetching
US9552169B2 (en) Apparatus and method for efficient memory renaming prediction using virtual registers
US10083033B2 (en) Apparatus and method for efficient register allocation and reclamation

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680056225.2

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 06820035

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2009524212

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 1120060040057

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 12446930

Country of ref document: US

RET De translation (de og part 6b)

Ref document number: 112006004005

Country of ref document: DE

Date of ref document: 20090610

Kind code of ref document: P

122 Ep: pct application non-entry in european phase

Ref document number: 06820035

Country of ref document: EP

Kind code of ref document: A1

REG Reference to national code

Ref country code: DE

Ref legal event code: 8607