Tập bài giảng Kiến trúc máy tính
Bạn đang xem 20 trang mẫu của tài liệu "Tập bài giảng Kiến trúc máy tính", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- tap_bai_giang_kien_truc_may_tinh.pdf
Nội dung text: Tập bài giảng Kiến trúc máy tính
- LỜI NÓI ĐẦU Hiện nay, với sự phát triển không ngừng của công nghệ cùng với những tiến bộ vượt bậc trong lĩnh vực Điện – Điện tử, máy tính ngày càng trở nên quen thuộc và trở thành một thiết bị quan trọng với hầu hết mọi người. Đặc biệt, trong lĩnh vực Công nghệ thông tin, máy tính là nền tảng và công cụ để phát triển các phần mềm ứng dụng. Vì vậy, Kiến trúc máy tính là môn học bắt buộc đối với tất cả sinh viên chuyên ngành Công nghệ thông tin ở các trường Cao đẳng, Đại học. Tập bài giảng Kiến trúc máy tính được biên soạn cho đối tượng sinh viên Cao đẳng và Đại học khoa Công nghệ thông tin, trường Đại học Sư phạm kỹ thuật Nam Định. Tập bài giảng được chia làm 5 chương: Chương 1: Nhập môn Chương 2: Kiến trúc phần mềm Chương 3: Tổ chức bộ xử lý trung tâm CPU Chương 4: Bộ nhớ và các hệ thống lưu trữ Chương 5: Hệ thống BUS và tổ chức vào/ ra Nhóm biên soạn xin chân thành cảm ơn các đồng nghiệp khoa Công nghệ thông tin, cùng các đồng nghiệp trong trường Đại học Sư phạm Kỹ thuật Nam Định đã giúp chúng tôi hoàn thành tập bài giảng này. Trong lần biên soạn đầu tiên, tập bài giảng không tránh khỏi những sai sót, rất mong người đọc đóng góp ý kiến để tập bài giảng được hoàn thiện hơn. Mọi sự đóng góp ý kiến xin gửi về Văn phòng Khoa Công nghệ thông tin, trường Đại học Sư phạm kỹ thuật Nam Định. Chúng tôi xin chân thành cảm ơn! Nam Định, tháng 11 năm 2015 Nhóm biên soạn Th.s Nguyễn Thị Thu Hằng Th.s Hoàng Thị Hồng Hà Th.s Trần Văn Long i
- MỤC LỤC LỜI NÓI ĐẦU i MỤC LỤC ii DANH MỤC HÌNH VẼ v DANH MỤC BẢNG BIỂU x CHƢƠNG 1: NHẬP MÔN 1 1.1. Khái niệm và phân loại máy tính 1 1.1.1. Khái niệm máy tính và kiến trúc máy tính 1 1.1.2. Phân loại máy tính 2 1.2. Lịch sử phát triển của máy tính 3 1.2.1. Thế hệ đầu tiên (1946-1955) 3 1.2.2. Thế hệ thứ hai (1955-1965) 4 1.2.3. Thế hệ thứ ba (1966-1980) 5 1.2.4. Thế hệ thứ tư (1980- đến nay) 6 1.2.5. Khuynh hướng hiện tại 7 1.3. Máy tính Von-Neumann 8 1.4. Cấu trúc và chức năng của máy tính 10 1.4.1. Các thành phần cơ bản trong máy tính 10 1.4.2. Chức năng của các thành phần 11 1.5. Biểu diễn thông tin trong máy tính 17 1.5.1. Các hệ đếm 17 1.5.2. Chuyển đồi giữa các hệ đếm 20 1.5.3. Biểu diễn số nguyên. 22 1.5.4. Biểu diễn số thực 24 1.5.5. Biểu diễn ký tự 31 1.6. Đại số Boolean 35 1.6.1. Các phép toán và định lý của đại số Boolean 35 1.6.2. Các cổng logic 36 1.6.3. Hàm logic và phương pháp biểu diễn hàm logic 40 1.6.4. Tối thiểu hóa hàm logic 41 1.7. Một số mạch kết hợp 45 1.7.1. Mạch logic tổ hợp 45 1.7.2. Mạch tuần tự 50 CÂU HỎI ÔN TẬP CHƢƠNG 1 53 CHƢƠNG 2 : KIẾN TRÚC PHẦN MỀM 57 2.1. Các kiểu thi hành một lệnh 57 2.2. Kiểu kiến trúc thanh ghi đa dụng 58 ii
- 2.3. Tập lệnh 59 2.3.1. Gán trị 60 2.3.2. Lệnh có điều kiện 63 2.3.3. Vòng lặp 66 2.3.4. Thâm nhập bộ nhớ ngăn xếp 66 2.3.5. Các thủ tục 66 2.4. Các kiểu định vị 68 2.5. Kiểu và chiều dài của toán hạng 73 2.6. Kiến trúc RISC 73 2.7. Kiểu định vị trong các bộ xử lý RISC 76 2.7.1. Kiểu định vị thanh ghi 76 2.7.2. Kiểu định vị tức thì 76 2.7.3. Kiểu định vị trực tiếp 77 2.7.4. Kiểu định vị gián tiếp bằng thanh ghi + độ dời 78 2.7.5. Kiểu định vị tự tăng 78 2.8. Ngôn ngữ cấp cao và ngôn ngữ máy 78 CÂU HỎI ÔN TẬP CHƢƠNG 2 80 CHƢƠNG 3: TỔ CHỨC BỘ XỬ LÝ TRUNG TÂM CPU 82 3.1. Cấu trúc và hoạt động của CPU 82 3.1.1. Cấu trúc của CPU 82 3.1.2. Hoạt động của CPU 96 3.2. Kỹ thuật ống dẫn (Pipeline) 99 3.2.1. Khái niệm 99 3.2.2. Khó khăn trong kỹ thuật ống dẫn 99 3.2.3. Siêu ống dẫn 100 3.3. Siêu vô hƣớng 101 3.4. Máy tính Vec-tơ 101 3.5. Máy tính song song 102 3.6. Kiến trúc IA-64 106 CÂU HỎI ÔN TẬP CHƢƠNG 3 110 CHƢƠNG 4 : BỘ NHỚ VÀ CÁC HỆ THỐNG LƢU TRỮ 112 4.1. Khái niệm và phân cấp bộ nhớ 112 4.1.1 Khái niệm 112 4.1.2. Phân cấp bộ nhớ 112 4.2. Các đặc điểm của bộ nhớ 113 4.3. Bộ nhớ chính 115 4.3.1. Bộ nhớ RAM (Random Access Memory) 116 iii
- 4.3.2. Bộ nhớ ROM 123 4.3.3. Tổ chức bộ nhớ 129 4.4. Bộ nhớ cache 137 4.4.1. Nguyên lý vận hành của cache 137 4.4.2. Các phương pháp ánh xạ giữa cache và bộ nhớ chính 144 4.4.3. Giải thuật thay thế 150 4.5. Bộ nhớ ngoài 151 4.5.1. Phân loại 151 4.5.2. Hệ thống đĩa dự phòng RAID 163 4.6. Bộ nhớ ảo 166 4.6.1. Việc phân trang – Paging 167 4.6.2. Thực hiện việc phân trang 169 4.6.3. Phương pháp cấp trang khi có yêu cầu và mô hình tập làm việc 173 CÂU HỎI ÔN TẬP CHƢƠNG 4 176 CHƢƠNG 5 : HỆ THỐNG BUS VÀ TỔ CHỨC VÀO/ RA 181 5.1. Nguyên tắc giao tiếp với thiết bị ngoại vi 181 5.2. Hệ thống BUS 185 5.3. Mô-đun vào/ ra. 187 5.4. Truy cập bộ nhớ trực tiếp 188 5.5. Giao diện giữa bộ xử lý với các bộ phận vào/ ra 190 CÂU HỎI ÔN TẬP CHƢƠNG 5 207 TÀI LIỆU THAM KHẢO i iv
- DANH MỤC HÌNH VẼ Hình 1. 1. Máy tính 2 Hình 1. 2. Máy tính ENIAC 3 Hình 1. 3. Đèn điện tử 4 Hình 1. 4. Máy tính thế hệ thứ 2 5 Hình 1.5. Mạch tích hợp 5 Hình 1. 6. Các máy tính thế hệ thứ 3 5 Hình 1. 7. Các công nghệ sản xuất máy tính 7 Hình 1. 8. John von Neumann và máy tính IAS 8 Hình 1. 9. Kiến trúc máy tính Von-Neumann 9 Hình 1. 10. Sơ đồ máy tính Von Neumann 9 Hình 1. 11. Cấu trúc chung của máy tính 10 Hình 1. 12. Bộ xử lý trung tâm 12 Hình 1. 13. Bo mạch chủ 12 Hình 1. 14. Ổ đĩa cứng 13 Hình 1. 15. Cổng giao tiếp của Onboard Card trên bo mạch chủ 13 Hình 1. 16. Video Graphics Card 14 Hình 1. 17. Màn hình máy tính 15 Hình 1. 18. Bộ nguồn máy tính 16 Hình 1. 19. Các đầu cắm của bộ nguồn 17 Hình 1. 20. a. Bàn phím; b.Chuột 17 Hình 1. 21. Dạng đơn (single precision): 32 bit 25 Hình 1. 22. Dạng kép (double precision): 64 bit 26 Hình 1. 23. Dạng kép mở rộng (double-extended precision): 80 bit 27 Hình 1. 24. Hình Bitmap 34 Hình 1. 25. Số hóa âm thanh. 35 Hình 1. 26. Hàm AND 37 Hình 1. 27. Các IC AND 37 Hình 1. 28. Hàm OR 37 Hình 1. 29. Các IC OR 38 Hình 1. 30. Hàm NOT 38 Hình 1. 31. Hàm XOR 38 Hình 1. 32. Hàm NOR 39 Hình 1. 33. Các IC NOR 39 Hình 1. 34. Hàm NAND 39 Hình 1. 35. Biểu diễn qua lại giữa các cổng 40 Hình 1. 36. Bìa các nô của hàm f(A,B)=A+B 40 Hình 1. 37. Sơ đồ mạch logic 43 Hình 1. 38. Bìa các nô của các hàm 3 biến, 4 biến 44 Hình 1. 39. Bìa các nô của hàm 45 Hình 1. 40. Bìa các nô của hàm 45 Hình 1. 41. Sơ đồ mô phỏng bộ cộng bán tổng ( HA-Half Adder ) 45 Hình 1. 42. Sơ đồ mạch logic cộng hai số nhị phân một bít 46 Hình 1. 43. Sơ đồ mô phỏng mạch 46 Hình 1. 44. Bìa các nô của bộ cộng toàn phần 47 Hình 1. 45. Sơ đồ mạch cộng toàn phần 47 v
- Hình 1. 46. Sơ đồ khối mạch mã hóa nhị phân từ 8 sang 3 47 Hình 1. 47. Mạch logic dùng phần tử OR 48 Hình 1. 48. Sơ đô đồ khối mạch mã hóa thập phân 48 Hình 1. 49. Sơ đồ mạch mã hóa thập phân dùng OR 49 Hình 1. 50. Khối giải mã 3 sang 8 50 Hình 1. 51. Cấu trúc mạch giải mã 3 sang 8 50 Hình 1. 52. Sơ đồ mô phỏng và bảng trạng thái của Trigơ R-S không đồng bộ 51 Hình 1. 53. Bảng chuyển tiếp và bảng đầu vào kích của Trigơ R-S không đồng bộ 51 Hình 1. 54. Sơ đồ Trigơ R-S dùng phần tử NAND 52 Hình 1. 55. Sơ đồ Trigơ R-S dùng phần tử NOR 52 Hình 1. 56. Trigơ R-S đồng bộ 52 Hình 2. 1. Giản đồ trạng thái của chu kỳ lệnh 59 Hình 2. 2. Minh hoạ lệnh dịch chuyển và quay vòng 63 Hình 2. 3. Bit trạng thái mà ALU tạo ra 64 Hình 2. 4. Gọi thủ tục và trở về khi thực hiện xong thủ tục 68 Hình 2. 5. Minh hoạ hai cách sắp xếp địa chỉ trong bộ nhớ 68 Hình 2. 6. Mode địa chỉ trực tiếp (Direct Addressing) 70 Hình 2. 7. Mode địa chỉ gián tiếp (Indirect Addressing) 70 Hình 2. 8. Mode địa chỉ thanh ghi (Register Addressing) 71 Hình 2. 9. Mode địa chỉ gián tiếp qua thanh ghi (Register Indirect Addressing) 71 Hình 2. 10. Mode địa chỉ dich chuyển (Displacement Addressing) 72 Hình 2. 11. Mode địa chỉ Stack (Stack Addressing) 72 Hình 2. 12. Dạng lệnh trong kiểu định vị thanh ghi - thanh ghi cho vài CPU RISC 76 Hình 2. 13. Dạng lệnh trong kiểu định vị thanh ghi - tức thì cho vài CPU RISC 76 Hình 2. 14. Dạng lệnh thâm nhập bộ nhớ trong của vài kiến trúc RISC 77 Hình 2. 15. Mô tả quá trình chuyển đổi từ ngôn ngữ cấp cao sang ngôn ngữ máy 79 Hình 3. 1. Hình ảnh CPU của hãng Intel và hãng AMD 82 Hình 3. 2. Lịch sử phát triển của CPU của Intel 82 Hình 3. 3. Cấu tạo của CPU 83 Hình 3. 4. Các cờ trong thanh ghi FR 84 Hình 3. 5. Ví dụ thanh ghi trạng thái của 8086 85 Hình 3. 6. Ngăn xếp 85 Hình 3. 7. Thanh ghi IR 85 Hình 3. 8. Mô hình kết nối CU 86 Hình 3. 9. Tín hiệu xung nhịp 86 Hình 3. 10. Sơ đồ khối ALU 87 Hình 3. 11. Bộ xử lý AMD K6-2 88 Hình 3. 12. Bộ xử lý Intel Core 2 Duo 88 Hình 3. 13. Vị trí FSB trên Mainboard 89 Hình 3. 14. Khe cắm Slot 90 Hình 3. 15. Socket 1156 91 Hình 3. 16. Socket LGA 2011 91 Hình 3. 17. Mô tả xử lý HTT 92 Hình 3. 18. Mô tả xử lý Multi Core 92 Hình 3. 19. Minh họa tính năng Intel Turbo Boost 93 vi
- Hình 3. 20. Ký hiệu trên CPU 94 Hình 3. 21. Đường đi dữ liệu 97 Hình 3. 22. Kỹ thuật ống dẫn 99 Hình 3. 23. Siêu ống dẫn bậc 2 so với siêu ống dẫn đơn giản. 100 Hình 3. 24. Siêu vô hướng (a) so với kỹ thuật ống dẫn (b) 101 Hình 3. 25. Cấu trúc nền của một bộ nhớ phân tán 104 Hình 3. 26. Tổ chức kết nối của máy tính song song có bộ nhớ phân tán 105 Hình 3. 27. Định dạng lệnh trong kiến trúc IA-64 107 Hình 4. 1. Các cấp bộ nhớ 112 Hình 4. 2. Hai mức bộ nhớ 113 Hình 4. 3. Mạch điện của phần tử SRAM 1 bit 117 Hình 4. 4. Mạch điện của phần tử nhớ DRAM 1 bit 117 Hình 4. 5. Bộ nhớ DDRAM2 119 Hình 4. 6. Hình dáng các loại DDRAM 120 Hình 4. 7. Tốc độ của DDR2, DDR3 121 Hình 4. 8. Điện áp của DDR2, DDR3 122 Hình 4. 9. Thời gian trễ của DDR2, DDR3 123 Hình 4. 10. Số chân nối của DDR, DDR2, DDR3 123 Hình 4. 11. Cấu tạo MROM 124 Hình 4. 12. Bộ nhớ MROM có dung lượng 16x1 sử dụng Transistor MOS 125 Hình 4. 13. Bộ nhớ PROM 126 Hình 4. 14. Cấu tạo EPROM 127 Hình 4. 15. Xóa EPROM 127 Hình 4. 16. Hình dạng bên ngoài củaEPROM 128 Hình 4. 17. Cấu tạo EAPROM 128 Hình 4. 18. Hình dạng và vị trí EEPROM trên bo mạch 129 Hình 4. 19. Tổ chức ô nhớ 129 Hình 4. 20. Tổ chức mạch nhớ 129 Hình 4. 21. Sơ đồ logic chip nhớ 4x3, mỗi hàng là 1 từ nhớ 3 bit 131 Hình 4. 22. Giải mã 1 bước 132 Hình 4. 23. Bộ nhớ ROM 2048x8 - Giải mã địa chỉ 2 bước 133 Hình 4. 24. Chip nhớ 16MB DRAM (4Mx4bit) 134 Hình 4. 25. Hình ảnh các chip nhớ trên bo mạch 134 Hình 4. 26. Mô-đun nhớ 8Kx8 135 Hình 4. 27. Mô-đun nhớ 8Kx4 136 Hình 4. 28. Mô-đun nhớ 16Kx8 137 Hình 4. 29. Trao đổi dữ liệu giữa các thành phần CPU-Cache-Bộ nhớ trong 137 Hình 4. 30. Trao đổi thông tin giữa bộ nhớ chính và cache 139 Hình 4. 31. Ánh xạ trực tiếp 146 Hình 4. 32. Ánh xạ liên kết hoàn toàn 148 Hình 4. 33. Ánh xạ liên kết tập hợp 150 Hình 4. 34. Các thành phần của ổ đĩa cứng 152 Hình 4. 35. Cấu trúc dữ liệu của đĩa cứng 153 Hình 4. 36. Thông số dung lượng ổ đĩa 153 Hình 4. 37. Kích thước ổ đĩa cứng 1,8”, 2,5” và 3,5” (từ trái qua phải) 154 Hình 4. 38. Giao diện kết nối phía sau của ổ cứng IDE và SATA 156 vii
- Hình 4. 39. Phân biệt 2 loại cáp truyền tải dữ liệu của SATA và EIDE (IDE) 156 Hình 4. 40. Các loại kết nối củaUSB, FireWire 400, FireWire 800 157 Hình 4. 41. Ổ cứng SSD 158 Hình 4. 42. Bên trong ổ đĩa SSD và HDD 159 Hình 4. 43. Ổ cứng SSHD 159 Hình 4. 44. Ổ đĩa CD Rom 160 Hình 4. 45. Đĩa CD Rom 161 Hình 4. 46. Bề mặt đĩa CD Rom 161 Hình 4. 47. Nguyên lý ghi dữ liệu lên đĩa CD Rom 161 Hình 4. 48. Nguyên lý đọc tín hiệu từ đĩa CD Rom 162 Hình 4. 49. RAID 0 164 Hình 4. 50. RAID 1 164 Hình 4. 51. RAID 2 165 Hình 4. 52. RAID 3 165 Hình 4. 53. RAID 4 166 Hình 4. 54. RAID 5 166 Hình 4. 55. Ánh xạ các địa chỉ 4096 8191vào các địa chỉ bộ nhớ chính 0 4095 168 Hình 4. 56. Một cách chia không gian địa chỉ 170 Hình 4. 57. Ví dụ một địa chỉ ảo 171 Hình 4. 58. Ví dụ một bảng phân trang 171 Hình 4. 59. Cách tạo ra địa chỉ bộ nhớ chính từ địa chỉ ảo 172 Hình 4. 60. Ánh xạ từ không gian địa chỉ ảo lên không gian bộ nhớ chính có 8 khung trang . 173 Hình 4. 61. Hàm w (k, t) là kích thước của tập làm việc tại thời điểm t 175 Hình 5. 1. Cấu trúc hệ thống vào/ ra 181 Hình 5. 2. Các thành phần thiết bị ngoại vi 182 Hình 5. 3. Vào/ ra cách biệt đối với CPU 8088 182 Hình 5. 4. Vào/ ra bằng bảng nhớ đối với CPU 8088 183 Hình 5. 5. Lưu đồ hoạt động của điều khiển vào/ ra bằng chương trình 183 Hình 5. 6. Hoạt động của điều khiển vào/ ra bằng ngắt 184 Hình 5. 7. Sơ đồ hoạt động của hệ thống Bus có vi mạch DMA 185 Hình 5. 8. Hệ thống BUS trong bo mạch chủ của một máy tính 186 Hình 5. 9. Sơ đồ khối của mô-đun vào/ ra 187 Hình 5. 10. Mô-đun âm thanh 187 Hình 5. 11. Mô-đun Ethernet 188 Hình 5. 12. Sự tương tác Direct Memory Access 189 Hình 5. 13. Vị trí DMAC trong máy tính 189 Hình 5. 14. Sơ đồ cấu trúc của DMAC 190 Hình 5. 15. Sơ đồ khối và BUS trong bo mạch chủ 191 Hình 5. 16. Thành phần chính trên bo mạch chủ 192 Hình 5. 17. Chipset bắc 192 Hình 5. 18. Chipset nam 193 Hình 5. 19. ROM BIOS 193 Hình 5. 20. CMOS 194 Hình 5. 21. IC SIO 194 Hình 5. 22. Mạch tạo xung 194 Hình 5. 23. Mô-đun tạo ổn áp cho CPU 195 viii
- Hình 5. 24. Khe AGP và PCI Express 195 Hình 5. 25. Khe PCI 196 Hình 5. 26. Khe RAM 196 Hình 5. 27. Ba cổng IDE và bốn cổng SATA 196 Hình 5. 28. Chân cắm cấp nguồn điện cho Mainboard 196 Hình 5. 29. Chân cắm cấp nguồn điện cho CPU 197 Hình 5. 30. Chân cắm quạt của CPU 197 Hình 5. 31. Các dây tín hiệu nối với Case 197 Hình 5. 32. Giao diện chính của phần mềm CPU-Z 198 Hình 5. 33. Thông tin về Cache 199 Hình 5. 34. Thông tin về Mainboard 200 Hình 5. 35. Thông tin về RAM 201 Hình 5. 36. Thông tin chi tiết về RAM 201 Hình 5. 37. Thông tin chi tiết về Card đồ họa 202 Hình 5. 38. Thông tin về phiên bản phần mềm 203 Hình 5. 39. Giao diện chính của phần mềm GPU-Z 204 Hình 5. 40. System Properties trên Windows 205 Hình 5. 41. Mở tiện ích DirectX Diagnostic 205 Hình 5. 42. Giao diện chính của DirectX Diagnostic 206 ix
- DANH MỤC BẢNG BIỂU Bảng 1. 1. Lịch sử phát triển máy tính thế hệ thứ 4 (Intel) 6 Bảng 1. 2. Các thế hệ máy tính 8 Bảng 1. 3. Hệ thập lục phân 19 Bảng 1. 4. Bảng mã ASCII - Một số ký tự điều khiển 32 Bảng 1. 5. Bảng mã ASCII - Các ký tự in được 32 Bảng 1. 6. Bảng chân lý của hàm f(A,B)=A+B 36 Bảng 1. 7. Một số định luật của đại số logic 36 Bảng 1. 8. Bảng chân lý và bảng trạng thái của hàm f(A,B)=A+B 40 Bảng 1. 9. Bảng chân lý của hàm Z = F(A, B, C) = 41 Bảng 1. 10. Bảng chân lý của hàm 42 Bảng 1. 11. Bảng chân lý của hàm 43 Bảng 1. 12. Bảng chân lý của bộ cộng bán tổng 46 Bảng 1. 13. Bảng trạng thái của bộ cộng toàn phần 46 Bảng 1. 14. Bảng sự thật mạch mã hóa nhị phân từ 8 sang 3 48 Bảng 1. 15. Bảng bảng sự thật mạch mã hóa nhị phân từ 10 sang 4 49 Bảng 1. 16. Bảng chân lý mạch giải mã 3 sang 8 50 Bảng 2. 1. Cách chọn lựa vị trí các toán hạng 57 Bảng 2. 2. Chuỗi lệnh dùng thực hiện phép tính C := A + B 57 Bảng 2. 3. Điểm lợi và bất lợi của 3 kiểu kiến trúc phần mềm 58 Bảng 2. 4. Kiểu định vị của một bộ xử lý có kiến trúc phần mềm kiểu thanh ghi đa dụng. 72 Bảng 2. 5. Đặc tính của một vài máy CISC 74 Bảng 2. 6. Đặc tính của ba mẫu đầu tiên máy RISC 74 Bảng 3. 1. Bảng thông số kỹ thuật của CPU core i3, i5, i7 95 Bảng 3. 2. Các thông số kỹ thuật của CPU ghi trên báo giá các công ty máy tính 95 Bảng 3. 3. Bảng mã hoá tập hợp các ánh xạ trong trường mẫu. 108 Bảng 4. 1. Bảng chân lý của MROM 125 Bảng 4. 2. Kích thước cache của một số hệ thống 144 x
- CHƢƠNG 1: NHẬP MÔN 1.1. Khái niệm và phân loại máy tính 1.1.1. Khái niệm máy tính và kiến trúc máy tính Máy tính (Computer) là thiết bị điện tử thực hiện các công việc sau: - Nhận dữ liệu vào (Input). - Xử lý dữ liệu theo chương trình được nhớ sẵn bên trong bộ nhớ (Processing). - Đưa dữ liệu ra (Output). Máy tính thực hiện được các công việc trên thông qua: - Chương trình (Program): là dãy các câu lệnh nằm trong bộ nhớ, nhằm mục đích hướng dẫn máy tính thực hiện một công việc cụ thể nào đấy. Máy tính thực hiện theo lệnh trong chương trình. Máy tính không tự thực hiện được nếu không có chương trình. - Phần mềm (Software): bao gồm chương trình và dữ liệu. - Phần cứng (Hardware): baao gồm tất cả các thành phần vật lý cấu thành lên hệ thống máy tính. - Phần dẻo (Firmware): Là thành phần chứa cả hai thành phần trên. Kiến trúc máy tính đề cập đến những thuộc tính hệ thống mà lập trình viên có thể quan sát được. Nói cách khác, đó là các thuộc tính có ảnh hưởng trực tiếp đến việc thực thi một chương trình, ví dụ như tập lệnh của máy tính, số bit được sử dụng để biểu diễn số liệu, cơ chế nhập/ xuất, kỹ thuật định địa chỉ bộ nhớ Kiến trúc máy tính bao gồm ba phần: Kiến trúc phần mềm, tổ chức máy tính và lắp đặt phần cứng. - Kiến trúc phần mềm của máy tính: chủ yếu là kiến trúc phần mềm của bộ xử lý, bao gồm: tập lệnh, dạng các lệnh và các kiểu định vị. Trong đó, tập lệnh là tập hợp các lệnh mã máy (mã nhị phân) hoàn chỉnh có thể hiểu và được xử lý bởi bộ xử lý trung tâm. Thông thường các lệnh trong tập lệnh được trình bày dưới dạng hợp ngữ Kiến trúc phần mềm là phần mà các lập trình viên hệ thống phải nắm vững để việc lập trình hiệu quả. - Tổ chức của máy tính (Computer Organization): liên quan đến cấu trúc bên trong của bộ xử lý, cấu trúc các bus, các cấp bộ nhớ và các mặt kỹ thuật khác của máy tính. Tổ chức máy tính quan tâm đến các đơn vị vận hành và sự kết nối giữa chúng nhằm thực hiện hóa những đặc tả về kiến trúc, chẳng hạn như về tín hiệu điều khiển, giao diện giữa máy tính với các thiết bị ngoại vi, kỹ thuật bộ nhớ được sử dụng - Lắp đặt phần cứng của máy tính: chính là việc lắp ráp một máy tính dùng các linh kiện điện tử và các bộ phận phần cứng cần thiết. 1
- Cấu trúc máy tính (Computer Structure): là những thành phần của máy tính và những liên kết giữa các thành phần. Kể từ lúc ngành công nghiệp máy tính ra đời cho đến nay, sự phân biệt giữa kiến trúc và tổ chức máy tính là một yếu tố quan trọng. Nhiều hãng sản xuất máy tính cho ra đời cả một họ máy chỉ khác nhau về tổ chức còn kiến trúc hoàn toàn giống nhau. Kết quả là các kiểu máy trong cùng một họ có giá cả và hiệu suất vận hành khác nhau. Hơn thế nữa, một kiến trúc máy có thể tồn tại qua nhiều năm liền trong khi tổ chức máy dựa trên đó sẽ thay đổi theo bước tiến của công nghệ. Tất cả họ Intel*86 đều có kiến trúc cơ bản giống nhau. IBM System/370 đều có kiến trúc cơ bản giống nhau. Hình 1. 1. Máy tính 1.1.2. Phân loại máy tính Máy tính là một khái niệm tương đối rộng, tuỳ theo cấu trúc, chức năng, hình dáng mà có thể phân ra nhiều loại khác nhau. Về căn bản máy tính được phân làm các loại chính sau: Phân loại theo tín hiệu xử lý: + Máy tính tương tự (Analog Computer): xử lý dữ liệu tương tự, dùng trong nghiên cứu khoa học, y học, đo lường khí tượng thuỷ văn + Máy tính số (Digital Computer): xử lý tín hiệu số, dùng rộng rãi trong việc lưu trữ dữ liệu, giáo dục, thương mại, giải trí Phân loại theo khả năng xử lý: + SuperComputer: Siêu máy tính, khả năng tính toán, tốc độ xử lý, khả năng lưu trữ rất lớn. Dùng để chứa cơ sở dữ liệu trong các mạng an ninh quốc phòng, các tập đoàn đa quốc gia + MiniComputer: máy tính nhỏ, khả năng lưu trữ, tốc độ kém hơn siêu máy tính. Thường dùng để chứa cơ sở dữ liệu trong các doanh nghiệp vừa và nhỏ. + MicroComputer: máy vi tính, khả năng xử lý, lưu trữ phù hợp với cá nhân, nên còn được gọi là máy tính cá nhân hay PC (Personal Computer). Phân loại theo công dụng: + Mainframe (máy chính) - Terminate (máy trạm): máy chính dùng để chứa toàn bộ cơ sở dữ liệu và được cài đặt một hệ điều hành đa xử lý (Multiproccessor 2
- Operating System) như MAC OS, Unix Máy trạm đơn giản chỉ là một thiết bị đầu cuối (gồm bàn phím để nhập, màn hình hoặc máy in để xuất) nối vào Mainframe dùng làm hệ thống nhập xuất. Mọi công việc xử lý đều thuộc về máy chính. + Server (Máy chủ) – Client (Máy khách): Máy chủ và máy khách được dùng trong mô hình Client- Server. Máy chủ là máy cung cấp các dịch vụ mạng, cài đặt một hệ điều hành chạy được trên nền Server (Windows NT, Windows 2000 server ). Máy khách có thể hiểu đơn giản là một PC, cài đặt một hệ điều hành Client (Win9x, 2000, XP ), sử dụng các dịch vụ do máy chủ cung cấp. + Máy tính nhúng (Embedded Computer): được đặt trong thiết bị khác để điều khiển thiết bị đó làm việc và được thiết kế chuyên dụng. Ví dụ: điện thoại di động, máy ảnh số, bộ điều khiển trong máy giặt, điều hoà nhiệt độ, router - bộ định tuyến trên mạng. Theo kiểu thiết kế họ phần cứng máy tính cá nhân IBM, các đặc tính kỹ thuật và các chuẩn dành cho PC vào thời gian ban đầu đều do IBM đưa ra. Từ những hệ thống đời đầu như IBM PC, XT (eXTended) và AT (Advanced Technology) cùng với nhiều chuẩn mà các hệ thống ngày nay sử dụng đều phải phù hợp với chuẩn mà IBM đã đưa ra. Bao gồm các nhân tố về bo mạch chủ, cách thiết kế thùng máy và bộ nguồn, cấu trúc bus, cách thức sử dụng tài nguyên hệ thống, cấu trúc và cách thức ánh xạ bộ nhớ, các giao tiếp hệ thống, bộ nối, chân cắm 1.2. Lịch sử phát triển của máy tính Sự phát triển của máy tính được mô tả dựa trên sự tiến bộ của các công nghệ chế tạo các linh kiện cơ bản của máy tính như: bộ xử lý, bộ nhớ, các ngoại vi Ta có thể nói máy tính điện tử số trải qua bốn thế hệ liên tiếp. Việc chuyển từ thế hệ trước sang thế hệ sau được đặc trưng bằng một sự thay đổi cơ bản về công nghệ. 1.2.1. Thế hệ đầu tiên (1946-1955) Hình 1. 2. Máy tính ENIAC 3
- Hình 1. 3. Đèn điện tử ENIAC (Electronic Numerical Integrator and Computer) là máy tính điện tử số đầu tiên do Giáo sư Mauchly và người học trò Eckert tại Đại học Pennsylvania thiết kế vào năm 1943 và được hoàn thành vào năm 1946. Đây là một máy tính khổng lồ với thể tích dài 20 mét, cao 2,8 mét và rộng vài mét. ENIAC bao gồm: 18.000 đèn điện tử, 1.500 công tắc tự động, cân nặng 30 tấn, và tiêu thụ 140KW giờ. Nó có 20 thanh ghi 10 bit (tính toán trên số thập phân). 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 Von- Neumann. Đây là một ý tưởng nền tảng cho các máy tính hiện đại ngày nay. 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 như 48 hệ máy UNIVAC I và 19 hệ máy IBM 701 đã được bán ra. Đặc điểm: - Tiêu thụ nhiều điện năng, toả nhiều nhiệt và hệ thống ít tin cậy. - Xuất hiện băng giấy và phiếu đục lỗ. Chỉ có 1 loại máy mainframe. - Sử dụng ngôn ngữ máy. - Các máy điển hình: ENIAC, EDVAC, IAS - Tính toán chậm, kích thức lớn. - Chế tạo đơn lẻ. 1.2.2. Thế hệ thứ hai (1955-1965) Công ty Bell đã phát minh ra transistor vào năm 1947 và do đó thế hệ thứ hai của máy tính được đặc trưng bằng sự thay thế các đèn điện tử bằng các transistor lưỡng cực. Tuy nhiên, đến cuối thập niên 50, máy tính thương mại 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 4
- 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. IBM 360 -1960s (Transistors) Máy PDP-1 Hình 1. 4. Máy tính thế hệ thứ 2 1.2.3. Thế hệ thứ ba (1966-1980) Thế hệ thứ ba được đánh dấu bằng sự xuất hiện của các mạch kết (mạch tích hợp - IC: Integrated Circuit). Mạch tích hợp hay còn gọi là vi mạch, là các chip bán dẫn trong đó chứa các transistor và các linh kiện khác. Hình 1.5. Mạch tích hợp Micro VAX Siêu máy tính CRAY-1 Hình 1. 6. Các máy tính thế hệ thứ 3 5
- Các mạch kết độ tích hợp mật độ thấp (SSI: Small Scale Integration) có thể chứa vài chục linh kiện và kết độ tích hợp mật độ trung bình (MSI: Medium Scale Integration) chứa hàng trăm linh kiện trên mạch tích hợp. Mạch in nhiều lớp xuất hiện, bộ nhớ bán dẫn bắt đầu thay thế bộ nhớ bằng xuyến từ. Máy tính đa chương trình và hệ điều hành chia thời gian được dùng. 1.2.4. Thế hệ thứ tƣ (1980- đến nay) Thế hệ thứ tư được đánh dấu bằng các IC có mật độ tích hợp cao (LSI: Large Scale Integration) có thể chứa hàng nghìn linh kiện. Các IC mật độ tích hợp rất cao (VLSI: Very Large Scale Integration) có thể chứa hơn 10 ngàn linh kiện trên mạch. Hiện nay, các chip VLSI chứa hàng triệu linh kiện. Với sự xuất hiện của bộ vi xử lý (microprocessor) chứa cả phần thực hiện và phần điều khiển của một bộ xử lý, sự phát triển của công nghệ bán dẫn các máy vi tính đã được chế tạo và khởi đầu cho các thế hệ máy tính cá nhân. 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, Vi xử lý 8088 ra đời đánh dấu thời kỳ phát triển máy tính cá nhân PC (Personal Computer). Bảng 1. 1. Lịch sử phát triển máy tính thế hệ thứ 4 (Intel) Năm Vi xử lý 1979 8088 (Intel) 1978 8086 (Intel) 1980 80286 (Intel) 1993 Pentium (Intel) 1997 Pentium II (Intel), Celeron 1999 Pentium III (Intel), Celeron 2003 Pentium IV (Intel), Celeron Các công nghệ mạch tích hợp: - SSI (Small scale integration) – từ 1965 + Tích hợp tới 100 transistor trên một chip - MSI (Medium scale integration) – cho đến 1971 + Tích hợp từ 100 đến 3,000 transistor trên một chip - LSI (Large scale integration) – từ 1971 đến 1977 + Tích hợp từ 3,000 đến 100,000 transistor trên một chip - VLSI (Very large scale integration) – từ 1978 đến nay + Tích hợp từ 100,000 đến 100,000,000 transistor trên một chip - ULSI (Ultra large scale integration) 6
- Có hơn 100,000,000 transistor trên một chip Hình 1. 7. Các công nghệ sản xuất máy tính 1.2.5. Khuynh hƣớng hiện tại Việc chuyển từ thế hệ thứ tư sang thế hệ thứ 5 còn chưa rõ ràng, 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. Là thời kỳ phát triển máy tính “thông minh”, có thể tự động nhận biết những thay đổi của môi trường xung quanh như con người. Máy tính Neuron - Neural Network - một kỹ thuật của trí khôn nhân tạo, bắt chước cách thức tổ chức các tế bào thần kinh nối với bộ não con người. Người ta cung cấp những thông tin cho mạng thần kinh để huấn luyện cho nó nhận biết được các sự vật mẫu nhằm có thể đưa ra các dự báo hoặc giải pháp xử lý thích ứng. Tuy nhiên cũng nên lưu ý là thế hệ này hiện nay đang trong quá trình nghiên cứu, một số mẫu máy tính thử nghiệm đầu tiên đã xuất hiện trong vài năm trở lại đây và các khái niệm liên quan đang mới hình thành. Theo sự phát triển của công nghệ, các máy tính hiện nay được thiết kế, xây dựng theo một xu hướng chung là: - Mạnh hơn về tốc độ và khả năng tính toán - Nhỏ hơn về kích thước - Tiết kiệm hơn về năng lượng 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. Hiện nay đã có những bước đột phá sang thế hệ máy tính “thông minh” trong đó ROBOT Asimo của hãng Honda là một ví dụ. 7
- Bảng 1. 2. Các thế hệ máy tính Hãng sản xuất và máy Thế hệ Năm Kỹ thuật Sản phẩm mới tính 1 1946- Đèn điện tử Máy tính điện tử IBM 701. UNIVAC 1957 tung ra thị trường 2 1958- Transistors Máy tính rẻ tiền Burroughs 6500, NCR, 1964 CDC6600, Neywell 3 1965- Mach IC Máy tính mini 50 hãng mới: DEC PDP- 1971 11, Data general , Nova 4 1980- LSI - VLSI Máy tính cá nhân và Apple II, IBM-PC, Đến nay trạm làm việc Apolo DN 300, Sun 2 5 Khuynh Xử lý song Máy tính đa xử lý. Sequent, Thinking hướng song Đa máy tính Machine Inc, Honda, hiện tại Casio 1.3. Máy tính Von-Neumann 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) hay còn gọi là máy tính Von-Neumann gồm có các đặc điểm: - Được bắt đầu nghiên cứu từ năm 1947, hoàn thành năm 1952. - Được xây dựng theo ý tưởng “chương trình được lưu trữ” (Stored-program concept) của Von- Neumann/Turing (1945). Sử dụng một bộ nhớ lưu trữ dữ liệu. Bộ nhớ chia làm nhiều ô, mỗi ô có 1 địa chỉ (đánh số thứ tự) để có thể chọn lựa ô nhớ trong quá trình đọc ghi dữ liệu (nguyên lý định địa chỉ). - Chương trình được mã hóa để máy tính hiểu được. - Dữ liệu là những thông tin đơn giản được sử dụng bởi chương trình. - CPU nhận lệnh và dữ liệu từ bộ nhớ, giải mã và thực hiện tuần tự. - Tổ chức của máy tính Von-Neumann hiện đang áp dụng cho các máy tính ngày nay. Hình 1. 8. John von Neumann và máy tính IAS 8
- Hình 1. 9. Kiến trúc máy tính Von-Neumann Máy tính của Von-Neumann bao gồm 4 thành phần cơ bản: - Main Memory (bộ nhớ chính): chứa chương trình và dữ liệu. Bộ nhớ chính gồm 4096 từ, mỗi từ chứa được 40 bit. Hình 1. 10. Sơ đồ máy tính Von Neumann - CPU gồm hai khối: + Khối logic và toán học (CA) hoạt động trên dữ liệu nhị phân, thực hiện các phép toán số học và logic. + Khối điều khiển (CC): giải mã các lệnh từ bộ nhớ và thực hiện chúng tuần tự - Thiết bị vào/ra (I.O) hoạt động do khối CC điều khiển. - Đường truyền dữ liệu BUS: trao đổi dữ liệu giữa các khối trong máy tính Nguyên lý : - Nguyên lý điều khiển bằng chương trình: máy tính thực hiện một công việc theo chương trình được đưa vào bộ nhớ. Nguyên lý này đảm bảo khả năng thực hiện tự động để giải quyết một bài toán của máy tính điện tử - Nguyên lý truy cập qua địa chỉ: dữ liệu trong chương trình không chỉ định bằng giá trị mà thông qua địa chỉ trong bộ nhớ. Nguyên lý đảm bảo tính mềm dẻo của chương trình, có thể thể hiện thuật toán không phụ thuộc vào các giá trị phát sinh trong chương trình. 9
- 1.4. Cấu trúc và chức năng của máy tính Máy tính là một hệ thống phức tạp với hàng triệu thành phần điện tử cơ sở. Ở đây, có hai yếu tố được quan tâm đến là cấu trúc và chức năng. Cấu trúc là cách thức các thành phần hệ thống liên hệ với nhau. Chức năng là hoạt động của mỗi thành phần riêng lẻ với tư cách là một phần của cấu trúc. 1.4.1. Các thành phần cơ bản trong máy tính Cấu trúc chung của máy tính điện tử Máy tính điện tử từ khi ra đời cho tới nay mặc dù đã trải qua 4 thế hệ, liên tục được cải tiến, nhưng nhìn chung vẫn bao gồm 5 đơn vị chức năng chính sau: - Bộ nhớ trong (Central Memory hoặc Main memory): có nhiệm vụ chứa các chương trình và dữ liệu trước khi chương trình được thi hành. - Đơn vị điều khiển (Control Unit, thường được viết tắt là CU): có nhiệm vụ điều khiển sự hoạt động của tất cả các thành phần hệ thống máy tính mà chương trình nó được giao thi hành. - Đơn vị số học và logic (Arthmetic and Logical Unit, thường được viết tắt là bộ ALU): có nhiệm vụ thực hiện các thao tác tính toán theo sự điều khiển của CU. - Thiết bị vào (Input Device): có nhiệm vụ nhận thông tin từ thế giới bên ngoài biến đổi sang dạng thích hợp rồi đưa vào bộ nhớ trong. - Thiết bị ra (Output Device): có nhiệm vụ đưa thông tin từ bộ nhớ trong ra ngoài dưới dạng mà con người yêu cầu. Hình 1. 11. Cấu trúc chung của máy tính Tuy nhiên, theo quan điểm lắp ráp máy tính, thì máy tính gồm các thành phần chính sau: 10
- - CPU (Central Processing Unit - Bộ xử lý trung tâm) - Mainboard (Bo mạch chủ) - RAM (Random Access Memory - Bộ nhớ trong) - HDD (Hard Disk Drive - Ổ cứng) - Card Video (Card hình ảnh) - Monitor (Màn hình) - Power Supply (Bộ nguồn) - Keyboard (Bàn phím) - Mouse (Chuột) 1.4.2. Chức năng của máy tính Một cách tổng quát, một máy tính có thể thực hiện bốn chức năng cơ bản: Xử lý dữ liệu, lưu trữ dữ liệu, trao đổi dữ liệu và điều khiển. - Xử lý dữ liệu: máy tính phải có khả năng xử lý dữ liệu. Dữ liệu có thể có rất nhiều dạng và phạm vi yêu cầu xử lý cũng rất rộng. - Lƣu trữ dữ liệu: máy tính cũng cần phải có khả năng lưu trữ dữ liệu. Ngay cả khi máy tính đang xử lý dữ liệu, nó vẫn phải lưu trữ tạm thời tại mỗi thời điểm phần dữ liệu đang được xử lý. Do vậy ít nhất thì máy tính cần có chức năng lưu trữ ngắn hạn. Tuy nhiên, chức năng lưu trữ dài hạn cũng có tầm quan trọng tương đương, vì dữ liệu cần được lưu trữ trên máy cho những lần cập nhật và tìm kiếm kế tiếp. - Trao đổi dữ liệu: máy tính phải có khả năng trao đổi dữ liệu với thế giới bên ngoài. Khả năng này được thể hiện thông qua việc di chuyển dữ liệu giữa máy tính với các thiết bị nối kết trực tiếp hay từ xa đến nó. Tùy thuộc vào kiểu kết nối và cự ly trao đổi dữ liệu, chúng ta có tiến trình nhập xuất dữ liệu hay truyền dữ liệu: - Điều khiển: bên trong hệ thống máy tính, đơn vị điều khiển có nhiệm vụ quản lý các tài nguyên máy tính và điều phối sự vận hành của các thành phần chức năng phù hợp với yêu cầu nhận được từ người sử dụng. Sau đây, ta sẽ tìm hiểu chức năng chính của các thành phần theo quan điểm lắp ráp. Bộ xử lý trung tâm (CPU) Xử lý hầu hết dữ liệu/ tác vụ của máy tính, điều khiển thiết bị đầu vào (như chuột, bàn phím) cũng như thiết bị đầu ra (như màn hình, máy in). 11
- Hình 1. 12. Bộ xử lý trung tâm Bo mạch chủ (Mainboard) Là thiết bị trung gian để gắn kết tất cả các thiết bị phần cứng khác của máy. Nó là bảng mạch to nhất gắn trong vỏ máy (hay trong laptop). Hình 1. 13. Bo mạch chủ Ngoài ra bo mạch chủ còn tạo ra môi trường hoạt động ổn định cho tất cả các thiết bị khác, kể cả CPU. Bo mạch chủ là một trong những thành phần cơ bản cấu thành nên máy vi tính. Bo mạch chủ quản lý và cấp phát tài nguyên hệ thống cho các thành phần khác sử dụng, đảm nhận một số công việc xử lý dữ liệu đơn giản như giờ hệ thống, xử lý các phép tính toán đơn giản, dấu chấm động Trên bo mạch chủ thường được trang bị các cổng mở rộng PCI, AGP, PCI Xpress, IDE, SCSI, SATA, USB, COM, PS/2, RJ-45, khe cắm CPU, và các chipset cầu bắc, chipset cầu Nam, BIOS. Ổ cứng (HDD) 12
- Hình 1. 14. Ổ đĩa cứng Ổ đĩa cứng là nơi lưu trữ hệ điều hành, phần mềm và mọi dữ liệu. Khi tắt nguồn, mọi dữ liệu trong ổ đĩa cứng vẫn còn nên không phải cài lại phần mềm. Khi bật máy tính, hệ điều hành và ứng dụng sẽ được nạp từ ổ đĩa cứng lên bộ nhớ RAM để chạy. Card Video (Card đồ họa) Card Video hay còn gọi là Card đồ họa, viết tắt là VGA (Video Graphics Adaptor) có nhiệm vụ chính là xử lý thông tin về hình ảnh trong máy tính, ví dụ như màu sắc, độ phân giải, độ tương phản, thông qua kết nối với màn hình để hiển thị hình ảnh giúp người dùng có thể thao tác, xử lý được trên máy tính. Máy tính nào cũng đều phải có VGA để xử lý hình ảnh, độ phân giải cho máy tính. Bộ phận quan trọng nhất quyết định sức mạnh của VGA đó là bộ xử lý đồ họa GPU (Graphic Processing Unit), đảm nhiệm nhiệm vụ xử lý tất cả các vấn đề liên quan đến hình ảnh. Một thành phần quan trọng nữa của VGA là RAM của Card, dung lượng RAM của VGA hiện nay phổ biến là 512MB, 1GB và 2GB. Nhưng sức mạnh VGA nằm ở GPU, chính vì vậy máy chạy VGA có RAM 1GB nhưng vẫn bị chậm hơn những máy chỉ chạy VGA 512MB. VGA chia làm 2 loại: Onboard Card (Card tích hợp) và Video Graphics Card (Card rời). - Onboard Card: là Card có cổng giao tiếp được tích hợp sẵn trên bo mạch chủ của máy tính, cụ thể hơn là nó được nhà sản xuất tích hợp sẵn vào CPU. Onboard Card hoạt động nhờ vào sức mạnh của CPU và RAM để xử lý hình ảnh. Hình 1. 15. Cổng giao tiếp của Onboard Card trên bo mạch chủ 13
- - Video Graphics Card: Có tính năng giống với Onboard Card nhưng nó được thiết kế riêng, hoạt động hoàn toàn độc lập và chuyên về xử lý hình ảnh, đồ họa. Hình 1. 16. Video Graphics Card Các thông số kỹ thuật của từng loại GPU hầu hết đều giống nhau. Ví dụ một số thông số quan trọng của GPU GeForce 9800GT: GPU Engine Specs: Graphics Clock (MHz) 600MHz Processor Clock (MHz) 1500MHz Texture Fill Rate (billion/sec) 33.6 Memory Specs: Memory Clock (MHz) 900 Standard Memory Config 512 MB Memory Interface Width 256-bit Memory Bandwidth (GB/sec) 57.6 Trongđó: + Graphic Clock: Tốc độ của nhân bộ vi xử lý GPU. Ví dụ, tốc độ nhân GPU NVIDIA GeForce 9800GT là 600 MHz. Tốc độ này càng cao càng tốt. + Processor Clock: Tốc độ đồng hồ, còn gọi là Clock Rate. Tốc độ xử lý các lệnh của một bộ vi xử lý. Mỗi máy tính chứa một đồng hồ nội bộ (Internal Clock) có chức năng điều hòa tốc độ xử lý các lệnh và đồng bộ hóa tất cả các thành phần khác nhau có trong máy tính. Đồng hồ này càng nhanh bao nhiêu, số lệnh mà GPU có thể xử lý được mỗi giây nhiều hơn bấy nhiêu. + Texture Fill Rate: Texture Fill Rate còn được hiểu là tốc độ làm đầy. Tốc độ làm đầy thông thường được quy là tốc độ vẽ điểm ảnh của bộ xử lý đồ họa. Đối với Card đồ họa cũ thì quan niệm tốc độ làm đầy là tốc độ dựng tam giác. Tuy nhiên, có 2 dạng tốc độ làm đầy là: tốc độ làm đầy điểm ảnh và tốc độ làm đầy vật liệu. Theo khái niệm mô tả ở trên, tốc độ làm đầy điểm ảnh là số lượng điểm ảnh mà Card đồ họa có thể xuất ra. 14
- + Memory Clock: Tốc độ xung của bộ nhớ. Chỉ số này càng cao càng tốt. + Standard Memory Config: Dung lượng bộ nhớ chứa trong Card. Bộ nhớ thường được sử dụng bây giờ là GDDR gồm GDDR2, GDDR3, GDDR4, GDDR5. Các thế hệ RAM về sau sẽ tốt hơn trước và dung lượng bộ nhớ càng cao thì càng mạnh. Tuy nhiên, một chiếc Card có 1GB RAM GDDR2 chưa chắc đã mạnh hơn 1 chiếc Card 512MB dùng GDDR4. + Memory Interface Width: Bus bộ nhớ. Các loại Card hiện nay Bus bộ nhớ từ 64 bits đến 256 bits, và trong một vài trường hợp có thể đạt đến 512 bits. Bus bộ nhớ càng tăng, thì lượng dữ liệu mà bộ nhớ có thể vận chuyển trong mỗi chu kỳ càng lớn. Ví dụ, một chiếc VGA sử dụng Bus 128 bits có thể mang lượng dữ liệu nhiều gấp đôi so với một chiếc Card Bus 64 bits và Bus 256 bits thì mang gấp 4 lần so với Bus 64 bits. + Memory Bandwidth: Khả năng truyền tải dữ liệu của bộ nhớ. Đây còn được hiểu là băng thông giữa bộ nhớ của Card và GPU. Chỉ số này phụ thuộc vào xung của bộ nhớ và Bus bộ nhớ. Bandwith không phụ thuộc vào dung lượng RAM trên Card. Chỉ số này càng cao càng tốt. Monitor (Màn hình) Hình 1. 17. Màn hình máy tính Tùy thuộc vào loại máy tính, màn hình có thể được gắn liền (máy xách tay, máy để bàn All-In-One) hoặc là một đơn vị riêng biệt được gọi là một màn hình với dây nguồn riêng. Một số màn hình có tích hợp cảm ứng, vì vậy có thể sử dụng ngón tay chạm trên màn hình để điều khiển tương tự như dùng điện thoại hay máy tính bảng. Với các máy tính để bàn truyền thống, màn hình nằm riêng biệt chỉ có nhiệm vụ hiển thị nên nếu có hỏng hóc thì có thể thay thế mà không mất dữ liệu. Chất lượng hiển thị được đo bằng độ phân giải, là số lượng điểm ảnh khi hiển thị ở độ phân giải cao nhất có thể. Ví dụ một màn hình máy tính xách tay có độ phân giải 1.920x1.080 pixel; số đầu tiên đại diện cho độ phân giải ngang và số thứ hai là độ phân giải dọc. Nếu nhân hai số này sẽ cho biêt số lượng điểm ảnh và sau đó chia cho kích thước đường chéo (inch) màn hình sẽ cho biết mật độ điểm ảnh. 15
- Một đặc điểm nữa của màn hình là tỷ lệ khung hình. Hiện tại có hai tiêu chuẩn là 4:3 (hay gọi là màn hình vuông – thực chất không phải hình vuông) và 16:9 (màn hình rộng hay màn hình wide). Với thông số độ phân giải cũng có thể biết một màn hình sở hữu khung hình dạng nào bằng cách rút gọn tỷ lệ độ phân giải ngang/độ phân giải dọc. Ví dụ, một màn hình có độ phân giải tối đa là 800x600, rút gọn ta được giá trị 4/3 tức tỷ lệ khung hình là 4:3. Power Supply (Bộ nguồn) Hình 1. 18. Bộ nguồn máy tính Bộ nguồn chuyển đổi dòng điện xoay chiều (AC) thành dòng điện một chiều (DC) với các mức điện thế ổn định khác nhau để cung cấp điện năng cho các thiết bị của máy vi tính. Một bộ nguồn tốt, công suất cao và điện áp ổn định sẽ giúp cho máy vi tính hoạt động tốt, không bị tình trạng “treo” máy. Các thông số quan trọng khi lựa chọn bộ nguồn: + Công suất (Power): Công suất của bộ nguồn tối thiểu phải đáp ứng đầy đủ cho các thiết bị của máy vi tính, tuy nhiên để đảm bảo cho việc nâng cấp sau này công suất của bộ nguồn luôn được tính dư thêm. + Đối với các máy vi tính thông thường thì bộ nguồn có công suất khoảng 300W đến 350W là đủ, còn các máy vi tính có sử dụng bộ vi xử lý tốc độ cao và có gắn thêm nhiều thiết bị, ổ đĩa thì có thể cần bộ nguồn có công suất 450W hoặc hơn. + Đầu cắm: Bộ nguồn phải có các đầu cắm tương thích với Mainboard, hiện có 2 loại: 20 chân (20 pin) và 24 chân (24 pin), một số bộ nguồn có cả 2 loại dây cắm. Ngoài ra, còn có dây nguồn dành cho các ổ dĩa chuẩn SATA và cho thiết bị đồ họa VGA. + Các loại đầu cắm thông dụng của bộ nguồn thể hiện trên hình 1.19. 16
- Hình 1. 19. Các đầu cắm của bộ nguồn Trong đó: 1) Đầu cắm 24 chân có thể tách rời (20 + 4) để phù hợp với các loại Mainboard khác nhau. 2) Đầu cắm dành cho các ổ dĩa ATA (HDD, CD/DVD, ). 3) Đầu cắm dành cho ổ dĩa mềm. 4) Đầu cắm dành cho các ổ dĩa SATA (HDD, CD/DVD, ). 5) Đầu cắm dành cho các Card chuẩn PCI-EX (Video Card, ) 6) Đầu cắm 3.3V và 5V dành cho một số loại Mainboard. 7) Đầu cắm 12V dành cho các Mainboard. Keyboard (Bàn phím) và Mouse (Chuột) Bàn phím và chuột dùng để nhập dữ liệu vào máy tính. Hiện nay chuột và bàn phím sử dụng cổng USB là nhiều và công nghệ mới nhất hiện nay chuột và bàn phím sử dụng không dây. Hình 1. 20. a. Bàn phím; b.Chuột 1.5. Biểu diễn thông tin trong máy tính 1.5.1. Các hệ đếm Hệ đếm là tập hợp các ký hiệu và một số qui tắc sử dụng tập ký hiệu đó để biểu diễn và xác định các giá trị số. 17
- • Mỗi hệ đếm có một số ký số (digits) hữu hạn. Tổng số ký số của mỗi hệ đếm được gọi là cơ số, ký hiệu là b. • Hệ đếm cơ số b (với b là số nguyên dương và b ≥ 2) mang tính chất sau: - Có b ký số để thể hiện giá trị số. - Ký số nhỏ nhất là 0 và ký số lớn nhất là b-1. - Giá trị vị trí thứ n trong một số bằng cơ số b lũy thừa n: bn - Hệ thập phân (Decimal System): con người sử dụng - Hệ nhị phân (Binary System): máy tính sử dụng - Hệ thập lục phân (Hexadecimal System): dùng biểu diễn rút ngắn số học nhị phân - Hệ thập phân Dùng 10 chữ số: 0, 1, 2, , 9 Dùng n chữ số thập phân có thể biểu diễn được 10n giá trị khác nhau: 00 0 = 0 đến 99 9 = 10n – 1 Giả sử có một số thập phân A: A = an an-1 a1 a0 , a-1 a-2 a-m Khi đó, giá trị của A được tính như sau: n n-1 0 -1 -2 -m A = an*10 + an-1*10 + + a0*10 + a-1*10 + a-2*10 + + a-m*10 Ví dụ 1.1: Biểu diễn số 215.37 dưới dạng hệ thập phân. Giải: 215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2 Các chữ số phần nguyên: 215 : 10 = 21 dư 5 21 : 10 = 2 dư 1 2 : 10 = 0 dư 2 Các chữ số phần thập phân: 0.37 * 10 = 3.7 phần nguyên = 3 0.7 * 10 = 7.0 phần nguyên = 7 - Hệ nhị phân Hệ nhị phân hay hệ đếm cơ số 2 chỉ có hai con số 0 và 1. Đó là hệ đếm dựa theo vị trí. Giá trị của một số bất kỳ nào đó tuỳ thuộc vào vị trí của nó. Các vị trí có trọng số bằng bậc luỹ thừa của cơ số 2. Chấm cơ số được gọi là chấm nhị phân trong hệ đếm cơ số 2. Mỗi một con số nhị phân được gọi là một bit (BInary digiT). Bit ngoài cùng bên trái là bit có trọng số lớn nhất (MSB, Most Significant Bit) và bit ngoài cùng bên phải là bit có trọng số nhỏ nhất (LSB, Least Significant Bit). Dùng n bit có thể biểu diễn được 2n giá trị khác nhau: - 00 000 = 0 đến 11 111 = 2n-1 18
- Giả sử có một số nhị phân A: A = an an-1 a1 a0 , a-1 a-2 a-m Khi đó, giá trị của A được tính như sau: n n-1 0 -1 -2 -m A = an*2 + an-1*2 + + a0*2 + a-1*2 + a-2*2 + + a-m*2 Ví dụ 1. 2: Tính giá trị thập phân của số (1010.11)2. Giải: 23 22 21 20 2-1 2-2 MSB 1 0 1 0 . 1 1 LSB Chấm nhị phân Số nhị phân (1010.11)2 có thể biểu diễn thành: 3 2 1 0 -1 -2 (1010.11)2 = 1*2 + 0*2 + 1*2 + 0*2 + 1*2 + 1*2 = (10.75)10. Chú ý: dùng dấu ngoặc đơn và chỉ số dưới để ký hiệu cơ số của hệ đếm. Ví dụ 1.3: Tính giá trị của số nhị phân như sau: 10111001.101(2) Giải: 1011 1001.101(2) = 27 + 25 + 24 + 23 + 20 + 2-1 + 2-3 = 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125 = 185.625(10) - Hệ thập lục phân (Hexadecima). Các hệ máy tính hiện đại thường dùng một hệ đếm khác là hệ thập lục phân. Hệ thập lục phân là hệ đếm dựa vào vị trí với cơ số là 16. Dùng để viết gọn cho số nhị phân: cứ một nhóm 4 bit sẽ được thay bằng một chữ số Hexa. Hệ này dùng các con số từ 0 đến 9 và các ký tự từ A đến F như trong bảng sau: Bảng 1. 3. Hệ thập lục phân Dùng n chữ số Hexa có thể biểu diễn được 16n giá trị khác nhau: Từ 00 0 = 0 đến FF F = 16n – 1 Giả sử có một số Hexa A: A = an an-1 a1 a0 , a-1 a-2 a-m Khi đó, giá trị của A được tính như sau: n n-1 0 -1 -2 -m A = an*16 + an-1*16 + + a0*16 + a-1*16 + + a-2*16 + + a-m*16 Ví dụ 1.4: Biểu diễn số 1011 0100 00112 dưới dạng số Hexa. 19
- Giải: 1011 0100 00112 = B43 - Hệ BCD (Binary Code decimal). Giữa hệ thập phân và hệ nhị phân còn tồn tại một hệ lai: hệ BCD cho các số hệ thập phân mã hoá bằng hệ nhị phân, rất thích hợp cho các thiết bị đo có thêm phần hiển thị số ở đầu ra dùng các loại đèn hiện số khác nhau. Ở đây dùng bốn số hệ nhị phân (bốn bit) để mã hoá một số hệ thập phân có giá trị nằm trong khoảng từ 0 9. Như vậy ở đây ta không dùng hết các tổ hợp có thể có của 4 bit; vì tầm quan trọng của các số BCD nên các bộ vi xử lý thường có các lệnh thao tác với chúng. Ví dụ 1.5: Biểu diễn số (35)10 dưới dạng số hệ BCD Giải: (35)10 = (00110101)2. 1.5.2. Chuyển đồi giữa các hệ đếm - Biến đổi từ nhị phân sang thập phân Ví dụ 1.6: Biến đổi số nhị phân (11001)2 thành số thập phân. Giải: Trọng số vị trí: 24 23 22 21 20 Giá trị vị trí: 16 8 4 2 1 Số nhị phân: 1 1 0 0 1 4 3 2 1 0 Số thập phân: 1*2 + 1*2 + 0*2 + 0*2 + 1*2 = (25)10 Ví dụ 1.7: Tính giá trị thập phân của số nhị phân sau: (10111001.101)2. Giải: 7 5 4 3 0 -1 -3 (10111001.101)2 = 2 + 2 + 2 + 2 + 2 + 2 + 2 = 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125 = (185.625)10 - Biến đổi thập phân thành nhị phân Cách 1: Chia liên tiếp cho 2 rồi lấy phần dư - Chuyển đổi phần nguyên: Để thực hiện việc đổi từ thập phân sang nhị phân, ta áp dụng phương pháp chia lặp như sau: lấy số thập phân chia cho cơ số để thu được một thương số và số dư. Số dư được ghi lại để làm một thành tố của số nhị phân. Sau đó, số thương lại được chia cho cơ số một lần nữa để có thương số thứ 2 và số dư thứ 2. Số dư thứ hai là con số nhị phân thứ hai. Quá trình tiếp diễn cho đến khi số thương bằng 0. Số nhị phân thu được là các số dư viết theo chiều từ dưới lên trên. 20
- Ví dụ 1.8: Biến đổi số thập phân (29)10 thành nhị phân. Giải: 29/2 = 14 + 1(LSB) 14/2 = 7 + 0 7/2 = 3 + 1 3/2 = 1 + 1 1/2 = 0 + 1(MSB) Vậy (29)10 = (1101)2 . - Chuyển đổi phần thập phân: Nhân phần thập phân với 2, lấy phần nguyên Đối với phần lẻ của các số thập phân, số lẻ được nhân với cơ số và số nhớ được ghi lại làm một số nhị phân. Trong quá trình biến đổi, số nhớ đầu chính là bit MSB và số nhớ cuối là bit LSB. Ví dụ 1.9: Biến đổi số thập phân (0.625)10 thành nhị phân. Giải: 0.625*2 = 1.250. Số nhớ là 1, là bit MSB. 0.250*2 = 0.500. Số nhớ là 0 0.500*2 = 1.000. Số nhớ là 1, là bit LSB. Vậy : (0.625)10 = (0.101)2. - Biến đổi thập lục phân thành thập phân. Các số thập lục phân có thể được biến đổi thành thập phân bằng cách tính tổng của các con số nhân với giá trị vị trí của nó. Ví dụ 1.10: Biến đổi các số a) (5B)16 b) (2AF)16 thành thập phân. Giải : a) Số thập lục phân: 5 B Trọng số vị trí: 161 160 Giá trị vị trí : 16 1 Số thập phân: 5*16 + B*1 = (91)10. b) Số thập lục phân: 2 A F Trọng số vị trí: 162 161 160 Giá trị vị trí : 256 16 1 Số thập phân: 2*256 + A*16 + F*1 = (687)10 - Biến đổi thập phân thành thập lục phân. 21
- Để biến đổi các số thập phân thành thập lục phân, ta sử dụng phương pháp chia lặp, với cơ số 16 rồi lấy số dư. Ví dụ 1.11: Biến đổi (1776)10 thành thập lục phân. Giải: 1776/16 = 111 + 0 (LSB) 111/16 = 6 + 15 hoặc F 6/16 = 0 + 6 (MSB) Số thập lục phân: (6F0)16 - Biến đổi thập lục phân thành nhị phân. Các số thập lục phân rất dễ đổi thành nhị phân. Thực ra các số thập lục phân cũng chỉ là một cách biểu diễn các số nhị phân thuận lợi hơn (bảng 1.3). Để đổi các số thập lục phân thành nhị phân, chỉ cần thay thế một cách đơn giản từng con số thập lục phân bằng bốn bit nhị phân tương đương của nó. Ví dụ 1.12: Đổi số thập lục (DF6)16 thành nhị phân. Giải: D F 6 1101 1111 0110 (DF6)16 = (110111110110)2. - Biến đổi nhị phân thành thập lục phân Để biến đổi một số nhị phân thành số thập lục phân tương đương thì chỉ cần gộp lại thành từng nhóm gồm 4 bit nhị phân, bắt đầu từ dấu chấm nhị phân. Ví dụ 1.13: Biến đổi số nhị phân (1111101000010000)2 thành thập lục phân. Giải: 1111 1010 0001 0000 F A 1 0 Số thập lục phân: (FA10)16 1.5.3. Biểu diễn số nguyên. a) Biểu diễn số nguyên không dấu: Tất cả các số cũng như các mã trong máy vi tính đều được biểu diễn bằng các chữ số nhị phân. Để biểu diễn các số nguyên không dấu, người ta dùng n bit. Tương ứng với độ dài của số bit được sử dụng, ta có các khoảng giá trị xác định như sau: 22
- Số bit Khoảng giá trị n bit: 0 2n - 1 8 bit 0 255 Byte 16 bit 0 65535 Word Ví dụ 1.14: Biểu diễn các số nguyên không dấu sau đây dùng 8 bit: A = 73 ; B = 138 Giải: A = 73 = 64 + 8 + 1 = 26 + 23 + 20 = 0100 1001 B = 138 = 128 + 8 + 2 = 27 + 23 + 21 = 1000 1010 Ví dụ 1.15: Hãy xác định giá trị của các số nguyên không dấu C, D được biểu diễn bằng 8 bit như sau: C = 0010 1010; D = 1010 0110 Giải: C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42 D = 1010 0110 = 27 + 25 + 22 + 21 = 128 + 32 + 4 + 2 = 166 b) Biểu diễn số nguyên có dấu: Phƣơng pháp dùng dấu và độ lớn Người ta sử dụng bit cao nhất biểu diễn dấu; bit dấu có giá trị 0 tương ứng với số nguyên dương, bit dấu có giá trị 1 biểu diễn số âm. Như vậy khoảng giá trị số được biểu diễn sẽ được tính như sau: Số bit Khoảng giá trị: n bit 2n-1-1 8 bit -128 127 Short integer 16 bit -32768 32767 Integer 32 bit -231 231-1 (-2147483648 2147483647) Long integer Ví dụ 1.16: Biểu diễn hai số +23 , -23 dùng phương pháp dấu và độ lớn. Giải: +23 = 0001 0111; -23 = 1001 0111 Vấn đề nảy sinh: Cần quan tâm cả phần dấu và phần độ lớn khi thực hiện các phép toán số học Có đến 2 cách biểu diễn cho số 0 (+0 và -0) Phƣơng pháp dùng mã bù 2 Đối với số dương: biểu diễn dạng nhị phân 23
- Đối với số âm: tìm số bù 2: B1: đổi số dương tương ứng thành nhị phân B2: tìm số bù 1 (đảo bit 1 thành 0, 0 thành 1) B3: tìm số bù 2: số bù 1 cộng với 1 Số bù 2 thu được chính là cách biểu diễn số âm Đặc điểm: Thực hiện các phép toán số học dễ dàng Chỉ có một sự biểu diễn duy nhất cho số 0 Ví dụ 1.17: Biểu diễn các số nguyên có dấu sau đây bằng 8 bit: A = + 69; B = - 92. Giải: A = + 69 = 0100 0101 B = - 92 Ta có: + 92 = 0101 1100 Số bù 1 = 1010 0011 Số bù 2 = 1010 0100 Vậy: B = -92 = 1010 0100 Ví dụ 1.18: Biểu diễn số nguyên có dấu A=+97 và B=-101 theo hai dạng kiểu n=8 bit và n=16 bit trong máy tính Giải : - Biểu diễn số A dạng số nguyên có dấu trong máy tính A = 0110 00012 (n=8 bit) - Biểu diễn số B dạng số nguyên có dấu trong máy tính Biểu diễn số +101 = 0110 01012 Lấy bù 2 1001 10112 => B = - 101 = 1001 10112 - Biểu diễn số A dạng số nguyên có dấu trong máy tính A = 0000 0000 0110 00012 (n=16bit) - Biểu diễn số B dạng số nguyên có dấu trong máy tính Biểu diễn số +101 =0000 0000 0110 01012 Lấy bù 2 1111 1111 1001 10112 => B = -101 = 1111 1111 1001 10112 1.5.4. Biểu diễn số thực Có hai cách biểu diễn số thực trong một hệ nhị phân: số có dấu chấm cố định (fixed point number) và số có dấu chấm động (floating point number). Cách thứ nhất được dùng trong những bộ VXL (micro processor) hay những bộ vi điều khiển (micro 24
- controller) cũ. Cách thứ 2 hay được dùng hiện nay có độ chính xác cao. Đối với cách biểu diễn số thực dấu chấm động có khả năng hiệu chỉnh theo giá trị của số thực. Cách biểu diễn chung cho mọi hệ đếm như sau: R = m.Be Trong đó m là phần định trị, trong hệ thập phân giá trị tuyệt đối của nó phải luôn nhỏ hơn 1. Số e là phần mũ và B là cơ số của hệ đếm. Có hai chuẩn định dạng dấu chấm động quan trọng là: chuẩn MSBIN của Microsoft và chuẩn IEEE. Cả hai chuẩn này đều dùng hệ đếm nhị phân. Thường dùng là theo tiêu chuẩn biểu diễn số thực của IEEE 754-1985(Institute of Electric & Electronic Engineers), là chuẩn được mọi hãng chấp nhận và được dùng trong bộ xử lý toán học của Intel. Bit dấu nằm tại vị trí cao nhất; kích thước phần mũ và khuôn dạng phần định trị thay đổi theo từng loại số thực. Giá trị số thực IEEE đƣợc tính nhƣ sau: Có 3 dạng: Dạng đơn (single precision): 32 bit Dạng kép (double precision): 64 bit Dạng kép mở rộng (double-extended precision): 80 bit Dạng đơn 31 30 23 22 0 S E (phần mũ) M (phần định trị) (dÊu 1bit) 8 bit 23 bit Hình 1. 21. Dạng đơn (single precision): 32 bit Khi đó, 1 số thực bất kỳ được biểu diễn: X = (-1)S * 1,M * 2E – 127 Dải giá trị biểu diễn: 2-127< |X |< 2127, hay: 10-38< |X |< 1038 Các bước thực hiện - Bước 1: Đổi số thực đó nhị phân - Bước 2: Chuyển về dạng: 1,aa a * 2b - Bước 3: Xác định các giá trị: + S = 0 nếu số dương; S = 1 nếu số âm + E – 127 = b E = 127 + b nhị phân + M = aa a00 0 Ví dụ 1.19: 25
- Hãy biểu diễn số thực17,625 dưới dạng chuẩn IEEE 754/85 32 bit. Giải : - B1: A = 17,625 = 10001,101 - B2: A = 1,0001101 * 24 ( 1,aa a * 2b) - B3: Ta có: + S = 0, vì A > 0 + E – 127 = 4 E = 131 = 1000 0011 + M = 000 1101 0000 0000 0000 0000 A = 0100 0001 1000 1101 0000 0000 0000 0000 = 41 8D 00 00H Ví dụ 1.20: Tìm giá trị số thực: C2 0D 00 00H Giải: Ta có: X = C2 0D 00 00H = 1100 0010 0000 1101 0000 0000 0000 0000 S = 1 X < 0 E = 1000 0100 = 132 E -127 = 5 M = 000 1101 0000 0000 0000 0000 X = -1,0001101 * 25 = -100011,01 = -35,25 Dạng kép Khi đó, 1 số thực bất kỳ được biểu diễn: X = (-1)S * 1,M * 2E – 1023 Dải giá trị biểu diễn: 2-1023< |X |< 21023 hay: 10-308< |X |< 10308 63 62 52 50 0 S E (phần mũ) M (phần định trị) (dÊu (Discrete IC’s) 1 )bit 11 bit 52 bit Hình 1. 22. Dạng kép (double precision): 64 bit Dạng mở rộng Khi đó, 1 số thực bất kỳ được biểu diễn: X = (-1)S * 1,M * 2E – 16383 Dải giá trị biểu diễn: 2-16383< |X |< 216383 26
- Hay: 10-4932< |X|< 104932 79 78 64 63 0 E (phần mũ) M (phần định trị ) S (dÊu 1 bit 15 bit ) 64 bit Hình 1. 23. Dạng kép mở rộng (double-extended precision): 80 bit Cộng và trừ nhị phân: - Phép cộng số học các số nhị phân được thực hiện theo quy tắc sau: 0 + 0 = 0 0 + 1 = 1 + 0 = 1 1 + 1 = 10, Trong kết quả này số 0 được gọi là tổng (sum) số 1 được gọi là nhớ (carry). Phép cộng số học các số nhị phân nhiều bit được thực hiện theo quy tắc đó, áp dụng từ phải sang trái, carry từ phép cộng bit thấp được cộng thêm vào phép cộng ở bit cao hơn, carry của bit cao nhất là carry của cả phép cộng. Ví dụ 1.21: Thực hiện các phép tính cộng: a) 1001 0110 b) 1100 1001 + 0101 1011 + 0110 1101 Giải: a) 1001 0110 b) 1100 1001 +0101 1011 + 0110 1101 1111 0001 10011 0110 Số 1 này là carry của phép cộng Người ta cần phải căn cứ vào quy tắc mã hoá số để so cách thức xử lý kết quả thích hợp. Trong máy tính, bộ phận chứa kết quả cũng có độ dài (số bit) như là bộ phận chứa các toán hạng. Khi phép cộng cho kết quả có số bit vượt quá số bit của bộ phận thì kết quả của phép tính có thể không còn đúng nữa. Tuy nhiên, điều này lại còn phụ thuộc vào quy tắc mã hoá số. Nếu các số hạng thực hiện phép cộng được mã hoá theo luật nhị phân tự nhiên thì số nhớ ra khỏi MSB (gọi là carry) báo hiệu có vấn đề ở kết quả tính. Xét hai ví dụ trên, ta thấy ở ví dụ a) phép cộng không có carry cho thấy kết quả của phép tính là bình thường (118 + 91 = 209), còn ở ví dụ b) carry của phép cộng cho thấy kết quả phép tính là không bình thường (201 + 109 = 54). Nếu các số hạng thực hiện phép cộng được mã hoá theo luật của số nguyên (ví dụ mã bù 2) thì ngay cả khi không có 27
- carry, kết quả của phép tính cũng là không đáng tin nếu như có nhớ ở bit cao nhất của phần giá trị. Lại xét hai ví dụ trên, ta thấy ở ví dụ a) mặc dù không có carry nhưng kết quả của phép tính là không đúng (118 + 91 = -47). Còn ở ví dụ b) mặc dù phép cộng có carry nhưng kết quả của phép tính lại đúng (-55 + 109 = 54). Việc nhận xét kết quả phép cộng số nguyên phải dựa vào một dấu hiệu gọi là overflow, tức là trạng thái có một và chỉ một carry trong số hai bit tận cùng bên trái của kết quả (bit dấu và bit cao nhất của phần giá trị). Nếu các số hạng được mã hóa theo BCD thì khi có nhớ ra khỏi một nhóm của một nhóm (một digit) hoặc giá trị một nhóm bốn bit lớn hơn 9 ta cần phải có sự hiệu chỉnh thích hợp, cụ thể là thêm 6 cho mỗi nhóm bốn bít đó. Phép trừ các số nhị phân: 1 - 0 =1 0 - 0 =1-1 = 0 0-1=11 Trong kết quả (11) này,số 1 bên phải dược gọi là hiệu ,số1 bên trái là nhớ vay của phép trừ (gọi là carry hoặc borrow). Ví dụ 1.22: Trừ các số nhị phân nhiều bit sau: 1001 0110 0111 1001 - 0101 1011 - 1100 1101 Giải: Phép trừ các số nhị phân nhiều bit được thực hiện như sau: 1001 0110 0111 1001 - 0101 1011 - 1100 1101 0011 1011 1 1010 1100 Số 1 này là carry/borrow của phép trừ Phép trừ số nhị phân cũng có thể được thưc hiện thông qua phép cộng: A-B = A+(-B) Những lưu ý về tràn số và hiệu chỉnh kết quả phép tính đã trình bày ở phép cộng cũng được áp dụng đối với phép trừ. Cộng số Hexa: Khi cộng hai con số thập phân thì nếu tổng lớn hơn 9 ta viết con số đơn vị và nhớ con số hàng chục lên hàng cao kế. Tương tự khi cộng hai con số thập lục phân, nếu tổng lớn hơn F (tức 1510) ta viết con số đơn vị và nhớ con số hàng thập lục lên hàng cao kế. Ví dụ 1.23: Cộng các số Hexa sau: 28
- Giải: Trường hợp 8 + 8 = 1610 ta viết 16-16 = 0 và nhớ 1 Trường hợp 8 + A = 1810 ta viết 18-16 = 2 và nhớ 1 Trường hợp 8 + F = 2310 ta viết 23-16 = 7 và nhớ 1 Cùng qui luật trên áp dụng khi công hai số hex có nhiều con số, dĩ nhiên số nhớ cho hàng nào thì phải được cộng thêm vào cho hàng đó. Ví dụ 1.24: Cộng các số Hexa sau: Giải: Trừ số Hexa: Khi trừ hai số Hexa, nếu số trừ lớn hơn số bị trừ, ta mượn 1610 để thêm vào số bị trừ và trả 116 cho số trừ của hàng cao kế. Ví dụ 1.25: Trừ các số Hexa sau: Giải: Cộng các số BCD: 29
- Cộng hai số BCD có điểm khác so với cộng hai số nhị phân bình thường. Khi tổng số ở mỗi số hạng của số BCD bằng 9 (=1001) hay nhỏ hơn thì tổng số đó là kết quả cuối cùng. Ví dụ 1.26: Cộng các số BCD sau: Giải: Khi tổng số hai số nhị phân lớn hơn 9 tức từ 1001 trở lên thì tổng số không phải là số BCD nên phải cộng tổng số với 6 (0110) để có tổng số là 9 hoặc nhỏ hơn và tạo ra số nhớ 1 lên hàng BCD có nghĩa cao hơn. Ví dụ 1.27: Cộng các số BCD sau: Giải: Lý do cộng thêm 6 là vì mã BCD không dùng 6 mã cao nhất của số nhị phân 4 bit, có thể cộng nhiều hàng. Ví dụ 1.28: Cộng các số BCD sau: Giải: 30
- Trừ các số BCD: Cũng theo quy luật trừ nhị phân. Nếu số bị trừ nhỏ hơn số trừ thì phải mượn 1 ở hàng có nghĩa trên mà có giá trị là 10 nhị phân ở hàng đang bị trừ (giống số mượn ở phép trừ thập phân). . Để tiện việc sắp xếp ta chuyển 1 ở hàng có nghĩa kế trên xuống hàng đang bị trừ thành 1010 (=10 thập phân) rồi cộng vào với số bị trừ trước khi thực hiện phép trừ. Ví dụ 1.29: Trừ các số BCD sau: Giải: 1.5.5. Biểu diễn ký tự Tuỳ theo các hệ thống khác nhau, có thể sử dụng các bảng mã khác nhau: ASCII, EBCDIC, UNICODE, Các hệ thống trước đây thường dùng bảng mã ASCII (American Standard Codes for Information Interchange) để biểu diễn các 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 bittrong 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. 31
- Bảng mã ASCII (American Standard Code for Information Interchange) Bảng 1. 4. Bảng mã ASCII - Một số ký tự điều khiển Bảng 1. 5. Bảng mã ASCII - Các ký tự in được Bảng mã ASCII là bảng mã các ký tự chuẩn tiếng Anh dùng cho trao đổi dữ liệu giữa các hệ thống tính toán. Bảng mã ASCII sử dụng 8 bít để biểu diễn 1 ký tự, cho phép định nghĩa tổng số 256 ký tự, đánh số từ 0 đến 255. 32 ký tự đầu tiên và ký tự số 127 là các ký tự điều khiển (không in ra được). Các ký tự từ số 32 đến 126 là các ký tự có thể in được (gồm cả dấu trắng). Các vị trí còn lại trong bảng (128-255) để 32
- dành cho sử dụng trong tương lai. Bảng dưới đây lần lượt là minh hoạ các ký tự điều khiển và các ký tự in được của bảng mã ASCII. Bộ mã hợp nhất Unicode: - Do các hãng máy tính hàng đầu thế giới kết hợp thiết kế. - Bộ mã 16 bit có thể xây dựng bộ mã toàn cầu 216 ký tự với 128 ký tự đầu có mã trùng mã trong bảng mã ASCII. - Có hỗ trợ các ký tự Tiếng Việt. Biểu diễn hình ảnh Hình ảnh cũng có thể xử lý bằng máy tính. Khác với hình ảnh thông thường, hình ảnh trong máy tính được mã hoá dưới dạng nhị phân. Có rất nhiều kiểu mã hoá ảnh trong đó hai kiểu thông dụng nhất là. Ảnh bitmap (nghĩa là bản đồ các bít) thể hiện ảnh như một lưới điểm. Như vậy mỗi điểm sẽ phải nằm trong một hàng và một cột nào đó trong lưới, ngoài ra màu của điểm cũng được mã hoá. Các ảnh khí tượng do các vệ tinh chụp gửi về, ảnh phong cảnh, chân dung đều có thể thể hiện theo kiểu này. Ta cũng có thể đưa một ảnh bất kỳ vào máy dưới dạng bitmap bằng máy quét ảnh (scanner), máy quay video số (digital video camera) hay máy chụp ảnh số (digital camera) Nói chung dữ liệu ảnh này là dữ liệu lớn. Vì vậy, người ta thường sử dụng các kỹ thuật nén ảnh trước khi đưa vào máy lưu trữ và khôi phục ảnh khi trình bày. Có rất nhiều chuẩn ảnh khác nhau, chủ yếu khác nhau ở cách tổ chức để nén được ảnh mà vẫn giữ được chất lượng và thể hiện được các hiệu ứng ảnh. Còn lúc hiển thị để xem thì ảnh sẽ được khôi phục dưới dạng bitmap. Ảnh thể hiện theo từng điểm còn gọi là ảnh raster. Kiểu thứ 2 thể hiện ảnh theo cách vẽ. Kiểu này chỉ phù hợp với các ảnh có thành phần là các điểm rời rạc, các đường hoặc hình thể hiện bằng các đường biên như bản vẽ kiến trúc, các bản vẽ kỹ thuật, bản đồ. Cách lưu trữ là lưu thông tin về các thành phần của ảnh. Đối với một đoạn thẳng thì chỉ lưu toạ độ các đầu mút, đối với một hình tròn thì chỉ lưu toạ độ tâm và bán kính Vì thế các ảnh này thường gọn gàng và dễ phóng to thu nhỏ (vì chỉ dùng các phép biến đổi toạ độ). Các ảnh kiểu này gọi là ảnh vector. 33
- Hình 1. 24. Hình Bitmap Biểu diễn âm thanh Âm thanh cũng có thể được xử lý bằng máy tính. Cũng có nhiều phương pháp mã hoá âm thanh. Cách đơn giản nhất là mã hoá bằng cách xấp xỉ dao động sóng âm bằng một chuỗi các byte thể hiện biên độ dao dộng tương ứng theo từng khoảng thời gian bằng nhau. Dĩ nhiên các đơn vị thời gian này cần phải đủ nhỏ để không làm nghèo âm thanh. Đơn vị thời gian này gọi là chu kỳ lấy mẫu. Hình vẽ dưới đây minh hoạ cách lưu trữ xấp xỉ sóng âm, theo đó sẽ lưu lại dãy các giá trị sau: Khi phát, một mạch điện sẽ khôi phục lại sóng âm với một sai lệch chấp nhận được. Một cách khác là phân tích dao động âm thanh thành tổng các dao động điều hoà (các dao động hình sin với tần số và biên độ khác nhau) và chỉ lưu lại các đặc trưng về tần số, và biên độ. Còn có nhiều cách mã hoá âm thanh dựa theo những nguyên lý nén dữ liệu rất hiệu quả Việc số hoá âm thanh cũng được thực hiện nhờ các thiết bị chuyên dụng. Xử lý âm thanh trên máy tính gồm những việc sau: - Thu và mã hoá âm. - Biên tập (sửa chữa, ghép, cắt). - Phân tích (tìm các đặc trưng để nhận dạng tiếng nói). Một số máy tính đã có thể nghe được các lệnh đơn giản. Các máy điện thoại di động hiện nay đã có khả năng nhận dạng tiếng nói. - Tổng hợp tiếng nói. Ở mức độ đơn giản máy tính có thể đọc văn bản thành lời. 34
- Hình 1. 25. Số hóa âm thanh. 1.6. Đại số Boolean 1.6.1. Các phép toán và định lý của đại số Boolean - Biến logic: Đại lượng biểu diễn bằng ký hiệu nào đó chỉ lấy giá trị "1" hoặc "0". - Hàm logic: Biểu diễn nhóm các biến logic liên hệ với nhau thông qua các phép toán logic, một hàm logic cho dù là đơn giản hay phức tạp cũng chỉ nhận giá trị hoặc là "1" hoặc là "0". - Các phép toán logic: có 3 phép toán cơ bản. Phép nhân (và) - kí hiệu là AND. Phép cộng (hoặc) - kí hiệu là OR. Phép phủ định (đảo) - kí hiệu là NOT Đại số logic Để mô tả các mạch điện được xây dựng từ các cổng, chúng ta cần sử dụng đại số logic (Boolean algebra). Hàm logic có một hoặc một số biến vào, nó sẽ sinh ra một giá trị kết quả phụ thuộc vào các biến vào này. Một hàm f đơn giản có thể được định nghĩa như sau: f(A) bằng 1 nếu A bằng 0 và f(A) bằng 0 nếu A bằng 1. Hàm này chính là hàm NOT. Bởi vì một hàm logic n biến chỉ có tập có thể các giá trị biến vào, cho nên hoàn toàn có thể mô tả hàm bằng một bảng có hàng, mỗi hàm cho giá trị của hàm ứng với mỗi tổ hợp khác nhau của các biến vào. Bảng như vậy được gọi là bảng chân lý (Truth table) hay bảng sự thật. Nếu chúng ta thống nhất liệt kê các hàng của bảng chân lý theo thứ tự số học (cơ số 2), nghĩa là cho 2 biến theo thứ tự 00, 01, 10 và 11 thì hàm hoàn toàn có thể được mô tả bởi một số nhị phân bit. Số này nhận được bằng cách đọc kết quả từ 35
- bảng chân lý theo cột, từ trên xuống dưới. Mặc dù hầu hết các hàm logic có thể được biểu diễn bằng bảng chân lý, nhưng khi số biến tăng lên, cách biểu diễn này trở nên bất tiện vì cồng kềnh. Trong trường hợp đó người ta thường sử dụng một cách biểu diễn khác, được trình bày dưới đây. Bảng 1. 6. Bảng chân lý của hàm f(A,B)=A+B Chúng ta có thể nhận thấy rằng mọi hàm logic có thể được chỉ rõ bằng cách cho biết những tổ hợp biến vào làm cho giá trị ra bằng 1. Chúng ta quy ước sẽ ghi một dấu gạch ngang bên trên các biến để chỉ ra rằng các giá trị này được đảo. Ngoài ra sẽ dùng các dấu phép toán nhân và cộng thông thường (dấu . và dấu +) để chỉ các phép toán logic AND và OR. Nếu như vậy việc viết A C có nghĩa là A=1, B=0 và C=1. Tương tự như vậy A + có nghĩa là (A=1 và B=0) or (B=1 and C=0). Một hàm n biến vì thế có thể được mô tả bằng cách cho một tổng của nhiều nhất là hạng thức tích n biến. Phát biểu này đặc biệt quan trọng bởi nó dẫn trực tiếp tới việc thực hiện hàm bằng việc sử dụng các cổng theo chuẩn. Bảng 1. 7. Một số định luật của đại số logic Tên Dạng AND Dạng OR Định luật đồng nhất thức 1A=A 0+A=A Định luật về số 0 (Null law) 0A=0 1+A=1 Định luật lũy đẳng (Idempotent law) AA=A A+A=A Định luật đảo (Inverse law) A =0 A+ =1 Định luật giao hoán (Commutative law) AB=BA A+B=B+A Định luật kết hợp (Associative law) (AB)C=A(BC) (A+B)+C=A+(B+C) Định luật phân phối (Distributive law) A+BC=(A+B)(A+C) A(B+C)=AB+AC Định luật hấp thụ (Absorption law) A(A+B)=A A+AB=A Định luật De Morgan + 1.6.2. Các cổng logic a) Hàm AND (Và) Đối với hàm AND giá trị của hàm chỉ bằng 1 khi các biến của nó đều bằng 1; hay chỉ cần có một biến bằng 0 hàm sẽ có giá trị bằng 0. 36
- Hình 1. 26. Hàm AND Các IC AND thông dụng Hình 1. 27. Các IC AND b) Hàm OR (Hoặc) Hình 1. 28. Hàm OR Đối với hàm OR giá trị của hàm chỉ bằng 0 khi các biến của nó đều bằng 0; hay chỉ cần có một biến bằng 1 hàm sẽ có giá trị bằng 1 Các IC OR thông dụng khác 37
- Hình 1. 29. Các IC OR c) Hàm NOT (Đảo) Đối với hàm NOT giá trị của hàm sẽ là đảo của giá trị biến. Khi biến có giá trị bằng 0 thì hàm bằng 1 ngược lại khi biến bằng 1 thì hàm có giá trị bằng 0. Hình 1. 30. Hàm NOT d) Hàm XOR (Hoặc tuyệt đối) Hình 1. 31. Hàm XOR Ta thấy giá trị của hàm sẽ bằng 1 khi các biến có giá trị khác nhau. Ngược lại giá trị của hàm có giá trị bằng 0 khi giá trị của các biến là bằng nhau (cùng bằng 0 hay 1). e) Hàm NOR (Hoặc đảo) 38
- Đối với hàm NOR giá trị của hàm sẽ bằng 1 khi toàn bộ giá trị của biến bằng 0. Ngược lại, một trong các giá trị của biến bằng 1 giá trị của hàm có giá trị bằng 0. Hay nói khác đi nó là hàm đảo của hàm OR. Hình 1. 32. Hàm NOR Một số IC NOR khác Hình 1. 33. Các IC NOR f) Hàm NAND (Và đảo) Hình 1. 34. Hàm NAND Đối với hàm NAND giá trị của hàm sẽ bằng 0 khi toàn bộ giá trị của biến bằng 1. Ngược lại, một trong các giá trị của biến bằng 0 giá trị của hàm có giá trị bằng 1. Hay nói khác đi nó là hàm đảo của hàm AND. 39
- Biểu diễn qua lại giữa các cổng: Hình 1. 35. Biểu diễn qua lại giữa các cổng 1.6.3. Hàm logic và phƣơng pháp biểu diễn hàm logic Các phƣơng pháp biểu diễn hàm logic - Bảng thật, bảng trạng thái: *Bảng thật: Quan hệ hàm ra với biến vào ở thời điểm hiện tại. *Bảng trạng thái: Hàm ra không những phụ thuộc vào biến vào ở thời điểm hiện tại mà còn phụ thuộc vào (trạng thái) quá khứ của nó. Bảng chân lý của hàm f(A,B)=A+B Bảng trạng thái Bảng 1. 8. Bảng chân lý và bảng trạng thái của hàm f(A,B)=A+B - Bìa Karnaught (Bìa các nô): Biểu diễn tương đương chân lý. Mỗi dòng của bảng chân lý ứng với một ô của bìa các nô. Toạ độ của ô được quy định bởi giá trị tổ hợp biến, giá trị của hàm tương ứng với tổ hợp biến được ghi trong ô. Hình 1. 36. Bìa các nô của hàm f(A,B)=A+B 40
- Với các kí hiệu hàm, biến và các phép tính giữa chúng. Có các dạng giải tích được sử dụng là. + Dạng tuyển: Hàm được cho dưới dạng tổng của tích các biến. + Dạng hội: Hàm được cho dưới dạng tích của tổng các biến. + Dạng tuyển chính quy: Nếu mỗi số hạng chứa đầy đủ mặt các biến. + Dạng tuyển không chính quy: Chỉ cần ít nhất một số hạng chứa không đầy đủ mặt các biến. + Hội chính quy: Nếu mỗi thừa số chứa đầy đủ mặt các biến. + Hội không chính quy: chỉ cần ít nhất một thừa số không chứa đầy đủ mặt các biến. 1.6.4. Tối thiểu hóa hàm logic a) Biểu diễn hàm dạng tuyển chính quy Nguyên tắc: - Giá trị của hàm thành phần chỉ nhận giá trị một. - Số hạng là tổng của tích các biến. - Nếu giá trị của hàm thành phần bằng không ta loại số hạng đó. - Chỉ quan tâm đến các tổ hợp biến tại đó hàm thành phần nhận trị "1". - Số số hạng bằng số lần hàm thành phần nhận trị "1". - Trong biểu thức logic các biến nhận trị "1" giữ nguyên, biến nhận trị"0" ta lấy phủ định. Ví dụ 1.30: Cho hàm logic dạng tuyển như sau: Z = F(A, B, C) = Tại các tổ hợp biến 1, 2, 3, 5, 7 của biến vào hàm nhận trị "1") Bảng 1. 9. Bảng chân lý của hàm Z = F(A, B, C) = 41
- b) Biểu diễn hàm dạng hội chính quy Nguyên tắc: - Giá trị của hàm thành phần chỉ nhận giá trị không. - Số hạng là tích của tổng các biến tổng các biến - Nếu giá trị của hàm thành phần bằng giá một, thì thừa số đó bị loại bỏ. - Hàm chỉ quan tâm đến các tổ hợp biến tại đó hàm thành phần nhận trị "0". - Số thừa số bằng số lần hàm thành phần nhận trị "0". - Trong biểu thức logic các biến nhận trị"0" giữ nguyên, các biến nhận trị "1" ta lấy phủ định. Ví dụ 1.31: Cho hàm logic dạng hội như sau: Tại các tổ hợp biến 0, 4, 6 hàm logic nhận trị "0" Bảng 1. 10. Bảng chân lý của hàm c) Rút gọn Một hàm logic có thể có vô số cách biểu diễn giải tích tương đương. Tuy nhiên chỉ tồn tại 1 cách gọn nhất tối ưu về số biến, số số hạng hay thừa số và được gọi là tối giản. việc tối giản hàm logic mang ý nghĩa quan trọng về phương diện kinh tế, kỹ thuật. Để tối thiểu hoá các hàm logic người ta thường dùng phương pháp đại số và phương pháp bìa các nô. - Phƣơng pháp đại số: Biến đổi biểu thức logic dựa vào các tính chất của đại số Boole. Ta chứng minh các đẳng thức trên, theo tính chất đối ngẫu: Quy tắc 1: Nhóm các số hạng có thừa số chung. Quy tắc 2: Đưa số hạng đã có vào biểu thức logic. 42
- Quy tắc 3: Có thể loại các số hạng thừa. Ví dụ 1.32: Hãy tối giản hàm sau bằng phương pháp đại số: Giải: Từ yêu cầu của bài ta có bảng chân lý như sau Bảng 1. 11. Bảng chân lý của hàm Từ bảng chân lý ta có phương trình trạng thái như sau: Mạch logic thực hiện: Hình 1. 37. Sơ đồ mạch logic - Phƣơng pháp bảng Karnaught (bìa các nô) + Cấu tạo: - Gồm 1 đồ hình các ô vuông, hàm có n biến bảng có 2n ô (1 biến - 2 ô, 2 biến - 4 ô, 3 biến - 8 ô - Thứ tự của các ô do giá trị tổ hợp biến quy định - Hai ô được gọi là kề nhau, hoặc đối xứng chỉ khác nhau 1 giá trị của biến. - Giá trị của hàm tương ứng với tổ hợp biến được ghi ngay trong ô đó. 43
- - Các ô tại đó giá trị của hàm không xác định được đánh bằng dấu "X". + Nguyên tắc tối giản hàm logic trên bìa các nô - Thực hiện nhóm các ô tại đó hàm nhận trị "1" hoặc "0" kề nhau hoặc đối xứng, số ô trong một nhóm dán phải là số luỹ thừa của 2 (khi viết hàm dạng tuyển ta nhóm các ô có giá trị "1", dạng hội nhóm các ô có giá trị "0"). - Trong một nhóm dán các biến có trị thay đổi ta loại, các biến có trị không đổi giữ nguyên, điều này có nghĩa là số ô trong nhóm dán càng nhiều thì số biến bị loại càng tăng (2 ô - loại 1 biến, 4 ô - loại 2 biến 2m ô - loại m biến). - Biểu thức logic có số số hạng hay thừa số chính bằng số nhóm dán. Khi viết hàm logic dưới dạng tuyển các biến còn lại nhận trị "1" ta giữ nguyên, nhận trị "0" ta lấy phủ định, khi viết hàm logic dưới dạng hội thì ngược lại. - Một ô có thể tham gia vào nhiều nhóm dán. - Các ô tại đó giá trị hàm không xác định ta coi tại ô đó hàm có thể lấy giá trị "1" hoặc "0" tuỳ từng trường hợp cụ thể. * Chú ý: Phương pháp tối giản hàm logic trên bìa các nô chỉ thích hợp với hàm có số biến 6. Trường hợp hàm có số biến lớn hơn 6, bảng các nô rất phức tạp. 4 cột 2 hàng ( 3 hàm biến) 2 cột 4 hàng (3 hàm biến) 4 hàng 4 cột (4 biến) Hình 1. 38. Bìa các nô của các hàm 3 biến, 4 biến Ví dụ 1.33: Cho hàm số : Hãy tối giản hàm trên dùng phương pháp bìa bìa các nô ? Giải : Lập bìa các nô tối giản hàm 44
- Hình 1. 39. Bìa các nô của hàm Phương trình trạng thái của hàm như sau: Ví dụ 1.34: Cho hàm số: Hãy tối giản hàm trên dùng phương pháp bìa bìa các nô ? Giải : Lập bìa các nô tối giản hàm: Hình 1. 40. Bìa các nô của hàm Phương trình trạng thái của hàm: 1.7. Một số mạch kết hợp 1.7.1. Mạch logic tổ hợp a) Thiết kế bộ cộng bán tổng ( HA-Half Adder ) Bộ cộng bán tổng thực hiện cộng hai sô nhị phân một bít Quy tắc cộng như sau: Hình 1. 41. Sơ đồ mô phỏng bộ cộng bán tổng ( HA-Half Adder ) Trong đó: a, b là số cộng, s là tổng của phép cộng, c là số nhớ Bảng chân lý mô tả hoạt động của mạch và phương trình logic như sau: 45
- Bảng 1. 12. Bảng chân lý của bộ cộng bán tổng Mạch cộng này chỉ cho phép cộng hai số nhị phân một bít mà không thực hiện cộng hai số nhị phân nhiều bít. Hình 1. 42. Sơ đồ mạch logic cộng hai số nhị phân một bít b) Thiết kế mạch cộng toàn phần ( FA- Full adder ) Hình 1. 43. Sơ đồ mô phỏng mạch Trong đó Cn-1: Số nhớ của lần cộng trước đó Cn: Số nhớ của lần cộng hiện tại Sn: Tổng hiện tại Bảng trạng thái của mạch cộng toàn phần Bảng 1. 13. Bảng trạng thái của bộ cộng toàn phần Tối giản hàm đầu ra bằng phương pháp bìa các nô 46
- Hình 1. 44. Bìa các nô của bộ cộng toàn phần Phương trình trạng thái hàm Sn và Cn Sơ đồ mạch cộng toàn phần Hình 1. 45. Sơ đồ mạch cộng toàn phần c) Thiết kế mạch mã hóa nhị phân từ 8 sang 3 Hình 1. 46. Sơ đồ khối mạch mã hóa nhị phân từ 8 sang 3 Trong đó - x0, x1,. . ., x7 là các ngõ vào tín hiệu - A, B, C là các ngõ ra Mạch mã hóa nhị phân 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: 0 →000 1→001 2→ 010 3→ 011 4→100 5→101 6→ 110 7→ 111 47
- Chọn mức tác động tích cực ở ngõ vào là mức logic 1, ta có bảng sự thật mô tả hoạt động của mạch như sau: Bảng 1. 14. Bảng sự thật mạch mã hóa nhị phân từ 8 sang 3 Khi một ngõ vào ở trạng thái tích cực (mức logic 1) và các ngõ vào không được tích cực nhận mức logic 0. Thì ngõ ra xuật hiện từ mã tương ứng. Cụ thể khi x0=1, các đầu ra còn lại x1= x2= x3 = x4 = x5 = x6 = x7 = 0, thì từ mã ngõ ra là 000. khi x1=1 các đầu ra còn lại x0= x2=x3 = x4 = x5 = x6 = x7 = 0, thì từ mã ngõ ra nhận giá trị 01, vv Từ bảng trạng thái ta có phương trình trạng thái ngõ ra như sau: Từ phương trình trạng thái ngõ ra ta có sơ đồ mạch logic thực hiện quả trình mã hóa như sau: Hình 1. 47. Mạch logic dùng phần tử OR d) Thiết kế mạch mã hóa thập phân 10-4 Hình 1. 48. Sơ đô đồ khối mạch mã hóa thập phân 48
- Trong đó - x0, x1,. . ., x9 là các ngõ vào tín hiệu - A, B, C, D là các ngõ ra Mạch mã hóa nhị phân 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: 0 →0000 1→0001 2→ 0010 3→ 0011 4→ 0100 5→0101 6→ 0110 7→ 0111 8→1000 9→1001 Chọn mức tác động tích cực ở ngõ vào là mức logic 1, ta có bảng sự thật mô tả hoạt động của mạch như sau: Bảng 1. 15. Bảng bảng sự thật mạch mã hóa nhị phân từ 10 sang 4 Từ phương trình trạng thái tối giản ta có sơ đồ mạch logic dùng phần tử OR như sau: Hình 1. 49. Sơ đồ mạch mã hóa thập phân dùng OR 49
- e) Giải mã 3 sang 8 Mạch giải mã 3 đường sang 8 đường bao gồm 3 đường vào tạo nên 8 tổ hợp trạng thái, ứng với mỗi tổ hợp trạng thái được áp vào sẽ có 1 đường ra được tác động. Hình 1. 50. Khối giải mã 3 sang 8 Bảng 1. 16. Bảng chân lý mạch giải mã 3 sang 8 Từ bảng chân lý ta có thể vẽ được sơ đồ mạch logic của mạch giải mã trên Hình 1. 51. Cấu trúc mạch giải mã 3 sang 8 1.7.2. Mạch tuần tự Trigơ (Flip - Flop) là phần tử cơ bản nhất để từ đó chế tạo ra các mạch dãy (mạch logic có nhớ). Mạch Trigơ thuộc loại mạch không đồng bộ có hai trạng thái ổn định bền theo thời gian ứng với hai mức logic "1" và "0". Trạng thái của Trigơ có thể thay đổi khi tác động xung lên các đầu vào. Trạng thái tương lai của Trigơ không những phụ thuộc vào các biến vào mà còn phụ thuộc vào trạng thái hiện tại. Khi ngừng 50
- tác động xung lên các đầu vào, trạng thái Trigơ giữ nguyên, với đặc điểm này các mạch Trigơ được dùng để lưu trữ thông tin dưới dạng mã nhị phân. a) Trigơ R-S không đồng bộ Là loại Trigơ cơ bản nhất để từ đó tạo ra các loại Trigơ khác gồm có 2 đầu vào là R, S và hai đầu ra với: - : Đầu ra chính thường được sử dụng. - : Đầu ra phụ, luôn thoả mãn - R (Reset): Đầu vào xoá. - S (Set): Đầu vào thiết lập. Ý tưởng thiết kế trigơ R-S không đồng bộ theo các điều kiện sau: + Rn = Sn = 0, trạng thái của trigơ giữ nguyên → Qn+1 = Qn. + Rn = 0; Sn = 1 đầu ra trigơ nhận giá trị "1"→ Qn+1 = 1. + Rn = 1; Sn = 0 đầu ra trigơ nhận giá trị "0" → Qn+1 = 0. + Rn = 1; Sn = 1 đây là trạng thái cấm, trạng thái Trigơ là không xác định, trong bảng trạng thái được đánh dấu bằng dấu "x". Hoạt động của trigơ R-S tuân theo bảng trạng thái nh hình vẽ. - n: Trạng thái hiện tại - n + 1: Trạng thái tương lai. - "-": Giá trị tuỳ chọn - có thể lấy giá trị "1" hoặc "0". - x: Trạng thái cấm tại đó giá trị của hàm ra là không xác định. Sơ đồ mô phỏng Bảng trạng thái Hình 1. 52. Sơ đồ mô phỏng và bảng trạng thái của Trigơ R-S không đồng bộ Bảng chuyển tiếp Bảng đầu vào kích Hình 1. 53. Bảng chuyển tiếp và bảng đầu vào kích của Trigơ R-S không đồng bộ Thực hiện nhóm các ô có giá trị “1” trong bảng trạng thái (dạng tuyển) ta có: 51
- Nhóm các ô có giá trị “0” trong bảng trạng thái (dạng hội) ta có: Hình 1. 54. Sơ đồ Trigơ R-S dùng phần tử NAND Hình 1. 55. Sơ đồ Trigơ R-S dùng phần tử NOR b) Trigơ R-S đồng bộ Người ta muốn Trigơ chỉ phản ứng vào những thời điểm xác định, điều này được thực hiện bằng cách đưa thêm tới đầu vào tín hiệu phụ C được gọi là tín hiệu đồng bộ. Khi C = "0" thì R = S = 1 trạng thái Trigơ giữ nguyên còn C = "1" hoạt động của sơ đồ giống Trigơ R-S không đồng bộ như đã phân tích ở phần trên. Hình 1. 56. Trigơ R-S đồng bộ 52
- CÂU HỎI ÔN TẬP CHƢƠNG 1 Câu 1: Trình bày khái niệm máy tính và kiến trúc máy tính. Câu 2: Dựa vào tiêu chuẩn nào để phân chia máy tính thành các thế hệ? Trình bày các đặc trưng cơ bản của máy tính qua các thế hệ. Câu 3: Trình bày cấu trúc và các chức năng cơ bản của máy tính. Câu 4: Nêu các đặc điểm chính và cấu trúc tổng quát của máy tính Von-Neumann. Câu 5: Nêu bảng chân lý, ký hiệu của các cổng logic: AND, OR, NOT, XOR, NOR, NAND và cách biểu diễn qua lại giữa các cổng. Câu 6: Chuyển đổi các số trong hệ đếm cơ số 10 sau đây sang hệ đếm cơ số 2 và hệ đếm cơ số 16. a) 345,125D b) 675,35D Câu 7: Chuyển đổi các số trong hệ đếm cơ số 16 sau đây sang hệ đếm cơ số 2 và hệ đếm cơ số 10. a) DF4H b) 13AFH Câu 8: Chuyển đổi các số trong hệ đếm cơ số 2 sau đây sang hệ đếm cơ số 10 và hệ đếm cơ số 16. a) 100110111B b) 1100101101001100,101B Câu 9: Đổi các số sau từ hệ thập phân sang hệ nhị phân: a) 28 b) 89 c) 294 d) 34,5 e) 55,25 f) 46,3125 Câu 10: Đổi các số sau từ hệ nhị phân sang hệ thập phân: a) 11001 b) 111001 53
- c) 10111011 d) 10001001 Câu 11: Đổi các số sau từ hệ thập phân sang hệ thập lục: a) 68 b) 29 c) 215 Câu 12: Đổi các số sau từ hệ thập lục sang hệ thập phân: a) AF b) 123 c) 10D Câu 13: Biểu diễn các số sau dùng dấu và độ lớn (8 bit): a) +69 b) +105 c) -28 d) -121 Câu 14: Biểu diễn các số sau dùng dấu và độ lớn (16 bit): a) +109 b) +105 c) -98 d) -131 Câu 15: Biểu diễn các số sau dùng mã bù 2 (8 bit – không dấu): a) 57 b) 48 c) 98 d) 131 Câu 15: Biểu diễn các số sau dùng mã bù 2 (8 bit – có dấu): a) +57 b) +48 c) -98 d) -31 Câu 16: Biểu diễn các số sau dùng mã bù 2 (16 bit – không dấu): a) 157 b) 108 c) 128 d) 35 Câu 17: Biểu diễn các số sau dùng mã bù 2 (16 bit – có dấu): a) 137 b) 119 c) -113 d) -53 Câu 18: Có các biểu diễn sau (dùng dấu và độ lớn), hãy xác định giá trị của chúng: a) 0100 1011 b) 1001 1100 c) 0000 0000 1001 0010; d) 1000 0000 0110 1100 Câu 19: Có các biểu diễn sau (dùng mã bù 2- không dấu), hãy xác định giá trị: a) 0100 0001 b) 1010 0100 c) 0000 0000 1001 0010; d) 1000 0000 0010 0100 Câu 20: Có các biểu diễn sau (dùng mã bù 2 - có dấu), hãy xác định giá trị của chúng: a) 0100 1011 b) 1101 1100 54
- c) 0000 0000 0101 0011; d) 1111 1111 1110 1110 Câu 21: Biểu diễn các số nguyên có dấu sau đây dùng phương pháp dấu - độ lớn, và phương pháp mã bù hai 16 bit. a) 472D b) -294D Câu 22: Biểu diễn số thực (-42,25D) theo số có dấu chấm động chuẩn IEEE 754/85 chính xác đơn 32 bit. Câu 23: Biểu diễn số thực (-34/64 D) theo số có dấu chấm động chuẩn IEEE 754/85 chính xác đơn 64 bit. Câu 24: Tìm giá trị số thực C2 3D 00 00H được biểu diễn theo số có dấu chấm động chuẩn IEEE 754/85 chính xác đơn 32 bit. Câu 25: Hãy tính toán các phép tính sau trong hệ đếm cơ số 2. a) 1464D + 1175D b) 1789D – 1960D Câu 26: Hãy tính toán các phép tính sau trong hệ đếm cơ số 2. a) 4647D + 6267D b) FDEH - 56B1H Câu 27: Cho biểu diễn hàm số logic như sau: f( A , B , C ) (0,1,4,5,6) a) Vẽ bảng Karnaugh cho hàm f (với A= MSB). b) Rút gọn hàm f . c) Vẽ sơ đồ logic cho hàm vừa rút gọn. Câu 28: Tối giản hóa các hàm logic sau bằng bảng Karnaugh: a) f(A,B,C,D) = (0,1,4,5,8,9,12,13)(với A= MSB). b) f(A,B,C,D) = (2,4,6,8,9,12,13)(với A= MSB). Câu 29: Tối giản hóa các hàm logic sau bằng phương pháp đại số: a) fABC ,,() ABC ABCABC 55
- b) fABC(,,)( ABCABCABCABC )( )( )( ) Câu 30: Cho biểu diễn hàm số logic như sau: f( A , B , C , D ) (1,2,3,4,6,8,9,11,13) a) Vẽ bảng Karnaugh cho hàm f (với A= MSB). b) Rút gọn hàm f . c) Vẽ sơ đồ logic cho hàm vừa rút gọn. Câu 31: Hãy thiết kế mạch mã hóa 8 đường sang 3 đường. Câu 32: Hãy thiết kế mạch mã hóa 10 đường sang 4 đường. Câu 33: Hãy thiết kế mạch giải mã 3 đường sang 8 đường. Câu 34: Hãy thiết kếmạch giải mã 2 đường sang 4 đường. Câu 35: Hãy thiết kế mạch cộng nhị phân 1 bit (bộ bán tổng HA). Câu 36: Hãy thiết kế mạch cộng nhị phân nhiều bit. Câu 37: Hãy thiết kế mạch dồn kênh 8 sang 1 Câu 38: Hãy thiết kế mạch phân kênh 1 ngõ vào 8 ngõ ra Câu 39: Nêu các loại máy tính được phân loại dựa trên lệnh và cấu trúc bộ nhớ (Flynn). Tại sao kiến trúc song song phát triển mạnh trong thời gian gần đây? 56
- CHƢƠNG 2 : KIẾN TRÚC PHẦN MỀM 2.1. Các kiểu thi hành một lệnh Một lệnh mã máy bao gồm một mã tác vụ và các toán hạng. Ví dụ: lệnh mã máy 01101001010101010000001101100101 Việc chọn số toán hạng cho một lệnh mã máy là một vấn đề then chốt vì phải có một sự cân đối giữa tốc độ tính toán và số các mạch tính toán phải dùng. Tuỳ theo tần số sử dụng các phép như trên mà các nhà thiết kế máy tính quyết định số lượng các mạch chức năng cần thiết cho việc tính toán. Thông thường số toán hạng thay đổi từ 0 tới 3. Ví dụ: lệnh Y := A + B + C + D có thể được hiện bằng một lệnh mã máy nếu ta có 3 mạch cộng, hoặc được thực hiện bằng 3 lệnh mã máy nếu chúng ta chỉ có một mạch cộng, nếu việc tính toán trên xảy ra ít, người ta chỉ cần thiết kế một mạch cộng thay vì phải tốn chi phí lắp đặt 3 mạch cộng. Tuy nhiên, với một mạch cộng thì thời gian tính toán của hệ thống sẽ chậm hơn với hệ thống có ba mạch cộng. Vị trí của toán hạng cũng được xem xét. Bảng 2.1 chọn một vài nhà sản xuất máy tính và 3 kiểu cơ bản của vị trí các toán hạng đối với những lệnh tính toán trong ALU là: ở ngăn xếp, trên thanh ghi tích luỹ, và trên các thanh ghi đa dụng. Những kiến trúc phần mềm này được gọi là kiến trúc ngăn xếp, kiến trúc thanh ghi tích luỹ và kiến trúc thanh ghi đa dụng. Bảng 2. 1. Cách chọn lựa vị trí các toán hạng Một vài nhà sản xuất máy tính tuân thủ chặt chẽ các kiểu chọn vị trí toán hạng nêu trên, nhưng phần nhiều các bộ xử lý dùng kiểu hỗn tạp. Ví dụ, mạch xử lý 8086 của Intel dùng cùng một lúc kiểu "thanh ghi đa dụng" và kiểu "thanh ghi tích luỹ". Ví dụ minh hoạ chuỗi lệnh phải dùng để thực hiện phép tính C := A + B trong 3 kiểu kiến trúc phần mềm. Giả sử A, B, C đều nằm trong bộ nhớ trong. Bảng 2. 2. Chuỗi lệnh dùng thực hiện phép tính C := A + B Kiến trúc ngăn xếp Kiến trúc thanh ghi tích luỹ Kiến trúc thanh ghi đa dụng Push A Load A Load R1, A Push B ADD B ADD R1, B 57
- ADD Store C Store R1, C Pop C Hiện tại các nhà sản xuất máy tính có khuynh hướng dùng kiến trúc phần mềm thanh ghi đa dụng vì việc thâm nhập các thanh ghi đa dụng nhanh hơn thâm nhập bộ nhớ trong, và vì các chương trình dịch dùng các thanh ghi đa dụng có hiệu quả hơn. Bảng 2. 3. Điểm lợi và bất lợi của 3 kiểu kiến trúc phần mềm Loại kiến trúc Lợi điểm Bất lợi Ngăn xếp (Stack) - Lệnh ngắn - Thâm nhập ngăn xếp - Ít mã máy không ngẫu nhiên. - Làm tối thiểu trạng - Mã không hiệu quả thái - Khó dùng trong xử lý bên trong của máy tính song song và ống dẫn - Dễ dàng tạo ra một bộ - Khó tạo ra một bộ biên biên dịch đơn giản cho dịch tối ưu. kiến trúc ngăn xếp Thanh ghi tích luỹ - Lệnh ngắn - Lưu giữ ở thanh ghi (Accumulator Register) - Làm tối thiểu trạng thái tích luỹ là tạm thời. bên trong của máy tính - Nghẽn ở thanh ghi tích (yêu cầu ít mạch chức luỹ năng). - Khó dùng trong xử lý - Thiết kế dễ dàng song song và ống dẫn - Trao đổi nhiều với bộ nhớ. Thanh ghi đa dụng - Tốc độ xử lý nhanh, - Lệnh dài (General Register) định vị đơn giản. - Số lượng thanh ghi bị - Ít thâm nhập bộ nhớ. giới hạn - Kiểu rất tổng quát để tạo các mã hữu hiệu 2.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 sau, ta chỉ đề cập đến kiểu kiến trúc này. Đố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 lên. 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 phải vừa là toán hạng nguồn, vừa là toán hạng đích (Ví dụ: add A, B). 58
- 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. Trong nhiều cách tổ hợp có thể có các loại toán hạng của một lệnh ALU, các máy tính hiện nay chọn một trong 3 kiểu sau : thanh ghi-thanh ghi (kiểu này còn được gọi nạp - lưu trữ), thanh ghi - bộ nhớ và bộ nhớ - bộ nhớ. Kiểu thanh ghi - thanh ghi được nhiều nhà chế tạo máy tính lưu ý với các lý do: việc tạo các mã máy đơn giản, chiều dài mã máy cố định và số chu kỳ xung nhịp cần thiết cho việc thực hiện lệnh là cố định, ít thâm nhập bộ nhớ. Tuy nhiên, kiểu kiến trúc này cũng có một vài hạn chế của nó như: số lượng thanh ghi bị giới hạn, việc các thanh ghi có cùng độ dài dẫn đến không hiệu quả trong các lệnh xử lý chuỗi cũng như các lệnh có cấu trúc. Việc lưu và phục hồi các trạng thái khi có các lời gọi thủ tục hay chuyển đổi ngữ cảnh. 2.3. Tập lệnh - Mỗi một bộ xử lý có một tập lệnh xác định do hãng chế tạo bộ xử lý đó quy định. - Tập lệnh (Instruction set): Là tập hợp các dãy số nhị phân mà bộ xử lý có thể hiểu được để thực hiện một công việc nào đấy. Hình 2. 1. Giản đồ trạng thái của chu kỳ lệnh Mục tiêu của phần này là dùng các ví dụ trích từ các kiến trúc phần mềm được dùng nhiều nhất, để cho thấy các kỹ thuật ở mức ngôn ngữ máy dùng để thi hành các cấu trúc trong các ngôn ngữ cấp cao. Cấu trúc lệnh máy tính là một từ nhị phân (binary word) mà thực hiện một nhiệm vụ cụ thể: - Lệnh được lưu trong bộ nhớ - Lệnh được đọc từ bộ nhớ vào CPU để giải mã và thực hiện - Mỗi lệnh có chức năng riêng của nó 59
- Tập lệnh gồm nhiều lệnh, có thể được chia thành các nhóm theo chức năng: - Chuyển dữ liệu (Data Movement) - Tính toán (Computational) - Điều kiện và rẽ nhánh (Conditioning & Branching) - Các lệnh khác trong các ngôn ngữ cấp cao. Để minh hoạ bằng thí dụ, ta dùng cú pháp lệnh trong hợp ngữ sau đây : Từ gợi nhớ mã lệnh, thanh ghi đích, thanh ghi nguồn 1, thanh ghi nguồn 2. - Mã lệnh (Opcode): Cho biết thao tác cần thực hiện. - Các toán hạng (Operands): + Cho biết nơi chứa dữ liệu cần tác động vào, gồm có: Toán hạng nguồn; toán hạng đích. + Cho biết địa chỉ của lệnh tiếp theo. Từ gợi nhớ mã lệnh mô tả ngắn gọn tác vụ phải thi hành trên các thanh ghi nguồn, kết quả được lưu giữ trong thanh ghi đích. Mỗi lệnh của ngôn ngữ cấp cao được xây dựng bằng một lệnh mã máy hoặc một chuỗi nhiều lệnh mã máy. Lệnh nhảy (GOTO) được thực hiện bằng các lệnh hợp ngữ về nhảy (JUMP) hoặc lệnh hợp ngữ về vòng. Chúng ta phân biệt lệnh nhảy làm cho bộ đếm chương trình được nạp vào địa chỉ tuyệt đối nơi phải nhảy đến (PC ← địa chỉ tuyệt đối nơi phải nhảy tới), với lệnh vòng theo đó ta chỉ cần cộng thêm một độ dời vào bộ đếm chương trình (PC ← PC + độ dời). Ta lưu ý là trong trường hợp sau, PC chứa địa chỉ tương đối so với địa chỉ của lệnh sau lệnh vòng. Quá trình thực hiện/ chạy lệnh được chia thành các pha hay giai đoạn (stage). Mỗi lệnh có thể được thực hiện theo 4 giai đoạn: - Đọc lệnh IF(Instruction Fetch): lệnh được đọc từ bộ nhớ vào CPU - Giải mã lệnh ID(Instruction Decode): CPU giải mã lệnh - Chạy lệnh IE(Instruction Execution): CPU thực hiện lệnh - Ghi WB(Write Back): kết quả lệnh (nếu có) được ghi vào thanh ghi hoặc bộ nhớ Ví dụ 2.1: Add R3, R4 - Add: Từ gợi nhớ mã lệnh, thực hiện cộng các toán hạng - R3: Thanh ghi toán hạng nguồn - R4: Thanh ghi toán hạng đích - R4 ← R3 + R4: Cộng các thanh ghi R3 và R4 rồi để kết quả và R4. 2.3.1. Gán trị Việc gán trị, gồm cả gán trị cho biểu thức số học và logic, được thực hiện nhờ một số lệnh mã máy. Cho các kiến trúc RISC, ta có thể nêu lên các lệnh sau: 60
- - Nhóm lệnh chuyển dữ liệu: *) Đặc điểm: - Sao chép dữ liệu từ nguồn sang đích - Các lệnh này không ảnh hưởng đến thanh ghi cờ. MOVE: Sao chép dữ liệu từ toán hạng nguồn sang toán hạng đích. LOAD: Nạp nội dung của ngăn nhớ vào thanh ghi. EXCHANGE: Trao đổi dự liệu của hai toán hạng cho nhau. STORE: Cất nội dung thanh ghi vào ngăn nhớ. PUSH: Cất nội dung của toán hạng nguồn vào Stack. POP: Lấy nội dung từ Stack đưa đến toán hạng đích. LOAD Ri, M (địa chỉ) M[địa chỉ] ← Ri STORE Ri, M(địa chỉ) ; Ri ← M[địa chỉ] Ví dụ 2.2: Vận chuyển dữ liệu giữa các thanh ghi của CPU: MOVE Ri, Rj; Ri ← Rj Chuyển (sao chép) nội dung của thanh ghi Rj sang thanh ghi Ri. Vận chuyển dữ liệu giữa 1 thanh ghi của CPU và một ô nhớ: MOVE 1000, Rj; M[1000] ← Rj Lưu nội dung của thanh ghi Rj vào ô nhớ có địa chỉ 1000. Vận chuyển dữ liệu giữa các ô nhớ: MOVE 1000, (Rj); M[1000] ← M[Rj] Chuyển (sao chép) nội dung của ô nhớ có địa chỉ chứa trong thanh ghi Rj sang số nhớ có địa chỉ 1000. - Lệnh tính toán số học: *) Đặc điểm:- Thực hiện các phép toán số học. - Có ảnh hưởngđến các thanh ghi cờ. ADDITION: Cộng nội dung của hai toán hạng với nhau. SUBTRACT: Trừ hai toán hạng cho nhau. MULTIPLY: Nhân nội dung hai toán hạng với nhau. DIVIDE: Chia nội dung hai toán hạng cho nhau. NEGATIVE: Đảo dấu của toán hạng. INCREMENT: Tăng nội dung của toán hạng lên 1 (thêm 1 vào toán hạng). DECREMENT: Giảm nội dung của toán hạng xuống 1 (Giảm 1 từ toán hạng). ADDD (cộng số có dấu chấm động, chính xác kép) SUBD (trừ số có dấu chấm động, chính xác kép) Ví dụ 2.3: 61
- Lệnh cộng: ADD R1, R2, R3; R1 ← R2 + R3 Cộng nội dung 2 thanh ghi R2 và R3, kết quả lưu vào thanh ghi R1. ADD A, B, C; M[A] ← M[B] + M[C] Cộng nội dung 2 ô nhớ B và C, kết quả lưu vào ô nhớ A. Lệnh trừ: SUBSTRACT R1, R2, R3; R1 ← R2 - R3 Lấy nội dung thanh ghi R2 trừ đi nội dung thanh ghi R3, kết quả lưu vào thanh ghi R1. - Lệnh logic: thực hiện phép tính logic cho từng bit một. *) Đặc điểm: -Thực hiện các phép toán logic. - Có ảnh hưởng đến các cờ. AND: Thực hiện AND hai toán hạng với nhau. OR: Thực hiện OR hai toán hạng với nhau. NOT: Thực hiện NOT toán hạng. XOR: Thực hiện XOR hai toán hạng với nhau. TEST: Kiểm tra điều kiện được chỉ định, thiết lập cờ dựa vào kết quả kiểm tra. COMPARE: So sánh hai hay nhiều toán hạng số học hoặc lôgic, thiết lập dựa vào kết quả so sánh. SHIFT: Dịch trái (hoặc phải) các bít của toán hạng. ROTATE: Quay trái (hoặc quay phải) các bit của toán hạng. - Các lệnh dịch chuyển số học hoặc logic (SHIFT), quay vòng (ROTATE) có hoặc không có số giữ ở ngã vào, sang phải hoặc sang trái. Các lệnh này được thực hiện trên một thanh ghi và kết quả lưu giữ trong thanh ghi khác. Số lần dịch chuyển (mỗi lần dịch sang phải hoặc sang trái một bit) thường được xác định trong thanh ghi thứ ba. Hình 2.2 minh hoạ cho các lệnh này Cho các kiến trúc kiểu RISC, ta có : SLL (shift left logical : dịch trái logic) SRL (shift right logical : dịch phải logic) SRA (shift right arithemtic : dịch phải số học) 62
- Hình 2. 2. Minh hoạ lệnh dịch chuyển và quay vòng Ví dụ 2.4: NOT R1; R1 ← !( R1) Lấy giá trị đảo (phủ định) của nội dung thanh ghi R1. AND R1, R2; R1 ← R1 R2 Nhân bit nội dung 2 thanh ghi R1 và R2, kết quả lưu vào R1. 2.3.2. Lệnh có điều kiện Lệnh có điều kiện có dạng: IF THEN ELSE (Nếu thì nếu không ) a) Ghi nhớ điều kiện Bộ làm tính ALU cung cấp kết quả ở đầu ra tuỳ theo các đầu vào và phép tính cần làm. Nó cũng cho một số thông tin khác về kết quả dưới dạng các bit trạng thái. Các bit này là những đại lượng logic đúng hoặc sai. 63
- Trong các bit trạng thái ta có bit dấu S (Sign - Đúng nếu kết quả âm), bit zero Z (Zero - Đúng nếu kết quả bằng không), bit tràn OVF (Overflow) đúng nếu phép tính số học làm thanh ghi không đủ khả năng lưu trữ kết quả, bit số giữ C (carry) đúng nếu số giữ ở đầu ra là 1 Các bit trên thường được gọi là bit mã điều kiện. Hình 2. 3. Bit trạng thái mà ALU tạo ra Có hai kỹ thuật cơ bản để ghi nhớ các bit trạng thái Cách thứ nhất, ghi các trạng thái trong một thanh ghi đa dụng. Ví dụ lệnh CMP Rk, Ri, Rj Lệnh trên sẽ làm phép tính trừ Ri - Rj mà không ghi kết quả phép trừ, mà lại ghi các bit trạng thái vào thanh ghi Rk. Thanh ghi này được dùng cho một lệnh nhảy có điều kiện. Điểm lợi của kỹ thuật này là giúp lưu trữ nhiều trạng thái sau nhiều phép tính để dùng về sau. Điểm bất lợi là phải dùng một thanh ghi đa dụng để ghi lại trạng thái sau mỗi phép tính mà số thanh ghi này lại bị giới hạn ở 32 trong các bộ xử lý hiện đại. Cách thứ hai, là để các bit trạng thái vào một thanh ghi đặc biệt gọi là thanh ghi trạng thái. Vấn đề lưu giữ nội dung thanh ghi này được giải quyết bằng nhiều cách. Trong kiến trúc SPARC, chỉ có một số giới hạn lệnh được phép thay đổi thanh ghi trạng thái ví dụ như lệnh ADDCC, SUBCC (các lệnh này thực hiện các phép tính cộng ADD và phép tính trừ SUB và còn làm thay đổi thanh ghi trạng thái). Trong kiến trúc PowerPC, thanh ghi trạng thái được phân thành 8 trường, mỗi trường 4 bit, vậy là thanh ghi đã phân thành 8 thanh ghi trạng thái con. b) Nhảy vòng Các lệnh nhảy hoặc nhảy vòng có điều kiện, chỉ thực hiện lệnh nhảy khi điều kiện được thoả. Trong trường hợp ngược lại, việc thực hiện chương trình được tiếp tục với lệnh sau đó. Lệnh nhảy xem xét thanh ghi trạng thái và chỉ nhảy nếu điều kiện nêu 64
- lên trong lệnh là đúng. Chúng ta xem một ví dụ thực hiện lệnh nhảy có điều kiện. Giả sử trạng thái sau khi bộ xử lý thi hành một tác vụ, được lưu trữ trong thanh ghi, và bộ xử lý thi hành các lệnh sau : 1. CMP R4, R1, R2: So sánh R1 và R2 bằng cách trừ R1 cho R2 và lưu giữ trạng thái trong R4 2. BGT R4, +2: Nhảy bỏ 2 lệnh nếu R1 > R2 3. ADD R3, R0, R2: R0 có giá trị 0. Chuyển nội dung của R2 vào R3 4. BRA +1: nhảy bỏ 1 lệnh 5. ADD R3, R0, R1: chuyển nội dung R1 vào R3 6. Lệnh kế Nếu R1 > R2 thì chuỗi lệnh được thi hành là 1, 2, 5, 6 được thi hành, nếu không thì chuỗi lệnh 1, 2, 3, 4, 6 được thi hành. Chuỗi các lệnh trên, trong đó có 2 lệnh nhảy, thực hiện công việc sau đây : Nếu R1 > R2 thì R3 = R1 nếu không R3 = R2 Các lệnh nhảy làm tốc độ thi hành lệnh chậm lại, trong các CPU hiện đại dùng kỹ thuật ống dẫn. Trong một vài bộ xử lý người ta dùng lệnh di chuyển có điều kiện để tránh dùng lệnh nhảy trong một vài trường hợp. Thí dụ trên đây có thể được viết lại: 1. CMP R4, R1, R2 ; So sánh R1 và R2 và để các bit trạng thái trong R4. 2. ADD R3, R0, R2 ; Di chuyển R2 vào R3 3. MGT R4, R3, R1; (MGT: Move if greater than). Nếu R1 > R2 thì di chuyển R1 vào R3 Ví dụ 2.5: Cộng nội dung 100 ô nhớ cạnh nhau, bắt đầu từ địa chỉ 1000. Kết quả lưu vào R0. LOAD R1, #100; R1 ← 100 LOAD R2, #1000; R2 ← 1000 LOAD R0, #0; R0 ← 0 Loop: ADD R0, (R2); R0 ← R0 + M[R2] INCREMENT R2; R2 ← R2 + 1 DECREMENT R1; R1 ← R1 – 1 BRANCH-IF-GREATER-THAN Loop; Quay lại thực hiện lệnh sau nhãn Loop nếu R1 còn lớn hơn 0. 65
- 2.3.3. Vòng lặp Các lệnh vòng lặp có thể được thực hiện nhờ lệnh nhảy có điều kiện mà ta đã nói ở trên. Trong trường hợp này, ta quản lý số lần lặp lại bằng một bộ đếm vòng lặp, và người ta kiểm tra bộ đếm này sau mỗi vòng lặp để xem đã đủ số vòng cần thực hiện hay chưa. Bộ xử lý PowerPC có một lệnh quản lý vòng lặp BNCT Ri, độ dời Với thanh ghi Ri chứa số lần lặp lại. Lệnh này làm các công việc sau: Ri := Ri -1 Nếu Ri <> 0, PC := PC + độ dời. Nếu không thì tiếp tục thi hành lệnh kế. 2.3.4. Thâm nhập bộ nhớ ngăn xếp Ngăn xếp là một tổ chức bộ nhớ sao cho ta chỉ có thể đọc một từ ở đỉnh ngăn xếp hoặc viết một từ vào đỉnh ngăn xếp. Địa chỉ của đỉnh ngăn xếp được chứa trong một thanh ghi đặc biệt gọi là con trỏ ngăn xếp SP (Stack Pointer). Ứng với cấu trúc ngăn xếp, người ta có lệnh viết vào ngăn xếp PUSH và lệnh lấy ra khỏi ngăn xếp POP. Các lệnh này vận hành như sau: - Cho lệnh PUSH SP := SP +1 M (SP) := Ri (Ri là thanh ghi cần viết vào ngăn xếp) - Cho lệnh POP Ri := M(SP) (Ri là thanh ghi, nhận từ lấy ra khỏi ngăn xếp) SP := SP -1 Trong các bộ xử lý RISC, việc viết vào hoặc lấy ra khỏi ngăn xếp dùng các lệnh bình thường. Ví dụ thanh ghi R30 là con trỏ ngăn xếp thì việc viết vào ngăn xếp được thực hiện bằng các lệnh: ADDI R30, R30, 4 ; tăng con trỏ ngăn xếp lên 4 vì từ dài 32 bit STORE Ri, (R30) ; Viết Ri vào đỉnh ngăn xếp Việc lấy ra khỏi ngăn xếp được thực hiện bằng các lệnh : LOAD Ri, (R30) ; lấy số liệu ở đỉnh ngăn xếp và nạp vào Ri SUBI R30, R30,4 ; giảm con trỏ ngăn xếp bớt 4 2.3.5. Các thủ tục Các thủ tục được gọi từ bất cứ nơi nào của chương trình nhờ lệnh gọi thủ tục CALL. Để khi chấm dứt việc thi hành thủ tục thì chương trình gọi được tiếp tục bình thường, ta cần lưu giữ địa chỉ trở về tức địa chỉ của lệnh sau lệnh gọi thủ tục CALL. Khi chấm dứt thi hành thủ tục, lệnh trở về RETURN nạp địa chỉ trở về vào PC. 66
- Trong các kiến trúc CISC (VAX 11, 80x86, 680x0), địa chỉ trở về được giữ ở ngăn xếp. Trong các kiến trúc RISC, một thanh ghi đặc biệt (thường là thanh ghi R31) được dùng để lưu giữ địa chỉ trở về. Lệnh gọi thủ tục là một lệnh loại JMPL Ri, lệnh này làm các tác vụ: R31 := PC ; để địa chỉ trở về trong R31 PC := Ri ; nhảy tới địa chỉ của thủ tục nằm trong thanh ghi Ri Lệnh trở về khi chấm dứt thủ tục là JMP R31, vì thanh ghi R31 chứa địa chỉ trở về. Việc dùng một thanh ghi đặc biệt để lưu trữ địa chỉ trở về là một giải pháp chỉ áp dụng cho các thủ tục cuối cùng, nghĩa là cho thủ tục không gọi thủ tục nào cả. Để có thể cho các thủ tục có thể gọi một thủ tục khác, ta có hai giải pháp: Giải pháp 1: có nhiều thanh ghi để lưu trữ địa chỉ trở về Giải pháp 2: lưu giữ địa chỉ trở về ở ngăn xếp. 67
- Hình 2. 4. Gọi thủ tục và trở về khi thực hiện xong thủ tục Việc gọi thủ tục có thể được thực hiện bằng chuỗi lệnh sau đây: ADDI R30, R30,4 ; R30 là con trỏ ngăn xếp STORE R31, (R30) ; lưu giữ địa chỉ trở về JMPL Ri ; gọi thủ tục Người ta dùng chuỗi lệnh sau đây để trở về chương trình gọi : LOAD R31, (R30) ; phục hồi địa chỉ trở về SUBI R30, R30,4 ; cập nhật con trỏ ngăn xếp JMP R31 ; trở về chương trình gọi Việc truyền tham số từ thủ tục gọi đến thủ tục bị gọi có thể thực hiện bằng cách dùng các thanh ghi của bộ xử lý hoặc dùng ngăn xếp. Nếu số tham số cần truyền ít, ta dùng các thanh ghi. 2.4. Các kiểu định vị Kiểu định vị định nghĩa cách thức thâm nhập các toán hạng. Một vài kiểu xác định cách thâm nhập toán hạng bộ nhớ, nghĩa là cách tính địa chỉ của toán hạng, các kiểu khác xác định các toán hạng nằm trong các thanh ghi. Chú ý rằng, trong các kiểu định vị, ta cần lưu ý khi chuyển đổi dữ liệu nhị phân giữa hai kiểu định địa chỉ liên quan đến ô nhớ, vì mỗi từ máy tính gồm bốn byte, mỗi ô nhớ chứa một byte. Như vậy, một từ máy tính được lưu trong bốn ô nhớ liên tiếp trong bộ nhớ trong, có nhiều cách xác một từ máy tính, trong đó, hai cách tiêu biểu nhất là: - Định vị kiểu Big-Endian: byte thấp nhất được đặt trong ô nhớ có địa chỉ cao nhất (IBM, Motorolla, Sun, HP). - Định vị kiểu Little-Endian: byte thấp nhất được đặt trong ô nhớ có địa chỉ thấp nhất (Intel, DEC). Địa chỉ từ là x cho cả hai minh hoạ Hình 2. 5. Minh hoạ hai cách sắp xếp địa chỉ trong bộ nhớ Ví dụ 2.6: Lưu trữ một từ 32bit: 0001 1010 0010 1011 0011 1100 0100 1101B. 68