Đề cương chi tiết môn Kiến trúc máy tính
KIẾN TRÚC MÁY TÍNH
ĐỀ CƯƠNG CHI TIẾT GIÁO TRÌNH
“KIẾN TRÚC MÁY TÍNH”
Biên soạn: TS Bùi Thế Hồng
Mục đích giáo trình:
Cung cấp cho sinh viên các kiến thức và các khái niệm cơ bản về thiết kế và kiến trúc
logic của các máy tính hiện đại:
• Cơ chế của máy tính dùng để biểu diễn dữ liệu và các lý thuyết cơ bản về thông
tin.
• Các thành phần cơ bản cấu thành một máy tính điện tử.
• Các ý tưởng và nguyên tác cơ bản được sử dụng trong các hệ thống số bao gồm
hệ lệnh, các hệ thống kết nối, và các hệ thống điều khiển.
• Các nguyên lý của các phép số học trong máy tính.
• Cấu trúc và các cơ chế quản lý bộ nhớ.
• Các thiết bị ngoại vi và nguyên tắc hoạt động.
• Lập trình bằng ngôn ngữ assembler.
Kết quả chờ đợi:
Học xong giáo trình này, sinh viên biết được cấu trúc vật lý bên trong một máy tính điện
tử, cơ sở logic của các phép toán số học, cách thức thiết kế các mạch logic, qua đó có thể
hiểu rõ hơn về hoạt động của nó làm cơ sở cho việc nắm bắt tốt hơn nguyên lý thiết kế và
cài đặt các hệ điều hành, khắc phục các sự cố của máy tính, và hỗ trợ cho việc lập trình
bằng các ngôn ngữ assembler và các ngôn ngữ bậc cao.
Số tiết học: 60 tiết, bao gồm 45 tiết lý thuyết và 15 tiết thực hành về assembler
CHƯƠNG I. CÁC KHÁI NIỆM CƠ BẢN VỀ MÁY TÍNH ĐIỆN TỬ
Mục đích:
• Hiểu qua về lịch sử phát triển và các kiểu khác nhau của các hệ thống máy tính .
• Hiểu được các thành phần cơ bản của một máy tính và các chức năng chính của
chúng.
• Cơ bản hiểu được khái niệm về lập trình và các ngôn ngữ lập trình cấp thấp và cấp
cao.
1.1 Sơ qua về lịch sử phát triển
Lịch sử phát triển của máy tính điện tử có thể được phân chia thành 5 giai đoạn khác
nhau, mỗi giai đoạn được gọi là một thế hệ:
Bùi Thế Hồng, Hà Nội 2002
1
KIẾN TRÚC MÁY TÍNH
1. Thế hệ thứ 0
Thế hệ này được dùng để chỉ thời kỳ phát triển của các thiết bị tính toán đầu tiên
trên thế giới: máy tính số điện tử đầu tiên có tên ABC do John Atanasoff chế tạo
năm 1940; máy Mark I do IBM chế tạo năm 1944; và có lẽ nổi bật nhất là máy
EDVAC do Von Neuman và một số kỹ sư khác phát triển trong các năm 1944-
1946. Đây là lần đầu tiên tư tưởng lưu giữ chương trình trong bộ nhớ và thực
hiện lần lượt từng lệnh được cài đặt trong máy.
Sự phát triển của EDVAC đã đánh dầu một bước chuyển biến mới của kỹ thuật
tính toán Các thành phần cứng của máy được chế tạo từ các bóng đèn điện tử.
2. Thế hệ thứ nhất, 1951-1956
Thế hệ thứ nhất được đánh dấu bằng việc ra đời của máy tính thương mại
UNIVAC I vào năm 1951 và sau đó là IBM 701. Kiến trúc của máy vẫn dựa trên
công nghệ đèn điện tử.
Đặc điểm của giai đoạn này là xuất hiện các ngôn ngữ lập trình bậc cao.
3. Thế hệ thứ hai, 1956-1964
Thế hệ thứ hai được bắt đầu bằng việc ra đời của các đèn bán dẫn thay thế cho
đèn điện tử trong các cấu trúc phần cứng của máy tính.
Đến cuối giai đoạn này đã xuất hiện các thiết bị lưu trữ thông tin truy cập ngẫu
nhiên dẫn đến việc thay thế các hệ điều hành trên băng từ bằng các hệ điều hành
trên đĩa từ.
4. Thế hệ thứ ba, 1964 – 1979
Thế hệ thứ ba chính thức bắt đầu khi họ máy IBM 360 ra đời vào tháng 4 năm
1964. Phần cứng của máy đã được thiết kế từ các mạch tích hợp làm tăng tốc độ
tính toán và giảm đáng kể giá thành chế tạo.
Các máy tính của thế hệ này đã có thể làm việc trong chế độ đa chương trình.
5. Thế hệ thứ tư, 1979 đến nay
Thế hệ thứ tư được bắt đầu từ việc ra đời của các máy tính cá nhân và các máy
trạm làm việc.
Các công nghệ mạch tích hợp lớn và cực lớn đã đẩy nhanh sự phát triển của phần
cứng cũng như phần mềm của các máy tính.
Xuất hiện các công nghệ mạng cục bộ, mạng diện rộng và đặc biệt là sự bùng nổ
của Internet.
1.2 Một máy tính là gì?
Một máy tính là một thiết bị điện tử có thể lập trình được dùng để lưu trữ, tìm lại
và xử lý dữ liệu.
Hai khái niệm cơ bản của công nghệ máy tính đó là phần cứng và phần mềm:
•
Phần cứng máy tính là các thiết bị cứng cấu thành ra máy tính. Đó chính là
đối tượng cần trình bầy trong giáo trình này.
•
Phần mềm là các chương trình dùng để điều khiển máy tính hoạt động
theo ý của người sử dụng nó.
Bùi Thế Hồng, Hà Nội 2002
2
KIẾN TRÚC MÁY TÍNH
1.3 Các thành phần cơ bản cấu thành máy tính
(1) Các chức năng của phần cứng cấu thành một máy tính có thể được chia thành 5 nhóm:
Nhập (Input)
Lưu trữ
Vận hành
Điều khiển
Xuất (Output)
(2) Các đơn vị phần cứng thực hiện các chức năng của máy tính:
Đơn vị nhập: Đơn vị này nhập dữ liệu và chương trình để máy tính xử lý. Nó
tương ứng với tai và mắt của con người.
Đơn vị lưu trữ: Đơn vị này lưu trữ các dữ liệu và chương trình đã nhập. Nó tương
ứng với phần ghi nhớ của bộ óc con người.
Đơn vị số học: Đơn vị này thực hiện các tính toán và ra các quyết định dựa trên
các dữ liệu đâ lưu trữ và tuân theo các chỉ thị của chương trình. Nó giống như
phần suy nghĩ trong bộ óc người.
Đơn vị điều khiển: Đơn vị này điều khiển đơn vị nhập, đơn vị lưu trữ, đơn vị số
học và đơn vị xuất. Nó giống như hệ thần kinh trung ương của con người.
Đơn vị xuất: Đơn vị này xuất ra các kết quả của các quá trình xử lý dưới dạng mà
con người có thể hiểu được.
Hình 1.1 là sơ đồ biểu diễn một máy tính bao gồm 5 đơn vị.
§¬n vÞ l-u
tr÷ chÝnh
§¬n vÞ nhËp
§¬n vÞ xuÊt
§¬n vÞ
®iÒu khiÓn
§¬n vÞ
Sè häc
Dßng d÷ liÖu
Dßng ®iÒu khiÓn
Bé vi xö lý (CPU)
Hình 1.1 Năm đơn vị của máy tính
1.4 Tổng quan về lập trình
Máy tính không làm được gì nếu con người không ra lệnh cho nó. Việc mô tả các
công việc máy tính cần phải thực hiện được gọi là việc lập chương trình.
Thủ tục lập trình một bài toán bao gồm hai bước riêng biệt. Bước thứ nhất, lập kế
hoạch cho chương trình, tức là xác định dãy các phép toán cần thực hiện để giải
Bùi Thế Hồng, Hà Nội 2002
3
KIẾN TRÚC MÁY TÍNH
bài toán. Bước thứ hai là mã hoá, tức là viết dãy các phép toán cần thực hiện bằng
một ngôn ngữ đặc biệt mà máy tính có thể dịch ra để hiểu được.
Nói cách khác, một chương trình đã cho phải được viết bằng một ngôn ngữ mà
cuối cùng máy tính có thể chuyển thành ngôn ngữ máy, tức là ngôn ngữ đã được
cài đặt trong phần cứng của máy. Khả năng biên dịch các ngôn ngữ với một cú
pháp hạn chế của máy tính chính là cơ sở của tất cả các ngôn ngữ lập trình và là lý
do cơ bản để máy tính được sử dụng rất rộng rãi như hiện nay.
Có nhiều lớp ngôn ngữ máy tính khác nhau, nhưng hai chủng loại được biết đến
và được sử dụng rộng rãi nhất là: hợp ngữ và ngôn ngữ bậc cao:
•
•
Hợp ngữ (assembly language): Là ngôn ngữ bậc thấp, trong đó mỗi câu lệnh
của nó tương ứng với một lệnh của ngôn ngữ máy. Assembler là chương trình
thông dịch hợp ngữ sang ngôn ngữ máy.
Ngôn ngữ bậc cao: Là các ngôn ngữ tựa ngôn ngữ tiếng Anh, mỗi câu lệnh
của nó có thể tương ứng với nhiều lệnh của ngôn ngữ máy. Một chương trình
biên dịch (compiler) là một chương trình thường được viết bằng ngôn ngữ
máy và được sử dụng để dịch các chương trình được viết bằng một ngôn ngữ
bậc cao thành dạng lệnh của một hợp ngữ.
Để có thể hoạt động được, máy tính còn phải có các chương trình hệ thống. Các
chương trình này bao gồm hệ điều hành, bộ liên kết, bộ nạp và các chương trình
sửa lỗi.
•
•
•
Hệ điều hành: Điều khiển sự hoạt động của hệ thống máy tính, phân bổ việc
sử dụng các tài nguyên chung của hệ thống và cung cấp một giao diện giữa
phần cứng và người lập trình.
Bộ nạp (Loader): Mã đích được sinh ra từ một chương trình dịch hoặc thông
dịch sẽ được nạp vào bộ nhớ chính để thực hiện bằng một chương trình được
gọi là bộ nạp.
Bộ kết nối (Linker): Trong thực tế, nhiều chương trình khác nhau có thể sẽ
thực hiện các công việc giống nhau. Thay vid phải viết đi viết lại và cả dịch
lại nhiều lần, các chương trình con thực hiện các công việc chung này sẽ được
viết và dịch riêng và cất giữ vào một nơi sử dụng chung gọi là thư viện các
chương trình con. Khi các chương trình lớn cần thực hiện các công việc
tương tự thì chỉ cần gọi tới chương trình con tương ứng. Khi biên dịch xong
chương trình chính thì mã đích của nó vẫn còn thiếu mã của chương trình con
mà nó gọi, do đó cần phải có một chương trình gọi là bộ liên kết để kết nối mã
đích của chương trình cính với mã của các chương trình con mà chương trình
cần sử dụng.
1.5 Hệ lệnh của máy tính
Các lệnh của máy tính thường được viết dưới dạng các từ. Các từ lệnh được ghi trong
máy tính dưới dạng nhị phân (sẽ được trình bầy kỹ trong Chương II). Người lập trình
hiếm khi viết các lệnh dưới dạng mã số mà thường sử dụng dạng mã gợi nhớ. Sau đó,
phần tên lệnh gợi nhớ của từ lệnh sẽ được chương trình assembler chuyển sang dạng
mã số.
Bùi Thế Hồng, Hà Nội 2002
4
KIẾN TRÚC MÁY TÍNH
Một từ lệnh do người lập trình viết bao gồm hai phần: (1) phép toán cần thực hiện
(cộng, trừ, ...) và (2) địa chỉ chứa giá trị của toán hạng cần dùng.
Ví dụ:
ADD 90
trong đó ADD là mã của phép toán, ra lệnh cho máy thực hiện phép cộng số học. 90
là địa chỉ trong bộ nhớ mà phép cộng cần sử dụng.
Lệnh này chỉ thị cho máy lấy số có trong địa chỉ 90 cộng với giá trị hiện tại của thanh
ghi tích luỹ (accumulator) và kết quả của phép cộng này lại được chứa trong thanh
ghi tích luỹ.
Bảng 1.1 liệt kê một số lệnh thường dùng.
Từ lệnh
Chức năng của lệnh
Mã phép toán Phần địa chỉ
Nội dung trước đó của thanh ghi tích luỹ bị xoá và số
có trong địa chỉ 430 của bộ nhớ được cộng vào thanh
ghi này. CLA có nghĩa là “Clear and Add”.
CLA
430
530
Số đang lưu tại địa chỉ 530 được cộng với số có trong
thanh ghi tích luỹ. Sau lệnh này, thanh ghi tích luỹ chứa
kết quả của phép cộng.
ADD
Lấy số ở thanh ghi tích luỹ trừ đi số đang lưu tại địa chỉ
240 và hiệu được đặt vào thanh ghi tích lũy.
SUB
STO
240
435
Số đang có trong thanh ghi tích luỹ được lưư vào địa
chỉ 435 của bộ nhớ. Nội dung trước đó của địa chỉ 435
bị ghi đè lên, còn nội dung của thanh tích luỹ vẫn giữ
nguyên sau khi phép toán này được thực hiện.
Số có trong địa chỉ 400 được nhân với số có trong
thanh ghi tích luỹ, tích của phép nhân được lưu tại
thanh ghi.
MUL
BRA
400
420
Lệnh này chỉ thị cho máy tiếp theo sẽ thực hiện lệnh
đang được lưu tại đại chỉ 420. Máy sẽ bỏ qua lệnh mà
lẽ ra đến lượt sẽ được thực hiện để nhẩy đến lệnh ở địa
chỉ 420. Sau đó, máy sẽ thực hiện lệnh tiếp theo lệnh
420.
Máy tính sẽ nhẩy đến lệnh 420 chỉ khi số đang ở thanh
ghi tích luỹ là âm. Nếu số này là dương hoặc bằng 0 thì
máy sẽ không nhẩy mà sẽ thực hiện lệnh được lưu tại
địa chỉ tiếp theo địa chỉ chứa lệnh này. BRM có nghĩa
là “Branch on Minus”.
BRM
HLT
420
000
Dừng máy. Số đang lưu trong thanh ghi tích lũy được
giữ nguyên.
Bảng 1.1 Một số lệnh thường dùng của assembler
Câu hỏi và bài tập
Bùi Thế Hồng, Hà Nội 2002
5
KIẾN TRÚC MÁY TÍNH
1. Viết một chương trình bằng assembler tính và ghi giá trị của biểu thức x5 + x vào ô
nhớ 40 với x được để trong ô nhớ 20. Độ dài chương trình không được vượt quá 20
lệnh.
2. Viết một chương trình tính tổng các số chẵn tử 2 đến 100.
3. Có ba mươi số được ghi liên tiếp trong bộ nhớ, khởi đầu từ ô 300. Viết một chương
trình assembler đổi các số âm trong ba mươi số này thành các số dương.
4. Hãy nêu chức năng chính của các đơn vị sau đây:
a) Đơn vị số học b) Đơn vị nhớ chính c) Đơn vị điều khiển d) Đơn vị nhập
Bùi Thế Hồng, Hà Nội 2002
6
KIẾN TRÚC MÁY TÍNH
CHƯƠNG II. BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH
Mục đích:
• Nắm được các đơn vị dữ liệu cơ bản của máy tính như các số nhị phân, các bits,
các bytes, các từ và các cách chuyển đổi từ hệ đếm này sang hệ đếm khác.
• Hiểu được các khái niệm cơ bản về cách biểu diễn dữ liệu bên trong máy, tập
trung vào các dữ liệu số, các mã ký tự, …
Để máy tính có thể làm việc được, cần phải chuyển các thông tin mà chúng ta sử dụng
trong cuộc sống hàng ngày sang dạng mà nó có thể hiểu được. Do đó, chương này sẽ
trình bầy các phương pháp biểu diễn thông tin trong một máy tính cũng như cách thức xử
lý thông tin của nó.
2.1 Chuyển đổi các số
Để máy tính có thể xử lý một công việc nào đó, đầu tiên là phải nạp vào bộ nhớ của
nó các chương trình mô tả công việc cần phải làm.
Do cấu trúc của các đơn vị lưu trữ của máy tính chỉ có thể nhận một trong hai giá trị
hoặc là 1 hoặc là 0, nên hệ nhị phân đã được sử dụng để biểu diễn các thông tin cần
nhập vào máy.
Vì chúng ta xưa nay vẫn quen dùng hệ thập phân nên cần phải hiểu kỹ mối quan hệ
giữa hai hệ thống này.
2.1.1 Đơn vị biểu diễn dữ liệu và đơn vị xử lý
(1) Biểu diễn các số trong hệ 2
Các số nhị phân biểu diễn hai trạng thái của các mạch điện tử: có dòng điện chạy
qua hoặc không có dòng điện chạy qua; hoặc là điện thế cao hoặc điện thế thấp
Các số thập phân và các số nhị phân
Các số
Các số
thập phân nhị phân
0
1
0
1
2
10
Nhớ 1
Nhớ 1
3
11
4
100
101
110
111
1000
1001
1010
5
6
7
8
Nhớ 1
9
Nhớ 1
10
• Bit
Một bit là 1 chữ số của hệ nhị phân được biểu diễn bằng “0” hoặc bằng “1”. Một
bit là đơn vị nhỏ nhất để biểu diễn dữ liệu trong máy.
Bùi Thế Hồng, Hà Nội 2002
7
KIẾN TRÚC MÁY TÍNH
Một bit chỉ có thể biểu diễn 2 giá trị của dữ liệu, nhưng hai bits có thể biểu diễn
được bốn giá trị khác nhau: 00, 01, 10, và 11.
• Byte
Một byte là một đơn vị nhớ gồm 8 bit có thể biểu diễn được một ký tự hoặc 28 =
256 giá trị khác nhau.
Hai bytes (16 bits) có thể biểu diễn được 216 = 65 536 thông tin khác nhau.
• Word
Word là đơn vị xử lý của các lệnh trong máy tính.
Số bit trong một word có thể là 16, 32 hoặc 64 tuỳ vào từng loại phần cứng.
(2) Hệ nhị phân và hệ 16
Hệ nhị phân được sử dụng để đơn giản hoá cấu trúc của các mạch điện tử cấu
thành máy tính, nhưng đối với con người thì ý nghĩa của các dẫy số 0 và 1 rất khó
hiểu.
Nếu chỉ dùng 3 bit để biểu diễn các số thập phân thì không đủ mà dùng 4 bit thì
thừa. Do đó xuất hiện một hệ mới được gọi là hệ 16 để biểu diễn các chữ số của
hệ này vừa đủ bằng 4 bits.
Các số
Các số
Các số ưj
thập phân nhị phân
16
0
1
0
1
0
1
2
10
2
3
11
3
4
100
4
5
101
5
6
110
6
7
111
7
8
9
1000
1001
1010
1011
1100
1101
1110
1111
10000
8
9
10
11
12
13
14
15
16
A
B
C
D
E
F
10
2.1.2 Biểu diễn các dữ liệu bằng số
(1) Cơ số và trọng số
Trọng số của các số thập phân và ý nghĩa của nó
3
5
7
9
1
Số thập phân
mười nghìn trăm chục đơn
Tên của các chữ số
nghìn
vị
104
103
102
101
100
Trọng số của từng chữ
Bùi Thế Hồng, Hà Nội 2002
8
KIẾN TRÚC MÁY TÍNH
số
35791 = 3 x 104 + 5 x 103 + 7 x 102 + 9 x 101 + 1 x 100
Trọng số của các số nhị phân và ý nghĩa của nó
1
1
0
1
1
Số thập phân
24
23
22
21
20
Trọng số của từng chữ
số
11011 = 24 + 23 + 21 + 20
(2) Các đơn vị biểu diễn các đại lượng lớn và nhỏ
Ký hiệu
Ký hiệu
Chú giải
đơn vị
luỹ thừa
240
230
Các đơn vị T (Tera)
1012
109
106
103
biểu diễn
các đại
G (Giga)
M (Mega)
K (Kilo)
220
lượng lớn
210
Các đơn vị m (milli)
10-3
10-6
10-9
10-12
1/1,000
biểu diễn
các đại
lượng nhỏ
1/1,000,000
1/1,000,000,000
1/1,000,000,000,000
(micro)
n (nano)
p (pico)
(3) Các phép cộng và trừ nhị phân
Cộng
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
(0 trong hệ 10)
(1 trong hệ 10)
(1 trong hệ 10)
(2 trong hệ 10) phép cộng này có nhớ và có thể nói rằng
1 cộng 1 bằng 0 nhớ 1
Trừ
0 – 0 = 0
0 – 1 = 1
1 – 0 = 1
1 – 1 = 0
mượn 1, đây là phép trừ phải mượn: 0 trừ 1 bằng 1 mượn 1
(4) Các phép cộng và trừ trong hệ 16
Các phép cộng và trừ trong hệ 16 cũng được thực hiện từ phải qua trái như hệ 10. Khi
kết quả của phép cộng hai chữ số vượt quá 16 thì phải nhớ 1 sang chữ số bên trái. Khi
kết quả phép trừ là âm thì phải mượn 1 từ chữ số bên trái của số bị trừ.
2.1.3 Chuyển cơ số
Bùi Thế Hồng, Hà Nội 2002
9
KIẾN TRÚC MÁY TÍNH
Để có thể xử lý các giá trị số trong một máy tính, các số thập phân phải được chuyển
sang hệ nhị phân hoặc hệ 16. Ngược lại, vì từ trước cho đến nay chúng ta thường sử
dụng các số thập phân nên rất khó để có thể hiểu ra ngay ý nghĩa của các kết quả xử
lý được biểu diễn dưới dạng nhị phân hay hệ 16. Do đó, cần phải có sự chuyển đổi
giữa các số thập phân, nhị phân và 16. Việc này được gọi là chuyển đổi cơ số.
(1) Chuyển các số thập phân sang nhị phân
Một số thập phân được chia thành hai phần: phần nguyên và phần thập phân.
Chuyển phần nguyên: Chia số nguyên cần chuyển cho 2 để nhận được thương và
phần dư. Vì chia cho 2 nên phần dư chỉ có thể là 0 hoặc 1. Lấy thương chia tiếp
cho 2 cho đến khi thương bằng 0. Số nhị phân cần tìm chính là các phần dư viết
theo thứ tự ngược lại.
Ví dụ: Chuyển số thập phân 25 sang nhị phân
2) 25
Phần dư
2) 12 ....... 1
2) 6 ....... 0
2) 3 ....... 0
2) 1 ....... 1
2) 0 ....... 1
1 1 0 0 1
Chuyển phần phân: Nhân phần phân cần chuyển với 2 và tách kết quả thành phần
nguyên và phần phân. Vì phần nguyên là tích của phần phân với 2 nên chỉ có thể
là 0 hoặc 1. Phần phân vừa nhận được lại nhân tiếp với 2 và cứ làm như vậy cho
đến khi phần phân bằng 0. Kết quả cần tìm chính là một số nhị phân nhỏ hơn 1
được tạo thành từ việc ghép các phần nguyên của các phép nhân liên tiếp trên đây.
Ví dụ: Chuyển phần thập phân 0.4375 sang nhị phân
0.4375
2
0.875
2
0.75
2
0.5
2
x
x
x
x
0.875
1.75
1.5
1.0
0
1
1
1
(0.4375)10 = (0.0111)2
Nhận xét: Quá trình chuyển đổi này có thể không kết thúc -> có sai số chuyển đổi.
(2) Chuyển các số nhị phân sang thập phân
Chuyển phần nguyên nhị phân:
Ví dụ: chuyển số nhị phân 11011 sang thập phân
(1 1 0 1 1)2
Bùi Thế Hồng, Hà Nội 2002
10
KIẾN TRÚC MÁY TÍNH
24 + 23 + 21 + 20
Trọng số
16 + 8 + 2 + 1 = (27)10
Bùi Thế Hồng, Hà Nội 2002
11
KIẾN TRÚC MÁY TÍNH
Chuyển phần phân nhị phân:
Ví dụ: chuyển số nhị phân 0.101 sang thập phân
(0 . 1 0 1)2
0 + 2-1 + 2-3
Trọng số
0 + 0.5 + 0.125 = (0.625)10
(3) Chuyển các số nhị phân sang hệ 16
Đối với các số nguyên nhị phân: chia dẫy bit nhị phân thành các nhóm 4 bít bắt
đầu từ bit phải nhất (bit có ý nghĩa thấp nhất), mỗi nhóm 4 bít tương ứng với một
chữ số trong hệ 16. Sau đó, đổi các bit trong từng nhóm thành số hệ 10 và tiếp
theo đổi sang hệ 16
Ví dụ: Chuyển số nhị phân 10111010001 sang hệ 16
1 0 1 1 1 0 1 0 0 0 1
Chia thành các nhóm 4 bit
(thêm 0 cho đủ 4 bit) 0 1 0 1
1 1 0 1
0 0 0 1
22 20
23 22 20
20
1
4 + 1
5
8+4 + 1
D
1 = (5D1)16
Đối với các số phân nhị phân: chia thành các nhóm 4 bít bắt đầu từ dấu chấm nhị
phân. Sau đó đổi từng nhóm thành số hệ 10 và cuối cùng đổi sang hệ 16.
Ví dụ: Chuyển số phân nhị phân 0.1011110001 sang hệ 16
0 . 1 0 1 1 1 1 0 0 0 1
Chia thành các nhóm 4 bit
0 . 1 0 1 1 1 1 0 0 0 1 0 0
Thêm 2 số 0 cho đủ 4 bit
0 .
B
C
4 =
(0.BC4)16
(4) Chuyển các số hệ 16 sang nhị phân
Chuyển từng chữ số của số cần đổi trong hệ 16 thành dạng nhị phân 4 bit.
Ví dụ: (38C.8E)16 = 0011 1000 1100 . 1000 1110 = (1110001100.10001110)2
2.2 Biểu diễn các số
Hình 2.1 chỉ ra các dạng biểu diễn khác nhau của các dữ liệu trong máy tính.
2.2.1 Biểu diễn các chữ số thập phân
Bùi Thế Hồng, Hà Nội 2002
12
KIẾN TRÚC MÁY TÍNH
Các chữ số thập phân có thể được biểu diễn dưới dạng mã thập phân được nhị
phân hoá (binary-coded decimal – BCD) bằng cách sử dụng 4 bit nhị phân để
biểu diễn các số từ 0 đến 9.
DÊu chÊm cè ®Þnh
C¸c sè nhÞ ph©n
D÷ liÖu sè
DÊu chÊm ®éng
D÷ liÖu
C¸c sè thËp ph©n
D÷ liÖu ch÷
Hình 2.1 Các dạng biểu diễn dữ liệu trong máy tính
Mã thập phân được nhị phân hoá
Số thập phân
Số nhi
Mã BCD
phân
0
1
2
3
4
5
6
7
8
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 1 0 0
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
9
10
11
1 0 0 1
0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1
Ví dụ: (789)10 = (0111 1000 1001)BCD
Mã BCD thường được sử dụng để biểu diễn các số trong các tính toán văn phòng
và tuỳ thuộc vào cấu trúc của bộ nhớ máy tính, mã này được chia thành hai dạng:
dạng thập phân không đóng gói (unpacked decimal) hoặc dạng thập phân đóng
gói (packed decimal).
2.2.2 Biểu diễn nhị phân
(1) Biểu diễn các số nguyên âm
a) Biểu diễn giá trị tuyệt đối của các số nguyên âm
Nếu trong một hệ thống sử dụng 8 bit để biểu diễn các số nguyên thì bit đầu tiên
bên trái được sử dụng để biểu diễn dấu của số, 7 bit còn lại biểu diễn giá trị tuyệt
đối của số.
Số hiệu bit
7 6 5 4 3 2 1 0
Xâu bit biểu diễn số nguyên
dấu chấm thập phân
Bit dấu của số nguyên (“0” – dương, “1” – âm)
Ví dụ:
(00001100)2 = 23 + 22 = 8 + 4 = (12)10
Bùi Thế Hồng, Hà Nội 2002
13
KIẾN TRÚC MÁY TÍNH
(10001100)2 =- (23 + 22) = -(8 + 4) = (- 12)10
Theo cách này thì số 0 có hai cách biểu diễn: 00000000 (số 0 dương) và
10000000 (số 0 âm) và như vậy sẽ làm cho việc thao tác trở nên phức tạp và vì
vậy cách biểu diễn này không được sử dụng rộng rãi.
b) Phần bù nhị phân của các số nguyên âm
Các số âm thường được biểu diễn trong máy tính dưới dạng phần bù. Đối với mỗi hệ đếm
đều có hai dạng phần bù: phần bù cơ số (hay còn gọi là phần bù đúng) và phần bù cơ số
bớt đi 1.
Phần bù cơ số bớt một. Các chữ số của phần bù đúng được tạo ra bằng cách lấy cơ số
bớt đi một rồi trừ chữ số tương ứng của số cần lấy phần bù.
Phần bù đúng. Phần bù đúng bằng phần bù cơ số bớt một cộng thêm 1 vào chữ số có
ít ý nghĩa nhất.
•
Các phần bù trong hệ 10
Phần bù 9
Phần bù 9 của (123)10 là:
9 9 9
- 1 2 3
8 7 6
Phần bù 10
Phần bù 10 của (123)10 là:
9 9 9
- 1 2 3
8 7 6
+
1
8 7 7
•
Các phần bù trong hệ 2
Phần bù 1: Đổi các chữ số của số cần lấy phần bu theo nguyên tắc “0” thành “1”
và “1” thành “0”.
Ví dụ: phần bù 1 của 10110011 là 01001100
Phần bù 2: Lấy phần bù cộng thêm 1 vào bít ít ý nghĩa nhất.
Ví dụ: phần bù 2 của 10110011 là 01001100 + 1 = 01001101
Cách làm tắt đối với phần bù 2: Giữ nguyên tất cả các chữ số “0” liên tiếp ở bên
phải nhất và một chữ số “1” tiếp theo ở ngay bên trái, sau đó đổi các chữ số “1”
còn lại thành “0” và các chữ số “0” thành “1”.
Ví dụ: phần bù 2 của 10011000 là (01100111)phần bù 1 + 1 = 01101000
Theo cách làm tắt:
Lấy phần bù 1
1 0 0 1 1 0 0 0
giữ nguyên các chữ số “0” phải nhất và một chữ số “1”
0 1 1 0 1 0 0 0
•
Biểu diễn các số âm bằng phần bù 1 và 2
Biểu diễn bằng phần bù 1:
Ví dụ:
0 1 1 1 1 1 1 0
(+126)10
Bùi Thế Hồng, Hà Nội 2002
14
KIẾN TRÚC MÁY TÍNH
Dấu
lấy bù 1
1 0 0 0 0 0 0 1
(-126)10
Tồn tại cả + 0 và - 0 đối với số 0.
Biểu diễn bằng phần bù 2:
Ví dụ:
0 1 1 1 1 1 1 0
(+126)10
(-126)10
Dấu
lấy bù 2
1 0 0 0 0 0 1 0
So sánh cách hai kiểu biểu diễn: Hình 2.2 chỉ ra một ví dụ về các miền giá trị của
các số có thể biểu diễn được bằng phần bù 1 và phần bù 2 (ba bit nhị phân).
Phần bù 1
Phần bù 2
0
0
0
0
1
1
1
1
1 1 = 3
1 0 = 2
0 1 = 1
0 0 = 0
1 1 = - 0
1 0 = - 1
0 1 = - 2
0 0 = - 3
0
0
0
0
1
1
1
1
1 1 = 3
1 0 = 2
0 1 = 1
0 0 = 0
1 1 = - 1
1 0 = - 2
0 1 = - 3
0 0 = - 4
[- 3 , + 3]
[- 4 , + 3]
Hình 2.2 Miền giá trị của phần bù 1 và phần bù 2
Nhận xét:
-
Miền các giá trị số có thể biểu diễn được bằng n bit nhị phân dưới dạng phần
bù 1:
[- (2n-1 - 1) , (2n-1-1)]
-
Miền các giá trị số có thể biểu diễn được bằng n bit nhị phân dưới dạng phần
bù 2:
[- 2n-1 , (2n-1-1)]
-
-
Phần bù 2 được sử dụng phổ biến hơn phần bù 1 vì hai lý do: chỉ tồn tại một
số 0 trong biểu diễn bằng bù 2 và do đó miền biểu diễn rộng hơn.
Có thể thay phép trừ bằng phép cộng số bị trừ với phần bù 2 của số trừ. Có
nghĩa là không cần phải có mạch trừ mà chỉ cần một mạch cộng để thực hiện
cả hai phép cộng và trừ.
Ví dụ: 100 – 90 = 10
(100)10 = (01100100)2
(90)10 = (01011010)2 -> (-90)10 = (10100110)2
0 1 1 0 0 1 0 0
+ 1 0 1 0 0 1 1 0
1 0 0 0 0 1 0 1 0 = (10)10
Vì số bit chỉ là 8 nên phép nhớ 1 sang bit thứ 9 bị bỏ qua
Bùi Thế Hồng, Hà Nội 2002
15
KIẾN TRÚC MÁY TÍNH
(2) Dấu chấm cố định
Dấu chấm cố định là một định dạng biểu diễn dữ liệu được sử dụng chủ yếu cho các
số kiểu nguyên.
Biểu diễn phần nguyên:
16 bits
Các bits biểu diễn giá trị (15 bit)
Bit dấu (1 bit)
Dấu chấm nhị phân
Biểu diễn phần phân:
Các bits biểu diễn giá trị
Dấu chấm nhị phân
Bit dÊu
(3) Dấu chấm động
Định dạng dấu chấm động được sử dụng để biểu diễn các dữ liệu kiểu thực.
Cách biểu diễn số dưới dạng khoa học:
Ví dụ: 1,500,000,000 (dấu phẩy được sử dụng để phân chia thành nghìn, triệu, tỷ).
= 15 x 108
Trong định dạng dấu chấm động số này viết dưới dạng: 0.15 x 1010
Sè mò
§Þnh trÞ C¬ sè
a) Cách biểu diễn dưới dạng dấu chấm động trong máy tính (32 bit)
S
Phần mũ (7 bits)
Phần định trị (24 bits)
DÊu cña phÇn ®Þnh trÞ
VÞ trÝ cña dÊu chÊm ®-îc coi lµ ë ®©y
Phần mũ: phần mũ gồm 7 bits nên miền giá trị của số mũ là từ (0000000)2 đến
(1111111)2 hay từ 0 đến 127 trong hệ thập phân. Vì vậy, có thể coi miền này tương
ứng là từ –64 đến +63.
Vì có thể coi cơ số là 16 nên giá trị số có thể biểu diễn được với phần mũ 7 bit là từ
16-64 đến 1663. Hình 2.3 là minh hoạ của miền giá trị này.
Tràn
âm
Thấm
âm
Thấm
Tràn
Giá trị có thể
dương Giá trị có thể dương
biểu diễn
biểu diễn
63
-64
-64
63
0.0
- 16
-16
16
16
Hình 2.3 Miền giá trị có thể biểu diễn được bằng phần mũ 7 bits
Phần định trị: Khi số thập phân 0.05 được chuyển sang nhị phân, nó sẽ trở thành một
dẫy số lặp vô hạn (0.000011001100110011001100...)2.
Bùi Thế Hồng, Hà Nội 2002
16
KIẾN TRÚC MÁY TÍNH
0
1 0 0 0 0 0 0
0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 . . .
((((((((((((((((((((((
(0. 0 0 00 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0)2 x 160
+
Trong trường hợp này, vì phần định trị chỉ có 24 bits nên số thập phân 0.05 không thể
được biểu diễn chính xác. Tuy nhiên, ta thấy ngay sau dấu chấm nhị phân có 4 chữ số
“0”, vì thế có thể dịch 4 bits sang trái để biểu diễn thêm 4 chữ số trong phần còn dư
chưa biểu diễn được. Vì dịch sang trái 4 bits có nghĩa là đã nhân thêm với 24 = 16 nên
ta phải trừ phần mũ đi 1 (chia cho 16).
Quá trình làm như trên được gọi là chuẩn hoá tức là làm cho phần bị làm tròn trở
thành tối thiểu. Việc chuẩn hoá do phần cứng tự động thực hiện. Sau khi chuẩn hoá,
0.05 được biểu diễn dưới dạng sau:
0
0 1 1 1 1 1 1
1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0
((((((((((((((((((((((
(0. 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0)2 x 16-1
+
b) Phép dịch chuyển
Trong hệ nhị phân, mỗi chữ số có một trọng số bằng luỹ thừa của 2. Nếu một số nhị
phân bị dịch sang trái hay sang phải một vị trí thì giá trị của nó sẽ được tăng lên hay
giảm đi 2 lần. Tương tự như vậy, nếu dịch một số i bits sang trái hoặc i bíts sang phải
thì số này sẽ tăng lên hoặc giảm đi 2i lần.
Có hai kiểu dịch chuyển: dịch chuyển số học và dịch chuyển logic.
•
Dịch chuyển số học
Phép dịch chuyển số học được sử dụng để tính các giá trị số ở định dạng dấu chấm
cố định với các số âm được biểu diễn dưới dạng phần bù 2.
Qui tắc dịch chuyển số học:
Bit dấu không bị dịch chuyển.
Bit bị dịch ra ngoài coi như là mất.
Các bits trống được tạo ra do phép dịch sẽ được điền số 0 nếu dịch trái và điền
giá trị của bit dấu nếu dịch phải.
Ví dụ: Tính (22)10 x 4 bằng phép dịch số học
Dùng 8 bits để biểu diễn (22)10 dưới dạng nhị phân: (22)10=(10110)2
0
0
0
1
0
1
1
0
Dịch 2 bits sang trái:
0
0
0
1
0
1
0
1
0
0
0
0
1
0
1
1
= (88)10 = (22 x 4)10
Bùi Thế Hồng, Hà Nội 2002
17
KIẾN TRÚC MÁY TÍNH
0 0 (hai bits này bị mất)
điền thêm hai số 0
•
Dịch chuyển logic
Phép dịch logic được sử dụng để thay đổi vị trí bit. Sự khác nhau cơ bản giữa hai
phép dịch này là ở bit dấu.
Qui tắc dịch chuyển logic:
Bit dấu cũng bị dịch chuyển.
Các bits bị dịch ra ngoài bị coi như bị mất.
Các bits trống được tạo ra do phép dịch được điền số 0.
Ví dụ: Tính giá trị của (-16)10 sau khi dịch số học và dịch logic 2 bits sang phải.
a. Dịch số học
- Biểu diễn (-16)10 dưới dạng nhị phân phần bù 2 dấu chấm cố định 8 bits
1
1
1
1
0
0
0
0
- Dịch số học 2 bit sang phải
1
1
1
1
0
0
0
0
0
1
1
1
1
0
0
0
= (-4)10
0 0 (hai bit nµy bÞ mÊt)
hai bit nµy ®-îc ®iÒn bit dÊu
a. Dịch logic hai bit sang phải
1
1
1
1
0
0
0
0
0
0
0
0
1
1
1
1
= (60)10
0 0 (hai bit nµy bÞ mÊt)
hai bit nµy ®-îc ®iÒn sè 0
2.3 Độ chính xác của các cách biểu diễn và của phép toán
Vì có những hạn chế về dung lượng nhớ của máy tính nên không phải tất cả các giá trị số
mà chúng ta sử dụng đều có thể biểu diễn được một cách chính xác. Nói cách khác, một
giá trị được biểu diễn trong máy tính chỉ là một biểu diễn gần đúng.
2.3.1 Độ chính xác của các cách biểu diễn giá trị số
Bùi Thế Hồng, Hà Nội 2002
18
KIẾN TRÚC MÁY TÍNH
Độ chính xác của một số là miền sai số của nó, do đó “độ chính xác cao” nghĩa là “sai số
nhỏ”. Nếu có đủ số bit để biểu diễn dạng chuyển đổi của các số thập phân sang nhị phân
thì sẽ không có sai số. Tuy nhiên, đối với phần phân thì lại không đơn giản vì nhiều phần
phân không thể biểu diễn một cách chính xác dưới dạng nhị phân.
(1) Độ chính xác đơn
Trong các tính toán khoa học và kỹ thuật, các giá trị số được biểu diễn bằng các
chữ số nhị phân theo đơn vị từ (word). Độ dài của từ tuỳ thuộc vào phần cứng. Ví
dụ, khi 1 từ có độ dài 16 bit thì người ta thường nói một giá trị số được biểu diễn
bằng 1 từ có độ chính xác đơn.
Miền xác định của các số nguyên được biểu diễn bằng 16 bit là:
[(0000 0000 0000 0000)2 = 0 , 65 535 = (1111 1111 1111 1111)2]
Miền xác định của các số thập phân được biểu diễn bằng 16 bit (không có dấu):
[[(0000 0000 0000 0000)2 = 2-16 , 1-2-16 = (1111 1111 1111 1111)2]
(2) Độ chính xác gấp đôi
Có thể mở rộng miền xác định của các số có thể biểu diễn được trong máy tính
bằng cách tăng số lượng bit lên gấp đôi. Khi một số được biểu diễn bằng 32 bit (2
từ 16 bit) thì được gọi là số có độ chính xác gấp đôi.
Miền xác định của các số nguyên được biểu diễn bằng 32 bit là:
[0, 4 294 967 295 = 232-1]
Miền xác định của các số thập phân được biểu diễn bằng 32 bit (không có dấu):
[2-32<= 0.00000000023283064365387 , 1-2-32<=0.99999999976716900000000]
2.3.2 Độ chính xác phép toán
•
Độ chính xác của phép toán đối với cách biểu diễn dấu chấm động
Tràn (overflow) và thấm (underflow)
Khi thực hiện phép nhân các số cực lớn hoặc cực nhỏ có thể xẩy ra trường hợp kết
quả nằm ngoài miền biểu diễn của các số. Nếu kết quả lớn hơn giá trị tuyệt đối
cực đại có thể biểu diễn được thì phép toán này được nói là gây tràn còn ngược lại
khi tích nhỏ hơn giá trị tuyệt đối cực tiểu có thể biểu diễn được thì phép toán này
được gọi là làm thấm mất.
Xoá. Khi thực hiện phép trừ hai số dấu chấm động xấp xỉ nhau có thể thu được
một kết quả rất nhỏ rơi về phía trái giá trị nhỏ nhất có thể biểu diễn được. Trường
hợp này được gọi là phép xoá.
Mất thông tin. Khi cộng hai số dấu chấm động thì số có số mũ nhỏ hơn phải điều
chỉnh để có cùng số mũ với số kia, tức là tăng phần mũ và giảm phần định trị
bằng cách dịch sang phải. Nếu lại cộng một số cực lớn với một số cực nhỏ thì khi
điều chỉnh số nhỏ theo số lớn có thể dẫn đến dịch hết cả phần định trị của nó và
dẫn đến mất thông tin.
2.4 Biểu diễn các giá trị không phải số
Bùi Thế Hồng, Hà Nội 2002
19
KIẾN TRÚC MÁY TÍNH
2.4.1 Biểu diễn các ký tự
Các ký tự thường được biểu diễn bằng 8 bits. Bộ mã dùng để biểu diễn các ký tự
được gọi là bộ mã trao đổi thông tin. Khi gõ trên bàn phím, các ký tự được nhập
vào máy tính dưới dạng mã 1 byte.
Các phím trên bàn phím bao gồm: các phím số (10 phím), các phím chữ (chữ
thường, chữ hoa, tổng cộng 52 chữ), cám phím ký hiệu (40 kiểu), và các phím ký
tự điều khiển (34 kiểu).
2.4.2 Các bảng mã ký tự
•
ASCII (American Standard Code for Information Interchange)
ASCII là bảng mã 8 bit do Viện Tiêu chuẩn Quốc gia của Mỹ (ANSI) đưa ra năm
1962, trong đó 7 bit được sử dụng để mã hoá các chữ số và các ký tự, bit thứ 7 được
sử dụng để phát hiện lỗi. Bảng mã này được sử dụng phổ biến trên các máy tính và
trong các phương thức truyền dữ liệu.
•
Mã ISO (Inernational Organization for Standardization)
Mã ISO là bảng mã 7 bit do Tổ chức Chuẩn hóa Quốc tế đưa ra năm 1967 dựa trên
bảng mã ASCII.
•
Unicode
Unicode là hệ thống mã 16 bit và được sử dụng thống nhất cho tất cả các nước do
Apple, IBM, Microsoft và một số công ty của Mỹ đề xuất và thiết kế. ưu điểm của bộ
mã này là có thể mã hoá được tất cả các con chữ của mọi ngôn ngữ trên thế giới. Hiện
tại, Việt nam cũng đang xúc tiến việc thống nhất mã hoá chữ Việt bằng Unicode và
phát triển bộ gõ.
2.4.3 Biểu diễn âm thanh
Hiện nay công nghệ thông tin đã hộ trợ cho hầu hết các phương tiện truyền tin và
dữ liệu có thể xử lý trên máy tính không chỉ là dữ liệu số và ký tự.
Dữ liệu âm thanh có dạng sóng vì vậy muốn xử lý âm thanh trên máy tính cần
phải số hoá các sóng âm. Ngược lại muốn phát lại âm thanh từ máy tính cần phải
biến dữ liệu âm thanh đã số hoá trở lại dạng sóng âm.
2.4.4 Biểu diễn hình ảnh
Không chỉ âm thanh mà ngay cả hình ảnh cũng có thể được biểu diễn trong máy
tính. Trong máy tính, một bức ảnh được biểu diễn như là một tập các chấm.
Trường hợp đơn giản nhất là mỗi chấm chỉ có hai trạng thái, đen hoặc trắng. Khi
đó, có thể dễ dàng biểu diễn các bức ảnh đen trắng.
Ngày nay, hầu hết các bức ảnh đều có mầu. Các màn hình máy tính thường có rất
nhiều hệ thống mầu được kết hợp từ ba mầu cơ bản (Đỏ, Xanh lục, và Xanh da
trời) với 256 mức và biểu diễn được xấp xỉ 16 triệu mầu. Do đó, đối với các ảnh
mầu, cần phải sử dụng 24 bits để biểu diễn một chấm ảnh (8 bits cho một mầu).
Bùi Thế Hồng, Hà Nội 2002
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Đề cương chi tiết môn Kiến trúc máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- de_cuong_chi_tiet_mon_kien_truc_may_tinh.doc