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

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

pptx69 trang | Chia sẻ: huongthu9 | Lượt xem: 474 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3: Bộ xử lýKhối điều khiển và Đường dữ liệuNội dungThà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ệnhMaterial that is not in this lecture Readings from the book – ALU Function field (fig.4.13 in 4.4)– Some data path details – The book has excellent descriptions of this topic.Please read the book before watching this lecture.The reading assignment is on the website.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 jalCác hoạt động chính của bộ xử lý?Nạp lệnh: tìm ra lệnh và tải lệnhTính toán trên ALU: tìm ra toán tử và thực thiTruy nhập bộ nhớ: tìm ra địa chỉ và truy nhậpThiết kế đơn xung nhịpThiết kế đầu tiên sẽ xử lý một lệnh trong một 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ếpBộ 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)Thiết kế đơn xung nhịpThiết kế xử lý một lệnh trong một 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.Sơ đồ khốiHUST-FET, 22/08/20218Triển khai các lệnhLệnh truy cập bộ nhớ: lw, sw Lệnh số học và logic: add, sub, and, or, sltLệnh điều khiển dòng chương trình: beq, jTriển khai các pha hoạt độngDùng thanh ghi PC để lưu địa chỉ lệnh Đọc lệnh từ bộ nhớ, và cập nhật giá trị PCGiải mã lệnh và đọc các thanh ghiThực hiện lệnhLưu kết quảInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionFetchPC = PC+4DecodeExec, StoreStages of Execution on Datapathinstructionmemory+4rtrsrdregistersALUDatamemoryimm1. InstructionFetch2. Decode/ RegisterRead3. Execute4. Memory5. Register WritePCNạp lệnhTheo 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 PCNạp lệnhHUST-FET, 22/08/202111Đọc lệnh tại địa chỉ (lưu trong) PC từ bộ nhớ lệnh (eng. Instruction Memory) Cập nhật giá trị PC tới địa chỉ của lệnh kế tiếpReadAddressInstructionInstructionMemoryAddPC4PC được cập nhật ở mọi chu kỳ  không cần tín hiệu điều khiển ghi PC.Đọc từ bộ nhớ lệnh được thực hiện bằng logic tổ hợpInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionGiải mã lệnhHUST-FET, 22/08/202112Chuyển các bit thuộc trường mã lệnh và trường mã chức năng tới khối điều khiểnInstructionControlUnitInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionGiải mã lệnh (lệnh R) Giải mã lệnh (Lệnh trực tiếp)Giải mã lệnh (các tín hiệu điều khiển)Giải mã lệnh (R-format)Giải mã lệnh (load) Nạp toán hạngHUST-FET, 22/08/202118Đọc 2 giá trị toán hạng nguồn từ tệp thanh ghiChỉ số các thanh ghi nằm trong lệnhMở rộng dấu cho toán hạng trực tiếp IWrite DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionThực hiện lệnhHUST-FET, 22/08/202119Thực hiện phép toán (mã hóa bới op và funct) trên giá trị toán hạng opA và opBCác phép toán của lệnh R và IPhép toán tính địa chỉ trong lệnh lw, swPhép toán so sánh trong lệnh beq, bneInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionopBALUoverflowzeroALU controlopAresultTính toán trên ALU (các chỉ thị lệnh dạng R-type)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)Tính toán trên ALUCá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) Ghi kết quảHUST-FET, 22/08/202122Từ ALU với các lệnh tính toánTừ bộ nhớ với các lệnh truy cập bộ nhớ Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2RegWriteInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionTruy cập bộ nhớHUST-FET, 22/08/202123MemWriteMemReadDataMemoryAddressWrite DataRead DataĐịa chỉ theo byteDữ liệu từ thanh ghi rtInstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionTruy 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 ghiQ: Điều gì xảy ra nếu đọc ghi vào bộ nhớ cùng một thời điểm1/ không thể xảy ra2/ 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ệuA: 2Hoạ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 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 – ghi lại tệp thanh ghi• Truy nhập bộ nhớ (load/store) – 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 PCKết nối RF và ALU Kết nối ALU với bộ nhớKết nối giá trị tức thời để tính toán địa chỉ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Đị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ớ)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) Các tín hiệu điều khiển xác định hoạt động: lệnh addXây dựng các khối rẽ nhánh có điều kiệnCá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 Tín hiệu PCSrcCá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 Đường tín hiệu đơn xung nhịp trong MIPS Các dữ liệu nguồn (dữ liệu lấy ra ở đâu?)Các dữ liệu đích (dữ liệu đi đến đâu?) Ví dụ: addiLặp lại quá trìnhThực hiện lệnh loại R và ghi kết quảHUST-FET, 22/08/202140Lệnh định dạng R (add, sub, slt, and, or)Thực hiện phép toán (mã hóa bới op và funct) trên giá trị toạn hạng trong rs và rtGhi kết quả vào tệp thanh ghi (tại vị trí rd)InstructionWrite DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUoverflowzeroALU controlRegWriteR-type:3125201550oprsrtrdfunctshamt10Tệp thanh ghi không được ghi ở mọi chu kỳ  cần tín hiệu điều khiển ghi riêng biệt.InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionĐọc ghi bộ nhớHUST-FET, 22/08/202141Địa chỉ bộ nhớ tính ở bước EX: cộng thanh ghi cơ sở (đọc từ tệp thanh ghi khi giải mã lệnh) với giá trị offsetghi (sw) giá trị (được đọc từ tệp thanh ghi khi giải mã lệnh) vào bộ nhớ dữ liệuđọc (lw) giá trị từ bộ nhớ dữ liệu vào tệp thanh ghiInstructionWrite DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUoverflowzeroALU controlRegWriteDataMemoryAddressWrite DataRead DataSignExtendMemWriteMemRead1632InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionLệnh rẽ nhánh có điều kiệnHUST-FET, 22/08/202142So sánh toán hạng đọc từ tệp thanh ghi khi giải mãTính địa chỉ đích bằng cách cộng giá trị PC (sau khi cập nhât) với trường offset 16 bit đã được mở rộng dấu.InstructionWrite DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUzeroALU controlSignExtend1632Shiftleft 2Add4AddPCBranchtargetaddress(to branch control logic)InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionLệnh nhảy không điều kiệnHUST-FET, 22/08/202143Thay 28 bit thấp của PC bằng 26 bít thấp của lệnh được nạp và 2 bít 0ReadAddressInstructionInstructionMemoryAddPC4Shiftleft 2Jumpaddress26428InstructionFetchInstructionDecodeOperandFetchExecuteResultStoreNextInstructionĐường dữ liệu: Lệnh R, I, lw,swHUST-FET, 22/08/202144MemtoRegReadAddressInstructionInstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroALU controlRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632ALUSrc Đường dữ liệu: Lệnh rẽ nhánhHUST-FET, 22/08/202145Instr[5-0]ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteSignExtend1632ALUSrcShiftleft 2AddPCSrcRegDstALUcontrol110001ALUOpInstr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchĐường dữ liệu: Lệnh R,I, lw, sw, beq, bneHUST-FET, 22/08/202146ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBộ xử lý đơn xung nhịp (2) – Lệnh RHUST-FET, 22/08/202147ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBXL đơn xung nhịp (3) – Lệnh lw, swHUST-FET, 22/08/202148ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBXL đơn xung nhịp (3) – Lệnh lw, swHUST-FET, 22/08/202149ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBXL đơn xung nhịp (4) – Lệnh rẽ nhánhHUST-FET, 22/08/202150ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBXL đơn xung nhịp (4) – Lệnh rẽ nhánhHUST-FET, 22/08/202151ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchBXL đơn xung nhịp – Thêm lệnh nhảyHUST-FET, 22/08/202152ReadAddressInstr[31-0]InstructionMemoryAddPC4Write DataRead Addr 1Read Addr 2Write AddrRegisterFileRead Data 1Read Data 2ALUovfzeroRegWriteDataMemoryAddressWrite DataRead DataMemWriteMemReadSignExtend1632MemtoRegALUSrcShiftleft 2AddPCSrcRegDstALUcontrol11100001ALUOpInstr[5-0]Instr[15-0]Instr[25-21]Instr[20-16]Instr[15 -11]ControlUnitInstr[31-26]BranchShiftleft 201Jump32Instr[25-0]26PC+4[31-28]28PC + 4Thiết kế đồng bộ theo đồng hồHUST-FET, 22/08/2021Mạ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ó sườn xungĐọ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áiCác phần tử trạng thái được ghi ở tất cả các chu kỳ đồng hồ. Stateelement1Stateelement2Combinationallogicclockone clock cycleĐồng hồ ở đâu?Ví dụ: Lệnh addi thực thi như thế nào? Khi có tín hiệu đồng hồ, biến mới được lưu trữLặp lại quá trìnhVí dụ lệnh: addiCác tuyến logic và các bộ trễTốc độ xử lý xác định như thế nào? Tính chu ky đồng hồ Tc – Đường dài nhấtHUST-FET, 22/08/2021Instr.I MemReg RdALU OpD MemReg WrTotalR-type21216nsload212218nsstore21227nsbeq2125nsjump22ns 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)Hiệu năng thiết kế đơn xung nhịpHUST-FET, 22/08/2021Độ trễ logic khiTruy cập lệnh 2 nsĐọc thanh ghi 1 nsHoạt động ALU 2 nsTruy cập bộ nhớ DL 2 nsGhi thanh ghi 1 ns Tổng 8 nsTốc độ đồng hồ = 125 MHzCác loại lệnh:R-type 44% 6 ns Load 24% 8 nsStore 12% 7 nsBranch 18% 5 nsJump 2% 4 ns Thời gian trung bình 6.38 nsCPI = 1. Thiết kế đơn xung nhịp – Ưu nhược điểmHUST-FET, 22/08/202163Sử 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ểuClklwswWasteCycle 1Cycle 2Thiết kế đa xung nhịpHUST-FET, 22/08/202164Chia 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ịpThờ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ệnhCá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ệnhHiệu năng thiết kế đa xung nhịpHUST-FET, 22/08/2021Các loại lệnh sử dụng số chu kỳ khác nhauR-type 44% 4 cycles Load 24% 5 cyclesStore 12% 4 cyclesBranch 18% 3 cyclesJump 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 Hiệu năng thiết kế đa xung nhịpHUST-FET, 22/08/202166Các loại lệnh sử dụng số chu kỳ khác nhauR-type 44% 4 cycles Load 24% 5 cyclesStore 12% 4 cyclesBranch 18% 3 cyclesJump 2% 2 cyclesTính 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.20Store 0.124 = 0.48Branch 0.183 = 0.54Jump 0.022 = 0.04 _____________________________ CPI trung bình  4.02 So sánh hiệu năng xử lýSo sánh hiệu năng xử lý của thiết kế đa xung nhịp và thiết đơn xung nhịp, biết tần suất xuất hiện các lệnh như sau:lw : 20%sw: 20%R - : 45 %beq: 15%Thiết kế đơn xung nhịpHUST-FET, 22/08/202168Clock rate = 125 MHzCPI = 1 (125 MIPS)Thiết kế đa xung nhịpHUST-FET, 22/08/202169Clock rate = 500 MHzCPI  4 ( 125 MIPS)2

Các file đính kèm theo tài liệu này:

  • pptxbai_giang_kien_truc_may_tinh_chuong_3_bo_xu_ly_khoi_dieu_khi.pptx