1. A method comprising: storing in memory a queue descriptor including a head pointer pointing to a first element in a queue and a tail pointer pointing to a last element in the queue; in response to a command to perform an enqueue or dequeue operation with respect to the queue, fetching from the memory to a cache one of either the head pointer or tail pointer; and returning to the memory from the cache portions of the queue descriptor modified by the operation.