MỞ ĐẦU Hiện nay, do sự phát triển bùng nỗ của ngành công nghệ thông tin, như là trí tuệ nhân tạo, các thiết bị nhúng,. Sự phát triển này kéo theo một nhu cầu vô cùng lớn đối với một vi xử lý đủ mạnh mẽ, đáp ứng đầy đủ các nhu cầu mà người dùng đòi hỏi ở một vi xử lý. Tuy nhiên, một thế giới với day bat ôn dẫn đến sự thiếu hụt trong nguyên liệu sản xuât, khiên cho giá thành của các vi xử lý trở nên vô cùng đặc đỏ. Từ những thực trạng trên, khóa luận này đê xuât một vi xử lý với một tập lệnh đơn giản, và khả năng xử lý câu lệnh song song nhờ vào thuật toán superscalar.
Vì có một tập lệnh đơn giản, nên giá thành cho việc sản xuất vi xử lý này cũng trở nên dễ dàng tiếp cận hơn cho người tiêu dùng. Ở giới hạn của khóa luận này, chúng em đề xuất đề tài khóa luận với tên “MÔ PHỎNG VÀ HIỆN THỰC HỆ THÓNG SoC VỚI RISC-V 32-BIT CPU TRÊN FPGA”. Đề tài khóa luận này sẽ cung cấp một superscalar RISC-V 32 bits, giúp tăng số lượng câu lệnh mà vi xử lý có thé xử lý trong một lúc. Thêm vào đó, là giải pháp cho một hệ thống SoC cho vi xử lý này, vi xử lý sẽ được kết nối với các khối chức năng can thiết thông qua giao thức bus AXI4.
Từ đó, nhóm mong muốn có thé tiếp cận với những thiết kế vi xử lý ngày nay, và có thé đóng góp cho sự phát triển của ngành vi mạch tại Việt Nam. TONG QUAN VI XU LÝ RISC-V 1. Giới thiệu về kiến trúc tập lệnh Kiến trúc tập lệnh (ISA) là một phần của máy tính xác định cách CPU sẽ hoạt động bởi một phần mềm nào đó. ISA hoạt động như một phần quan trọng dé kết nối giữa phần cứng và phần mềm, cho biết những gì bộ xử lý có thể thực hiện được cũng như cách mà nó được thực hiện.
ISA cung cấp cách duy nhất giúp người dùng có thé dé dang tương tác với thiết bị phân cứng. Vì thê nó còn có thê được xem như sô tay hướng dân của lập trình viên. ISA xác định các kiêu dữ liệu nào sẽ được hỗ trợ, các thanh ghi (register), cách thức quản lý bộ nhớ, các tính năng hỗ trợ khác (chăng hạn như bộ nhớ ảo), các lệnh được vi xử lý hỗ trợ thực thi, và mô hình của các tín hiệu đầu vào và đầu ra. Một ISA còn thê được mở rộng băng nhiều cách khác nhau.
Tổng quan về kiến trúc tập lệnh RISC-V RISC-V là một kiến trúc tập lệnh (Instruction Set Architecture - ISA) mã nguồn mở dựa trên nguyên tac RISC giống như MIPS, ngoại trừ RISC-V ISA được cung cấp giấy phép nguồn mở mà không yêu cầu bat kỳ khoản phí nào dé sử dụng. Nhiều công ty đang sản xuất hoặc đã giới thiệu phần cứng RISC-V, hệ điều hành mã nguồn mở hỗ trợ RISC-V như Nvidia, Western Digital,. RISC-V được cấu trúc như một ISA cơ sở nhỏ với nhiều phần mở rộng tùy chọn khác nhau. ISA cơ sở của RISC-V rất đơn giản, làm cho RISC-V phù hợp cho nghiên cứu và giáo dục, nhưng đủ hoàn chỉnh dé trở thành ISA phù hợp cho các thiết bị nhúng công suất thấp, giá rẻ.
Các phần mở rộng tùy chọn tạo thành ISA mạnh mẽ hơn cho mục đích chung và tính toán hiệu suât cao. RISC-V cũng xác định một tập hợp các phần mở rộng tiêu chuẩn dé cung cấp một sô tính năng cụ thê: e - Số nguyên cơ sở ISA, được đặt là “I” (tiền tố là RV32 hoặc RV64 tùy thuộc vào độ rộng thanh ghi số nguyên) và chứa các lệnh tính toán số nguyên, nạp số nguyên, lưu số nguyên và điều khiển luồng câu lệnh. e Phan mở rộng phép nhân và phép chia, được đặt là “M” và thêm các lệnh dé nhân và chia các giá trị được giữ trong thanh ghi số nguyên. e Phan mở rộng lệnh nguyên tử tiêu chuẩn, được ký hiệu là “A”, thêm các lệnh có thé đọc, sửa đôi và ghi nguyên tử vào bộ nhớ dé đồng bộ hóa giữa các bộ xử lý.
e Phan mở rong dau cham động chính xác đơn tiêu chuẩn, được ký hiệu là “F”, thêm các thanh ghi dau châm động, lệnh tính toán chính xác đơn, nạp và lưu trữ chính xác đơn. e Phan mở rộng dấu chấm động chính xác kép tiêu chuẩn, được ký hiệu là “D”, mở rộng các thanh ghi dau phây động và thêm các lệnh tính toán chính xác kép, nạp và lưu trữ. e Phan mở rộng nén tiêu chuẩn, được ký hiệu là “C”, cung cấp các dạng lệnh phổ biến hơn 16-bit. e Các tiêu chuẩn khác (L, B, J, T, .) được giới thiệu nhưng đây chi là phiên bản nháp và cần thời gian dé phát triển (Xem chỉ tiết các phần mở rộng khác trong bang 1.
1: Trang thái phiên ban cua các ISA Tiéu chuan Phién ban Trang thai RVWMO 2.0 Đã phê chuân RV32I 2.1 Đã phê chuẩn RV64I 2.1 Đã phê chuẩn RV32E 1.9 Dự thảo RVI128I 1.7 Dự thảo Mở rộng Phiên bản Trạng thái M 2.0 Đã phê chuẩn Counters 2.7 Dự thảo Zicsr 2.0 Đã phê chuẩn Zifencei 2.0 Đã phê chuẩn Zam 0.1 Dự thao Ztso 0. Các kiến trúc tập lệnh x86 là một kiến trúc CISC khác biệt hoàn toàn so với ARM, MIPS, RISCV; chúng đều là các thiết kế RISC khác nhau. Chi tiết hơn, kiến trúc ARM, MIPS, RISC-V dựa trên một loại kiên trúc phô biên “load-store” hoặc “register-register”, có nghĩa là các hoạt động xử lý dữ liệu hoạt động trên nội dung thanh ghi và chỉ nạp và lưu trữ các lệnh có thể truy cập bộ nhớ. Mỗi kiến trúc vẫn có thuận lợi va bat lợi riêng.2 minh họa ưu điêm và nhược điểm ISA của chúng; các bộ xử lý được xây dựng từ các ISA này.
2: Ưu điểm và nhược điểm của mỗi ISA ISA Ưu điểm Nhược điểm x86 Tat cả các phần mêm phô biến |e Có bộ thanh ghi “anemic”. đã được chuyển sang hoặc je x86 không thé ảo hóa theo cách được phát trién cho x86. Là kiến trúc được phô biến le Yêu cầu cấp phép sử dụng. rộng rãi nhất trên thị trường máy tính xách tay, máy tính để bàn và máy chủ.
ARMv7 ARMv7 định nghĩa 3 lớp (A, |e Không hỗ tro địa chi 64-bit. R, M) cho một ứng dụng cụ je ARMv7 rất rộng và phức tạp để thé. Số lượng lớn phan mềm đã |e Yêu cầu cấp phép sử dung. được chuyển đến ISA và phổ Je ARMv7 không thé ảo hóa theo biến trong các thiết bị nhúng cách cô điền.
và di động. ARMv7 cho đến nay là kiến trúc được triển khai rộng rãi nhất trên thế giới. ARMv8 ARMWv8 đã được mở rộng lên |e ISA vẫn phức tạp và khó sử dụng. 64-bit, tập lệnh được thiết kế Không hỗ trợ mã hóa lệnh từ đâu, khăc phục nhiêu sự cô compressed.
Yêu cầu cấp phép sử dụng. Khả năng tương thích ngược. MIPS Tất cả các lệnh opcode có 4 Một phần nhỏ không gian opcode bytes đơn giản hóa bộ giải mã có san cho các phần mở rộng lệnh. Tập lệnh MIPS số nguyên ở ISA được tối ưu hóa quá mức cho mức độ người dùng chỉ bao một mẫu vi kiến trúc cụ thể, five- gồm 58 lệnh.
stage, single-issue, in-order Tập lệnh phức tạp và phần pipeline. cứng được giảm bớt, tao điều Yéu cau cap phép str dung. kiện thuận lợi cho việc triển khai kỹ thuật pipeline không bi tôn kém. RISC-V Lệnh mã hóa tốt (mm field), Nhiêu tiện ích mở rộng không có thê sử dụng một bộ giải mã phải là bản tiêu chuân, cân thời cho nhiều định dạng lệnh.
gian đê tôi ưu hóa và phát triên. Cộng đồng đa dạng và có công cụ hỗ trợ. RISC-V là mã nguồn mở. Khả năng mở rộng cao.
Kiến trúc x86, ARM, MIPS thiếu một số tính năng kỹ thuật và yêu cầu phí giấy phép để hoạt động trên ISA của chúng. Đó là lý do chính tại sao mà nhóm chúng em lựa chọn RISC-V cho khóa luận của mình, một ISA miễn phí và mở, tránh được những nhược điềm kỹ thuật của ISA cũ và dé dàng triển khai theo nhiều phong cách kiến trúc. Phần tiếp theo giới thiệu thêm về kiến trúc RISC-V. Chỉ tiết kiến trúc tập lệnh RISC-V RISC-V được định nghĩa để hỗ trợ nghiên cứu trong các kiến trúc song song dữ liệu, chữ số la mã “V” được sử dụng như một cách chơi chữ, đó là chữ viết tắt của “Vector”.
RISC-V tạo ra ISA phù hợp với hầu hết tất cả thiết bị máy tính và chúng đáp ứng tất cả các mục tiêu kỹ thuật cụ thé khi bắt đầu phát triển ISA này: e Tach ISA thành một ISA cơ sở nhỏ và các phần mở rộng tùy chon. « H6 trợ với cả địa chỉ 32-bit và 64-bit. e Tao điều kiện thuận lợi cho các phần mở rộng ISA tùy chỉnh. e _ Hỗ trợ phần mở rộng tập lệnh có độ dài thay đổi.
e Cung cấp hỗ trợ hóa phần cứng hiệu qua cho các tiêu chuẩn hiện đại. e Truc quan hóa ISA của người dùng và kiến trúc đặc quyền. Trong khóa luận này, nhóm thực hiện nhóm lệnh RV32I, đây là ISA số nguyên 32-bit cơ sở. RV32I là một tập lệnh đơn giản, số lượng lệnh phan cứng ở mức độ người dùng lên đến 40 lệnh, đủ hoàn chỉnh dé tạo thành mục tiêu trình biên dich và đáp ứng các yêu cầu cơ bản.
Giống như các bộ lệnh RISC khác, các lệnh này được chia thành ba loại (tính toán, luồng điều khiển và truy cập bộ nhớ). Bởi vì RISC-V là kiến trúc lưu trữ nạp, trong đó các lệnh số học chỉ hoạt động trên các thanh ghi, chỉ tải và lưu trữ cho phép truyền dữ liệu đến và đi từ bộ nhớ. Các chế độ định địa chỉ của hướng dẫn RISC-V như sau: e Dinh địa chỉ tức thời, trong đó toán hạng là một hằng sỐ trong chính lệnh đó. e Dinh địa chỉ thanh ghi, trong đó toán hạng là một thanh ghi.
e Dinh địa chỉ cơ sở hoặc chuyên vị, trong đó toán hạng ở vi trí bộ nhớ có địa chỉ là tổng thanh ghi và một hằng số trong lệnh. e Dinh địa chỉ tương đối PC, trong đó địa chỉ nhánh là tổng PC và một hang số trong lệnh.3 sau cho thấy 32 thanh ghi có chiều rộng 32-bit và được gan cho một mục đích sử dụng cụ thể khác nhau. Thanh ghi x0 được nối với tất cả các bit bằng 0. Thanh ghi đích x1 - x31 giữ các giá trị mà các lệnh khác nhau diễn giải dưới dạng tập hợp các giá trị Boolean hoặc dưới dạng bổ sung của hai số nguyên nhị phân có dấu hoặc số nguyên nhị phân không dấu.