/* CS 341 Spring 2002 */ /* Note segment 1 */ /* 17-Jan-2002 */ /* Taken by Apostolos Paul Pantazis */ --> Designing a Primitive CPU. VanOwmen Architecture ( please check for spelling..) ... It's John von Neumann, von Neumann Bio 1. General Purpose memory: Can be thought as an array. A value is placed on an adress and with a read the value can be taken from the particular location. (you could imagine how a write would work). 2. CPU (Central Processing Unit), talks to Memory, actually it is bidirectional depending on whether the CPU is Reading or Writing to memory. 3. I/0 (memory mapped I/O). Simple Diagram |-----| <------ A |---| |----| | MEM | |CPU|-------|I/O | |-----| <------> D |---| |----| Memory Bus : Between MEM and CPU I/O Bus: Between CPU && I/O CPU: Manipulates Memory and does Math. It is Built of 2 pieces: 1. CU or the Control Unit. 2. ALU or Aritmetic / Logic Unit. CU: Decides how values get shuffled around, what should happen next. ALU: Arithmetic and logical operations. How does CPU work? In a general purpose computer, Memory contains values and instructions that tell the CPU what to do. The CPU fetches and instruction and executes it (during this process it manipulates memory). When it is done with the particual instruction it will fetch the next one. generaly a sequential process. Machine Cycle (CPU) Fetch --> Decode --> Execute --> Store. Cache : Special purpose memory to solve problem of processor being much faster than memory. Often we prefer to do lots of I/O at one time. To get things out of memory, CPU will be slowing the process down(Remember we are in a time machine here back in the day when memory was faster than CPU speed). The solution to this is DMA(Direct memory adress). During this process our data will flow around the CPU so the CPU can do something else. --> Consider a 16 bit computer (16 Bit refers to how wide the MEM Bus is and alos how wide things are inside the CPU) Instruction = just a word in memory that tells CPU what to do. Example: ADD, SUB, MUL, DIV ( aritmetic instructions) LOAD, STORE (Memory Access) This computer will be a 1-adress computer, an accumulator (Just 1 register). Each instruction will be encoded by 3 Bits, these bits are refered as the OPcode (operation code). ADD --> 000 SUB --> 001 MUL --> 010 DIV --> 011 LOAD --> 100 STORE --> 101 |-------------------------| |-----|-------------------| (1) (2) (1): The opcode part 3 Bits (2): adress 13 Bits. This computer can adress a max of 16K Bytes (8K Words). The CPU will look at the Opcode. If the opcode says ADD, it will fetch from memory the value and add it to its accumulator. Instructions look like a C program. a+=m[237] weer 237 is the adress. a/=m[17]. Lets consider this ex in more detail: From table above the Opcode is 011 for a divide. 17 in Binary is : 0000000001001 So: |---|-------------------| |011| 17 in binary | |---|-------------------| LOAD --> a = m[13] STORE --> m[29] = a 1-adress machine : Each instruction contains one adress. Machine code: the actuall 0 and 1's DIV 17 --> assembly code. Translate C code into accumulator code C statments: a = b + c; d = a*a / e; If a corresponds to memory location 64 b to 65 c to 66 d to 67 e to 68 Then: LOAD 64 LOAD 65 ADD 66 STORE 64 LOAD 64 MUL 64 DIV 68 STORE 67 These are note I have not including MSI and schematics.