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.