US20060112252A1 - Device-managed host buffer - Google Patents

Device-managed host buffer Download PDF

Info

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
Application number
US11/265,617
Inventor
Robert Dixon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Priority to US11/265,617 priority Critical patent/US20060112252A1/en
Publication of US20060112252A1 publication Critical patent/US20060112252A1/en
Assigned to WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE, JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT AND FIRST PRIORITY REPRESENTATIVE reassignment WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE SECURITY AGREEMENT Assignors: MAXTOR CORPORATION, SEAGATE TECHNOLOGY INTERNATIONAL, SEAGATE TECHNOLOGY LLC
Assigned to SEAGATE TECHNOLOGY LLC, SEAGATE TECHNOLOGY HDD HOLDINGS, SEAGATE TECHNOLOGY INTERNATIONAL, MAXTOR CORPORATION reassignment SEAGATE TECHNOLOGY LLC RELEASE Assignors: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Assigned to EVAULT INC. (F/K/A I365 INC.), SEAGATE TECHNOLOGY US HOLDINGS, INC., SEAGATE TECHNOLOGY LLC, SEAGATE TECHNOLOGY INTERNATIONAL reassignment EVAULT INC. (F/K/A I365 INC.) TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Assignors: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT AND SECOND PRIORITY REPRESENTATIVE
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In 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

A method and apparatus is provided to virtually increase the size of the memory cache of a peripheral device without additional cost. A portion of the memory space of a host computer is used as additional cache memory for the peripheral device. The peripheral device and the host computer may be interfaced with an interface that has a first-party direct memory access (FPDMA) mechanism, for example, IEEE 1394 or Serial ATA. FPDMA allows the peripheral device to access the memory space of the host computer under the control of the peripheral device. The host computer provides the peripheral device with the location of the additional cache memory. The peripheral device can transfer data to and from the additional cache memory via FPDMA. The peripheral device effectively manages the additional cache memory as part of the peripheral device's own cache.

Description

    FIELD OF THE INVENTION
  • 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.
  • BACKGROUND OF THE INVENTION
  • 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.
  • SUMMARY OF THE INVENTION
  • 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.
  • BRIEF DESCRIPTION OF THE 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.
  • DETAILED DESCRIPTION
  • 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 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. During a seek operation; 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. During a seek operation 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. To retrieve data that has been previously stored in the disc drive 100, 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. 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 (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 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.
  • After start block 202, the process proceeds to block 204. At block 204, the peripheral device 100 queries the host computer 140 whether memory is available in the memory space of the host 140. After block 204, the process proceeds to decision block 206. At 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.
  • At block 208, 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. At block 210, the host computer 140 provides the peripheral device with the location of the additional cache memory. According to one example, 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. At 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. According to one example, 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.
  • 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, 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.
  • 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 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.
  • 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 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.
  • After start block 302, the process proceeds to decision block 304. At 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. 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 of process 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 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.
  • 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. The interface 144 indicates to the host 140 an address of the host that will be written to. Next, 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. Then, 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. After block 306, the process proceeds to end block 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 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. According to a first embodiment, process 400 further includes block 410. According to a second embodiment, process 400 further includes block 416. Although 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.
  • The process begins at block 402 in which routine 400 is called. Control then passes to query operational block 403. In query 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. However, control transfers from decision block 403 to decision block 404 when data is requested from the host 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 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.
  • 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 from decision block 408 to block 410 when the requested data is in the additional cache memory. According to the second embodiment, the process proceeds from decision 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. 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.
  • 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 the disc 108 and sent to the host 140. The process proceeds from block 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 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. 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.
  • 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)

