IP Library Granted Patent US 7,849,210
Granted Patent B2
US 7,849,210 · App. 12/341,438 · Granted Dec 7, 2010

Optimizing the responsiveness and throughput of a system performing packetized data transfers

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

A mechanism for managing packetized data transfers in a system including a transmitting and a receiving device. The transmitting device may transmit data to the receiving device in a plurality of packets, each packet a predetermined number of data bytes wide. The transmitting device may include a transfer count unit to maintain a data transfer count based on a number of transmitted data bytes. The receiving device may program the transmitting device with a transfer count mark, which may be a number that corresponds to a specific count of the data transfer count. The transmitting device may calculate a difference between the data transfer count and the transfer count mark. If the difference between the transfer count and the transfer count mark is less than the predetermined number, the transmitting device may transmit a short data packet having less than the predetermined number of data bytes to the receiving device.

Claims (82)

1. A system comprising:

a receiving device; and

a transmitting device configured to transmit data in a plurality of packets to the receiving device, wherein each of the data packets is a predetermined number of data bytes wide, wherein the transmitting device includes a transfer count unit configured to maintain a data transfer count based on a number of transmitted data bytes;

wherein the receiving device is configured to:

prior to completion of a data transfer, program the transmitting device with a transfer count mark, wherein the transfer count mark is a number that corresponds to a specific count of the data transfer count, and wherein the transfer count mark specifies a portion of the data to be transferred;

wherein during the data transfer, the transmitting device is configured to calculate a difference between the data transfer count and the transfer count mark;

wherein, in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the transmitting device is configured to transmit a short data packet having less than the predetermined number of data bytes to the receiving device, thereby completing transfer of the portion of the first amount of data; and

wherein the transmitting device further comprises an additive transfer count unit, wherein the receiving device is configured to program the additive transfer count unit of the transmitting device with a value indicating additional data to be transferred, wherein in response to said programming the additive transfer count unit is configured to add the value to the data transfer count.

2. The system of claim 1 , wherein, in response to the difference between the data transfer count and the transfer count mark being greater than or equal to the predetermined number, the transmitting device is configured to transmit a packet having the predetermined number of data bytes to the receiving device.

3. The system of claim 1 , wherein the transfer count unit is configured to decrement the data transfer count for every data byte that is transmitted from the transmitting device to the receiving device, wherein the data transfer count is indicative of a number of data bytes remaining to be transmitted from the transmitting device to the receiving device.

4. The system of claim 3 , wherein the transmitting device is configured to calculate the difference between the data transfer count and the transfer count mark after the data transfer count is decremented following each data packet transmission.

5. The system of claim 1 , wherein the transfer count unit is configured to increment the data transfer count for every data byte that is transmitted from the transmitting device to the receiving device, wherein the data transfer count is indicative of a number of data bytes that have been transmitted from the transmitting device to the receiving device.

6. The system of claim 1 , wherein the difference between the data transfer count and the transfer count mark being less than the predetermined number includes the difference being zero, wherein in response to the difference being zero the transmitting device is configured to send a short data packet having zero data bytes to the receiving device.

7. The system of claim 1 , wherein the transmitting device includes a bus transmitter aggregation buffer configured to store data acquired by the transmitting device, wherein:

in response to the difference between the data transfer count and the transfer count mark being greater than or equal to the predetermined number, the bus transmitter aggregation buffer is configured to accumulate the predetermined number of data bytes for transmission of a data packet to the receiving device; and

in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the bus transmitter aggregation buffer is configured to accumulate less than the predetermined number of data bytes for transmission of a short packet to the receiving device.

8. The system of claim 7 , wherein, in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the bus transmitter aggregation buffer is configured to accumulate a number of data bytes equal to the difference between the data transfer count and the transfer count mark for transmission of a short packet to the receiving device.

9. The system of claim 1 , wherein, in response to the receiving device receiving a short packet having less than the predetermined number of data bytes from the transmitting device, the receiving device is configured to notify a management entity that the requested number of data bytes have been acquired.

10. The system of claim 1 , wherein the predetermined number of bytes is programmable.

11. The system of claim 1 ,

wherein the receiving device is further configured to:

