Memory interleave for heterogeneous computing
First Claim
1. A method for performing memory interleaving comprising:
- performing, in a first level of a two-level interleaving scheme, interleaving across full cache lines of a memory,performing, in a second level of the two-level interleaving scheme, interleaving across sub-cache lines of the memory;
using a prime number of groups of banks for the first level of the two-level interleaving scheme; and
using a prime number of banks within each of said groups of banks for the second level of the two-level interleaving scheme;
wherein said memory interleaving is performed for a system comprising a host processor having a fixed instruction set that defines instructions that the host processor can execute; and
a reconfigurable co-processor comprising reconfigurable logic that is reconfigurable to have any one of a plurality of predefined extended instruction sets for extending the fixed instruction set of the host processor for processing instructions of an executable file, each of said plurality of predefined extended instruction sets defining a plurality of instructions that the reconfigurable co-processor can execute, wherein said plurality of instructions comprise extended instructions that are not natively defined by the fixed instruction set of the host processor.
10 Assignments
0 Petitions
Accused Products
Abstract
A memory interleave system for providing memory interleave for a heterogeneous computing system is provided. The memory interleave system effectively interleaves memory that is accessed by heterogeneous compute elements in different ways, such as via cache-block accesses by certain compute elements and via non-cache-block accesses by certain other compute elements. The heterogeneous computing system may comprise one or more cache-block oriented compute elements and one or more non-cache-block oriented compute elements that share access to a common main memory. The cache-block oriented compute elements access the memory via cache-block accesses (e.g., 64 bytes, per access), while the non-cache-block oriented compute elements access memory via sub-cache-block accesses (e.g., 8 bytes, per access). A memory interleave system is provided to optimize the interleaving across the system'"'"'s memory banks to minimize hot spots resulting from the cache-block oriented and non-cache-block oriented accesses of the heterogeneous computing system.
-
Citations
28 Claims
-
1. A method for performing memory interleaving comprising:
-
performing, in a first level of a two-level interleaving scheme, interleaving across full cache lines of a memory, performing, in a second level of the two-level interleaving scheme, interleaving across sub-cache lines of the memory; using a prime number of groups of banks for the first level of the two-level interleaving scheme; and using a prime number of banks within each of said groups of banks for the second level of the two-level interleaving scheme; wherein said memory interleaving is performed for a system comprising a host processor having a fixed instruction set that defines instructions that the host processor can execute; and
a reconfigurable co-processor comprising reconfigurable logic that is reconfigurable to have any one of a plurality of predefined extended instruction sets for extending the fixed instruction set of the host processor for processing instructions of an executable file, each of said plurality of predefined extended instruction sets defining a plurality of instructions that the reconfigurable co-processor can execute, wherein said plurality of instructions comprise extended instructions that are not natively defined by the fixed instruction set of the host processor. - View Dependent Claims (2, 3)
-
-
4. A system comprising:
-
a memory; a plurality of memory controllers for said memory; a first compute element that issues physical addresses for cache-block oriented access requests to said memory; a second compute element that issues virtual addresses for sub-cache-block oriented access requests to said memory, wherein said first and second compute elements share a common physical and virtual address space of the memory; a memory interleave system that receives the physical address for the cache-block oriented access requests issued by the first compute element and receives the virtual addresses for the sub-cache-block oriented access requests issued by the second compute element, and said memory interleave system determines, for each of the received cache-block oriented and sub-cache-block oriented access requests, one of the plurality of memory controllers to direct the access request for interleaving the cache-block oriented and sub-cache-block oriented access requests. - View Dependent Claims (5, 6, 7, 8)
-
-
9. A system comprising:
-
non-sequential access memory; a cache-access path in which cache-block data is communicated between said non-sequential access memory and a cache memory; and a direct-access path in which sub-cache-block data is communicated to/from said non-sequential access memory; and a memory interleave system for interleaving accesses to said non-sequential access memory via the cache-access path and the direct-access path to minimize hot spots within said non-sequential access memory; wherein said memory interleave system receives a physical address for a cache-block memory access request via the cache-access path, and wherein said memory interleave system receives a virtual address for a sub-cache-block memory access request via the direct-access path; and wherein the memory interleave system determines said interleaving using the received physical address for the cache-block memory access request and the received virtual address for the sub-cache-block memory access request without requiring the virtual address to first be translated into a physical address. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method for performing memory interleaving, said method comprising:
-
receiving, by a memory interleave system, a cache-block oriented memory access request from a host processor of a system, said host processor having a fixed instruction set that defines instructions that the host processor can execute; receiving, by the memory interleave system, a sub-cache-block oriented memory access request from a co-processor of the system, said co-processor comprising reconfigurable logic that is reconfigurable to have any one of a plurality of predefined extended instruction sets for extending the fixed instruction set of the host processor for processing instructions of an executable file, each of said plurality of predefined extended instruction sets defining a plurality of instructions that the co-processor can execute, wherein said plurality of instructions comprise extended instructions that are not natively defined by the fixed instruction set of the host processor; and performing memory interleaving, by the memory interleave system, for the received cache-block oriented and sub-cache-block oriented memory access requests. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification