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

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

pdf35 trang | Chia sẻ: thanhle95 | Lượt xem: 600 | Lượt tải: 2download
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 
Tài liệu liên quan