Yêu cầu lúc này cần phải tăng tốc xử lý, loại bỏ tất cả các khóa đồng bộ trong để cho các lệnh trong tập lệnh cơ bản phải được thực hiện trong thời gian bằng nhau một chu kỳ xung nhịp..
Trang 1MỤC LỤC
MỤC LỤC 3
DANH MỤC HÌNH ẢNH 6
DANH MỤC BẢNG BIỂU 7
LỜI NÓI ĐẦU 8
Chương 1: Giới thiệu ý tưởng và xác định chỉ tiêu kỹ thuật của bộ xử lý MIPS Pipelines 9
1.1 Nhu cầu cho của bộ xử lý MIPS Pipline 9
1.1.1 Nhu cầu cho sự ra đời của MIPS pipelines 9
1.1.2 Nguyên tắc thiết kế tập lệnh của MIPS 10
1.2 Các sản phẩm đã có trên thị trường 10
1.2.1 R2000 11
1.2.2 R6000 11
1.2.3 R4000 11
1.2.4 R10000 12
1.2.5 M5150 12
1.3 Ý tưởng đề tài và các yêu cầu kỹ thuật 13
1.3.1 Ý tưởng của đề tài 13
1.3.2 Chỉ tiêu kỹ thuật 13
1.3.2.1 Tín hiệu đầu vào và đầu ra 13
1.3.2.2 Tập lệnh cơ bản 15
1.3.3 Yêu cầu chức năng 15
1.3.4 Yêu cầu phi chức năng 15
Chương 2: Phân tích chức năng và lập kế hoạch 16
2.1 Phân chia chức năng 16
Trang 22.1.1 Bộ nhớ lệnh (Instruction Memory) 16
2.1.2 Bộ nhớ dữ liệu (Data Memory) 17
2.1.3 Vi xử lý (MIPS) 17
2.1.3.1 Đường dữ liệu (Datapath) 17
2.1.3.2 Bộ điêu khiển (Control Unit) 17
2.1.3.3 Bộ xử lý xung đột (Hazard Unit) 18
2.2 Phân chia công việc 18
Chương 3: Phân tích chi tiết từng khối 20
3.1 Khối Bộ nhớ lệnh 20
3.2 Khối Bộ nhớ dữ liệu 20
3.3 Khối Vi xử lý 22
3.3.1 Đường dữ liệu 22
3.3.1.1 Khâu IF 23
3.3.1.2 Khâu ID 23
3.3.1.3 Khâu EX 24
3.3.1.4 Khâu MEM 25
3.3.1.5 Khâu WB 25
3.3.2 Khối điều khiển 25
3.3.3 Khối xử lý xung đột 28
Chương 4: Thiết kế hệ thống: 32
Chương 5: Triển khai 33
5.1 Sơ đồ khối hệ thống 33
5.2 Code các modulle: 34
5.2.1 Module top.v 34
5.2.2 Module mips.v 35
Trang 35.2.3 Module imem.v 37
5.2.4 Module dmem.v 38
Chương 6: Thực nghiệm 39
6.1 Môi trường thực nghiệm 39
6.2 Kế hoạch kiểm tra: 39
6.3 Mô hình RTL Viewer trên Quartus 40
6.3.1 Chạy chương trình thực hiện tất cả các phép toán theo yêu cầu 41
6.3.2 Chạy thực nghiệm tính tổng dãy số trên MIPS 42
6.3.3 Chạy thực nghiệm tính giai thừa trên MIPS 43
6.3.4 Chạy thực nghiệm tính toán số hạng của dãy Fibonaci: 44
TÀI LIỆU THAM KHẢO 46
Trang 4DANH MỤC HÌNH ẢNH
Hình 1.1 Thế hệ MIPS I R2000 11
Hình 1.2 Thế hệ MIPS III R4000 11
Hình 1.3 Thế hệ MIPS IV R10000 12
Hình 1.4 Sơ đồ khối bộ vi xử lý MIPS 14
Hình 2.1 Sơ đồ khối Hệ thống MIPS 16
Hình 2.2 Sơ đồ khối điều khiển 18
Hình 3.1 Khối Bộ nhớ lệnh 20
Hình 3.2 Khối Bộ nhớ dữ liệu 21
Hình 3.3 Sơ đồ đường dữ liệu (Datapath) 22
Hình 3.4 Sơ đồ khối bên trong khối Control Unit 26
Hình 3.5 Quá trình thực hiện lệnh bị xung đột RAW 29
Hình 3.6 Quá trình xử lý xung đột RAW 29
Hình 3.7 Quá trình thực hiện lệnh lw bị xung đột 30
Hình 3.8 Quá trình giải quyết xung đột cho lệnh lw 30
Hình 3.9 Quá trình lệnh rẽ nhánh bị xung đột 31
Hình 3.10 Quá trình giải quyết xung đột khi thực hiện dự đoán rẽ nhánh sớm 31
Hình 4.1 Sơ đồ khối chi tiết một Hệ thống MIPS Pipelines 32
Hình 6.1 Kết quả tổng hợp 40
Hình 6.2 Mô hình Top Level 41
Hình 6.3 Mô hình MIPS Unit 41
Hình 6.4 Kết quả Coverage Report 42
Hình 6.5 Kết quả trên QuestaSim tính tổng từ 1 đến 5 43
Hình 6.6 Kết quả trên QuestaSim tính 6! 44
Hình 6.7 Kết quả trên QuestaSim tính số Fibonaci thứ 5 45
Trang 5DANH MỤC BẢNG BIỂU
Bảng 1.1 Mô tả đầu vào, đầu ra của bộ Vi xử lý 14
Bảng 3.1 Bảng chức năng đầu vào, đầu ra của khối Bộ nhớ lệnh 20
Bảng 3.2 Mô tả đầu vào, đầu ra của bộ nhớ dữ liệu 21
Bảng 3.3 Mô tả đầu vào, đầu ra của đường dữ liệu 22
Bảng 3.4 Mô tả đầu vào, đầu ra của khối điều khiển 26
Bảng 3.5 Bảng chân lý của khối ALU Decoder 27
Bảng 3.6 Bảng chân lý của khối Main decoder 28
Trang 6LỜI NÓI ĐẦU
Trong quá trình phát triển của công nghệ máy tính, con người dã chế tạo ra hàng ngàn loại máy tính khác nhau Công nghệ phát triển từng ngày, dân dần cácmáy tính thế hệ trước càng trở nên lỗi thời, chỉ có một số ít trong chúng có thể tồn tại được tới ngày nay Đó là những thế hệ máy tính chứa công nghệ tiên tiến nhất, hay những thế hệ máy tính đi trước mà nền tảng của nó vẫn được áp dụng hiện nay Chính vì vậy, việc tìm hiểu về kiến trúc máy tính cơ bản này giúp chúng ta có kiến thức, từ đó ta có thể tìm hiểu, phát triển những thế hệ máy tình tối ưu hơn, nhanh hơn, hiệu năng cao hơn trong tương lai Một kiến truc không thể không thể không kể đến là cấu trúc MIPS Kiến trúc máy tính 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 và cácthiết bị điện tử
Trong học kỹ này, em được hoc môn “Thiết kế IC số và hệ thống số” Nhờ sựhướng dẫn nhiệt tình và chu đáo của thầy Nguyễn Đức Minh, nhóm chúng em
đã áp dụng được những kiến thức của môn học này để hoàn thành đề tài thiết kế MIPS 32bit với các chức năng, thực hiện phép toán cơ bản Do kiến thức còn hạn hẹp nên bài tập lớn này chắc chắn vẫn còn nhiều sai sót Nhóm chúng em mong thầy góp ý để nhóm có thể hoàn thành, sửa chữa báo cáo tốt hơn
Nhóm chúng emcũng xin gửi lời cảm ơn sâu sắc đến PGS.TS Nguyễn Đức Minh đã hướng dẫn, giúp đỡ chúng em để chúng em có thể hoàn thành được bài tập này
Trang 7Chương 1: Giới thiệu ý tưởng và xác định chỉ tiêu kỹ
thuật của bộ xử lý MIPS Pipelines
1.1 Nhu cầu cho của bộ xử lý MIPS Pipline
1.1.1 Nhu cầu cho sự ra đời của MIPS pipelines
MIPS là viết tắt của Microprocessor withour Interlocked Pipelines Stage, dòng vi xử lý được phát triển bởi MIPS Technology bắt đầu từ năm 1981 Bộ vi
xử lý này được thiết kế dựa theo kiến trúc RICS, đã từng chiếm tỉ lệ lớn trong sốcác bộ vi xử lý RICS được sản xuất bởi nhiều ưu điểm của nó thời đó
Kỹ thuật pipeliness (đường ống) đã ra đời từ trước nhưng vẫn chưa được phát triển để hoạt động tối ưu nhất Trước thời điểm MIPS được thiết kế, các bộ
vi xử lý theo cấu trúc đường ống khi thực hiện các lệnh tốn nhiều thời gian để thực hiện như nhân, chia Các giai đoạn sẽ phải tạm dừng hoạt động để chờ cho tới khi thực hiện xong hoàn toàn lệnh mới tiếp tục cho phép các lệnh tiếp theo được thực hiện Cách thực hiện điều này là sử dụng các khóa đồng bộ (interlock)
để cho các giai đoạn biểu thị rằng đang bận thực hiện lệnh và ngừng nạp lệnh mới Điều này làm ảnh hưởng nghiêm trọng đến hiệu năng của bộ vi xử lý vì khi
đó chu kỳ xung nhịp phải theo lệnh có thời gian thực hiện chậm nhất Yêu cầu lúc này cần phải tăng tốc xử lý, loại bỏ tất cả các khóa đồng bộ trong để cho các lệnh trong tập lệnh cơ bản phải được thực hiện trong thời gian bằng nhau (một chu kỳ xung nhịp)
Để thực hiện điều này, trước hết phải loại bỏ những câu lệnh tốn quá nhiều chu kỳ xung nhịp ra khỏi tập lệnh cơ bản được hỗ trợ như nhân, chia… và chỉ hỗtrợ những lệnh đơn giản, có thời gian thực hiện ngắn và có thể dùng để tính các lệnh phức tạp từ chúng Để thực hiện điều này, các lệnh đã loại bỏ được biên dịch thành tập các lệnh cơ bản Cách này không làm giảm số chu kỳ hay thời gian thực hiện các lệnh dài so với thông thường, nhưng sẽ làm cho bộ vi xử lý hoạt động được với chu kỳ xung nhịp cao hơn rất nhiều lần, các lệnh nhỏ chắc chắn được xử lý nhanh hơn, từ đó tăng đáng kể hiệu năng của hệ thống
Trang 8Nhược điểm của phương pháp này là gây ra xung đột trong quá trình thực hiện lệnh, cụ thể là xung đột về điều khiển, xung đột đọc ghi giá trị thanh ghi, xung đột về đọc ghi bộ nhớ… Các xung đột này sẽ được nhắc đến cụ thể và các
xử lý ở phần sau của báo cáo
1.1.2 Nguyên tắc thiết kế tập lệnh của MIPS
Để đạt được những yêu cầu phía trên, việc thiết kế tập lệnh cũng như đường
dữ liệu cho MIPS phải tuân theo các nguyên tắc thiết kế nhất định Ba nguyên tắc cơ bản để thiết kế tập lệnh MIPS
- Thứ nhất là tính đơn giản quan trọng hơn tính quy tắc Điều này được thể hiện ở việc MIPS có rất ít định dạng lệnh (3 loại R, J, I), độ dài lệnh là bằng nhau với tất cả lệnh theo đó là độ dài của mã lệnh (Opcode) có chiều dài cố định ở tất cả các lệnh Điều này làm cho cách mã hóa lệnh đơn giản, nhược điểm của điều này làm tăng kích thước bộ nhớ lệnh
- Thứ hai là nhỏ hơn thì nhanh hơn, điều này có nghĩa là tập lệnh của MIPS
có số lệnh cơ bản không nhiều, số lượng thanh ghi cũng không lớn và số chế độ địa chỉ của MIPS cũng giới hạn (3 chế độ, so với 7 của Intel 8088)
- Thứ ba, thiết kế cần sự thỏa hiệp giữa tập lệnh và phần cứng
Các nguyên tắc thiết kế này làm cho việc thiết kế và dịch các lệnh của MIPS trở nên dễ dàng hơn rất nhiều, nhưng sự giới hạn về số lượng lệnh gây khó khăn
về lập trình
1.2 Các sản phẩm đã có trên thị trường
Được phát triển lần đầu tiên bởi MIPS (sau đổi tên thành MIPS
Technologies) vào năm 1981 và sản phẩm đầu tiên được đưa ra thị trường vào năm 1985, MIPS Technology vẫn cho ra các sản phẩm khác đều đặn kể cả đến năm 2012 sau khi được mua lại bởi Imagination Technologies Tuy vậy, cũng có những hãng khác thiết kế vi xử lý MIPS và đưa ra cho mình những thiết kế riêngnhư Sony, NEC, Broadcom…
Sau đây sẽ là tóm tắt một số sản phẩm tiêu biểu của hai giai đoạn thiết kể bởiMIPS Technologies và Imagination Technologies
Trang 91.2.3 R4000
Hình 1.2 Thế hệ MIPS III R4000
Trang 10R4000 là sản phẩm đầu tiên của dòng MIPS III cũng là một trong những bộ
xử lý 64 bit đầu tiên, sản xuất năm 1991 Bộ đệm của R4000 chỉ 8KB nhưng tốc
độ xung nhịp lại lên tới 100 MHz nhờ sử dụng kỹ thuật deep pipelines R4000 cũng có đơn vị tính toán dấu phẩy động (FPU) có thể hoạt động được ở cả hai chế độ 32 và 64 bit
1.2.4 R10000
Hình 1.3 Thế hệ MIPS IV R10000
R1000 là sản phẩm tiêu biểu cho MIPS IV Ra mắt năm 1996, R10000 có thể hoạt động với tốc độ xung nhịp rất cao so với thời đó là 1500-250 MHz Bộ nhớ đệm sử dụng lúc này là hai mức, mức 1 là 32KB, tích hợp sẵn, mức 2 từ 512KBđến 16MB dùng bộ nhớ ngoài
1.2.5 M5150
M5150 là sản phẩm được phát triểu sau khi Imagination Technologies mua lại MIPS Technologies, được cho ra đời năm 2014 Tốc độ xung nhịp 372-576 MHz, bộ nhớ đệm tối đa 64KB và chỉ dùng một mức đệm
Ngoài các sản phẩm tiêu biểu trên, còn có nhiều sản phẩm khác trên thị trường hiện vẫn đang được sử dụng cho nhiều ứng dụng trong các hệ thống thông tin, điều khiển, các thiết bị lưu trữ…Một số hình ảnh về các bộ vi xử lý MIPS
Trang 111.3 Ý tưởng đề tài và các yêu cầu kỹ thuật
1.3.1 Ý tưởng của đề tài
Các sản phẩm MIPS đã được phát triển với mức độ hoàn thiện cao, tốc độ xử
lý rất nhanh và xuất hiện trong nhiều sản phẩm thương mại với hiệu quả cao về
cả diện tích và công suất tiêu thụ
Vì vậy, trong học phần Thiết kế IC số & Hệ thống số, sau khi được học về ngôn ngữ mô tả phần cứng Verilog HDL, chúng em nhận được đề tài bài tập lớn
“Thiết kế bộ vi xử lý MIPS pipelines” Mục tiêu của việc thực hiện đề tài này nhằm hiểu rõ những điều cơ bản về cấu tạo và hoạt động của MIPS, củng cố kiến thức về lập trình phần cứng trên ngôn ngữ Verilog HDL Tuy vậy, sản phẩmthu được sau khi thực hiện đề tài là một bộ xử lý MIPS 32 bit ở mức cơ bản nhất
cả về tập lệnh và cấu tạo, không nhằm mục đích cải tiến và thương mại
Ngôn ngữ Verilog HDL là một ngôn ngữ mô tả phần cứng dễ học, mềm dẻo được hỗ trợ tốt bởi nhiều phần mềm nên sẽ có nhiều thuận lợi cho việc triển khaithực hiện đề tài
1.3.2 Chỉ tiêu kỹ thuật
Trong quy trình thiết kế một sản phẩm thuộc lĩnh vực điện tử, sau khi đã xác định đề tài, tiến hành tìm hiểu và khảo sát các sản phẩm, phương án sẵn có trên thị trường sẽ là bước xác định các yêu cầu chức năng và phi chức năng cho sản phẩm Chỉ tiêu kỹ thuật chính là yêu cầu chức năng của sản phẩm
1.3.2.1 Tín hiệu đầu vào và đầu ra
Đầu vào đầu ra của một bộ vi xử lý MIPS đều khá giống nhau Chúng được biểu diễn trong hình sau:
Trang 12Hình 1.4 Sơ đồ khối bộ vi xử lý MIPS
Trên hình đã chỉ rõ hai khối tổng quát nhất của một bộ vi xử lý MIPS, sản phẩm cũng sẽ dùng đầu vào, đầu ra như trên Đầu vào, đầu ra được nêu rõ như bảng dưới
Bảng 1.1 Mô tả đầu vào, đầu ra của bộ Vi xử lý
Đầu
vào
CLK Xung đồng hồ cho các thanh ghi và bộ
nhớReset Tín hiệu reset các thanh ghiInstr Mã lệnh để MIPS thực hiệnReadData Dữ liệu đọc vào từ bộ nhớ
Đầu ra
PC Địa chỉ của lệnh tiếp theoWriteData Dữ liệu muốn ghi vào bộ nhớALUOut Địa chỉ bộ nhớ muốn đọc hoặc ghiMemWrite Tín hiệu cho phép ghi bộ nhớ
1.3.2.2 Tập lệnh cơ bản
Tập lệnh cơ bản đầy đủ của MIPS với cấu tạo phức của bộ xử lý MIPS 32 bit
có tổng cộng hơn 90 lệnh Trong phạm vi giới hạn của bài tập lớn cũng như mục
Trang 13đích của đề tài sẽ triển khai một số câu lệnh cơ bản, dễ triển khai nhất trong tập lệnh Cụ thể lệnh và chức năng:
- Lệnh loại R: add, sub, and, or, slt, xor, nor, sll, srl, sra
- Lệnh loại I: addi, beq, lw, sw, andi, ori
- Lệnh loại J: j
Với những lệnh này, có thể thực hiện gần như tất cả các câu lệnh phức tạp khác, bằng cách phân tác cách lệnh đó thành chuỗi các lệnh cơ bản phía trên
1.3.3 Yêu cầu chức năng
- MIPS 32 bit thực hiện được tối thiểu 10 lệnh cơ bản trong tập lệnh của MIPS
- Thực hiện mô tả phần cứng bằng ngôn ngữ Verilog HDL
- Viết chương trình thực hiện tính tổng dãy số, tính giai thừa, dãy Fibonaci trên MIPS 32 bit
- Kiểm tra được Coverage của code cũng như chương trình đã viết bằng
QuestaSim
1.3.4 Yêu cầu phi chức năng
Trong phạm vi bài tập lớn, sản phẩm chỉ triển khai đến mức chức năng, để cóthể mô phỏng và được nắm được hoạt động của bộ vi xử lý, do đó những chỉ tiêu vật lý như: diện tích thiết kế, năng lượng tiêu thụ… sẽ không được nhắc đến Các yêu cầu phi chức năng sẽ chỉ liên quan đến chức năng của vi xử lý:
- Hoạt động ổn định, chạy tốt các lệnh ở phía trên
- Dễ dàng sửa lỗi khi cần thiết
- Thuận lợi cho mô phỏng
- Tổng hợp được trên Quartus II
- Tốc độ xung đồng hồ tối đa lớn hơn 150MHz
Sau khi đã xác định rõ ràng ý tưởng, mục tiêu thực hiện, các yêu cầu chức năng, phi chức năng của sản phẩm trong đề tài, tiếp theo sẽ phân tích các chức năng và tiến hành lập kế hoạch để thực hiện đề tài
Trang 14Chương 2: Phân tích chức năng và lập kế hoạch
Mọi vi xử lý đều có ba thành phần chính là: CPU, bộ nhớ, bộ điều khiển vào
ra Trong phạm vi bài tập lớn, vi xử lý MIPS chỉ bao gồm hai phần chính là: CPU và bộ nhớ Phần này sẽ phân tích các thành phần của hệ thống máy tính MIPS, nêu rõ các chức năng của các thành phần, giúp cho phân chia kế hoạch cụthể, thiết kế và triển khai đúng tiến độ
2.1 Phân chia chức năng
Như đã nêu ở đầu, hệ thống máy tính MIPS có hai thành phần chính là: CPU
và bộ nhớ Do máy tính MIPS được thiết kế theo kiến trúc Havard nên bộ nhớ lệnh và bộ nhớ dữ liệu được tách riêng Máy tính MIPS được chia ra các thành phần như sơ đồ dưới đây
Hình 2.5 Sơ đồ khối Hệ thống MIPS
2.1.1 Bộ nhớ lệnh (Instruction Memory)
Bộ nhớ lệnh có chức năng lưu trữ mà nguồn của chương trình assembly Mã nguồn được lưu dưới dạng số nhị phân Dữ liệu được nạp vào bộ nhớ trước khi máy tính hoạt động Trong khi hoạt động, máy tính sẽ đọc lần lượt các lệnh trong bộ nhớ
Trang 152.1.2 Bộ nhớ dữ liệu (Data Memory)
Bộ nhớ dữ liệu có chức năng lưu trữ các dữ liệu phục vụ cho vi xử lý, bộ vi
xử lý sẽ ghi kết quả vào bộ nhớ hoặc đọc dữ liệu ra từ bộ nhớ
2.1.3 Vi xử lý (MIPS)
Vi xử lý MIPS thường được chia ra làm hai phần: đường dữ liệu và bộ điều khiển, tuy nhiên trong cấu trúc pipelines có xảy ra xung đột, do đo cần có thêm một phần nữa để xử lý xung đột Vì vậy vi xử lý MIPS với cấu trúc pipelines sẽ được chia thành ba phần: Đường dữ liệu, bộ điều khiển, bộ xử lý xung đột Dướiđây sẽ đi vào chi tiết từng phần của vi xử lý
2.1.3.1 Đường dữ liệu (Datapath)
Đường dữ liệu là khối mà dữ liệu đi qua trong quá trình xử lý được mô tả như hình 1.2 Các khối cơ bản trong đường dữ liệu bao gồm: các bộ multiplexer, tệp các thanh ghi, khối ALU, bộ cộng, các thanh ghi tầng Đường dữ liệu của máy tính MIPS pipelines được chia ra làm năm khâu: IF, ID, EX, MEM, WB
- Khâu IF: có chức năng lấy lệnh
- Khâu ID: có chức năng giải mã lệnh
- Khâu EX: có chức năng thực hiện tính toán các toán hạng trong lệnh
- Khâu MEM có chức năng đọc/ghi các dữ liệu vào bộ nhớ dữ liệu
- Khâu WB: có chức năng ghi kết quả vào tệp thanh ghi
Các tín hiệu điều khiển cho các khối ở đường dữ liệu được lấy từ khối điều khiển, các tín hiệu điều khiển cũng đi qua các thanh ghi tầng để đến từng khâu
Cụ thể sẽ được trình bày ở phần tiếp theo
2.1.3.2 Bộ điêu khiển (Control Unit)
Khối điều khiển có chức năng cung cấp các tín hiệu điều khiển cho các khối
ở đường dữ liệu, cụ thể: các bộ multiplexer, tín hiệu cho phép ghi vào bộ nhớ, tín hiệu điều khiển khối ALU, tín hiệu điều khiển các thanh ghi tầng
Sơ đồ mô tả khối điều khiển được cho như dưới đây:
Trang 16Hình 2.6 Sơ đồ khối điều khiển
2.1.3.3 Bộ xử lý xung đột (Hazard Unit)
Trong kiến trúc pipelines, do các khối có thể được dùng chung trong quá trình hoạt đột nên sẽ xảy ra xung đột Khối xử lý xung đột có chức năng phát hiện các xung đột đó trong quá trình hoạt động, từ đó xuất ra các tín hiệu xử lý xung đột cho đường dữ liệu Các loại xung đột mà khối xung đột phải giải quyết bao gồm:
- Xung đột cấu trúc: sử dụng cùng một tài nguyên cho hai lệnh khác nhau tại cùng một thời điểm
- Xung đột dữ liệu: yêu cầu sử dụng dữ liệu trước khi nó sẵn sàng
- Xung đột điều khiển: yêu cầu quyết định điều khiển dòng chương trình trước khi điều kiện rẽ nhánh và giá trị PC mới được tính toán
2.2 Phân chia công việc
Phần này lên kế hoạch thực hiện Đề tài và phân công nhiệm vụ cho từng thành viên trong nhóm
1 Tìm hiểu MIPS
pipelines
Tìm hiểu các dòng MIPS và các hướng triển khai đã có trên thị
trường
Đinh Khắc Tuyến Nguyễn Tuấn Linh Trần Quý Hiển
2 Mô tả tập lệnh Đề ra các lệnh mà vi xử lý MIPS
sẽ thực hiện Đinh Khắc Tuyến
3 Mô tả sơ đồ khối cho hệ
Trang 176 Testbench toàn hệ thống Kiểm thử xem hệ thống đã hoạt
động đúng chương trình mẫu Nguyễn Tuấn Linh
7 Chạy chương trình
assembly và đánh giá
Chạy nhiều chương trình và đánh
giá hệ thống Đinh Khắc Tuyến
Trang 18Chương 3: Phân tích chi tiết từng khối
Dựa vào các yêu cầu chức năng và phi chức năng đã nêu ở các phần trước, trong phần này sẽ đi sâu vào hoạt động của các khối, các phương án thiết kế cho các khối đó
3.1 Khối Bộ nhớ lệnh
Bộ nhớ lệnh lưu trữ mã máy, không thay đổi trong quá trình hoạt động của máy tính MIPS, do đó loại bộ nhớ ROM sẽ được sử dụng cho bộ nhớ này Sơ đồ khối của bộ nhớ lệnh được mô tả như dưới đây:
Hình 3.7 Khối Bộ nhớ lệnh
Bộ nhớ lệnh có đầu vào đầu ra được nêu rõ trong bảng dưới đây:
Bảng 3.2 Bảng chức năng đầu vào, đầu ra của khối Bộ nhớ lệnh
Tên chi
Đầu
Địa chỉ của ô nhớ chứa lệnh, địa chỉ này phải chia hết cho 4,
hay có 2 bit cuối bằng 0Đầu ra RD Dữ liệu ra của bộ nhớ, mã lệnh của chương trình
3.2 Khối Bộ nhớ dữ liệu
Bộ nhớ dữ liệu được ghi/đọc trong quá trình thực hiện xử lý, nên dữ liệu trong bộ nhớ dữ liệu có thể thay đổi, do đó, loại bộ nhớ RAM sẽ được sử dụng cho bộ nhớ này Sơ đồ khối của bộ nhớ dữ liệu được mô tả như dưới đây:
Trang 19Hình 3.8 Khối Bộ nhớ dữ liệu
Bộ nhớ dữ liệu có đầu vào đầu ra được nêu rõ trong bảng dưới đây:
Bảng 3.3 Mô tả đầu vào, đầu ra của bộ nhớ dữ liệu
Tên chi tiết Chức năngĐầu
vào
A Địa chỉ bộ nhớ muốn đọc hoặc ghi
WD Dữ liệu muốn ghi vào bộ nhớ
WE Tín hiệu cho phép ghi bộ nhớCLK Xung đồng hồ cho bộ nhớ Đầu ra RD Dữ liệu đọc vào từ bộ nhớ
Để thực hiện việc đọc giá trị từ ô nhớ ra, bộ nhớ phải thực hiện các quá trình sau:
- Truyền địa chỉ ô nhớ muốn đọc
- Đặt tín hiệu WE = 0
- Dữ liệu sẽ được đọc tại đầu ra RD
Để thực hiện việc ghi dữ liệu từ ô nhớ ra, bộ nhớ phải thực hiện các quá trình sau:
- Truyền địa chỉ ô nhớ muốn ghi
- Đặt tín hiệu WE = 1
- Truyền dữ liệu muốn ghi vào đầu vào WD
- Dữ liệu sẽ được ghi vào tại sườn lên của clock
Trang 203.3 Khối Vi xử lý
3.3.1 Đường dữ liệu
Như đã nêu ở phần 2.1.3.1, đường dữ liệu được chia thành 5 khâu, mỗi khâu
sẽ có các khối phục vụ cho chức năng của từng khâu, được mô tả như hình dưới đây:
Hình 3.9 Sơ đồ đường dữ liệu (Datapath)
Đầu vào đầu ra của đường dữ liệu được mô tả trong bảng dưới đây, do có nhiều tín hiệu đầu vào, nên các tin hiệu chung kiểu sẽ được gộp lại và không nêuchi tiết vào từng tín hiệu
Bảng 3.4 Mô tả đầu vào, đầu ra của đường dữ liệu
Tên chi tiết Chức năng
Đầu
vào
CLK Xung đồng hồ cho các thanh ghi và bộ
nhớ Reset Tín hiệu reset các thanh ghi
Instr Mã lệnh để MIPS thực hiện
ReadData Dữ liệu đọc vào từ bộ nhớ
WriteData Dữ liệu muốn ghi vào bộ nhớ
ALUOut Địa chỉ bộ nhớ muốn đọc hoặc ghi
MemWrite Tín hiệu cho phép ghi bộ nhớ
Opcode/Funct Các trường trong mã lệnh assembly cho
Trang 21vào khối điều khiển để giải mãCác tín hiệu xuất ra
Ba đầu vào được lựa chọn như sau:
- Đầu vào PCPlus4F: giá trị địa chỉ của lệnh kế tiếp trong chương trình
- Đầu vào PCBranchD: địa chỉ của nhãn muốn nhảy đến trong lệnh nhảy có điều kiện
- Đầu vào PCJump: địa chỉ của nhãn muốn nhảy đến trong lệnh nhảy không điều kiện
3.3.1.2 Khâu ID
Khâu này sẽ giải mã mã lệnh được đọc vào từ bộ nhớ lệnh Các trường trong
mã lệnh sẽ lần lượt tách ra và đi vào các khối
Một lệnh MIPS sẽ có các trường như sau:
Với lệnh loại R, các trường sẽ được truyền đến các khối như sau:
- Opcode: truyền đến khối điều khiển
- Rs: truyền đến địa chỉ A1 của tệp thanh ghi
- Rt: truyền đến địa chỉ A2 của tệp thanh ghi
- Rd: truyền đến thanh ghi tầng cho khâu tiếp theo xử lý
- Shamt: truyền đến thanh ghi tầng cho khâu tiếp theo xử lý
- Funct: truyền đến khối điều khiển
Với lệnh loại I, các trường sẽ được truyền đến các khối như sau:
- Opcode: truyền đến khối điều khiển
Trang 22- Rs: truyền đến địa chỉ A1 của tệp thanh ghi
- Rt: truyền đến địa chỉ A2 của tệp thanh ghi
- Rd, Shamt, Funct: gộp bit và truyền đến khối mở rộng bít Sign ExtendedVới lệnh loại J, các trường sẽ được truyền đến các khối như sau:
- Opcode: truyền đến khối điều khiển
- Rs, Rt, Rd, Shamt, Funct: gộp bit và truyền đến khối dịch trái 2 bit, ghép bit với 4 bit cao nhất của PCPlus4D để được địa chỉ PCJump
3.3.1.3 Khâu EX
Khâu nay sẽ tính toán các toán hạng được được lấy trong khâu giải mã lệnh.Với lệnh loại R:
- Đầu vào SrcAE, SrcBE của khối ALU là hai thanh ghi có địa chỉ được
mô tả ở trong trường Rs, Rt hoặc giá trị được forward tương ứng bằng
bộ xử lý xung đột
- Tín hiệu WriteRegE chính là trường Rd
- Đối với 3 lệnh: sll, srl, sra: tín hiệu từ trường shamt sẽ được sử dụng
và đi qua khối mở rộng Sign extended shamt, đầu vào ALU sẽ là đầu
ra của khối Sign extended shamt và một thanh ghi đọc từ tệp thanh ghi
Với lệnh loại I:
- Đầu vào SrcAE của khối ALU là thanh ghi có địa chỉ ở trong trường
Rs, đầu vào SrcBE chính là đầu ra của khối mở rộng bit ở khâu ID qua thanh ghi tầng Nếu xảy ra xung đột, hai đầu vào này cũng có thể forward từ các tầng khác
- Tín hiệu WriteRegE chính là trường Rt
Với lệnh loại J: Khâu EX sẽ không được sử dụng