Adaptive retry mechanism
First Claim
1. A method comprising:
- establishing a plurality of retry latencies;
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from said plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time.
7 Assignments
0 Petitions
Accused Products
Abstract
An adaptive retry mechanism may record latencies of recent transactions (e.g. the first data transfer latency), and may select a retry latency from two or more retry latencies. The retry latency may be used for a transaction, and may specify a point in time during the transaction at which the transaction is retried if the first data transfer has not yet occurred. In one implementation, the set of retry latencies includes a minimum retry latency, a nominal retry latency, and a maximum retry latency. The nominal retry latency may be set slightly greater than the expected latency of transactions in the system. The minimum retry latency may be less than the nominal retry latency and the maximum retry latency may be greater than the nominal retry latency. If latencies greater than the nominal retry latency but less than the maximum retry latency are being experienced, the maximum retry latency may be selected. On the other hand, if latencies greater than the maximum retry latency are being experienced, the minimum retry latency may be selected.
58 Citations
68 Claims
-
1. A method comprising:
-
establishing a plurality of retry latencies;
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from said plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
replacing one of said latencies of said N previous transactions with a first latency of said first transaction; and
selecting a second retry latency of said plurality of retry latencies for a second transaction responsive to said latencies of N previous transactions subsequent to said replacing.
-
-
3. The method as recited in claim 2 wherein said one of said latencies of N previous transactions corresponds to a least recent transaction of said previous transactions.
-
4. The method as recited in claim 1 wherein said plurality of retry latencies includes a minimum retry latency, a maximum retry latency, and a nominal retry latency.
-
5. The method as recited in claim 4 further comprising initially selecting said nominal retry latency.
-
6. The method as recited in claim 4 further comprising changing from said nominal retry latency to said minimum retry latency responsive to at least a first number of said latencies of N previous transactions being latencies greater than said maximum retry latency.
-
7. The method as recited in claim 4 further comprising changing from said nominal retry latency to said maximum retry latency responsive to at least a first number of said latencies of N previous transactions being latencies greater than said nominal retry latency and less than said maximum retry latency.
-
8. The method as recited in claim 4 further comprising changing from said maximum retry latency to said minimum retry latency responsive to at least a first number of said latencies of N previous transactions being latencies greater than said maximum retry latency.
-
9. The method as recited in claim 4 further comprising changing from said minimum retry latency to said nominal retry latency responsive to at least a first number of said latencies of N previous transactions being latencies greater than said minimum retry latency and less than said nominal retry latency.
-
10. The method as recited in claim 1 further comprising retrying said first transaction at said point in time if said second event does not occur before said point in time.
-
11. The method as recited in claim 1 wherein said first retry latency is a number of clock cycles of a bus clock corresponding to said bus.
-
12. The method as recited in claim 1 wherein said selecting is performed by a target of said first transaction.
-
13. The method as recited in claim 12 wherein said determining is performed by said target, and wherein said transactions are transactions targeting said target.
-
14. The method as recited in claim 1 wherein said first event is a beginning of said corresponding transaction and wherein said second event is a first data transfer of said corresponding transaction.
-
15. The method as recited in claim 1 wherein said determining comprises measuring said latencies.
-
16. The method as recited in claim 1 wherein said determining comprises calculating said latencies from multiple internal states of a system including said bus.
-
17. The method as recited in claim 16 wherein said multiple internal states include a memory read latency, a number of transactions queued in a memory controller, and an amount of traffic on a system bus to which said memory controller is coupled.
-
18. The method as recited in claim 1 wherein said establishing comprises programming one or more configuration registers with said plurality of retry latencies.
-
19. The method as recited in claim 1 wherein said establishing comprises fixing said plurality of retry latencies in hardware.
-
20. A method comprising:
-
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time;
wherein said selecting comprises selecting a minimum retry latency of said plurality of retry latencies responsive to at least a first number of said latencies of N previous transactions being latencies greater than a maximum retry latency of said plurality of retry latencies.
-
-
21. A method comprising:
-
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time;
wherein said selecting comprises selecting a maximum retry latency of said plurality of retry latencies responsive to;
(i) a currently selected retry latency being other than a minimum retry latency of said plurality of retry latencies; and
(ii) at least a first number of said latencies of N previous transactions being latencies less than said maximum retry latency and greater than said currently selected retry latency.
-
-
22. A method comprising:
-
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time;
wherein said selecting said first retry latency is responsive to;
(i) a currently selected retry latency being a minimum retry latency of said plurality of retry latencies; and
(ii) at least a first number of said latencies of N previous transactions being latencies less than said first retry latency.- View Dependent Claims (23)
-
-
24. A method comprising:
-
determining latencies of transactions on a bus, each latency representing a time period from a first event of a corresponding transaction to a second event of said corresponding transaction; and
selecting a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time;
wherein said first event is a previous data transfer of said corresponding transaction and said second event is a subsequent data transfer of said corresponding transaction.
-
-
25. An apparatus comprising:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions from said buffer, wherein N is a positive integer, and wherein said plurality of retry latencies are established separate from said latencies in said buffer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42)
-
-
43. An apparatus comprising:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time, and wherein said first event is a previous data transfer of said corresponding transaction and said second event is a subsequent data transfer of said corresponding transaction.
-
-
44. An apparatus comprising:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time, and wherein said first retry latency is a minimum retry latency of said plurality of retry latencies responsive to at least a first number of said latencies stored in said buffer being latencies greater than a maximum retry latency of said plurality of retry latencies.
-
-
45. An apparatus comprising:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time, and wherein said first retry latency is a maximum retry latency of said plurality of retry latencies responsive to;
(i) a currently selected retry latency being other than a minimum retry latency of said plurality of retry latencies; and
(ii) at least a first number of said latencies stored in said buffer being latencies less than said maximum retry latency and greater than said currently selected retry latency.
-
-
46. An apparatus comprising:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions, wherein N is a positive integer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time, and wherein said circuit is configured to select said first retry latency responsive to;
(i) a currently selected retry latency being a minimum retry latency of said plurality of retry latencies; and
(ii) at least a first number of said latencies stored in said buffer being latencies less than said first retry latency.- View Dependent Claims (47)
-
-
48. A carrier medium comprising a database which is operated upon by a program executable on a computer system, the program operating on the database to perform a portion of a process to fabricate an integrated circuit including circuitry described by the database, the circuitry described in the database including:
-
a buffer configured to store latencies of transactions on a bus, each of said latencies representing a period of time from a first event of a corresponding transaction to a second event of said corresponding transaction; and
a circuit configured to select a first retry latency for a first transaction from a plurality of retry latencies responsive to latencies of N previous transactions from said buffer, wherein N is a positive integer, and wherein said plurality of retry latencies are established separate from said latencies in said buffer, said first retry latency indicative of a point in time, measured from said first event of said first transaction on said bus, that said first transaction is retried on said bus if said second event of said first transaction does not occur before said point in time. - View Dependent Claims (49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68)
-
Specification