IP Library Granted Patent US 9,935,975
Granted Patent B2
US 9,935,975 · App. 15/404,652 · Granted Apr 3, 2018

Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality

Inventors: Daniel Shawcross Wilkerson (Berkeley, CA); Mark William Winterrowd (San Francisco, CA)
H04L63/1491H04L63/145
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 9,935,975
App. No.
15/404,652
Granted
Apr 3, 2018
Kind
B2
Abstract

A hardware-implemented method to support three desirable software properties: encapsulation, referential integrity/capabilities, and transactions. These properties in turn may be used to support software correctness, specifically the enforcement of invariants, and computer security, specifically protecting parts of programs from each other within a single process.

Claims (27)

1. A method of regulating an execution of a program by a microprocessor, said program having a plurality of data addresses, said microprocessor having a data access operation, said data access operation comprising a base pointer data address and an offset, said method comprising:

annotating at least one of said plurality of data addresses with an object header flag, and

when said data access operation is made to data at a data address, checking that said base pointer data address of said data access operation is annotated with an object header flag, otherwise trapping to a handler.

2. The method of claim 1 , said method further comprising:

annotating at least one of said plurality of data addresses with a meta-data header, and

when a data access operation is made, further performing the steps of:

finding the meta-data header annotated onto said base pointer data address of said data access operation, and

performing a check on said at least one meta-data header and if said check fails, trapping to a handler.

3. The method of claim 2 , in which said at least one meta-data header comprises an object-size field, said method further comprising:

said check further comprising comparing said object-size field of said at least one meta-data header annotated onto the base pointer data address of said at least one data address to said offset of said data access operation,

and if said object-size field is more than said offset of said data access operation, trapping to a handler.

4. A method of regulating an execution of a program by a microprocessor, said program having a plurality of pointers, said microprocessor having a plurality of data addresses, said program having a memory allocator, said method comprising:

annotating at least one of said data addresses with an object version number,

annotating at least one of said pointers with a time address,

when a memory allocator in a program being executed by the microprocessor returns a pointer to data, setting the time address annotated onto said pointer to match the object version number annotated onto said data address,

when a program being executed by the microprocessor executes an instruction for accessing a data address through a pointer, performing the steps of:

the microprocessor comparing the object version number annotated onto said data address to the time address of said pointer, and

if the object version number annotated onto said data address does not match the time address of said pointer, then the microprocessor trapping to a handler, and

when the memory allocator deallocates a data address, incrementing the version number annotated onto the data address.

5. The method of claim 4 , the memory allocator further maintaining a set of free objects, said method further comprising:

annotating at least one of said data addresses with an object version ceiling,

when the memory allocator deallocates a data address,

comparing the object version annotated onto the data address to the object version ceiling annotated onto the data address, and

if the object version annotated onto the data address does not equal the object version ceiling annotated onto the data address, putting the data address into the set of free objects.

6. The method of claim 5 , said method further comprising:

computing an object version next ceiling for a data address from examining the pointers which point to said data address,

setting the object version ceiling annotated onto said data address to the object version next ceiling.

Continuity (3)
Continuation 14204393 · Mar 11, 2014
Provisional Application 61782363 · Mar 14, 2013
Related Publication 20170126738A1 · May 4, 2017