Thiết kế bộ xử lý theo kiến trúc MIPS

Thực hiện bộxửlýMIPS cơbản

2. Thiết kếkhối datapath

3. Thiết kếcontrol unit

4. Kỹthuật đường ống lệnh

pdf74 trang | Chia sẻ: Mr Hưng | Lượt xem: 1338 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Thiết kế bộ xử lý theo kiến trúc MIPS, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
anh ghi nguồn thứ hai •  Lệnh lw/sw: Hằng số imm 16-bit được mở rộng thành 32-bit (tính địa chỉ) •  MemtoReg: tín hiệu điều khiển chọn dữ liệu đưa về thanh ghi đích: •  Lệnh kiểu R: lấy kết quả từ ALU result •  Lệnh lw: dữ liệu đọc (Read data) từ bộ nhớ dữ liệu NKK-HUST Datapath đơn giản cho các lệnh R/lw/sw/branch Jan2015 Computer Architecture - MIPS 25 •  PCSrc: tín hiệu điều khiển chọn giá trị cập nhật PC •  Không rẽ nhánh: PC ß PC+4 •  Rẽ nhánh: PC ß (PC+4) + (hằng số imm đã mở rộng thành 32-bit << 2) NKK-HUST 3. Thiết kế Control Unit n  Đơn vị điều khiển có hai phần: n  Bộ điều khiển ALU n  Bộ điều khiển chính Jan2015 Computer Architecture - MIPS 26 NKK-HUST Thiết kế bộ điều khiển ALU n  ALU được sử dụng để: n  Load/Store: F = add (xác định địa chỉ bộ nhớ dữ liệu) n  Branch: F = subtract (so sánh) n  Các lệnh số học/logic : F phụ thuộc vào funct code ALU control lines Function 0000 AND 0001 OR 0010 add 0110 subtract 0111 set-on-less-than 1100 NOR Jan2015 Computer Architecture - MIPS 27 NKK-HUST Tín hiệu điều khiển ALU n  Bộ điều khiển ALU sử dụng mạch logic tổ hợp: n  Đầu vào: 2-bit ALUOp được tạo ra từ opcode của lệnh và 6-bit của function code n  Đầu ra: các tín hiệu điều khiển ALU (ALU control) gồm 4 bit Opcode ALUOp Operation funct ALU function ALU control lw 00 load word XXXXXX add 0010 sw 00 store word XXXXXX add 0010 beq 01 branch equal XXXXXX subtract 0110 R-type 10 add 100000 add 0010 subtract 100010 subtract 0110 AND 100100 AND 0000 OR 100101 OR 0001 set-on-less-than 101010 set-on-less-than 0111 Jan2015 Computer Architecture - MIPS 28 NKK-HUST Thiết kế bộ điều khiển chính n  Các tín hiệu điều khiển được tạo ra từ lệnh 0 rs rt rd shamt funct 31:26 5:0 25:21 20:16 15:11 10:6 35 or 43 rs rt imm 31:26 25:21 20:16 15:0 4 rs rt imm 31:26 25:21 20:16 15:0 R-type lw/sw beq opcode always read read, except for load write for R-type and load sign-extend and add Jan2015 Computer Architecture - MIPS 29 NKK-HUST Datapath và Control Unit Jan2015 Computer Architecture - MIPS 30 NKK-HUST Các tín hiệu điều khiển Jan2015 Computer Architecture - MIPS 31 Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1 RegDst Số hiệu thanh ghi đích là các bit 20:16 (rt) Số hiệu thanh ghi đích là các bit 15:11 (rd) Branch Không có lệnh rẽ nhánh beq Có lệnh rẽ nhánh beq (Branch =1) & (Zero=1): rẽ nhánh xảy ra (Branch =1) & (Zero=0): rẽ nhánh không xảy ra RegWrite Không làm gì cả Ghi dữ liệu trên đầu vào Write Data ở tập thanh ghi đến thanh ghi đích ALUSrc Toán hạng thứ hai của ALU lấy từ thanh ghi nguồn thứ hai (Read data 2) Toán hạng thứ hai của ALU là giá trị 16 bit thấp của lệnh (bits 15:0) được mở rộng có dấu thành 32-bit PCSrc PC ß PC+4 PC ß địa chỉ đích NKK-HUST Các tín hiệu điều khiển (tiếp) Jan2015 Computer Architecture - MIPS 32 Tên tín hiệu Hiệu ứng khi tín hiệu = 0 Hiệu ứng khi tín hiệu = 1 MemRead Không làm gì cả Nội dung ngăn nhớ dữ liệu, được xác định bởi địa chỉ do ALU tính, được đưa ra đầu ra Read data của bộ nhớ dữ liệu MemWrite Không làm gì cả Dữ liệu trên đầu vào Write Data của bộ nhớ dữ liệu được ghi vào ngăn nhớ có địa chỉ do ALU tính MemtoReg Giá trị được đưa đến đầu vào Write data của tập thanh ghi là từ ALU result Giá trị được đưa đến đầu vào Write data của tập thanh ghi là từ bộ nhớ dữ liệu NKK-HUST Thực hiện lệnh số học/logic kiểu R Jan2015 Computer Architecture - MIPS 33 NKK-HUST Thực hiện lệnh Load Jan2015 Computer Architecture - MIPS 34 NKK-HUST Thực hiện lệnh beq Jan2015 Computer Architecture - MIPS 35 NKK-HUST Thực hiện lệnh Jump n  Bits 31:26 là mã thao tác = 000010 n  Bits 25:0: phần địa chỉ n  PC nhận giá trị sau: n  Địa chỉ đích = PC3128 : (address << 2) n  4 bit bên trái là của PC cũ n  26-bit của lệnh jump (bits 25:0) n  2 bit cuối là 00 n  Cần thêm tín hiệu điều khiển được giải mã từ opcode 2 address 31:26 25:0 Jan2015 Computer Architecture - MIPS 36 NKK-HUST Datapath thêm cho lệnh jump Jan2015 Computer Architecture - MIPS 37 NKK-HUST Thiết kế đơn chu kỳ (single-cycle) n  Chu kỳ xung nhịp có độ dài bằng nhau với tất cả các lệnh à chu kỳ xung nhịp được xác định bởi thời gian thực thi lệnh lâu nhất n  Ví dụ: Lệnh load sử dụng 5 đơn vị chức năng: Bộ nhớ lệnh → tập thanh ghi → ALU → bộ nhớ dữ liệu → tập thanh ghi n  Thời gian thực hiện chương trình tăng à hiệu năng giảm n  Chúng ta sẽ tăng hiệu năng bằng kỹ thuật đường ống lệnh (pipelining) Jan2015 Computer Architecture - MIPS 38 NKK-HUST 4. Đường ống lệnh ở MIPS 5 công đoạn: 1.  IF: Instruction fetch from memory – Nhận lệnh từ bộ nhớ 2.  ID: Instruction decode & register read – Giải mã lệnh và đọc thanh ghi 3.  EX: Execute operation or calculate address – Thực hiện thao tác hoặc tính toán địa chỉ 4.  MEM: Access memory operand – Truy nhập toán hạng bộ nhớ 5.  WB: Write result back to register – Ghi kết quả trả về thanh ghi Jan2015 Computer Architecture - MIPS 39 NKK-HUST Hiệu năng của đường ống n  Giả thiết thời gian cho các công đoạn: n  100ps với đọc hoặc ghi thanh ghi n  200ps cho các công đoạn khác n  Thời gian của datapath đơn chu kỳ với một số lệnh: Instr Instr fetch Register read ALU op Memory access Register write Total time lw 200ps 100 ps 200ps 200ps 100 ps 800ps sw 200ps 100 ps 200ps 200ps 700ps R-format 200ps 100 ps 200ps 100 ps 600ps beq 200ps 100 ps 200ps 500ps Jan2015 Computer Architecture - MIPS 40 NKK-HUST Hiệu năng của đường ống Single-cycle (Tc= 800ps) Pipelined (Tc= 200ps) Jan2015 Computer Architecture - MIPS 41 NKK-HUST Độ tăng tốc của đường ống n  Nếu tất cả các công đoạn có thời gian thực hiện như nhau và số lệnh của chương trình là lớn: Thời gian thực hiện pipeline = Thời gian thực hiện tuần tự Số công đoạn Jan2015 Computer Architecture - MIPS 42 NKK-HUST Thiết kế đường ống lệnh n  Kiến trúc tập lệnh MIPS được thiết kế phù hợp với kỹ thuật đường ống n  Tất cả các lệnh là 32-bits n  Dễ dàng để nhận và giải mã lệnh trong một chu kỳ n  Intel x86: lệnh từ 1 đến 17 bytes n  Có ít dạng lệnh và thông dụng n  Có thể giải mã và đọc thanh ghi trong một bước n  Địa chỉ hóa cho các lệnh load/store n  Có thể tính địa chỉ trong công đoạn thứ 3, truy cập bộ nhớ công đoạn thứ 4 n  Toán hạng bộ nhớ nằm thẳng hàng trên các băng nhớ n  Truy cập bộ nhớ chỉ mất một chu kỳ Jan2015 Computer Architecture - MIPS 43 NKK-HUST Các mối trở ngại (Hazard) của đường ống lệnh n  Hazard: Tình huống ngăn cản bắt đầu của lệnh tiếp theo ở chu kỳ tiếp theo n  Hazard cấu trúc: do tài nguyên được yêu cầu đang bận n  Hazard dữ liệu: cần phải đợi để lệnh trước hoàn thành việc đọc/ghi dữ liệu n  Hazard điều khiển: do rẽ nhánh gây ra Jan2015 Computer Architecture - MIPS 44 NKK-HUST Hazard cấu trúc n  Xung đột khi sử dụng tài nguyên n  Trong đường ống của MIPS với một bộ nhớ dùng chung n  Lệnh Load/store yêu cầu truy cập dữ liệu n  Nhận lệnh cần trì hoãn cho chu kỳ đó n  Bởi vậy, datapath kiểu đường ống yêu cầu bộ nhớ lệnh và bộ nhớ dữ liệu tách rời (hoặc cache lệnh/cache dữ liệu tách rời) Jan2015 Computer Architecture - MIPS 45 NKK-HUST Hazard dữ liệu n  Lệnh phụ thuộc vào việc hoàn thành truy cập dữ liệu của lệnh trước đó add $s0, $t0, $t1 sub $t2, $s0, $t3 Jan2015 Computer Architecture - MIPS 46 NKK-HUST Forwarding (gửi vượt trước) n  Sử dụng kết quả ngay sau khi nó được tính n  Không đợi đến khi kết quả được lưu đến thanh ghi n  Yêu cầu có đường kết nối thêm trong datapath Jan2015 Computer Architecture - MIPS 47 NKK-HUST Hazard dữ liệu với lệnh load n  Không phải luôn luôn có thể tránh trì hoãn bằng cách forwarding n  Nếu giá trị chưa được tính khi cần thiết n  Không thể chuyển ngược thời gian n  Cần chèn bước trì hoãn (stall hay bubble) Jan2015 Computer Architecture - MIPS 48 NKK-HUST Lập lịch mã để tránh trì hoãn n  Thay đổi trình tự mã để tránh sử dụng kết quả load ở lệnh tiếp theo n  Mã C: a = b + e; c = b + f; lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) stall stall lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) 11 cycles 13 cycles Jan2015 Computer Architecture - MIPS 49 NKK-HUST Hazard điều khiển n  Rẽ nhánh xác định luồng điều khiển n  Nhận lệnh tiếp theo phụ thuộc vào kết quả rẽ nhánh n  Đường ống không thể luôn nhận đúng lệnh n  Vẫn đang làm ở công đoạn giải mã lệnh (ID) của lệnh rẽ nhánh n  Với đường ống của MIPS n  Cần so sánh thanh ghi và tính địa chỉ đích sớm trong đường ống n  Thêm phần cứng để thực hiện việc đó trong công đoạn ID Jan2015 Computer Architecture - MIPS 50 NKK-HUST Trì hoãn khi rẽ nhánh n  Đợi cho đến khi kết quả rẽ nhánh đã được xác định trước khi nhận lệnh tiếp theo Jan2015 Computer Architecture - MIPS 51 NKK-HUST Dự đoán rẽ nhánh n  Những đường ống dài hơn không thể sớm xác định dễ dàng kết quả rẽ nhánh n  Cách trì hoãn không đáp ứng được n  Dự đoán kết quả rẽ nhánh n  Chỉ trì hoãn khi dự đoán là sai n  Với MIPS n  Có thể dự đoán rẽ nhánh không xẩy ra n  Nhận lệnh ngay sau lệnh rẽ nhánh (không làm trễ) Jan2015 Computer Architecture - MIPS 52 NKK-HUST MIPS với dự đoán rẽ nhánh không xẩy ra Prediction correct Prediction incorrect Jan2015 Computer Architecture - MIPS 53 NKK-HUST Đặc điểm của đường ống n  Kỹ thuật đường ống cải thiện hiệu năng bằng cách tăng số lệnh thực hiện n  Thực hiện nhiều lệnh đồng thời n  Mỗi lệnh có cùng thời gian thực hiện n  Các dạng hazard: n  Cấu trúc, dữ liệu, điều khiển n  Thiết kế tập lệnh ảnh hưởng đến độ phức tạp của việc thực hiện đường ống Jan2015 Computer Architecture - MIPS 54 NKK-HUST MIPS Datapath được ống hóa theo đơn chu kỳ WB MEM Jan2015 Computer Architecture - MIPS 55 NKK-HUST Nhận xét Jan2015 Computer Architecture - MIPS 56 n  Các lệnh và các dữ liệu được chuyển từ trái sang phải qua 5 công đoạn. n  Có hai ngoại lệ từ phải sang trái: n  Công đoạn write-back đặt kết quả về thanh ghi ở giữa datapath à dẫn đến data hazard n  Chọn giá trị tiếp theo của PC là PC+4 hay địa chỉ đích rẽ nhánh từ công đoạn MEM à dẫn đến control hazard NKK-HUST Các thanh ghi đường ống n  Cần các thanh ghi đặt giữa các công đoạn n  Để giữ thông tin được tạo ra bởi chu kỳ trước Jan2015 Computer Architecture - MIPS 57 NKK-HUST Hoạt động của đường ống n  Dòng lệnh được đưa qua datapath đường ống theo từng chu kỳ. n  Có hai cách thực hiện: n  Đơn chu kỳ (Single-clock-cycle) n  Đa chu kỳ (Multi-clock-cycle) n  Xem xét đường ống đơn chu kỳ với load & store Jan2015 Computer Architecture - MIPS 58 NKK-HUST IF cho lệnh Load, Store Jan2015 Computer Architecture - MIPS 59 NKK-HUST ID cho lệnh Load, Store Jan2015 Computer Architecture - MIPS 60 NKK-HUST EX cho lệnh Load Jan2015 Computer Architecture - MIPS 61 NKK-HUST MEM cho lệnh Load Jan2015 Computer Architecture - MIPS 62 NKK-HUST WB cho lệnh Load Wrong register number Jan2015 Computer Architecture - MIPS 63 NKK-HUST Datapath được hiệu chỉnh cho lệnh Load Jan2015 Computer Architecture - MIPS 64 NKK-HUST EX cho lệnh Store Jan2015 Computer Architecture - MIPS 65 NKK-HUST MEM cho lệnh Store Jan2015 Computer Architecture - MIPS 66 NKK-HUST WB cho lệnh Store Jan2015 Computer Architecture - MIPS 67 NKK-HUST Giản đồ đường ống đa chu kỳ n  Dạng tài nguyên được sử dụng Jan2015 Computer Architecture - MIPS 68 NKK-HUST Giản đồ đường ống đa chu kỳ n  Dạng truyền thống Jan2015 Computer Architecture - MIPS 69 NKK-HUST Giản đồ đường ống đơn chu kỳ n  Công đoạn của đường ống trong chu kỳ đã cho Jan2015 Computer Architecture - MIPS 70 NKK-HUST Điều khiển đường ống (dạng đơn giản) Jan2015 Computer Architecture - MIPS 71 NKK-HUST Điều khiển đường ống n  Các tín hiệu điều khiển được tạo ra từ lệnh n  Như thực hiện đơn chu kỳ Jan2015 Computer Architecture - MIPS 72 NKK-HUST Điều khiển đường ống Jan2015 Computer Architecture - MIPS 73 NKK-HUST Hết Jan2015 Computer Architecture - MIPS 74

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

  • pdfmips_1s_2836.pdf
Tài liệu liên quan