IP Library Granted Patent US 8,307,136
Granted Patent B2
US 8,307,136 · App. 12/534,492 · Granted Nov 6, 2012

Data movement system and method

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,307,136
App. No.
12/534,492
Granted
Nov 6, 2012
Kind
B2
Abstract

Provided is a method of streaming transfer of data between a plurality of devices of a computer system. The method includes providing data to be sent from a source device to a target device and includes receiving, at the source device, one or more transfer credits from the target device. A transfer credit may be indicative of an amount of data that the target device is authorizing to be sent to the target device. The method also includes determining whether or not an accumulated transfer credit value satisfies a threshold value. If the accumulated transfer credit value satisfies the threshold value, the source device sends data to the target device and modifies the accumulated transfer credit value based on a quantity of data sent. If the accumulated transfer credit value does not satisfy the threshold value the source device does not send data to the target device.

Claims (59)

1. A method of transferring data within a computer system comprising:

identifying data to be sent from a source device to a target device;

receiving, at the source device, one or more transfer credits from the target device, wherein the one or more transfer credits are indicative of an amount of data that the target device is authorizing to be sent from the source device to the target device;

incrementing an accumulated transfer credit value based on the one or more transfer credits received;

determining whether or not the accumulated transfer credit value incremented satisfies a send threshold value; and

if the accumulated transfer credit value satisfies the send threshold value:

sending data from the source device to the target device; and

modifying the accumulated transfer credit value based on a quantity of data sent; and

if the accumulated transfer credit value does not satisfy the send threshold value, not sending the data from the source device to the target device.

2. The method of claim 1 , wherein receiving comprises receiving, at the source device via memory-mapped data transfer, one or more transfer credits from the target device.

3. The method of claim 1 , wherein sending data from the source device to the target device comprises sending the data to an intermediate device, and the intermediate device forwarding the data sent to the target device.

4. The method of claim 1 , wherein both the source device and the target device comprise peripheral devices.

5. The method of claim 1 , wherein both the source device and the target device are not a processor or memory of a host controller.

6. The method of claim 1 , wherein the sending of data occurs directly between the source device and the target device.

7. The method of claim 6 , wherein the transfer of data occurs without passing data to or through a processor or memory of a host controller.

8. The method of claim 1 , wherein a transfer credit comprises a value indicative of an incremental quantity of data to be received by the target device.

9. The method of claim 1 , further comprising:

disabling the ability to transfer data from the source device to the target device if the accumulated transfer credit value does not satisfy the send threshold value.

10. The method of claim 9 , wherein the send threshold value is indicative of an accumulated transfer credit value of zero.

11. The method of claim 1 , further comprising:

enabling the transfer of data in response to receiving a transfer credit.

12. The method of claim 1 , further comprising providing to the target device a total transfer value indicative of a quantity of data transferred since the start of an associated data transfer.

13. The method of claim 1 , further comprising:

providing to the target device an indication that a specific quantity of data has been sent from the source device.

14. The method of claim 1 , wherein sending data from the source device to the target device further comprises:

waiting until a specific quantity of data is available for transfer; and

sending the specific quantity of data when it becomes available.

15. The method of claim 14 , wherein sending data from the source device to the target device data further comprises:

measuring the interval between successive data items being made available for transfer; and

sending available data if the interval exceeds a specific value.

16. The method of claim 1 , further comprising:

determining, at the target device, one or more suitable quantities of data to be received; and

sending, from the target device to the source device, one or more transfer credits corresponding to the one or more suitable quantities of data to be received.

17. The method of claim 16 , wherein one of the one or more transfer credits is based on available space at the target device for receiving the data.

18. The method of claim 16 , wherein determining one or more suitable quantities of data to be received comprises, one or more of:

determining the total quantity of data received;

determining the total value of transfer credits granted; and

determining the quantity of storage space for receiving data.

19. The method of claim 16 , wherein sending, from the target device to the source device, one or more transfer credits corresponding to the one or more suitable quantities of data to be received comprises:

communicating, by the target device, directly to the source device one or more values corresponding to the one or more transfer credits.

20. A computer peripheral device, comprising:

a buffer configured to store data to be sent from the peripheral device to a target device;

a data output configured to enable communication with the target device via a bus of a computer system; and

a transfer controller configured to regulate the transfer of data from the buffer to the bus, wherein the controller is configured to:

receive one or more transfer credits from the target device, wherein the one or more transfer credits are indicative of an amount of data that the target device is authorizing to be sent from the source device to the target device;

incrementing an accumulated transfer credit value based on the one or more transfer credits received;

determine whether or not the accumulated transfer credit value incremented satisfies a send threshold value; and

if the accumulated transfer credit value satisfies the send threshold value:

send data from the peripheral device to the target device; and

modify the accumulated transfer credit value based on a quantity of data sent; and

if the accumulated transfer credit value does not satisfy the send threshold value, not send the data from the peripheral device to the target device.

21. A computer system comprising

a host computer device;

a first peripheral device coupled to a bus of the computer system; and

a second peripheral device coupled to a bus of the computer system;

wherein the first peripheral device comprises a first memory location and is configured to provide a transfer credit to the second peripheral device based on free space available or expected to be available in the first memory location;

wherein the second peripheral device is configured to send data to the first memory location of the first peripheral device and is configured to send at least a portion of the data to the first peripheral device via an interconnect based on the provided transfer credit;

wherein the second peripheral device comprises a memory location configured to receive one or more values corresponding to transfer credits; and

wherein, if an accumulated transfer credit value satisfies a threshold, the second peripheral device is configured to enable the transfer of data to the first peripheral device.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 057280/0028) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 065231/0466 →
RELEASE OF SECURITY INTEREST IN PATENTS (REEL/FRAME 052935/0001) Recorded Oct 13, 2023
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
Reel/Frame 065653/0463 →
SECURITY INTEREST Recorded Jun 18, 2021
From: NATIONAL INSTRUMENTS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 057280/0028 →
SECURITY INTEREST Recorded Jun 14, 2020
From: NATIONAL INSTRUMENTS CORPORATION; PHASE MATRIX, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 052935/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2009
From: FEIEREISEL, NEIL S.; SESCILA, GLEN O., III; CONWAY, CRAIG M.; ODOM, BRIAN KEITH; BROCKHAUSEN, M. DEAN, JR.
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 023157/0504 →