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 SINH VIÊN Đặng Văn Quân Lê Minh Thao
ĐT2 - K54 ĐT5 - K54
20092109 20092399
Nguyễn Văn Hưng Nguyễn Văn Huấn Nguyễn Thị Mai Trang
ĐT11 - K54 ĐT2 - K54 ĐT4 - K54
20091384 20092165 20092812
HÀ NỘI 11/2012
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 ...................................................... ................ ... 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 ......................................... 1.1.3.Lên ý t ưởng cho đề tài............................ .......................................... ............................ ............................ ............................ ............................. ............................. ........................... ................ ... 4 1.2Các s ả tr ườ ng (Các công trình bài báo nghiên c ứu .......... .............. ... 4 ả n ph ẩm ẩm đ ã có trên th ị ị tr ườ ng ứu đ ã có và có liên quan).....................
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 ườ ng 1.3Các ch ỉ tiêu k thu ậ ........................................ ............................ ............................ ............................ ............................. ............................. .................... ...... 5 ỉ tiêu ỹ thu ậ t c ủ ủa s ả ả n ph ẩ ẩ m ..........................
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
2.1Phân chia ch ức ......................................... ............................ ............................ ............................ ............................ ............................ ............................ .......................... ............ 10 ức năng ...........................
Nguyễn Văn Hưng Nguyễn Văn Huấn Nguyễn Thị Mai Trang
ĐT11 - K54 ĐT2 - K54 ĐT4 - K54
20091384 20092165 20092812
HÀ NỘI 11/2012
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 ...................................................... ................ ... 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 ......................................... 1.1.3.Lên ý t ưởng cho đề tài............................ .......................................... ............................ ............................ ............................ ............................. ............................. ........................... ................ ... 4 1.2Các s ả tr ườ ng (Các công trình bài báo nghiên c ứu .......... .............. ... 4 ả n ph ẩm ẩm đ ã có trên th ị ị tr ườ ng ứu đ ã có và có liên quan).....................
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 ườ ng 1.3Các ch ỉ tiêu k thu ậ ........................................ ............................ ............................ ............................ ............................. ............................. .................... ...... 5 ỉ tiêu ỹ thu ậ t c ủ ủa s ả ả n ph ẩ ẩ m ..........................
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
2.1Phân chia ch ức ......................................... ............................ ............................ ............................ ............................ ............................ ............................ .......................... ............ 10 ức năng ...........................
2.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 ậ ho ạ ch ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ....................... ......... 20 ậ p k ế ế ho ạ ch
3.1S ơ đồ kh ố ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ................... ..... 21 ơ đồ kh ối c ủ ủa s ả ản ph ẩ ẩ m ........................... 3.2Ki ế .......................................... ............................ ............................. ............................. ............................ ............................ ............................ ............................ ................ .. 22 ến trúc thi ế ế t k ế ế ............................
4.1B ộ đế ng trình PC ........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ................... ..... 24 ộ đế m ch ươ ươ ng 4.2B ộ l ệ nh ........................... ......................................... ............................ ............................ ............................ ............................ ............................ ............................ ............................. .......................... ........... 24 ộ nh nh ớ ớ l ệ nh 4.3Register 4.3Register File ............................ .......................................... ............................ ............................ ............................ ............................. ............................. ............................ ............................ ....................... ......... 24 4.4B ộ d ữ li ệ ......................................... ............................. ............................ ............................ ............................ ............................ ............................ ............................ ..................... ....... 26 ộ nh nh ớ ớ d ữ li ệ u .......................... 4.5Xây d ự n nh lo ạ .......................................... ............................. ............................ ............................ ............................ ............................ ................ .. 26 ựng g Datapath cho l ệ ệ nh ạ i R ........................... 4.6Kh ối n ............................ ............................ ............................. ............................. ............................ ............................ ............................ ....................... ......... 29 ối điề u khi ể ển(CU)............... (CU)............................. 4.7Kh ố l (Hazard Unit). ........................... .......................................... ............................. ............................ ............................ ............................ ............................ ................ .. 30 ối x ử ử l ý xung độ t (Hazard
4.7.1.Khối chuyển tiế p dữ liệu .......................... ........................................ ............................ ............................ ............................ ............................. ............................. .......................... ............30 .......................................... ............................. ............................ ............................ ............................ ............................ ................. ... 30 4.7.2.Điều khiển thanh ghi Pipeline ...........................
5.1K ế t ổ Quartus ........................... ......................................... ............................ ............................ ............................ ............................. ............................. ........................... ............. 33 ết qu ả ả t ổng ng h ợ ợ p t ừ ừ Quartus 5.2K ế mô ph ỏ ng s ử d ụ n Modelsim ............................ .......................................... ............................ ............................ ............................ ............................. .......................... ........... 33 ết qu ả ả mô ỏ ng ử d ụng g Modelsim K ế mô ph ỏ ng trên Modelsim.......................................................................................................................... 35 ết qu ả ả mô ỏ ng
MIPS : Microprocessor without Interlocked Pipeline Stage là là một kiến trúc vi xử lý
đượ c phát triển bở i hãng MIPS Technologies và và là ki ến trúc chi ếm đến 1/3 số lượ ng ng chip sản xuất trên nền kiến trúc RISC.
Bộ xử lí MIPS đầu tiên đượ c nghiên cứu vào năm 1981 vớ i mục đích cơ b bản là nhằm
tăng đột xuất hiệu năng thông qua sử dụng một đườ ng 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.
Khó khăn trong quá trình tì m hiểu thiết k ế: theo phươ ng ng pháp đườ ng ng ống l ệnh nó 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 ống l ại để nạ p nhi ều dữ liệu hơ n. 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 ng lai.
Yêu cầu đặt ra trong quá trình thi ết k ế: yêu c ầu tất cả các câu l ệnh phải đượ c hoàn thành trong 1 chu kì xung nh ị p p nhờ th 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 n hấ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 xung nhị p p lớ n hơ n r ất nhiều.
Lịch sử phát triển sau đó:
Thiết k ế đầu tiên ra đờ i vào năm 1985: R2000 sau đó phát triể n tiế p R3000
và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.
Năm 1991 MIPS cho ra đờ i bộ vi xử lý 64 bit đầu tiên R4000
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 (32bit)
Í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 trong 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 ế đòi hỏi sự thỏa hiệ p
Ba loại chỉ thị định dạng
Nguyên tắc hoạt động của Pipeline
Chia nhỏ các lệnh thành các giai đoạn đườ ng ống
Bắt đầu lệnh tiế p theo tr ướ c khi lệnh hiện tại k ết thúc.
Mục đích là thiết k ế một chip MIPS pipeline b ằng ngôn ngữ mô tả Verilog HDL.
Lý do chọ đề tài: nhận thấy đượ c sự cần thiết và phát triển ngày càng nhanh c ủa hệ 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.
Sau 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:
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.
Theo sau R2000 vào năm 1998, nó bổ sung thêm 32kB Cache (và s ớm được tăng 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 - một tính năng phổ biến của CPUs k ỷ nguyên này. R3000 tr ở thành thiết k ế MIPS đầu tiên thành công trong l ĩ nh vực thươ ng mại. R3000A
đượ c sử dụng cực k ỳ thành công trong các máy Sony PlayStation, ch ạy vớ i tốc độ 40 MHz, truyền thông tin ở tốc độ 32 câu l ệnh trong 1 giây. R3000 c ũng đi kèm vớ i R3100 FTU trong cùng một chip đơ n. Các hãng khác c ũng tham gia s ản xuất như Pacemips vớ i R3400, IDT vớ i R3500. R3900 của Toshiba l à chíp đầu tiên dạng SoC (System on a Chip) đượ c 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.
Được đưa ra vào năm 1991, mở r ộng tậ p l ệnh MIPS để h ỗ tr ợ đầy đủ ki ến trúc 64
bit, 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 cache mở r ộng lên tớ i 1MB (cahe level 2). Ngoài ra còn các h ọ 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)…
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 mở r ộng tớ i 6 chip, hỗ tr ợ 4MB cache m ở r ộng.
Là một thiết k ế chip đơ n lẻ, chạy ở tốc độ cao hơ n R8000, có 32kB cache chính cho các câu lệnh và dữ liệu. Các thiết k ế tiế p theo của R1000 là R12000 và R14000 v ớ i hỗ tr ợ DDR SRAM trong cache và tốc độ lên tớ i 200 MHz. Ngoài ra còn các thi ết k ế
Hình 1.1: Thiết k ế R10000 (1995)
Họ vi xử lý MIPS32® 4K® đượ c thiết k ế cho các ứng dụng SoC. Đây là những ứng 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.
Thực hiện k ỹ thuật đườ ng ống 5 giai đoạ n
Đườ ng dữ liệu và địa chỉ 32 bit
Thực hiện kiến trúc tậ p lệnh tươ ng thích như MIPS32
Có thể th ực hi ện l ệnh ở m ột trong hai ch ế độ: đơ n xung nhị p hoặc đa xung
nhị p
Cho phép ngườ i dùng định ngh ĩ a và thêm các l ệnh trong quá trình thi ết k ế
Tần số hoạt động tối thiểu: 0MHz
Có chế độ hoạt động ở mode tiết kiệm năng lượ ng
Có các bộ chia clock được điề u khiển bằng phần mềm
Giá trên th ị tr ườ ng: $150USD
MIPS32® M4K™ Core có hiệu năng cao, c ó nhiều tính năng cho các ứ ng dụng thờ i 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 ữ.
Vớ i r ất nhiều tính năng có thể cấu hình và tùy chọn bở i ngườ i dùng cho phép ngườ i 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ụ.
Thực hiện k ỹ thuật đườ ng ống 5 giai đoạn, có khả năng hoạt động trên
400MHz
Gồm 32 thanh ghi đa năng
Tươ ng thích hoàn toàn v ớ i MIPS32
Thực hiện kiến trúc tậ p lệnh của MIPS32
Có thể hoạt động ở 2 chế độ: đơ n xung nhị p hoặc đa xung nhị p
Có bộ chia clock được điề u khiển bằng phần mềm
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.
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:
Các phép toán s ố học: cộng, tr ừ, nhân…
Truy cậ p bộ nhớ vớ i 2 chỉ thị: lw, sw.
Lưu tr ữ, đọc và ghi byte d ữ liệu
Lệnh dịch, logic số học, nhảy (có điều kiện và không có điều kiện).
Tần số clock 200MHz
Hiệu năng:
Tiêu thụ năng lượ ng:
Kích thướ c core: Sau khi thiết k ế xong bộ xử lý MIPS, để kiểm tra xem nó có đạt các chức năng đã
đặt ra, chúng ta ti ến hành chạy mô phỏng bằng phần mềm của Altera (Quartus, Moldemsim) vớ i các thông s ố đầu vào ra cụ thể như sau:
Input
Output
Sơ đồ chung
Thông số clk reset instruction readData writeData aluOut selectWidth PC memWrite memRead
Ý ngh ĩ a Tín hiệu đồng hồ hệ thống Tín hiệu reset không đồng bộ Mã lệnh Dữ liệu vào Dữ liệu ra Dữ liệu ra của khối ALU Chọn số bit của dữ liệu đọc và ghi Địa chỉ lệnh tiế p theo Tín hiệu Write Enable Tín hiệu Read Enable
Hình 1.2: Sơ đồ tổng quát MIPS pipeline
Phân tích các thành ph ần cấu tạo. 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):
Nạ p lệnh và cậ p nhậ p giá tr ị PC (Instruction Fetch – IF)
Đọc thanh ghi và gi ải mã lệnh ( Intruction Decode – ID)
Thực hiện lệnhR, tính địa chỉ bộ nhớ (Execution – EX)
Đọc hoặc ghi dữ liệu trên bộ nhớ dữ liệu (Memory access – MEM)
Ghi k ết quả vào tệ p thanh ghi (Write back – WB)
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ình Các bướ c thực hiện một câu lệnh:
Đọc lệnh từ bộ nhớ ( Instruction Fetch – IF)
Sử dụng địa ch ỉ l ưu trong thanh ghi PC để gi ải mã ra mã máy c ủa câu lệnh
tiế p theo và lưu vào thanh ghi trung gian IF/ID.
Giá tr ị PC đượ c cộng thêm 4 và l ưu vào thanh ghi trung gian IF/ID
Giải mã lệnh và đọc các thanh ghi (Intruction Decode – ID)
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
Khối Control sử dụng phần opcode của mã máy của câu lệnh để giải mã thành
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
Đọc các thanh ghi Rs, Rt t ừ bộ thanh ghi và l ưu vào thanh ghi trung gian
ID/EX
Khối mở r ộng sử dụng tín hiệu SignEx từ khối Control để mở r ộng dấu hay
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
Địa chỉ các thanh ghi Rs, Rt, Rd đượ c lưu vào thanh ghi ID/EX
Tính toán k ết quả của câu lệnh hoặc địa chỉ (Execution – EX)
Khối ALU sử dụng các đầu vào đã đượ c lưu trong thanh ghi ID/EX để tính
toán và lưu k ết quả vào thanh ghi trung gian EX/MEM
Một bộ mux đượ c dùng để lựa chọn thanh ghi đ ích từ 2 thanh ghi Rt, Rd và
lưu địa chỉ vào thanh ghi EX/MEM
Địa chỉ m ớ i c ủa PC sau câu lệnh BNE cũng đượ c tính toán trong khối này.
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.
Các tín hiệu điều khiển MemWrite, MemtoReg v à RegWrite đượ c l ưu ti ế p
vào thanh ghi EX/MEM
Đọc hoặc ghi dữ liệu trên bộ nhớ dữ liệu ( Memory access – MEM)
Sử dụng k ết quả tính toán t ừ khối ALU và tín hi ệu điều khiển MemWrite từ
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.
Các giá tr ị đầu ra của ALU, địa ch ỉ thanh ghi đ ích cùng vớ i 2 tín hi ệu điều
khiển MemtoReg và RegWrite đượ c ghi lại vào thanh ghi MEM/WB
Ghi k ết quả vào thanh ghi ( Write back – WB)
Sử dụng tín hiệu MemtoReg từ thanh ghi MEM/WB để lựa chọn dữ liệu cần
ghi vào thanh ghi.
Sử dụng địa ch ỉ thanh ghi đích và tín hiệu cho phép ghi RegWrite để thực
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: ????
Ta sử dụng các thanh ghi pipeline làm trung gian l ưu k ết quả thực hiện của mỗi khối trong mỗi chu k ỳ để làm đầu vào cho các kh ối sau trong chu kì ti ế p theo.
Có 4 thanh ghi pipelined n ằm giữa các khối:
Thanh ghi IF/ID: dùng để lưu các giá tr ị PC+4 và mã máy c ủa câu lệnh
Thanh ghi ID/EX: dùng để lưu các giá tr ị PC+4, địa chỉ của lệnh Jump, 2 giá
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.
Thanh ghi EX/MEM: Dùng để lưu các giá tr ị: K ết quả tính toán của khối
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.
Thanh ghi MEM/WB: Để l ưu các giá tr ị : Giá tr ị được đọc ra từ bộ nh ớ d ữ
liệu, k ết quả của khối ALU, địa chỉ thanh ghi đ ích.
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 giữ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/MEM Thanh 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
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:
Dễ sử dụng trong việc mô phỏng
Đáp ứng đượ c các câu l ệnh cơ bản
Dễ dàng nâng cấ p và sửa lỗi khi cần thiết.
Giá thành hợ p lý
MIPS hoạt động ổn định và có độ tin cậy cao
Năng lượ ng tiêu thụ thấ p
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á.
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
Dùng để lưu tr ữ lệnh dướ i dạng mã máy (nh ị phân).
Kích thướ c mỗi lệnh khi dịch ra mã máy là 32 bits, t ốn 32 bits để lưu tr ữ.
Đầu vào bộ nhớ lệnh l à đị a chỉ l ệnh c ần l ấy, đầu ra là mã máy c ủa câu lệnh t ươ ng ứng lấy đượ c.
Hình 2.2: Khối Instruction Memory
Khối b ộ nhớ lệnh Instruction Mem ch ỉ có 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).
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
Khối tăng PC, để đếm địa chỉ trong quá trình nạ p lệnh
Đầu vào của bộ nhớ lệnh chính là đầu ra 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.
Khối Data Mem có một cổng đọc hoặc ghi. Nếu tín hiệu cho phép ghi WE=1 thì d ữ 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.
Hình 2.3: Register File
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.
Cổng ghi nhận đầu vào địa chỉ A3 (5 bit ) và đầu vào của dữ liệu cần ghi 32 bit WD3.
Ngoài ra còn có các tín hiệu clock và đầu vào cho phép ghi Write Enable WE. N ếu 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.
Hình 2.4: ALU
Khối ALU có 2 đầu vào là các toán h ạng SrcA và SrcB 32 bit, m ột đầu ra ALUResult 32 bit. Ngoài ra ALU còn có m ột đầu vào điều khiển ALUControl 4 bit
để xác định các phép toán c ần thực hiện.
ALUControl ALU Operation 0000
AND
0001
OR
0010
ADD
0011
XOR
0100
NOR
0101
Not use
0110
SUB
0111
SLT
1000
SLL
1001
SRL
1010
SRA
1011…1111
Not use
Hình 2.5: Datapath khi th ự c hi ệ n l ện h 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.
Hình 2.6: Control Unit
Khối điều khiển CU tính toán các tín hi ệu điều khiển d ựa trên các tr ườ ng opcode Instr[31-26] và funct Instr[5-0] của lệnh.
Hầu hết các tín hi ệu điều khiển nằm ở tr ườ ng opcode, tuy nhiên các l ệnh loại R phải sử dụng thêm tr ường funct để xác định các phép toán ALU.
Như trên hình vẽ, khối Control Unit tính toán h ầu hết các tín hi ệu điều khiển
như:MemtoRegD,MemWriteD,BranchD,ALUSrcD,RegDstD,RegWriteD,MemRe adD, 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.
Khối ALU Decoder sử dụng tr ườ ng Funct[5-0] và 2 bit Op để tính toán ALUControl.
Mã hóa ALUOp: Ý ngh ĩ a
ALUO p 000
Add
001
Subtract
010
Look at func field
011
And
100
Or
101
Xor
110
Not use
111
Set less than
Bảng sự thật của khối ALUDecoder: ALUO
Funct
ALUControl
Jr ALUSelectShift
p 000
X
0010 (add)
0
0
001
X
0110 (subtract)
0
0
011
X
0000 (and)
0
0
100
X
0001 (or)
0
0
101
X
0011 (xor)
0
0
110
X
X
0
0
111
X
0111 (slt)
0
0
0
0
010
100000 0010 (add)
010
100010 0110 (subtract)
0
0
010
100100 0000 (and)
0
0
010
100101 0001 (or)
0
0
010
100110 0011 (xor)
0
0
010
100111 0100 (nor)
0
0
010
101010 0111 (slt)
0
0
010
000000 1000 (sll)
0
1
010
000010 1001 (srl)
0
1
010
000011 1010 (sra)
0
1
010
001000 0010 (jr)
1
0
B ản g 2.1: B ản g s ự th ậ t kh ố i ALUDecoder
Instr
R-type
lw
lb
lh
sw
sb
sh
beq
Opcode
00000
10001
10000
100001
10101
10100
10100
000100
0
1
0
1
0
1
RegDst
1
0
0
0
x
x
x
x
ALUOp
010
000
000
000
000
000
000
xxx
ALUSrc
0
1
1
1
1
1
1
x
Bne
0
0
0
0
0
0
0
0
Beq
0
0
0
0
0
0
0
1
MemRead
0
1
1
1
0
0
0
X
MemWrit
0
0
0
0
1
1
1
0
RegWrite
1
1
1
1
0
0
0
0
Mem2Reg
0
1
1
1
x
x
x
x
Jump
0
0
0
0
0
0
0
0
S
xx
10
00
01
10
00
01
xx
j
jal
e
g 2.2: B ản g s ự th ậ t kh ối MainDecoder B ản Instr
bne
addi
andi
ori
xori
slti
Opcode
00010
00100
00110
1
0
0
RegDst
x
0
0
ALUOp
xxx
000
ALUSrc
x
Bne
001101
00111
00101
00001
000011
0
0
0
0
0
0
x
x
011
100
101
111
xxx
xxx
1
1
1
1
1
x
x
1
0
0
0
0
0
0
0
Beq
0
0
0
0
0
0
0
0
MemRead
x
0
0
0
0
0
0
0
MemWrit
0
0
0
0
0
0
0
0
RegWrite
0
1
1
1
1
1
0
0
Mem2Reg
x
0
0
0
0
0
x
x
Jump
0
0
0
0
0
0
1
1
S
xx
xx
xx
xx
xx
xx
xx
xx
e
B ả ng 2.3: B ả ng gi ả i s ự th ật MainDecoder (ti ế p)
Hình 2.7: Data Memory
Hình 2.8: Khối Hazard unit
Nguyên nhân xảy ra xung đột 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 sẽ dẫn đến xung độ t.
Xử lý xung đột. Thêm tài nguyên ph ần cứng. Vớ i kiến trúc Havard lệnh và dữ liệu đượ c chia thành hai bộ nhớ và bus khác nhau, do v ậy sẽ không xảy ra xung đột cấu trúc.
Nguyên nhân 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
Xét
đoạn
lệnh
sau:
Hình 2.9: Xung đột điề u khiển Lệnh
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
đã 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 .
Giải quyết xung đột:
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.
Phươ ng pháp chờ : phần cứng sẽ phát hiện sự phụ thuộc dữ liệu và dừng những lệnh 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
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
Giải quết xung đột cho lệnh lw 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
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.
Giải quyết xung đột bằng phươ ng pháp chờ .
VD: xét đoạn chươ ng trình beq $t1, $t2, 40 and $t0, $s0, $s1 or $t1, $s4, $s0 sub $t2, $s0, $s5
Lệnh beq đượ c tính toán và qu ết định nhảy ở giai đoạn EX,các lệnh and,or,sub sẽ 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.
Giải quết xung đột bằng cách tính toán điề u kiện nhảy sớ m
Chú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.
Khối này thực hiện mở r ộng bit từ 16bit-> 32bit
Khối dịch trái 2 bit
Mục 1
Công việc Tìm hiểu yêu cầu và phân chia công việc
Ngườ i thực
Bắt đầu
Ngày k ết thúc
Toàn nhóm
01/10
05/10
hiện
2
Phân tích h ệ thống
Toàn nhóm
08/10
12/10
3
Thiết k ế Controller
Thao
15/10
02/11
4
Thiết k ế khối datapath
Quân
15/10
02/11
15/10
02/11
05/11
16/11
5
Thanh ghi Pipeline và x ử Hưng, Trang, lý Hazard
Huấn
Ghép các kh ối, mô 6
phỏng và kiểm tra chức
năng toàn bộ
Hưng, Quân
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ý:
Ưu điểm: Đơ n giản và dễ hiểu Nhược điểm: Sử dụng chu k ì đồng hồ không hiệu quả vì chu kì đồ ng hồ đượ c
đặ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
: 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.
Ưu điểm: Thờ i gian th ực hiện 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.
Hình 3.3: Biểu đồ thờ i gian thiết k ế đa xung nhị p
Hình 3.4: Datapath thi ết k ế đa xung nhị p
Hình 3.5: Sơ đồ khối thiết k ế MIPS pipeline Thiết k ế MIPS dựa trên k ỹ thuật pipeline (K ỹ thuật đườ ng ống) là phươ ng pháp k ết hợ p ưu điểm của hai phươ ng pháp trên: Quy tắc:
Chia việc thực hiện lệnh thành 5 giai đoạ n, tại một thời điêm bất k ỳ thực hiện
tất cả các giai đoạn nhưng của các lệnh khác nhau.
Thực hiện lệnh tiế p theo tr ướ c khi lệnh hiện tại k ết thúc
Chu k ỳ đồng hồ quyết định bởi giai đoạn thực hiện lệnh chậm nhất
Vớ i một số lệnh có chu k ỳ lãng phí nh ưng vẫn phải thêm để đảm bảo pipeline
Ưu điểm:
Cải thiện thông lượ ng lượ ng – tổng số công việc hoàn thành trong 1 kho ảng
thờ i gian
Dễ triển khai:
Các lệnh có cùng độ dài
Ít định dạng lệnh, các định dạng lệnh có tính đối xứng
Chỉ truy cậ p bộ nhớ bằng lệnh lw và sw
Mỗi l ệnh chỉ ghi lớ n nh ất m ột k ết qu ả ở hai giai đoạn cu ối (MEM hoặc WB)
Toán hạnh đượ c s ắ p xế p trong b ộ nhớ sao cho một lệnh dịch chuyển dữ liệu chỉ cần một lần truy cậ p bộ nhớ
Hình 3.6: So sánh biểu đồ thờ i gian của thiết k ế đơ n xung và pipeline
Hình 3.7: Chi tiết kiến trúc thiết k ế MIPS pipeline
Sau khi xác định rõ các ch ỉ tiêu k ỹ thu ật, phươ ng án thiết k ế, ki ến trúc thiết k ế, ta tiến hành thiết k ế mạch theo từng khối. Cụ thể các khối đượ c trình bày nh ư sau:
Hình 4.1: Thanh ghi bộ đếm chươ ng trình Thanh ghi bộ đếm chươ ng trình chứa địa chỉ của lệnh cần thực thi. PC đượ c cậ p nhật ở mọi chu k ỳ mà không cần tín hiệu điều khiển PC.
Đầu vào PC’: 32 bit, đây chính là đị a chỉ của lệnh tiế p theo cần thực hiện
trong bộ nhớ lệnh.
Đầu ra PC: 32 bit, tr ỏ tớ i lệnh hiện tại của chươ ng trình trong bộ nhớ lệnh.
Ngoài ra khối bộ đếm chươ ng trình này còn có tín hi ệu đầu vào clock.
Hình 4.2. Quá trình xử lí lệnh
Hình 4.3. Khối Intruction Memory
Bộ nhớ lệnh lưu tr ữ chươ ng trình thực thi dướ i dạng mã máy.
Khối bộ nhớ lệnh gồm có một cổng đọc.
Đầu vào: địa chỉ 32 bit nơ i chứa lệnh cần thực thi.
Đầu ra: lệnh cần thực thi tươ ng ứng với địa chỉ đầu vào.
Hình 4.4:Tệ p thanh ghi Tệ p thanh ghi file gồm 32 thanh ghi như sau: Số thanh ghi
Tên quy ướ c
Chức năng
$0
$zero
$1
$at
$2-$3
$v0, $v1
Chứa giá tr ị tr ả về của hàm
$4-$7
$a0, $a3
Chứa các tham s ố cho hàm
Luôn có giá tr ị bằng 0 Thanh ghi giành riêng cho các l ệnh giả
$8-$15
$t0-$t7
Chứa dữ liệu tạm thờ i
$16-$23
$s0-$s7
Thanh ghi lưu tr ữ, dành riêng cho các ch ươ ng trình con
$24-$25
$t8-$t9
Thanh ghi tạm thờ i
$26-$27
$k0-$k1
Dành riêng cho kernel, không đượ c sử dụng
$28
$gp
Con tr ỏ toàn cục
$29
$sp
Con tr ỏ stack
$30
$fp
Con tr ỏ khung
$31
$ra
Chứa địa chỉ tr ả về
Khối thanh ghi file g ồm 2 cổng đọc và một cổng ghi.
Các cổng đọc:
A1, A2 là các đầu vào địa chỉ 5 bit (32 thanh ghi)
RD1, RD2 là các đầu ra dữ liệu tươ ng ứng vớ i các địa chỉ đầu vào tươ ng ứng.
Cổng ghi:
A3: đầu vào địa chỉ của thanh ghi đích cần ghi
WD3: đầu vào dữ liệu cần ghi
WE3: tín hi ệu cho phép ghi. Nếu WE3 =1 thì dữ liệu sẽ đượ c ghi vào thanh
ghi tại sườ n lên của xung clock
Hình 4.5.Bộ nhớ dữ liệu
Khối bộ nhớ dữ liệu gồm có một cổng dành cho việc đọc hoặc ghi dữ liệu. Đọc và ghi dự liệu có chung đầu vào địa chỉ.
Ghi dữ liệu: Nếu tín hiệu cho phép ghi WE=1 thì d ữ liệu đượ c ghi vào trong b ộ nhớ dữ liệu tại sườ n lên của xung clock
Đọc dữ liệu: Nếu WE=0 thì dữ liệu được được đọc ra chân RD
Thanh ghi b ộ đếm chươ ng trình có chứa địa chỉ của lệnh sẽ đượ c thực thi. Giai đoạn
đầu tiên trong chu trình th ực hiện là đọc lệnh từ bộ nhớ lệnh. Vì vậy PC phải đượ c k ết nối với đầu vào địa chỉ của bộ nhớ lệnh.
Hình 4.6. K ết nối Datapath cho l ệnh R
Mã l ệnh đầu tiên Instr 32 bit s ẽ đượ c l ấy ra. Giai đoạ n ti ế p theo sẽ ph ụ thu ộc vào lệnh cụ thể.
Đầu tiên chúng ta s ẽ xây dựng Datapath cho lệnh lw sau đó sẽ bổ sung và tổng quát hóa cho các l ệnh còn lại.
Đối vớ i lệnh lw, bước đầu tiên là đọc thanh ghi ngu ồn là thanh ghi ch ứa địa chỉ cơ sở c ủa d ữ li ệu c ần đọc trong bộ nh ớ . T ừ tr ườ ng rs Instr[25-21] này ta s ẽ x ác định
đượ c thanh ghi.
Các bit địa chỉ thanh ghi nguồn này được đưa vào đầu vào địa chỉ A1 của tệ p thanh
ghi. Giá tr ị trong thanh ghi được đọ c ra RD1.
Lệnh lw có một địa chỉ offset, địa chỉ này đượ c lưu ngay trong lệnh Instr[15-0]. Giá tr ị offset này là m ột hằng số 16 bit vì v ậy ta phải mở r ộng dấu lên 32 bit SignImm
Hình 4.7. Xây dựng khối mở r ộng bit
Sau bướ c này bộ xử lý cần tính địa chỉ dữ liệu cần nạ p trong bộ nhớ dữ liệu bằng
cách cộng địa chỉ cơ sở và địa chỉ offset.
Hình 4.8. Tính toán đị a chỉ bộ nhớ
Khối ALU nhận hai toán h ạng đầu vào SrcA và SrcB. SrcA là giá tr ị đọc đượ c
từ thanh ghi, SrcB là giá tr ị sau khi qua kh ối mở r ộng dấu từ 16 bits thành 32 bits.
Giá tr ị địa chỉ offset đã đượ c mở r ộng dấu.
ALU thực hiện nhiều phép toán số học và logic vì vậy cần có một tín hiệu điều
khiển ALUControl 3 bit để xác định phép toán cần thực hiện.
Khối ALU có 2 đầu ra là ALUResult và Zero. Đối v ớ i l ệnh c ộng đầu v ào điều
khiển ALUControl=010. Đầu ra ALUResult n ối vào đầu vào địa chỉ của bộ nhớ dữ liệu.
Dữ liệu từ bộ nhớ dữ liệu sẽ được đọc ra bus dữ liệu ReadData, sau đó đượ c ghi
tr ở lại thanh ghiđ ích vào cuối chu k ỳ clock.
Hình 4.8. Xác định đườ ng dữ liệu quay lại về Register File
Thanh ghi đích cho lệnh lw đượ c xác định qua tr ườ ng rt Instr[20-16] và đượ c k ết
nối với địa chỉ đầu vào của cổng ghi A3 của tệ p thanh ghi.
Tín hiệu điều khiển RegWrite đượ c n ối v ới đầu vào WE3, tín hiệu này có mức
cao trong quá trình ghi do đó dữ liệu đượ c ghi vào thanh ghi. Vi ệc ghi dữ liệu diễn ra vào cuối sườ n lên của xung clock.
Trong khi lệnh lw đang đượ c thực thi bộ xử lý sẽ tính toán địa chỉ của lệnh tiế p
theo PC’. Trongkiến trúc MIPS, mỗi l ệnh 32 bit vì v ậy địa ch ỉ l ệnh tiế p theo sẽ là PC + 4.
Địa chỉ của lện tiếp theo đượ c ghi vào thanh ghi PC t ại sườ n lên của xung clock
tiế p theo.
Hình 4.9: Xác định đị a chỉ của lệnh tiế p theo trong PC
Tiế p theo, ta mở r ộng thêm Datapath để thực hiện lệnh sw.
Cả 2 lệnh lw và sw đều đọc đị a chỉ cơ sở từ cổng 1 của tệ p thanh ghi và có chứa
tr ườ ng offset nằm ngay trong lệnh.
ALU cộng địa chỉ cơ sở và địa chỉ offset để tìm địa chỉ bộ nhớ .
Tuy nhiên lệnh sw đọc địa chỉ từ tệ p thanh ghi và ghi vào trong bộ nhớ dữ liệu.
Hình 4.10: Đườ ng dữ liệu cho lệnh sw
Thanh ghi cần đọc đượ c xác định trong tr ườ ng rt Instr[20-16]. Instr[20-16] đượ c
k ết n ối v ới đầu v ào địa ch ỉ A2, cổng 2 của t ệ p thanh ghi. RD2 là giá tr ị thanh ghi tươ ng ứng với địa chỉ A2. RD2 được đư a vào đầu vào WD của bộ nhớ dữ liệu.
Đầu vào cho phép ghi WE được điều khiển bở i MemWrite. V ớ i lệnh sw,
MemWrite=1 và dữ liệu đượ c ghi vào bộ nhớ, ALUControl =010 để thực hiện phép cộng địa chỉ cơ sở và địa chỉ offset.
Ngoài ra RegWrite =0 để ngăn việc ghi vào tệ p thanh ghi vì d ữ liệu vẫn đượ c
đọc ra từ bộ nhớ dữ liệu.
Tiế p theo mở r ộng Datapath cho các l ệnh loại R như add, sub, and, or và slt. T ất
cả các lệnh này đều đọc 2 toán hạng từ tệ p thanh ghi, tính toán giá tr ị bằng ALU và ghi lại k ết quả vào thanh ghi th ứ 3 trong tệ p thanh ghi. Chỉ có sự khác biệt duy nhất là các lệnh này thực hiện các phép toán khác nhau. Do đó ta chỉ cần thay đổi ALUControl tươ ng ứng.
Vì toán hạng thứ 2 được đưa vào SrcB c ủa ALU có th ể từ thanh ghi ho ặc là giá
tr ị tức thì SignImm(luôn đượ c nối vớ i SrcB) nên ta c ần bộ MUX 2:1 để chọn.
Bộ MUX này được điều khiển bở i tín hiệu ALUSr:
ALUSrc =0 cho lệnh loại R để chọn SrcB từ tệ p thanh ghi
ALUSrc=1 cho các l ệnh lw và sw để chọn SignImm
Chân WD3 của tệ p thanh ghi luôn nhận đầu vào dữ liệu từ bộ nhớ dữ liệu hoặc
ALUResult do đóta cần một bộ MUX 2:1 thứ 2 để chọn.
Bộ MUX này được điều khiển bở i tín hiệu MemtoReg
MemtoReg =0 chọn ALUResult
MemtoReg=1 khi th ực hiện lệnh lw để chọn ReadData
Hình 4.11. Đườ ng dữ liệu tăng cườ ng cho lệnh loại R
Bộ MUX 2:1 thứ 3 dùng để chọn tr ườ ng rt hoặc rd của tệ p thanh ghi.
Bộ MUX này được điều khiển bở i tín hiệu RegDst
RegDst =1 đối vớ i các lệnh loại R để chọn WriteReg t ừ tr ườ ng rd Instr[15-11]
RegDst =0 khi thực hiện lệnh lw để chọn tr ườ ng rt Instr[20-16].
Cuối cùng ta m ở r ộng Datapath để xử lý lệnh beq.
Lệnh beq so sánh 2 thanh ghi, s ự kiện r ẽ nhánh xảy ra nếu 2 thanh ghi có giá
tr ị bằng nhau.
Địa chỉ r ẽ nhánh chính là t ổng của PC và địa chỉ offset của lệnh r ẽ nhánh.
Địa chỉ offset này có th ể dươ ng hoặc âm và đượ c lưu trong tr ườ ng
immInstr[31-26]. Địa chỉ tiế p theo nếu r ẽ nhánh xảy ra sẽ là : PC’= PC + 4 + SignImm x 4.
Khi lệnh r ẽ nhánh xảy ra PCBranch đượ c tính bằng cách dịch trái SignImm
2 bit và sau đó cộngvớ i PCPlus4.
Hai thanh ghi ngu ồn đượ c so sánh qua việc tính hiệu của chúng SrcASrcB s ử
dụng ALU. Nếu 2 thanh ghi b ằng nhau thì cờ zero =1. Ngoài ra đối vớ i lệnh r ẽ nhánh beq thì tín hiệu điều khiển Branch=1, ALUControl =110 vì vậy ALU thực hiện phép tr ừ SrcASrcB.
ALUSrc=0 để chọn toán hạng nguồn SrcB từ tệ p thanh ghi.
Các tín hi ệu RegWrite và MemWrite b ằng 0 vì lệnh beq không ghi vào b ộ
nhớ hay tệ p thanh ghi.
Một bộ MUX 2:1 đượ c thêm vào để chọn PC’ từ PCPlus4 hay PCBranch. B ộ
MUX này được điều khiển bở i tín hiệu PCSrc.
Hình 4.12: Datapath cho l ệnh beq
Khối điều khiển đưa ra tín hiệu điều khiển dựa trên các tr ườ ng opcode Instr[31-26] và funct Instr [5-0] của lệnh.
Hình 4.13: Khối control unit
Hầu hết các tín hi ệu điều khiển có đượ c từ tr ườ ng opcode như MemtoReg,
MemWrite, Branch, ALUSrc, RegDst, RegWrite, ALUOp[1-0].
Tuy nhiên đối vớ i các l ệnh loại R ngoài tr ườ ng opcode còn có thêm tr ườ ng funct
để xác định phép toán.
Do đó khối điề u khiển đượ c chia thành 2 kh ối logic tổ hợ p:
Khối main decoder x ác định tín hiệu điều khiển dựa vào opcode
Khối ALU decoder x ác định phép toán ALUControl thông qua tr ườ ng funct
và ALUOp[1-0]
Khối HazardUnit có nhi ệm vụ phát hiện các xung đột về dữ liệu và xung đột điều khiển r ồi tạo ra các tín hi ệu chuyển tiế p cho dữ liệu (ForwardAE,ForwardBE…), các tín hi ệu điều khiển thanh ghi như stallF, stallD,flushE.
Dữ liệu đượ c chuyển tiế p từ giai đoạn MEM, WB về giai đoạn EX, do vậy ta sẽ dùng bộ mux 4 đầu vào để chọn dữ liệu cho ALU tính toán
Hình 4.14 Chuyển tiế p dữ liệu
Tín hiệu điểu khiển bộ lựa chọn Register File
MEM
WB
ForwardAE
00
10
01
ForwardBE
00
10
01
Mã lệnh trong Verilog if((RsE!=0)&&(RsE==WriteRegM)&&(RegWriteM))ForwardAE=2'b10;
else
if((RsE!=0)&&(RsE==WriteRegW)&&(RegWriteW))ForwardAE=2'b01; else ForwardAE=2'b00; if((RtE!=0)&&(RtE==WriteRegM)&&(RegWriteM))ForwardBE=2'b10; else if((RtE!=0)&&(RtE==WriteRegW)&&(RegWriteW))ForwardBE=2'b01; else
ForwardBE=2'b00;
Khi xảy ra xung đột điề u khiển, các thanh ghi IF, ID c ần đượ c giữ nguyên giá tr ị cũ (stall), thanh ghi EX cần đượ c xóa, khối HazardUnit s ẽ làm nhiệm vụ phát hiện xung
đột và tạo ra các tín hi ệu stallF, stallD, FlushE t ươ ng ứng để xóa,giữ giá tr ị cũ cho các thanh ghi.
Hazard do lệnh lw cần dừng 1 chu kì xủ lý, do vậy kh ối HazardUnit s ẽ tạo ra tín hiệu stallF,stallD,FlushE điều khiển thanh ghi xử lý hazard StallF
StallD
flushE
Giá tr ị
1
1
1
Nhiệm vụ
Giữ lại giá tr ị cũ Giữ lại giá tr ị cũ Xóa thanh ghi EX cho thanh ghi IF
cho thanh ghi ID
Mã lệnh trong Verilog. lwstall=((RsD==RtE)||(RtD==RtE))&&(MemtoRegE); {StallF,StallD,FlushE}={3{lwstall}}; //ghép bit
Khi thực hiện l ệnh điều khiển chươ ng tr ình bne,beq,…chúng ta cần xóa các thanh
ghi IF,ID khi điề u kiện nhảy đúng, khối HazardUnit phát hi ện và tạo ra các tín hi ệ stallF,StallD,FlushE để điều khiển thanh ghi pipeline StallF
StallD
flushE
Giá tr ị
1
1
1
Nhiệm vụ
Giữ lại giá tr ị cũ Giữ lại giá tr ị cũ Xóa thanh ghi EX cho thanh ghi IF
cho thanh ghi ID
Mã verilog branchstall=(branchD&&((RsD==WriteRegE)||(RtD==WriteRegE))&&RegWr
iteE)||(branchD&&MemtoRegM&&((RsD==WriteRegM)||(RtD==WriteRegM ))); {StallF,StallD,FlushE}={3{branchstall}}; //ghép bit
Dễ thấy các tín hi ệu stallF,stallD,FlushE đượ c sinh ra do lệnh lw và lệnh điều khiển chươ ng trình có tác dụng giống nhau, do vậy ta có c ộng hai tín hiệu này thành 1 tín hiệu duy nhất. {StallF,StallD,FlushE}={3{lwstall}}|{3{branchstall}};
Để giảm ảnh hưở ng của các l ệnh r ẽ nhánh có điều kiện, chúng ta cần tính toán điề u kiện nhảy sớ m nhất có thể, ở đây ta sẽ tính toán trong giai đoạ n ID.
In0!=in1
Out=1
In0==in1
Out=1
Xét lệnh sau: add $1,$2,$3 bne $1,$2,Lable
Do khối so sánh đặt ở giai đoạn ID nên ta phải chuyển tiế p dữ liệu từ giai đoạn EX (lệnh add) về giai đoạn ID, Giai đoạ n EX sẽ đượ c thêm 1 b ộ l ựa ch ọn để ch ọn dữ liệu t ừ registerfile ho ặc t ừ d ữ li ệu chuyển ti ế p, tín hiệu điều khiển đượ c sinh ra t ừ khối HazardUnit. RegisterFile
MEM
ForwardAD
0
1
ForwardBD
0
1
Mã Verilog cho tín hi ệu lựa chọn ForwardAD=(RsD!=0)&&(RsD==WriteRegM)&&RegWriteM; ForwardBD=(RtD!=0)&&(RtD==WriteRegM)&&RegWriteM;
Hình 5.1: K ết quả tổng hợ p từ Quartus K ết quả tổng hợ p:
Số phần tử Logic (LE): 1.273
Số thanh ghi: 279
Số bits nhớ : 2.048
Clock setup: f clk = 81.63MHz (period=12.250ns)
Tổng hợ p k ết quả mô phỏng: STT
Mã ASM
Mã máy
Status
1
addi $1,$3,258
20610102
Passed
2
add $2,$3,$4
00641020
Passed
3
sub $2,$3,$4
00641022
Passed
4
or $4, $7, $2
00e22025
Passed
5
and $4,$7,$2
00e22024
Passed
6
xor $4,$7,$2
00e22027
Passed
7
lw $1, 0($2)
8c410000
Passed
8
sw $3,32($5)
aca30020
Passed
9
bne $0 $1 -1
14220001
Passed
10
beq $0 $10
1140001
Passed
11
slt $1,$14 $15
01cf082a
Passed
12
sll $1 $2,4
00020900
Passed
13
srl $1 $2 4
00020902
Passed
14
sra $1 $2 4
00 412003
Passed
15
andi $1 $2 ,0xffff
3041ffff
Passed
16
ori $1,$2 0000
34410000
Passed
17
xori $1 $2 5555
38415555
Passed
18
slti $1,$3,0x01ff
28a101ff
Passed
19
lb $1, 32($0)
80010020
Passed
20
lh $2, 32 ($0)
84020020
Passed
21
sb $4, 36 ($0)
a0040024
Passed
22
sh $4, 36($0)
a4040024
Passed
Test vớ i bài toán tìm s ố lớ n nhất của mảng lưu trong bộ nhớ : Quy ướ c: $0 = 0 $1 = 1 $2 số phần tử của mảng, giả sử là 5
$3 địa chỉ bắt đầu của mảng, giả sử bắt đầu từ 0 $4 chỉ số mảng $5 lưu k ết quả tạm thờ i các phần tử trong mảng $6 l ưu k ết qu ả là giá tr ị l ớ n nh ất t ìm đượ c, k ết qu ả n ày đượ c l ưu trong ô nhớ k ế ti ế p v ớ i phần tử cuối STT Mã ASM Giải thích l ệnh PC Mã máy 1
addi $1,$0,1
0
20010001
2
addi $2,$0,5
4
20020005
3
addi $3,$0,0
8
20030000
4
add $4,$1,$0
12
00202020
5
lw $6,0($3)
16
8C660000
20
10440007
24
20630004
max = phần tử đầu tiên
loop: beq $4,$2,end bắt đầu từ phần tử thứ 2
6
địa chỉ ô nhớ tiế p theo
7
addi $3,$3,4
8
addi $4,$4,1
28
20840001
9
lw $5,0($3)
32
8C650000
10
slt $7,$5,$6
nếu ô nhớ tiế p theo nhỏ
36
00A6382A
11
beq $7,$1,end_if
hơ n max thì thực hiện lặ p,
40
10270001
12
addi $6,$5,0
ngượ c lại thì gán cho max
44
20A60000
13
end_if: j loop
48
08000005
14
end: sw $6,4($3)
52
AC660004
K ết quả mô phỏng trên Modelsim