Bộ xử lý Khối điều khiển và Đường dữ liệu

pptx 63 trang huongle 7450
Bạn đang xem 20 trang mẫu của tài liệu "Bộ xử lý Khối điều khiển và Đường dữ liệu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptxbo_xu_ly_khoi_dieu_khien_va_duong_du_lieu.pptx

Nội dung text: Bộ xử lý Khối điều khiển và Đường dữ liệu

  1. Bộ xử lý: Khối điều khiển và Đường dữ liệu
  2. Nội dung ¡ Thành phần cơ bản của bộ xử lý – Lệnh truy cập – Các toán tử ALU – Toán tử bộ nhớ ¡ Kết nối các thành phần – Các tín hiệu điều khiển và bộ đồn kênh MUXes – Các chỉ thị giải mã lệnh
  3. Thực thi cơ bản của MIPS (from the book) ¡ Xem lại các tập lệnh cơ bản trong MIPS – Memory: lw, sw – Arithmetic: add,sub – Logic: and, or – Branch: beq ¡ Đọc thêm: – Multiply, divide – A bunch of logic operations – jump – jr and jal
  4. Các hoạt động chính của bộ xử lý? ¡ Nạp lệnh: tìm ra lệnh và tải lệnh ¡ Tính toán trên ALU: tìm ra toán tử và thực thi ¡ Truy nhập bộ nhớ: tìm ra địa chỉ và truy nhập
  5. Thiết kế đơn chu kỳ ¡ Thiết kế đầu tiên sẽ xử lý một lệnh với mọi chu kỳ đồng hồ. Chia lệnh thành các pha và thực hiện trong một chu kỳ đồng hồ. ¡ Nhắc lại về thiết kế mức logic: ¡ Tổ hợp các mức logic tạo ra trạng thái kế tiếp ¡ Bộ nhớ (các mạch chốt, RAM) lưu trữ trạng thái ¡ Bộ đồng hồ chuyển đổi trạng thái kế tiếp ¡ Quy trình nạp lệnh ¡ Trạng thái kế tiếp: PC+4 (ngoại trừ các lệnh nhảy) ¡ Trạng thái: Program Counter (lệnh hiện tại)
  6. Thiết kế đơn chu kỳ ¡ Thiết kế xử lý một lệnh trong các chu kỳ đồng hồ ¡ Các khối xử lý cơ bản: – Combinational logic tạo ra next state – Memories (latches, RAM) lưu trữ trạng thái – Clock chuyển đổi next state thành current state.
  7. Nạp lệnh ¡ Theo dõi địa chỉ lệnh hiện tại tên thanh PC. – Tăng PC lên 4 trong mỗi chu kỳ – Tải lệnh tại địa chỉ được xác định bởi PC
  8. Tính toán trên ALU (các chỉ thị lệnh dạng RS) Các bước thực hiện? – Đọc dữ liệu từ tệp thanh ghi(specify rs and rt) – Thực thi tính toán ALU – Ghi dữ liệu về tệp thanh ghi (specify rd)
  9. Tính toán trên ALU (cấu trúc lệnh dạng RS) ¡ Các bước thực hiện? – Đọc dữ liệu từ tệp thanh ghi (xác định rõ rs và rt) – Thực hiện tính toán ALU – Ghi dữ liệu trở lại tệp thanh ghi (xác định rõ rd)
  10. Làm gì tiếp theo? Q: Thiếu khối nào? 1. Không thiếu, chỉ cần tập lệnh Nạp lệnh và bộ tính toán ALU. và ALU 2. Thiếu khối so sánh – Bộ nhớ lệnh, PC, bộ cộng PC+4 3. Thiếu bộ nhớ dữ liệu – Tệp thanh ghi, ALU A: 3 Sử dụng đầu ra 0 từ ALU để so sánh trong lệnh beq và bne
  11. Truy cập bộ nhớ Các bước thực hiện? – Tính toán địa chỉ – Gửi địa chỉ đến bộ nhớ dữ liệu (write: data) – Đọc: nhận kết quả trả về và đưa vào tệp thanh ghi Q: Điều gì xảy ra nếu đọc ghi vào bộ nhớ cùng một thời điểm 1/ không thể xảy ra 2/ dữ liệu sẽ bị sai lệch hoặc không hợp lệ 3/ không có vấn để gì cả vì có đầu ra đọc dữ liệu và đầu vào ghi dữ liệu A: 2 Hoạt động của RAM: kích hoạt một hàng đọc/ghi dữ liệu. Nếu thực hiện cả 2 cùng lúc sẽ làm các bit bị xáo trộn. Ngoài ra cần phải 2 địa chỉ cho quá trình ghi đọc
  12. Truy nhập bộ nhớ Q: làm thế nào để tính địa chỉ với giá trị tức thì 1. Cộng gía trị tức thì và giá trị thanh ghi sử dụng ALU. 2. Số có dấu tức thì được sử dụng trong ALU 3. Cộng giá trị tực thì có dấu và giá trị thanh ghi sử dụng ALU A: 2. Cộng giá trị tức thì có dấu và giá trị thanh ghi sử dụng ALU Để tính địa chỉ cần cộng giá trị từ thanh ghi và giá trị tức thì bằng ALU. Cần mạch tổ hợp hợp để biểu diễn số có dấu 16 bit thành số 32 bit
  13. Kết nối các thành phần • Bộ tính toán ALU – tải lệnh – tính toán giá trị tiếp theo của PC – đọc từ tệp thanh ghi – thực thi tính toán Note: hầu hết các lệnh – ghi lại tệp thanh ghi đều dùng hết các khối • Truy nhập bộ nhớ (load/store) của bộ sử lý ! – tải lệnh – tính toán giá trị tiếp theo củaPC – đọc từ tệp thanh ghi – tính toán địa chỉ – Read/Write dữ liệu bộ – Write dữ liệu vào tệp thanh ghi • Nạp lệnh (branch) – tải lệnh – tính toán giá trị tiếp theo của PC – đọc từ tệp thanh ghi Tính toán địa chỉ rẽ nhánh: không sử dụng ALU cho phép toán so sánh và tính toán địa chỉ cùng một thời điểm. – thực thi các nhánh so sánh – cập nhật lại giá trị của PC
  14. Kết nối RF và ALU
  15. Kết nối ALU với bộ nhớ
  16. Kết nối giá trị tức thời để tính toán địa chỉ
  17. Thêm vào bộ dồn kênh Lựa chọn tín hiệu bằng Bộ dồn kênh MUX
  18. Định tuyến tính hiệu (control) • MUX lựa chọn ALU input (tệp thanh ghi hoặc các giá trị hằng số có dấu tức thời) • MUX lựa chọn tệp thanh ghi ghi dữ liệu (kết quả tính toán được tại ALU hoặc dữ liệu từ bộ nhớ)
  19. Các tín hiệu điều khiển xác định hoạt động: Lệnh addi Định nghĩa về tín hiệu điều khiển: ALUSrc (ALU source) và MemtoReg (Memory to Register File)
  20. Các tín hiệu điều khiển xác định hoạt động: lệnh add
  21. Xây dựng các khối rẽ nhánh có điều kiện Các bước thực hiện? – Mặc định: PC = PC + 4 – Trường hợp có điều kiện : PC = PC + 4 + [Sign-extended immediate << 2] if branch
  22. Tín hiệu PCSrc Các bước thực hiện? – Mặc định: PC = PC + 4 – Trường hợp có điều kiện: PC= PC+4+[Sign-extended immediate << 2] if branch
  23. Đường tín hiệu đơn xung nhịp trong MIPS
  24. Các dữ liệu nguồn (dữ liệu lấy ra ở đâu?)
  25. Các dữ liệu đích (dữ liệu đi đến đâu?)
  26. Ví dụ: addi
  27. Lặp lại quá trình
  28. Giải mã lệnh
  29. Giải mã lệnh (trực tiếp)
  30. Giải mã lệnh (các tín hiệu điều khiển)
  31. Giải mã lệnh (R-format)
  32. Giải mã lệnh (load)
  33. Thiết kế đồng bộ theo đồng hồ
  34. Thiết kế đồng bộ theo đồng hồ q Mạch đồng bộ theo đồng hồ: 1 phần tử trạng thái là hợp lệ và ổn định được quy định bởi xung đồng hồ - Phần tử trạng thái - phần tử nhớ - VD. thanh ghi, bộ nhớ lệnh, bộ nhớ dữ liệu. - Kích hoạt theo sườn – các trạng thái thay đối khi có xườn xung q Đọc nội dung của phần tử trạng thái tính giá trị bằng logic tổ hợp ghi kết quả vào phần tử trạng thái q Các phần tử trạng thái được ghi ở tất cả các chu kỳ đồng hồ. State Combinational State element logic element 1 2 clock one clock cycle HUST-FET, 23/05/2021
  35. Đồng hồ ở đâu?
  36. Lệnh addi thực thi như thế nào?
  37. Khi có tín hiệu đồng hồ, biến mới được lưu trữ
  38. Lặp lại quá trình
  39. Ví dụ lệnh: addi
  40. Các tuyến logic và các bộ trễ
  41. Tốc độ xử lý xác định như thế nào?
  42. Tính chu ky đồng hồ Tc – Đường dài nhất q Tính chu kỳ đồng hồ trong trường hợp bỏ qua trễ ở bộ ghép, khối điều khiển, khối mở rộng dấu, khối đọc PC, khối dịch 2, dây dẫn, thời gian thiết lập và giữ. Cho biết độ trễ: - Truy cập bộ nhớ lệnh và bộ nhớ dữ liệu (2ns) - Khối số học logic và bộ cộng (2 ns) - Truy cập tệp thanh ghi (đọc hoặc ghi) (1 ns) Instr. I Mem Reg Rd ALU Op D Mem Reg Wr Total R-type 2 1 2 1 6ns load 2 1 2 2 1 8ns store 2 1 2 2 7ns beq 2 1 2 5ns jump 2 2ns HUST-FET, 23/05/2021
  43. Đánh giá hiệu năng ¡ Thời gian đáp ứng (thời gian thực thi) – là khoảng thời gian giữa thời điểm bắt đầu thực hiên và thời điểm hoàn thành một nhiệm vụ ü Quan trọng đối với 1 người sử dụng yêu cầu hệ thống thức hiện 1 nhiệm vụ ¡ Thông lượng (dải thông) – là tổng số nhiệm vụ có thể được hoàn thành trong 1 khoảng thời gian ü Quan trọng đối với người điều hành trung tâm dự liệu ¡ Cần các hệ đo lường khác nhau cho hiệu năng của máy tính
  44. Cách tính hiệu năng v Hiệu năng (tốc độ) của máy tính X: v Máy tính X nhanh hơn máy tính Y, n lần: v Để tối đa hóa hiệu năng, cần tối thiểu hóa thời gian thực hiện v Giảm thời gian đáp ứng thường sẽ tăng thông lượng
  45. Đo hiệu năng – Đo thời gian thực hiện Thời gian dùng để tính hiệu năng ¡ Thời gian đáp ứng (thời gian đồng hồ, thời gian đã trôi qua): ¡ Tổng thời gian hoàn thành 1 nhiệm vụ ¡ Bao gồm: thời gian truy cập đĩa, bộ nhớ, thời gian vào ra, thời gian cho hệ điều hành ¡ Thời gian bộ xử lý (CPU time) ¡ Thời gian CPU người dùng ¡ Thời gian CPU hệ thống ¡ Thời gian CPU – thời gian bộ xử lý dùng để thực hiện 1 nhiệm vụ ¡ Không bao gồm thời gian chờ vào/ra hay thời gian thực hiện các chương trình khác ¡ Thời gian CPU cho 1 chương trình, Tcpu được tính từ số chu kỳ đồng hồ CPU thưc hiện chương trình P và thời gian 1 chu kỳ đồng hồ
  46. Máy tính A với xung đồng hồ 2GHz thực hiện 1 chương trình hết 10 giây. Để thực hiện chương trình đó trong 6 giây bằng máy tính B, ta cần tăng tốc độ xung đồng hồ của máy B. Tuy nhiên, tăng tốc độ xung Ví dụ đồng hồ cũng làm tăng số chu kỳ cần thiết lên 1,2 lần. Xác định tốc độ xung đồng hồ máy tính B ¡ Công thức để tính thời gian CPU, khi máy tính A thực hiện chương trình: ¡ Số chu kỳ máy tính A dùng để thực hiện chương trình: ¡ Số chu kỳ máy tính B dùng để thực hiện chương trình: ¡ Tốc độ đồng hồ của máy tính B: ¡ Hiệu năng có thể cải thiện bằng cách giảm số chu kỳ 1 xung đồng hồ hoặc giảm số chu kỳ cần thiết để thực hiện chương trình
  47. Số xung đồng hồ ¡ Số xung đồng hồ thực hiện 1 chương trình: ¡ Trong đó: ¡ I là số chỉ thị máy cần thực hiện trong chương trình ¡ CPI (eng. Clock cycles per Instruction) là số xung đồng hồ trung bình cần để thực thi 1 chỉ thị máy, ¡ CPI có thể dùng để so sánh các máy tính khác nhau cùng triển khai 1 kiến trúc tập lệnh. ¡ Ví dụ: có 3 loại lệnh A, B, C khác nhau trong 1 kiến trúc tập lệnh. Mỗi lệnh trong từng loại có CPI tương ứng: CPI for this instruction class A B C CPI 1 2 3 HUST-FET, 23/05/2021
  48. So sánh dựa trên CPI ¡ Khi 2 máy tính A, B cùng thực hiện 1 chương trình, chúng cùng thực hiện I chỉ thị. ¡ Do đó: ¡ Máy A nhanh hơn máy B: Máy tính A và B cùng triển khai 1 kiến trúc tập lệnh. Máy A có chu kỳ đồng hồ là 250ps, và CPI hiệu dụng cho 1 chương trình P là 2,0. Máy B có chu kỳ đồng hồ là 500ps, và CPI hiệu dụng cho cùng 1 chương trình P là 1,2. Máy tính nào nhanh hơn và nhanh hơn bao nhiêu?
  49. CPI hiệu dụng (trung bình) ¡ CPI hiệu dụng được tính bằng cách xét tất cả các lớp chỉ thị có trong chương trình và lấy trung bình với trọng số là tỉ lệ xuất hiện của lớp chỉ thị trong chương trình ¡ Trong đó: ¡ ICi là tỉ lệ (%) số chỉ thị thuộc loại i được thực thi ¡ CPIi là số chu kỳ (trung bình) cần để thực hiện 1 chỉ thị thuộc thuộc loại i ¡ n là số loại chỉ thị ¡ CPI hiệu dụng phụ thuộc vào tỉ lệ chỉ thị trong một chương trình (tần suất động của các chỉ thị trong 1 hoặc nhiều chương trình)
  50. 52 So sánh đoạn mã chương trình ¡ Người thiết kế một máy tính triển khai kiến trúc tập lệnh gồm 3 loại chỉ thị A, B, C được CPI như sau: A B C CPI 1 2 3 ¡ Với 1 câu lệnh ở ngôn ngữ bậc cao, người viết trình biên dịch có thể lựa chọn 2 đoạn chỉ thị máy gồm có tần suất các loại chỉ thị như sau: Đoạn mã A B C 1 2 1 2 2 4 1 1 ¡ Đoạn mã nào gồm nhiều chỉ thị hơn? Đoạn mã nào nhanh hơn? Tính CPI của từng đoạn mã. HUST-FET, 23/05/2021
  51. 53 So sánh đoạn mã chương trình Đoạn mã A B C A B C 1 2 1 2 CPI 1 2 3 2 4 1 1 ¡ Đoạn mã 1 dùng 5 chỉ thị, đoạn mã 2 dùng 6 chỉ thị ¡ Số xung đồng hồ để thực hiện mỗi đoạn mã được tính như sau: ¡ Trong đó I1,i, I2,i là số lượng chỉ thị loại i trong đoạn mã 1 và 2 tương ứng ¡ Như vậy đoạn mã 1 chậm hơn đoạn mã 2, mặc dù dùng ít chỉ thị hơn HUST-FET, 23/05/2021
  52. Cải tiến hiệu năng q Cho một máy tính thực hiện 1 chương trình gồm 4 loại chỉ thị máy có các thông số về tần suất và CPI như sau: Op Tần suất (ICi) CPIi ICi x CPIi ALU 50% 1 Load 20% 5 Store 10% 3 Branch 20% 2  = q Nếu ta có bộ đệm dữ liệu làm giảm thời gian nạp (Load) xuống 2 chu kỳ, máy tính sẽ nhanh lên bao nhiêu lần? q Nếu ta có khối dự báo rẽ nhánh cho phép tiết kiệm 1 chu kỳ khi rẽ nhánh, hiệu năng sẽ thế nào? q Nếu ta có 2 khối ALU thực hiện 2 chỉ thị ALU đồng thời?
  53. Hiệu năng thiết kế đơn xung nhịp Độ trễ logic khi Truy cập lệnh 2 ns Đọc thanh ghi 1 ns Hoạt động ALU 2 ns Truy cập bộ nhớ DL 2 ns Ghi thanh ghi 1 ns Tổng 8 ns Tốc độ đồng hồ = 125 MHz Các loại lệnh: R-type 44% 6 ns Load 24% 8 ns Store 12% 7 ns Branch 18% 5 ns Jump 2% 4 ns Thời gian trung bình 6.38 ns HUST-FET, 23/05/2021 CPI = 1.
  54. 56 Thiết kế đơn xung nhịp – Ưu nhược điểm Cycle 1 Cycle 2 Clk lw sw Waste q Sử dụng chu kỳ đồng hồ không hiệu quả – chu kỳ đồng hồ được đặt theo lệnh chậm nhất. q Các lệnh phức tạp như lệnh nhân dấu phẩy động: Tốn diện tích thiết kế vì cần nhân đôi một số khối chức năng (VD. bộ cộng) vì chúng không thể được chia sẻ trong cùng 1 chu kỳ đồng hồ q Đơn giản và dễ hiểu HUST-FET, 23/05/2021
  55. 57 Thiết kế đa xung nhịp ¡ Chia lệnh thành các pha thực hiện: IF, ID, EX, MEM, WB. Mỗi pha thực hiện trong 1 chu kỳ xung nhịp ¡ Thời gian thực hiện (= số pha) của mỗi lệnh được điều chỉnh tùy thuộc độ phức tạp của lệnh ¡ Các khối chức năng được chia sẻ giữa các pha khác nhau của lệnh do một khối chức năng cụ thể không cần trong toàn bộ các pha thực hiện của lệnh HUST-FET, 23/05/2021
  56. Hiệu năng thiết kế đa xung nhịp Các loại lệnh sử dụng số chu kỳ khác nhau R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 2 cycles Đóng góp vào số chu kỳ trung bình cần cho một lệnh: R-type Load Store Branch Jump ___ CPI trung bình  HUST-FET, 23/05/2021
  57. 59 Hiệu năng thiết kế đa xung nhịp Các loại lệnh sử dụng số chu kỳ khác nhau R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 2 cycles Đóng góp vào số chu kỳ trung bình cần cho một lệnh: R-type 0.44 4 = 1.76 Load 0.24 5 = 1.20 Store 0.12 4 = 0.48 Branch 0.18 3 = 0.54 Jump 0.02 2 = 0.04 ___ CPI trung bình  4.02 HUST-FET, 23/05/2021
  58. 60 Thiết kế đơn xung nhịp Clock rate = 125 MHz CPI = 1 (125 MIPS) HUST-FET, 23/05/2021
  59. 61 Thiết kế đa xung nhịp Clock rate = 500 MHz CPI  4 ( 125 MIPS) 2 HUST-FET, 23/05/2021
  60. So sánh đánh giá thiết kế đơn xung nhịp Instruction access 2 ns Register read 1 ns Đồng hồ tốc độ 125 MHz là bình thường ALU operation 2 ns Data cache access 2 ns Register write 1 ns Total 8 ns Single-cycle clock = 125 MHz So sánh độ trễ thực hiện 1 lệnh: Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline có độ trễ khoảng: 0.4 ns/cycle 20 cycles = 8 ns Lưu lượng của bộ xử lý có pipeline tốt hơn rất nhiều: Tốt hơn tới 20 lần với các bộ xử lý phát hành đơn lệnh Tốt hơn tới 100 lần với các bộ xử lý phát hành đa lệnh HUST-FET, 23/05/2021
  61. 63 So sánh đánh giá thiết kế đa xung nhịp Cycle time = 2 ns Clock rate = 500 MHz R-type 44% 4 cycles So sánh độ trễ thực hiện 1 lệnh: Load 24% 5 cycles Store 12% 4 cycles Một bộ xử lý 2.5 GHz với 20 giai đoạn pipeline Branch 18% 3 cycles có độ trễ khoảng: 0.4 ns/cycle 20 cycles = 8 ns Jump 2% 2 cycles Contribution to CPI Lưu lượng của bộ xử lý có pipeline R-type 0.44 4 = 1.76 tốt hơn rất nhiều: - Tốt hơn tới 20 lần với các bộ xử lý phát Load 0.24 5 = 1.20 hành đơn lệnh Store 0.12 4 = 0.48 - Tốt hơn tới 100 lần với các bộ xử lý phát Branch 0.18 3 = 0.54 hành đa lệnh Jump 0.02 2 = 0.04 ___ Average CPI  4.02 HUST-FET, 23/05/2021