A core is the basic computation unit of the CPU. It can run a single program context (or multiple ones if it supports hardware threads such as hyperthreading on Intel CPUs), maintaining the correct program state, registers, and correct execution order, and performing the operations through ALUs. A core can also hold on core caches with copies of frequently used memory chunks for optimization purposes. A CPU may have one or more cores to perform tasks at a given time. These tasks are usually software processes and threads that the OS schedules.