A register is a fast-access location on a computer where a processor can find instructions. Some registers can be read only or write-protected, and generally consist of a very small amount of static storage, but can be either read or write-protected. A register can store one or more instructions for the CPU to use during execution. Instructions are executed in a virtual machine environment, which means the execution happens only when the appropriate device calls the relevant instruction.
Instruction pointer (IOP) is an instruction used to request data from an instruction register. Instructions are single-valued or two-valued which make the instruction execution virtual. Instructions can specify types like ADD, OR, AND, etc. The register can store two or more types of instructions and multiple values at any given time. A register has one or more address registers, where it stores a multiple-valued value that is subjected to instructions.
A general purpose register stores a multiple-valued value that is subjected to generic instructions. There are generally four types of registers: PCA, IDA, PEA and PCA+ID. A PCA register contains one or more addends and one or more sats, and is thus used frequently; it can be compared to an accumulator register. A PCA+ID accumulator has one or more addends and one or more sats, and is thus used less frequently than PCA.
A program counter (PC) is a register whose contents are continuously updated as instructions are executed. In a multi-threaded application, the program counter is incremented each frame by an atomic instruction. Thread operations include reading the Program Counter (PC), executing a specific thread, determining execution state and scheduling tasks among threads. Thread states include foreground, background, suspend, and hibernate. The suspend and hibernate commands are provided to the CPU to indicate that a process is terminated, and to indicate that another task should be run.
The memory buffer register (MVR), on the other hand, is an accumulator register. It contains a multiple-valued value that is not changed when instructions are executed. Memory buffer register values depend on the contents of the immediate memory. MVR is not significant in a multi-threaded application, but can become significant if there are large gaps between instructions.
All three of these registers are important for multi-threading. Instructions that transfer data from one processor to another through these registers need to be fast. All architectures that run on PC’s use one or more of the three PC registers. In x86-based systems, the most significant of these three registers is the MMU, which is only used in Windows.