Chương 1. Giới thiệu dé tài. Mục tiêu đề tài. GiGi ham an cố.
Kiến trúc tập lệnh RISC-V. Kiến trúc tập lệnh CƠ SỞ.- Làn HH HH re 17 2. Giới thiệu về số floating point. Phép chia và phép tinh căn bậc 2 của số floating point.
Các lệnh được sử dụng trong hệ thống “. Bộ nhớ đệm — Cache. Phương pháp ánh xạ Cache. Chính sách thay thé Cache — LRU.
Ưu điểm của Cache associative 4-way và chính sách thay thế LRU 29 2. Bộ dự đoán rẽ nhánh (BPU). c 1211 v11 11 1 H1 ng ng ng ng cư 31 2. Du đoán thích nghi hai lớp.
-¿ ¿<5 se S‡£+xsevrerersrekree 32 Chương 3. Thiết kế vi xử lý RISC-V 64IF. Mô tả tổng quan hệ thống .---2--©2+2222+2EE22E2E22EE221E2EEeEExcrrrree 33 3. Thiết kế vi xử lý RISC-V 64IF.
Thiết kế Cache. Tổng quan khối Cache. Khối Cache memory. _ Tổng quan khối BPU.
Khối Sâf_ COUIẨ€T_ ATTAY. 22652 1 1231 SH HH re49 Chương 4. Mô phỏng và đánh giá thiết kế. Kết quả mô phong.
Kết qua Synthsis trên phần mềm Vivado suite. Kết quả Implement trên phần mềm Vivado suite. Thiết kế Block Design trên Vivado với giao thức AXI4. Tổng quan giao thức AXXI4.
Thiết kế Block Design trên Vivado. Các IP của Xilinx dùng trong thiết kế Block Design. IP Microblaze giao tiếp với local memOry. Kết quả thực thi trên FPGA.----2:-222+cs22EEttEEErttErrrrtrrrrrrree 64 Chương 6.
Kết luận và hướng phát triển.-------2-¿++2++++2£+z+zz+z+zzse+rx 70 6. Ưu điểm và hạn chế của thiết kế. Hướng phát trién. DANH MỤC HÌNH Hình 2-1.
Định dạng lệnh của RISC-V. Định dạng sé floating point theo IEEE 754. Đồ thị của log2(1 + x) © # +1. Máy trạng thái dự đoán 2 bit.
Sơ đồ khối của BPU two-level adaptive. Sơ đồ khỏi tổng quát của RV64IF. Interface khối Datapath. Interface khối Controller.
Interface khối HazardDetection. Interface khối BranchCompare. Interface khối Forwarding. Interface khối ALU Hình 3-8.
Interface khối FPU Hình 3-9. Sơ đồ khối bộ nhớ đệm. Khối Sat_COUMUCT_ALTAY .sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss OO) Hinh 4-1. Các lệnh thực thi và kết quả.-es-cesrsereeeereerresreerereeeoere 5 2 Hinh 4-2.
Kết quả mô phỏng lệnh Addi. Kết quả mô phỏng lệnh Add. Kết quả mô phỏng lệnh LB.-essxessereeereereereeeeeeere DD Hình 4-5. Kết quả mô phỏng lệnh BEQ.-25sstesresrrerseeerreee DB Hình 4-6.
Kết quả mô phỏng lệnh FMV. Kết quả mô phỏng lệnh FADD. Kết quả mô phỏng Cache.-- HH hrhnhertrniirriiriererrrirtsrsiiriee D7 Hình 5-1. Kiến trúc chung giao thức AXIA.
Một transaction đọc của giao thức AXI4 Hình 5-3. Một transaction ghi của giao thức AXI4. Block Design trên phần mềm Vivado.----eeeeeeeerere OZ Hình 5-5. IP Microblaze giao tiếp với local memory.
Khối IP Uart Lite.-ee-ssseeeeeeeeerreeerrrrreerrerre Ổ 3 Hình 5-7. Cấu hình kết nối với KitsuneOS Hình 5-9. Kết quả nạp Kit.seeeeeeeereererrerrrrrrrrrrrrreereeresoesoee OO Hình 5-10. Kết quả so sánh.eeeeerereerrerrrrrrrrrrrrrererrroe OF DANH MỤC BANG Bảng 2.
Các lệnh thực hiện trong khoá luận. Mô tả tín hiệu khối Datapath.2--©222¿222+cc22vxvrtrrrrrsrrrrrerrrr 35 Bảng 3. Mô tả tín hiệu khối Controller.----2-22+222E+222E£+2£+£+£z+e+zzze+rx 37 Bảng 3. Mô tả tín hiệu khối Hazard Detection.-----2¿2222xz+2zxecczsesrx 39 Bang 3.
Mô tả tín hiệu khối BranchCompare. Mô tả tín hiệu khối Forwarding. Mô tả tín hiệu khôi ALU. Mô tả tín hiệu khối FPU.
Mô tả tín hiệu khối Cache. Mô tả tín hiệu khối Cache Memory. Mô tả tín hiệu khối LRU vies eccsssssesseesssseeeccenssssesecessssseeceessnnseeseessnneeeeeees 48 Bang 3. Mô ta tín hiệu khối BPU.
Mô tả tín hiệu khối Sâ{_ COUẨ€T_ ATTAY. Sàn vn rey 50 DANH MỤC TU VIET TAT RISC-V: Reduced Intruction Set Computer Five ALU: Arithmetic Logic Unit FPU: Floating Point Unit BPU: Branch Prediction Unit CPU: Central Processing Unit LRU: Least Recently Used AXI4: Advanced eXtensible Interface 4 IoT: Internet of Thing FPGA: Field Programmable Gate Array IEEE: Institute of Electrical and Electronics Engineers IF: Intruction Fetch ID: Intruction Decode EX: Excute MEM: Memory WB: Write Back TÓM TÁT KHÓA LUẬN Nội dung chính của khóa luận xoay quanh công việc nghiên cứu và thiết kế bộ vi xử lý RISC-V theo kiến trúc đơn chu kỳ, có thể xử lý số thực, sau đó là tích hợp bộ nhớ đệm (Cache Associative 4-way) hỗ trợ cải thiện tốc độ truy xuất dữ liệu và bộ dự đoán rẽ nhánh(BPU) đề tăng hiệu suất hoạt động của vi xử lý. Bộ nhớ đóng vai trò cung cấp các lệnh và dữ liệu cho các chương trình đang thực thi trong Bộ xử lý (CPU). Do đó, tốc độ truy xuất bộ nhớ có ảnh hưởng quan trọng đến hiệu suất của hệ thống máy tính.
Tuy nhiên, các bộ nhớ có tốc độ truy xuất càng nhanh thì giá thành càng cao. Vì vậy, tổ chức một hệ thống bộ nhớ hợp lý sao cho có thể truy xuất các thành phan cần cho các chương trình một cách nhanh chóng nhất là một yêu cầu cấp thiết. Các máy tính ngày nay sử dụng kiến trúc bộ nhớ phân cấp — một kiến trúc bộ nhớ nhiều lớp bộ nhớ khác nhau các về mặt dung lượng và tốc độ truy xuất dữ liệu. Bộ nhớ có tốc độ truy xuất nhanh hơn sẽ có giá thành trên một đơn vị bộ nhớ cao hơn, do đó các lớp bộ nhớ có tốc độ truy xuất nhanh sẽ có dung lượng nhỏ trong hệ thống bộ nhớ phân cấp.
Các hệ thống máy tính ngày nay thường có nhiều lớp bộ nhớ khác nhau nhưng chúng có thể được chia thành hai lớp chính là bộ nhớ đệm (Cache), Bộ nhớ chính (Main Memory). Cache đóng vai trò rất quan trọng trong việc nâng cao hiệu suất của Bộ xử lý bởi vì tốc độ của các Vi xử lý ngày nay nhanh hơn Bộ nhớ chính rất nhiều tạo nên nhu cầu có một lớp bộ nhớ trung gian có tốc độ truy xuất dữ liệu cao nhằm giảm thời gian truy xuất dữ liệu giữa Vi xử lý và Bộ nhớ chính. Bên cạnh đó đề tăng hiệu suất của vi xử lý, một bộ dự đoán rẽ nhánh sẽ được thêm vào đề các lệnh nhảy được quyết định một cách sớm nhất, nếu dự đoán đúng sẽ làm tăng hiệu suất của vi xử lý, nếu sai cũng không ảnh hưởng đến vi xử lý. Việc tích hợp bộ nhớ đệm và bộ dự đoán rẽ nhánh vào vi xử lý RISC-V và vai trò của chúng trong hệ thống là hướng nghiên cứu chính trong khóa luận này.
Giới thiệu đề tài 1. Tổng quan đề tài Trong những năm gan đây, việc sử dụng vi điều khiển và các hệ thông nhúng đã trở nên phô biến hơn bao giờ hết. Với sự gia tăng của IoT, các thiết bị thông minh và các ứng dụng tiên tiến khác, có nhu cầu cần các hệ thống tính toán hiệu quả và mạnh mẽ. Và RISC-V là một kiến trúc vi xử lý đang thu hút được sự quan tâm đáng kể của các nhà sản xuất và các nhà phát triển phần mềm.
Với thiết kế mạnh mẽ, linh hoạt và độc lập với bản quyền, RISC-V cho phép các nhà sản xuất vi điều khiển và các nhà phát triển phần mềm tùy chỉnh và điều chỉnh hệ thống của họ để đáp ứng các yêu cau cụ thé của từng ứng dụng. Có nhiều dẫn chứng dé chứng minh rằng RISC-V đang được sử dụng và thu hút sự quan tâm của nhiều nha sản xuất và nhà phát trién phần mềm. Sau đây là một số ví dụ: Các công ty lớn như Google, Nvidia và Western Digital đã gia nhập Hiệp hội RISC-V, một tổ chức phi lợi nhuận được thành lập dé giám sát việc phát triển và tiêu chuân hóa RISC-V. Nhiều nhà sản xuất vi điều khiển lớn, chang hạn như SiFive, Andes Technology và Microchip đã tung ra các sản phẩm sử dụng kiến trúc RISC-V.
RISC-V cũng đang được sử dụng trong các ứng dụng thực tiễn, bao gồm các thiết bị IoT, máy tính nhúng, máy tính thông minh và các thiết bị lưu trữ. RISC- V cũng đang được sử dung trong các trường đại học và các tổ chức nghiên cứu dé phát triển các công cụ phần mềm và phần cứng mới, giúp nâng cao hiệu suất và khả năng tùy chỉnh của hệ thống tính toán. Từ các dẫn chứng trên, có thé thay rằng RISC-V đang trở thành một lựa chọn quan trọng và được ưa chuộng cho các hệ thống tính toán hiện đại. Bên cạnh đó, sử dụng dự đoán rẽ nhánh (branch prediction) trong vi xử lý giúp tăng tốc độ thực thi các chương trình, đặc biệt là trong các chương trình có nhiều câu lệnh rẽ nhánh.
Các câu lệnh rẽ nhánh (conditional branch) thường xuất hiện trong chương trình khi mà một điều kiện nào đó xảy ra, ví dụ như if-else statement hoặc vòng lặp. Khi một câu lệnh rẽ nhánh được thực thi, vi xử lý phải 13 dừng thực hiện các câu lệnh hiện tại và chuyên sang thực hiện các câu lệnh tương ứng với nhánh điều kiện đó. Tuy nhiên, việc thực hiện câu lệnh rẽ nhánh làm gián đoạn (stall) quá trình thực thi của vi xử lý. Khi đó, branch prediction sẽ được sử dụng để dự đoán kết quả điều kiện để vi xử lý có thể tiếp tục thực hiện các câu lệnh tiếp theo mà không phải đợi đến khi câu lệnh rẽ nhánh được giải quyết.
Nếu dự đoán đúng, vi xử lý sẽ tiếp tục thực hiện các câu lệnh tiếp theo của nhánh đó mà không phải gián đoạn. Nếu dự đoán sai, vi xử lý sẽ phải hủy bỏ các câu lệnh đã thực hiện và quay trở lại vi trí ban dau dé thực hiện nhánh khác. Nhờ sử dung branch prediction, vi xử lý có thé giảm thiểu thời gian gián đoạn, tăng tốc độ thực thi chương trình và cải thiện hiệu suất của hệ thống. Do thời gian truy xuất dữ liệu từ bộ nhớ chính là một hoạt động rất tốn kém thời gian va năng lượng, dé giảm thiểu điều này sử dụng một hoặc nhiều bộ nhớ đệm là cần thiết cho một hệ thông vi xử lý.
Khi vi xử lý cần truy xuất một phần dữ liệu nào đó, nó sẽ truy vấn trực tiếp bộ nhớ đệm đầu tiên để xem dữ liệu cần thiết đã được lưu trữ trong đó hay chưa. Nếu dữ liệu đã tồn tại trong bộ nhớ đệm, vi xử lý có thể truy xuất nhanh chóng đữ liệu đó mà không cần phải đọc lại từ bộ nhớ chính. Nếu dữ liệu không có sẵn trong bộ nhớ đệm, vi xử lý sẽ phải truy xuất dữ liệu từ bộ nhớ chính và lưu trữ vào bộ nhớ đệm dé sử dung sau này. Sử dụng bộ nhớ đệm giúp giảm thiểu thời gian truy xuất dữ liệu từ bộ nhớ chính và tăng tốc độ thực thi của vi xử lý.
Nó cũng giúp giảm tải cho bộ nhớ chính, vì việc truy xuất dữ liệu từ bộ nhớ chính là một hoạt động rất tốn kém thời gian và năng lượng. Bằng cách lưu trữ dữ liệu cần thiết trong bộ nhớ đệm, vi xử lý có thể truy xuất nhanh chóng các đữ liệu đó mà không cần phải truy xuất lại từ bộ nhớ chính, giúp tiết kiệm năng lượng và tăng tốc độ thực thi của hệ thống.