IP Library Granted Patent US 12,436,768
Granted Patent B2
US 12,436,768 · App. 18/148,701 · Granted Oct 7, 2025

Universal pointers for data exchange in a computer system having independent processors

Inventor: Steven Jeffrey Wallach (Dallas, TX)
Assignee: Micron Technology, Inc.
G06F9/3836G06F9/30043G06F9/34G06F12/10G06F2212/1008G06F2212/657
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 12,436,768
App. No.
18/148,701
Granted
Oct 7, 2025
Kind
B2
Abstract

A system, method and apparatus to facilitate data exchange via pointers. For example, in a computing system having a first processor and a second processor that is separate and independent from the first processor, the first processor can run a program configured to use a pointer identifying a virtual memory address having an ID of an object and an offset within the object. The first processor can use the virtual memory address to store data at a memory location in the computing system and/or identify a routine at the memory location for execution by the second processor. After the pointer is communicated from the first processor to the second processor, the second processor can access the same memory location identified by the virtual memory address. The second processor may operate on the data stored at the memory location or load the routine from the memory location for execution.

Claims (54)

1. A device, comprising:

a first processor configured to:

receive, from a second processor, a pointer identifying a virtual memory address in a computing system, the pointer comprising at least an offset representing a memory location offset within an object, an object type associated with the object, and an object identifier having a first number of bits, wherein the object type has a value that identifies the object associated with the object identifier;

apply a hash to the object identifier, a portion of the offset representing the memory location offset within the object, and the object type provided as a portion of the pointer to generate an index from the pointer, wherein the index has a second number of bits that is fewer than the first number of bits;

determine, based on the index, an entry in an address translation table that identifies a base of a physical address corresponding to the virtual memory address;

access a physical memory location represented by the virtual memory address using the entry determined based on the index from the address translation table; and

combine the base identified in the entry with a remaining portion of the offset to generate the physical address.

2. The device of claim 1 , wherein the second processor is separate and independent from the first processor.

3. The device of claim 1 , wherein the first processor and the second processor have different instruction set architecture (ISA).

4. The device of claim 1 , wherein the first processor is running a first operating system and the second processor is running a second operating system different from the first operating system.

5. The device of claim 4 , wherein:

the first operating system is Linux and the second operating system is Windows; or

the first operating system is Windows and the second operating system is Linux.

6. The device of claim 1 , wherein the pointer is communicated from the second processor to the first processor via a computer network.

7. The device of claim 1 , wherein the physical memory location is located in a storage device directly accessible to the first processor, further wherein the storage device is only accessible to the second processor via communication with the first processor.

8. The device of claim 1 , wherein the first processor is further configured to:

load an instruction from the physical memory location into the first processor; and

execute the instruction in the first processor.

9. The device of claim 1 , wherein the first processor is further configured to:

load an operand from the physical memory location into the first processor in response to the virtual memory address being in a register in the first processor; and

execute an instruction on the operand in the first processor.

10. The device of claim 1 , wherein in determination, based on the hash, of the entry in the address translation table the first processor is configured to:

send, to an object name server, the index; and

receive, from the object name server in response to the index, the entry in the address translation table.

11. A system, comprising:

a first processor;

a second processor in communication with the first processor;

memory directly accessible to the first processor, wherein the memory is only accessible to the second processor via communication with the first processor,

wherein the first processor is configured to:

receive, from the second processor, a pointer identifying a virtual memory address in the system, the pointer comprising at least an object identifier having a first number of bits, an offset representing a memory location offset within an object, and an object type having a value identifying the object associated with the object identifier;

apply a hash to a portion of the pointer comprising the object identifier, a portion of the offset representing the memory location offset within the object, and the object type to generate an index from the pointer, wherein the index has a second number of bits that is fewer than the first number of bits;

determine, based on the index, an entry in an address translation table that identifies a base of a physical address corresponding to the virtual memory address;

access, in the memory, a physical memory location represented by the virtual memory address using the entry determined based on the index from the address translation table; and

combine the base identified in the entry with a remaining portion of the offset to generate the physical address.

12. The system of claim 11 , wherein in determination, based on the hash, of the entry in the address translation table the first processor is configured to:

send, to an object name server, the index; and

receive, from the object name server in response to the index, the entry in the address translation table.

