US12436768B2 - Universal pointers for data exchange in a computer system having independent processors - Google Patents
Universal pointers for data exchange in a computer system having independent processorsInfo
- Publication number
- US12436768B2 US12436768B2 US18/148,701 US202218148701A US12436768B2 US 12436768 B2 US12436768 B2 US 12436768B2 US 202218148701 A US202218148701 A US 202218148701A US 12436768 B2 US12436768 B2 US 12436768B2
- Authority
- US
- United States
- Prior art keywords
- processor
- address
- index
- entry
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/154—Networked environment
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Definitions
- At least some embodiments disclosed herein relate generally to computer architecture and more specifically, but not limited to, techniques for data exchange among computer programs executing in different computer processors.
- a computer file is a data storage facility organized in a file system of a computer.
- the file system controls how data of a file is stored in, and retrieved from, a data storage device according to a predefined standard.
- Operations of a file system are typically programmed in an operation system running in the processor(s) of a computer.
- the operating system is a set of instructions that manage the computer resources to provide common services, including the access to computer files in a data storage device of the computer.
- FIG. 2 illustrates the translation of a universal virtual address to a physical address.
- FIG. 3 illustrates an example of the translation of a universal virtual address to a physical address.
- FIG. 4 shows a method of data exchange between processors using a universal pointer.
- the present disclosure includes the techniques of implementing universal pointers using object-based virtual memory addresses.
- the object-based virtual memory addresses can be translated into physical memory addresses by separate processors that may even have different Instruction Set Architecture (ISA).
- ISA Instruction Set Architecture
- pointers based on object-based virtual memory addresses can be exchanged by computer programs running in different processors to exchange data without relying upon references to files.
- a first processor running a first operating system e.g., Windows
- a second processor running a second operating system e.g., Linux
- URLs Uniform Resource Locators
- the need for the multiple layers of software also increases the likelihood of security vulnerability.
- a universal pointer When a universal pointer is implemented, computer programs running in different computers may exchange data through exchanging pointers. Such a pointer provides a virtual memory address that can be used in different computers to access the same memory location where the different computers can even have different underlying computer architecture.
- the use of such universal pointers can facilitate a memory centric programming paradigm, where different processors can be connected to a set of memory devices and/or storage devices to collaboratively process and/or operate on the data in the memory devices and/or storage devices.
- Processor hardware can be configured to translate virtual addresses provided by pointers to physical addresses for memory access. Such an arrangement can improve efficiency and/or security by removing the need for multiple layers of software conventionally used in processing file accesses.
- the memory location can be in memory ( 117 ) coupled to the processor A ( 111 ), or in memory ( 127 ) coupled to the processor B ( 121 ), or in a storage device ( 131 ).
- the processor B ( 121 ) may access the memory ( 117 ) coupled to the processor A ( 111 ) through communicating with the processor A ( 111 ), or access the memory ( 117 ) without going through the processor A ( 111 ) (e.g., when the memory ( 117 ) is also coupled to the interconnect ( 109 ) directly). In other instances, the processor A ( 111 ) also accesses the memory ( 117 ) through the interconnect ( 109 ).
- Each of the processors ( 111 , . . . , 121 ) has a memory management unit ( 113 , . . . , or 123 ).
- the memory management unit ( 113 , . . . , or 123 ) has an address translation structure ( 115 , . . . , 125 ) that can convert the virtual address ( 101 ) into a physical address of a memory location and uses the physical address to access the memory location.
- a program running in the processor A ( 111 ) may send, to a program running in the processor B ( 121 ), a pointer identifying the virtual address ( 101 ), allowing the program running in the processor B ( 121 ) to process the data identified using the virtual address ( 101 ), or to execute a routine at a location identified using the virtual address ( 101 ).
- Such an approach avoids the need for the program running in the processor A ( 111 ) to use the services of an operating system running in the processor A ( 111 ) to organize the data into a file, stored the file in a storage device ( 131 ) such that the program running in the processor B ( 121 ) may access the data in the file using the services of an operating system running in the processor B ( 121 ).
- the virtual memory address ( 101 ) can have a predetermined width (e.g., a predetermined number of bits) for the processors ( 111 , . . . , 121 ).
- the memory address ( 101 ) can include a portion representing an object ID ( 103 ) and a portion representing an offset ( 107 ) within the object represented by the object ID ( 103 ).
- the virtual address ( 101 ) and/or the object ID ( 103 ) of the virtual address can include a portion identifying an object type ( 105 ).
- the virtual address ( 101 ) and/or the object represented by the object ID ( 103 ) can specify ISA semantics that can be implemented by different manufacturers of the processors ( 111 , . . . , 121 ).
- a static object ID of a predetermined value can be used to represent a kernel object of an operating system running in a processor (e.g., 111 , . . . , or 121 ).
- a processor running instructions for the static object ID of the predetermined value do not perform conditional speculative execution during the execution of the instructions.
- the object ID ( 103 ), the object type ( 105 ), and the offset ( 107 ) have predetermined widths. Predetermined number of bits are used to represent the object ID ( 103 ), the object type ( 105 ), and the offset ( 107 ).
- each virtual address ( 101 ) has 128 bits in one embodiment.
- the virtual address ( 101 ) includes a 64-bit offset ( 107 ) and a 64-bit object ID ( 103 ).
- the object ID ( 103 ) can include a predetermined number of bits representing a type ( 105 ) of the object (e.g., 141 , . . . , 143 , or 143 ).
- an object type ( 105 ) of a value from 0 to 3 can be used to identify a kernel object of an operating system.
- an object type ( 105 ) of a value of 4 to 5 can be used to specify that the offset is an address of different widths (e.g., a 64-bit address or 32-bit address included within the memory address that has 128 bits).
- an object type ( 105 ) of a value of 6 to 7 can be used to specify that a predetermined portion of the object ID is to be interpreted as an identifier of a local object or an object in Partitioned Global Address Space (PGAS).
- an object type ( 105 ) of a value of 32 can be used to specify that the remaining portion of the object ID is to be interpreted as an identifier of an object defined in a server (e.g., 133 ).
- the object represented by the object ID ( 103 ) can be the object A ( 141 ) in the memory ( 117 ) coupled to the processor A ( 111 ), or the object B ( 142 ) in the memory ( 127 ) coupled to the processor B ( 121 ), or the object C ( 143 ) in the storage device(s) ( 131 ).
- a processor ( 111 , . . . , or 121 ) can use the virtual address ( 101 ) in a program counter to load instructions of a routine of the object for execution.
- the object ID ( 103 ) and/or the object type ( 105 ) of the virtual address can be used to identify certain proprieties of the instructions and/or the routine for access control.
- the computer system of FIG. 1 can include an object name server ( 133 ) that provides information about objects (e.g., 141 , . . . , 142 , . . . , 143 ) identified by object IDs (e.g., 103 ) used in the virtual addresses (e.g., 101 ).
- the object name server ( 133 ) can store data indicating the name of an object (e.g., 141 , . . . , 142 , . . . , or 143 ) represented by an object ID ( 103 ), access control parameters of the object (e.g., 141 , . . . , 142 , . . .
- a current storage location/physical address of the object e.g., 141 , . . . , 142 , . . . , or 143
- a revision history of the object e.g., 141 , . . . , 142 , . . . , or 143
- a physical address of a cached copied of the object e.g., 141 , . . . , 142 , . . . , or 143
- a controller of the cached copied of the object e.g., 141 , . . . , 142 , . . .
- privileges for accessing the object e.g., 141 , . . . , 142 , . . . , or 143
- security configurations of the object e.g., 141 , . . . , 142 , . . . , or 143
- other attributes 135
- An address translation structure ( 115 , . . . , or 125 ) of a processor ( 111 , . . . , or 121 ) may not have physical address information of all of the objects ( 141 , . . . , 142 , . . . , 143 ) at a particular time instance of operation.
- an address translation table ( 151 ) is used to map the virtual address ( 101 ) to the physical address ( 153 ).
- the address translation table ( 151 ) can be implemented in an address translation structure ( 115 , . . . , or 125 ) of a memory management unit ( 113 , . . . , or 123 ).
- a hash ( 161 ) is applied on the object ID ( 103 ) to generate an index ( 165 ).
- the index ( 165 ) has a less number of bits than the object ID ( 103 ) and thus reduces the size of the address translation table ( 151 ) for looking up an entry (e.g., 173 , . . . , 175 ) from the table ( 151 ) that is implemented in an address translation structure ( 115 , . . . , or 125 ) of a processor ( 111 , . . . , or 121 ).
- the size of the address translation table ( 151 ) corresponds to the number or count ( 171 ) of entries in the table ( 151 ).
- the collision chain ( 180 ) can be searched to locate the entry (e.g., 182 , or 184 ) that is specified for an object ID (e.g., 181 or 183 ) that matches with the object ID ( 103 ) before the hash ( 161 ).
- the located entry (e.g., 182 , or 184 ) is illustrated as the resulting entry ( 163 ).
- the entry ( 163 ) can further include a bounds length field for checking the validity of the offset ( 107 ) provided in a virtual memory address ( 101 ).
- the offset ( 107 ) is compared to the bounds length identified in the entry ( 163 ). If the offset ( 107 ) is greater than the bounds length, the virtual memory address ( 101 ) is invalid; the memory access made using the virtual memory address ( 101 ) is aborted; and a fault occurs.
- the address ( 197 ) provided in the entry ( 163 ) of the address translation table ( 151 ) can be a physical memory address of a page table or page directory. At least a portion of the offset ( 107 ) can be used as a virtual page number and an index in the page table or page directory to look up the next page table or page directory. The process of looking up the next page table or page directory can be repeated, until an entry looked up using the last virtual page number in the offset ( 107 ) is used to locate a page table entry. A base of a physical memory page identified in the page table entry can be combined with the remaining portion of the offset ( 107 ) to generate a physical address ( 153 ).
- the hash ( 161 ) can be applied to the entire virtual address ( 101 ) such that the address ( 197 ) looked up using the index ( 165 ) is a physical address.
- the entry ( 163 ) can be considered as a page table entry and can include security configuration for the memory address.
- such an implementation can require a large address translation table ( 151 ).
- the hash ( 161 ) can be applied to a combination of the object ID ( 103 ), optionally the object type ( 105 ), and a portion of the offset ( 107 ); and the address ( 197 ) looked up using the index ( 165 ) is a base of a page of physical addresses. The remaining portion of the offset ( 107 ) can be combined with the base to generate the physical address (e.g., 153 ).
- the address translation table ( 151 ) can be considered as a page table; the portion of the address ( 101 ) used to generate the index ( 165 ) from hashing ( 161 ) can be considered an entry ID or a virtual page number (VPN); and the entry ( 163 ) can be considered as a page table entry and can optionally include a security configuration for the memory address.
- a portion of the offset ( 107 ) can be used as an entry ID or a virtual page number (VPN) in the page table to look up the page table entry that contains the base of a memory page or memory region; and the remaining portion of the offset ( 107 ) can be combined with the base to generate the physical address ( 153 ).
- VPN virtual page number
- the hash ( 161 ) can be applied to a combination of the object ID ( 103 ), optionally the object type ( 105 ), and a portion of the offset ( 107 ); and the address ( 197 ) in the entry ( 163 ) looked up using the index ( 165 ) is the address of a page directory.
- the offset ( 107 ) can have one or more virtual page numbers for one or more page directories or page tables.
- a virtual page number (VPN) in the offset ( 107 ) is used to index into the page directory to look up the base of a subsequent page directory or page table.
- the last virtual page number (VPN) in the offset ( 107 ) is used to index into a page table to retrieve the page table entry containing the base of the memory region.
- the leading portion of the address ( 101 ), including the virtual page number (VPN) before the last virtual page number (VPN) can be considered a table ID.
- a collision chain ( 180 ) can be used to identify a unique address associated with each of the object IDs.
- the address ( 197 ) can be used to identify a table, list, or chain storing the collision chain ( 180 ), from which a unique entry (e.g., 182 , or 184 ) for address translation for the object ID ( 103 ) can be located.
- the unique entry (e.g., 182 , or 184 ) looked up from the collision chain ( 180 ) can have a structure similar to the entry ( 163 ) looked up directly from the address translation table ( 151 ) without collision.
- FIG. 4 shows a method of data exchange between processors using a universal pointer.
- the universal pointer can be implemented to include a virtual address ( 101 ) illustrated in FIGS. 1 , 2 , and 3 .
- the virtual address ( 101 ) can be translated into a same physical address ( 153 ) by the different processors ( 111 , . . . , 121 ) using the object name server ( 133 ) of FIG. 2 and/or the address translation table ( 151 ) of FIG. 2 or FIG. 3 .
- a first processor ( 111 ) of a computing system executes first instructions.
- the first instructions can be programmed to use a pointer.
- the first processor ( 111 ) constructs the pointer identifying a virtual memory address ( 101 ) during the execution of the first instructions.
- the pointer can be communicated from the first processor ( 111 ) to the second processor ( 121 ) via a computer network, a computer bus, and/or the Internet.
- the pointer having the virtual memory address ( 101 ) can be used in any of the processors ( 111 , . . . , 121 ) in the computing system to access the same memory location.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Abstract
Description
Claims (20)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/148,701 US12436768B2 (en) | 2018-10-25 | 2022-12-30 | Universal pointers for data exchange in a computer system having independent processors |
| US19/348,586 US20260030027A1 (en) | 2018-10-25 | 2025-10-02 | Universal pointers for data exchange in a computer system having independent processors |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/170,799 US11544069B2 (en) | 2018-10-25 | 2018-10-25 | Universal pointers for data exchange in a computer system having independent processors |
| US18/148,701 US12436768B2 (en) | 2018-10-25 | 2022-12-30 | Universal pointers for data exchange in a computer system having independent processors |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/170,799 Continuation US11544069B2 (en) | 2018-10-25 | 2018-10-25 | Universal pointers for data exchange in a computer system having independent processors |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US19/348,586 Continuation US20260030027A1 (en) | 2018-10-25 | 2025-10-02 | Universal pointers for data exchange in a computer system having independent processors |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20230146488A1 US20230146488A1 (en) | 2023-05-11 |
| US12436768B2 true US12436768B2 (en) | 2025-10-07 |
Family
ID=70326642
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/170,799 Active US11544069B2 (en) | 2018-10-25 | 2018-10-25 | Universal pointers for data exchange in a computer system having independent processors |
| US18/148,701 Active 2038-10-25 US12436768B2 (en) | 2018-10-25 | 2022-12-30 | Universal pointers for data exchange in a computer system having independent processors |
| US19/348,586 Pending US20260030027A1 (en) | 2018-10-25 | 2025-10-02 | Universal pointers for data exchange in a computer system having independent processors |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US16/170,799 Active US11544069B2 (en) | 2018-10-25 | 2018-10-25 | Universal pointers for data exchange in a computer system having independent processors |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US19/348,586 Pending US20260030027A1 (en) | 2018-10-25 | 2025-10-02 | Universal pointers for data exchange in a computer system having independent processors |
Country Status (5)
| Country | Link |
|---|---|
| US (3) | US11544069B2 (en) |
| KR (1) | KR20210065193A (en) |
| CN (1) | CN112930522B (en) |
| DE (1) | DE112019005352T5 (en) |
| WO (1) | WO2020086384A1 (en) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11275587B2 (en) | 2018-05-02 | 2022-03-15 | Micron Technology, Inc. | Static identifications in object-based memory access |
| US11544069B2 (en) | 2018-10-25 | 2023-01-03 | Micron Technology, Inc. | Universal pointers for data exchange in a computer system having independent processors |
| CN113721925B (en) * | 2021-09-03 | 2024-05-03 | 上海壁仞科技股份有限公司 | Computer readable storage medium, memory pointer compiling method and device |
| JP2023044994A (en) * | 2021-09-21 | 2023-04-03 | キオクシア株式会社 | memory system |
| US11886838B2 (en) * | 2022-05-24 | 2024-01-30 | Oracle International Corporation | Space- and time-efficient enumerations |
| CN115408208B (en) * | 2022-08-31 | 2025-07-18 | 杭州宏杉科技股份有限公司 | Storage control method and device applied to storage equipment |
| US12505048B2 (en) * | 2023-09-22 | 2025-12-23 | Rambus Inc. | Memory module with memory-ownership exchange |
Citations (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4445177A (en) | 1981-05-22 | 1984-04-24 | Data General Corporation | Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions |
| US4514800A (en) | 1981-05-22 | 1985-04-30 | Data General Corporation | Digital computer system including apparatus for resolving names representing data items and capable of executing instructions belonging to general instruction sets |
| US4525780A (en) | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
| US4660142A (en) | 1981-05-22 | 1987-04-21 | Data General Corporation | Digital data processing system employing an object-based addressing system with a single object table |
| US4821184A (en) | 1981-05-22 | 1989-04-11 | Data General Corporation | Universal addressing system for a digital data processing system |
| US5724538A (en) * | 1993-04-08 | 1998-03-03 | Hewlett-Packard Company | Computer memory address control apparatus utilizing hashed address tags in page tables which are compared to a combined address tag and index which are longer than the basic data width of the associated computer |
| US20020031135A1 (en) | 2000-09-14 | 2002-03-14 | Kabushiki Kaisha Toshiba | Packet transfer scheme using mobile terminal and router for preventing attacks using global address |
| US6393544B1 (en) | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
| US6446188B1 (en) | 1998-12-01 | 2002-09-03 | Fast-Chip, Inc. | Caching dynamically allocated objects |
| US20030140085A1 (en) | 2001-01-12 | 2003-07-24 | Sun Microsystems, Inc. | Single-word lock-free reference counting |
| US20040103213A1 (en) | 2002-11-27 | 2004-05-27 | Samsung Electronics Co., Ltd. | Method of identifying devices using a IPv6 address |
| US20040123017A1 (en) * | 2002-12-23 | 2004-06-24 | Henry Russell J | Method and apparatus for handling storage requests |
| US20060136694A1 (en) | 2004-12-17 | 2006-06-22 | Robert Hasbun | Techniques to partition physical memory |
| US20060224816A1 (en) | 2005-03-31 | 2006-10-05 | Koichi Yamada | Method and apparatus for managing virtual addresses |
| US20060236074A1 (en) * | 2005-04-14 | 2006-10-19 | Arm Limited | Indicating storage locations within caches |
| US7149878B1 (en) | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
| US7401358B1 (en) | 2002-04-18 | 2008-07-15 | Advanced Micro Devices, Inc. | Method of controlling access to control registers of a microprocessor |
| US20080229069A1 (en) | 2007-03-14 | 2008-09-18 | Qualcomm Incorporated | System, Method And Software To Preload Instructions From An Instruction Set Other Than One Currently Executing |
| US20080250216A1 (en) | 2007-04-03 | 2008-10-09 | Daniel Kershaw | Protected function calling |
| US20090222654A1 (en) * | 2008-02-29 | 2009-09-03 | Herbert Hum | Distribution of tasks among asymmetric processing elements |
| US20090222816A1 (en) | 2008-02-29 | 2009-09-03 | Arm Limited | Data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuirty |
| US20090287902A1 (en) * | 2008-05-15 | 2009-11-19 | Smooth-Stone, Inc. C/O Barry Evans | Distributed computing system with universal address system and method |
| US20090327617A1 (en) | 2008-06-30 | 2009-12-31 | International Business Machines Corporation | Shared Object Control |
| US20090327613A1 (en) | 2008-06-25 | 2009-12-31 | International Business Machines Corporation | System and Method for a Software Managed Cache in a Multiprocessing Environment |
| US20100118734A1 (en) | 2008-11-12 | 2010-05-13 | Dell Products, Lp | Host discovery across different address spaces |
| US20100228936A1 (en) | 2009-03-05 | 2010-09-09 | Sun Microsystems, Inc. | Accessing memory locations for paged memory objects in an object-addressed memory system |
| US20100235598A1 (en) | 2009-03-11 | 2010-09-16 | Bouvier Daniel L | Using Domains for Physical Address Management in a Multiprocessor System |
| US20110055528A1 (en) | 2009-08-27 | 2011-03-03 | Renesas Electronics Corporation | Data processor |
| US20110087858A1 (en) * | 2009-10-08 | 2011-04-14 | Arm Limited | Memory management unit |
| US20110161618A1 (en) | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Assigning efficiently referenced globally unique identifiers in a multi-core environment |
| US20110314238A1 (en) * | 2010-06-16 | 2011-12-22 | International Business Machines Corporation | Common memory programming |
| US20110320759A1 (en) | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Multiple address spaces per adapter |
| US20120042144A1 (en) | 2010-08-11 | 2012-02-16 | Arm Limited | Memory access control |
| US20120079254A1 (en) | 2010-09-24 | 2012-03-29 | Arm Limited | Debugging of a data processing apparatus |
| US20120254497A1 (en) | 2011-03-29 | 2012-10-04 | Yang Ni | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
| US20130132695A1 (en) | 2007-03-30 | 2013-05-23 | Samsung Electronics Co., Ltd. | Method of controlling memory access |
| WO2013174503A1 (en) | 2012-05-21 | 2013-11-28 | Eth Zurich | Secure loader |
| US8635412B1 (en) | 2010-09-09 | 2014-01-21 | Western Digital Technologies, Inc. | Inter-processor communication |
| US20140025770A1 (en) | 2012-07-17 | 2014-01-23 | Convergent.Io Technologies Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
| US20140244885A1 (en) | 2013-02-26 | 2014-08-28 | Red Hat Israel, Ltd. | Configuration snooping bridge |
| US20150046661A1 (en) | 2013-08-07 | 2015-02-12 | Qualcomm Incorporated | Dynamic Address Negotiation for Shared Memory Regions in Heterogeneous Muliprocessor Systems |
| US20150134945A1 (en) | 2013-11-08 | 2015-05-14 | Fujitsu Limited | Information processing device, information processing method, and recording medium storing control program |
| US20150242212A1 (en) | 2014-02-25 | 2015-08-27 | Imagination Technologies Limited | Modeless instruction execution with 64/32-bit addressing |
| US20150277867A1 (en) | 2014-03-28 | 2015-10-01 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
| US20150301841A1 (en) | 2014-04-18 | 2015-10-22 | David N. Mackintosh | Binary translation reuse in a system with address space layout randomization |
| US20160210082A1 (en) | 2015-01-20 | 2016-07-21 | Ultrata Llc | Implementation of an object memory centric cloud |
| US20160231933A1 (en) * | 2015-02-06 | 2016-08-11 | Advanced Micro Devices, Inc. | Memory page access detection |
| US20160350019A1 (en) | 2015-05-29 | 2016-12-01 | Intel Corporation | Access control for memory protection key architecture |
| US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
| US20170147505A1 (en) | 2004-12-22 | 2017-05-25 | Intel Corporation | System and methods exchanging data between processors through concurrent shared memory |
| US20170199815A1 (en) | 2015-12-08 | 2017-07-13 | Ultrata, Llc | Memory fabric software implementation |
| US20180191671A1 (en) | 2017-01-04 | 2018-07-05 | Electronics And Telecommunications Research Institute | STRUCTURE OF INTERFACE IDENTIFIER (IID) OF INTERNET PROTOCOL VERSION 6 (IPv6) ADDRESS, METHOD OF DEFINING IID, AND COMMUNICATION DEVICE FOR PERFORMING THE SAME |
| US20180365438A1 (en) | 2015-07-20 | 2018-12-20 | Intel Corporation | Supporting configurable security levels for memory address ranges |
| US20190196983A1 (en) | 2016-09-30 | 2019-06-27 | Intel Corporation | Multi-tenant encryption for storage class memory |
| US20190339974A1 (en) | 2018-05-02 | 2019-11-07 | Micron Technology, Inc. | Static Identifications in Object-based Memory Access |
| US20200073822A1 (en) | 2018-08-30 | 2020-03-05 | Micron Technology, Inc. | Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space |
| US20200133677A1 (en) | 2018-10-25 | 2020-04-30 | Micron Technology, Inc. | Universal Pointers for Data Exchange in a Computer System having Independent Processors |
| US10810133B1 (en) * | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
-
2018
- 2018-10-25 US US16/170,799 patent/US11544069B2/en active Active
-
2019
- 2019-10-17 CN CN201980068820.5A patent/CN112930522B/en active Active
- 2019-10-17 DE DE112019005352.3T patent/DE112019005352T5/en active Pending
- 2019-10-17 WO PCT/US2019/056819 patent/WO2020086384A1/en not_active Ceased
- 2019-10-17 KR KR1020217015222A patent/KR20210065193A/en not_active Ceased
-
2022
- 2022-12-30 US US18/148,701 patent/US12436768B2/en active Active
-
2025
- 2025-10-02 US US19/348,586 patent/US20260030027A1/en active Pending
Patent Citations (61)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4514800A (en) | 1981-05-22 | 1985-04-30 | Data General Corporation | Digital computer system including apparatus for resolving names representing data items and capable of executing instructions belonging to general instruction sets |
| US4525780A (en) | 1981-05-22 | 1985-06-25 | Data General Corporation | Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information |
| US4660142A (en) | 1981-05-22 | 1987-04-21 | Data General Corporation | Digital data processing system employing an object-based addressing system with a single object table |
| US4821184A (en) | 1981-05-22 | 1989-04-11 | Data General Corporation | Universal addressing system for a digital data processing system |
| US4445177A (en) | 1981-05-22 | 1984-04-24 | Data General Corporation | Digital data processing system utilizing a unique arithmetic logic unit for handling uniquely identifiable addresses for operands and instructions |
| US5724538A (en) * | 1993-04-08 | 1998-03-03 | Hewlett-Packard Company | Computer memory address control apparatus utilizing hashed address tags in page tables which are compared to a combined address tag and index which are longer than the basic data width of the associated computer |
| US6446188B1 (en) | 1998-12-01 | 2002-09-03 | Fast-Chip, Inc. | Caching dynamically allocated objects |
| US6393544B1 (en) | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
| US20020031135A1 (en) | 2000-09-14 | 2002-03-14 | Kabushiki Kaisha Toshiba | Packet transfer scheme using mobile terminal and router for preventing attacks using global address |
| US7149878B1 (en) | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
| US20030140085A1 (en) | 2001-01-12 | 2003-07-24 | Sun Microsystems, Inc. | Single-word lock-free reference counting |
| US7401358B1 (en) | 2002-04-18 | 2008-07-15 | Advanced Micro Devices, Inc. | Method of controlling access to control registers of a microprocessor |
| US20040103213A1 (en) | 2002-11-27 | 2004-05-27 | Samsung Electronics Co., Ltd. | Method of identifying devices using a IPv6 address |
| US20040123017A1 (en) * | 2002-12-23 | 2004-06-24 | Henry Russell J | Method and apparatus for handling storage requests |
| US20060136694A1 (en) | 2004-12-17 | 2006-06-22 | Robert Hasbun | Techniques to partition physical memory |
| US20170147505A1 (en) | 2004-12-22 | 2017-05-25 | Intel Corporation | System and methods exchanging data between processors through concurrent shared memory |
| US20060224816A1 (en) | 2005-03-31 | 2006-10-05 | Koichi Yamada | Method and apparatus for managing virtual addresses |
| US20060236074A1 (en) * | 2005-04-14 | 2006-10-19 | Arm Limited | Indicating storage locations within caches |
| US20080229069A1 (en) | 2007-03-14 | 2008-09-18 | Qualcomm Incorporated | System, Method And Software To Preload Instructions From An Instruction Set Other Than One Currently Executing |
| US20130132695A1 (en) | 2007-03-30 | 2013-05-23 | Samsung Electronics Co., Ltd. | Method of controlling memory access |
| US20080250216A1 (en) | 2007-04-03 | 2008-10-09 | Daniel Kershaw | Protected function calling |
| US20090222816A1 (en) | 2008-02-29 | 2009-09-03 | Arm Limited | Data processing apparatus and method for controlling access to secure memory by virtual machines executing on processing circuirty |
| US20090222654A1 (en) * | 2008-02-29 | 2009-09-03 | Herbert Hum | Distribution of tasks among asymmetric processing elements |
| US20090287902A1 (en) * | 2008-05-15 | 2009-11-19 | Smooth-Stone, Inc. C/O Barry Evans | Distributed computing system with universal address system and method |
| US20090327613A1 (en) | 2008-06-25 | 2009-12-31 | International Business Machines Corporation | System and Method for a Software Managed Cache in a Multiprocessing Environment |
| US20090327617A1 (en) | 2008-06-30 | 2009-12-31 | International Business Machines Corporation | Shared Object Control |
| US20100118734A1 (en) | 2008-11-12 | 2010-05-13 | Dell Products, Lp | Host discovery across different address spaces |
| US20100228936A1 (en) | 2009-03-05 | 2010-09-09 | Sun Microsystems, Inc. | Accessing memory locations for paged memory objects in an object-addressed memory system |
| US20100235598A1 (en) | 2009-03-11 | 2010-09-16 | Bouvier Daniel L | Using Domains for Physical Address Management in a Multiprocessor System |
| US20110055528A1 (en) | 2009-08-27 | 2011-03-03 | Renesas Electronics Corporation | Data processor |
| US20110087858A1 (en) * | 2009-10-08 | 2011-04-14 | Arm Limited | Memory management unit |
| US20110161618A1 (en) | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Assigning efficiently referenced globally unique identifiers in a multi-core environment |
| US20110314238A1 (en) * | 2010-06-16 | 2011-12-22 | International Business Machines Corporation | Common memory programming |
| US20110320759A1 (en) | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Multiple address spaces per adapter |
| US20120042144A1 (en) | 2010-08-11 | 2012-02-16 | Arm Limited | Memory access control |
| US8635412B1 (en) | 2010-09-09 | 2014-01-21 | Western Digital Technologies, Inc. | Inter-processor communication |
| US20120079254A1 (en) | 2010-09-24 | 2012-03-29 | Arm Limited | Debugging of a data processing apparatus |
| US20120254497A1 (en) | 2011-03-29 | 2012-10-04 | Yang Ni | Method and apparatus to facilitate shared pointers in a heterogeneous platform |
| WO2013174503A1 (en) | 2012-05-21 | 2013-11-28 | Eth Zurich | Secure loader |
| US20140025770A1 (en) | 2012-07-17 | 2014-01-23 | Convergent.Io Technologies Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
| US20140244885A1 (en) | 2013-02-26 | 2014-08-28 | Red Hat Israel, Ltd. | Configuration snooping bridge |
| US20150046661A1 (en) | 2013-08-07 | 2015-02-12 | Qualcomm Incorporated | Dynamic Address Negotiation for Shared Memory Regions in Heterogeneous Muliprocessor Systems |
| US20150134945A1 (en) | 2013-11-08 | 2015-05-14 | Fujitsu Limited | Information processing device, information processing method, and recording medium storing control program |
| US20150242212A1 (en) | 2014-02-25 | 2015-08-27 | Imagination Technologies Limited | Modeless instruction execution with 64/32-bit addressing |
| US20150277867A1 (en) | 2014-03-28 | 2015-10-01 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
| US20150301841A1 (en) | 2014-04-18 | 2015-10-22 | David N. Mackintosh | Binary translation reuse in a system with address space layout randomization |
| US20160210082A1 (en) | 2015-01-20 | 2016-07-21 | Ultrata Llc | Implementation of an object memory centric cloud |
| US20160231933A1 (en) * | 2015-02-06 | 2016-08-11 | Advanced Micro Devices, Inc. | Memory page access detection |
| US20160350019A1 (en) | 2015-05-29 | 2016-12-01 | Intel Corporation | Access control for memory protection key architecture |
| US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
| US20180365438A1 (en) | 2015-07-20 | 2018-12-20 | Intel Corporation | Supporting configurable security levels for memory address ranges |
| US20170199815A1 (en) | 2015-12-08 | 2017-07-13 | Ultrata, Llc | Memory fabric software implementation |
| US20190196983A1 (en) | 2016-09-30 | 2019-06-27 | Intel Corporation | Multi-tenant encryption for storage class memory |
| US20180191671A1 (en) | 2017-01-04 | 2018-07-05 | Electronics And Telecommunications Research Institute | STRUCTURE OF INTERFACE IDENTIFIER (IID) OF INTERNET PROTOCOL VERSION 6 (IPv6) ADDRESS, METHOD OF DEFINING IID, AND COMMUNICATION DEVICE FOR PERFORMING THE SAME |
| US10810133B1 (en) * | 2017-11-15 | 2020-10-20 | Amazon Technologies, Inc. | Address translation and address translation memory for storage class memory |
| US20190339974A1 (en) | 2018-05-02 | 2019-11-07 | Micron Technology, Inc. | Static Identifications in Object-based Memory Access |
| US11275587B2 (en) | 2018-05-02 | 2022-03-15 | Micron Technology, Inc. | Static identifications in object-based memory access |
| US20220197648A1 (en) | 2018-05-02 | 2022-06-23 | Micron Technology, Inc. | Static Identifications in Object-based Memory Access |
| US20200073822A1 (en) | 2018-08-30 | 2020-03-05 | Micron Technology, Inc. | Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space |
| US20200133677A1 (en) | 2018-10-25 | 2020-04-30 | Micron Technology, Inc. | Universal Pointers for Data Exchange in a Computer System having Independent Processors |
| US11544069B2 (en) | 2018-10-25 | 2023-01-03 | Micron Technology, Inc. | Universal pointers for data exchange in a computer system having independent processors |
Non-Patent Citations (19)
| Title |
|---|
| Computer file, Wikipedia, printed on Oct. 12, 2018. |
| Extended European Search Report, EP19856112.8, mailed on Apr. 14, 2022. |
| File system, Wikipedia, printed on Oct. 12, 2018. |
| Instruction set architecture, Wikipedia, printed on Oct. 16, 2018. |
| International Search Report and Written Opinion, PCT/US2019/048006, mailed Dec. 11, 2019. |
| International Search Report and Written Optinion, PCT/US2019/056819, mailed Feb. 7, 2020. |
| Lluis Vilanove, et al. "CODOMs: Protecting Software with Code-centric Memory Domains." ACM SIGARCH Computer Architecture news, vol. 42, Issue 3, Jun. 2014. |
| Memory address register, Wikipedia, printed on Jun. 26, 2018. |
| Memory address, Wikipedia, printed on Jun. 26, 2018. |
| Operating system, Wikipedia, printed on Apr. 18, 2018. |
| Pointer, Wikipedia, printed on Oct. 11, 2018. |
| Program counter, Wikipedia, printed on Jun. 26, 2018. |
| 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. |
| Reference, Wikipedia, printed on Oct. 12, 2018. |
| Steve Wallach, "128-Bit Addressing in RISC-V and Security", 5th RISC-V Workshop Proceedings, Nov. 2016. |
| The RISC-V Instruction Set Manual, vol. I: User-Level ISA, May 7, 2017. |
| The RISC-V Instruction Set Manual, vol. II: Privileged Architecture, May 7, 2017. |
| URL, Wikipedia, printed on Oct. 12, 2018. |
| Vilanova, Lluis, et al. "CODOMs: Protecting Software with Code-centric Memory Domains." IEEE, Jun. 14, 2014. |
Also Published As
| Publication number | Publication date |
|---|---|
| CN112930522A (en) | 2021-06-08 |
| US20230146488A1 (en) | 2023-05-11 |
| US20260030027A1 (en) | 2026-01-29 |
| DE112019005352T5 (en) | 2021-08-19 |
| US20200133677A1 (en) | 2020-04-30 |
| CN112930522B (en) | 2024-09-20 |
| WO2020086384A1 (en) | 2020-04-30 |
| US11544069B2 (en) | 2023-01-03 |
| KR20210065193A (en) | 2021-06-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12436768B2 (en) | Universal pointers for data exchange in a computer system having independent processors | |
| US11307861B2 (en) | Securing conditional speculative instruction execution | |
| EP3631651B1 (en) | Method for efficient primary key based queries using atomic rdma reads on cache friendly in-memory hash index | |
| US7254696B2 (en) | Functional-level instruction-set computer architecture for processing application-layer content-service requests such as file-access requests | |
| US12511124B2 (en) | Static identifications in object-based memory access | |
| US20040098544A1 (en) | Method and apparatus for managing a memory system | |
| CN107077496B (en) | Systems, methods, and apparatus for index compilation to optimize index usage | |
| WO2014206129A1 (en) | Computing device and method for executing database operation command | |
| US11188532B2 (en) | Successive database record filtering on disparate database types | |
| CN105608159A (en) | Data caching method and device | |
| CN116204858A (en) | Access control method and related equipment | |
| JP6607044B2 (en) | Server device, distributed file system, distributed file system control method, and program | |
| US12373211B2 (en) | Inter-process serving of machine learning features from mapped memory for machine learning models | |
| US12547411B2 (en) | Securing conditional speculative instruction execution | |
| JP2000090002A (en) | Database management system | |
| CN120371452A (en) | Memory access method, memory access device, chip, electronic equipment and medium | |
| CN115309408A (en) | Data processing method, device, equipment, readable storage medium and program product | |
| TW202240399A (en) | Unified translation miss queue for multiple address translation modes | |
| HK40086876A (en) | Interface access method, apparatus, electronic device, and storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: MICRON TECHNOLOGY, INC., IDAHO Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WALLACH, STEVEN JEFFREY;REEL/FRAME:062245/0391 Effective date: 20181025 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STCT | Information on status: administrative procedure adjustment |
Free format text: PROSECUTION SUSPENDED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: AWAITING TC RESP, ISSUE FEE PAYMENT VERIFIED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |