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

Giáo trình Cấu trúc máy tính

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 (1.51 MB, 126 trang )

TRƯỜNG ĐẠI HỌC ĐÀ LẠT
F 7 G







GIÁO TRÌNH
CẤU TRÚC MÁY TÍNH




NGUYỄN HỮU LỘC




2000
Cấn Trúc Máy Tính
-2-
MỤC LỤC
Chương 1: GIỚI THIỆU CHUNG 5
I. NGÔN NGỮ VÀ MÁY ẢO, MÁY TÍNH NHIỀU CẤP: 5
II. PHẦN CỨNG VÀ PHẦN MỀM: 7
III. LỊCH SỬ PHÁT TRIỂN MÁY TÍNH: 8
1. Thế hệ không: 8
2. Thế hệ thứ nhất: 9
3. Thế hệ thứ hai: 10


4. Thế hệ thứ ba: 10
5. Thế hệ thứ tư: 11
Chương 2: CẤU TRÚC CHUNG MÁY TÍNH 15
I. CÁC BỘ XỬ LÝ 15
1. Thực hiện lệnh 16
2. Tổ chức CPU 17
3. Thực hiện lệnh song song: 18
II- BỘ NHỚ CHÍNH: 22
1. Bit 22
2. Đòa chỉ bộ nhớ: 23
3. Trật tự của byte: 24
4. Mã sửa lỗi: 25
5. Bộ nhớ chính trong các IBM PC 26
III- CÁC THIẾT BỊ LƯU TRỮ (BỘ NHỚ PHỤ): 28
1. Băng từ: 28
2. Đóa từ 29
3. Đóa mềm 32
4. Đóa quang 33
IV - CÁC THIẾT BỊ VÀO / RA 35
1. Bàn phím: 38
2. Màn hình: 38
3. Modem: 41
4. Chuột: 45
5. Máy in : 48
6. Ngõ ra nối tiếp chuẩn RS–232–C 54
Chương 3: LỚP VẬT LÝ 57
I. CÁC CHIP VI XỬ LÝ VÀ CÁC BUS 57
1. Các chip vi xử lý: 57
2. Các bus của máy tính 60
3. Bus đồng bộ 62

4. Bus không đồng bộ 65
5. Phân xử bus 67
II. THÍ DỤ VỀ CHIP VI XỬ LÝ VÀ BUS 71
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-3-
1. Chip vi xử lý 8088 của họ Intel 71
2. Thí dụ về bus 74
III. Bộ nhớ 76
1. Phân loại bộ nhớ bán dẫn 77
2. Tổ chức bộ nhớ: 77
3. Một số khái niệm về bộ nhớ khác: 79
IV. Giao tiếp 81
1. Các chip I/O 81
2. Giải mã đòa chỉ 82
Chương 4 LỚP VI CHƯƠNG TRÌNH 85
I. NHẮC LẠI LỚP VẬT LÝ: 86
1. Các thanh ghi: 86
2. Bus nội: 86
II. MỘT VÍ DỤ VỀ VI CHƯƠNG TRÌNH: 88
Chương 4: LỚP VI CHƯƠNG TRÌNH 90
I. NHẮC LẠI LỚP VẬT LÝ: 91
1. Các thanh ghi: 91
2. Bus nội: 91
II. MỘT VÍ DỤ VỀ VI CHƯƠNG TRÌNH: 93
Chương 5: LỚP MÁY QUY ƯỚC 95
I. CÁC THÍ DỤ VỀ LỚP MÁY QUI ƯỚC: 95
II. CÁC KHUÔN DẠNG LỆNH 101
III. KIỂU ĐỊNH VỊ ĐỊA CHỈ : 102
1. Đònh đòa chỉ tức thời: 103

2. Đònh đòa chỉ trực tiếp 103
3. Đònh đòa chỉ thanh ghi 104
4. Đònh đòa chỉ gián tiếp 105
5. Đònh chỉ số 106
6. Đònh đòa chỉ ngăn xếp 107
III. LUỒNG ĐIỀU KHIỂN 108
1. Luồng điều khiển tuần tự và các lệnh nhảy. 108
2. Thủ tục 109
3. Đồng thủ tục 109
4. Bẫy 110
5. Ngắt 110
Chương 6: LỚP MÁY HỆ ĐIỀU HÀNH 112
I. BỘ NHỚ ẢO 113
II. CÁC LỆNH VÀO/RA ẢO 117
1. Các tập tin tuần tự 117
2. Các tập tin truy xuất ngẫu nhiên 119
3. Hiện thực các lệnh vào/ra ảo 120
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-4-
4. Các lệnh quản lý thư mục 124
III. CÁC LỆNH ẢO DÙNG TRONG XỬ LÝ SONG SONG 125
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-5-

CHƯƠNG 1:
GIỚI THIỆU CHUNG

Máy tính số là thiết bò có khả năng giải các bài toán bằng cách thực hiện một số

lệnh hữu hạn. Chương trình máy tính gồm một dãy lệnh sắp xếp theo một trình tự nhất
đònh để thực hiện một việc cho trước. Những linh kiện điện tử trong mỗi máy tính chỉ
có thể nhận biết và thực hiện trực tiếp một số lệnh hữu hạn và một chương trình máy
tính chỉ có thể thực hiện trên máy tính đó nếu sử dụng chính số lệnh hữu hạn đó.

Tập lệnh mà máy tính thực hiện trực tiếp tạo ra một ngôn ngữ cho phép người sử
dụng trao đổi được với máy tính. Đó là ngôn ngữ máy. Khi chế tạo ra một máy tính
mới, người ta tạo ra các lệnh, hình thành ngôn ngữ máy. Thông thường người ta có
khuynh hướng chọn các lệnh này càng đơn giản càng tốt để hạn chế mức độ phức tạp
(và dó nhiên là giá thành ) của các linh kiện điện tử cần thiết. Khó khăn là các ngôn
ngữ máy này còn quá nguyên sơ nên rất khó sử dụng.
I. NGÔN NGỮ VÀ MÁY ẢO, MÁY TÍNH NHIỀU CẤP:

Có 2 cách để giải quyết vấn đề này. Thực tế là cả hai cách này đều nhằm đưa
vào một tập lệnh mới dễ sử dụng hơn ngôn ngữ máy. Tập lệnh mới này tạo thành một
ngôn ngữ mới (ngôn ngữ L2) là tập các lệnh khác lệnh máy (ngôn ngữ L1. )

Cách thứ nhất để thực hiện chương trình viết bằng L2 là dòch lệnh của chương
trình thành dãy các lệnh tương đương L1. Máy tính sẽ thực hiện chương trình mới bằng
L1 thay vì L2. Kỹ thuật này gọi là biên dòch (compile).

Cách thứ 2 là từng lệnh của chương trình viết bằng L2 sẽ được thực hiện tương
ứng với một dãy các lệnh L1. Kỹ thuật này không cần tạo ra toàn bộ một chương trình
L1 nên gọi là phiên dòch (interpret).

Hai khái niệm biên dòch và phiên dòch mới đầu có vẽ hơi giống nhau. Nhìn
chung, lệnh trong L2 sẽ được chuyển thành một dãy lệnh trong L1 để thực hiện. Song
phải thấy rằng trong trường hợp biên dòch tất cả chương trình L2 sẽ phải dòch sang L1
sau đó chương trình L1 thực hiện. Còn với phiên dòch thì mỗi lệnh trong chương trình
L2 được phân tích rồi thực hiện ngay và như vậy dường như không tồn tại chương trình

dòch. Cả hai cách đều được sử dụng rộng rãi.

Với ngôn ngữ L2 có thể hình dung đến một máy tính gọi là máy ảo.
Để biên dòch và phiên dòch được đơn giản, các ngôn ngữ L1 và L2 không nên quá
khác nhau. Nghóa là L2, thường hay hơn L1, vẫn không phải là một ngôn ngữ lập trình
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-6-
lý tưởng. Điều này có vẽ như trái ngược với ý tưởng ban đầu khi tạo ra ngôn ngữ L2:
tạo một ngôn ngữ đơn giản và dễ sử dụng cho con người hơn L1 là ngôn ngữ của máy.

Như vậy người ta lại đònh nghóa một tập lệnh mới gần g với người sử dụng hơn
và ít phụ thuộc hơn vào máy tính như L2. Những lệnh mới này tạo ra một ngôn ngữ L3
nhờ vậy có thể viết các chương trình cho máy tính ảo dùng ngôn ngữ L3. Những
chương trình này chắc chắn sẽ được dòch ra L2.

Người ta có thể tạo ra một chuỗi các ngôn ngữ, loại sau dễ sử dụng hơn so với
loại trước. Mỗi ngôn ngữ mới dựa vào ngôn ngữ đã có trước đó, do vậy người ta xem
máy tính như một chồng các lớp (cấp) như trình bày trong hình 1.1. Ngôn ngữ ở lớp
dưới đơn giản, càng lên lớp trên ngôn ngữ càng phức tạp.

Đa số các máy tính hiện nay có ít nhất 2 cấp. Thường chúng ta thấy các máy tính
có 6 cấp.
Cấp 0: Lớp vật lý. Đó là phần cứng gồm các cửa logic, các cổng (cảng) v.v…
Chúng ta sẽ đi sâu vào cấp 0 trong giáo trình này.



Máy ảo M3,
Ngôn ngữ L3

Máy ảo Mn,
Ngôn ngữ Ln
Cấp n





Cấp 3



Máy thực M1,
Ngôn ngữ máy L1
Máy ảo M2,
Ngôn ngữ L2

Cấp 2




Cấp 1

Hình 1.1: Kiến trúc máy tính nhiều cấp
Cấp 1: Lớp vi chương trình. Khác với cấp 0, trong cấp này ta thấy có chương trình
gọi là vi chương trình dùng để phiên dòch những lệnh ở cấp 2.
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-7-

Cấp 2: Lớp máy qui ước. Thường ở lớp này tất cả các máy tính đều có những
điểm giống nhau dù chúng được tạo bởi những nhà sản xuất khác nhau. Các nhà sản
xuất đều cung cấp kèm theo máy "Sổ tay ngôn ngữ máy" trong đó có tập lệnh riêng
của từng máy.
Cấp 3: Lớp hệ điều hành. Có thể xem đây là một lớp lai (hybrid). Ngoài một số
các lệnh đã biết (có trong cấp 2 ) trong lớp này còn xuất hiện nhiều lệnh đặc biệt như
tổ chức quản lý bộ nhớ, khả năng thực hiện nhiều lệnh song song v.v…
Cấp 4: Lớp hợp ngữ. Dùng những từ gợi nhớ để lập trình do vậy thuận tiện hơn.
Cấp 5: Lớp ứng dụng: Dùng ngôn ngữ cấp cao để lập trình.

Người ta có thể có cấp 6 hoặc cấp cao hơn cho những ứng dụng cụ thể được xem
là công cụ cho các lónh vực chuyên ngành.

Có thể thấy tồn tại một khoảng cách rất lớn giữa cấp 3 và cấp 4. Những nhà lập
trình hệ thống thường chú ý đến các cấp thấp (từ cấp 3 trở xuống), trong khi ấy với
những nhà lập trình ứng dụng lại quan tâm đến những cấp cao hơn (từ cấp 4 lên).
Ngôn ngữ sử dụng ở cấp 1,2,3 là ngôn ngữ số trong khi ấy từ cấp 4 người ta sử dụng
những từ, những chữ viết tắt dễ hiểu hơn với con người. Hơn thế phương pháp để hỗ
trợ các cấp trên là khác nhau: Cấp 2 và 3 thường được phiên dòch, còn cấp 4 và 5
thường là biên dòch (điều này không phải luôn đúng).
II. PHẦN CỨNG VÀ PHẦN MỀM:

Những chương trình viết bằng ngôn ngữ máy đều có thể thực hiện trực tiếp bằng
các mạch điện tử mà không cần phải biên dòch hay phiên dòch. Các mạch điện tử này
kết hợp với các phần tử cơ khí, các dây nối gọi chung là phần cứng. Như vậy phần
cứng là những gì có thể sờ thấy được như các mạch tích hợp, các bảng mạch, dây nối,
nguồn nuôi, bộ nhớ, máy in, thiết bò đầu cuối v.v… khác với những gì không sờ thấy
được như các ý tưởng trừu tượng, các thuật toán hoặc các lệnh.

Như vậy phần mềm gồm các thuật toán và cách thể hiện chúng bằng lệnh: các

chương trình. Những chương trình này được cất giữ trên những thiết bò lưu trữ như đóa
từ, đóa quang….

Có lập luận cho rằng phần cứng và phần mềm tương đương với nhau về mặt logic
(hardware and software are logically equivalent). Bất kỳ một phép toán nào đó giải
được bằng phần mềm đều có thể thực hiện trực tiếp bằng phần cứng và bất kỳ một
lệnh nào đó thi hành bằng phần cứng đều có thể mô phỏng bằng phần mềm. Ranh giới
giữ phần cứng và phần mềm thường xuyên thay đổi. Có những cái hôm nay thực hiện
bằng phần mềm, ngày mai lại thực hiện bằng phần cứng và ngược lại. Hơn thế nữa
ngày càng thấy rằng ranh giới giữ các lớp máy tính ngày càng không rõ ràng. Song
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-8-
việc phân đònh các lớp giúp cho người làm việc với máy tính tại 1 lớp n nào đó sẽ
không cần biết nhiều đến chi tiết các lớp dưới. Như vậy việc ứng dụng máy tính ngày
càng dễ dàng mặc dầu chúng ngày càng phức tạp.
III. LỊCH SỬ PHÁT TRIỂN MÁY TÍNH:
1. Thế hệ không:
Những máy tính cơ và điện từ (1642-1945)
Blaise Pascal (1623-1662) là người có công chính trong việc tạo ra máy làm toán
đầu tiên, chính vì lý do này mà về sau Niklaus Wirth đã lấy tên Pascal đặt cho ngôn
ngữ lập trình mà ông đã sáng tạo nên. Năm 1642 lúc ấy Pascal mới 19 tuổi đã tạo ra
một máy hoàn toàn bằng cơ khí điều khiển bằng tay và thực hiện được phép cộng và
phép trừ . 30 năm sau, Baron Gottfried von Leibniz (1646-1716) thêm vào phép nhân
và phép chia và đó chính là tiền thân của máy tính bỏ túi (calculator) ngày nay của
chúng ta.
Mãi đến 150 năm sau đóù Charles Babbage (1792-1871), giáo sư toán tại Đại học
Cambridge, đã thiết kế và xây dựng được máy sai phân (difference engine). Máy chỉ
tính toán với một thuật toán đơn, phương pháp sai phân hữu hạn sử dụng các đa thức .
Máy này hoạt động tốt tuy vậy Babagge mong thực hiện được với nhiều thuật toán

khác hơn và ông đã để nhiều thời gian nghiên cứu tạo ra 1 máy tính mới, máy phân
tích (analytical engine). Máy này gồm bốn bộ phận: Quầy bán hàng (Bộ nhớ); cối xây
(Bộ tính toán), ngõ vào (Bộ đọc bìa đục lỗ) và ngõ ra (bộ xuyên bìa hay máy in). Cối
xây nhận các toán hạng từ quầy bán hàng sau đó thực hiện cộng, trừ, nhân, chia và
chuyển kết quả về quầy bán hàng. Tất cả đều thực hiện bằng cơ khí. Cái mới trong
máy này là nó đọc các lệnh từ bìa đục lỗ và xử lý chúng. Máy này được lập trình nhờ
1 ngôn ngữ đơn giản gọi là hợp ngữ. Ada Augusta Lovelace, con gái của một nhà thơ
Anh tên Lord Byron và cũng là người trợ lý của Babagge là người đầu tiên viết chương
trình cho máy tính. Vì vậy sau này Bộ quốc phòng Hoa kỳ đã lấy tên Ada để đặt cho
một ngôn ngữ lập trình do nhóm Bull tạo ra.
Tuy nhiên Babbage không thể tạo ra cái máy hoàn toàn như ý vì công nghệ thế
kỷ thứ XIX đã không đáp ứng được. Tuy vậy những ý tưởng của Babagge đã đặt nền
móng cho máy tính điện tử ngày nay, cũng chính vì vậy nên có thể xem Babbage là
Ông tổ của ngành máy tính hiện nay.
Trong những năm 1930 một kỹ sư Đức tên Konrad Zuse đã tạo ra một số máy
tính làm bằng rơ le điện từ dù chưa biết đến công trình của Babagge. Rất tiếc là tất cả
các máy này đều đã bò phá hũy trong những đợt ném bom xuống Berlin năm 1944.
Song vẫn có thể xem ông là một trong những người tiên phong chế tạo ra máy tính.
Tại Hoa kỳ, John Atanassoff thuộc Iowa State College và George Stibbitz thuộc
Bell Labs đã chế tạo ra các máy tính. Nếu như máy của Atanassoff không chạy được
như mong muốn thì máy của Stibbitz với yêu cầu thấp hơn đã hoạt động tốt và được
giới thiệu năm 1940 tại Dartmouth College. Một trong những phụ tá của Stibbitz, John
Mauchley là giáo sư vật lý tại Đại học Pennsylvania mà chúng ta sẽ đề cập sau. Cùng
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-9-
lúc ấy Howard Aiken để thực hiện luận án tại Havard đã phải làm một khối lượng lớn
các bài toán bằng tay. Chính vì vậy ông mong muốn thực hiện các bài toán một cách
tự động, sau đó nhờ các công trình của Babagge mà ông tìm thấy trong thư viện, ông
quyết đònh tạo một máy bằng rờ le mà trước đó Babagge đã không thể thực hiện được

bằng các bánh xe răng cưa.
Máy tính đầu tiên của Aiken là máy Mark I, được hoàn tất năm 1944 ở Harvard
gồm 72 từ, mỗi từ 23 số thập phân và có chu kỳ lệnh là 6 sec. Việc xuất nhập dùng các
băng giấy đục lỗ. Sau đó Aiken hoàn tất máy Mark 2 và các máy tính rơ le trở nên lỗi
thời. Kỹ nguyên điện tử đã bắt đầu.
2. Thế hệ thứ nhất:
Những máy tính đèn điện tử (1945-1955)
Các máy tính điện tử được phát triển nhanh trong thế chiến thứ 2 phục vụ các
mục đích quân sự. Tuy vậy các công trình này đều nằm trong các dự án bí mật quân
sự. Chỉ biết rằng tại Đức có nhữnng máy tính của Zuse, tại Anh có COLOSSUS mà
một trong những người tham gia thiết kế là nhà toán học nỗi tiếng người Anh tên Alan
Turing.
Tại Hoa kỳ, John Mauchley đề nghò quân đội tài trợ cho việc xây dựng máy tính
điện tử. Đề nghò được chấp thuận vào năm 1943, Mauchley và sinh viên J. Presper
Eckert, tiến hành xây dựng một máy tính điện tử gọi là ENIAC (Electronic Numerical
Integrator And Computer). Máy này gồm 18.000 đèn điện tử và 1500 rờ le, nặng 30
tấn và tiêu thụ 140KW. Sau này người ta thường xem ENIAC là máy tính điện tử đầu
tiên của nhân loại.
Sau chiến tranh, Mauchley và Eiker tổ chức một khóa học hè để mô tả các công
việc của họ cho những bạn đồng nghiệp. Khóa học là sự khởi đầu cho sự phát triển ồ
ạt trong việc thiết kế các máy tính số lớn. Maurice Wilkes thiết kế EDSAC tại Đại học
Cambridge. Các máy khác như JOHNIAC ở Rand Corporation, ILLIAC ở Đại học
Illinois, MANIAC ở Los Alamos Laboratory, WEIZAC ở Viện Weizmann nước Israel
v.v…
Eckert và Mauchley làm ra máy kế tiếp EDVAC (Electronic Discrete Variable
Automatic Computer) , dự án này bò tổn hại sau khi họ rời khỏi Penn để thành lập công
ty máy tính ở Philadelphia sau này là công ty Unisys.
Trong lúc ấy, một trong những người tham gia trong dự án ENIAC trước đây là
nhà toán học nổi tiếng John von Neumann đến Princeton và thiết kế ra máy IAS. Ông
đã đưa ra thiết kế cơ bản gọi là máy von Neumann. Máy tính có khả năng lưu trữ

chương trình đầu tiên , và đến nay vẫn là cơ sở cho hầu hết các máy tính số.
Vào cùng thời gian von Neumann xây dựng máy IAS, các nhà nghiên cứu ở
M.I.T. cũng xây dựng một máy tính, Whirlwind 1. Dự án này dẫn đến phá minh ra bộ
nhớ lõi của Jay Forrester và dẫn đến tạo ra các máy tính mini thương mại đầu tiên.
Với công việc ban đầu là sản xuất ra các máy đục lỗ cho các bìa và các máy xếp
bìa bằng cơ khí, năm 1953 IBM sản xuất ra máy tính 701, sau đó máy 704 ra đời và
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-10-
năm 1958 IBM sản xuất ra máy 709 và trở thành một trong những công ty máy tính
hàng đầu thế giới.
3. Thế hệ thứ hai:
Những máy tính transistor (1955-1965)
Transistor được phát minh ở Bell Labs năm 1948 bởi John Bardeen, Walter
Brattain và William Shockley (Giải thưởng Nobel Vật lý 1956). Trong 10 năm,
transistor đã cách mạng hoá máy tính và vào cuối thập niên 50 các máy tính đèn điện
tử bò loại bỏ. Máy tính transistor đầu tiên được xây dựng ở Lincoln Laboratory của
M.I.T. gọi là TX-0 (Transistorized eXperimental computer 0).
Một trong các kỹ sư làm tại đấy, Kenneth Olsen, thành lập công ty DEC năm
1957 để sản xuất máy tính thương mại. Năm 1961 máy PDP-1 xuất hiện với giá thành
nhiều so với các máy tính trước đó. Một trong những đổi mới của PDP-1 là bộ hiển thò
và khả năng vẽ nhiều điểm trên màn hình 512x512. Công nghiệp máy tính mini được
khai sinh .
Vài năm sau đó DEC giới thiệu PDP-8, máy 12 bit nhưng giá thành rẻ hơn PDP-1
gần 10 lần. PDP-8 có một đổi mới chính, đó là bus đơn gọi là omnibus. Một bus là một
tập các dây nối song song dùng để liên kết các thành phần khác nhau trong 1 máy tính.
Cấu trúc này được chấp nhận và thực hiện hầu hết các máy tính nho.û
Với công ty IBM, họ xây dựng một phiên bản của 709 bằng transistor, máy 7090
và sau đó 7094. Vào thời điểm này IBM đã trở thành một công ty thiết kế máy tính
chính nhờ bán các máy hướng kinh doanh nhỏ với máy 1401. Máy này có thể đọc và

ghi băng từ, đọc và đục lỗ các bìa, in kết quả nhanh hơn 7094.
Năm 1964, một công ty khởi đầu mới, CDC giới thiệu máy 6600, một máy có tốc
độ nhanh hơn máy 7094 vì bên trong CPU có một cơ chế song song thật sự.
Có nhiều náy tính khác xuất hiện trong thời kỳ này tuy vậy chỉ có một máy nổi
bật với một lý do khá khác biệà đáng đề cập, máy Bourroughts B5000. Các nhà thiết
kế có chiến thuật khác so với các đối thủ cạnh tranh là họ đặt biệt xây dựng một máy
với ý đònh lập trình bằng ngôn ngữ Algol 60, một ngôn ngữ có trước PASCAL, và bao
gồm nhiều đặc trưng trong phần cứng tạo dễ dàng cho công việc của trình biên dòch.
4. Thế hệ thứ ba:
Những máy tính IC (1965-1980)
Mạch tích hợp IC (integrated circuit) hay còn gọi vi mạch tích hợp được phát
minh cho phép vài chục transistor được đặt trong một chip đơn. Vào năm 1964, IBM ,
một công ty máy tính hàng đầu giới thiệu một sản phẩm, System 360 dùng vi mạch.
Máy được thiết kế cho cả tính toán trong thương mại và tính toán trong khoa học.
System 360 có nhiều đổi mới, quan trong là hệ này vài kiểu (model) chạy cùng một
loại hợp ngữ, có công suất và kích thước tăng.Phần mềm viết viết trên cơ sở dùng được
trên các máy kiểu khác. Ý tưởng về các họ máy được ưa chuộng ngay lập tức, và trong
một vài năm hầu hết các nhà sản xuất máy tính có một họ các máy chung.
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-11-
Đổi mới quan trọng khác trong 360 là đa lập trình (multi-programming), có vài
chương trình trong bộ nhớ đồng thời để khi một chương trình đang chờ việc xuất/nhập
hoàn tất, chương trình khác có thể tính toán 360 cũng là máy tính đầu tiên có thể mô
phỏng các máy tính khác. Một đặc trưng khác là không gian đòa chỉ lớn (lúc bấy giờ)
cho 2
24
byte nhớ (16 megabyte).
Thế giới máy tính mini cũng đã có một bước tiến lớn trong thế hệ máy tính vi
mạch khi DEC giới thiệu máy PDP-11, một kế thừa 16-bit của PDP-8. Trên nhiều khía

cạnh thì có thể xem PDP-11 như người em của họ 360. Chúng đều có các thanh ghi
hướng từ và một bộ nhớ hướng byte. PDP-11 rất được các trường Đại học ưa chuộng và
DEc dẫn đầu trong việc sản xuất các máy tính mini so với các nhà sản xuất khác.
5. Thế hệ thứ tư:
Những máy tính VLSI và PC (1980-?)

Vào thập niên 80, vi mạch cỡ cực lớn (Very Large Scale Integration) có khả năng
chứa vài chục ngàn cho đến hàng chục triệu transistor trên một chip đơn. Sự phát triển
này dẫn đến có thể sản xuất các máy tính nhỏ hơn và nhanh hơn. Ngày càng xuất hiện
các máy tính dùng cho cá nhân với giá cả rất thấp gọi là máy vi tính.

Các máy vi tính được sử dụng theo cách khác với máy tính lớn. Chúng được sử
dụng cho việc xử lý văn bản (word processing), thực hiện bảng tính (spreadsheet) và
một số các ứng dụng mà các máy tính lớn hơn không thực hiện tốt được.



Hiện nay các máy tính có thể chia làm 5 loại:

Loại M
IPS
(*)
Meg
abyte
Máy Thông dụng
Máy vi
tính
1 1 IBM
PC
Xử lý văn

bản
Máy tính
mini
2 4 PDP-
11/84
ĐK thời gian
thực
Siêu
mini
1
0
32 SUN-4 Máy chủ
mạng
Mainfra
me
3
0
128 IBM
300
Ngân hàng
Siêu
máy tính
1
25
1024 Cray 2 Dự báo thời
tiết
MIPS: (Million of Instructions Per Second) Triệu lệnh trong 1 giây.

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính

-12-
Họ Intel:
Năm 1968 công ty Intel được thành lập để chế tạo các chip nhớ. Sau đó chuyển
sang sản xuất các CPU đơn chip theo yêu cầu và Intel đã thực hiện chip 4004 loại 4 bit
và 8008 loại 8 bit. Từ sự thành công bất ngờ từ 2 loại chip trên, Intel đầu tư chip đa
năng (general purpose) 8080 và sản phẩm này đã gây sóng gió trong công nghiệp và
trở thành mặt hàng có thò trường lớn. Intel đã bán được vài triệu sản phẩm này. Năm
1976 Intel cho ra đời 8085 là 8080 đóng vỏ chung với vài thành phần vào/ra bổ sung.
Rồi kế tiếp Intel cho ra đời 8086, một CPU đơn chip 16-bit thật sự. Sau đó là sự xuất
hiện 8088 có cấu trúc giống 8086 nhưng bus dữ liệu chỉ có 8 bit nên giá thành rẻ hơn
và chậm hơn. Khi IBM chọn 8088 làm CPU cho các máy vi tính IBM PC đầu tiên, chip
này trở thành chuẩn công nghiệp của máy tính cá nhân.

Vài năm kế tiếp, Intel cho ra đời 80186 và 80188 là các phiên bản mới của 8086
và 8088, chúng chứa một lượng lớn các mạch xuất nhập nhưng thực tế không được sử
dụng rộng rãi.

8088 và 8086 đề không thể đòa chỉ hoá được bộ nhớ lớn hơn 1 megabyte. Để
khắc phục vấn đề này Intel đã thiết kế 80286, một phiên bản tương thích và vượt trội
8086. Tập lệnh cơ bản giống 8086 và 8088 nhưng tổ chức bộ nhớ khác và rắc rối hơn.
80286 được dùng trong IBM PC AT và PS/2. Giống như 8088, đây là một thành công
lớn của Intel.

Kế tiếp là một CPU 32-bit thật sự trên 1 chip, 80386. Giống như 80286, chip này
ít nhiều tương thích với các chip dùng chung với 8088.

Sau đó là 80486 tương thích với 80386 và vượt trội hơn. Sự khác nhau cơ bản của
80386 và 80486 là sự hiện diện của bộ đồng xử lý toán học (coprocessor), bộ điều
khiển bộ nhớ và 8K bộ nhớ đệm truy cập nhanh (cache) trên 1 chip đơn. Chip 80486
DX được giới thiệu đầu tiên vào tháng 4 năm 1989.


Tháng 10 năm 1992, Intel công bố chip Pentium, chip này bắt đầu sử dụng vào
tháng 03 năm 1993. Pentium đã được sử dụng công nghệ siêu vô hướng (superscalar
technology), công nghệ này có khả năng kết hợp với các máy có tập lệnh thu nhỏ
RISC (Reduced Instruction Set Computer). Pentium có 32 bit đòa chỉ và 64 bit dữ liệu
tuy vẫn chỉ có các thanh ghi 32 bit bên trong. Pentium có 2 loại bộ cache.

Pentium thế hệ 1 có tốc độ 60 /66 MHz, tích hợp khoảng 3,1 triệu transistor.
Pentium thế hệ 2 có tốc độ từ 75 đến 200MHz, tích hợp trên 3,3 triệu transistor.
Các chip Pentium MMX (thế hệ 3) công bố vào tháng 1 năm 1997 có tốc độ lên
đến 233MHz với trên 4,5 triệu transistor trên 1 chip. Cộng nghệ MMX được Intel phát
triển để đáp ứng nhu cầu về truyền thông đa phương tiện (multimedia)
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-13-

Tháng 5 năm 1997 Intel công bố chip Pentium II với các tốc độ lên đến 300MHz
tích hợp trên 7,5 triệu transistor trên 1 chip.

Đến năm 1999 với sự xuất hiện của Pentium III máy vi tính có khả năng biểu
diễn không gian ba chiều và nhận biết cũng như tổng hợp tiếng nói. Tần số làm việc
tối đa là 950MHz.

Năm 2001 Intel cho ra đời Pentium IV tốc độ lên đến 1,7GHz dùng công nghệ
siêu ống dẫn (hyper pipelined technology) cải thiện đáng kể chất lượng hình ảnh số,
âm thanh số và các trò chơi trong không gian ba chiều….

Sự phát triển các CPU của Intel phản ánh toàn bộ sự phát triển trong công nghiệp
máy tính.


Họ Motorola:
Một thời gian ngắn sau khi Intel giới thiệu 8080, Motorola, nhà cung cấp linh
kiện bán dẫn cạnh tranh với Intel đưa ra 6800. Chip 6800 là chip 8 bit so sánh được với
8080, được thò trường chấp nhận và được sử dụng rộng rãi làm bộ điều khiển cho các
thiết bò công nghiệp trong những năm đầu của thập niên 70. Tiếp theo là chip 6809,
chip này tương thích với 6800 đồng thời được thêm vào các đặc trưng phụ tạo dễ dàng
cho các phép tính số 16-bit.

Năm 1979, Motorola giới thiệu 1 chip hoàn toàn mới không tương thích với 6800
hoặc 6809. Đây là điều ít có công ty nào dám làm trước đó. Chip mới này, 68000 đưa
ra một sự thiết kế hoàn toàn mới thay vì tương thích với các chip đã lỗi thời. Chip
68000 là một cấu trúc lai giữa 16 bit và 32 bit.

Các nhà sản xuất máy vi tính Macintosh, Atari , Amiga chọn 68000 làm CPU vì
chip này hoàn toàn cắt đứt với quá khứ và có chiều dài từ 32 bit. Nhìn chung chip này
có sự khởi đầu khá thành công và tạo ra một gia đình 680x0 rất giống nhau theo quan
điểm người lập trình, các phiên bản mới chỉ có vài lệnh được thêm vào các phiên bản
cũ. Chip thứ 2 trong họ Motorola, 68008, giống hệt 68000 chỉ khác ở chỗ sử dụng bus
dữ liệu 8 bit nhằm tạo ra các sản phẩm giá thành thấp. Không giống 8088 của Intel,
68008 không được sử dụng rộng rãi.
Không bao lâu sau người ta muốn thực hiện các hệ điều hành tinh vi như UNIX
dùng 68000. Vấn đề ở đây là bộ nhớ ảo (virtual memory) , 68000 có khả năng hỗ trợ
nhưng chưa đầy đủ. Motorola giải quyết bằng cách đưa ra 68010 có các đặc trưng cần
thiết. Sau đó là sự xuất hiện của 68012, chip này về cơ bản giống 68010 nhưng thêm
các chân đòai chỉ để có thể đòa chỉ hóa bộ nhớ 2 gigabyte thay vì 16 megabyte ít ỏûi.

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-14-
Một năm sau Motorola lại cho ra đời 68020 là một chip 32 bit thật sự. 68020 là

một thành công lớn và là nhân của hầu hết các trạm làm việc (workstation) chế tạo bởi
Sun Microsystems, Apollo và Hewlett-Packard. Chip tiếp theo là 68030 mà sự cải tiến
nằm ở quản lý bộ nhớ.

68040 giống như 80486 chứa CPU, một đồng xử lý toán học, đơn vò quản lý bộ
nhớ và cache trên chip.

Sau này lại xuất hiện chip Power PC. Rõ ràng ta có thể so sánh 68030 với 80386,
68040 với 80486, Pentium với Power PC của 2 công ty Intel và Motorola. Sự cạnh
tranh giữa các chip của Intel và các chip của Motorola sẽ tiếp tục trong nhiều năm nữa.

Hiện nay nhiều công ty trong đó chủ yếu là AMD (Advanced Micro Designs) và
Cyrix sản xuất các bộ vi xử lý hoàn toàn tương thích với các bộ vi xử lý của Intel.
Chúng mô phỏng toàn bộ các lệnh và thậm chí phần lớn các chip này tương thích cả
các chân của các chip Intel. Bất cứ phần cứng hay phần mềm nào hoạt động trên các
máy vi tính dùng các chip của Intel cũng sẽ hoạt động trên các máy vi tính dùng các
chip tương thích của AMD và Cyrix.








Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-15-
CHƯƠNG 2:
CẤU TRÚC CHUNG MÁY TÍNH


Một máy tính bao gồm các bộ xử lý, bộ nhớ và các thiết bò vào/ra. Trong chương
này sẽ giới thiệu 3 thành phần này và sự phối ghép chúng. Chúng ta cần phải biết sơ
lược cấu trúc chung của máy tính trước khi nghiên cứu kỹ các cấp lớp khác nhau trong
các chương sau.

Cấu trúc của một máy tính đơn giản có thể được hình dung như sau:

Đơn vò Số ho
ï
c và
Logic (ALU)
Các thanh ghi

Bộ Nhớ
Chính


Đóa



Máy in
Đơn vò Điều khiển
(CU)

Thiết bò Vào / Ra Bus

Hình 2.1
I. CÁC BỘ XỬ LÝ


Bộ xử lý trung tâm (CPU) là đầu não của máy tính. Chức năng của nó là thực
hiện các chương trình nằm trong bộ nhớ chính bằng cách nạp lệnh sau đó giải mã rồi
thực hiện tuần tự hết lệnh này đến lệnh khác.

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-16-
Bộ xử lý trung tâm gồm đơn vò điều khiển (giữ nhiệm vụ lấy lệnh, giải mã lệnh)
và đơn vò số học và logic (thực hiện các phép toán như cộng, trừ, nhân, chia, VÀ,
HOẶC v.v…

CPU gồm có các thanh ghi cho phép lưu giữ kết quả tạm thời hoặc thông tin điều
khiển. Mỗi thanh ghi có một chức năng riêng. Thanh ghi quan trọng nhất là thanh đếm
chương trình (Program Counter) chỉ đến vò trí của lệnh tiếp theo sẽ thực hiện. Ngoài ra
có thanh ghi lệnh (Instruction register). Hầu hết các máy tính đều có các thanh ghi như
thanh ghi chứa (accumulator), thanh ghi chỉ số (index register), thanh ghi trạng thái
(status register), con trỏ ngăn xếp (stack pointer) v.v…
1. Thực hiện lệnh

CPU thực hiện lệnh tuần tự như sau:

a. Tìm nạp lệnh kế tiếp từ bộ nhớ vào thanh ghi lệnh

b. Thay đổi nội dung thanh đếm chương trình để xác đònh đòa chỉ
lệnh kế

c. Giải mã lệnh vừa nạp

d. Xác đònh nơi chứa dữ liệu trong bộ nhớ


e. Tìm nạp dữ liệu vào các thanh ghi trong CPU nếu cần thiết

f. Thực hiện lệnh

g. Lưu kết quả vào nơi thích hợp

h. Trở về bước 1 để thực hiện lệnh kế tiếp

Các bước tuần tự trên gọi là chu kỳ tìm nạp-giải mã- thực hiện lệnh

Tập hợp tất cả lệnh người lập trình có thể sử dụng ở một cấp được gọi là tập các
lệnh hay gọi ngắn ngọn là tập lệnh (instruction set) của cấp đó. Đối với cấp máy qui
ước, số lệnh của một tập lệnh thường trong khoảng từ 20 đến 300. Một tập lệnh có số
lệnh lớn không nhất thiết tốt hơn một tập lệnh nhỏ. Xu hướng trong thực tế sẽ ngược
lại, một tập lệnh nhỏ sẽ tốt hơn. Một tập lớn thường tồn tại nhiều lệnh không được sử
dụng rộng rãi.
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-17-
Các trình biên dòch (compiler) của các ngôn ngữ cấp cao như Ada, Modula 2,
Pascal, C thường hoạt động tốt trên các máy có tập lệnh nhỏ và được chọn lọc hơn là
trên các máy có tập lệnh lớn, cồng kềnh và khó sử dụng.
Máy tính có một tập lệnh rất nhỏ gọi là máy có tập lệnh được rút gọn RISC
(Reduced Instruction Set Computer). Máy tính này thao tác rất nhanh.
2. Tổ chức CPU
Đường dữ liệu (data path) của một máy von Neumann kinh điển


























Hình 2.2
A+B


A

B



A B
A+B
ALU
Đường dữ liệu bao gồm các thanh ghi và đơn vò số học và logic, các thanh ghi
này có thể đưa giá trò vào 2 thanh ghi nhập vào tên A, B. Hai thanh ghi này chốt các
ngõ nhập vào của đơn vò số học và logic trong lúc ALU tính toán.
ALU thực hiện phép toán cộng, trừ và các thao tác (operation) đơn giản khác trên
các toán hạng (operand) chứa trong A và B, đưa ra kết quả trên thanh ghi xuất ra. Dữ
liệu trong thanh ghi xuất có thể được cất giữ trở lại một thanh ghi của CPU hoặc đưa
trở lại bộ nhớ nếu muốn. Trong hình trên phép cộng được sử dụng để minh hoạ.

Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-18-
3. Thực hiện lệnh song song:
Từ những ngày đầu khai sinh ra máy tính, những nhà thiết kế đã cố gắng tạo ra
những máy tính xử lý nhanh. Để làm được điều ấy, người ta đã tìm nhiều biện pháp để
hoàn thiện phần cứng. Tuy nhiên, nhiếu giới hạn vật lý khác nhau bắt đầu xuất hiện
khi tăng tốc độ phần cứng. Ví dụ: Không có một tín hiệu nào có thể di chuyển vượt
được vận tốc của ánh sáng trong chân không, khoảng 30cm/ngiây và trong cáp đồng là
20cm/ngiây. Điều này có nghóa là để xây dựng một máy tính có thời gian lệnh là 1
ngiây, toàn bộ khoảng cách mà tín hiệu có thể di chuyển từ CPU đến bộ nhớ và ngược
lại sẽ không thể lớn hơn 20 cm. Vì thế các máy tính có tốc độ càng nhanh phải có kích
thước càng nhỏ.
Với các máy tính có tốc độ cao, khả năng sinh nhiệt lớn và nếu lắp máy tính vào
1 thể tích nhỏ thì sẽ khó tiêu tán nhiệt. Đôi khi các siêu máy tính được đặt chìm trong
chất lỏng freon, một chất dùng làm nguội nhanh. Để giải quyết vấn đề này, thay vì tạo
ra một CPU tốc độ cao, người ta thiết kế máy tính gồm nhiều CPU tốc độ chậm hơn
nhưng hoạt động song song. Nhiều công trình nghiên cứu đã được tiến hành để xây

dựng những máy tính song song như vậy.
Máy tính song song được chia thành 3 loại (theo Flynn, 1971) dựa vào số luồng
lệnh (instruction stream) và số luồng dữ liệu (data stream) của máy tính đó:
- SISD: máy loại đơn lệnh, đơn dữ liệu
(Single Instruction stream, Single Data stream)
- SIMD: máy loại đơn lệnh, đa dữ liệu
(Single Instruction stream, Multiple Data stream)
- MIMD: máy loại đa lệnh, đa dữ liệu
(Multiple Instruction stream, Multiple Data stream)
Máy von Neumann truyền thống thuộc loại SISD, có một luồng lệnh (nghóa là
một chương trình) được thực hiện bởi 1 CPU và có một bộ nhớ chứa dữ liệu. Lệnh đầu
tiên được tìm-nạp từ bộ nhớ và thực hiện. Lệnh thứ hai được tìm-nạp và thực hiện
v.v…
Ngay cả trong mô hình tuần tự này, có thể nghó đến 1 quá trình song song như
tìm-nạp lệnh kế tiếp trước khi lệnh đang thực hiện hoàn tất. Với máy tính CDC6600 có
nhiều đơn vò chức năng (các ALU)
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-19-

Hình 2.3: Một CPU với 5 đơn vò chức năng hoạt động song song
Ý tưởng của phương pháp thiết kế này là đơn vò điều khiển tìm-nạp một lệnh và
sau đó đưa đến một đơn vò chức năng thích hợp để thực hiện. Trong lúc đó, đơn vò
điều khiển tìm-nạp chỉ thò kế tiếp và đưa đến một đơn vò chức năng khác.

Quá trình này tiếp tục cho đến khi không thể tiếp tục được nữa, hoặc vì tất cả các
đơn vò chức năng cùng loại đang bận hoặc một toán hạng vẫn còn đang được tính toán.

Một biến thái của ý tưởng này là tách việc thực hiện một lệnh ra thành nhiều
phần. Trong hình sau ta thấy một CPU có 5 đơn vò xử lý


Hình 2.4: Một máy đường ống có 5 đơn vò xử lý

Cách tổ chức như trong hình được gọi là máy đường ống (Pipeline machine). Nếu
thời gian dành cho mỗi đơn vò xử lý là m ngiây thì phải mất 5m ngiây để thực hiện một
lệnh. Tuy nhiên với các tổ chức trên có thể xem mỗi lệnh thực hiện chỉ trong m ngiây
do vậy tăng tốc độ xử lý lệnh của máy lên gấp 5 lần.
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-20-
Chú ý rằng mặc dù máy sử dụng cơ chế song song bên trong, một máy đường ống
dẫn vẫn là máy SISD do chỉ có một chương trình và một tập dữ liệu. Ngược lại, các
máy SIMD thao tác trên nhiều tập dữ liệu song song. Ứng dụng điển hình của loại máy
SIMD là dự báo thời tiết. Thí dụ như tính nhiệt độ trung bình hàng ngày cho nhiều
vùng, phương pháp tính đều giống nhau nhưng với các dữ liệu khác.

Một cấu trúc khá thích hợp cho công việc này là máy vector (vector machine)
dược trính bày trong hình 2.5

Đường dữ liệu ở đây tương tự như trong hình 2.2 , chỉ khác ở chỗ thay vì có một
biến đơn cho từng ngõ nhập của ALU, ta có một vector với n ngõ nhập. Tương tự ALU
thực sự là một ALU vector, có khả năng thực hiện một thao tác như phép công vector
(hình 2.5 b) trên 2 vector nhập và kết qủa được lấy ra ở vector xuất. Một số siêu máy
tính có cấu trúc tương tự với cấu trúc này.


Hình 2.5

Một máy khác gần giống với SIMD là bộ xử lý dãy (array processor, một thiết kế
khởi đầu từ Đại học Illinois. Đó là máy tính ILLIAC IV như minh họa trong hình 2.6

sau:
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-21-

Hình 2.6: Bộ xử lý dãy của máy ILLIAC IV
Cấu trúc này bao gồm một mạng vuông các phần tử bộ xử lý / bộ nhớ. Một đơn vò
điều khiển truyền các lệnh và chúng được thực hiện bởi tất cả các bộ xử lý theo kiểu
sát gót (lockstep), mỗi bộ xử lý sử dụng dữ liệu riêng lấy từ một bộ nhớ riêng. Bộ xử
lý dãy đặc biệt thích hợp cho việc tính toán ma trận.
Loại máy thứ ba là MIMD, trong đó các CPU khác nhau làm việc với những
chương trình khác nhau, thỉnh thoảng chúng sử dụng chung một bộ nhớ. Hệ thống đặt
chỗ trước trong máy bay là một thí dụ, nhiều người cùng đặt chỗ đồng thời nhưng
không tiến hành song song, mà từng lệnh một vì chúng ta có nhiều luồng lệnh và nhiều
luồng dữ liệu.

Hình 2.7 a trình bày một bộ đa xử lý (multiprocessor), một máy MIMD sử dụng
bộ nhớ chia sẻ (shared memory). Các bộ xử lý truy xuất tới bộ nhớ chia sẻ (dùng
chung) thông qua bus.

Hình 2.6
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-22-

Khi nhiều bộ xử lý tốc độ nhanh truy xuất đồng thời tới bộ nhớ chia sẻ (dùng
chung) trên cùng một bus thì sẽ xảy ra xung đột (conflict). Những nhà thiết kế bộ đa xử
lý đã tìm nhiều phương án khác nhau để giảm thiểu sự tranh chấp và cải thiện hiệu
xuất. Một thiết kế đó được trình bày trong hình 2.6b cho thấy mỗi bộ xử lý có một bộ
nhớ cục bộ (riêng), các bộ xử lý khác không thể thâm nhập đến. Bộ nhớ này sử dụng

cho các mã chương trình và dữ liệu không cần chia sẻ. Việc truy xuất bộ nhớ riêng
không dùng đến bus chính sẽ làm giảm một lượng lớn lưu lượng trên bus chính.

Các bộ đa xử lý khác không sử dụng một bus mà dùng nhiều bus để làm giảm tải.
Một số khác sử dụng caching, một kỹ thuật sử dụng các từ nhớ được thường xuyên sử
dụng trong từng bộ xử lý.
II- BỘ NHỚ CHÍNH:

Bộ nhớ là một phần của máy tính dùng để chứa chương trình và dữ liệu đang thực
hiện. Không có máy tính số nào lưu trữ chương trình mà không có bộ nhớ, để từ đó bộ
xử lý có thể ghi và đọc thông tin
1. Bit
Đơn vò cơ bản của bộ nhớ là một chữ số nhò phân gọi là bit (binary digit). Một bit
có thể là 0 hoặc 1.
Người ta thường cho rằng các máy tính sử dụng số nhò phân là vì tính hiệu qủa
của loại số này.
Người ta thấy rằng thông tin số có thể được cất giữ bằng cách phân biệt các giá
trò khác nhau của một đại lượng vật lý liên tục như điện áp hoặc dòng điện. Càng
nhiều giá trò cần được phân biệt, càng ít có sự khác biệt giữa 2 giá trò kề cận nhau và
càng khó tin cậy vào bộ nhớ. Hệ thống số nhò phân chỉ yêu cầu 2 giá trò để phân biệt,
do vậy đây là phương pháp đáng tin cậy nhất để mã hoá thông tin số.
Một số máy tính như các mainframe của IBM, được quảng cáo có thể sử dụng cả
số thập phân lẫn số nhò phân. Mưu mẹo này đạt được bằng cách dùng 4 bit để chứa
một số thập phân. 4 bit cho ta 16 tổ hợp, dùng cho 10 số từ 0 đến 9 còn 6 tổ hợp không
sử dụng.
Thí dụ: 16 bit ở dạng thập phân có thể chứa các số từ 0 tới 9999, chỉ cho 10000 tổ
hợp trong khi 16 bit nhò phân có thể chứa 65536 tổ hợp khác nhau. Vì lý do này người
ta nói số nhò phân hiệu qủa hơn số thập phân.

Tuy nhiên điều gì sẽ xảy ra, nếu một người nào đó thông minh có thể tạo ra một

linh kiện điện tử độ tin cậy cao có thể chứa trực tiếp các số từ 0 đến 9 bằng cách chia
điện áp từ 0 tới 10 volt thành 10 khoảng. 4 linh kiện này có thể chứa bất kỳ số thập
phân nào từ 0 tới 9999. 4 linh kiện như vậy sẽ cung cấp 10000 tổ hợp. Cũng có thể
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-23-
dùng chúng để biểu diễn các số nhò phân, chỉ dùng 0 và 1. Trong trường hợp này ta chỉ
có 16 tổ hợp. Với những linh kiện như vậy, rõ ràng số thập phân có hiệu quả hơn.
2. Đòa chỉ bộ nhớ:
Bộ nhớ gồm các ô nhớ hay còn gọi là vò trí nhớ (location). Mỗi ô nhớ chứa một
mẫu thông tin (piece of information). Mỗi ô nhớ có một số gọi là đòa chỉ hoặc vò chỉ
(address) của ô nhớ. Các chương trình có thể tham chiếu đến các đòa chỉ này. Nếu bộ
nhớ có n ô nhớ, chúng sẽ đánh đòa chỉ từ 0 tới n-1. Các ô nhớ chứa cùng một số bit.
Một ô nhớ có k bit sẽ có thể chứa 1 trong 2
k
tổ hợp bit khác nhau. Hình 2.7 trình bày 3
cách tổ chức khác nhau cho một bộ nhớ 96 bit.
Nếu 1 đòa chỉ có m bit, số ô nhớ tối đa có thể đòa chỉ hoá (đánh đòa chỉ) trực tiếp
là 2
m
.

Hình 2.7
Thí dụ: Trong hình 2.7 a cần ít nhất 4 bit để diễn tả các số từ 0 đến 11. Tuy nhiên
chỉ cần 3 bit để diễn tả đòa chỉ trong các hình 2.7b và 2.7c
Số bit trong đòa chỉ liên quan đến số ô nhớ tối đa có thể đòa chỉ hóa trực tiếp
trong bộ nhớ và không tùy thuộc vào số bit của mỗi ô nhớ.
Một bộ nhớ có 2
12
ô nhớ, mỗi ô nhớ có 8 bit và một bộ nhớ có 2

12
ô nhớ, mỗi ô
nhớ có 60 bit thì cả hai đều cần 12 bit cho đòa chỉ, tuy nhiên dung lượng bộ nhớ trước
nhỏ hơn bộ nhớ sau.
Số bit của mỗi ô nhớ đối với một số máy tính đã được bán trên thò trường như
sau:
Bourroughs B 1700 1 bit /ô nhớ
IBM-PC 8 bit /ô nhớ
DEC PDP-8 12 bit /ô nhớ
IBM 1130 16 bit /ô nhớ
Electrologica X8 27 bit /ô nhớ
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-24-
Honeywell 6180 36 bits /ô nhớ
CDC Cyber 60 bits / ô nhớ
Trong những năm gần đây, hầu hết các nhà chế tạomáy tính đều chuẩn hoá 1 ô
nhớ có 8 bit và gọi là một byte. Nhiều byte gộp lại thành từ (word). Một máy tính sử
dụng 1 từ 16 bit nghóa là máy có 2 byte/từ, trong khi đó một máy dùng 1 từ 32 bit sẽ có
4 byte/từ. Hầu hết các lệnh của máy tính đều thao tác trên từ, thí dụ cộng 2 từ với
nhau. Do vậy, một máy 16 bit sẽ có các thanh ghi 16 bit và các lệnh để thao tác các từ
16 bit, máy có 32 bit sẽ có các thanh ghi 32 bit và các lệnh để thực hiện phép dòch
chuyển, cộng, trừ và các thao tác khác trên các từ 32 bit.
3. Trật tự của byte:
Byte trong 1 từ được đánh số từ trái sang phải hoặc từ phải sang trái. Sự lựa chọn
này thoạt nhìn không quan trọng nhưng bao hàm một ý nghóa rất lớn. Hình 2.8a miêu tả
một phần bộ nhớ của một máy tính 32 bit, trong đó các byte được đánh số từ trái sang
phải đối với họ Motorola chẳng hạn. Hình 2.8b đại diên cho họ máy tính 32 bit dùng
phương pháp đánh số thừ phải sang trái chẳng hạn như họ Intel.
Hệ thống đánh số bắt đầu từ số lớn gọi là máy tính Big-endian (bậc cao) ngược

lại Little-endian (bậc thấp)

Đòa chỉ Big Endian Little Endian Đòa chỉ


0
0
4 4
8
0 1 1 0
8
12
2 3 4 5 5 4 3 2
1
2

Byte Byte

Từ 32 bits Từ 32 bit
(a) (b)
Hình 2.8
Điều quan trọng cần hiểu trong cả 2 hệ thống Big-endian và Little-endian là khi
máy tính muốn gửi hồ sơ từ máy tính này sang máy tính khác trên mạng. Các số sẽ bò
đảo ngược và phải cần có một giải pháp phần mềm để đổi các byte trong 1 từ sau khi
sao chép.
Có một phương pháp khác nhưng cũng không hiệu quả lắm là thêm 1 header
trước mỗi hồ sơ cho biết loại dữ liệu theo sau (chuỗi, số nguyên hoặc dữ liệu khác) và
Nguyễn Hữu Lộc Khoa Vật Lý
Cấn Trúc Máy Tính
-25-

chiều dài là bao nhiêu. Điều này cho phép máy tính nhận chỉ phải thực hiện những
chuyển đổi cần thiết.
Trong bất kỳ trường hợp nào ta cũng thấy rằng việc thiếu một tiêu chuẩn về trật
tự byte là nỗi phiền toái chính khi trao đổi dữ liệu giữa các máy tính khác nhau.
4. Mã sửa lỗi:
Thỉnh thoảng bộ nhớ máy tính cũng tạo ra lỗi do các xung điện áp trên đường cấp
điện hoặc do những nguyên nhân khác. Để tránh những lỗi như vậy, các bộ nhớ đều
dùng các mã phát hiện lỗi hoặc các mã sửa lỗi. Khi sử dụng các mã này, các bit phụ
được thêm vào ở mỗi từ nhớ theo một phương pháp đặc biệt. Khi đọc một từ ra khỏi bộ
nhớ, các bit phụ được kiểm tra để xem có lỗi hay không.
Để hiểu các lỗi được xử lý như thế nào ta cần phải biết thực sự lỗi là gì? Giả sử
một từ nhớ có m bit dữ liệu và ta sẽ thêm vào r bit dư thừa (redundant) hoặc r bit kiểm
tra. Đặt toàn bộ chiều dài bit là n (n=m+r). Một đơn vò có m bit dữ liệu và r bit kiểm tra
được xem như một từ mã (code word) n bit.
Cho 2 từ mã 10001001 và 10110001, ta có thể xác đònh chúng có bao nhiêu bit
tương ứng khác nhau, ở thí dụ này 2 từ mã có 3 bit khác nhau. Để xác đònh số bit khác
nhau, ta chỉ cần thực hiện phép toán XOR theo bit hai từ mã đã cho va đếm số bit 1
trong kết quả. Số các bit trên 2 từ mã khác nhau gọi là khoảng cách Hamming. Ý nghóa
của việc xác đònh khoảng cách là nếu 2 từ mã có khoảng cách Hamming là d, cần có d
lỗi đơn bit (single bit error) sẽ đổi mã này thành mã kia. Thí dụ các từ mã 11110001 và
00110000 có khoảng cách Hamming là 3 vì cần có 3 lỗi đơn bit để đổi mã này thành
mã kia.
Với một từ nhớ m bit, tất cả 2
m
tổ hợp các bit đều hợp lệ nhưng do có tính các bit
kiểm tra, chỉ có 2
m
trong 2
n
từ mã có giá trò hợp lệ. Khi đọc bộ nhớ thấy xuất hiện một

từ mã không hợp lệ, máy tính hiểu rằng đã xảy ra một lỗi bộ nhớ. Cho một giải thuật
để tính các bit kiểm tra, ta có thể xây dựng một danh sách các từ ma hoàn toàn hợp lệ,
từ dfanh sách này tìm ra 2 từ mã có khoảng cách Hamming nhỏ nhất. Khoảng cách này
là khoảng cách Hamming đầy đủ.
Thí dụ: Hãy xem một biểu diễn đồ hoạ đơn giản minh họa rõ ý tưởng về mã sửa
lỗi cho các từ nhớ 4 bit
Sơ đồ Venn hình 2.9 có 3 vòng tròn A, B và C tạo thành 7 vùng khác nhau. Thí
dụ ta mã hoá từ nhớ 4 bit 1100 trong các vùng AB,ABC, AC và BC. Cứ 1 bit cho 1
vùng. Kế tiếp ta thêm 1 bit kiểm tra chẳn lẻ vào từng vùng trống còn lại để tạo ra
kiểm tra chẵn.
Nguyễn Hữu Lộc Khoa Vật Lý

×