Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Von Neumann Model Con’d. Assembly Intro COMP5201 Revision: 1.2 Date: June 18, 2003 May 14, 2003 Serguei A. Mokhov, [email protected] 1 Contents • • • • • • System Bus Layers of Abstraction Logic Gates: IC Building Blocks CPU Internals Instruction Fetch-Execute Cycle Glimpses of Assembly and Sample Programs May 14, 2003 Serguei A. Mokhov, [email protected] 2 System Bus • Von Neumann: how does the computer components communicate? Answer: via the System Bus. • An external (to the CPU) mean of communication between the CPU and other computer components. • NOTE: there is also an internal bus within the CPU that connects its registers, ALU and CU – do NOT mix it with the System Bus, please! May 14, 2003 Serguei A. Mokhov, [email protected] 3 System Bus (2) • System Bus can often be seen as three “subbusses”: – Data Bus. Primarily for data-only communication among different types of units, such as CPU, Memory, and I/O devices. – Address Bus. Used to communicate address information, i.e. where to look for/to send to the data (an address in the Memory; I/O device number). – Control Bus. Control data lines to report status, to request writing or reading between communicating parties May 14, 2003 Serguei A. Mokhov, [email protected] 4 System Bus (3) CPU Memory I/O Device Data Bus Address Bus Control Bus System Bus • NOTE: The three sub-busses may not necessarily be implemented as different IC chips. It is conceivable to have a system-on-a-chip, in which case, the chip interface is used to connect to other transducers/components. May 14, 2003 Serguei A. Mokhov, [email protected] 5 Layers of Abstraction • A computer system can be examined at various levels of abstraction. At a higher level of abstraction, fewer details of the lower levels are observed. • Instead, new (functional) details may be implemented at that level of abstraction. • Each level of abstraction provides a set of building blocks using which the next higher level of abstraction can be constructed, with more functionality. • This principle of information hiding is important in system design, as it enhances modularity, correctness, security, and usability of a system. May 14, 2003 Serguei A. Mokhov, [email protected] 6 Levels of Abstraction Highest Level Applications High Level Language Processor (Compiler) System Call Interface Assembler, Linker, Loader Operating System Device Drivers Microprogramming (Device Controllers) Digital Logic Lowest Level May 14, 2003 Transistors and Wires Serguei A. Mokhov, [email protected] 7 Levels of Abstraction (2) • In this course, we will focus on the assembler level of abstraction of a computer system with a fair amount of attention to its neighbor levels below and above. • A major difference between an assembly language user (programmer) and a user at higher levels is the amount of hardware details made available to the former. • These hardware details enable the former to directly manipulate program design for performance or real-time needs. May 14, 2003 Serguei A. Mokhov, [email protected] 8 IC Building Blocks • A MOS Transistor and Capacitor – Technology Innovation: • Scaling from 103 to 109 devices in a single chip – Consequence: • Memory size increase cheaper • Functionality improvements/additions • Speed increase May 14, 2003 Serguei A. Mokhov, [email protected] 9 MOS Transistor: Logic Source Source Source Drain Drain Drain 0 1 Gate Low voltage at the gate May 14, 2003 High voltage at the gate Serguei A. Mokhov, [email protected] 10 Capacitor: Memory May 14, 2003 Serguei A. Mokhov, [email protected] 11 NAND and NOR Gates Logic 1 - High voltage • Not-And NAND A • Not-Or NOR • NAND and NOR gates are an universal gates to implement any complex B function in hardware. • Hierarchically used inside an integrated circuit (IC) chip. A B X ------0 0 1 0 1 0 1 0 0 1 1 0 A B X ------0 0 1 0 1 1 1 0 1 1 1 0 A NOR B A NAND B X X = A NAND B X = A NOR B May 14, 2003 Serguei A. Mokhov, [email protected] = NOT (A AND B) = NOT (A OR B) 12 NAND: Question • Why NAND (and also NOR) gates are so universal compared to AND, OR, NOT, and XOR gates? • What’s so good about them (besides the universality)? May 14, 2003 Serguei A. Mokhov, [email protected] 13 CPU Internals Registers Control Unit Internal Bus ALU CPU May 14, 2003 Serguei A. Mokhov, [email protected] 14 CPU: Registers • A register is a unit of storage inside a CPU, holding temporary program data/instruction to be used in program execution. • Two types of registers: general purpose (GPS) and special purpose registers (GPR). – A general-purpose register is for general use in programming • E.g.: storage of arguments – A special-purpose register has specifically assigned function • E.g.: accumulator, stack pointer (SP), program counter (PC) • They are there to provide local storage inside a processor, making program information locally accessible and hence faster accesses. [Recall the Principle of Locality to enhance system performance] May 14, 2003 Serguei A. Mokhov, [email protected] 15 CPU: Control Unit • It is the “brain” or “coordinator” of the ISP (instruction set processor) as it ensures that the processor will behave exactly as defined by its instruction set. • Under the Von Neumann model, the processor – repeatedly fetches an instruction from the memory, – interprets its functionality, and – executes it. • This activity is carried out in an Instruction Fetch/Execute Cycle and is repeated once the system power is turned on. May 14, 2003 Serguei A. Mokhov, [email protected] 16 Instruction Fetch-Execute Cycle • May simply be referred to as – Fetch-Execute Cycle – Instruction Cycle • Basic F/E cycle involves: – Fetching the next instruction from the memory (“next” identified by a some kind of special pointer to some memory location) – Bringing the instruction is brought to the CPU and interpreted (decoded) – Fetching the instruction arguments (data) from either registers or other memory locations if needed – Executing the instruction and producing the result, if applicable – Storing back the result (if any; to either memory or registers) May 14, 2003 Serguei A. Mokhov, [email protected] 17 Program Counter • The existence of the (next) instruction pointer, also often known as, Program Counter, or PC, is a key feature in the Von Neumann model that forms the basis of more than 99% of computers ever built. • Under this model, a program adopts a sequential semantics: program instructions are “assumed” to be executed atomically in program (sequential) order. • What would be an alternative, the remaining 1%? May 14, 2003 Serguei A. Mokhov, [email protected] 18 inst1: mov ax, A Example ; move data from ; memory location A ; to register ax inst2: add ax, bx ; add register bx ; to register ax • Processor fetches and executes inst1; then repeats the same for inst2 • Notice inst1 and inst2 are stored in consecutive memory locations • Suppose initially the memory location A contains 24 and the register bx contains 12 • After executing inst1, ax will contain 24 • Then, after executing inst2, ax will contain 36 May 14, 2003 Serguei A. Mokhov, [email protected] 19 Observations • An instruction has: – An opcode (operation code), such as mov or add (human-readable or their binary equivalents) – Operand(s) – arguments to the instruction. Represent data for the instruction to work with pointed by/contained in either a register or a memory location • In the example, there are two operand addresses. Sometimes, machines like these are called 2address machines. Obviously, there are other possibilities, such as 3-address machines [example: add a, b, c] May 14, 2003 Serguei A. Mokhov, [email protected] 20 MASM: Sample Programs • See: – hworld.asm – Hello World – reverse.asm – Displays reversed input May 14, 2003 Serguei A. Mokhov, [email protected] 21