IP Library Granted Patent US 9,037,811
Granted Patent B2
US 9,037,811 · App. 13/835,282 · Granted May 19, 2015

Tagging in memory control unit (MCU)

Inventors: Glenn D. Gilda (Binghamton, NY); Mark R. Hodges (Endicott, NY); Vesselina K. Papazova (Highland, NY); Eric E. Retter (Austin, TX)
Assignee: International Business Machines Corporation
G06F13/16G06F3/0659G06F13/1689G06F3/0656
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,037,811
App. No.
13/835,282
Granted
May 19, 2015
Kind
B2
Abstract

Embodiments relate to tagging in a MCU. An aspect includes assigning a command tag to a command by a tag allocation logic of the MCU. Another aspect includes sending the command and the command tag on a plurality of channels that are in communication with the MCU. Another aspect includes receiving a response tag comprising one of a data tag and a done tag corresponding to the command tag from each of the plurality of channels. Another aspect includes, based on receiving a data tag from each of the plurality of channels, determining that read data corresponding to the command is available.

Claims (85)

1. A computer implemented method for tagging in a memory control unit (MCU), the method comprising:

assigning a command tag to a command by a tag allocation logic of the MCU;

sending the command and the command tag on a plurality of channels that are in communication with the MCU;

receiving a response tag comprising at least one of a data tag and a done tag corresponding to the command tag from each of the plurality of channels; and

based on receiving the data tag from each of the plurality of channels, determining that read data corresponding to the command is available; and

wherein the command comprises a write command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the write command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels;

based each of the plurality of bits corresponding to the command tag assigned to the write command being set in the done tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received; and

based on determining that the write command has been completed, by determining that the corresponding bits in the done tag table are set, sending a command completion for the write command to a cache.

2. The method of claim 1 , further comprising:

based on receiving the done tag from each of the plurality of channels, determining that the command has been completed; and

clearing the command tag for reuse by a subsequent command received by the tag allocation logic based on determining that the command has been completed.

3. The method of claim 1 , wherein the command comprises a read command, the response tag comprises the data tag, and further comprising:

receiving, from each channel of the plurality of channels, read data and the data tag in response to the read command and associated command tag;

for each of the received data tag, setting a corresponding bit in a data tag table in a channel control block of the MCU, the data tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the data tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

4. The method of claim 3 , wherein the read data and associated data tag are received asynchronously from each channel of the plurality of channels by the MCU, and further comprising:

for each channel of the plurality of channels, storing the received read data in an associated buffer control block at a location in the buffer control block determined based on the associated data tag; and

based on each of the plurality of bits corresponding to the command tag being set in the data tag table:

retrieving the read data from the plurality of buffer control blocks based on the command tag; and

sending the retrieved read data to a cache.

5. The method of claim 1 , wherein the command comprises a read command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the read command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the done tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

6. The method of claim 1 , further comprising, based determining that a channel of the plurality of channels comprises a failed channel:

determining that the response tag corresponding to the command tag has been received from each of the plurality of channels based on receiving the response tag from each of the plurality of channels except for the failed channel.

7. A computer system for tagging, the system comprising:

a memory control unit (MCU) comprising a tag allocation logic; and

a plurality of channels in communication with the MCU, the system configured to perform a method comprising:

assigning a command tag to a command by the tag allocation logic;

sending the command and the command tag on the plurality of channels;

receiving a response tag comprising at least one of a data tag and a done tag corresponding to the command tag from each of the plurality of channels; and

based on receiving the data tag from each of the plurality of channels,

determining that read data corresponding to the command is available; and

wherein the command comprises a write command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the write command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels;

based each of the plurality of bits corresponding to the command tag assigned to the write command being set in the done tag table, determining that a the response tag corresponding to the command tag from each of the plurality of channels has been received; and

based on determining that the write command has been completed, by determining that the corresponding bits in the done tag table are set, sending a command completion for the write command to a cache.

8. The system of claim 7 , wherein the command tag is assigned from a set of command tags, wherein a first subset of the set of command tags is reserved for read commands, and a second subset of the set of command tags is reserved for write commands;

