According to some embodiments, a multithreaded
microcontroller includes a thread
control unit comprising thread control hardware (logic) configured to perform a number of
multithreading system calls essentially in real time, e.g. in one or a few
clock cycles.
System calls can include mutex lock, wait condition, and
signal instructions. The thread controller includes a number of thread state, mutex, and condition variable registers used for executing the
multithreading system calls. Threads can transition between several states including free, run, ready and wait. The
wait state includes interrupt, condition, mutex, I-cache, and memory substates. A thread state transition controller controls thread states, while a thread instructions
execution unit executes
multithreading system calls and manages thread priorities to avoid
priority inversion. A thread scheduler schedules threads according to their priorities. A
hardware thread profiler including global, run and wait profiler registers is used to monitor thread performance to facilitate
software development.