Thiết kế MIPS 32 bit

29 2K 7
Thiết kế MIPS 32 bit

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Thiết kế MIPS 32 bit

Bài tập lớn kiến trúc máy tính 2013 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o==== BÁO CÁO BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH ĐỀ TÀI: THIẾT KẾ MIPS 32 BIT STT Họ và tên MSSV Lớp 1 Nguyễn Quang Hiếu 20101516 ĐT1 2 Phạm Trọng Đồng 20101026 ĐT1 3 Lý Đức Vượng 20102591 ĐT1 4 Lê Hồng Nhung 20101969 ĐT4 Hà Nội, 12/2013 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI 1 Bài tập lớn kiến trúc máy tính 2013 Mục Lục A.Lời mở đầu ....................................................................................................................... 3 B. Nội dung thực hiện.......................................................................................................... 4 I. Tổng quan về MIPS ...................................................................................................... 4 1.Đặc điểm kĩ thuật ....................................................................................................... 4 2. Lịch sử dòng xử lý MIPS .......................................................................................... 5 3. Các dòng vi xử lý thương mại MIPS đã sản xuất ..................................................... 5 4. Kiến trúc bộ lệnh....................................................................................................... 6 5. Phân loại MIPS ......................................................................................................... 7 6. Ưu nhược, điểm của MIPS ....................................................................................... 8 7. Ứng dụng .................................................................................................................. 9 II.Nội dung thực hiện ....................................................................................................... 9 1.Yêu cầu thực hiện ...................................................................................................... 9 2.Sơ đồ khối .................................................................................................................. 9 3.Giải quyết xung đột.................................................................................................. 16 III.Kết quả ...................................................................................................................... 25 1. Sơ đồ testbench ....................................................................................................... 25 2. Test code, kiểm thử xung đột.................................................................................. 25 3. Các phương án giải quyết mở rộng: ....................................................................... 27 4. Hướng phát triển: .................................................................................................... 28 C.Kết luận .......................................................................................................................... 29 2 Bài tập lớn kiến trúc máy tính 2013 A.Lời mở đầu Trong quá trình phát triển của công nghệ máy tính, con người đã chế tạo ra hàng ngàn loại máy tính khác nhau. Rất nhiều trong số những máy tính này đã bị quên lãng đi, chỉ một số ít còn được nhắc lại cho đến ngày nay. Đó là các máy tính với những ý tưởng thiết kế và nguyên lý hoạt động độc đáo tạo nên một tầm ảnh hưởng lớn đến các máy tính thế hệ sau nó. Việc tìm hiểu về kiến trúc máy tính giúp chúng ta có những kiến thức cơ bản để hiểu nguyên lí và cấu tạo của máy, tạo tiền đề để phát triển tạo ra những thế hệ máy tính tối ưu hơn trong tương lai. Kiến trúc MIPS được sử dụng rỗng rãi trong các dòng máy tính đồ họa silicon, các hệ thống nhúng, các thiết bị điện tử…..Chính bởi vậy, nhóm chúng em đã quyết định làm đề tài thực hiện thiết kế MIPS 32bit với chức năng cơ bản. Do trình độ cũng như kiến thức còn hạn chế nên bài tập lớn chắc chắn còn nhiều sai sót, mong cô góp ý để kiến thức và kỹ năng môn học ngày càng hoàn thiện hơn. 3 Bài tập lớn kiến trúc máy tính 2013 B. Nội dung thực hiện I. Tổng quan về MIPS MIPS (Microprocessor without Interlocked Pipeline Stages) Là kiến trúc bộ tập lệnh RISC phát triển bởi MIPS Technologies. Ban đầu kiến trúc MIPS là 32bit, và sau đó là phiên bản 64 bit. Nhiều sửa đổi của MIPS, bao gồm MIPS I, MIPS II, MIPSIII, MIPSIV, MIPSV, MIPS32 và MIPS64. Phiên bản hiện tại là MIPS32 và MIPS64. Cũng có một vài tuỳ chọn mở rộng, baogồm MIPS-3D (1 tập lệnh đơn giản các câu lệnh SIMD về dấu chấm động để thực hiện các tác vụ về đồ họa 3D), MIPS16e (khả năng nén vi lệnh để tiết kiệm không gian bộ nhớ) và MIPS MT (MultirTheading) kiến trúc đa luồng mới được bổ xung cho hệ thống. 1.Đặc điểm kĩ thuật Năm 1981, một nhóm các nhà nghiên cứu thuộc đại học Stanford do John L. Hennessy đứng đầu đã bắt đầu một công trình nghiên cứuvề bộ xử lý MIP đầu tiên. Khái niệm cơ bản là nhằm tăng đột xuất hiệu năng thông qua sử dụng một đường ống lệnh (pipelineinstructions), một công nghệ đã được biết đến từ lâu nhưng lại khó phát triển. Thông thường một đường ống sẽ mở rộng việc chạy một câu lệnh thành vài bước, bắt đầu thực hiện “bước một” của câu lệnhtrước khi câu lệnh trước hoàn thành. Trong khi đó, thiết kế truyền thống yêu cầu phải đợi cho đến khi một câu lệnh hoàn thành mới được chạy câu lệnh tiếp theo.Thiết kế theo pipeline làm giảm đáng kể thời gian dành của CPU khi thực hiện liên tiếp các câu lệnh. Mặc dù thiết kế này đã loại trừ một số câu lệnh hữu dụng, đáng kể nhất như là các lệnh nhân và chia yêu cầu nhiều bước, nhưng nó cho thấy hiệu suất tổng thể của hệ thống tăng 4 Bài tập lớn kiến trúc máy tính 2013 lên rõ rệt bởi vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều. Tuy nhiên việc loại bỏ các câu lệnh trên lại không được các nhà thiết kế thời bấy giờ ủng hộ. Rất nhiều ý kiến cho rằng thiết kế kiểu đường ống lệnh sẽ không tồn tại được ,nếu chỉ thay một lệnh nhân phức tạp bằng nhiều lệnh cộng đơn giản thì làm sao hệ thống có thể nhanh hơn được. Tuy nhiên đã cho thấy tốc độ thuộc về thiết kế đường ống,chứ không phải theo câu lệnh 2. Lịch sử dòng xử lý MIPS Năm 1984, Hennessy rời trường đại học Stanford để thành lập công ty MIPS Computer System.Họ cho ra đời thiết kế đầu tiên là R2000 vào năm 1985, sau đó phát triển R3000 vào năm 1998. Những CPU 32 bit này tồn tại trong suốt những năm 1980, và được sử dụng chủ yếu trong các dòng máy chủ SGI. Năm 1991 MIPS cho ra đời bộ vi xử lý 64 bit đầu tiên R4000.Tuy nhiên MIPS gặp khó khăn trong tài chính trong khi tung sản phẩm này ra thị trường. Thiết kế này rất quan trọng đối với SGI-một trong những khách hàng của MIPS lúc bấy giờ, vì thế SGI đã mua lại công ty vào năm 1992 để bảo vệ thiết kế không bị mất đi. Từ đó MIPS trở thành một công ty con của SGI và được biết đến bởi tên MIPS Technologies 3. Các dòng vi xử lý thương mại MIPS đã sản xuất - R2000 : Xuất hiện trên thị trường vào năm 1985, được bổ sung thêm nhiều câu lệnh mới, có thể được khởi tạo ở chế độ big-endian hay little-endian, có 32 thanh ghi 32bit , một trong số đó đảm nhiệm việc xử ý các ngoại lệ và bẫy , trong nhưng không có thanh ghi mã điều kiện. R2000 cũng hỗ trợ tới 4 bộ xử lý khi 3 bộ còn lại sử dụng cho mục đích khác. - R3000 :bổ xung thêm 32kB cho bộ nhơ Cache (và sớm được đưa lên 64kB) cho các lệnh và dữ liệu, kèm theo đó là cơ chế Cache coherency hỗ trợ cho nhiều bộ xử lý.R3000 cũng bao gồm MMU tính năng phổ biến của họ CPUs kỷ nguyên này 5 Bài tập lớn kiến trúc máy tính 2013 - R4000 :Được đưa ra năm 1991,mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc 64bit, chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ, xử lý với tốc độ lên đến 100Mhz - R8000 :Ra đời năm 1994,là thiết kế MIPS siêu vô hướng (superscala) đầu tiên,cho phép xử lý 2 ALU và 2 phép tính nhớ mỗi chu kỳ.Thiết kế này hỗ trợ tới 6 chip và 4MB cache mở rộng - R10000 :Ra đời năm 1995,là thiết kế chip đơn lẻ,chạy với tốc độ cao hơn R8000,có 32kb cache chính cho câu lệnh và dữ liệu - Ngoài ra còn có R6000,R1 6000,R1 6000A… 4. Kiến trúc bộ lệnh 4.1. Nguyên tắc thiết kế bộ lệnh MIPS  Tính đơn giản quan trọng hơn tính quy tắc (Simplicity favors regularity)  Chỉ thị kích thước cố định(32 bit)  Ít định dạng chỉ thị (3 loại định dạng)  Mã lệnh ở vị trí cố định(6 bit đầu)  Nhỏ hơn thì nhanh hơn  Số chỉ thị giới hạn  Số thanh ghi giới hạn  Số chế độ địa chỉ giới hạn  Tăng tốc các trường hợp thông dụng  Các toán hạng số học lấy từ thanh ghi (máy tính dựa trên cơ chế load-store)  Các chỉ thị có thể chứa toán hạng trực tiếp  Thiết kế tốt đòi hỏi sự thỏa hiệp  3 loại định dạng chỉ thị 4.2. Một số lệnh trong MIPS MIPS chỉ cần hỗ trợ 32 thanh ghi là đủ, đánh số từ $0-$31 6 Bài tập lớn kiến trúc máy tính 2013 Mỗi thanh ghi có kích thước 32bit(4 byte). Để đơn giản và dễ dàng trong việc truy xuất bộ nhớ, tất cả các lệnh đều có chiều dài 32 bit. • MIPS đã hỗ trợ các nhóm lệnh xử lý dữ liệu: - Lệnh số học - Lệnh luận lý - Lệnh nạp lưu dữ liệu Ngoài các lệnh xử lý dữ liệu, máy tính còn phải hộ trợ các lệnh điều khiển quá trình thực thi các lệnh… 4.3. Nguyên tắc lưu dữ liệu trong bộ nhớ MIPS lưu dữ liệu trong bộ nhớ theo nguyên tắc Alignment Restriction, nghĩa là các đối tượng lưu trong bộ nhớ phải bắt đầu tại địa chỉ là bội số của kích thước đối tượng. Như vậy, từ nhớ phải bắt đầu tại địa chỉ là bội số của 4. MIPS lưu trữ dữ liệu trong bộ nhớ theo nguyên tắc Big Endian, nghĩa là đối với giá trị có kích thước lớn hơn 1 byte thì byte sẽ lưu tại địa chỉ thấp. 5. Phân loại MIPS  Đơn xung nhịp: Thiết kế, xử lí 1 lệnh trong vòng 1 chu kì. o Ưu điểm:  Đơn giản và dễ hiểu o Nhược điểm:  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ồ  Đ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. o Ưu điểm: 7 Bài tập lớn kiến trúc máy tính 2013  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 o Nhược điểm:  Các lệnh thực hiện liên tiếp nhau.  Lệnh trước được thực hiện xong mới đến lệnh sau vì vậy xuất hiện khoảng thời gian rỗi giữa các khâu.  Pipeline o Ưu điểm:  Kĩ thuật pipeline được đưa ra để tận dụng những thời gian rỗi giữa các khâu.  Kĩ thuật pipeline sẽ làm tăng tốc độ vi xử lí. 6. Ưu nhược, điểm của MIPS  Ưu điểm:  Bộ xử lý truy xuất thanh ghi nhanh nhất (hơn 1 tỉ lần trong 1 giây) vì thanh ghi là một thành phần phần cứng thường nằm chung mạch với bộ xử lý.  CPU không phải đợi để thực hiện các tiến trình đơn mà thực hiện cùng lúc nhiều tiến trình, do đó chu kì của tiến trình được thông suốt  Không gian bộ nhớ của máy được giải phóng nhiều hơn do khả năng nén vi lệnh để làm chương trình nhỏ hơn  Khuyết điểm:  Do thanh ghi là một thành phần phần cứng nên số lượng cố định và hạn chế. Do đó, sử dụng phải khéo léo và phức tạp 8 Bài tập lớn kiến trúc máy tính 2013 7. Ứng dụng Thiết kế MIPS được sử dụng rộng rãi trong các dòng máy tính đồ họa silicon,các hệ thống nhúng như TiVo thế hệ 2,các thiết bị sử dụng hệ điều hành Windows CE,Cisco routes và các máy chơi game console như Nitendo 64,Sonyplaystation II.Nội dung thực hiện 1.Yêu cầu thực hiện  MIPS 32 bit thực hiện các lệnh cơ bản +, -, and, or, not, lw, sw, beq.  Thực hiện bằng ngôn ngữ mô tả phần cứng Verilog HDL.  Giải quyết được các xung đột cơ bản trong MIPS pipeline. 2.Sơ đồ khối 2.1 Sơ đồ khối tổng quát: Đây là khối xử lý chính của Mips 32 bit. o Đầu vào :  Instr[31:0] : Mã lệnh được lấy từ bộ nhớ lệnh  ReadData[31:0] : Dữ liệu được đọc ra từ bộ nhớ dữ liệu. 9 Bài tập lớn kiến trúc máy tính 2013 o Đầu ra :  MemWrite : Tín hiệu điều khiển phát ra để yêu cầu ghi vào bộ nhớ dữ liệu.  ALUOut[31:0] : Dữ liệu sau khi tính toán từ bộ ALU  WriteData[31:0] : Dữ liệu được ghi vào bộ nhớ dữ liệu.  PC[31:0] : Tín hiệu PC đi vào bộ nhớ lệnh. 2.2 Thiết kế chi tiết: Sau đây em xin liệt kê vai trò của một số khối quan trọng của bộ vxl MIPS a) Khối Control Unit : Là khối sinh ra các tín hiệu điều khiển cho con Mips khi có lệnh của bên ngoài đưa vào dưới dạng mã lệnh. Đầu vào : Op[5:0] , Funct[ 5:0] lấy từ mã lệnh. Zero lấy từ đầu ra của khối ALU Đầu ra : Các tín hiệu để điều khiển các khối khác là : +) Tín hiệu đưa dữ liệu từ bộ nhớ ra thanh ghi Memtoreg +) Tín hiệu Regwrite, Memwrite +) Tín hiệu chọn ALUSrc, PCSrc, RegDst, 10 Bài tập lớn kiến trúc máy tính 2013 +) Tín hiệu ALUControl b) Khối Register File : Là khối thanh ghi của con Mips. Đầu vào sẽ là địa chỉ của các thanh ghi đưa vào từ mã lệnh và dữ liệu quay về thanh ghi từ giai đoạn WB. Đầu ra sẽ là dữ liệu nằm trong thanh ghi mà địa chỉ lệnh trỏ tới. Đầu vào : +) RegwriteW : tín hiệu cho phép đọc mã lệnh tương ứng vào thanh ghi qua WB +) Mã lệnh tương ứng của Rs, Rt : InstrD[25:21], InstrD[20:16] +) Dữ liệu trả về WriteRegW[4:0] và tín hiệu kết quả ResultW Đầu ra : Dữ liệu được đọc trong 2 thanh ghi mà mã lệnh truy cập tới địa chỉ của nó Readdata1, Readdata2 c) Khối ALU : Là khối phục vụ nhiệm vụ tính toán. Đầu vào : +) Tín hiệu chọn loại tính toán : cộng, trừ, nhân, chia : ALUControl được sinh ra từ ControlUnit +) Dữ liệu được đọc từ 2 thanh ghi trong tập thanh ghi Register file Readdata1, Readdata2 32 bit Đầu ra: +) Dữ liệu ra sau khi được tính toán ALUOut 32 bit. +) Tín hiệu Zero sử dụng trong lệnh rẽ nhánh beq, bne. 11 Bài tập lớn kiến trúc máy tính 2013 d) Khối SignExt : Khối được sử dụng với nhiệm vụ chuyển đổi dữ liệu dịch từ 16 bit trong mã lệnh thành 32 bit để thực hiện cho nhiệm vụ tính toán. Đầu vào : Dữ liệu dịch được lấy trong 16 bit cuối của mã lệnh Instr[15:0] Đầu ra : Dữ liệu dich được chuyển thành 32 bit bằng cách lấy 16 bit đầu bằng bit thứ 16 và 16 bit cuối là Instr[15:0]. y[31:0] = [16(Instr[15]), Instr[15:0]]. Từ các khối trên và một số khối logic cơ bản khác ta xây dựng được bộ MIPS đa xung nhịp như hình vẽ 12 Bài tập lớn kiến trúc máy tính 2013 Ở đa xung nhịp ta chia lệnh thành 5 giai đoạn IF, ID, EX, MEM, WB. Mỗi giai đoạn được thực hiện trong một chu kỳ. Trong sơ đồ gồm có các khối chính như là khối Control Unit, khối Register File, khối ALU, khối SignExt. 2.3. Sơ đồ khối Pipelined. Từ MIPS đa xung nhịp chúng ta tiến hành pipeline bộ vi xử lý bằng cách thêm vào các thanh ghi trạng thái IFID, IDEX, EXMEM, MEMWB, PC. Các thanh ghi sẽ thực hiện nhiệm vụ chuyển tiếp dữ liệu giữa các khâu a) Stage IFID : Thanh ghi giữa 2 giai đoạn IF và ID. Thanh ghi gồm 64 bit dữ liệu bao gồm 32 bit tín hiệu điều khiển control signals, 32 bit tín hiệu dữ liệu của PC Đầu vào : +) Tín hiệu clock và reset 13 Bài tập lớn kiến trúc máy tính 2013 +) Tín hiệu để điều chỉnh thanh ghi ghi hoặc dừng ghi bao gồm IF_Flush, ID_stall +) Dữ liệu sau khi qua giai đoạn IF : [32:0]IF_Instruction , [32:0]IF_PCAdd4 Đầu ra : +) Dữ liệu chuẩn bị vào giai đoạn ID : [32:0]ID_Instruction, [32:0]ID_PCAdd4 b) Stage IDEX stage : Thanh ghi giữa 2 giai đoạn ID và EX. Thanh ghi chuyển tiếp 118 bit dữ liệu bao gồm 64 bit dữ liệu của 2 thanh ghi, 32 bit dữ liệu dịch, 15 bit mã lệnh của Rs, Rt, Rd và 7 bit lưu tín hiệu điều khiển. Đầu vào : +) Tín hiệu clock,reset. +) Tín hiệu điều khiển được lưu lại ID_RegWrite, ID_MemtoReg, ID_MemWrite, ID_ALUControl[2:0], ID_ALUSrc,ID_ RegDst. +) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm. +) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit. +) Tín hiệu để xử lý xung đột FlushE. Đầu ra : +) Tín hiệu điều khiển được lấy ra cho giai đoạn tính toán EX_RegWrite, EX_MemtoReg, EX_MemWrite, EX_ALUControl[2:0], EX_ALUSrc, EX_RegDst. +) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm cho giai đoạn EX. +) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit. c) Stage EXMEM stage : Thanh ghi giữa 2 giai đoạn EX và MEM. Thanh ghi chuyển tiếp 72 bit dữ liệu bao gồm 32 bit dữ liệu ra từ khối ALU, 32 bit dữ liệu để ghi vào bộ nhớ, 5 bit mã lệnh quay trở lại thanh ghi và 3 bit lưu tín hiệu điều khiển. Đầu vào : +) Tín hiệu clock, reset. +) Tín hiệu điều khiển được lưu lại EX_RegWrite, EX_MemtoReg, EX_MemWrite. +) Dữ liệu 32 bit lấy ra từ bộ tính toán ALU và dữ liệu 32 bit dùng để lưu trữ vào bộ nhớ EX_WriteDataa 14 Bài tập lớn kiến trúc máy tính 2013 +) Bit mã lệnh quay trở lại tệp thanh ghi 5 bit Đầu ra : +) Tín hiệu điều khiển công việc ghi và đọc trong bộ nhớ. +) Dữ liệu 32 bit lưu trữ vào bộ nhớ M_WriteData, dữ liệu 32 bit từ bộ ALU M_ALUOut +) Bit mã lênh quay trở lại tệp thanh ghi 5 bit. d) Stage MEMWB : Thanh ghi giữa 2 giai đoạn MEM và WB. Thanh ghi chuyển tiếp 71 bit dữ liệu bao gồm 32 bit dữ liệu được đọc ra từ bộ nhớ, 32 bit dữ liệu tính toán từ bộ ALU quay trở lại tệp thanh ghi, 5 bit mã lệnh quay về thanh ghi và 2 bit lưu tín hiệu điều khiển. Đầu vào : +) Tín hiệu clock, reset. +) Tín hiệu điều khiển M_RegWrite, M_MemtoReg. +) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ ALU 32 bit M_ALU_Result. +) Bit mã lệnh quay về thanh ghi 5 bit. Đầu ra : +) Tín hiệu điều khiển M_RegWrite, M_MemtoReg. +) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ ALU 32 bit WB_ALU_Result. +) Bit mã lệnh quay về thanh ghi. e) Stage PC : Thanh ghi lưu trữ giá trị của PC cho lệnh tiếp theo. Thanh ghi PC là thanh ghi 32 bit lưu giá trị của tín hiệu PC. Đầu vào : +) Tín hiệu clock,reset +) Tín hiệu PC 32bit. +) Tín hiệu để xử lý xung đột StallF Đầu ra : +) Tín hiệu ra PCF 32 bit để đưa vào IMEM( Instruction Memory). f) Khối Hazard : Dùng để xử lý xung đột gặp phải trong con Mips pipelined. Khi xảy ra các hiện tượng xung đột thì sẽ có tín hiệu báo xung đột về khối Hazard và từ đấy sẽ phát các tín hiệu để điều khiển các thanh ghi sao cho xử lý được các xung đột xảy ra. Đầu vào : +) Các bit mã lệnh của các thanh ghi [4:0] rsD, rtD, rsE, rtE. 15 Bài tập lớn kiến trúc máy tính 2013 +) Bit mã lệnh trả về thanh ghi [4:0] WriteRegE, WriteRegM, WriteRegW. +) Các tín hiệu điều khiển BranchD, MemtoRegE, MemtoRegM, RegWriteM, RegWriteW, RegWriteM. Đầu ra : +) Các tín hiệu điều khiển các thanh ghi để xử lí xung đột StallF, StallD, ForwardAD, ForwardBD, FlushE, [1:0] ForwardAE, [1:0] ForwardBE. 3.Giải quyết xung đột 3.1. Các loại xung đột và phương pháp khắc phục: 3.1.1. Xung đột cấu trúc a) Đặt vấn đề Xung đột cấu trúc xảy ra khi 2 lệnh cùng cố gắng sử dụng 1 nguồn tại cùng 1 thời điểm. Ví dụ như tại 1 thời điểm có 2 lệnh cố gắng ghi và đọc dữ liệu từ tập thanh ghi thì tại thời điểm đó xung đột xảy ra. b) Hướng giải quyết Có 2 phương pháp để có thể khắc phục được dạng xung đột này - Thực hiện chờ - Ghi ở chu kì lên và tiến hành đọc ở chu kì xuống Trong bài này ta lựa chọn phương pháp thứ 2 vì mang lại hiệu năng cao hơn 16 Bài tập lớn kiến trúc máy tính 2013 3.1.2. Xung đột dữ liệu: a) Đặt vấn đề Xung đột dữ liệu xảy ra khi toán hạng nguồn của lệnh chưa kịp thời được cập nhật ở những câu lệnh phía trước đó Ví dụ có đoạn lệnh sau: I1: add $s0, $s2, $s3 I2: and $t0, $s0, $s1 I3: or $t1, $s4, $s0 I4: sub $t2, $s0, $s5 I1 I2 I3 I4 1 2 3 4 5 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM 17 6 7 8 WB Bài tập lớn kiến trúc máy tính 2013 Đoạn mã hợp ngữ trên xảy ra xung đột khi $s0 được sử dụng ở lệnh I2 nhưng chưa được cập nhật giá trị $s0 tính được ở lệnh I1. Bởi $s0 chỉ có thể được cập nhật ở khâu WB của I1 (Sau chu kì thứ 5) nhưng để thực hiện được lệnh I2 theo sơ đồ trên thì cần kết quả cập nhật ở khâu ID (Chu kì thứ 3) Tương tự lệnh I3 cũng sẽ gặp xung đột như lệnh I2 do kết quả $s0 chưa được cập nhật. Đến lệnh I4 muốn WB của I1 và ID của I4 cùng diễn ra, vậy để kịp cập nhật được kết quả $s0 thì cần phải đọc và ghi trong cùng chu kì b) Hướng giải quyết Giải quyết xung đột dữ liệu bằng phương pháp chuyển tiếp Phương pháp chuyển tiếp là phương pháp chuyển tiếp kết quả từ khâu MEM hoặc WB về khâu EX. Để thực hiện phương pháp này ta thêm bộ dồn kênh vào trước bộ ALU. Tín hiệu điều khiển lựa chọn nguồn toán hạng cho bộ dồn kênh sẽ được tính toán bởi khối Hazard Detection. Bộ dồn kênh sẽ chuyển tiếp kết quả từ khâu (MEM hoặc WB) nếu khâu đó thỏa mãn những điều kiện sau: - Lệnh ở khâu đó thực hiện hành động viết vào thanh ghi - Toán hạng đích ở khâu đó trùng với toán hạng nguồn ở khâu EX - Nếu ở cả khâu MEM và WB đều có toán hạng đích trùng toán hạng nguồn ở EX thì ưu tiên lựa chọn chuyển tiếp từ khâu MEM vì kết quả tính toán ở khâu MEM là khâu được cập nhật gần nhất 18 Bài tập lớn kiến trúc máy tính 2013 3.1.3. Xung đột đọc bộ nhớ dữ liệu: a) Đặt vấn đề Xung đột bộ nhớ dữ liệu xảy ra khi toán hạng đích chưa kịp được cập nhật dữ liệu từ bộ nhớ ra để thực hiện câu lệnh tiếp theo. Ví dụ xét đoạn lệnh I1: lw $s0, 40($0) I2: and $t0, $s0, $s1 I3: or $t1, $s4, $s0 I4: sub $t2, $s0, $s5 I1 I2 I3 I4 1 2 3 4 5 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM 19 6 7 8 WB Bài tập lớn kiến trúc máy tính 2013 Lệnh lw không thể hoàn thành việc đọc xong dữ liệu cho đến chu kì 4, vậy giá trị của $s0 chưa thể được cập nhật. b) Hướng giải quyết Vậy để có thể giải quyết được xung đột trong trường hợp này chúng ta có thể thực hiện phương pháp chờ. Bằng cách đợi 1 chu kì như trên hình vẽ, dữ liệu của $s0 có thể được chuyển tiếp để cập nhật được giá trị của $s0 kịp nạp vào khâu EX của lệnh I2. Đến chu kì thứ 5 thì $s0 đã kịp thời được cập nhật. Để thực hiện được việc chờ ta tiến hành thêm tín hiệu Stall vào các thanh ghi pipeline( PC và IF/ID). Ban đầu các thanh ghi cập nhật giá trị đầu ra mỗi khi có sườn lên clock, khi Stall xảy ra các thanh ghi pipeline giữ nguyên giá trị. Ngoài ra, đồng thời với tiến hành Stall ở IF/ID và PC, ta còn tiến hành xóa thanh ghi E để tránh việc dữ liệu sẽ bị chuyển tiếp một cách liên tục làm sai lệch kết quả tính toán. 3.1.4. Xung đột điều khiển a) Đặt vấn đề Xung đột về điều khiển xảy ra khi thực hiện các lệnh rẽ nhánh. Khi 1 lệnh rẽ nhánh xảy ra, nó sẽ k biết lệnh tiếp theo phải nạp là lệnh nào bởi tại thời điểm nạp lệnh chưa xác định được kết quả của lệnh rẽ nhánh đó. 20 Bài tập lớn kiến trúc máy tính 2013 Có 2 phương pháp để chống xung đột trong trường hợp này o Làm chậm rẽ nhánh: Tiến hành chờ cho đến khi hết xung đột o Dự đoán rẽ nhánh: Tiến hành nạp các lệnh kế tiếp, đến khi có kết quả của lệnh rẽ nhánh bắt đầu xét xem rẽ nhánh đúng hay sai. Nếu đúng thì tiếp tục thực hiện, nếu sai thực hiện xóa hết kết quả tính toán của các lệnh sai. b) Hướng giải quyết Trong nội dung bài ta tiến hành theo phương pháp dự đoán rẽ nhánh vì phương pháp này cho hiệu năng cao hơn Theo hình vẽ trên, nếu dự đoán rẽ nhánh sai sẽ phải xóa đi 3 lệnh làm giảm hiệu năng của MIPS. Để tăng hiệu năng của phương pháp này, ta tiến hành dự đoán rẽ nhánh sớm, nếu rẽ nhánh có sai cũng chỉ phải xóa đi 1 lệnh, cải thiện hiệu năng cho MIPS. 21 Bài tập lớn kiến trúc máy tính 2013 Để tiến hành rẽ nhánh sớm, ta thêm 1 bộ so sánh vào đầu ra của tập thanh ghi. Vậy kết quả của phép rẽ nhánh sẽ có sau khâu ID chứ không phải chờ đến khâu MEM theo phương pháp thông thường 22 Bài tập lớn kiến trúc máy tính 2013 Thực hiện phương pháp so sánh sớm dẫn đến 1 xung đột khác khi mà toán hạng nguồn ở lệnh rẽ nhánh lại trùng với toán hạng đích ở những lệnh phía trước mà chưa kịp ghi vào thanh ghi. Nếu kết quả của toán hạng đang ở khâu MEM, ta tiến hành phương pháp chuyển tiếp dữ liệu từ khâu MEM về mỗi khi phát hiện có xung đột. Các bộ dồn kênh sẽ tiếp tục được sử dụng trong trường hợp này . Bộ dồn kênh sẽ được điều khiển bằng tín hiệu ForwardAD và ForwardBD lấy từ khối Hazard Detection. Biểu thức logic của chúng được cho dưới đây: ForwardAD = (rsD != 0) AND (rsD == WriteRegM) AND RegWriteM ForwardBD =(rtD != 0) AND (rtD == WriteRegM) AND RegWriteM Nếu gặp phải trường hợp phía trước rẽ nhánh là câu lệnh lw hoặc kết quả toán hạng vẫn đang chỉ ở khâu EX thì khi đó ta phải chờ 1 chu kì để kết quả tính toán được sẵn sàng. Dưới đây là biểu thức logic StallF = StallD = FlushE = lwstall OR branchstall branchstall = BranchD AND RegWriteE AND (WriteRegE == rsD OR WriteRegE == rtD) OR BranchD AND MemtoRegM AND (WriteRegM == rsD OR WriteRegM == rtD) 23 Bài tập lớn kiến trúc máy tính 2013 Sau 3 tiến trình giải quyết xung đột ta thu được sơ đồ cuối có dạng như hình vẽ dưới 24 Bài tập lớn kiến trúc máy tính 2013 III.Kết quả 1. Sơ đồ testbench Hình 3:Sơ đồ TESTBENCH của bộ vi sử lý MIPS 2. Test code, kiểm thử xung đột Nạp file memfile.dat chứa mã lệnh dạng hexa vào testbench và thực hiện bởi MIPS. Kết quả thực hiện chương trình như sau: main: addi $2, $0, 5 addi $3, $0, 12 addi $7, $3, _9 or $4, $7, $2 and $5, $3, $4 add $5, $5, $4 beq $5, $7, end slt $4, $3, $4 beq $4, $0, around addi $5, $0, 0 around: slt $4, $7, $2 add $7, $4, $5 25 Bài tập lớn kiến trúc máy tính 2013 sub $7, $7, $2 sw $7, 68($3) lw $2, 80($0) addi $2, $0, 1 end: sw $2, 84($0) Ta tính được số chu kì/lệnh: CPI = 20/16 Ta vào register file để xem kết quả thực hiện.Kết quả hiển thị trên trình mô phỏng đúng với kết quả mong đợi khi đã giải quyết được xung đột. Kết quả: Giải quyết được bốn dạng xung đột cơ bản: -Xung đột cấu trúc -Xung đột đọc bộ nhớ dữ liệu -Xung đột dữ liệu -Xung đột điều khiển Bằng cách sử dung 3 phương pháp giải quyết xung đột là : - Forwarding 26 Bài tập lớn kiến trúc máy tính 2013 - Stall - Branch Pridiction 3. Các phương án giải quyết mở rộng: Thuật toán Tomasulo được đưa ra vào năm 1967 bởi Robert Tomasulo làm việc cho hang IBM.Ý tưởng của thuật toán là sử dụng địa chỉ Tag và bit trạng thái để đánh dấu các thanh ghi, qua đó biết được thanh ghi đó đang bận hay rỗi để sử dụng cho phù hợp. Định biểu (Schedualing): Sử dụng các vector trạng thái và bảng đặt chỗ (reservation table) để dánh dấu các trạng thái của các tầng pipeline.Từ đó xác định được số chu kỳ cần đưa dữ liệu vào để tránh xung đột. Các kĩ thuật pipelining mới: Superpipelining: (Siêu ống dẫn) -Được sử dụng trong dòng VXL MIPS R4000. -Tăng số tầng Pipeline từ 5 lên 8 tầng. -Thời gian xử lý n lệnh: T superpiplining = t + (n - 1) * t /8 Tốc độ vi xử lý tăng đáng kể so với kỹ thuật Pipeline 5 tầng, nhưng cũng vì số tầng tăng mà khả năng xảy ra xung đột cũng cao hơn Các VXL hiện đại bắt đầu từ d.ng Pen IV sử dụng kỹ thuật ống dẫn đôi (Dual Pipelining) để tăng tốc độ lên gấp nhiều lần so với kỹ thuật Pipeline thông thường. 27 Bài tập lớn kiến trúc máy tính 2013 Có thể lấy ví dụ đơn giản khi ta tính toán phép tính 14 * 47 + 5122, nếu là kỹ thuật pipeline thông thường vẫn phải mất 3 bước là tính 5122, sau đó tính 14 * 27, rồi cuối cùng cộng 2 kết quả đó lại. Nhưng với kỹ thuật ống dẫn đôi, 2 phép tính 5122 và 14 * 47 được thực hiện cùng 1 lúc trên 2 pipeline khác nhau => giảm được 1 công đoạn thực hiện tính toán. 4. Hướng phát triển: -Thiết kế thêm lệnh cho bộ xử lý MIPS -Thêm tín hiệu ready cho bộ nhớ đọc và ghi -Mở rộng giải quyết hazard. -Thêm bộ nhân và bộ chia cho MIPS -Tối ưu hóa diện tích MIPS -Áp dụng các kĩ thuật mới vào thiết kế MIPS 28 Bài tập lớn kiến trúc máy tính 2013 C.Kết luận Sau kì học vừa qua, nhóm em đã hoàn thành bài tập lớn với đề tài thiết kế MIPS 32 bit thực hiện được những lệnh cơ bản. Đề tài thiết kế MIPS là đề tài mang tính thực tế cao, giúp chúng em thêm hiểu về cấu trúc của bộ vi sử lý MIPS, hỗ trợ cho việc học môn kiến trúc máy tính. Quá trình thực hiện bài tập lớn đã giúp chúng em tích lũy thêm được nhiều kinh nghiệm thiết kế phần cứng.Rèn luyện tư duy phần cứng ,thêm hiểu rõ về bộ vi xử lý rất thông dụng trên thị trường. Đặc biệt hơn cả, quá trình này cũng giúp chúng em rèn luyện kĩ năng làm việc nhóm hiệu quả. Chúng em xin gửi lời cảm ơn chân thành đến cô giáo Tạ Thị Kim Huệ đã giúp chúng em hoàn thành đề tài này. 29 [...]... chuyển tiếp 71 bit dữ liệu bao gồm 32 bit dữ liệu được đọc ra từ bộ nhớ, 32 bit dữ liệu tính toán từ bộ ALU quay trở lại tệp thanh ghi, 5 bit mã lệnh quay về thanh ghi và 2 bit lưu tín hiệu điều khiển Đầu vào : +) Tín hiệu clock, reset +) Tín hiệu điều khiển M_RegWrite, M_MemtoReg +) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ ALU 32 bit M_ALU_Result +) Bit mã lệnh quay... EX_MemWrite +) Dữ liệu 32 bit lấy ra từ bộ tính toán ALU và dữ liệu 32 bit dùng để lưu trữ vào bộ nhớ EX_WriteDataa 14 Bài tập lớn kiến trúc máy tính 2013 +) Bit mã lệnh quay trở lại tệp thanh ghi 5 bit Đầu ra : +) Tín hiệu điều khiển công việc ghi và đọc trong bộ nhớ +) Dữ liệu 32 bit lưu trữ vào bộ nhớ M_WriteData, dữ liệu 32 bit từ bộ ALU M_ALUOut +) Bit mã lênh quay trở lại tệp thanh ghi 5 bit d) Stage MEMWB... máy tính 2013 C.Kết luận Sau kì học vừa qua, nhóm em đã hoàn thành bài tập lớn với đề tài thiết kế MIPS 32 bit thực hiện được những lệnh cơ bản Đề tài thiết kế MIPS là đề tài mang tính thực tế cao, giúp chúng em thêm hiểu về cấu trúc của bộ vi sử lý MIPS, hỗ trợ cho việc học môn kiến trúc máy tính Quá trình thực hiện bài tập lớn đã giúp chúng em tích lũy thêm được nhiều kinh nghiệm thiết kế phần cứng.Rèn... về thanh ghi 5 bit Đầu ra : +) Tín hiệu điều khiển M_RegWrite, M_MemtoReg +) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ ALU 32 bit WB_ALU_Result +) Bit mã lệnh quay về thanh ghi e) Stage PC : Thanh ghi lưu trữ giá trị của PC cho lệnh tiếp theo Thanh ghi PC là thanh ghi 32 bit lưu giá trị của tín hiệu PC Đầu vào : +) Tín hiệu clock,reset +) Tín hiệu PC 3 2bit +) Tín hiệu... ID_stall +) Dữ liệu sau khi qua giai đoạn IF : [32: 0]IF_Instruction , [32: 0]IF_PCAdd4 Đầu ra : +) Dữ liệu chuẩn bị vào giai đoạn ID : [32: 0]ID_Instruction, [32: 0]ID_PCAdd4 b) Stage IDEX stage : Thanh ghi giữa 2 giai đoạn ID và EX Thanh ghi chuyển tiếp 118 bit dữ liệu bao gồm 64 bit dữ liệu của 2 thanh ghi, 32 bit dữ liệu dịch, 15 bit mã lệnh của Rs, Rt, Rd và 7 bit lưu tín hiệu điều khiển Đầu vào : +) Tín... RegDst +) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm +) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit +) Tín hiệu để xử lý xung đột FlushE Đầu ra : +) Tín hiệu điều khiển được lấy ra cho giai đoạn tính toán EX_RegWrite, EX_MemtoReg, EX_MemWrite, EX_ALUControl[2:0], EX_ALUSrc, EX_RegDst +) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm cho... kết quả đó lại Nhưng với kỹ thuật ống dẫn đôi, 2 phép tính 5122 và 14 * 47 được thực hiện cùng 1 lúc trên 2 pipeline khác nhau => giảm được 1 công đoạn thực hiện tính toán 4 Hướng phát triển: -Thiết kế thêm lệnh cho bộ xử lý MIPS -Thêm tín hiệu ready cho bộ nhớ đọc và ghi -Mở rộng giải quyết hazard -Thêm bộ nhân và bộ chia cho MIPS -Tối ưu hóa diện tích MIPS -Áp dụng các kĩ thuật mới vào thiết kế MIPS. .. thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm cho giai đoạn EX +) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit c) Stage EXMEM stage : Thanh ghi giữa 2 giai đoạn EX và MEM Thanh ghi chuyển tiếp 72 bit dữ liệu bao gồm 32 bit dữ liệu ra từ khối ALU, 32 bit dữ liệu để ghi vào bộ nhớ, 5 bit mã lệnh quay trở lại thanh ghi và 3 bit lưu tín hiệu điều khiển Đầu vào : +) Tín hiệu clock, reset +) Tín hiệu... Register file Readdata1, Readdata2 32 bit Đầu ra: +) Dữ liệu ra sau khi được tính toán ALUOut 32 bit +) Tín hiệu Zero sử dụng trong lệnh rẽ nhánh beq, bne 11 Bài tập lớn kiến trúc máy tính 2013 d) Khối SignExt : Khối được sử dụng với nhiệm vụ chuyển đổi dữ liệu dịch từ 16 bit trong mã lệnh thành 32 bit để thực hiện cho nhiệm vụ tính toán Đầu vào : Dữ liệu dịch được lấy trong 16 bit cuối của mã lệnh Instr[15:0]... vào : Dữ liệu dịch được lấy trong 16 bit cuối của mã lệnh Instr[15:0] Đầu ra : Dữ liệu dich được chuyển thành 32 bit bằng cách lấy 16 bit đầu bằng bit thứ 16 và 16 bit cuối là Instr[15:0] y[31:0] = [16(Instr[15]), Instr[15:0]] Từ các khối trên và một số khối logic cơ bản khác ta xây dựng được bộ MIPS đa xung nhịp như hình vẽ 12 Bài tập lớn kiến trúc máy tính 2013 Ở đa xung nhịp ta chia lệnh thành 5 giai

Ngày đăng: 28/09/2015, 19:07

Tài liệu cùng người dùng

Tài liệu liên quan