prior to completion of the data transfer perform, program the transmitting device with at least one successive transfer count mark, wherein the at least one successive transfer count mark is another number that corresponds to a respective specific count of the data transfer count, and wherein the at least one successive transfer count mark specifies a respective portion of the first amount of data;

wherein during the data transfer, the transmitting device is further configured to calculate a difference between the data transfer count and the at least one successive transfer count mark; and

wherein, in response to the difference between the data transfer count and the at least one successive transfer count mark being less than the predetermined number, the transmitting device is configured to transmit a short data packet having less than the predetermined number of data bytes to the receiving device, thereby completing transfer of the respective portion of the first amount of data.

12. The system of claim 1 , wherein the transmitting device is configured to send data packets to the receiving device via USB.

13. The system of claim 1 , wherein the transmitting device is configured to send data packets to the receiving device via Ethernet.

14. The system of claim 1 , wherein the system is a data acquisition system, the transmitting device is comprised in a data acquisition device, and the receiving device is comprised in a host computer system.

15. A transmitting device configured to transmit data in a plurality of packets to a receiving device, the transmitting device comprising:

a transfer count unit configured to maintain a data transfer count based on a number of transmitted data bytes, wherein each of the plurality of data packets is a predetermined number of data bytes wide; and

a transfer mark unit configured to store a transfer count mark, wherein the transfer count mark is a number that corresponds to a specific count of the data transfer count;

wherein the transmitting device is configured to:

transfer data to the receiving device;

wherein, prior to completion of the data transfer, the transmitting device is further configured to:

be programmed by the receiving device, thereby setting the transfer count mark, wherein the transfer count mark specifies a portion of the data to be transferred;

wherein during the data transfer, the transmitting device is configured to:

calculate a difference between the data transfer count and the transfer count mark;

wherein, in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the transmitting device is configured to send a short data packet having less than the predetermined number of data bytes to the receiving device, thereby completing transfer of the portion of the data to be transferred; and

wherein the transmitting device further comprises an additive transfer count unit, wherein the additive transfer count unit is configured to be programmed by the receiving device with a value indicating additional data to be transferred, wherein in response to said programming the additive transfer count unit is configured to add the value to the data transfer count.

16. The transmitting device of claim 15 , wherein the transmitting device is comprised in a data acquisition device, and wherein the receiving device is comprised in a host computer system.

17. A method for managing packetized data transmissions between a receiving device and a transmitting device, the method comprising:

the transmitting device transmitting data in a plurality of packets to the receiving device, wherein each of the data packets is a predetermined number of data bytes wide;

the transmitting device maintaining a data transfer count based on a number of transmitted data bytes;

prior to completion of the data transmission, the receiving device programming the transmitting device with a transfer count mark, wherein the transfer count mark is a number that corresponds to a specific count of the data transfer count, and wherein the transfer count mark specifies a portion of the first amount of data;

during the data transfer, the transmitting device calculating a difference between the data transfer count and the transfer count mark; and

in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the transmitting device transmitting a short data packet having less than the predetermined number of data bytes to the receiving device, thereby completing transfer of the portion of the data;

wherein the transmitting device comprises an additive transfer count unit, the method further comprising:

the receiving device programming the additive transfer count unit of the transmitting device with a value indicating additional data to be transferred; and

in response to said programming, the additive transfer count unit adding the value to the data transfer count.

18. The method of claim 17 , further comprising, in response to the difference between the data transfer count and the transfer count mark being greater than or equal to the predetermined number, the transmitting device transmitting a packet having the predetermined number of data bytes to the receiving device.

19. The method of claim 17 , further comprising decrementing the data transfer count for every data byte that is transmitted from the transmitting device to the receiving device, wherein the data transfer count is indicative of a number of data bytes remaining to be transmitted from the transmitting device to the receiving device.

20. The method of claim 19 , wherein said calculating the difference between the data transfer count and the transfer count mark is performed after the data transfer count is decremented following each data packet transmission.

21. The method of claim 17 , wherein the difference between the data transfer count and the transfer count mark being less than the predetermined number includes the difference being zero, wherein, in response to the difference being zero, said transmitting a short packet comprises transmitting a short data packet having zero data bytes to the receiving device.

