Embodiments described herein are related to the field of computing systems, and more particularly to the management of memory requests by a memory controller in a computing system.
Computer systems, including systems-on-a-chip (SoCs), include processors and multiple memory circuits that store software programs or applications, as well as data being operated on by the processors. Such memories may vary in storage capacity as well as access time. In some computing systems, some memory circuits coupled to the processors via a memory controller circuit communicating with the processors via a communication link or other communication network.
During operation, the processors, which may include processor cores, graphics processors, and the like, transmit requests for access to the memory controller via the communication link. The memory controller receives the requests and arbitrates access to the memory circuits for the requests. Upon relaying a particular request from a processor to the memory circuits, the memory controller circuit waits until the memory circuit fulfills the particular request. In order to fulfill the particular request, the memory circuit may send requested data or an acknowledgement signal to the memory controller circuit, which, in turn, relays the data or signal onto the requesting processor.
Broadly speaking, a system, an apparatus, and a method are contemplated in which the apparatus includes a memory circuit including a plurality of pages, including a particular page having a page activation time. The apparatus also includes a memory controller circuit configured to receive a memory access request corresponding to data of the particular page. The memory controller circuit may also be configured to transmit, in response to a determination that the particular page is inactive, an activation command to the memory circuit to activate the particular page, and to schedule a future transmission of an initial memory command for the particular page based on the page activation time.
In some implementations, the initial memory command is an initial read command. The memory controller circuit may be configured to schedule the initial read command to minimize a delay between when the particular page activates in response to the activation command and when the particular page receives the initial read command.
In particular implementations, the memory access request may be a read command, and the memory controller circuit may be further configured to schedule one or more other read commands for different portions of the data within the particular page. The memory controller circuit may also be configured to include, with a final read command for the particular page, an indication to perform a pre-charge operation to close the particular page.
In various embodiments, a memory access request corresponding to data of a given page may be received within an elapsed time since the given page was refreshed. The memory controller circuit may be configured to, in place of a previously scheduled refresh command, schedule transmission of an activation command for the given page of the memory circuit based on the elapsed time.
In particular implementations, the memory access request may be a write request that includes a read operation followed by a write operation, wherein the read operation includes an initial read command. The memory controller circuit may be configured to schedule the initial read command to reduce a delay between when the particular page activates in response to the activation command and when the particular page receives the initial read command.
In some embodiments, to schedule the future transmission of the initial memory command for the particular page based on the page activation time, the memory controller circuit may be configured to, based on the page activation time, place the initial memory command into a command buffer, wherein a placement of the initial memory command within the command buffer determines when the initial memory command is sent to the memory circuit.
In various implementations, the memory circuit may be a dynamic random-access memory (DRAM) circuit. The page activation time may include an amount of time for the DRAM circuit to copy data from memory cells to a page buffer.
The following detailed description makes reference to the accompanying drawings, which are now briefly described.
While the disclosure is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the disclosure to the particular form illustrated, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.
Various units, circuits, or other components may be described as “configured to” perform a task or tasks. In such contexts, “configured to” is a broad recitation of structure generally meaning “having circuitry that” performs the task or tasks during operation. As such, the unit/circuit/component can be configured to perform the task even when the unit/circuit/component is not currently on. In general, the circuitry that forms the structure corresponding to “configured to” may include hardware circuits. Similarly, various units/circuits/components may be described as performing a task or tasks, for convenience in the description. Such descriptions should be interpreted as including the phrase “configured to.” Reciting a unit/circuit/component that is configured to perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112, paragraph (f) interpretation for that unit/circuit/component. More generally, the recitation of any element is expressly intended not to invoke 35 U.S.C. § 112, paragraph (f) interpretation for that element unless the language “means for” or “step for” is specifically recited.
As used herein, the term “based on” is used to describe one or more factors that affect a determination. This term does not foreclose the possibility that additional factors may affect the determination. That is, a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors. Consider the phrase “determine A based on B.” This phrase specifies that B is a factor that is used to determine A or that affects the determination of A. This phrase does not foreclose that the determination of A may also be based on some other factor, such as C. This phrase is also intended to cover an embodiment in which A is determined based solely on B. The phrase “based on” is thus synonymous with the phrase “based at least in part on.”
In a computer system, a hierarchy of memory circuits are used to store program instructions and data for use by functional circuit blocks within the computer system. Such functional circuit blocks may include processors, processor cores, graphics cores, audio processing circuit, network processing circuits, and the like. Some of the memory circuits, such as cache memory circuits, may be directly coupled to functional circuit blocks in order to provide low-density fast-access dedicated storage for the functional blocks. Other memory circuits are shared between multiple functional circuit blocks to allow the functional circuit blocks access to larger amounts of storage space. To facilitate such sharing of memory circuits, a memory controller circuit may be employed to manage access to the memory circuits.
A memory controller circuit receives requests to access the memory circuits from the functional circuit blocks. Such requests can include requests to retrieve previously stored data from the memory circuits (commonly referred to as “read requests”) and requests to stored data in the memory circuits (commonly referred to as “write requests”). In some cases, a read request and a write request may be combined to form a “read-modify-write” request. One example of a read-modify-write request is a “mask write request” in which a portion of data located at a designated address in the memory circuits is written based on the request, while the remaining portion of the data is unaltered.
As the memory controller circuit receives memory requests to access data the memory circuit, each request is placed in a command buffer in an execution order relative to other received requests in a process referred to as scheduling. A received memory request may correspond to a particular page in the memory circuit. After determining that the particular page is inactive, the memory controller sends an activation command to the memory circuit to activate the particular page. The memory circuit may have an associated page activation time from receiving the activation command to when data from the particular page can be accessed. The memory controller schedules a memory command to access the particular page based on the activation time.
Inefficient use of memory circuits in a computer system can adversely affect the performance and/or power consumption of a computer system. For example, activating a memory page for access and leaving the page active consumes power. The memory controller, therefore, may schedule memory commands that access a same memory page to be executed in a manner that reduces an amount of time that the same memory page is active. The embodiments illustrated in the drawings and described below may provide techniques for scheduling memory access requests to reduce power consumption and improve computer system performance.
A block diagram for an embodiment of a memory system, including a memory controller circuit and a memory circuit, is illustrated in
Memory circuit 120, as shown, includes one or more memory devices, each device including one or more memory pages, including at least pages 125. As used herein, a “memory page,” or simply “page,” refers to a portion of memory cells that can be concurrently sensed in a single memory device using a single read or write command. In some embodiments, a memory page may correspond to one or more physical rows of memory cells in a memory array. In other embodiments, a memory page may correspond to a different physical or logical organization of memory cells, such as, for example, one or more columns of memory cells, or a number of memory cells that can be addressed with a portion of a memory address value. Each of pages 125 have a characteristic page activation time that corresponds to a time for sensing the memory cells in response to receiving a page activation command. For example, after receiving a page activation command for page 125a, data in page 125a is not available to be read until the corresponding page activation time has elapsed. In various embodiments, a page activation time may be the same or different between different memory pages or between different memory devices.
It is noted, that as used herein, the term “concurrent” is used to refer to events that may occur during overlapping points in time. The use of “concurrent” is not intended to imply that events begin and end simultaneously, although such occurrences are not ruled out either.
As illustrated, memory controller circuit 110 is configured to receive memory access request 130 to access data stored in a particular one of pages 125 in memory circuit 120. Memory access request 130 may correspond to a request from a processing circuit included, for example, in a computing system that includes or is otherwise coupled to memory system 100. Memory access request 130 includes a request to read and/or write memory cells corresponding to a particular address value or range of address values. To fulfill a memory access request, memory controller circuit 110 may generate one or more memory commands to be sent to memory circuit 120 to fulfill the memory request. Such commands may be placed into a command buffer as part of a scheduling process. After receiving memory access request 130, memory controller circuit 110 schedules one or more memory commands to be issued in the scheduled order to memory circuit 120 for execution.
As illustrated in
It is noted that memory system 100 as illustrated in
As depicted in
Moving to
Memory controller circuit 210, like memory controller circuit 110, includes circuits for receiving, decoding, scheduling, and executing received memory requests. Memory controller circuit 210 receives a memory request to access the memory circuit from a processing circuit included in a computing system that includes memory controller circuit 210. Control circuit 215 receives the memory request and schedules one or more memory commands to fulfill the memory request. In
Control circuit 215, as shown, decodes memory access request 230 to determine that the memory request is a read request for two different locations in memory page 1. Control circuit 215 further determines that memory page 1 is currently inactive. To activate page 1, control circuit 215 schedules activation command A(p1) 240 in command buffer 250. Control circuit 215 further schedules read commands R(p1) 241 and R(p1) 242 to read locations designated by memory access request 230. Read command R(p1) 241 is an initial read command following activation memory page 1. Control circuit 215 schedules read command R(p1) 241 to minimize a time period between activation of memory page 1 by the activation command A(p1) 240 and page 1 receiving initial read command R(p1) 241. A placement of read command R(p1) 241 within command buffer 250 determines when read command R(p1) 241 is sent to the memory circuit. As depicted, control circuit 215 places read command R(p1) 241 in command buffer 250 such that two entries are maintained between activation command A(p1) 240 and read command R(p1) 241. Since a placement of the commands in command buffer 250 determines when the commands are sent to the memory circuit, this gap in entries results in a time delay between activation command A(p1) 240 and read command R(p1) 241 that is equal to or longer than a page activation time of memory page 1.
As shown by commands 260 in chart 200, activation command A(p1) 240 is received by the memory circuit at time t0 and begins execution. As shown by page[1] 262, memory page 1 is active by time t1, some amount time after receiving and executing activation command A(p1) 240. This amount of time from time t0 to time t1 corresponds to the page activation time for page 1. Read memory command R(p1) 241 is sent by memory controller circuit 210 at time t1, just as memory page 1 is active. Read memory command R(p1) 241 can, therefore, be executed with little to no delay added to the page activation time.
Upon determining that memory access request 230 includes a read request, control circuit 215 may also schedule one or more other read commands for different portions of the data within memory page 1 while page 1 is active. As illustrated, control circuit 215 schedules read command R(p1) 242 to be sent to the memory circuit after memory command R(p1) 241 such that each read command can access memory page 1 while page 1 is active. If there are no further requests to read data from memory page 1, thereby making read command R(p1) 242 a final read command for page 1, control circuit 215 also includes with read command R(p1) 242, an indication to perform a pre-charge operation to close memory page 1. As indicated by page[1] 262, memory page 1 returns to an inactive state after read command R(p1) 242 completes execution.
As illustrated in
In the example of
By scheduling read command R(p1) 241 to be sent to the memory circuit based on the page activation time and the sending of activation command A(p1) 240, memory controller circuit 210 may reduce a power consumed by the memory circuit to keep memory page 1 active by reducing a time between the activation and initial read commands. In addition, by scheduling other commands during a gap between the activation and initial read commands, time that might otherwise be spent waiting for page 1 to activate may be used to fulfill a different memory request, thereby increasing performance of the memory system and may further reduce power consumption by allowing a different memory page to be closed sooner.
It is noted that the embodiment of
In the descriptions of
Turning to
Command buffer 350a is shown with four scheduled memory commands: activation command A(p1) 340, read command R(p1) 342, refresh (p1) command 344 and activation command A(p1) 346. Commands A(p1) 340 and R(p1) 342 may fulfill a memory request to read data from memory page 1 by activating page 1 and then reading one or more memory locations designated by the request. Refresh (p1) command 344 is used to refresh data stored in memory page 1 before a refresh time expires. Some embodiments of memory circuits, such as, e.g., DRAMs, memory pages are refreshed periodically based on a refresh time specified for the particular memory circuit. This refresh may help to preserve data stored in the memory page. Failing to refresh a memory page within the specified refresh time may result in some data stored in the memory page to be lost. In various embodiments, a command specific for refreshing the memory page may be sent by memory controller circuit 310a to the memory circuit, while in other embodiments, one or more other memory commands may be utilized.
As illustrated, read command R(p1) 342 is a final read command for the active memory page 1, and may, therefore, include a command to close page 1. This closing of page 1 may provide a refresh of the data in page 1 as the page is closed. Control circuit 315a in memory controller circuit 310a schedules refresh (p1) 344 to be sent to the memory circuit before the refresh time elapses for page 1, assuming that there are no further accesses to memory page 1 between commands 342 and 344. Some amount of time after refresh (p1) 344 is sent, another command to activate page 1 (A(p1) 346) is scheduled.
Memory controller circuit 310b, as depicted, schedules transmission of an activation command for memory page 1 in place of a refresh command, based on the elapsed time since the given page was previously refreshed. If a memory access request corresponding to data of memory page 1 is received within the indicated refresh time, then control circuit 315b may replace refresh (p1) 344 used in memory controller circuit 310a with activation command A(p1) 346 to activate page 1. Since activation command A(p1) 346 is scheduled before the refresh time elapses, the activation command refreshes data in memory page 1 in addition to activating page 1 to be accessed. Read command R(p1) 348 may then be scheduled to read data requested by the memory request. It is also noted that a write command to a page that is due for a refresh may be used to replace a refresh command. Since the write command may replace data values in the memory page, the previous data values may not need to be preserved.
By replacing a scheduled refresh command with an activation or other command, power consumption may be reduced and performance may be increased. A refresh command may not provide any functionality other than preserving data stored in a refreshed memory page. Executing a memory command that at least partially fulfills a memory request in place of the refresh command may avoid using instruction cycles on a command with no other benefit as well as reduce a time for fulfilling the associated memory request.
It is noted that the embodiment of
Referring back to the description of
Proceeding to
In response to receiving a read request, control circuit 415, as shown, schedules initial read commands for a particular memory page to be sent to a memory circuit after a corresponding page activation command has been sent. Similar to control circuit 215, control circuit 415 schedules the initial read command based on a page activation time associated with the particular memory page. Control circuit 415 may also schedule an initial read command based on the page activation time for other types of memory requests.
As shown, memory controller circuit 410 receives memory request 430, which corresponds to a read-modify-write request. A read-modify-write memory access request is a form of a write command that includes a read operation followed by a write operation. Data from a memory page designated by the request is read, and a portion (or in some cases, all) of the data is replaced by data included in the request. This modified data is then written back into the same location in the memory page. In various embodiments, the data may be read and modified by the memory controller circuit or may be modified within the memory circuit. In the illustrated embodiment, memory controller circuit 410 reads and modifies the data and sends the modified data back to the memory circuit as part of a write command. Since a read-modify-write request includes a read command, the scheduling technique disclosed in regards to
In response to determining that memory request 430 corresponds to a read-modify-write request for data in page 1 of a memory circuit, control circuit 415 determines if page 1 is active. After determining that page 1 is inactive, as indicated by page[1] 462 in chart 400, control circuit 415 first schedules activation command A(p1) 440. Based on a page activation time for page 1, control circuit 415 schedules initial read command R(p1) 442 to minimize a delay between when page 1 activates in response to activation command A(p1) 440 and when page 1 receives initial read command R(p1) 442. Control circuit 415 further schedules modify operation (mod) 444 and write command W(p1) 446.
After reading the data, memory controller circuit 410 replaces a portion of the read data based on the information received as part of memory request 430. This is performed within memory controller circuit 410 as modify operation 444, and therefore is not sent to the memory circuit (as indicated by the parentheses in command buffer 450). After the data has been modified, memory controller circuit 410 sends write command W(p1) 446 to replace the read data from page 1. By applying the scheduling techniques disclosed above to different types of memory requests, memory controller circuit 410 may be able to further reduce power consumption and/or further increase performance of the memory system.
It is noted that the depictions in
Moving now to
In some embodiments, memory circuit 520 includes one or more of memory array 523. In the illustrated embodiment, memory array 523 is a dynamic random-access memory (DRAM) circuit. Memory circuit 520 receives memory command 540 which is received by control circuits 529. Control circuits 529 may be implemented as one or more state machines or other type of sequential logic circuits. If memory command 540 is a read command, then control circuits 529 determine, based on an address included in memory command 540, a row of memory cells in memory array 523 that include the requested data, in this example, row 525. Control circuits 529 cause data in row 525 to be read and copied into page buffer 527. Page buffer 527, as shown, holds one row of data. In other embodiments, page buffer 527 may hold multiple rows of data at a given time. As illustrated, the amount of data held by page buffer 527 corresponds to a memory page.
A page activation time for a memory page in memory circuit 520 includes an amount of time for memory circuit 520 to copy data from memory cells in row 525 to page buffer 527. After the contents of row 525 are read into page buffer 527, the requested data is sent to a memory controller, such as memory controller circuit 110 in
If memory command 540 is a write command, then the described process is reversed. Data is received from the memory controller and stored in page buffer 527. After a row of data is stored in page buffer 527, then control circuits 529 cause this data to be stored in memory cells of a selected row, such as, e.g., row 525.
As illustrated, page buffer 527 is used to execute both read and write commands. In other embodiments, however, separate read and write buffers may be utilized. In such embodiments, the read and the write buffers may be not the same size. For example, read buffers may store two or more rows of data while a write buffer may store a single row of data.
It is also noted that
Techniques related to scheduling of memory requests based on a page activation time have been presented above. The following descriptions disclose techniques for scheduling memory commands for a particular type of write request.
Turning now to
As illustrated, memory controller circuit 610 and memory circuit 620, and their respective included circuits, correspond to the similarly named and numbered circuits of memory system 100 and, therefore, their respective behaviors are as described above, with exceptions described below.
Memory controller circuit 610 receives mask write request 630 directed to one of pages 625, e.g., page 625b. A mask write request may correspond to a request to write to a portion of data bytes that are stored at one or more locations in a particular memory page. A mask value is included in the mask write request to indicate which data bytes of the stored data are to be rewritten and which data bytes retain their current values. In some embodiments, a mask write command may be limited to a specified mask write size threshold, e.g., one mask write command may be capable of writing to one or more data bytes within a range of 32 bytes. A memory page, however, may be larger than 32 bytes. A mask write request that addresses more than a 32 byte range, therefore, may be implemented by scheduling two or more mask write commands.
Control circuit 615 makes a determination that mask write memory request 630 is a request to write to a portion of page 625b that exceeds this specified mask write size threshold. In response to a determination that the mask write memory request includes more than a specified mask write data size threshold amount of data, control circuit 615 generates a plurality of write commands. Control circuit 615 splits, or divides, mask write memory request 630 into mask write requests W(p2) 640-642, each of which does not exceed the specified mask write size threshold.
Control circuit 615 then determines a respective amount of time for performing each of mask write commands W(p2) 640-642, and then schedules, in command buffer 650, a future transmission of each of mask write commands W(p2) 640-642 based on the respective amounts of time, in order to fulfill mask write memory request 630. As shown in
It is noted that
In some cases, scheduling the individual pieces of a mask write request can result in periods of time (commonly referred to as “gaps”) during which no commands to the memory page are scheduled. An embodiment of a command buffer that is capable of utilizing such gaps is illustrated in
At time t1, command buffer 750 has received three memory commands, write commands W(p1) 740-742, which in the illustrated example, collectively correspond to a single mask write request directed to memory page 1. As shown, write commands W(p1) 740-742 are scheduled by control circuit 615 based on expected mask write times 745 and 746. This schedule leaves timing gap 754 between commands W(p1) 740 and W(p1) 741, and timing gap 755 between commands W(p1) 741 and W(p1) 742.
Control circuit 615 may schedule other memory access commands to fill these timing gaps between successive ones of write commands W(p1) 740-742. In some cases, control circuit 615 may reorder commands stored in other portions of command buffer 750 (not shown) for transmission to the memory circuit. In other cases, control circuit 615 may receive additional memory requests before write command W(p1) 740 is sent to memory circuit 620. Control circuit 615 arranges the other memory commands between at least two of write commands W(p1) 740-742 to fill the timing gaps.
Command buffer 750 is shown at time t2 with the timing gaps filled by additional commands. Control circuit 615 schedules commands for fulfilling three read memory requests, one each for respective memory pages 2, 3, and 4. As illustrated, memory pages 1-4 may be accessed concurrently. Control circuit 615 determines that memory pages 2-4 are currently inactive. To fill timing gap 754, control circuit 615 schedules activation commands A(p2) 760 and A(p3) 770 to activate memory pages 2 and 3 respectively.
To fill timing gap 755, control circuit 615 may have a plurality of options. Page activation times 765 and 775, corresponding to activation commands A(p2) 760 and A(p3) 770, each elapse during timing gap 755, thereby allowing, in various embodiments, writes, masked writes, and reads, for both memory pages 2 and 3. Additionally, an activation command for page 4 is needed before a masked write or read command for page 4 can be scheduled. In the illustrated example, control circuit 615 schedules read command R(p2) 761 based on page activation time 765 for page 2 and then schedules activation command A(p4) 780 for page 4. At this point, both page activation time 775 and mask write time 746 have elapsed, allowing control circuit 615 to schedule either a read command for page 3 or the last mask write command.
Control circuit 615 may utilize one or more selection criteria to schedule the next command. For example, control circuit 615 may prioritize read commands over write commands, or vice versa. Control circuit 615 may also base the selection on an order in which the memory requests corresponding to the memory commands were received. In the illustrated embodiment, control circuit 615 schedules read command R(p3) 771 next, followed by write command W(p1) 742. At this point, page activation time 785 has elapsed and control circuit 615 may schedule read command R(p4) 781.
By managing an order for scheduling and executing memory commands, occurrences of timing gaps between execution of successive memory commands may be reduced or avoided. In some embodiments, such a reduction of timing gaps may increase an overall performance of a memory system and/or reduce an amount of power consumed by the memory system while executing the commands. It is noted that, as depicted, two memory commands are delayed from an earliest point in time when they may be executed. These delays, however, may allow for an overall increase in system performance when all the scheduled memory commands are considered together.
It is noted that memory command scheduling depicted in
Turning to
A memory controller circuit receives a memory request corresponding to data of a particular page in a memory circuit (block 803). Memory controller circuit 110, for example, receives memory access request 130 from a processing circuit coupled to memory system 100. Memory access request 130 may correspond to a read request, a write request, or a combination of the two, such as a read-modify-write request. Memory access request 130 includes an address value for identifying a particular location, or a range of locations, in memory circuit 120 to which memory access request 130 is directed. Memory controller circuit 110 may generate one or more memory commands to be executed by memory circuit 120 in order to fulfill memory access request 130.
In response to determining that the particular page is inactive, the memory controller circuit sends an activation command to the memory circuit to activate the particular page (block 805). Using the address value included with memory access request 130, memory controller circuit 110 determines a memory page in memory circuit 120 to which memory access request 130 is directed. For example, page 125a may correspond to the address value. Memory controller circuit 110 determines that page 125a is inactive and, therefore, schedules activation command 144 to activate page 125a.
Based on a page activation time, the memory controller circuit places, into a command buffer, a memory command to access the particular page (block 807). In various types of memory circuits, an amount of time may be required from activating a memory page to when the page is active and may be accessed by an initial memory command. This amount of time corresponds to page activation time 140. In DRAM memory circuits, for example, page activation time 140 may include an amount of time used to decode an address in order to select one or more rows of memory cells sense data stored in the memory cells of the one or more rows, and copy the sensed data into a page buffer. Memory controller circuit 110 schedules initial memory command 148 to be sent to memory circuit 120 after page activation time 140 elapses. Placement of memory commands in the command buffer (e.g., command buffer 250 in
It is noted that method 800 is one example related to scheduling memory requests for execution. Some embodiments may include additional operations, such as, for example, determining what memory commands are generated to fulfill the received memory request.
Proceeding to
A memory controller circuit receives a memory request corresponding to data of a particular inactive page in a memory circuit (block 902). Memory controller circuit 210, for example, receives memory access request 230 that includes an address value that corresponds to a memory page 1 of the memory circuit. Control circuit 215 of memory controller circuit 210 determines that memory page 1 is currently inactive.
In response to determining that the memory request includes a read request, the memory controller circuit sends an activation command to activate the particular page (block 904). Control circuit 215 may decode memory access request 230, and thereby determine that memory access request 230 includes a request to read data from memory page 1 of the memory circuit. Having determined that memory page 1 is currently inactive, control circuit 215 schedules, in command buffer 250, activation command A(p1) 240 to be sent to the memory circuit to activate page 1.
The memory controller circuit schedules an initial read command to minimize a time period between activation of the particular page and the particular page receiving the initial read command (block 906). Based on a page activation time that corresponds to an amount of time from time t0 to time t1 of chart 200, control circuit 215 schedules initial read command R(p1) 241 in command buffer 250. The placement of initial read command R(p1) 241 within command buffer 250 determines a timing for read command 241 to be sent to the memory circuit.
The memory controller circuit reorders one or more other read commands for different portions of the data within the particular page to be performed subsequent to the initial read command (block 908). Following initial read command R(p1) 241, additional read commands to memory page 1 may be scheduled. As shown, control circuit 215 schedules read command R(p1) 242 in command buffer 250 subsequent to read command R(p1) 241. In various embodiments, read command R(p1) 242 may correspond to memory access request 230, may be related to a different read request and have been previously scheduled for a later execution time, or may be related to a subsequently received memory request and be initially scheduled following read command R(p1) 241.
The memory controller circuit includes, with a final read command for the particular page, an indication to perform a pre-charge operation to close the particular page (block 910). Read command R(p1) 242 may be a final read command for memory page 1 corresponding to the current page activation. If no other read commands for memory page 1 are currently scheduled in command buffer 250, then control circuit 215 includes an indication with command R(p1) 242 to perform a pre-charge operation to close page 1, thereby returning memory page 1 to an inactive state.
In response to receiving a memory access request corresponding to data of a different page, replacing a refresh command with an activation command for the different page of the memory circuit based on an elapsed time since the given page was refreshed (block 912). While scheduling and sending commands to activate and read memory page 1, memory controller circuit 210 may schedule a refresh command for a different memory page before a refresh time for that memory page elapses. If a memory request is received for data corresponding to the other memory page, then control circuit 215 may replace the refresh command with a different command for the other page, such as, for example, a page activation command. The method ends in block 914.
It is noted that method 900 is an example technique for scheduling memory commands to fulfill a memory request. Operations may be performed in a different order in other embodiments. For example, in some embodiments, operations of block 912 may occur concurrently or before operations of block 910. Some embodiments may include additional operations, such as, for example, an addition operation to receive other memory requests may be included in method 900.
Moving now to
A memory controller circuit receives a mask write request corresponding to a particular page in a memory circuit (block 1003). As illustrated, the memory controller circuit (e.g., memory controller circuit 610) receives mask write memory request 630. Mask write memory request 630 may include one or more addresses for memory locations in page 625b of memory circuit 620. As previously disclosed, a mask write request corresponds to a memory request in which a portion of data at one or more addresses in a particular memory page is to be masked to prevent writing over previously stored data at locations corresponding to the one or more addresses.
In response to determining that an amount of data included in the mask write request exceeds a specified mask write data size threshold, the memory controller circuit divides the mask write request into a plurality of write requests (block 1005). In the illustrated embodiment, a mask write command is limited to a specified mask write data size threshold. This mask write data size threshold may limit a single mask write command to writing to a range of, for example, 32 or 64 bytes within a memory page that is larger than 64 bytes. A memory page may include, for example, 512 or 1024 bytes of data in some embodiments. Control circuit 615 in memory controller circuit 610 determines that mask write memory request 630 addresses a range of memory locations that exceeds the mask write data size threshold and, therefore, divides request 630 into a plurality of mask write commands, W(p2) 640-642. Each of the three mask write commands W(p2) 640-642 addresses a range of memory locations that is less than the specified mask write data size limit.
Based on a respective amount of time to perform each of the plurality of mask write commands, the memory controller circuit schedules the plurality of write requests to be performed in the memory circuit (block 1007). As shown, control circuit 615 determines an amount of time to perform each of mask write commands W(p2) 640-642. Using these determined amounts of time, control circuit 615 schedules each of write commands W(p2) 640-642 in command buffer 650.
The memory controller circuit fills timing gaps between successive ones of the plurality of write requests, by scheduling other memory commands to be performed in the memory circuit during the timing gaps (block 1009). Referring now to
It is noted that method 1000 is an embodiment related to processing mask write memory requests. Additional operations may be included in some embodiments. For example, an additional operation may be included to receive another memory request before block 1009 in some embodiments.
The systems and methods presented and described above may be included in and performed by a computing system. An example of such a computing system is described below.
A block diagram of an embodiment of a computer system, such as, for example, a system-on-chip (SoC), is illustrated in
In the illustrated embodiments, core 1101 is representative of a general-purpose processing core that performs computational operations. Although a single processing core, i.e., core 1101, is illustrated, in some embodiments core 1101 may correspond to a core complex that includes any suitable number of processing cores. In various embodiments, core 1101 may implement any suitable instruction set architecture (ISA), such as, e.g., ARM™, PowerPC®, Blackfin, or x86 ISAs, or combination thereof. Core 1101 may execute instructions and utilize data stored in memories located outside of computer system 1100, such as, for example, memories 1110a-1110c, by issuing memory transactions to fetch the instructions and data to be utilized. Data and instructions fetched from memories 1110a-1110c may be cached in cache memory 1106. In some embodiments, core 1101 may include one or more cache memories in addition to cache memory 1106.
Graphics processor 1102, in the illustrated embodiment, includes circuitry for processing images or video to be sent to a display screen (not shown). In some embodiments, images and/or videos to be processed by graphics processor 1102 may be stored in memories 1110a-1110c. Memories 1110a-1110c may also store graphics processing instructions for use by graphics processor 1102 to generate the images. Graphics processor 1102 may correspond to a processing core capable of issuing memory transactions to retrieve graphics data and instructions. Data retrieved from memories 1110a-1110c may be cached in cache memory 1106.
In the illustrated embodiment, system peripherals 1103 includes one or more circuit blocks for performing any number of suitable tasks. For example, in various embodiments, system peripherals 1103 may include any one or more of communication peripherals (e.g., universal serial bus (USB), Ethernet), encryption engines, audio processors, direct memory access modules, or any other peripheral that may generate memory transactions to retrieve data or commands from memories 1110a-1110c. System peripherals 1103 may include one or more processing cores within the various functional circuits that are capable of issuing memory transactions to memory cache controller 1105.
In the illustrated embodiment, memory cache controller 1105 includes circuits for managing memory transactions issued by core 1101, graphics processor 1102, and system peripherals 1103. In the illustrated embodiment, memory cache controller 1105 decodes memory transactions, translates addresses, and determines if valid content corresponding to the addressed location is currently in cache memory 1106, or if this data is to be fetched from memories 1110a-1110c or elsewhere. If valid content is not currently cached in cache memory 1106, then memory cache controller 1105 may send the transaction to memory controller circuit 1108 to fetch the requested data. In some embodiments, computer system 1100 may include more than one cache memory 1106 and may, therefore, include a respective memory cache controller 1105 for each cache memory 1106.
In some embodiments, memory controller circuit 1108 may, correspond to any of the memory controller circuits described herein, such as, for example, memory controller circuit 110 in
In some embodiments, memories 1110a-1110c may correspond to one or more of the memory circuits described herein. For example, in some embodiments, each of memories 1110a-1110c may correspond to respective memory circuits 120. In other embodiments, memories 1110a-1110c may correspond to a single memory circuit 120. Memories 1110a-1110c are storage devices that collectively form at least a portion of memory hierarchy that stores data and instructions for computer system 1100. More particularly, memories 1110a-1110c may correspond to volatile memory with access times less than a non-volatile memory device. Memories 1110a-1110c may therefore be used to store instructions and data corresponding to an operating system and one or more applications read from a non-volatile memory after a system boot of computer system 1100. Memories 1110a-1110c may be representative of memory devices in the dynamic random access memory (DRAM) family of memory devices or in the static random access memory (SRAM) family of memory devices, or in some embodiments, a combination thereof.
It is also noted that, to improve clarity and to aid in demonstrating the disclosed concepts, the diagram of computer system 1100 illustrated in
Non-transitory computer-readable storage medium 1210, may comprise any of various appropriate types of memory devices or storage devices. Non-transitory computer-readable storage medium 1210 may be an installation medium, e.g., a CD-ROM, floppy disks, or tape device; a computer system memory or random-access memory such as DRAM, DDR RAM, SRAM, EDO RAM, Rambus RAM, etc.; a non-volatile memory such as a Flash, magnetic media, e.g., a hard drive, or optical storage; registers, or other similar types of memory elements, etc. Non-transitory computer-readable storage medium 1210 may include other types of non-transitory memory as well or combinations thereof. Non-transitory computer-readable storage medium 1210 may include two or more memory mediums which may reside in different locations, e.g., in different computer systems that are connected over a network.
Design information 1215 may be specified using any of various appropriate computer languages, including hardware description languages such as, without limitation: VHDL, Verilog, SystemC, SystemVerilog, RHDL, M, MyHDL, etc. Design information 1215 may be usable by semiconductor fabrication system 1220 to fabricate at least a portion of integrated circuit 1230. The format of design information 1215 may be recognized by at least one semiconductor fabrication system, such as semiconductor fabrication system 1220, for example. In some embodiments, design information 1215 may include a netlist that specifies elements of a cell library, as well as their connectivity. One or more cell libraries used during logic synthesis of circuits included in integrated circuit 1230 may also be included in design information 1215. Such cell libraries may include information indicative of device or transistor level netlists, mask design data, characterization data, and the like, of cells included in the cell library.
Integrated circuit 1230 may, in various embodiments, include one or more custom macrocells, such as memories, analog or mixed-signal circuits, and the like. In such cases, design information 1215 may include information related to included macrocells. Such information may include, without limitation, schematics capture database, mask design data, behavioral models, and device or transistor level netlists. As used herein, mask design data may be formatted according to graphic data system (gdsii), or any other suitable format.
Semiconductor fabrication system 1220 may include any of various appropriate elements configured to fabricate integrated circuits. This may include, for example, elements for depositing semiconductor materials (e.g., on a wafer, which may include masking), removing materials, altering the shape of deposited materials, modifying materials (e.g., by doping materials or modifying dielectric constants using ultraviolet processing), etc. Semiconductor fabrication system 1220 may also be configured to perform various testing of fabricated circuits for correct operation.
In various embodiments, integrated circuit 1230 is configured to operate according to a circuit design specified by design information 1215, which may include performing any of the functionality described herein. For example, integrated circuit 1230 may include any of various elements shown or described herein. Further, integrated circuit 1230 may be configured to perform various functions described herein in conjunction with other components. Further, the functionality described herein may be performed by multiple connected integrated circuits.
As used herein, a phrase of the form “design information that specifies a design of a circuit configured to . . . ” does not imply that the circuit in question must be fabricated in order for the element to be met. Rather, this phrase indicates that the design information describes a circuit that, upon being fabricated, will be configured to perform the indicated actions or will include the specified components.
Although specific embodiments have been described above, these embodiments are not intended to limit the scope of the present disclosure, even where only a single embodiment is described with respect to a particular feature. Examples of features provided in the disclosure are intended to be illustrative rather than restrictive unless stated otherwise. The above description is intended to cover such alternatives, modifications, and equivalents as would be apparent to a person skilled in the art having the benefit of this disclosure.
The scope of the present disclosure includes any feature or combination of features disclosed herein (either explicitly or implicitly), or any generalization thereof, whether or not it mitigates any or all of the problems addressed herein. Accordingly, new claims may be formulated during prosecution of this application (or an application claiming priority thereto) to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
6704821 | Scandurra et al. | Mar 2004 | B2 |
7127573 | Strongin et al. | Oct 2006 | B1 |
9916105 | Asnaashari | Mar 2018 | B1 |
20050047239 | Takahashi | Mar 2005 | A1 |
20050091460 | Rotithor et al. | Apr 2005 | A1 |
20100122062 | Hummel et al. | May 2010 | A1 |
20170060788 | Chang | Mar 2017 | A1 |
Entry |
---|
Nima Honarmand, Main Memory and DRAM, 2015, Stony Brook University, 1-37. (Year: 2015). |
Kaseridis et al., Minimalist Open-page A DRAM Page-mode Scheduling Policy for the Many-core Era, Dec. 7, 2011, AMC 978-01-4503-1053-6/11/12, 1-12 (Year: 2011). |
Number | Date | Country | |
---|---|---|---|
20200050396 A1 | Feb 2020 | US |