Bài giảng Kiến trúc máy tính - Chương 3: Bộ xử lý khối điều khiển và đường dữ liệu
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
g Hiệu năng (tốc độ) của máy tính X: Máy tính X nhanh hơn máy tính Y, n lần: Để tối đa hóa hiệu năng, cần tối thiểu hóa thời gian thực hiện Giảm thời gian đáp ứng thường sẽ tăng thông lượng x x TimeExecution 1ePerformanc n x y y x imeExecutionT imeExecutionT ePerformanc ePerformanc Đ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ồ ccpuccpu fCTTCT /or Ví dụ 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 Ac A Acpu f CT , , cycles102010210 99,, AcAcpuA fTC AB CC 2,1 GHz T Cf Bcpu B Bc 46 10202,1 9 , , 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 đồ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 Số xung đồng hồ HUST-FET, 04/04/2014 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: CPIIC CPI for this instruction class A B C CPI 1 2 3 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: IpsITCPIIT IpsITCPIIT BcBBcpu AcAAcpu 6005002,1 5002500,2 ,, ,, PerformanceA PerformanceB Tcpu,B Tcpu,A 600 I 500 I 1,2 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? 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) )( 1 i n i i ICCPICPI So sánh đoạn mã chương trình HUST-FET, 04/04/2014 51 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: 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ã 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ã. A B C CPI 1 2 3 Đoạn mã A B C 1 2 1 2 2 4 1 1 So sánh đoạn mã chương trình HUST-FET, 04/04/2014 52 Đ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 Đoạn mã A B C 1 2 1 2 2 4 1 1 9)131241()( 10)231221()( ,2 3 1 2 ,1 3 1 1 i i i i i i ICPIC ICPIC A B C CPI 1 2 3 Cải tiến hiệu năng 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: 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? 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? Nếu ta có 2 khối ALU thực hiện 2 chỉ thị ALU đồng thời? Op Tần suất (ICi) CPIi ICi x CPIi ALU 50% 1 Load 20% 5 Store 10% 3 Branch 20% 2 = Hiệu năng thiết kế đơn xung nhịp HUST-FET, 04/04/2014 Độ 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 CPI = 1. P C P C P C P C P C ALU-type Load Store Branch Jump Not used Not used Not used Not used Not used Not used Not used Not used Not used (and jr) (except jr & jal) Thiết kế đơn xung nhịp – Ưu nhược điểm HUST-FET, 04/04/2014 55 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. 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ồ Đơn giản và dễ hiểu Clk lw sw Waste Cycle 1 Cycle 2 Thiết kế đa xung nhịp HUST-FET, 04/04/2014 56 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 Clock Clock Instr 2 Instr 1 Instr 3 Instr 4 3 cycles 3 cycles 4 cycles 5 cycles Time saved Instr 1 Instr 4 Instr 3 Instr 2 Time needed Time needed Time allotted Time allotted Hiệu năng thiết kế đa xung nhịp HUST-FET, 04/04/2014 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 P C P C P C P C P C ALU-type Load Store Branch Jump Not used Not used Not used Not used Not used Not used Not used Not used Not used (and jr) (except jr & jal) Hiệu năng thiết kế đa xung nhịp HUST-FET, 04/04/2014 58 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 Tính số chu kỳ trung bình cần cho một lệnh: R-type 0.444 = 1.76 Load 0.245 = 1.20 Store 0.124 = 0.48 Branch 0.183 = 0.54 Jump 0.022 = 0.04 _____________________________ CPI trung bình 4.02 P C P C P C P C P C ALU-type Load Store Branch Jump Not used Not used Not used Not used Not used Not used Not used Not used Not used (and jr) (except jr & jal) Thiết kế đơn xung nhịp HUST-FET, 04/04/2014 59 / ALU Data cache Instr cache Next addr Reg file op jta fn inst imm rs (rs) (rt) Data addr Data in 0 1 ALUSrc ALUFunc DataWrite DataRead SE RegInSrc rt rd RegDst RegWrite 32 / 16 Register input Data out Func ALUOvfl Ovfl 31 0 1 2 Next PC Incr PC (PC) Br&Jump ALU out PC 0 1 2 Clock rate = 125 MHz CPI = 1 (125 MIPS) Thiết kế đa xung nhịp HUST-FET, 04/04/2014 60 Clock rate = 500 MHz CPI 4 ( 125MIPS) / 16 rs 0 1 0 1 2 ALU Cache Reg file op jta fn (rs) (rt) Address Data Inst Reg Data Reg x Reg y Reg z Reg PC 4 ALUSrcX ALUFunc MemWrite MemRead RegInSrc 4 rd RegDst RegWrite / 32 Func ALUOvfl Ovfl 31 PCSrc PCWrite IRWrite ALU out 0 1 0 1 0 1 2 3 0 1 2 3 InstData ALUSrcY SysCallAddr / 26 4 rt ALUZero Zero x Mux y Mux 0 1 JumpAddr 4 MSBs / 30 30 SE imm 2 So sánh đánh giá thiết kế đơn xung nhịp HUST-FET, 04/04/2014 Instruction access 2 ns Register read 1 ns ALU operation 2 ns Data cache access 2 ns Register write 1 ns Total 8 ns Single-cycle clock = 125 MHz Đồng hồ tốc độ 125 MHz là bình thường 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 So sánh đánh giá thiết kế đa xung nhịp HUST-FET, 04/04/2014 62 R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 2 cycles Contribution to CPI R-type 0.444 = 1.76 Load 0.245 = 1.20 Store 0.124 = 0.48 Branch 0.183 = 0.54 Jump 0.022 = 0.04 _____________________________ Average CPI 4.02 Cycle time = 2 ns Clock rate = 500 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
File đính kèm:
- bai_giang_kien_truc_may_tinh_chuong_3_bo_xu_ly_khoi_dieu_khi.pdf