In order to realize the 480 Mbps bus operation for USB 2.0, a change in electrical specifications was necessary, but without sacrificing compatibility with USB 1.x. Furthermore, a change in protocol was required to allow 12/1.5 Mbps transfers to coexist with 480 Mbps transfers. The new specification also resolves issues that were evident in USB 1.x.
Under USB 1.x, a NAK response for an OUT transaction can only be issued after the transfer of TOKEN and DATA packet is complete. For this reason, when a device with slow function-end processing and frequent issuing of NAK responses is connected to the bus, there will be an abundance of OUT → DATA → NAK issued to the bus. Since OUT → DATA → NAK has a relatively long life span on the bus, and is also not valid as a data transfer, this results in a drop of the effective transfer rate of the bus.
To solve this problem, 2 new packets, PING and NYET, have been added to the USB 2.0 specification.
The host first uses a PING command to ensure the availability of an open buffer on the bulk-OUT device. The function controller responds with a NAK if there is no room on the buffer, or with an ACK if the buffer is open. When the host receives a NAK, it will send a PING again to confirm an opening of the buffer.
When the host receives an ACK, it will begin the actual bulk-OUT transfer.
The function controller will then respond with an ACK, NYET, NAK, or (STALL).
An ACK response indicates that there is availability on the buffer for further bulk-OUT transfers. Hence, the host can continue to perform a bulk-OUT transfer. A NYET response indicates that there is no more availability on the buffer, and that further bulk-OUT transfers cannot be accepted. The host will then send a PING instead of performing a bulk-OUT, so as to check the availability of the receiving buffer with the function controller.
A NAK response is generally not used, but can be used if data can no longer be accepted due to the buffer becoming unavailable for one reason or another.
By preventing the OUT → DATA → NAK sequence from unnecessarily taking up the bus bandwidth, PING and NYET allows for a more effective use of the bus.