1 / 65

Chapter 3 โพรเซสเซอร์และการทำงาน The Processing Unit

Chapter 3 โพรเซสเซอร์และการทำงาน The Processing Unit. เนื้อหา. นิยาม และคำศัพท์ที่ควรรู้เกี่ยวกับไมโครโพรเซสเซอร์และ ไมโครคอมพิวเตอร์ ประวัติความเป็นมาของไมโครโพรเซสเซอร์ ข้อดีข้อเสียของไมโครโพรเซสเซอร์ ข้อพิจารณาในการเลือกใช้ไมโครโพรเซสเซอร์. Computer BUS.

mulan
Download Presentation

Chapter 3 โพรเซสเซอร์และการทำงาน The Processing Unit

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. Chapter 3 โพรเซสเซอร์และการทำงานThe Processing Unit

  2. เนื้อหา นิยาม และคำศัพท์ที่ควรรู้เกี่ยวกับไมโครโพรเซสเซอร์และ ไมโครคอมพิวเตอร์ ประวัติความเป็นมาของไมโครโพรเซสเซอร์ ข้อดีข้อเสียของไมโครโพรเซสเซอร์ ข้อพิจารณาในการเลือกใช้ไมโครโพรเซสเซอร์

  3. Computer BUS • A group of wires that connects several devices • Three types of Bus • Address bus • Data bus • Control bus

  4. Address bus • Used to specify memory location that the cpu want to access(read/write) • n-bit address bus provides 2n addresses • For Example • MCS-51 16-bit address bus -> 216 = 16 Kbyte of memory • 8086 20-bit address bus -> 220 = 1 Mbyte of memory • Pentium 32-bit address bus -> 232 = 4 Gbyte of memory

  5. Databus • Used to sent data between CPU and peripheral(memory, i/o) • The more bit of data bus, the more speed achieved • For Example • MCS-51 8-bit data bus • 8086 16-bit data bus • Pentium 64-bit data bus

  6. BUS

  7. CPU : Basic operations • Fetch : Read the instructions and data from memory • Execute : perform the desired operation and write the result into the memory or registers

  8. FETCH

  9. Terminology • IR : Instruction Register • MAR : Memory Address Register

  10. Instructions of CPU • There are 4 types of instructions 1. Data transfer between memory and CPU registers 2. Arithmetic and Logic Operations on data 3. Program Sequencing and Control 4. I/O transfer

  11. Basic instruction types : three address instruction • LOAD R0,[10000] • LOAD R1,[10001] • ADD R2, R0, R1 • LOAD R0,[10002] • ADD R1, R0,R2 • STORE [10003],R1 D = A+B+C Note ADD R2,R0,R1 means R2 = R0+R1

  12. Basic instruction types : two address instruction • LOAD R0,[10000] • LOAD R1,[10001] • ADD R0,R1 • LOAD R2,[10002] • ADD R0,R2 • STORE [10003],R0 D = A+B+C Note ADD R0,R1 means R0 = R0+R1

  13. Basic instruction types : one address instruction • LOAD [10000] • ADD [10001] • ADD [10002] • STORE [10003] D = A+B+C Note ADD [10001] means Acc = Acc + [10001]

  14. CPU registers • General purpose registers • R0,R1…Rn • A,B, C,…. • Special purpose register • PC • SP • Accumulator • Flag or Condition code

  15. PC :Program Counter register • Used to keep the next address of memory that CPU want to access • PC and address-bus have the same size

  16. PC :Program Counter (continued)

  17. PC :Program Counter (continued)

  18. PC :Program Counter (continued)

  19. PC :Program Counter (continued)

  20. PC :Program Counter (continued)

  21. PC :Program Counter (continued)

  22. Branching [25000] = [10000]+[10002]+[10003]+….+[24999] LOC35000: LOAD R0,#0 LOAD R1,#14999 LOAD R3,#10000 LOC35003: LOAD R2,[R3] ADD R0, R2 INC R3 DEC R1 Branch_NZ LOC35003 STORE [R3],R0

  23. Flag or Condition code Register • keep the status after perform arithmetic and logic operation Example: Flags of CPU z80

  24. Addressing modes of CPU • Immediate #value load R0,#00001 • Register Ri load R0,R1 • Direct(absolute) [mem_loc] load R0,[100000] • Register indirect [Ri] load R0,[R1] • Relative X[PC] • Index

  25. Immediate addressing • load R1,#00001

  26. Direct addressing • LOAD R1,[1200H]

  27. Register indirect • load R0,[R1]

  28. Index addressing • Use index register • Effective address = X + [Ri] • When X = offset (or displacement) • Ri = index register or Base register

  29. Index addressing Offset is given as a constant

  30. Index addressing Offset is in the index register

  31. Example1 : Transfering bytes of data • Copy values in memory location 1000h-1400h to location 2000h-2400h (1024 byte)

  32. Example1 : Transfering bytes of data STRT: LD R0,#1000H LD R1,#2000H LD R3,#1024 LOC_A: LD R4, [R0] STORE [R1], R4 INC R0 INC R1 DEC R3 BRANCH>0 LOC_A CALL PRINTF

  33. Example2: Unsigned Multiplicationby Repeated Addition • Multiply 8-bit unsigned number • C = A * B

  34. Example2: Unsigned Multiplicationby Repeated Addition

  35. Example2: Unsigned Multiplicationby Repeated Addition STRT : LOAD R1,#0 LOAD R3, [mem_loc_A] LOAD R2, [mem_loc_B] LOOP: ADD R1,R3 DEC R2 BRANCH>0 LOOP STORE [mem_loc_C],R1 CALL PRINTF

  36. Example2: Unsigned Multiplicationby Repeated Addition • Problem of the program in page 37 • If B = 0 then the result is A , not 0 • How to remedy the problem

  37. Example2: Unsigned Multiplicationby Repeated Addition STRT : LOAD R1,#0 LOAD R3, [mem_loc_A] LOAD R2, [mem_loc_B] Compare R2,#0 Branch_Z STR LOOP: ADD R1,R3 DEC R2 Branch>0 LOOP STR: STORE [mem_loc_C],R1

  38. Example3: if-then-else if (mem_loc_a == 5) mem_loc_b++; else mem_loc_b = mem_loc_a + mem_loc_b;

  39. Example3: if-then-else Load R1,[mem_loc_a] Load R2,[mem_loc_b] Compare r1,#5 Branch_NZ b_p_a inc r2 branch stre b_p_a: Add r2,r1 stre: Store [mem_loc_a],r1 Store [mem_loc_b],r2

  40. Example4: checking greater-than if (mem_loc_a > 5) mem_loc_b++; else mem_loc_b = mem_loc_a + mem_loc_b;

  41. Example4: checking greater-than Load R1,[mem_loc_a] Load R2,[mem_loc_b] compare r1,#5 branch_z equ_g_5;equal 5 branch_M equ_g_5;M= minus inc r2 branch stre equ_g_5: Add r2,r1 stre: Store [mem_loc_a],r1 Store [mem_loc_b],r2

  42. Example4: checking greater-than Load R1,[mem_loc_a] Load R2,[mem_loc_b] sub r1,#5 branch>0 gt_5 Add r2,r1 branch stre gt_5: inc r2 stre: Store [mem_loc_a],r1 Store [mem_loc_b],r2

  43. Basic processing unit • the structure of simple CPU • How the internal parts of CPU work • How to design the simple processor • Datapath • Control Unit

  44. Inside simple CPU with Single-bus Datapath

  45. Perform instruction ADD R1,R2 Fetch phase Execution phase • MAR <= PC • ADDRESS_BUS <= MAR, read • MDR <= MEMORY[MAR] • IR <= MDR • Z <= PC + 4 • PC <= Z • Y <= R1 • Z <= Y + R2 • R2 <= Z

  46. Perform instruction ADD R1,R2 Active Signals • MAR <= PC PCout, MARin • ADDRESS_BUS <= MAR,read read • MDR <= MEMORY[MAR] MDRinE, WMFC • IR <= MDR MDRout,IRin • Z <= PC + 4 PCout, MUX_sel4, Add,Zin • PC <= Z Zout,PCin • Y <= R1 Yin, R1out • Z <= Y + R2 R2out, MUX_selY, Add, Zin • R2 <= Z Zout, R2in

  47. How to modify FETCH operation to be faster MAR <= PC ADDRESS_BUS <= MAR, Read MDR <= MEMORY[MAR], WMFC IR <= MDR Z <= PC + 4 PC <= Z MAR <= PC, Read, Z <= PC+4 , MDR <= MEMORY[MAR] PC <= Z, WMFC IR <= MDR

  48. Modified FETCH operation Active Signals MAR <= PC, Read, Z <= PC+4 , MDR <= MEMORY[MAR] PC <= Z, WMFC IR <= MDR PCout, MARin, Read, Mux_sel4, Add, Zin Zout, PCin, Yin, WMFC MDRout, IRin

More Related