The Diamond kernel is a highly-optimised software component that manages the underlying DSP hardware. Typically the code and data of the kernel occupy less than 20KB.  The kernel is a passive component; it uses CPU cycles only when the user program requests service.
The only exception to this is the maintenance of the internal cock, which typically uses a small number of cycles every millisecond. Even this can be disabled to allow 100% of the CPU to be used in your code.
The kernel provides the following main services:
| semaphores & events |
Initialise, signal, and wait for semaphores and events. |
|---|---|
| timer |
Read the system clock, wait for a number of ticks or until a time has passed. |
| threads |
Create & destroy threads, change thread priorities, schedule the execution of threads. |
| context switching |
Transfer control between threads. Typical times to transfer from one thread to another (thread_deschedule) are: 225MHz Texas Instruments C6713,  470ns 400MHz Texas Instruments C6415   250ns 1GHz Texas Instruments C6416T   100n |




