US20060112252A1 - Device-managed host buffer - Google Patents
Device-managed host buffer Download PDFInfo
- Publication number
- US20060112252A1 US20060112252A1 US11/265,617 US26561705A US2006112252A1 US 20060112252 A1 US20060112252 A1 US 20060112252A1 US 26561705 A US26561705 A US 26561705A US 2006112252 A1 US2006112252 A1 US 2006112252A1
- Authority
- US
- United States
- Prior art keywords
- memory
- data
- peripheral device
- cache
- cache memory
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
Definitions
- This application relates generally to memory caching in a peripheral device and more particularly to a method and apparatus for using a portion of a memory space of a host computer as additional cache memory for a peripheral device.
- the performance of a peripheral device that has a memory cache can be substantially increased when the size of the memory cache is increased.
- increasing the size of the memory cache of a peripheral device can be prohibitively expensive. Consequently, peripheral devices have limited cache capability built into them. This limited cache memory potentially provides a substantial burden on the throughput that the host and the peripheral device are able to handle, and thus achievable performance of the peripheral device in operation is a compromise of performance and cost.
- the present invention provides a solution to this and other problems, and offers other advantages over the prior art.
- the effective size of the memory cache of a peripheral device is virtually increased by allocating unused, available memory space in a host computer to use by the peripheral device cache.
- a method and apparatus is provided for virtually increasing the size of the memory cache of a peripheral device by ascertaining if there is memory space available in a connected host.
- the host allocates a portion of a memory space of the host for use as additional cache memory for the peripheral device.
- the host may provide the peripheral device with the location of the additional memory as well.
- the peripheral device itself may manage the additional cache memory, and preferably transfers data to and from the additional cache memory via first-party direct memory access.
- FIG. 1 illustrates an exemplary disc drive.
- FIG. 2 illustrates an exemplary process for virtually increasing the size of a memory cache of a peripheral device in accordance with an embodiment of the present invention.
- FIG. 3 illustrates an exemplary process for saving data in the additional cache memory in accordance with an embodiment of the invention.
- FIG. 4 illustrates an exemplary process for retrieving data from a data storage device such as a disc drive in accordance with an embodiment of the present invention.
- a portion of a memory space of a host may be used as additional cache memory for a peripheral device.
- a peripheral device may be a data storage device such as a disc drive.
- FIG. 1 shown therein is a functional block diagram of a disc drive 100 , generally showing the main functional circuits which are resident on the disc drive printed circuit board and used to control the operation of the disc drive 100 .
- FIG. 1 illustrates a disc drive for exemplary purposes only; as the embodiments of the present invention can be applied to any peripheral device that has a memory cache, including a disc drive.
- the disc drive 100 is operably connected to a host computer or other device 140 in a conventional manner. Control communication paths are provided between the host computer 140 and a disc drive microprocessor 142 , the microprocessor 142 generally providing top level communication and control for the disc drive 100 in conjunction with programming for the microprocessor 142 stored in a microprocessor memory (MEM) 143 .
- the MEM 143 can include random access memory (RAM), read only memory (ROM) and other sources of resident memory for the microprocessor 142 .
- the discs 108 are rotated at a constant high speed by a spindle motor control circuit 148 .
- the actuator 110 moves the heads 118 between tracks on the discs 108 .
- a servo control circuit 150 controls the position of the heads 118 .
- the microprocessor 142 receives information regarding the velocity of the head 118 , and uses that information in conjunction with a velocity profile stored in memory 143 to communicate with the servo control circuit 150 , thereby causing the actuator assembly 110 to be pivoted.
- Data is transferred between the host computer 140 or other device and the disc drive 100 by way of an interface 144 , which typically includes a buffer to facilitate high-speed data transfer between the host computer 140 or other device and the disc drive 100 .
- Data to be written to the disc drive 100 is thus passed from the host computer 140 to the interface 144 and then to a read/write channel 146 , which encodes and serializes the data and provides the requisite write current signals to the heads 118 .
- read signals are generated by the heads 118 and provided to the read/write channel 146 , which performs decoding and error detection and correction operations and outputs the retrieved data to the interface 144 for subsequent transfer to the host computer 140 or other device.
- the interface 144 in embodiments of the present invention preferably includes a first-party direct memory access (FPDMA) mechanism.
- FPDMA first-party direct memory access
- Serial Advanced Technology Attachment (SATA) and Institute of Electrical and Electronics Engineers (IEEE) 1394 are two examples of an interface 144 that includes an FPDMA mechanism.
- Direct memory access is a method of direct communication between a peripheral and the buffer memory of a host computer.
- a DMA controller which is a specialized processor that transfers data between buffer memory and peripheral while allowing the central processing unit (CPU) to perform other tasks.
- the CPU first programs the registers associated with each channel of the DMA controller.
- the registers in the DMA controller are given a start address of a first buffer in buffer memory where data can be read from or written to, the length of this buffer, and the direction of the data flow.
- a peripheral requesting a DMA transfer first signals the DMA controller via a DMA request signal.
- the DMA controller responds by returning a corresponding DMA acknowledge signal.
- the DMA controller then directs the transfers, asserting address and strobing lines, with the peripheral asserting or receiving data to or from buffer memory.
- the DMA controller sends the peripheral a signal that the buffer in buffer memory is full or empty, stopping the peripheral's activity.
- the DMA controller or peripheral also asserts a CPU interrupt signal.
- the CPU reprograms the DMA controller, giving the DMA controller a start address of a subsequent buffer where data is to be read from or written to, the length of this buffer, and the direction of the data flow. After the DMA controller has been reprogrammed, data transfer resumes.
- FPDMA is an alternative method for DMA in which the peripheral device is a bus master.
- the peripheral device may have address and control lines that connect the peripheral to the buffer memory or there may be other methods to allow the peripheral device to program the host DMA controller.
- the address and control lines or other method allow the peripheral device to access information regarding the location of buffers that need to be read or written to without interrupting the CPU.
- FPDMA allows the peripheral device to access the buffer memory of the host computer under the control of the peripheral device itself.
- Hardware in the host computer 140 may be configured to allow data to be sent into the memory space of the host computer 140 via FPDMA.
- the buffer in interface 144 is a memory cache. Whenever data is accessed from the disc, the data requested, and additional adjacent data, is stored in the memory cache.
- ROM in MEM 143 may include code in a module for performing certain acts of the peripheral device in accordance with the present invention, and the host computer 140 preferably includes a driver that includes code for performing certain acts of the host computer 140 in accordance with the present invention.
- FIG. 2 illustrates an exemplary process 200 that may be provided, for example, in such a code module, for virtually increasing the size of a memory cache of a peripheral device such as disc drive 100 .
- Process 200 is preferably incorporated into a software module in the ROM 143 of the peripheral device and includes start block 202 , block 204 , decision block 206 , block 208 , block 210 , block 212 , and end block 214 .
- the process proceeds to block 204 .
- the peripheral device 100 queries the host computer 140 whether memory is available in the memory space of the host 140 .
- the process proceeds to decision block 206 .
- the host computer 140 evaluates whether memory is available in the memory space of the host 140 .
- the process proceeds from decision block 206 to end block 214 when memory is not available in the memory space of the host 140 .
- the process proceeds from decision block 206 to block 208 when memory is available in the memory space of host 140 .
- the host 140 allocates additional cache memory from the memory space of the host computer 140 .
- the process proceeds from block 208 to block 210 .
- the host computer 140 provides the peripheral device with the location of the additional cache memory.
- the host computer 140 responds to the query, the peripheral device 100 receives the response, and the response includes the location of the additional cache memory.
- the process proceeds from block 210 to block 212 .
- the peripheral device 100 manages the additional cache memory.
- the process proceeds from block 212 to end block 214 .
- the additional cache memory may be continuous address space. Alternatively, a table of addresses may be used.
- Process 200 involves a two-part handshake.
- This handshake may be implemented in several ways.
- the host computer 140 includes a driver that recognizes when the peripheral device 100 is connected to the host computer 140 , and the driver automatically allocates a pre-determined amount of the additional cache memory and provides the peripheral device 100 with the location of the additional cache memory when the peripheral device 100 is connected to the host 140 .
- the driver queries the peripheral device how much memory the peripheral device 100 needs.
- the peripheral device 100 then responds to this request.
- the host 140 allocates the requested amount of memory space as the additional cache memory, and provides the peripheral device 100 with the location of the additional cache memory.
- the peripheral device 100 when the peripheral device 100 is connected to the host 140 , the peripheral device 100 makes a query whether a specific amount of memory is available, and the host 140 responds to the query. The host 140 then allocates that amount of memory as additional cache memory and provides the peripheral device 100 with the location of the additional cache memory, if the specific amount of memory is available.
- the module in the peripheral device 100 makes a query whether any memory is available, and the host 140 responds with the amount of memory available if any.
- the peripheral device then responds with the amount of memory that it requires, and the host responds in turn with the location of the additional cache memory.
- Process 200 thus effectively allows the peripheral memory cache module to use the additional host cache memory as if it were part of the peripheral memory cache, therefore virtually increasing the size of the peripheral memory cache.
- FIG. 3 illustrates an exemplary process ( 300 ) for saving data in the additional cache memory.
- Process 300 includes start block 302 , decision block 304 , block 306 , and end block 308 .
- the process proceeds to decision block 304 .
- the module in the peripheral device 100 evaluates whether the peripheral device 100 should send any data from the memory cache of the peripheral device 100 to the additional cache memory.
- the peripheral device 100 evaluates that it should send data from the memory cache to the additional cache memory when the memory is full, and new data is about to be added to the memory cache.
- any criteria may be used for evaluating whether data should be sent from the memory cache to the additional cache memory.
- the process proceeds from decision block 304 to end block 308 when the peripheral device 100 evaluates that the peripheral device 100 should not send data from the memory cache to the additional cache memory.
- the process proceeds from decision block 304 to block 306 when the peripheral device 100 evaluates that the peripheral device 100 should send data from the memory cache to the additional cache memory.
- the data is transferred from the memory cache of the peripheral device 100 to the additional cache memory.
- the transfer is accomplished via FPDMA.
- the transfer may be accomplished as follows.
- the interface 144 indicates to the host 140 an address of the host that will be written to.
- the interface 144 waits to receive a signal from the host 140 indicating that the host 140 is ready to receive data at the indicated address.
- data is sent to the indicated address.
- the interface 144 may be a SATA interface that uses the first-party DMA protocol described in the SATA specification to transfer data from the memory cache to the additional cache memory.
- the process proceeds to end block 308 .
- the peripheral device 100 keeps a table of all entries for the additional cache memory.
- the table may include information such as the starting address of the entry, the size of the entry, and other information describing the data.
- the host computer 140 keeps a table of all entries for the additional cache memory.
- FIG. 4 illustrates an exemplary process 400 in the module in the peripheral device 100 for retrieving data from the disc drive 100 .
- Process 400 includes start block 402 , decision block 403 , decision block 404 , block 406 , decision block 408 , block 412 , and end block 414 .
- process 400 further includes block 410 .
- process 400 further includes block 416 .
- FIG. 4 illustrates an example of process 400 in which the peripheral device 100 is a disc drive, any peripheral device with a memory cache can be used.
- routine 400 is called.
- Control passes to query operational block 403 .
- the disc drive 100 module evaluates whether data was requested from the host 140 .
- the process continually loops back to decision block 403 if data is not being requested from the host 140 .
- control transfers from decision block 403 to decision block 404 when data is requested from the host 140 .
- decision block 404 the disc drive 100 evaluates whether the requested data is in the memory cache of the disc drive 100 . If the requested data is not in the memory cache control transfers from decision block 404 to decision block 408 . Control transfers from decision block 404 to block 406 if the requested data is in the memory cache. At block 406 , the data is transferred from the memory cache to the host. The transfer is accomplished via whatever protocol host 140 is expecting. Control then transfers from block 406 to end block 414 where this routine ends.
- control transferred to decision block 408 because the data was not in the memory cache it is evaluated whether the requested data is in the additional cache memory.
- the evaluation may be made by searching a table of entries for the additional cache memory that is kept by the disc drive 100 .
- disc drive 100 may retrieve a table of entries for the additional cache memory that is kept by the host 140 , or in another location, and then the disc drive 100 searches the table of entries in order to evaluate whether the requested data is stored in the additional cache memory.
- data is transferred from the additional cache memory to the memory cache of the disc drive 100 .
- the transfer is accomplished preferably via FPDMA.
- the transfer may be accomplished as follows.
- the interface 144 indicates to the host an address of the host that will be read from.
- the interface 144 of the disc drive 100 then waits to receive a signal from the host indicating that the data at the indicated address is ready to be read. When the signal is received, the requested data is read from the indicated address.
- the interface 144 may be a SATA interface that uses the first-party DMA protocol described in the SATA specification to transfer data from the memory cache to the additional cache memory. The process proceeds from block 410 to block 406 .
- the host 140 is provided with the location of the requested data in the memory space of the host. The process proceeds from block 416 to end block 414 where control returns to the calling routine.
- an embodiment of the present invention may be viewed as a method (such as 200 ) for virtually increasing a size of a cache (such as 144 ) of a peripheral device (such as 100 ) that is connectable to a host (such as 140 ).
- the method includes querying the host (such as in acts 204 and 206 ) whether memory is available in a memory space of the host (such as 140 ).
- the method also includes allocating (such as in act 208 ) additional cache memory from the memory space of the host for use by the peripheral device if memory is available in the memory space of the host.
- an embodiment of the present invention may be viewed as a peripheral device (such as 100 ) that is connectable to a host computer (such as 140 ).
- the peripheral device includes a memory cache (such as 144 ).
- the peripheral device also includes means for using a portion of a memory space of the host computer as additional cache memory for the peripheral device (such as in acts 202 through 214 ).
- the using means may be implemented in the ROM (such as 143 ) of the peripheral device.
- the using means includes means for making a query to the host (such as in act 206 ) whether memory is available in the memory space of the host.
- the using mean also includes means for receiving a response (such as in act 210 ) to the query if memory is available in the memory space of the host, wherein the response includes a location of the additional cache memory.
- the using means also includes means for evaluating whether data should be transferred from the memory cache of the peripheral device to the additional cache memory in the memory space of the host (such as in acts 302 through 308 ).
- the using means also includes means for transferring data (such as in acts 402 through 414 ) from the memory cache of the peripheral device to the additional cache memory via first-party direct memory access (DMA) when data should be transferred from the memory cache of the peripheral device to the additional cache memory.
- DMA first-party direct memory access
- the using means also includes means for evaluating whether requested data is in the additional cache memory (such as in acts 408 and 410 ) if the host requests the requested data.
Abstract
Description
- This application relates generally to memory caching in a peripheral device and more particularly to a method and apparatus for using a portion of a memory space of a host computer as additional cache memory for a peripheral device.
- The performance of a peripheral device that has a memory cache can be substantially increased when the size of the memory cache is increased. However, increasing the size of the memory cache of a peripheral device can be prohibitively expensive. Consequently, peripheral devices have limited cache capability built into them. This limited cache memory potentially provides a substantial burden on the throughput that the host and the peripheral device are able to handle, and thus achievable performance of the peripheral device in operation is a compromise of performance and cost.
- Accordingly there is a need for effectively increasing the buffer memory of a peripheral device without additional cost. The present invention provides a solution to this and other problems, and offers other advantages over the prior art.
- Against this backdrop the present invention has been developed. In embodiments of the present invention, the effective size of the memory cache of a peripheral device is virtually increased by allocating unused, available memory space in a host computer to use by the peripheral device cache. According to one example, a method and apparatus is provided for virtually increasing the size of the memory cache of a peripheral device by ascertaining if there is memory space available in a connected host. In this case, the host allocates a portion of a memory space of the host for use as additional cache memory for the peripheral device. The host may provide the peripheral device with the location of the additional memory as well. The peripheral device itself may manage the additional cache memory, and preferably transfers data to and from the additional cache memory via first-party direct memory access.
- These and various other features as well as advantages which characterize the present invention will be apparent from a reading of the following detailed description and a review of the associated drawings.
-
FIG. 1 illustrates an exemplary disc drive. -
FIG. 2 illustrates an exemplary process for virtually increasing the size of a memory cache of a peripheral device in accordance with an embodiment of the present invention. -
FIG. 3 illustrates an exemplary process for saving data in the additional cache memory in accordance with an embodiment of the invention. -
FIG. 4 illustrates an exemplary process for retrieving data from a data storage device such as a disc drive in accordance with an embodiment of the present invention. - In an embodiment of the present invention, a portion of a memory space of a host may be used as additional cache memory for a peripheral device. One such peripheral device may be a data storage device such as a disc drive.
- Referring now to
FIG. 1 , shown therein is a functional block diagram of a disc drive 100, generally showing the main functional circuits which are resident on the disc drive printed circuit board and used to control the operation of the disc drive 100.FIG. 1 illustrates a disc drive for exemplary purposes only; as the embodiments of the present invention can be applied to any peripheral device that has a memory cache, including a disc drive. The disc drive 100 is operably connected to a host computer orother device 140 in a conventional manner. Control communication paths are provided between thehost computer 140 and adisc drive microprocessor 142, themicroprocessor 142 generally providing top level communication and control for the disc drive 100 in conjunction with programming for themicroprocessor 142 stored in a microprocessor memory (MEM) 143. TheMEM 143 can include random access memory (RAM), read only memory (ROM) and other sources of resident memory for themicroprocessor 142. - The
discs 108 are rotated at a constant high speed by a spindlemotor control circuit 148. During a seek operation; theactuator 110 moves theheads 118 between tracks on thediscs 108. Aservo control circuit 150 controls the position of theheads 118. During a seek operation themicroprocessor 142 receives information regarding the velocity of thehead 118, and uses that information in conjunction with a velocity profile stored inmemory 143 to communicate with theservo control circuit 150, thereby causing theactuator assembly 110 to be pivoted. - Data is transferred between the
host computer 140 or other device and the disc drive 100 by way of aninterface 144, which typically includes a buffer to facilitate high-speed data transfer between thehost computer 140 or other device and the disc drive 100. Data to be written to the disc drive 100 is thus passed from thehost computer 140 to theinterface 144 and then to a read/writechannel 146, which encodes and serializes the data and provides the requisite write current signals to theheads 118. To retrieve data that has been previously stored in the disc drive 100, read signals are generated by theheads 118 and provided to the read/writechannel 146, which performs decoding and error detection and correction operations and outputs the retrieved data to theinterface 144 for subsequent transfer to thehost computer 140 or other device. - The
interface 144 in embodiments of the present invention preferably includes a first-party direct memory access (FPDMA) mechanism. Serial Advanced Technology Attachment (SATA) and Institute of Electrical and Electronics Engineers (IEEE) 1394 are two examples of aninterface 144 that includes an FPDMA mechanism. - Direct memory access (DMA) is a method of direct communication between a peripheral and the buffer memory of a host computer. Typically, the communication between the peripheral and the host computer is controlled by a DMA controller, which is a specialized processor that transfers data between buffer memory and peripheral while allowing the central processing unit (CPU) to perform other tasks. Typically, the CPU first programs the registers associated with each channel of the DMA controller. The registers in the DMA controller are given a start address of a first buffer in buffer memory where data can be read from or written to, the length of this buffer, and the direction of the data flow. A peripheral requesting a DMA transfer first signals the DMA controller via a DMA request signal. The DMA controller, in turn, responds by returning a corresponding DMA acknowledge signal.
- The DMA controller then directs the transfers, asserting address and strobing lines, with the peripheral asserting or receiving data to or from buffer memory. When the length field of the buffer in the DMA controller goes to zero and there is still data to be transferred, the DMA controller sends the peripheral a signal that the buffer in buffer memory is full or empty, stopping the peripheral's activity. The DMA controller or peripheral also asserts a CPU interrupt signal. In response to the interrupt, the CPU reprograms the DMA controller, giving the DMA controller a start address of a subsequent buffer where data is to be read from or written to, the length of this buffer, and the direction of the data flow. After the DMA controller has been reprogrammed, data transfer resumes.
- FPDMA is an alternative method for DMA in which the peripheral device is a bus master. The peripheral device may have address and control lines that connect the peripheral to the buffer memory or there may be other methods to allow the peripheral device to program the host DMA controller. The address and control lines or other method allow the peripheral device to access information regarding the location of buffers that need to be read or written to without interrupting the CPU. FPDMA allows the peripheral device to access the buffer memory of the host computer under the control of the peripheral device itself. Hardware in the
host computer 140 may be configured to allow data to be sent into the memory space of thehost computer 140 via FPDMA. - The buffer in
interface 144 is a memory cache. Whenever data is accessed from the disc, the data requested, and additional adjacent data, is stored in the memory cache. ROM inMEM 143 may include code in a module for performing certain acts of the peripheral device in accordance with the present invention, and thehost computer 140 preferably includes a driver that includes code for performing certain acts of thehost computer 140 in accordance with the present invention. -
FIG. 2 illustrates anexemplary process 200 that may be provided, for example, in such a code module, for virtually increasing the size of a memory cache of a peripheral device such as disc drive 100.Process 200 is preferably incorporated into a software module in theROM 143 of the peripheral device and includesstart block 202,block 204,decision block 206,block 208,block 210,block 212, andend block 214. - After start
block 202, the process proceeds to block 204. Atblock 204, the peripheral device 100 queries thehost computer 140 whether memory is available in the memory space of thehost 140. Afterblock 204, the process proceeds todecision block 206. Atdecision block 206, thehost computer 140 evaluates whether memory is available in the memory space of thehost 140. The process proceeds fromdecision block 206 to endblock 214 when memory is not available in the memory space of thehost 140. The process proceeds fromdecision block 206 to block 208 when memory is available in the memory space ofhost 140. - At
block 208, thehost 140 allocates additional cache memory from the memory space of thehost computer 140. The process proceeds fromblock 208 to block 210. Atblock 210, thehost computer 140 provides the peripheral device with the location of the additional cache memory. According to one example, thehost computer 140 responds to the query, the peripheral device 100 receives the response, and the response includes the location of the additional cache memory. The process proceeds fromblock 210 to block 212. Atblock 212, the peripheral device 100 manages the additional cache memory. The process proceeds fromblock 212 to endblock 214. - The additional cache memory may be continuous address space. Alternatively, a table of addresses may be used.
-
Process 200 involves a two-part handshake. This handshake may be implemented in several ways. According to one example, thehost computer 140 includes a driver that recognizes when the peripheral device 100 is connected to thehost computer 140, and the driver automatically allocates a pre-determined amount of the additional cache memory and provides the peripheral device 100 with the location of the additional cache memory when the peripheral device 100 is connected to thehost 140. - According to another example, when the peripheral device 100 is connected to the
host 140, the driver queries the peripheral device how much memory the peripheral device 100 needs. The peripheral device 100 then responds to this request. Next, thehost 140 allocates the requested amount of memory space as the additional cache memory, and provides the peripheral device 100 with the location of the additional cache memory. - According to another example, when the peripheral device 100 is connected to the
host 140, the peripheral device 100 makes a query whether a specific amount of memory is available, and thehost 140 responds to the query. Thehost 140 then allocates that amount of memory as additional cache memory and provides the peripheral device 100 with the location of the additional cache memory, if the specific amount of memory is available. - According to another example, when the peripheral device 100 is connected to the
host 140, the module in the peripheral device 100 makes a query whether any memory is available, and thehost 140 responds with the amount of memory available if any. The peripheral device then responds with the amount of memory that it requires, and the host responds in turn with the location of the additional cache memory. -
Process 200 thus effectively allows the peripheral memory cache module to use the additional host cache memory as if it were part of the peripheral memory cache, therefore virtually increasing the size of the peripheral memory cache. -
FIG. 3 illustrates an exemplary process (300) for saving data in the additional cache memory.Process 300 includesstart block 302,decision block 304, block 306, andend block 308. - After
start block 302, the process proceeds todecision block 304. Atdecision block 304, the module in the peripheral device 100 evaluates whether the peripheral device 100 should send any data from the memory cache of the peripheral device 100 to the additional cache memory. According to one example, the peripheral device 100 evaluates that it should send data from the memory cache to the additional cache memory when the memory is full, and new data is about to be added to the memory cache. However, in various embodiments ofprocess 300, any criteria may be used for evaluating whether data should be sent from the memory cache to the additional cache memory. The process proceeds fromdecision block 304 to end block 308 when the peripheral device 100 evaluates that the peripheral device 100 should not send data from the memory cache to the additional cache memory. The process proceeds fromdecision block 304 to block 306 when the peripheral device 100 evaluates that the peripheral device 100 should send data from the memory cache to the additional cache memory. - At
block 306, the data is transferred from the memory cache of the peripheral device 100 to the additional cache memory. The transfer is accomplished via FPDMA. The transfer may be accomplished as follows. Theinterface 144 indicates to thehost 140 an address of the host that will be written to. Next, theinterface 144 waits to receive a signal from thehost 140 indicating that thehost 140 is ready to receive data at the indicated address. Then, data is sent to the indicated address. Theinterface 144 may be a SATA interface that uses the first-party DMA protocol described in the SATA specification to transfer data from the memory cache to the additional cache memory. Afterblock 306, the process proceeds to endblock 308. - According to one example, the peripheral device 100 keeps a table of all entries for the additional cache memory. The table may include information such as the starting address of the entry, the size of the entry, and other information describing the data. According to another example, the
host computer 140 keeps a table of all entries for the additional cache memory. -
FIG. 4 illustrates anexemplary process 400 in the module in the peripheral device 100 for retrieving data from the disc drive 100.Process 400 includesstart block 402,decision block 403,decision block 404, block 406,decision block 408, block 412, andend block 414. According to a first embodiment,process 400 further includesblock 410. According to a second embodiment,process 400 further includes block 416. AlthoughFIG. 4 illustrates an example ofprocess 400 in which the peripheral device 100 is a disc drive, any peripheral device with a memory cache can be used. - The process begins at
block 402 in whichroutine 400 is called. Control then passes to queryoperational block 403. Inquery block 403, the disc drive 100 module evaluates whether data was requested from thehost 140. The process continually loops back to decision block 403 if data is not being requested from thehost 140. However, control transfers fromdecision block 403 to decision block 404 when data is requested from thehost 140. - In
decision block 404, the disc drive 100 evaluates whether the requested data is in the memory cache of the disc drive 100. If the requested data is not in the memory cache control transfers fromdecision block 404 todecision block 408. Control transfers fromdecision block 404 to block 406 if the requested data is in the memory cache. Atblock 406, the data is transferred from the memory cache to the host. The transfer is accomplished via whateverprotocol host 140 is expecting. Control then transfers fromblock 406 to end block 414 where this routine ends. - If on the other hand, control transferred to decision block 408 because the data was not in the memory cache, it is evaluated whether the requested data is in the additional cache memory. The evaluation may be made by searching a table of entries for the additional cache memory that is kept by the disc drive 100. Alternatively, disc drive 100 may retrieve a table of entries for the additional cache memory that is kept by the
host 140, or in another location, and then the disc drive 100 searches the table of entries in order to evaluate whether the requested data is stored in the additional cache memory. - Control transfers from
decision block 408 to block 412 if the requested data is not in the additional cache memory. If the requested data is in additional memory, control transfers to retrieve the data. According to the first embodiment, the process proceeds fromdecision block 408 to block 410 when the requested data is in the additional cache memory. According to the second embodiment, the process proceeds fromdecision block 408 to block 416 when the requested data is in the additional cache memory. - According to the first embodiment, in
operational block 410, data is transferred from the additional cache memory to the memory cache of the disc drive 100. The transfer is accomplished preferably via FPDMA. The transfer may be accomplished as follows. Theinterface 144 indicates to the host an address of the host that will be read from. Theinterface 144 of the disc drive 100 then waits to receive a signal from the host indicating that the data at the indicated address is ready to be read. When the signal is received, the requested data is read from the indicated address. Theinterface 144 may be a SATA interface that uses the first-party DMA protocol described in the SATA specification to transfer data from the memory cache to the additional cache memory. The process proceeds fromblock 410 to block 406. - According to the second embodiment, at block 416, the
host 140 is provided with the location of the requested data in the memory space of the host. The process proceeds from block 416 to end block 414 where control returns to the calling routine. - At
block 412, data is retrieved from thedisc 108 and sent to thehost 140. The process proceeds fromblock 412 to end block 414 where control again returns to the calling routine. - In summary, an embodiment of the present invention may be viewed as a method (such as 200) for virtually increasing a size of a cache (such as 144) of a peripheral device (such as 100) that is connectable to a host (such as 140). The method includes querying the host (such as in
acts 204 and 206) whether memory is available in a memory space of the host (such as 140). The method also includes allocating (such as in act 208) additional cache memory from the memory space of the host for use by the peripheral device if memory is available in the memory space of the host. - Alternatively, an embodiment of the present invention may be viewed as a peripheral device (such as 100) that is connectable to a host computer (such as 140). The peripheral device includes a memory cache (such as 144). The peripheral device also includes means for using a portion of a memory space of the host computer as additional cache memory for the peripheral device (such as in
acts 202 through 214). The using means may be implemented in the ROM (such as 143) of the peripheral device. The using means includes means for making a query to the host (such as in act 206) whether memory is available in the memory space of the host. The using mean also includes means for receiving a response (such as in act 210) to the query if memory is available in the memory space of the host, wherein the response includes a location of the additional cache memory. - The using means also includes means for evaluating whether data should be transferred from the memory cache of the peripheral device to the additional cache memory in the memory space of the host (such as in
acts 302 through 308). The using means also includes means for transferring data (such as inacts 402 through 414) from the memory cache of the peripheral device to the additional cache memory via first-party direct memory access (DMA) when data should be transferred from the memory cache of the peripheral device to the additional cache memory. The using means also includes means for evaluating whether requested data is in the additional cache memory (such as inacts 408 and 410) if the host requests the requested data. - It will be clear that the present invention is well adapted to attain the ends and advantages mentioned as well as those inherent therein. While a presently preferred embodiment has been described for purposes of this disclosure, various changes and modifications may be made which are well within the scope of the present invention. For example, some of the examples described above used a disc drive for purposes of illustration. However, the invention can be applied to any peripheral device that has a memory cache, such as a printer or scanner, not just a disc drive. Numerous other changes may be made which will readily suggest themselves to those skilled in the art and which are encompassed in the spirit of the invention disclosed and as defined in the appended claims.
Claims (32)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/265,617 US20060112252A1 (en) | 2003-05-22 | 2005-11-02 | Device-managed host buffer |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/443,947 US6981123B2 (en) | 2003-05-22 | 2003-05-22 | Device-managed host buffer |
US11/265,617 US20060112252A1 (en) | 2003-05-22 | 2005-11-02 | Device-managed host buffer |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/443,947 Continuation US6981123B2 (en) | 2003-05-22 | 2003-05-22 | Device-managed host buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060112252A1 true US20060112252A1 (en) | 2006-05-25 |
Family
ID=33450534
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/443,947 Expired - Fee Related US6981123B2 (en) | 2003-05-22 | 2003-05-22 | Device-managed host buffer |
US11/265,617 Abandoned US20060112252A1 (en) | 2003-05-22 | 2005-11-02 | Device-managed host buffer |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/443,947 Expired - Fee Related US6981123B2 (en) | 2003-05-22 | 2003-05-22 | Device-managed host buffer |
Country Status (1)
Country | Link |
---|---|
US (2) | US6981123B2 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090112894A1 (en) * | 2007-10-24 | 2009-04-30 | Hitachi, Ltd. | Method of reducing storage power consumption by use of prefetch and computer system using the same |
US20110296088A1 (en) * | 2010-05-27 | 2011-12-01 | Sandisk Il Ltd. | Memory management storage to a host device |
US20120117331A1 (en) * | 2009-10-07 | 2012-05-10 | Krause Michael R | Notification protocol based endpoint caching of host memory |
US9880783B2 (en) * | 2015-10-28 | 2018-01-30 | Sandisk Technologies Llc | System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller |
US10055236B2 (en) | 2015-07-02 | 2018-08-21 | Sandisk Technologies Llc | Runtime data storage and/or retrieval |
US10061521B2 (en) | 2015-11-09 | 2018-08-28 | Samsung Electronics Co., Ltd. | Storage device and method of operating the same |
US10114586B1 (en) * | 2017-06-22 | 2018-10-30 | Western Digital Technologies, Inc. | System and method for using host command data buffers as extended memory device volatile memory |
US10360150B2 (en) * | 2011-02-14 | 2019-07-23 | Suse Llc | Techniques for managing memory in a multiprocessor architecture |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6981123B2 (en) * | 2003-05-22 | 2005-12-27 | Seagate Technology Llc | Device-managed host buffer |
US20060004984A1 (en) * | 2004-06-30 | 2006-01-05 | Morris Tonia G | Virtual memory management system |
US7761678B1 (en) | 2004-09-29 | 2010-07-20 | Verisign, Inc. | Method and apparatus for an improved file repository |
US8307180B2 (en) | 2008-02-28 | 2012-11-06 | Nokia Corporation | Extended utilization area for a memory device |
US8239640B2 (en) * | 2008-10-09 | 2012-08-07 | Dataram, Inc. | System for controlling performance aspects of a data storage and access routine |
US8874824B2 (en) | 2009-06-04 | 2014-10-28 | Memory Technologies, LLC | Apparatus and method to share host system RAM with mass storage memory RAM |
JP2012128778A (en) * | 2010-12-17 | 2012-07-05 | Sony Corp | Data transfer device, memory control device, and memory system |
US9417998B2 (en) | 2012-01-26 | 2016-08-16 | Memory Technologies Llc | Apparatus and method to provide cache move with non-volatile mass memory system |
US9311226B2 (en) | 2012-04-20 | 2016-04-12 | Memory Technologies Llc | Managing operational state data of a memory module using host memory in association with state change |
US9286219B1 (en) * | 2012-09-28 | 2016-03-15 | Emc Corporation | System and method for cache management |
CN107239420B (en) * | 2012-11-21 | 2020-05-05 | 相干逻辑公司 | Processing system with interspersed processors DMA-FIFO |
US9575884B2 (en) * | 2013-05-13 | 2017-02-21 | Qualcomm Incorporated | System and method for high performance and low cost flash translation layer |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581736A (en) * | 1994-07-18 | 1996-12-03 | Microsoft Corporation | Method and system for dynamically sharing RAM between virtual memory and disk cache |
US5732409A (en) * | 1994-03-21 | 1998-03-24 | Legend Research Limited | Caching disk controller implemented by hardwired logic |
US5809560A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive read-ahead disk cache |
US5890012A (en) * | 1995-04-25 | 1999-03-30 | Intel Corporation | System for programming peripheral with address and direction information and sending the information through data bus or control line when DMA controller asserts data knowledge line |
US5890002A (en) * | 1996-12-31 | 1999-03-30 | Opti Inc. | System and method for bus master emulation |
US5905912A (en) * | 1996-04-08 | 1999-05-18 | Vlsi Technology, Inc. | System for implementing peripheral device bus mastering in a computer using a list processor for asserting and receiving control signals external to the DMA controller |
US5933848A (en) * | 1995-12-01 | 1999-08-03 | Hewlett-Packard Company | System for managing the caching of data of a mass storage within a portion of a system memory |
US20010033450A1 (en) * | 2000-04-19 | 2001-10-25 | Bryant Lawrence Matthias | Radially offset writer position control in a disc drive made with substantially identical heads |
US6434663B1 (en) * | 1996-09-06 | 2002-08-13 | Intel Corporation | Disk block allocation optimization methodology with accommodation for file system cluster size greater than operating system memory page size |
US6446148B1 (en) * | 1998-11-14 | 2002-09-03 | Tony Goodfellow | Enhanced ATA channel command structure for automatic polling, hot swapping and extending coupled peripheral devices |
US6539460B2 (en) * | 2001-01-19 | 2003-03-25 | International Business Machines Corporation | System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression |
US20040236905A1 (en) * | 2003-05-22 | 2004-11-25 | Seagate Technology Llc | Device-managed host buffer |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US33450A (en) * | 1861-10-08 | Improvement in processes of clarifying saccharine juices |
-
2003
- 2003-05-22 US US10/443,947 patent/US6981123B2/en not_active Expired - Fee Related
-
2005
- 2005-11-02 US US11/265,617 patent/US20060112252A1/en not_active Abandoned
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732409A (en) * | 1994-03-21 | 1998-03-24 | Legend Research Limited | Caching disk controller implemented by hardwired logic |
US5581736A (en) * | 1994-07-18 | 1996-12-03 | Microsoft Corporation | Method and system for dynamically sharing RAM between virtual memory and disk cache |
US5890012A (en) * | 1995-04-25 | 1999-03-30 | Intel Corporation | System for programming peripheral with address and direction information and sending the information through data bus or control line when DMA controller asserts data knowledge line |
US5809560A (en) * | 1995-10-13 | 1998-09-15 | Compaq Computer Corporation | Adaptive read-ahead disk cache |
US5933848A (en) * | 1995-12-01 | 1999-08-03 | Hewlett-Packard Company | System for managing the caching of data of a mass storage within a portion of a system memory |
US5905912A (en) * | 1996-04-08 | 1999-05-18 | Vlsi Technology, Inc. | System for implementing peripheral device bus mastering in a computer using a list processor for asserting and receiving control signals external to the DMA controller |
US6434663B1 (en) * | 1996-09-06 | 2002-08-13 | Intel Corporation | Disk block allocation optimization methodology with accommodation for file system cluster size greater than operating system memory page size |
US5890002A (en) * | 1996-12-31 | 1999-03-30 | Opti Inc. | System and method for bus master emulation |
US6446148B1 (en) * | 1998-11-14 | 2002-09-03 | Tony Goodfellow | Enhanced ATA channel command structure for automatic polling, hot swapping and extending coupled peripheral devices |
US20010033450A1 (en) * | 2000-04-19 | 2001-10-25 | Bryant Lawrence Matthias | Radially offset writer position control in a disc drive made with substantially identical heads |
US6539460B2 (en) * | 2001-01-19 | 2003-03-25 | International Business Machines Corporation | System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression |
US20040236905A1 (en) * | 2003-05-22 | 2004-11-25 | Seagate Technology Llc | Device-managed host buffer |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8036076B2 (en) * | 2007-10-24 | 2011-10-11 | Hitachi, Ltd. | Method of reducing storage power consumption by use of prefetch and computer system using the same |
US20090112894A1 (en) * | 2007-10-24 | 2009-04-30 | Hitachi, Ltd. | Method of reducing storage power consumption by use of prefetch and computer system using the same |
US20120117331A1 (en) * | 2009-10-07 | 2012-05-10 | Krause Michael R | Notification protocol based endpoint caching of host memory |
US8838907B2 (en) * | 2009-10-07 | 2014-09-16 | Hewlett-Packard Development Company, L.P. | Notification protocol based endpoint caching of host memory |
US20110296088A1 (en) * | 2010-05-27 | 2011-12-01 | Sandisk Il Ltd. | Memory management storage to a host device |
US8966176B2 (en) * | 2010-05-27 | 2015-02-24 | Sandisk Il Ltd. | Memory management storage to a host device |
US10360150B2 (en) * | 2011-02-14 | 2019-07-23 | Suse Llc | Techniques for managing memory in a multiprocessor architecture |
US10055236B2 (en) | 2015-07-02 | 2018-08-21 | Sandisk Technologies Llc | Runtime data storage and/or retrieval |
US9880783B2 (en) * | 2015-10-28 | 2018-01-30 | Sandisk Technologies Llc | System and method for utilization of a shadow data buffer in a host where the shadow data buffer is controlled by external storage controller |
US10061521B2 (en) | 2015-11-09 | 2018-08-28 | Samsung Electronics Co., Ltd. | Storage device and method of operating the same |
US10114586B1 (en) * | 2017-06-22 | 2018-10-30 | Western Digital Technologies, Inc. | System and method for using host command data buffers as extended memory device volatile memory |
US20190042148A1 (en) * | 2017-06-22 | 2019-02-07 | Western Digital Technologies, Inc. | System and method for using host command data buffers as extended memory device volatile memory |
US10489082B2 (en) * | 2017-06-22 | 2019-11-26 | Western Digital Technologies, Inc. | System and method for using host command data buffers as extended memory device volatile memory |
Also Published As
Publication number | Publication date |
---|---|
US20040236905A1 (en) | 2004-11-25 |
US6981123B2 (en) | 2005-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060112252A1 (en) | Device-managed host buffer | |
US7555599B2 (en) | System and method of mirrored RAID array write management | |
US6324599B1 (en) | Computer system and method for tracking DMA transferred data within a read-ahead local buffer without interrupting the host processor | |
US5857084A (en) | Hierarchical bus structure access system | |
US6202107B1 (en) | Host controller interface descriptor fetching unit | |
KR100274771B1 (en) | Method of shared intervention for cache lines in the shared state for smp bus | |
US7493450B2 (en) | Method of triggering read cache pre-fetch to increase host read throughput | |
US5623700A (en) | Interface circuit having zero latency buffer memory and cache memory information transfer | |
US5239644A (en) | Data preloading method and system for using a buffer | |
JP3183993B2 (en) | Disk control system | |
US5787475A (en) | Controlled prefetching of data requested by a peripheral | |
US4868734A (en) | Variable rate improvement of disc cache subsystem | |
US6662253B1 (en) | Shared peripheral architecture | |
JP2007241927A (en) | Data storage device and method | |
US6170030B1 (en) | Method and apparatus for restreaming data that has been queued in a bus bridging device | |
US6516389B1 (en) | Disk control device | |
JPH0241054B2 (en) | ||
KR19980079663A (en) | Shared Intervention Method of Cache Lines in Recent Read State of SMP Bus | |
US5696931A (en) | Disc drive controller with apparatus and method for automatic transfer of cache data | |
JP3324572B2 (en) | Information processing apparatus and recording medium recording program to be executed by computer | |
JPH08235061A (en) | Multiprocessor data-processing system | |
US5446861A (en) | Variable data rate improvement of disc cache subsystem | |
GB2052118A (en) | Disc Cache Subsystem | |
US5493724A (en) | Locking a non-busy device for accessing a data record stored on another device | |
US20060195655A1 (en) | Command stack management in a disk drive |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT Free format text: SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017 Effective date: 20090507 Owner name: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATE Free format text: SECURITY AGREEMENT;ASSIGNORS:MAXTOR CORPORATION;SEAGATE TECHNOLOGY LLC;SEAGATE TECHNOLOGY INTERNATIONAL;REEL/FRAME:022757/0017 Effective date: 20090507 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: SEAGATE TECHNOLOGY LLC, CALIFORNIA Free format text: RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001 Effective date: 20110114 Owner name: SEAGATE TECHNOLOGY INTERNATIONAL, CALIFORNIA Free format text: RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001 Effective date: 20110114 Owner name: SEAGATE TECHNOLOGY HDD HOLDINGS, CALIFORNIA Free format text: RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001 Effective date: 20110114 Owner name: MAXTOR CORPORATION, CALIFORNIA Free format text: RELEASE;ASSIGNOR:JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT;REEL/FRAME:025662/0001 Effective date: 20110114 |
|
AS | Assignment |
Owner name: SEAGATE TECHNOLOGY US HOLDINGS, INC., CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001 Effective date: 20130312 Owner name: EVAULT INC. (F/K/A I365 INC.), CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001 Effective date: 20130312 Owner name: SEAGATE TECHNOLOGY LLC, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001 Effective date: 20130312 Owner name: SEAGATE TECHNOLOGY INTERNATIONAL, CAYMAN ISLANDS Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS;ASSIGNOR:WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE;REEL/FRAME:030833/0001 Effective date: 20130312 |