IP Library Granted Patent US 8,417,508
Granted Patent B2
US 8,417,508 · App. 12/307,636 · Granted Apr 9, 2013

Multiprocessor development environment

Inventors: James Kenney (Oxfordshire, GB); Simon Davidmann (Oxfordshire, GB)
Assignee: Imperas Software Ltd.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,417,508
App. No.
12/307,636
Granted
Apr 9, 2013
Kind
B2
Abstract

In 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 code dictionaries: all instructions outside a SPECULATE/COMMIT region are mapped to the first of the two code dictionaries. If a SPECULATE 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.

Claims (17)

1. A method of simulating a multi-processor system by running system 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:

(i) all instructions are mapped to a native instruction set of the host using two different code dictionaries, a first code dictionary and a second code dictionary; and

(ii) all instructions outside a SPECULATE/COMMIT region are mapped to a native instruction set of the host using the first code dictionary; and

(iii) instructions within a SPECULATE/COMMIT region are mapped to the native instruction set of the host using the second code dictionary which uses a model that more accurately represents a multi-level memory of a final hardware implementation of the multi-processor system.

2. The method of claim 1 wherein the multi-level memory allows the temporary storage of data associated with instructions within the SPECULATE/COMMIT region.

3. The method of claim 1 wherein the model simulates the way that hardware accesses shared memory only via a level 1 cache associated with the multi-processor system handling that instruction.

4. The method of claim 3 wherein simulating a failure of instructions within the SPECULATE/COMMIT region involves the simulator using knowledge of the associativity of the level 1 cache.

5. The method of claim 4 wherein simulating a failure of instructions within the SPECULATE/COMMIT region involves the steps of:

(a) the simulator suspending simulation of a first processor executing within the SPECULATE/COMMIT region in order to simulate another processor;

(b) the simulator traversing a data structure representing the level 1 cache to determine which lines of cache have had speculatively written data placed in them.

6. The method of claim 5 wherein addresses containing speculatively written data are then observed by placing a watchpoint on the corresponding addresses in shared memory.

7. The method of claim 6 wherein, if simulating a second processor leads to any of these watchpointed addresses being speculatively written to, the simulator will flag that speculation as failing for that second processor.

8. The method of claim 7 wherein resumption of simulation for the suspended first processor requires checking whether any of the watchpointed addresses associated with the suspended first processor have been modified by the second processor.

9. The method of claim 8 wherein, if a watchpointed address has been modified, then the simulator will direct the suspended processor to a simulated exception handler.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2026
From: SYNOPSYS, INC.
To: MIPS HOLDING, INC.
Reel/Frame 075040/0078 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2024
From: IMPERAS SOFTWARE LIMITED
To: SYNOPSYS, INC.
Reel/Frame 066515/0118 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2013
From: IMPERAS LTD.
To: IMPERAS SOFTWARE LTD.
Reel/Frame 029827/0233 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2013
From: DAVIDMANN, SIMON
To: IMPERAS SOFTWARE LTD.
Reel/Frame 029828/0041 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2009
From: KENNEY, JAMES
To: IMPERAS LTD.
Reel/Frame 022908/0858 →
Priority Claims (2)
GB 0613409.2 · Jul 6, 2006 · national
GB 0708497.3 · May 2, 2007 · national
Continuity (1)
Related Publication 20100017183A1 · Jan 21, 2010