1-30. (canceled)
31. A method for virtually increasing a size of a cache of a peripheral device that is connectable to a second device, comprising:
querying the second device whether memory is available in a memory space of the second device; and
allocating additional cache memory from the memory space of the second device for use by the peripheral device if memory is available in the memory space of the second device.
32. The method of claim 31, further comprising:
managing the additional cache memory via the peripheral device.
33. The method of claim 32, further comprising:
providing the peripheral device with a location of the additional cache memory assigned.
34. The method of claim 32, wherein managing the additional cache memory comprises:
evaluating whether data should be transferred from the cache of the peripheral device to the additional cache memory; and
transferring data from the cache of the peripheral device to the additional cache memory if the data should be transferred.
35. The method of claim 32, wherein managing the additional cache memory further comprises:
if the second device requests data, evaluating whether the requested data is in the cache of the peripheral device;
transferring the requested data to the second device if the requested data is in the cache of the peripheral device; and
evaluating whether the requested data is in the additional cache memory if the requested data is not in the cache of the peripheral device.
36. The method of claim 34, wherein managing the additional cache memory further comprises:
transferring the requested data from the additional cache memory to the cache of the peripheral device via first-party direct memory access if the requested data is in the additional cache memory.
37. The method of claim 32, wherein managing the additional cache memory further comprises:
providing the second device with a location of data requested by the second device in the memory space of the second device if the requested data is in the additional cache memory.
38. The method of claim 34, wherein evaluating whether data should be transferred comprises:
evaluating whether the cache of the peripheral device is full if new data is to be stored in the cache of the peripheral device.
39. The method of claim 34, wherein transferring data from the cache of the peripheral device comprises:
indicating to the second device an address of the second device that will be written to;
waiting to receive a signal from the second device indicating that the second device is ready to receive data at the indicated address; and
sending the data to the indicated address upon receipt of the signal from the second device.
40. The method of claim 34, wherein transferring data from the cache is performed with a serial advanced technology attachment (ATA) protocol, wherein the serial ATA protocol includes a first-party direct memory access mechanism.
41. The method of claim 35, wherein evaluating whether the requested data is in the additional cache memory comprises:
searching a cache table that is stored in the memory of the peripheral device.
42. The method of claim 35, wherein evaluating whether the requested data is in the additional cache memory comprises:
retrieving a cache table from the second device; and
searching the cache table for the requested data.
43. The method of claim 36, wherein transferring data from the additional cache memory is performed with a serial advanced technology attachment (ATA) protocol, wherein the serial ATA protocol includes a first-party direct memory access mechanism.
44. The method of claim 31, wherein the peripheral device is a hard disk drive, wherein querying the second device comprises querying a host computer whether memory is available in a memory space of the host computer; and wherein allocating additional cache memory comprises allocating additional cache memory from the memory space of the host computer for use by the hard disk drive if memory is available in the memory space of the host computer.
45. A method for virtually increasing a size of a cache of a peripheral device that is connectable to a host computer, comprising:
querying the host computer whether memory is available in a memory space of the host computer; and
allocating additional cache memory from the memory space of the host computer for use by the peripheral device if memory is available in the memory space of the host computer.
46. The method of claim 45, wherein the data storage device comprises a hard disc drive.
47. The method of claim 45, further comprising:
indicating to the host computer an address in the memory space of the host computer that will be read from if requested data is in the additional cache memory;
waiting to receive a signal from the host computer indicating that the data at the indicated address is ready to be read; and
reading the data from the indicated address upon receipt of the host signal.
48. A peripheral device connectable to a second device having a memory space, the peripheral device comprising:
a cache memory; and
a module that allocates additional cache memory from the memory space of the second device for use by the peripheral device.
49. The device of claim 48 wherein the module further manages operation of the additional cache memory.
50. The device of claim 48 wherein the module further stores a location of the additional cache memory.
51. The device of claim 48, wherein the module further evaluates whether data should be transferred from the cache of the peripheral device to the additional cache memory, and manages transfer of data from the cache of the peripheral device to the additional cache memory if the data should be transferred.
52. The device of claim 51, wherein the module further evaluates whether data requested by the host is in the cache of the peripheral device, transfers the requested data to the second device if the requested data is in the cache of the peripheral device, and evaluates whether the requested data is in the additional cache memory if the requested data is not in the cache of the peripheral device.
53. The device of claim 52, wherein the module transfers the requested data from the additional cache memory to the cache of the peripheral device via first-party direct memory access if the requested data is in the additional cache memory.
54. The device of claim 51, wherein the module evaluates whether the cache of the peripheral device is full if new data is to be stored in the cache of the peripheral device.
55. The device of claim 51, wherein the module indicates to the second device an address of the second device that will be written to, waits to receive a signal from the second device indicating that the second device is ready to receive data at the indicated address, and sends the data to the indicated address upon receipt of the signal.
56. The device of claim 51, wherein the data transferred from the cache is transferred via a serial advanced technology attachment (ATA) protocol, wherein the serial ATA protocol includes a first-party direct memory access mechanism.
57. The device of claim 48, wherein the module further provides the second device with a location of data requested by the second device if the requested data is in the additional cache memory.
58. The device of claim 48, wherein the module is adapted to search a cache table that is stored in the memory of the peripheral device.
59. The device of claim 48, wherein the peripheral device is a data storage device.
60. The device of claim 48, wherein the peripheral device is a hard disc drive.
61. The device of claim 48, wherein the second device is a host computer.
US11/265,617 2003-05-22 2005-11-02 Device-managed host buffer Abandoned US20060112252A1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US33450A (en) * 1861-10-08 Improvement in processes of clarifying saccharine juices

Patent Citations (12)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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