[1] ISA xác định các kiểu đữ liệu được hỗ trợ, các thanh ghi, cách phần cứngquản lý bộ nhớ chính, các tính năng chính chẳng hạn như bộ nhớ ảo, các lệnh mà bộ xử lý có thé thực thi và mô
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
PHAM QUANG HAI
VŨ DUY DI DAN
KHOA LUAN TOT NGHIEP
MO PHONG VA HIEN THUC 32-BIT RISC-V CPU TREN
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
PHAM QUANG HAI - 18520703
VU DUY DI DAN - 18520554
KHOA LUAN TOT NGHIEP
MO PHONG VA HIEN THUC 32-BIT RISC-V CPU TREN
FPGA
SIMULATION AND IMPLEMENTATION OF THE 32-BIT
RISC-V CPU ON FPGA
KY SƯ NGÀNH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số
528/QD-ĐHCNTT ngày 19 tháng Ø7 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4Bên cạnh đó, nhóm thực hiện cũng xin gửi lời cảm ơn đến Thầy/Cô và bạn
bè khoa Kỹ thuật máy tính nói riêng và trường Đại học Công nghệ Thông tin — Đại
học quốc gia Thành phó Hồ Chí Minh nói chung đã tận tình giảng dạy, truyền đạt
các kiến thức vô cùng bé ích, đồng hành và hỗ trợ chúng em trong suốt quá trìnhhọc tập tại trường Đại học Công nghệ Thông tin Những kiến thức và kinh nghiệm
quý báu đó sẽ là hành trang giúp chúng em có thể tự tin tiếp xúc với công việc
chuyên ngành một cách thuận lợi hơn.
Cuối cùng, chúng em cũng xin dành lời cảm ơn sâu sắc đến ba mẹ và gia
đình vì đã luôn sát cánh, động viên, tạo điều kiện và là chỗ dựa tỉnh thần vững chắc
trên con đường học tập và làm việc.
Trong suốt quá trình thực hiện đề tài khóa luận, chúng em không thể tránh
khỏi những khó khăn và sai sót do một số giới hạn liên quan đến chuyên ngànhchuyên sâu Vì thế, chúng em mong các quý Thay/C6 và các bạn sẽ thông cảm, và
có thé đóng góp ý kiến dé đề tài khóa luận này được phát triển và hoàn thiện hơn
trong tương lai.
Một lần nữa chúng em xin chân thành cảm ơn
TP Hồ Chi Minh, ngày 27 tháng 06 năm 2022
Sinh viên thực hiện
Trang 5MỤC LỤC
Chương 1 TONG QUAN -222222cc2 222v vrvrrrtrrrtrrrrrrrrrrrrrres l5
1.1 Giới thiệu về kiến trúc tập lệnh - -¿¿+22++++222v+z+ztrrxserrrrks l5
1.1.1 Tổng quan về kiến trúc tập lệnh RISC-V - - 151.12 Các kiến trúc tập lệnh c-cccccccccccrrrrrrrrrr 17
1.2 Chỉ tiết kiến trúc tập lệnh RISC-V
1.3 Thiết kế hệ thống của CPU -22¿¿¿22222vEvevrtttEErkrtrrrrrrrrrrree 26
Chương 2 THIET KE VI XỬ LÝ RISC-V 32-BIT
QA Tổng quan thiết kế vi xử lý 2¿-©2-+2+222EE+rtEEEEErrtrrkrrrrrrrkrcee 27
2.2 Lý thuyết về xung đột (Pipeline hazard)
2.2.1 Xung đột cấu trúc (Structure hazard) - s55 sxssscsssssesexs 29
2.2.2 Xung đột dữ liệu (Data hazard).
2.2.3 Xung đột điều khiển (Control/Branch hazard) . -s:+ 30
2.3 Các khối chức năng cĩ trong vi xử lý thơng qua từng giai đoạn 32
2.3.1 COPITỌÏCT 5c 121 32115121 1 1 1 E1 1217111111 g0 g0 ty, 32
2.3.2 Instruction Fetch (TE) - - - +5, 34
2.3.3 Instruction Decode (ID) ¿+ xxx ssstxrvrererserrrrrrrrrserrr 38
2.3.4 G0907 44
2.3.5 Memory Access (MEM) - 555cc tttrrrerrerrre 49
2.3.6 MS; 000411 52
Chương 3 THIET KE VI XỬ LÝ RISC-V 32-BIT VỚI GIAO THỨC AXI453
3.1 Đĩng gĩi vi xử lý RISC-V với giao thức AXI4 - 53
3.1.1 Kiến trúc vi xử lý trước khi đĩng gĩi - -cccce2 53
3.1.2 Kiến trúc vi xử lý khi đĩng gĩi thành IP - 53
Trang 63.2 Giao thức AXI4 - chen 54
3.2.1 Tổng quan giao thức
3.2.2 Các tín hiệu cụ thể của giao thức AXI4 trong khĩa luận 57
Chương 4 THIẾT KÉ BLOCK DESIGN TRÊN VIVADO
4.1 Tổng quan thiết kế Block Design 22cc++222cvvvvvrrrrrrrrrrer 59
4.1.1 Thiết kế trên Vivado
4.2 Các IP của Xilinx dự kiến dùng trong thiết kế Block Design 59
4.2.1 IP Memory Interface Generator (MIG 7 Series)
4.2.2 IP Central Direct Memory Access (IP CDMA) - 60
4.243 IP AXI Bram ContrỌÏ€T ¿5+ 5+ SSx+k+t‡v£eEexeeeketseerrvre 60
Chương 5 MƠ PHONG VÀ ĐÁNH GIÁ THIET KÉ - 62
5.1 Kịch bản kiêm thử trên FPGA 2-¿2+++++22++++t2vx+rrrtrrvecree 62
5.2 Mơ phỏng chức năng 1tr re 64
5.3 Kết quả mơ phỏng 2c+2£2222V2222+++t2EEEEESEEvrtrttrrrrrvrrrrrrrrrrrex 655.4 Đánh giá thiết kế -222c++222222221222EEEEEEEEEErrrtrrrrkrrrrrrrrrrrrrer 68
SAL Kết quả tổng hợp cc:22cs+csccvvrrrerrkvrrrrrrvrrrrrres 68
5.4.2 Đánh giá thiết kế và so sánh với các đề tài khác -.- 70
Chương 6 KÉT LUẬN VÀ HƯỚNG PHÁT TRIẺN - 73
Trang 7PHU LỤC I KIT FPGA XILINX VIRTEX-7 VC707 -5-5-©5+55+ 76
PHỤ LỤC II CÁC BƯỚC GENERATE BITSTREAM
Trang 8DANH MỤC HÌNH
Hình 1.1: Dinh dạng tập lệnh R`V32[ + - 5c tk Ekskrkekekrrrerree 21
Hình 1.2: Kiến trúc hệ thống CPU scccccsssssssssssesssssssescsssssscssssusessssesessssscessseeeeess 26
Hình 2.1: Hình mô ta CPU RISC-V đơn chu kỳ ¿- 5-5-5252 5<5<+++c+c++ 27
Hình 2.2: Hình mô tả chỉ tiết các khối chức năng trong vi xử ly 32-bit RISC-V
5-Stage pipeline sử dụng trong khoá luận ¿-¿ ¿5-5 5+ 5+ 52£+£+£+xzxzzsrerse+ 28
Hình 2.3: Hình mô tả các tín hiệu control qua các tầng - : -: + 32
Hình 2.4: Module Controller trong thiết kế -¿ 2¿+2++z++222vzzezrrxx 32
Hình 2.5: Thanh ghi Program Counter (PC) ‹- 5+ xxx sv£vxeeevexeeerrrrre 35 Hình 2.6: Module Program Counter add 4 (PC_ add4) - -: -+‹s<+ 36
Hình 2.7: Module IMEM - - ¿c5 S25 S**E£E#k#EEEEkkEY g1 1 1x, 36
Hình 2.8: Thanh ghi IF to ID (IE_ tO_ TH) 5c 5c sv‡v£vxeeekexeerrrrrre 37 Hình 2.9: Register fiÏe -¿- 1S: nh k9 12 1H HH1 Hy 38
Hình 2.10: Module imm_ øen - ¿-+- 5° +55 **2E‡E‡EvEEk+EEEeEEkrkrkerrrerkrkrke 39 Hình 2.11: Module Branch CoimparatOr- - ¿+52 ++s25s£+++z++£+se+szsz++ 40
Hình 2.12: Module Branch Detection - 5252 5+2c+c+x++ererxrterrrerrsree 41 Hình 2.13: Module Hazard Detection -¿-¿- ¿+ 5552 + ‡‡‡‡£‡£vxsEekekexerrersre 42
Hình 2.14: Thanh ghi ID to EX (ID_to_EX) 5- 5-5525 ‡++x++£veerzxrxe 4
Hình 2.15: Module MuXA - 52-6 S22 E212 E221 211 re 45
Hình 2.16: Module Mux - ¿c5 S111 ST He 45
Hình 2.17: Module ALŨ - - - ¿5< + +‡k+E‡E SE T111 1101012 H1 11 re, 46
Hình 2.18: Module Forwarding Unit - 5-52 5++s+se£e£zxzxerererereree 47
Hình 2.19: Module Addition Branch - 55+ 5+55+s+ss£ezezxserxersrsree 48 Hình 2.20: Thanh ghi EX to MEM (EX_to_MEM)) - 555 5<+c+c+c+e 48
Hình 2.21:Module DMEM es ¿ST HH1” 00121 trà 50 Hình 2.22: Thanh ghi MEM to WB (MEM_to_WB) àcccccccccerce 51
Hình 2.23: Module Mux_ẲW., - cv HH HH HT Hàng Hàn net 52
Trang 9Hình 3.2: Kiến trúc vi xử lý sau khi đóng gói và được kết nói với IP System
Hình 4.1: Thiết kế Block Design trên phần mềm Vivado -: + 59
Hình 5.3: Kịch bản kiểm thử sử dụng SD Hình 5.4: Đoạn chương trình assembly và mã máy sau khi biên dịch để kiểm tra chức năng CPU ¿+ 11k 111 T HH HH HH rà 64 Hình 5.5: Kết quả mô phỏng ba câu lệnh đầu tiên trên phần mềm Vivado 65
Hình 5.6: Kết quả mô phỏng ba câu lệnh đầu tiên trên Venus - 66
Hình 5.7: Memory sau khi thực hiện lệnh SW trên CPU -. -¿ -+ 66
Hình 5.8: Memory sau khi thực hiện lệnh SW trên phần mềm 67
Hình 5.9: Kết quả thanh ghi của CPU sau khi chạy xong đoạn chương trình 67
Hình 5.10: Kết quả thanh ghi của phần mềm Venus sau khi chạy xong đoạn chương trình 68
Hình 5.11: Tài nguyên sử dụng của CPU RISC-V 69 Hình 5.12: Tài nguyên sử dụng theo từng module của CPU RISC-V 69 Hình 5.13: Xung clock của CPU RISC-V 70
Hình 5.14: Phân tích timing cho CPU RISC-V 70
Hình 5.15: Tốc độ tối đa dự kiến của CPU RISC-V -c¿cccvccc+cccseez 70
Trang 10DANH MỤC BANG
Bang 1.1: Trang thái phiên bản của ISA cơ sở và các phần mở rộng 16Bảng 1.2: Thuận lợi và bất lợi của mỗi ISA - ¿5c kckecEckcExerkerkerrrek 17
Bang 1.3: Quy ước các thanh ghi của RISC-V - -¿25ccccsczxsesree 20
Bảng 1.4: Lệnh RV32I thông qua ngôn ngữ assembly - ¿5 ++55<+ 21
Bang 2.1: Bảng mô tả các công đoạn khi xử ly câu lệnh - 27
Bảng 2.2: Bang mô tả tín hiệu điều khiển khối ALU - -.-: -5552 33
Bảng 2.3: Bảng mô tả tín hiệu điều khiển thanh ghi PC -. -cc¿ 33
Bảng 2.4: Bảng mô tả tín hiệu điều khiển halt - 22 ©222z++2222+ccseczseee 33Bảng 2.5: Bảng mô tả tín hiệu điều khiển khối Imm_Gen - 33
Bang 2.6: Bảng mô tả tín hiệu BrE(Q cscs 56522 ‡E‡+SEkrekekererrrkrkekrree 34
Bang 2.7: Bảng mô tả tín hiệu BTL7T - <5 St S*£v+kekevrerererereerkekree 34 Bang 2.8: Bảng mô tả tín hiệu BrUn - 22525252 £‡E+‡‡v£veererexekrtrree 34
Bảng 2.9: Bảng các tín hiệu trong module Controller - - «5-2 =+ 34 Bảng 2.10: Bảng các tín hiệu trong thanh ghi PC - - 5+ +5555+++c++ 35
Bảng 2.11: Bảng các tín hiệu trong thanh ghi PC_ add4 ‹ cence 36 Bảng 2.12: Bảng các tín hiệu trong module IMEM -+- 37
Bang 2.13: Bảng các tín hiệu trong thanh ghi IF_ to_TD - 5-5 << 38
Bang 2.14: Bảng các tín hiệu trong RegFile - 5 5++++c+c+cs+e+xzxscee 39
Bang 2.15: Bảng các tín hiệu trong khối imm_gen -::¿222cvccc+2 40Bảng 2.16: Bảng các tín hiệu trong khối br_comp .: c:zc5ss2 40
Bang 2.17: Bảng các tín hiệu trong khối branch_ detect -c-z 41
Bang 2.18: Bang các tín hiệu trong khối Hazard Detection - -: 42
Bang 2.19: Bảng các tin hiệu trong thanh ghi ID_to_EX 4
Bang 2.20: Bang các tín hiệu trong khối MuxA 22:2255czcccssc2 45
Bang 2.21: Bảng các tín hiệu trong khối MuxB -ccc¿-©2c2sssccc2 46
Bang 2.22: Bang các tín hiệu trong khối ALU -ccccc¿+¿222vcvccce2 46
Trang 11Bang 2.25: Bảng các tín hiệu trong thanh ghi EX_to_MEM 49
Bang 2.26: Bảng các tín hiệu trong khối DMEM -¿©+cc+2czssc+ 50
Bang 2.27: Bảng các tín hiệu trong thanh ghi MEM_to_WB 51
Bang 2.28: Bang các tín hiệu trong khối Mux_W -c:c5ccscccccccsvee 52
Bang 3.1: Các tín hiệu trong AXT4 bus 65+ SEvsserrtrrrrrererererke 57
Bảng 5.1: Bảng so sánh các thiết kế RISC-V pipeline [5] - -¿ 7I
Trang 12DANH MỤC TU VIET TAT
Viết tắt Viết đầy đủ Ý nghĩa
IP Intellectual Property Lõi sỡ hữu trí tuệ
AXL | Advanced eXtensible Interface Giao diện bus mở rộng nâng cao
CISC | Complex Instruction Set Computer | Máy tính với tập lệnh phức tạp
Máy tính với tập lệnh đơn giản
RISC | Reduced Instruction Set Computer
hóa
Bộ xử lý dựa trên kiến trúc tập
ARM | Advanced RISC Machines
lệnh RISC
MIPS Microprocessor without Kiến trúc tập lệnh RISC phát
Interlocked Pipeline Stages trién bởi MIPS Technologies
RAM | Random Access Memory Bộ nhớ truy cập ngẫu nhiên
CPU_ | Central Processing Unit Bộ xử lý trung tâm
Vi mạch tích hợp cỡ lớn dùng
FPGA | Field Programmable Gate Array cấu trúc mảng phan tử logic ma
người dùng có thê lập trình
ALU | Arithmetic Logic Unit Khối số học logic
Hệ thống kiểm soát tan số khép
PLL | Phase Locked Loop
kín
RTL | Register Transfer Level Mức chuyền thanh ghi
Trung tâm truy cập bộ nhớ trực
CDMA | Central Direct Memory Access "
tiép
Trinh quan lý xung clock chế độ
MMCM | Mixed-Mode Clock Manager
Trang 13TÓM TÁT KHÓA LUẬN
Đề tài khóa luận bao gồm hai nội dung chính xoay quanh nghiên cứu thiết
kế bộ vi xử ly RISC-V và đóng gói vi xử lý thành IP theo chuẩn giao tiếp AXI4
Nội dung thứ nhất là hướng đến nghiên cứu thiết kế vi xử lý RISC-V ápdụng kỹ thuật pipeline để xử lý câu lệnh Vi xử lý gồm các khối chức năng xử lýlệnh trong tập lệnh RV32I và xử lý các xung đột Tiếp đến là nhóm thực hiện thaythé hai khối Instruction Memory (IMEM) va Data Memory (DMEM) bằng IP
System Cache v5.0 của Xilinx.
Nội dung thứ hai của dé tài khóa luận là đóng gói bộ vi xử lý Hau hết các
IP trên phần mềm Vivado giao tiếp với nhau thông qua bus AXI4 hoặc AXI3 Trong
khóa luận này, RISC-V sẽ được đóng gói theo chuẩn giao tiếp AXI4 Sau đó kết nốivới các IP khác trên Block Design của phần mềm Vivado đề tạo sự liên kết giữa hai
nội dung Trong Block Design, RISC-V đóng vai trò là một Master, yêu cầu đọc dữ
liệu từ các Slaver thông qua bus AX14, tính toán và lưu các giá trị đó vào trong
System Cache, đồng thời trả các giá trị đó cho Slaver hoặc xuất ra Uart
Qua hai nội dung của khóa luận này, nhóm thực hiện hy vọng sẽ tích lũy
được thêm kinh nghiệm về việc thiết kế kiến trúc vi xử lý RISC-V, cải thiện tốc độ
xử lý của vi xử lý theo các kiến trúc đã được học, về thiết kế hệ thống có tích hợpcác khối IP có sẵn Ngoài ra hiểu về cách sử dụng BUS AMBA AXI4 dé truyềnnhận dữ liệu trong hệ thống Đóng góp cho sự phát triển của kiến trúc RISC-V
13
Trang 14MỞ DAU
Ngày nay, nhu cầu về chip bán dẫn của ngành sản xuất các thiết bị thôngminh ngày càng tăng cao, tình trạng dịch Covid-19 trở nên phức tạp, mọi người dần
chuyền đổi sang hình thức học tập, làm việc trực tuyến và giải trí tại nhà Chính vì
vậy, việc phát triển các thiết bị thông minh, hiện đại, đòi hỏi các thiết bị phải có vi
xử lý mạnh mẽ, đáp ứng các nhu cầu của người dùng càng trở nên cấp thiết hơn
Tuy nhiên, giá thành cấu tạo các vi xử lý còn cao do qui trình chế tạo phức tạp, thêm
với đó là những khó khăn đến từ van dé thiếu hụt nguyên liệu và nhân công do bốicảnh dịch Covid-19 kéo dài hiện nay Các vấn đề trên càng làm tăng thêm sự quantrọng của các vi xử lý trong các thiết bị thông minh
Từ thực trạng được nêu trên, chúng ta thay được sự cần thiết trong việc tối
ưu hóa các bộ vi xử lý Một trong những giải pháp được đề xuất là thiết kế các vi
xử lý phù hợp với thiết bị thông minh Một vi xử lý với câu trúc lệnh don giản dé
có thê giảm số lượng các công logic trên thiết kế, làm giảm năng lượng hoạt độngcho vi xử lý, khi ấy nhà sản xuất sẽ điều chỉnh giá thành hợp lý hơn, từ đó làm giảm
giá thành khi đến tay người ding
Tai mức độ là sinh viên nghiên cứu, nhóm chúng em đề xuất dé tài khóa
luận mang tên “NGHIÊN CỨU THIÉT KÉ BỘ VI XỬ LÝ RISC-V 32-BIT THEOKIEN TRÚC PIPELINE”, đề tài khóa luận có hai nội dung Nội dung thứ nhất
hướng đến việc thiết kế vi xử lý RISC-V theo kiến trúc Pipeline 5-stage, tăng số
lượng lệnh có thé xử lý trong đường ống của vi xử lý Nội dung thứ hai đó là tinh
chỉnh vi xử lý RISC-V thành một Master, có thể giao tiếp với các Slaver (SystemCache) khác thông qua bus AXI4 Mục đích của nội dung này hướng đến việc tiếpcận thiết kế theo kiến trúc của các vi xử lý ngày nay, nhằm đóng góp cho sự phát
triên của ngành vi mạch.
Trang 15Chương 1 TONG QUAN
1.1 Gi6i thiệu về kiến trúc tập lệnh
Kiến trúc tập lệnh (ISA) là một phan trừu tượng của máy tính xác định cáchCPU được điều khiển bởi phần mềm ISA hoạt động như một giao diện giữa phần
cứng và phần mềm, chỉ định cả những gì bộ xử lý có khả năng thực hiện cũng như
cách nó được thực hién.[1]
ISA cung cấp cách duy nhất dé người dung có thể tương tác với phần cứng
Nó có thể được xem như số tay hướng dẫn của lập trình viên vì nó là phần của máyhiển thị với người lập trình hợp ngữ, người viết trình biên dịch và người lập trình
ứng dung [1]
ISA xác định các kiểu đữ liệu được hỗ trợ, các thanh ghi, cách phần cứngquản lý bộ nhớ chính, các tính năng chính (chẳng hạn như bộ nhớ ảo), các lệnh mà
bộ xử lý có thé thực thi và mô hình đâu vào/đầu ra của nhiều triển khai ISA ISA có
thể được mở rộng bằng cách thêm hướng dẫn hoặc các khả năng khác hoặc bằngcách thêm hỗ trợ cho các địa chỉ và giá trị dữ liệu lớn hơn
1.1.1 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 tắc RISC giống như MIPS, ngoại trừ RISC-V ISA được
cung cấp giấy phép nguồn mở không yêu cầu bat kỳ khoản phi 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 chonghiê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
Trang 16cấp một
RISC-V cũng xác định một tập hợp các phần mở rộng tiêu chuẩn đề cung
số tính năng cụ thể: [2]
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
Phần mở rộng phép nhân và phép chia, được đặt là “M” và them các lệnh
để nhân và chia các giá trị được giữ trong thanh ghi số nguyên
Phan mở rộng lệnh nguyên tử tiêu chuẩn, được ký hiệu là “A”, thêm cáclệ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ý.
Phần mở rộng dấu chấm động chính xác đơn tiêu chuẩn, được ký hiệu là
“F”, thêm các thanh ghi dấu 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.
Phần 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 dấu 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ữ.
Phần mở Tộ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 hon 16-bit
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).
Bang 1.1: Trạng thái phiên bản cua ISA co sở và các phan mở rộng
Base Version | Status
RVWMO | 2.0 Ratified RV321 21 Ratified
RV64I 21 Ratified
RV32E 1.9 Draft RV1281 | 1.7 Draft
Trang 17Zifencei |2.0
Zam 0.1
Ztso 0.1
Ratified Ratified Ratified
Ratified
Draft Draft
Draft
Draft Draft Draft Draft
Ratified
Ratified
Draft Frozen
1.1.2 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,
RISC-V; 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à chi nạp
và lưu trữ các lệnh có thể truy cập bộ nhớ.[3]
Mỗi kiến trúc vẫn có thuận lợi và bắt lợi riêng Bảng 1.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.[3]
Bảng 1.2: Thuận lợi và bắt lợi của mỗi ISA
x86 e Tất cả các phần mềm phổ biến
đã được chuyển sang hoặc được
phát triển cho x86
e Là kiến trúc phổ biến nhất trên
thị trường máy tính xách tay,
máy tính để bàn và máy chủ
¢ Có bộ thanh ghi “anemic”.
e x86 không thể áo hóa theo
cách cổ điền
e _ Yêu cầu cấp phép sử dụng
17
Trang 18ARMv7 ARMvV7 định nghĩa 3 lớp (A, R,
ARMv8 ARMv8 đã được mở rộng lên
64-bit, tập lệnh được thiết kế từđầu, khắc phục nhiều sự cé cũ
Khả năng tương thích ngược.
ISA được tối ưu hóa quá mức
cho một mẫu vi kiến trúc cụ
thể, five-stage, single-issue,
in-order pipeline.
Yêu cầu cấp phép sử dung
RISC-V Lệnh mã hóa tốt (imm field), có
thể sử dụng một bộ giải mã cho
Nhiều tiện ích mở rộng khôngphải là bản tiêu chuẩn, cần
Trang 19e _ Cộng đồng đa dạng và có công thời gian đề tối ưu hóa và phát
cụ hỗ trợ triển.
e RISC-V là mã nguồn mở
e 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 phi
giấy phép đề hoạt động trên ISA của chúng Đó là lý do tại sao chúng emq chọnRISC-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 vi kiến trúc
Phan tiếp theo giới thiệu thêm về kiến trúc RISC-V
1.2 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ếttắt của “Vector” RISC-V tạo ra ISA phù hợp với hầu hết mọi 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:(3]
¢ Tách ISA thành một ISA cơ sở nhỏ va các phần mở rộng tùy chon
e H6 trợ cả không gian đại chi 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
© _ Cung cấp hỗ trợ hóa phan cứng hiệu quả cho các tiêu chuẩn hiện dai
¢ Truc quan hóa ISA cia 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 phần 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
dịch 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ệnhnà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ácthanh ghi, chỉ tải và lưu trữ cho phép truyền dữ liệu đến và đi từ bộ nhớ
19
Trang 20Các chế độ định địa chỉ của hướng dẫn RISC-V như sau:
© Định địa chi 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.
¢ Định địa chỉ cơ sở hoặc chuyền vị, trong đó toán hạng ở vị trí bộ nhớ
có địa chỉ là tong thanh ghi và một hang số trong lệnh
e Định địa chỉ tương đối PC, trong đó địa chỉ nhánh là tổng PC và một
hằng số trong lệnh
Bảng 1.3 sau cho thấy 32 thanh ghi có chiều rộng 32-bit và được gan chomột mục đích sử dụng cụ thé 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 dang 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 dau Thanh ghi bổ sung duy nhấy là bộ đếm (pc) cụ thé
là chứa địa chỉ của lệnh hiện tại [2]
Bang 1.3: Quy ước các thanh ghi cua RISC-V
Name (ABI) Repair Usage
number x0(zero) 0 The constant value
x10-x17 (a0-a7) 10-17 | Arguments/results
Trang 21x18-x27 (s0- 18-27 | Saved
sll)
X28-x3 1 (t3-t6) 28-31 | Temporaries
Bến mươi lệnh được mã hóa thành các định dạng lệnh: R, I, S, B, U, J (được
mô tả ở hình 1.1) Trong các định dạng ngày, các lệnh tạo nguồn tối đa hai toánhạng thanh ghi, được xác định bởi rsl và rs2 và tạo ra tối đa một kết quả, ghi vào
thanh ghi rd Một tính năng quan trọng của mã hóa này là các thanh ghi “specifiers”,
luôn chiếm một vị trí trong lệnh Thuộc tinh này cho phép tìm nạp thanh ghi tiếnhành song song với giải mã lệnh, cải thiện một đường dẫn quan trọng trong nhiều
triển khai
3i 30 25 24 2L 20 19 15 14 1211 8 # 6 0
funct7 rs2 rsl funct3 rd opcode
imm{11:0] rs] funct3 rd opcode
imm/[11:5] 1S2 rsl fñunet3 imm|4:0] opcode
imm[T5] | imm[10:5] 152 xsl ñmet3 | imm[41]] imm[TT] | opcode
imm[31:12] rd opcode
imm[20] imm({10:1] imm[II] imm[19:12] rd opcode
Hình 1.1: Dinh dang tập lệnh RV32I
Chức năng của từng lệnh mà nhóm thực hiện sử dụng trong khóa luận này
được thé hiện trong bảng 1.4 (dé giữ nguyên được ý nghĩa của lệnh nhóm xin phépđược sử dụng tiếng anh đề trình bày)
Bang 1.4: Lệnh RV32I thông qua ngôn ngữ assembly
Lệnh Ví dụ Ý nghĩa Ghi chú
Three register Add add x5, x6, x7 x5 =x6+x7
Trang 22Add immediate addi x5, x6, 20 x5 = x6 +20
Trang 23Store halfword sh x5, 40(x6) Memory[x6 + 40] = x5
Halfword from register to
memory
Byte from Load byte Ib x5, 40(x6) | x5 = Memory[x6 + 40] | memory to
Byte from register
Store byte sb x5, 40(x6) | Memory[x6 + 40] = x5
to memory
Load; Ist half of
Load reserved Ir.w x5, (x6) x5 = Memory[x6] an atomic swap
Trang 24And immediate | andi x5, x6, 20 x5 = x6 & 20
reg with constant
Inclusive or Bit-by-bit OR reg.
ori x5, x6, 20 x5 = x6 | 20
immediate with constant
Exclusive or Bit-by-bit XOR
xori x5, x6, 20 x5 =x6% 20
immediate reg with constant
Shift left Shift left by
sll x5, x6, x7 x5 = x6 << x7 logical register
Shift right Shift right by
Trang 25Shift right Arithmetic shift
arithmetic srai x5, x6, 3 x5 =x6>>3 right by
immediate immediate
PC-relative beq x5, x6, if (x5 == x6) go to
Branch if equal branch if registers
branch if registers greater or equal 100 PC+100
greater or equal
PC-relative Branch if less, bltu x5, x6, if (x5 < x6) go to
Jump and link jalr x1, x1 = PC+4; go to Procedure return;
register 100(x5) x5+100 indirect call
Trang 261.43 Thiết kế hệ thống của CPU
Thiết kế FPGA bao gồm các thành phan trong hệ thống máy tính (mô tả
Trang 27Chương 2 THIET KE VI XỬ LÝ RISC-V 32-BIT
2.1 Tổng quan thiết kế vi xử lý
Cấu trúc CPU RISC-V pipeline được phát triển từ CPU RISC-V đơn chu
kỳ có sơ đồ khối như hình 2.1
Prm h
inst[24:201 Ja
lg immSel RegWEn BrUnBrEqBrLT BSel ASel ALUSel MemRW 'WBSel
câu lệnh cần nhiều nhất là 5 công đoạn Các trang thái được mô tả chỉ tiết như bảng
2.1.
Bảng 2.1: Bảng mô tả các công đoạn khi xử lý câu lệnh
IF ID EX MEM WB Instruction | Instruction Execute/addressl Memory access | Write back
Fetch decode/register | calculation
file read
Nap lénh Giải mã lệnh Tính toán Truy cập MEM Ghi ket quả
(nêu có) vào bộ nhó
(nêu có)
Cấu trúc pipeline tăng hiệu suất của CPU bằng cách cho các câu lệnh thực
hiện song song, giúp cho việc thực thi một chương trình gồm nhiều câu lệnh trở nên
27
Trang 28nhanh hơn Tuy nhiên, cần chú ý là pipeline sẽ không làm giảm thời gian thực thicủa một câu lệnh Khi thiết kế CPU có áp dụng pipeline, các giá trị của các tầngpipeline phải được lưu trữ để được xử lý ở các tầng tiếp theo Do đó thiết kế củaCPU đơn chu kỳ sẽ được chia làm 5 tầng tương ứng với 5 công đoạn, ngoài ra giữacác công đoạn sẽ được chèn thêm các thanh ghi đề lưu trữ các tín hiệu từ tầng trước
như hình 2.2.
HH
Hình 2.2: Hình mô tả chỉ tiết các khối chức năng trong vi xử lý 32-bit RISC-V
5-Stage pipeline sử dụng trong khoá luận Các thanh ghi thêm vào được mô tả sau đây:
e Thanh ghi IF to ID: Là thanh ghi pipeline phân chia giữa tầng tìm
e Thanh ghi MEM to WB: Là thanh ghi pipeline phân chia giữa tang
truy cập bộ nhớ và tầng ghi kết quả
2.2 Lý thuyết về xung đột (Pipeline hazard)
Trang 292.2.1 Xung đột cấu trúc (Structure hazard)
Xung đột cấu trúc: Xảy ra khi có hai câu lệnh cần truy cập vào cùng mộtphần cứng trong cùng một chu kỳ nhưng phần cứng chỉ có thể thực thi một câu lệnhtrong một chu kỳ Nói cách khác, xung đột cấu trúc xảy ra khi có hai lệnh cùng truyxuất vào một tài nguyên phần cứng nào đó củng một lúc
Xung đột cấu trúc trong pipeline xảy ra với lệnh Load, khi câu lệnh cần ghi
dữ liệu vào bộ nhớ trong lúc một lệnh khác đang truy cập bộ nhớ.
Dé giải quyết Structual hazard trong trường hợp này, dữ liệu của câu lệnh
R-format sẽ được lưu vào các thanh ghi để được xử lý sau khi xử lý lệnh Load
Xung đột dữ liệu xảy ra khi một câu lệnh không thể được xử lý trong chu
kỳ đã định trước vì dữ liệu cần được xử lý chưa xuất hiện Data hazard có thé được
chia làm 2 loại:
e R-format instruction
Xung đột dữ liệu có thé được khắc phục bằng cách sử dung “stall” — không
làm gì cả cho đến khi dữ liệu dé tính toán xuất hiện
Xét ví dụ sau:
29
Trang 30add x1, x2,x3
sub x4, x1,x5
Nếu sử dung stall ta mat 3 chu ki trống Tuy nhiên dữ liệu cho x đã có sau
khi ALU tính toán tại Excecute stage mà không cần đợi đến Write back dé lấy dữ
»
liệu Việc gửi dữ liệu trực tiếp ngay từ ALU gọi là “forwarding”
Program
xecuion 200 400 600 800 1000order Time T
order Time 200 400 600~
(in instructions) a :
Id x1, 0(x2) [r]z l i
© QO © © Oo.
sub x4, x1, x5 L8 © if MEM [ite
Hình 2.5: Giải quyết xung đột dữ liệu lệnh Load
2.2.3 Xung đột điều khiển (Control/Branch hazard)
800 1000 1200 1400
Trang 31Xung đột điều khiển xảy ra khi một câu lệnh không được xử lý trong chu
kỳ đã được định vì câu lệnh được giải mã ở chu kì trước không phải câu lệnh cần
được thực thi.
Có thé xử lý xung đột điều khiển theo hai cách:
e Stall: khi có lệnh nhảy có điều kiện, chương trình sẽ được stall cho
đến khi thực thi xong lệnh nhảy
Program execution order
Hình 2.6: Xử lý xung đột điều khiển theo cách Stall
e Predict: khi có lệnh nhảy có điều kiện, chương trình thực hiện dự
đoán địa chỉ câu lệnh kế tiếp và thực thi Tuy nhiên nếu kết quả dựđoán sai sẽ phải thực hiện lại từ đầu
Program
exgcuton Time 200 400 600 800 1000 1200 1400
{in instructions)
ade x4, x5, x6 [2°] [reg] xu | 282, [reo
bon, x0.40 fe] [reo] xu | 5, [Pa
Id x3, 400(x0) “poops | aan’ Reg] alu | „238, | Reg
Program
execution Time 200 400 600 800 1000 1200 1400
th instctons
add x4, x5, x6 [clon] | eg) Atu | „25, | Reg
beq xi x0, 40 eet] Au | 288, Treo
CESSES Es
or x7, x8, x9 ae ee reo] Au | 22 Troe
Hình 2.7: Xử lý xung đột điều khiển theo cách Predi
31
Trang 322.3 Các khối chức năng có trong vi xử lý thông qua từng giai đoạn
2.3.1 Controller
Tín hiệu điều khiển trong CPU pipeline được giữ nguyên so với CPU đơnchu kỳ Tuy nhiên, không phải tat cả tín hiệu đều được sử dụng trong cùng một chu
kỳ, cho nên các tín hiệu điều khiển phải được lưu trữ thông qua các thanh ghi
pipeline cho đến khi được sử dụng
we
Ji
EXL M wB
IFAD ID/EX EX/MEM MEM/WB.
Hình 2.8: Hình mô tả các tín hiệu control qua các tang
Trong thiết kế, khối Controller có chức năng điều khiển các khối khác đểthực hiện một câu lệnh nhất định nào đó, ngoài ra, các tín hiệu điều khiển cũng được
truyền qua khối chức nang Mux Hazard dé xử lý các xung đột
32
Controller
Asel (c) Bsel (c)
imm sel&) BrUn (e)|
Hinh 2.9: Module Controller trong thiét ké
e Hoạt động:
Trang 33Bảng 2.2: Bảng mô tả tín hiệu điều khiển khối ALU
01 haltA (F rewrite, IF_to_ID work
10 haltB (F rewrite, IF_to_ID block)
11 haltC (F flow, IF_to_ID block)
Bang 2.5: Bảng mô tả tín hiệu điều khiển khối Imm_Gen
Trang 34Các tin hiệu ngõ vào và ngõ ra:
Bang 2.9: Bảng các tín hiệu trong module Controller
Width Tên tín hiệu | /O (bit) Y nghia
BrEq I Tin hiệu điều khién cho lệnh so sánh bằng
BrLt I Tin hiệu điều khién cho lệnh so sánh nhỏ hơn
inst I 32 Câu lệnh hiện tại
Lpc_sel io) 2 Tin hiéu diéu khién thanh ghi PC
RegEn O Tín hiệu điều khiên tập thanh ghi Regfiles
BrUn o Tín hiệu điều khiến cho lệnh nhảy
Asel O Tín hiệu điều khién cho mux A
Bsel Oo Tin hiéu điều khiển cho mux B
MemRW O Tín hiệu điều khién cho Memory
imm_sel O 3 Tín hiệu điều khién cho khối Imm_gen
Alu_sel (a) 4 Tin hiệu điều khiến (opcode) của ALU
WBsel (a) 2 Tin hiệu điều khién cho Mux WB
2.3.2 Instruction Fetch (IF)
Trang 35o PC reset về địa chi ban đầu khi có tín hiệu rst_n tích cực thấp.
o PC cập nhật địa chỉ câu lệnh tiếp theo khi có tín hiệu clk tích cực
cao.
o Khi có tín hiệu pc_rewrire, halt, PC giữ nguyên giá trị hiện có.
o_ Khi giá trị của pc_sel là 2'b01, ngõ ra pc_out sẽ lay giá trị
pc_branch từ khối add_br để nhảy đến địa chỉ tương ứng Khipc_sel là 2’b10 (dùng cho lệnh JAL, JALR), ngõ ra pc_out lay
giá trị của pc_alu sau khi khối ALU tính toán xong
Các tín hiệu ngõ vào và ngõ ra:
Bảng 2.10: Bảng các tín hiệu trong thanh ghỉ PC
Tên tín hiệu | /O “ep Y nghia
clk I 1 Tín hiệu xung clock tích cực cạnh lên
tst_n I 1 Tin hiệu reset tích cực mức thấp
pe_rewrite I 1 Tin higu thông báo dé PC giữ nguyên giá trị
hiện tại
pc_in I 32 Dia chi PC dau vao
pc_branch 1 32 Địa chỉ PC mà lệnh Branch sử dụng đề nhảy tới
pc_alu I 32 Dia chi PC sau khi ALU tinh toan xong dia chi
pe_sel I 2 Tin hiéu dé chon giữa pe_branch hoặc pc_selhalt I 2 Tin hiệu dé hold địa chi PC hiện tai
pc_out O 32 Địa chỉ PC đầu ra
Trang 36b) Program Counter add 4 (PC_add4)
e _ Khối chức năng tính toán địa chỉ của câu lệnh kế tiếp
Fe pe PC,
—-Hình 2.11: Module Program Coumter add 4(PC_add4)
e Các tín hiệu ngõ vào và ngõ ra:
Bang 2.11: Bang các tín hiệu trong thanh ghi PC_add4
An ge pen Width ý 5
Tên tín hiệu | ƯO (bit) Y nghia
pe_in I 32 Dia chi PC dau vao
pc_out I 32 Dia chi PC dau ra
c) Instruction Memory (IMEM)
e _ Khối chức năng đóng vai trò là bộ nhớ của chương trình, chứa câu lệnh
có địa chỉ lưu trong PC Khối này được dùng tạm thời dé test chức năng
của CPU trước khi được tháo ra đề tiến hành thiết kế Block Design
Trang 37Bảng 2.12: Bảng các tín hiệu trong module IMEM
¬ Width ý 5
Tên tín hiệu | /O (bit) Y nghia
PC I 32 —_ | Dia chi cần đọc câu lệnh
inst 1 32 Câu lệnh tương ứng với địa chỉ PC
d) Thanh ghi IF to ID (IF_to_ID)
¢ _ Khối chức năng lưu các giá trị từ tang Instruction Fetch
o Các giá trị từ tang Instruction Fetch như: pc_add4, pc_in, inst_in
được cập nhật sau mỗi chu kì clock clk và bị xoá khi có rst_n.
o Khi có tín hiệu stage/_rewrite, các gia trị trong thanh ghi nay
được giữ nguyên.
o Khi có tín hiệu halt, các giá trị trong thanh ghi là unknown
(32°hxxxxxxxX).
37
Trang 38e Các tín hiệu ngõ vào và ngõ ra:
Bang 2.13: Bảng các tín hiệu trong thanh ghi IF_to_ID
Tên tín hiệu | 1/0 — Ý nghĩa
clk I 1 Tín hiệu xung clock tích cực cạnh lên
Tst_n I 1 Tin hiệu reset tích cực mức thấp
pc_add4 I 32 Địa chi PC từ khối PC_add4
pc_in 1 32 Địa chỉ PC từ khối PC
inst_in I 32 Cau lệnh tương ứng với dia chi PC được nap
vào CPU
halt I 2 Tin hiệu hoãn
stagel_rewrite | I 1 Tin hiệu hoãn
inst_out O 32 | Câu lệnh cần thực thi
pc_out oO 32 Dia chi PC dau ra
pe_add4_out O 32 Địa chỉ PC_add4 đầu ra
2.3.3 Instruction Decode (ID)
Giai đoạn Intruction Decode bao gồm 5 khối chức năng chính: Register File,
Immediate Gen, Branch Detection, Branch Comparator, ID to EX Register.
a) Register File
¢ Tập các thanh ghi cho phép truy xuất dữ liệu, bao gồm 32 thanh ghi,
mỗi thanh ghi có độ dài 32 bits.
lek stn
Hinh 2.14: Register file
o Khi có tín hiệu c/k, module sử dung giá tri inst1[19:15] để xác
Trang 39rs2 và xuất giá trị lưu trong rs2 đến ngõ ra dataB; sử dụng giá trịrd_out2 dé xác định miền rd.
o Khi có tín hiệu cho phép ghi RegWen_out3, giá tri của wb sẽ
được lưu vào tập thanh ghi.
o Để dam bảo trong mỗi chu kỳ chỉ có một câu lệnh được xử lý,
các tín hiệu điều khiển được lấy từ tang Write Back
e Cac tín hiệu ngõ vào và ngõ ra:
Bảng 2.14: Bảng các tín hiệu trong RegFile
Tên tín hiệu | /O “bio Y nghia
clk I 1 Tin hiệu xung clock tích cực cạnh lên
rst_n I 1 Tín hiệu reset tích cực mức thấp
TsỈ I 5 Trường giá trị rs] của inst]
rs2 I 5 Trường giá trị rs2 của inst]
rd I S Trường giá tri rd
wb I 32 Dữ liệu cần ghi sau khi tính toán
RegWen I 1 Tín hiệu cho phép ghi (1: write, 0: read)
dataA O 32 —_ | Dữliệu đầuraA
dataB fe) 32 | Dir liệu dau ra B
b) Immediate Generator (imm_gen)
© Khéi chức năng thực hiện mở rộng dấu tuỳ thuộc vào câu lệnh đang
Hinh 2.15: Module imm_gen
¢ Hoat động: Tin hiệu điều khiển imm_sel từ khối Controller quyết định
cách mở rộng dấu tuỳ thuộc vào dạng lệnh (I, S, B, U, J, R)
e Các tín hiệu ngõ vào và ngõ ra:
39
Trang 40Bang 2.15: Bang các tín hiệu trong khối imm_ gen
Tên tín hiệu | /O “bio Y nghia
imm_in I 25 Tin hiệu ngõ vào từ trường giá trị inst]/31:7]
imm_sel I 3 Tín hiệu điều khién thao tác mở rộng dấu
imm_out O 32 Tín hiệu ngõ ra sau khi được mở rộng dâu
c) Branch Comparator (br_comp)
e Khối chức năng thực hiện so sánh dùng cho các lệnh Branch
BrEq Brit BrUn (c) br_comp
sl 12
Hinh 2.16: Module Branch Comparator
e Hoat động:
o So sánh giá trị giữa dataA va dataB, nếu kết quả nhỏ hon thì xuất
giá tri BrLt là 1, nếu lớn hơn là 0, nếu bằng thì xuất giá trị BrEq
về Controller
o Ngõ vào BrUn quyết định phép so sánh là có dau hay không dau
e Các tín hiệu ngõ vào và ngõ ra:
Bang 2.16: Bang các tín hiệu trong khối br_comp
Tên tín hiệu | /O “ep Ý nghĩa
rsl 1 32 Ngõ vào A
rs2 I 32 Ngõ vào B
BrUn I 1 Tin hiệu điều khién phép so sánh có dấu hoặc
không dâu
BrEq O 1 Tín hiệu ngõ ra cho lệnh so sánh bằng
BrLt oO 1 Tin hiệu ngõ ra cho lệnh so sánh nhỏ hon