REGISTERS Register: In a computer, a register is one of a small set of data holding places that are part of a computer processor. A register may hold computer instruction, a storage address, or any kind of data (such as a bit sequence or individual characters). Some instructions specify registers as part of the instruction. A register is a special, high-speed storage area within the CPU. All data must be represented in a register before it can be processed. For example, if two numbers are to be multiplied, both numbers must be in registers, and the result is also placed in a register. (The register can contain the address of a memory location where data is stored rather than the actual data itself.) The number of registers that a CPU has and the size of each (number of bits) help determine the power and speed of a CPU. For example a 32-bit CPU is one in which each register is 32 bits wide. Therefore, each CPU instruction can manipulate 32 bits of data. Usually, the movement of data in and out of registers is completely transparent to users, and even to programmers. Only assembly language programs can manipulate registers. In high-level languages, the compiler is responsible for translating high-level operations into low-level operations that access registers. There are two main types of register and then one of them splitting into 5 different subtypes. These two registers are general purpose registers and dedicated registers. General purpose registers are used by develops when they want certain data in there program(s) to be cached for fast access. They are not used for any other system task to keep the computer running. The other type of register is called a dedicated register. These types of registers are used by the system and cannot be accessed by programs or other user oriented prompts. Dedicated registers can be split into 5 main groups; with each of these groups having their own use. The five different types of dedicated registers are: Program Counter (PC) A incrementing counter that keeps track of the memory address of which instruction is to be executed next. Memory Address Register (MAR) Holds the address in memory of the next instruction to be executed Memory Data Register (MDR) A two-way register that holds data fetched from memory (and ready for the CPU to process) or data waiting to be stored in memory Current Instruction register (CIR) A temporary holding ground for the instruction that has just been fetched from memory Accumulator Register (ACC) Holds the data result of a current calculation