II. PHÉP TOÁN SỐ HỌC VỚI SỐ NGUYÊN
Số học nhị phân: phép cộng số nguyên không dấu
Khi cộng hai số nguyên không dấu n bit: nếu không có nhớ ra khỏi
bit cao nhất thì kết quả nhận được luôn đúng.
Nếu có nhớ ra khỏi bit cao nhất thì kết quả nhận được là sai. Hay nói
khác hơn phép cộng bị tràn (Cout =1)
Tràn cờ nhớ (Carry Out):
xảy ra khi kết quả phép
toán nhận được > 2n-1
35 trang |
Chia sẻ: thanhle95 | Lượt xem: 591 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc máy tính và mạng máy tính - Chương 3: CPU - Lương Minh Tuấn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC SÀI GÒN
CHƯƠNG 3: CPU
GV: LƯƠNG MINH HUẤN
NỘI DUNG
Biểu diễn số nguyên
Các phép toán số học với số nguyên
III. Số dấu phẩy động
IV.Kỹ thuật đường ống
I. BIỂU DIỄN SỐ NGUYÊN
Có hai loại số nguyên:
Số nguyên không dấu (Unsigned Integer)
Số nguyên có dấu (Signed Integer)
Biểu diễn số nguyên không dấu
Dùng n bit biểu diễn số nguyên không dấu A:
an-1an-2..a2a1a0
Giá trị của A được tính như sau:
1
0
2
n
i
i
iaA
Biểu diễn số nguyên không dấu
n=8 bit
Biểu diễn được các giá trị từ 0 đến 255
0000 0000 = 0 Chú ý:
0000 0001 = 1 1111 1111
0000 0010 = 2 + 0000 0001
0000 0011 = 3 1 0000 0000
Vậy: 255 + 1 = 0?
1111 1111 = 255 do tràn nhớ ra ngoài
Biểu diễn số nguyên có dấu
Cho một số nhị phân N được biểu diễn bởi n bit
Số bù một của N bằng (2n -1) - N
Số bù hai của N bằng 2n - N
Lưu ý: 2n -1 = 111...11 (n bit 1)
Biểu diễn số nguyên có dấu (tt)
Ví dụ: Cho số N = 0001 00012 được biểu diễn bởi n=8bit. Xác
định số bù 1 và bù 2 của N.
Xác định số bù 1:
Áp dụng công thức 1111 1111 (2n -1)
0001 0001 N
số bù một của N 1110 1110
Nhận xét: số bù một của một số N được xác định bằng cách đảo
các bit trong N
-
Biểu diễn số nguyên có dấu (tt)
Xác định số bù 2:
Áp dụng công thức 1 0000 0000 (2n)
0001 0001 N
số bù hai của N 1110 1111
Nhận xét: số bù hai của một số N được xác định
bằng cách lấy số bù một của N cộng thêm 1
Số bù 2 của N =(số bù 1 của N) + 1
-
Biểu diễn số nguyên có dấu (tt)
Giả sử dùng n bit để biểu diễn số nguyên có dấu:
Bít có trọng số cao nhất (hay bit ngoài cùng
bên trái của dãy số) được máy tính sử dụng để
biểu diễn dấu. Nếu:
= 0 : thì số nhị phân cần tính giá trị là số dương.
Dạng tổng quát là: 0an-2 an-3 a0
= 1 : thì số nhị phân cần tính giá trị là số âm.
Dạng tổng quát là: 1an-2 an-3 a0
Giá trị:
Biểu diễn số nguyên có dấu (tt)
Vì A + (Số bù hai của A) = 0
dùng số bù hai để biểu diễn cho số âm
VD1:
A = 6510 = 010000012 (8 bit)
Số bù 2 của A: 101111112 (8 bit)
A + Số bù 2 của A: 0100 0001
1011 1111
1 0000 0000
+
Ví dụ
VD2: Cho số nguyên có dấu biểu diễn n=8bit sau:
A=B5H và B=6AH
Hãy xác định giá trị của hai số nguyên có dấu A và B
dưới dạng hệ số người sử dụng (cơ số 10)
Bài giải
Biểu diễn số nguyên A dưới dạng nhị phân
A=B5H = 1011 01012
A= -128 + 53 = - 75
Biểu diễn số nguyên B dưới dạng nhị phân
B=6AH = 0110 10102
B = 64+32+8+2 = 106
Ví dụ
VD3: Biểu diễn số nguyên có dấu sau đây A=+97 và
B=-101 (10) theo hai dạng kiểu n=8bit và n=16bit trong máy tính.
Lời giải
n = 8bit
Biểu diễn số A dạng số nguyên có dấu trong máy tính
A = 0110 00012 (n=8bit)
Biểu diễn số B dạng số nguyên có dấu trong máy tính
+101 = 0110 01012
Lấy bù 2 1001 10112
B = - 101 = 1001 10112
Ví dụ
Biểu diễn số A dạng số nguyên có dấu trong máy tính
A = 0000 0000 0110 00012 (n=16bit)
Biểu diễn số B dạng số nguyên có dấu trong máy tính
+101 =0000 0000 0110 01012
Lấy bù 2 1111 1111 1001 10112
B = -101 = 1111 1111 1001 10112
Biểu diễn số nguyên có dấu (tt)
n = 8 bit
Biểu diễn được các giá trị từ -128 đến +127
0000 0000 = 0
0000 0001 = +1
0000 0010 = +2 Chú ý:
0000 0011 = +3 +127 + 1 = -128
-128 - 1 = +127
0111 1111 = +127 do tràn xảy ra
1000 0000 = - 128
1000 0001 = - 127
1111 1110 = -2
1111 1111 = -1
Biểu diễn số nguyên có dấu (tt)
Chuyển đổi từ byte thành word
Đối với số dương:
• +19 = 0001 0011 (8 bit)
• +19 = 0000 0000 0001 0011 (16 bit)
thêm 8 bit 0 bên trái
Đối với số âm:
• - 19 = 1110 1101 (8 bit)
• - 19 = 1111 1111 1110 1101 (16 bit)
thêm 8 bit 1 bên trái
II. PHÉP TOÁN SỐ HỌC VỚI SỐ NGUYÊN
Số học nhị phân: phép cộng số nguyên không dấu
Khi cộng hai số nguyên không dấu n bit: nếu không có nhớ ra khỏi
bit cao nhất thì kết quả nhận được luôn đúng.
Nếu có nhớ ra khỏi bit cao nhất thì kết quả nhận được là sai. Hay nói
khác hơn phép cộng bị tràn (Cout =1)
Tràn cờ nhớ (Carry Out):
xảy ra khi kết quả phép
toán nhận được > 2n-1
II. PHÉP TOÁN SỐ HỌC VỚI SỐ NGUYÊN
Phép trừ:
Phép trừ số nguyên chính là phép
cộng với số đảo dấu.
Ví như X-Y = X+(-Y)
Tìm số đảo chính là ta tìm bù
hai của số đó.
Nguyên tắc phép trừ: Lấy số
bù hai của Y ra thành –Y rồi
cộng với X
VÍ DỤ
Thực hiện các phép tính sau với n = 8bit
34+45
-123+45
127+34
12-101
109-67
-106-35
E3 – 2F
III. SỐ DẤU CHẤM ĐỘNG
Cho hai giá trị:
Khối lượng mặt trời:
199000000000000000000000000000000000g
Khối lượng điện tử:
0.00000000000000000000000000000910956g
Để lưu trữ con số này thì máy tính cần đến số bit rất lớn. Như vậy, trong
trường hợp này thì loại số có dấu chấm tĩnh sẽ rất bất tiện.
Vì vậy tất cả máy tính lưu trữ những số trên dưới dạng dấu chấm động 1.990
x 1033 và 0.910956 x 10-27 hay theo số khoa học là: 1.99E+33 và 0.910956E
27.
III. SỐ DẤU CHẤM ĐỘNG
Một giá trị có thể biểu diễn dưới nhiều dạng
Khó xử lý
Cần chuẩn hóa
Chuẩn hóa số chấm động
Dạng tổng quát
X=(-1)s 1.M 2E
Trong đó: s: là bit dấu (s=0 phần định trị là
dương; s=1 phần định trị là âm)
M : là phần định trị.
E: là số mũ.
Chuẩn IEEE 754
Dùng 32 bit để biểu diễn số chấm động
Cách chuẩn hóa số chấm động
Chuyển về hệ cơ số 2
Cách biểu diễn vùng lưu chấm động dài 32 bit.
Phần định trị chuẩn hóa dạng 1.M
Công thức tính giá trị X = (-1)S x 1.M x 2E
• Xác định S, M, E
Ví dụ
Số 0.7510 được biễu diễn theo chuẩn IEEE 754
Giải:
Chuyển qua nhị phân: 0.75 10 = 0.112
Dịch dấu chấm qua phải để được dạng 1.M (1 đơn vị):
S = 0, E = -1+127 = 12610 = 111 11102và
M = .10000000000000000000000 (23 bit)
1 8 23
S E M
0 0111 1110 10000000000000000000000
Ví dụ
209.812510 được biễu diễn theo chuẩn IEEE 754
Chuyển qua nhị phân
209.812510 = 11010001.11012
Dịch dấu chấm qua trái 7 đơn vị:
S = 0, E = 7+127 = 13410 = 1000 01102 và
M = 10100011101000000000000000000 (23 bit)
1 8 23
S E M
0 1000 0110 10100011101000000000000000000
Ví dụ
2345,125 trong hệ thập phân. Hãy biễu diễn theo chuẩn IEEE
754
Chuyển qua nhị phân
2345,12510 = 1001 0010 1001.0012
Dịch dấu chấm qua trái 11 đơn vị:
S = 1, E = 11+127 = 13810 = 100010102 và
M = 00100101001001000000000(23 bit)
1 8 23
S E M
1 1000 1010 0010010100100100000000
IV. KỸ THUẬT ĐƯỜNG ỐNG
Đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều
lệnh được thi hành cùng một lúc bằng cách xử lý gối đầu lệnh
nhau.
Ví dụ: Chúng ta có những lệnh đều đặn, mỗi lệnh được thực
trong cùng một khoản thời gian.
Giả sử, mỗi lệnh được thực hiện trong 5 giai đoạn và mỗi giai
được thực hiện trong 1 chu kỳ xung nhịp.
Các giai đoạn thực hiện một lệnh là: lấy lệnh (IF: Instruction Fetch),
giải mã (ID: Instruction Decode), thi hành (EX: Execute), thâm
bộ nhớ (MEM: Memory Access), lưu trữ kết quả (RS: Result
Storing).
IV. KỸ THUẬT ĐƯỜNG ỐNG
So sánh với kiểu xử lý tuần tự thông thường, 5 lệnh được thực
trong 25 chu kỳ xung nhịp, thì xử lý lệnh theo kỹ thuật ống
thực hiện 5 lậnh chỉ trong 9 chu kỳ xung nhịp.
IV. KỸ THUẬT ĐƯỜNG ỐNG
Tuy nhiên, kỹ thuật ống dẫn pipeline có những xung đột xảy ra
trong quá trình xử lý như:
Xung đột cấu trúc
Xung đột dữ liệu
Xung đột điều khiển
XUNG ĐỘT CẤU TRÚC
Xung đột cấu trúc xảy ra khi
có hai lệnh cùng truy xuất
vào một tài nguyên phần
cứng nào đó cùng một lúc.
Vì vậy, trong cơ chế ống lộ
trình xử lý lệnh cần tách 2 bộ
nhớ riêng biệt (lệnh, data), ít
ra thì 2 vùng cache riêng.
XUNG ĐỘT DỮ LIỆU
Xung đột dữ liệu (Data hazard): là khi một lệnh dự kiến không thể
thực thi trong đúng chu kỳ pipeline của nó do dữ liệu mà lệnh này
cần vẫn chưa sẵn sàng.
XUNG ĐỘT DỮ LIỆU
Để khắc phục, ta dùng biện pháp Forwarding (xúc tiến sớm):
Sử dụng ngay kết quả vừa tính toán xong của lệnh trước
Không cần đợi kết quả cất lại thanh ghi
Cần có thêm kết nối trong lộ trình
XUNG ĐỘT ĐIỀU KHIỂN
Xung đột điều khiển (Control/Branch hazard): là khi một lệnh
kiến không thể thực thi trong đúng chu kỳ pipeline của nó do
nạp vào không phải là lệnh sẳn sàng. Xung đột này xảy ra trong
trường hợp luồng thực thi chứa các lệnh nhảy hoặc lệnh rẽ nhánh
XUNG ĐỘT ĐIỀU KHIỂN
Cách đơn giản nhất để giải quyết đó là gây trễ kịp thời để phát
nhánh cần nhảy tới.
Ngoài ra, người ta còn sử dụng các kỹ thuật khác để khắc phục
sự cố của đường ống lệnh như:
Tổ chức lại lệnh.
Sử dụng đường dữ liệu nội đặc biệt
Thuật toán Tomasulo