Method and apparatus for zeroing a transfer buffer memory as a background task
First Claim
1. A controller that cleans buffer memory as a background task, comprising:
- a transfer buffer;
a memory that stores an index table indicating free and non-zero data sectors within said transfer buffer; and
processing logic coupled to said transfer buffer and said memory that uses said transfer buffer for data transfer operations, and when otherwise idle, that scans said index table for contiguous sections of free and non-zero data sectors of said transfer buffer and that zeroes at least one of said contiguous sections of free and non-zero data sectors without accessing a host bus.
4 Assignments
0 Petitions
Accused Products
Abstract
An array controller that cleans buffer memory as a background task. The controller includes a transfer buffer, a memory that stores an index or table indicating free and non-zero data sectors within the transfer buffer, and processing logic that uses the transfer buffer for data transfer operations, and when otherwise idle, that scans the index table for contiguous sections of free and non-zero data sectors of the transfer buffer and that zeroes at least one of the contiguous sections. The controller allocates buffer memory and performs parallel logic operations into the buffer, such as XOR logic operations to generate new parity data. The buffer must first be zeroed or cleaned prior to the parallel operations. With the background task, the controller is more likely to find an appropriate size buffer of free and zeroed data sectors in the transfer buffer to perform the parallel logic operations. The background task significantly reduces or relieves the controller from having to issue CDB-based memory commands to zero or clean an allocated buffer during disk I/O operations.
63 Citations
13 Claims
-
1. A controller that cleans buffer memory as a background task, comprising:
-
a transfer buffer;
a memory that stores an index table indicating free and non-zero data sectors within said transfer buffer; and
processing logic coupled to said transfer buffer and said memory that uses said transfer buffer for data transfer operations, and when otherwise idle, that scans said index table for contiguous sections of free and non-zero data sectors of said transfer buffer and that zeroes at least one of said contiguous sections of free and non-zero data sectors without accessing a host bus. - View Dependent Claims (2, 3, 4, 5, 6)
said processing logic including a processor; and
said memory storing software for execution by said processor.
-
-
3. The controller of claim 2, wherein said software includes an idle task that causes said processor to scan said index table for free and non-zero sections in said transfer buffer and to zero data sectors of at least one of said free and non-zero sections within said transfer buffer.
-
4. The controller of claim 2, wherein said software includes a get routine that allocates a block of memory space from free and zeroed sectors within said transfer buffer.
-
5. The controller of claim 4, wherein said get routine includes at least one input parameter to indicate buffer allocation requirements and returns an output status to indicate success of allocating a buffer according to said buffer allocation requirements.
-
6. The controller of claim 1, wherein said processing logic further comprises:
a memory controller coupled to said transfer buffer via a multithreaded interface to enable performance of simultaneous exclusive-OR logic operations into a single allocated buffer of said transfer buffer.
-
7. A method of cleaning a transfer buffer memory of a disk controller, comprising:
-
detecting an idle mode of the controller;
searching an index for fire and non-zero sections within the transfer buffer; and
zeroing the contents of at least one contiguous free and non-zero section within the transfer buffer without accessing a host bus of the computer system. - View Dependent Claims (8, 9, 10, 11, 12, 13)
said searching comprising searching from a beginning of the transfer buffer; and
said zeroing comprising zeroing a first contiguous free and non-zero section within the transfer buffer from the beginning.
-
-
10. The method of claim 7, further comprising:
-
periodically repeating said detecting, searching and zeroing;
after each said zeroing, setting a pointer to indicate a location within the transfer buffer after the contiguous free and non-zero section that was zeroed; and
said searching, comprising searching from the pointer previously set.
-
-
11. The method of claim 7, further comprising:
after each said zeroing, updating the index.
-
12. The method of claim 7, further comprising:
selecting one of a plurality of free and non-zero sections within the transfer buffer.
-
13. The method of claim 7, further comprising:
said selecting comprising selecting a free and non-zero section that would result in the largest contiguous free and zero section within the transfer buffer.
Specification