Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
1,72 MB
Nội dung
MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH .6 DANH MỤC BẢNG BIỂU .7 LỜI NÓI ĐẦU Chương 1: Giới thiệu ý tưởng xác định tiêu kỹ thuật xử lý MIPS Pipelines 1.1 Nhu cầu cho xử lý MIPS Pipline .9 1.1.1 Nhu cầu cho đời MIPS pipelines 1.1.2 Nguyên tắc thiết kế tập lệnh MIPS 10 1.2 Các sản phẩm có thị trường 10 1.2.1 R2000 11 1.2.2 R6000 11 1.2.3 R4000 11 1.2.4 R10000 12 1.2.5 M5150 12 1.3 Ý tưởng đề tài yêu cầu kỹ thuật .13 1.3.1 Ý tưởng đề tài 13 1.3.2 Chỉ tiêu kỹ thuật 13 1.3.2.1 Tín hiệu đầu vào đầu 13 1.3.2.2 Tập lệnh .15 1.3.3 Yêu cầu chức .15 1.3.4 Yêu cầu phi chức 15 Chương 2: Phân tích chức lập kế hoạch 16 2.1 Phân chia chức 16 2.1.1 Bộ nhớ lệnh (Instruction Memory) 16 2.1.2 Bộ nhớ liệu (Data Memory) 17 2.1.3 Vi xử lý (MIPS) 17 2.1.3.1 Đường liệu (Datapath) .17 2.1.3.2 Bộ điêu khiển (Control Unit) 17 2.1.3.3 Bộ xử lý xung đột (Hazard Unit) 18 2.2 Phân chia công việc 18 Chương 3: Phân tích chi tiết khối 20 3.1 Khối Bộ nhớ lệnh .20 3.2 Khối Bộ nhớ liệu 20 3.3 Khối Vi xử lý 22 3.3.1 Đường liệu 22 3.3.1.1 Khâu IF 23 3.3.1.2 Khâu ID 23 3.3.1.3 Khâu EX .24 3.3.1.4 Khâu MEM 25 3.3.1.5 Khâu WB 25 3.3.2 Khối điều khiển 25 3.3.3 Khối xử lý xung đột .28 Chương 4: Thiết kế hệ thống: 32 Chương 5: Triển khai .33 5.1 Sơ đồ khối hệ thống 33 5.2 Code modulle: 34 5.2.1 Module top.v 34 5.2.2 Module mips.v .35 5.2.3 Module imem.v 37 5.2.4 Module dmem.v 38 Chương 6: Thực nghiệm 39 6.1 Môi trường thực nghiệm .39 6.2 Kế hoạch kiểm tra: 39 6.3 Mơ hình RTL Viewer Quartus .40 6.3.1 Chạy chương trình thực tất phép tốn theo yêu cầu 41 6.3.2 Chạy thực nghiệm tính tổng dãy số MIPS 42 6.3.3 Chạy thực nghiệm tính giai thừa MIPS 43 6.3.4 Chạy thực nghiệm tính toán số hạng dãy Fibonaci: .44 TÀI LIỆU THAM KHẢO .46 DANH MỤC HÌNH ẢNH Hình 1.1 Thế hệ MIPS I R2000 .11 Hình 1.2 Thế hệ MIPS III R4000 11 Hình 1.3 Thế hệ MIPS IV R10000 12 Hình 1.4 Sơ đồ khối vi xử lý MIPS 14 Hình 2.1 Sơ đồ khối Hệ thống MIPS .16 Hình 2.2 Sơ đồ khối điều khiển .18 Hình 3.1 Khối Bộ nhớ lệnh 20 Hình 3.2 Khối Bộ nhớ liệu 21 Hình 3.3 Sơ đồ đường liệu (Datapath) 22 Hình 3.4 Sơ đồ khối bên khối Control Unit 26 Hình 3.5 Quá trình thực lệnh bị xung đột RAW .29 Hình 3.6 Quá trình xử lý xung đột RAW .29 Hình 3.7 Quá trình thực lệnh lw bị xung đột 30 Hình 3.8 Quá trình giải xung đột cho lệnh lw 30 Hình 3.9 Quá trình lệnh rẽ nhánh bị xung đột .31 Hình 3.10 Quá trình giải xung đột thực dự đoán rẽ nhánh sớm 31 Hình 4.1 Sơ đồ khối chi tiết Hệ thống MIPS Pipelines 32 Hình 6.1 Kết tổng hợp 40 Hình 6.2 Mơ hình Top Level 41 Hình 6.3 Mơ hình MIPS Unit 41 Hình 6.4 Kết Coverage Report 42 Hình 6.5 Kết QuestaSim tính tổng từ đến 43 Hình 6.6 Kết QuestaSim tính 6! .44 Hình 6.7 Kết QuestaSim tính số Fibonaci thứ .45 DANH MỤC BẢNG BIỂU Bảng 1.1 Mô tả đầu vào, đầu Vi xử lý 14 Bảng 3.1 Bảng chức đầu vào, đầu khối Bộ nhớ lệnh 20 Bảng 3.2 Mô tả đầu vào, đầu nhớ liệu .21 Bảng 3.3 Mô tả đầu vào, đầu đường liệu .22 Bảng 3.4 Mô tả đầu vào, đầu khối điều khiển .26 Bảng 3.5 Bảng chân lý khối ALU Decoder .27 Bảng 3.6 Bảng chân lý khối Main decoder .28 LỜI NÓI ĐẦU Trong q trình phát triển cơng nghệ máy tính, người dã chế tạo hàng ngàn loại máy tính khác Cơng nghệ phát triển ngày, dân dần máy tính hệ trước trở nên lỗi thời, có số chúng tồn tới ngày Đó hệ máy tính chứa cơng nghệ tiên tiến nhất, hay hệ máy tính trước mà tảng áp dụng Chính vậy, việc tìm hiểu kiến trúc máy tính giúp có kiến thức, từ ta tìm hiểu, phát triển hệ máy tình tối ưu hơn, nhanh hơn, hiệu cao tương lai Một kiến truc không thể không kể đến cấu trúc MIPS Kiến trúc máy tính MIPS sử dụng rộng rãi dòng máy tính đồ họa silicon, hệ thống nhúng thiết bị điện tử Trong học kỹ này, em hoc môn “Thiết kế IC số hệ thống số” Nhờ hướng dẫn nhiệt tình chu đáo thầy Nguyễn Đức Minh, nhóm chúng em áp dụng kiến thức môn học để hoàn thành đề tài thiết kế MIPS 32bit với chức năng, thực phép toán Do kiến thức hạn hẹp nên tập lớn chắn nhiều sai sót Nhóm chúng em mong thầy góp ý để nhóm hồn thành, sửa chữa báo cáo tốt Nhóm chúng emcũng xin gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Đức Minh hướng dẫn, giúp đỡ chúng em để chúng em hồn thành tập Chương 1: Giới thiệu ý tưởng xác định tiêu kỹ thuật xử lý MIPS Pipelines 1.1 Nhu cầu cho xử lý MIPS Pipline 1.1.1 Nhu cầu cho đời MIPS pipelines MIPS viết tắt Microprocessor withour Interlocked Pipelines Stage, dòng vi xử lý phát triển MIPS Technology năm 1981 Bộ vi xử lý thiết kế dựa theo kiến trúc RICS, chiếm tỉ lệ lớn số vi xử lý RICS sản xuất nhiều ưu điểm thời Kỹ thuật pipeliness (đường ống) đời từ trước chưa phát triển để hoạt động tối ưu Trước thời điểm MIPS thiết kế, vi xử lý theo cấu trúc đường ống thực lệnh tốn nhiều thời gian để thực nhân, chia Các giai đoạn phải tạm dừng hoạt động để chờ thực xong hoàn toàn lệnh tiếp tục cho phép lệnh thực Cách thực điều sử dụng khóa đồng (interlock) giai đoạn biểu thị bận thực lệnh ngừng nạp lệnh Điều làm ảnh hưởng nghiêm trọng đến hiệu vi xử lý chu kỳ xung nhịp phải theo lệnh có thời gian thực chậm Yêu cầu lúc cần phải tăng tốc xử lý, loại bỏ tất khóa đồng lệnh tập lệnh phải thực thời gian (một chu kỳ xung nhịp) Để thực điều này, trước hết phải loại bỏ câu lệnh tốn nhiều chu kỳ xung nhịp khỏi tập lệnh hỗ trợ nhân, chia… hỗ trợ lệnh đơn giản, có thời gian thực ngắn dùng để tính lệnh phức tạp từ chúng Để thực điều này, lệnh loại bỏ biên dịch thành tập lệnh Cách không làm giảm số chu kỳ hay thời gian thực lệnh dài so với thông thường, làm cho vi xử lý hoạt động với chu kỳ xung nhịp cao nhiều lần, lệnh nhỏ chắn xử lý nhanh hơn, từ tăng đáng kể hiệu hệ thống Nhược điểm phương pháp gây xung đột trình thực lệnh, cụ thể xung đột điều khiển, xung đột đọc ghi giá trị ghi, xung đột đọc ghi nhớ… Các xung đột nhắc đến cụ thể xử lý phần sau báo cáo 1.1.2 Nguyên tắc thiết kế tập lệnh MIPS Để đạt yêu cầu phía trên, việc thiết kế tập lệnh đường liệu cho MIPS phải tuân theo nguyên tắc thiết kế định Ba nguyên tắc để thiết kế tập lệnh MIPS - Thứ tính đơn giản quan trọng tính quy tắc Điều thể việc MIPS có định dạng lệnh (3 loại R, J, I), độ dài lệnh với tất lệnh theo độ dài mã lệnh (Opcode) có chiều dài cố định tất lệnh Điều làm cho cách mã hóa lệnh - đơn giản, nhược điểm điều làm tăng kích thước nhớ lệnh Thứ hai nhỏ nhanh hơn, điều có nghĩa tập lệnh MIPS có số lệnh không nhiều, số lượng ghi không lớn số chế độ địa MIPS giới hạn (3 chế độ, so với Intel - 8088) Thứ ba, thiết kế cần thỏa hiệp tập lệnh phần cứng Các nguyên tắc thiết kế làm cho việc thiết kế dịch lệnh MIPS trở nên dễ dàng nhiều, giới hạn số lượng lệnh gây khó khăn lập trình 1.2 Các sản phẩm có thị trường Được phát triển lần MIPS (sau đổi tên thành MIPS Technologies) vào năm 1981 sản phẩm đưa thị trường vào năm 1985, MIPS Technology cho sản phẩm khác đặn kể đến năm 2012 sau mua lại Imagination Technologies Tuy vậy, có hãng khác thiết kế vi xử lý MIPS đưa cho thiết kế riêng Sony, NEC, Broadcom… Sau tóm tắt số sản phẩm tiêu biểu hai giai đoạn thiết kể MIPS Technologies Imagination Technologies 1.2.1 R2000 Hình 1.1 Thế hệ MIPS I R2000 R2000 mắt năm 1985, sản phẩm thương mại kiểu thiết kế RICS Khi xung nhịp R2000 khoảng - 16.67 MHz R2000 sử dụng quy trình thực lệnh bước pipelines, nhớ đệm mức 64 KB Trong cấu tạo phần cứng, R2000 có 32 ghi 32 bit 1.2.2 R6000 Tiếp theo hệ MIPS I gồm R2000 R3000, hệ MIPS II phát triển với đại diện R6000 mắt năm 1990 Xung nhịp lúc lên tới 60-66MHz, nhớ đệm mức 32KB dùng nhớ đệm ngồi, khơng tích hợp ln vi xử lý Kích thước ghi 32 bit, địa vật lý lên tới 36 bit 1.2.3 R4000 Hình 1.2 Thế hệ MIPS III R4000 R4000 sản phẩm dòng MIPS III xử lý 64 bit đầu tiên, sản xuất năm 1991 Bộ đệm R4000 8KB tốc độ xung nhịp lại lên tới 100 MHz nhờ sử dụng kỹ thuật deep pipelines R4000 có đơn vị tính tốn dấu phẩy động (FPU) hoạt động hai chế độ 32 64 bit 1.2.4 R10000 Hình 1.3 Thế hệ MIPS IV R10000 R1000 sản phẩm tiêu biểu cho MIPS IV Ra mắt năm 1996, R10000 hoạt động với tốc độ xung nhịp cao so với thời 1500-250 MHz Bộ nhớ đệm sử dụng lúc hai mức, mức 32KB, tích hợp sẵn, mức từ 512KB đến 16MB dùng nhớ 1.2.5 M5150 M5150 sản phẩm phát triểu sau Imagination Technologies mua lại MIPS Technologies, cho đời năm 2014 Tốc độ xung nhịp 372-576 MHz, nhớ đệm tối đa 64KB dùng mức đệm Ngồi sản phẩm tiêu biểu trên, có nhiều sản phẩm khác thị trường sử dụng cho nhiều ứng dụng hệ thống thông tin, điều khiển, thiết bị lưu trữ…Một số hình ảnh vi xử lý MIPS 10 Chương 4: Thiết kế hệ thống: Ở phần ta mơ tả tiết q trình hoạt động khối Trong chương ta sâu vào ghép nối hệ thống MIPS PipeLines Ta có sơ đồ khối chi tiết hệ thống MIPS PipeLines Hình 4.17 Sơ đồ khối chi tiết Hệ thống MIPS Pipelines Với sơ đồ khối trên, lệnh đưa vào ghi PC, qua hệ thống chu kỳ xung nhịp Các lệnh qua khâu nêu (Fetch – Decode – Execute – Memory – WB) Trong trình hoạt động, khối xử lý xung đột (Hazard) nhận diện xung đột xảy khâu xử lý Mux điều khiển ghi tầng hợp lý 30 Chương 5: Triển khai 5.1 Sơ đồ khối hệ thống Dựa vào sơ đồ hệ thống mô tả phần trước, hệ thống triển khai ngông ngữ mô tả phần cứng Verilog HDL: Module Top liên kết khối MIPS Processor với nhớ Tín hiệu vào gồm xung đồng hồ (clk) tín hiệu reset, đầu mạch gồm: địa liệu (dataaddr), liệu (writedata), tín hiệu cho phép ghi liệu (memwrite), pc, liệu đọc, instr Module tổng (top.v) gồm module con: Module MIPS Processor (Mips.v) Module Instruction Memory (imem.v) Module Data Memory (dmem.v) Trong hkối MIPS Processor gồm module: Control unit (CU.v) gồm phần: Main Decoder (MainDec.v) ALU decoder (ALUDec.v) Datapath(datapath.v) gồm phần: Register File (RegFile.v), SignExtend (SignEx.v), ALU (ALU.v) (gồm MUX4_1.v) Hazard Unit (HazardUnit.v) Sơ đồ khối hoàn chỉnh: 5.2 Code modulle: 5.2.1 Module top.v Đây module tổng dùng để kết nối liệu nhớ vào cấu trúc MIPS Processor Code top.v module top( input clk,reset_n, output [31:0] dataaddr,writedata, output memwrite, //enable signal allow write to data memory output [31:0] pc, readdata, instr 31 ); //wire [31:0] pc, readdata, instr; MIPS MIPS ( aluout(dataaddr), clk(clk), instr(instr), memwrite(memwrite), pc(pc), readdata(readdata), reset_n(reset_n), writedata(writedata) ); imem InstructionMemory( a(pc[7:2]), rd(instr) ); dmem DataMemory( clk(clk), we(memwrite), a(dataaddr), wd(writedata), rd(readdata) ); endmodule 5.2.2 Module mips.v Module mips.v gồm khối điều khiển Control Unit (CU,v), Datapath (datapath.v) khối xử lý xung đột HazardUnit (Hazard.v) Code mips.v //MIPS processor module mips( input clk, reset_n, output [31:0] pc, input [31:0] instr, output memwrite, output [31:0] aluout, writedata, input [31:0] readdata ); //Tin hieu trung gian cho khoi Control Unit wire RegWriteD,MemtoRegD,MemWriteD,ALUSrcD,RegDstD,BranchD_beq,Bra nchD_bne,JumpD,ALUSelectShilfD,CordicD; 32 wire [3:0]ALUCtrlD; wire [5:0]Opcode,Funct; //Tin hieu trung gian cho Hazard Unit wire FlushE, ForwardAD, ForwardBD, BranchD; wire [1:0] ForwardAE, ForwardBE; wire MemtoRegE, MemtoRegM, RegWriteE, RegWriteM, RegWriteW; wire [4:0] RsD, RtD, RsE, RtE; wire StallD, StallF; wire [4:0] WriteRegE, WriteRegM, WriteRegW; CU ControlUnit ( RegWrite(RegWriteD), MemtoReg(MemtoRegD), MemWrite(MemWriteD), ALUCtrl(ALUCtrlD), ALUSrc(ALUSrcD), RegDst(RegDstD), Branch_beq(BranchD_beq), Branch_bne(BranchD_bne), Opcode(Opcode), Funct(Funct), Jump(JumpD), BranchD(BranchD), ALUSelectShilfD(ALUSelectShilfD), CordicD(CordicD) ); //assign BranchD = BranchD_beq | BranchD_bne; datapath Datapath ( aluselectshilfd(ALUSelectShilfD), alucontrold(ALUCtrlD), aluoutmtodm(aluout), alusrcd(ALUSrcD), branchd_beq(BranchD_beq), branchd_bne(BranchD_bne), cordic(CordicD), //.branchd(BranchD), clk(clk), flushe(FlushE), forwardad(ForwardAD), forwardae(ForwardAE), forwardbd(ForwardBD), forwardbe(ForwardBE), functinstr(Funct), instr(instr), 33 .jumpd(JumpD), memtoregd(MemtoRegD), memtorege(MemtoRegE), memtoregm(MemtoRegM), memwrited(MemWriteD), opinstr(Opcode), pc(pc), readdatam(readdata), regdstd(RegDstD), regwrited(RegWriteD), regwritee(RegWriteE), regwritem(RegWriteM), regwritewtohz(RegWriteW), reset_n(reset_n), rsd(RsD), rse(RsE), rtd(RtD), rte(RtE), stalld(StallD), stallf(StallF), we_todm(memwrite), writedatamtodm(writedata), writerege(WriteRegE), writeregmtohz(WriteRegM), writeregwtohz(WriteRegW) ); HazardUnit Hazard( BranchD(BranchD), FlushE(FlushE), ForwardAD(ForwardAD), ForwardAE(ForwardAE), ForwardBD(ForwardBD), ForwardBE(ForwardBE), MemtoRegE(MemtoRegE), MemtoRegM(MemtoRegM), RegWriteE(RegWriteE), RegWriteM(RegWriteM), RegWriteW(RegWriteW), RsD(RsD), RsE(RsE), RtD(RtD), RtE(RtE), StallD(StallD), StallF(StallF), WriteRegE(WriteRegE), 34 .WriteRegM(WriteRegM), WriteRegW(WriteRegW), JumpD(JumpD) ); endmodule 5.2.3 Module imem.v Imem (Instruction Memory) dùng để lưu trữ lệnh dạng mã máy (nhị phân), đầu vào nhớ lệnh địa lệnh cần lấy, đầu mã máy câu lệnh tương ứng lấy Imem đọc lệnh 32 bit từ nhớ file memfile.dat vào ghi lệnh Công đoạn cho tất lệnh dmem (Data Memory) Code khối imem.v module imem ( input [5:0] a, output reg [31:0] RAM[63:0]; initial begin $readmemb ("memfile.dat",RAM); end [31:0] rd); assign rd = RAM[a]; // word aligned endmodule 5.2.4 Module dmem.v Code khối dmem.v module dmem ( input clk, we, input [31:0] a, wd, output [31:0] rd); reg [31:0] RAM[63:0]; assign rd = RAM[a[31:2]]; // word aligned always @ (posedge clk) if (we) begin RAM[a[31:2]]