BÁO CÁO BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH THIẾT KẾ MIPS PIPELINE
Trang 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG
BÁO CÁO BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH
THIẾT KẾ MIPS PIPELINE
GIẢNG VIÊN HƯỚNG DẪN: TS NGUYỄN ĐỨC MINH NHÓM SINH VIÊN
Trang 2Nguyễn Văn Hưng ĐT11 - K54 20091384
Nguyễn Văn Huấn ĐT2 - K54 20092165
Nguyễn Thị Mai Trang ĐT4 - K54 20092812
HÀ NỘI 11/2012 MỤC LỤC TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI 1
MỤC LỤC 2
Tài liệu tham khảo ……… 49Phần 1: Giới thiệu ý tưởng và xác định chỉ tiêu kỹ thuật của kiến trúc MIPS Pepiline 3
1.1Phân tích nhu cầu và đặc điểm nổi bật trong kiến trúc MIPS Pipeline 3
1.1.1.Giới thiệu chung về kiến trúc MIPS- nhu cầu cần thiết cho sự ra đời của kiến trúc MIPS pipeline 3
1.1.2.Đặc điểm nổi bật-nguyên tắc thiết kế trong kiến trúc MIPS pipeline 3
1.1.3.Lên ý tưởng cho đề tài 4
1.2Các sản phẩm đã có trên thị trường (Các công trình bài báo nghiên cứu đã có và có liên quan) 4
1.2.1.R2000 4
1.2.2.R3000 4
1.2.3.R4000 4
1.2.4.R8000( 1994) 4
1.2.5.R10000 (1995) 4
1.2.6.Các sản phẩm hiện tại trên thị trường 4
1.3Các chỉ tiêu kỹ thuật của sản phẩm 5
1.3.1.Chức năng sản phẩm 6
1.3.2.Chỉ tiêu kỹ thuật của sản phẩm 6
1.3.3.Thông số đầu vào,ra 6
1.3.4.Các yêu cầu phi chức năng 9
Phần 2.Phân tích chức năng và lập kế hoạch 10
2.1Phân chia chức năng 10
Trang 32.1.1.Chức năng khối Instruction Memory 10
2.1.2.Chức năng khối Register File 10
2.1.3.Chức năng khối ALU và ALU control 11
2.1.4.Chức năng khối Control Unit 12
2.1.5.Chức năng khối Data Memory 18
2.1.6.Kỹ thuật pipeline và xử lý xung đột 18
2.1.7.Các khối chức năng khác 20
2.2Lập kế hoạch 20
Phần 3.Lựa chọn phương án kỹ thuật 21
3.1Sơ đồ khối của sản phẩm 21
3.2Kiến trúc thiết kế 22
Phần 4.Thiết kế mạch 24
4.1Bộ đếm chương trình PC 24
4.2Bộ nhớ lệnh 24
4.3Register File 24
4.4Bộ nhớ dữ liệu 26
4.5Xây dựng Datapath cho lệnh loại R 26
4.6Khối điều khiển(CU) 29
4.7Khối xử lý xung đột (Hazard Unit) 30
4.7.1.Khối chuyển tiếp dữ liệu 30
4.7.2.Điều khiển thanh ghi Pipeline 30
Phần 5.Kết quả tổng hợp và mô phỏng 33
5.1Kết quả tổng hợp từ Quartus 33
5.2Kết quả mô phỏng sử dụng Modelsim 33
Kết quả mô phỏng trên Modelsim 35
Trang 4 Tài liệu tham khảo ………
của kiến trúc MIPS Pepiline
Giới thiệu chung về kiến trúc MIPS- nhu cầu cần thiết cho sự ra đời của kiến trúc MIPS pipeline
chip sản xuất trên nền kiến trúc RISC
tăng đột xuất hiệu năng thông qua sử dụng một đường ống lệnh ( pileline instructions) Thiết kế theo pipeline làm giảm đáng kể thời gian rảnh rỗi của CPU khi thực hiện liên tiếp các câu lệnh
yêu cầu một khóa đồng bộ (interlocks) được cài đặt để chắc chắn rằng các câu lệnh chiếm nhiều chu kì đồng hồ để thực hiện sẽ dừng đường ống lại để nạp nhiều dữ liệu hơn Những khóa đồng bộ này cần một thời gian lớn để cài đặt và được cho là rào cản chính trong việc tăng tốc độ xử lí trong tương lai
thành trong 1 chu kì xung nhịp nhờ thế lạo bỏ được sự cần thiết của khóa đồng bộ Thiết kế này đã loại bỏ được một số câu lệnh hữu dụng, đáng kể nhất là các lệnh nhân, 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 lên rõ rệt vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều
Trang 5vào năm 1998 Những CPU 32bit 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.
Đặc điểm nổi bật-nguyên tắc thiết kế trong kiến trúc MIPS pipeline
Lên ý tưởng cho đề tài
thống xử lý đặt ra ngày càng cao trong quá trình thiết kế được tối ưu nhất, nhanh nhất, Verilog HDL là một ngôn ngữ mô tả phần cứng linh hoạt, dễ làm và dễ mô phỏng
Trang 6Sau khi MIPS cho ra đời bộ vi xử lý 64 bit đầu tiên R4000 vào năm 1991, MIPS đã gặp khó khăn về 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
Các dòng vi xử lý thương mại MIPS đã được 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 32 bit, nhưng không có thanh ghi mã điều kiện R2000 cũng hỗ trợ tới 4 bộ xử lý, một trong số đó đảm nhiệm việc xử lý các ngoại lệ và bẫy trong khi ba chiếc còn lại sử dụng cho các mục đích khác Điều này được hỗ trợ trong R2010 FTU - bộ xử lý có 32 thanh ghi 32 bit có thể được
sử dụng như là 16 thanh ghi 64 bit cho kết quả chính xác gấp đôi
sử dụng trong các máy tính cá nhân cầm tay sử dụng hệ điều hành Windows CE
R4000
Được đưa ra vào năm 1991, mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc 64
Trang 7bit, chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ (Single-chip system), xử lý với tốc độ lên tới 100Mhz, tuy nhiên để đạt được tốc độ này bộ nhớ đệm phải bị giảm xuống còn 8kB và cần 3 chu kỳ để truy cập Tần số xử lý cao đạt được nhờ việclưu trữ thông qua công nghệ đường ống sâu (deep pipelining – hay còn gọi là super-pipelining tại thời điểm đó) 1993 R4400 xuất hiện với 16kB cache, bộ xử lý 64 bit lớn và 1 bộ điều khiển
R4300i, R4600 “Orion”, R4700 “Orion”, R5650, R5000, R5000FTU, RM7000, RM9000 Các bộ xử lý này được sử dụng rất rộng rãi : Các máy Nitendo 64, Cisco routers, WebTV set-top Box (Hiện nay là Micrisoft TV)…
Hình 1.1: Thiết kế R10000 (1995)
Trang 8 Các sản phẩm hiện tại trên thị trường
MIPS32® 4K® Family
dụng yêu cầu các bộ xử lý dễ sử dụng và có hiệu quả sử dụng năng lượng cao Các lõi MIPS32® 4K® có khả năng cấu hình và tổng hợp đã được sử dụng trong hàng trăm hệ thống SoC
Tính năng:
nhịp
MIPS32® M4K™ Core
gian thực, các ứng dụng hệ thống nhúng như là vi điều khiển, các hệ thống điều khiển công nghiệp, mạng không dây, ô tô và các thiết bị lưu trữ
thiết kế tối ưu được hiệu năng của bộ xử lý , giảm kích thước và năng lượng tiêu thụ
Tính năng:
Trang 9 Thực hiện kỹ thuật đường ống 5 giai đoạn, có khả năng hoạt động trên 400MHz
Như ta đã biết, các bộ xử lí sẽ chỉ xử lí được tập các lệnh thuộc về kiến trúc bộ lệnh của nó (tức là các lệnh đã được định sẵn trong bộ xử lí đó) Vì thế các hệ thống nhúng và một số loại siêu máy tính thuộc về kiến trúc bộ lệnh MIPS thì chỉ có thể thực hiện các chương trình thuộc kiến trúc bộ lệnh này (tức là chỉ thực thi được các chương trình viết bằng bộ lệnh MIPS) Đó là lí do chúng ta cần nghiên cứu về MIPS
Đến năm 1995 thì MIPS10000 ra đời đã mang lại thành công lớn cho sự phát triển
về công nghệ MIPS.Trong khuôn khổ của đề tài này, chúng ta hi vọng đạt được một cái nhìn tổng quát nhất về kiến trúc MIPS để từ đó phát triển hơn Nên sản phẩm tạo ra chỉ mang những chức năng cơ bản nhất của MIPS
Chức năng sản phẩm
Mục đích của bản thiết kế, nhằm tạo ra một bộ xử lý MIPS, nhằm tăng đột xuất hiệu năng thông qua sử dụng đường ống lệnh (pipeline instructions) Thiết kế pipeline làm giảm đáng kể thời gian rảnh rỗi của CPU khi thực hiện liên tiếp các câu lệnh Bộ xử lý này chỉ
có khả năngthực hiện được một số lệnh cơ bản
Kiến trúc tập lệnh này hộ trợ thực hiện:
Trang 10 Chỉ tiêu kỹ thuật của sản phẩm
Thông số đầu vào,ra
Sơ đồ cấu trúc bản thiết kế
Trang 11Hình 1.2: Sơ đồ tổng quát MIPS pipeline
Khác với chip Single-cycle khi các lệnh đều được thực hiện xong trong một chu kì máy, chip pipeline chia một câu lệnh ra thành 5 bước (steps):
Câu lệnh sau không cần đợi câu lệnh trước hoàn tất mới bắt đầu thực hiện mà mỗi step
sẽ được thực hiện liên tiếp, do đó cải thiện đáng kể về tốc độ thực hiện các chương trìnhCác bước thực hiện một câu lệnh:
tiếp theo và lưu vào thanh ghi trung gian IF/ID
Trang 12 Sử dụng mã máy của câu lệnh lưu trong thanh ghi IF/ID làm đầu vào cho khối Regfile
các tín hiệu điều khiển, ngoài tín hiệu SignEx được sử dụng cho khối mở rộng, các tín hiệu khác được lưu vào thanh ghi trung gian ID/EX
ID/EX
mở rộng zero của 16 bit thấp của mã máy thành 32 bit và lưu vào thanh ghi ID/EX
toán và lưu kết quả vào thanh ghi trung gian EX/MEM
lưu địa chỉ vào thanh ghi EX/MEM
Một số bộ mux được dùng để lựa chọn giá trị mới cho PC từ các câu lệnh rẽ nhánh BNE, J, JR
vào thanh ghi EX/MEM
thanh ghi EX/MEM để thực hiện đọc hoặc ghi vào bộ nhớ dữ liệu Kết quả đọc ghi vào thanh ghi trung gian MEM/WB
khiển MemtoReg và RegWrite được ghi lại vào thanh ghi MEM/WB
Trang 13ghi vào thanh ghi.
hiện công việc ghi dữ liệu vào bộ thanh ghi
Thiết kế các thanh ghi pipeline
Hình 1.3: ????
trong mỗi chu kỳ để làm đầu vào cho các khối sau trong chu kì tiếp theo
trị đọc ra từ bộ thanh ghi Giá trị mở rộng 32bits từ 16bits Địa chỉ các thanh ghi Rs,Rt,Rd Các tín hiệu điều khiển từ khối Control: ALUOp, ALUSrc, RegDst, Branch, Jump, MemWrite, MemRead, RegWrite, MemtoReg
ALU, giá trị dùng để ghi vào bộ nhớ file các thanh ghi, địa chỉ của thanh ghi đích Các tín hiệu điều khiển: MemWrite, RegWrite, MemtoReg
liệu, kết quả của khối ALU, địa chỉ thanh ghi đích
Trang 14 Các tín hiệu điều khiển được xác định trong giai đoạn giải mã và được lưu trong các thanh ghi trạng tháigiữa các giai đoạn pipeline.
Thanh ghi trạng thái, phần mở rộng của thanh ghi ID/EX Đầu vào lấy tín hiệu điều khiển từ khối Control Unit, đầu ra đưa vào thanh ghi trạng thái trong phần
mở rộng của thanh ghi EX/MEMThanh ghi trạng thái, phần mở rộng của thanh ghi EX/MEM
Thanh ghi trạng thái phần mở rộng của thanh ghi MEM/WB Với tín hiệu đầu
ra RegWriteW làm tín hiệu điều khiển cho khối Register File và MemtoRegW làm tín hiệu điều khiển cho bộ MUX lấy tín hiệu WriteBack
Các yêu cầu phi chức năng
Bộ xử lý MIPS sau khi được thiết kế không chỉ đạt những chức năng kĩ thuật mà cần đạt yêu cầu phi chức năng như sau:
Tuy nhiên trong khuôn khổ của bài tập lớn này, chúng em chỉ dừng lại ở việc nghiên cứu và mô tả kiến trúc của bộ xử lý MIPS, không đặt vấn đề giá thành làm một tiêu chí đánh giá
Trang 15 Phân tích chức năng và lập kế hoạch
Trong quá trình thiết kế, MIPS được chia thành các khối, cụ thể chức năng và phân chia các khối như sau:
Hình 2 Sơ đồ các khối chức năng của MIPS
Chức năng khối Instruction Memory
ứng lấy được
Hình 2.2: Khối Instruction Memory
một cổng đọc , khối này nhận một đầu vào địa chỉ 32 bit A và đầu ra là dữ liệu RD 32 bit (dữ liệu ở đây là lệnh của chương trình)
Trang 16 Khối MUX 2-1, thực hiện chức năng chon tín hiệu đầu vào cho bộ đếm chương trình PC
trình nạp lệnh
của bộ đếm chương trình Program Counter
PC Bộ đếm chương trình là một thanh ghi
32 bit, đầu ra của khối này PCF trỏ tới lệnh hiện tại Đầu vào PC’ là địa chỉ của lệnh tiếp theo cần thực thi
liệu WD sẽ được viết vào bộ nhớ dữ liệu tại địa chỉ tương ứng A tại sườn lên của xung clock Nếu WE =0 dữ liệu sẽ được đọc ra RD
Chức năng khối Register File
Hình 2.3: Register File
Trang 17 Tệp thanh ghi fie gồm 32 thanh ghi, mỗi thanh ghi 32 bit Khối này có 2 cổng đọc
và 1 cổng ghi Hai cổng đọc nhận các đầu vào địa chỉ 5 bit (ứng với 32 thanh ghi) A1, A2 Đầu ra là dữ liệu RD1, RD2 tương ứng với các đầu vào địa chỉ A1, A2
WD3
tín hiệu WE ở mức cao 1, dữ liệu WD3 sẽ được ghi vào trong thanh ghi file tương ứng tại sườn lên của xung clock
Chức năng khối ALU và ALU control
Hình 2.4: ALU
ALUResult 32 bit Ngoài ra ALU còn có một đầu vào điều khiển ALUControl 4 bit
Trang 18Hình 2.5: Datapath khi thực hiện lệnh loại R
ALU nhận dữ liệu từ các đầu ra của thanh ghi file hoặc ngay trong mã lệnh
Chức năng khối Control Unit
Hình 2.6: Control Unit
Instr[31-26] và funct Instr[5-0] của lệnh
sử dụng thêm trường funct để xác định các phép toán ALU
Trang 19như:MemtoRegD,MemWriteD,BranchD,ALUSrcD,RegDstD,RegWriteD,MemReadD, ALUSelectShilfD, ALUControlD Tất cả các tín hiệu điều khiển này được đưa vào thanh ghi trạng thái.
ALUControl
Mã hóa ALUOp:
ALUOp
Bảng sự thật của khối ALUDecoder:
Trang 20100001 10101
1
101000
101001000100
Trang 21Opcode 00010
1
001000
001100
001101 00111
0
001010
000010000011
Bảng 2.3: Bảng giải sự thật MainDecoder (tiếp)
Chức năng khối Data Memory
Hình 2.7: Data Memory
Kỹ thuật pipeline và xử lý xung đột
Hình 2.8: Khối Hazard unit
Trang 22 Xung đột cấu trúc
Do các lệnh được thực hiện đồng thời, tại cùng 1 chu kì, hai lệnh khác nhau có thể cùng truy cập đến 1 tài nguyên dẫn đến xung đột Trong kiến trúc von Neumann, lệnh và dữ liệu cùng nằm trên 1 bộ nhớ, khi có hai yêu cầu đọc dữ liệu và đọc lệnh
Khi toán hạng của lệnh sau phụ thuộc vào lệnh trước chưa được hoàn thành sẽ gây
ra việc đọc sai dữ liệu, và gọi là xung đột dữ liệu
Trang 23Hình 2.9: Xung đột điều khiển
Lệnh add sẽ công nội dung của thanh ghi $s2 và $s3 vào thanh ghi $s0, kết quả được hoàn thành và lưu vào thanh ghi ở chu kì 5, nhưng tại chu kì 3, lệnh and đã dung nội dung $s0 làm toán hạng, do vậy kết quả sẽ không như mong muốn Tương tự đối với lệnh or
Có 2 cách để giải quết loại xung đột này là chờ dữ liệu tính xong rồi thực hiện lệnh
kế tiếp, hoặc chuyển dữ liệu sau khi được tính toán ở giai đoạn MEM hoặc WB về giai đoạn EX
nào có dữ liệu phụ thuộc vào lệnh trước đó cho tới khi dữ liệu được sẵn sàng
Hình2.10: phương pháp dừng chương trình
Trang 24 Phương pháp chuyển tiếp dữ liệu: các lệnh thường được tính toán ở giai đoạn EX rồi chuyển đến các giai đoạn MEM và WB, do vậy ta có thể chuyển dữ liệu trờ về giai đoạn EX cho các lệnh phụ thuộc dữ liệu phía sau.
Hình 2.11: Chuyển tiếp dữ liệu
Lệnh lw chỉ tính toán địa chỉ ở giai đoạn đoạn EX, dữ liệu thực sự chỉ có được ở giai đoạn MEM, do vậy chúng ta không thể chuyển tiếp từ giai đoạn MEM Yêu cầu dừng chương trình cần được thực hiện
Hình 2.12: Dừng chương trình
Xung đột điều khiển
Trang 25a Nguyên nhân
Khi thực hiện các lệnh điều khiển chương trình như bne, beq,jr,j… điều kiện nhảy được tính toán ở giai đoạn EX, nếu điều kiện đúng chương trình sẽ nhảy tới địa chỉ cho trước, không may thay, các lệnh kế tiếp đã được nạp vào các giai đoạn IF, ID và chương trình sẽ làm việc không như mong muốn
b Giải quyết xung đột
phải chờ cho tới khi lệnh beq tính toán xong điều kiện, nếu điều kiện nhảy không đúng thì chúng mới được nạp vào đường ống Việc chờ tính toán điều khiển làm mất 3chu kì, do vậy sẽ làm tăng CPI
Trang 26Chúng ta có thể tính toán điệu kiện nhảy sớm ở giai đoạn ID, việc quết định nhảy sớm sẽ làm giảm thời gian chờ và tăng hiệu suất.
Trang 27 Lựa chọn phương án kỹ thuật
Sơ đồ khối của sản phẩm
So sánh đánh giá thiết kế sử dụng kỹ thuật pipeline với các thiết kế khác
So sánh, đánh giá các thiết kế đơn xung nhịp, đa xung nhịp, kỹ thuật pipeline dựa trên các tiêu chí về tốc độ xung đồng hồ, hiệu quả sử dụng chu kỳ đồng hồ, hiệu năng,diện tích thiết kế và lưu lượng của bộ xử lý:
đặt theo lệnh chậm nhất
Tốn diện tích thiết kế vì cần nhân đôi một số khối chức năng (Ví dụ: bộ cộng) vì chúng không thể được chia sẻ trong cùng một chu kì động hồ
Hình 3.1: Biểu đồ thời gian thiết kế đơn xung nhịp
Hình 3.2: Datapath thiết kế đơn xung nhịp
Trang 28 Thiết kế đa xung nhịp (Multi-Cycle MIPS): Chia lệnh thành các phần thực hiện IF,
ID, EX, MEM, WB Mỗi pha thực hiện trong 1 chu kì xung nhịp