Professional Documents
Culture Documents
BÀI GIẢNG
HỆ ĐẠI HỌC CHÍNH QUY ATTT
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
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.
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.
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.
17
1.3 Phân loại máy tính
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.4.1 Mô hình
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.
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.
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.
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.
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.
Đặ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...
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
Hình 2.1Thông tin về 2 trạng thái có ý nghĩa của hiệu điện thế.
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
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.
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.
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.
36
910 = 010012
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.
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:
Để 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.
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.
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Ố
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:
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:
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”.
46
Các quy tắc logic:
− Quy tắc về phép cộng:
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
47
c. Hàm NOT
d. Hàm XOR
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:
51
Bìa K cho hàm 3 biến
52
53
3.3 Những mạch Logic số cơ bản
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.
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.
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.
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
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
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 đủ.
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:
61
Hình 3.15 Sơ đồ mạch giải mã 2-4 với cổng AND
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.
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.
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:
Hoạt động của mạch lật SR thể hiện trong bảng sau:
Đố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.
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.
Đ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.
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.
68
Giải:
Bước 1:
Bước 3:
Bản đồ Karnaugh đối với đầu vào SA.
69
Bản đồ đầu ra y:
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.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Ý
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 ả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
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
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.
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
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)
79
Các phép toán cơ bản của ALU
Bộ cộng, trừ:
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)
Để 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
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ớ.
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)
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ừ.
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.
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.
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.
94
Hình 5.5 Các chế độ lập địa chỉ
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ó.
98
5.4 Bộ lệnh
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
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.
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
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.
107
Bảng 5.7 Các lệnh nhảy có điều kiện
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.
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Ữ
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ể.
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ớ.
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.
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.
118
Hình 6.6 Tổ chức chíp nhớ
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)
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
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
124
m=64 được tổ chức thanh tám băng nhớ đan xen
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
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.
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
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.
Đị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.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
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ớ.
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.
135
Giả sử cache có 2n2 ngăn nhớ (đường), địa chỉ do CPU phát ra là n bit
136
Hình 6.24 Ánh xạ liên kết hoàn toàn
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)
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:
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.
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.4 Bộ nhớ ảo
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.
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.
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ế.
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.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.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
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ừ.
Hình 6.33 Minh họa hai trạng thái của một bit nhớ trong thẻ nhớ
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ã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…).
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.1 Mô hình
154
7.1.2 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.
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
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.
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.
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
đó.
162
Quan hệ giữa IRi và số hiệu ngắt N
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:
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.
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
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:
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.
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
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
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.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):
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.
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:
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
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
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
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.
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:
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:
188
Hình 7.26 Mạch ghép nối chốt ký tự
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
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
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.
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
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
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