Instruction Set Architecture
Processor design involves the instruction set design and the organization of the processor.
Organization is concerned with the internal design of the processor, the design of the bus system and its interfaces, the design of memory and so on. Two machines may have the same ISA, but different organizations.
The organization is implemented in hardware and in turn, two machines with the same organization may have different hardware implementations, for example, a faster form of silicon technology may be used in the fabrication of the processor.
The first point that must be made about computer architecture is that there is no standard computer architecture, in the same way as there is no such thing as a standard house architecture or standard motor car design
Instruction Set
One of the crucial features of any processor is its instruction set, i.e. the set of machine code instructions that the processor can carry out. Each processor has its own unique instruction set specifically designed to make best use of the capabilities of that processor. The actual number of instructions provided ranges from a few dozens for a simple 8-bit microprocessor to several hundred for a 32-bit processor. However, it should be pointed out that a large instruction set does not necessarily imply a more powerful processor.
Many modern processor designs are so called RISC (Reduced Instruction Set Computer) designs which use relatively small instruction sets, in contrast to so called CISC (Complex Instruction Set Computer) designs such as machines based on the Intel 8086 and Motorola 68000 microprocessor families.
Classification of Instructions
The actual instructions provided by any processor can be broadly classified into the following groups:
• Data movement instructions: These allow the processor move data between registers and between memory and registers (e.g. 8086 mov, push, pop instructions).
• Transfer of control instructions: These are concerned with branching for loops and conditional control structures as well as for handling subprograms (e.g. 8086 je , jg , jmp, call, ret instructions).
• Arithmetic/logical instructions: These carry out the usual arithmetic and logical operations (e.g. 8086 cmp, add, sub, inc, and, or, xor instructions).
• Input/output instructions: These are used for carrying out I/O (e.g. 8086 in, out instructions)