wherein a data tag table in a channel control block of the MCU comprises rows corresponding to each of the command tags in the first subset of the set of command tags,

each of the rows in the data tag table comprising a plurality of bits, each of the plurality of bits in a row corresponding to one of the plurality of channels; and

wherein a done tag table in the channel control block comprises rows corresponding to each of the command tags in the set of command tags, each of the rows in the done tag table comprising a plurality of bits, each of the plurality of bits in a row corresponding to one of the plurality of channels.

9. The system of claim 7 , further comprising:

based on receiving the done tag from each of the plurality of channels, determining that the command has been completed; and

clearing the command tag for reuse by a subsequent command received by the tag allocation logic based on determining that the command has been completed.

10. The system of claim 7 , wherein the command comprises a read command, the response tag comprises the data tag, and further comprising:

receiving, from each channel of the plurality of channels, read data and the data tag in response to the read command and associated command tag;

for each of the received data tag, setting a corresponding bit in a data tag table in a channel control block of the MCU, the data tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the data tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

11. The system of claim 10 , wherein the read data and associated data tag are received asynchronously from each channel of the plurality of channels by the MCU, and further comprising:

for each channel of the plurality of channels, storing the received read data in an associated buffer control block at a location in the buffer control block determined based on the associated data tag; and

based on each of the plurality of bits corresponding to the command tag being set in the data tag table:

retrieving the read data from the plurality of buffer control blocks based on the command tag; and

sending the retrieved read data to a cache.

12. The system of claim 7 , wherein the command comprises a read command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the read command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the done tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

13. The system of claim 7 , further comprising, based determining that a channel of the plurality of channels comprises a failed channel:

determining that the response tag corresponding to the command tag has been received from each of the plurality of channels based on receiving the response tag from each of the plurality of channels except for the failed channel.

14. A computer program product for implementing tagging in a memory control unit (MCU), the computer program product comprising:

a non-transitory tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:

assigning a command tag to a command by a tag allocation logic of the MCU;

sending the command and the command tag on a plurality of channels that are in communication with the MCU;

receiving a response tag comprising one of at least a data tag and a done tag corresponding to the command tag from each of the plurality of channels; and

based on receiving the data tag from each of the plurality of channels, determining that read data corresponding to the command is available; and

wherein the command comprises a write command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the write command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels;

based each of the plurality of bits corresponding to the command tag assigned to the write command being set in the done tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received; and

based on determining that the write command has been completed, by determining that the corresponding bits in the done tag table are set, sending a command completion for the write command to a cache.

15. The computer program product of claim 14 , further comprising:

based on receiving the done tag from each of the plurality of channels, determining that the command has been completed; and

clearing the command tag for reuse by a subsequent command received by the tag allocation logic based on determining that the command has been completed.

16. The computer program product of claim 14 , wherein the command comprises a read command, the response tag comprises the data tag, and further comprising:

receiving, from each channel of the plurality of channels, read data and the data tag in response to the read command and associated command tag;

for each of the received data tag, setting a corresponding bit in a data tag table in a channel control block of the MCU, the data tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the data tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

17. The computer program product of claim 14 , wherein the command comprises a read command, the response tag comprises the done tag, and further comprising:

receiving, from each channel of the plurality of channels, the done tag in response to the read command and associated command tag;

for each received done tag, setting a corresponding bit in a done tag table in a channel control block of the MCU, the done tag table comprising a plurality of bits corresponding to the command tag, each of the plurality of bits corresponding to a respective one of the plurality of channels; and

based each of the plurality of bits corresponding to the command tag assigned to the read command being set in the done tag table, determining that the response tag corresponding to the command tag from each of the plurality of channels has been received.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2013
From: GILDA, GLENN D.; HODGES, MARK R.; PAPAZOVA, VESSELINA K.; RETTER, ERIC E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 030301/0915 →
Continuity (1)
Related Publication 20140281192A1 · Sep 18, 2014