Kiến trúc máy tính là bộ môn trong nhiều ngành về phần cứng, slide bài giảng của Gv Nguyễn Thanh Đăng hy vọng sẽ giúp bạn đọc hiểu rõ về môn Học kiến trúc máy tính, cũng như giúp các bạn sinh viên có tài liệu tham khảo từ đại học Công nghiệp thành phố Hồ Chí Minh
Trang 1Câu hỏi
kết quả của phép nhân? Và vì sao?
nhóm và đó là những nhóm nào?
Trang 2Chương 3 :
BỘ TÍNH TOÁN SỐ HỌC
Trang 3• MIPS: Microprocessor without Interlocked Pipeline
Stages
• Là một tập lệnh thường được sử dụng rộng rãi trong các
hệ thống nhúng và là nền tảng cho nhiều kiến trúc tập lệnh thế hệ mới
Trang 4• 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.1 GIỚI THIỆU
Trang 53.2 NHẮC LẠI PHÉP CỘNG VÀ TRỪ NHỊ PHÂN
Trang 71 32
Số dương: 0
Số âm: 1
Biểu diễn giá trị từ −2𝑛−1 đến 2𝑛−1 − 1
n – 1 bit thấp
Trang 8• 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
Trang 9• 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
Trang 10Các dạng lệnh
số học
Nhóm lệnh số học không dấu (addu, subu, addiu)
Trang 113.3 PHÉP NHÂN
Trang 133.3.1 BỘ NHÂN TUẦN TỰ
Số bị nhân (64 bit)
Số nhân (32 bit)
Bộ điều khiển
Tích (64 bit)
ALU 64bit
Dịch phải Ghi
Trang 14Bắt đầu
1 m0
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
Trang 15Số bị nhân (32 bit)
Bộ điều khiển
Tích (64 bit)
ALU 64bit
Dịch phải Ghi
Dịch trái
Kiến thức bộ nhân tuần tự 32 bit tối ưu
Số nhân
Trang 16Bắt đầu
1 m0
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
Trang 17Lệnh nhân trong MIPS
Trang 18Lệnh Ví dụ Hoạt động
mult Mult Şs1, Şs2 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 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
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ị mfhi Mfhi Şs0 Sao chép giá trị trong thanh ghi Hi và thanh ghi
Şs0 mflo Mflo Ş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
Trang 19Lệ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)
Trang 203.4 PHÉP CHIA
Trang 211 0 0 0
1 0 0 1
10 10
Số bị chia
Số dư
Số chia
Thương
Trang 223.4.1 BỘ CHIA TUẦN TỰ
Số bị nhân (64 bit)
Thương (32 bit)
Bộ điều khiển
Số dư (64 bit)
ALU 64bit
Dịch trái Ghi
Dịch phải
Kiến thức bộ chia tuần tự 32 bit 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ý.
Trang 23Bắt đầu
2 kiểm tra số dư
3 Dịch trái thanh ghi thương và chỉnh bit thấp nhất thành 1
1 Trừ thanh ghi số dư với thanh ghi số chia và lưu vào thanh ghi số dư
Trang 24Số bị nhân (32 bit)
Bộ điều khiển
Số dư (64 bit)
ALU 32bit
Trang 253 Chỉnh bit thấp nhất thành 1
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
vào 32bit cao thanh ghi số dư
Số dư >= 0 Số dư < 0
Trang 26Lệnh chia trong MIPS
Trang 27• Trong thế giới thực, ngoài các số nguyên có dấu và không dấu,các
số thực có mặt ở rất nhiều phép tính khác nhau.Tuy nhiên,trong máy tính chỉ có thể biểu diễn được các ký số nhị phân.Do đó, biểu diễn số thực nhị phân theo dạng chuẩn tắc là không thể hiện thực được.Trong máy tính, các số thực có thể biểu diễn theo dạng số thực dấu chấm động (floating point)
Chính xác đơn : 1 8 23
Chính xác kép: 1 11 52
Sơ đồ định dạng số thực dấu chấm động theo chuẩn IEEE 754, mô
tả cách biểu diễn số thực dấu chấm động theo định dạng IEEE 754
3.5 SỐ THỰC DẤU CHẤM ĐỘNG
S Phần mũ Phần phân số
Trang 283.5.1 BIỂU DIỄN SỐ THỰC DẤU CHẤM ĐỘNG
• Số thực dấu chấm động là cách biểu diễn các số thực
trong máy tính đã được chuẩn hóa bởi tổ chức IEEE,vào năm 1985 được gọi là chuẩn IEEE 754
• Chuẩn IEEE 754 gồm nhiều dạng định dạng số thực với kích thước khác nhau như 16bit,32bit,64bit
Trang 29• Chuyển từ định dạng IEEE 754 sang hệ số thập phân với công thức:
Giá trị hệ thập phân =(-1)^S x (1+ phân số) x 2^(số mũ-”bias”)
• Có 2 trường hợp đặc biệt được sử dụng để biểu diễn các giá trị đặc biệt là :
_ Trường hợp phần mũ toàn các bit 0
_ Trường hợp phần mũ toàn các bit 1
3.5.1 BIỂU DIỄN SỐ THỰC DẤU CHẤM ĐỘNG
Trang 30• Trước khi hiện thực bộ cộng hai số thực dấu chấm động biểu diễn theo dạng chuẩn IEEE 754 cần nhắc lại phép
cộng hai số thực biểu diễn theo dạng chuẩn ký hiệu khoa học đã được giới thiếu trong chương trình phổ thông
• Để thực hiện phép cộng hai số thực dấu chấm động hệ nhị phân biểu diễn theo ký hiệu khoa học hoặc theo dạng
chuẩn IEEE 754 thì các bước tính toán cũng tương tự như các bước thực hiện phép cộng hai số thực dấu chấm động
hệ thập phân
3.5.2 PHÉP CỘNG SỐ THỰC DẤU CHẤM CỘNG:
Trang 31• Các máy tính điện tử thông thường sẽ hiện thực những
khối xử lý số thực dấu chấm động chuyên biệt để tăng tốc
độ xử lý
• Nói một cách khác, phần định trị cho số thực dấu chấm động theo chuẩn IEEE754 dạng chính xác đơn sẽ có kích thước 24bit và chính xác 53bit
3.5.2 PHÉP CỘNG SỐ THỰC DẤU CHẤM CỘNG:
Trang 32• Sau khi điều chỉnh số hạng nhỏ hơn để có được giá trị
phần mũ của hai số hạng bằng nhau thì sẽ tiến hành cộng hai phần định trị của hai số hạng bằng khối “ALU lớn”
• Khi thực hiện phép toán ở hệ nhị phân cần lưu ý kiểm tra tràn vì tùy theo độ chính xác mà giá trị phần mũ sẽ có giới hạn xác định
3.5.2 PHÉP CỘNG SỐ THỰC DẤU CHẤM CỘNG:
Trang 33• Sau khi hai số hạng đã có giá trị phần mũ giống nhau thì bước tiếp theo là thực hiện cộng phần định trị của hai số hạng với nhau để hình thành phần định trị cho kết quả của phép cộng.
• Kết quả giá trị chưa được ở dạng chuẩn ký hiệu khoa học
Do đó cần phải thực hiện chuẩn hóa kết quả phép cộng về dạng chuẩn ký hiệu khoa học
3.5.2 PHÉP CỘNG SỐ THỰC DẤU CHẤM CỘNG:
Trang 34Xử lý ngoại
lệ
4 Làm tròn phần định trị để có số bit biểu diễn thích hợp với độ chính xác
Vẫn còn chuẩn
5 Xét dấu thừa số để được
Trang 35• Để thực hiện phép nhân hai số thực dấu chấm động theo chuẩn IEEE 754, các máy tính cũng có những khối phần cứng riêng biệt để tăng tốc độ tính toán
3.5.3 PHÉP NHÂN SỐ THỰC DẤU CHẤM ĐỘNG
Trang 36• Các lệnh số thực trong MIPS được chia thành ba nhóm lệnh khác nhau là:
- Nhóm lệnh số học
- Nhóm lệnh chuyển dữ liệu
- Nhóm lệnh so sánh và rẽ nhánh
3.5.4 CÁC LỆNH SỐ THỰC TRONG MIPS
Trang 37• Được độ chính xác kép
• Hỗ trợ số thực dấu chấm động thuộc định dạng lệnh R Định dạng R cho các lệnh số thực có các trường và kích thước các trường giống với định dạng R cho các lệnh số nguyên
1 Nhóm lệnh số học
Trang 382.Nhóm lệnh chuyển dữ liệu
Chính xác đơn
Có 2 dạng
≈ 2 độ
chính xác
Chính xác kép
Mỗi lần di chuyển giữa bộ nhớ
và bộ xử lí,dữ liệu được di chuyển có kích thước 32bit hoặc 1 từ nhớ
Mỗi lần di chuyển giữa bộ nhớ và
bộ xử lí,dữ liệu được di chuyển có kích thước 64 bit hoặc 2 từ nhớ
Trang 39• Các số lệnh so sánh số thực sẽ gán kết quả so sánh vào
một biến điều kiện bên trong bộ xử lý.Sau đó các lệnh rẽ nhánh có điều kiện sẽ căn cứ vào kết quả này để thực hiện việc rẽ nhánh tương ứng
• Các lệnh chuyển dữ liệu dung các thanh ghi $fi để chứa
dữ liệu số thực
3.Nhóm lệnh so sánh và rẽ nhánh
Trang 40• Số thực dấu chấm động độ chính xác đơn được chứa trong một thanh ghi và độ chính xác kép được chứa trong một cặp thanh ghi chẳn/lẻ.
• Thanh ghi này phải là một thanh ghi đa dụng chứa số
nguyên
3.Nhóm lệnh so sánh và rẽ nhánh
Trang 413.7 CÂU HỎI VÀ BÀI TẬP
Trang 42• Câu 1: Hãy nêu chức năng của tập lệnh MIPS??
“xử lý ngoại lệ” (excep-tion) hoặc còn được gọi là”ngắtquãng”(interrupt) khi phá hiện tràn
CÂU HỎI
Trang 43• 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?
thước 32 bit, do đó không thể dùng các thanh ghi này đểchứa kết quả của phép nhân MIPS cung cấp một cặp
thanh ghi 32 bit dặc biệt là Hi và Lo để chứa kết quả của
phép nhân
CÂU HỎI
Trang 44• 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?
nhóm lệnh khác nhau đó là: nhóm lệnh số học, nhóm lệnhchuyển dữ liệu và nhóm lệnh so sánh và rẽ nhánh
CÂU HỎI
Trang 45• Bài 3.1: Cho đoạn chương trình MIPS sau:
BÀI TẬP
Trang 46• Giải 3.1: Hai lện đầu tiên sẽ gán giá trị 7 thập phân cho
thanh ghi $t0, hai lệnh tiếp theo sẽ làm cho thanh ghi $t1 mang giá trị 2 thập phân Lệnh chia div $t0, $t1 sẽ thực hiện phép chia 7 ÷ 2 và gán thương vào thanh ghi Lo và
số dư vào thanh ghi Hi Do đó, sau khi thực hiện đoạn
chương trình trên thì thanh ghi $s0 sẽ mang giá trị 1 là số
dư của phép chia 7 ÷ 2 tron khi thanh ghi $s1 sẽ mang giá trị thương của phép chia này là 3 Thanh ghi $t0 không
thay đổi giá trị sau phép chia nên vẫn sẽ chứa giá trị 7
BÀI TẬP
Trang 47• Bài 3.2: Xác định giá trị số thực biểu diễn theo chuẩn
IEEE 754 độ chính xác đơn của giá trị 13.312510?
• Bởi vì 13.3125 > 0 nên bit dấu S = 0;
• Số thực 13.312510 được chuyển sang hệ nhi phân bằng cách chuyển giá trị 1310 sang hệ nhị phân và 0.312510sang hệ nhị phân Hai giá trị này lần lược có dạng nhị phân là: 11012 và 0.01012 Vậy 13.312510 được biểu diễn nhị phân là: 1101.01012
BÀI TẬP
Trang 48• Bởi vì giá trị 1101.01012 chưa ở dạng chuẩn ký hiệu
khoa học nên cần phải chỉnh về dạng chuẩn tắc là
1.11010101 x 23 ( bởi vì dấu “chấm” được dời sang trái 3
ký số nên cần phải nhân với 23)
• Vậy giá trị phần phân số sẽ là:
1.1101010100000000000000 và giá trị phần mũ sẽ là
BÀI TẬP
Trang 49• Bài 3.3: Một số thực biểu diễn theo chuẩn IEEE 754 có
chuỗi nhị phân như sau:
0x1490000Xác định giá trị thập phân của số thực này?
BÀI TẬP
Trang 50• Giải 3.3:
• Bởi vì số thực dấu chấm động theo chuẩn IEEE 754
0x1490000 được biểu diễn bằng 32 bit (8 ký số thập lục phân) nên đây là một số biểu diễn dạng chính xác đơn Chuỗi nhị phân tương đương là:
Trang 51Phần phân số:
F = 1 1001 0000 0000 0000 00002 = 1 x 2−1+1 x 2−2+ 1 x 2−5 = 0.7812510
• Bởi vì đây là số thực dấu chấm động chính xác đơn nên phần “bias” sẽ có giá trị 127 Áp dụng công thức tính giá trị ở hệ thập phân:
𝐺𝑖á 𝑡𝑟ị ℎệ 𝑡ℎậ𝑝 𝑝ℎâ𝑛
= (−1)𝑆× 1 + 𝑝ℎâ𝑛 𝑠ố × 2𝑠ố 𝑚ũ−"𝑏𝑖𝑎𝑠"
= −1 0 × 1 + 0.78125 × 2130−127 = 14.2510
BÀI TẬP
Trang 52• Bài 3.4: Minh họa từng bước phép cộng hai số thực dấu
chấm động IEEE 754 sau: 0x41480000 + 0x40a80000
và 0x40a80000 được biểu diễn theo dạng chính xác đơn Phần mũ sẽ có kích thước 8 bit và có giá trị lần lượt là
10000010 và 10000001 Điều đó có nghĩa là số hạng thứ hai nhỏ hơn số hạng thứ nhất và cần phải dịch phải phần định trị của số hạng thứ hai 1 bit để giá trị phần mũ của hai số hạng là bằng nhau
BÀI TẬP
Trang 53BÀI TẬP
Trang 54• Kết quả phép cộng hai phần định trị là 25 bit trong khi phần định trị của hai số hạng là 24 bit Vậy cần phải thực hiện việc dịch phải 1 bit và chọn 24 bit thấp làm phần định trị của kết
quả phép cộng, đồng thời tang giá trị phần mũ lên 1 đơn vị
Trang 55• Bài 3.5: Thực hiện phép nhân hai giá trị số thực dấu chấm động
IEEE 754 sau: 0x40B00000 x 0x40880000
• Giải 3.5: Bởi vì hai thừa số trong phép nhân đuợc lưu trữ bằng 32
bit nên cả hai thuộc dạng chính xác đơn Giá trị phần mũ của hai thừa số đều là 1000 0001 Do đó, giá trị phần mũ của tích số được tính bằng:
Trang 56• Kết quả phép nhân hai phần định trị của hai thừa số là:
101 1101 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000
• Kết quả này có kích thước là 47 bit nên không cần thực hiện
dịch và điều chỉnh phần mũ Giá trị phần định trị của kết quả phép nhân là: 1011 1011 0000 0000 0000 0000
• Bởi vì cả hai thừa số đều là số dương nên tích số là một số
dương bit dấu của tích số sẽ là S = 0 Vậy kết quả của phép
nhân trên là:
0 10000011 01110110000000000000000
= 0x41BB0000 = 23.375
BÀI TẬP