1 / 46

Toward a general purpose computer

Toward a general purpose computer . Example: Game of Life. Game of Life. Solve Cell. For Each Cell. For Each Line. Game of Life. Matrix. Generation. Line. Cell. Solve Cell. For Each Cell. For Each Line. Modularity. Generation Module Matrix Module Line Module Cell Module.

herman
Download Presentation

Toward a general purpose computer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Toward a general purpose computer Example: Game of Life

  2. Game of Life Solve Cell For Each Cell For Each Line

  3. Game of Life Matrix Generation Line Cell Solve Cell For Each Cell For Each Line

  4. Modularity • Generation Module • Matrix Module • Line Module • Cell Module

  5. Algorithm for the Generation Module • CurrentGen = 0 • Solve for current Matrix • CurrentGen++ • If CurrentGen < MAX_GEN goto 2

  6. Solve Matrix 0. j = 1 1. Calculate line (j) 2. If j < MAX_LINE 2.1 j++ 2.2 goto 1. 3. STOP

  7. Calculate Line j 0. i = 0, tmp = 0 1. Calculate Cell i. 2. If alive, set location i in tmp to alive 3. If i < MAX_CELL 3.1 i++ 3.2 goto 1. 4. Store tmp in : even generation: i+16 odd generation : i-16

  8. CellAlive(cell index i, line index j) 0. N = Count_Neighbors(i,j-1,false) 1. N = N+Count_Neighbors(i,j,true) 2. N = N+Count_Neighbors(i,j+1,false) 3. If N > MIN && N < MAX 3.1 Return alive 4. Return dead

  9. Count_Neighbors (index i,line j, center) 0. N = 0 1. If alive in location [i-1,j]: N=N+1 2. If not center: 2.1 If alive in location [i,j]: N=N+1 3. If alive in location [i+1,j]: N=N+1 4. Return N

  10. Algorithm implementation Algorithm How to do? What to do? The operation itself control

  11. The operations in the algorithm: Operations: • Add • Subtract

  12. The Operation itself The operation:Defining interfaces (i-1) location Return Number of Neighbor: N CountNeighbors Alive: 0..010..0 CellAlive Return Dead: 0000000 Calculate Line Return the line Solve Matrix The matrix Generation

  13. The Operation itself Implementing instructionsModule Count_Neighbors, instruction 1, 2.1, 3 If alive in location [i-1,j] decode(i-1) = 0001000 AND Line (j) = 00010100 decode(i-1) = 0001000 AND Line (j) = 00000100 Result = 00000000 Result = 00010000 Non Zero – cell in location i is alive Zero – cell in location i is dead

  14. The Operation itself Implementing instructionsModule Count_Neighbors, instruction 1, 2.1, 3 If alive in location [i-1,j] Alive if AND(line,decode(i-1)) is not zero

  15. The Operation itself The operations in the algorithm: Operations: • Add • Subtract • The logic AND + Check if zero

  16. The Operation itself Small ALU (arithmetic logic unit)

  17. The Operation itself Small ALU StatusBit

  18. The Operation itself Small ALU InputB InputA ALU Op StatusBit isZero

  19. Implementation of AND(line,decode(i+1)) Reg1 Reg2 Reg3 Regn

  20. Implementation of AND(line,decode(i+1)) Reg1 1 ReadA ReadB Reg2 2 Reg3 Connected like MUX 1 Regn

  21. Implementation of AND(line,decode(i+1)) Reg1 1 ReadA ReadB Reg2 2 Write Address Reg3 Write Data Regn Decoder Write Enable

  22. Implementation of AND(line,decode(i+1)) Registers Data 1 Address Data 1 Data 2 Address Data 2 WriteAddress Write Data Write

  23. Variables of the algorithmCount_Neighbors

  24. Variables of the algorithmCount_Neighbors

  25. Register/ALU circuit Registers Data 1 Address Op Data 2 Address WriteAddress ALU Extend 1to 16 MUX R0R1 Write 2 0 ExternalInput 1

  26. The Operation itself Control Algorithm is zero[AND(line,decode(i+1))] If alive in location [i+1,j]: N=N+1 Algorithm instruction Instruction • Tmp = is zero[AND(Currentline, • decode(i+1))] • If controlVariable=0000001: N=N+1

  27. The Operation itself Control Algorithm is zero[AND(line,decode(i-1))] Tmp = is zero[AND(line,decode(i-1))] Instruction t0. Tmp = i-1 t1. Tmp = decode(Tmp) t2. controlVariable = is zero[AND(CurrentLine, Tmp)] Micro-Instruction

  28. The Operation itself Micro instruction implementation • Tmp = i+1 • Tmp = decode(Tmp) • controlVariable = is zero[AND(CurrentLine, Tmp)] Micro-Instruction i t0. Data 1 Address = 1Data 2 Address = 5 WriteAddress = 3 Write = 1 Op = 01R0R1 = 01 1 tmp Subtract The result of the ALU

  29. The Operation itself Micro instruction implementation • Tmp = i+1 • Tmp = decode(Tmp) • controlVariable = is zero[AND(CurrentLine, Tmp)] Micro-Instruction tmp t1. Data 1 Address = 3Data 2 Address = 0 WriteAddress = 4 Write = 1 Op = 11R0R1 = 01 Irrelevant tmp Decode The result of the ALU

  30. The Operation itself Micro instruction implementation • Tmp = i+1 • Tmp = decode(Tmp) • controlVariable = is zero[AND(CurrentLine, Tmp)] Micro-Instruction Line in register i t2. Data 1 Address = 0Data 2 Address = 3 WriteAddress = 6 Write = 1 Op = 10R0R1 = 00 tmp controlVariable And The zero status bit

  31. The Operation itself Instruction Hierarchy Algorithmic Instruction Instruction Micro-Instruction Micro-Instruction Instruction Micro-Instruction Micro-Instruction

  32. Instruction Hierarchy Timing Variables Instruction t0: Micro-Instruction tn: Micro-Instruction Each micro instruction = 1 cycle Instruction t0:Micro-Instruction tn: Micro-Instruction

  33. Timing variables (example with 4 time variables) CP t0 t1 t2 t3 One instruction

  34. Generating Timing variablesexample with 16 timing variables Register 4bits CP t0 t15 1 Decoder Adder

  35. Control of Count_Neighbor

  36. Control of Count_Neighbor 0000 0001 0010 0011 0100 0101 0110 0111 1000

  37. Control of Count_Neighbor 0000 0001 0010 0011 0100 0101 0110 0111 1000

  38. Putting it all together:implementing what to do with ROM ROM Output ROM Input Center Register 7 (16bits) Control variable (16bits) The current state (4 bits) The current timing variable(1 bits)

  39. Putting it all together: implementing what to do with ROM ROM Output ROM Input Data 1 Address Data 2 Address Write-Data MUX control WriteAddress Write ALU Operation

  40. Putting it all together: implementing what to do with ROM ROM Output ROM Input t0. Tmp = i+1 t1. Tmp = decode(Tmp) t2. controlVariable = is zero[AND(CurrentLine, Tmp)] t3. do nothing

  41. Putting it all together: implementing what to do with ROM ROM Output ROM Input t0. Tmp = i+1 t1. Tmp = decode(Tmp) t2. controlVariable = is zero[AND(CurrentLine, Tmp)] t3. do nothing

  42. Putting it all together: implementing what to do with ROM ROM Output ROM Input t0. Tmp = i+1 t1. Tmp = decode(Tmp) t2. controlVariable = is zero[AND(CurrentLine, Tmp)] t3. do nothing

  43. Putting it all together: implementing what to do with ROM ROM Output ROM Input t0. Tmp = i+1 t1. Tmp = decode(Tmp) t2. controlVariable = is zero[AND(CurrentLine, Tmp)] t3. do nothing

  44. Control of Count_Neighbor 0000 0001 0010 Current State = 0001 t0. Set Current State 0001 t1. Set Current State 0001 t2. Set Current State 0001 t3. If ControlVariable=1 Set Current State 0010 t3. If ControlVariable=0 Set Current State 0011 0011 0100 0101 0110 0111 1000

  45. Putting it all together:implmenting control with ROM ROM Input ROM Output Here is the branch.

  46. Timing Variable CurrentState Current State Next State ROM Op Write Registers D1 D2 WA WriteData ALU MUX R0R1 Extend 1to 16 Result zerobit 1

More Related