Serial buffer to support request packets with out of order response packets
First Claim
1. A serial buffer comprising:
- a buffer memory having a plurality of memory blocks, wherein the number of memory blocks is represented by an integer, N, and wherein each of the N memory blocks has corresponding unique memory block address;
a free buffer pointer list that includes N free buffer pointer entries, each storing a free buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a first valid indicator that indicates whether the corresponding one of the N memory blocks is available to store a request packet;
a used buffer pointer list that includes N used buffer pointer entries, each storing a used buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a second valid indicator that indicates whether the corresponding one of the N memory blocks stores a request packet to be transmitted out of the serial buffer; and
a request buffer pointer list that includes N request buffer pointer entries, each storing a request buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a third valid indicator that indicates whether a request packet has been transmitted out of the serial buffer from the corresponding one of the N memory blocks, and a corresponding response is expected.
3 Assignments
0 Petitions
Accused Products
Abstract
Within a serial buffer, request packets are written to available memory blocks of a memory buffer, which are identified by a free buffer pointer list. When a request packet is written to a memory block, the memory block is removed from the free buffer pointer list, and added to a used buffer pointer list. Memory blocks in the used buffer pointer list are read, thereby transmitting the associated request packets from the serial buffer. When a request packet is read from a memory block, the memory block is removed from the used buffer pointer list and added to a request buffer pointer list. If a corresponding response packet is received within a timeout period, the memory block is transferred from the request buffer pointer list to the free buffer pointer list. Otherwise, the memory block is transferred from the request buffer pointer list to the used buffer pointer list.
97 Citations
20 Claims
-
1. A serial buffer comprising:
-
a buffer memory having a plurality of memory blocks, wherein the number of memory blocks is represented by an integer, N, and wherein each of the N memory blocks has corresponding unique memory block address; a free buffer pointer list that includes N free buffer pointer entries, each storing a free buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a first valid indicator that indicates whether the corresponding one of the N memory blocks is available to store a request packet; a used buffer pointer list that includes N used buffer pointer entries, each storing a used buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a second valid indicator that indicates whether the corresponding one of the N memory blocks stores a request packet to be transmitted out of the serial buffer; and a request buffer pointer list that includes N request buffer pointer entries, each storing a request buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and each storing a third valid indicator that indicates whether a request packet has been transmitted out of the serial buffer from the corresponding one of the N memory blocks, and a corresponding response is expected. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. A method of operating a serial buffer comprising:
-
defining a plurality of memory blocks in a buffer memory, wherein the number of memory blocks is represented by an integer, N, and wherein each of the N memory blocks has corresponding unique memory block address; maintaining a first list of each of the memory blocks available to store a request packet, the first list having N free buffer pointer entries, each including a free buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and a first valid indicator that indicates whether the corresponding one of the memory blocks is available to store a request packet; maintaining a second list of each of the memory blocks that stores a request packet to be transferred out of the serial buffer, the second list having N used buffer pointer entries, each including a used buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and a second valid indicator that indicates whether the corresponding one of the N memory blocks stores a request packet to be transferred out of the serial buffer; and maintaining a third list of each of the memory blocks that stores a request packet that has been transferred out of the serial buffer, but has not yet received an expected corresponding response, the third list having N request buffer pointer entries, each including a request buffer address that corresponds with the memory block address of a corresponding one of the N memory blocks, and a third valid indicator that indicates whether a request packet has been transferred out of the serial buffer from the corresponding one of the memory blocks, and a corresponding response is expected. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification