US 12,242,876 B2
System and method of timekeeping for a virtual machine having multiple virtual processing cores
Timothy James Dale, St. Louis, MO (US); Glenn Alan Patterson, St. Louis, MO (US); Jonathan Nicholas Hotra, Maryland Heights, MO (US); and Craig H. Sowadski, House Springs, MO (US)
Assigned to The Boeing Company, Arlington, VA (US)
Filed by The Boeing Company, Chicago, IL (US)
Filed on Jan. 19, 2022, as Appl. No. 17/579,414.
Claims priority of provisional application 63/144,725, filed on Feb. 2, 2021.
Prior Publication US 2022/0244978 A1, Aug. 4, 2022
Int. Cl. G06F 9/455 (2018.01); G06F 9/48 (2006.01)
CPC G06F 9/45558 (2013.01) [G06F 9/4812 (2013.01); G06F 2009/4557 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A host computer for virtualizing a target multicore processor, the host computer comprising:
a host memory including a first section of memory storing a virtual time object, and a second section storing a virtual machine (VM), wherein the VM includes target code comprises a plurality of threads, wherein each thread includes a plurality of instructions configured to execute on the target multicore processor; and
a host central processing unit (CPU) configured to execute the VM to virtualize the target multicore processor, the VM configured to:
execute the plurality of threads in parallel on corresponding virtual cores, including a first thread having a first plurality of instructions executing on a first virtual core and a second thread having a second plurality of instructions executing on a second virtual core;
assign a designation to increment the virtual time object to the first virtual core;
increment, by the first virtual core, the virtual time object by a first count of the first plurality of instructions executed in the first thread over a first duration;
move the designation to increment the virtual time object to the second virtual core in response to detecting an event that defines an end of the first duration; and
increment, by the second virtual core, the virtual time object by a second count of the second plurality of instructions executed in the second thread over a second duration.