6. Basic Machine Organizaton 6.2 Computer Organization Computer Studies (Advanced Level) Computer Organization A computer has no intelligence. It follows the commands you specify in the program. Program: A sequence of instructions. The CPU executes them one-by-one. Programming Language Machine-Level: used by the computer trains of 0’s and 1’s Assembly level source code -> assemble -> object code High-Level and Mid-Level Nearer to natural language Need compilation Source code -> compile -> object code Why Assembly Language? (1) Machine program is difficult to write, debug, understand and error-prone. Use symbols or mnemonics to replace the 0’s and 1’s. E.g.: assembly : MOV A, 1 machine : 0011 0101 0001 Using machine language, one has to determine the address of “A” manually. Why Assembly Language? (2) Using Assembly Language, you need an assembler to translate an assembly program to a machine program. Assembly Language 1-1 correspondence with the machine program. Directly communicates with the computer has precise control of the computer machine dependent Computer Architecture Memory (RAM, ROM) Control Data Address Processor I/O Unit Disk Modern CRT terminal Keyboard Processor ALU (Arithmetic Logic Unit) system clock registers Instruction register(IR) Instruction decoder(ID) internal system bus Bus and register Control Data Address Controller (System Clock) System Bus MDR (Data Buffer) ID CCR Instruction Register(IR) ALU Internal Bus MAR (Address Buffer) Registers Program counter (PC) Basic Instruction Formats An instruction is divided into different fields: Opcode | Operand 1 | … | Operand N Opcode: Operation to perform, e.g. addition Operand 1 to Operand N: The data which the operation will act on. Basic Instruction Formats The number of operands N varies for different computers. In 8088, N can be 0, 1, or 2. N=2: E.g. “ADD AX, BX” means “AX<-(AX)+(BX)” Note: “(AX)” means the content of the register “AX” N=1: e.g. “PUSH AX” means “Stack <- (AX)” N=0: e.g. “RET means return from procedure Instruction Execution Cycle 1. Instruction Fetch a) The address of the current instruction to execute is stored in a CPU’s internal register called the Program Counter (PC). (much like a “pointer” to point at the next instruction) b) Put this address into Memory Address Register (MAR) and initiates a Read Cycle. C) The instruction is read into another CPU’s internal register called the Memory Data Register (MDR). D) the data in MDR is then forwarded to the Instruction Register (IR) via the internal bus. Note: MAR = Address Buffer, MDR = data buffer Instruction Fetch e) at the same time, PC is incremented to point at the next instruction: PC-------> 1003 1007 1009 … 1033 ADD AH, 2 Current JL TARGET Next … … … TARGET Notes of Instruction Fetch Note: Increment PC by how much? It depends on the size of the current instruction (what if irregular) Assume the next instruction follows the current instruction. (What if we have a branch instruction? E.g.if (A>0)…else… Instruction execution cycle 2. Instruction Decode: Generate the control signals to accomplish the tasks of the instruction. 3. Data Fetch (for operands) Instruction Fetch - Execution 4. Execution: ALU Set the condition codes (flags) to indicate the characteristics of last execution’s result. E.g. overflow, negative Execution Note: Condition Code Register (CCR) is more commonly known as the Processor Status Word (PSW) Branch instructions check the status of the PSW A branch is either taken or not taken. If it is taken, the branch address is loaded into the PC. Effectively, the sequential flow of instruction (or control) is interrupted. E.g.1 Control Data Address Controller (System Clock) System Bus MDR (Data Buffer) ID CCR Instruction Register(IR) ALU Internal Bus MAR (Address Buffer) Registers PC: 1003 E.g.1 Control Data Address Controller (System Clock) System Bus MDR (Data Buffer) ID CCR Instruction Register(IR) ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.1 Control Data Address Controller (System Clock) System Bus MDR ADD AH, 2 ID CCR Instruction Register(IR) ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.1 Control Data Address Controller (System Clock) System Bus MDR ADD AH, 2 ID CCR IR: ADD AH, 2 ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.1 Control Data Address Controller (System Clock) ID IR: ADD AH, 2 System Bus MDR ADD AH, 2 CCR: -ve ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.1 Control Data Address System Bus Controller (System Clock) ID IR: ADD AH, 2 MDR ADD AH, 2 CCR: -ve ALU Internal Bus MAR 1007 Registers PC: 1009 E.g.1 Control Data Address System Bus Controller (System Clock) ID IR: ADD AH, 2 MDR: JL TARGET CCR: -ve ALU Internal Bus MAR 1007 Registers PC: 1009 E.g.1 Control Data Address System Bus Controller (System Clock) ID IR: JR TARGET MDR: JL TARGET CCR: -ve ALU Internal Bus MAR 1007 Registers PC: 1009 E.g.1 Control Data Address System Bus Controller (System Clock) ID IR: JR TARGET MDR: JL TARGET CCR: -ve ALU Internal Bus MAR 1007 Registers PC: 1033 E.g.2 PC-------> 1003 1007 1009 1033 1063 MOV AH, SRC Current JL TARGET Next … … 20 TARGET SRC E.g.2 Control Data Address System Bus Controller (System Clock) MDR MOV AH, SRC ID CCR Instruction Register(IR) ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.2 Control Data Address System Bus Controller (System Clock) MDR MOV AH, SRC ID CCR IR: MOV AH, SRC ALU Internal Bus MAR 1003 Registers PC: 1007 E.g.2 Control Data Address System Bus Controller (System Clock) MDR MOV AH, SRC ID CCR IR: MOV AH, SRC ALU Internal Bus MAR 1063 Registers PC: 1007 E.g.2 Control Data Address System Bus Controller (System Clock) MDR: 20 ID CCR IR: MOV AH, SRC ALU Internal Bus MAR 1063 Registers PC: 1007