US20060107001A1 - Arbitration scheme for memory command selectors - Google Patents

Arbitration scheme for memory command selectors Download PDF

Info

Publication number
US20060107001A1
US20060107001A1 US10/988,311 US98831104A US2006107001A1 US 20060107001 A1 US20060107001 A1 US 20060107001A1 US 98831104 A US98831104 A US 98831104A US 2006107001 A1 US2006107001 A1 US 2006107001A1
Authority
US
United States
Prior art keywords
commands
read
write
executed
command
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.)
Granted
Application number
US10/988,311
Other versions
US7272692B2 (en
Inventor
Melissa Barnum
Kent Haselhorst
Lonny Lambrecht
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to US10/988,311 priority Critical patent/US7272692B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BARNUM, MELISSA ANN, HASELHORST, KENT HAROLD, LAMBRECHT, LONNY
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BARNUM, MELISSA ANN, HASELHORST, KENT HAROLD, LAMBRECHT, LONNY
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BARNUM, MELISSA ANN, HASELHORST, KENT HAROLD, LAMBRECHT, LONNY
Priority to CNB2005101194433A priority patent/CN100382060C/en
Publication of US20060107001A1 publication Critical patent/US20060107001A1/en
Publication of US7272692B2 publication Critical patent/US7272692B2/en
Application granted granted Critical
Assigned to GOOGLE INC. reassignment GOOGLE INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Assigned to GOOGLE LLC reassignment GOOGLE LLC CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: GOOGLE INC.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests

Definitions

  • the present invention relates generally to a memory command arbiter, and more particularly, to a memory control arbiter that can handle different memory devices at high bandwidths with low read latency.
  • An arbitration scheme for memory commands can be described as a hierarchy that determines which memory command has immediate priority to use a specific data channel.
  • memory systems are managed by a group of commands that accomplish the necessary operations of the memory system. These operations consist of read, write, and periodic commands.
  • Read commands receive data from memory cells in response to a request for that data.
  • Write commands transmit data to memory cells to be stored.
  • Periodic commands consist of a memory refresh or a memory scrub, which must be executed within a certain time window.
  • a memory refresh command maintains the current value of the memory cells. If a cell is not refreshed in a specific amount of time, the data becomes unstable.
  • a memory scrub command reads the data from the memory cells to check for data errors. If there is a single bit error, the error is fixed and the data is stored back into memory.
  • Arbitration schemes determine the order in which these commands are accomplished by the memory system. In every memory system there is a limited amount of data bandwidth that can be used to accomplish the necessary memory commands.
  • the read, write and periodic commands request to gain ownership of a data channel, and the arbiter grants ownership of the specific channel to the chosen command.
  • the order in which the commands are chosen for each memory subsystem is unique. Some subsystems have a larger delay when switching between different types of commands. In a system where there is a large delay, the arbiter wants to select the same type of command for as long as it can before transferring to a different command. In a system where there is no delay, the arbiter has more freedom to choose the command based on how full its queues are or to choose multiple read commands to reduce read latency.
  • the present invention provides an arbitration structure, a method, and a computer program for an arbitration scheme that can handle a plurality of memory commands in an operating system.
  • a memory system there are three types of operations: periodic, read, and write. These operations are accomplished by issuing commands that correspond to the particular operations.
  • An arbitration scheme determines the order of priority in which these commands are executed.
  • This arbitration scheme is flexible because it contains a read/write priority module.
  • the read/write priority module can be programmed to execute any order of priority combination of read and write commands. This enables an arbitration scheme for any memory system to be easily programmed so that the memory commands are executed efficiently. By maximizing efficiency, this invention allows memory systems to operate at high bandwidths with a low read latency.
  • FIG. 1 is a flow chart illustrating a modified multiple stage arbitration scheme for use in a memory controller
  • FIG. 2 is a block diagram illustrating an apparatus designed for a multiple stage arbitration scheme for use in a memory controller.
  • reference numeral 100 is a flow chart illustrating a modified multiple stage arbitration scheme for use in a memory controller.
  • the periodic commands consist of a memory refresh or a memory scrub.
  • the arbitration scheme 100 contains two stages. The first stage consists of preparing a read or write operation to be executed from the read 102 or write queues 104 . The second stage involves the selection of the highest-priority command and the execution of that command.
  • Read queue 102 signifies a stack of read operations that need to be executed.
  • Write queue 104 signifies a stack of write operations that need to be executed.
  • the commands for the read 102 and the write queues 104 are arbitrated individually in the first stage.
  • the oldest command to an available memory bank step 106 depicts that the oldest read operation in the read queue 102 is selected by the arbiter first.
  • the oldest command to available memory bank step 108 depicts that the oldest write operation in the write queue 104 is selected by the arbiter first. These steps 106 and 108 are shown because the arbiter must first select the commands that have been waiting to be executed the longest.
  • the oldest commands are paired with an available bank 110 from the bank sequencer pool.
  • the available banks 110 step refers to the bank sequencers that are idle and can be used to execute an operation.
  • the next read command 112 signifies that the oldest read command 106 is paired with an available bank 110 and the read operation is ready to be executed.
  • the next write command 114 signifies that the oldest write command 108 is paired with an available bank 110 and the write operation is ready to be executed.
  • the command selection stage 118 is the core of the arbitration scheme. This is where the specific commands (read, write or periodic) are selected to be executed 122 .
  • the periodic commands 116 , the next read command 112 , the next write command 114 , and the read/write priority 120 are all provided to the command selection 118 .
  • Periodic commands 116 must be executed within a certain time window, so they 116 are chosen ahead of read 112 and write commands 114 at the command selection stage 118 .
  • the read/write priority 120 determines the priority order of the read 112 and write commands 114 .
  • the read/write priority 120 can be programmed to execute any combination of read 112 and write commands 114 , which means that it can be configured to any memory system's specifications.
  • the memory system contains eight banks, and four banks are the most that can be in use at any one time.
  • the read/write priority 120 is core concept of this modified arbitration scheme 100 .
  • the read/write priority 120 is configurable based upon the memory device specifications. If the memory device has a large turnaround delay from reads to writes, or from writes to reads, the read/write priority 120 can be set up to influence the command selection 118 to choose commands of the same type. For example, the read/write priority 120 can be programmed to do 16 read commands 112 in a row. This causes the write commands to pile up at the write queue 104 , so that you can send a large group of write commands 114 in a row. In this example there is only one read to write turnaround and one write to read turnaround for every 16 read commands, which indicates that the memory commands are executed more efficiently.
  • This feature of the arbitration scheme 100 allows for maximum bandwidth because there is a drastic decrease in down time that is caused by turnaround delays. This feature also minimizes read latency because reads can be executed more quickly without turnaround delays.
  • This arbitration scheme 100 provides a flexible, fast, and efficient solution to memory command selection.
  • reference numeral 200 is a block diagram illustrating an apparatus designed for a multiple stage arbitration scheme for use in a memory controller.
  • a processing unit 202 is the module that accomplishes the logical functions of the memory system.
  • the communication channel 212 connects the processing unit 202 to queues 204 .
  • the queues 204 is a storage module that assembles a line of operations (read and write operations) to be carried out. Accordingly, the processing unit 202 determines what operations need to be accomplished and transmits these operations on the communication channel 212 to be stored by the queues 204 .
  • Communication channel 214 connects the processing unit 202 to an interface 206 .
  • the interface module 206 selects the commands (read, write, or periodic) that are to be executed.
  • the processing unit 202 controls the periodic commands 116 ( FIG. 1 ), so if a periodic command must be accomplished then it is transmitted to the interface 206 on communication channel 214 .
  • the queues 204 are connected to the interface 206 by communication channel 216 .
  • the queues 204 transmit the next commands (read or write) to be executed by the interface 206 over communication channel 216 .
  • the interface module 206 is connected to a bus 210 by connection channel 218 .
  • the resources (banks) 208 are connected to the same bus 210 by connection channel 220 .
  • the interface module 206 provides the next command to be executed (read, write, or periodic) and the resources (banks) 208 provide an available bank to accomplish the command.
  • the bus 210 is used to execute the command and transmit the resulting data.
  • FIG. 2 illustrates only one embodiment of an apparatus that can be configured to accomplish this multiple stage arbitration scheme.

Abstract

An arbitration structure, a method, and a computer program are provided for an arbitration scheme that can handle a plurality of memory commands in an operating system. Typically, in a memory system there are three types of memory commands: periodic, read, and write. An arbitration scheme determines the order of priority in which these commands are executed. This arbitration scheme is flexible because it contains a read/write priority module, which can be programmed to execute any order of priority combination of read and write commands. This enables an arbitration scheme for any memory system to be easily programmed for maximum efficiency.

Description

    FIELD OF THE INVENTION
  • The present invention relates generally to a memory command arbiter, and more particularly, to a memory control arbiter that can handle different memory devices at high bandwidths with low read latency.
  • DESCRIPTION OF THE RELATED ART
  • An arbitration scheme for memory commands can be described as a hierarchy that determines which memory command has immediate priority to use a specific data channel. Typically, memory systems are managed by a group of commands that accomplish the necessary operations of the memory system. These operations consist of read, write, and periodic commands. Read commands receive data from memory cells in response to a request for that data. Write commands transmit data to memory cells to be stored. Periodic commands consist of a memory refresh or a memory scrub, which must be executed within a certain time window. A memory refresh command maintains the current value of the memory cells. If a cell is not refreshed in a specific amount of time, the data becomes unstable. A memory scrub command reads the data from the memory cells to check for data errors. If there is a single bit error, the error is fixed and the data is stored back into memory.
  • Arbitration schemes determine the order in which these commands are accomplished by the memory system. In every memory system there is a limited amount of data bandwidth that can be used to accomplish the necessary memory commands. The read, write and periodic commands request to gain ownership of a data channel, and the arbiter grants ownership of the specific channel to the chosen command. The order in which the commands are chosen for each memory subsystem is unique. Some subsystems have a larger delay when switching between different types of commands. In a system where there is a large delay, the arbiter wants to select the same type of command for as long as it can before transferring to a different command. In a system where there is no delay, the arbiter has more freedom to choose the command based on how full its queues are or to choose multiple read commands to reduce read latency.
  • The problem is that conventional arbitration schemes are not flexible. Conventional arbitration schemes are not robust enough to handle a wide range of memory devices and memory systems. The conventional arbitration schemes must be hard coded to match the memory system they are designed with. Different memory systems need to be configured with unique arbitration schemes, which means that implementation is not easy or efficient. It is clear that a modified arbitration scheme is needed to provide more flexibility with implementation and to make memory systems more efficient.
  • SUMMARY OF THE INVENTION
  • The present invention provides an arbitration structure, a method, and a computer program for an arbitration scheme that can handle a plurality of memory commands in an operating system. Typically, in a memory system there are three types of operations: periodic, read, and write. These operations are accomplished by issuing commands that correspond to the particular operations. An arbitration scheme determines the order of priority in which these commands are executed. This arbitration scheme is flexible because it contains a read/write priority module. The read/write priority module can be programmed to execute any order of priority combination of read and write commands. This enables an arbitration scheme for any memory system to be easily programmed so that the memory commands are executed efficiently. By maximizing efficiency, this invention allows memory systems to operate at high bandwidths with a low read latency.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
  • FIG. 1 is a flow chart illustrating a modified multiple stage arbitration scheme for use in a memory controller;
  • FIG. 2 is a block diagram illustrating an apparatus designed for a multiple stage arbitration scheme for use in a memory controller.
  • DETAILED DESCRIPTION
  • In the following discussion, numerous specific details are set forth to provide a thorough understanding of the present invention. However, those skilled in the art will appreciate that the present invention may be practiced without such specific details. In other instances, well-known elements have been illustrated in block diagram or flow chart form in order not to obscure the present invention in unnecessary detail. Additionally, for the most part, details concerning network communications, electromagnetic signaling techniques, and the like, have been omitted inasmuch as such details are not considered necessary to obtain a complete understanding of the present invention, and are considered to be within the understanding of persons of ordinary skill in the relevant art.
  • When designing an arbitration scheme for memory command selection, there are a couple of features to be concerned with. Maximum bandwidth and minimum read latency must be realized in these designs. To achieve maximum bandwidth, the memory system should be able to handle a high amount of data traffic without any dead time. To achieve minimum read latency, the memory system should be able to accomplish read and write operations in the shortest period of time possible. Read latency can be negatively affected by read operation cycle time and read to write or write to read turnaround delays.
  • Referring to FIG. 1 of the drawings, reference numeral 100 is a flow chart illustrating a modified multiple stage arbitration scheme for use in a memory controller. There are three types of commands that this arbitration scheme controls: read, write and periodic commands. The periodic commands consist of a memory refresh or a memory scrub. The arbitration scheme 100 contains two stages. The first stage consists of preparing a read or write operation to be executed from the read 102 or write queues 104. The second stage involves the selection of the highest-priority command and the execution of that command. Read queue 102 signifies a stack of read operations that need to be executed. Write queue 104 signifies a stack of write operations that need to be executed. The commands for the read 102 and the write queues 104 are arbitrated individually in the first stage. The oldest command to an available memory bank step 106 depicts that the oldest read operation in the read queue 102 is selected by the arbiter first. The oldest command to available memory bank step 108 depicts that the oldest write operation in the write queue 104 is selected by the arbiter first. These steps 106 and 108 are shown because the arbiter must first select the commands that have been waiting to be executed the longest. At steps 106 and 108, the oldest commands are paired with an available bank 110 from the bank sequencer pool. The available banks 110 step refers to the bank sequencers that are idle and can be used to execute an operation.
  • The next read command 112 signifies that the oldest read command 106 is paired with an available bank 110 and the read operation is ready to be executed. The next write command 114 signifies that the oldest write command 108 is paired with an available bank 110 and the write operation is ready to be executed. The command selection stage 118 is the core of the arbitration scheme. This is where the specific commands (read, write or periodic) are selected to be executed 122. The periodic commands 116, the next read command 112, the next write command 114, and the read/write priority 120 are all provided to the command selection 118.
  • Periodic commands 116 must be executed within a certain time window, so they 116 are chosen ahead of read 112 and write commands 114 at the command selection stage 118. The read/write priority 120 determines the priority order of the read 112 and write commands 114. The read/write priority 120 can be programmed to execute any combination of read 112 and write commands 114, which means that it can be configured to any memory system's specifications. When the highest-priority command is selected 118, that command is then executed 122. After the command is executed the bank that executed the command is unavailable for a configurable amount of time. After this period of time the bank becomes available 110 and it may be used for another operation. During that delay time, all the other banks may be used to execute commands. Accordingly, the new available bank 110 is then ready to execute the oldest read command 106 or the oldest write command 108. In one embodiment of this arbitration scheme, the memory system contains eight banks, and four banks are the most that can be in use at any one time.
  • This arbitration scheme design 100 provides many advantages over previous arbitration schemes. The read/write priority 120 is core concept of this modified arbitration scheme 100. The read/write priority 120 is configurable based upon the memory device specifications. If the memory device has a large turnaround delay from reads to writes, or from writes to reads, the read/write priority 120 can be set up to influence the command selection 118 to choose commands of the same type. For example, the read/write priority 120 can be programmed to do 16 read commands 112 in a row. This causes the write commands to pile up at the write queue 104, so that you can send a large group of write commands 114 in a row. In this example there is only one read to write turnaround and one write to read turnaround for every 16 read commands, which indicates that the memory commands are executed more efficiently. This feature of the arbitration scheme 100 allows for maximum bandwidth because there is a drastic decrease in down time that is caused by turnaround delays. This feature also minimizes read latency because reads can be executed more quickly without turnaround delays.
  • Another advantage of this arbitration scheme 100 is its flexibility. The programmability of the read/write priority 120 ensures that this arbitration scheme can be implemented to achieve maximum efficiency from any memory system. The read/write priority 120 is programmed by setting a few registers to the desired specifications. Conventional arbitration schemes are not easily programmed, and therefore, a new chip is required to be entirely configured for each specific memory system. Overall, this arbitration scheme 100 provides a flexible, fast, and efficient solution to memory command selection.
  • Referring to FIG. 2 of the drawings, reference numeral 200 is a block diagram illustrating an apparatus designed for a multiple stage arbitration scheme for use in a memory controller. A processing unit 202 is the module that accomplishes the logical functions of the memory system. The communication channel 212 connects the processing unit 202 to queues 204. The queues 204 is a storage module that assembles a line of operations (read and write operations) to be carried out. Accordingly, the processing unit 202 determines what operations need to be accomplished and transmits these operations on the communication channel 212 to be stored by the queues 204. Communication channel 214 connects the processing unit 202 to an interface 206. The interface module 206 selects the commands (read, write, or periodic) that are to be executed. The processing unit 202 controls the periodic commands 116 (FIG. 1), so if a periodic command must be accomplished then it is transmitted to the interface 206 on communication channel 214. The queues 204 are connected to the interface 206 by communication channel 216. The queues 204 transmit the next commands (read or write) to be executed by the interface 206 over communication channel 216.
  • The interface module 206 is connected to a bus 210 by connection channel 218. The resources (banks) 208 are connected to the same bus 210 by connection channel 220. The interface module 206 provides the next command to be executed (read, write, or periodic) and the resources (banks) 208 provide an available bank to accomplish the command. The bus 210 is used to execute the command and transmit the resulting data. FIG. 2 illustrates only one embodiment of an apparatus that can be configured to accomplish this multiple stage arbitration scheme.
  • It is understood that the present invention can take many forms and embodiments. Accordingly, several variations of the present design may be made without departing from the scope of the invention. The capabilities outlined herein allow for the possibility of a variety of programming models. This disclosure should not be read as preferring any particular programming model, but is instead directed to the underlying concepts on which these programming models can be built.
  • Having thus described the present invention by reference to certain of its preferred embodiments, it is noted that the embodiments disclosed are illustrative rather than limiting in nature and that a wide range of variations, modifications, changes, and substitutions are contemplated in the foregoing disclosure and, in some instances, some features of the present invention may be employed without a corresponding use of the other features. Many such variations and modifications may be considered desirable by those skilled in the art based upon a review of the foregoing description of preferred embodiments. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the scope of the invention.

Claims (19)

1. An arbitration structure for handling differing types of memory commands in an operating system, comprising:
a module for at least preparing at least one of a plurality of read commands to be executed;
a module for at least preparing at least one of a plurality of write commands to be executed;
a module for at least preparing at least one of a plurality of periodic commands to be executed;
a read/write priority module for at least determining a priority order for the plurality of read commands and the plurality of write commands;
a command selection module for at least selecting the next command to be executed out of a plurality of commands as a function of the read/write priority module; and
a memory controller for at least executing the memory commands as a function of the command selection module.
2. The arbitration structure of claim 1, wherein the module for preparing the read commands, further comprises:
a read queue for at least stacking the plurality of read commands; and
a module for at least pairing the oldest read command of the plurality of read commands with an available bank of a plurality of banks.
3. The arbitration structure of claim 1, wherein the module for preparing the write commands, further comprises:
a write queue for at least stacking the plurality of write commands; and
a module for at least pairing the oldest write command of the plurality of write commands with an available bank of a plurality of banks.
4. The arbitration structure of claim 1, wherein the module for at least preparing at least one of a plurality of periodic commands to be executed, further comprises;
a module for at least preparing at least one of a plurality of memory refresh commands; and
a module for at least preparing at least one of a plurality of memory scrub commands.
5. The arbitration structure of claim 1, wherein the read/write priority module for at least determining the priority order for the plurality of read commands and for the plurality of write commands, further comprises a read/write priority module that can be programmed to employ a priority order consisting of any combination of the plurality of read commands and the plurality of write commands.
6. The arbitration structure of claim 1, wherein the command selection module for at least selecting the next command to be executed out of a plurality of commands as a function of the read/write priority module, further comprises a command selection module that is at least configured to accept inputs from the read command module, the write command module, the periodic command module, and the read/write priority module.
7. The arbitration structure of claim 6, wherein the command selection module, further comprises a command selection module that selects a prepared periodic command before a prepared read command or a prepared write command.
8. A method for handling differing types of memory commands in an operating system, comprising:
preparing at least one of a plurality of read commands to be executed;
preparing at least one of a plurality of write commands to be executed;
preparing at least one of a plurality of periodic commands to be executed;
determining a priority order for the plurality of read commands and the plurality of write commands;
selecting the next command of a plurality of commands (read, write, and periodic) to be executed, as a function of the priority order; and
executing the memory commands as a function of the selected command.
9. The method of claim 8, wherein preparing at least one of a plurality of read commands to be executed, further comprises:
stacking the plurality of read commands;
pairing the oldest read command of the plurality of read commands with an available bank of a plurality of banks; and
preparing the oldest read command to be executed.
10. The method of claim 8, wherein preparing at least one of a plurality of write commands to be executed, further comprises:
stacking the plurality of write commands;
pairing the oldest write command of the plurality of write commands with an available bank of a plurality of banks; and
preparing the oldest write command to be executed.
11. The method of claim 8, wherein preparing at least one of a plurality of periodic commands to be executed, further comprises:
preparing at least one of a plurality of memory refresh commands to be executed; and
preparing at least one of a plurality of memory scrub commands to be executed.
12. The method of claim 8, wherein determining a priority order for the plurality of read commands and the plurality of write commands, further comprises:
designing a priority order that allows the memory system to execute commands efficiently; and
programming a read/write priority module to implement the priority order.
13. The method of claim 8, wherein selecting the next command of a plurality of commands to be executed, as a function of the priority order, further comprises selecting a prepared periodic command before the prepared read commands and the prepared write commands.
14. A computer program product for handling differing types of memory commands in an operating system, with the computer program product having a medium with a computer program embodied thereon, wherein the computer program comprises:
computer code for preparing at least one of a plurality of read commands to be executed;
computer code for preparing at least one of a plurality of write commands to be executed;
computer code for preparing at least one of a plurality of periodic commands to be executed;
computer code for determining a priority order for the plurality of read commands and the plurality of write commands;
computer code for selecting the next command of a plurality of commands (read, write, and periodic) to be executed, as a function of the priority order; and
computer code for executing the memory commands as a function of the selected command.
15. The computer program product of claim 14, wherein the computer code for preparing at least one of a plurality of read commands to be executed, further comprises:
computer code for stacking the plurality of read commands;
computer code for pairing the oldest read command of the plurality of read commands with an available bank of a plurality of banks; and
computer code for preparing the oldest read command to be executed.
16. The computer program product of claim 14, wherein the computer code for preparing at least one of a plurality of write commands to be executed, further comprises:
computer code for stacking the plurality of write commands;
computer code for pairing the oldest write command of the plurality of write commands with an available bank of a plurality of banks; and
computer code for preparing the oldest write command to be executed.
17. The computer program product of claim 14, wherein the computer code for preparing at least one of a plurality of periodic commands to be executed, further comprises:
computer code for preparing at least one of a plurality of memory refresh commands to be executed; and
computer code for preparing at least one of a plurality of memory scrub commands to be executed.
18. The computer program product of claim 14, wherein the computer code for determining a priority order for the plurality of read commands and the plurality of write commands, further comprises:
computer code for designing a priority order that allows the memory system to execute commands efficiently; and
computer code for programming a read/write priority module to implement the priority order.
19. The computer program product of claim 14, wherein the computer code for selecting the next command of a plurality of commands to be executed, as a function of the priority order, further comprises selecting a prepared periodic command before the prepared read commands and the prepared write commands.
US10/988,311 2004-11-12 2004-11-12 Arbitration scheme for memory command selectors Active 2025-10-20 US7272692B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US10/988,311 US7272692B2 (en) 2004-11-12 2004-11-12 Arbitration scheme for memory command selectors
CNB2005101194433A CN100382060C (en) 2004-11-12 2005-11-11 An arbitration structure and a method for handling a plurality of memory commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/988,311 US7272692B2 (en) 2004-11-12 2004-11-12 Arbitration scheme for memory command selectors

Publications (2)

Publication Number Publication Date
US20060107001A1 true US20060107001A1 (en) 2006-05-18
US7272692B2 US7272692B2 (en) 2007-09-18

Family

ID=36387795

Family Applications (1)

Application Number Title Priority Date Filing Date
US10/988,311 Active 2025-10-20 US7272692B2 (en) 2004-11-12 2004-11-12 Arbitration scheme for memory command selectors

Country Status (2)

Country Link
US (1) US7272692B2 (en)
CN (1) CN100382060C (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017054483A (en) * 2015-09-08 2017-03-16 ソニー株式会社 Memory controller, memory system, and control method of memory controller
US20180233214A1 (en) * 2016-02-29 2018-08-16 SK Hynix Inc. Test apparatus and semiconductor chip
US11221798B2 (en) * 2018-08-17 2022-01-11 Apple Inc. Write/read turn techniques based on latency tolerance
US11599424B2 (en) * 2019-08-15 2023-03-07 Cisco Technology, Inc. Dynamic hardware resource shadowing and memory error protection

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070168754A1 (en) * 2005-12-19 2007-07-19 Xiv Ltd. Method and apparatus for ensuring writing integrity in mass storage systems
US7617368B2 (en) * 2006-06-14 2009-11-10 Nvidia Corporation Memory interface with independent arbitration of precharge, activate, and read/write
CN101043445B (en) * 2007-03-06 2011-02-23 哈尔滨工程大学 IO dispatch method in network storage system
US20090196143A1 (en) * 2008-02-06 2009-08-06 Nils Haustein Method and System for Command-Ordering for a Disk-to-Disk-to-Holographic Data Storage System
JPWO2013014841A1 (en) * 2011-07-22 2015-02-23 パナソニック株式会社 Data processing apparatus and data processing method
CN105610662B (en) * 2015-12-29 2019-01-22 北京理工大学 The feedback type comprehensive dynamic dispatching control based on network device of electric car
US10732897B2 (en) * 2018-07-03 2020-08-04 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
US10866764B2 (en) * 2018-07-23 2020-12-15 SK Hynix Inc. Memory system with parity cache scheme and method of operating such memory system
US11455124B2 (en) 2020-10-09 2022-09-27 Western Digital Technologies, Inc. Command prioritization to reduce latencies of zone commands

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6101614A (en) * 1994-05-24 2000-08-08 Intel Corporation Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US6112265A (en) * 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US20030229755A1 (en) * 2002-06-06 2003-12-11 International Business Machines Corporation Dynamic response shaping for command aging
US6671761B2 (en) * 2000-08-11 2003-12-30 Samsung Electronics Co., Ltd. Bus system
US20040004883A1 (en) * 2002-07-04 2004-01-08 Fujitsu Limited Semiconductor memory
US20050105372A1 (en) * 2003-10-30 2005-05-19 Fujitsu Limited Semiconductor memory

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4493036A (en) * 1982-12-14 1985-01-08 Honeywell Information Systems Inc. Priority resolver having dynamically adjustable priority levels
US5640563A (en) * 1992-01-31 1997-06-17 International Business Machines Corporation Multi-media computer operating system and method
US5978852A (en) * 1998-01-06 1999-11-02 3Com Corporation LAN switch interface for providing arbitration between different simultaneous memory access requests
CN1279450C (en) * 2002-11-13 2006-10-11 矽统科技股份有限公司 Memory reading or writing arbitration method

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6101614A (en) * 1994-05-24 2000-08-08 Intel Corporation Method and apparatus for automatically scrubbing ECC errors in memory via hardware
US6112265A (en) * 1997-04-07 2000-08-29 Intel Corportion System for issuing a command to a memory having a reorder module for priority commands and an arbiter tracking address of recently issued command
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6671761B2 (en) * 2000-08-11 2003-12-30 Samsung Electronics Co., Ltd. Bus system
US20030229755A1 (en) * 2002-06-06 2003-12-11 International Business Machines Corporation Dynamic response shaping for command aging
US20040004883A1 (en) * 2002-07-04 2004-01-08 Fujitsu Limited Semiconductor memory
US20050105372A1 (en) * 2003-10-30 2005-05-19 Fujitsu Limited Semiconductor memory

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017054483A (en) * 2015-09-08 2017-03-16 ソニー株式会社 Memory controller, memory system, and control method of memory controller
US20180232178A1 (en) * 2015-09-08 2018-08-16 Sony Corporation Memory controller, memory system, and method of controlling memory controller
US20180233214A1 (en) * 2016-02-29 2018-08-16 SK Hynix Inc. Test apparatus and semiconductor chip
US10566073B2 (en) * 2016-02-29 2020-02-18 SK Hynix Inc. Test apparatus and semiconductor chip
US11221798B2 (en) * 2018-08-17 2022-01-11 Apple Inc. Write/read turn techniques based on latency tolerance
US11599424B2 (en) * 2019-08-15 2023-03-07 Cisco Technology, Inc. Dynamic hardware resource shadowing and memory error protection
US11822437B2 (en) 2019-08-15 2023-11-21 Cisco Technology, Inc. Dynamic hardware resource shadowing and memory error protection

Also Published As

Publication number Publication date
US7272692B2 (en) 2007-09-18
CN1773475A (en) 2006-05-17
CN100382060C (en) 2008-04-16

Similar Documents

Publication Publication Date Title
US11199996B2 (en) Method of scheduling requests to banks in a flash controller
CN100382060C (en) An arbitration structure and a method for handling a plurality of memory commands
US10761772B2 (en) Memory system including a plurality of chips and a selectively-connecting bus
KR101371815B1 (en) Memory controllers, memory systems, solid state drivers and methods for processing a number of commands
US7246188B2 (en) Flow control method to improve bus utilization in a system-on-a-chip integrated circuit
TWI421680B (en) Parallel flash memory controller
JP4024875B2 (en) Method and apparatus for arbitrating access to shared memory for network ports operating at different data rates
US10552047B2 (en) Memory system
CN103336669B (en) A kind of I/O dispatching method based on solid-state disk internal concurrency and scheduler
EP3368989B1 (en) Intelligent coded memory architecture with enhanced access scheduler
US20170344506A1 (en) Qos-aware io management for pcie storage system with reconfigurable multi-ports
US20120102262A1 (en) Memory control device, storage device, and memory control method
US10078471B2 (en) Memory device that sorts access commands to a nonvolatile semiconductor memory unit thereof
US11029746B2 (en) Dynamic power management network for memory devices
US7725621B2 (en) Semiconductor device and data transfer method
US20140325114A1 (en) Multi-channel direct memory access controller and control method thereof
US9971546B2 (en) Methods for scheduling read and write commands and apparatuses using the same
TW202230112A (en) Plane-based queue configuration for aipr-enabled drives
US7346722B2 (en) Apparatus for use in a computer systems
US20200409846A1 (en) Dual controller cache optimization in a deterministic data storage system
JPH08235092A (en) Data transfer controller
CN112506431B (en) I/O instruction scheduling method and device based on disk device attributes
KR102242957B1 (en) High speed NAND memory system and high speed NAND memory package device
JP2505021B2 (en) Main memory controller
KR100790168B1 (en) Booting method and apparatus for using nand flash memory in a processing system

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARNUM, MELISSA ANN;HASELHORST, KENT HAROLD;LAMBRECHT, LONNY;REEL/FRAME:015504/0091

Effective date: 20041109

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARNUM, MELISSA ANN;HASELHORST, KENT HAROLD;LAMBRECHT, LONNY;REEL/FRAME:015504/0037

Effective date: 20041109

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BARNUM, MELISSA ANN;HASELHORST, KENT HAROLD;LAMBRECHT, LONNY;REEL/FRAME:015504/0064

Effective date: 20041109

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 4

SULP Surcharge for late payment
AS Assignment

Owner name: GOOGLE INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:026894/0001

Effective date: 20110817

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: GOOGLE LLC, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044127/0735

Effective date: 20170929

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12