← Back to Patent Explorer
US5819063A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and data processing system for emulating a program

Assignee: International Business Machines Corp
•
Filing: 1995-09-11
•
Granted: 1998-10-06
•
Expires: 2015-09-11
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and data processing system for emulating a program are disclosed. According to the present invention, the data processing system runs under a first operating system and emulates the execution of a program under a second operating system within a second data processing system. The data processing system includes a memory which stores at least a portion of the first operating system and an emulator comprising a plurality of routines which each emulate an instruction utilized by the first operating system. The memory further includes a simulated mass storage data area which stores at least a portion of the program and a simulated main memory data area. The data processing system further includes a processor which executes instructions within the program under the first operating system by emulation. According to the present invention, the emulator accesses instructions of the program directly from the simulated mass storage data area to minimize emulation overhead. According to a second aspect of the present invention, the data processing system further includes a cache memory comprising a number of cache lines. The routines are stored within main memory such that when the routines are mapped into the cache, a first instruction within each of the emulation routines is aligned with a different one of the cache lines. According to a third aspect of the present invention, when executing instructions within a routine of a first emulated instruction, the processor prefetches a second emulated instruction prior to completion of the first emulated instruction.

Inventors

  • 👤 Stephen A. Dahl
  • 👤 John C. Endicott
  • 👤 Peter J. Heyrman
  • 👤 R. Karl Kirkman
  • 👤 Richard G. Mustain
  • 👤 Jon H. Peterson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-23 17:25
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/30; G06F9/30003; G06F9/30007; G06F9/30021; G06F9/38; G06F9/3802; G06F9/3812; G06F9/3861; G06F9/44; G06F9/455; G06F9/45504; G06F9/45533; G06F9/45537; Y; Y10; Y10S; Y10S707/00; Y10S707/99931; Y10S707/99933

Claims Analysis

