Câu hỏi
• Câu 1: Hãy nêu chức năng của tập lệnh MIPS??
• Câu 2: Trong tập lệnh MIPS dùng thanh ghi gì để chứa
kết quả của phép nhân? Và vì sao?
• Câu 3: Trong MIPS các lệnh số thực được chia làm mấy
nhóm và đó là những nhóm nào?
Chương 3:
BỘ TÍNH TOÁN SỐ HỌC
3.1 GIỚI THIỆU
• MIPS: Microprocessor without Interlocked Pipeline
Stages
• Là một tập lệnh thườngTập
được
sử
dụng
rộng
rãi
trong
các
lệnh
hệ thống nhúng và là nền tảng cho nhiều kiến trúc tập lệnh
MIPS
là
gì?
thế hệ mới
• Các bộ xử lí sẽ chỉ xử lí được tập các lệnh đã được định
sẵng trong bộ xử lí đó. Vì thế các hệ thống nhúng và một
số loại siêu máy tính thuộc về kiến trúc tập lệnh MIPS thì
chỉ có thể thực thi được các chương trình viết bằng tập
lệnh MIPS.
3.1 GIỚI THIỆU
• Các lệnh nhân chia trong tập lệnh MIPS
• Kiến trúc phần cứng cho việc tính toán phép nhân và chia
• Biểu diễn số thực trong máy tính
• Các lệnh xử lý số thực trong tập lệnh MIPS
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
Biểu diễn giá trị từ −2𝑛−1 đến 2𝑛−1 − 1
32
Số dương: 0
Số âm: 1
1
n – 1 bit thấp
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
• Quy tắc kiểm tra bit dấu:
Cộng hai số dương nhưng kết quả là số âm, hoặc ngược
lại
Trừ một số âm ra khỏi một số dương nhưng kết quả là
một số âm, hoặc ngược lại
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
• MIPS kiểm tra tràn và thực hiện “xử lý ngoại lệ” hay
“ngắt quãng” để xử lý việc tràn
• MIPS cất giữ địa chỉ của lệnh gây ra tràn vào thanh ghi
đặc biệt EPC (exception program counter) để thực hiện xử
lý ngoại lệ
3.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
Các dạng lệnh
số học
Nhóm lệnh số học
không dấu (addu,
subu, addiu)
C hoặc Java
Nhóm lệnh số học
có dấu (add, sub,
addi)
Fortran
3.3 PHÉP NHÂN
Ví dụ:
Tính phép nhân sau:
Phép nhân :
0x0=0
0x1=0
1x0=0
1x1=1
Phép cộng :
0+0=0
0+1=1
1+0=1
1 + 1 = 0 (nhớ 1)
1000
x 1001
1000
0000
0000
1000
1001000
Số bị nhân ( Multippli – cand )
Số nhân ( Multippli )
Tích ( Product )
3.3.1 BỘ NHÂN TUẦN TỰ
Thiết kế bộ nhân tuần tự là quá trình “ bắt chước “ giải thuật nhân bằng giấy và bút.
Các khối màu trắng là thanh ghi và các khối màu xám là các khối xử lý.
Dịch trái
Số bị nhân
(64 bit)
ALU
64bit
Tích
(64 bit)
Số nhân
(32 bit)
Ghi
Bộ
điều khiển
Kiến thức bộ nhân tuần tự 32 bit
Dịch phải
Bắt đầu
m0 = 1
Hoạt động của
bộ nhân tuần tự
1 . m0
m0 = 0
1a. Cộng dồn thanh
ghi số bị nhân vào
thanh ghi tích
2. Dịch trái 1 bit thanh ghi số bị nhân
Dịch phải 1 bit thanh ghi số nhân
32 lần ?
Sai
Đúng
Kết thúc
Dịch trái
Số bị nhân
(32 bit)
ALU
64bit
Ghi
Tích
(64 bit)
Dịch phải
Số nhân
Bộ
điều khiển
Kiến thức bộ nhân tuần tự 32 bit tối ưu
Bắt đầu
m0 = 1
Hoạt
động
của bộ
nhân
tuần tự
1 . m0
m0 = 0
1a. Cộng dồn thanh ghi
số bị nhân vào 32 bit cao
của thanh ghi tích
2. Dịch phải 1 bit thanh ghi tích
32 lần ?
Sai
Đúng
Kết thúc
Lệnh
nhân
trong
MIPS
Lệnh
Ví dụ
mult
Mult Şs1, Şs2
Multu
Hoạt động
Nhân 2 số nguyên có dấu trong thanh ghi Şs1 và
Şs2, lưu kết quả vào thanh ghi Hi và Lo
Multu Şs1, Şs2 Nhân 2 số nguyên không dấu trong thanh ghi
Şs1 và Şs2, lưu kết quả vào thanh ghi Hi và Lo
Mul
Mul Şs0, Şs1 ,
Şs2
mfhi
Mfhi Şs0
mflo
Mflo Şs0
Nhân 2 số nguyên có dấu trong thanh ghi Şs1 và
Şs2, lưu 32 bit thấp của kết quả vào thanh ghi
Şs0, thanh ghi Hi và Lo không xác định giá trị
Sao chép giá trị trong thanh ghi Hi và thanh ghi
Şs0
Sao chép giá trị trong thanh ghi Lo và thanh ghi
Şs0
Các lệnh hổ trợ phép nhân trong MIPS
Opcode và
funct của
các lệnh
chia trong
MIPS
Lệnh
Opcode
Funct
Mult
0x00 (0)
0x18 (24)
Multu
0x00 (0)
0x19 (25)
Mul
0x1C (28)
0x02 (2)
Mfli
0x00 (0)
0x10 (16)
mflo
0x00 (0)
0x12 (18)
3.4 PHÉP CHIA
Ví dụ:
Tính phép chia sau:
Số bị chia
1 0 0 1 0 1 01 1 0 0 010
- 1000 0
1 0 0 110
10
101
1010
Số dư - 1 0 0 0
1 010
Số chia
Thương
3.4.1 BỘ CHIA TUẦN TỰ
Thiết kế bộ nhân tuần tự là quá trình “ bắt chước “ giải thuật nhân bằng giấy và bút.
Các khối màu trắng là thanh ghi và các khối màu xám là các khối xử lý.
Dịch phải
Số bị nhân
(64 bit)
ALU
64bit
Số dư
(64 bit)
Thương
(32 bit)
Ghi
Bộ
điều khiển
Kiến thức bộ chia tuần tự 32 bit
Dịch trái
Bắt đầu
Hoạt động của
bộ chia tuần tự
Số dư >= 0
1. Trừ thanh ghi số dư với thanh ghi số
chia và lưu vào thanh ghi số dư
3. Dịch trái thanh ghi
thương và chỉnh bit
thấp nhất thành 1
4. Cộng thanh ghi số
dư với tha số chia và
lưu kết quả vào số
dư & Dịch trái thanh
ghi thương 1 bit
2 . kiểm
tra số dư
5. Dịch phải 1 bit thanh ghi số chia
33 lần ?
Đúng
Kết thúc
Số dư < 0
Sai
Số bị nhân
(32 bit)
ALU
32bit
Số dư
Số bị chia
Dịch trái
Số dư
(64 bit)
Thương
Bộ
điều khiển
Kiến thức bộ chia tuần tự 32 bit tối ưu
Bắt đầu
Hoạt
động
của bộ
nhân
tuần tự
Số dư >= 0
1. Dịch trái thanh ghi số dư. Trừ 32bit cao
thanh ghi số dư với thanh ghi số chia và lưu
Số dư < 0
vào 32bit cao thanh ghi số dư
3. Chỉnh bit thấp
nhất thành 1
2 . kiểm
tra số dư
32 lần ?
Đúng
Kết thúc
4. Khôi phục 32 bit
cao thanh ghi số dư
Sai