13. The system of claim 12 , wherein the object name server is configured to:

receive, from the first processor, the index;

look up a physical address in the address translation table using the index, wherein the address translation table is stored in the object name server; and

send, to the first processor, the entry in the address translation table.

14. The system of claim 11 , wherein in determination, based on the hash, of the entry in the address translation table the first processor is configured to make a determination that the index references multiple entries in the address translation table.

15. The system of claim 14 , wherein, upon making the determination that the index references multiple entries in the address translation table, the determination of the entry in the address translation table further comprises using a collision chain to identify a unique address associated with the virtual memory address.

16. The system of claim 11 , wherein the second processor is separate and independent from the first processor.

17. The system of claim 11 , wherein the first processor and the second processor have different instruction set architecture (ISA).

18. The system of claim 11 , wherein the first processor is running a first operating system and the second processor is running a second operating system different from the first operating system.

19. A device, comprising:

a first processor; and

first memory connected to the first processor, wherein an address translation table is stored on the memory, wherein the first processor is configured to:

receive, from a second processor, an index comprising a hash of a portion of a pointer, wherein the pointer identifies a virtual memory address and the portion of the pointer comprises an object identifier, an object type having a value that identifies an object associated with the object identifier, and an offset representing a memory location offset within an object;

look up an entry in the address translation table using the index, wherein the entry identifies a base of a physical address corresponding to the virtual memory address;

access, using the entry from the address translation table, the physical memory location; and

combine the base identified in the entry with a remaining portion of the offset to generate the physical address.

