Patentable/Patents/US-6108736
US-6108736

System and method of flow control for a high speed bus

PublishedAugust 22, 2000
Assigneenot available in USPTO data we have
Inventorsnot available in USPTO data we have
Technical Abstract

Patent Claims
41 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method for managing data flow across a bus between a first device and a second device, the method comprising: monitoring outbound requests issued by the first device to the second device and inbound completions received by the first device from the second device; incrementing a first request buffer count in connection with a first request buffer for each outbound request issued by the first device and decrementing the first request buffer count for each inbound completion received by the first device; determining if the first request buffer count is to exceed a first request buffer maximum; and if an outbound request is to cause the first request buffer count to exceed the first request buffer maximum, preventing issuance of outbound requests by the first device until the first request buffer count will not exceed the first request buffer maximum.

2

2. The method as set forth in claim 1, wherein monitoring and incrementing are performed by the first device.

3

3. The method as set forth in claim 1, wherein outbound requests issued by the first device to the second device are processed through the first request buffer, the first request buffer count corresponds to a capacity of the first request buffer.

4

4. The method as set forth in claim 3, wherein the first request buffer is located in the second device.

5

5. The method as set forth in claim 3 wherein the first request buffer is located in the first device.

6

6. The method as set forth in claim 1, wherein outbound requests issued by the first device to the second device are processed through the first request buffer located in the first device and a second request buffer located in the second device, the first request buffer count corresponds to a smaller capacity between a capacity of the first request buffer and a capacity of the second request buffer.

7

7. The method as set forth in claim 1, further comprising: monitoring inbound requests issued by the second device to the first device and outbound completions received by the second device from the first device; incrementing a second request buffer count in connection with a second request buffer for each inbound request issued by the second device and decrementing the second request buffer count for each outbound completion received by the second device; and determining if the second request buffer count is to exceed a second request buffer maximum.

8

8. The method as set forth in claim 7, further comprising: if an inbound request is to cause the second request buffer count to exceed the second request buffer maximum, preventing issuance of inbound requests by the second device until the second request buffer count will not exceed the second request buffer maximum.

9

9. The method as set forth in claim 7, wherein monitoring inbound requests and incrementing the second request buffer count are performed by the second device.

10

10. The method as set forth in claim 1, further comprising: at initialization, determining a first buffer capacity value of the second device from the second device; and storing in the first device, as the first request buffer maximum, a value corresponding to the first buffer capacity value of the second device.

11

11. The method as set forth in claim 1, further comprising: at initialization, determining a buffer size capacity in the first device and a buffer size capacity in the second device; and selecting a value for the first request buffer maximum, the value corresponding to a smaller of the buffer size capacity between the buffer size capacity in the first device and the buffer size capacity in the second device.

12

12. The method as set forth in claim 1, wherein for each outbound request issued by the first device, the first request buffer count is incremented by 1 and for each inbound completion received by the first device, the first request buffer count is decremented by 1.

13

13. The method as set forth in claim 1, wherein for each outbound request that is a write request, the first request buffer count is incremented by a value corresponding to the amount of data to be used for the write request, and for each inbound completion of a write request, the first request buffer count is decremented by a value corresponding to the amount of data used for the inbound completion for the write request.

14

14. The method as set forth in claim 1, further comprising: monitoring a size of data for outbound write requests issued by the first device to the second device and a size of data for inbound write completions received by the first device from the second device; incrementing a data buffer count by the data size for each outbound write request issued by the first device and decrementing the data buffer count by the data size of the corresponding write request for each inbound write completion received by the first device; and determining if the data buffer count is to exceed a data buffer maximum.

15

15. The method as set forth in claim 14, further comprising: if the data buffer count will exceed the data buffer maximum, preventing issuance of subsequent outbound write requests until the data buffer count will not exceed the data buffer maximum and the first request buffer count will not exceed the first request buffer maximum.

16

16. The method as set forth in claim 14, wherein outbound requests issued by the first device to the second device are processed through a first data buffer having a first data buffer count, the first data buffer count corresponds to a capacity of the first data buffer.

17

17. The method as set forth in claim 16, wherein the first data buffer is located in the second device.

18

18. The method as set forth in claim 14, wherein the first data buffer is located in the first device.

19

19. The method as set forth in claim 14, wherein outbound requests issued by the first device to the second device are processed through a first data buffer having a first data buffer count located in the first device and a second data buffer having a second data buffer count located in the second device, the first data buffer count corresponds to a smaller capacity between a capacity of the first data buffer and a capacity of the second data buffer.

20

20. The method as set forth in claim 14, further comprising: at initialization, determining a first buffer capacity value for the second device from the second device; and storing in the first device, as a first data buffer maximum, a value corresponding to the first buffer capacity value.

21

21. The method as set forth in claim 14, further comprising: initialization, determining a buffer size capacity in the first device and a buffer size capacity in the second device; and selecting a value for a first data buffer maximum the value corresponding to a smaller of the buffer size capacity between the buffer size capacity in the first device and the buffer size capacity in the second device.

22

