I: Immidiate instructions Lệnh Đặt giá trị: Đặt giá trị trực tiếp vào một thanh ghi.. Giới thiệuaddi Add immidiate Cộng giá trị nguyên trực tiếp vào thanh ghi slti Set less than immidiat
Trang 1ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ
-o0o -ĐỒ ÁN MÔN HỌC
Kiến trúc RISC V
GVHD: Hoàng Mạnh Hà SVTH: Nguyễn Thành
Hưng MSSV: 1913644
Trang 2I Giới thiệu
• RISC-V là kiến trúc máy tính RISC (Reduced
Instruction Set Computing) được phát triển để có
sự linh hoạt cao và tùy chỉnh để phù hợp với nhiều ứng dụng máy tính khác nhau từ hệ thống lớn đến các thiết bị nhúng.
• Kiến trúc RISC-V được thiết kế để có tính mở
rộng và tùy chỉnh cao nên sử dụng RISC-V giúp tránh phụ thuộc vào các công nghệ độc quyền.
• RISC-V là định nghĩa duy nhất được chấp nhận
rộng rãi giúp đảm bảo tính tương thích giữa các nền tảng phần cứng và phần mềm khác nhau
Trang 3I Giới thiệu
•Trong đề tài risc V được thiết kế với chiều rộng dữ liệu 32-bit.
•Đây là danh sách 7 nhóm lệnh cơ bản trong kiến trúc RISC-V:
1 I: Immidiate instructions (Lệnh Đặt giá trị): Đặt giá trị trực tiếp vào một thanh ghi.
2 R: Register instructions (Lệnh Thanh ghi): Xử lý các phép tính trên các thanh ghi.
3 S: Store instructions (Lệnh Lưu trữ): Lưu trữ dữ liệu từ thanh ghi vào bộ nhớ.
4 B: Branch instructions (Lệnh Nhánh): Lệnh nhảy có điều kiện, như kiểm tra một giá
trị cụ thể rồi nhảy nếu giá trị đó thỏa mãn một điều kiện nào đó.
5 U: Upper immediate instructions (Lệnh đặt giá trị phần trên): Đặt giá trị ngay trong
lệnh cho 20 bit phần trên của một thanh ghi.
6 J: Jump instructions (Lệnh nhảy): Nhảy một khoảng cách cụ thể tới một lệnh khác.
7 L: Load instructions (Lệnh tải dữ liệu): Tải dữ liệu vào các thanh ghi.
Trang 4I Giới thiệu
addi Add immidiate Cộng giá trị nguyên trực tiếp vào thanh ghi
slti Set less than immidiate So sánh nếu giá trị nguyên trực tiếp nhỏ hơn giá trị trong thanh ghi
xori Exclusive or immidiate Thực hiện phép xor với giá trị nguyên trực tiếp
ori Or immidiate Thực hiện phép or với giá trị nguyên trực tiếp
andi And immidiate Thực hiện phép and với giá trị nguyên trực tiếp
slli Shift left logical immidiate Dịch trái giá trị trong thanh ghi bằng số bit nguyên trực tiếp
srli Shift right logical immidiate Dịch phải giá trị trong thanh ghi bằng số bit nguyên trực tiếp (không giữ nguyên bit dấu)
srai Shift right arithmetic immidiate Dịch phải giá trị trong thanh ghi bằng số bit nguyên trực tiếp (giữ nguyên bit dấu)
Trang 5I Giới thiệu
Nhóm lệnh R (Register):
add Add Cộng giá trị hai thanh ghi
sub Subtract Trừ giá trị của 2 thanh ghi
and And And giá trị của 2 thanh ghi
or Or Or giá trị của 2 thanh ghi
xor Exclusive or Xor giá trị của 2 thanh ghi
slt Set less than Đặt giá trị 1 nếu giá trị của thanh ghi thứ nhất < giá trị thanh ghi thứ hai
sll Shift left logical Dịch trái giá trị trong thanh ghi bằng một giá trị nguyên
srl Shift right logical Dịch phải giá trị trong thanh ghi bằng một giá trị nguyên (không giữ nguyên bit dấu)
sra Shift right arithmetic Dịch phải giá trị trong thanh ghi bằng một giá trị nguyên (giữ nguyên bit dấu)
Trang 6I Giới thiệu
Nhóm lệnh S (Store):
sb Store byte Lưu trữ giá trị byte (8-bit) vào địa chỉ bộ nhớ của thanh ghi
sh Store half Lưu trữ giá trị half word (16-bit) vào địa chỉ bộ nhớ của thanh ghi
sw Store word Lưu trữ giá trị word (32-bit) vào địa chỉ bộ nhớ của thanh ghi
Trang 7I Giới thiệu
Nhóm lệnh B (Branch):
beq Branch equal Nhảy tới địa chỉ khi 2 thanh ghi bằng nhau với một giá trị nguyên trực tiếp
bne Branch not equal Nhảy tới địa chỉ khi 2 thanh ghi không bằng nhau với một giá trị nguyên trực tiếp
blt Branch less than Nhảy tới địa chỉ khi giá trị thanh ghi thứ nhất nhỏ hơn giá trị thanh ghi thứ hai
bge Branch greater than or equal Nhảy tới địa chỉ khi giá trị thanh ghi thứ nhất lớn hơn hoặc bằng giá trị thanh ghi thứ hai
Trang 9I Giới thiệu
Nhóm lệnh Load:
lb Load byte Tải giá trị byte (8-bit) vào thanh ghi
lh Load half Tải giá trị half word (16-bit) vào thanh ghi
lw Load word Tải giá trị word (32-bit) vào thanh ghi
lbu Load byte unsigned Tải giá trị byte (8-bit) không dấu vào thanh ghi
lhu Load half unsigned Tải giá trị half word (16-bit) không dấu vào thanh ghi
Trang 10Dữ liệu trong cả bộ nhớ dữ liệu (DMEM) và bộ nhớ chương trình (IMEM) đều có độ dài 32bit và được sắp xếp theo kiểu little edian
I Giới thiệu
Trang 11II Cấu trúc
Một CPU RISC-V đơn chu kỳ cần có các khối cơ bản sau:
• Khối PC và giải mã lệnh (Program counter & Instruction): chọn PC và giải mã lệnh
• Khối các thanh ghi (Resister): Chứa các thanh ghi chức năng
• Khối ALU (Arithmetic and Logic Unit): Xử lý các phép tính số học và logic trong CPU.
• Khối bộ nhớ và ngoại vi (Memory Unit & I/O Unit): Để cho phép CPU truy cập vào bộ nhớ ngoài , kết
nối đến các tài nguyên ngoại vi để tương tác với bên ngoài
• Khối bộ điều khiển (Control Unit): Thiết kế khối bộ điều khiển, có nhiệm vụ điều khiển các khối xử lý
khác và điều khiển luồng dữ liệu trong CPU.
Trang 12II Cấu trúc
Khối PC và khối Instruction
• Lựa chọn PC kế tiếp (PC + 4) hay PC rẽ nhánh
• Từ PC đã chọn lấy mã lệnh và giải mã
Trang 13II Cấu trúc
Khối thanh ghi
-Khối thanh ghi của kiến trúc RISC-V bao gồm 32 thanh ghi 32-bit, được sử dụng để lưu trữ các giá trị trung gian trong quá trình thực hiện các lệnh máy tính.
-Khi một lệnh được tải từ bộ nhớ lệnh vào CPU, nó được giải mã và các thanh ghi tương ứng cần được cập nhật để thực hiện lệnh
Trang 14II Cấu trúc
Khối ALU
Khối này thực hiện các phép toán số học và logic.
Khối ALU của RISC-V có thể thực hiện các phép toán sau:
•Phép cộng và phép trừ
•Phép nhân và phép chia lấy phần nguyên
•Các phép toán logic AND, OR, XOR
•Các phép toán so sánh như so sánh bằng và so sánh nhỏ hơn
Ngoài ra, khối ALU của RISC-V cũng có khả năng thực hiện các phép toán dịch chuyển (shift) trái và phải trên
dữ liệu, với số bit dịch chuyển được chỉ định trong lệnh.
Trang 15II Cấu trúc
Khối bộ nhớ và ngoại vi (LSU)
Lưu trữ dữ liệu cần thiết của chương
trình và được thêm vào các vùng địa chỉ
có thể giao tiếp với ngoại vi như LCD,
led 7 đoạn, switch
Trang 16II Cấu trúc
Khối điều khiển
alu_op: chọn lựa lệnh thực hiện cho ALU mem_wren : cho phép ghi data khối data memory và
ngoại vi
wb_sel: chọn lựa dữ liệu ghi vào khối register file
instr: mã lệnh đưa vào
br_sel: lựa chọn PC ( công 4 hoặc nhảy hoặc rẽ nhánh)
rd_wren: cho phép ghi data đích về khối thanh ghi.
br_unsigned: chọn so sánh có hoặc không dấu
op_a_sel_o: chọn toán hạng nguồn rs1.
op_b_sel_o: chọn toán hạng nguồn rs2.
Trang 17II Cấu trúc
Cấu trúc 1 CPU cơ bản
Trang 18III Giải thuật tối ưu
Pipeline
Trang 19III Giải thuật tối ưu
Pipeline
Trang 20III Giải thuật tối ưu
Pipeline
Trang 21III Giải thuật tối ưu
Trang 22III Giải thuật tối ưu
Trang 23Data Hazard
Trang 24III Giải thuật tối ưu
Initial:
s0 =5 t0=6 t1=3
Expect: t2=s0-t0=9-6=3 Real: t2=s0- t0 =5-6=-1
=> Data error
Data Hazard
Trang 25III Giải thuật tối ưu
Stalling
Trang 26III Giải thuật tối ưu
Stalling
Trang 27III Giải thuật tối ưu
Forwarding
Trang 28III Giải thuật tối ưu
Forwarding
Trang 29III Giải thuật tối ưu
Forwarding
Trang 30III Giải thuật tối ưu
Forwarding path
Trang 31Control hazard
III Giải thuật tối ưu
Trang 32Branch prediction
III Giải thuật tối ưu
Trang 33Static prediction
III Giải thuật tối ưu
Predict: branch (inner) will not be taken.
1-bit prediction
Trang 34III Giải thuật tối ưu
Static prediction
Trang 35III Giải thuật tối ưu
Static prediction
Trang 36III Giải thuật tối ưu
Static prediction
Trang 37III Giải thuật tối ưu
Static prediction
Trang 38III Giải thuật tối ưu
Static prediction
Trang 39III Giải thuật tối ưu
Static prediction
Trang 40Overall probability a branch is taken is ~60-70%
III Giải thuật tối ưu
Static prediction
Trang 41Dybamic prediction
III Giải thuật tối ưu
Randomly branch prediction will not
be executive
Trang 42Dybamic prediction
III Giải thuật tối ưu
Trang 43Dybamic prediction
III Giải thuật tối ưu
Trang 44Dybamic prediction
III Giải thuật tối ưu
Trang 45Dybamic prediction
III Giải thuật tối ưu
Trang 46Dybamic prediction
III Giải thuật tối ưu
Trang 47Dybamic prediction
III Giải thuật tối ưu
Trang 48Dybamic prediction
III Giải thuật tối ưu
Trang 49Dybamic prediction
III Giải thuật tối ưu
Trang 50Dybamic prediction
III Giải thuật tối ưu
2-bit prediction
Trang 51Dybamic prediction
III Giải thuật tối ưu
2-bit prediction
Trang 52IV Kết quả so sánh
Trang 53Branch prediction
IV Kết quả so sánh
Trang 54IV Kết quả so sánh
Trang 55The End