Tải bản đầy đủ (.pdf) (57 trang)

Bài giảng Kiến trúc máy tính (ĐH Bách khoa Hà Nội) Chương 3a

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.36 MB, 57 trang )

4/4/2014

Binary numbers
(And some other useful bases)

1


2

Tại sao sử dụng hệ nhị phân?
• Máy tính sử dụng số nhị phân vì:
– Dễ thực hiện mạch: 1=1V, 0=0V (in the past 3.3V or 5V)
– Dễ thiết kế các mạch phức tạp với các cổng (transistors)
• Có thể sử dụng nhiều mức điện áp?…
– 1=1V, 2=2V, 3=3V, etc.
– Nhiễu sẽ phá huỷ mạch
– Ví dụ nhiễu trong mạch số:
• No noise: 1 + 0 → 1;
• With noise: 0.9 + 0.4 → 1, not 1.3
– Ví dụ nhiễu mạch tương tự:
• 1.4V + 3.4V → 4.8V (closer to 5 than 4!)

4/4/2014


3

Hệ cơ số 2 (binary)

4/4/2014




4

Các hệ cơ số

4/4/2014


5

LSBs và MSBs
• LSB = Least Significant Bit - > Bit có trọng số thấp
• MSB = Most Significant Bit -> bit có trọng số cao
• Example: 0101 1101 1110 1001

MSB – largest
value digit

LSB– lowest
value digit

4/4/2014


6

Số có dấu

4/4/2014



7

Làm thế nào để biểu diễn số có dấu
• Có 3 chuẩn biểu diễn
– Trường dấu
– Mã bù 1
– Mã bù 2
• Trong 3 chuẩn trên MSB là bit dấu (1 = negative)
• Mã bù 1 khơng được sử dụng nhưng vẫn phải tính
• Ln sử dụng mã bù 2 cho số nguyên
• Trường dấu được sử dụng biểu diễn số thực dấu phẩy động

4/4/2014


8

Trường dấu
Đơn giản là bit đầu tiên là bit dấu: +/‐

4/4/2014


9

Một số vấn đề về số có dấu
Kiểm sốt được dấu và trường dấu:
– Nếu A âm và B âm, A+B → âm (A + B)

– Nếu A dương và B dương, A+B → dương (A + B)
Phức tạp hơn với đấu trừ:

4/4/2014


10

Tràn số trong mã bù 2
• Khác với các số khơng dấu -> có tín hiệu nhớ
• Tràn số có nghĩa là số có dấu khơng được biểu diễn
• Trong phép cộng số bù 2:
– Các số trái dấu nhau thì khơng tràn số
– Tràn số nếu các số có cùng dấu lại cho kết quả khác dấu
• Trong cả hai ví dụ, carry in đến bit dấu == carry out

4/4/2014


11

So sánh các số
Các tốn hạng khơng dấu
• Z: equality/inequality
• C=0: A>=B
• C=1: A• S: no meaning
• O: no meaning

Mã bù hai

• Z: equality/inequality
• C: no meaning
• S và O
– S XOR O = 0: A>=B
– S XOR O = 1: A
• so sánh A và B, thực hiện A‐B
• kiểm tra kết quả: ZERO, CARRY, SIGN, OVERFLOW

4/4/2014


12

Số không nguyên: số thực
dấu phẩy động và cố định

4/4/2014


13

Các số khơng ngun
• Hệ cơ số 10 :
– 12.2510 = 1x101 + 2x100 + 2x10‐1 + 5x10‐2
• Hệ cơ số 2:
– 12.2510 = 1100.01 = 1x23 + 1x22 + 1x2 ‐2
• Đây là dấu phẩy cố định:
– abc.def = a*22 + b*21 + c*20 + d*2‐1 + e*2‐2 + f*2‐3
– E.g., 011.110 = 2 + 1 + 1/2 + 1/4 = 3.75

• Dấu phẩy nhị phân đặt ở đâu?
– Có 6 bit để biểu diễn:
– xxx.yyy → max = 111.111 = 7.875,
min = 000.001 = 0.125
– xxxxx.y → max = 11111.1 = 63.5,
min = 00000.1 = 0.5
– x.yyyyy → max = 1.11111 = 1.96875, min = 0.00001 = 0.03125
4/4/2014


14

Tính tốn là giống nhau đối
với dấu phẩy cố định

Phép cộng và phép trừ (số
bù 2) là giống nhau

4/4/2014


15

Nhưng tồn tại một số vấn đề
sau …
• Dấu phẩy cố định tính tốn rất tốt nếu biết độ rộng
– Thường sử dụng trong xử lý tín hiệu (DSPs in cell phones, etc.)
– Tuy nhiên không phải lúc nào cũng biết một số có độ lớn là bao nhiêu?
• Đấu phẩy động giải quyết vấn đề này:
– Sử dụng một số bít để lựa chọn dấu phẩy động nhị phân

– Ví dụ: Nếu có 20 bít, sử dụng 4 bit để đặt dấu phải nhị phân.

4/4/2014


16

Dấu phẩy động
• Sử dụng một vài bít để lựa chọn dấu phẩy nhị phân
– Tạo ra số lớn hoặc nhỏ bằng việc dịch chuyển dấu phẩy nhị phân.
– Sử dụng các bit hiệu quả hơn!
• Tổng quát một số thực X được biểu diễn theo kiểu số dấu phẩy động
như sau: X = M*Re.
• Trong đó:
 E là phần mũ (Exponent), E = e – 127
 M là phần định trị (Mantissa)
 R là cơ số (Radix)

