1. A computer-based software task management system comprising: an index register configured to store a data register pointer for pointing to a data register a Task ID register coupled to the index register and configured to store a Task ID keyed to the index register; a Task ID memory coupled to the Task ID register and configured to store a flag indicating whether the Task ID is available; and a state machine coupled to the Task ID memory and configured (a) to receive a Task ID request from a task, (b) to determine whether a Task ID is available in response to the Task ID request, (c) when a Task ID is available, to issue a Task ID to the task and set the flag in the Task ID memory indicating that the Task ID is in use, and (d) when the task is complete, to reset the flag in the Task ID memory indicating that the Task ID is available.