A memory device may include a memory component that stores data and a processor. The processor may map one or more banks or one or more virtual banks in the memory component based on one or more properties associated with the memory component and an expected random access rate for the memory component.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A memory device, comprising: a memory component configured to store data; and a processor configured to map one or more banks or one or more virtual banks in the memory component based on one or more properties associated with the memory component and an expected random access rate for the memory component, wherein a first number of the one or more banks or a second number of the virtual banks is determined based on the one or more properties and the expected random access rate.
A memory device consists of a memory component (for storing data) and a processor. The processor maps memory banks (or virtual banks within the memory component) based on properties of the memory component (like its type or manufacturer) and how often it's expected to be randomly accessed. The number of banks or virtual banks created is determined by these properties and the expected random access rate. This allows for optimized memory access patterns.
2. The memory device of claim 1 , wherein the memory component comprises a Dynamic Random-Access Memory or a NAND memory.
The memory device described above has a memory component that is a Dynamic Random-Access Memory (DRAM) or a NAND memory. Therefore, the bank mapping optimization works with either volatile (DRAM) or non-volatile (NAND) memory types.
3. The memory device of claim 1 , wherein the processor is configured to perform at least two data operations on the memory component via two distinct virtual banks of the virtual banks, wherein a portion of the at least two data operations are being performed at the same time.
In the memory device described in the first claim, the processor can perform two or more data operations on the memory component at the same time, using different virtual banks. This parallel access to distinct virtual banks improves data throughput by allowing simultaneous operations.
4. The memory device of claim 1 , wherein the properties associated with the memory component comprise a row cycle time of the memory component.
The memory device described in the first claim uses the row cycle time of the memory component as one of its "properties." The row cycle time (the time it takes for a memory row to complete a full cycle) affects how the memory banks or virtual banks are mapped by the processor.
5. The memory device of claim 1 , wherein the expected random access rate is determined based on an aggregate line rate of requests received by the processor, a minimum size of each request of the requests, and a type of touch operation performed by each request of the requests.
The memory device described in the first claim determines the expected random access rate based on the total data rate of incoming requests, the minimum size of each request, and the type of operation (e.g., read, write) each request performs. This combines traffic volume and characteristics to estimate access frequency.
6. A method, comprising: receiving, via a processor, an expected random access rate associated with accessing a memory component; receiving, via the processor, a row cycle time associated with the memory component; determining, via the processor, a first number of banks or a second number of virtual banks to generate in the memory component based on the expected random access rate and the row cycle time; and mapping, via the processor, one or more banks or one or more virtual banks in the memory component based on the first number of banks or the second number of virtual banks, respectively, wherein each virtual bank of the one or more virtual banks in the memory component is independently accessible based on locations of the one or more virtual banks in the memory component.
A method involves a processor: receiving an expected random access rate for a memory component; receiving a row cycle time for the memory component; determining the number of memory banks (or virtual banks) to create based on the access rate and row cycle time; and mapping memory banks (or virtual banks) in the memory component based on the determined number. Each virtual bank is independently accessible based on its location.
7. The method of claim 6 , wherein the row cycle time comprises an amount of time for a memory row of the memory component to complete a full cycle.
In the method described in the previous claim, the row cycle time is defined as the amount of time it takes for a memory row within the memory component to complete its full operation cycle (read and write or refresh).
8. The method of claim 6 , wherein the expected random access rate is determined based on a number of touches that is associated with each request to access the memory component.
In the method described above, the expected random access rate is determined based on the number of "touches" or individual operations associated with each request to access the memory component. This considers the complexity of each access request.
9. The method of claim 6 , wherein determining the number of virtual banks to generate in the memory component comprises determining a ratio of the row cycle time to the expected random access rate.
In the method described above, determining the number of virtual banks to create involves calculating the ratio of the row cycle time to the expected random access rate. This ratio informs the optimal segmentation of the memory.
10. The method of claim 6 , comprising accessing, via the processor, a first virtual bank of the one or more virtual banks while a second virtual bank of the one or more virtual banks is also being accessed.
The method described above includes accessing one virtual bank while another virtual bank is also being accessed simultaneously. This enables parallel data operations and increases overall memory throughput.
11. The method of claim 6 , comprising, mapping, via the processor, a plurality of elements of the memory components to one or more elements in the one or more banks or the one or more virtual banks of the memory components.
The method described above includes mapping individual memory elements within the memory component to specific locations within the created memory banks or virtual banks. This step optimizes the arrangement of data within the memory structure.
12. The method of claim 6 , comprising determining, via the processor, the second number of virtual banks to generate in the memory component based on a preferred queue depth for the memory component.
In the method described above, the number of virtual banks is determined based on a preferred queue depth for the memory component. Queue depth refers to the number of packets waiting to be processed, and influences memory access latency.
13. The system of claim 12 , wherein determining, via the processor, the second number of virtual banks to generate in the memory component based on the preferred queue depth comprises performing a simulation of a plurality of random requests accessing the memory component and determining a number of cycles performed by the processor to reach the preferred queue depth.
The method described in the previous queue-depth claim, determines the number of virtual banks by simulating random requests accessing the memory and measuring the number of cycles needed to reach the desired queue depth. This simulation optimizes the virtual bank count.
14. A tangible, non-transitory, machine-readable medium, comprising instructions configured to: receive a preferred queue depth for a memory component, wherein the preferred queue depth comprises a number of packets waiting in a queue to access the memory component; determine a number of cycles to reach the preferred queue depth based on an expected touch rate for a plurality of random packets to be received by the memory component and a first number of banks or a second number of virtual banks in the memory component, wherein each virtual bank of the second number of virtual banks in the memory component is independently accessible based on a location of each virtual bank of the second number of virtual banks in the memory component; and determine a third number of banks or a fourth number of virtual banks in the memory component based on the number of cycles.
A non-transitory, machine-readable medium holds instructions to: receive a preferred queue depth (number of waiting packets) for a memory component; determine the number of processing cycles to reach the preferred queue depth based on the expected data rate and an initial number of banks or virtual banks (each independently accessible); and determine a revised number of banks or virtual banks based on the number of cycles.
15. The tangible, non-transitory, machine-readable medium of claim 14 , wherein the instructions to determine the number of cycles comprise instructions to: perform a simulation of receiving the plurality of random packets by the memory component for the first number of banks or the second number of virtual banks; and determine the number of cycles based on the simulation.
The machine-readable medium from the previous claim determines the number of processing cycles by running a simulation. The simulation models the memory component receiving random data packets with the initial bank or virtual bank configuration. The number of cycles is derived from this simulation.
16. The tangible, non-transitory, machine-readable medium of claim 14 , wherein the instructions to determine the fourth number of virtual banks comprise instructions to: determine whether the number of cycles exceeds a threshold; and increase the second number of virtual banks when the number of cycles exceeds the threshold.
The machine-readable medium described above determines the number of virtual banks by checking if the number of processing cycles (from the simulation) exceeds a threshold value. If the threshold is exceeded, it increases the number of virtual banks.
17. The tangible, non-transitory, machine-readable medium of claim 16 , wherein the threshold is associated with a packet error rate.
In the machine-readable medium described above, the threshold for the number of cycles is related to a packet error rate. The packet error rate reflects the expected number of cycles before an error occurs during the simulation of data packets received by the memory component.
18. The tangible, non-transitory, machine-readable medium of claim 17 , wherein the packet error rate comprises an expected number of cycles performed before an error occur during a simulation of receiving the plurality of random packets by the memory component.
The machine-readable medium in the packet error claim, defines packet error rate as an expected number of cycles performed before an error occurs during simulating packet reception by the memory component. This means the threshold for acceptable performance is directly tied to the likelihood of errors.
19. The tangible, non-transitory, machine-readable medium of claim 16 , wherein the threshold is a multiple of a packet error rate.
The machine-readable medium relating number of cycles and banks, defines the threshold as some multiple of packet error rate. This incorporates a margin of safety around the acceptable number of cycles before increasing virtual banks.
20. The tangible, non-transitory, machine-readable medium of claim 14 , wherein the memory component comprises a Dynamic Random-Access Memory or a NAND memory.
The machine-readable medium that determines banks, queue depth, and cycle rates, is usable where the memory component is a Dynamic Random-Access Memory (DRAM) or a NAND memory.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
May 29, 2015
June 27, 2017
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.