4/4/2014


17

Tiêu chuẩn đấu phẩy động của
IEEE

• Bit dấu S
– Có một bit dấu: 0=positive 1=negative
• Số mũ e
– Giá trị không dấu, độ lệch bias “‐127”

– Dễ dàng so sánh (xem xét ở phần định trị)
• Phần thập phân f
– Giá trị không dấu
– Là các số nhị phân với dấu phẩy nhị phân bên cạnh bit có trọng số lớn nhất.
4/4/2014


18

Ví dụ về dấu phẩy động 32 bit
1
S





10000010 1010110000000000000000
e

f

S = 1 -> Số âm (S là 1 bít đầu tiên).
e = 1000 00102 = 13010 -> E = 130 - 127 = 3 (e là 8 bít tiếp theo).
m = 101011 -> M = 1.101011 (m là 23 bít cịn lại, ở đây khơng cần quan tâm đến
các bít 0 ở cuối vì khi ghép M = 1.m thì các số 0 này không cần viết vào)
X = -1.101011 * 23 = -1101.011 = -13.375

4/4/2014



19

Dạng chuẩn hố
Câu hỏi: Với 23
bit phần định trị
và khơng chuẩn
hố, có bao nhiêu
cách biểu diễn số
Answer: 23.
Lãng phí Bit!

• Định dạng 1 trước phần thập phân
– Cách biểu diễn số đơn giản như sau:(‐1)s x (1.f) x 2(e – 127)
• Dạng khơng chuẩn hố:
– ví dụ: 3 giá trị thập phân ở phần định trị
(‐1)S x 0.f1f2f3 x 2e
• Làm thế nào để biểu diễn số 2?
– (‐1)0 x 0.100 x 2(e=2) = 1/2 x 4 = 2
– (‐1)0 x 0.010 x 2(e=3) = 1/4 x 8 = 2
– (‐1)0 x 0.001 x 2(e=4) = 1/8 x 16 = 2

Dạng chuẩn hố
chỉ có một cách:
(‐1)0 x 1.000x2(e=1)
=1x2=2

• Lãng phí bit dùng để biểu diễn một số theo nhiều cách

4/4/2014



20

Phép cộng dấu phẩy động
• Ví dụ: 2.1x1012 + 9.2x1010
1. Viết lại để cùng số mũ bằng việc dịch phần thập phân:
2.1x1012 + 0.092x1012
2. Cộng các phần thập phân với nhau:
(2.1+0.092)x1012 = 2.192x1012
3. Làm tròn để phù hợp với số bit cần để biểu diễn:
= 2.2x1012
• các bước thực hiện?
– dịch (multiply) số nhỏ hơn để cùng số mũ the smaller number to match
the exponents
– cộng phần thập phân
– làm tròn kết quả cuối cùng để phù hợp với số bit biểu diễn
• phức tạp hơn tính tốn số ngun
• có thể làm mất tính chính xác của các số nhỏ hơn khi cộng.
4/4/2014


21

Phép nhân dấu phẩy động
• ví dụ: 2.1x1012 * 9.2x1010
1. nhân phần định trị (thập phân):
2.1 * 9.2 = 19.32
2. cộng các số mũ:
12 + 10 = 22

3. làm tròn (và dịch ở cơ số 10) để phù hợp với số bit cần biểu
diễn: = 19.32x1022 = 1.9x1023
• các bước thực hiện?
– Multiply the mantissas and add the exponents
– Shift (normalize) to put the decimal point in the right place
– Round at the end to fit in to the number of bits
• đơn giản hơn phép cộng số thực dấu phảy động
• cần bộ nhân lớn (23 bits for floats, 53 for doubles)
4/4/2014


22

Sai số trong dấu phẩy động
Dịch để cùng số mũ trước
khi cộng

• Xem xét:
– Big + Small ≈ Big
– 2.1x1020 + 9.2x105 = 2.1x1020+0.0000000000000092x1020 ≈ 2.1x1020
• Điều gì sẽ xảy ra khi trừ một số lớn?
Floating point gives us non‐linear

– có nhật được số nhỏ?
precision. (Remember the graph.)
We only get 23 bits around one binary
– (Big + Small) – Big = ?
point. (Big or small.)
– (Big + Small) ≈ Big
– (Big + Small) – Big ≈ Big – Big = 0

– No, I get something very close to zero.
• Now what happens if I try to divide by the result?
– x/0 = … bad
– Order of operations matters!
– (Big – Big) + Small = Small
• Good news: There are lots of truly excellent libraries that do the right thing for you.
– This is why you do not write your own linear algebra code or FFT code

4/4/2014


4/4/2014

Thiết kế mức logic số

23


24

Mức logic số
• Các kết nối logic
– Các cổng
– Logic → Bảng chân lý
– Bảng chân lý → Các cổng(Karnaugh maps)
– Các thành phần cơ bản: Bộ dồn kênh (Multiplexors), Bộ mã
(encoders), bộ giải mã (decoders).
• Các phần tử nối tiếp
– Xây dựng bộ đếm.
– Bộ nhớ và các mạch chốt.


4/4/2014


25

Phương trình tốn học và
bảng chân lý
Các bảng chân lý định
nghĩa trạng thái của
cổng (đầu ra) với tất
cả các kết nối có thể ở
đầu vào.

4/4/2014


×