C3PO: Improving IO Interface Bandwidth Utilization by Packing Commands and Responses
Original Publication Date: 2006-Jul-31
Included in the Prior Art Database: 2006-Jul-31
Disclosed are two methods of improving the efficiency of an IO interface that uses packets containing control and data sub-packets where the control sub-packets contain both command and response fields. The methods reduce the probability of sending a control sub-packet with an empty command or response field.
Ȉ ˇ ˄ ˙ ˝˛ ˚ ~
Ȉ ˇ ˄ ˙ ˝˛ ˚ ~ Ȉ ˇ ˄ ˙ ˝˛ ˚ ~ Ȉ ˇ ˄ ˙ ˝˛ ˚ ~
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Disclosed are two methods of improving the efficiency of an IO interface that uses packets containing control and data sub-packets where the control sub-packets contain both command and response fields. Optimal bandwidth utilization of the IO interface is achieved when all of the control sub-packets sent contain both a command and a response. This is easily accomplished when the IO Interface is busy and there are plenty of commands and responses waiting to be sent. However, when the IO interface is moderately busy, sub-packets can be sent with empty command or response fields. The more this happens, the less efficient the IO interface becomes. This behavior can cause an abrupt drop-off in the efficiency to occur as the Interface moves from very busy to moderately busy. This type of transition could happen frequently if the IO interface untilization is bursty in nature. It would be desirable to maintain the efficiency of the IO interface in both the very busy and moderately busy cases.
The two techniques disclosed are: 1) Having advance information that commands or responses will be sent within some period of time and adjusting the wait time for previous responses or commands so that they get paired with the arriving ones; and, 2) Keeping track of the number of control sub-packets that are in the buffer, that holds them before they are assembled into full packets, and holding unpaired commands or responses as long as there is a minimum number of control sub-packets waiting in that buffer.
For the technique of using advance information that commands or responses will be sent, two approaches are possible. The simplest of these is to feed the information forward from the command and response pipelines, or sequencers, to indicate that a command or response will be arriving in some number of cycles. This can be done if building a command or response takes multiple cycles. A previous response or command can then be held for that number of cycles to be paired with the arriving one.
The following diagram shows the functional blocks involved in packet construction using the advance information technique:
The second advance information approach is to infer that commands or responses w...