System and method for dynamic mirror-bank addressing
First Claim
1. In a memory controller having access to a plurality of memory banks, a method for writing data that is mirrored at two memory banks, the method comprising the steps of:
- receiving a write request where the write request specifies a first memory bank by inclusion of a bank number in the write request, the write request indicating that it is a mirror write request;
identifying a second memory bank at which the data is mirrored, the second memory bank not specified in the write request;
issuing the write request to the two memory banks at which the data is mirrored; and
executing the write request at the two memory banks without locking either memory bank.
1 Assignment
0 Petitions
Accused Products
Abstract
A dynamic addressing technique mirrors data across multiple banks of a memory resource. Information stored in the memory banks is organized into separately addressable blocks, and memory addresses include a mirror flag. To write information mirrored across two memory banks, a processor issues a single write transaction with the mirror flag asserted. A memory controller detects that the mirror flag is asserted and, in response, waits for both memory banks to become available. At that point, the memory controller causes the write to be performed at both banks. To read data that has been mirrored across two memory banks, the processor issues a read with the mirror flag asserted. The memory controller checks the availability of both banks having the desired information. If either bank is available, the read request is accepted and the desired data is retrieved from the available bank and returned to the processor.
60 Citations
63 Claims
-
1. In a memory controller having access to a plurality of memory banks, a method for writing data that is mirrored at two memory banks, the method comprising the steps of:
-
receiving a write request where the write request specifies a first memory bank by inclusion of a bank number in the write request, the write request indicating that it is a mirror write request; identifying a second memory bank at which the data is mirrored, the second memory bank not specified in the write request; issuing the write request to the two memory banks at which the data is mirrored; and executing the write request at the two memory banks without locking either memory bank. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. In a memory controller having access to a plurality of memory banks, a method for reading data that is mirrored at first and second memory banks, the method comprising the steps of:
-
receiving a read request specifying the first memory bank by inclusion of a bank number in the read request, the read request indicating that it is a mirror read request; identifying the second memory bank at which the data is mirrored, the second memory bank not specified in the read request; and issuing the read request only to the second memory bank provided that the first memory bank specified by the read request is unavailable. - View Dependent Claims (9, 10, 11, 12, 46)
-
-
13. In a memory controller having access to a plurality of memory banks, a method of performing an atomic read-modify-write transaction to data mirrored at first and second memory banks, the method comprising the steps of:
-
receiving an atomic read-modify-write transaction specifying the first memory bank of the two memory banks, the read-modify-write transaction indicating that it is a mirror read-modify-write transaction; identifying the second memory bank at which the data is mirrored; a selecting one of the first and second memory banks from which to read the data depending on the availability of the first and second memory banks; in response to selecting the first or second memory bank, modifying the data read from that selected memory bank; issuing the write request to the two memory banks at which the data is mirrored; and executing the write request at the two memory banks without locking either memory bank. - View Dependent Claims (14)
-
-
15. A memory controller configured to access a plurality of memory banks in which data at a first memory bank is mirrored at a second memory bank, the memory controller comprising:
-
a plurality of buffers for storing requests received by the memory controller, the requests specifying data stored at the memory banks; means for identifying at least one request as a mirror read request specifying data stored at the first memory bank by inclusion of a bank number in the request; means for identifying the second memory bank at which the data specified by the mirror read request is mirrored, the second memory bank not specified in the mirror read request; means for selecting one of the first and second memory banks from which to read the specified data, depending on the availability of the first and second memory banks; and means for retrieving the data from the selected one of the first and second memory banks. - View Dependent Claims (16, 17, 18)
-
-
19. A method for operating a memory controller, comprising:
-
receiving a memory request at a first memory bank, where the memory request specifies the first memory bank by inclusion of a bank identifier in the memory request, the memory request indicating that it is a mirror memory request; identifying, in response to the indication that it is a mirror request, a second memory bank, the second memory bank not specified in the memory request; waiting until the first memory bank and the second memory bank are free; and executing the memory request at the first memory bank and the second memory bank; - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A memory controller, comprising:
-
means for receiving a memory request at a first memory bank, where the memory request specifies the first memory bank by inclusion of a bank identifier in the memory request, the memory request indicating that it is a mirror memory request; means for identifying, in response to the indication that it is a mirror request, a second memory bank, the second memory bank not specified in the memory request; means for waiting until the first memory bank and the second memory bank are free; and means for executing the memory request at the first memory bank and the second memory bank. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35, 36)
-
-
37. A memory controller, comprising:
-
the memory controller configured to receive a memory request that specifies a first memory bank by inclusion of a bank identifier in the memory request the memory request indicating that it is a mirror memory request; the memory controller configured to identify a second memory bank, in response to the indication that it is a mirror memory request, the second memory bank not specified in the memory request; the first memory bank and the second memory bank configured to wait until both the first memory bank and the second memory bank are free; and the first memory bank and the second memory bank configured to execute the memory request at the same time. - View Dependent Claims (38, 39, 40, 41, 42, 43, 44, 45)
-
-
47. A memory controller having access to a plurality of memory banks, the memory controlled adapted to read data that is mirrored at first and second memory banks, the memory controller comprising:
-
a request queue configured to receive a read request specifying a first memory bank by inclusion of a bank number in the read request, the read request having a flag that indicates the read request is a mirror read request; and an arbiter configured to identify the second memory bank at which the data is mirrored, the second memory bank not specified in the read request, end to issue the read request only to the second memory bank provided the first memory bank specified by the read request is unavailable. - View Dependent Claims (48, 49, 50, 51, 52, 53)
-
-
54. A memory controller having access to a plurality of memory banks, the memory controller adapted to perform an atomic read-modify-write transaction on data mirrored at first and second memory banks, the memory controller comprising:
-
a request queue configured to receive an atomic read-modify-write transaction that specifies the first memory bank of the two memory banks, the read-modify-write transaction having a flag that indicates the read-modify-write transaction is a mirror read-modify-write transaction; and an arbiter configured to, in response to the read-modify-write transaction, identify the second memory bank at which the data is mirrored and to select one of the first and second memory banks from which to read the data based on the availability of the first and second memory banks, and to modify the data read from that selected memory bank and, to write to the two memory banks at which the data is mirrored. - View Dependent Claims (55, 56, 57, 58)
-
-
59. A memory controller having access to a plurality of memory banks, the memory controller adapted to perform an atomic read-modify-write transaction on data mirrored at first and second memory banks, the memory controller comprising:
-
means for receiving an atomic read-modify-write transaction specifying the first memory bank of the two memory banks, the read-modify-write transaction indicating that the read-modify-write transaction is a mirror read-modify-write transaction; means for identifying the second memory bank at which the data is mirrored; means for selecting one of the first and second memory banks from which to read the data depending on the availability of the first and second memory banks; means for modifying the data read from that selected memory bank; and means for writing the modified data to the two memory banks at which the data is mirrored. - View Dependent Claims (60, 62, 63)
-
-
61. A computer readable medium containing executable program instructions to perform an atomic read-modify-write transaction on data mirrored at first and second memory banks, the executable program instructions comprising program instructions adapted to:
-
receive an atomic read-modify-write transaction specifying the first memory bank of the two memory banks, the read-modify-write transaction indicating that it is a mirror read-modify-write transaction; identify the second memory bank at which the data is mirrored; select one of the first and second memory banks from which to read the data depending on the availability of the first and second memory banks; modify the data read from that selected memory bank; and write the modified data to the two memory banks at which the data is mirrored.
-
Specification