You are on page 1of 203

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ


-----------o O o-----------

BÀI GIẢNG
HỆ ĐẠI HỌC CHÍNH QUY ATTT

KIẾN TRÚC MÁY TÍNH


(LƯU HÀNH NỘI BỘ)

Chủ biên: ThS.Nguyễn Đào Trường

Hà Nội-2014
MỤC LỤC
DANH MỤC HÌNH ................................................................................................................... 4
DANH MỤC BẢNG .................................................................................................................. 7
LỜI NÓI ĐẦU ............................................................................................................................ 8
ĐỀ CƯƠNG CHI TIẾT MÔN HỌC (Chủ biên: ThS. Phạm Văn Hưởng) .............................. 10
CHƯƠNG 1. TỔNG QUAN VỀ KIẾN TRÚC MÁY TÍNH ................................................... 13
1.1 Định nghĩa kiến trúc máy tính ........................................................................................ 13
1.2 Sự tiến hóa của máy tính ................................................................................................ 13
1.2.1 Máy tính dùng đèn điện tử....................................................................................... 13
1.2.2 Máy tính dùng transistor .......................................................................................... 14
1.2.3 Máy tính dùng vi mạch ............................................................................................ 15
1.2.4 Máy tính dùng vi mạch mật độ cao ......................................................................... 15
1.3 Phân loại máy tính .......................................................................................................... 18
1.3.1 Phân loại theo khả năng ........................................................................................... 18
1.3.2 Phân loại theo nguyên lý ......................................................................................... 19
1.3.3 Phân loại theo kiến trúc ........................................................................................... 19
1.4 Kiến trúc máy tính Von Neumann.................................................................................. 19
1.4.1 Mô hình ................................................................................................................... 19
1.4.2 Bus hệ thống ............................................................................................................ 20
1.4.3 Hoạt động của máy tính Von Neumann .................................................................. 22
1.5 Phân loại kiến trúc máy tính ........................................................................................... 26
1.5.1 Kiến trúc máy tính loại SISD .................................................................................. 26
1.5.2 Kiến trúc máy tính SIMD ........................................................................................ 26
1.5.3 Kiến trúc máy tính MIMD ....................................................................................... 27
1.5.4 Kiến trúc máy tính MISD ........................................................................................ 27
CÂU HỎI ÔN TẬP CHƯƠNG 1 ............................................................................................. 29
CHƯƠNG 2. BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH.............................................. 30
2.1 Khái niệm thông tin ........................................................................................................ 30
2.2 Lượng thông tin và sự mã hóa thông tin......................................................................... 30
2.3 Hệ thống số ..................................................................................................................... 31
2.4 Các phép tính số học cho hệ nhị phân ............................................................................ 33
2.4.1 Phép cộng nhị phân ................................................................................................. 33
2.4.2 Phép trừ nhị phân ..................................................................................................... 34
2.4.3 Biểu diễn số nguyên có dấu ..................................................................................... 34
2.4.4 Số bù của một số...................................................................................................... 35
2.4.5 Phép trừ nhị phân dùng bù 1 và bù 2 ....................................................................... 36
2.5 Cách biểu diễn số thực.................................................................................................... 37
2.5.1 Biểu diễn số thực dấu chấm tĩnh ............................................................................. 37
2.5.2 Biểu diễn số thực dấu chấm động ............................................................................ 38
2.6 Biểu diễn BCD ............................................................................................................... 40
2.7 Biểu diễn các ký tự ......................................................................................................... 40
2.7.1 Bảng mã ASCII ....................................................................................................... 41
2.7.2 Bảng mã Unicode .................................................................................................... 41
CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG 2 ...................................................................... 43
CHƯƠNG 3. MẠCH LOGIC SỐ ............................................................................................ 44
3.1 Cổng và đại số Boolean .................................................................................................. 44
3.1.1 Cổng (Gate) ............................................................................................................. 44
3.1.2 Đại số Boolean ........................................................................................................ 46
3.2 Bản đồ Karnaugh ............................................................................................................ 49
3.3 Những mạch Logic số cơ bản ......................................................................................... 54
3.3.1 Mạch tích hợp (IC-Intergrated Circuit) ................................................................... 54
1
3.3.2 Mạch kết hợp (Combinational Circuit).................................................................... 55
3.3.3 Bộ dồn kênh (Multiplexer)-bộ phân kênh (Demultiplexer)..................................... 56
3.3.4 Mạch cộng (Adder).................................................................................................. 59
3.3.5 Mạch giải mã và mã hóa .......................................................................................... 60
3.4 Xung đồng hồ ................................................................................................................. 63
3.5 Mạch lật (chốt – latch) .................................................................................................... 63
3.5.1 Mạch lật SR (SR-latch) ........................................................................................... 64
3.5.2 Mạch lật D ............................................................................................................... 65
3.5.3 Mạch lật JK.............................................................................................................. 66
3.5.4 Mạch lật T................................................................................................................ 66
3.6 Mạch lật lề (Flip-flop) .................................................................................................... 66
3.7 Mạch tuần tự ................................................................................................................... 68
CÂU HỎI ÔN TẬP CHƯƠNG 3 ............................................................................................. 71
CHƯƠNG 4. BỘ VI XỬ LÝ .................................................................................................... 73
4.1 Kiến trúc chung của bộ vi xử lý ..................................................................................... 73
4.2 Tổ chức thanh ghi ........................................................................................................... 75
4.2.1 User-Visible Registers: ............................................................................................ 76
4.2.2 Control and Status Registers: .................................................................................. 77
4.3 Đơn vị số học và logic ALU (Arithmetic and logic unit) ............................................... 79
4.4 Đơn vị điều khiển CU(Control Unit) .............................................................................. 80
4.4.1 Tín hiệu điều khiển .................................................................................................. 81
4.4.2 Đơn vị điều khiển vi chương trình........................................................................... 83
4.4.3 Một số mở rộng của vi xử lý máy tính cho đến ngày nay ....................................... 83
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4 ..................................................................................... 85
CHƯƠNG 5. KIẾN TRÚC TẬP LỆNH .................................................................................. 86
5.1 Phân loại kiến trúc bộ lệnh ............................................................................................. 86
5.1.1 Kiểu kiến trúc GPR ................................................................................................. 87
5.1.2 Kiểu kiến trúc thanh ghi đa dụng ............................................................................ 88
5.2. Địa chỉ bộ nhớ ............................................................................................................... 88
5.3. Mã hóa tập lệnh ............................................................................................................. 89
5.3.1. Các tiêu chuẩn thiết kế dạng thức lệnh ................................................................... 90
5.3.2. Opcode mở rộng ..................................................................................................... 92
5.3.3 Các chế độ lập địa chỉ .............................................................................................. 93
5.4 Bộ lệnh............................................................................................................................ 99
5.4.1 Nhóm lệnh cơ sở, truyền dữ liệu ............................................................................. 99
5.4.2 Nhóm lệnh vào ra .................................................................................................. 100
5.4.3 Nhóm lệnh tính toán số học ................................................................................... 101
5.4.4 Nhóm lệnh Logic ................................................................................................... 103
5.4.5 Nhóm các lệnh dịch chuyển và quay ..................................................................... 104
5.4.6 Nhóm các lệnh có điều kiện và lệnh nhảy ............................................................. 107
5.5 Cấu trúc lệnh CISC và RISC ........................................................................................ 109
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5 ................................................................................... 111
CHƯƠNG 6. BỘ NHỚ VÀ THIẾT BỊ LƯU TRỮ ................................................................ 113
6.1 Khái niệm và phân cấp bộ nhớ ..................................................................................... 113
6.2 Bộ nhớ trong (Bộ nhớ chính - Memory) ...................................................................... 115
6.2.1 Bit nhớ ................................................................................................................... 117
6.2.2 Tổ chức chip nhớ ................................................................................................... 118
6.2.3 Thiết kế bộ nhớ ...................................................................................................... 119
6.2.4 Địa chỉ vật lý và phương pháp tổ chức địa chỉ bộ nhớ .......................................... 123
6.3 Bộ nhớ Cache (Bộ nhớ đệm) ........................................................................................ 133
6.3.1 Nguyên tắc ............................................................................................................. 133

2
6.3.2 Các phương pháp ánh xạ địa chỉ............................................................................ 135
6.3.3 Các thuật toán thay thế .......................................................................................... 138
6.3.4 Các thao tác với bộ nhớ Cache .............................................................................. 139
6.3.5 Các mức Cache ...................................................................................................... 141
6.4 Bộ nhớ ảo...................................................................................................................... 141
6.4.1 Khái niệm .............................................................................................................. 141
6.4.2 Địa chỉ ảo và phương pháp tổ chức bộ nhớ ảo ...................................................... 142
6.4.3 Bảo vệ các tiến trình bằng cách dùng bộ nhớ ảo ................................................... 145
6.5 Bộ nhớ ngoài (Thiết bị lưu trữ - Storage) ..................................................................... 146
6.5.1 Đĩa từ ..................................................................................................................... 146
6.5.2 Đĩa quang............................................................................................................... 149
6.5.3 Thẻ nhớ .................................................................................................................. 151
6.5.4 Đĩa mềm ................................................................................................................ 151
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 6 ................................................................................... 153
CHƯƠNG 7. HỆ THỐNG VÀO RA ..................................................................................... 154
7.1 Tổng quan về hệ thống vào ra ...................................................................................... 154
7.1.1 Mô hình ................................................................................................................. 154
7.1.2 Thiết bị ngoại vi..................................................................................................... 155
7.1.3 Quá trình vào/ra dữ liệu ......................................................................................... 155
7.2 Các phương pháp trao đổi dữ liệu ................................................................................ 156
7.2.1 Địa chỉ hoá cổng vào ra ......................................................................................... 156
7.2.2 Phương pháp vào ra bằng chương trình................................................................. 156
7.2.3 Phương pháp vào ra bằng cách thăm dò ................................................................ 159
7.2.4 Vào ra bằng điều khiển ngắt .................................................................................. 161
7.2.5 Phương pháp vào ra bằng DMA ............................................................................ 167
7.3 Thiết bị giao diện vào ra ............................................................................................... 177
7.3.1 Vào ra nối tiếp và thiết bị giao diện vào ra nối tiếp............................................... 177
7.3.2 Vào ra song song và thiết bị giao diện vào ra song song ...................................... 180
7.3.3 Cổng USB .............................................................................................................. 182
7.4 Một số thiết bị ngoại vi ................................................................................................. 185
7.4.1 Bàn phím ............................................................................................................... 185
7.4.2 Chuột ..................................................................................................................... 190
7.4.3 Màn hình ................................................................................................................ 191
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 7 ................................................................................... 201
TÀI LIỆU THAM KHẢO ...................................................................................................... 202

3
DANH MỤC HÌNH
Hình 1.1 Kiến trúc máy tính Von Neumann (IAS) .................................................................. 19
Hình 1.2 Sơ đồ Bus hệ thống trong máy tính Von Neumann ................................................... 20
Hình 1.3 Định dạng bộ nhớ IAS. .............................................................................................. 23
Hình 1.4 Sơ đồ cấu trúc mở rộng của máy tính IAS. ............................................................... 23
Hình 1.5 Sơ đồ luồng hoạt động máy tính IAS. ....................................................................... 24
Hình 2.1Thông tin về 2 trạng thái có ý nghĩa của hiệu điện thế. .............................................. 30
Hình 2.2 Biểu diễn số thực dấu chấm động chính xác đơn với 32 bit. ..................................... 39
Hình 2.3 Biểu diễn số thực dấu chấm động chính xác kép với 64 bit. ..................................... 39
Hình 3.1 Cấu tạo của các cổng NOT, NAND, NOR ................................................................ 44
Hình 3.2 Một số IC. .................................................................................................................. 55
Hình 3.3 Sơ đồ một IC.............................................................................................................. 55
Hình 3.4 Lược đồ mạch kết hợp ............................................................................................... 56
Hình 3.5 Sơ đồ khối MUX 4 đầu vào, 1 đầu ra ........................................................................ 57
Hình 3.6 Sơ đồ mạch bộ dồn kênh 4-1 ..................................................................................... 58
Hình 3.7 Sơ đồ bộ dồn kênh 8 đầu vào .................................................................................... 58
Hình 3.8 Bộ phân kênh 1-4....................................................................................................... 59
Hình 3.9 Bộ nửa cộng ............................................................................................................... 59
Hình 3.10 Bộ cộng đầy đủ. ....................................................................................................... 60
Hình 3.11 Bộ cộng n bít. .......................................................................................................... 60
Hình 3.12 Sơ đồ khối mạch mã hóa 8-3 ................................................................................... 60
Hình 3.13 Sơ đồ mạch mã hóa 8-3 ........................................................................................... 61
Hình 3.14 Sơ đồ khối, bảng trạng thái mạch giải mã 2-4. ........................................................ 61
Hình 3.15 Sơ đồ mạch giải mã 2-4 với cổng AND .................................................................. 62
Hình 3.16 Sơ đồ mạch giải mã 2-4 với cổng NAND ............................................................... 62
Hình 3.17 Ký hiệu mạch giải mã 2-4........................................................................................ 62
Hình 3.18 Sơ đồ mạch giải mã 3-8. .......................................................................................... 62
Hình 3.19 Đồng hồ và các xung nó tạo ra ................................................................................ 63
Hình 3.20 Mạch lật SR không đồng bộ. ................................................................................... 64
Hình 3.21 Mạch lật SR ............................................................................................................. 65
Hình 3.22 mạch lật D................................................................................................................ 65
Hình 3.23 Mạch lật JK.............................................................................................................. 66
Hình 3.24 Mạch lật T................................................................................................................ 66
Hình 3.25 Flip-Flop D với chuyển tiếp dương ......................................................................... 67
Hình 3.26 Biểu đồ trạng thái và đồ thị của Flip-Flop D. .......................................................... 67
Hình 3.27 Flip-Flop D với chuyển tiếp âm. ............................................................................. 67
Hình 3.28 Sơ đồ khối mạch tuần tự. ......................................................................................... 68
Hình 4.1 CPU với bus hệ thống ................................................................................................ 73
Hình 4.2 Sơ đồ kiến trúc bên trong CPU .................................................................................. 74
Hình 4.3 Tổ chức chi tiết của một bộ vi xử lý điển hình .......................................................... 75
Hình 4.4 Sơ đồ khối đơn vị số học và logic ALU .................................................................... 79
Hình 4.5 Kiến trúc của khối ALU ............................................................................................ 79
Hình 4.6 Sơ đồ các tín hiệu điều khiển trong CPU .................................................................. 81
Hình 5.1(a) Bộ nhớ đầu lớn (họ Motorola), (b) Bộ nhớ đầu nhỏ (họ Intel) ............................. 89
Hình 5.2 Một số dạng mã lệnh đơn giản .................................................................................. 89
Hình 5.3 Lệnh có opcode 4 bit và 3 địa chỉ 4 bit...................................................................... 92
Hình 5.4 Một số dạng thức lệnh cho 16 bit. ............................................................................. 93
Hình 5.5 Các chế độ lập địa chỉ ................................................................................................ 95
Hình 5.6 Các chế độ lập địa chỉ thông dụng............................................................................. 98
Hình 5.7 Các lệnh dịch chuyển và quay vòng. ....................................................................... 107
Hình 6.1 Các cấp bộ nhớ cơ bản............................................................................................. 113

4
Hình 6.2 Giao tiếp cơ bản giữa CPU và bộ nhớ trong............................................................ 115
Hình 6.3 Tổ chức bộ nhớ trong trên CHIP đơn giản .............................................................. 116
Hình 6.4 Ô nhớ SRAM ........................................................................................................... 117
Hình 6.5 Ô nhớ DRAM .......................................................................................................... 118
Hình 6.6 Tổ chức chíp nhớ ..................................................................................................... 119
Hình 6.7 Tổ chức bộ nhớ một chiều ....................................................................................... 119
Hình 6.8 Tổ chức bộ nhớ hai chiều ........................................................................................ 119
Hình 6.9 Tổ chức chip nhớ 16Mb DRAM (4M x 4) .............................................................. 120
Hình 6.10 Mô hình phần vùng cố định ................................................................................... 127
Hình 6.11 Mô hình phân vùng động ....................................................................................... 128
Hình 6.12 Cơ chế phân vùng động ......................................................................................... 128
Hình 6.13 Bản đồ bit của khối nhớ sử dụng cơ chế phần vùng động ..................................... 129
Hình 6.14 Ví dụ về các thuật toán cấp phát bộ nhớ ................................................................ 130
Hình 6.15 Quản lý bộ nhớ theo cơ chế phân trang ................................................................. 131
Hình 6.16 Mô hình quản lý bộ nhớ cơ chế phân đoạn ........................................................... 131
Hình 6.17 Ví dụ về mô hình quản lý bộ nhớ theo cơ chế phân đoạn ..................................... 132
Hình 6.18 Phần cứng về mô hình quản lý bộ nhớ cơ chế phân đoạn ..................................... 132
Hình 6.19 Ví dụ chuyển đổi địa chỉ trong cơ chế phân đoạn ................................................. 133
Hình 6.20 Chia sẻ các đoạn con trong cơ chế phân đoạn ....................................................... 133
Hình 6.21 Bộ nhớ cache và bộ nhớ chính .............................................................................. 134
Hình 6.22 Tổ chức cơ bản bộ nhớ chính và cache ................................................................. 134
Hình 6.23 Quá trình đọc cache ánh xạ trực tiếp ..................................................................... 136
Hình 6.24 Ánh xạ liên kết hoàn toàn ...................................................................................... 137
Hình 6.25 Ánh xạ liên kết tập hợp.......................................................................................... 137
Hình 6.26 Mô hình sử dụng bộ nhớ ảo ................................................................................... 142
Hình 6.27 Ánh xạ các trang ảo vào bộ nhớ vật lý .................................................................. 144
Hình 6.28 Minh họa sự ánh xạ địa chỉ giữa bộ nhớ ảo và bộ nhớ vật lý trong định vị trang . 144
Hình 6.29 Ánh xạ địa chỉ giữa bộ nhớ ảo và bộ nhớ vật lý trong cách định vị đoạn ............. 145
Hình 6.30 Cấu tạo của một đĩa cứng ...................................................................................... 147
Hình 6.31 Cấu tạo bên trong và bên ngoài ổ đĩa cứng ........................................................... 147
Hình 6.32 Mật độ ghi dữ liệu trên các loại đĩa cứng .............................................................. 148
Hình 6.33 Minh họa hai trạng thái của một bit nhớ trong thẻ nhớ ......................................... 151
Hình 6.34 Ổ đĩa mềm, đĩa mềm ............................................................................................. 152
Hình 7.1 Mô hình tổng quát của Module vào ra..................................................................... 154
Hình 7.2 Sơ đồ khối của Module vào ra ................................................................................. 154
Hình 7.3 Cấu trúc các thiết bị ngoại vi ................................................................................... 155
Hình 7.4 Mô hình Module vào ra ........................................................................................... 155
Hình 7.5 Ba kỹ thuật nhập vào một khối dữ liệu .................................................................... 157
Hình 7.6 Ánh xạ bộ nhớ và độc lập thiết bị ngoại vi .............................................................. 159
Hình 7.7 Vào ra thăm dò với 2 cổng ...................................................................................... 160
Hình 7.8 Sơ đồ chân mạch điều khiển ưu tiên ngắt 8259A .................................................... 166
Hình 7.9 Sơ đồ khối của PIC 8259A ...................................................................................... 166
Hình 7.10 8259A đấu liên tầng............................................................................................... 167
Hình 7.11 Hoạt động của vào ra DMA................................................................................... 169
Hình 7.12 Giao tiếp DMAC với hệ vi xử lý ........................................................................... 172
Hình 7.13 Tín hiệu HOLD và HLDA ..................................................................................... 172
Hình 7.14 Sơ đồ chân DMAC 8237 ....................................................................................... 172
Hình 7.15 Sơ đồ chân và sơ đồ khối của DMAC 8237A ....................................................... 173
Bảng 7.16 Các thanh ghi trong 8237A ................................................................................... 174
Hình 7.17 Tín hiệu điều khiển cho hệ thống làm việc với DMAC 8237A............................. 176
Hình 7.18 Tín hiệu truyền của ký tự ‘A’ ................................................................................ 178

5
Hình 7.19 Sơ đồ chân của cổng nối tiếp ................................................................................. 179
Hình 7.20 Cấu trúc của mạch 8255A ..................................................................................... 180
Hình 7.21 Sơ đồ nguyên lý và các ghép nối của bàn phím .................................................... 186
Hình 7.22 Đầu cắm của các chân bàn phím AT ..................................................................... 186
Hình 7.23 Đầu cắm của các chân bàn phím PS/2 ................................................................... 187
Hình 7.24 Bộ điều khiển bàn phím ......................................................................................... 188
Hình 7.25 Mạch bàn phím theo kỹ thuật thăm dò .................................................................. 188
Hình 7.26 Mạch ghép nối chốt ký tự ...................................................................................... 189
Hình 7.27 Mạch đấu nối bàn phím theo kỹ thuật quét ........................................................... 189
Hình 7.28 Mạch đấu nối bàn phím 101 phím ......................................................................... 190
Hình 7.29 Sơ đồ cấu tạo của chuột ......................................................................................... 191
Hình 7.30 Sơ đồ cấu tạo màn hình CRT màu ......................................................................... 193
Hình 7.31 Quét dòng trong màn hình CRT ............................................................................ 194
Hình 7.32 Sơ đồ ghép nối và hoạt động của màn hình CRT với CPU ................................... 195
Hình 7.33 Sơ đồ nguyên lý làm tươi ảnh ................................................................................ 196
Hình 7.34 Các lớp cấu tạo màn hình LCD ............................................................................. 198
Hình 7.35 Màn hình tinh thể lỏng LCD ................................................................................. 198
Hình 7.36 Cấu tạo màn hình TFT LCD .................................................................................. 200
Hình 7.37 Màn hình TFT LCD............................................................................................... 200
Hình 7.38 Màn hình Plasma ................................................................................................... 200

6
DANH MỤC BẢNG
Bảng 1.1 Các thế hệ máy tính ................................................................................................... 17
Bảng 1.2 Bảng tập các lệnh trong máy tính IAS. ..................................................................... 25
Bảng 2.1 Biểu diễn tám trạng thái khác nhau của 3 bít nhị phân ............................................. 31
Bảng 2.2 Số 4 bit có dấu théo cách biểu diễn số âm bằng số bù 2. .......................................... 36
Bảng 2.3 Số thập phân mã bằng nhị phân ................................................................................ 40
Bảng 3.1 Các cổng cơ bản ........................................................................................................ 45
Bảng 3.2 Các cổng cơ bản có đầu ra nghịch đảo ...................................................................... 45
Bảng 3.3 Các thuật ngữ biểu diễn logic “0” và “1”. ................................................................. 46
Bảng 3.4 Tín hiệu đầu ra phụ thuộc vào tín hiệu điều khiển .................................................... 57
Bảng 3.5 Bảng trạng thái của mạch lật SR ............................................................................... 64
Bảng 3.6 Bảng kích thích của bốn mạch lật lề ......................................................................... 68
Bảng 5.3 Cách tính địa chỉ thực ............................................................................................... 94
Bảng 5.4 Một số ví dụ lệnh MOVE .......................................................................................... 99
Bảng 5.5 Một số lệnh truyền dữ liệu ...................................................................................... 100
Bảng 5.6 Các lệnh tính toán số học cơ bản ............................................................................ 102
Bảng 5.7 Các lệnh nhảy có điều kiện ..................................................................................... 108
Bảng 6.1 Kích thước cache của một số hệ thống ................................................................... 141
Bảng 6.2 Đại lượng điển hình cho bộ nhớ cache và bộ nhớ ảo .............................................. 143
Bảng 6.3 Thông số kỹ thuật của đĩa cứng .............................................................................. 149
Bảng 6.4 So sánh một số thông số của hai loại đĩa CDROM và DVDROM ......................... 151
Bảng 6.5 Các đặc tính của đĩa mềm ....................................................................................... 152
Bảng 7.1 Bảng địa chỉ các thanh ghi trong DMAC 8237A .................................................... 175
Bảng 7.2 Địa chỉ các thanh ghi đọc/ghi trong DMAC 8237A ............................................... 176
Bảng 7.3 Địa chỉ các thanh ghi trạng thái và điều khiển trong DMAC 8237A ...................... 176
Bảng 7.4 Bảng các chân cổng nối tiếp COM ......................................................................... 179
Bảng 7.5 Bảng chọn thanh ghi trong 8255A .......................................................................... 181

7
LỜI NÓI ĐẦU
1 – Mục đích
Bài giảng này nhằm trang bị cho người đọc các nội dung chủ yếu sau:
- Lịch sử phát triển của máy tính, các thế hệ máy tính và cách phân loại
máy tính. Cách biến đổi cơ bản của hệ thống số, các bảng mã thông dụng được
dùng để biểu diễn các ký tự.
- Giới thiệu các thành phần cơ bản của một hệ thống máy tính, khái niệm
về kiến trúc máy tính, tập lệnh. Các kiểu kiến trúc máy tính: mô tả kiến trúc, các
kiểu định vị.
- Giới thiệu cấu trúc của bộ xử lý trung tâm: tổ chức, chức năng và
nguyên lý hoạt động của các bộ phận bên trong bộ xử lý. Mô tả diễn tiến thi
hành một lệnh mã máy và một số kỹ thuật xử lý thông tin: ống dẫn, siêu ống
dẫn, siêu vô hướng, máy tính có lệnh thật dài, máy tính véc-tơ, xử lý song song.
- Giới thiệu chức năng và nguyên lý hoạt động của các cấp bộ nhớ máy
tính.
- Giới thiệu một số thiết bị lưu trữ ngoài như: đĩa từ, đĩa quang, thẻ nhớ,
băng từ. Hệ thống kết nối cơ bản các bộ phận bên trong máy tính. Cách giao tiếp
giữa các ngoại vi và bộ xử lý.
- Phương pháp an toàn dữ liệu trên thiết bị lưu trữ ngoài.
2- Yêu cầu:
Sau khi học xong môn học này, người học được trang bị các kiến thức về:
- Sinh viên được trang bị kiến thức về lịch sử phát triển của máy tính, các
thế hệ máy tính và cách phân loại máy tính. Nắm vững các khái niệm cơ bản liên
quan đến các hệ thống số được dùng trong máy tính. Thành thạo các thao tác
biến đổi số giữa các hệ thống số.
- Sinh viên có kiến thức về các thành phần cơ bản của một hệ thống máy
tính, khái niệm về kiến trúc máy tính, tập lệnh. Nắm vững các kiến thức về các
kiểu kiến trúc máy tính, các kiểu định vị được dùng trong kiến trúc, loại và chiều
dài của toán hạng, tác vụ mà máy tính có thể thực hiện. Phân biệt được hai loại
kiến trúc: CISC (Complex Instruction Set Computer), RISC (Reduced
Instruction Set Computer). Các kiến thức cơ bản về kiến trúc RISC, tổng quát
tập lệnh của các kiến trúc máy tính.
- Sinh viên phải nắm vững cấu trúc của bộ xử lý trung tâm và diễn tiến thi
hành một lệnh mã máy, vì đây là cơ sở để hiểu được các hoạt động xử lý lệnh
trong các kỹ thuật xử lý thông tin trong máy tính.

8
- Sinh viên phải hiểu được các cấp bộ nhớ và cách thức vận hành của các
loại bộ nhớ được giới thiệu để có thể đánh giá được hiệu năng hoạt động của các
loại bộ nhớ.
- Sinh viên phải nắm vững các kiến thức về hệ thống kết nối cơ bản các
bộ phận bên trong máy tính, cách giao tiếp giữa các ngoại vi và bộ xử lý. Biết
được cấu tạo và các vận hành của các loại thiết bị lưu trữ ngoài và phương pháp
an toàn dữ liệu trên đĩa cứng.

9
ĐỀ CƯƠNG CHI TIẾT MÔN HỌC (Chủ biên: ThS. Phạm Văn Hưởng)
Chương 1. Tổng quan về kiến trúc máy tính
1.1. Định nghĩa kiến trúc máy tính
1.2. Sự tiến hóa của máy tính
1.2.1. Máy tính dùng đèn điện tử
1.2.2. Máy tính dùng transistor
1.2.3. Máy tính dùng vi mạch SSI, MSI và LSI
1.2.4. Máy tính dùng vi mạch VLSI
1.3. Kiến trúc máy tính Von Neumann
1.3.1. Mô hình
1.3.2. Bus hệ thống
1.3.3. Hoạt động của máy tính Von Neumann
1.4. Phân loại kiến trúc máy tính
1.4.1. Kiến trúc máy tính loại SISD
1.4.2. Kiến trúc SIMD
1.4.3. Kiến trúc MIMD
Chương 2. Biểu diễn thông tin trong máy tính
2.1 Khái niệm thông tin
2.2 Lượng thông tin và sự mã hóa thông tin
2.3 Hệ thống số
2.4. Các phép tính số học cho hệ nhị phân
2.4.1. Phép cộng nhị phân
2.4.2. Phép trừ nhị phân
2.4.3. Biểu diễn số nguyên có dấu
2.4.4. Số bù của một số
2.4.5. Phép trừ nhị phân dùng bù 2
2.5. Cách biểu diễn số thực
2.5.1. Biểu diễn số thực dấu chấm tĩnh
2.5.2. Biểu diễn số thực dấu chấm động
2.6. Biểu diễn số BCD
2.7. Biểu diễn các ký tự
2.7.1. Bảng mã ASCII
2.7.2. Bảng mã Unicode
Chương 3. Mạch Logic số
3.1. Cổng và đại số Boolean
3.1.1. Cổng (Gate)
3.1.2. Đại số Boolean
3.2. Bản đồ Karnaugh
3.3. Những mạch Logic số cơ bản
3.3.1. Mạch tích hợp (IC-Intergrate Circuit)
3.3.2. Mạch kết hợp (Combinational Circuit)
3.3.3. Bộ dồn kênh-bộ phân kênh
3.3.4. Mạch cộng (Adder)
3.3.5. Mạch giải mã và mã hóa
3.4. Xung đồng hồ
3.5. Mạch lật (chốt – latch)
3.5.1. Mạch lật SR (SR-latch)
3.5.2. Mạch lật D
3.5.3. Mạch lật IK
3.5.4. Mạch lật T
3.6. Mạch lật lề (Flip-flop)

10
3.7. Mạch tuần tự
Chương 4. Bộ xử lý
4.1. Kiến trúc chung của bộ vi xử lý
4.1.1. Mô hình kiến trúc
4.1.2. Chức năng
4.1.3. Nhiệm vụ
4.2. Tập thanh ghi
4.2.1. Thanh ghi địa chỉ
4.2.2. Thanh ghi dữ liệu
4.2.3. Thanh ghi đa năng
4.2.4. Thanh ghi trạng thái
4.3. Đơn vị điều khiển
4.3.1. Sơ đồ khối
4.3.2. Chức năng
4.3.3. Các phương pháp thực hiện đơn vị điều khiển
Chương 5. Kiến trúc tập lệnh
5.1 Phân loại kiến trúc bộ lệnh
5.2. Địa chỉ bộ nhớ
5.3. Mã hóa tập lệnh
5.3.1. Các tiêu chuẩn thiết kế dạng thức lệnh
5.3.2. Opcode mở rộng
5.3.3. Các chế độ lập địa chỉ
5.4. Bộ lệnh
5.4.1. Nhóm lệnh truyền dữ liệu
5.4.2. Nhóm lệnh tính toán số học
5.4.3. Nhóm lệnh Logic
5.4.4. Nhóm các lệnh dịch chuyển
5.4.5. Nhóm các lệnh có điều kiện và lệnh nhảy
5.5. Kiến trúc lệnh CISC và RISC
Chương 6. Bộ nhớ và thiết bị lưu trữ
6.1. Khái niệm và phân cấp thiết bị lưu trữ
6.2. Bộ nhớ (Bộ nhớ chính - Memory)
6.2.1. Bit nhớ
6.2.2. Tổ chức chip nhớ
6.2.3. Thiết kế bộ nhớ
6.2.4. Địa chỉ vật lý và phương pháp tổ chức địa chỉ bộ nhớ
6.3. Bộ nhớ Cache (Bộ nhớ đệm)
6.3.1. Nguyên tắc
6.3.2. Các phương pháp ánh xạ địa chỉ
6.3.3. Các thuật toán thay thế
6.3.4. Các thao tác với bộ nhớ Cache
6.4. Bộ nhớ ảo
4.4.1. Khái niệm
4.4.2. Địa chỉ ảo và phương pháp tổ chức bộ nhớ ảo
6.5. Bộ nhớ ngoài (Thiết bị lưu trữ - Storage)
6.5.1. Đĩa từ
6.5.2. Đĩa quang
6.5.3. Thiết bị đĩa mềm
6.5.4. Thiết bị USB
Chương 7. Hệ thống vào/ra
7.1. Tổng quan về hệ thống vào ra

11
7.1.1. Mô hình
7.1.2. Thiết bị ngoại vi
7.1.3. Quá trình vào/ra dữ liệu
7.2. Các phương pháp trao đổi dữ liệu
7.2.1. Địa chỉ hoá cổng vào ra
7.2.2. Phương pháp vào ra bằng chương trình
7.2.3. Vào ra bằng điều khiển ngắt
7.2.4. Phương pháp vào ra bằng DMA
7.3. Thiết bị giao diện vào ra
7.3.1. Vào ra nối tiếp và thiết bị giao diện vào ra nối tiếp
7.3.2. Vào ra song song và thiết bị giao diện vào ra song song
7.3.3. Cổng USB
7.4. Một số thiết bị ngoại vi
7.4.1. Bàn phím
7.4.2. Màn hình
8. Tài liệu tham khảo
[1] Douglas Comer, Essentials Of Computer Architecture, 2009.
[2] Nguyễn Đình Việt, Kiến Trúc Máy Tính, NXB Đại học Quốc Gia Hà Nội, 2006.
[3] L. Null, J. Lobur, The Essentials of Computer Organization and Architecture, Jones
and Bartlett Publishers, 2003
[4] A.S. Tanenbaum – Structured Computer Organization – Fourth Edition

12
CHƯƠNG 1. TỔNG QUAN VỀ KIẾN TRÚC MÁY TÍNH

1.1 Định nghĩa kiến trúc máy tính


Kiến trúc máy tính là một chi tiết về đặc điểm kỹ thuật như thế nào để
một tập các tiêu chuẩn phần mềm và công nghệ phần cứng tương tác để tạo
thành một hệ thống máy tính hay nền tảng. Nói ngắn hạn, kiến trúc máy tính đề
cập đến cách một hệ thống máy tính được thiết kế và những công nghệ gì tương
thích với nhau.

1.2 Sự tiến hóa của máy tính


Nhiều thế hệ trôi qua con người đã thực hiện các phép toán với các con số
chủ yếu bằng tay hay bằng các công cụ tính thô sơ (bảng tính, thước tính ...).
Năm 1943,John Mauchley và các học trò của ông đã chế tạo ra chiếc máy
tính điện tử đầu tiên ở Mĩ - chiếc máy tính được đặt tên là ENIAC (Electronic
Numerial Itergrator And Calculator). Nó gồm 18.000 đèn điện tử, 1500 rơ le,
nặng 30 tấn, tiêu thụ công suất điện 140KW.Chiếc máy này mục đích phục vụ
quân đội trong chiến tranh thế giới lần thứ 2 nhưng đến năm 1946 nó mới hoàn
thành.
Cho đến ngày nay máy tính đã có những sự phát triển vượt bậc, ứng dụng
trong hầu hết các hoạt động của xã hội với rất nhiều chủng loại thế hệ tuỳ theo
công việc. Tuy nhiên kể từ đó đến nay có thể phân máy tính ra thành các thế hệ
sau:

1.2.1 Máy tính dùng đèn điện tử


Thế hệ 1: (1946-1957)
− Về kỹ thuật: linh kiện dùng đèn điện tử, độ tin cậy thấp, tổn hao năng
lượng. Tốc độ tính toán từ vài nghìn đến vài trăm nghìn phép tính/giây.
− Về phần mềm: chủ yếu dùng ngôn ngữ máy để lập trình.
− Về ứng dụng: mục đích nghiên cứu khoa học kỹ thuât.
ENIAC (Electronic Numerical Integrator and Computer) là máy tính điện
tử số đầu tiên do Giáo sư Mauchly và người học trò Eckert tại Đại học
Pennsylvania thiết kế vào năm 1943 và được hoàn thành vào năm 1946. Đây là
một máy tính khổng lồ với thể tích dài 20 mét, cao 2,8 mét và rộng vài mét.
ENIAC bao gồm: 18.000 đèn điện tử, 1.500 công tắc tự động, cân nặng 30 tấn,
và tiêu thụ 140KW giờ. Nó có 20 thanh ghi 10 bit (tính toán trên số thập phân).

13
Có khả năng thực hiện 5.000 phép toán cộng trong một giây. Công việc lập trình
bằng tay bằng cách đấu nối các đầu cắm điện và dùng các ngắt điện.
Giáo sư toán học John Von Neumann đã đưa ra ý tưởng thiết kế máy tính
IAS (Princeton Institute for Advanced Studies): chương trình được lưu trong bộ
nhớ, bộ điều khiển sẽ lấy lệnh và biến đổi giá trị của dữ liệu trong phần bộ nhớ,
bộ làm toán và luận lý (ALU: Arithmetic And Logic Unit) được điều khiển để
tính toán trên dữ liệu nhị phân, điều khiển hoạt động của các thiết bị vào ra. Đây
là một ý tưởng nền tảng cho các máy tính hiện đại ngày nay. Máy tính này còn
được gọi là máy tính Von Neumann.
Vào những năm đầu của thập niên 50, những máy tính thương mại đầu
tiên được đưa ra thị trường: 48 hệ máy UNIVAC I và 19 hệ máy IBM 701 đã
được bán ra.

1.2.2 Máy tính dùng transistor


Thế hệ 2: (1958-1964):
− Về kỹ thuật:linh kiện bán dẫn chủ yếu là transistor. Bộ nhớ có dung lượng
khá lớn.
− Về phần mềm: đã bắt đầu sử dụng một số ngôn ngữ lập trình bậc cao:
Fortran, Algol, Cobol,...
− Về ứng dụng: tham gia giải các bài toán kinh tế xã hội.
Công ty Bell đã phát minh ra transistor vào năm 1947 và do đó thế hệ thứ
hai của máy tính được đặc trưng bằng sự thay thế các đèn điện tử bằng các
transistor lưỡng cực. Tuy nhiên, đến cuối thập niên 50, máy tính thương mại

14
dùng transistor mới xuất hiện trên thị trường. Kích thước máy tính giảm, rẻ tiền
hơn, tiêu tốn năng lượng ít hơn. Vào thời điểm này, mạch in và bộ nhớ bằng
xuyến từ được dùng. Ngôn ngữ cấp cao xuất hiện (như FORTRAN năm 1956,
COBOL năm 1959, ALGOL năm 1960) và hệ điều hành kiểu tuần tự (Batch
Processing) được dùng. Trong hệ điều hành này, chương trình của người dùng
thứ nhất được chạy, xong đến chương trình của người dùng thứ hai và cứ thế
tiếp tục.

1.2.3 Máy tính dùng vi mạch


Thế hệ 3 (1965-1971)
Về kỹ thuật: linh kiện chủ yếu sử dụng các mạch tích hợp (IC),các thiết
bị ngoại vi
được cải tiến, đĩa từ được sử dụng rộng rãi.Tốc độ tính toán đạt vài triệu
phép toán trên giây;dung lượng bộ nhớ đạt vài MB (Megabytes).
Về phần mềm: Xuất hiện nhiều hệ điều hành khác nhau.Xử lí song
song. Phần mềm đa dạng, chất lượng cao, cho phép khai thác máy tính theo
nhiều chế độ khác nhau.
Về ứng dụng: tham gia trong nhiều lĩnh vưc của xã hội.
Thế hệ thứ ba được đánh dấu bằng sự xuất hiện của các mạch kết (mạch
tích hợp - IC: Integrated Circuit). Các mạch kết độ tích hợp mật độ thấp (SSI:
Small Scale Integration) có thể chứa vài chục linh kiện và kết độ tích hợp mật độ
trung bình (MSI: Medium Scale Integration) chứa hàng trăm linh kiện trên mạch
tích hợp.
Mạch in nhiều lớp xuất hiện, bộ nhớ bán dẫn bắt đầu thay thế bộ nhớ bằng
xuyến từ. Máy tính đa chương trình và hệ điều hành chia thời gian được dùng.

1.2.4 Máy tính dùng vi mạch mật độ cao


Thế hệ thứ 4 (1972-về sau):
Thế hệ thứ tư được đánh dấu bằng các IC có mật độ tích hợp cao (LSI:
Large Scale Integration) có thể chứa hàng ngàn linh kiện. Các IC mật độ tích
hợp rất cao (VLSI: Very Large Scale Integration) có thể chứa hơn 10 ngàn linh
kiện trên mạch. Hiện nay, các chip VLSI chứa hàng triệu linh kiện.
Với sự xuất hiện của bộ vi xử lý (microprocessor) chứa cả phần thực hiện
và phần điều khiển của một bộ xử lý, sự phát triển của công nghệ bán dẫn các
máy vi tính đã được chế tạo và khởi đầu cho các thế hệ máy tính cá nhân.

15
Các bộ nhớ bán dẫn, bộ nhớ cache, bộ nhớ ảo được dùng rộng rãi.
Các kỹ thuật cải tiến tốc độ xử lý của máy tính không ngừng được phát
triển: kỹ thuật ống dẫn, kỹ thuật vô hướng, xử lý song song mức độ cao,…
Về kỹ thuật: Xử dụng mạch tích hợp cỡ lớn (Very large scale
integration) VLSI, thiết kế các cấu trúc đa xử lí. Tốc độ đạt tới hàng chục triệu
phép tính /giây.
Ở đây chúng ta chủ yếu nói về cấu trúc máy vi tính tương thích IBM nên
lịch sử của chiếc máy PC gắn liền với sự phát triển của IBM-PC.chiếc máy tính
cá nhân đã phát triển cùng với sự phát triển của các bộ vi xử lý .
Máy IBM_PC coi như được khởi đầu từ một công trình của phòng thí
nghiệm tại Atlanta của IBM.
o Từ năm 1979-1980 IBM hoàn thành chiếc máy Datamaster. Máy này
dùng vi xử lý 16 bit của Intel.
o Năm 1980 kế hoạch sản xuất máy PC bắt đầu được thực hiện. Chiếc
máy IBM_PC đầu tiên dùng một bộ vi xử lý 8 bits của Intel, bộ VXL 8085.
o Năm 1981-1982 IBM sản xuất máy tính PC sử dụng bộ vi xử lý
8086,8088.
o Năm 1984 máy tính xử dụng chíp 80286.
o Năm 1987 máy tính xử dụng bộ VXL 32bits 80386.
o Năm 1990 bộ VXL 80486 ra đời với nhiều tính năng hơn.
o Năm 1993 Bộ VXL Pentium ra đời mở ra một thế hệ vi tính cá nhân
mới với 64 bits dữ liệu, 32 bit địa chỉ.
o 1995-1999 các thế hệ VXL mới như MMX,Pentium II,III với khả năng
biểu diễn không gian 3 chiều, nhận dạng tiếng nói...
o Từ năm 2000 cùng với Merced một thế hệ VXL 64 bit với cấu trúc hoàn
toàn mới ra đời đã tạo ra một thế hệ máy vi tính mới.
Về ứng dụng : Máy tính đã được áp dụng trong hầu hết các lĩnh vực
của xã hội.
Thế hệ thứ 5:
Theo đề án của người Nhật chiếc máy tính điện tử thế hệ thứ 5 có cấu trúc
hoàn toàn mới, bao gồm 4 khối cơ bản. Một trong các khối cơ bản là máy tính
điện tử có cấu trúc như hiện nay và liên hệ trực tiếp với người sử dụng thông
qua khối giao tiếp trí thức gồm 3 khối con: bộ xử lý giao tiếp, cơ sở tri thức và
khối lập trình.

16
Việc chuyển từ thế hệ thứ tư sang thế hệ thứ 5 còn chưa rõ ràng. Người
Nhật đã và đang đi tiên phong trong các chương trình nghiên cứu để cho ra đời
thế hệ thứ 5 của máy tính, thế hệ của những máy tính thông minh, dựa trên các
ngôn ngữ trí tuệ nhân tạo như LISP và PROLOG,... và những giao diện người -
máy thông minh. Đến thời điểm này, các nghiên cứu đã cho ra các sản phẩm
bước đầu và gần đây nhất (2004) là sự ra mắt sản phẩm người máy thông minh
gần giống với con người nhất: ASIMO (Advanced Step Innovative Mobility:
Bước chân tiên tiến của đổi mới và chuyển động). Với hàng trăm nghìn máy
móc điện tử tối tân đặt trong cơ thể, ASIMO có thể lên/xuống cầu thang một
cách uyển chuyển, nhận diện người, các cử chỉ hành động, giọng nói và đáp ứng
một số mệnh lệnh của con người. Thậm chí, nó có thể bắt chước cử động, gọi
tên người và cung cấp thông tin ngay sau khi bạn hỏi, rất gần gũi và thân thiện.
Hiện nay có nhiều công ty, viện nghiên cứu của Nhật thuê Asimo tiếp khách và
hướng dẫn khách tham quan như: Viện Bảo tàng Khoa học năng lượng và Đổi
mới quốc gia, hãng IBM Nhật Bản, Công ty điện lực Tokyo. Hãng Honda bắt
đầu nghiên cứu ASIMO từ năm 1986 dựa vào nguyên lý chuyển động bằng hai
chân. Cho tới nay, hãng đã chế tạo được 50 robot ASIMO.
Các tiến bộ liên tục về mật độ tích hợp trong VLSI đã cho phép thực hiện
các mạch vi xử lý ngày càng mạnh (8 bit, 16 bit, 32 bit và 64 bit với việc xuất
hiện các bộ xử lý RISC năm 1986 và các bộ xử lý siêu vô hướng năm 1990).
Chính các bộ xử lý này giúp thực hiện các máy tính song song với từ vài bộ xử
lý đến vài ngàn bộ xử lý. Điều này làm các chuyên gia về kiến trúc máy tính tiên
đoán thế hệ thứ 5 là thế hệ các máy tính xử lý song song.

Bảng 1.1 Các thế hệ máy tính

17
1.3 Phân loại máy tính

1.3.1 Phân loại theo khả năng


Máy tính lớn (mainframe computer)
Máy tính con (mini computer)
máy vi tính (Microcomputer).
Máy tính lớn (mainframe computer):
Là những máy tính cỡ lớn, có khả năng hỗ trợ cho hàng trăm đến hàng
ngàn người sử dụng. Có khả năng giải những bài toán lớn tốc độ tính toán
nhanh.Chúng được thiết kế đặc biệt với chiều dài bus dữ liệu rộng 64 bit hoặc
hơn. Kích thước bộ nhớ làm việc rất lớn. Giá thành cao chỉ được chuyên dùng
cho các ứng dụng trong quân sự, ngân hàng, khí tượng. Thường được sử dụng
trong chế độ các công việc sắp xếp theo lô lớn (Large-Batch-Job) hoặc xử lý các
giao dịch (Transaction Processing), ví dụ trong ngân hàng.
Máy tính con (mini computer):
Là một dạng thu nhỏ của máy tính lớn. Chiều rộng dữ liệu vào khoảng 32
bit đến 64 bit. Do giá thành thấp hơn máy tính lớn,tính năng mạnh nên máy tính
con rất được ưa dùng trong nghiên cứu khoa học.
Máy vi tính (MicroComputer):
Những máy dùng bộ vi xử lý (họ Intel, Motorola) làm cốt lõi, vi điều
khiển (microcontroler) và máy tính trong một vi mạch (one-chip
microcomputer) đều thuộc họ máy vi tính. Đặc điểm chung về công nghệ của họ
này mức độ tổ hợp lớn VLSI (very large scale integration) và dùng công nghệ
CMOS (complementary metal oxide silicon) để chế tạo các mạch logic. Tốc độ
phát triển các vi xử lý 32 bit và 64 bit hiện đại làm khoảng cách giữa máy tính
lớn và máy vi tính ngày càng thu hẹp.
Trạm làm việc (workstation):
Cũng là một loại máy vi tính, đặc điểm khác biệt so với máy tính cá nhân
PC là có khả năng được nhiều người cùng xử dụng cùng một lúc.
Máy tính cá nhân PC (Personal Computer):
Chỉ được một người sử dụng. Giá thành của chúng rẻ do cấu hình đơn
giản, được chuẩn hoá, và được sản xuất hàng loạt với số lượng lớn.Cùng với sự
phát triển của khoa học công nghệ mà máy tính cá nhân ngày nay đã có thể làm
được những công việc mà trước kia vốn chỉ là đặc quyền của máy tính lớn.

18
1.3.2 Phân loại theo nguyên lý
Máy tính cơ khí.
Máy tính tương tự
Máy tính số

1.3.3 Phân loại theo kiến trúc


− SISD (Single Instruction Stream-Single Data Stream)
− SIMD (Single Instruction Stream-Multiple Data Stream)
− MIMD (Multiple Instruction Stream-Single Data Stream)
− MISD (Multiple Instruction Stream-Single Data Stream)

1.4 Kiến trúc máy tính Von Neumann


Năm 1946, von Neumann và các đồng nghiệp của ông bắt đầu thiết kế
một máy tính chương trình lưu trữ mới, được gọi là máy tính IAS (Institute for
Advanced Studies), tại Viện Princeton Institute for Advanced Studies. Máy tính
IAS, mặc dù không hoàn thành cho đến năm 1952, nhưng là nguyên mẫu của tất
cả các máy tính mục đích chung sau đó. Cấu trúc chung của máy tính IAS như
sau:

1.4.1 Mô hình

Hình 1.1 Kiến trúc máy tính Von Neumann (IAS)

Bao gồm các khối cơ bản:


− Bộ nhớ chính (M: Main Memory): lưu trữ dữ liệu và các lệnh.
− ALU (Arithmetic Logic Unit): Tính toán dữ liệu nhị phân
− CU (Control Unit): Dịch các lệnh trong bộ nhớ và thực thi chúng.

19
− I/O: Các thiết bị vào ra hoạt động dưới sự điều khiển của khối CU.

1.4.2 Bus hệ thống


Một máy tính bao gồm các bộ phận hay các đơn vị của ba thành phần
chính: CPU, hệ thống nhớ, thiết bị vào ra, được liên lạc với nhau. Về thực chất
máy tính được coi là một mạng của các đơn vị cơ bản. Hơn nữa cần phải có các
đường để kết nối các đơn vị với nhau.
Tập hợp các đường kết nối các đơn vị được gọi là Interconnection
Structure. Cấu trúc kết nối thông dụng nhất được sử dụng trong máy tính là BUS
BUS là tập hợp các đường dây kết nối hai hay nhiều thiết bị với nhau. Rất
nhiều thiết bị kết nối với BUS, một tín hiệu được truyền đi từ bất kì một thíêt bị
nào cũng có thể được gửi đến tất cả các thiết bị kết nối với BUS. Nếu có hai
thiết bị cùng truyền dữ liệu đồng thời trong một thời điểm, những tín hiệu này sẽ
gối lên nhau và sẽ bị sai lạc, như vậy chỉ một thiết bị có thể truyền dữ liệu thành
công trong một thời điểm.
Trong nhiều trường hợp, BUS thực sự gồm nhiều đường liên lạc, mỗi
đường có khả năng truyền các tín hiệu mô tả các giá trị nhị phân 0, 1. Các số nhị
phân được truyền liên tục thông qua một đường, một số đường của BUS truyền
các bit nhị phân đồng thời (kết nối song song).
Một hệ thống máy tính chứa đựng một số loại BUS khác nhau tuỳ thuộc
các đường kết nối giữa các bộ phận ở các mức khác nhau của hệ thống. BUS kết
nối các bộ phận chính của máy gọi là BUS hệ thống.
Thông thường, hệ thống bus có từ 50 đến hàng trăm đường khác nhau.
Mỗi đường có một ý nghĩa hoặc chức năng riêng biệt. Mặc dù có nhiều thiết kế
bus khác nhau, trên bất kỳ bus nào thì các đường tín hiệu có thể chia thành ba
nhóm chức năng: Bus dữ liệu, Bus địa chỉ, Bus điều khiển. Ngoài ra, có thể có
các đường phân phối nguồn cung cấp nguồn đến các module được gắn cùng.

Hình 1.2 Sơ đồ Bus hệ thống trong máy tính Von Neumann

Các đường dữ liệu (Bus dữ liệu): cung cấp đường dẫn để truyền dữ liệu
giữa các module hệ thống. Các đường này gọi là bus dữ liệu. Bus dữ liệu có thể

20
là 32, 64 hoặc 128 thậm trí nhiều đường riêng biệt, số lượng các đường này gọi
là độ rộng của bus dữ liệu. Vì mỗi đường chỉ có thể truyền tải một bit tín hiệu tại
một thời điểm, số lượng các đường cho biết bao nhiêu bit có thể đường truyền
cùng một lúc. Độ rộng của bus dữ liệu là nhân tố quan trọng trong việc xác định
hiệu suất hoạt động của hệ thống. Ví dụ, nếu bus dữ liệu là 32 bit và mỗi lệnh có
độ dài 64 bit thì bộ vi xử lý phải truy cập module nhớ hai lần trong mỗi chu kỳ
lệnh.
Các đường địa chỉ (Bus địa chỉ): được sử dụng để xác định nguồn hoặc
đích của dữ liệu trên bus dữ liệu. Ví dụ, bộ vi xử lý muốn đọc một từ nhớ (8, 16
hoặc 32 bit) dữ liệu từ bộ nhớ, nó đặt địa chỉ của từ nhớ mong muốn lên đường
địa chỉ. Rõ ràng, độ rộng của bus địa chỉ xác định khả năng xác định bộ nhớ lớn
nhất của hệ thống. Hơn nữa, các đường địa chỉ cũng được sử dụng để địa chỉ hóa
các cổng vào ra. Thông thường, các bit có trọng số cao hơn thường được sử
dụng để chọn một module riêng trên bus và các bit có trọng số thấp hơn chọn vị
trí bộ nhớ hoặc cổng vào ra trong module đó. Ví dụ, trên một bus địa chỉ 8 bit,
địa chỉ 01111111 và các địa chỉ tiếp theo có thể tham chiếu các vị trí trong một
module nhớ (module 0) với 128 từ nhớ của bộ nhớ, và địa chỉ 10000000 và các
địa chỉ ở trên tham chiếu đến các thiết bị gắn kèm một module vào ra (module
1).
Các đường điều khiển (Bus điều khiển): được sử dụng để điều khiển
truy cập đến và sử dụng các đường dữ liệu và địa chỉ. Bởi vì các đường địa chỉ
và dữ liệu được sử dụng chung bởi tất cả các thiết bị, phải có một phương tiện
kiểm soát việc sử dụng chúng. Các tín hiệu điều khiển truyền cả lệnh và thông
tin thời gian giữa các module hệ thống. Các tín hiệu thời gian xác định tính hợp
lệ của dữ liệu và thông tin địa chỉ. Các tín hiệu lệnh xác định các phép toán được
thực hiện. Thông thường các đường điều khiển bao gồm:
− Ghi bộ nhớ: Dữ liệu đưa ra trên bus được ghi vào vị trí đã được địa chỉ hóa.
− Đọc bộ nhớ: Dữ liệu đưa ra từ vị trí được địa chỉ hóa được thay thế trên
bus.
− Ghi thiết bị vào ra: dữ liệu đưa ra trên bus được đẩy ra địa chỉ cổng vào ra.
− Đọc thiết bị vào ra: Dữ liệu đưa ra từ địa chỉ cổng vào ra được thay thế trên
bus.
− Chấp nhận truyền (Tranfer ACK): Xác định dữ liệu đó được chấp nhận từ
bus hoặc được thay thế trên bus.

21
− Yêu cầu bus: xác định một module cần phải chiếm quyền điều khiển của
bus đó.
− Cấp quyền bus: xác định một module đang yêu cầu được cấp quyền điều
khiển của bus.
− Yêu cầu ngắt: xác định một ngắt đang chờ.
− Chấp nhận ngắt (Interrupt ACK): chấp nhận ngắt đang chờ đã được nhận
dạng.
− Đồng hồ: được sử dụng để đồng bộ các hoạt động.
− Reset: Khởi động lại tất cả các module.
Phân loại BUS theo đường truyền
BUS đồng bộ: được điều khiển bởi nhịp đồng hồ với chu kì nhất định.
Hoạt động của vi xử lý đòi hỏi thời gian là bội số của chu kì máy
BUS không đồng bộ: không hoạt động theo xung đồng hồ nhất định,
khi truyền tín hiệu thiết bị truyền phát tín hiệu MSYN báo cho thiết bị nhận chạy
nhanh nhất có thể, sau đó khi hoàn thành thiết bị nhận phát lại tín hiệu SSYN.

1.4.3 Hoạt động của máy tính Von Neumann


Bộ nhớ của IAS bao gồm 1.000 vị trí lưu trữ, gọi là các từ (word), mỗi từ
gồm 40 chữ số nhị phân (bit). Cả dữ liệu và lệnh đều được lưu trữ trong đó. Các
số được biểu diễn dưới dạng nhị phân, và mỗi lệnh được biểu diễn dưới dạng
một mã nhị phân. Hình 1.2 cho chúng ta thấy những dạng biểu diễn này. Mỗi
một số được biểu diễn dưới dạng mã nhị phân 40 bit, trong đó 1 bit dấu và 39 bit
giá trị. Một từ có thể chứa 2 lệnh 20bit, mỗi lệnh chứa mã phép toán 8bit,cho
biết phép toán nào được thực hiện và một địa chỉ 12 bit chỉ định một trong các
từ của bộ nhớ (được đánh số từ 0 đến 999). Đơn vị điều khiển (CU) điều khiển
hoạt động của IAS bằng cách các nhận lệnh từ bộ nhớ và thực thi chúng cùng
một lúc. Để giải thích cho điều này, sơ đồ cấu trúc chi tiết hơn được giới thiệu
trong hình 1.3. Sơ đồ này cho thấy cả đơn vị điều khiển (CU) và đơn vị xử lý số
học và logic (ALU) đều có những vị trí lưu trữ được gọi là các thanh ghi, được
định nghĩa như sau:
− Thanh ghi MBR (Memory Buffer Register): chứa một từ nhớ được để lưu
trữ trong bộ nhớ hoặc để gửi ra thiết bị vào ra (I/O), hoặc được sử dụng để
nhận một từ nhớ từ bộ nhớ hoặc từ thiết bị vào ra.
− Thanh ghi MAR (Memory Address Register): xác định địa chỉ bộ nhớ của
từ nhớ để ghi ra hoặc đọc vào thanh ghi MBR.
22
− Thanh ghi IR (Instruction Register): chứa lệnh dưới dạng mã phép toán 8bit
sẽ được thực hiện.
− Thanh ghi IBR (Instruction Buffer Register): được sử dụng để lưu trữ tạm
thời chỉ thị lệnh phần bên phải của một từ nhớ trong bộ nhớ.
− Thanh ghi PC (Program Counter): chứa địa chỉ của cặp lệnh tiếp theo được
nạp vào từ bộ nhớ.
− Bộ tích lũy (AC-Accumulator) và nghịch đảo phép nhân (MQ-Multiplier
Quotient): sử dụng để lưu trữ tạm thời các toán hạng và các kết quả của các
phép toán ALU. Ví dụ, kết quả của phép nhân hai số 40bit là một số 80bit,
40 bit quan trọng nhất được lưu trong AC và 40 bit ít quan trọng nhất lưu
trong MQ.

Hình 1.3 Định dạng bộ nhớ IAS.

Hình 1.4 Sơ đồ cấu trúc mở rộng của máy tính IAS.

23
IAS hoạt động bằng cách lặp đi lặp lại thực hiện một chu kỳ lệnh, như thể
hiện trong hình 1.5. Mỗi chu kỳ lệnh bao gồm hai vòng con. Trong chu kỳ nạp
lệnh, mã phép toán của tiếp theo được nạp vào thanh ghi IR và phần địa chỉ
được nạp vào thanh ghi MAR. Lệnh này có thể được lấy từ IBR, hoặc nó có thể
được lấy từ bộ nhớ bằng cách tải một từ nhớ vào MBR, và sau đó xuống IBR,
IR, và MAR.
Tại sao lại là gián tiếp? Những thao tác này được điều khiển bởi mạch
điện tử và dẫn đến việc sử dụng các đường dẫn dữ liệu. Để đơn giản các thiết bị
điện tử chỉ một thanh ghi được sử dụng để xác định địa chỉ trong bộ nhớ để đọc
hoặc ghi và chỉ một thanh ghi sử dụng để xác định nguồn hoặc đích.
Khi mã lệnh được đưa vào IR, chu kỳ thực hiện lệnh được thực hiện.
Mạch điều khiển dịch mã lệnh và thực hiện lệnh bằng cách gửi đi các tín hiệu
điều khiển tương ứng để làm cho dữ liệu được chuyển đi hoặc một phép toán
được ALU thực hiện.

Hình 1.5 Sơ đồ luồng hoạt động máy tính IAS.

24
Máy tính IAS có tổng cộng 21 lệnh, chi tiết các lệnh này trong bảng 1.1.
Các lệnh này được chia thành các nhóm lệnh như sau:
Nhóm lệnh truyền dữ liệu: Di chuyển dữ liệu giữa bộ nhớ và các thanh
ghi ALU hoặc giữa hai thanh ghi ALU.
Nhóm lệnh rẽ nhánh vô điều kiện: Thông thường, đơn vị điều khiển
(CU) thực thi các lệnh theo một thứ tự từ bộ nhớ. Thứ tự này có thể bị thay đổi
bởi một lệnh rẽ nhánh, giúp cho việc thực hiện một số thao tác lặp đi lặp lại.
Nhóm lệnh rẽ nhánh có điều kiện: Việc rẽ nhánh phụ thuộc vào một
điều kiện, do một số điểm quyết định.
Nhóm lệnh toán học: Các phép toán được thực hiện bởi ALU.
Nhóm lệnh thay đổi địa chỉ: Cho phép các địa chỉ được tính toán trong
ALU sau đó chèn vào các lệnh được lưu trữ trong bộ nhớ. Điều này cho phép
một chương trình có thể giải quyết một cách mềm dẻo đáng kể.

Bảng 1.2 Bảng tập các lệnh trong máy tính IAS.

Bảng 1.2 mô tả các lệnh theo một ký hiệu, định dạng dễ đọc. Trên thực tế,
mỗi lệnh phải phù hợp với định dạng trong hình 1.2 (b). Phần mã lệnh (8bit đầu
25
tiên) xác định 21 lệnh được thực thi. Phần địa chỉ (12 bit còn lại) xác định 1000
vị trí bộ nhớ được tham gia vào việc thực thi lệnh.
Hình 1.4 cho thấy một số ví dụ của việc thực thi lệnh bằng CU. Chú ý là
mỗi phép toán yêu cầu một số bước. Một số bước trong đó khá phức tạp. Các
phép toán nhân đòi hỏi 39 phép toán con, một phép toán con đó đối với mỗi bit
ngoại trừ bit dấu.

1.5 Phân loại kiến trúc máy tính

1.5.1 Kiến trúc máy tính loại SISD


Kiến trúc tuần tự (kiến trúc VonNewman cổ điển)

Máy tính gồm CPU, Memory, I/O.


- CPU gồm:
- Thanh ghi (regiser)
- ALU (Arithmetic Logical Unit)
- CU (Control Unit).
Đặc điểm :
- Thực hiện lần lượt từng lệnh một
- Tốc độ chậm
Còn được gọi là kiến trúc SISD(Single Instruction Stream-Single Data
Stream)

1.5.2 Kiến trúc máy tính SIMD


SIMD (Single Instruction Stream-Multiple Data Stream)

26
Đặc điểm:
o Có một đơn vị điều khiển, n phần tử xử lý
o Đơn vị điều khiển: điều khiển đồng thời tất cả các phần tử tại cùng một
thời điểm các phần tử xử lý thực hiện cùng một thao tác trên các tập dữ liệu
khác nhau.

1.5.3 Kiến trúc máy tính MIMD


MIMD (Multiple Instruction Stream-Multiple Data Stream)

Đặc điểm:
o Máy gồm hai hoặc nhiều bộ vi xử lý tương tự về khả năng, có thể thực
hiện những phép toán khác nhau tren các DL khác nhau.
o Tất cả các CPU cùng chia xẻ một bộ nhớ chung. Một số bộ nhớ cục bộ
cũng có thể được dùng.
o Tất cả CPU cùng xử dụng chung các thiết bị vào ra, có thể dùng chung
một số kênh hoặc dùng các kênh khác nhau dẫn đến cùng một thiết bị.
o Hệ thống được điều khiển bởi hệ thống hoạt động tích hợp .Nó cung cấp
sự ảnh hưởng lẫn nhau giữa CPU và các chương trình chạy trên chúng ở task,
file,các thành phần dữ liệu...

1.5.4 Kiến trúc máy tính MISD


MISD (Multiple Instruction Stream-Single Data Stream)
Đặc điểm:
o Có nhiều đơn vị điều khiển

27
o Thực hiện lệnh theo các công đoạn, tại một thời điểm mỗi đơn vị điều
khiển xử lý một công đoạn như vậy có thể tiết kiệm được số chu kỳ máy cần để
xử lý lệnh.
o Đây cũng là nguyên tắc của Pipeling khi chia lệnh thành các công đoạn:
nhận lệnh F (Fetch), giải mã lệnh D (Decode), thực hiện lệnh E (Execute), và
ghi kết quả W (write back). Như vậy với 4 lệnh có thể tiết kiệm tới 9 chu kỳ
máy.

28
CÂU HỎI ÔN TẬP CHƯƠNG 1
1.1. Dựa vào tiêu chuẩn nào người ta phân chia máy tính thành các thế
hệ?
1.2. Đặc trưng cơ bản của các máy tính thế hệ thứ nhất?
1.3. Đặc trưng cơ bản của các máy tính thế hệ thứ hai?
1.4. Đặc trưng cơ bản của các máy tính thế hệ thứ ba?
1.5. Đặc trưng cơ bản của các máy tính thế hệ thứ tư?
1.6. Khuynh hướng phát triển của máy tính điện tử ngày nay là gì?
1.7. Trình bày cấu trúc chung một máy tính điện tử
1.8. Việc phân loại máy tính dựa vào tiêu chuẩn nào?
1.9. Trình bày về phân loại máy tính theo kiến trúc?
1.10. Trình bày kiến trúc chung của máy tính theo nguyên lý
VonNewman? Nêu chức năng từng đơn vị? Phân loại máy tính theo kiến trúc?
1.11. Trình bày khái niệm về BUS? Phân loại BUS

29
CHƯƠNG 2. BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH

2.1 Khái niệm thông tin


Khái niệm về thông tin gắn liền với sự hiểu biết một trạng thái cho sẵn
trong nhiều trạng thái có thể có vào một thời điểm cho trước.
Trong hình dưới, chúng ta quy ước có hai trạng thái có ý nghĩa: trạng thái
thấp khi hiệu điện thế thấp hơn VL và trạng thái cao khi hiệu điện thế lớn hơn
VH. Để có thông tin, ta phải xác định thời điểm ta nhìn trạng thái của tín hiệu.
Thí dụ, tại thời điểm t1 thì tín hiệu ở trạng thái thấp và tại thời điểm t2 thì tín
hiệu ở trạng thái cao.

Hình 2.1Thông tin về 2 trạng thái có ý nghĩa của hiệu điện thế.

2.2 Lượng thông tin và sự mã hóa thông tin


Thông tin được đo lường bằng đơn vị thông tin mà ta gọi là bit. Lượng
thông tin được định nghĩa bởi công thức:
I = Log2(N)
Trong đó:
I: là lượng thông tin tính bằng bit
N: là số trạng thái có thể có
Vậy một bit ứng với sự hiểu biết của một trạng thái trong hai trạng thái có
thể có. Thí dụ, sự hiểu biết của một trạng thái trong 8 trạng thái có thể ứng với
một lượng thông tin là:
I = Log2(8) = 3 bit
Tám trạng thái được ghi nhận nhờ 3 số nhị phân (mỗi số nhị phân có thể
có giá trị 0 hoặc 1).
Như vậy lượng thông tin là số con số nhị phân cần thiết để biểu diễn số
trạng thái có thể có. Do vậy, một con số nhị phân được gọi là một bit. Một từ n

30
bit có thể tượng trưng một trạng thái trong tổng số 2n trạng thái mà từ đó có thể
tượng trưng. Vậy một từ n bit tương ứng với một lượng thông tin n bit.

Bảng 2.1 Biểu diễn tám trạng thái khác nhau của 3 bít nhị phân

2.3 Hệ thống số
Khái niệm hệ thống số: Cơ sở của một hệ thống số định nghĩa phạm vi
các giá trị có thể có của một chữ số. Ví dụ: trong hệ thập phân, một chữ số có
giá trị từ 0-9, trong hệ nhị phân, một chữ số (một bit) chỉ có hai giá trị là 0 hoặc
1.
Dạng tổng quát để biểu diễn giá trị của một số:

Trong đó:
Vk: Số cần biểu diễn giá trị
m: số thứ tự của chữ số phần lẻ
(phần lẻ của số có m chữ số được đánh số thứ tự từ -1 đến -m)
n-1: số thứ tự của chữ số phần nguyên
(phần nguyên của số có n chữ số được đánh số thứ tự từ 0 đến n-1)
bi: giá trị của chữ số thứ i
k: hệ số (k=10: hệ thập phân; k=2: hệ nhị phân;...).
Ví dụ: biểu diễn số 541.2510

Một máy tính được chủ yếu cấu tạo bằng các mạch điện tử có hai trạng
thái. Vì vậy, rất tiện lợi khi dùng các số nhị phân để biểu diễn số trạng thái của
các mạch điện hoặc để mã hoá các ký tự, các số cần thiết cho vận hành của máy
tính.

31
Để biến đổi một số hệ thập phân sang nhị phân, ta có hai phương thức
biến đổi:
- Phương thức số dư để biến đổi phần nguyên của số thập phân sang nhị
phân.
Ví dụ: Đổi 23.37510 sang nhị phân. Chúng ta sẽ chuyển đổi phần nguyên
dùng phương thức số dư:

- Phương thức nhân để biến đổi phần lẻ của số thập phân sang nhị phân

Kết quả cuối cùng nhận được là: 23.37510 = 10111.0112


Tuy nhiên, trong việc biến đổi phần lẻ của một số thập phân sang số nhị
phân theo phương thức nhân, có một số trường hợp việc biến đổi số lặp lại vô
hạn.
Ví dụ:

32
Trường hợp biến đổi số nhị phân sang các hệ thống số khác nhau, ta có
thể nhóm một số các số nhị phân để biểu diễn cho số trong hệ thống số tương
ứng.

Thông thường, người ta nhóm 4 bit trong hệ nhị phân hệ để biểu diễn số
dưới dạng thập lục phân (Hexadecimal).
Như vậy, dựa vào cách biến đổi số trong bảng nêu trên, chúng ta có ví dụ
về cách biến đổi các số trong các hệ thống số khác nhau theo hệ nhị phân:

Một từ n bit có thể biểu diễn tất cả các số dương từ 0 tới 2n-1. Nếu di là
một số nhị phân thứ i, một từ n bit tương ứng với một số nguyên thập phân.

Một Byte (gồm 8 bit) có thể biểu diễn các số từ 0 tới 255 và một từ 32 bit
cho phép biểu diễn các số từ 0 tới 4294967295.

2.4 Các phép tính số học cho hệ nhị phân

2.4.1 Phép cộng nhị phân


Thực hiện phép cộng trong hệ nhị phân theo quy tắc sau:
0 + 0 = 0.
33
0 + 1 = 1 + 0 = 1.
1 + 1 = 0 nhớ 1.
Ví dụ: Thực hiện phép cộng trong hệ nhị phân: 1101 + 0111
1101
+
0111
=10100

2.4.2 Phép trừ nhị phân


Để trừ 2 số ta thực hiện nguyên tắc sau:
0–0=0
0 – 1 = 1 (nhớ -1)
1–0=1
1–1=0
-1 – 1 = 0 (nhớ -1)
Ngoài phương pháp này ra còn có 2 phương pháp khác sẽ được trình bày
chi tiết trong phần biểu diễn số bù 1, số bù 2 trong các phần tiếp theo (chi tiết
trong phần 2.4.5).

2.4.3 Biểu diễn số nguyên có dấu


Có nhiều cách để biểu diễn một số n bit có dấu. Trong tất cả mọi cách thì
bit cao nhất luôn tượng trưng cho dấu.
Khi đó, bit dấu có giá trị là 0 thì số nguyên dương, bit dấu có giá trị là 1
thì số nguyên âm. Tuy nhiên, cách biểu diễn dấu này không đúng trong trường
hợp số được biểu diễn bằng số thừa K mà ta sẽ xét ở phần sau trong chương này
(bit dấu có giá trị là 1 thì số nguyên dương, bit dấu có giá trị là 0 thì số nguyên
âm).

Số nguyên có bit dn-1 là bit dấu và có trị số tượng trưng bởi các bit từ d0
tới dn-2.
Cách biểu diễn bằng trị tuyệt đối và dấu

34
Trong cách này, bit dn-1 là bit dấu và các bit từ d0 tới dn-2 cho giá trị tuyệt
đối. Một từ n bit tương ứng với số nguyên thập phân có dấu.

Ví dụ: +2510 = 000110012


-2510 = 100110012
- Một Byte (8 bit) có thể biểu diễn các số có dấu từ -127 tới +127.
- Có hai cách biểu diễn số không là 0000 0000 (+0) và 1000 0000 (-0).

2.4.4 Số bù của một số


a. Cách biểu diễn hằng số bù 1
Trong cách biểu diễn này, số âm -N được có bằng cách thay các số nhị
phân di của số đương N bằng số bù của nó (nghĩa là nếu di = 0 thì người ta đổi
nó thành 1 và ngược lại).
Ví dụ: +2510 = 000110012
-2510 = 111001102
- Một Byte cho phép biểu diễn tất cả các số có dấu từ -127 (1000 00002)
đến 127 (0111 11112)
- Có hai cách biểu diễn cho 0 là 0000 0000 (+0) và 1111 1111 (-0).
b. Cách biểu diễn hằng số bù 2
Để có số bù 2 của một số nào đó, người ta lấy số bù 1 rồi cộng thêm 1.
Vậy một từ n bit (dn-1 ....... d0) có trị thập phân.

Một từ n bit có thể biểu diễn các số có dấu từ - 2n-1 đến 2n-1 - 1. Chỉ có
một cách duy nhất để biểu diễn cho số không là tất cả các bit của số đó đều bằng
không.
Ví dụ: +2510 = 000110012
-2510 = 111001112
- Dùng 1 Byte (8 bit) để biểu diễn một số có dấu lớn nhất là +127 và số
nhỏ nhất là –128.
- Chỉ có một giá trị 0: +0 = 000000002, -0 = 000000002

35
Bảng 2.2 Số 4 bit có dấu théo cách biểu diễn số âm bằng số bù 2.

c. Cách biểu diễn hằng số thừa K.


Trong cách này, số dương của một số N có được bằng cách “cộng thêm
vào” số thừa K được chọn sao cho tổng của K và một số âm bất kỳ luôn luôn
dương. Số âm -N của số N có được bằng cáck lấy K-N (hay lấy bù hai của số
vừa xác định).
Ví dụ: (số thừa K=128, số “cộng thêm vào” 128 là một số nguyên dương.
Số âm là số lấy bù hai số vừa tính, bỏ qua số giữ của bit cao nhất) :
+2510 = 100110012
-2510 = 011001112
- Dùng 1 Byte (8 bit) để biểu diễn một số có dấu lớn nhất là +127 và số
nhỏ nhất là –128.
- Chỉ có một giá trị 0: +0 = 100000002, -0 = 100000002
Cách biểu diễn số nguyên có dấu bằng số bù 2 được dùng rộng rãi cho các
phép tính số nguyên. Nó có lợi là không cần thuật toán đặc biệt nào cho các
phép tính cộng và tính trừ, và giúp phát hiện dễ dàng các trường hợp bị tràn.
Các cách biểu diễn bằng “dấu , trị tuyệt đối” hoặc bằng “số bù 1” dẫn đến
việc dùng các thuật toán phức tạp và bất lợi vì luôn có hai cách biểu diễn của số
không. Cách biểu diễn bằng “dấu , trị tuyệt đối” được dùng cho phép nhân của
số có dấu chấm động.
Cách biểu diễn bằng số thừa K được dùng cho số mũ của các số có dấu
chấm động. Cách này làm cho việc so sánh các số mũ có dấu khác nhau trở
thành việc so sánh các số nguyên dương.

2.4.5 Phép trừ nhị phân dùng bù 1 và bù 2


Ví dụ: Thực hiện phép trừ : 15 – 9 theo cách thông thường.
1510 = 011112.

36
910 = 010012

Ví dụ: Thực hiện phép trừ 7 – 14 theo cách lấy bù 1.


Ta thực hiện phép tính trong hệ nhị phân 8 bit
710 = 000001112.
1410 = 000011102. => (-14)10 = 111100012.
Phép trừ tương đương với việc thực hiện 7 + (-14). Ta được
00000111
+
11110001
11111000
Vậy kết quả là 111110002.
Ví dụ: Thực hiện phép trừ 2 – 5 theo cách lấy bù 2.
Ta thực hiện phép tính trong hệ nhị phân 4bit.
210 = 00102
510 = 01012 => (-5)10 = 1010 + 1 = 10112.
Vậy ta tính 2 – 5 tương đương với việc tính 2 + (-5) ta được:
0010
+
1011
1101
Vậy ta có: 00102 – 01012 = 11012.
Thử lại ta được 11012 = -23 + 22 + 20 = -3. Vậy kết quả đúng.

2.5 Cách biểu diễn số thực

2.5.1 Biểu diễn số thực dấu chấm tĩnh


Cách biểu diễn dấu chấm cố định trong hệ nhị phân hoàn toàn giống cách
biểu diễn số thực thông thường của hệ thập phân.

37
Trong đó R số thực cần biểu diễn gồm n trị số đứng trước và m trị số
đứng sau dấu chấm. Tuỳ thuộc vào hệ thập phân hay nhị phân mà cơ số s có giá
trị là 2 hay 10.

2.5.2 Biểu diễn số thực dấu chấm động


Trước khi đi vào cách biểu diễn số với dấu chấm động, chúng ta xét đến
cách biểu diễn một số dưới dạng dấu chấm xác định.
Ví dụ:
- Trong hệ thập phân, số 25410 có thể biểu diễn dưới các dạng sau:
254 * 100; 25.4 * 101; 2.54 * 102; 0.254 * 103; 0.0254 * 104; …
- Trong hệ nhị phân, số (0.00011)2 (tương đương với số 0.0937510) có thể
biểu diễn dưới các dạng :
0.00011; 0.00011 * 20 ; 0.0011 * 2-1; 0.011 * 2-2; 0.11 * 2-3; 1.1 * 2-4
Các cách biểu diễn này gây khó khăn trong một số phép so sánh các số.
Để dễ dàng trong các phép tính, các số được chuẩn hoá về một dạng biểu diễn:
± 1. fff...f x 2± E
Trong đó: f là phần lẻ; E là phần mũ.
Số chấm động được chuẩn hoá, cho phép biểu diễn gần đúng các số thập
phân rất lớn hay rất nhỏ dưới dạng một số nhị phân theo một dạng qui ước.
Thành phần của số chấm động bao gồm: phần dấu, phần mũ và phần định trị.
Như vậy, cách này cho phép biểu diễn gần đúng các số thực, tất cả các số đều có
cùng cách biểu diễn.
Có nhiều cách biểu diễn dấu chấm động, trong đó cách biểu diễn theo
chuẩn IEEE 754 được dùng rộng rãi trong khoa học máy tính hiện nay. Trong
cách biểu diễn này, phần định trị có dạng 1,f với số 1 ẩn tăng và f là phần số lẽ.
Chuẩn IEEE 754 định nghĩa hai dạng biểu diễn số chấm động:
- Số chấm động chính xác đơn với định dạng được định nghĩa: chiều dài
số: 32 bit được chia thành các trường: dấu S (Sign bit - 1 bit), mũ E (Exponent -
8 bit), phần lẻ F (Fraction - 23 bit).
Số này tương ứng với số thực (-1)S * (1,f1 f2 ..... f23) * 2(E - 127).

38
Hình 2.2 Biểu diễn số thực dấu chấm động chính xác đơn với 32 bit.

- Số chấm động chính xác kép với định dạng được định nghĩa: chiều dài
số: 64 bit được chia thành các trường: dấu S (Sign bit - 1 bit), mũ E (Exponent -
11 bit), phần lẻ F (Fraction - 52 bit)
Số này tương ứng với số thực (-1)S * (1,f1 f2 ..... f52) * 2(E - 1023).

Hình 2.3 Biểu diễn số thực dấu chấm động chính xác kép với 64 bit.

Để thuận lợi trong một số phép tính toán, IEEE định nghĩa một số dạng
mở rộng của chuẩn IEEE 754:

Chuẩn IEEE 754 cho phép biểu diễn các số chuẩn hoá (các bit của E
không cùng lúc bằng 0 hoặc bằng 1), các số không chuẩn hoá (các bit của E
không cùng lúc bằng 0 và phần số lẻ f1 f2 ... khác không), trị số 0 (các bit của E
không cùng lúc bằng 0 và phần số lẻ bằng không), và các ký tự đặc biệt (các bit
của E không cùng lúc bằng 1 và phần lẻ khác không).
Ví dụ các bước biến đổi số thập phân -12.62510 sang số chấm động chuẩn
IEEE 754 chính xác đơn (32 bit):
- Bước 1: Đổi số -12.62510 sang nhị phân: -12.62510 = -1100.1012.
- Bước 2: Chuẩn hoá: -1100.1012 = -1.1001012 x 23 (Số 1.1001012 dạng
1.f)
- Bước 3: Điền các bit vào các trường theo chuẩn:
Số âm: bit dấu S có giá trị 1.
Phần mũ E với số thừa K=127, ta có: E-127=3
֜ E = 3 + 127 = 130 (1000 00102).

39
Kết quả nhận được:

2.6 Biểu diễn BCD


Một vài ứng dụng, đặc biệt ứng dụng quản lý, bắt buộc các phép tính thập
phân phải chính xác, không làm tròn số. Với một số bit cố định, ta không thể đổi
một cách chính xác số nhị phân thành số thập phân và ngược lại. Vì vậy, khi cần
phải dùng số thập phân, ta dùng cách biểu diễn số thập phân mã bằng nhị phân
(BCD: Binary Coded Decimal) theo đó mỗi số thập phân được mã với 4 số nhị
phân (bảng 2.3).

Bảng 2.3 Số thập phân mã bằng nhị phân

Để biểu diễn số BCD có dấu, người ta thêm số 0 trước một số dương cần
tính, ta có số âm của số BCD bằng cách lấy bù 10 số cần tính.
Ví dụ: biểu diễn số +07910 bằng số BCD: 0000 0111 1001
Bù 9: 1001 0010 0000
+1
Bù 10: 1001 0010 0001
Vây, ta có: Số - 07910 trong cách biểu diễn số BCD: 1001 0010 0001BCD.
Cách tính toán trên tương đương với cách sau:
o Trước hết ta lấy số bù 9 của số 079 bằng cách: 999 - 079 = 920.
o Cộng 1 vào số bù 9 ta được số bù 10: 920 + 1 = 921.
o Biểu diễn số 921 dưới dạng số BCD, ta có: 1001 0010 0001BCD.

2.7 Biểu diễn các ký tự


Tuỳ theo các hệ thống khác nhau, có thể sử dụng các bảng mã khác nhau:
ASCII, EBCDIC, UNICODE,....Các hệ thống trước đây thường dùng bảng mã
ASCII (American Standard Codes for Information Interchange) để biểu diễn các

40
chữ, số và một số dấu thường dùng mà ta gọi chung là ký tự. Mỗi ký tự được
biểu diễn bởi 7 bit trong một Byte. Hiện nay, một trong các bảng mã thông dụng
được dùng là Unicode, trong bảng mã này, mỗi ký tự được mã hoá bởi 2 Byte.

2.7.1 Bảng mã ASCII

2.7.2 Bảng mã Unicode

41
42
CÂU HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG 2
2.1. Khái niệm thông tin trong máy tính được hiểu như thế nào?
2.2. Lượng thông tin là gì ?
2.3. Sự hiểu biết về một trạng thái trong 4096 trạng thái có thể có ứng với
lượng thông tin là bao nhiêu?
2.4. Điểm chung nhất trong các cách biểu diễn một số nguyên n bit có dấu
là gì?
2.5. Số nhị phân 8 bit (11001100)2, số này tương ứng với số nguyên thập
phân có dấu là bao nhiêu nếu số đang được biểu diễn trong cách biểu diễn:
a. Dấu và trị tuyệt đối.
b. Số bù 1.
c. Số bù 2.
2.6. Đổi các số sau đây:
a. (011011)2 ra số thập phân.
b. (-2005)10 ra số nhị phân 16 bits.
c. (55.875)10 ra số nhị phân.
2.7. Biểu diễn số thực (31.75)10 dưới dạng số có dấu chấm động chính xác
đơn 32 bit.
2.8. Đổi số 2378610, -1745610 sang số nhị phân nguyên có dấu 16 bít
2.9. Đổi số 3476,065510 sang số thực nhị phân 32 bít theo chuẩn
IEEE754-1995.

43
CHƯƠNG 3. MẠCH LOGIC SỐ

3.1 Cổng và đại số Boolean

3.1.1 Cổng (Gate)


Cổng (hay cổng luận lý): cơ sở phần cứng, từ đó chế tạo ra mọi máy tính
số. Cổng có một hoặc nhiều lối vào, nhưng chỉ có một lối ra. Các giá trị vào
hoặc ra chỉ có thể nhận 1 trong 2 giá trị là 0 hoặc 1. Gọi là cổng lý luận vì nó
cho kết quả lý luận của đại số logic như nếu A đúng và B đúng thì C đúng (Cổng
AND C=A and B)

Hình 3.1 Cấu tạo của các cổng NOT, NAND, NOR

Cổng là một mạch số gồm một hoặc nhiều tín hiệu nhập và một tín hiệu
xuất.

44
Một mạch số sẽ được tạo ra từ tập hợp các cổng cơ bản. Mỗi cổng cơ bản
có ký hiệu riêng và hoạt động của nó được mô tả qua một bảng gọi là bảng chân
lý (chân trị - truth table) như sau:

Bảng 3.1 Các cổng cơ bản

Còn lại các cổng NAND, NOR, NXOR là bù của các cổng tương ứng
AND, OR, XOR và được biểu diễn thêm một vòng tròn ở đầu ra.
Đối với các cổng có đầu ra nghịch đảo ta có bảng sau:

Bảng 3.2 Các cổng cơ bản có đầu ra nghịch đảo

45
3.1.2 Đại số Boolean
Đại số Boolean (hay đại số Logic) là môn toán học nghiên cứu các mệnh
đề luận lý và là công cụ toán học để phân tích và tổng hợp các thiết bị mạch số.
Các biến số trong đại số Boolean là biến Boolean và là một đại lượng mà tại các
thời điểm khác nhau nó chỉ có thể bằng 0 hoặc 1. Biến boolean thường được sử
dụng để biểu diễn mức điện thế có trên dây hay tại các đầu vào/ra (I/O) của một
mạch số.
Như vậy, biến boolean là các biến biểu thị trạng thái của một giá trị điện
thế và ta gọi là mức logic. Trong logic số thì nhiều thuật ngữ khác nhau được
dùng để biểu thị hai trạng thái nhị phân 0, 1 như trong bảng sau:

Bảng 3.3 Các thuật ngữ biểu diễn logic “0” và “1”.

Các phép toán trên đại số boole:

Các đồng nhất thức của đại số Boole.

46
Các quy tắc logic:
− Quy tắc về phép cộng:

− Quy tắc về phép nhân logic:

− Quy tắc về phép phủ định:

Các mạch số được thiết kế từ những nguyên tố nhỏ nhất gọi là cổng logic
(gate).
Hàm logic:
Hàm Boolean là hàm của các biến logic và bản thân cũng chỉ nhận các giá
trị 0 và 1.
Bảng chân lý: là phương tiện mô tả đầu ra của mạch logic phụ thuộc vào
các mức đầu vào của mạch. Hay nói cách khác, bảng chân lý dùng để biểu diễn
mối quan hệ giữa hàm Boolean và các biến logic của hàm đó.
Ví dụ, bảng chân lý của hàm y =A hoặc B=A+B.

a. Phép toán OR

b. Phép toán AND

47
c. Hàm NOT

d. Hàm XOR

Định luật Boolean cơ bản:

Ví dụ: Dùng bảng chân lý để biểu diễn hàm: f= (A AND B) OR (C AND


NOT B), vẽ sơ đồ mạch hàm f.

48
3.2 Bản đồ Karnaugh
Để làm giảm số các số hạng trong một biểu thức Boole biểu diễn một
mạch, ta cần phải tìm các số hạng để tổ hợp lại. Có một phương pháp đồ thị, gọi
là bản đồ Karnaugh, được dùng để tìm các số hạng tổ hợp được đối với các hàm
Boole có số biến tương đối nhỏ. Phương pháp mà ta mô tả dưới đây đã được
Maurice Karnaugh đưa ra vào năm 1953. Phương pháp này dựa trên một công
trình trước đó của E.W. Veitch. Các bản đồ Karnaugh cho ta một phương pháp
trực quan để rút gọn các khai triển tổng các tích, nhưng chúng không thích hợp
với việc cơ khí hoá quá trình này. Trước hết, ta sẽ minh hoạ cách dùng các bản
đồ Karnaugh để rút gọn biểu thức của các hàm Boole hai biến.
Có bốn hội sơ cấp khác nhau trong khai triển tổng các tích của một hàm
Boole có hai biến x và y. Một bản đồ Karnaugh đối với một hàm Boole hai biến
này gồm bốn ô vuông, trong đó hình vuông biểu diễn hội sơ cấp có mặt trong
khai triển được ghi số 1. Các hình ô được gọi là kề nhau nếu các hội sơ cấp mà
chúng biểu diễn chỉ khác nhau một biến.

Thí dụ 1: Tìm các bản đồ Karnaugh cho các biểu thức sau và rút gọn
chúng:

Ta ghi số 1 vào ô vuông khi hội sơ cấp được biểu diễn bởi ô đó có mặt
trong khai triển tổng các tích. Ba bản đồ Karnaugh được cho trên hình sau.

49
Việc nhóm các hội sơ cấp được chỉ ra trong hình trên bằng cách sử dụng
bản đồ Karnaugh cho các khai triển đó. Khai triển cực tiểu của tổng các tích này
tương ứng là:

Bản đồ Karnaugh ba biến là một hình chữ nhật được chia thành tám ô.
Các ô đó biểu diễn tám hội sơ cấp có được. Hai ô được gọi là kề nhau nếu các
hội sơ cấp mà chúng biểu diễn chỉ khác nhau một biến. Một trong các cách để
lập bản đồ Karnaugh ba biến được cho trong hình sau.

Để rút gọn khai triển tổng các tích ba biến, ta sẽ dùng bản đồ Karnaugh để
nhận dạng các hội sơ cấp có thể tổ hợp lại. Các khối gồm hai ô kề nhau biểu
diễn cặp các hội sơ cấp có thể được tổ hợp lại thành một tích của hai biến; các
khối 2 x 2 và 4 x 1 biểu diễn các hội sơ cấp có thể tổ hợp lại thành một biến duy
nhất; còn khối gồm tất cả tám ô biểu diễn một tích không có một biến nào, cụ
thể đây là biểu thức 1.
Thí dụ 2: Dùng các bản đồ Karnaugh ba biến để rút gọn các khai triển
tổng các tích sau:

Bản đồ Karnaugh cho những khai triển tổng các tích này được cho trong
hình sau:

50
Việc nhóm thành các khối cho thấy rằng các khai triển cực tiểu thành các
tổng Boole của các tích Boole là:

Bản đồ Karnaugh bốn biến là một hình vuông được chia làm 16 ô. Các ô
này biểu diễn 16 hội sơ cấp có được. Một trong những cách lập bản đồ
Karnaugh bốn biến được cho trong hình dưới đây.

Hai ô được gọi là kề nhau nếu các hội sơ cấp mà chúng biểu diễn chỉ khác
nhau một biến. Do đó, mỗi một ô kề với bốn ô khác. Sự rút gọn một khai triển
tổng các tích bốn biến được thực hiện bằng cách nhận dạng các khối gồm 2, 4, 8
hoặc 16 ô biểu diễn các hội sơ cấp có thể tổ hợp lại được. Mỗi ô biểu diễn một
hội sơ cấp hoặc được dùng để lập một tích có ít biến hơn hoặc được đưa vào
trong khai triển. Cũng như trong trường hợp bản đồ Karnaugh hai và ba biến,
mục tiêu là cần phải nhận dạng các khối lớn nhất có chứa các số 1 bằng cách
dùng một số ít nhất các khối, mà trước hết là các khối lớn nhất.
Bìa Karnaugh (K) cho các hàm 2, 3, 4, 5 biến như được mô tả sau:

Bìa K cho hàm 2 biến

51
Bìa K cho hàm 3 biến

Bìa K cho hàm 4 biến.

Bài K cho hàm 5 biến.


Ví dụ:

52
53
3.3 Những mạch Logic số cơ bản

3.3.1 Mạch tích hợp (IC-Intergrated Circuit)


Các cổng logic không được chế tạo hoặc bán riêng lẻ mà theo đơn vị
mạch tích hợp (intergrated Circle), thường gọi là IC (hay vi mạch - chip)

54
Hình 3.2 Một số IC.

Các IC có một số ưu điểm hơn hẳn các loại linh kiện trước đó:
− Kích thước nhỏ gọn, trọng lượng nhỏ.
− Tiêu thụ năng lượng thấp.
− Tốc độ hoạt động cao.
− Chịu được nhiệt cao, ít chịu tác động của môi trường.
− Giá thành hạ.
Vì vậy, IC tạo cơ sở để hàng loạt các thiết bị điện tử ra đời với những tính
năng hơn hẳn các thế hệ trước.
Có thể chia vi mạch thành các lớp tùy thuộc vào khả năng chứa và sắp
xếp các cổng trên cùng một chip gọi là mức tích hợp:
− Mạch SSI (tích hợp cỡ nhỏ): 1 – 10 cổng.
− Mạch MSI (tích hợp cỡ trung bình): 10 – 100 cổng.
− Mạch LSI (tích hợp cỡ lớn): 100 – 100.000 cổng.
− Mạch VLSI (tích hợp cỡ rất lớn): >100.000 cổng.

Hình 3.3 Sơ đồ một IC.

3.3.2 Mạch kết hợp (Combinational Circuit)


Nhiều ứng dụng logic số đòi hỏi mạch phải có nhiều đầu vào và đầu ra
trong đó đầu ra được xác định qua đầu vào hiện tại. Mạch như thế được gọi là
mạch kết hợp. Không phải mạch nào cũng có thuộc tính này.

55
Mạch kết hợp là tổ hợp các cổng luận lý kết nối với nhau tạo thành một
bản mạch có chung một tập các ngõ vào và ra.
Tại một thời điểm, giá trị nhị phân ở ngõ ra là hàm của tổ hợp nhị phân
của các ngõ vào.
Mạch tổ hợp được xác định qua bảng chân lý với n biến nhập và m biến
xuất hoặc được xác định qua m hàm Boolean.

Hình 3.4 Lược đồ mạch kết hợp

Thiết kế mạch tổ hợp:


Để thiết kế một mạch tổ hợp nhằm tránh những sai sót không cần thiết,
chúng ta cần tuân thủ theo các bước sau:
− B1. Xác định bài toán để đi đến kết luận có những đầu nhập, đầu xuất nào.
− B2. Lập bảng chân lý xác định mối quan hệ giữa nhập và xuất.
− B3. Dựa vào bảng chân lý, xác định hàm cho từng ngõ ra.
− B4. Dùng đại số Boolean hoặc bản đồ Karnaugh để đơn giản các hàm ngõ
ra.
− B5. Vẽ sơ đồ mạch theo các hàm đã đơn giản.

3.3.3 Bộ dồn kênh (Multiplexer)-bộ phân kênh (Demultiplexer)


Bộ dồn kênh hay còn gọi là mạch chọn kênh là mạch có chức năng chọn
lần lượt 1 trong N kênh vào để đưa đến ngõ ra duy nhất (ngõ ra duy nhất đó là
đường truyền chung). Do đó, mạch chọn kênh còn gọi là mạch chuyển dữ liệu
song song ở ngõ vào thành dữ liệu nối tiếp ở ngõ ra, được gọi là Multiplexer
(viết tắt là MUX).
Bộ phân kênh hay mạch phân đường còn gọi là mạch tác kênh (phân
kênh, giải đa hợp), mạch này có nhiệm vụ tách 1 nguồn dữ liệu ở đầu vào để rẽ
ra N ngõ ra khác nhau. Do đó, mạch phân đường còn gọi là mạch chuyển dữ liệu
nối tiếp ở ngõ vào thành dữ liệu song song ở ngõ ra, được gọi là Demultiplexer
(viết tắt là DEMUX).

56
Bộ đồn kênh
Ở cấp độ logic số, bộ dồn kênh mà mạch có 2n đầu vào dữ liệu, một đầu ra
dữ liệu và n đầu vào điều khiển chọn một trong các đầu vào dữ liệu. Đầu vào
được chọn sẽ định tuyến đến đầu ra.

Hình 3.5 Sơ đồ khối MUX 4 đầu vào, 1 đầu ra

Bảng 3.4 Tín hiệu đầu ra phụ thuộc vào tín hiệu điều khiển

57
Hình 3.6 Sơ đồ mạch bộ dồn kênh 4-1

Hình 3.7 Sơ đồ bộ dồn kênh 8 đầu vào

Bộ phân kênh
Ngược lại với bộ dồn kênh là bộ phân kênh. Nó cho phép từ một kênh vào
cho ra nhiều kênh khác nhau tùy thuộc vào đường điều khiển. Bảng trạng thái
mô tả hoạt động của mạch và sơ đồ mạch bộ phân kênh như sau:

58
Hình 3.8 Bộ phân kênh 1-4

3.3.4 Mạch cộng (Adder)


a) Mạch nửa cộng (Half Adder)
Đối với tất cả các máy tính thì việc thực hiện các phép tính số học là quan
trọng nhất. Vì vậy, mạch thực hiện phép cộng là thành phần thiết yếu trong mỗi
CPU. Hình ... minh họa bảng chân lý cho phép cộng 1 bit. Mạch nửa cộng là
mạch gồm hai cổng XOR và AND. Hai đầu ra của mạch:
− Tín hiệu tổng đầu vào A và B: Sum.
− Tín hiệu số mang sang vị trí kế tiếp (bên trái): Carry.

Hình 3.9 Bộ nửa cộng

Bộ nửa cộng này chỉ cho phép ta tính tổng bít phải nhất của hai từ đầu vào
nhiều bit, nhưng không thực hiện được cho vị trí ở giữa từ vì nó không xử lý số
mang từ bên phải sang vị trí này, hay nói cách khác không cộng với số nhớ trong
phép cộng thông thường. Như vậy, bộ nửa cộng này không thể áp dụng để thiết
kế một bộ cộng cho hai số có nhiều bit, thay vào đó cần tới bộ cộng đầy đủ.
b) Bộ cộng đầy đủ (Full Adder)
Bộ cộng đầy đủ được cấu thành từ hai bộ nửa cộng. Đầu ra Sum là 1 nếu
số lẻ A, B và Carry in bằng 1. Carry out bằng 1 khi cả A và B đều bằng 1 (đầu
vào trái của cổng OR) hoặc đúng một trong số chúng bằng 1 và bit Carry in
cũng bằng 1.

59
Hình 3.10 Bộ cộng đầy đủ.

Hình 3.11 Bộ cộng n bít.

3.3.5 Mạch giải mã và mã hóa


Khái niệm: Mạch mã hóa (ENCODER) là mạch có nhiệm vụ biến đổi
những ký hiệu quen thuộc với con người sang những ký hiệu không quen thuộc
với con người. Mạch giải mã (DECODER) là mạch làm nhiệm vụ ngược lại
mạch mã hóa, biến đổi những ký hiệu không quen thuộc với con người sang
những ký hiệu quen thuộc với con người.
Mạch mã hóa (ENCODER)
Ví dụ mạch mã hóa 8-3:

Hình 3.12 Sơ đồ khối mạch mã hóa 8-3

Trong đó:

Mạch mã hóa nhị phân 8->3 thực hiện biến đổi tín hiệu ngõ vào thành một
từ mã nhị phân tương ứng ở ngõ ra, cụ thể như sau:

60
Bảng trạng thái của mạch mã hóa như sau:

Phương trình tối giản mạch mã hóa 8->3:

Mạch mã hóa như sau:

Hình 3.13 Sơ đồ mạch mã hóa 8-3

Mạch giải mã (DECODER)


Ngược với mạch mã hóa, mạch giải mã là mạch tổ hợp đổi thông tin nhị
phân với n ngõ nhập thành 2n ngõ xuất. Nếu ngõ nhập có một số tổ hợp không
dùng thì số ngõ ra có thể ít hơn 2n. Khi đó mạch giải mã gọi là mạch giải mã n-
m, với m≤2n.
Ví dụ mạch giải mã 2-4.

Hình 3.14 Sơ đồ khối, bảng trạng thái mạch giải mã 2-4.

Phương trình tối giản:

61
Hình 3.15 Sơ đồ mạch giải mã 2-4 với cổng AND

Hình 3.16 Sơ đồ mạch giải mã 2-4 với cổng NAND

Hình 3.17 Ký hiệu mạch giải mã 2-4.

Hình 3.18 Sơ đồ mạch giải mã 3-8.

62
3.4 Xung đồng hồ
Trong nhiều mạch số, thứ tự diễn ra biến cố là vấn đề rất quan trọng. Đôi
khi biến cố này phải đi trước biến cố kia, thỉnh thoảng hai biến cố phải diễn ra
đồng thời. Nhằm cho phép nhà thiết kế đạt được quan hệ định thời gian cần
thiết, nhiều mạch số sử dụng một ngõ vào cho xung đồng hồ. Khi đó, đồng hồ
(clock) là mạch phát xung với độ rộng xung và thời gian khoảng chính xác giữa
các xung liên tiếp. Thời gian khoảng cách giữa các biến tương ứng của hai xung
liên tiếp là thời gian chu kỳ đồng hồ (clock cycle time).
Trong máy tính, nhiều biến cố xảy ra trong suốt chu kỳ đồng hồ. Giả sử
biến cố phải diễn ra theo thứ tự cụ thể, thì cần chia chu kỳ đồng hồ thành những
chu kỳ con. Cách đơn giản nhất để tạo ra các chu kỳ đồng hồ khác nhau là từ
đồng hồ chính gắn thêm vòa một bộ làm trễ (Delay) tín hiệu như trong hình
dưới.

Hình 3.19 Đồng hồ và các xung nó tạo ra

Trong hình a) là Đồng hồ (clock) hay bộ phát tần (impulse generator), nhờ
có bộ làm trễ Delay mà có 2 tín hiệu xung C1 và C2 khác nhau, từ đó tạo ra 4
thời điểm khác nhau là:
Biên lên của C1.
Biên xuống của C1.
Biên lên của C2.
Biên xuống của C3.
Ta đã biết rằng các mạch số hoạt động ở các mức cao và thấp, do đó các
thời điểm khác nhau có thể được gắn với các biên của xung đồng hồ. Từ đó ta có
thể điều khiển được tại thời điểm nào thì cho phép hay kích hoạt mạch nào đó
hoạt động, và tại thời điểm nào đó thì không.

3.5 Mạch lật (chốt – latch)


Mạch lật hay một số sách gọi là chốt, là dạng mạch tuần tự đơn giản nhất
có chức năng lưu trữ một bit nhị phân. Nó có hai ngõ ra, một cho trị bình thường
và một cho trị bù. Mạch lật đồng bộ duy trì trạng thái nhị phân cho đến khi có
một xung đồng hồ điêu fkhiển làm đổi trạng thái. Sự khác nhau giữa các loại

63
mạch lật ở chỗ số ngõ vào chúng có và cách thức các ngõ vào tác động đến trạng
thái nhị phân. Các loại mạch lật thông dụng nhất như trình bày chi tiết sau đây:

3.5.1 Mạch lật SR (SR-latch)


Để tạo ra bộ nhớ 1 bit có một mạch điện có khả năng lưu trữ một giá trị
nào đó được nhập vào. Một mạch như vậy có thể được xây dựng từ cổng NAND
hoặc NOR mà ta gọi là mạch lật. Mạch lật đầu tiên đưa ra xem xét là mạch lật
SR. Đầu tiên ta xét mạch lật SR không đồng bộ hay không dùng xung đồng hồ
điều khiển. Ký hiệu mạch lật SR không đồng bộ (không dùng xung đồng hồ)
dùng cổng NOR như hình …a) và hình …b) là sơ đồ mạch lật tương ứng của nó.
Nó có 2 ngõ vào, S (setting – thiết lập) và R (Resetting – khởi tạo). Nó có
một ngõ ra Q và đôi khi có ngõ ra bù, ký hiệu bằng một vòng tròn nhỏ. Đầu ra Q
từ cổng NOR thứ nhất (ký hiệu U4) sẽ lại được cho vào ngõ nhập của cổng NOR
thứ hai (ký hiệu U3) và ngược lại đầu ra Q bù từ U3 sẽ được cho vào ngõ nhập
của cổng NOR (cổng U4).

Hình 3.20 Mạch lật SR không đồng bộ.

Hoạt động của mạch lật SR thể hiện trong bảng sau:

Bảng 3.5 Bảng trạng thái của mạch lật SR

Đối với mỗi mạch lật thì bao giờ cũng có hai loại, không đồng bộ và mạch
lật đồng bộ, nhưng trên thực tế thì người ta chủ yếu dùng mạch đồng bộ, do đó ở
đây chúng ta cũng sẽ đi tìm hiểu kỹ hơn về loại này. Mạch lật SR đồng bộ (dùng
xung đồng hồ) như ở trong hình …(a,b) dưới đây. Nó có ba ngõ vào, S (Setting-
thiết lập), R (Resetting – khởi động) và C (clock-đồng hồ). Nó có một ngõ ra Q
và đôi khi có ngõ ra bù, ký hiệu bằng một vòng tròn nhỏ.

64
Hình 3.21 Mạch lật SR

Hoạt động của mạch lật SR như sau: Nếu không có tín hiệu nhập đồng hồ
C (C=0), ngõ ra của mạch không thể thay đổi bất kỳ chấp trị của R và S vì đầu
ra của 2 cổng U1 và U2 luôn luôn bằng 0 (0 AND số bất kỳ =0). Chỉ khi tín hiệu
đồng hồ C=1, ngõ ra mới bị ảnh hưởng theo trị của ngõ vào S và R. Nếu S=1,
R=0, Q chuyển sang 1. Nếu S=0, R=1 Q chuyển sang 0. Nếu S và R là 0 khi
đồng hồ chuyển, ngõ ra không đổi. Khi cả S và R là 1, ngõ ra không xác định, có
thể là 0 hoặc 1 tùy thuộc vào khoảng thời gian trì hoãn trong mạch. Hay nói cáh
khác thì C luôn bằng 1 thì mạch lật SR đồng bộ (hình …) hoạt động như mạch
lật SR không đồng bộ như ở trên.

3.5.2 Mạch lật D


Mạch lật D (Data) là loại mạch lật đơn giản nhất, nó chỉ ơi khác mạch lật
SR. Mạch lật SR được đổi sang mạch lật D bằng cách đưa vào một cổng đảo
giữa S và R và dùng ký hiệu D cho ngõ vào duy nhất trong hình … b). Khi D=1,
ngõ ra là 1, khi D=0, ngõ ra là 0.
Hình …a) cho ta thấy quy ước ký hiệu và bảng đặc tính của mạch lật D.
Hình … b) là sơ đồ của mạch lật này. Chú ý là trạng thái tiếp theo Q(t+1) được
xác định từ ngõ vào D. Mối quan hệ có thể biểu diễn bằng phương trình đặc
tính: Q(t+1)=D. Điều này có nghĩa là ngõ ra Q của mạch lật nhận trị từ ngõ vào
D khi tín hiệu đồng hồ bằng 1.

Hình 3.22 mạch lật D

Lưu ý là không có điều kiện nhập để giữ trạng thái của mạch lật D. Tuy
mạch lật D thuận tiện là chỉ có một ngõ vào nhưng bất tiện là không có điều kiện
không đổi Q(t+1)=Q(t). Điều kiện không đổi có thể lấy bằng cách vô hiệu tín

65
hiệu đồng hồ hoặc cho ngõ ra trở lại ngõ vào, lúc đó xung đồng hồ sẽ giữ trạng
thái mạch lật không đổi.

3.5.3 Mạch lật JK


Một mạch lật khác thường hay được sử dụng là mạch lật JK, là một cải
tiến của mạch lật SR trong đó điều kiện không xác định của SR được định nghĩa
trong JK. Ngõ vào J, K haotj động giống như S, R để đặt và xóa mạch lật. Khi J
và K đều bằng 1, khi đồng hồ C =1 sẽ chuyển ngõ ra mạch lật sang trạng thái bù.
Ký hiệu và bảng đặc tính mạch lật JK ở hình … J tương đương với S
trong SR và K tương đương với R.

Hình 3.23 Mạch lật JK

Điểm khác biệt lớn nhất ở đây là thay vì không xác định, mạch lật JK có
điều kiện bù Q(t+1) khi J=K=1. Trong một mạch số thì tồn tại một trạng thái
không xác định là điều không mong muốn, chính do điều đó mà mạch lật JK
được sử dụng nhiều hơn.

3.5.4 Mạch lật T


Mạch lật cuối cùng là kế thừa của mạch lật JK bằng cách kết nối hai ngõ
vào với nhau thành một ngõ vào T. Hình …, là ký hiệu và bảng trạng thái mạch.
Xuất phát từ mạch lật JK với hai ngõ vào được kết nối thành một ngõ vào T. Vì
vậy, mạch lật T chỉ có hai điều kiện. Khi T=0 (J=K=0), với mọi giá trị của C
không thay đổi trạng thái của mạch lật. Khi T=1 (J=K=1), và khi C=1 sẽ làm bù
trạng thái mạch lật. Các điều kiện này có thể biểu diễn bằng phương trình thuộc
tính: Q(t+1)=Q(t)⊕T.

Hình 3.24 Mạch lật T.

3.6 Mạch lật lề (Flip-flop)


Các loại mạch lật nói trên thực sự là một trong hai loại mạch lật lề. Đây là
loại mạch lật thông dụng nhất để đồng bộ việc thay đổi trạng thái trong một
66
chuyển tiếp xung đồng hồ. Trong loại mạch lật này, các chuyển tiếp xuất ra tại
một mức xung đồng hồ xác định. Khi mức nhập xung vượt quá ngưỡng này, các
ngõ nhập bị khóa lại sao cho đến khi xung đồng hồ trở về 0 và một xung khác
đến. Một số mạch lật lề tạo chuyển tiếp ở lề lên của tín hiệu đồng hồ (chuyển
tiếp lề dương – Positive-edge transition) và một số khác tạo chuyển tiếp ở lề
xuống của tín hiệu đồng hồ (chuyển tiếp lề âm –negative-edge transition).
Điểm khác biệt giữa các mạch lật và mạch lật lề là ở chỗ mạch lật kích
thích bằng mức (level triggered), còn mạch lật lề kích thích bằng biên (edge
triggered). Ngoài ra, ở mạch lật lề còn có một ký hiệu mũi tên trước chữ C biểu
thị ngõ nhập động (xem trong hình…) Ký hiệu chỉ báo động cho biết mạch lật lề
thay đổi trạng thái với một chuyển tiếp dương (từ 0 sang 1) của tín hiệu đồng hồ
ở ngõ nhập.

Hình 3.25 Flip-Flop D với chuyển tiếp dương

Hình 3.26 Biểu đồ trạng thái và đồ thị của Flip-Flop D.

Hình 3.27 Flip-Flop D với chuyển tiếp âm.

67
Bảng 3.6 Bảng kích thích của bốn mạch lật lề

Lý do có điều kiện không cần trong bảng kích thích vì có hai cách lấy
chuyển tiếp. Ví dụ, trong mạch lật JK, một chuyển tiếp từ trạng thái hiện hành 0
sang trạng thái kề 0 có thể nhận được bằng cách cho J=K=0 (không đổi) hoặc
J=0, K=1 để xóa mạch lật (dù đã xóa rồi). Trong cả hai trường hợp J phải là 0,
nhưng K là 0 ở trường hợp một và 1 ở trường hợp hai. Vì chuyển tiếp yêu cầu
xuất hiện trong cả hai trường hợp, chúng ta ghi K là x.

3.7 Mạch tuần tự


Mạch tuần tự là một kết nối các mạch lật với một mạch tổ hợp khác, mà
mạch tổ hợp này lại được tạo ra từ các cổng cơ bản. Nó gồm một mạch tổ hợp
và một số mạch lật có đồng hồ.

Hình 3.28 Sơ đồ khối mạch tuần tự.

Quy trình thiết kế mạch tuần tự qua các bước sau:


Bước 1: Chuyển đặc tả mạch sang lược đồ trạng thái.
Bước 2: Chuyển lược đồ trạng thái sang bảng trạng thái.
Bước 3: Từ bảng trạng thái viết hàm cho các ngõ nhập của Flip-Flop.
Bước 4: Vẽ sơ đồ mạch.
Ví dụ, thiết kế mạch tuần tự dùng mạch lật SR. Khi ngõ nhập x=0, trạng
thái mạch lật lề không thay đổi, ngõ xuất y=0. Khi x=1, dãy trạng thái là
11,10,01,00 và lặp lại còn ngõ xuất y sẽ có giá trị là 1 khi số bit trạng thái mạch
lật lề bằng 1 là lẻ, các trường hợp còn lại thì bằng 0.

68
Giải:
Bước 1:

Lược đồ trạng thái


Bước 2:

Bước 3:
Bản đồ Karnaugh đối với đầu vào SA.

Đối với Flip-Flop B ta có:

69
Bản đồ đầu ra y:

Phương trình nhập mạch lật:

Bước 4:

70
CÂU HỎI ÔN TẬP CHƯƠNG 3
3.1 Lập bảng chân lý và vẽ sơ đồ mạch cho hàm 4 biến sau:

3.2 Rút gọn các hàm sau dùng các định lý của Boolean algebra.

3.3 Dùng bản đồ Karnaugh để rút gọn các hàm sau:

3.4 Cho hàm bool:

3.5 Cho hàm bool:

3.6 Vẽ sơ đồ mạch giải mã 2-4 chỉ sử dụng các cổng NOR bao gồm ngõ
cho phép/không cho phép hoạt động E.
3.7 Xây dựng lược đồ khối mạch dồn kênh 16-1 bằng lược đồ khối của 2
mạch dồn kênh 8-1 và một mạch dồn kênh 2-1.
3.8 Thiết kế mạch dồn kênh 16-1 bằng 5 mạch dồn kênh 4-1. Các mạch
dồn kênh dùng dưới dạng sơ đồ khối.

71
3.9 Thiết kế mạch đếm nhị phân 2 bit là một mạch tuần tự có đồng hồ đi
qua một dãy trạng thái nhị phân 00,01,10,11 và lặp lại khi ngõ nhập ngoài x có
trị 1. Trạng thái mạch không đổi khi x=0.
3.10 Thiết kế mạch đếm giảm 2 bit. Đây là mạch tuần tự có 2 Flip-Flop và
1 ngõ nhập x. Khi x=0, trạng thái mạch lật không đổi. Khi x=1, dãy trạng thái là
11, 10, 01, 00 và lặp lại.

72
CHƯƠNG 4. BỘ VI XỬ LÝ

4.1 Kiến trúc chung của bộ vi xử lý


Tổ chức bộ vi xử lý
Để hiểu được tổ chức của CPU, chúng ta hãy xem xét những yêu cầu đặt
ra trên CPU, những thứ nó phải làm:
Fetch Instructions(chỉ lệnh tìm nạp): CPU phải đọc các chỉ lệnh từ
bộ nhớ.
Interpret Instructions: chỉ lệnh phải được giải mã để xác định hành
động nào được yêu cầu.
Fetch data (dữ liệu tìm nạp): Sự thi hành một chỉ lệnh có thể yêu cầu
thực hiện một vài thao tác số học hoặc lôgi trên dữ liệu.
Write Data: Những kết quả của sự thi hành có thể yêu cầu viết dữ liệu
vào bộ nhớ hoặc module vào ra.
Thông thường CPU phải thực hiện các công việc này, nó có thể rõ ràng
CPU cần một chỗ chứa tạm thời để chứa dữ liệu. Nó phải nhớ vị trí của chỉ lệnh
sau cùng đến mức nó có thể biết nơi nào chứa lệnh tiếp theo. Nó cần chứa các
chỉ lệnh và dữ liệu tạm thời trong khi một lệnh được thực thi. Nói cách khác
CPU cần một bộ nhớ trong nhỏ.

Hình 4.1 CPU với bus hệ thống

Hình trên xác định các kết nối của CPU với phần còn lại của hệ thống
thông qua bus hệ thống. Một giao diện tương tự có thể cần đến cho tất các các
cấu trúc kết nối khác. Các bộ phận chính của một CPU là đơn vị số học và logic

73
(ALU) và đơn vị điều khiển (CU). ALU làm công việc tính toán thực sự hoặc xử
lý dữ liệu. Đơn vị điều khiển CU chuyển dữ liệu và các chỉ lệnh vào và ra khỏi
CPU và điều khiển các thao tác của ALU. Thêm nữa, hình trên còn mô tả một bộ
nhớ trong, là chỗ chứa tạm thời gọi là thanh ghi (Register).

Hình 4.2 Sơ đồ kiến trúc bên trong CPU

Hình ảnh chi tiết hơn cấu trúc CPU được mô tả ở trang sau. Các đường
truyền dữ liệu và các đường điều khiển logic đều đựơc xác định, bao gồm một
thành phần gắn nhãn internal CPU bus. Thành phần này đựơc yêu cầu chuyển
dữ liệu giữa các thanh ghi khác nhau và ALU, từ ALU thực tế hoạt động chỉ trên
dữ liệu trong bộ nhớ trong CPU. Hình vẽ cũng mô tả các thành phần cơ bản tiêu
biểu của ALU. Chú ý sự tương tự giữa cấu trúc trong của máy tính và cấu trúc
trong của CPU. Trong cả hai trường hợp, có một sự tập hợp của các thành phần
chính (computer: CPU, I/O, bộ nhớ; CPU: CU,ALU, các thanh ghi) được kết nối
bằng các đường dữ liệu.

74
Hình 4.3 Tổ chức chi tiết của một bộ vi xử lý điển hình

4.2 Tổ chức thanh ghi


Tổ chức thanh ghi Một hệ thống máy tính dùng một hệ thống cấp bậc bộ
nhớ. Tại các mức cao hơn trong hệ thống cấp bậc, bộ nhớ nhanh hơn, nhỏ hơn,
và đắt hơn (tính theo bit). Trong CPU, có tập hợp các thanh ghi chức năng là
mức nhớ trên bộ nhớ chính và bộ nhớ cache trong hệ thống cấp bậc. Các thanh
ghi trong CPU phục vụ 2 chức năng chính:
User-Visible Registers: Nó cho phép người lập trình ngôn ngữ máy
hoặc ngôn ngữ Asembly thu nhỏ bộ nhớ chính bằng tối ưu hoá việc sử dụng các
thanh ghi.
Control and Status Registers: Các thanh ghi này đựơc sử dụng bởi đơn
vị điều khiển CU để điều khiển các thao tác của CPU và bằng phân quyền, các

75
chương trình điều khiển hệ thống điều khiển sự thực thi của các chương trình
khác.
Không có sự riêng biệt rõ ràng giữa các thanh ghi trong hai loại trên. Ví
dụ trên một số máy chương trình đếm là thanh ghi user-visible(ví dụ VAX)
nhưng trên nhiều máy khác lại không phải vậy. Cho các mục đích sẽ được thảo
luận dưới đây, chúng ta sẽ sử dụng hai loại này

4.2.1 User-Visible Registers:


Thanh ghi User-Visible là một trong những thành phần được tham chiếu
bởi cách thức của ngôn ngữ máy được CPU thi hành. Thực sự tất cả các thiết kế
CPU đương thời cung cấp một số các thanh ghi User-Visible đối lập với một
thanh ghi tổng đơn giản. Chúng ta có thể mô tả đặc điểm của chúng trong các
loại sau:
Mục đích chung
Dữ liệu
Địa chỉ
Mã điều kiện
Các thanh ghi mục đích chung (general-purpose registers) có thể bị phân
chia cho các chức năng khác nhau bởi người lập trình. Thỉnh thoảng, chúng sử
dụng trong tập lệnh trực giao với thao tác. Đó là, bất cứ một thanh ghi mục đích
chung nào có thể chứa đựng toán hạng cho opcode. Nó cung cấp sử dụng thanh
ghi mục đích chung thực sự. Thông thưòng, có các giới hạn ví dụ có thể có các
thanh ghi cho các thao tác con trỏ động.
Trong một số trường hợp các thanh ghi mục đích chung có thể được dùng
cho các chức năng địa chỉ hoá (ví dụ thanh ghi gián tiếp, dịch chuyển). Trong
các trường hợp khác, có một phần hoặc sự phân chia rõ ràng giã thanh ghi dữ
liệu và thanh ghi địa chỉ. Các thanh ghi dữ liệu có thể được sử dụng chỉ để giữ
dữ liệu và không thể được dùng trong việc tính toán của một địa chỉ toán hạng.
Các thanh ghi địa chỉ có thể tự bản thân là thanh ghi mục đích chung, hoặc nó có
thể được dành hết cho chế độ địa chỉ riêng.
Con trỏ đoạn: Trong một máy với phương pháp địa chỉ đoạn, một thanh
ghi đoạn giữ địa chỉ cơ sở của đoạn. Có thể có nhiều thanh ghi: ví dụ, một cho
hệ thống điều khiển và một cho tiến trình hiện tại.
Thanh ghi chỉ số: Được dùng trong chế độ địa chỉ chỉ sốvà có thể được
tự động đánh chỉ số.

76
Con trỏ ngăn xếp: Nếu có user-visible stack addressing, sau đó ngăn
xếp tiêu biểu là trong bộ nhớ và có một thanh ghi chỉ đến đầu ngăn xếp.Nó cho
phép đánh địa chỉ tuyệt đối; đó là push,pop, và các chỉ lệnh ngăn xếp khác cần
không chứa một toán hạng ngăn xếp rõ ràng.

4.2.2 Control and Status Registers:


Có rất nhiều thanh ghi CPU khác nhau được sử dụng để điều khiển thao
tác của CPU. Hầu hết chúng trên đa số máy là không hữu hình với người dùng.
Một vài thanh ghi có thể hữu hình với các lệnh máy thực thi trong chế độ điều
khiển hoặc trong operating-system mode. Với các máy tính khác nhau sẽ có tổ
chức thanh ghi khác nhau và sử dụng thuật ngữ khác nhau.
Bốn thanh ghi là cốt tuỷ đối với sự thi hành lệnh.
Program Counter (PC): chứa địa chỉ của một chỉ lệnh được tìm nạp.
Thanh ghi lệnh (Instruction Register): chứa chỉ lệnh được tìm nạp gần
nhất.
Thanh ghi địa chỉ bộ nhớ (Memory Address Register): chứa địa chỉ của
các vị trí trong bộ nhớ.
Thanh ghi bộ nhớ đệm (Memory Fuffer Register): chứ một từ dữ liệu
được ghi vào trong bộ nhớ hoặc từ được đọc gần đây nhất.
Ví dụ các tổ chức thanh ghi vi xử lý.
Các ví dụ cung cấp tài liệu để nghiên cứu và so sánh tổ chức thanh ghi của
các hệ thống có thể so sánh được.Trong phần này, chúng ta sẽ xem xét 3 bộ vi
xử lý 16 bit được thiết kế ở cùng một thời điểm: Zilog Z8000(PEUT79), Intel
8086 [MORS78,HEYW83], Và Motorola MC6800 [STRI79].
Ví dụ với bộ xử lý 8086:
Bao gồm:
1 thanh ghi con trỏ lệnh IP (instruction Pointer): Lưu trữ địa chỉ lệnh kế
tiếp sẽ được chạy trong đoạn CT hiện thời. Mỗi 1 từ lệnh được đọc từ bộ nhớ
BIU sẽ thay đổi giá trị IP sao cho nó chỉ đến địa chỉ của từ lệnh kế tiếp trong bộ
nhớ.
8 thanh ghi chung
4 thanh ghi dữ liệu AX,BX, CX, DX.
- AX: (Accumulator Register) thanh ghi tích luỹ các kết quả tính toán.

77
- BX (Base Register) thanh ghi cơ sở: chỉ địa chỉ cơ sở của vùng nhớ
thuộc bộ nhớ.
- CX (Counter Register) thanh ghi đếm: Khai báo số lần 1 thao tác nào đó
phải được thực hiện trong các vòng lặp, phép dịch, quay.
- DX (Data Register) thanh ghi số liệu: lưu trữ sl làm thông số chuyển
giao CT (2 byte).
Khi cần truy nhập chỉ với 1 byte thì byte cao hay thấp được nhận diện
H,L.
*Các thanh ghi con trỏ, chỉ số:
SP (Stack pointer) con trỏ ngăn xếp: địa chỉ đỉnh ngăn xếp. SP cho
phép truy xuất dễ dàng các địa chỉ trong đoạn ngăn xếp SS (stack segment). Giá
trị trong SP mô tả phải offset của địa chỉ ngăn xếp kế tiếp so với địa chỉ hiện tại
đang được lưu trong SS.
BP (Base pointer) con trỏ cơ sở: mô tả offset tính từ SS nhưng còn
được sử dụng truy nhập DL trong SS.
I (index) thanh ghi chỉ số: lưu địa chỉ offset đối với những lệnh truy
nhập DL cất trong đoạn DL
*Thanh ghi đoạn:
Bộ nhớ được chia thành các đoạn logic (segment) dài 64kb. CPU có thể
truy nhập 1 lần tới 4 đoạn.
Địa chỉ đoạn chứa trong thanh ghi đoạn.
Thanh ghi đoạn mã CS (code Segment) nhận diện ĐC bắt đầu của đoạn
chương trình hiện hành trong bộ nhớ.
DS (data Segment) đoạn DL : địa chỉ bắt đầu đoạn số liệu.
SS (Stack Segment) đoạn ngăn xếp: địa chỉ logic đoạn ngăn xếp.
EX (extra Segment) đoạn mở rộng: Đ/c DL các chuỗi.
*Thanh ghi cờ: Flag Register
9 trong số 16 bit của thanh ghi này được sử dụng, mỗi bit có thể được
thiết lập hay xoá dể chỉ thị kết quả của mỗi thao tác trước đó hoặc trạng thái hiện
thời bộ VXL
CF Carry : nhớ
PF perity: chẵn lẻ
ZF zero : kết quả phép toán =0
SF sign : 0 dương, 1 âm.
78
OF overflow : tràn

4.3 Đơn vị số học và logic ALU (Arithmetic and logic unit)


Đơn vị số học và logic (ALU) là một phần của máy tính thực sự thực hiện
các thao tác số học và logic trên dữ liệu. Tất cả các thành phần khác của hệ
thống máy tính-đơn vị điều khiển, thanh ghi, bộ nhớ, chủ yếu mang dữ liệu vào
cho ALU để ALU xử lý và sau đó đưa kết quả ra ngoài.
Đơn vị số học và logic và tất cả các thành phần điện tử trong máy tính đều
dựa trên việc sử dụng các thiết bị số đơn giản có thể chứa các con số nhị phân,
và thực hiện các thao tác boolean logic đơn giản.

Hình 4.4 Sơ đồ khối đơn vị số học và logic ALU

Hình trên chỉ ra trong một giới hạn chung, ALU được kết nối với phần
còn lại của CPU như thế nào. Dữ liệu được sẵn sàng cho ALU trong các thanh
ghi, và kết của của một thao tác được chứa trong các thanh ghi khác. Các thanh
ghi là chỗ chứa tạm thời trong CPU được kết nối bởi các đường tín hiệu tới
ALU. ALU sẽ đặt cờ như là kết quả của một thao tác. Ví dụ có tràn được đặt lên
1 nếu kết quả của việc tính toán vượt quá chiều dài của thanh ghi chứa. Giá trị
cờ được chứa trong các thanh ghi trong CPU. Đơn vị điều khiển cung cấp tín
hiệu điều khiển thao tác của ALU, và sự di chuyển dữ liệu vào và ra khỏi ALU.
(Cấu tạo của ALU được mô tả trong hình trang sau)

Hình 4.5 Kiến trúc của khối ALU

79
Các phép toán cơ bản của ALU
Bộ cộng, trừ:

4.4 Đơn vị điều khiển CU(Control Unit)


Như đã biết các thành phần chức năng cơ bản của CPU là:
Đơn vị số học và Logic (ALU)
Tập các Thanh ghi
Các đường dữ liệu trong
Các đường dữ liệu ngoài
Đơn vị điều khiển(CU)
ALU là thành phần chức năng thực sự của máy tính, Các thanh ghi dùng
để chứa dữ liệu trong CPU, Một vài thanh ghi chứa thông tin trạng thái cần để
quản lý chỉ lệnh sắp xếp liên tục (ví dụ từ trạng thái chương trình). Những thanh
ghi khác chứa dữ liệu đưa đến hoặc lấy từ ALU, bộ nhớ, module vào ra. Các
đường dữ liệu trong được dùng chuyển dữ liệu giữa các thanh ghi, giữa các
thanh ghi và ALU. Các đường dữ liệu ngoài liên kết các thanh ghi với bộ nhớ và
module vào ra. thường bằng phương tiện của bus hệ thống. Đơn vị điều khiển
tạo ra các thao tác xảy ra trong CPU.
Sự thi hành một chương trình bao gồm các thao tác liên quan đến các
thành phần CPU.
Như chúng ta đã thấy, các thao tác này bao gồm sự liên tục của các vi
thao tác (vi điều khiển). Tất cả các vi thao tác là một trong các loại sau:
Truyền dữ liệu từ một thanh ghi đến thanh ghi khác.
Truyền dữ liệu từ một thanh ghi đến một giao diện ngoài (ví dụ system
bus)
Truyền dữ liệu từ một giao diện ngoài tới thanh ghi.
Thực hiện thao tác số học và logic, sử dụng thanh ghi để nhận và ghi
dữ liệu.
Tất cả các vi lệnh cần thực hiện trong một chu kỳ chỉ lệnh (bao gồm tất cả
các vi thao tác để thực hiện mọi chỉ lệnh trong tập chỉ lệnh, nằm trong một trong
những loại trên)
Đơn vị điều khiển thực hiện hai công tác chính:
Sự sắp xếp chuỗi (sequencing): Đơn vị điều khiển khiến CPU sắp xếp
chuỗi vi thao tác vào một chuỗi liên tục thích hợp, dựa trên chương trình đang
được thực hiện .
80
Sự thi hành (Execution): Đơn vị điều khiển khiến mỗi vi thao tác được
thực hiện.
Đơn vị điều khiển thao tác dựa vào việc sử dụng các tín hiệu điều khiển.

4.4.1 Tín hiệu điều khiển


Chúng ta đã định nghĩa các thành phần đã tạo ra CPU (ALU, thanh ghi,
đường dẫn dữ liệu) và các vi thao tác đang được thực hiện. Đối với đơn vị điều
khiển để thực hiện các chức năng của nó, nó phải có dữ liệu vào cho phép nó
xác định trạng thái của hệ thống và mục ra cho phép nó điều khiển tác động của
hệ thống. Có các chi tiết kỹ thuật ngoài của đơn vị điều khiển. Nội tại, đơn vị
điều khiển phải có logíc yêu cầu thực hiện chuỗi vi thao tác và thi hành các chức
năng.
Các yêu cầu của phần này là liên quan với sự tương tác giữa đơn vị điều
khiển và các thành phần khác của CPU.

Hình 4.6 Sơ đồ các tín hiệu điều khiển trong CPU

Các tín hiệu của đơn vị điều khiển được thể hiện trong hình trên. Bao
gồm:
- Tín hiệu vào
- Tín hiệu ra

81
a. Các tín hiệu vào
- Clock: đây là cách đơn vị điều khiển “giữ thời gian” Đơn vị điều khiển
tạo ra một vi thao tác (hoặc một tập các thao tác đồng thời) được thực hiện với
mỗi xung đồng hồ. Đây là mộ vài lần nhắc đến như là chu kỳ thời gian xử lý,
hoặc chu kì thời gian đồng hồ.
- Thanh ghi chỉ lệnh: mã chỉ lệnh hiện tại được dùng để xác định vi thao
tác nào được thực hiện trong chu kì thi hành.
- Cờ: Có các yêu cầu bởi đơn vị điều khiển để xác định trạng thái của
CPU và kết quả của thao tác ALU trước. Ví dụ, đối với chỉ lệnh Increment and
skip-if rezo (ISZ), đơn vị điều kiển sẽ lượng gia PC nếu cờ Rezo được đặt.
- Các tín hiệu điều khiển từ bus điều khiển: Khẩu phần bus điều khiển của
bus hệ thống cung cấp tín hiệu cho đơn vị điều khiển, như là tín hiệu ngắt và sự
công nhận.
b. Các tín hiệu ra
- Tín hiệu điều khiển trong CPU: có 2 loại: Nó khiến dữ liệu bị di chuyển
từ một thanh ghi tới các thanh ghi khác, và làm hoạt động các chức năng ALU
cụ thể.
- Các tín hiệu điều khiển điều khiển bus: Cũng có 2 loại: các tín hiệu điều
khiển bộ nhớ, và tín hiệu điều khiển module vào ra.
Thành phần mới đã được giới thiệu trong hình này là tín hiệu điều khiển.
Ba kiểu tín hiệu được sử dụng: kích hoạt một chức năng ALU, kích hoạt các
đường dữ liệu, và là các tín hiệu trên bus hệ thống ngoài hoặc giao diện ngoài.
Tất cả các dạng tín hiệu này được cung cấp cuối cùng trực tiếp như các tín hiệu
vào hay các cổng logic riêng biệt.
Chúng ta hãy xem xét lại chu kỳ tìm nạp để xem cách đơn vị điều khiển
duy tri diều khiển. Đơn vị điều khiển giữ dấu vết nơi nó là trong chu kỳ tìm nạp.
Tại điểm quy định, nó biết chu kỳ tìm nạp đựoc thực hiện tiếp. Bước đầu tiên là
di chuyển các nội dung của PC và MAR. Đơn vị điều khiển dùng nó bằng việc
kích hoạt tín hiệu điều khiển mở các cổng giữa các bit của PC và các bit của
MAR. Bước tiếp theo là đọc một từ trong bộ nhớ vào MBR và gia lượng PC.
Đơn vị điều khiển làm việc này bằng vệc gửi các tín hiệu kèm theo đồng thời.
Một tín hiệu điều khiển mở các cổng cho phép nội dung của MAR đưa
vào bus địa chỉ.
Bộ nhớ đọc tín hiệu điều khiển trên bus điều khiển.

82
Một tín hiệu điều khiển các cổng cho phép nội dung bus dữ liệu được
chứa trong MBR.
Các tín hiệu điều khiển thêm một vào nội dung của PC và chứa kết quả
trở lại cho PC
Theo đó, đơn vị điều khiển gửi tín hiệu điều khiển mở các cổng giữa
MBR (Memory buffer register) và IR (Instruction Register)

4.4.2 Đơn vị điều khiển vi chương trình


Các chức năng chính của đơn vị điều khiển này:

Để thực hiện một lệnh, đơn vị logic tuần tự đưa ra một lệnh đọc tới bộ
nhớ điều khiển:
Từ mà địa chỉ được xác định trong thanh ghi địa chỉ điều khiển được
đọc vào thanh ghi bộ đệm điều khiển.
Nội dung của thanh ghi bộ đệm điều khiển phát ra tín hiệu điều khiển
và thong tin địa chỉ tiếp theo cho đơn vị lôgic tuần tự.
Đơn vị logic tuần tự tải địa chỉ mới vào trong thanh ghi địa chỉ điều
khiển dựa vào thông tin địa chỉ tiếp theo từ thanh ghi bộ đệm điều khiển và các
cờ ALU. Tất cả xảy ra trong một xung đồng hồ.

4.4.3 Một số mở rộng của vi xử lý máy tính cho đến ngày nay
Từ sự phát triển của các máy tính chứa chương trình đầu tiên những năm
1950, đã có một số sự cách tân thực sự rõ rệt trong các khu vực của tổ chức máy

83
tính. Sau đây không phải là một danh sách hoàn chỉnh, mà chỉ là một vài tiến bộ
chính kể từ ngày sinh của máy tính.
The Family Concept: được giới thiệu bởi IBM với hệ thống
System/360 năm 1964, tiếp theo ngay sau đó là DEC với PDP-S.Khái niệm gia
đình tách riêng kiến trúc của máy từ sự thi hành của nó. Mộ tập hợp các máy
tính được đề nghị, với sự khác nhau giữa đặc trưng giá/tính năng đưa ra cùng
một kiến trúc cho người dùng.Sự khác nhau trong giá và hiệu suất là bởi tại sự
thi hành khác nhau của cùng một kiến trúc.
Đơn vị điều khiển vi chương trình (Microprogrammed Control Unit):
Được đề xuất bởi Wikes năm 1951, và được giới thiệu bới IBM trên hệ thống
S/360 line trong năm 1964. Lập trình vi chương trình làm giảm bớt công tác
thiết kế và thực hiện đơn vị điều khiển và hỗ trợ cho family concept.
Bộ nhớ Cache (cache Memory): Đầu tiên được giới thiệu rộng rãi trên hệ
thống IBM S/360 Model 85 năm 1968.Sự thêm vào thành phần này trong hệ
thống phân cấp bộ nhớ cải thiện rõ rệt hiệu suất
Pipelining: Một biện pháp đưa tính toán song song vào bản chất tuần
tự của một chương trình chỉ lệnh máy. Các ví dụ là ống dẫn chỉ lệnh và xử lý
vector
o Instruction Pipelining
Như sự tiến hoá của các hệ thống máy tính, hiệu suất cao hơn có thể được
đạt được bởi việc nắm bắt các tiến bộ của sự phát triển công nghệ.Hơn nữa, sự
cải tiển tổ chức của CPU có thể làm tăng hiệu suất. Chúng ta đã có một số ví dụ
ví như sử dụng các thanh ghi bội hon là sử dụng một thanh ghi chứa đơn, và sử
dụng bộ nhớ cache. Một phương pháp tổ chức khác rất thông dụng là Instruction
Pipe. (Còn thiếu)
o Chiến lược ống dẫn
Ống dẫn chỉ lệnh tương tự việc sử dụng một dây chuyền trong kế hoạch
sản xuất. Một dây chuyền tạo ra các thuận lợi trong thực tế một sản phẩm đi qua
nhiều trạng thái khác nhau của quá trình sản xuất. Bằng cách bố trí tiến trình sản
xuất trong một dây truyền, các sản phẩm ở những trạng thái khác nhau có thể
được làm đồng thời. Tiến trình này cũng được quy cho là pipelining, Bởi vì như
trong một ống dẫn, một sản phẩm vào mới được chấp nhận ở một đầu cuối trước
các sản phẩm vào được chấp nhận trước đó xuất hiện như sản phẩm ra ở đầu
cuối khác.

84
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 4
4.1 Trình bày sơ đồ cấu trúc, chức năng nhiệm vụ của bộ xử lý trung tâm
(Nêu rõ chức năng của từng đơn vị)
4.2. Trình bày tổ chức thanh ghi trong vi xử lý 8086?
4.3. Trình bày chức năng nhiệm vụ cấu tạo của đơn vị số học và logic
ALU?
4.4. Các loại tín hiệu điều khiển của đơn vị xử lý trung tâm (Vẽ sơ đồ giải
thích)?
4.5. Trình bày sơ đồ cấu trúc, chức năng nhiệm vụ của đơn vị điều khiển
vi chương trình ?

85
CHƯƠNG 5. KIẾN TRÚC TẬP LỆNH

5.1 Phân loại kiến trúc bộ lệnh


Có ba loại kiến trúc bộ lệnh cơ bản:
− Kiến trúc ngăn xếp (Stack)
− Kiến trúc thanh ghi tích lũy
− Kiến trúc thanh ghi đa dụng GPRA (General Purpose Register
Architechure).
Ví dụ tính C=A+B được dùng trong các kiến trúc ở trên là:

Trong một câu lệnh thì chúng ta có các toán hạng, mà các toán hạng lại
được chia thành hai loại: ẩn (implicitly) và hiện (explicitly): Toán hạng trong
kiến trúc nagưn xếp là loại ẩn ở trên đầu của ngăn xếp, kiến trúc thanh ghi tích
lũy có một toán hạng ẩn ở trong accumulator, còn kiến trúc GPRA thì chỉ dùng
toán hạng hiện, hoặc là thanh ghi hoặc là trên bộ nhớ. Toán hạng dạng hiện có
thể truy cập trực tiếp từ bộ nhớ hoặc đầu tiên được nạp vào thanh ghi tạm thời
nào đó phụ thuộc vào kiển kiến trúc bộ lệnh đặc trưng của nó.
− Bảng so sánh các kiểu kiến trúc bộ lệnh:

86
5.1.1 Kiểu kiến trúc GPR
Kiến trúc GPRA có một loại có thể truy cập trực tiếp vào bộ nhớ (register
memory); một loại có thể truy cập vào bộ nhớ nhưng phải nạp thông qua một
thanh ghi gọi là kiến trúc nạp-lưu (load-store) hay kiến trúc trên các thanh ghi
(register-register); ngoài ra còn một kiểu kiến trúc GPRA nữa là kiến trúc bộ
nhớ-bộ nhớ (memory-memory), nhưng kiểu này không còn thấy ngoài thị trường
ngay nay nữa.
Ưu điểm:
− Dùng thanh ghi, một dạng lưu trữ trong của CPU có tốc độ nhanh hơn bộ
nhớ ngoài.
− Trình tự thực hiện lệnh có thể ở mọi thứ tự
− Dùng thanh ghi để lưu các biến và như vậy sẽ giảm thâm nhập bộ nhớ =>
chương trình sẽ thực hiện nhanh hơn.
Nhược điểm:
− Lệnh dài.
− Số lượng thanh ghi bị giới hạn.

87
5.1.2 Kiểu kiến trúc thanh ghi đa dụng
Do hiện nay kiểu kiến trúc thanh ghi đa dụng chiếm vị trí hàng đầu nên
trong các phần tiếp theo, ta chỉ đề cập đến kiểu kiến trúc anỳ.
Đối với một lệnh tính toán hoặc logic điển hình (lệnh ALU) có 2 điểm cần
nêu:
− Trước tiên, một lệnh ALU phải có 2 hoặc 3 toán hạng. Nếu trong lệnh có 3
toán hạng thì một trong các toán hạng chứa kết quả phép tính trên hai toán
hạng kia (Ví dụ: ADD A, B, C). Nếu trong lệnh có 2 toán hạng thì một
trong hai toán hạng vừa là toán hạng nguồn, vừa là toán hạng đích (Ví dụ:
ADD A, B).
− Thứ hai, số lượng toán hạng bộ nhớ có trong lệnh. Số toán hạng bộ nhớ có
thể thay đổi từ 0 tới 3.
− Lệnh có 2 toán hạng: ADD A, B.
− Lệnh có 3 toán hạn: ADD A, B, C.
− Số toán hạng bộ nhớ có thể thay đổi từ 0 đến 3.
− Các loại toán hạng:
− Thanh ghi – thanh ghi (kiểu này còn được gọi là nạp – lưu trữ).
− Thanh ghi – bộ nhớ.
− Bộ nhớ - bộ nhớ.

5.2. Địa chỉ bộ nhớ


Bộ nhớ gồm một số ô (hoặc vị trí), mỗi ô (cell) có thể chứa một mẩu
thông tin. Mỗi ô gắn một con số gọi là địa chỉ (address), qua đó chương trình có
thể tham chiếu nó. Giả sử bộ nhớ có n ô, chúng sẽ có địa chỉ từ 0 đến n-1. Tất cả
trong bộ nhớ đều chứa cùng số bit. Trong trường hợp ô có k bit nó có khả năng
chứa một trong số 2k tổ hợp bit khác nhau. Trong một bộ nhớ thì các ô kế cận
nhau sẽ có địa chỉ liên tiếp nhau.
Ô là đơn vị có thể lập địa chỉ nhỏ nhất và các hãng khác nhau dùng quy
định số bit trong một ô cho từng loại máy tính của mình là khác nhau như IBM
PC 8bit/ô, DEC PDP-8 12bit/ô, IBM 1130 16bit/ô, … Tuy nhiên, trong những
năng gần đây, đa số các nhà sản xuất máy tính đều dùng chuẩn hóa ô 8 bit, gọi là
byte. Byte nhóm lại thành từ (word) và máy tính với từ 16bit sẽ có 2 byte/từ, còn
máy tính với 32 bit sẽ có 4byte/từ. Hầu hết các lệnh được thực hiện trên toàn bộ

88
từ. Vì vậy, máy tính 16 bit sẽ có thanh ghi 16 bit và lệnh thao tác trên 1 từ 16
bit, còn máy 32 bit sẽ có thanh ghi 32 bit và các lệnh thao tác trên 1 từ 32 bit.
Sắp xếp thứ tự byte:
Có hai cách sắp xếp thứ tự byte trong một từ, đánh số byte trong một từ từ
trái sang phải và đánh số byte trong một từ từ phải sang trái.
Hình … a) cho thấy thứ tự byte trong bộ nhớ máy tính 32 bit có số byte
được đánh số từ trái sang phải, như họ Motorola chẳng hạn. Hình … b) là một
minh họa tương tự về máy tính 32 bit, đánh số từ phải sang trái, ví dụ như họ
Intel. Hệ thống trước kia bắt đầu đánh số từ đầu lớn được gọi là máy tính đầu
lớn (Big endian), trái ngược với đầu nhỏ (little endian).

Hình 5.1(a) Bộ nhớ đầu lớn (họ Motorola), (b) Bộ nhớ đầu nhỏ (họ Intel)

5.3. Mã hóa tập lệnh


Một chương trình bao gồm một dãy các lệnh (hay còn gọi là chỉ thị), mỗi
lệnh chỉ rõ một việc làm cụ thể nào đó của máy tính như thực hiện phép cộng,
thực hiện nhập dữ liệu, thực hiện đọc dữ liệu từ bộ nhớ, …
Như chúng ta đã thấy ở trên, trong một câu lệnh gồm có nhiều phần.
Trong đó, tác vụ thực hiện mỗi lệnh được chỉ rõ trong một trường gọi là mã
phép toán (Operation code) hay mã tác vụ và được gọi tắt là opcode, cho biết
hành động nào sẽ được thi hành. Trong một lệnh còn chỉ ra được thực hiện trên
các thay ghi hay địa chỉ ô nhớ, nơi chứa dữ liệu cần xử lý.

Hình 5.2 Một số dạng mã lệnh đơn giản

89
Tùy thuộc vào kiến trúc của máy tính, trong một loại máy tính mã lệnh có
thể có cùng chiều dài hoặc khác nhau. Trên một số máy tính tất cả các lệnh đều
có cùng độ dài, một số máy tính khác lại có thể có hai hoặc ba độ dài khác nhau
(IBM 360/70, Intel 80x86), thậm chí độ dài mã lệnh có thể thay đổi tùy ý
(VAX). Ngoài ra một lệnh có thể ngắn hơn, dài hơn hoặc bằng với độ dài một
từ.

5.3.1. Các tiêu chuẩn thiết kế dạng thức lệnh


Vì có thể có nhiều dạng khác nhau cảu các lệnh, cho nên khi thiết kế máy
tính cần có các tiêu chí rõ ràng để lựa chọn dạng thức lệnh cho máy tính cần
thiết kế. Một số các tiêu chí chính được các nhà thiết kế đưa ra như sau:

Tiêu chuẩn thiết kế 1: Mã lệnh ngắn ưu việt hơn mã lệnh dài


Đây là tiêu chuẩn đầu tiên và cũng là quan trọng nhất. Một chương trình
gồn n lệnh 16 bit chỉ chiếm chừng một nửa không gian bộ nhớ so với n lệnh 32
bit. Suy cho cùng, bộ nhớ không miễn phí, bởi vậy nhà thiết kế không thích lãng
phí nó. Ngoài ra, thì mỗi bộ nhớ có một tốc độ truyền cụ thể, được quyết định
qua công nghệ và thiết kế kỹ thuật. Nếu tốc độ truyền của bộ nhớ là T bit/s và
chiều dài lệnh trung bình là L thì nó có thể truyền đi nhiều nhất là T/L lẹnh trong
một giây. Vì vậy, tốc độ thi hành lệnh tùy thuộc vào độ dài lệnh. Lệnh ngắn hơn
đồng nghĩa với bộ xử lý nhanh hơn.
Nếu thời gian thi hành lệnh quá lâu so với thời gian tìm nạp nó từ bộ nhớ,
thời gian tìm nạp lệnh sẽ không quan trọng. Nhưng với CPU nhanh, bộ nhớ
thường là nút cổ chai. Bởi vậy, tăng số lệnh tìm nạp trên mỗi giây là tiêu chuẩn
thiết kế quan trọng.
Tiêu chuẩn thiết kế thứ 2: Độ dài mã lệnh đủ để biểu diễn tất cả phép
toán mong muốn.
Nếu chúng ta cần thiết kế một máy tính với 2n các thao tác hay các vi tác
vụ, thì ta không thể dùng mã hóa lệnh với độ dài nhỏ hơn n. Đơn giản không đủ
chỗ trong opcode để cho biết là lệnh nào hay mã hóa tất cả các lệnh đó.
Tiêu chuẩn thiết kế thứ 3: Độ dài từ (word) của máy bằng bội số
nguyên của độ dài ký tự.
Trong trường hợp mà ký tự có k bit, độ dài từ phải là k, 2k, 3k, 4k, … còn
không sẽ bị lãng phí không gian khi lưu trữ các từ.

90
Tất nhiên có thể lưu trữ 3.5 ký tự trong một word, song việc đó gây ra tình
trạng kém hiệu quả nghiêm trọng trong khi truy cập các ký tự. Hạn chế do mã ký
tự áp đặt lên chiều dài từ cũng ảnh hưởng đến chiều dài mã lệnh, bởi vì một lệnh
tốt nhất là chiếm một số nguyên các byte hoặc số lệnh phải nguyên nằm gọn
trong một từ.
Tiêu chuẩn thiết kế thứ 4: Số BIT trong trường địa chỉ càng ngắn
càng tốt.
Tiêu chuẩn này liên quan đến việc chọn kích thước ô nhớ. Khi xem thiết
kế máy với ký tự 8 bit (có thể 7 bit cộng tính chẵn lẻ) và bộ nhớ chính chứa 216
ký tự sẽ thấy. Nhà thiết kế có thể chọn gán địa chỉ liên tiếp cho đơn vị 8, 16, 24
hoặc 32 bit, cùng những khả năng khác.
Hãy hình dung chuyện gì sẽ xảy ra khi đội ngũ thiết kế phân hóa thành hai
phe gây chiến, một phe dốc sức tạo byte 8 bit, đơn vị cơ bản của bộ nhớ, còn phe
kia ra sức tạo từ 32 bit như là đơn vị cơ bản của bộ nhớ. Phe đầu đề nghị bộ nhớ
216 byte, được đánh số 0, 1, 2, 3, …, 65535. Phe sau đề xuất bộ nhớ 214 từ,
được đánh số 0, 1, 2, 3, …, 16383.
Nhóm thứ nhất chỉ ra rằng để so sánh hai ký tự trong tổ chức từ 32 bit,
chương trình chẳng những tìm nạp từ chứa ký tự mà còn phải trích từng ký tự
trong từ mới so sánh được. Làm vậy sẽ tốn thêm lệnh và lãng phí không gian.
Trái lại, tổ chức 8 bit cung cấp địa chỉ cho từng lệnh, giúp so sánh dễ dàng hơn
nhiều.
Phe đề xuất 32 bit sẽ phản bác bằng lập luận rằng đề xuất của họ chỉ cần
14
2 địa chỉ riêng biệt, cho độ dài địa chỉ 14 bit mà thôi, còn đề nghị byte 8 bit đòi
hỏi 16 bit để lập địa chỉ cùng một bộ nhớ. Địa chỉ ngắn hơn đồng nghĩa với lệnh
ngắn hơn, không những chiếm ít không gian mà còn đòi hỏi ít thời gian tìm nạp
hơn. Hoặc có thể giữ nguyên địa chỉ 16 bit để tham chiếu bộ nhớ lớn gấp 4 lần
mức cho phép của tổ chức 8 bit.
Ví dụ này cho thấy rằng để đạt sự phân giải bộ nhớ tốt hơn, người ta phải
trả cái giá bằng địa chỉ dài hơn, nói chung có nghĩa là lệnh dài hơn. Mục tiêu tối
thượng trong sự phân giải là tổ chức bộ nhớ có thể lập địa chỉ trực tiếp từng bit.
Thực tế có những máy tính mà chiều dài word chỉ là 1 bit (ví dụ máy
Burroughs B1700), lại có những máy mà word rất dài, tới 60 bit (như máy CDC
Cyber).

91
5.3.2. Opcode mở rộng
Giả sử ta có lệnh (n+k) bit với opcode chiếm k bit và địa chỉ chiếm n bit.
Lệnh này cung cấp 2k phép toán khác nhau và 2n ô nhớ lập địa chỉ được. Hoặc,
cùng n+k bit đó có thể chia thành opcode (k-1) bit và địa chỉ (n+1) bit, tức là chỉ
một nửa số lẹnh nhưng gấp đôi bộ nhớ địa chỉ có thể lập được, hoặc cùng dung
lượng bộ nhớ đó nhưng Opcode (k+1) bit và địa chỉ (n-1) bit cho nhiều hpép
toán hơn, song phải trả giá bằng số ô địa chỉ lập được ít hơn. Giữa bit opcode và
bit địa chỉ có những quân bình rất tinh tế cũng như đơn giản hơn.
Để hiểu rõ vấn đề này chúng ta xem xét ví dụ một máy tính có lệnh dài 16
bit, trong đó mã vi tác vụ opcode dài 4 bit và 3 trường địa chỉ, mỗi trường dài 4
bit như trong hình 5.4.

Hình 5.3 Lệnh có opcode 4 bit và 3 địa chỉ 4 bit.

Như vậy ứng với mã vi tác vụ 4 bit sẽ cung cấp cho ta 24=16 lệnh khác
nhau với 3 địa chỉ. Nhưng nếu nhà thiết kế cần 15 lệnh ba địa chỉ, hoặc 14 lệnh
hai địa chỉ, hoặc 31 lệnh một địa chỉ thì họ sẽ phải làm như thế nào?
Đối với trường hợp thứ nhất 15 lệnh ba địa chỉ thì nhà thiết kế có thể lấy
nguyên cấu trúc trên hình 5.4, nhưng bỏ đi một trường hợp của opcode như
trong hình 5.5 a).

92
Hình 5.4 Một số dạng thức lệnh cho 16 bit.

Tương tự để có 14 lệnh hai địa chỉ ta làm như hình 5.5 b) và 31 lệnh một
địa chỉ như hình 5.5 c).
Các bit cao nhất (bit 12 đến 15) trong trường hợp b) được gán mặc định trị
nhị phân “1”, bốn bit kế tiếp đó (bit 8 đến 11) sẽ mã hóa các tác vụ cần thiết. Vì
4 bit thì mã hóa được 16 tác vụ, nhưng trong trường hợp này ta chỉ cần 14 tác
vụ, do đó còn 2 vị trí không dùng đến. Trong các trường hợp có tổ hợp code còn
lại không dùng, như trong hình 5.5 b) thì tổ hợp opcode 1111 1110 và 1111
1111 sẽ được xử lý đặc biệt.
Như vậy độ dài các lệnh là như nhau, đều 16 bit, nhưng trong trường hợp
a) thì độ dài opcode là 4, trường hợp b) là 8 trong khi trường hợp c) là 12 bit.

5.3.3 Các chế độ lập địa chỉ


Có thể phân lệnh theo số lượng địa chỉ sử dụng. Lệnh quy định một, hai
hay ba địa chỉ đều phổ biến. Trên nhiều máy tính phép tính số học được thực
hiện với một địa chỉ duy nhất. Có một thanh ghi đặc biệt gọi là thanh bộ tích lũy
(accumulator) sẽ cung cấp một trong các toán hạng, toán hạng còn lại sẽ nằm ở
bộ nhớ. Trên máy này, địa chỉ thường là địa chỉ của từ nhớ m, trong đó đặt toán
hạng.
Trong kiến trúc GPR chế độ lập địa chỉ cần phải chỉ rõ đó là một hằng số,
một thanh ghi hay một vị trí trong bộ nhớ. Khi là một vị trí trong bộ nhớ được
dùng thì địa chỉ ô nhớ thực được chỉ ra bởi cách dùng chế độ lập địa chỉ và được
gọi là địa chỉ hiệu dụng (effective address).

93
Để hiểu cách thực hiện một lệnh ta phải biết phương cách thông dịch bit
trong trường địa chỉ để tì toán hạng. Khả năng là chúng chứa địa chỉ bộ nhớ của
toán hạng. Thế nhưng cung có những khả năng khác và trong phần này chúng ta
sẽ xem những kỹ thuật đánh địa chỉ cơ bản nhất sau:
− Địa chỉ tức thời – Immediate
− Địa chỉ trực tiếp – Direct
− Địa chỉ gián tiếp – Indirect
− Địa chỉ thanh ghi – Register
− Địa chỉ gián tiếp thanh ghi – Register Indirect
− Địa chỉ dịch chuyển – Displacement
− Địa chỉ ngăn xếp – Stack.
Các cách lập địa chỉ thông dụng trong hình 5.8.
Trong bảng 5.3 chỉ ra cách tính địa chỉ thực cho mỗi chế độ lập địa chỉ và
các ưu nhược điểm của mỗi loại.
Các ký hiệu trong hình 5.8 và bảng 5.3 như sau:
A – Nội dung trong trường địa chỉ trong một lệnh.
R – Nội dung trong trường địa chỉ mà chỉ ra một thanh ghi nào đó.
EA – Địa chỉ thực của nơi chứa (memory hoặc register) toán hạng.
(X) – Nội dung của trị trí nhớ X hoặc là thanh ghi X.

Bảng 5.3 Cách tính địa chỉ thực

94
Hình 5.5 Các chế độ lập địa chỉ

a) Lập địa chỉ tức thời (Immediate Addressing)


Cách đơn giản nhất cho lệnh quy định toán hạng là để phần địa chỉ trong
lệnh chứa chính toán hạng thay vì địa chỉ hoặc thông tin khác mô tả vị trí toán
hạng:
OPERAND = A.
Toán hạng như vậy được gọi là toán hạng tức thời (immediate operand) vì
tự động được tìm nạp từ bộ nhớ cùng lúc với tìm nạp bản thân lệnh, nhờ đó khả
dụng tức thời.
Lập địa chỉ tức thời có ưu điểm là khỏi cần thêm tham chiếu bọ nhớ để
tìm nạp toán hạng. Nhược điểm là hạn chế toán hạng ở con số vừa vào trường
địa chỉ. Ở lệnh có địa chỉ 3 bit (ví dụ như trường thanh ghi), toán hạng sẽ giới
hạn ở 3 bit, và làm hạn chế tính hữu ích của chúng.

95
Chế độ này được dùng để định nghĩa các hằng số hoặc là khởi tạo một giá
trị nào đó cho một biến.
Một ví dụ trong các trường hợp lập chỉ chỉ tức thời là đưa giá trị “4” vào
thanh ghi R1 như sau:
Move R1,#4
b) Lập địa chỉ trực tiếp (Direct Addressing)
Một phương thức đơn giản khác để quy định toán hạng là cung cấp địa chỉ
của từ nhớ có chứa toán hạng và đặt nó vào trong địa chỉ của lệnh. Hình thức
này gọi là lập địa chỉ trực tiếp (direct addressing):
EA = A
Tất nhiên phải có cách để máy tính biết được địa chỉ nào là tức thời và địa
chỉ nào là trức tiếp. Nói chung, có hai phương pháp: Sử dụng opcode khác nhau
hoặc sử dụng một mode đánh địa chỉ đặc biệt cho mỗi loại toán hạng.
Cũng như cách lập địa chỉ tức thời, địa chỉ trực tiếp có một số giới hạn:
Lệnh luôn truy cập đến chỉ một địa chỉ ô nhớ. Tức là giá trị tại địa chỉ đó có thể
thay đổi nhưng địa chỉ thì không. Như vậy, địa chỉ trực tiếp có thể được sử dụng
với các biến toàn cục, mà địa chỉ của nó là biết trước trong thời gian biên dịch.
c) Lập địa chỉ gián tiếp (Indirect Addressing)
Đánh địa chỉ trực tiếp là cách trong đó trường hợp địa chỉ chỉ ra một từ
nhớ nào hay thanh ghi nào chứa toán hạng. Tuy nhiên, trong trường hợp lập địa
chỉ trực tiếp thì chiều dài của trường địa chỉ thường là ngắn hơn chiều dài một
word, do đó số địa chỉ có thể mã hóa được bị hạn chế. Cách đánh địa chỉ gián
tiếp là trường địa chỉ chỉ ra từ nhớ nào hoặc thanh ghi nào chứa địa chỉ của toán
hạng (Xem hình 5.6):
EA=(A)
Nói cách khác là từ nhớ hay thanh ghi trong trường địa chỉ giống như một
con trỏ (trong C++), trỏ tới một toán hạng.
Việc đánh địa chỉ gián tiếp cần hai lần truy cập bộ nhớ, lần thứ nhất để lấy
con trỏ về và lần thứ hai để lấy toán hạng về.
d) Lập địa chỉ thanh ghi (Register Addressing)
Về khái niệm, lập địa chỉ thanh ghi tương tự như lập địa chỉ trực tiếp.
Điểm khác biệt duy nhất ở đây là thay vì trường địa chỉ trỏ tới một địa chỉ trong
bộ nhớ thì ở đây là trỏ tới một thanh ghi trong đó lưu trữ toán hạng:
Máy với 16 thanh ghi và bộ nhớ 65.536 từ thật sự sẽ có hai không gian địa
chỉ. Ta có thể xem một địa chỉ trên máy như thế là có hai phần:

96
− Một bit cho biết là ta muốn dùng thanh ghi hay từ nhớ.
− Một trường dịa chỉ cho biết là sẽ cần thanh ghi hay từ nhớ nào.
Vì số lượng thanh ghi ít hơn số từ nhớ, do đó người ta thường dùng các
dạng thức lệnh khác nhau cho toán hạng thanh ghi và toán hạng nhớ.
Các máy ngày nay được thiết kế có các thanh ghi vì 2 lý do chính sau:
− Các thanh ghi hoạt động nhanh hơn bộ nhớ chính.
− Số lượng thanh ghi là rất ít do đó để mã hóa chúng cũng chỉ cần một số ít
bit.
e) Lập địa chỉ gián tiếp thanh ghi (Register Indirect Addressing)
Địa chỉ thanh ghi thì giống địa chỉ trực tiếp, còn địa chỉ gián tiếp thanh
ghi thì lại giống với địa chỉ gián tiếp. Trong cả hai trường hợp sự khác nhau chỉ
là một cách là địa chỉ bộ nhớ chính, còn một cách là thanh ghi:
EA=(R)
Trường địa chỉ chứa số thanh ghi, mà trong thanh ghi đó chứa địa chỉ của
toán hạng cần thiết.
f) Lập địa chỉ dịch chuyển (Displacement Addressing)
Mộ chế độ được tổng hợp từ hai chế độ: địa chỉ trực tiếp và địa chỉ gián
tiếp thanh ghi. Cách tính địa chỉ thực như sau:
EA=A + (R)
Chế độ này đòi hỏi trong mã lệnh phải có hai trường địa chỉ, một trường
cho địa chỉ thanh ghi (R) và một trường cho địa chỉ trực tiếp bộ nhớ (A). Địa chỉ
thực là tổng của địa chỉ A với giá trị địa chỉ chứa trong thanh ghi R.
Một cách đánh địa chỉ dịch chuyển hay dùng là dạng đánh địa chỉ “chỉ số”
(indexing). Có nhiều thuật toán đòi hỏi một số thao tác trên dãy các cấu trúc dữ
liệu được chứa trong các vị trí nhớ liên tiếp. Ví dụ chúng ta xem một khối gồm
N từ chiếm các vị trí nhớ:
A, A+1, A+2, …, A+N-1
Giả sử chúng cần được chuyển tới vị trí nhớ:
B, B+1, B+2, …, B+N-1
Và giả sử ta dùng lệnh máy MOVE B,A để chuyển nội dung vị trí nhớ A
đến vị trí nhớ B. Máy thi hành lệnh này và sau đó sửa lại thành MOVE
B+1,A+1 rồi thi hành lệnh này, rồi lại sửa lại, lại thi hành, … cứ lặp đi lặp lại
chu kỳ này cho đến khi tất cả N word được copy xong.

97
Bài toán như thé được giải quyết tốt nhất bằng cách sử dụng một thanh
ghi gọi là thanh ghi chỉ số (index register) và chúng làm việc như sau:
Trường địa chỉ sẽ có hai phần: một con số của thanh ghi chỉ số và một
hằng số. Trong ví dụ trên nếu cả hai địa chỉ đều được đánh chỉ số sử dụng một
index register (IR) có chứa số nguyên k, thi hành lệnh MOVE B,A sẽ chuyển
nội dung của vị trí nhớ A+k tới B+k. Bằng cách khởi tạo cho IR giá trị ban đầu
là 0 và tăng nó lên bằng kích thước một word mỗi khi copy xong một word, thì
chúng ta chỉ cần sử dụng một thanh ghi cho vòng lặp copy.
Việc đánh địa chỉ Index được sử dụng rộng rãi để đánh địa chỉ một trường
tại một khoảng cách đã biết tính từ điểm đầu của cấu trúc dữ liệu đã cho.
g) Địa chỉ ngăn xếp (Stack)
Stack chứa các phần tử dữ liệu (words, characters, …) theo trật tự liên tiếp
trong bộ nhớ. Phần tử đầu tiên được đẩy lên Stack được gọi là nằm ở đáy của
Stack. Dữ liệu được đưa vào và lấy ra theo phương thức vào đầu tiên thì ra sau
cùng FILO (first in last out). Mỗi Stack được gắn với một thanh ghi hay word bộ
nhớ chứa địa chỉ đỉnh Stack và được gọi là con trỏ Stack.
Hình 5.9 cho thấy các chế độ lập dịa chỉ của dữ liệu trong các máy tính
mới nhất và cá ví dụ tương ứng với nó.

Hình 5.6 Các chế độ lập địa chỉ thông dụng

98
5.4 Bộ lệnh

5.4.1 Nhóm lệnh cơ sở, truyền dữ liệu


Lệnh MOV (move): chuyển dữ liệu giữa các thanh ghi, giữa 1 thanh ghi
và 1 ô nhớ hoặc trực tiếp 1 số vào 1 thanh ghi hay ô nhớ
Cú pháp:
MOV đích,nguồn; không làm thay đổi nội dung nguồn

Bảng 5.4 Một số ví dụ lệnh MOVE

Lệnh XCHG (exchange): hoán chuyển nội dung của 2 thanh ghi, 1 thanh
ghi và 1 ô nhớ
Cú pháp:
XCHG đích,nguồn
Chú ý: 1 lệnh trên không hợp lệ khi cả đích và nguồn là các ô nhớ
Lệnh LEA (load effective address): nạp địa chỉ thực(hiệu dụng)
Hàm 9h của ngắt 21h yêu cầu địa chỉ tương đối của chuỗi kí tự chứa trong
DX, thực hiện điều này dùng lệnh LEA
Cú pháp:
LEA đích,nguồn
Đích: thanh ghi công dụng chung
Nguồn: ô nhớ
Lệnh LOAD đích, nguồn
Lệnh STORE đích, nguồn

99
Bảng 5.5 Một số lệnh truyền dữ liệu

5.4.2 Nhóm lệnh vào ra


CPU liên lạc với các thiết bị ngoại vi qua các thanh ghi vào/ra hay các
cổng vào/ra. Có 2 lệnh truy nhập trực tiếp các cổng đó là lệnh IN và OUT, tuy
nhiên ít sử dụng
Lệnh INT: dùng để gọi các chương trình con ngắt của DOS và BIOS
Cú pháp:
IN số hiệu ngắt
Số hiệu ngắt là 1 số xác định 1 chương trình (ngắt mềm)
Ta xem xét các ngắt của DOS:
- Ngắt 20h: kết thúc chương trình, 1 chương trình có thể dùng ngắt 20h để
trả điều khiển về cho DOS(dùng trong chương trình đuôi .COM)
- Ngắt 22h-26h: các phục vụ quản lý CTRL + BREAK, các lỗi nghiêm
trọng và truy nhập trực tiếp đĩa
- Ngắt 27h: kết thúc chương trình và ở lại thường trú
- Ngắt 21h: gọi các hàm:
Hàm 0h: kết thúc chương trình
Hàm 1h: vào từ bàn phím: đợi đọc 1 ký tự từ thiết bị vào chuẩn sau đó
đưa kí tự đó tới thiết bị ra và trả về mã ASCII của dữ liệu trong DL
AH = 01h
AL = kí tự vào
Hàm 2h: hiển thị: đưa kí tự trong DL ra thiết bị ra chuẩn
AH = 02h
DL = kí tự ra
Hàm 5h: in ra: đưa dữ liệu trong DL ra thiết bị in
100
AH = 5h
DL = kí tự ra
Hàm 9h: in chuỗi: đưa chuỗi kí tự ra thiết bị chuẩn
AH = 9h
DS:DX con trỏ đến chuỗi kí tự kết thúc bằng $
Chú ý: hàm 2h của ngắt 21h cũng có thể sử dụng để thực hiện 1 chức
năng điều khiển nếu DL chứa mã ASCII của kí tự điều khiển, hàm này sẽ thi
hành chức năng đó:

5.4.3 Nhóm lệnh tính toán số học


* Chỉ thị ADD (add) và SUB (subtract): Được sử dụng để cộng hoặc trừ
nội dung của 2 thanh ghi, 1 thanh ghi và 1 ô nhớ hoặc cộng trừ 1 số vào thanh
ghi hay 1 ô nhớ
Cú pháp:
ADD đích,nguồn
SUB đích,nguồn
Ví dụ:
SUB AX,DX; AX nhận giá trị AX + DX
ADD BL,5; BL nhận giá trị BL + 5
Chú ý: phép cộng, trừ trực tiếp giữa các ô nhớ là không hợp lệ
* Chỉ thị INC (increment) và DEC (decrement): được sử dụng để cộng,
trừ 1 vào nội dung 1 thanh ghi hay ô nhớ
Cú pháp:
INC đích
DEC đích
Ví dụ:
INC WORD; WORD nhận giá trị WORD + 1

101
* Lệnh NEG (negavi): lệnh NEG dùng phủ định nội dung của toán hạng
đích, thay thế nội dung bởi phần bù 2
Cú pháp:
NEG đích
Toán hạng đích có thể là 1 thanh ghi hay ô nhớ
* Các lệnh MUL (Multiply) và IMUL (Integer MUL): Lệnh nhân giá
trị số học. Khi xét các số có dấu và không dấu thì kết qủa thực hiện phép toán là
khác nhau, với các số có dấu ta dùng lệnh IMUL, các số không dấu ta dùng lệnh
MUL
Cú pháp:
MUL toán hạng nguồn
IMUL toán hạng nguồn
Khi nhân các byte với nhau, 1 số được chứa trong toán hạng nguồn, số
còn lại được giả thiết đã chứa trong AL. Toán hạng nguồn có thể là 1 thanh ghi
hay ô nhớ.
* Các lệnh DIV (Device) và IDIV (Integer DIV): Lệnh chia số học. Khi
xét các số có dấu và không dấu thì kết qủa thực hiện phép toán là khác nhau, với
các số có dấu ta dùng lệnh IDIV, các số không dấu ta dùng lệnh DIV.
Cú pháp:
DIV số chia
IDIV số chia
- Dạng byte: số chia là thanh ghi hay ô nhớ 1 byte, số bị chia: 16 bit được
giả định chứa trong AX thương 8 bit chứa trong AL, số dư 8 bit trong AH
- Dạng word: số chia 16 bit, số bị chia giả định chứa trong DX:AX,
thương 16 bit chứa trong AX, số dư 16 bit trong DX.

Bảng 5.6 Các lệnh tính toán số học cơ bản

102
5.4.4 Nhóm lệnh Logic
Các lệnh logic: AND, OR, NOT, XOR: thay đổi từng bit trong máy
Cú pháp:
AND đích,nguồn
OR đích,nguồn
XOR đích,nguồn
Ảnh hưởng tới các cờ:
SF, ZF, PF phản ánh kết quả lệnh
AF không xác định
CF, OF=0
- Lệnh AND: xoá các bit nhất định của toán hạng đích trong khi giữ
nguyên các bit còn lại, các bit cần xoá được AND với 0
- Lệnh OR: thiết lập các bit xác định của toán hạng đích khi vẫn giữ
nguyên các bit còn lại, các bit cần thiết lập được OR với 1
- Lệnh XOR: đảo các bit xác định
Sử dụng:
- Đổi mã ASCII của 1 số thành số tương ứng: khi đọc 1 kí tự từ bàn phím,
AL sẽ chứa mã ASCII của kí tự đó vì vậy dùng lệnh AND đổi mã ASCII của kí
tự ra giá trị thập phân tương ứng.
Ví dụ:
- Số 5 mã ASCII là 35h vì vậy khi đổi ra giá trị thập phân thực hiện phép:
AND AL,0Fh
- Đổi chữ thường thành chữ hoa:
có thể dùng lệnh SUB SUB đích,20h
hoặc dùng lệnh AND: AND đích,0DFh
- Xoá 1 thanh ghi:
XOR đích,nguồn; đích=nguồn
Ví dụ:
MOV AX,0
SUB AX,AX
XOR AX,AX
- Kiểm tra xem 1 thanh ghi có bằng 0 hay không:

103
OR đích,nguồn; đích=nguồn
Ví dụ:
OR CX,CX;(CMP CX,0)
* Lệnh NOT: lấy số bù 1 của toán hạng đích
Cú pháp:
NOT toán hạng đích; không ảnh hưởng tới cờ
* Lệnh TEST: thực hiện phép AND giữa toán hạng đích với toán hạng
nguồn nhưng không làm thay đổi toán hạng đích mà chỉ thiết lập cờ
Cú pháp:
TEST toán hạng đích,toán hạng nguồn
Các cờ bị tác động:
SF, ZF, PF: phản ánh kết quả
AF: không xác định
CF, OF=0

5.4.5 Nhóm các lệnh dịch chuyển và quay


Quay và dịch các bit trong toán hạng đích sang trái hoặc phải 1 hoặc 1 số
vị trí.
- Lệnh dịch: các bit bị dịch ra khỏi toán hạng sẽ bị mất
- Lệnh quay: các bit bị dịch ra 1 phía của toán hạng đích sẽ đựơc đưa trở
lại phía bên kia quay 1 vị trí
Cú pháp:
Quay, dịch 1 vị trí
Mã lệnh Toán hạng đích,1
Quay, dịch N vị trí
Mã lệnh Toán hạng đích,CL; CL chứa N
* Các lệnh dịch trái
Lệnh SHL(Shift Left):
Dịch các bit của toán hạng sang trái 1 vị trí:
SHL toán hạng đích,1;
Giá trị 0 sẽ được đưa vào vị trí bên phải nhất của toán hạng, còn MSB của
nó sẽ được đưa vào CF N vị trí
SHL toán hạng đích,CL
104
N phép dịch trái sẽ được thực hiện
Có thể dùng lệnh SHL để thực hiện phép nhân nhị phân
Lệnh SAL(Shift Arithmetic Left): Tương tự như lệnh SHL
Lệnh SHR(Shift Right):
Dịch các bit của toán hạng sang phải 1 vị trí:
SHR toán hạng đích,1;
Giá trị 0 sẽ được đưa vào vị trí bên trái nhất của toán hạng, còn LSB của
nó sẽ được đưa vào CF N vị trí
SHR toán hạng đích,CL
N phép dịch phải sẽ được thực hiện
Có thể dùng lệnh SHR để thực hiện phép chia nhị phân
Lệnh SAR(Shift Arithmetic Right): Tương tự như lệnh SHR
* Các lệnh quay
Lệnh ROL(Rotate Left):
Dịch các bít của toán hạng sang trái 1 vị trí:
ROL toán hạng đích,1;
Bit MSB sẽ được dịch vào vị trí bên phải nhất của toán hạng, đồng thời
được đưa vào CF N vị trí
ROL toán hạng đích,CL
N phép quay trái sẽ được thực hiện
Lệnh ROR(Rotate Right):
Dịch các bít của toán hạng sang phải 1 vị trí:
ROR toán hạng đích,1;
Bit bên phải nhất (LSB) sẽ được dịch vào vị trí bên trái (MSB) nhất của
toán hạng, đồng thời được đưa vào CF N vị trí
ROR toán hạng đích,CL
N phép quay phải sẽ được thực hiện
Ví dụ: đếm số bit 1 có trong thanh ghi BX mà không làm thay đổi nội
dung BX, kết quả lưu trong AX
XOR AX,AX; xoá AX
MOV CX,16; biến đếm vòng lặp
Top:

105
ROL BX,1
JNC Next; bit 0?
INC AX; không, tăng biến đếm kết quả
Next:
LOOP Top; quay lại
Lệnh RCL (Rotate Carry Left): quay trái qua cờ nhớ
Dịch các bít của toán hạng đích sang trái. Bit MSB được đặt vào CF, giá
trị của CF được đưa vào bit phải nhất(LSB) của toán hạng đích
Cú pháp:
RCL toán hạng,1
hoặc
RCL toán hạng,CL
Lệnh RCR(Rotate Carry Right): quay phải qua cờ nhớ
Dịch các bít của toán hạng đích sang phải. Bit LMSB được đặt vào CF,
giá trị của CF được đưa vào bit phải nhất (LSB) của toán hạng đích
Ví dụ: đảo các bit trong 1byte hay 1word
MOV CX,8; số lần lặp
Everse:
SHL AL,1; lấy 1 bit vào CF
RCR BL,1; quay, đưa vào BL
LOOP Reverse
MOV AL,BL; đưa vào AL

106
Hình 5.7 Các lệnh dịch chuyển và quay vòng.

5.4.6 Nhóm các lệnh có điều kiện và lệnh nhảy


Cho phép chọn lựa và lặp lại các đoạn mã lệnh
* Các lệnh nhảy có điều kiện
Cú pháp:
Tên lệnh nhãn đích
Nếu điều kiện của lệnh nhảy thoả mãn, lệnh có nhãn đích sẽ được thực
hiện. Lệnh này có thể ở trước hoặc sau lệnh nhảy. Nếu điều kiện không thoả
lệnh ngay sau lệnh nhảy được thực hiện
Phạm vi của lệnh nhảy có điều kiện:
Nhãn đích phải đứng trước lệnh nhảy không quá 126byte hoặc đứng sau
lệnh nhảy không quá 127byte
- CPU thực hiện 1 lệnh nhảy ntn?
- CPU dựa vào thanh ghi cờ để điều chỉnh IP chỉ đến nhãn đích
Các lệnh nhảy có điều kiện

107
Bảng 5.7 Các lệnh nhảy có điều kiện

Lệnh CMP (compare)


Các điều kiện nhảy thường được cung cấp bởi lệnh CMP
Cú pháp:
CMP đích,nguồn
So sánh các toán tử đích với toán tử nguồn bằng cách lấy toán tử đích trừ
đi toán tử nguồn
Toán tử đích không thể là hằng số, các toán tử không cùng là ô nhớ
Lệnh JMP (Jump)
Lệnh JMP dẫn đến việc chuyển điều khiển không điều kiện
Cú pháp:
JMP đích

108
Đích phải là 1 nhãn trong cùng 1 đoạn với lệnh JMP
* Cấu trúc lặp
Lặp: cho phép lặp lại 1 đoạn chương trình nào đó, số lần lặp có thể biết
trước hoặc không biết trước
Vòng lặp FOR
FOR số lần lặp DO
các dòng lệnh
END_FOR
Thực hiện: dùng lệnh LOOP
Cú pháp:
LOOP nhãn đích
Bộ đếm vòng lặp là thanh ghi CX, được khởi tạo bằng số lần lặp
Mỗi lần thực hiện LOOP thanh ghi CX tự động giảm đi 1, và nếu CX<>0
thì điều khiển được chuyển tới nhãn đích. Nếu CX=0 thì lệnh tiếp theo LOOP sẽ
được thực hiện.

5.5 Cấu trúc lệnh CISC và RISC


Trong máy tính mọi thứ đều được đưa về các con số nhị phân “0” và “1”
bởi vì máy tính chỉ hiểu các mức điện thế tương ứng với 0/1 trên mỗi transistor
cụ thể, người sử dụng muốn thực hiện một chương trình nào đó, phải nạp các mã
lệnh chỉ gồm các con số 0, 1 vào bộ nhớ cho máy tính. Có 3 cách cơ bản để làm
việc ấy:
− Viết ngay dạng mã máy với các con số 0, 1 và nạp vào bộ nhớ. Cách này
rất khó thực thi bởi vì thứ nhất rất dễ bị nhầm lẫn giữa các con số 0 và 1;
thứ hai rất khó nhớ các lệnh được mã hóa như thế nào và thứ ba là rất mất
thời gian để làm việc đó.
− Viết dạng tên gợi nhớ bằng hợp ngữ (Assembler), sau đó biên dịch ra mã
máy, cấp này cũng rất gần với ngôn ngữ máy và cũng khó thực hiện với các
chương trình phức tạp. Tuy nhiên, cấu trúc gọn nhẹ, các lệnh có tên tương
ứng dễ nhớ.
− Viết bằng một ngôn ngữ cấp cao như C++, Pascal, Java, … sau đó dùng
một trình biên dịch (compiler) để dịch ra mã máy. Cách này tuy dễ với
người viết chương trình nhưng cũng sẽ làm chương trình có dung lượng lớn
hơn nếu viết bằng ASM. Và thách thức là làm sao các nhà sản xuất phần

109
mềm, phần cứng bắt tay nhau để chương trình biên dịch này thật chuẩn tắc,
nhỏ gọn, không tạo nhiều code trung gian.
Trong suốt thập niên 1980, các nhà thiết kế cố gắng thu hẹp khoảng cách
giữa ngôn ngữ cấp cao của con người với ngôn ngữ máy, họ đã đưa ra cấu trúc
với các chỉ lệnh phức tạp gọi là CISC (Complex Instruction Set Computer), có
các chế độ định địa chỉ khác nhau, mỗi lệnh thực thi cần nhiều lần định địa chỉ
để lấy dữ liệu và do đó, tốn nhiều chu kỳ xung nhịp cho mỗi chỉ lệnh.
So sánh giữa CISC và RISC

110
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 5
5.1 Có mấy loại kiến trúc bộ lệnh cơ bản? Nêu các ưu và nhược điểm của
từng loại?
5.2 Cho biết đặc tính cơ bản của kiểu kiến trúc thanh ghi đa dụng?
5.3 Địa chỉ bộ nhớ được sắp xếp như thế nào? Giữa cách Intel và
Motorola khác biệt nhau gì?
5.4 Cho biết cách mã hóa tập lẹnh và đưa ra một vài dạng mã hóa lệnh cơ
bản?
5.5 Hãy cho biết và giải thích các tiêu chuẩn thiết kế dạng thức lệnh?
5.6 Giả sử cần thiết kế máy với ký tự 8 bit và bộ nhớ chính chứa 224 ký
tự. Hãy cho biết trường địa chỉ cần bao nhiêu bit trong trường hợp:
a) Ô nhớ kích thức 8 bit.
b) Ô nhớ kích thước 16 bit.
c) Ô nhớ kích thước 32 bit.
5.7 Thiết kế opcode mở rộng nhằm cho phép mã hóa nội dung sau trong
lệnh 36 bit.
a) 7 lệnh có hai địa chỉ 15 bit và một số hiệu thanh ghi 3 bit.
b) 500 lệnh có một địa chỉ 15 bit và một số hiệu thanh ghi 3 bit.
c) 50 lệnh không có địa chỉ hoặc thanh ghi.
5.8 Có thể thiết kế opcode mở rộng để cho phép mã hóa nội dung sau
trong lệnh 12 bit được không? Trường thanh ghi rộng 3 bit.
a) 4 lệnh có ba thanh ghi
b) 255 lệnh có hai thanh ghi
c) 2048 lệnh không có thanh ghi.
5.9 Cho biết các chế độ lập địa chỉ và các ưu, nhược điểm của từng loại.
Mô tả bằng hình các cách lập địa chỉ đó?
5.10 Mô tả các kiểu thi hành lệnh của một máy tính. Tại sao kiểu thi hành
lệnh thanh ghi-thanh ghi được dùng nhiều hiện tại?
5.11 Hãy diễn tả quá trình biên dịch ra ngôn ngữ máy từ các ngôn ngữ cấp
cao?
5.12 Các lệnh máy tính được phân loại như thế nào? Đưa ra một ví dụ cho
từng nhóm lệnh?

111
5.13 Mô tả bằng hình vẽ các lệnh dịch chuyển và quay vòng và giải thích
tác dụng của các lệnh?
5.14 Hãy phân biệt sự khác nhau giữa hai kiểu kiến trúc máy tính RISC và
CISC?

112
CHƯƠNG 6. BỘ NHỚ VÀ THIẾT BỊ LƯU TRỮ

6.1 Khái niệm và phân cấp bộ nhớ


Người ta chia bộ nhớ thành các cấp dựa vào đặc tính như lượng thông tin
lưu trữ, thời gian thâm nhập bộ hớ, chu kỳ bộ nhớ, giá tiền mỗi bit nhớ. Các cấp
bộ nhớ bắt đầu từ bộ nhớ nhanh với dung lượng ít đến các bộ nhớ với dung
lượng lớn hơn nhiều.
Các cấp bộ nhớ giúp cho người lập trình có được một bộ nhớ thật nhanh
với chi phí đầu tư thấp hơn nhiều. Vì các bộ nhớ nhanh, có dung lượng ít thì đắt
tiền hơn các bộ nhớ có dung lượng cao hơn, nhưng chậm hơn. Do đó mục tiêu
của việc thiết lập các cấp bộ nhớ là người dùng có được một hệ thống bộ nhớ rẻ
tiền như cấp bộ nhớ thất nhất và gần nhanh như cấp bộ nhớ cao nhất. Các cấp bộ
nhớ thường được lồng vào nhau. Mọi dữ liệu trong một cấp thì được gặp lại
trong cấp thấp hơn và có thể tiếp tục gặp lại trong cấp thấp nhất.
Chúng ta có nhận xét rằng, mỗi cấp bộ nhớ có dung lượng lớn hơn cấp
trên của mình, ánh xạ một phần địa chỉ cá ô nhớ của mình vào địa chỉ ô nhớ của
cấp trên trực tiếp có tốc độ nhanh hơn, và các cấp bộ nhớ phải có cơ chế quản lý
và kiểm tra các địa chỉ ánh xạ.
Các cấp bộ nhớ được phân loại như trên hình 6.1 bắt đầu với bộ nhớ nhỏ,
đắt tiền và nhanh gọi là Cache. Tiếp sau đó là bộ nhớ lớn hơn, rẻ hơn và chậm
hơn gọi là bộ nhớ chính hay bộ nhớ trong (main memory). Bộ nhớ cache và bộ
nhớ chính được chế tạo sử dụng chất bán dẫn rắn (điển hình là CMOS
transistor). Tiếp theo sau đó là các bộ nhớ có dung lượng lớn hơn, chậm hơn và
rẻ tiền hơn mà tiêu biểu là đĩa cứng, đĩa mềm, các loại CD, DVD, băng từ, …

Hình 6.1 Các cấp bộ nhớ cơ bản

Hiệu quả của việc phân thành các cấp bộ nhớ phụ thuộc vào nguyên lý
chuyển đổi thông tin trong các bộ nhớ nhanh. Hiệu quả càng cao khi thông tin
trong đó càng ít khi bị thay đổi và việc truy cập vào thông tin trong đó càng

113
nhiều lần càng tốt trước khi nó bị thay thế bởi thông tin mới. Để đánh giá hiệu
quả của hệ thống các cấp bộ nhớ chúng ta xem xét trường hợp dưới đây.
Khi bộ vi xử lý gửi một yêu cầu truy cập đến một từ nhớ hay một câu
lệnh, máy tính sẽ thực thi tìm kiếm từ nhớ theo một thứ tự như sau:
− Tìm từ nhớ trong bộ nhớ mức cao nhất (thông thường gọi là cache) của các
cấp bộ nhớ. Xác suất tìm thấy từ nhớ trong đó gọi là tỷ số thành công (hit
ratio) h1, không tim fthấy là tỷ số thất bại (miss ratio) (1-h1);
− Khi không tìm thấy từ nhớ trong bước một thì tìm ở cấp bộ nhớ thấp hơn
(như cache L2, main memory). Tương tự như trên ta sẽ có các tỷ số h2 và
(1-h2).
− Quá trình này sẽ tiếp diễn cho đến khi tìm thấy từ nhớ cần thiết hoặc hết
cấp bộ nhớ.
− Khi tìm thấy từ nhớ sẽ được chuyển cho bộ vi xử lý và cập nhật lại dữ liệu
trong các cấp bộ nhớ nếu cần thiết.
Giả sử các cấp bộ nhớ có 3 cấp. Thời gian truy cập vào các cấp bộ nhớ
trung bình, hay thời gian trung bình để tìm thấy một từ nhớ được tính theo công
thức sau:

Trong đó:
− hi là tỉ số thành công khi tìm thấy từ nhớ cần thiết trong mức bộ nhớ cấp i.
− ti là thời gian truy cập cần thiết vào bộ nhớ cấp i.
Chúng ta biết một chương trình tiêu tốn 90% thời gian thi hành của nó chỉ
để thực hiện 10% số lệnh của chương trình (thường là những lệnh nằm trong các
vòng lặp, được thực thi nhiều lần). Như vậy, 90% số lệnh còn lại chỉ tiêu tốn
10% thời gian thực thi hay nói cách khác chúng hoặc là không được thực thi (ví
dụ các lệnh xử lý lỗi chỉ được thực thi khi phát sinh lỗi) hoặc là chỉ được thực
thi một số ít lần.
Nguyên tắc trên cũng được áp dụng cho việc thâm nhập dữ liệu, nhưng ít
hiệu nghiệm hơn việc thâm nhập lệnh. Như vậy, có hai nguyên tắc: nguyên tắc
về không gian và nguyên tắc về thời gian.
Nguyên tắc về không gian: Khi bộ xử lý thâm nhập vào ô nhớ nào đó thì
có nhiều khả nưang sẽ thâm nhập vào những ô nhớ có địa chỉ kế tiếp trong thời

114
gian sau đó do các lệnh được sắp xếp thành chuỗi có thứ tự. Ví dụ danh sách các
lệnh nằm liên tiép nhau trong một chương trình.
Nguyên tắc về thời gian: Các ô nhớ được hệ thống xử lý thâm nhập có khả
năng sẽ được thâm nhập lại trong tương lai gần. Thật vậy, các chương trình
được cấu tạo với phần chính là được thi hành nhiều nhất và các phần phụ dùng
để xử lý các trường hợp ngoại lệ. Còn số liệu luôn có cấu trúc và thông thường
chỉ có một phần số liệu được thâm nhập nhiều nhất mà thôi. Ví dụ như một lệnh
trong một vòng lặp của chương trình.
Như vậy, chúng ta cần tổ chức cá cấp bộ nhớ sao cho các lệnh và dữ liệu
thường dùng nằm trong bộ nhớ cache và việc tổ chức như vậy sẽ làm tăng hiệu
quả cũng như tốc độ chung của máy tính lên một cách đáng kể.

6.2 Bộ nhớ trong (Bộ nhớ chính - Memory)


Bộ nhớ trong may bộ nhớ chính như ten gọi của nó là bộ nhớ cung cấp
nơi để lưu trữ chính trong máy tính. Hình 6.10 cho ta thấy sơ đồ khối giao tiếp
cơ bản giữa bộ nhớ trong và CPU. Có hai thanh ghi đặc biệt của CPU được dùng
cho các thao tác giữa CPU và bộ nhớ trong đó là thanh ghi địa chỉ bộ nhớ
(Memory Address Register-MAR) và thanh ghi dữ liệu bộ nhớ (Memory Data
Register-MDR). Thanh ghi MDR được dùng để lưu trữ tạm thời các dữ liệu cần
ghi vào (hay nhận được từ) bộ nhớ trong, nơi có địa chỉ được xác định trong
thanh ghi MAR.

Hình 6.2 Giao tiếp cơ bản giữa CPU và bộ nhớ trong

Bộ nhớ trong (RAM – bộ nhớ truy cập ngẫu nhiên) được chế tạo bằng
chất bán dẫn và có cấu trúc tạo thành từ những hàng và cột của các ô nhớ cơ bản
(basic cells), mỗi ô nhớ chứa đựng một bit thông tin. Hình 6.3 cho ta thấy một
mô hình tổ chức bộ nhớ trong đơn giản được cấu tạo từ các hàng và cột của các
ô nhớ (cell). Các đường địa chỉ An-1,An-2, …, A1, A0 được dùng như đầu vào
của bộ giải mã địa chỉ theo đó cho ra các đường lựa chọn hàng W2 ...W1W0 . Tại
n−1

một thời điểm nhất định thì chỉ có một trong các đường W2 ...W1W0 được chọn
n−1

115
và các ô nhớ thuộc đường này (hàng này) sẽ được kích hoạt để cho phép truyền
thông tin từ các ô nhớ ra các đường dữ liệu hoặc chuyển thông tin từ đường dữ
liệu vào trong các ô nhớ.

Hình 6.3 Tổ chức bộ nhớ trong trên CHIP đơn giản

Bộ nhớ RAM được gọi là bộ nhớ truy cập ngẫu nhiên do có đặc tính là
các ô nhớ có thể được đọc hoặc viết vào trong khoảng thời gian bằng nhau cho
dù chúng ở bất kỳ vị trí nào trong bộ nhớ. Mỗi ô nhớ có một địa chỉ, thông
thường, mỗi ô nhớ là một byte (8 bit), nhưng hệ thống có thể đọc ra hay viết vào
nhiều byte (2, 4, hay 8 byte). Bộ nhớ trong được đặc trưng bằng dung lượng và
tổ chức của nó (số ô nhớ và số bit cho mỗi ô nhớ), thời gian thâm nhập (thời
gian từ lúc đưa ra địa chỉ ô nhớ đến lúc đọc được nội dung ô nhớ đó) và chu kỳ
bộ nhớ (thời gian giữa hai lần liên tiếp thâm nhập bộ nhớ).
Tùy theo công nghệ chế tạo mà người ta phân biệt RAM tĩnh
(SRAM:Static RAM) và RAM động (DRAM: Dynamic RAM).
SDRAM (Synchronous DRAM – DRAM đồng bộ), một dạng DRAM
đồng bộ bus bộ nhớ. Tốc độ SDRAM đạt từ 66-133MHz (thời gian thâm nhập
bộ nhớ từ 75ns-150ns).
DDR SDRAM (Double Data Rate SDRAM) là cải tiến của bộ nhớ
SDRAM với tốc độ truyền tải gấp đôi SDRAM nhờ vào việc truyền tải hai lần
trong một chu kỳ bộ nhớ. Tốc độ DDR SDRAM đạt từ 200-400MHz.
RDRAM (Rambus RAM) là một loại DRAM được thiết kế với kỹ thuật
hoàn toàn mới so với kỹ thuật SDRAM. RDRAM hoạt động đồng bộ theo một
hệ thống lặp và truyền dữ liệu theo một hướng. Một kênh bộ nhớ RDRAM có
thể hỗ trợ đến 32 chip DRAM. Mỗi chip được ghép nối tuần tự trên một module
gọi là RIMM (Rambus Inline Memory Module) nhưng việc truyền dữ liệu giữa

116
các mạch điều khiển và từng chíp riêng biệt chứ không truyền giữa các chip với
nhau. Bus bộ nhớ RDRAM là đường dẫn liên tục đi qua các chip và module trên
bus, mỗi module có các chân vào và ra trên các đầu đối diện. Do đó, nếu các khe
cắm không chứa RIMM sẽ phải gắn một module liên tục để đảm bảo đường
truyền được nối liền.Tốc độ RDRAM đạt từ 400-800MHz.

6.2.1 Bit nhớ


RAM tĩnh được chế tạo theo công nghệ ECL (CMOS và BiCMOS). Mỗi
bít nhớ gồm có các cổng logic với độ 6 transistor MOS, việc nhớ một dữ liệu là
tồn tại nếu bộ nhớ được cung cấp điện. SRAM là bộ nhớ nhanh, việc đọc không
làm hủy nội dung của ô nhớ và thời gian thâm nhập bằng chu kỳ bộ nhớ.

Hình 6.4 Ô nhớ SRAM

RAM động dùng kỹ thuật MOS. Mỗi bít nhớ gồm có một transistor và
một tụ điện. Cũng như SRAM, việc nhớ một dữ liệu là tồn tại nếu bộ nhớ được
cung cấp điện. Việc ghi nhớ dựa vào việc duy trì điện tích nạp vào tụ điện và
như vậy việc đọc một bit nhớ làm nội dung bit này bị hủy (do tụ điện phóng điện
tích). Vậy sau mỗi lần đọc một ô nhớ, bộ phận điều khiển bộ nhớ phải viết lại ô
nhớ đó nội dung vừa đọc và do đó chu kỳ bộ nhớ động ít nhất là gấp đôi thời
gian thâm nhập ô nhớ. Việc lưu trữ thông tin trong bi nhớ chỉ là tạm thời vì tụ
điện sẽ phóng hết điện tích đã nào vào và như vậy phảm làm tươi bộ nhớ sau
mỗi vài ms. Làm tươi bộ nhớ là đọc ô nhớ và viết lại nội dung đó vào lại ô nhớ.
Việc làm tươi được thực hiện với tất cả các ô nhớ trong bộ nhớ. Việc làm tươi
bộ nhớ được thực hiện tự động bởi một vi mạch bộ nhớ. Bộ nhớ DRAM chậm
nhưng rẻ tiền hơn SDRAM. Hình 6.12 và 6.13 cho thấy sơ đồ cấu tạo cơ bản của
một bit nhớ của hai loại bộ nhớ này. Ô nhớ SRAM chứa một trong hai trạng thái
bền vững. Ví dụ trong hình 6.12 nếu A=1 thì transistor N2 sẽ được bật lên và nó
đóng vai trò như một dây dẫn kéo điện thế tại điểm B xuống 0 (B=0), điều đó lại
dẫn đến transistor P1 được bật lên và kéo theo điện thế A bằng điện thế nguồn
(A=1). Ta gọi trạng thái bền vững này là trạng thái 1, hay ô nhớ đang chứ giá trị

117
tương ứng với bit 1. Lập luận tương tự nếu A=0 ta sẽ có trạng thái tương ứng
với bit 0.

Hình 6.5 Ô nhớ DRAM

Khi đọc dữ liệu sẽ theo các bước:


− Đường dữ liệu được kích hoạt và được nạp ở mức cao (b=1).
− Đường địa chỉ được kích hoạt (=1) làm bật 2 transistor N3 và N4.
− Phụ thuộc vào điện thế tại diểm A mà ta đọc được giá trị bit nhớ này. Nếu
điện thế tại A cao thì điện thế này chuyển sang đường b làm điện thế b
cũng cao, hay ta nhận được giá trị bit nhớ là 1. Ngược lại, nếu điện thế tại
A thấp thì điện thế ở đường b sẽ truyền qua điểm A do đó làm suy giảm
điện thế trên b và xác định được bit nhớ có giá trị là 0.
Lập luận tương tự cho trường hợp ghi một giá trị vào bit nhớ.

6.2.2 Tổ chức chip nhớ


Dựa trên các mạch Flip-flop.
Có 2n ngăn nhớ (từ nhớ) => n chân địa chỉ (Các đường địa chỉ A0…An-1)
Độ dài mỗi ngăn nhớ (từ nhớ) m bits (Các đường dữ liệu D0…Dm-1)
Dung lượng chip nhớ = 2n*m.
Các tín hiệu điều khiển:
− Tín hiệu chọn chip hoạt động: CS (Chip Select)
− Tín hiệu điều khiển đọc hoặc ghi (WE: Write Enable, OE: Output Enable).
− Thường các tín hiệu điều khiển tích cực với mức 0.

118
Hình 6.6 Tổ chức chíp nhớ

6.2.3 Thiết kế bộ nhớ


Tổ chức bộ nhớ một chiều:

Hình 6.7 Tổ chức bộ nhớ một chiều

Hình 6.8 Tổ chức bộ nhớ hai chiều

119
Có n đường địa chỉ: n=n1+n2 (2n1 hàng, mỗi hàng có 2n2 từ nhớ)
Có m đường dữ liệu (mỗi từ nhớ có độ dài m bit)
Dung lượng của chip nhớ: [2n1 x (2n2 x m)] bit = (2n1+n2 x m) bit = (2n x m)
bit.
Hoạt động giải mã địa chỉ:
Bước 1: Bộ giải mã hàng chọn 1 trong 2n1 hàng.
Bước 2: Bộ giải mã cột chọn 1 trong 2n2 từ nhớ (cột) của hàng đã được
chọn.
Ví dụ chíp nhớ 16Mb DRAM (4M x 4)

Hình 6.9 Tổ chức chip nhớ 16Mb DRAM (4M x 4)

Thiết kế module nhớ bán dẫn:


Dung lượng chip nhớ 2n x m bit.
Cần thiết kế để tăng dung lượng:
− Thiết kế tăng độ dài từ nhớ
− Thiết kế tăng số lượng từ nhớ
− Thiết kế kết hợp
Ví dụ 1: Thiết kế tăng độ dài từ nhớ (tăng bit dữ liệu m).
Cho chip nhớ SRAM 4K x 4 bit. Thiết kế module nhớ 4K x 8bit.
Giải
Dung lượng chip nhớ = 212 x 4bit.
Chip nhớ có: 12 chân địa chỉ (A0… A11), 4 chân dữ liệu (D0…D3).
120
Module nhớ cần có 12 chân địa chỉ, 8 chân dữ liệu (D0…D7).

Ví dụ 2: Thiết kế tăng số lượng từ nhớ (tăng bit địa chỉ n).


Cho chip nhớ SRAM 4K x 8bit. Thiết kế module nhớ 8K x 8bit.
Giải
Dung lượng chip nhớ = 212 x 8 bit.
Chip nhớ có: 12 chân địa chỉ (A0…A11), 8 chân dữ liệu (D0…D7).
Dung lượng module nhớ = 213 x 8 bit
Module nhớ có: 13 chân địa chỉ (A0…A12), 8 chân dữ liệu (D0…D7).

Ví dụ 3: Thiết kế kết hợp tăng độ dài từ nhớ (tăng bit dữ liệu m) và tăng
số lượng từ nhớ (tăng bit địa chỉ n).
Cho chip nhớ 4MB x 4 bít dữ liệu. Tổ chức xây dựng module nhớ SRAM
16MB x 8 bít dữ liệu.

121
Giải
Từ chip nhớ cơ bản tìm ra được số bít địa chỉ là 22 bít địa chỉ (A0…A21).
Từ yêu cầu xây dựng cần số chip nhớ là 8.
Số bít địa chỉ để mã hóa số chip nhớ là 2 bít, Tổng số bít địa chỉ là 24
(A0…A23).
Bảng chân lý biểu diễn mã hóa các chip nhớ và tham chiếu bộ nhớ.
A24A23 A24⊕A23 A24⊕ A 23 A 24 ⊕A23 A 24 ⊕ A 23
00 0 1 1 1
01 1 0 1 1
10 1 1 0 1
11 1 1 1 0

Mạch giải mã 2-4

Mạch mở rộng 4MB x8 bit từ chip nhớ 4MB x4bit

122
Sơ đồ nguyên lý module bộ nhớ mở rộng:

6.2.4 Địa chỉ vật lý và phương pháp tổ chức địa chỉ bộ nhớ
A. Tổ chức bộ nhớ đan xen (interleaved memory)
Độ rộng của bus dữ liệu để trao đổi với bộ nhớ là m=8, 16, 32, 64, 128, …
bit. Các ngăn nhớ được tổ chức theo byte dẫn tới tổ chức bộ nhớ vật lý khác
nhau.
m=8 được tổ chức một băng nhớ tuyến tính.

123
m=16 được tổ chức thanh hai băng nhớ đan xen

m=32 được tổ chức thanh bốn băng nhớ đan xen

124
m=64 được tổ chức thanh tám băng nhớ đan xen

B. Một số cơ chế quản lý bộ nhớ:


a. Mô hình quản lý bộ nhớ phân vùng cố định (Fixed Partitioning)
Bộ nhớ chính được chia thành 2 phần cố định:
− Phần nằm ở vùng địa chỉ thấp dùng để chứa chính hệ điều hành.
− Phần còn lại, tạm gọi là phần user program, là sẵn sàng cho việc sử dụng
của các tiến trình khi các tiến trình được nạp vào bộ nhớ chính.
Trong các hệ thống đơn chương, phần user program cấp cho một chương
trình duy nhất => nhiệm vụ quản lý bộ nhớ của hệ điều hành trong trường hợp
này chỉ kiểm soát sự truy xuất bộ nhớ của chương trình người sử dụng, không
cho nó truy xuất lên vùng nhớ của hệ điều hành.
Trong các hệ thống đa chương, phần user program lại được phân ra thành
nhiều phân vùng (partition) với các vùng cố định có kích thước bằng nhau hay
không bằng nhau.
Trong trường hợp này một tiến trình có thể được nạp vào bất kỳ partition
nào nếu kích thước của nó nhỏ hơn hoặc bằng kích thước của partition và
partition này còn trống.
Khi có tiến trình cần được nạp vào bộ nhớ nhưng tất cả các partition đều
đã chứa các tiến trình khác thì hệ điều hành có thể chuyển một tiến trình hợp lệ
(kích thước vừa đủ, không đang ở trạng thái ready hoặc running, không có quan

125
hệ với các tiến trình running khác, ...), ra ngoài (swap out), để lấy partition trống
đó nạp tiến trình vừa có yêu cầu.
Đây là nhiệm vụ phức tạp của hệ điều hành, hệ điều hành phải chi phí cao
cho công việc này.
Có hai trở ngại trong việc sử dụng các phân vùng cố định với kích thước
bằng nhau:
− Thứ nhất: Khi kích thước của chương trình là quá lớn so với kích thước của
một partition -> phải thiết kế chương trình theo cấu trúc overlay; Cấu trúc
chương trình overlay tiết kiệm được bộ nhớ nhưng yêu cầu cao ở người lập
trình.
− Thứ hai: Khi kích thước của một chương trình nhỏ hơn kích thước của một
partition hoặc lớn hơn kích thước của một partition nhưng không phải là
bội số của kích thước một partition thì dễ xảy ra hiện tượng phân mảnh bên
trong (internal fragmentation) bộ nhớ, gây lãng phí bộ nhớ; Ví dụ, nếu có 3
không gian trống kích thước 30K nằm rãi rác trên bộ nhớ, thì cũng sẽ
không nạp được một modun chương trình có kích thước 12K, hiện tượng
này được gọi là hiện tượng phân mảnh bên trong.
Phân vùng cố định với kích thước partition không bằng nhau:
Có hai cách để lựa chọn khi đưa một tiến trình vào partition:
− Mỗi phân vùng có một hàng đợi tương ứng: Khi cần được nạp vào bộ nhớ
nó sẽ được đưa đến hàng đợi của phân vùng có kích thước vừa đủ để chứa
nó, để vào/để đợi được vào phân vùng; Tuy nhiên các tiếp cận này kém linh
động vì có thể có một phân vùng đang trống, trong khi có nhiều tiến trình
đang phải đợi để được nạp vào các phân vùng khác, điều này gây lãng phí
trong việc sử dụng bộ nhớ.
− Dùng một hàng đợi chung cho tất cả các phân vùng: Các tiến trình muốn
được nạp vào phân vùng nhưng chưa được vào sẽ được đưa vào hàng đợi
chung này; Nếu có một phân vùng trống thì hệ thống sẽ xem xét để đưa
một tiến trình có kích thước vừa đủ vào phân vùng trống đó; Cách tiếp cận
này linh động hơn so với việc sử dụng nhiều hàng đợi như ở trên; Tuy
nhiên việc chọn tiến trình để đưa vào phân vùng là một việc làm khá phức
tạp vì nó phải dựa vào nhiều yếu tố như: độ ưu tiên, trạng thái hiện tại, các
mối quan hệ của tiến trình,…;

126
Hình 6.10 Mô hình phần vùng cố định

Cả hai loại này còn một số hạn chế sau đây:


− Số lượng các tiến trình có thể hoạt động trong hệ thống tại một thời điểm
phụ thuộc vào số lượng các phân vùng cố định trên bộ nhớ.
− Nếu kích thước của tiến trình nhỏ hơn kích thước của một phân vùng thì có
thể dẫn đến hiện tượng phân mảnh nội vi gây lãng phí trong việc sử dụng
bộ nhớ.
− Sự phân vùng cố định ít được sử dụng trong các hệ điều hành hiện nay.
b. Mô hình quản lý bộ nhớ phần vùng động (Dynamic Partitioning)
Số lượng các phân vùng trên bộ nhớ và kích thước của mỗi phân vùng là
có thể thay đổi.
Phần user program trên bộ nhớ không được phân chia trước mà nó chỉ
được ấn định sau khi đã có một tiến trình được nạp vào bộ nhớ chính.
Khi có một tiến trình được nạp vào bộ nhớ nó được hệ điều hành cấp cho
nó không gian vừa đủ để chứa tiến trình, phần còn lại để sẵn sàng cấp cho tiến
trình khác sau này.
Khi một tiến trình kết thúc nó được đưa ra ngoài và phần không gian bộ
nhớ mà tiến trình này trả lại cho hệ điều hành sẽ được hệ điều hành cấp cho tiến
trình khác, cả khi tiến trình này có kích thước nhỏ hơn kích thước của không
gian nhớ trống đó.

127
Hình 6.11 Mô hình phân vùng động

Trong kỹ thuật phân vùng động này hệ điều hành phải đưa ra các cơ chế
thích hợp để quản lý các khối nhớ đã cấp phát hay còn trống trên bộ nhớ.
Hệ điều hành sử dụng 2 cơ chế: Bản đồ bít và Danh sách liên kết.

Hình 6.12 Cơ chế phân vùng động

Trong cơ chế bản đồ bít: mỗi đơn vị cấp phát được đại diện bởi một bít
trong bản đồ bít. Đơn vị cấp phát còn trống được đại diện bằng bít 0, ngược lại

128
đơn vị cấp phát được đại diện bằng bít 1. Hình 6.21a là bản đồ bít của khối nhớ
ở trên.

a.
b.

Hình 6.13 Bản đồ bit của khối nhớ sử dụng cơ chế phần vùng động

Trong cơ chế danh sách liên kết:


− Mỗi block trên bộ nhớ được đại diện bởi một phần tử trong danh sách liên
kết, mỗi phần tử này gồm có 3 trường chính: trường thứ nhất cho biết khối
nhớ đã cấp phát (P: process) hay đang còn trống (H: Hole), trường thứ hai
cho biết thứ tự của đơn vị cấp phát đầu tiên trong block, trường thứ ba cho
biết block gồm bao nhiêu đơn vị cấp phát. Hình 6.21b là danh sách liên kết
của khối nhớ ở trên.
Khi có một tiến trình cần được nạp vào bộ nhớ mà trong bộ nhớ có nhiều
hơn một khối nhớ trống (Free Block) có kích thước lớn hơn kích thước của tiến
trình đó, thì hệ điều hành phải quyết định chọn một khối nhớ trống phù hợp nào
để nạp tiến trình sao cho việc lựa chọn này dẫn đến việc sử dụng bộ nhớ chính là
hiệu quả nhất.
Có 3 thuật toán mà hệ điều hành sử dụng trong trường hợp này, đó là:
Best-fit, First-fit, và Next-fit. Cả 3 thuật toán này đều phải chọn một khối nhớ
trống có kích thước bằng hoặc lớn hơn kích thước của tiến trình cần nạp vào,
nhưng nó có các điểm khác nhau cơ bản sau đây:
− Best-fit: chọn khối nhớ có kích thước vừa đúng bằng kích thước của tiến
trình cần được nạp vào bộ nhớ.
− First-fit: trong trường hợp này hệ điều hành sẽ bắt đầu quét qua các khối
nhớ trống bắt đầu từ khối nhớ trống đầu tiên trong bộ nhớ, và sẽ chọn khối
nhớ trống đầu tiên có kích thước đủ lớn để nạp tiến trình.
− Next-fit: tương tự như First-fit nhưng ở đây hệ điều hành bắt đầu quét từ
khối nhớ trống kế sau khối nhớ vừa được cấp phát và chọn khối nhớ trống
kế tiếp đủ lớn để nạp tiến trình.

129
Hình 6.14 Ví dụ về các thuật toán cấp phát bộ nhớ

Hình vẽ 6.14 cho thấy hiện tại trên bộ nhớ có các khối nhớ chưa đươc cấp
phát theo thứ tự là: 8k, 12k, 22k, 18k, 8k, 6k, 14k, 36k. Trong trường hợp này
nếu có một tiến trình có kích thước 16k cần được nạp vào bộ nhớ, thì hệ điều
hành sẽ nạp nó vào:
− Khối nhớ 22k nếu theo thuật toán First-fit.
− Khối nhớ 18k nếu theo thuật toán Best-fit.
− Khối nhớ 36k nếu theo thuật toán Next-fit.
− Như vậy nếu theo Best-fit thì sẽ xuất hiện một khối phân mảnh 2k, nếu theo
First-fit thì sẽ xuất hiện một khối phân mảnh 6k, nếu theo Next-fit thì sẽ
xuất hiện một khối phân mảnh 20k.
c. Mô hình quản lý bộ nhớ cơ chế phân trang (Paging)
Cơ chế phân trang cho phép không gian địa chỉ vật lý (physical address
space) của một process có thể không liên tục nhau.
Bộ nhớ vật lý được chia thành các khối cố định và có kích thước bằng
nhau gọi là frame.
− Thông thường kích thước của frame là lũy thừa của 2, từ khoảng 512 byte
đến 16MB.
Bộ nhớ luận lý (logical memory) hay không gian địa chỉ luận lý là tập mọi
địa chỉ luận lý mà một chương trình bất kỳ có thể sinh ra.
Bộ nhớ luận lý cũng được chia thành các khối cố định có cùng kích thước
gọi là trang nhớ (page).
Frame và trang nhớ có kích thước bằng nhau.
Hệ điều hành phải thiết lập một bảng phân trang (page table) để ánh xạ
địa chỉ luận lý thành địa chỉ vật lý:
− Mỗi process có một bảng phân trang, được quản lý bằng một con trỏ lưu
giữ trong PCB. Công việc thiết lập bảng phân trang cho process là một
phần của chuyển ngữ cảnh.

130
Cơ chế phân trang khiến bộ nhớ bị phân mảnh nội, tuy nhiên lại khắc
phục được phân mảnh ngoại.

Hình 6.15 Quản lý bộ nhớ theo cơ chế phân trang

d. Mô hình quản lý bộ nhớ cơ chế phân đoạn (Segmentation)


Dùng cơ chế phân đoạn để quản lý bộ nhớ có hỗ trợ user view:
− Không gian địa chỉ ảo là một tập các đoạn, mỗi đoạn có tên và kích thước
riêng.
− Một địa chỉ luận lý được định vị bằng tên đoạn và độ dời (offset) bên trong
đoạn đó (so sánh với phân trang!).

Hình 6.16 Mô hình quản lý bộ nhớ cơ chế phân đoạn

Địa chỉ luận lý là một cặp giá trị (segment number, offset)
Bảng phân đoạn (segment table): gồm nhiều mục, mỗi mục chứa

131
− base, chứa địa chỉ khởi đầu của segment trong bộ nhớ.
− limit, xác định kích thước của segment
Segment-table base register (STBR): trỏ đến vị trí bảng phân đoạn trong
bộ nhớ.
Segment-table length register (STLR): số lượng segment của chương trình
=> Một chỉ số segment s là hợp lệ nếu s < STLR

Hình 6.17 Ví dụ về mô hình quản lý bộ nhớ theo cơ chế phân đoạn

Hình 6.18 Phần cứng về mô hình quản lý bộ nhớ cơ chế phân đoạn

132
Hình 6.19 Ví dụ chuyển đổi địa chỉ trong cơ chế phân đoạn

Hình 6.20 Chia sẻ các đoạn con trong cơ chế phân đoạn

6.3 Bộ nhớ Cache (Bộ nhớ đệm)

6.3.1 Nguyên tắc


Cache memory được dùng có tốc độ nhớ gần bằng tốc độ của các bộ nhớ
nhanh nhất có sẵn, và tại cùng thời gian cung cấp một kích thước bộ nhớ rộng
với giá không đắt hơn các kiểu bộ nhớ bán dẫn.

133
Hình 6.21 Bộ nhớ cache và bộ nhớ chính

Đây là mối quan hệ giữa bộ nhớ chính lớn và chậm hơn với bộ nhớ cache
nhỏ nhưng nhanh hơn. Bộ nhớ cache sao chép một phần của bộ nhớ chính. Khi
CPU cố gắng đọc một từ nhớ của bộ nhớ, sự kiểm tra được làm để xác định rõ
nếu từ nhớ nằm trong cache. Trong trường hợp đó, từ nhớ được cung cấp cho
CPU. Nếu không khối nhớ của bộ nhớ chính, bao gồm một số từ nhớ cố định
được đọc vào trong cache và sau dó từ nhớ được cung cấp cho CPU. Bởi vì hiện
tượng tham vấn cục bộ, khi khối dữ liệu được đem về trong cache để thoả mãn
tín hiệu tham chiếu bộ nhớ, hầu như những tham chiếu tương lai sẽ là những từ
nhớ khác của khối nhớ.

Hình 6.22 Tổ chức cơ bản bộ nhớ chính và cache

Bộ nhớ chính bao gồm tới 2n từ nhớ có thể đánh địa chỉ, với mỗi từ nhớ
có một địa chỉ n bit duy nhất. Cho mục đích ánh xạ, bộ nhớ này coi như bao
gồm một số của độ dài những khối cố định của mỗi K từ nhớ. Tức là có M=2n/ k
khối nhớ. Cache bao gồm C khe của mỗi K từ nhớ, và số của các khe, hoặc các

134
hàng, nó coi như ít hơn số khối nhớ của bộ nhớ chính (C<< M). Tại bất kỳ thời
điểm nào, một vài tập con của khối của bộ nhớ lưu trú trong các khe của cache.
Nếu từ nhớ trong khối nhớ của bộ nhớ được đọc, khối nhớ đó được truyền vào 1
trong các khe của bộ nhớ cache. Bởi có nhiều khối nhớ hơn các khe, mộ khe
riêng biệt không thể độc nhất và thường xuyên dành cho một khối riêng biệt. Vì
vậy, mỗi khe bao gồm 1 nhãn để nhận dạng khối riêng biệt hiện đang được trữ.
Nhãn thường là một phần của địa chỉ bộ nhớ chính.
Hoạt động đọc của cache: khi CPU phát địa chỉ, RA của từ nhớ sẽ được
đọc. Nếu từ nhớ được chứa trong Cache,, nó sẽ được cung cấp cho CPU. Ngược
lại, khối nhớ chứa từ nhớ đó sẽ được tải vào trong bộ nhớ và từ nhớ đó sẽ được
cung cấp cho CPU.

6.3.2 Các phương pháp ánh xạ địa chỉ


Bộ nhớ chính có 2N byte nhớ dùng N bit địa chỉ để địa chỉ hóa cho bộ
nhớ.
Chia bộ nhớ chính thành các khối, mỗi khối có K=2N-1 byte. có M=2N/k
khối.
Chia Cache thành C đường, mỗi đường k byte nhớ: C<<M. Việc trao đổi
thông tin giữa bộ nhớ chính và cache theo đơn vị khối.
Vì có có ít đường cache hơn các khối nhớ của bộ nhớ chính, một thuật
toán là cần thiết cho việc ánh xạ khối nhớ của bộ nhớ chính vào các đường của
cache. Hơn nữa, có nghĩa là cần xác định khối bộ nhớ chính đang sử dụng cache
line. Việc lựa chọn hàm ánh xạ ra lệnh cho việc tổ chức cache như thế nào.
Có 3 kỹ thuật ánh xạ:
- Ánh xạ trực tiếp: Direct Mapping
- Ánh xạ liên kết hoàn toàn: Full Associative Mapping
- Ánh xạ liên kết tập hợp: Set Associative Mapping
a. Ánh xạ trực tiếp
Kỹ thuật đơn giản nhất được biết đến là ánh xạ trực tiếp. Ánh xạ mỗi khối
nhớ của bộ nhớ chính vào một đường cache có thể.
- Block 0-> line 0
- Block 1-> line 1
- Block C-> line 0
- Bock i -> line (i mod C)

135
Giả sử cache có 2n2 ngăn nhớ (đường), địa chỉ do CPU phát ra là n bit

n1 xác định số byte trong khối 2n1 ->byte


n-n1 bit còn lại: xác định khối nằm trong bộ nhớ chính.
n2 bít tiếp theo xác định đường trong cache
Còn lại là trường Tag
Mỗi 1 block được ghi vào cache thì cần 1 chỗ để ghi Tag (biết được
đường nào nằm trong cache)

Hình 6.23 Quá trình đọc cache ánh xạ trực tiếp

Bộ so sánh: thông dịch địa chỉ và so sánh nối vào.


Nhược điểm của phương pháp ánh xạ này là có một vị trí cố định của
cache cho bất cứ khối đã cho nào. Hơn nữa nếu xảy ra chương trình muốn tham
vấn lại từ nhớ từ 2 khối khác nhau được ánh xạ vào cùng một đường, khi đó các
khối sẽ tiếp tục được trao đổi trong cache, và tỉ lệ thành công sẽ giảm xuống.
b. Ánh xạ liên kết hoàn toàn
Ánh xạ liên kết sẽ khắc phục nhược điểm trên bằng cách cho phép mỗi
khối bộ nhớ chính được nạp vào trong bất kỳ đường nào của cache.

136
Hình 6.24 Ánh xạ liên kết hoàn toàn

Trong trường hợp này n bit chia ra 2 trường:

Khi CPU phát ra địa chỉ thì nó so sánh với tất cả các Tag được ghi trong
cache, nếu có 1 Tag nào trong cache trùng với Tag địa chỉ thì hit in cache.
c. Ánh xạ liên kết tập hợp (cache 2 đường)

Hình 6.25 Ánh xạ liên kết tập hợp

137
Chia cache thành các tập hợp, Mỗi tập hợp có m đường ánh xạ:
- Block 0 -> set 0
- ...
- Block i -> Set (i mod S)
Địa chỉ

Ví dụ : Cho bộ nhớ chính 4 GB, kích thước cache 16 kB, kích thước khối
32 byte. Xác định địa chỉ do CPU phát ra theo 3 phương pháp ánh xạ
Bộ nhớ chính có dung lượng 4GB = 232B -> Số bit địa chỉ do CPU phát ra
là n=32
1 khối (block) có kích thước là 32B = 25B -> n1=5
* Xét trong trường hợp ánh xạ trực tiếp
=>Số đường trong cache:

=> Tag = 32 – 9 – 5 = 18 bit


* Với liên kết hoàn toàn Tag = 32 – 5 = 27 bit
* Với liên kết tập hợp (2 đường)
Số đường trong cache:

=> Tag = 32 – 8 – 5 = 19 bit

6.3.3 Các thuật toán thay thế


Như đã trình bày ở trên, trong trường hợp thất bại cache hay không tìm
thấy khối nhớ trong cache thì một vấn đề đặt ra là khối nào phải được thay thế?

138
Khi có thất bị cache, bộ điều khiển cache thâm nhập vào bộ nhớ trong và chuyển
khối mà bộ vi xử lý cần đọc (ghi) vào cache. Như vậy, trong trường hợp các
khối nhớ trong cache đều không trống thì khối nào trong cache sẽ bị thay thế, vị
trí đặt khối không có sự lựa chọn, nó được xác định bởi trường chỉ số khối cache
trong địa chỉ của từ cần đọc (ghi). Nếu cache là kiểu liên kết hoằn toàn hay liên
kết tập hợp thì khi thất bại phải chọn lựa thay thế trong nhiều khối. Có bốn chiến
thuật chủ yếu dùng để chọn khối thay thế trong cache:
− Thay thế ngẫu nhiên (RS: Random Selection): để phân bố đồng đều việc
thay thế, các khối cần thay thế trong cache được chọn ngẫu nhiê.
− Khối xưa nhất (LRU: Least Recently Used): Các khối đã được thâm nhập
sẽ được đánh dấu và khối bị thay thế là khối không được dùng từ lâu nhất.
− Vào trước ra trước (FIFO: First In First Out): Khối được đưa vào cache đầu
tiên, nếu bị thay thế, khối đó sẽ được thay thế trước nhất.
− Tần số sử dụng ít nhất (LFU: Least Frequently Used): Khối trong cache
được tham chiếu đến ít nhất. Nguyên tắc này sử dụng hệ quả của nguyên
tắc sử dụng o nhớ theo thời gian: nếu các khối mới được dùng có khả năng
sẽ được dùng trong tương lai gần, khối thay thế là khối không dùng trong
thời gian lâu nhất.

6.3.4 Các thao tác với bộ nhớ Cache


Thông thường bộ vi xử lý thâm nhập cache để đọc thông tin. Chỉ có
khoảng 15% các thâm nhập vào cache là để thực hiện thao tác ghi (con số này là
33% với các tính toán vectơ-vectơ và 55% đối với các phép dịch chuyển ma
trận). Như vậy, để tối ưu hóa các hoạt động của cache, các nhà thiết kế tìm cách
tối ưu hóa việc đọc bởi vì các bộ vi xử lý phải đợi đến khi việc đọc hoàn thành
nhưng sẽ không đợi đến khi việc ghi hoàn tất. Hơn nữa, một khối có thể được
đọc, so sánh và như thế việc dọc một khối có thẻ được bắt đầu khi chỉ số khối
được biết. Nếu thao tác đọc thành công, dữ liệu ô nhớ cần đọc sẽ được giao ngay
cho bộ xử lý. Cần chú ý rằng, khi một khối được ánh xạ từ bộ nhớ trong vào
cache, việc đọc nội dung của khối cache không àm thay đổi nội dung của khối
so với khối còn nằm trong bộ nhớ trong.
Đối với việc ghi vào bộ nhớ thì không giống như trên, việc thay đổi nội
dung của một khối không thể bắt đầu trước khi nhãn được xem xét để biết có
thành công hay thất bại. Thao tác ghi vào bộ nhớ sẽ tốn nhiều thời gian hơn thao
tác đọc bộ nhớ. Trong việc ghi bộ nhớ còn có một khó khăn khác là bộ xử lý cho

139
biết số byte cần phải ghi, thường là từ 1 đến 8 byte. Để đảm bảo đồng nhất dữ
liệu khi lưu trữ, có hai cách chính để ghi vào cache:
− Ghi đồng thời (write-through): Thông tin được ghi đồng thời vào khối của
cache và khối của bộ nhớ trong. Cách ghi này làm chậm tốc độ chung của
hệ thống. Các thiết bị ngoại vi có thể truy cập bộ nhớ trực tiếp.
− Ghi lại (Write –back): Để đảm bảo tốc độ xử lý của hệ thống , thông tin cần
ghi chỉ được ghi vào khối trong cache. Việc ghi vào bộ nhớ trong sẽ bị
hoãn lại cho đến khi cần có thay thế khối. Để quản lý sự khác biệt nội dung
giữa khối của cache và khối của bộ nhớ trong, một bit trạng thái (Dirty bit
hay Update bit) được dùng để chỉ thị. Khi một thao tác ghi vào trong cache,
bit trạng thái (Dirty bit hay Update bit) của khối cache sẽ được thiết lập.
Với cách ghi này, các thiết bị ngoại vi liên hệ đến bộ nhớ trong thông qua
cache. Cách làm này tăng tốc độ của hệ thống lên rất nhiều tuy nhiên việc
đồng nhất dữ liệu giữa cache và bộ nhớ trong chỉ được đảm bảo vào thời
gian thay thế khối.
Khi có một thất bại ghi vào cache (cache miss) thì phải lựa chọn một
trong hai giải pháp sau:
− Ghi có nạp (write-allocate): Khối cần ghi từ bộ nhớ trong được nào vào
trong cache như mô tả ở trên. Cách này thường được dùng trong cách ghi
lại.
− Ghi không nạp (write-no-allocate): Khối được thay đổi ở bộ nhớ trong
không được đưa vào cache. Cách này được dùng trong cách ghi đồng thời.
Trong các tổ chức có nhiều hơn một bộ xử lý với các tổ chức cache và bộ
nhớ chia sẻ, các vấn đề liên quan đến tính đồng nhất của dữ liệu cần được đảm
bảo. Sự thay đổi dữ liệu trên một cache riêng lẻ sẽ làm cho dữ liệu trên các hệ
thống cache và bộ nhớ liên quan không đồng nhất. Vấn đề trên có thể được giải
quyết bằng một trong các hệ thống cache tổ chức như sau:
− Mỗi bộ điều khiển cache sẽ theo dõi các thao tác ghi vào bộ nhớ từ các bộ
phận khác. Nếu thao tác ghi vào phần bộ nhớ chia sẻ được ánh xạ vào
cache của nó quản lý, bộ điều khiển cache sẽ vô hiệu hóa sự thâm nhập
này. Chiến lược này phụ thuộc vào cách ghi đồng thời trên tất cả các bộ
điều khiển cache.
− Một vi mạch được dùng để điều khiển việc cập nhật, một thao tác ghi vào
bộ nhớ từ một cache nào đó sẽ được cập nhật trên các cache khác.

140
− Một vùng nhớ chia sẻ cho một hay nhiều bộ vi xử lý thì không được ánh xạ
lên cache. Như vậy, tất cả các thâm nhập vào vùng nhớ chia sẻ này đều bị
thất bại cache.

6.3.5 Các mức Cache


Việc dùng cache trong có thể làm cho sự cách biệt giữa kích thước và thời
gian thâm nhập giữa cache trong và bộ nhớ trong càng lớn. Người ta đưa vào
nhiều mức cache:
• Cache mức một (L1 cache): thường là cache trong (on-chip cache; nằm
bên trong CPU)
• Cache mức hai (L2 cache) thường là cache ngoài (off-chip cache; cache
này nằm bên ngoài CPU).
• Ngoài ra, trong một số hệ thống (PowerPC G4, IBM S/390 G4, Itanium
của Intel) còn có tổ chức cache mức ba (L3 cache), đây là mức cache trung gian
giữa cache L2 và một thẻ bộ nhớ.

Bảng 6.1 Kích thước cache của một số hệ thống

6.4 Bộ nhớ ảo

6.4.1 Khái niệm


Bộ nhớ ảo xác định một cơ chế vận chuyển tự động số liệu giữa bộ nhớ
trong và bộ nhớ ngoài (đĩa từ).
Trước đây, khi độ dài của chương trình vượt quá giới hạn dung lượng bộ
nhớ thì người lập trình phải phân chia chương trình của mình thành từng phần tự
loại bỏ nhau (overlays) và phải tự quản lý việc trao đổi thông tin giữa bộ nhớ và

141
đĩa từ. Bộ nhớ ảo làm nhẹ trách nhiệm của các nhà lập trình bằng cách làm cho
việc trao đổi thông tin này được thực hiện một cách tự động.

6.4.2 Địa chỉ ảo và phương pháp tổ chức bộ nhớ ảo


Trong các bộ xử lý hiện đại, bộ nhớ ảo được dùng để cho phép thực hiện
cùng lúc nhiều tiến trình (process), mỗi tiến trình có một không gian định vị
riêng. Nếu tất cả các không gian định vị này đều thuộc không gian định vị bộ
nhớ trong thì rất tốn kém. Bộ nhớ ảo bao gồm bộ nhớ trong và bộ nhớ ngoài
được phân tích thành khối để có thể cung cấp cho mỗi chương trình một số khối
cần thiết cho việc thực hiện chương trình đó. Hình 6.19 cho thấy một chương
trình chứa trong bộ nhớ ảo gồm 4 khối, 3 trong 4 khối nằm ở bộ nhớ trong, khối
thứ tư nằm trên đĩa.

Hình 6.26 Mô hình sử dụng bộ nhớ ảo

Ngoài việc phân chia không gian bộ nhớ, cần bảo vệ và quản lý tự động
các cấp bộ nhớ, bộ nhớ ảo đơn giản hoá việc nạp chương trình vào bộ nhớ để thi
hành nhờ một cơ chế được gọi là sự tái định địa chỉ (address relocation). Cơ chế
này cho phép một chương trình có thể được thi hành khi nó nằm ở bất cứ vị trí
nào trong bộ nhớ.

142
Bảng 6.2 Đại lượng điển hình cho bộ nhớ cache và bộ nhớ ảo

Ngoài sự khác biệt định lượng mà ta thấy trong hình 6.21, có những khác
biệt khác giữa bộ nhớ cache và bộ nhớ ảo là:
− Khi thất bại cache, sự thay thế một khối trong cache được điều khiển bằng
phần cứng, trong khi sự thay thế trong bộ nhớ ảo là chủ yếu do hệ điều
hành.
− Không gian định vị mà bộ xử lý quản lý là không gian định vị của bộ nhớ
ảo, trong lúc đó thì dung lượng bộ nhớ cache không tuỳ thuộc vào không
gian định vị bộ xử lý.
− Bộ nhớ ngoài còn được dùng để lưu trữ tập tin ngoài nhiệm vụ là hậu
phương của bộ nhớ trong (trong các cấp bộ nhớ).
Bộ nhớ ảo cũng được thiết kế bằng nhiều kỹ thuật đặc thù cho chính nó.
Các hệ thống bộ nhớ ảo có thể được chia thành 2 loại: loại với khối có
dung lượng cố định gọi là trang, và loại với khối có chiều dài thay đổi gọi là
đoạn. Định vị trang xác định một địa chỉ trong trang, giống như định vị trong
cache. Trong định vị đoạn cần 2 từ: một từ chứa số thứ tự đoạn và một từ chứa
độ dời trong đoạn. Chương trình dịch gặp khó khăn nhiều hơn trong định vị
đoạn.
Do việc thay thế các đoạn, ngày nay ít máy tính dùng định vị đoạn thuần
tuý. Một vài máy dùng cách hỗn hợp gọi là đoạn trang. Trong đó mỗi đoạn chứa
một số nguyên các trang. Bây giờ chúng ta trả lời 4 câu hỏi đặt ra trong các cấp
bộ nhớ cho bộ nhớ ảo.
Câu hỏi 1: Một khối được đặt tại đâu trong bộ nhớ trong?
Việc trừng phạt bộ nhớ ảo khi có thất bại, tương ứng với việc phải thâm
nhập vào ổ đĩa. Việc thâm nhập này rất chậm nên người ta chọn phương án hoàn

143
toàn phối hợp trong đó các khối (trang) có thể nằm ở bất kỳ vị trí nào trong bộ
nhớ trong. Cách này cho tỉ lệ thất bại thấp.

Hình 6.27 Ánh xạ các trang ảo vào bộ nhớ vật lý

Câu hỏi 2: Làm thế nào để tìm một khối khi nó đang nằm trong bộ
nhớ trong?
Định vị trang và định vị đoạn đều dựa vào một cấu trúc dữ liệu trong đó
số thứ tự trang hoặc số thứ tự đoạn được có chỉ số. Cho định vị trang, dựa vào
bảng trang, địa chỉ trong bộ nhớ vật lý được xác lập cuối cùng là việc đặt kề
nhau số thứ của trang vật lý với địa chỉ trong trang (hình 6.21). Cho định vị
đoạn, dựa vào thông tin trên bảng đoạn, việc kiểm tra tính hợp lệ của địa chỉ
được tiến hành. Địa chỉ vật cuối cùng được xác lập bằng cách cộng địa chỉ đoạn
và địa chỉ trong đoạn (độ dời trong đoạn) (hình 6.22).

Hình 6.28 Minh họa sự ánh xạ địa chỉ giữa bộ nhớ ảo và bộ nhớ vật lý trong định vị trang

144
Hình 6.29 Ánh xạ địa chỉ giữa bộ nhớ ảo và bộ nhớ vật lý trong cách định vị đoạn

Câu hỏi 3: Khối nào phải được thay thế khi có thất bại trang?
Hầu hết các hệ điều hành đều cố gắng thay thế khối ít dùng gần đây nhất
(LRU: Least Recent Utilized) vì nghĩ rằng đây là khối ít cần nhất.
Câu hỏi 4: Việc gì xảy ra khi cần ghi số liệu?
Chiến thuật ghi luôn là một sự ghi lại nghĩa là thông tin chỉ được viết vào
trong khối của bộ nhớ trong. Khối có thay đổi thông tin, được chép vào đĩa từ
nếu khối này bị thay thế.

6.4.3 Bảo vệ các tiến trình bằng cách dùng bộ nhớ ảo


Sự xuất hiện của đa chương trình (multiprogram) trong đó máy tính chạy
nhiều chương trình song song với nhau, dẫn tới các đòi hỏi mới về việc bảo vệ
và phân chia giữa các chương trình.
Đa chương trình đưa đến khái niệm tiến trình (process): một tiến trình
gồm có một chương trình đang thực hiện và tất cả các thông tin cần thiết để tiếp
tục thực hiện chương trình này.
Trong đa chương trình, bộ xử lý và bộ nhớ trong được nhiều người sử
dụng chia sẻ một cách qua lại (interactive), cùng một thời điểm, để tạo cảm giác
rằng mỗi người dùng đang có một máy tính riêng. Và như thế, tại bất cứ lúc nào,
phải có thể chuyển đổi từ một tiến trình này sang một tiến trình khác.
Một tiến trình phải vận hành đúng đắn, dù nó được thi hành liên tục từ
đầu tới cuối, hay nó bị ngắt qua lại bởi các tiến trình khác. Trách nhiệm đảm bảo
các tiến trình đều chạy đúng, được chia sẻ giữa nhà thiết kế máy tính và nhà
thiết kế hệ điều hành. Nhà thiết kế máy tính phải đảm bảo bộ xử lý có thể lưu

145
giữ trạng thái các tiến trình và phục hồi các trạng thái này, còn nhà thiết kế hệ
điều hành phải đảm bảo các tiến trình không ảnh hưởng lên nhau. Hệ điều hành
giải quyết vấn đề này bằng cách chia bộ nhớ trong cho các tiến trình và trạng
thái của mỗi tiến trình này hiện diện trong phần bộ nhớ được chia cho nó. Điều
này có nghĩa rằng các nhà thiết kế hệ điều hành phải được sự giúp sức của các
nhà chế tạo máy tính để bảo vệ một tiến trình không bị ảnh hưởng bởi tiến trình
khác.
Nhà thiết kế máy tính có thêm 3 trách nhiệm trong việc giúp các nhà thiết
kế hệ điều hành bảo vệ các tiến trình là:
1. Cung cấp hai chế độ vận hành cho biết tiến trình đang thực hiện là tiến
trình của người sử dụng hay tiến trình hệ thống (của người điều hành).
2. Cung cấp một tập hợp con trạng thái của bộ xử lý mà tiến trình người
sử dụng có thể dùng nhưng không thể sửa đổi.
3. Cung cấp các cơ chế để có thể chuyển đổi từ chế độ người dùng sang
chế độ người điều hành và ngược lại.
Chúng ta đã thấy, địa chỉ mà bộ xử lý đưa ra phải được biến đổi từ địa chỉ
ảo sang địa chỉ vật lý. Điều này giúp phần cứng đi xa nữa trong việc bảo vệ các
tiến trình. Cách đơn giản nhất làm việc này là cho phép tiến trình người sử dụng
tác động lên các bit cho phép thâm nhập vào mỗi trang hay mỗi đoạn. Khi bộ xử
lý phát ra tín hiệu đọc (hay viết) và tín hiệu người dùng (hay hệ thống) thì rất dễ
dàng phát hiện các việc thâm nhập trái phép bộ nhớ trước khi việc thâm nhập
này gây hư hại. Các tiến trình được bảo vệ và có bảng trang riêng cho mình trỏ
đến các trang tách rời nhau trong bộ nhớ.

6.5 Bộ nhớ ngoài (Thiết bị lưu trữ - Storage)

6.5.1 Đĩa từ
Dù rằng công nghệ mới không ngừng phát minh nhiều loại bộ phận lưu
trữ một lượng thông tin lớn nhưng đĩa từ vẫn giữ vị trí quan trọng từ năm 1965.
Đĩa từ có hai nhiệm vụ trong máy tính.
- Lưu trữ dài hạn các tập tin.
- Thiết lập một cấp bộ nhớ bên dưới bộ nhớ trong để làm bộ nhớ ảo lúc
chạy chương trình.
Do đĩa mềm dần được các thiết bị lưu trữ khác có các tính năng ưu việt
hơn nên chúng ta không xét đến thiết bị này trong chương trình mà chỉ nói đến

146
đĩa cứng. Trong tài liệu này mô tả một cách khái quát cấu tạo, cách vận hành
cũng như đề cập đến các tính chất quan trọng của đĩa cứng.
Một đĩa cứng chứa nhiều lớp đĩa (từ 1 đến 4) quay quanh một trục khoảng
3.600-15.000 vòng mỗi phút. Các lớp đĩa này được làm bằng kim loại với hai
mặt được phủ một chất từ tính (hình 6.23). Đường kính của đĩa thay đổi từ 1,3
inch đến 8 inch. Mỗi mặt của một lớp đĩa được chia thành nhiều đường tròn
đồng trục gọi là rãnh. Thông thường mỗi mặt của một lớp đĩa có từ 10.000 đến
gần 30.000 rãnh. Mỗi rãnh được chia thành nhiều cung (sector) dùng chứa thông
tin. Một rãnh có thể chứa từ 64 đến 800 cung. Cung là đơn vị nhỏ nhất mà máy
tính có thể đọc hoặc viết (thông thường khoảng 512 bytes). Chuỗi thông tin ghi
trên mỗi cung gồm có: số thứ tự của cung, một khoảng trống, số liệu của cung
đó bao gồm cả các mã sửa lỗi, một khoảng trống, số thứ tự của cung tiếp theo.
Với kỹ thuật ghi mật độ không đều, tất cả các rãnh đều có cùng một số
cung, điều này làm cho các cung dài hơn ở các rãnh xa trục quay có mật độ ghi
thông tin thấp hơn mật độ ghi trên các cung nằm gần trục quay.

Hình 6.30 Cấu tạo của một đĩa cứng

Hình 6.31 Cấu tạo bên trong và bên ngoài ổ đĩa cứng

147
Với công nghệ ghi với mật độ đều, người ta cho ghi nhiều thông tin hơn ở
các rãnh xa trục quay. Công nghệ ghi này ngày càng được dùng nhiều với sự ra
đời của các chuẩn giao diện thông minh như chuẩn SCSI.

Hình 6.32 Mật độ ghi dữ liệu trên các loại đĩa cứng

Để đọc hoặc ghi thông tin vào một cung, ta dùng một đầu đọc ghi di động
áp vào mỗi mặt của mỗi lớp đĩa. Các đầu đọc/ghi này được gắn chặt vào một
thanh làm cho chúng cùng di chuyển trên một đường bán kính của mỗi lớp đĩa
và như thế tất cả các đầu này đều ở trên những rãnh có cùng bán kính của các
lớp đĩa. Từ “trụ“ (cylinder) được dùng để gọi tất cả các rãnh của các lớp đĩa có
cùng bán kính và nằm trên một hình trụ.
Người ta luôn muốn đọc nhanh đĩa từ nên thông thường ổ đĩa đọc nhiều
hơn số dữ liệu cần đọc; người ta nói đây là cách đọc trước. Để quản lý các phức
tạp khi kết nối (hoặc ngưng kết nối) lúc đọc (hoặc ghi) thông tin, và việc đọc
trước, ổ đĩa cần có bộ điều khiển đĩa.
Công nghiệp chế tạo đĩa từ tập trung vào việc nâng cao dung lượng của
đĩa mà đơn vị đo lường là mật độ trên một đơn vị bề mặt.

148
Bảng 6.3 Thông số kỹ thuật của đĩa cứng

6.5.2 Đĩa quang


Các thiết bị lưu trữ quang rất thích hợp cho việc phát hành các sản phẩm
văn hoá, sao lưu dữ liệu trên các hệ thống máy tính hiện nay. Ra đời vào năm
1978, đây là sản phẩm của sự hợp tác nghiên cứu giữa hai công ty Sony và
Philips trong công nghiệp giải trí. Từ năm 1980 đến nay, công nghiệp đĩa quang
phát triển mạnh trong cả hai lĩnh vực giải trí và lưu trữ dữ liệu máy tính. Quá
trình đọc thông tin dựa trên sự phản chiếu của các tia laser năng lượng thấp từ
lớp lưu trữ dữ liệu. Bộ phận tiếp nhận ánh sáng sẽ nhận biết được những điểm
mà tại đó tia laser bị phản xạ mạnh hay biến mất do các vết khắc (pit) trên bề
mặt đĩa. Các tia phản xạ mạnh chỉ ra rằng tại điểm đó không có lỗ khắc và điểm
này được gọi là điểm nền (land). Bộ nhận ánh sáng trong ổ đĩa thu nhận các tia
phản xạ và khuếch tán được khúc xạ từ bề mặt đĩa. Khi các nguồn sáng được thu
nhận, bộ vi xử lý sẽ dịch các mẫu sáng thành các bit dữ liệu hay âm thanh. Các
lỗ trên CD sâu 0,12 micron và rộng 0,6 micron (1 micron bằng một phần ngàn
mm). Các lỗ này được khắc theo một track hình xoắn ốc với khoảng cách 1,6
micron giữa các vòng, khoảng 16.000 track/inch. Các lỗ (pit) và nền (land) kéo
dài khoản 0,9 đến 3,3 micron. Track bắt đầu từ phía trong và kết thúc ở phía
ngoài theo một đường khép kín các rìa đĩa 5mm. Dữ liệu lưu trên CD thành từng
khối, mỗi khối chứa 2.352 byte. Trong đó, 304 byte chứa các thông tin về bit
149
đồng bộ, bit nhận dạng (ID), mã sửa lỗi (ECC), mã phát hiện lỗi (EDC). Còn lại
2.048 byte chứa dữ liệu. Tốc độ đọc chuẩn của CD-ROM là 75 khối/s hay
153.600 byte/s hay 150KB/s (1X).
Dưới đây là một số loại đĩa quang thông dụng.
CD (Compact Disk): Đĩa quang không thể xoá được, dùng trong công
nghiệp giải trí (các đĩa âm thanh được số hoá). Chuẩn đĩa có đường kính 12 cm,
âm thanh phát từ đĩa khoảng 60 phút (không dừng).
CD-ROM (Compact Disk Read Only Memory): Đĩa không xoá dùng để
chứa các dữ liệu máy tính. Chuẩn đĩa có đường kính 12 cm, lưu trữ dữ liệu hơn
650 MB. Khi phát hành, đĩa CD-ROM đã có chứa nội dung. Thông thường, dĩa
CD-ROM được dùng để chứa các phần mềm và các chương trình điều khiển
thiết bị.
CD-R (CD-Recordable): Giống như đĩa CD, đĩa mới chưa có thông tin,
người dùng có thể ghi dữ liệu lên đĩa một lần và đọc được nhiều lần. Dữ liệu
trên đĩa CD-R không thể bị xoá.
CD-RW (CD-Rewritable): Giống như đĩa CD, đĩa mới chưa có thông tin,
người dùng có thể ghi dữ liệu lên đĩa, xoá và ghi lại dữ liệu trên đĩa nhiều lần.
DVD (Digital Video Disk - Digital Versatile Disk): Ra đời phục vụ cho
công nghiệp giải trí, đĩa chứa các hình ảnh video được số hoá. Ngày nay, DVD
được sử dụng rộng rãi trong các ứng dụng công nghệ thông tin. Kích thước đĩa
có hai loại: 8cm và 12 cm. Đĩa DVD có thể chứa dữ liệu trên cả hai mặt đĩa,
dung lượng tối đa lên đến 17GB. Các thông số kỹ thuật của đĩa DVD-ROM (loại
đĩa chỉ đọc) so với CD-ROM. Tốc độ đọc chuẩn (1X) của DVD là 1.3MB/s (1X
của DVD tương đương khoảng 9X của CDROM).
DVD-R (DVD-Recordable): Giống như đĩa DVD-ROM, người dùng có
thể ghi dữ liệu lên đĩa một lần và đọc được nhiều lần. Đĩa này chỉ có thể ghi
được trên một mặt đĩa, dung lượng ghi trên mỗi mặt tối đa là 4.7 GB.
DVD-RW (DVD-Rewritable): Giống như đĩa DVD-ROM, người dùng có
thể ghi, xoá và ghi lại dữ liệu lên đĩa nhiều lần.. Đĩa này cũng có thể ghi được
trên một mặt đĩa, dung lượng ghi trên mỗi mặt tối đa là 4.7 GB.

150
Bảng 6.4 So sánh một số thông số của hai loại đĩa CDROM và DVDROM

Với các đặc tính của đĩa quang, giá thành ngày càng thấp, được xem như
một phương tiện thích hợp để phân phối các phần mềm cho máy vi tính. Ngoài
ra, đĩa quang còn được dùng để lưu trữ lâu dài các dữ liệu thay thế cho băng từ.

6.5.3 Thẻ nhớ


Hiện nay, thẻ nhớ là một trong những công nghệ mới nhất được dùng làm
thiết bị lưu trữ. Thẻ nhớ flash là một dạng bộ nhớ bán dẫn EEPROM(công nghệ
dùng để chế tạo các chip BIOS trên các vỉ mạch chính), được cấu tạo bởi các
hàng và các cột. Mỗi vị trí giao nhau là một ô nhớ gồm có hai transistor, hai
transistor này cách nhau bởi một lớp ô-xít mỏng. Một transistor được gọi là
floating gate và transistor còn lại được gọi là control gate. Floating gate chỉ có
thể nối kết với hàng (word line) thông qua control gate. Khi đường kết nối được
thiết lập, bit có giá trị 1. Để chuyển sang giá trị 0 theo một qui trình có tên
Fowler-Nordheim tunneling. Tốc độ, yêu cầu về dòng điện cung cấp thấp và đặc
biệt với kích thước nhỏ gọn của các loại thẻ nhớ làm cho kiểu bộ nhớ này được
dùng rộng rãi trong công nghệ lưu trữ và giải trí hiện nay.

Hình 6.33 Minh họa hai trạng thái của một bit nhớ trong thẻ nhớ

6.5.4 Đĩa mềm

151
Cùng với sự xuất hiện của máy tính cá nhân thì một vấn đề na giải cũng
xuất hiện. Đó là làm thế nào để phổ biến những chương trình ứng dụng đến
người dùng? Để giải quyết vấn đề này, đầu tiên con người đã phát minh ra đĩa
mềm (floppy disk) (hình 6.26).

Hình 6.34 Ổ đĩa mềm, đĩa mềm

Hãng IBM đã nghĩ ra công nghệ này đầu tiên, ổ đĩa mềm bao gồm phần
cơ khí và phần điện tử điều khiển tự động cũng như bộ phận đọc/ghi và giải mã.
Ổ đĩa phải đảm bảo độ quay chính xác (300 hoặc 360 vòng/phút với sai số 1 đến
2%). Khả năng định vị của đầu từ cũng rất chính xác đến vài micromet chỉ trong
thời gian vài mili giây rất ngắn. Đĩa mềm có các tính chất chung rất giống với
HDD (Hard Disk Drive). Điểm khác biệt là đầu từ của HDD di chuyển trên bề
mặt đĩa nhờ một đệm không khí, trong khi trên đĩa mềm thì đầu từ trực tiếp trượt
trên bề mặt đĩa. Kết quả là cả đầu từ và đĩa bị ma sát làm cho nhanh bị hỏng.
Chính vì thế nên khi không có đòi hỏi đọc/ghi len đĩa thì đầu từ được cất đi và
đĩa dừng lại không quay như trong HDD. Điều này làm ảnh hưởng lớn đến tốc
độ của đĩa vì phải mất một khoảng thời gian để kích hoạt đĩa quay trở lại khi cần
thiết.
Có hai loại đĩa mềm: 5,25 ich và 3,5 inch. Cả hai đều có thể tích hợp mật
độ ghi thấp (Low Density – LD), hoặc cao (High Density – HD). Những thông
số chính của bốn loại đĩa mềm đưa ra trong bảng sau (bảng 6…).

Bảng 6.5 Các đặc tính của đĩa mềm

152
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 6
6.1. Sự khác nhau giữa SRAM và DRAM? Trong máy tính chúng được
dùng ở đâu?
6.2. Mục tiêu của các cấp bộ nhớ?
6.3. Nêu hai nguyên tắc mà cache dựa vào đó để vận hành.
6.4. Cho một bộ nhớ cache tương ứng trực tiếp có 8 khối, mỗi khối có 16
byte. Bộ nhớ trong có 64 khối. Giả sử lúc khởi động máy, 8 khối đầu tiên của bộ
nhớ trong được đưa lên cache.
a. Viết bảng nhãn của các khối hiện đang nằm trong cache
b. CPU lần lượt đưa các địa chỉ sau đây để đọc số liệu: O4AH, 27CH,
3F5H. Nếu thất bại thì cập nhật bãng nhãn.
c. CPU dùng cách ghi lại. Khi thất bại cache, CPU dùng cách ghi có nạp.
Mô tả công việc của bộ quản lý cache khi CPU đưa ra các từ sau đây để ghi vào
bộ nhớ trong: 0C3H, 05AH, 1C5H.
6.5. Các nguyên nhân chính gây thất bại cache?
6.6. Các giải pháp đảm bảo tính đồng nhất dữ liệu trong hệ thống bộ đa xử
lý có bộ nhớ chia sẻ dùng chung?
6.7. Các cách nới rộng dãy thông của bộ nhớ trong?
6.8. Tại sao phải dùng bộ nhớ ảo?
6.9. Sự khác biệt giữa cache và bộ nhớ ảo?

153
CHƯƠNG 7. HỆ THỐNG VÀO RA

7.1 Tổng quan về hệ thống vào ra


Hệ thống vào ra: trao đổi thông tin giữa máy tính và thế giới bên ngoài,
bao gồm:
− Các module vào ra (mạch ghép nối vào ra): Ghép nối giữa CPU và bộ nhớ
với các thiết bị ngoại vi.
− Các thiết bị ngoại vi: mạch ghép nối vào ra tổ chức thành các cổng vào ra
sao cho mỗi cổng có một địa chỉ xác định.

7.1.1 Mô hình

Hình 7.1 Mô hình tổng quát của Module vào ra

Hình 7.2 Sơ đồ khối của Module vào ra

154
7.1.2 Thiết bị ngoại vi

Hình 7.3 Cấu trúc các thiết bị ngoại vi

Chức năng:
− Trao đổi thông tin người – máy
− Trao đổi thông tin máy – máy
Logic điều khiển:
− Nhận tín hiệu điều khiển của CPU
− Phát tín hiệu điều khiển thiết bị ngoại vi
− Phát tín hiệu trạng thái báo cho CPU biết trạng thái của thiết bị ngoại vi.
Đệm dữ liệu: chứa tạm thời dữ liệu trao đổi giữa thiết bị ngoại vi và
Modul vào ra.
Chuyển đổi tín hiệu: chuyển tín hiệu ở dạng phi điện năng thành tín hiệu
điện năng.

7.1.3 Quá trình vào/ra dữ liệu

Hình 7.4 Mô hình Module vào ra

Chức năng:
- Điều khiển và định thời gian cho quá trình trao đổi
- Trao đổi thông tin với CPU

155
- Trao đổi thông tin với TBNV
- Đệm dữ liệu
- Phát hiện lỗi
Cấu trúc: (Hình 7.4)
Người lập trình có thể can thiệp vào nội dung của các cổng và thanh ghi
điều khiển trạng thái.
Nội dung thanh ghi trạng thái sẽ quyết định chế độ làm việc cho các cổng

7.2 Các phương pháp trao đổi dữ liệu

7.2.1 Địa chỉ hoá cổng vào ra


Địa chỉ hóa tách biệt (vào ra trực tiếp): không gian địa chỉ cổng độc lập
với không gian địa chỉ bộ nhớ.
Địa chỉ hóa theo bản đồ bộ nhớ: Không gian địa chỉ cổng vào ra nằm
trong không gian địa chỉ bộ nhớ.

7.2.2 Phương pháp vào ra bằng chương trình


Khi bộ vi xử lý chạy một chương trình và gặp một chỉ thị liên quan đến
vào ra, nó thực hiện chỉ thị đó bằng cách xuất ra một lệnh đến module vào ra
tương ứng. Với phương pháp vào ra bằng chương trình, module vào ra sẽ thực
hiện hành động đã yêu cầu sau đó thiết lập các bit tương ứng trong thanh ghi
trạng thái vào ra (Xem hình 7.3). Module vào ra sẽ không hành động nữa để
cảnh báo cho bộ vi xử lý. Đặc biệt, nó không làm gián đoạn bộ vi xử lý. Vì vậy,
trách nhiệm của bộ vi xử lý là kiểm tra định kỳ các trạng thái của module vào ra
cho đến khi hoạt động đó được hoàn tất.
Để giải thích kỹ thuật vào ra bằng chương trình, trước tiên chúng ta xem
xét tổng quan về các lệnh vào ra được xuất ra từ bộ vi xử lý đến module vào ra,
sau đó xem xét đến các chỉ thị vào ra được thực hiện bởi bộ vi xử lý.
Các lệnh vào ra:
Để thực hiện một chỉ thị liên quan đến vào ra, bộ vi xử lý xuất ra một địa
chỉ, chỉ rõ module vào ra cụ thể và thiết bị ngoại vi, và một lệnh vào ra. Có bốn
loại lệnh vào ra mà một module vào ra có thể nhận khi nó được giải quyết bằng
bộ vi xử lý:
− Lệnh điều khiển: Được sử dụng để kích hoạt một thiết bị ngoại vi và chỉ
cho nó biết làm gì. Ví dụ, một máy băng từ có thể được chỉ thị tua lại hoặc

156
chạy sang một bản ghi tiếp theo. Những lệnh này được thiết kế riêng cho
loại hình cụ thể của thiết bị ngoại vi tương ứng.
− Lệnh kiểm tra: Được sử dụng để kiểm tra các điều kiện trạng thái khác
nhau kết hợp với một module vào ra và các thiết bị ngoại vi của nó. Bộ vi
xử lý muốn biết thiết bị ngoại vi quan tâm đã được bật và sẵn sàng hay
chưa? Nó cũng sẽ muốn biết xem nếu hầu hết hoạt động vào ra gần đây đã
hoàn thành và xem có bất kỳ lỗi nào xuất hiện không.
− Lệnh đọc:
Để module vào ra nhận được một mục dữ liệu từ thiết bị ngoại vi và đưa
nó vào trong một bộ đệm nội bộ (được mô tả trong một thanh ghi dữ liệu hình
7…). Bộ vi xử lý sau đó có thể nhận được mục dữ liệu này bằng yêu cầu mà
module vào ra đưa nó lên bus dữ liệu.
− Lệnh ghi:
Để module vào ra đưa một mục dữ liệu (byte hoặc word) từ bus dữ liệu và
sau đó truyền mục dữ liệu đó đến thiết bị ngoại vi.

Hình 7.5 Ba kỹ thuật nhập vào một khối dữ liệu

Các chỉ thị vào ra


Với phương pháp vào ra bằng chương trình, có một sự tương ứng chặt chẽ
giữa các chỉ thị vào ra mà bộ vi xử lý nạp từ bộ nhớ và các lệnh vào ra mà bộ vi
xử lý xuất ra module vào ra để thực hiện các chỉ thị đó. Có nghĩa là, các chỉ thị

157
đó được tham chiếu dễ dàng đến các lệnh vào ra và thường có mối quan hệ 1-1.
Định dạng của lệnh phụ thuộc vào cách mà các thiết bị bên ngoài được gắn theo.
Thông thường có nhiều thiết bị ngoại vi được kết nối thông qua nhiều
module vào ra đến hệ thống. Mỗi thiết bị có một định danh hoặc địa chỉ duy
nhất. Khi bộ vi xử lý xuất ra một lệnh, lệnh đó chứa địa chỉ của thiết bị tương
ứng. Như vậy, mỗi module vào ra phải nhận dạng các dòng địa chỉ để xác định
xem có đúng là lệnh đó cho mình hay không.
Khi bộ vi xử lý, bộ nhớ chính, thiết bị vào ra sử dụng chung hệ thống bus
thì có hai chế độ: ánh xạ bộ nhớ và cô lập bộ nhớ. Với vào ra ánh xạ bộ nhớ, có
một không gian địa chỉ đơn để xác định các vị trí bộ nhớ và các thiết bị vào ra.
Bộ vi xử lý sẽ xử lý các thanh ghi trạng thái và các thanh ghi dữ liệu của các
module vào ra như những vị trí bộ nhớ và những người sử dụng các chỉ thị trên
cùng một máy để truy cập vào bộ nhớ và các thiết bị ngoại vi. Do đó, ví dụ với
10 dòng địa chỉ có tổng cộng 210 = 1024 vị trí bộ nhớ và các địa chỉ thiết bị
ngoại vi có thể được hỗ trợ.
Với vào ra ánh xạ bộ nhớ, một dòng đọc đơn và một dòng ghi đơn là cần
thiết trên bus. Ngoài ra, bus được trang bị với đọc, ghi bộ nhớ cộng với các dòng
lệnh vào ra. Ngày nay, dòng lệnh chỉ rõ địa chỉ tham chiếu đến vị trí bộ nhớ
hoặc thiết bị ngoại vi cụ thể. Dải địa chỉ đầy đủ có thể sẵn sàng cho cả bộ nhớ và
thiết bị ngoại vi. Với 10 dòng địa chỉ, hệ thống có thể hỗ trợ 1024 địa chỉ bộ nhớ
và 1024 địa chỉ thiết bị ngoại vi. Bởi vì không gian địa chỉ dành cho thiết bị
ngoại vi độc lập với bộ nhớ, điều này được gọi là độc lập thiết bị ngoại vi.
Hình 7.6 cho thấy sự tương phản của hai kỹ thuật vào ra theo chương
trình này. Hình 7.6 (a) cho biết giao diện một thiết vào như thế nào như bàn
phím có thể xuất hiện với người lập trình trong sử dụng thiết bị ngoại vi ánh xạ
bộ nhớ. Giả sử một địa chỉ 10 bit, với một bộ nhớ 512 bit (từ 0 – 511) và có thể
lên đến 512 địa chỉ thiết bị vào ra (từ 512 – 1023). Hai địa chỉ được dành riêng
cho đầu vào bàn phím từ một thiết bị đầu cuối đặc biệt. Địa chỉ 516 tham chiếu
đến thanh ghi dữ liệu và 517 tham chiếu đến thanh ghi trạng thái, cũng có chức
năng như một thanh ghi điều khiển để nhận các lệnh từ bộ vi xử lý. Chương
trình cho thấy sẽ đọc 1 byte dữ liệu từ bàn phím vào một thanh ghi tích lũy trong
bộ vi xử lý. Chú ý rằng bộ vi xử lý lặp cho đến khi byte dữ liệu sẵn sàng.
Với vào ra độc lập (hình 7.6 (b)), các cổng vào ra có thể truy cập chỉ bằng
các lệnh vào ra cụ thể, kích hoạt các dòng lệnh vào ra trên bus.
Đối với hầu hết các kiểu bộ vi xử lý có một tập lớn các chỉ thị khác nhau
trong tham chiếu bộ nhớ. Nếu vào ra độc lập được sử dụng, chỉ có một số ít chỉ
158
thị vào ra. Vì vậy, lợi ích của việc vào ra ánh xạ bộ nhớ đó là một mục lớn các
chỉ thị được sử dụng, cho phép lập trình hiệu quả hơn. Một bất tiện của vào ra
ánh xạ bộ nhớ là không gian địa chỉ bộ nhớ khả dụng được sử dụng hết. Cả vào
ra ánh xạ bộ nhớ và vào ra độc lập đang được sử dụng phổ biến ngày nay.

Hình 7.6 Ánh xạ bộ nhớ và độc lập thiết bị ngoại vi

7.2.3 Phương pháp vào ra bằng cách thăm dò


Vấn đề điều khiển vào/ra dữ liệu sẽ trở thành rất đơn giản nếu thiết bị
ngoại vi lúc nào cũng sẵn sàng chờ để làm việc với CPU. Ví dụ, bộ phận đo
nhiệt số (như là một thiết bị vào) lắp sẵn trong một hệ thống điều khiển lúc nào
cũng có thể cung cấp số đo về nhiệt độ của đối tượng cần điều chỉnh, còn một bộ
đèn LED 7 nét (như là một thiết bị ra) dùng để chỉ thị một giá trị nào đó của một
đại lượng vật lý nhất định trong hệ thống nói trên thì lúc nào cũng có thể biểu
hiện thông tin đó. Như vậy, khi CPU muốn có thông tin về nhiệt độ của hệ thống
thì nó chỉ việc đọc cổng phối ghép với bộ đo nhiệt độ, và nếu CPU muốn biểu
diễn thông tin vừa đọc được trên đèn LED thì nó chỉ việc đưa tín hiệu điều khiển
tới đó mà không phải kiểm tra xem các thiết bị này có đang sẵn sàng làm việc
hay không.
Tuy nhiên trong thực tế không phải lúc nào CPU cũng làm việc với các
đối tượng "liên tục sẵn sàng" như trên. Thông thường khi CPU muốn làm việc
vơi một đối tượng nào đó, trước tiên nó phải kiểm tra xem thiết bị đó có đang ở
trạng thái sẵn sàng làm việc hay không, nếu có thì nó mới thực hiện việc trao đổi
159
dữ liệu. Như vậy, nếu làm việc theo phương pháp thăm dò thì hệ thông thường
là CPU phải được dành riêng cho việc trao đổi dữ liệu vì nó phải liên tục kiểm
tra trạng thái sẵn sàng của thiết bị ngoại vi thông qua các tín hiệu móc nối
(Handshake Signal). Các tín hiệu này được lấy từ mạch phối ghép, do người
thiết kế tạo ra, để chương trình thăm dò hoạt động trên đó.
Ví dụ: Một cổng vào số 0 (Có địa chỉ 00) được dùng để đọc trạng thái sẵn
sàng của 2 thiết bị ngoại vi nói trên. Tín hiệu sẵn sàng của thiết bị ngoại vi số 1
(cổng vào 01) được đặt vào bit D0, tín hiệu sẵn sàng của thiết bị ngoại vi số 2
(cổng vào 02) được đặt vào bit D1. Các thiết bị này sẽ có giá trị 1 khi thiết bị
ngoại vi tương ứng ở trạng thái sẵn sàng làm việc với CPU và chúng sẽ được
đưa vào Bus dữ liệu khi CPU đọc nó bằng lệnh đọc cổng vào số 0.
Mô tả hoạt động của phần mạch vào dữ liệu.
Khi thiết bị vào số 1 có 1 Byte số liệu cần trao đổi, nó đưa ra xung STB
để cho phép mạch chốt 8 bit lấy Byte dữ liệu đồng thời kích cho mạch lật D
(mạch tạo tín hiệu sẵn sàng) làm việc. CPU sẽ thăm dò trạng thái sẵn sàng của
thiết bị vào số 1 qua bit D0 khi nó đọc cổng D0. Đến khi CPU đọc 1 Byte dữ
liệu vào thì nó đồng thời xoá luôn mạch tạo trạng thái sẵn sàng để chuẩn bị cho
lần làm việc tới với 1 Byte dữ liệu khác.

Hình 7.7 Vào ra thăm dò với 2 cổng

160
7.2.4 Vào ra bằng điều khiển ngắt
a. Ngắt và điều khiển ngắt
Trong cách tổ chức trao đổi dữ liệu thông qua việc thăm dò trạng thái sẵn
sàng của thiết bị ngoại vi, trước khi tiến hành bất kỳ một cuộc trao đổi dữ liệu
nào CPU phải để toàn bộ thời gian vào việc xác định trạng thái sẵn sàng làm
việc của thiết bị ngoại vi. Trong hệ thống vi xử lý với cách làm việc như vậy,
thông thường CPU được thiết kế chủ yếu chỉ là để phục vụ cho việc vào ra dữ
liệu và thực hiện các xử lý liên quan. Trong thực tế CPU luôn có nhu cầu từ
người dùng là tận dụng khả năng làm việc của CPU để làm thêm nhiều công
việc khác nữa. Chỉ tới khi nào có yêu cầu trao đổi dữ liệu thì mới yêu cầu CPU
tạm dừng công việc hiện tại để phục vụ việc trao đổi dữ liệu. Sau khi hoàn thành
việc trao đổi dữ liệu CPU sẽ quay về để làm tiếp công việc hiện đang bị gián
đoạn. Cách làm này gọi là ngắt CPU để trao đổi dữ liệu.
Như vậy một hệ thống với cách hoạt động theo kiểu này có thể đáp ứng
được rất nhanh các yêu cầu trao đổi dữ liệu trong khi vẫn có thể làm được các
công việc khác. Muốn đạt được điều này, ta phải có cách tổ chức hệ thống sao
cho có thể tận dụng được khả năng thực hiện các chương trình phục vụ ngắt tại
các địa chỉ xác định của CPU. Vi mạch 8088 của CPU có các yêu cầu ngắt che
được INTR và không che được NMI, chính các chân này sẽ được sử dụng vào
việc đưa các yêu cầu ngắt từ bên ngoài đến CPU.
b. Các loại ngắt trong 8088
Trong hệ vi xử lý 8088 có thể xếp các nguyên nhân gây ra ngắt CPU vào
3 nhóm sau:
* Nhóm các ngắt cứng:
Đó là các yêu cầu ngắt CPU do tín hiệu ngắt đến từ các chân INTR và
NMI. Ngắt cứng NMI là yêu cầu ngắt không che được, tương đương với ngắt
INT2. Các lệnh CLI (xoá cờ IF) và STI (lập cờ IF) không có ảnh hưởng đến việc
nhận biết tín hiệu yêu cầu ngắt NMI.
Ngắt cứng INTR là yêu cầu ngắt che được, các lệnh CLI và STI có ảnh
hưởng trực tiếp tới trạng thái của cờ IF trong bộ vi xử lý, tức là ảnh hưởng tới
việc CPU có nhân biết yêu cầu ngắt tại chân này hay không. Yêu cầu ngắt tại
chân INTR có thể có kiểu ngắt N nằm trong khoảng 0 - FFh. Kiểu ngắt này phải
được đưa vào Bus dữ liệu để CPU có thể đọc được khi có xung INTA trong chu
kỳ trả lời chấp nhận ngắt.

161
* Nhóm các ngắt mềm:
Khi CPU thực hiện các lệnh ngắt dạng INT N, trong đó N là số hiệu
(kiểu) ngắt nằm trong khoảng 00-FFH (0-225).
Nhóm các hiện tượng ngoại lệ đó là: các ngắt do các lỗi nảy sinh trong
quá trình hoạt động của CPU như phép chia cho 0, xảy ra tràn khi tính toán ...
Yêu cầu ngắt sẽ được kiểm tra thường xuyên tại chu kỳ đồng hồ cuối cùng
của mỗi lệnh. Cách đơn giản để đưa được số hiệu ngắt N vào Bus dữ liệu trong
khi cũng tạo ra yêu cầu ngắt đưa vào chân INTR của bộ vi xử lý 8088
* Các ngắt khác:
Các ngắt xảy ra khi CPU phát hiện ra lỗi nhưng không khắc phục được lỗi
đó.

c. Đưa số hiệu ngắt vào Bus dữ liệu


Giả thiết trong một thời điểm nhất định chỉ có một yêu cầu ngắt IRi được
tác động và khi đó ở đầu ra của mạch NAND sẽ có xung yêu cầu ngắt đến CPU.
Tín hiệu IRi được đồng thời đưa qua mạch khuếch đại đệm để tạo ra số hiệu
ngắt tương ứng, số hiệu ngắt này sẽ được CPU đọc vào khi nó đưa ra tín hiệu trả
lời INTA.

162
Quan hệ giữa IRi và số hiệu ngắt N

d. Đáp ứng của CPU khi có yêu cầu ngắt


Khi có yêu cầu ngắt kiểu N đến chân CPU, và nếu yêu cầu đó được
phép,CPU thực hiện các công việc sau:

Về mặt cấu trúc chương trình, khi có ngắt xảy ra thì chương trình chính
(CTC) liên hệ với chương trình con phục vụ ngắt (CTCPVN), điều này được mô
tả trên hình dưới đây.

163
Trong thực tế các ngắt mềm INT N đã bao trùm các loại khác CPU bởi vì
INTEL đã quy định một số kiểu ngắt đặc biệt được xếp vào đầu dãy ngắt mềm
INT N:
o INT 0: ngắt mềm do phép chia cho số 0 gây ra.
o INT 1: Ngắt mềm để chạy từng lệnh ứng với trường hợp cờ TF = 1
o INT 2: Ngắt cứng do tín hiệu tích cực tại chân NMI gây ra
o INT3: Ngắt mềm để đặt điểm dừng của chương trình tại một địa chỉ nào
đó
o INT4 (hoặc lệnh INTO): Ngắt mềm ứng với trường hợp cờ tràn OF = 1
Các kiểu ngắt khác còn lại thì được dành cho INTEL và cho người sử
dụng (IBM không hoàn toàn tuân thủ các quy định này khi chế tạo các máy
PC/XT và PC/AT)
o INT5 – INT 1FH: Dành riêng cho INTEL trong các bộ vi xử lý cao cấp
khác.
o INT20 – INT FFH: dành cho người sử dụng.
Các kiểu ngắt N trong INT N đều tương ứng với các địa chỉ xác định của
CTCPVN mà ta có thể tra được trong bảng các véc tơ ngắt. INTEL quy định
bảng này nằm trong RAM bắt đầu từ địa chỉ 00000H và dài 1KB (8088 có tất cả
256 kiểu ngắt, mỗi kiểu ngắt ứng với một vectơ ngắt, mỗi véc tơ ngắt cần có 4
Byte để chứa địa chỉ đầy đủ cho CS : IP của CTCPVN.
Bảng véctơ ngắt của 8088 tại 1 KB RAM đầu tiên được chỉ ra như hình
dưới đây:

164
e. Xử lý ưu tiên khi ngắt
Một yêu cầu quan trọng đặt ra là, đòi hỏi CPU phải có khả năng xử lý
được các yêu cầu ngắt nếu tại cùng một thời điểm có nhiều yêu cầu ngắt thuộc
các loại ngắt khác nhau, đòi hỏi CPU thực hiện phục vụ. Vấn đề giải quyết theo
cách sau: CPU sẽ xử lý các yêu cầu ngắt theo thứ thự ưu tiên với nguyên tắc
ngắt nào có mức ưu tiên cao nhất sẽ được CPU nhận biết và phục vụ trước.
Thông thường ngay từ khi chế tạo CPU 8088 có khả năng phân biệt các
mức ưu tiên khác nhau cho các loại ngắt (theo thứ tự từ cao xuống thấp) như
sau:

f. Mạch điều khiển ưu tiên ngắt 8259A (PIC: Priority interrupt


control)

165
Hình 7.8 Sơ đồ chân mạch điều khiển ưu tiên ngắt 8259A

Trong trường hợp nhiều yêu cầu ngắt cần phải phục vụ, ta thường dùng vi
mạch 8259A để giải quyết vấn đề ưu tiên. 8259A có thể giải quyết được 8 yêu
cầu ngắt với 8 mức ưu tiên khác nhau.

Hình 7.9 Sơ đồ khối của PIC 8259A

g. Các khối chức năng chính của PIC: (bổ sung)


IRR (thanh ghi yêu cầu ngắt): lưu trữ các yêu cầu ngắt tại ngõ vào.
ISR (thanh ghi phục vụ ngắt): lưu trữ các yêu cầu ngắt đang phục vụ.
IMR (thanh ghi mặt nạ ngắt): lưu trữ mặt nạ của các yêu cầu ngắt tại ngõ
vào.
Control logic (logic điều khiển): gởi yêu cầu ngắt tới chân INTR của
CPU khi có tín hiệu ngắt tại ngõ vào của 8259A và nhận trả lời chấp nhận yêu
cầu ngắt hay không INTA từ CPU để đưa kiểu ngắt vào CPU.
166
Data bus buffer (đệm bus dữ liệu): giao tiếp giữa 8259A với bus dữ liệu
của CPU.
Cascade buffer / comparator (đệm nối tầng và so sánh): lưu trữ và so
sánh số hiệu của các kiểu ngắt trong trường hợp dùng nhiều mạch 8259A.
h. Các tín hiệu điều khiển 8259A
CAS0 ÷ 2 (In, Out): các ngõ vào chọn mạch 8259A tớ (slave) từ mạch
8259A chủ (master) trong trường hợp dùng nhiều mạch 8259A để tăng yêu cầu
ngắt.
SP / EN (In, Out) (Slave Program / Enable Buffer): nếu 8259A hoạt động
ở chế độ không dùng đệm dữ liệu thì tín hiệu này dùng để xác định mạch 8259A
là mạch chủ ( SP = 1) hay tớ ( SP = 0). Nếu 8259A hoạt động ở chế độ có đệm
dữ liệu thì tín hiệu này dùng để cho phép giao tiếp giữa 8259A và CPU, khi đó
mạch 8259A là master hay slave phải dựa vào từ lệnh khởi động ICW4.
INT (Out): tín hiệu yêu cầu ngắt đưa đến CPU (chân INTR).
INTA (In): nhận trả lời chấp nhận ngắt hay không từ CPU (chân INTA )
A0: cho phép chọn các từ điều khiển của 8259A.
8259A cho phép xử lý 8 ngắt với 8 mức ưu tiên khác nhau. Trong trường
hợp hệ thống có số lượng ngắt lớn hơn thì có thể mắc nhiều 8259A liên tầng.

Hình 7.10 8259A đấu liên tầng

7.2.5 Phương pháp vào ra bằng DMA


Khác với trao đổi tin theo chương trình do VXL điều khiển theo từng lệnh
vào ra giữa thanh ghi chứa AX của VXL với cửa vào-ra của TBN, trao đổi tin
DMA do khối điều khiển trao đổi trực tiếp khối nhớ DMAC điều khiển. Đây là
phương pháp trao đổi tin nhanh, cho một lượng lớn tin trực tiếp giữa khối nhớ M
và cửa vào ra TBN, không qua VXL. Phương pháp này thường dùng để đưa tin

167
từ khối khớ ra màn hình hoặc trao đổi giữa khối nhớ và đĩa từ. Khối điều khiển
DMAC có thể thiết kế chế tạo bởi vi mạch rời hoặc IC lớn như 8237,82C37.
Thủ tục trao đổi tin DMA
a. Yêu cầu trao đổi tin DMA của các TBN
* Nhược điểm của phương pháp trao đổi tin theo CT.
Muốn trao đổi tin của Khối nhớ M và TBN nào đó ta cần:
- Đưa địa chỉ khối nhớ
- Phát lệnh đọc/ghi khối nhớ để trao đổi với thanh ghi chứa AX của VXL.
- Đưa địa chỉ của cửa nối với TBN
- Phát lệnh trao đổi tin (IN/OUT) giữa thanh ghi chứa AX với của vào-ra
của TBN.
Như vậy phải có 4 lệnh và trao đổi tin giữa khối nhớ và TBN phải thông
qua thanh ghi chứa vủa VXL. Thời gian trao đổi tin lớn vì:
- VXL phải giải mã lệnh và thực hiện lệnh.
- Trao đổi thông qua thanh ghi chứa AX trung gian.
* Yêu cầu trao đổi tin nhanh.
Trong hệ MVT có hai thiết bị là màn hình và đĩa từ đòi hỏi trao đổi một
lượng tin lớn trong thời gian nhỏ. do đó phải dùng giải pháp cứng để điều khiển
sự trao đổi tin (không dùng phần mềm). Đặc điểm của giải pháp DMA này là:
Khối DMAC hoàn toàn thay thế VXL để điều khiển sự trao đổi tin, nói
cách khác DMAC hoàn toàn dành quyền sử dụng bus trong quá trình trao đổi.
VXL bị cô lập, bị treo không hoạt động, tức trạng thái điện trở cao, không
liên hệ bus bên ngoài.
Khi trao đổi tin xong DMAC lại trả lại quyền sử dụng Bus cho VXL.
b. Thủ tục trao đổi tin DMA.
* Thủ tục:
DMAC điều khiển sự trao đổi DMA giữa khối nhớ M và TBN, không có
sự tham gia của VXL (bị treo hay cô lập đường dây) theo thủ tục có trình tự sau:
TBN đưa yêu cầu DRQ cho DMAC. DMAC ghi nhận (nếu chưa có ghi
che, chắn trước), xét thứ tự ưu tiên (nếu có nhiều yêu cầu DRQ vào đồng thời)
và đưa yêu cầu cho VXL, đề nghị chiếm giữ đường dây bởi một trong hai tín
hiệu sau:
- Tín hiệu Hold (cho các VXL 8085,8086 ở chế độ MIN)

168
- Tín hiệu RQ0 (ở chế độ MAX của 8086)
VXL hoàn thành lệnh đang thực hiện, ngắt chương trình để chuyển sang
chương trình con khởi phát DMA (ghi địa chỉ ban đầu khối nhớ, số lời trao đổi,
hướng thay đổi địa chỉ) và đưa ra tín hiệu xác nhận DMA (GT0, GT1 hay
HLDA) và tự treo ở trạng thái điện trở cao (cô lập) để nhường quyền sử dụng
BUS cho DMAC.
DMAC tiến hành:
- Đưa tín hiệu xác nhận DACK cho TBN
- Tiến hành trao đổi DMA cho tới khi kết thúc (đếm lời trao đổi trở về 0)
- Kết thúc tín hiệu HOLD, trả quyền điều khiển bus cho VXL
- VXL nhận biết sự kết thúc tín hiệu HOLD và kết thúc tín hiệu HLDA,
dành lại quyền điều khiển Bus.
* Chuỗi hành động của DMAC trong trao đổi tin DMA

Hình 7.11 Hoạt động của vào ra DMA

Chuỗi hành động của DMAC gồm khối ghép nối và khối điều khiển được
thực hiện để đảm bảo việc trao đổi tin. Chuỗi hành động này tuân theo thứ tự:

169
1. Khối ghép nối (KGN) gửi khối điều khiển một yêu cầu (DRQ) cho
phục vụ DMA.
2. KĐK gửi yêu cầu Hold tới VXL
3. KĐK nhận xác nhận điều khiển bus (HLDA, GT0) từ VXL
4. KĐK phát địa chỉ lên bus (từ thanh ghi đệm địa chỉ) cho khối nhớ.
5. KĐK phát xác nhận DMA cho TBN.
6. KĐK phát lệnh đọc (ghi) để trao đổi số liệu giữa khối nhớ và khối ghép
nối.
7. KGN: Chốt số liệu (khi ghi) để trao đổi với TBN. Hai hành động 6 và 7
có thể tráo đổi với nhau nên ghi số liệu từ khối ghép nối vào khối nhớ thông qua
thanh ghi đệm của KGN.
Thanh ghi địa chỉ tăng lên 1.
Thanh ghi đếm lời giảm đi 1. Nếu nội dung thanh ghi đếm lời này chưa
bằng 0, lặp lại các bước 6, 7 để trao đổi với các lời tin khác.
8. KGN kết thúc tín hiệu yêu cầu HOLD
9. VXL kết thúc tín hiệu HLDA để dành lại quyền chiếm bus từ DMAC
c. Các chế độ trao đổi DMA
* Trao đổi tin khối :
Trao đổi nhiều (khối) lời tin lần lượt từ giá trị đếm lời tin n tới 0 (hết)
* Trao đổi lấy nén chu kỳ từng phần:
DMAC phát hiện đường dây bus rỗi (VXL không sử dụng đường dây bus)
thực hiện trao đổi DMA.
DMAC phải có :
- Thiết bị phát hiện đường dây rỗi
- Thiết bị bảo đảm VXL bị treo cho tới khi DMAC không sử dụng bus,
khiến VXL chờ một thời gian Tw tới khi DMAC thực hiện trao đổi xong một
phần của trao đổi tin và tiếp tục nốt ở phần lấy lén chu kỳ sau cho tới khi kết
thúc trao đổi tin khối tin DMA.
* Lấy lén chu kỳ trong suốt:
Chế độ này cũng giống chế độ trên là lấy lén chu kỳ nhưng bắt VXL chờ
với Tw lớn hơn cho tới khi trao đổi xong một khối tin trọn vẹn.
Khối điều khiển DMAC
a. Nhiệm vụ của khối

170
Trong các phương thức trao đổi dữ liệu như hai phần trên đã trình bày thì
việc trao đổi dữ liệu giữa thiết bị ngoại vi và hệ thống thường theo trình tự sau:
từ ngoại vi đến vi xử lý rồi đi vào bộ nhớ hay từ bộ nhớ đến vi xử lý rồi ghi ra
ngoại vi. Trong thực tế sẽ có trường hợp ta cần thực hiện trao đổi dữ liệu ngay
giữa ngoại vi và bộ nhớ. Khi đó người ta đưa ra cơ chế truy xuất bộ nhớ trực tiếp
(DMA). Để thực hiện được vấn đề này, các hệ vi xử lý thông thường dùng thêm
các mạch chuyên dụng để điều khiển quá trình truy xuất bộ nhớ trực tiếp
(DMAC – Direct Memory Access Controller). Có tất cả 3 cơ chế hoạt động:
- Tận dụng thời gian CPU không dùng bus:
Ta phải dùng thêm mạch phát hiện các chu kỳ xử lý nội của CPU và tận
dụng các chu kỳ này để thực hiện trao đổi dữ liệu.
- Treo CPU để trao đổi từng byte:
CPU không bị treo trong khoảng thời gian dài mà chỉ bị treo trong thời
gian ngắn đủ để trao đổi 1 byte dữ liệu giữa bộ nhớ và ngoại vi. Do đó, công
việc của CPU không bị gián đoạn mà chỉ bị chậm đi.
- Treo CPU một khoảng thời gian để trao đổi một khối dữ liệu:
Trong cơ chế này, CPU bị treo trong suốt quá trình trao đổi dữ liệu.
- CPU ghi từ lệnh và từ chế độ làm việc vào DMAC.
- Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó gởi tín hiệu DRQ = 1
(DMA Request) đến DMAC.
- DMAC gởi tín hiệu HRQ (Hold Request) đến chân HOLD của CPU để
yêu cầu treo CPU. Tín hiệu này sẽ giữ ở mức cao cho đến hết quá trình trao đổi
dữ liệu.
- Sau khi nhận yêu cầu treo, CPU sẽ thực hiện hết chu kỳ bus của m?nh
rồi treo các bus và gởi tín hiệu HLDA (Hold Acknowledge) để báo cho DMAC
biết có thể sử dụng các bus.
- DMAC chuyển dữ liệu từ bộ nhớ đến ngoại vi bằng cách: đưa địa chỉ
byte đầu tiên ra bus địa chỉ và đưa tín hiệu MEMR để đọc 1 byte từ bộ nhớ, kế
tiếp DMAC đưa tín hiệu IOW để ghi dữ liệu ra ngoại vi. Sau đó, DMAC giảm
số byte cần truyền, cập nhật địa chỉ bộ nhớ và lặp lại quá trình cho đến khi hết
byte cần truyền.
b. Cấu trúc khối DMAC

171
Hình 7.12 Giao tiếp DMAC với hệ vi xử lý

Hai tín hiệu dùng để yêu cầu treo và chấp nhận yêu cầu treo CPU dùng
cho cơ chế DMA là HOLD và HLDA có thể mô tả như sau:

Hình 7.13 Tín hiệu HOLD và HLDA

c. Vi mạch 8237,8257
DMAC 8237 có thể thực hiện truyền dữ liệu theo 3 kiểu: kiểu đọc (từ bộ
nhớ ra thiết bị ngoại vi), kiểu ghi (từ thiết bị ngoại vi đến bộ nhớ) và kiểu kiểm
tra.

Hình 7.14 Sơ đồ chân DMAC 8237

172
Hình 7.15 Sơ đồ chân và sơ đồ khối của DMAC 8237A

Khối Timing and Control (định thời và điều khiển):


Tạo các tín hiệu định thời và điều khiển cho bus ngoài (external bus). Các
tín hiệu này được đồng bộ với xung clock đưa vào DMAC (tần số xung clock tối
đa là 5 MHz).
Khối Priority encoder and rotating priority logic (mã hóa ưu tiên
và quay mức ưu tiên):
DMAC 8237A có 2 mô hình ưu tiên: mô hình ưu tiên cố định (fixed
priority) và mô hình ưu tiên quay (rotating priority). Trong mô hình ưu tiên cố
định, kênh 0 sẽ có mức ưu tiên cao nhất còn kênh 3 có mức ưu tiên thấp nhất.
Còn đối với mô hình ưu tiên quay thì mức ưu tiên khi khởi động giống như mô
hình ưu tiên cố định nhưng khi yêu cầu DMA tại một kênh nào đó được phục vụ
thì sẽ được đặt xuống mức ưu tiên thấp nhất.
Khối Command Control (điều khiển lệnh):
Giải mã các thanh ghi lệnh (xác định thanh ghi sẽ được truy xuất và loại
hoạt động cần thực hiện).
Các thanh ghi:
DMAC 8237A có tất cả 12 loại thanh ghi nội khác nhau:

173
Bảng 7.16 Các thanh ghi trong 8237A

Chức năng các chân của 8237A:


CLK (Input): tín hiệu xung clock của mạch. Tín hiệu này thường được lấy
từ 8284 sau khi qua cổng đảo.
CS (Input): thường được nối với bộ giải mã địa chỉ.
RESET (Input): khởi động 8237A, được nối với ngõ RESET của 8284.
Khi Reset thì thanh ghi mặt nạ được lập còn các phần sau bị xóa:
+ Thanh ghi lệnh
+ Thanh ghi trạng thái
+ Thanh ghi yêu cầu
+ Thanh ghi tạm
+ Flip-flop đầu/cuối (First/Last flip-flop)
READY (Input): nối với READY của CPU để tạo chu kỳ đợi khi truy
xuất các thiết bị ngoại vi hay bộ nhớ chậm.
HLDA (Hold Acknowledge)(Input): tín hiệu chấp nhận yêu cầu treo từ
CPU
DRQ0 – DRQ3 (DMA Request)(Input): các tín hiệu yêu cầu treo từ thiết
bị ngoại vi.
DB0 – DB7 (Input, Output): nối đến bus địa chỉ và dữ liệu của CPU
IOR , IOW (Input, Output): sử dụng trong các chu kỳ đọc và ghi
EOP (End Of Process)(Input,Output): bắt buộc DMAC kết thúc quá trình
DMA nếu là ngõ vào hay dùng để báo cho một kênh biết là dữ liệu đã chuyển
xong (Terminal count – TC), thường dùng như yêu cầu ngắt để CPU kết thúc
quá trình DMA.

174
A0 – A3 (Input, Output): chọn các thanh ghi trong 8237A khi lập trình
hay dùng để chứa 4 bit địa chỉ thấp.
A4 – A7 (Output): chứa 4 bit địa chỉ
HRQ (Hold Request)(Output): tín hiệu yêu cầu treo đến CPU
DACK0 – DACK3 (DMA Acknowledge)(Output): tín hiệu trả lời yêu
cầu DMA cho các kênh.
AEN (Output): cho phép lấy địa chỉ vùng nhớ cần trao đổi
ADSTB (Address Strobe)(Output): chốt các bit địa chỉ cao A8 – A15
chứa trong các chân DB0 – DB7
MEMR , MEMW (Output): dùng để đọc/ghi bộ nhớ.
Các thanh ghi nội:
Các thanh ghi nội trong DMAC 8237A được truy xuất nhờ các bit địa chỉ
thấp A0 – A3.

Bảng 7.1 Bảng địa chỉ các thanh ghi trong DMAC 8237A

Địa chỉ các thanh ghi nội dùng ghi / đọc địa chỉ:

175
Bảng 7.2 Địa chỉ các thanh ghi đọc/ghi trong DMAC 8237A

Địa chỉ các thanh ghi trạng thái và điều khiển:

Bảng 7.3 Địa chỉ các thanh ghi trạng thái và điều khiển trong DMAC 8237A

Mạch 8273A-5 chứa 4 kênh trao đổi dữ liệu DMA với mức ưu tiên lập
trình được. 8237A-5 có tốc độ truyền 1 MBps cho mỗi kênh và 1 kênh có thể
truyền 1 mảng có độ dài 64 KB. Để có thể sử dụng mạch DMAC 8237A, ta cần
tạo tín hiệu điều khiển như sau:

Hình 7.17 Tín hiệu điều khiển cho hệ thống làm việc với DMAC 8237A

176
Tín hiệu AEN từ 8237A dùng để cấm các tín hiệu điều khiển từ CPU khi
DMAC đã nắm quyền điều khiển bus.

7.3 Thiết bị giao diện vào ra

7.3.1 Vào ra nối tiếp và thiết bị giao diện vào ra nối tiếp
Nguyên tắc: cho phép trao đổi thông tin giữa CPU và TBNV theo từng
bit, số liệu trao đổi thường được gửi theo các nhóm bit mà nó tạo thành một kí
tự hay một từ.
Sử dụng:
- Khi TBNV cần trao đổi vốn đã là vào ra nối tiếp
- Khi khoảng cách giữa CPU và TBNV tương đối lớn.
Nhịp truyền: tổng số lần thay đổi tín hiệu trong một giây (baud rate)
Phương thức:
- Thời gian: đồng bộ, dị bộ
- Đường truyền: song công, đơn công, bán song công.
Cấu trúc cổng nối tiếp
Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và
ngoại vi, có các ưu điểm sau:
- Khoảng cách truyền xa hơn truyền song song.
- Số dây kết nối ít.
- Có thể truyền không dây dùng hồng ngoại.
- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic
Device).
- Cho phép nối mạng.
- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
- Có thể cung cấp nguồn cho các mạch điện đơn giản
Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment)
và DCE (Data Communication Equipment). DCE là các thiết bị trung gian như
MODEM còn DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính,
PLC, vi điều khiển, … Việc trao đổi tín hiệu thông thường qua 2 chân RxD
(nhận) và TxD (truyền). Các tín hiệu còn lại có chức năng hỗ trợ để thiết lập và
điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay (handshake). Ưu
điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường truyền.

177
Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry
Associations). Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -
25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng
cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính
chống chập mạch.
Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20,000 bps nhưng
nếu cáp truyền đủ ngắn có thể lên đến 115,200 bps.
Các phương thức nối giữa DTE và DCE:
- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
- Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi
thời điểm chỉ được truyền theo 1 hướng.
- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:

Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -
10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần
lượt truyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để
khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền
ký tự A):

Hình 7.18 Tín hiệu truyền của ký tự ‘A’

178
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:

Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1,200 bps,
4,800 bps, 9,600 bps và 19,200 bps.

Hình 7.19 Sơ đồ chân của cổng nối tiếp

Cổng COM có hai dạng: đầu nối DB25 (25 chân) và đầu nối DB9 (9
chân) mô tả như hình 7….. Ý nghĩa của các chân mô tả như sau:

Bảng 7.4 Bảng các chân cổng nối tiếp COM

179
7.3.2 Vào ra song song và thiết bị giao diện vào ra song song
Nguyên tắc: Các cửa vào ra được ghép nối trực tiếp với bộ xử lí, ghép nối
song song điều khiển bằng chương trình dùng mạch 8255A (PPI:Programable
peripheral inteface)
Mạch ghép nối vào ra song song lập trình được 8255A
* Cấu trúc 8255A

Hình 7.20 Cấu trúc của mạch 8255A

Các chân tín hiệu của 8255A:


- D0-D7: Chân tín hiệu dữ liệu
- RD : chân tín hiệu yêu cầu đọc
- WR: chân tín hiệu yêu cầu ghi
- A0-A1: Các chân tín hiệu địa chỉ: chọn 4 thanh ghi bên trong 8255A
Thanh ghi từ điều khiển CWR, PA,PB,PC.
PA,PB,PC Là các thanh ghi đệm để ghi/đọc dữ liệu. Địa chỉ cho thanh ghi
PA cũng là địa chỉ cơ sở của 8255.
Có hai loại từ điều khiển cho 8255A:

180
- Từ điều khiển định nghĩa cấu hình cho các cổng PA,PB,PC.
- Từ điều khiển lập/xoá từng bit ở đầu ra của PC
Bảng chọn thanh ghi trong 8255A

Bảng 7.5 Bảng chọn thanh ghi trong 8255A

Từ điều khiển định nghĩa cấu hình

* Các chế độ hoạt động của 8255


Chế độ 0 (chế độ vào ra cơ sở):
- Các cổng A, B, C được sử dụng độc lập nhau
- Các cổng A, B, C có thể là cổng vào hoặc cổng ra tuỳ giá trị từ điều
khiển ghi trong thanh ghi từ điều khiển.
Không có sự đối thoại với VXL cũng như TBN. Nếu muốn có tín hiệu đối
thoại phải dùng bit của cổng nào đó (thường là cổng C) để xác lập bit 1 và sau
đó xoá về 0 bằng cách ghi số liệu (1 hoặc 0) hoặc bằng cách xác lập/ xoá một bit
PCi của cổng C bằng lệnh với D7 bằng 0.
Chế độ 1 (chế độ vào/ ra đối thoại) với các bit cổng C.
Chia hai nhóm:

181
- Nhóm A gồm cổng A để trao đổi số liệu và nửa C cao (PC7- PC4) để đối
thoại với VXL và TBN.
- Nhóm B gồm cổng B để trao đổi số liệu và nửa C thấp (PC3- PC0) để
đối thoại với VXL và TBN.
Chiều và chế độ 1 của cổng A, B do từ điều khiển quyết định, các tín hiệu
đối thoại PCi phụ thuộc vào chiều cổng vào hay ra cho các tín hiệu PCi. Ví dụ:
(SGK)
Chế độ 2 (vào ra có chốt):
Chế độ này chỉ dùng cho cổng A với vào ra thuận nghịch (hai chiều) và
các bit PC3, PC4- PC7 dùng làm tín hiệu đối thoại, trong đó:
- PC3 cho tín hiệu yêu cầu ngắt IRNTA chung cho cả hai chiều và giống
chế độ M=1.
- PC4 cho tín hiệu vào STBA khi cổng A có chiều vào (giống chế độ 1)
- PC6 cho tín hiệu vào ACKA khi cổng A có chiều ra (giống chế độ 1)
Chung cả hai chế độ 1, 2 các bit còn lại dùng làm đối thoại của cổng C
đều là các tín hiệu ra.
Cổng B hoạt động giống chế độ 1 hoặc chế độ 0.
* Ghép nối 8255A với MVT và TBN
Nguyên tắc chung:
- Phần ghép nói với máy vi tính (MVT)
- Phần ghép nối với TBN
* Lập trình cho 8255A

7.3.3 Cổng USB


USB (Universal Serial Bus) là chuẩn kết nối giao tiếp giữa máy tính cá
nhân và các thiết bị điện tử dân dụng. Cổng USB cho phép các thiết bị điện tử
dùng cáp kết nối đến máy tính. USB cho phép truyền dữ liệu giữa các thiết bị,
đồng thời cũng là cổng cung cấp nguồn qua cáp cho các thiết bị mà không cần
đến nguồn riêng cho chúng.
USB được phát triển bởi một nhóm gồm các thành viên "gạo cội" như
Intel, Compaq, Microsoft, Digital, IBM, Northern Telecom và được chính thức
cấp chứng nhận vào đầu năm 1996. USB có thể hỗ trợ cho hơn 127 loại thiết bị
ngoại vi khác nhau với tốc độ tăng dần: 1,5Mbps (USB đầu tiên), 12Mbps (USB
1.0), 480Mbps (USB 2.0) và 500Mbps (USB 3.0 sắp xuất hiện).

182
USB có thể dùng để thay thế các cổng giao tiếp nối tiếp (series) và song
song (parallel). Bên cạnh đó, USB còn kết nối đến các thiết bị ngoại vi trên máy
tính như chuột, bàn phím, PDA, thiết bị chơi game (gamepad, joystick), máy
quét, máy ảnh số, máy in, thiết bị nghe nhạc, bút lưu trữ và rất nhiều thiết bị gắn
ngoài khác.
Các loại đầu nối USB

USB-A và USB-B
Nhiều thiết bị có sẵn đầu nối "A" hoặc "B"
Trong đó, đầu nối "A" (USB-A) lắp vào máy tính (upstream) còn đầu nối
"B" (USB-B) nối vào các thiết bị cá nhân (downstream). Với 2 loại đầu nối khác
nhau, giúp bạn dễ dàng phân biệt chúng. Ngoài USB-A và USB-B còn có
Micro-A và Standard-A cũng tuân theo các chi tiết kỹ thuật của USB để kết hợp
với các đầu nối không theo chuẩn.

183
Mini và micro
Hai loại đầu nối loại này thường dành cho các thiết bị nhỏ như PDA, điện
thoại di động hay máy ảnh số. Các đầu nối chuẩn như Mini-B, Micro-A, Micro-
B và đầu nối được chuẩn hóa Mini-A. Chân cắm Mini-A và Mini-B có kích
thước khoảng 3x7mm còn chân cắm Micro có chiều rộng bằng loại Mini nhưng
mỏng chỉ bằng nửa, do đó chúng thường tích hợp vào các thiết bị cầm tay mỏng
hơn.

Ngoại trừ trường hợp đặc biệt chuyển từ chuẩn sang Mini-A và chuẩn-
Micro-B, một sợi cáp USB luôn có đầu A và B để kết nối đến các ngõ cắm
(socket) tương ứng. Tất cả các socket này trở thành các phiên bản chuẩn, mini
và micro.
USB On-The-Go (OTG) hỗ trợ các loại socket khác nhau như: AB, Mini
và Micro. Nó có thể chấp nhận đầu nối A và B. Phần mềm OTG phát hiện sự
khác nhau bằng cách dùng ID pin (chân tiếp đất trên đầu nối A). Khi đầu nối A
kết nối đến socket AB, các socket sẽ cung cấp nguồn VBUS cho cáp và bắt đầu
thực hiện nhiệm vụ. Khi đầu nối B được sử dụng, socket dùng nguồn VBUS và
bắt đầu giao tiếp với thiết bị ngoại vi. OTG cho phép cả hai bằng cách dùng
phần mềm để chuyển khi cần.
Các phiên bản USB
USB 1.0 được trình làng vào năm 1994, có tốc độ 12Mbps, giúp thay thế
nhiều cổng kết nối trên máy tính cá nhân.
USB 2.0 ra mắt vào năm 2000 và được USB-IF (USB Implementers
Forum) chuẩn hóa vào cuối năm 2001. Hewlett-Packard, Intel, Lucent
Technologies (nay là Alcatel-Lucent sau khi sáp nhập với Alcatel năm 2006),
Microsoft, NEC và Philips cùng phát triển lên mức tốc độ cao hơn, 480Mbps.
USB 3.0 được Promoter Group công bố vào 2008, có tốc độ nhanh gấp 10
lần USB 2.0, 5Gbps - SuperSpeed USB. Sản phẩm chính thức sẽ ra mắt vào năm
nay hoặc 2010.
Chiều dài cáp
Chiều dài cáp tối đa của USB 1.1 là 3m và USB 2.0 là 5m. Số hub nối tiếp
tối đa là 5 và số thiết bị kết nối tối đa là 127. USB 3.0 chưa đưa ra tiêu chuẩn

184
chiều dài cáp, tuy nhiên theo electronicdesign.com ước đoán, chiều dài cáp tối
đa cho chuẩn này cũng sẽ giới hạn trong khoảng cách 30m để tốc độ tối ưu nhất.
Khả năng cấp nguồn
USB cung cấp nguồn trong khoảng 5,25V- 4,75 V (5 V±5%). Một đơn vị
tải (1 unit) là 100mA trên USB 2.0 và 150mA trên USB 3.0. USB 2.0 hỗ trợ tối
đa 5 unit (500 mA) và USB 3.0 là 6 unit (900 mA). Có hai loại thiết bị: nguồn
thấp (low-power) và nguồn cao (high-power). Các thiết bị low-power cung cấp 1
unit và cấp nguồn tối thiểu là 4,4V đối với USB 2.0 và 4V đối với USB 3.0. Các
thiết bị high-power devices cung cấp số unit tối đa. Ở chế độ mặc định, tất cả
các thiết bị đều ở low-power nhưng phần mềm đi kèm thiết bị có thể yêu cầu
cung cấp high-power miễn là có nguồn sẵn trên bus.

7.4 Một số thiết bị ngoại vi

7.4.1 Bàn phím


Bàn phím là một thiết bị ngoại vi dùng để giao tiếp giữa người và máy
tính (dùng để nhập số liệu, chương trình hoặc ra lệnh cho máy ...).
Chức năng chung của bàn phím:
- Phát hiện sự ấn phím
- Khử rung
- Mã hoá phím
Phân loại: bàn phím được chia làm 3 loại chính:
- Bàn phím ký tự: dùng để đưa chữ cái, chữ số, dấu hiệu và một số ký tự
điều khiển vào máy tính.
- Bàn phím số: chuyên dùng để đưa số vào máy tính. Thường được ghép
cùng bàn phím ký tự(bên phải bàn phím hiện đại).
- Bàn phím đặc nhiệm: dùng cho các thiết bị điều khiển tự động (có sử
dụng bộ vi xử lý...).
Công nghệ:
- Điện dung: hai trạng thái của phím ấn khác nhau về điện dung (hình vẽ)
- Hiệu ứng Hall (hình vẽ)
185
- Bàn phím quang điện
- Bàn phím lõi Pherit
Nguyên lý hoạt động

Hình 7.21 Sơ đồ nguyên lý và các ghép nối của bàn phím

Chip xử lý bàn phím liên tục kiểm tra trạng thái của ma trận quét (scan
matrix) để xác định công tắc tại các tọa độ X, Y đang được đóng hay mở và ghi
một mã tương ứng vào bộ đệm bên trong bàn phím. Sau đó mã này sẽ được
truyền nối tiếp tới mạch ghép nối bàn phím trong PC. Cấu trúc của SDU (Serial
Data Unit) cho việc truyền số liệu:

Hình 7.22 Đầu cắm của các chân bàn phím AT

186
Hình 7.23 Đầu cắm của các chân bàn phím PS/2

Mỗi phím nhấn sẽ được gán cho 1 mã quét (scan code) gồm 1 byte. Nếu 1
phím được nhấn thì bàn phím phát ra 1 mã make code tương ứng với mã quét
truyền tới mạch ghép nối bàn phím của PC. Ngắt cứng INT 09h được phát ra
qua IRQ1. Chương trình xử lý ngắt sẽ xử lý mã này tuỳ theo phím SHIFT có
được nhấn hay không. Ví dụ: nhấn phím SHIFT trước, không rời tay và sau đó
nhấn ‘C’: make code được truyền - 42(SHIFT) - 46 (‘C’).
Nếu rời tay nhấn phím SHIFT thì bàn phím sẽ phát ra break code và mã
này được truyền như make code. Mã này giống như mã quét nhưng bit 7 được
đặt lên 1, do vậy nó tương đương với make code cộng với 128. Tuỳ theo break
code, chương trình con xử lý ngắt sẽ xác định trạng thái nhấn hay rời của các
phím. Thí dụ, phím SHIFT và ‘C’ được rời theo thứ tự ngược lại với thí dụ trên:
break code được truyền 174 ( bằng 46 cộng 128 tương ứng với ‘C’) và 170
(bằng 42 cộng 128 tương ứng với SHIFT).
Phần cứng và phần mềm xử lý bàn phím còn giải quyết các vấn đề vật lý
sau:
- Nhấn và nhả phím nhưng không được phát hiện.
- Khử nhiễu rung cơ khí và phân biệt 1 phím được nhấn nhiều lần hay
được nhấn chỉ 1 lần nhưng được giữ trong một khoảng thời gian dài.

187
Hình 7.24 Bộ điều khiển bàn phím

Kĩ thuật dò phím
Bàn phím được tổ chức thành ma trận, giao của hàng và cột sẽ cho phép
xác định phím được nhấn:

Hình 7.25 Mạch bàn phím theo kỹ thuật thăm dò

Mạch ghép nối chốt ký tự:

188
Hình 7.26 Mạch ghép nối chốt ký tự

Kĩ thuật quét phím (Scan)


Xem xét trạng thái của phím theo hàng, cột. Thời gian quét phím nhỏ hơn
nhiều so với thời gian nhấn một phím.
Sơ đồ: (bàn phím 64 phím)

Hình 7.27 Mạch đấu nối bàn phím theo kỹ thuật quét

189
Hình 7.28 Mạch đấu nối bàn phím 101 phím

Mỗi khi có một phím được nhấn, gửi về ma trận mã quét của phím bằng
một ngắt IRQ và CPU sẽ đọc cổng 60h để biết tác động phím nào đã xảy ra.
ROMBIOS sẽ chuyển đổi mã quét đó thành từ mã dài hai byte: byte thấp
chứa mã ASCII, byte cao chứa mã quét của phím, sau đó đặt mã hai byte này
vào hàng đợi bàn phím.
Các mã hai byte sau khi được lưu trong bộ đệm sẽ chờ cho tới khi có một
chương trình nào đó lấy dần ra xử lí.
Với các tổ hợp phím nóng, chức năng tổ hợp được coi như một lệnh và
được xử lí tức thì. Riêng tổ hợp phím CTRL + ALT + DEL luôn được kiểm tra
khi có tác động của phím gửi về CPU.

7.4.2 Chuột
Cấu tạo:
Cấu tạo của chuột rất đơn giản, phần trung tâm là 1 viên bi thép được phủ
keo hoặc nhựa được quay khi dịch chuyển chuột. Chuyển động này được truyền
tới 2 thanh nhỏ được đặt vuông góc với nhau. Các thanh này sẽ biến chuyển
động của chuột theo 2 hướng X,Y thành sự quay tưong ứng của 2 đĩa gắn với
chúng. Trên 2 đĩa có những lỗ nhỏ liên tục đóng và ngắt 2 chùm sáng tới các
sensor nhạy sáng để tạo ra các xung điện. Số các xung điện tỷ lệ với lượng
chuyển động của chuột theo các hướng X,Y và số xung trên 1 sec biểu hiện tốc
độ của chuyển động chuột. Kèm theo đó có 2 hay 3 phím bấm.

190
Hình 7.29 Sơ đồ cấu tạo của chuột

Mạch ghép nối và chương trình điều khiển chuột


Hầu hết chuột được nối với PC qua cổng nối tiếp, qua đó chuột cũng được
cấp nguồn nuôi từ PC. Khi dịch chuyển hoặc nhấn, nhả các phím chuột, nó sẽ
phát ra một gói các số liệu tới mạch giao tiếp và mạch sẽ phát ra 1 ngắt. Phần
mềm điều khiển chuột làm các nhiệm vụ: chuyển ngắt tới mạch giao tiếp nối tiếp
xác định, đọc gói số liệu và cập nhật các giá trị bên trong liên quan tới trạng thái
của bàn phím cũng như vị trí của chuột. Hơn nữa, nó còn cung cấp 1 giao tiếp
mềm qua ngắt của chuột là 33h để định các giá trị bên trong này cũng như làm
dịch chuyển con trỏ chuột trên màn hình tương ứng với vị trí của chuột.
Có thể chọn kiểu con trỏ chuột cứng hoặc mềm trong chế độ văn bản hay
con trỏ chuột đồ hoạ trong chế độ đồ họa. Các hàm 09h và 0Ah trong ngắt 33h
cho phép định nghĩa loại và dạng con trỏ chuột.

7.4.3 Màn hình


a. Những đặc điểm chung của màn hình
Điểm ảnh pixel.
Điểm ảnh pixel là phần tử nhỏ nhất của một ảnh hay một thiết bị hiển thị
ảnh. Kích thước một điểm ảnh trên màn hình CRT phụ thuộc vào các tham số
- Kích thước chùm tia điện tử.
- Kích thước hạt phốt pho.
- Chiều dày lớp phốt pho.

191
Đối với màn hình màu, kích thước một điểm ảnh gần bằng kích thước của
ba điểm màu: xanh lục, đỏ, xanh nước biển.
Kích thước ngang và dọc với đơn vị là 1 điểm ảnh được gọi là kích thước
màn hình. Màn hình VGA cơ bản có kích thước 640x480 điểm ảnh.
Độ phân giải
Độ phân giải được định nghĩa là kích thước chi tiết nhỏ nhất và đo được
của một thiết bị hiển thị. Một tham số để đo độ phân giải là số điểm ảnh trên một
đơn vị chiều dài (inch hay centimét), được gọi là mật độ điểm ảnh. Mật độ điểm
ảnh viết tắt là dpi(dot per inch).
Độ sáng (brighness)
Độ sáng là giá trị phát sáng tương đối của vật liệu so với một vật liệu màu
trắng chuẩn. Độ phát sáng của màn hình phát sáng như ống tia âm cực được coi
là độ sáng.
Độ tương phản
Là tỉ lệ giữa độ sáng hay độ phát sáng giữa hai trạng thái đóng và mở của
phần tử hiển thị (điểm ảnh). Độ tương phản cho biết khả năng phân biệt hai phần
tử này .
Độ sâu màu
Một màu bất kỳ có thể biểu diễn qua 3 màu cơ bản: đỏ, xanh lục, xanh
nước biển tuỳ theo độ đậm nhạt (gray scale). Độ sâu màu là số màu có thể hiển
thị được cho một điểm ảnh.
Tuỳ theo số bít dùng để hiển thị màu ta phân loại màn hình theo màu như
sau:
- Đen trắng 1 bit (2 màu)
- Màu CGA 4 bit (16 màu)
- Màu giả (pseudo color) 8 bit (256 màu)
- High color 16 bit
- True color 24 bit.
Tần số làm tươi
Tần số làm tươi chính là tôc độ quét màn hình: flt=30Hz đến 60Hz.
b. Màn hình màu CRT (Cathod Ray Tube)
Màn hình ống tia âm cực CRT (Cathod Ray Tube) là màn hình cổ.
Cấu tạo

192
Màn hình màu thực chất gồm 3 ống hình đơn sắc chung trong một vỏ
gồm: 3 sợi đốt để điều khiển 3 chùm tia khác nhau (đỏ, xanh lơ, lục).
- Màn hình phốt pho phải được quét thành từng nhóm 3 vạch thẳng đứng
(tương ứng với 3 màu) thay cho các điểm.
- Thẳng theo các vạch là một mặt nạ bằng kim loại có các lỗ (hay các khe
dọc) để cho 3 chùm tia điện tử đi qua tạo thành 3 điểm riêng rẽ gần nhau tạo
thành 3 chấm sáng: R, G, B, có 3 núm điều chỉnh độ sáng, tối ứng với 3 màu
trên.
Vị trí đặt các màu cho ta công nghệ tương ứng:
- Các chấm sáng theo hàng ngang: PIL (Pricision In Line)
- Các chấm sáng theo tam giác đều: Trinitron.
Sơ đồ cấu tạo CRT màu

Hình 7.30 Sơ đồ cấu tạo màn hình CRT màu

Bộ phận súng điện tử


Gồm 3 súng điện tử có nhiệm vụ bắn ra 3 chùm tia điện tử mảnh,chuyển
động đủ nhanh bay lên đập vào một điểm của lớp huỳnh quang trên màn hình,
làm cho điểm đó phát sáng.
Các bộ phận chính của súng điện tử:
Ca-tốt: catốt của CRT khi được đốt nóng sẽ phát xạ ra một đám mây điện
tử.
- Các điện cực gia tốc cho chùm tia điện tử. Điện cực Anot nằm trên màn
hình có tác dụng gia tốc cho chùm tia điện tử. Hiệu điện thế đặt lên 2 cực từ 14
nghìn V đến 25.000V.
- Hệ thống các điện cực hội tụ chùm tia điện tử (G2 và G3) có tác dụng
làm cho chùm tia điện tử hội tụ lại thành một tia rất mảnh. Ngoài ra chúng cũng
có tác dụng tăng tốc cho chùm tia điện tử.

193
Hệ thống lái tia:
- Việc lái tia điện tử được thực hiện bằng điện trường hoặc từ trường.
Thông thường việc lái tia điện tử được thực hiện bằng từ trường. Gần cổ đèn
hình người ta đặt 2 cặp cuộn dây song song với nhau và cho các dòng điện có
dạng biến thiên phù hợp, có tần số nhất định chạy qua, dòng điện sẽ tạo ra từ
trường biến thiên theo phương trùng với trục của cuộn dây.. Trong lòng đèn hình
có 2 vectơ từ trường theo phương nằm ngang và thẳng đứng, chúng tác động lên
chùm tia điện tử, làm lệch hướng theo quy luật của dòng điện trong các cặp cuộn
dây.
Điều chế dòng tia điện tử
Khi súng điện tử quét lần lượt các dòng của mành, nếu làm thay đổi
cường độ của chùm tia điện tử theo qui luật thay đổi của tín hiệu hình ảnh nơi
phát đi, thì sẽ tái tạo lại hình ảnh trên màn hình. Việc điều khiển dòng điện tử
theo quy luật của hình ảnh cần hiển thị được gọi là điều chế dòng điện tử.
Điện cực lưới G1 làm nhiệm vụ lưới điều khiển, nếu đặt giữa G1 và catốt
một điện áp thay đổi theo quy luật thay đổi tín hiệu của hình ảnh thì dòng điện
tử của súng điện tử sẽ bị điều chế theo quy luật của tín hiệu.
c. Phương pháp quét dòng
Dựa vào độ phân giải hữu hạn của hiện tượng lưu ảnh trên võng mạc của
mắt người, người ta đã xây dựng nên phương pháp quét dòng để hiển thị hình
ảnh.
Màn hình được chia thành một số hữu hạn dòng, tập các dòng tạo nên
hình ảnh.

Hình 7.31 Quét dòng trong màn hình CRT

d. Sơ đồ ghép nối và hoạt động

194
Hình 7.32 Sơ đồ ghép nối và hoạt động của màn hình CRT với CPU

CRTC (CRT Controller): đơn vị điều khiển màn hình. Số kiệu sẽ được thể
hiện trên màn hình từ bộ nhớ màn hình hay CPU gửi qua bộ tạo chữ CG để:
- Điều khiển kiểu và vị trí con trỏ màn hình
- Định chế độ dòng, màn hình và số ảnh trên một giây
DM (Display Memory): ghi thông tin sẽ được thể hiện trên màn hinhg
trong chế độ Text.
CG (Character General): lưu trữ các mẫu bit của kí tự, các Font chữ trong
chế độ Text.
Bộ Shift:
- Nhận số liệu từ CG và đẩy ra tín hiệu Video
- Kết hợp với bộ giải mã thuộc tính để tạo ra các tín hiệu cho súng RGB
- Kết hợp với các tín hiệu đồng bộ từ CRTC để đưa ra tín hiệu hỗn hợp.
d. Kĩ thuật làm tươi hình ảnh
Làm tươi (Refresh): quá trình hiện hình ảnh lặp đi lặp lại liên tục với một
tần suất đủ lớn để mắt người không cảm thấy lập loè.
Nguyên tắc: chuyển nội dung bộ nhớ lên màn hình dùng phương pháp
DMA
Sơ đồ:

195
Hình 7.33 Sơ đồ nguyên lý làm tươi ảnh

Khi DMAC nạp số liệu vào bộ đệm Buffer #1 thì bộ đệm Buffer #2 đã
được nạp đầy trước đó đẩy nội dung của màn hình ra bộ tạo chữ CG, sau đó đến
lượt Buffer #1. Quá trình làm tươi được tiếp tục với sự đổi hướng của hai bộ dồn
kênh MUX.
e. Màn hình tinh thể lỏng (LCD – Liquid Crystal Display)
Tinh thể lỏng LCD là chất lỏng hữu cơ mà phân tử của nó có khả năng
phân cực ánh sáng dẫn đến thay đổi cường độ sáng. Trường tĩnh điện được dùng
để điều khiển hướng phân tử tinh thể lỏng.
Do hình ảnh được mã hóa và hiển thị dưới dạng bản đồ ma trận điểm ảnh,
nên màn hình LCD cũng phải được cấu tạo từ các điểm ảnh. Mỗi điểm ảnh trên
màn hình LCD sẽ hiển thị một điểm ảnh của khung hình. Trong mỗi điểm ảnh
trên màn hình LCD, có ba điểm ảnh con (subpixel), mỗi điểm ảnh hiển thị một
trong ba màu: đỏ, xanh lá cây, xanh lam. Để nắm được nguyên lý hoạt động của
màn hình LCD, ta xét một số khái niệm sau:
Ánh sáng phân cực:
Theo lý thuyết sóng ánh sáng của Huyghen, Fresnel và Maxwell, ánh sáng
là một loại sóng điện từ truyền trong không gian theo thời gian. Phương dao
động của sóng ánh sáng là phương dao động của từ trường và điện trường
(vuông góc với nhau). Dọc theo phương truyền sóng, phương dao động của ánh
sáng có thể lệch nhau một góc tùy ý. Xét tổng quát, ánh sáng bình thường có vô
số phương dao động khác nhau. Ánh sáng phân cực là ánh sáng chỉ có một
phương dao động duy nhất gọi là phương phân cực.
Kính lọc phân cực:
Là loại vật liệu chỉ cho ánh sáng phân cực đi qua. Lớp vật liệu phân cực
có một phương đặc biệt gọi là quang trục phân cực. Ánh sáng có phương dao
động trùng với quang trục phân cực sẽ truyền toàn bộ qua kính lọc phân cực.

196
Ánh sáng có phương dao động vuông góc với quang trục phân cực sẽ bị chặn lại.
Ánh sáng có phương dao động hợp với quang trục phân cực một góc 0<ϕ<90o sẽ
truyền một phần qua kính lọc phân cực. Cường độ ánh sáng truyền qua kính lọc
phân cực phụ thuộc vào góc hợp bởi phương phân cực của ánh sáng và quang
trục phân cực của kính lọc phân cực.
Tinh thể lỏng:
Tinh thể lỏng không có cấu trúc mạng tinh thể cố định như các vật rắn,
mà các phân tử có thể chuyển động tự do trong một phạm vi hẹp như một chất
lỏng. Các phân tử trong tinh thể lỏng liên kết với nhau theo từng nhóm và giữa
các nhóm có sự liên kết và định hướng nhất định, làm cho cấu trúc của chúng có
phần giống cấu trúc tinh thể. Vật liệu tinh thể lỏng có một tính chất đặc biệt là
có thể làm thay đổi phương phân cực của ánh sáng truyền qua nó, tùy thuộc vào
độ xoắn của các chùm phân tử. Độ xoắn này có thể điều chỉnh bằng cách thay
đổi điện áp đặt vào hai đầu tinh thể lỏng.
Màn hình tinh thể lỏng được cấu tạo bởi các lớn xếp chồng lên nhau như
trong hình 7…. Lớp dưới cùng (lớp 6) là đèn nền, có tác dụng cung cấp ánh sáng
nền (ánh sán trắng). Đèn nền dùng trong các màn hình thông thường có độ sáng
dưới 1000cd/m2 thường là đèn huỳnh quang. Đối với cá màn hình công cộng,
đặt ngoài trời, cần độ sáng cao thì có thể sử dụng đèn nền xenon. Đèn nền xenon
về mặt cấu tạo khá giống với đèn pha bi-xenon sử dụng trên các xe hơi cao cấp.
Đèn xenon không sử dụng dây tóc nóng sáng như đèn Vonfram hay đèn
halogen, mà sử dụng sự phát sáng bởi nguyên tử bị kích thích, theo định luật
quang điện và mẫu nguyên tử Bo. Bên trong đèn xenon là hai bản điện cực, đặt
trong khí trơ xenon trong một bình thủy tinh thạch anh. Khi đóng nguồn, cấp
cho hai điện cực một điện áp rất lớn, cỡ 25000V. Điện áp này vượt ngưỡng điện
áp đánh thủng của xenon và gây ra hiện tượng phóng điện giữa hai điện cực. Tia
lửa điện sẽ kích thích các nguyên tử xenon lên mức năng lượng cao, sau đó
chúng sẽ tự động nhảy xuống mức năng lượng thấp và phát ra ánh sáng theo
định luật bức xạ điện từ. Điện áp cung cấp cho đèn xenon phải rất lớn, thứ nhất
để vượt qua ngưỡng điện áp đánh thủng để sinh ra tia lửa điện, thứ hai để kích
thích các nguyên tử khí trơ lên mức năng lượng đủ cao để ánh sáng do chúng
phát ra khi quay trở lại mứ năng lượng thấp có bước sóng ngắn.

197
Hình 7.34 Các lớp cấu tạo màn hình LCD

Hình 7.35 Màn hình tinh thể lỏng LCD

Lớp thứ hai (lớp 5) là lớp kính lọc phân cực có quang trục phân cực
ngang, kế đến là một lớp tinh thể lỏng (lớp 3) được kẹp chặt giữa hai tấm thủy
tinh mỏng (lớp 4 và lớp 2), tiếp theo là lớp kính lọc phân cực có quang trục phân
cực dọc (lớp 1). Mặt trong của hai tấm thủy tinh kẹp tinh thể lỏng có phủ một
lớp các điện cực trong suốt. Ta xét nguyên lý hoạt động của màn hình LCD với
một điểm ảnh con: ánh sáng đi ra từ đèn nền là ánh sáng trắng, có vô số phương
phân cực. Sau khi truyền qua kính lọc phân cực thứ nhất, chỉ còn lại ánh sáng có
phương phân cực ngang. Ánh sáng phân cực này tiếp tục truyền qua lớp tinh thể
lỏng. Nếu giữa hai đầu lớp tinh thể lỏng không được đặt một điện áp, các phân
tử tinh thể lỏng sẽ ở trạng thái tự do, ánh sáng truyền qua sẽ không bị thay đổi
phương phân cực. Ánh sáng có phương phân cực ngan truyền tới lớp kính lọc
thứ hai có quang trục phân cực dọc sẽ bị chặn lại hoàn toàn. Lúc này, điểm ảnh
ở trạng thái tắt.
Nếu đặt một điện áp giữa hai đầu lớp tinh thể lỏng, các phân tử sẽ liên kết
và xoắn lại với nhau. Ánh sáng truyền qua lớp tinh thể lỏng được đặt điện áp sẽ
bị thay đổi phương phân cực. Ánh sáng sau khi bị thay đổi phương phân cực bởi
lớp tinh thể lỏng truyền đến kính lọc phân cực thứ hai và truyền qua được một
phần. Lúc này, điểm ảnh được bật sáng. Cường độ sáng của điểm ảnh phục

198
thuộc vào lượng ánh sáng truyền qua kính lọc phân cực thứ hai. Lượng ánh sáng
này lại phụ thuộc vào góc giữa phương phân cực và quang trục phân cực. Góc
này lại phụ thuộc vào độ xoắn của các phân tử tinh thể lỏng. Độ xoắn của các
phân tử tinh thể lỏng phụ thuộc vào điện áp đặt vào hai đầu tinh thể lỏng.
Như vậy, có thể điều chỉnh cường độ sáng tại một điểm ảnh bằng cách
điều chỉnh điện áp đặt vào hai đầu lớp tinh thể lỏng. Trước mỗi điểm anh con có
một kính lọc màu, cho ánh sáng ra màu đỏ, xanh lá cây, xanh làm. Với một điểm
ảnh, tùy thuộc vào cường độ ánh sáng tương đối của ba điểm ảnh con, dựa vào
nguyên tắc phối màu phát xạ, điểm ảnh sẽ có một màu nhất định. Khi muốn thay
đổi màu sắc của một điểm ảnh, ta thay đổi cường độ sáng tỷ đối của ba điểm ảnh
con so với nhau. Muốn thay đổi độ sáng tỷ đối này, phải thay đổi độ sáng của
từng điểm ảnh con, bằng cách thay đổi điện áp đặt vào hai đầu lớp tinh thể lỏng.
Một nhược điểm của màn hình tinh thể lỏng, đó chính là tồn tại một
khoảng thời gian để một điểm anh chuyển từ màu này sang màu khác (thời gian
đáp ứng – response time). Nếu thời gian đáp ứng quá cao có thể gây lên hiện
tượng bóng ma với một số cảnh có tốc độ thay đổi khung hình lớn. Khoảng thời
gian này sinh ra do sau khi đặt điện áp đặt lên hai đầu lớp tinh thể lỏng được
thay đổi, tinh thể lỏng phải mất một khoảng thời gian mới có thể chuyển từ trạng
thái xoắn ứng với điện áp cũ sang trạng thái xoắn ứng với điện áp mới. Thông
qua việc tái tạo lại màu sắc của từng điểm ảnh, chúng ta có thể tái tạo lại toàn bộ
hình ảnh.
Màn hình TFT
Màn hình LCD màu hay còn gọi là màn hình ma trận chấm (dot matrix
display) có điện cực và bộ lọc màu riêng cho từng điểm tinh thể lỏng. Mỗi điểm
ảnh sẽ bao gồm ba điểm màu riêng biệt. Màn hình mà trạn chủ động (active
matrix display) tối ưu hóa quá trình định địa chỉ và nạp từng điểm ảnh. Màn
hình ma trận chủ động dùng một transistor màng mỏng TFT (thin film
transistor) làm công tác chuyển mạch cho từng điểm màu. Transistor đóng mạch
rất nhanh (trong vài micro giây), tụ điện mắc song song với nó sẽ giữ trạng thái
dòng mcạh lâu hơn trong khi transistor của các dòng khác tiếp tục đóng mạch.
Màn hình TFT được sản xuất theo công nghệ vi điện tử và chứa vi mạch điều
khiển ngay trên màn hình.

199
Hình 7.36 Cấu tạo màn hình TFT LCD

Hình 7.37 Màn hình TFT LCD

Màn hình Plasma


Nguyên tắc màn hình plasma giống nguyên tắc đèn Neon. Màn hình
Plasma thường có màu đặc trưng là xanh hay vàng đỏ. Màn hình plasma gồm
nhiều ô khí trơ được hàn kín tương ứng với các điểm ảnh. Mỗi ô khí trơ có hai
điện cực. Khi hiệu điện thế vượt quá một giới hạn nhất định, khí trơ sẽ ion hóa
và phát sáng. Nguyên tắc điều khiển màn hình loại này đơn giản hơn màn hình
LCS. Nhược điểm của màn hình loại này là thời gian làm việc ngắn, tiêu thụ
nhiều năng lượng. Độ tương phản vào khoảng 10:1. Màn hình plasma từng được
dùng cho máy tính xách tay của hãng Toshiba và Compaq. Ngày nay chúng hầu
như không thể cạnh tranh được với màn hình tinh thể lỏng tiên tiến. Màn hình
LCD có thể dùng trong máy ảnh (có vai trò như phim trong máy chiếu bóng) để
có được hình trên màn ảnh rộng.

Hình 7.38 Màn hình Plasma

200
CÂU HỎI VÀ BÀI TẬP CHƯƠNG 7
7.1. Trình bày vai trò, nhiệm vụ, phân loại khối ghép nối? Vẽ sơ đồ cấu
trúc chung của một khối ghép nối?
7.2. Vi mạch điều khiển vào ra bằng chương trình 8255A của một máy
tính IBM/PC có địa chỉ cơ sở là 60h. Hãy xác định địa chỉ các cổng PA, PB, PC,
thanh ghi từ điều khiển CWR?
7.3. Vi mạch điều khiển vào ra bằng chương trình 8255A của một máy
tính IBM/PC có địa chỉ cơ sở là 60h. Hãy xác định giá trị thanh ghi từ điều khiển
CWR để 8255A hoạt động ở chế độ vào ra cơ sở với PA, PCh là cổng vào, và
với PB, PCl là cổng ra?
7.4. Khái niệm, phân loại về ngắt? Nêu phương pháp điều khiển vào ra
bằng ngắt.
7.5. Trình bày khái niệm, các thủ tục trao đổi tin, các chế độ trao đổi
DMA.
7.6. Trình bày phương pháp vào ra bằng chương trình? So sánh phương
pháp vào ra bằng chương trình và phương pháp vào ra bằng DMA

201
TÀI LIỆU THAM KHẢO
[1] William Stallings, Computer organization and architecture: Design
for performance, 8th edition, Prentice Hall, 2010.
[2] TS. Vũ Đức Lung, Kiến trúc máy tính, Đại học quốc gia Thành phố
Hồ Chí Minh, 2009.
[3] Trường Đại học Hàng Hải, Kiến trúc máy tính, 2010.
[4] Võ Văn Chín, Nguyễn Hồng Vân, Phạm Hữu Tài, Kiến trúc máy
tính, ASVIET002CNTT Đại học Cần Thơ, 2003.
[5] Học viện Công nghệ Bưu chính Viễn thông, Kiến trúc máy tính,
2008.
[6] Đại học Hàng hải, Kiến trúc máy tính và thiết bị ngoại vi, 2009.
[7] Nguyễn Kim Khánh, Kiến trúc máy tính, Trường Đại học Bách
Khoa Hà Nội, 2007.
[8] Đỗ Đức Giáo, Toán rời rạc, NXB Đại học Quốc gia Hà Nội, 2000.

202

You might also like