1.1.1 Structure and function of the processor

Assembly language uses mnemonics to represent instructions, as a simplified way of representing machine code. Each instruction is divided into operand (data or memory address of data upon which the operation is to be performed) and opcode (the type of instruction that needs to be executed).

Pipelining is a process which can be used to improve the performance of a processor. Normally, all the steps in the FDE cycle would take place one after another. leaving some parts of the CPU idle. Pipelining prevents this - while one instruction is being executed, another is being decoded and another is fetched from memory. Appropriate data is kept in a buffer in close proximity to the CPU until it is required. This doesn’t work for code that branches (instructions that cause the execution of a different instruction sequence).

Harvard architecture is similar to Von Neumann architecture, but has physically separate memories for instructions and data, and has separate buses for instructions and data (allowing the CPU to read an instruction, and access data in the memory simultaneously, and also allows the use of pipelining).

Von Neumann Architecture Harvard Architecture
Data and programs share memory Data and programs held in separate memory
One bus used to transfer data and instructions Multiple parallel data and instruction buses used
Cheaper to develop as the CU is easier to design More expensive to develop due to more complex design
Slower execution (due to shared bus) Quicker execution (data & instructions fetched at same time)
Only a single, shared memory store (inefficient use of space) Memories can vary in size, making efficient use of space

Contemporary processor architecture uses a combination of the above architectures, and are modified to deliver optimum performance and efficiency.