Nghiên cứu Khoa học

Thiết kế module thực thi (excution) của bộ vi xử lý RISC-V trên FPGA

  • 16/05/2025
  • Nghiên cứu Khoa học

Mô-đun thực thi là mô-đun thực hiện tất cả các phép tính và so sánh mà bộ xử lý có thể thực hiện. Hình 1 sẽ trình bày thiết kế của module thực thi là gì.

 

 undefined

  Hình 1. Thế kế module thực thi (EX)

Giải thích các chân của thiết kế EX

­       f3: Là tín hiệu này là mã chức năng được tạo ra bởi phần giải mã lệnh.

­       f7: Là mã phụ trợ được tạo ra bởi phần giải mã lệnh.

­       opcode: Là tín hiệu này là mã loại lệnh được tạo ra bởi phần giải mã lệnh.

­       pc_plus_4: Là tín hiệu này là lệnh tiếp theo trong bộ nhớ tức là địa chỉ lệnh hiện tại được lưu trữ trong bộ đếm chương trình + 4.

­       rs2_addr: Là tín hiệu này được sử dụng trong các lệnh dịch chuyển để xác định lượng dữ liệu cần dịch chuyển.

­       pc: Là địa chỉ lệnh hiện tại được lưu trữ trong bộ đếm chương trình.

­       rs1data:Làtín hiệu này là dữ liệu chứa trong thanh ghi nguồn đầu tiên được lệnh hiện tại chọn.

­       immediate: Là tín hiệu này là giá trị tức thời được tạo ra bởi mô-đun giải mã lệnh.

­       rs2_data: Là tín hiệu này là dữ liệu chứa trong thanh ghi nguồn thứ hai được chọn bởi lệnh hiện tại.

­       branch_out:Là tín hiệu này là địa chỉ lệnh tiếp theo. Ở chu kỳ xung nhịp tiếp theo, bộ đếm chương trình sẽ lấy giá trị này.

­       alu_out: là tín hiệu này là kết quả của các phép tính được thực hiện bởi mô-đun Thực hiện

Module thực thi được thiết kế để xử lý hai phần chức năng chính mà bộ xử lý yêu cầu. Đó là tính toán và điều chỉnh luồng điều khiển dựa vào bộ ALU và Branch Detection Unit. Để ALU và Branch Detection Unit biết cần thực hiện phép tính và so sánh nào, module Function Decode được thiết kế để diễn giải mã lệnh, mã f3 và f7 do khối giải mã tạo ra, 3 tín hiệu này xác định loại mã lệnh nào và chức năng cụ thể nào trong loại lệnh đó (f3 và f7) đang được thực thi. Mô-đun Function Decode tạo ra 3 tín hiệu dựa trên các giá trị của mã lệnh. Đó là:

­       branch_op: Tín hiệu này chỉ đạo đơn vị phát hiện nhánh thực hiện so sánh để xác định quyết định nào nên được đưa ra, thay đổi luồng chương trình hoặc không làm gì cả.

­       alu_op: Tín hiệu này chỉ thị cho ALU thực hiện một số phép tính nhất định, ví dụ như phép cộng, phép trừ, AND,…

­       mux_sel:Tín hiệu này hướng dẫn bộ ghép kênh đầu vào của mô-đun Thực thi chọn dữ liệu thích hợp để ALU thực hiện các phép tính.

Giá trị tín hiệu điều khiển Branch Detection Unit

Đầu vào điều

khiển Branch

Chức năng

000

BEQ

001

BNE

010

BLT

011

BGE

100

BLTU

101

BGEU

110

JAL and JALR       

111

NULL

Bảng 2: Tín hiệu điều khiển Branch Detection Unit

 

Branch Detection Unit nhận các tín hiệu “branch_op”, A và B. Tùy thuộc vào giá trị của “branch_op”, Branch Detection Unit sẽ thực hiện các loại so sánh khác nhau trên A và B.

Giá trị tín hiệu điều khiển ALU

Đào vào điều khiển ALU

Chức năng

0000

ADD

0001

SUB

0010

AND

0011

OR

0100

XOR

0101

Dịch sang trái theo giá trị tức thời

0110

Dịch sang phải theo giá trị tức thời

0111

Dịch phép tính số học sang phải theo giá trị tức thời

1000

Dịchlogic Asang trái theo số lượng trong B

1001

Dịchlogic Asang phải theo số lượng trong B

1010

Dịch số học Asang phảibằng số lượng trong B

1011

Set less than

Bảng 3: Tín hiệu điều khiển ALU

 ALU nhận các tín hiệu “alu_op”, “compare_cond”, “rs2_data”, A và B. Tùy thuộc vào giá trị của “alu_op”, ALU sẽ thực hiện các phép tính khác nhau trên A và B. ALU có thể thực hiện 12 phép tính như trên bảng 3.

Các tin khác