Thực hiện phép toán trên số dương, do đó, thương và các toán hạng của phép chia có giá trị là 32 bit, bỏ qua các số có dấu.. Chương này chỉ xem xét 8 lệnh trong 3 nhóm chính của tập lệnh
Trang 1KIẾN TRÚC
MÁY TÍNH
Ban Học tập Công nghệ
Thông tin
Trang 202
Trang 3PHÉP CHIA
Phép chia 2 số ở dạng nhị phân sẽ được thực
thi như thế nào trong máy tinh?
Trang 4➢Khả năng xử lý: đa dụng cho các ứng dụng văn phòng, học tập, giải trí.
Ví dụ: Máy tnh để bàn, Máy tnh xách tayEW
Trang 5➢ Khả năng xử lý: đa dụng cho các ứng dụng văn phòng, học tập, giải trí.
Ví dụ: Máy tnh để bàn, Máy tnh xách tayEW
➢
1 Phép chia với 3 thanh ghi
2 Phép chia với 2 thanh ghi( đọc thêm)
PHÉP CHIA
Trang 6PHÉP CHIA VỚI 3
THANH GHI
Trang 7Chú ý: Hai số chia và bị chia là số dương, do đó kết quả thương và số dư là không âm Thực hiện phép toán trên số dương, do đó, thương và các toán hạng của phép chia có giá trị là 32 bit, bỏ qua các số có dấu.
Sơ đồ các khối hiện thực phép chia ở mức phần cứng
SỐ CHIA
SỐ BỊ CHIA
Trang 8Lưu đồ giải thuật của phép chia
Trang 9Step Action Quotient Divisor Remainder
Trang 10BỘ XỬ LÝ
PROCESSOR
Xây dựng datapath đơn giảnHiện thực datapath đơn chu kỳ
Trang 11Chương này chỉ xem xét 8 lệnh trong 3 nhóm chính của tập lệnh MIPS:
Nhóm lệnh tham khảo bộ nhớ (lw và sw)
Nhóm lệnh liên quan đến logic và số học (add, sub, AND, OR, và slt)
Nhóm lệnh nhảy (Lệnh nhảy với điều kiện bằng beq)
Trang 12XÂY DỰNG DATAPATH ĐƠN
GIẢN
Quy trinh thực thi lệnh của MIPS (5 công
đoạn)
Trang 14Quy trình thực thi lệnh của MIPS (5 công đoạn)
add $3, $1 , $2 lw $3, 20 ( $1 ) beq $1 , $2 , label
Fetch lệnh lưu trong thanh ghi Đọc lệnh (địa chỉ của
PC)
Đọc lệnh (địa chỉ của lệnh lưu trong thanh ghi PC) Đọc lệnh (địa chỉ của lệnh lưu trong thanh ghi PC)
Decode &
Operand
Fetch
o Đọc thanh ghi $1, xem
như toán hạng opr1
o Đọc thanh ghi $2, xem
như toán hạng opr2
o Đọc thanh ghi $1, xem
như toán hạng opr1
o Sử dụng 20 như toán
hạng opr2
o Đọc thanh ghi $1, xem
như toán hạng opr1
o Đọc thanh ghi $2, xem
như toán hạng opr2
ALU Result = opr1 + opr2 MemAddr = opr1 + opr2 Taken = (opr1 == opr2 )? Target = PC + Label*
Memory
Access Sử dụng MemAddr để đọc dữ liệu từ bộ nhớ
Result
Write Result được lưu trữ vào $3
Dữ liệu của từ nhớ có địa chỉ MemAddr được được
lưu trữ vào $3
if (Taken)
PC = Target
Trang 15Giai đoạn tìm nạp lệnh (Instruction Fetch)
thanh ghi PC lên 4 đơn
vị để lấy địa chỉ của lệnh tiếp theo
Trang 16Giai đoạn giải mã (Decode)
Giai đoạn decode:
Lấy nội dung dữ liệu trong
các trường của lệnh:
1 Đọc opcode để xác
định kiểu lệnh và chiều dài của từng trường trong mã máy
Read data 1
Read data 2
Data
Register Number
Register File
5 5 5
Trang 17Read data 1
Read data 2
RegWrite
Register File
5 5 5
Nội dung của thanh ghi rs
Nội dung của thanh ghi rt
Kết quả/giá trị cần lưu vào thanh ghi (sẽ được sinh ra ở giai đoạn sau)
Trang 18Read data 1
Read data 2
RegWrite
Register File
5 5 5
Nội dung của
Trang 19Read data 1
Read data 2
5 5 5
RegDst
Inst [15:0]
M U X
lw rt, immediate(rs)
Trang 20Read data 1
Read data 2
5 5 5
Inst [25:21]
Inst [20:1 6]
Inst [15:11]
M U X
RegDst
Inst [15:0]
M U X
Trang 21Công đoạn ALU
Công đoạn ALU:
Số học (ví dụ: add, sub), Logic (ví dụ: and, or): ALU tnh ra
beq): ALU thực hiện so sánh
các giá trị trên thanh ghi và tnh toán địa chỉ đích sẽ nhảy tới
ALU result
Trang 22Công đoạn ALU: các lệnh non-branch
Read register 1 Read register 2 Write register Write data
Read data 1
Read data 2
Register File
5 5 5
Inst [25:21]
Inst [20:1 6]
Inst [15:11]
M U X
RegDst
Inst [15:0]
M U X
ALUSrc RegWrite
Sign Extend
ALU result
Trang 23Công đoạn ALU: các lệnh branch
Trang 24Giai đoạn truy xuất vùng nhớ (Memory stage)
Giai đoạn truy xuất vùng nhớ:
Chỉ có lệnh Load và Store cần thực hiện các thao tác trong giai
đoạn này:
Sử dụng địa chỉ vùng nhớ được tính toán ở giai đoạn ALU
Đọc dữ liệu ra hoặc ghi dữ liệu vào vùng nhớ dữ liệu
Tất cả các lệnh khác sẽ rảnh trong giai đoạn này
Addres s
Read Data Write
Data
MemRea d
MemWrite
Trang 25Inst [15:0]
M U X
ALUSrc
RR1 RR2 WR
RegWrite
Sign Extend
ALU result
MemRead
MemWrite
Data Memory
Read Data
lw rt ,imediate( rs )
Trang 26Inst [15:0]
M U X
RR1 RR2 WR
RegWrite
Sign Extend
ALU result
MemRead
MemWrite
Data Memory
Read Data
sw rt ,imediate( rs )
Trang 27Inst [25:21]
Inst [20:1 6]
Inst [15:11]
M U X
RegDst
Inst [15:0]
M U X
RR1 RR2 WR
RegWrite
Sign Extend
ALU result
ALU
ALUcontrol
4
Data Memory
Address
Read Data Write
MemToReg
MemRead
Trang 28Giai đoạn lưu trữ kết quả (Result Write)
Công đoạn Result Write:
Những lệnh ghi kết quả của các
phép toán vào thanh ghi:
Ví dụ: số học, logic, shifts, load, set-less-than
Cần chỉ số thanh ghi đích và kết quả tính toán
Những lệnh không ghi kết quả
như: store, branch, jump:
Không có ghi kết quả
Những lệnh này sẽ rảnh trong giai đoạn này
Read data 1
Read data 2
Registers
5 5 5
Write data
Trang 29Inst [25:21]
Inst [20:1 6]
Inst [15:11]
M U X
Inst [15:0]
M U X
RR1 RR2 WR
RegWrite
Sign Extend
ALU result
ALU
ALUcontrol
4
Data Memory
Address
Read Data Write
MemRead
Trang 30HIỆN THỰC DATAPATH ĐƠN
CHU KỲ
Xây dựng Control unit
Trang 32Các vấn đề trong thực thi câu
lệnh có dụng pipelineXung đột khi áp dụng pipeline
Trang 33Các vấn đề trong việc
thực thi câu lệnh áp
dụng Pipeline
Trang 35Công thức tính thời gian đối với
các bài tập về Pipeline
Có Pipeline Không Pipeline, đơn chu kỳ Không Pipeline, đa chu kỳ
Chu kỳ xung
clock (T) Bằng với công đoạn dài nhất Tổng các công đoạn Bằng với công đoạn dài nhất
Thời gian thực thi
Thời gian thực thi
Tổng (% lệnh * số công đoạn)*n*T
Lưu ý: Số chu kỳ trong đoạn lệnh sử dụng Pipeline: (5 + n – 1)
Trang 36Giải quyết xung
đột
Chủ yếu là xung đột dữ liệu
Trang 37Cách giải quyết xung đột
Cách giải quyết xung đột khi có xung đột: câu lệnh sau
sử dụng thanh ghi mà thanh ghi đó là kết quả của câu
+ ALU-ALU: thêm 2 lệnh nop ở giữa 2 câu lệnh.
+ MEM-ALU: thêm 1 lệnh nop ở giữa 2 câu lệnh.
- Câu lệnh trước thuộc các lệnh còn lại thì không cần thêm lệnh nop.
LƯU Ý: Lệnh sw dùng để lưu giá trị của thanh ghi vào địa chỉ mảng, không làm thay đổi giá trị của thanh ghi nên không cần phải thêm lệnh nop sau lệnh sw
Trang 39Bit.ly/KTMT_CK1_BHTCNTT