TÓM TÁT KHÓA LUẬNNộ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ớ đệ
Khối Forwarding 3.2.6 Khối ALU cS22 E222 E1eerrkee 43 3.27 Khối FPU 3.3 Thiết kế Cache . 22::222222v2222211111222221111 2 ii 45 3.3.1 Tổng quan khối Cache -2-22++222+z+2cvvrertrvrrrrrrsee 45 3.3.2 Khối Cache memory -2:©2+++22+ztecrxrrrrrrrrrrrrree 46 3.33 Khoi LRU “Z2 uấ
Như đã đề cập ở khối HazardDectection Khối này có chức năng nhìn trước dữ liệu trong đường ống và lấy giá trị đó để các lệnh đang được thực hiện hoạt động bình thường.
Bảng 3.5 Mô tả tín hiệu khối Forwarding
Tín hiệu VO | So bit Mô ta
ID_RS1 I 5 Thanh ghi nguôn | ở ID
ID _RS2 1 5 Thanh ghi nguôn 2 ở ID
MEM_RD I 5 Thanh ghi dich 6 MEM
WB_RD I 5 Thanh ghi dich 6 WB
MEM_WB._Ctrl I 3 Tin hiéu dién khiển mux cho WB ở tang MEM
MEM_ALU_Out | I 64 Giá trị ngõ ra cua ALU ở tang MEM
WB_RD_DATA | I 64 Giá trị của thanh ghi dich ở tang WB
ID RSI DATA | I 64 Giá trị của thanh ghi 1 nguồn ở tang ID
ID_RS2_DATA | I 64 Giá tri của thanh ghi 2 nguôn ở tang ID
EX RSI I 5 Thanh ghi nguôn | ở EX
EX_RS2 I 5 Thanh ghi nguồn 2 ở EX
MEM_FPU_Out I 64 Giá tri của ngõ ra của FPU ở tầng MEM
EX RSI DATA | I 64 Giá trị của thanh ghi nguôn 1 ở tang EX
EX RS2 DATA | I 64 Giá trị của thanh ghi nguồn 2 ở tầng EX
In_A O 64 Làm giá trị đầu vào cho BranchCompare
In_B O 64 Làm giá trị đầu vào cho BranchCompare
ALU_1 oO 64 Lam gia tri dau vao cho ALU
ALU_2 oO | 64 Lam gia tri dau vao cho ALU
FPU_I O | 32 Làm giá trị đầu vào cho FPU
FPU_2 oO 32 Lam giá trị dau vào cho FPU
FPU_3 oO 32 Lam giá trị dau vào cho FPU
Bang 3.6 Mô tả tín hiệu khối ALU
Tín hiệu VO | So bit Mô tả
Opcode I 7 Truong Opcode o tang EX
Funct3 I 3 Truong Funct3 6 tang EX
Inst30 I 1 Giá trị của Inst[30] ở tang EX
In_A I 64 Giá tri ngõ vào |
In_B I 64 Giá tri ngõ vào 2
Out I 64 Giá trị ngõ ra
Tương tự với khối ALU Khối FPU là khối thực thi chính của các lệnh
Bảng 3.7 Mô tả tín hiệu khối FPU
Tín hiệu V/O | So bit Mô ta clk I 1 Xung clock rst_n I 1 Tin hiệu reset tích cực mức thap valid_in I 1 Ngõ vào hợp lệ hay không
Fl I 32 Giá trị ngõ vao 1 F2 1 32 Giá trị ngõ vào 2
Funct3 1 3 Trường Funct3 ở tầng EX
Funct7 I 7 Truong Funct7 6 tang EX
Opcode I 7 Trường Opcode ở tang EX fmt I 2 Tin hiệu lựa chọn chuyên đôi giữa I và F
FOut I 2ỉ) Giỏ trị ngừ ra valid_out I 1 Ngõ ra hợp lệ hay không
Cache bao gồm 2 thành phan là khối Cache memory và khối Least Recently
LeastRecenthyUsed mason rn vt tRUITO}
CacheMem ck PP) block datai6301 I> out datal639] write [>
Khi nhận được tín hiệu ghi, trước tiên cache sẽ dựa vào trường valid dé xác định set đề ghi dữ liệu trong 4 set, nếu 4 set đã có dữ liệu cache sẽ dùng tín hiệu output từ
LRU đề xác định dữ liệu sẽ bị thay thế nằm trong set nào. Đối với trường hợp đọc cache, tín hiệu hit sẽ bật lên 1 khi dữ liệu đã có trong cache và dữ liệu sẽ được đọc cho vi xử lý, ngược lại, nếu dữ liệu không có trong cache, dữ liệu sẽ được đọc trực tiếp từ bộ nhớ chính đồng thời ghi vào cache(tén thêm 1 chu kì để ghi vào cache).
Bang 3.8 Mô tả tín hiệu khối Cache Tín hiệu VO | So bit Mô ta clk I 1 Xung clock rst_n I 1 Tin hiệu reset tích cực mức thap
PA I 32 Dia chi vat ly in_data I 64 Dữ liệu dau vào của cache write I 1 Tin hiéu ghi out_data O 64 Dữ liệu dau ra cua khôi cache ihit O 1 Tín hiệu hit xác định dữ liệu có tôn tại
Do vi xử lý không có các lệnh liên quan đến byte offset nên cache trong trường hợp này sẽ không có trường offset Dữ liệu của của cache được lưu trữ trong
4 set, mỗi set chứa 32 khối dữ liệu Cùng với đó là các khối tag ứng với mỗi khối dữ liệu dé xác định liệu dữ liệu đó đã có trong cache hay chưa và các bit valid để kiêm tra tính hợp lệ của dữ liệu.
CacheMem clk in_data[63:0] index[4:0] block_data[63:0] rst_n hit[3:0] tag_bit[26:0] way_LRU[1:0] write
Cache có 32 bit địa chỉ được chia thành 2 trường: e5 bit trọng số thấp dùng dé làm index cho các set, mỗi set có 32 khối chứa dữ liệu. © 27 bit còn lại dùng làm tag_bit, mục đích dé so sánh.
Bảng 3.9 Mô tả tín hiệu khối Cache Memory
Tín hiệu VO | Số bit Mô ta clk I 1 Xung clock in_data I 64 Dữ liệu dau vào cua cache memory index I 5 Dia chỉ đọc hoặc lưu giá trị rst_n I 1 Tin hiệu reset tích cực mức thap tag_bit I 27 Bit nhận dang dữ liệu đã có trong cache chưa way_LRU I 2 Tin hiệu xác định khôi đọc hoặc lưu đữ liệu write I 1 Tin hiệu ghi mức cao. block_data O 64 Dữ liệu của 64 bit dau ra hit oO 4 Tin hiệu hit xác định đữ liệu có tôn tại
Khối LRU dùng dé lưu trữ giá trị biểu thị sự xuất hiện gan đây nhất của dữ liệu và đưa ra khối đã lâu chưa được truy cập tới để thay thế trong Cache memory.
Do cache có 4 set và 32 khối dữ liệu cho mỗi set nên để lưu trữ trạng thái của từng khối, LRU sẽ cần một mảng 32x4 bộ đếm 2 bit, biểu thị được 4 trang thái xuất hiện gần đây của dữ liệu theo thứ tự 3>2>1>0.
LeastRecentlyUsed ck | hit[3:0] tst_n | out_LRU[1:0] set_index[4:0] tag_bit[26:0]
Bang 3.10 Mô tả tín hiệu khối LRU Tín hiệu V/O | Sô bit Mô ta clk I 1 Xung clock hit I 4 Tin hiệu hit xác định dữ liệu có ton tại tst_n I 5 Tin hiệu reset tích cực mức thap set_index I 5 Dia chỉ đọc hoặc lưu giá trị tag_bit I 27 Bit nhận dạng dữ liệu đã có trong cache chưa out _LRU O 2 Bit biêu hiện giá tri của khôi nào sẽ bi thay thê
Set có số đếm thấp nhất theo thứ tự từ set0 đến set3 sẽ được chuyền sang Cache memory dé thay thế với index tương ứng.
3.4.1 Tổng quan khối BPU ma D> hs rego]
Hình 3-12 Sơ đồ khối BPU
Chức năng chính của khối BPU là lưu lại lịch sử của các lần rẽ nhánh trước đó và đưa ra dự đoán cho lần tiếp theo dựa các lần lịch sử trước đó.
Bảng 3.11 Mô tả tín hiệu khối BPU Tín hiệu VO | So bit M6 ta rst_n I 1 Tin hiệu reset tích cực mức thap actual I 1 Tin hiệu rẽ nhánh thực của vi xử ly clk I 1 Xung clock en I 1 Bật khi gặp lệnh rẽ nhánh có điêu kiện Stall I 1 Tín hiệu tri hoãn vi xử lý khi dự đoán sai
Khối này lưu các giá trị đếm của các trường hợp khác nhau từ địa chỉ 0-15, khi lịch sử lưu ở thanh ghi BHSR chỉ vào địa chỉ nào thì bộ đếm sẽ dựa vào giá trị đang lưu trong bộ đếm tương ứng dé đưa ra kết quả dự đoán cho lần rẽ nhánh hiện tại. addr[3:0] s0 actual clk prediction
[> prediction en rst_n sat_counter_array
Hình 3-13 Khối sat_counter_array
Bảng 3.12 Mô tả tín hiệu khối sat_conuter_array
Tin hiệu V/O | So bit Mô ta actual I Tin hiệu rẽ nhánh thực của vi xử ly addr I 4 Dia chi đề cập nhật trang thái lich sử clk I 1 Xung clock en ⁄ Bật khi gặp lệnh rẽ nhánh có điêu kiện tst_n i Tin hiệu reset tích cực mức thap prediction O Tín hiệu dữ đoán rẽ nhánh
Chương 4 Mô phỏng và đánh giá thiết kế
4.1 Kết quả mô phỏng e Test case:
Hex 0x00100093 0x00200113 0x00308193 0x00408213 0x00510293 0x00520333 0x405183B3 0x0023F433 0x003264B3 0x00918423 0x00818403 0x02440063 0x00030803 0x0001C883 0x00019903 0x0001D983 0x00520233 0x00052633 0x00C595B3 0x00520733 0x005707B3 0x0040A023 0x0050A223 0x0100056F 0x00719023 0x00B30023 OxFC7368E3 0x003345B3 0x0015D633 OxCCCCCA37 0x40880B37 0x40880000 Ox42CC4BB7 OxE00B81D3
Mô tả lệnh addi x1 x0 1 addi x2 x02 addi x3 x1 3 addi x4x14 addi x5 x25 add x6 x4x5 sub x7 x3 x5 and x8 x7 x2 or x9 x4x3
BLTU x6 x7 24 XOR x11 x6 x3 SRL x12 x11x1 LUI x20 0xCCCCC LUI x22 0x40880
Kết quả (Hex) x1 =0x00000001 X2 =0x00000002 X3 =0x00000004 X4 =0x00000005 x5 =0x00000007 x6 =0x0000000C x7 = OxFFFFFFFD X8 = 0x00000000 x9 =0x00000005 ị x8 =0x00000005 x14 =0x0000000C x15 =0x00000013 x11 =0x00000008 x12 =0x00000004 x20 =0xCCCCC000 X22 = 0x40880000 f2 =0x40880000 x23 =0x42CC4000 f3 =0x42CC4000
0x104183D3 FMUL.S f7 f3 f4 f7 =0x43CC4000 0x18730453 FDIV.S f8 f6 f7 f8 =0x3e83c296 0x580285D3 FSORT.S f11 f5 f9 = 0x40880000 0x284114D3 FMAX f9f4f2 f9 =0x28000008
Thiết kế Block Design trên Vivado với giao thức AXI4
Tổng quan giao thức AXXI4 . -:-©2+22+2222E222E22EE221E2EEecrrkcrrrvee 58 5.2 Thiết kế Block Design trên Vivado ¿-2¿222+22x+c2zxeerrkrsrrxrrrrree 62 5.3 Các IP của Xilinx dùng trong thiết kế Block Design
Giao thức AXI4 (Advanced eXtensible Interface 4) là một giao thức bus cho phép các thiết bị trong một hệ thống tích hợp truyền tải dữ liệu và tín hiệu giữa chúng Giao thức AXI4 được thiết kế bởi công ty ARM và được sử dụng phô biến trong việc thiết kế hệ thống tích hợp trên chip (SoC) Giao thức AXI4 có các tính năng như độ trễ thấp, khả năng truyền tải dữ liệu nhanh, hỗ trợ nhiều giao thức tương thích, hỗ trợ nhiều kênh truyền dữ liệu độc lập và khả năng xử lý lỗi.
Có ba loại giao thức AXI4, trong nội dung khóa luận này, nhóm sử dụng giao thức AXI4 - Lite (viết tắt là AXI4): e AXI - Full: Dành cho yêu cầu ánh xạ bộ nhớ đối với hiệu suất cao e AXIH - Lite: Đối với giao tiếp ánh xạ bộ nhớ thông lượng thấp, đơn giản (ví dụ: đến và di từ các thanh ghi trang thái và điều khiển) © AXI4- Stream: Truyền streaming data với tốc độ cao.
Write data channel write data write data write data ———>
Write response channel write Slave