20. The device of claim 19 , wherein the pointer comprises at least an object identifier having a first number of bits, and further wherein the index has a second number of bits that is fewer than the first number of bits.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2022
From: WALLACH, STEVEN JEFFREY
To: MICRON TECHNOLOGY, INC.
Reel/Frame 062245/0391 →
Continuity (2)
Continuation 16170799 · Oct 25, 2018
Related Publication 20230146488A1 · May 11, 2023
References Cited (80)
US 4445177A · Bratt et al. · 1984 [cited by applicant]
US 4514800A · Gruner et al. · 1985 [cited by applicant]
US 4525780A · Bratt et al. · 1985 [cited by applicant]
US 4660142A · Clancy et al. · 1987 [cited by applicant]
US 4821184A · Clancy et al. · 1989 [cited by applicant]
US 5724538A · Morris · 1998 [cited by examiner]
US 6393544B1 · Bryg et al. · 2002 [cited by applicant]
US 6446188B1 · Henderson et al. · 2002 [cited by applicant]
US 7149878B1 · Jensen et al. · 2006 [cited by applicant]
US 7401358B1 · Christie et al. · 2008 [cited by applicant]
US 8635412B1 · Wilshire · 2014 [cited by applicant]
US 10810133B1 · Volpe · 2020 [cited by examiner]
US 11275587B2 · Wallach · 2022 [cited by applicant]
US 11544069B2 · Wallach · 2023 [cited by applicant]
US 20020031135A1 · Inoue · 2002 [cited by applicant]
US 20030140085A1 · Moir et al. · 2003 [cited by applicant]
US 20040103213A1 · Park · 2004 [cited by applicant]
US 20040123017A1 · Henry · 2004 [cited by examiner]
US 20060136694A1 · Hasbun et al. · 2006 [cited by applicant]
US 20060224816A1 · Yamada et al. · 2006 [cited by applicant]
US 20060236074A1 · Williamson · 2006 [cited by examiner]
US 20080229069A1 · Sartorius et al. · 2008 [cited by applicant]
US 20080250216A1 · Kershaw et al. · 2008 [cited by applicant]
US 20090222654A1 · Hum · 2009 [cited by examiner]
US 20090222816A1 · Mansell et al. · 2009 [cited by applicant]
US 20090287902A1 · Fullerton · 2009 [cited by examiner]
US 20090327613A1 · Nutter et al. · 2009 [cited by applicant]
US 20090327617A1 · Furuichi et al. · 2009 [cited by applicant]
US 20100118734A1 · Weilnau, Jr. et al. · 2010 [cited by applicant]
US 20100228936A1 · Wright et al. · 2010 [cited by applicant]
US 20100235598A1 · Bouvier · 2010 [cited by applicant]
US 20110055528A1 · Kondoh et al. · 2011 [cited by applicant]
US 20110087858A1 · Persson · 2011 [cited by examiner]
US 20110161618A1 · Bellows et al. · 2011 [cited by applicant]
US 20110314238A1 · Finkler · 2011 [cited by examiner]
US 20110320759A1 · Craddock et al. · 2011 [cited by applicant]
US 20120042144A1 · Grisenthwaite · 2012 [cited by applicant]
US 20120079254A1 · Williams et al. · 2012 [cited by applicant]
US 20120254497A1 · Ni et al. · 2012 [cited by applicant]
US 20130132695A1 · Heo et al. · 2013 [cited by applicant]
US 20140025770A1 · Warfield et al. · 2014 [cited by applicant]
US 20140244885A1 · Tsirkin · 2014 [cited by applicant]
US 20150046661A1 · Gathala et al. · 2015 [cited by applicant]
US 20150134945A1 · Takami et al. · 2015 [cited by applicant]
US 20150242212A1 · Sudhakar et al. · 2015 [cited by applicant]
US 20150277867A1 · Hasabnis et al. · 2015 [cited by applicant]
US 20150301841A1 · Mackintosh et al. · 2015 [cited by applicant]
US 20160210082A1 · Frank et al. · 2016 [cited by applicant]
US 20160231933A1 · Loh · 2016 [cited by examiner]
US 20160350019A1 · Koufaty et al. · 2016 [cited by applicant]
US 20160381050A1 · Shanbhogue et al. · 2016 [cited by applicant]
US 20170147505A1 · Baxter et al. · 2017 [cited by applicant]
US 20170199815A1 · Frank et al. · 2017 [cited by applicant]
US 20180191671A1 · Choi et al. · 2018 [cited by applicant]
US 20180365438A1 · Bhattacharyya et al. · 2018 [cited by applicant]
US 20190196983A1 · Khosravi et al. · 2019 [cited by applicant]
US 20190339974A1 · Wallach · 2019 [cited by applicant]
US 20200073822A1 · Wallach · 2020 [cited by applicant]
US 20200133677A1 · Wallach · 2020 [cited by applicant]
US 20220197648A1 · Wallach · 2022 [cited by applicant]
WO 2013174503 · 2013 [cited by applicant]
Computer file, Wikipedia, printed on Oct. 12, 2018. [cited by applicant]
Extended European Search Report, EP19856112.8, mailed on Apr. 14, 2022. [cited by applicant]
File system, Wikipedia, printed on Oct. 12, 2018. [cited by applicant]
Instruction set architecture, Wikipedia, printed on Oct. 16, 2018. [cited by applicant]
International Search Report and Written Opinion, PCT/US2019/048006, mailed Dec. 11, 2019. [cited by applicant]
International Search Report and Written Optinion, PCT/US2019/056819, mailed Feb. 7, 2020. [cited by applicant]
Lluis Vilanove, et al. “CODOMs: Protecting Software with Code-centric Memory Domains.” ACM SIGARCH Computer Architecture news, vol. 42, Issue 3, Jun. 2014. [cited by applicant]
Memory address register, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Memory address, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Operating system, Wikipedia, printed on Apr. 18, 2018. [cited by applicant]
Pointer, Wikipedia, printed on Oct. 11, 2018. [cited by applicant]
Program counter, Wikipedia, printed on Jun. 26, 2018. [cited by applicant]
Reference, Wikipedia, printed on Oct. 12, 2018. [cited by applicant]
Steve Wallach, “128-Bit Addressing in RISC-V and Security”, 5th RISC-V Workshop Proceedings, Nov. 2016. [cited by applicant]
The RISC-V Instruction Set Manual, vol. II: Privileged Architecture, May 7, 2017. [cited by applicant]
The RISC-V Instruction Set Manual, vol. I: User-Level ISA, May 7, 2017. [cited by applicant]
URL, Wikipedia, printed on Oct. 12, 2018. [cited by applicant]
Vilanova, Lluis, et al. “CODOMs: Protecting Software with Code-centric Memory Domains.” IEEE, Jun. 14, 2014. [cited by applicant]
Qi, Fengbin, et al., “An Optimizing Strategy For 32-Bit Pointer Based on 64-Bit Processor.” Computer Application and Software, Abstract only, Nov. 15, 2009. [cited by applicant]