22. The method as set forth in claim 14, further comprising: processing the write requests and performing associated operations by a memory controller associated with the first device, the memory controller indicating when outbound completions are to be generated.

23

23. The method as set forth in claim 1, further comprising: reading a first buffer size value from a configuration register located within the first device by a processor coupled with the first device and the second device; determining a size of an inbound buffer by the processor for the first device that receives outbound requests issued by the second device to the first device; and storing on the first device by the processor, as the first request buffer maximum, a value corresponding to the first buffer size value.

24

24. The method as set forth in claim 1, further comprising: if the first request buffer count is not to exceed the first request buffer maximum, placing outbound requests in the first request buffer; incrementing the first request buffer count; and transmitting output requests located in the first request buffer to the second device.

25

25. A bus system comprising: a bus; a first device coupled to the bus; a second device coupled to the bus including a first inbound request buffer of a determined size; and a first tracker located in the first device, the first tracker configured to: monitor outbound requests issued by the first device and received by the first inbound request buffer and inbound completions received by the first device from the second device, increment a first request buffer count in connection with a first request buffer for each outbound request to be issued by the first device and decrement the first request buffer count for each inbound completion received by the first device, determine if the first request buffer count is to exceed a first request buffer maximum, and if an outbound request is to cause the first request buffer count to exceed the first request buffer maximum, prevent the issuance of outbound requests by the first device until the first request buffer count will not exceed the first request buffer maximum.

26

26. The bus system as set forth in claim 25, wherein the first inbound request buffer is associated with the second device.

27

27. The bus system as set forth in claim 25, wherein the first inbound request buffer is associated with the first device.

28

28. The bus system as set forth in claim 25, wherein outbound requests issued by the first device to the second device are processed through the first request buffer located in the first device and a second request buffer located in the second device, and wherein the first request buffer count corresponds to a smaller capacity of the first request buffer and the second request buffer.

29

29. The bus system as set forth in claim 25, wherein the first request buffer maximum corresponds to a capacity of the first inbound request buffer.

30

30. The bus system as set forth in claim 25, further comprising; a second inbound request buffer; and a second tracker located in the second device, the second tracker configured to: monitor inbound requests issued by the second device and received by the second inbound request buffer and inbound completions received by the second device from the first device, increment a second request buffer count for each inbound request issued by the second device and decrement the second request buffer count for each inbound completion received by the second device, and determine if the second request buffer count exceeds or will exceed a second request buffer maximum.

31

31. The bus system as set forth in claim 30, wherein the second tracker is further configured to: prevent the issuance of outbound requests to be issued by the second device until the second request buffer count is below the second buffer maximum.

32

32. The bus system as set forth in claim 30, further comprising: an inbound data buffer located in the second device; and a second tracker located in the first device, the second tracker configured to: monitor size of data of outbound write requests issued by the first device and received by the inbound data buffer of the second device and size of data of inbound write completions received by the first device from the second device, increment a data buffer count by the data size for each outbound write request issued by the first device, decrement the data buffer count by the data size of the corresponding write request for each inbound write completion received by the first device, and determine if the data buffer count is to exceed a data buffer maximum.

33

33. The bus system as set forth in claim 32, the second tracker is further configured to: cause the transmission of subsequent outbound write requests to be postponed until the data buffer count is below the data buffer maximum and the request buffer count is below the request buffer maximum if the data buffer count exceeds a data buffer maximum.

34

34. The bus system as set forth in claim 25, further comprising: a memory controller associated with the second device, the memory controller configured to: process the outbound requests and perform the associated operations, and indicate when inbound completions are to be generated for subsequent issuance by the second device to the first device.

35

35. The bus system as set forth in claim 25, further comprising: a processor coupled to the first device, the processor configured to: read a buffer size value from a configuration register located in the second device, determine a size of the inbound buffer in the second device that receives outbound requests issued by the first device to the second device, and store in the first device, as the buffer maximum, a value corresponding to the buffer size.

36

36. The bus system as set forth in claim 25, further comprising: a second inbound request buffer located in the first device, the second inbound request buffer configured to receive inbound completions received by the first device.

37

37. The bus system as set forth in claim 25, further comprising: a first outbound buffer located in the first device configured such that said outbound requests placed in the first outbound buffer for subsequent output on the bus to the second device if the first request buffer count does not exceed a first request buffer maximum.

38

38. The bus system as set forth in claim 25, further comprising: a second outbound buffer located in the second device configured such that said inbound completions placed in the second outbound buffer for subsequent transmission to the first device.

39

39. The bus system as set forth in claim 25, wherein the second device is a bus expander, the bus system further comprising a second bus coupled to the bus expander.

40

40. The bus system as set forth in claim 25, wherein the first device is a bus bridge, the bus system further comprising a second bus coupled to the bus bridge.

41

41. The bus system as set forth in claim 25, wherein the second device is a bus expander, the bus system further comprising a third bus coupled to the bus expander.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

Unknown

Publication Date

August 22, 2000

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “System and method of flow control for a high speed bus” (US-6108736). https://patentable.app/patents/US-6108736

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.