WO2007138124A1 - Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache - Google Patents
Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache Download PDFInfo
- Publication number
- WO2007138124A1 WO2007138124A1 PCT/ES2006/070074 ES2006070074W WO2007138124A1 WO 2007138124 A1 WO2007138124 A1 WO 2007138124A1 ES 2006070074 W ES2006070074 W ES 2006070074W WO 2007138124 A1 WO2007138124 A1 WO 2007138124A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- cache memory
- speculative
- thread
- cache
- message
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Definitions
- the embodiments of the present invention relate to processor-based systems, and more particularly to the implementation of a memory coherence protocol within one of such systems.
- processors have incorporated increasing support for execution-level parallelism.
- the parallelism at the level of execution exploited by the architectures is explicit or non-speculative.
- the use of parallelism at the level of speculative execution has been proposed to further increase the benefits of multi-threaded / multi-core architectures.
- the code is divided into pieces that are executed speculatively in parallel.
- Transactional memory execution is a similar technique in which different threads are allowed to have speculative access and write to memory, ignoring possible data dependencies between threads.
- the state of speculative memory is assigned atomic to the state of the architecture or discarded depending on the checks of the execution time (for example of the dependencies of the memory between threads).
- physical equipment support in the memory subsystem is expanded with support to handle speculative data, detect data dependency between threads, and entrust or crush the speculative state.
- a memory subsystem may be able to maintain a different speculative version per thread of the same memory location so that speculative threads of the same application can share the memory space and write in the same memory locations.
- An expanded memory subsystem with speculation and multiversion support is called a multiversion cache (MVC).
- FIG. 1 is a block diagram of a part of a system according to an embodiment of the present invention.
- FIG. 2 is a flow chart of a method for effecting speculative execution in accordance with an embodiment of the present invention.
- FIG. 3 is a flow chart of a method for performing additional speculative operations in accordance with an embodiment of the present invention.
- FIG. 4 is a flow chart of a method for more speculative operations in accordance with an embodiment of the present invention.
- FIG. 5 is a flow chart of a method for processing received bus messages according to an embodiment of the present invention.
- FIG. 6 is a flow chart of a method for entrusting the results of a speculative operation in accordance with an embodiment of the present invention.
- FIG. 7 is a flow chart of a method for crushing a speculative operation according to an embodiment of the present invention.
- FIG. 8 is a state transition diagram illustrating the responses to events of the processor according to an embodiment of the present invention.
- FIG. 9 is a state transition diagram illustrating the responses to bus messages according to an embodiment of the present invention.
- FIG. 10 is a block diagram of a multiprocessor system according to an embodiment of the present invention. Detailed description
- a multiversion cache memory protocol can be implemented in a system to allow multi-threaded speculative processing and / or transactions. In this way, improved performances can be obtained since the threads can be executed in parallel and a cache memory consistency protocol, in combination with software that handles the orders through the threads, can determine the validity of any given speculative thread.
- a multiversion cache memory does not implant the communication of the values of the speculative memory between speculative threads.
- the physical equipment is significantly simplified, since this avoids a centralized version control logic. Consequently, physical equipment can be minimized to implement speculative thread execution, and in addition there is no need for a centralized directory or other centralized cache memory structure.
- a cache memory controller associated with local cache memories can receive bus traffic relative to speculative accesses and, on the basis of this information and the state of minimum speculative physical equipment in the cache memory, determine if there is a conflict to a place to which you have access.
- the cache controller can send a signal to a software layer, for example, to an application manipulator to determine the nature of the conflict. By determining that one or more threads have to be crushed, the application manipulator can send a message on the bus to produce the crush. He The controller (or controllers) of the cache memory associated with the thread (threads) when canceled can consequently establish the status of one or more lines of cache memory associated with the thread.
- a multiversion cache consistency protocol may be implemented based on a modified, shared, invalid (MSI) / modified, exclusive, shared, invalid (MESI) conventional protocol.
- the protocol which can be referred to herein as a MU [E] SLI protocol, includes additional states (for example, a state L corresponding to a speculative loaded state, and a state U corresponding to an insecure state) and can operate in the Word granularity, dynamically detect memory dependencies between threads, and support a speculative version of a place in memory for each data cache. That is, the protocol can support a speculative version of a word given by thread and by data cache.
- additional states for example, a state L corresponding to a speculative loaded state, and a state U corresponding to an insecure state
- the speculative memory state can be maintained in each local data cache memory of the kernel and does not propagate to higher levels of a memory hierarchy until it is entrusted.
- the expulsion of a speculatively modified cache memory line can cause the cancellation of a speculative thread that runs in that core.
- the coherence activity due to non-speculative loads and storage can operate in the granularity of the line.
- the protocol can operate on the granularity of the word to support speculative versions and reduce unnecessary cancellations due to false sharing conditions.
- the dependencies of the memory between threads can be verified dynamically.
- a dependency of data for example, dependency between threads of reading after writing (RAW) or writing after reading (WAR)
- a violation manipulator can be invoked.
- the violation manipulator can execute at application level and properly cancel the speculation activity
- the protocol has no concept of thread order.
- a software layer that manages the thread ratio can be implemented. For example, in the case of a violation of the data dependency between threads, the invoked software manipulator is responsible for checking whether there is a dependency on reading after writing before canceling the speculative thread that has made a reading (and all its successors).
- expulsions of non-speculative cache memory lines can be handled according to the MESI protocol.
- the status of the speculative memory and the status of the information is maintained locally in the data cache and does not propagate to higher levels until entrusted, any expulsion of a line of cache memory to which having speculative access (that is, access to read or write) causes a violation, similar to that of a dependency on data between threads.
- the protocol can allow a mixture of speculative and non-speculative load / storage in the same local data cache.
- any loading / storage performed by a speculative thread is treated as speculative.
- special loads / storage called "secure" accesses, can be made by any thread (speculative or not) for access to shared memory and these accesses can be treated as non-speculative. Therefore, some interactions can occur when speculative and non-speculative loads / storage effected by access to the same wire to the same places.
- the protocol can resolve this issue by raising a case of violation provided that a non-speculative load / storage has access to a place of speech that is speculatively accessed (that is, with the set of bits U or L).
- the coherence protocol can dynamically keep track of data words in memory that have been speculatively accessed and verify data dependencies between threads in order to detect false speculations on the fly.
- the mechanism to dynamically check the dependencies between wires can be based on several bus messages. In one embodiment, such messages may be tagged with the thread identifier (ID) of the thread generating the message, the address of the cache line that has been accessed and at least one word mask to indicate the word (words) that was accessed within the line.
- ID thread identifier
- bus messages that can be generated over speculative access may include a read verification message, a write verification message and a non-speculative write verification message (which are designated, respectively, as a message of ChkRd, ChkWr, and ChkNSWr).
- a multi-cache cache can be used in a multi-processor system.
- the system may include multiple processors, for example, cores of a multicore processor or multiple processors of a multiprocessor system.
- Each core may include or be associated with a local cache, for example, a level 1 cache (Ll) that includes a cache controller.
- Ll level 1 cache
- the system 10 includes a processor 20 that is coupled to a system memory 65, in which it can use a dynamic direct access memory (DRAM), in one embodiment.
- processor 20 can be coupled to system memory 65 through an out-of-chip interface 60, although the scope of the present invention is not limited to this aspect.
- DRAM dynamic direct access memory
- a processor 20 includes a core 30 and a cache memory 40.
- the processor 20 may be a single core processor, although in other implementations the processor 20 may be a multi-core processor, in which others may be similarly configured cores with a core and an associated cache memory.
- the cache memory 40 which can be a cache memory Ll, includes a memory array 42 and a cache controller 50.
- the memory array 42 includes a plurality of cache memory lines 43a-43n (generically line 43 of the memory cache). Each line 43 of the cache memory can store multiple data words in a data part 49. Although the scope of the present invention is not limited to this aspect, in one embodiment the data part 49 can store eight words.
- each cache line 43 may include an associated tag 44, which can be used to access the cache memory line.
- each cache memory line 43 may include a first status portion 45, which may in turn include a series of bits or indicators according to a selected cache memory consistency protocol. For example, in one embodiment, this may be a MESI protocol. In other embodiments, other cache memory protocols may be used, such as an MSI protocol.
- each line 43 of cache memory may further include a third speculative mask 46, which is also referred to as a first word mask.
- the first speculative mask 46 may include a bit associated with each word of the part of data 49. Accordingly, in the embodiment of FIG. 1, the first speculative mask 46 may include first speculative indicators 41i-41 8 (generically first speculative indicator 41) each associated with a corresponding word in data portion 49.
- the first speculative word mask 46 may be used to indicate that there has been a speculative reading of the associated word in data part 49.
- a second speculative mask 48 which is also referred to herein as a second word mask, may include a bit associated with each word of data part 49.
- the second speculative mask 48 may include second speculative indications 47i ⁇ 47 8 (generically second speculative indicator 47) each associated with a corresponding word in data portion 49.
- the second speculative word mask 48 may be used to indicate that has produced a speculative writing of the associated word in data portion 49.
- each second indicator 47 of the second speculative word mask 48 may be referred to as a U (Unsafe) bit, which is set when writing a storage of a speculative thread or a transaction region in the corresponding word.
- each first indicator 41 of the first speculative word mask 46 may be referred to as an L (Speculatively Loaded) bit, which indicates that the data word has been read by the transaction or speculative thread and was not produced by that thread /transaction.
- L Speculatively Loaded
- cache memory controller 50 may cause appropriate indicators to be set in the first speculative mask 46 and in the second speculative mask 48.
- the cache controller 50 can cause the generation and transmission of bus messages to notify other agents of the system, for example, other cache controllers, in relation to with the status of the various cache memory lines. In this way, speculative processing can be implanted using minimal physical equipment.
- the cache memory controller 50 may also be configured to receive bus messages arriving, for example, from other cache controllers and determine if there is a conflict between an address indicated by the bus message and a location in cache memory 40. If so, cache memory controller 50 can send a data dependency violation message, for example, to kernel 30 to enable the execution of an appropriate manipulator to determine the ordering between accesses in conflict.
- processor 20 may include an interface 55 on the chip, which makes communication between several cores possible within processor 20, in embodiments in which processor 20 is a multi-core processor. Although it has been illustrated with this particular implementation in the embodiment of FIG. 1, it should be understood that the scope of the present invention is not limited to this aspect.
- FIG. 2 a flow chart of a method for performing speculative operations in accordance with an embodiment of the present invention has been represented. As illustrated in FIG. 2, method 100 can begin by speculatively executing a thread (block 110). Such speculative execution may correspond to a thread when executed, for example, on the basis of prediction based on a branch of a probable path for a program flow.
- the speculative execution may correspond to the execution of a transaction in a transactional memory system according to an embodiment of the present invention.
- you can determine whether a loading operation is to be carried out (rhombus 115). If not, the control passes back to block 110, previously considered. If a load operation is to be carried out, the control goes to block 120.
- the data can be accessed in a local cache memory (block 120). For example, a kernel that executes the thread may require data that is present in a cache memory Ll.
- a U bit and an L bit associated with the data can be checked to determine the speculative state of the data that has been accessed. If it is determined that the data has not been accessed during speculative execution, the control goes to block 130.
- a cache controller associated with the cache memory Ll can establish a speculative load indicator for the associated data provided to the processor and can also generate a bus message (block 130). More specifically, the cache controller can send the required data to the kernel. In addition, the cache controller may establish one or more speculative load indicators associated with the data. For example, with reference again to FIG. 1, suppose that the kernel requires data from an entire cache memory line 43.
- the cache controller will set all the first indicators 41i-41 8 of the first speculative word mask 46 to indicate that all of them have been loaded the corresponding data of a cache memory line 43.
- the cache controller can also generate a bus message. Note that this bus message can only be generated the first time that a given data place is speculatively accessed during a speculative thread. In this way, a reduced bus traffic is carried out, while still providing the necessary information, that is, the wire Speculatively had access to a given memory location.
- an identification message may be sent to indicate that the data in its cache memory has been speculatively loaded in one embodiment, which may correspond to a read verification bus message, that is, a ChkRd.
- This message can be sent with the address and content of the first word mask.
- This message may cause other cache controllers to determine that a word has not been written to that word mask.
- the analysis of the word mask by another cache controller will be considered in the following. Note that block 130, and its operations of establishing a load indicator and generating a bus message, are not carried out if the data accessed has been read or written and stored in the local cache during the current execution speculative Consequently, block 130 is derived and method 100 concludes.
- a flow chart of a method for performing speculative operations in accordance with an embodiment of the present invention has been represented.
- a method 135 can begin by continuing the speculative execution of a thread (block 138).
- it can be determined whether a storage operation is to be carried out (rhombus 140). If not, the control can go back to block 138 for another speculative execution. If, on the contrary, a storage operation is to be carried out, the control can go to block 145.
- rhombus 150 it can be determined whether the data was produced in speculative execution. If so, method 135 can be concluded. Otherwise, the control passes from rhombus 150 to block 155. In this, the speculative data can be stored, and a speculative write indicator can be set. Further, a bus message can be generated (block 155). That is, in addition to storing the data in the data portion 49 of a cache memory line 43, one or more second indicators 47 can be set within the second speculative mask 48 to indicate this speculative data writing.
- the associated cache memory controller can send a bus message, for example, a write check message, that is, a ChkWr, which can be received by other cache controllers which then verify that no load has read data. of a word in the second speculative mask 48 corresponding to a place to which it has been written.
- this write verification message can only be sent the first time a data place with storage data is provided during the execution of a speculative thread. This reduces traffic even while providing the necessary information, that is, a given data place has been modified during speculative execution. Note that although it has been described with this particular implantation in the embodiment of FIG. 3, it should be understood that the scope of the present invention is not limited. Also, note that additional actions can be taken in a system to confirm whether the speculative execution was appropriate and should be entrusted or whether the speculative execution should be annulled, as described in more detail below.
- method 200 can begin by completing speculative processing (block 210). For example, such a speculative process can be completed when a speculative thread reaches the end of its instructional stream or when a transaction in a transactional memory system completes its operation.
- speculative execution can write speculatively determined data in a local cache memory, for example a cache memory Ll of a core in which speculative execution has occurred. It can then be determined if the speculative execution has been validated (rhombus 220). For this determination it can be taken into account if the data used by the kernel for speculative execution were valid. In different embodiments, the validation can take place in different ways and can be performed by various software in combination with physical equipment.
- the control goes to block 230, where the state of the speculative memory can be entrusted to the state of the architecture (block 230).
- Such entrustment of the state of the local cache memory can be carried out in accordance with an organization chart that is considered in the following with respect to FIG. 6.
- the control goes to block 240.
- the speculative state can be canceled.
- such cancellation can be carried out in accordance with the flow chart of FIG. 7, which is considered in more detail in the following.
- a cache controller may also receive bus messages, for example, from other cache controllers associated with speculative execution. These bus messages may include information regarding the speculative state of data in cache memory lines associated with the cache controller that sends such messages. Based on these messages, a receiving cache controller can determine if an impact has occurred at a location in its local cache.
- FIG. 5 a flow chart of a method for processing received bus messages according to an embodiment of the present invention has been represented.
- a bus message associated with speculative execution (block 310).
- such a bus message can be received from a cache controller that is associated with a thread that is subject to speculative execution.
- it can be determined whether the data corresponding to the bus message exists in the cache memory that receives the bus message (rhombus 320). For example, based on the tag information sent with the bus message it can be determined if there is a bit in the cache memory. If not, you can conclude method 300.
- the cache controller can determine if there is a conflict, for example, by comparing a speculative word mask received with the message with the appropriate speculative word mask of the cache memory line reached.
- a logical "Y" operation can be performed with bits between the received mask and the appropriate mask of the data line reached. This operation will be considered in more detail in the following. If a match occurs (that is, a logical "one" of the logical "Y” operation) results in a conflict. Consequently, the control goes to block 340.
- the cache controller may signal a violation of the data dependency (block 340). More specifically, a violation of the data dependency between threads can be pointed out.
- the cache memory controller that terminates the violation may send a particular violation message (Viol), for example, to its core associated with the identifiers of the conflicting threads.
- the core can vectorize an application manipulator to perform a sort comparison between the conflicting threads.
- the application handler can generate bus messages to indicate that one or more threads should be overridden to avoid data breaches. Although it has been illustrated with this particular implementation in the embodiment of FIG. 5, it should be understood that other forms of manipulation of incoming bus messages can be performed.
- FIG. 6 represented in a flow chart of a method for entrusting the results of a speculative operation to a state of architecture according to an embodiment of the present invention.
- method 400 you can start by receiving a message to entrust to a bus (block 410).
- a message to entrust to a bus can be received by a cache controller that receives an indication that the data stored in its cache memory that was generated speculatively has been validated.
- the cache controller can restore the speculative state of the data line that has been speculatively accessed in its local cache (block 420). That is, that both speculative word masks, the first and second, for any lines of cache memory to which you have access speculatively, can be restored.
- any of these cache memory lines in which one or more words were modified during speculative execution may have a more updated cache memory consistency status. More specifically, any such lines can be established in a modified state (block 430). For example, in implementations using an MESI protocol, the M bit can be set.
- the cache controller can also generate an update bus message. More specifically, the cache controller can generate such messages for shared data that has been modified (block 440).
- a bus update message can be sent, that is, a DUpd message.
- bus messages can cause one or more cache memories to send an invalid modified data line architecture value (block 460). Consequently, upon receiving such a value, the local cache memory can merge its speculatively written words with the value of the line architecture to eventually entrust the correct state of the line architecture to the memory (block 470).
- An application manipulator or other agent may determine that the speculative execution of a given transaction or thread violates a data dependency rule. When this occurs, a so-called kill bus message can be sent.
- FIG. 7 a flow chart of a method for canceling a speculative operation according to an embodiment of the present invention has been represented. Consequently, as illustrated in FIG. 7, method 500 can be started when a kill bus message has been received (block 510).
- the message can be received from a core that implants the application manipulator.
- the message may be generated by a cache memory controller or by another system agent.
- the cache controller can restore the speculative state of such cache memory lines that have been speculatively accessed (block 520 ). For example, the first and second speculative word masks can both be deleted for any lines in the cache memory that have been speculatively accessed.
- the cache controller can invalidate the state of any speculatively written cache lines (block 530). Consequently, any lines of the cache memory that have indicators established in the second speculative word masks can be invalidated. Such invalidation may correspond to an invalid bit setting of a MESI state of the associated cache memory line.
- any of the invalidated lines were in an exclusive state (rhombus 540). That is, it can be determined whether the invalidated lines that have been speculatively accessed were the exclusive property of the local cache. If this is not the case, method 500 can be concluded. If, on the contrary, any invalidated lines were in an exclusive state, the control goes to block 550. In this case, a release bus message (that is, a RelOwner) can be sent to these previously exclusive cache memory lines (block 550). Accordingly, the cache controller can send a bus message that releases ownership of the associated cache line or lines and therefore returns ownership of the line to memory.
- FIGS. 8 and 9 are state transition diagrams according to an embodiment of the present invention.
- FIG. 8 represents the responses to events in the processor, while FIG. 9 represents responses to bus messages. Transitional states have not been included for clarity. The state transitions are labeled with the following nomenclature: "events or messages / actions received and / or messages generated”. The states, events, actions and messages involved in the protocol illustrated in FIGS. 8 and 9, are described in Table 1.
- ChkRd message is generated by any speculative load that has access to a place of speech that has not previously been accessed (read or written) by the same thread.
- the ChkWr message is generated by any speculative storage in a place of word that has not been speculatively written previously (that is, it is not insecure).
- verification messages can only be generated on the first speculative load or stored in a word location in the cache memory.
- ChkNSWr messages can be generated by any non-speculative storage (that is, a storage produced by a non-speculative thread or a "secure" storage produced by any thread).
- the actual dependency check can be carried out whenever a cache memory controller receives a check message and compares (for example, by means of a "Y" bit operation) the word mask of the message with the L or U bits of the cache memory line to which you had access accordingly.
- the ChkRd message causes the cache controller to compare the word mask of the message against the U bits, while the ChkWr and ChkNSWr messages compare it against the L bits.
- This violation invokes an application manipulator with the IDs (identities) of the producer and consumer threads as parameters.
- a special thread ID can be passed as a producer parameter to notify that the producer thread is non-speculative.
- the application through the violation manipulator may be responsible for managing the cancellation of the speculation activity properly.
- this involves checking the order between producer and consumer threads to verify that the violation is caused by a dependency on reading after writing. If so, the manipulator can send a message to cancel the consumer thread and all its successors.
- the protocol can support multiple versions of the same place of speech (one version for each thread), and therefore the reliance on data to write after writing between threads does not cause any violation.
- Access to sub-words can be specially manipulated.
- a speculative storage in a sub-word place implies a violation when another thread writes to the same word because otherwise the coherence of the cache memory would not be guaranteed.
- a speculative storage of a sub-word can cause an associated cache memory controller to set the U bit and send a ChkWr message, as is done in a speculative storage operation.
- the cache controller can set the L bit and send a ChkRd message. This guarantees that whenever another thread carries out a storage in the same place of the word, a violation of the dependence of data between threads will be detected.
- the memory speculative state can entrust yourself to the state of architecture.
- a message called "BusCommit"("EncomendarBus) is sent that includes the thread ID of the speculative thread or the transactional region to be entrusted.
- the cache memory controller receives the "BusCommit” message corresponding to the message thread ID, the process of entrusting the speculative memory begins. This process can be carried out in accordance with the organization chart set out in LA FIG. 6.
- Table 2 the actions performed by the cache memory line in any of the given states are summarized (ie, the "BusCommit" column.
- the entrust process resets all the L and U bits in the local cache memory lines and puts those lines that have any speculatively written word (ie, insecure) in the M state. In order to do this, a scan of the local data cache is performed. Those lines that are in the SU state or in the SUL state cause the generation of a bus grade rise (BusUpg) to invalidate other copies of the cache memory line.
- BusUpg bus grade rise
- a protocol according to an embodiment of the present invention may be responsible for discarding any state of speculative memory produced by the transactional region or the voided thread. This is implemented through a bus message, called "BusKill" in an embodiment that includes the thread ID of the speculative thread to be overridden.
- the speculative memory override process begins. This process can be carried out in accordance with the flow chart set forth in FIG. 7.
- Table 2 shows the actions performed by a line of cache memory in each of the given states (ie, the BusKill column). As described above, this override process includes resetting all the L and U bits in the local data cache. In addition, those cache memory lines that have any speculative word (that is, insecure) are invalidated. The lines that are accessed not speculatively are not changed.
- lines in the EU or EUL state release ownership of the line to memory, through a bus message to release owner (i.e., a RelOwner), when they change to invalid status.
- a point-to-point interconnection system 700 includes a first processor 770 and a second processor 780 coupled through a point-to-point interconnection 750.
- each of the 770 and 780 processors can be a multi-core processor, which includes first and second processor cores (i.e., 774a and 774b processor cores and 784a and 784b processor cores).
- the various processor cores may each include a local cache memory that implements a cache memory consistency protocol in accordance with an embodiment of the present invention. Consequently, using the 700 system, speculative multi-threaded transactions and transmissions can be made.
- the first processor 770 further includes a memory controller center (MCH) 772 and point-to-point interfaces (PP) 776 and 778.
- the second processor 780 includes an MCH 782 and PP interfaces 786 and 788.
- the MCH 772 and 782 couple the processors to the respective memories, that is to a memory 732 and a memory 734, which can be parts of main memory locally linked to the respective processors.
- the first processor 770 and the second processor 780 can be coupled to a chipset 790 through PP 752 and 754 interfaces, respectively.
- the 790 chipset includes PP 794 and 798 interfaces.
- the 790 chipset includes a 792 interface to couple the 790 chipset with a 738 performance graphics engine.
- AGP Advanced Graphics Port
- the 739 AGP bus can be adapted to the Accelerated Graphics Port Interface Spedification, Revision 2.0 (Specification Memory Accelerated Graphics Port Interface, Revision 2.0) published on May 7, 1998 by Intel Corporation, Santa Clara, California (USA)
- a point-to-point 739 interconnection can couple these components.
- the chip set 790 can be coupled to a first bus 716 through an interface 796.
- the first bus 716 can be a "Peripheral Component Interconnect (PCI) bus.” as defined in the "PCI Local Bus Specification, Production Version, Revision 2.1", dated June 1995, or a bus such as the PCI Express bus or other input / output interconnect (I / O) bus third generation, although the scope of the present invention is not limited thereto.
- PCI Peripheral Component Interconnect
- I / O devices 714 can be coupled to the first bus 716, together with a bus bridge 718 that couples the first bus 726 to a second bus 720.
- the second bus 720 may be an LPC bus ( Low PIN or Personal Identification Number).
- Various devices can be coupled to the second bus 720 including, for example, a keyboard / mouse 722, communication devices 726 and the data storage unit 728 which may include code 730, in one embodiment.
- an audio I / O 724 can be coupled to the second bus 720.
- the embodiments can be implemented in code form and can be stored in a machine-accessible medium such as a storage medium that has instructions stored therein that can be used to program a machine. system to execute instructions.
- the storage medium may include, but is not limited to, floppy disks or floppy disks, read-only memory compact discs (CD-ROMs), rewritable compact discs (CD-RWs), and optical magneto disks, semiconductor devices such as read-only memories (ROMs) direct access memories (RAMs) such as dynamic direct access memories (DRAMs), static direct access memories (SRAMs), programmable read only memories (EPROMs), quick memories, memories Electrically erasable programmable read-only (EEPROMs), magnetic or optical cards, or any other suitable means for storing electronic instructions.
- ROMs read-only memories
- RAMs random access memories
- DRAMs dynamic direct access memories
- SRAMs static direct access memories
- EPROMs programmable read only memories
- EEPROMs electrically erasable
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006800547341A CN101449250B (zh) | 2006-05-30 | 2006-05-30 | 用于高速缓存一致性协议的方法、装置及系统 |
US12/226,793 US8185700B2 (en) | 2006-05-30 | 2006-05-30 | Enabling speculative state information in a cache coherency protocol |
DE112006003917T DE112006003917T5 (de) | 2006-05-30 | 2006-05-30 | Verfahren, Gerät und System angewendet in einem Cachespeicher-Kohärenzprotokoll |
PCT/ES2006/070074 WO2007138124A1 (es) | 2006-05-30 | 2006-05-30 | Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/ES2006/070074 WO2007138124A1 (es) | 2006-05-30 | 2006-05-30 | Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2007138124A1 true WO2007138124A1 (es) | 2007-12-06 |
Family
ID=38778149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/ES2006/070074 WO2007138124A1 (es) | 2006-05-30 | 2006-05-30 | Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache |
Country Status (4)
Country | Link |
---|---|
US (1) | US8185700B2 (es) |
CN (1) | CN101449250B (es) |
DE (1) | DE112006003917T5 (es) |
WO (1) | WO2007138124A1 (es) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853188A (zh) * | 2009-05-21 | 2010-10-06 | 威盛电子股份有限公司 | 检测载入-储存冲突的方法及其装置 |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9128750B1 (en) * | 2008-03-03 | 2015-09-08 | Parakinetics Inc. | System and method for supporting multi-threaded transactions |
US8316366B2 (en) * | 2008-04-02 | 2012-11-20 | Oracle America, Inc. | Facilitating transactional execution in a processor that supports simultaneous speculative threading |
US7934180B2 (en) * | 2008-05-27 | 2011-04-26 | International Business Machines Corporation | Incremental speculative merging |
US8806145B2 (en) * | 2008-11-07 | 2014-08-12 | Oracle America, Inc. | Methods and apparatuses for improving speculation success in processors |
US8898401B2 (en) * | 2008-11-07 | 2014-11-25 | Oracle America, Inc. | Methods and apparatuses for improving speculation success in processors |
US8392666B2 (en) * | 2009-05-21 | 2013-03-05 | Via Technologies, Inc. | Low power high speed load-store collision detector |
US8468539B2 (en) * | 2009-09-03 | 2013-06-18 | International Business Machines Corporation | Tracking and detecting thread dependencies using speculative versioning cache |
US8751748B2 (en) * | 2010-01-15 | 2014-06-10 | International Business Machines Corporation | Reader set encoding for directory of shared cache memory in multiprocessor system |
US8832415B2 (en) * | 2010-01-08 | 2014-09-09 | International Business Machines Corporation | Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests |
US8533399B2 (en) * | 2010-01-15 | 2013-09-10 | International Business Machines Corporation | Cache directory look-up re-use as conflict check mechanism for speculative memory requests |
EP2581834A4 (en) | 2010-06-14 | 2014-12-31 | Fujitsu Ltd | MULTICULTURAL PROCESSOR SYSTEM, INTERMEDIATE COHERENCE CONTROL PROCEDURE, AND INTERMEDIATE COHERENCE CONTROL PROGRAM |
US20110320781A1 (en) * | 2010-06-29 | 2011-12-29 | Wei Liu | Dynamic data synchronization in thread-level speculation |
US8751714B2 (en) * | 2010-09-24 | 2014-06-10 | Intel Corporation | Implementing quickpath interconnect protocol over a PCIe interface |
CN101966102A (zh) * | 2010-10-23 | 2011-02-09 | 浙江晶皓光电科技有限公司 | 一种牙具 |
US20130132962A1 (en) * | 2011-11-22 | 2013-05-23 | Microsoft Corporation | Scheduler combinators |
KR101745640B1 (ko) * | 2012-06-15 | 2017-06-09 | 인텔 코포레이션 | 공유 메모리 자원들을 사용하는 메모리 일관성 모델에서 비순차 load들에 대한 로크 기반 및 동기화 기반 방법 |
KR101996351B1 (ko) | 2012-06-15 | 2019-07-05 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
EP2862084A4 (en) | 2012-06-15 | 2016-11-30 | Soft Machines Inc | METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS |
WO2013188754A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A disambiguation-free out of order load store queue |
CN104583957B (zh) | 2012-06-15 | 2018-08-10 | 英特尔公司 | 具有无消歧乱序加载存储队列的重新排序的推测性指令序列 |
KR101826399B1 (ko) | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | Load store 재정렬 및 최적화를 구현하는 명령어 정의 |
KR101832574B1 (ko) * | 2012-06-15 | 2018-02-26 | 인텔 코포레이션 | 모든 store들이 캐시의 모든 워드들에 대한 검사를 스누핑해야만 하는 것을 방지하기 위해 store들을 필터링하는 방법 및 시스템 |
CN104583943B (zh) | 2012-06-15 | 2018-06-08 | 英特尔公司 | 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列 |
KR101695845B1 (ko) | 2012-09-20 | 2017-01-12 | 한국전자통신연구원 | 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치 |
US9311241B2 (en) * | 2012-12-29 | 2016-04-12 | Intel Corporation | Method and apparatus to write modified cache data to a backing store while retaining write permissions |
WO2014107148A1 (en) | 2013-01-03 | 2014-07-10 | Intel Corporation | Adaptive data prefetching |
US9417974B2 (en) | 2013-03-28 | 2016-08-16 | Microsoft Technology Licensing, Llc. | Transaction processing for database in persistent system |
US20150205721A1 (en) * | 2014-01-22 | 2015-07-23 | Advanced Micro Devices, Inc. | Handling Reads Following Transactional Writes during Transactions in a Computing Device |
US10169103B2 (en) | 2014-02-27 | 2019-01-01 | International Business Machines Corporation | Managing speculative memory access requests in the presence of transactional storage accesses |
GB2533415B (en) * | 2014-12-19 | 2022-01-19 | Advanced Risc Mach Ltd | Apparatus with at least one resource having thread mode and transaction mode, and method |
CN106126451B (zh) * | 2016-06-20 | 2019-01-25 | 中国航天科技集团公司第九研究院第七七一研究所 | 基于包含式Cache体系的多核处理器低功耗设计结构 |
CN106126450B (zh) * | 2016-06-20 | 2018-10-30 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种应对多核处理器监听访问冲突的Cache设计结构及方法 |
US10417129B2 (en) * | 2017-05-08 | 2019-09-17 | International Business Machines Corporation | Transactional memory operation success rate |
US10303603B2 (en) | 2017-06-13 | 2019-05-28 | Microsoft Technology Licensing, Llc | Low power multi-core coherency |
US10282298B2 (en) | 2017-06-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Store buffer supporting direct stores to a coherence point |
US11169805B2 (en) | 2018-04-30 | 2021-11-09 | Hewlett Packard Enterprise Development Lp | Dynamic processor cache to avoid speculative vulnerability |
US11055221B2 (en) * | 2019-03-22 | 2021-07-06 | Samsung Electronics Co., Ltd. | Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory |
US11550716B2 (en) * | 2021-04-05 | 2023-01-10 | Apple Inc. | I/O agent |
US11803471B2 (en) | 2021-08-23 | 2023-10-31 | Apple Inc. | Scalable system on a chip |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122712A (en) * | 1996-10-11 | 2000-09-19 | Nec Corporation | Cache coherency controller of cache memory for maintaining data anti-dependence when threads are executed in parallel |
US6389446B1 (en) * | 1996-07-12 | 2002-05-14 | Nec Corporation | Multi-processor system executing a plurality of threads simultaneously and an execution method therefor |
US20030014602A1 (en) * | 2001-07-12 | 2003-01-16 | Nec Corporation | Cache memory control method and multi-processor system |
WO2004075046A2 (en) * | 2003-02-13 | 2004-09-02 | Sun Microsystems Inc. | Selectively unmarking of load-marked cache lines during t speculative thread execution |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040123081A1 (en) * | 2002-12-20 | 2004-06-24 | Allan Knies | Mechanism to increase performance of control speculation |
US20040154010A1 (en) * | 2003-01-31 | 2004-08-05 | Pedro Marcuello | Control-quasi-independent-points guided speculative multithreading |
US7657880B2 (en) * | 2003-01-31 | 2010-02-02 | Intel Corporation | Safe store for speculative helper threads |
US20080134196A1 (en) * | 2005-05-19 | 2008-06-05 | Intel Corporation | Apparatus, System, and Method of a Memory Arrangement for Speculative Multithreading |
US7404041B2 (en) * | 2006-02-10 | 2008-07-22 | International Business Machines Corporation | Low complexity speculative multithreading system based on unmodified microprocessor core |
-
2006
- 2006-05-30 WO PCT/ES2006/070074 patent/WO2007138124A1/es active Application Filing
- 2006-05-30 CN CN2006800547341A patent/CN101449250B/zh not_active Expired - Fee Related
- 2006-05-30 DE DE112006003917T patent/DE112006003917T5/de not_active Withdrawn
- 2006-05-30 US US12/226,793 patent/US8185700B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6389446B1 (en) * | 1996-07-12 | 2002-05-14 | Nec Corporation | Multi-processor system executing a plurality of threads simultaneously and an execution method therefor |
US6122712A (en) * | 1996-10-11 | 2000-09-19 | Nec Corporation | Cache coherency controller of cache memory for maintaining data anti-dependence when threads are executed in parallel |
US20030014602A1 (en) * | 2001-07-12 | 2003-01-16 | Nec Corporation | Cache memory control method and multi-processor system |
WO2004075046A2 (en) * | 2003-02-13 | 2004-09-02 | Sun Microsystems Inc. | Selectively unmarking of load-marked cache lines during t speculative thread execution |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853188A (zh) * | 2009-05-21 | 2010-10-06 | 威盛电子股份有限公司 | 检测载入-储存冲突的方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112006003917T5 (de) | 2009-06-04 |
US8185700B2 (en) | 2012-05-22 |
US20090083488A1 (en) | 2009-03-26 |
CN101449250A (zh) | 2009-06-03 |
CN101449250B (zh) | 2011-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2007138124A1 (es) | Método aparato y sistema aplicado en un protocolo de coherencia de una memoria cache | |
KR101461378B1 (ko) | 동기화 simd 벡터 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US7552290B2 (en) | Method for maintaining atomicity of instruction sequence to access a number of cache lines during proactive synchronization within a computer system | |
US9513905B2 (en) | Vector instructions to enable efficient synchronization and parallel reduction operations | |
KR100954623B1 (ko) | 무한 트랜잭션 메모리 시스템 | |
US6141734A (en) | Method and apparatus for optimizing the performance of LDxL and STxC interlock instructions in the context of a write invalidate protocol | |
US7073026B2 (en) | Microprocessor including cache memory supporting multiple accesses per cycle | |
KR20110050724A (ko) | 사용자 핸들러 등록 장치, 프로세서, 시스템 및 방법 | |
US8930636B2 (en) | Relaxed coherency between different caches | |
US9015436B2 (en) | Performing an atomic operation without quiescing an interconnect structure | |
CN104025027B (zh) | 结构访问处理器、方法、系统和指令 | |
CN106293894B (zh) | 执行事务性功率管理的硬件设备和方法 | |
EP3131018B1 (en) | Transaction abort method in a multi-core cpu. | |
US11620133B2 (en) | Reduction of data cache access in a processing system | |
JP2024502279A (ja) | オフロードされた命令とオフロードされていない命令との間のメモリ順序付けの保持 | |
US8601242B2 (en) | Adaptive optimized compare-exchange operation | |
JP2011081662A (ja) | 演算処理装置及び制御方法 | |
CN115577402A (zh) | 设备之间的安全直接对等存储器访问请求 | |
CN103984671A (zh) | 共享的运算对称的、更新敏感的变量 | |
KR101587362B1 (ko) | 비교-및-스와핑 기반 방식을 사용하여서 데이터를 조건적으로 저장하는 방법 및 장치 | |
US7975129B2 (en) | Selective hardware lock disabling | |
BRPI0805218B1 (pt) | “Aparelho, sistema e método para esquema de omissão de trava por hardware híbrida de retirada prévia-posterior”. | |
JPH07104834B2 (ja) | 処理装置間ロック制御システム | |
JP2005327086A (ja) | 半導体集積回路装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200680054734.1 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 06755387 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 12226793 Country of ref document: US |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1120060039172 Country of ref document: DE |
|
RET | De translation (de og part 6b) |
Ref document number: 112006003917 Country of ref document: DE Date of ref document: 20090604 Kind code of ref document: P |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 06755387 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 |