22. The method of claim 17 , further comprising:

storing data acquired by the transmitting device in a bus transmitter aggregation buffer;

in response to the difference between the data transfer count and the transfer count mark being greater than or equal to the predetermined number, the bus transmitter aggregation buffer accumulating the predetermined number of data bytes for transmission of a data packet to the receiving device; and

in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the bus transmitter aggregation buffer accumulating less than the predetermined number of data bytes for transmission of a short packet to the receiving device.

23. The method of claim 17 , further comprising, in response to the receiving device receiving a short packet having less than the predetermined number of data bytes from the transmitting device, the receiving device notifying a management entity that the requested number of data bytes have been acquired.

24. A method for transferring data to a receiving device, the method comprising:

the transmitting device transmitting data in a plurality of packets to the receiving device, wherein each of the data packets is a predetermined number of data bytes wide, wherein the transmitting device includes a transfer count unit configured to maintain a data transfer count based on a number of transmitted data bytes;

during the data transfer, and in response to the receiving device programming the transmitting device with a transfer count mark prior to completion of the data transfer, wherein the transfer count mark is a number that corresponds to a specific count of the data transfer count, and wherein the transfer count mark specifies a portion of the data to be transferred, the transmitting device calculating a difference between the data transfer count and the transfer count mark; and

in response to the difference between the data transfer count and the transfer count mark being less than the predetermined number, the transmitting device transmitting a notification to the receiving device indicating that the portion of the data has been acquired; and

wherein the transmitting device comprises an additive transfer count unit, the method further comprising:

the receiving device programming the additive transfer count unit of the transmitting device with a value indicating additional data to be transferred; and

in response to said programming, the additive transfer count unit adding the value to the data transfer count.

25. The method of claim 24 , wherein said transmitting a notification to the receiving device indicating that the portion of the data has been acquired comprises:

transmitting a short data packet having less than the predetermined number of data bytes to the receiving device, thereby completing transfer of the portion of the first amount of data.

26. The system of claim 1 , wherein the data transfer comprises a finite data transfer, and wherein the receiving device is further configured to:

request a first amount of data to be transferred to the receiving device from the transmitting device, wherein the data transfer is performed in response to the request.

27. The system of claim 1 , wherein the data transfer comprises a continuous data transfer.

28. The system of claim 1 , the receiving device is further configured to:

repeat said programming the transmitting device one or more times prior to completion of the data transfer.

29. The system of claim 1 , wherein the data transfer comprises a finite data transfer, wherein the receiving device is further configured to receive user input specifying a finite amount of data to transfer in the finite data transfer, and wherein to program the additive transfer count unit of the transmitting device with the value, the receiving device is configured to:

program the additive transfer count unit with the value one or more times to specify transfer of a corresponding one or more portions of the finite amount of data.

30. The transmitting device of claim 15 , wherein the data transfer comprises a finite data transfer, wherein the receiving device is further configured to receive user input specifying a finite amount of data to transfer in the finite data transfer, and wherein to be programmed by the receiving device with the value, the additive transfer count unit of the transmitting device is programmed with the value one or more times to specify transfer of a corresponding one or more portions of the finite amount of data.

31. The method of claim 17 , wherein the data transfer comprises a finite data transfer, wherein the method further comprises:

the receiving device receiving user input specifying a finite amount of data to transfer in the finite data transfer;

wherein said programming the additive transfer count unit of the transmitting device with the value comprises:

programming the additive transfer count unit with the value one or more times to specify transfer of a corresponding one or more portions of the finite amount of data.

32. The method of claim 24 , wherein the data transfer comprises a finite data transfer, the method further comprising:

the receiving device receiving user input specifying a finite amount of data to transfer in the finite data transfer;

wherein said programming the additive transfer count unit of the transmitting device with the value comprises:

programming the additive transfer count unit with the value one or more times to specify transfer of a corresponding one or more portions of the finite amount of data.

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 Dec 22, 2008
From: MOCH, ANDREW B.; ROSSETTO, AARON T.; SCHWAN, BRENT C.; SESCILA, GLEN O., III
To: NATIONAL INSTRUMENTS CORPORATION
Reel/Frame 022016/0924 →