IP Library Granted Patent US 7,117,310
Granted Patent B2
US 7,117,310 · App. 10/780,971 · Granted Oct 3, 2006

Systems and methods for cache synchronization between redundant storage controllers

Assignee: LSI Logic Corporation
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 7,117,310
App. No.
10/780,971
Granted
Oct 3, 2006
Kind
B2
Abstract

Systems and methods for maintaining cache coherency between a first controller and a redundant peer controller while reducing communication overhead processing involved in the coherency message exchange. Header or meta-data information is accumulated in a buffer in a first controller along with updated cache data (if any) and forwarded to the peer controller. The accumulating information may be double buffered so that a buffer is filling as a previously filled buffer is transmitting to the peer controller. The peer controller processes the received information to update its mirror cache to maintain coherency with the first controller's cache memory with respect to dirty data. The method and systems avoid the need to update cache coherency in response to every flush operation performed within the first controller to thereby improve overall system performance.

Claims (78)

1. A method for maintaining cache coherency between a first controller and a peer controller, the method comprising:

updating cache data in a write-back cache memory in the first controller in response to read or write requests from an attached host;

buffering information regarding changes to the cache memory in the first controller that affect cache coherency of a mirrored cache memory in the peer controller; and

transmitting the buffered information and associated cache data from the first controller to the peer controller to maintain cache coherency between the cache memory of the first controller and that mirrored cache memory of the peer controller,

wherein the buffered information saves to maintain cache coherency without requiring a step of informing the peer controller of any cache flush operation performed in the first controller, and

wherein the step of buffering further comprises:

filling a first buffer while a second buffer is transmitting to the peer controller;

sensing completion of transmission of the second buffer to the peer controller; and

filling the second buffer while the first buffer is transmitting to the peer controller.

2. The method of claim 1

wherein the step of transmitting further comprises:

transmitting the first buffer when any information is stored in the first buffer and the second buffer is not transmitting; and

transmitting the second buffer when any information is stored in the second buffer and the first buffer is not transmitting.

3. The method of claim 1

wherein the step of transmitting further comprises:

transmitting the buffered information and associated cache data using a single command structure.

4. The method of claim 3 wherein the step of transmitting further comprises:

transmitting a SCSI Write Buffer command for transmitting the buffered information and the associated cache data.

5. The method of claim 1 wherein the step of buffering further comprises:

generating a header information block indicative of a range of affected cache data corresponding to a read or write operation performed by the first controller; and

adding the generated header information block to a filling buffer list of header information blocks.

6. The method of claim 5

wherein the step of transmitting further comprises:

determining whether an active buffer list previously filled with header information blocks and associated cache data is presently transmitting to the peer controller;

in response to determining that no active buffer list is presently transmitting, performing the steps of:

designating the filling buffer list as the active buffer list;

initiating transfer of the active buffer list to the peer controller; and

designating another buffer list as the filling buffer list.

7. The method of claim 1

wherein the step of updating further comprises flushing cache data from the write-back cache memory in the first controller to thereby make room available in the write-back cache memory, and

wherein the step of buffering information further comprises buffering information to invalidate cache data in the mirrored cache memory in the peer controller that corresponds to the dirty data flushed by the first controller if the step of updating is responsive to a read request from an attached host.

8. A system comprising:

a first storage controller having a cache memory;

a second storage controller having a mirrored cache memory; and

a communication channel coupling the first controller and the peer controller for exchanging cache coherency information,

wherein the first controller further comprises:

a filling buffer list for accumulating header information regarding changes in the cache memory of the first controller;

an active buffer list for transmitting previously accumulated header information regarding changes in the cache memory of the first controller from the first controller to the peer controller; and

a first coherency element coupled to the filling buffer list and coupled to the active buffer list to generate header information regarding changes in the cache memory of the first controller resulting from performing read and write operations and to store the generated header information in the filling buffer and to transmit the active buffer to the peer controller,

wherein the second controller further comprises:

