GB2440037A - Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries. - Google Patents

Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries. Download PDF

Info

Publication number
GB2440037A
GB2440037A GB0713138A GB0713138A GB2440037A GB 2440037 A GB2440037 A GB 2440037A GB 0713138 A GB0713138 A GB 0713138A GB 0713138 A GB0713138 A GB 0713138A GB 2440037 A GB2440037 A GB 2440037A
Authority
GB
United Kingdom
Prior art keywords
processor
code
instructions
commit
speculate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB0713138A
Other versions
GB0713138D0 (en
Inventor
James Kenney
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imperas Ltd
Original Assignee
Imperas Ltd
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
Priority claimed from GBGB0613409.2A external-priority patent/GB0613409D0/en
Application filed by Imperas Ltd filed Critical Imperas Ltd
Publication of GB0713138D0 publication Critical patent/GB0713138D0/en
Publication of GB2440037A publication Critical patent/GB2440037A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F17/5009
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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

Abstract

Disclosed is a method of simulating a multi-processor system by running code that simulates the system on a host processor, a SPECULATE and a COMMIT instruction is used to mark an area of memory, shared across several simulated processors, and the code is translated at run time to a form required by the host processor. All instructions are mapped to a native instruction set of the host using two different dictionaries. The instructions outside a SPECULATE/COMMIT region may be mapped to the first of the two code dictionaries. When a SPECULATE instruction is encountered the instructions may be mapped to a native instruction set using the second code dictionary. When a COMMIT instruction is encountered the instructions may be mapped to the native instruction set using the first dictionary. Within the SPECULATE/COMMIT region instructions may be mapped to the native instruction set of the host using a second model that more accurately represents the multi-level memory of the final hardware implementation of the multi-processor system.

Description

<p>MULTIPROCESSOR DEVELOPMENT ENVIRONMENT</p>
<p>BACKGROUND OF THE INVENTION</p>
<p>1. Field of the Invention</p>
<p>This invention relates to a multiprocessor development environment, it enables a multiprocessor system to be simulated by running code on a host processor</p>
<p>2. Description of the Prior Art</p>
<p>Ihe increasing use of multiple processors in the design of electronic systems has forced changes in the style of programming used. The parallel operation of multiple processors requires careful management of the instructions which require any READ or WRJTE from the system memory. This is due to the fact that the memory is accessible to all the processors in the system and it is important that any such accesses occur in the correct order to maintain the integrity of data.</p>
<p>Early designs used TEST and SET instructions which controlled the read or write of a single location, verifying that the data was valid before it was passed to the part of the system that had requested it. The main drawback of this technique was that the TEST instructions set a semaphore which prevented all other processors accessing the memory until the SET instruction released it. This resulted in the entire system waiting for the semaphore to be relcased. Since data clashes in parallel systems are quite infrequent, this resulted in a lot of time spent waiting where there was no danger of data corruption.</p>
<p>A more recent and better technique is the use of SPECULATE and COMMIT instructions (see Hammond, L., Caristrom, B., Wong, V., Hertzberg. B., Chen, M., Kozyrakis, C. and Olukotun, K., "Programming with Transactional Coherence and Consistency" ASPLOSV4, Boston, Maasachusetts, U.S.A., October 2004.). These instructions, like the TEST and SET ones, mark an area where memory access requires careful management. However, they differ in two ways: firstly, instead of dealing with a simple READ or WRITE instruction from a single location, the region between the S1ECULATE and COMMIT instructions may include a long sequence of instructions which depend on the data from memory and, secondly, the S1ECULATE instruction does not set a semaphore which prevents other processors from accessing the memory as the TEST instruction does. The full section of code, known as a transaction, within a SPECULATE/COMMIT region is atomic, i.e. it must either complete in its entirety or it will be deemed to have failed, resulting in a software exception.</p>
<p>The SPECULATE/COMMI'I process relies on the use of local cache, known as the level I cache (figure 1) to store data while the series of instructions that make up the single transaction within a SPECULATE/COMMIT region is being completed. Each processor in the multi processor system has its own level I cache. When a SPECULATE instruction is encountered within the code, that instruction directs the processor to change the way that all data access is handled; all subsequent writes must remain within the level 1 cache and not propagate to shared memory or shared cache (figure 2). When a COMMIT instruction is encountered, all of the data which has been written to the level 1 cache within the SPECULATE/COMIVHT region, known as speculatively written data, is propagated to more distant shared caches or memories within the multiprocessor system in a single atomic action (figure 3).</p>
<p>In the cases where a read or a write occurs within a SPECULATE/COMMIT region, the full line of data is copied from shared memory Into the cache first (figure 4). This is to ensure that when a partial write occurs from the processor, the fmal data written back to shared memory can be guaranteed to be correct. If the data were not copied first from shared memoiy to local cache then the transfer of partial writes could lead to errors. This is because the parts oi die data, which have not been updated in the cache, will retain previous values which are then subsequently passed back to the shared memory (figure 5). Copying the data from shared memory first and then overwriting guarantees the integrity of the data which is subsequently written back to shared memory (figure 4.</p>
<p>There are a two main reasons why a write will fail in this SPECULATE/COMMIT process.</p>
<p>In S1ECULATE mode, a write by a processor will fail if the write cannot be performed without causing another speculatively written cache line to he ejected from the level 1 cache.</p>
<p>This occurs because the associativity of the cache, i.e. number of locations where data from any given address in memory may be stored, has been exceeded. A COMMIT instruction will fail if any of the speculatively written data would conflict with changes in the shared cache. This occurs if one of tlie other processors in the system writes to the same cache line address as the one which would have already been changed by the speculatively written data had that data been written direct to shared cache rather than level 1 cache. In some systems 1() this may be detected by hardware and the exception taken immediately that the conflicting write occurs; in other systems, the exception may be deferred until the subsequent commit is encountered. Either type of failure will cause an exception to be taken. If this happens all the accumulated speculatively written data will be discarded.</p>
<p>Use of the SPECULATE/COMMIT Instructions therefore results in faster processing as the delays associated with waiting for the semaphore to clear in the TEST/SET style have been removed. The only disadvantage is that, when the code in the SPECULATE/COMMIT region fails to complete properly, the exception handling needs to be more complex to deal with the fact that this is a block of multiple instructions and not a single memory access which has failed.</p>
<p>Simulating multi-processor systems requires changes to existing techniques in order to ensure maximum efficiency and hence simulation specd. One of the more commonly used techniques is that of code-morphing where the simulated processor code is run on the host processor of the machine on which the simulation runs. This is done by means of a code dictionary which, at run time, translates or morphs the code from its original form to the one required for it to run on the host processor.</p>
<p>SUMMARY OF THE PRESENT INVENTION</p>
<p>The invention is a method of simulating a multi-processor system by running code that simulates the system on a host processor, in which: (a) a SPHCULATE and a COMMIT instruction is used to mark an area of memory, shared across several simulated processors, and (b) the code is translated at run time to a form rcuired by the host processor; wherein all instructions are mapped to a native instruction set of the host using two different code dictionaries.</p>
<p>This is more efficient and hence faster than known methods of simulation.</p>
<p>In an implementation, all instructions outside a SPECULATE/COMMIT region are mapped to the first of the two code dictionaries. But if a SPECULAI'E instruction is encountered during runtimc by a simulator running the code, the instructions are mapped to a native instruction set of the host using the second code dictionary. Instructions within the SPECULATE/COMMIT region are mapped to the native instruction set of the host using a second model that more accurately represents the multi-level memory of the final hardware implementation of the multi-processor system. When a (DMMTT instruction is encountered, all instructions are once again mapped the using the first, code dictionary set.</p>
<p>Other implementation features include: * the multi-level memory allows the temporary storage of data associated with instructions within the SPECULA'IE/COMMIT region.</p>
<p>* the second model accesses shared memory only via a level 1 cache associated with the processor handling that instruction.</p>
<p>* simulating a failure of instructions within the SPECULATE/COMMIT region involves the simulator using knowledge of the associativity of the level 1 cache.</p>
<p>30. simulating a failure of instructions within the SPECULATE/COMMIT region involves the steps of: (a) thc simulator suspending simulation of a processor executing within the SPECULATE/COMMIT region in order to simulate another processor; (b) the simulator traversing the data structure representing the level 1 cache to determine which lines of cache have had speculatively written data placed in them.</p>
<p>addresses containing speculatively written data are then observed by placing a watchpoint on the corresponding addresses in shared memory.</p>
<p>* if simulating another processor leads to any of these watchpointed addresses being speculatively written to, the simulator will flag that speculation as failing for that processor.</p>
<p>* resumption of simulation for the suspended processor requires checking whether any of the watchpointcd addresses associated with that processor have been modified by another processor.</p>
<p>* if a watchpointed address has been modified, then the simulator will direct the suspended processor to a simulated exception handler.</p>
<p>Another aspect of the invention is a multi-processor system that has been designed or tested using the simulation method defined above.</p>
<p>A further aspect is computer software operable to simulate a multi-processor system using the simulation method defined above.</p>
<p>A further aspect is a multi-processor development system when programmed with the computer software.</p>
<p>A final aspect is an electronic device including a multi-processor system that has been designed or tested using the simulation method defined above. Electronic devices include personal computers, servers, laptops, mobile telephones and indeed any other kind of device that includes a multi-processor system</p>
<p>BRIEF DESCRIPTION OF THE DRAWINGS</p>
<p>The Invention will be described with reference to the accompanying drawings: Figure 1. Modeffing of cache and shared memory in a multi-processor system in SPI CULATE region of code.</p>
<p>Figure 2: All speculatively read and written data is held in local cache for access by the local processor only Figure 3: All data from successful transactions is transferred to shared memory at COMMIT instruction Figure 4: Generation of correct data in shared memoiy during a partial W1UTE instruction Figure 5: Generation of incorrect data in shared memory during a partial WRITE instruction Figure 6: Details of how the SPECULATE/COMMIT instructions control the use of dictionaries Figure 7: Memory space is far larger than cache SO many locations in memory will map to one location in cache in a simple 1 way cache arrangement.</p>
<p>Figure 8: In an n-way cache there are n different possible ways where the data directed to a particular cache address can be stored. This is known as the associativity of the cache.</p>
<p>Figure 9: Flow of operation in a multi-processor system if a processor (mP) in a SPECULATE/COMMIT region is suspended to allow simulation of a second or subsequent processor (mP).</p>
<p>DETAILED DESCRIPTION</p>
<p>Simulating multi-processor systems with SPECULATE/COMMIT instructions As noted above, simulating multi-processor systems requires changcs to existing techniques in order to ensure maximum efficiency and hence simulation speed. One of the more commonly used techniques is that of codc-morphing where the simulated processor code is run on the host processor of the machine on which the simulation runs. 1'his is done by means of a code dictionary which, at run time, translates or morphs the code from its original form to the one required for it to run on the host processor.</p>
<p>The simulation of the SPECULATE/COMMIT region of the code requires some special consideration. READ and WRITE instructions can be called both from within the SPI CULATE/COMMIT regions and from outside it; these two calls need to be handled differently. Outside any SPECULAIE/COMMIT regions the simulation of memory access needs to be done as fast as possible using the host processor however within the SPECULATE/COMMIT regions a more complex model is required. This means that two models are required, where one model is written for speed of simulation and the other is more detailed for accuracy.</p>
<p>It is not possible to determine in advance, by static analysis of the simulated source code, whether a particular instruction is one which will be evaluated in a SPECULATE/COMMIT region or not. A function could, for example, be called from both inside or outside such a region. This would lead to a situation where the same OPCODE has to be run from both regions. This means that both the detailed model, for the call from within the SPECULATE/COMMIT region, and the fast model, for the call from outside this region, need to be available at runtime and need to be selected in the code morphing process.</p>
<p>Instructions found within the SPECULATE/COMMIT region need to be mapped to the complex model while calls from outside this region need to be mapped direct to the host instruction set using the standard mapping dictionaty.</p>
<p>Dual dictionary implementation details 1'hc technique used to simulate this with maximum efficiency uses the SPECULATE/COMMIT instructions to switch the mapping dictionary so that when a SPECULA1E instruction is cncountcred the code-rnorpher will use a different set of tnapprng instructions until the COMMIT instruction is found. When the COMMIT instruction occurs in the code, the COMMI'I' instruction will complete, then the code dictionary used by the niorpher will be switched back to the standard one again.</p>
<p>At runtinie the code is read by the simulator and processed instruction by instruction (figure 6). Each individual instruction is read 600 and checked to determine whether or not it is a SPECULATE instruction 610. If it is not a SPECULATE instruction it will be passed to the code morphing portion of the software which will map the instruction to native code using the standard code dictionary 620. The next instruction will be processed in the same way 600.</p>
<p>If a SPECULATE instruction is found 610 this causes the code morphing software to usc a different dictionary 630 which contains the more complex models. Instructions will continue to be read 650 as before and each instruction will now be checked to determine whether or not it is a COMMIT instruction 660. If it is not, the instruction will be mapped using the complex modelling dictionary 640 and the next instruction read 650. If it is a COMMIT instruction then the COMMIT instruction will be mapped to the complex model 670 and the standard dictionary restored 680 before the next instruction is read 600.</p>
<p>Implementation details for complex modelling Outside the SPECULATE/COMMIT regions, the models used bypass the actual implementation details and use a dictionary which maps to the native code of the host machine for maximum simulation speed. Within the SPECULATE/COMMIT regions, the possibility of data clashes means that the models be a more accurate representation of the multi-level memory that will exist in the final hardware. It is this multi-level memory which, in the hardware, allows for the temporary storage of data during the processing of the series of instructions which make up the transaction within the SPECUJ.ATE/COMMIT region.</p>
<p>The complex models will access the shared memory but will do so via the level I cache associated with the processor handling the data (figure 1). A READ instruction will result in the full data associated with that address being written into the local cache before being used by the processor. Similarly data associated with a WRITE instruction is written out from the processor and stored in the local level 1 cache during the SPECULATE/COMMIT region (figure 2). When the CoMMIT instruction is reached, if a transaction has completed successfully, the data which was stored in the level I cache needs to be made available to the rest of the system (figure 3). Any data which has been written from the processor to the level I cache is transferred to shared memory.</p>
<p>Maintaining transactional coherence and consistency The vital element of the modelling of behaviour within the SPECULATE/COMMIT regions is the ability to determine when any transaction has failed. There are two main scenarios which could lead to a failure; either when data in the local cache is invalid because the associativit-y of the cache has been exceeded or when the data which is being processed is updated by two or more processors within the SPECULATE/COMMIT region.</p>
<p>In the first instance, failure occurs because the cache is only a small portion of the size of the actual memory (figure 7). Each location in the cache can be used to store data from a number of different addresses. If the designated location for new piece of data is already full then this would represent a failure. In the simplest form of cache each piece of data can only be stored in one location; in more complex cache arrangements there a multiple locations where any given piece of data can be stored (figure 8). This means that the simulator must take account of this number of ways, or associativity, of the cache and only mark as failures those situations where this number of attempts to write records to that location has been exceeded whilst within a SPECULATE/COMMIT region. So for example, in a 4-way cache, the 5th attempt to write data to a given location while in the SPECULATE/COMMIT region It should he noted that on entering the SPECULATE/COMMIT region, the data contained in the local cache is all marked as invalid and all locations arc marked as available. The simulator then stores details of the status of each location, it can be either available, read from, written to or both read from and written to.</p>
<p>The second kind of failure can occur if a location in cache has been written to by two or more processors while in the SPRCULAIE/COMMIT region. This scenario occurs if the simulator needs to suspend simulation of one processor executing within a SPECULATE/COMMIT region in order to simulate another processor in the system. In such a case, the simulator must recognise that the first processor is within a SPECULATE/COMMIT region and take additional steps to maintain data integrity. The order of operation is important. if the first processor, which is in SPECULATE mode, places speculatively written data in the same cache line address in the level 1 cache as that in shared cache which is subsequently written to by any operation of another processor, then the speculatively written data is invalid and the whole of the SPECULAI'E transaction for the first processor would fail (figure 9). The reverse is not true. If data is written by the first processor to the same cache address lines as had been written to by the second after the simulator has resumed simulation of the first proccssor, then the data written by the first would remain valid and the SPJ..?CULATE transaction would not fail.</p>
<p>A failure occurs then if data, written by the first processor on completion of that processor's SPECULATE/COMMIT transaction, has the same destination address in shared memory as data which is then written from the second, or in more complex systems, any subsequent processor, on completion of the first processor's SPECULATE/CC)MMI'I' transaction. In order to determine when this has occurred, if a processor executing within a SPECULATE/COMMIT region is suspended to simulate another processor in the system, the simulator traverses the data structure representing the cache to determine which hnes of cache have had speculatively written data placed in them. These addresses containing speculatively written data are then observed by means of watchpoints' which are placed by the simulator on the corresponding addresses in the shared cache. If any of these addresses is then written to during the simulation of the SPECULA'I'E/COMMI'I' transaction of the second or, in more complex scenarios, any subsequent processor, then the simulator will determine which processor is in speculative mode and attempting to write to that region, and set a flag to indicate that the speculation has failed for that processor. When the simulation eventually resumes execution of the suspended processor, it first checks for any flags, which would indicate that any of the addresses, which contain speculatively written data from before the simulation was suspended, have been modified by another processor during that suspension. If the flag is not set then the simulation continues from the point at which it was suspended. If a flag is set, then the simulator will direct this processor to the simulated exception handler for speculative failure. The precise semantics of this vary from processor to processor: in some processors, the exception should be taken immediately, but in others it may be taken only when the COMMiT instruction is reached at the end of the SPEC ULATE/COrvllvIIT transaction.</p>

Claims (1)

  1. <p>CLAIMS</p>
    <p>1. A method of simulating a multi-processor system by running code that simulates the system on a host processor, in which: (a) a SPECULATE and a COMMIT instruction in the system code is used to mark an area of memory, shared across several simulated processors, and (b) the system code is translated at run time to a form required by the host processor; wherein all instructions are mapped to a native instruction set of the host using two different code dictionaries.</p>
    <p>2. 1he method of Claim I wherein, all instructions outside a SPECULATE/COMMIT region are mapped to a native instruction set of the host using the first of the two code dictionaries.</p>
    <p>3. Ihe method of Claim I or 2 wherein, if a SI'ECULATE instruction is encountered during runtime by a simulator running the code, the instructions are mapped to a native instruction set of the host using the second code dictionary.</p>
    <p>4. The method of Claim 3 wherein instructions within the SPECULATE/COMMiT region are mapped to the native instruction set of the host using a second dictionary which uses a model that more accurately represents the multi-level memory of the final hardware implementation of the multi-processor system.</p>
    <p>5 The method of Claim 4 wherein, when a COMMIT instruction is encountered, all instructions are once again mapped the using the first code dictionary set.</p>
    <p>6. The method of Claims 4-5 wherein the multi-level memory allows the temporary storage of data associated with instructions within the SPECULATE/COMMIT region.</p>
    <p>7. The method of Claims 4-6 wherein the second model simulates the way that the hardware accesses shared mcmoryonly via a level I cache associated with the tOCCSSOt handling that instruction.</p>
    <p>8. The method of Claim 7 wherein simulating a failure of instructions within the SPECULA'IE/COMMIT region involves the simulator using knowledge of the assoclativity of the level I cache.</p>
    <p>9. The method of Claim 8 wherein simulating a failure of instructions within the SPECULATE/COMMIT region involves the steps of: (a the simulator suspending simulation of a processor executing within the SPECULATI.YCOMMIT region in order to simulate another processor; (b) the simulator traversing the data structure representing the level 1 cache to determine which lines of cache have had speculatively written data placed in them.</p>
    <p>10. The method of Claim 9 wherein addresses containing speculatively written data are then observed by placing a watchpoint on the corresponding addresses in shared memory.</p>
    <p>11. The method of Claim 10 wherein, if simulating another processor leads to any of these watchpomted addresses being speculatively written to, the simulator will flag that speculation as failing for that processor.</p>
    <p>12. The method of Claim 11 wherein resumption of simulation for the suspended processor requires checking whether any of the watchpointed addresses associated with that processor have been modified by another processor.</p>
    <p>13. 1he method of Claim 12 wherein, if a watcbpointecl address has been modified, then the simulator will direct the suspended processor to a simulated exception handler.</p>
    <p>14. A multi-processor system that has been designed or tested using the simulation method of any preceding Claim.</p>
    <p>15. Computer softwate operable to simulate a multi-processor system using the simulation method of any preceding Claim 1-14.</p>
    <p>16. A multi-processor development system when programmed with the computer software of Claim 15.</p>
    <p>17. An electronic device including a multi-processor system that has been designed or tested using the simulation method of any preceding Claim I -13.</p>
GB0713138A 2006-07-06 2007-07-06 Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries. Withdrawn GB2440037A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB0613409.2A GB0613409D0 (en) 2006-07-06 2006-07-06 Technique for fast simulation of multi-processor systems with transactional coherence and consistency
GBGB0708497.3A GB0708497D0 (en) 2006-07-06 2007-05-02 P3

Publications (2)

Publication Number Publication Date
GB0713138D0 GB0713138D0 (en) 2007-08-22
GB2440037A true GB2440037A (en) 2008-01-16

Family

ID=38461271

Family Applications (1)

Application Number Title Priority Date Filing Date
GB0713138A Withdrawn GB2440037A (en) 2006-07-06 2007-07-06 Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries.

Country Status (2)

Country Link
GB (1) GB2440037A (en)
WO (1) WO2008004006A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014512A (en) * 1996-10-18 2000-01-11 Samsung Electronics Co., Ltd. Method and apparatus for simulation of a multi-processor circuit

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
EP1635255A3 (en) * 2002-03-20 2006-05-24 Seiko Epson Corporation Apparatus for processing instructions of different instruction set architectures
GB0604859D0 (en) * 2006-03-10 2006-04-19 Imperas Inc Fast multi-processor cycle accurate simulation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014512A (en) * 1996-10-18 2000-01-11 Samsung Electronics Co., Ltd. Method and apparatus for simulation of a multi-processor circuit

Also Published As

Publication number Publication date
GB0713138D0 (en) 2007-08-22
WO2008004006A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
US6892286B2 (en) Shared memory multiprocessor memory model verification system and method
CN107357666B (en) Multi-core parallel system processing method based on hardware protection
US9043194B2 (en) Method and system for efficient emulation of multiprocessor memory consistency
US7814378B2 (en) Verification of memory consistency and transactional memory
US20080208558A1 (en) System and method for simulating a multiprocessor system
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
US7000079B2 (en) Method and apparatus for verification of coherence for shared cache components in a system verification environment
CN110168508B (en) Method, computer system and medium for monitoring memory location where breakpoint occurs
Hedde et al. A non intrusive simulation-based trace system to analyse multiprocessor systems-on-chip software
US8392891B2 (en) Technique for finding relaxed memory model vulnerabilities
CN113196243A (en) Improving simulation and tracking performance using compiler-generated simulation-optimized metadata
JP3382080B2 (en) Method and system for collating instruction execution order consistency
US9658849B2 (en) Processor simulation environment
US8417508B2 (en) Multiprocessor development environment
US9069900B2 (en) Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
US20100100715A1 (en) Handling debugger breakpoints in a shared instruction system
US10936505B2 (en) Methods and systems for verifying out-of-order page fault detection
GB2440037A (en) Method of simulating a multi-processor system in which all the system code is translated into native code at runtime using two different dictionaries.
Hin et al. Supporting RISC-V full system simulation in gem5
JP2007052783A (en) Simulation of data processor
US20060129765A1 (en) System, method and computer program product for testing software
JP3214459B2 (en) Simulation method and apparatus
US20050251795A1 (en) Method, system, and program for optimizing code
ES2381961B2 (en) CACHE MEMORY MODELING METHOD AND SYSTEM
Garashchenko et al. Automatic test generation methodology for verification of a cache memory based on the graph model of cache hierarchy

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)