Patent ID: 7834881

Claim:
A method of arbitrating read requests for a memory bank, comprising: receiving a first read request for a first operand that is stored in the memory bank and specified by a first program instruction to be executed by a first execution pipeline; receiving a second read request for a second operand that is stored in the memory bank and specified by a second program instruction to be executed by the first execution pipeline; selecting the first read request for the memory bank; determining that a cache miss has occurred for a constant read request to read a constant operand associated with the first program instruction; discarding the first program instruction when a constant read cache miss has occurred for the constant read request; selecting the second read request for the memory bank; receiving the constant operand specified by the first program instruction; reading the first operand from the memory bank; dispatching the first program instruction to the first execution pipeline for execution; determining that the constant indices for the constant operand do not match, wherein each constant index corresponds to a different thread in a thread group; and serializing the constant read request to read different constant operands for each different constant index specified by the first program instruction.