a second coherency element for receiving the transmitted header information from the first coherency element to update the mirrored cache memory accordingly, and

wherein the first controller forwards no cache data to the second controller in response to periodic cache flush operations performed by the first controller.

9. A method for maintaining cache coherency between a cache memory in a first controller and a mirror cache memory in a peer controller, the method comprising the steps of:

generating in the first controller update meta-data regarding dirty data in the cache memory of the first controller altered in response to write requests received from an attached host system;

generating in the first controller invalidation meta-data regarding dirty data in the cache memory of the first controller flushed by the first controller in response to read or write requests received from an attached host system;

periodically transmitting the generated meta-data and any corresponding dirty data from the first controller to the peer controller to permit the peer controller to update its mirrored cache memory in accordance with the received meta-data and any corresponding cache data,

wherein the steps of generating each include generating meta-data into a currently filling buffer as a previously filled buffer is being transmitted and wherein the step of periodically transmitting includes the step of swapping the currently filling buffer and previously filled buffer after completion of the transmission of the previously filled buffer.

10. A system for maintaining cache coherency between a first controller and a peer controller, the system comprising:

updating means for updating cache data in a write-back cache memory in the first controller in response to read or write requests from an attached host;

buffering means for buffering information regarding changes to the cache memory m the first controller that affect cache coherency of a mirrored cache memory in the peer controller; and

transmitting means for transmitting the buffered information and associated cache data from the first controller to the peer controller to maintain cache coherency between the cache memory of the first controller and that mirrored cache memory of the peer controller,

wherein the buffered information serves to maintain cache coherency without requiring a step of informing the peer controller of any cache flush operation performed in the first controller, and

wherein the buffering means further comprises:

means for filling a first buffer while a second buffer is transmitting to the peer controller;

means for sensing completion of transmission of the second buffer to the peer controller; and

means for filling the second buffer while the first buffer is transmitting to the peer controller.

11. The system of claim 10

wherein the transmitting means further comprises:

means for transmitting the first buffer when any information is stored in the first buffer and the second buffer is not transmitting; and

means for transmitting the second buffer when any information is stored in the second buffer and the first buffer is not transmitting.

12. The system of claim 10

wherein the transmitting means further comprises:

means for transmitting the buffered information and associated cache data using a single command structure.

13. The system of claim 12 wherein the means for transmitting further comprises:

means for transmitting a SCSI Write Buffer command for transmitting the buffered information and the associated cache data.

14. The system of claim 10 wherein the buffering means further comprises:

means for generating a header information block indicative of a range of affected cache data corresponding to a read or write operation performed by the first controller; and

means for adding the generated header information block to a filling buffer list of header information blocks.

15. The system of claim 14

wherein the transmitting means further comprises:

means for determining whether an active buffer list previously filled wit header information blocks and associated cache data is presently transmitting to the peer controller;

means for determining that no active buffer list is presently transmitting;

means responsive to the means for determining for designating the filling buffer list as the active buffer list;

means responsive to the means for determining for initiating transfer of the active buffer list to the peer controller; and

means responsive to the means for determining for designating another buffer list as the filling buffer list.

16. The system of claim 10

wherein the updating means further comprises means for flushing cache data from the write-back cache memory in the first controller to tbereby make room available in the write-back cache memory, and

wherein the buffering means further comprises means for buffering information to invalidate cache data in the minored cache memory in the peer controller that corresponds to the dirty data flushed by the first controller if the updating means is operating in response to a read request from an attached host.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0097. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048555/0510 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0097 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
CHANGE OF NAME Recorded Jun 6, 2014
From: LSI LOGIC CORPORATION
To: LSI CORPORATION
Reel/Frame 033102/0270 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2004
From: CHATTERJEE, PARESH; BISWAS, CHAYAN; MISHRA, RAGENDRA; THANGARAJ, SENTHIL
To: LSI LOGIC CORPORATION
Reel/Frame 015005/0199 →
Continuity (1)
Related Publication 20050182906A1 · Aug 18, 2005