Total Claims: 22
Claim 1
Independent Claim 227 words
A data processing system which runs under a first operating system and emulates execution of instructions within a second data processing system under a second operating system, said data processing system comprising: a bus; a memory coupled to said bus, wherein said memory stores at least a portion of said first operating system, said memory including a mass storage data area that stores at least a portion of a program written to execute under said second operating system, said program including a plurality of instructions, wherein said mass storage data area simulates a mass storage device within said second data processing system, said memory further including a main memory data area that simulates a main memory within said second data processing system, wherein data and instructions are mapped to said mass storage data area and said main memory data area from respective non-overlapping address ranged in a virtual memory address space of said data processing system; an emulator stored within said memory, wherein said emulator includes a plurality of routines which each emulate an instruction utilized by said second operating system; and a processor coupled to said bus, wherein said processor executes instructions within said program under said first operating system by emulation, wherein said emulator accesses instructions of said program directly from said mass storage data area within said memory, such that emulation overhead is minimized.
Claim 2
Dependent Claim 227 words
A data processing system which runs under a first operating system and emulates execution of instructions within a second data processing system under a second operating system, said data processing system comprising: a bus; a memory coupled to said bus, wherein said memory stores at least a portion of said first operating system, said memory including a mass storage data area that stores at least a portion of a program written to execute under said second operating system, said program including a plurality of instructions, wherein said mass storage data area simulates a mass storage device within said second data processing system, said memory further including a main memory data area that simulates a main memory within said second data processing system, wherein data and instructions are mapped to said mass storage data area and said main memory data area from respective non-overlapping address ranged in a virtual memory address space of said data processing system; an emulator stored within said memory, wherein said emulator includes a plurality of routines which each emulate an instruction utilized by said second operating system; and a processor coupled to said bus, wherein said processor executes instructions within said program under said first operating system by emulation, wherein said emulator accesses instructions of said program directly from said mass storage data area within said memory, such that emulation overhead is minimized.
Claim 3
Dependent Claim 38 words
The data processing system of claim 1, said data processing system further comprising a pointer maintained by said processor which indicates an address of a next instruction to be emulated among said plurality of instructions within said program.
Claim 4
Dependent Claim 66 words
The data processing system of claim 1, wherein said virtual memory address space is subdivided into a plurality of virtual memory pages, said data processing system further comprising: a mass storage device which stores said program, wherein virtual memory pages containing portions of said program required for emulation are paged in from said mass storage device to only said mass storage data area within said memory.
Claim 5
Dependent Claim 89 words
The data processing system of claim 1, said data processing system further comprising: a cache memory having a plurality of cache lines, wherein addresses within said memory are mapped to said plurality of cache lines according to a predetermined rule, and wherein said plurality of routines are stored within said memory such that a first instruction within each of said plurality of routines is aligned with one of said plurality of cache lines when mapped to said plurality of cache lines when mapped to said plurality of cache lines.
Claim 6
Independent Claim 213 words
A method for emulating a program within a data processing system, said data processing system including a memory, a processor that executes a first operating system, and a virtual memory address space, said method comprising: creating, in said memory, a mass storage data area simulating a mass storage device within a second data processing system and a main memory data area simulating a main memory within said second data processing system, wherein data and instructions are mapped to said mass storage data area and said main memory data area of said memory from respective non-overlapping address ranges in said virtual memory address space of said data processing system; storing at least a portion of a program written to execute under said second operating system within said mass storage data area in said memory, said program including a plurality of instructions; storing within said memory at least a portion of said first operating system and an emulator, wherein said emulator includes a plurality of routines that each emulate an instruction utilized by said second operating system; and accessing an instruction among said plurality of instructions within said program directly from said mass storage data area within said memory; and executing said instruction under said first operating system by emulation, wherein emulation overhead is minimized.
Claim 7
Independent Claim 213 words
A method for emulating a program within a data processing system, said data processing system including a memory, a processor that executes a first operating system, and a virtual memory address space, said method comprising: creating, in said memory, a mass storage data area simulating a mass storage device within a second data processing system and a main memory data area simulating a main memory within said second data processing system, wherein data and instructions are mapped to said mass storage data area and said main memory data area of said memory from respective non-overlapping address ranges in said virtual memory address space of said data processing system; storing at least a portion of a program written to execute under said second operating system within said mass storage data area in said memory, said program including a plurality of instructions; storing within said memory at least a portion of said first operating system and an emulator, wherein said emulator includes a plurality of routines that each emulate an instruction utilized by said second operating system; and accessing an instruction among said plurality of instructions within said program directly from said mass storage data area within said memory; and executing said instruction under said first operating system by emulation, wherein emulation overhead is minimized.
Claim 8
Dependent Claim 40 words
The method for emulating a program within a data processing system of claim 5, said method further comprising: maintaining a pointer which indicates an address of a next instruction to be emulated among said plurality of instructions within said program.
Claim 9
Dependent Claim 90 words
The method for emulating a program within a data processing system of claim 5, said data processing system further including a cache memory having a plurality of cache lines, wherein addresses within said memory are mapped to said plurality of cache lines according to a predetermined rule, and said method further comprising: storing said plurality of routines within said memory such that a first instruction within each of said plurality of routines is aligned with one of said plurality of cache lines when mapped to said plurality of cache lines.
Claim 10
Dependent Claim 161 words
A data processing system, comprising: a bus; a main memory coupled to said bus, wherein said main memory stores at least a portion of a first operating system; a cache memory having a plurality of cache lines, wherein addresses within said main memory are mapped to said plurality of cache lines according to a predetermined rule; an emulator stored within said main memory, said emulator including a plurality of routines that each emulate an instruction utilized by a second operating system, wherein said plurality of routines are stored within said main memory such that a first instruction within each of said plurality of routines is aligned with one of said plurality of cache lines when mapped to said plurality of cache lines; and a processor coupled to said bus, wherein said processor executes instructions within said plurality of routines under said first operating system to emulate a program written to execute under said second operating system, wherein emulation efficiency is enhanced.
Claim 11
Dependent Claim 161 words
A data processing system, comprising: a bus; a main memory coupled to said bus, wherein said main memory stores at least a portion of a first operating system; a cache memory having a plurality of cache lines, wherein addresses within said main memory are mapped to said plurality of cache lines according to a predetermined rule; an emulator stored within said main memory, said emulator including a plurality of routines that each emulate an instruction utilized by a second operating system, wherein said plurality of routines are stored within said main memory such that a first instruction within each of said plurality of routines is aligned with one of said plurality of cache lines when mapped to said plurality of cache lines; and a processor coupled to said bus, wherein said processor executes instructions within said plurality of routines under said first operating system to emulate a program written to execute under said second operating system, wherein emulation efficiency is enhanced.
Claim 12
Dependent Claim 47 words
The data processing system of claim 8, said memory further including a simulated mass storage data area which stores at least a portion of said program, wherein during emulation of said program said emulator directly accesses instructions of said program from said simulated mass storage data area.
Claim 13
Dependent Claim 58 words
The data processing system of claim 8, wherein a portion of a routine among said plurality of routines which cannot be stored within a single cache line is stored within said main memory such that said portion is mapped to a cache line associated with an invalid instruction in an instruction set utilized by said first operating system.
Claim 14
Independent Claim 146 words
A method for emulating a program within a data processing system, said data processing system including a processor, a main memory, and a cache memory, wherein said cache memory has a plurality of cache lines to which addresses within said main memory are mapped according to a predetermined rule, said method comprising: storing at least a portion of a first operating system and an emulator within said main memory, said emulator including a plurality of routines which each emulate an instruction utilized by a second operating system, wherein a first instruction within each of said routines is aligned with a different one of said plurality of cache lines when mapped to said plurality of cache lines; and executing instructions within said plurality of routines under said first operating system to emulate a program written to execute under said second operating system, wherein emulation efficiency is enhanced.
Claim 15
Independent Claim 146 words
A method for emulating a program within a data processing system, said data processing system including a processor, a main memory, and a cache memory, wherein said cache memory has a plurality of cache lines to which addresses within said main memory are mapped according to a predetermined rule, said method comprising: storing at least a portion of a first operating system and an emulator within said main memory, said emulator including a plurality of routines which each emulate an instruction utilized by a second operating system, wherein a first instruction within each of said routines is aligned with a different one of said plurality of cache lines when mapped to said plurality of cache lines; and executing instructions within said plurality of routines under said first operating system to emulate a program written to execute under said second operating system, wherein emulation efficiency is enhanced.
Claim 16
Dependent Claim 57 words
The method for emulating a program within a data processing system of claim 11, wherein at least a portion of said program is stored within a simulated mass storage data area within said memory, wherein during said executing step, said emulator accesses instructions within said program directly from said simulated mass storage data area within said memory.
Claim 17
Dependent Claim 65 words
The method for emulating a program within a data processing system of claim 11, wherein a portion of a routine among said plurality of routines which cannot be stored within a single cache line is stored within said main memory such that said portion is mapped to a cache line associated with an invalid instruction in an instruction set utilized by said first operating system.
Claim 18
Independent Claim 138 words
A method within a data processing system for emulating a program, wherein said data processing system has a memory and a processor, said method comprising: storing a program to be emulated within said memory, said program including a plurality of program instructions; storing a plurality of routines within said memory, wherein said processor executes a first routine among said plurality of routines to emulate execution of a first program instruction, said first routine including a prefetch code which indicates that a second program instruction is to be fetched from said memory; detecting said prefetch code during execution of instructions within said first routine; and in response to a detection of said prefetch code within said first routine, fetching said second program instruction prior to completion of execution of instructions within said first routine, wherein emulation efficiency is maximized.
Claim 19
Independent Claim 138 words
A method within a data processing system for emulating a program, wherein said data processing system has a memory and a processor, said method comprising: storing a program to be emulated within said memory, said program including a plurality of program instructions; storing a plurality of routines within said memory, wherein said processor executes a first routine among said plurality of routines to emulate execution of a first program instruction, said first routine including a prefetch code which indicates that a second program instruction is to be fetched from said memory; detecting said prefetch code during execution of instructions within said first routine; and in response to a detection of said prefetch code within said first routine, fetching said second program instruction prior to completion of execution of instructions within said first routine, wherein emulation efficiency is maximized.
Claim 20
Dependent Claim 31 words
The method for emulating a program of claim 14, said method further comprising: decoding said second program instruction; and fetching instructions within a second routine corresponding to said second program instruction.
Claim 21
Dependent Claim 35 words
The data processing system of claim 1, said virtual memory address space including a plurality of address segments, all of said program being stored in addresses within a single one of said plurality of segments.
Claim 22
Dependent Claim 39 words
The method of claim 5, said virtual memory address space including a plurality of address segments, said method further comprising the step of storing all of said program in addresses within a single one of said plurality of segments.

References Cited (Backward Citations)

US4839797A Cited
US4755933A Cited
US4638423A Cited
US4841476A Cited
US5301302A Cited
US5313614A Cited
US5317754A Cited
US5408624A Cited
US5598560A Cited
US5280593A Cited
US5226164A Cited
US5479616A Cited
US5560013A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-10-05 2002-04-06 2002-10-06 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-10-05 2006-04-06 2006-10-06 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-10-05 2010-04-06 2010-10-06 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag