. . . . . . . . . Pipe[0] MQD Queue[0] Queue[n] ... . . . . . . . . . Pipe[1] Queue[0] Queue[n] ... . . . . . . . . . Pipe[n] Queue[0] Queue[n] ... ... Hardware Block EXECUTION Memory e.g.,:queue[0] e.g.,:queue[4] e.g.,:queue[n] HQD HQD HQD HQD HQD HQD Registers MQD MQD MQD MQD MQD ... HQD RegistersQueue Address in the GPUDoorbell... SWITCH QUEUE:WAIT FOR HQD_ACTIVE = 0SAVE QUEUE STATE TO THE MQDCOPY NEW MQD STATESET HQD_ACTIVE = 1 Firmware