Giáo trình môn Kiến trúc máy tính
Khái niệm máy tính
Máy tính (computer) là một thiết bị có khả năng thao tác (lưu trữ, xử lý) trên dữ liệu (thông tin) theo một cách phức tạp và lập trình được. Việc tính toán của nó thực hiện theo một chương trình - một dãy các câu lệnh. Dữ liệu có thể được biểu diễn dưới rất nhiều hình thức của thông tin như: số, ký tự, hình ảnh, âm thanh, Trước khi phát minh ra máy tính, thuật ngữ computer thường được dùng để ám chỉ một người chuyên làm nhiệm vụ tính toán (human computer)
Khái niệm chương trình (program):
Chương trình 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 chương trình.
Khái niệm phần mềm (software):
Bao gồm các thuật toán và các biểu diễn cho máy tính của chúng ta, đó chính là các chương trình. Chương trình có thể được biểu diễn (lưu trữ) trên bìa đục lỗ, băng từ, đĩa từ, hay các môi trường khác, tuy nhiên cái cơ bản nhất của phần mềm chính là tập hợp các câu lệnh (chỉ thị) tạo nên chương trình chứ không phải là môi trường vật lý được sử dụng để ghi (lưu trữ) chương trình.
Tóm tắt nội dung tài liệu: Giáo trình môn Kiến trúc máy tính
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP KHOA ĐIỆN TỬ BỘ MÔN KỸ THUẬT MÁY TÍNH BÀI GIẢNG HỌC PHẦN:KIẾN TRÚC MÁY TÍNH Theo chương trình đào tạo 150 TC Số tín chỉ: 03 Thái Nguyên, năm 2011 Tên tác giả biên soạn: Tăng Cẩm Nhung BÀI GIẢNG HỌC PHẦN:KIẾN TRÚC MÁY TÍNH Theo chương trình đào tạo 150 TC Số tín chỉ: 03 Thái Nguyên, ngày 26 tháng 6 năm 2011 Trưởng bộ môn Trưởng khoa (ký và ghi rõ họ tên) (ký và ghi rõ họ tên) MỤC LỤC DANH MỤC CÁC HÌNH VẼ Hình 11 Mô hình chung của một hệ thống máy tính 28 Hình 12. Bộ nhớ đệm Cache 30 Hình 13. Mô hình phân cấp máy tính 32 Hình 21 Trạng thái biểu diễn hiệu điện thế 35 Hình 22 Qui trình biến đổi tín hiệu 36 Hình 31 Cấu tạo Transistor 50 Hình 32 Một số cổng logic cơ bản 51 Hình 33 Mô tả hàm logic bằng bản chân lý 52 Hình 34 Xây dựng mạch điện bằng hàm logic 53 Hình 35 Mạch dồn kênh cho 4 đường dữ liệu vào 56 Hình 36 Mạch phân kênh 1 đầu vào 4 đầu ra 56 Hình 37 Mạch giải mã 3 đầu vào 57 Hình 38 Bộ dịch 8bit 58 Hình 39 Bộ cộng 58 Hình 310 Bộ 16-bit ripple-carry adder 59 Hình 311 - Cấu tạo một ALU 59 Hình 312 Có một số dạng kết nối thanh ghi dịch 64 Hình 313 Sơ đồ mô tả cấu trúc một vi mạch nhớ 65 Hình 41 Mô hình kết nối CU 69 Hình 42 Mô hình kết nối ALU 70 Hình 43 Dữ liệu được lưu đưa vào CPU 75 Hình 44 Cấu trúc đường dữ liệu 78 Hình 45 Diễn giải một vi chỉ thị điều khiển đường dữ liệu 80 Hình 46 Sơ đồ khối Vi kiến trúc 81 Hình 51 Mô hình phân cấp bộ nhớ 89 Hình 61 Mức 2 và 3 được hỗ trợ bởi phần mềm 105 Hình 62 Chỉ thị được thông dịch bởi vi chương trình 106 Hình 63 Cách thức chia không gian địa chỉ 109 Hình 64 Ví dụ về địa chỉ ảo 110 Hình 65 Ví dụ về một bảng phân trang 111 Hình 66 Cách tạo ra địa chỉ bộ nhớ chính từ địa chỉ ảo 112 Hình 67 Ánh xạ từ không gian địa chỉ ảo lên khung trang bộ nhớ chính có 8 khung trang 113 Hình 71 Tính N = I + J + K 121 Hình 81 Sơ đồ cấu trúc tổng quan của thiết bị ngoại vi 126 Hình 82 Sơ đồ cấu trúc chung của module vào ra 127 Hình 83 Sơ đồ kết nối của DMAC 131 Hình 84 Ghép nối song song ra cổng LPT 133 Hình 85 Trao đổi dữ liệu qua cổng song song giữa 2 PC 135 Hình 86 Cấu trúc của board ghép nối cổng PC-game 137 Hình 87 Sơ đồ kết nối cổng bàn phím 139 Hình 88 Đầu cắm bàn phím AT 140 Hình 89 Đầu cắm bàn phím PS/2 140 DANH MỤC CÁC BẢNG BIỂU Bảng 11 Trạng thái trong nguyên lý số 18 Bảng 12 Đại lượng biến thiên trong nguyên lý tương tự 18 Bảng 21 Quy tắc Cộng Nhị phân. 40 Bảng 22. Quy tắc Trừ Nhị phân : 41 Bảng 23 Bảng mã ASCII chuẩn 47 Bảng 24 Bảng mã ASCII mở rộng 48 Bảng 25 Bảng mã Unicode 48 Bảng 51 Tập chỉ thị của Vi kiến trúc 86 Bảng 71 Nội dung thanh ghi vi chỉ thị 118 Bảng 81 Bảng định dạng cho các thanh ghi dữ liệu, trạng thái và điều khiển 134 Bảng 82 Tín hiệu chân của cổng LPT 135 Bảng 83 Tín hiệu chân của cổng nối tiếp 136 Bảng 84 Tín hiệu chân của cổng PC-game 138 Bảng 85 Byte trạng thái của board game 138 ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN: KIẾN TRÚC MÁY TÍNH (Học phần bắt buộc) 1. Tên học phần: TEE Kiến trúc máy tính . 2 . Số tín chỉ: 03; 3. Trình độ cho sinh viên năm thứ: 3 ( KTMT, SPKT Điện, SPKT Tin) hoặc 4 (Cơ điện tử). 4. Phân bổ thời gian Lên lớp lý thuyết: 3 (tiết/tuần) x 12 (tuần) = 36 tiết. Thảo luận: 6 (tiết/tuần) x 3 (tuần) = 18 tiết. Hướng dẫn bài tập lớn (dài): Không. Khác: Không. Tổng số tiết thực dạy: = 54 tiết thực hiện. Tổng số tiết chuẩn: = 45 tiết chuẩn. 5. Các học phần học trước 6. Học phần thay thế, học phần tương đương 7. Mục tiêu của học phần Sinh viên nắm được cơ sở kiến trúc của một hệ thống máy tính; Nguyên lý hoạt động của các thành phần như: Cơ chế tính toán của CPU; Giao tiếp giữa các thành phần và vào/ra dữ liệu; Tổ chức và lưu trữ thông tin của bộ nhớ, 8. Mô tả vắn tắt nội dung học phần Giới thiệu chung; Cơ sở kiến trúc máy tính; Tính toán luận lý; Tổ chức và kiến trúc bộ nhớ; Giao tiếp và truyền/nhận dữ liệu; Các hệ thống giao tiếp cấp thấp; Thiết kế hệ thống xử lý; Tổ chức của bộ xử lý trung tâm (CPU); Hiệu năng hệ thống; Đa xử lý. 9. Nhiệm vụ của sinh viên 9.1. Phần lý thuyết 1. Dự lớp ³ 80 % tổng số thời lượng của học phần. 2. Chuẩn bị thảo luận. 3. Bài tập, Bài tập lớn (dài): Không 4. Khác: Tham quan, thực hành, : Không 9.2. Phần thí nghiệm Sinh viên phải hoàn thành các bài thí nghiệm sau: 10. Tài liệu học tập Sách, giáo trình chính: Bài giảng “Kiến trúc và tổ chức máy tính”, BM Kỹ thuật máy tính Nguyễn Đình Việt, Kiến trúc máy tính, NXB Giáo dục, 2000. Tống Văn On, Cấu trúc máy tính cơ bản, NXB Thống kê, 2001. Tống Văn On, Cấu trúc máy tính nâng cao, NXB Thống kê, 2001. Trần Quang Vinh, Nguyên lý phần cứng và kỹ thuật ghép nối máy tính, NXB Giáo dục, 2002. Tống Văn On, Hoàng Đức Hải, Giáo trình cấu trúc máy tính, NXB Giáo dục, 2000. Nguyễn Nam Trung, Cấu trúc máy vi tính và thiết bị ngoại vi, NXB KHKT, 2000. 11. Tiêu chuẩn đánh giá sinh viên và thang điểm 11.1. Các học phần lý thuyết Tiêu chuẩn đánh giá 1. Chuyên cần; 2. Thảo luận, bài tập; 3. Bài tập lớn (dài); 4. Kiểm tra giữa học phần; 5. Thi kết thúc học phần; 6. Khác. Thang điểm Điểm đánh giá bộ phận chấm theo thang điểm 10 với trọng số như sau: Chuyên cần: 5 %. Thảo luận, bài tập: 10 %. Bài tập lớn (dài): 15 %. Kiểm tra giữa học phần: 20 %. Điểm thi kết thúc học phần: 50 %. Điểm học phần: Là điểm trung bình chung có trọng số của các điểm đánh giá bộ phận và điểm thi kết thúc học phần làm tròn đến một chữ số thập phân. 11.2. Các học phần thí nghiệm Điểm học phần thí nghiệm bằng trung bình chung có trọng số điểm các bài thí nghiệm. 12. Nội dung chi tiết học phần Người biên soạn: ThS. Tăng Cẩm Nhung 13. Lịch trình giảng dạy Số tuần dạy lý thuyết: 12 tuần Số tuần thảo luận, bài tập: 3 tuần Số tuần thực dạy: 15 tuần Tuần thứ Nội dung Tài liệu học tập, tham khảo Hình thức học Chương 1: Mở đầu Những khái niệm và nguyên lý cơ bản Lịch sử phát triển của máy tính. Phân loại máy tính Các thành phần cơ bản trong hệ thống máy tính Mô hình phân cấp của máy tính Mức logic số Mức vi chương trình Mức máy tính thông thường Mức máy hệ điều hành Mức ngôn ngữ assembly Mức ngôn ngữ bậc cao [1] - [2]-[3] Giảng Chương 2. Biểu diễn thông tin trong máy tính Thông tin và mã hoá thông tin . Biểu diễn số Khái niệm hệ đếm Chuyển đổi giữa các hệ đếm Biểu diễn số nguyên [1] - [2]-[3] Giảng Biểu diễn số thực Các phép toán số học trong hệ nhị phân [1] - [2]-[3] Giảng Chương 3. Mức logic số Giới thiệu về các chip logic Các mạch tổ hợp 3.2.1. Bộ dồn kênh và bộ phân kênh 3.2.2 Bộ mã hoá và giải mã 3.2.3. Bộ cộng và bộ trừ Bộ tạo xung Clock Một số mạch logic cơ bản 3.4.1. Mạch chốt D 3.4.2Mạch lật Flip-Flop 3.4.3. Ứng dụng [1] - [2]-[3] Giảng Bộ nhớ Tổ chức bộ nhớ Thiết kế modul nhớ [1] - [2]-[3]-[4] Chương 4 Mức vi chương trình Cách thức hoạt động của CPU Chức năng và hoạt động của bộ xử lý Đơn vị điều khiển Đơn vị xử lý toán học và logic Thanh ghi Hệ thống BUS [1] - [2]-[3]-[4] Vi kiến trúc Đường dữ liệu Vi chỉ thị Định thời cho vi chỉ thị Định trình tự cho các vi chỉ thị Ví dụ về kiến trúc trong mức máy thông thường [1] - [2]-[3]-[4] Thảo luận [1] - [2]-[3]-[4]-[7] Thảo luận Chương 5. Mức máy thông thường Khuôn dạng lệnh Lệnh tham chiếu bộ nhớ Lệnh tham chiếu thanh ghi Lệnh tham chiếu vào ra Các chế độ địa chỉ Bộ nhớ chính [1] - [2]-[3]-[4] Giảng 10 Bộ nhớ đệm (Cache) Hoạt động của bộ nhớ Cache Ánh xạ Cache Các giải thuật thay thế [1] - [2]-[3]-[4]-[7] Giảng 11 Chương 6. Mức máy hệ điều hành Giới thiệu về mức máy hệ điều hành Bộ nhớ ảo Các chỉ thị vào/ra ảo Bộ nhớ Cache [1] - [2]-[3]-[4]-[7] Giảng 12 Chương 7. Các thiết bị ngoại vi Khái quát Bàn phím – Keyboard Màn hình – Monitor Đĩa từ và đĩa quang 13 Chương 8. Máy tính IBM-PC Giới thiệu Máy IBM PC nguyên thủy Máy IBM PC/XT, IBM PC/AT Hệ điều hành DOS của máy IBM PC 14 Thảo luận [1] - [2]-[3]-[4]-[7] Thảo luận 15 Thảo luận [1] - [2]-[3]-[4]-[7] Thảo luận 14. Ngày phê duyệt: 15. Cấp phê duyệt: Đề cương chi tiết học phần đã được Hội đồng khối ngành Điện – Điện tử và SPKT Điện – Tin học phê duyệt. MỞ ĐẦU Những khái niệm và nguyên lý cơ bản Khái niệm máy tính Máy tính (computer) là một thiết bị có khả năng thao tác (lưu trữ, xử lý) trên dữ liệu (thông tin) theo một cách phức tạp và lập trình được. Việc tính toán của nó thực hiện theo một chương trình - một dãy các câu lệnh. Dữ liệu có thể được biểu diễn dưới rất nhiều hình thức của thông tin như: số, ký tự, hình ảnh, âm thanh, Trước khi phát minh ra máy tính, thuật ngữ computer thường được dùng để ám chỉ một người chuyên làm nhiệm vụ tính toán (human computer) Nhận thông tin vào Xử lý thông tin theo chương trình được lưu trong bộ nhớ Đưa thông tin ra Khái niệm chương trình (program): Chương trình 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 chương trình. Khái niệm phần mềm (software): Bao gồm các thuật toán và các biểu diễn cho máy tính của chúng ta, đó chính là các chương trình. Chương trình có thể được biểu diễn (lưu trữ) trên bìa đục lỗ, băng từ, đĩa từ, hay các môi trường khác, tuy nhiên cái cơ bản nhất của phần mềm chính là tập hợp các câu lệnh (chỉ thị) tạo nên chương trình chứ không phải là môi trường vật lý được sử dụng để ghi (lưu trữ) chương trình. Phần cứng (Hardware): (Các) Chương trình được viết bằng ngôn ngữ máy ở mức 1 có thể được thi hành trực tiếp bởi các mạch điện mà không cần một trình thông dịch hoặc trình biên dịch trung gian nào (cả). Các mạch điện như vậy cùng với bộ nhớ và các thiết bị ngoại vi (vào/ra) tạo thành phần cứng máy của tính (hardware). Phần cứng bao gốm các đối tượng hữu hình như các vi mạch (IC), các bảng (board) mạch in, cáp nối, nguồn điện, bộ nhớ, máy đọc bìa, máy in, terminal, chứ không phải là các ý tưởng, các thuật toán hay các câu lệnh (chỉ thị). Phần dẻo (Firmware): Phần sụn (hay còn gọi là phần nhão) là dạng trung gian giữa phần cứng và phần mềm, nó là phần mềm được nhúng vào các mạch điện tử trong quá trình chế tạo ra các mạch điện tử này. Firmware được sử dụng khi các chương trình hiếm khi hoặc không bao giờ cần thay đổi. Một ví dụ trực quan cho phần sụn này chính là ROM BIOS chứa các chương trình khởi động, các dịch vụ vào/ra cơ sở, dữ liệu về cấu hình của hệ thống, mà chúng đã tối ưu, hoàn chỉnh mà không cần phải thay đổi nữa (ít thay đổi). Hay các phần mềm trong đồ chơi hoặc trong các dụng cụ máy móc, điện thoại di động, Firmware cũng được sử dụng khi các chương trình không được phép mất đi khi mất điện (nguồn nuôi). Trong nhiều máy tính các vi chương trình thuộc Firmware (chẳng hạn như các chương chình con phục vụ ngắt của BIOS). Nói chung một thao tác được thực hiện bằng phần mềm thì cũng có thể xây dựng phần cứng để thực hiện trực tiếp thao tác đó, ngược lại mọi thao tác (các lệnh – chỉ thị) được thực hiện bằng phần cứng thì cũng có thể mô phỏng bằng phần mềm. Việc quyết định đưa những chức năng nhất định nào vào phần cứng và các chức năng nào vào phần mềm được dựa trên các yếu tố như giá cả, tốc độ, độ tin cậy và tần xuất của sư thay đổi có thể xảy ra. Không có những quy tắc bắt buộc quy định một cách rõ ràng rằng phải đưa thao tác x này vào trong phần cứng, còn thao tác y kia phải được thực hiện bằng phần mềm (được lập trình). Những người thiết kế máy tính khác nhau, với những mục tiêu khác nhau có thể thường quyết định khác nhau về vấn đề này. Trong những máy tính đầu tiên thì ranh giới (sự tách biệt) giữa phần cứng và phần mềm là rõ rệt. Phần cứng chỉ thực hiện một số ít các chỉ thị đơn giản, chẳng hạn như lệnh cộng (ADD), lệnh so sánh (CMP), lệnh nhảy (JMP) hoặc một vài lệnh khác. Còn mọi chỉ thị (lệnh) khác được lập trình một cách rõ ràng (chẳng hạn như tính sin, cos, nhân, ). Nếu chương trình cần nhân (hoặc tính sin của một số) 2 số thì người lập trình phải tự mình viết một chương trình con để thực hiện công việc đó (hoặc lấy nó từ thư viện chương trình mẫu, nếu ai đó đã lập sẵn và đưa vào thư viện chương trình mẫu). Dần dần theo thời gian, những người thiết kế phần cứng nhận thấy rõ ràng một số thao tác được thực hiện khá thường xuyên, đó là những công việc đơn giản ( làm nhiều lần thì dễ bị lỗi hay sai sót ( nên cần thiết phải xây dựng những mạch điện phần cứng đặc biệt để thực hiện chúng một cách trực tiếp, làm cho nó được thực hiện nhanh hơn. Kết quả là có khuynh hướng chuyển các thao tác xuống phần cứng (mức 0). Những công việc trước đây được lập trình một cách rõ ràng ở mức máy thông thường thì nay thấy được ở mức dưới, trong phần cứng. Với sự ra đời của kỷ nguyên vi chương trình và máy tính nhiều mức, một khuynh hướng ngược lại cũng xuất hiện. Trong các máy tính đầu tiên, lệnh cộng (ADD), hoặc trừ (SUB) được thực hiện bằng phần cứng (không ai nghi ngờ về điều đó). Trong một máy tính được lập vi chương trình, chỉ thị ADD của mức máy thông thường (hoặc mức ngôn ngữ assembly) thường được thông dịch bằng vi chương trình chạy ở mức dưới cùng và được thực hiện như một dãy các bước nhỏ hơn (dãy các vi chỉ thị ( (vi) chương trình). Lấy lệnh (fetch). Xác định kiểu của lệnh. Định vị dữ liệu sẽ được cộng. Lấy dữ liệu (lấy toán hạng). Thực hiện cộng (lệnh). Cất kết quả. Qua đó ta thấy nó “vận chuyển” theo khuynh hướng từ dưới lên trên, từ mức phần cứng tới mức vi chương trình. Khi xây dựng một máy tính nhiều mức, người thiết kế phải quyết định sẽ đặt những gì tại mỗi mức. Cái gì đặt vào phần cứng, cái gì được thực hiện bằng phần mềm. Trong các máy tính hiện đại ngày nay có rất nhiều chỉ thị được thực hiện bằng phần cứng hoặc bằng vi chương trình, nhưng ban đầu (khởi thuỷ – nguyên văn) chúng được lập trình rất rõ ràng tại mức máy thông thường. Ví dụ: Các chỉ thị cho phép nhân và chia số nguyên. Các chỉ thị đối với số dấu phảy động. Các chỉ thị số học có độ chính các kép (các phép tính số học trên các con số có số chữ số có nghĩa nhiều gấp hai bình thường). Các chỉ thị gọi chương trình con và trở về chương trình con từ chương trình chính sau khi thực hiện xong chương trình con. Các chỉ thị để đếm (cộng 1 vào một biến: inc i i:=i+1). Các chỉ thị xử lý xâu ký tự. Tóm lại chúng ta thấy rằng ranh giới giữa phần cứng và phần mềm là tuỳ ý và chúng không ngừng thay đổi theo sự phát triển cũng như yêu cầu trong từng lĩnh vực cụ thể (chẳng hạn: đặt hàng một máy tính chuyên dụng nào đó ( sự thiết kế sẽ được định hướng theo yêu cầu của lĩnh vực đó). Các phần mềm ngày nay có thể là phần cứng trong nay mai hoặc ngược lại. Hơn thế nữa ranh giới giữa các mức khác nhau cũng dễ thay đổi. Theo quan điểm của từng lập trình viên thì việc chọn một chỉ thị (lệnh) thực tế được thi hành như thế nào không quan trọng (có thể chỉ quan tâm tới tốc độ thực hiện của chỉ thị đó). Một người lập trình ở mức máy (thông thường) có thể sử dụng chỉ thị nhân của mức này như thể nó là một chỉ thị cho phần cứng mà không phải quan tâm lo lắng gì cả, thậm chí cũng không cần biết nó có thực sự là một chỉ thị cho phần cứng hay không. Phần cứng của người này có thể gọi là phần mềm của ngeời khác. Thật vậy, một người lập trình viên không cần thiết phải hiểu rõ mức mà anh ta đang sử dụng được tạo ra như thế nào dẫn đến ý tưởng về thiết kế máy tính có cấu trúc. Một mức thường được gọi là máy ảo vì người lập trình nghĩ về nó như ... này có tốc độ làm việc chậm hơn CPU và RAM rất nhiều. Chính vì lý do trên cần có Module vào ra để ghép nối các thiết bị ngoại vi vào hệ thống BUS máy tính. Phân loại: Thiết bị nhập: Keyboard, Mouse, Scan, Micro, Thiết bị xuất: Monitor, Printer, Thiết bị xuất nhập: Modem, NIC, Driver, Cấu trúc tổng quát của thiết bị ngoại vi: Hình 81 Sơ đồ cấu trúc tổng quan của thiết bị ngoại vi Bộ chuyển đổi tín hiệu: chuyển đổi dữ liệu giữa bên trong và bên ngoài Máy tính Bộ đệm dữ liệu: nơi lưu trữ dữ liệu trung gian giữa Máy tính và thiết bị ngoại vi, đặt bên trong thiết bị ngoại vi. Khối logic điều khiển: điều khiển hoạt động của thiết bị ngoại vi theo tín hiệu từ Module I/O gởi tới thiết bị. Module I/O Chức năng: Nối ghép thiết bị ngoại vi với bus của máy tính. Điều khiển và định thời Trao đổi thông tin với CPU Trao đổi thông tin với thiết bị ngoại vi Đệm giữa máy tính với thiết bị ngoại vi Phát hiện lỗi của các thiết bị ngoại vi. Cấu trúc chung: Hình 82 Sơ đồ cấu trúc chung của module vào ra Thanh ghi đệm dữ liệu: đệm dữ liệu trong quá trình trao đổi Cổng nối ghép vào ra: kết nối thiết bị ngoại vi, mỗi cổng có địa chỉ xác định và chuẩn kết nối riêng phụ thuộc sơ đồ chân. Thanh ghi trạng thái/điều khiển: lưu trữ thông tin trạng thái cho các cổng vào ra Khối logic điều khiển: điều khiển Module vào ra Các phương pháp điều khiển vào ra Có thể phân loại các phương pháp điều khiển vào ra theo 3 cách sau: Vào ra bằng chương trình Vào ra bằng ngắt Truy cập bộ nhớ trực tiếp DMA Vào ra bằng chương trình – polling Nguyên tắc chung: Sử dụng lệnh vào ra trong chương trình để trao đổi dữ liệu với cổng vào ra. Khi CPU thực hiện chương trình gặp lệnh vào ra thì CPU điều khiển trao đổi dữ liệu với cổng vào ra. CPU và thiết bị ngoại vi chỉ trao đổi dữ liệu khi có tín hiệu móc nối báo sẵn sàng (Ready/Akc) của các phía. Sau khi máy tính khởi động thiết bị ngoại vi (khối ghép nối), máy tính luôn chờ và kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi gồm các bước: Đọc thông tin về trạng thái sẵn sàng của thiết bi ngoại vi Kiểm tra: Nếu thiết bị ngoại vi sẵn sàng thì trao đổi dữ liệu, ngược lại thì về bước (1) để kiểm tra lại. Phương pháp này được dùng khi tốc độ trao đổi dữ liệu của các bên (CPU và thiết bị ngoại vi) rất không bằng nhau. Nhận xét: Việc trao đổi thông tin là tin cậy vì chỉ trao đổi khi thiết bị ngoại vi sẵn sàng. Tốn thời gian CPU vì phải kiểm tra trạng thái sẵn sàng của thiết bị ngoại vi (việc kiểm tra này co CPU đảm nhiệm) nên giảm hiệu suất của hệ thống. Phù hợp với những hệ thống không đòi hỏi cao về tốc độ trao đổi dữ liệu, hệ thống có ít thiết bị ngoại vi. Vào ra bằng phương pháp ngắt Bình thường máy tính thực hiện một chương trình (công việc) nào đó. Khi thiết bị ngoại vi có yêu cầu trao đổi dữ liệu, nó sẽ gửi tín hiệu yêu cầu ngắt CPU dừng công việc hiện tại, phục vụ cho trao đổi dữ liệu thông qua tín hiệu yêu cầu ngắt IRQ (Interrupt Request) tác động vào chân INTR (chân tiếp nhận yêu cầu ngắt) của CPU. CPU nhận được yêu cầu ngắt, nếu chấp nhận nó sẽ đưa ra xung INTA xác nhận tới thiết bị ngoại vi, sau đó CPU tìm chương trình con phục vụ ngắt tương ứng số hiệu ngắt và thực hiện nó. Đó chính là chương trình con thực hiện trao đổi (vào/ra) dữ liệu do thiết bị ngoại vi yêu cầu. Khi trao đổi xong (ISR – Interrupt Service Routine) kết thúc thì CPU tiếp tục công việc (chương trình) đã bị gián đoạn. Yêu cầu ngắt Chương trình con phục vụ ngắt (trao đổi dữ liệu) Chương trình hiện tại của CPU Vào ra sử dụng DMA Trong các phương pháp vào/ra dữ liệu bằng chương trình kể trên, dữ liệu phải được chuyển qua lại từ bộ nhớ đến CPU rồi đến thiết bị ngoại vi hoặc ngược lại bằng việc thực hiện từng lệnh (MOV, IN hoặc OUT) của CPU với sự tham gia của các thanh ghi. Dữ liệu của mỗi lần vận chuyển là byte hoặc word (2 byte), tốc độ trao đổi dữ liệu phụ thuộc rất nhiều vào tốc độ thực hiện các lệnh trao đổi dữ liệu kể trên. Nói chung, tốc độ trao đổi dữ liệu là không thể nhanh được. Với các thiết bị làm việc với bộ nhớ khối như màn hình, ổ đĩa, ... yêu cầu trao đổi cả mảng dữ liệu thì phương pháp vào/ra dữ liệu bằng chương trình là không phù hợp. Khi đó người ta nghĩ đến việc điều khiển dữ liệu vào/ra trực tiếp từ bộ nhớ đến thiết bị ngoại vi hoặc ngược lại mà không thông qua CPU bằng những lệnh trao đổi dữ liệu như MOV, IN hoặc OUT. Đó là phương pháp vào/ra dữ liệu bằng cách truy nhập trực tiếp bộ nhớ (DMA – Direcr Memory Access). Trong trường hợp này CPU trao quyền điều khiển cho một mạch phần cứng phụ điều khiển việc vào/ra dữ liệu, đó là DMAC – DMA Controller Các thành phần của DMAC Thanh ghi dữ liệu: chứa dữ liệu trao đổi. Thanh ghi địa chỉ: chứa địa chỉ của ngăn nhớ dữ liệu Bộ đếm dữ liệu: chứa số từ dữ liệu cần trao đổi Khối logic điều khiển: điều khiển hoạt động của DMAC Hoạt động của DMA Khi cần vào ra dữ liệu thì CPU nhờ DMAC tiến hành vào ra dữ liệu với thông tin cho biết như sau: Địa chỉ thiết bị vào ra Địa chỉ đầu của mảng nhớ chứa dữ liệu và DMAC nạp thanh ghi địa chỉ Số từ dữ liệu cần truyền và DMAC nạp vào bộ đếm dữ liệu CPU sẽ đi thực hiện việc khác DMAC điều khiển việc trao đổi dữ liệu sau khi truyền một từ dữ liệu thì nội dung thanh ghi địa chỉ tăng lên và nội dung bộ đếm dữ liệu giảm xuống một đơn vị. Khi bộ đếm bằng dữ liệu bằng 0, DMAC gởi tín hiệu ngắt CPU để báo kết thúc DMA Hình 83 Sơ đồ kết nối của DMAC Các kiểu thực hiện DMA DMA truyền theo khối: DMAC sử dụng BUS để truyền cả khối dữ liệu (CPU chuyển nhượng BUS cho DMAC) DMA lấy chu kỳ: DMAC cưỡng bức CPU treo tạm thời từng chu kỳ BUS để thực hiện truyền một từ dữ liệu DMA trong suốt: DMAC nhận biết những chu kỳ nào CPU không sử dụng BUS thì chiếm BUS để trao đổi dữ liệu (DMAC lấy lén chu kỳ) Đặc điểm DMA CPU không tham gia trong quá trình trao đổi dữ liệu DMAC điều khiển trao đổi dữ liệu giữa bộ nhớ chính và Module vào ra với tốc độ nhanh. Phù hợp với yêu cầu trao đổi mảng dữ liệu có kích thước lớn. Ghép nối thiết bị ngoại vi Các kiểu nối ghép vào ra Nối ghép song song Nối ghép nối tiếp Nối ghép song song Truyền các bit dữ liệu được truyền song song trong cùng một thời điểm trên nhiều đường dây. Tốc độ truyền cao Cần đường truyền song song để tải các bit dữ liệu cùng đi, điều đó khiến phương pháp này tốn kém về dây dẫn. Điển hình của phương pháp này công máy in 25 chân LPT. Nối ghép nối tiếp Từng Bit của dữ liệu lần lượt được gửi đi trên một đường truyền duy nhất Dữ liệu trong máy tính thương ở dạng 8bit, 16b, vì thế cần có bộ chuyển đổi từ song song sang nối tiếp. Tốc độ truyền của phương pháp này chậm vì truyền tường bit trên một đường dây Ưu điểm là kinh tế, không tốn dây, có thể dùng để truyền đi xa. Các cấu hình ghép nối ghép Điểm - điểm (point to point): Qua một cổng vào ra chỉ có thể ghép một thiết bị ngoại vi (PS/2, COM, LPT,) Điểm - đa điểm (Point to multipoint): Thông qua một cổng vào ra ghép nhiều thiết bị vào ra. Ví dụ: SCSI(7,15), USB (127), Các cổng vào ra thông dụng Cổng song song LPT Các máy tính PC được trang bị ít nhất là 1 cổng song song và 1 cổng nối tiếp. Khác với ghép nối nối tiếp có nhiều ứng dụng, ghép nối song song thường chỉ phục vụ cho máy in. Sơ đồ ghép nối song song như hình sau: Hình 84 Ghép nối song song ra cổng LPT Có ba thanh ghi có thể truyền số liệu và điều khiển máy in cũng như khối ghép nối. Địa chỉ cơ sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4 được lưu trữ trong vùng số liệu BIOS. Thanh ghi số liệu được định vị ở offset 00h, thanh ghi trang thái ở 01h, và thanh ghi điều khiển ở 02h. Thông thường, địa chỉ cơ sở của LPT1 là 378h, LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h hoặc 279h và địa chỉ thanh ghi điều khiển là 37Ah hoặc 27Ah. Định dạng các thanh ghi như sau: 7 6 5 4 3 2 1 0 Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0 Chân số 9 8 7 6 5 4 3 2 (a) 7 6 5 4 3 2 1 0 Tín hiệu máy in BSY /ACK PAP OFON /FEH x x x Sốchân cắm 11 10 12 13 15 - - - (b) 7 6 5 4 3 2 1 0 Tín hiệu máy in x x x IRQ /DSL /INI /ALF STR Sốchân cắm - - - - 17 16 14 1 (c) Bảng 81 Bảng định dạng cho các thanh ghi dữ liệu, trạng thái và điều khiển Thanh ghi dữ liệu (hai chiều) Thanh ghi trạng thái máy in (chỉ đọc) Thanh ghi điều khiển máy in x: không sử dụng IRQ: yêu cầu ngắt cứng; 1 = cho phép; 0 = không cho phép Bản mạch ghép nối chỉ có bus dữ liệu 8 bit do dữ liệu luôn đi qua máy in thành từng khối 8 bit. Các chân tín hiệu của đầu cắm 25 chân của cổng song song LPT như sau: Chân Tín hiệu Mô tả 1 STR Mức tín hiệu thấp, truyền dữliệu tới máy in 2 D0 Bit dữ liệu 0 3 D1 Bit dữ liệu 1 4 D2 Bit dữ liệu 2 5 D3 Bit dữ liệu 3 6 D4 Bit dữ liệu 4 7 D5 Bit dữ liệu 5 8 D6 Bit dữ liệu 6 9 D7 Bit dữ liệu 7 10 ACK Mức thấp: máy in đã nhận 1 ký tự và có khả năng nhận nữa 11 BSY Mức cao: ký tự đã được nhận; bộ đệm máy in đầy; khởi động máy in; máy in ở trạng thái off- line. 12 PAP Mức cao: hết giấy 13 OFON Mức cao: máy in ở trạng thái online 14 ALF Tự động xuống dòng; mức thấp: máy in xuống dòng tự động 15 FEH Mức thấp: hết giấy; máy in ở offline; lỗi máy in 16 INI Mức thấp: khởi động máy in 17 DSL Mức thấp: chọn máy in 18-25 GROUND 0V Bảng 82 Tín hiệu chân của cổng LPT Thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn PC nhiều nên các đường ACK, BSY và STR được sử dụng cho kỹ thuật bắt tay. Khởi đầu, PC đặt dữ liệu lên bus sau đó kích hoạt đường STR xuống mức thấp để thông tin cho máy in biết rằng số liệu đã ổn định trên bus. Khi máy in xử lý xong dữ liệu, nó sẽ trả lại tín hiệu ACK xuống mức thấp để ghi nhận. PC đợi cho đến khi đường BSY từ máy in xuống thấp (máy in không bận) thì sẽ đưa tiếp dữ liệu lên bus. Dữ liệu có thể trao đổi trực tiếp giữa 2 PC qua các cổng song song với nhau. Muốn vậy, các đường điều khiển bên này phải được kết nối với các đường trạng thái bên kia. Hình 85 Trao đổi dữ liệu qua cổng song song giữa 2 PC Nối tiếp (Serial) Các ghép nối của PC cho trao đổi nối tiếp đều theo tiêu chuẩn RS-232 của EIA (Electronic Industries Association) hoặc của CCITT ở Châu Âu. Chuẩn này quy định ghép nối về cơ khí, điện, và logic giữa một thiết bị đầu cuối số liệu DTE (Data Terminal Equipment) và thiết bị thông tin số liệu DCE (Data Communication Equipment). Thí dụ, DTE là PC và DCE là MODEM. Có 25 đường với đầu cắm 25 chân D25 giữa DTE và DCE. Hầu hết việc truyền số liệu là bất đồng bộ. Có 11 tín hiệu trong chuẩn RS232C dùng cho PC, IBM còn quy định thêm đầu cắm 9 chân D9. Các chân tín hiệu và mối quan hệ giữa các đầu cắm 25 chân và 9 chân: D25 D9 Tín hiệu Hướng truyền Mô tả 1 - - - Protected ground: nối đất bảo vệ 2 3 TxD DTE DCE Transmitted data: dữliệu phát 3 2 RxD DCE DTE Received data: dữliệu thu 4 7 RTS DTE DCE Request to send: DTE yêu cầu truyền dữliệu 5 8 CTS DCE DTE Clear to send: DCE sẵn sàng nhận dữliệu 6 6 DSR DCE DTE Data set ready: DCE sẵn sàng làm việc 7 5 GND - Ground: nối đất (0V) 8 1 DCD DCE DTE Data carier detect: DCE phát hiện sóng mang 20 4 DTR DTE DCE Data terminal ready: DTE sẵn sàng làm việc 22 9 RI DCE DTE Ring indicator: báo chuông 23 - DSRD DCE DTE Data signal rate detector: dò tốc độtruyền Bảng 83 Tín hiệu chân của cổng nối tiếp Chuẩn RS-232C cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps. Chiều dài cáp cực đại là 17-20m. Các phương thức nối giữa DTE và DCE: Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng. Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ được truyền theo 1 hướng. Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng. Cổng PC-Game Cấu trúc và chức năng của board ghép nối trò chơi (PC game) như hình bên dưới. Hình 86 Cấu trúc của board ghép nối cổng PC-game Chân của đầu nối 15 chân Sửdụng cho 2 Phím 1 của Joystick A (BA1) 3 Biến trở X của Joystick A 6 Biến trở Y của Joystick A 7 Phím 2 của Joystick A (BA2) 10 Phím 1 của Joystick A (BB1) 11 Biến trở X của Joystick B 13 Biến trở Y của Joystick B 14 Phím 2 của Joystick A (BB2) 1, 8, 9, 15 Vcc (+5V) 4, 5, 12 GND (0V) Bảng 84 Tín hiệu chân của cổng PC-game Board mạch được nối với bus hệ thống của PC chỉ qua 8 bits thấp của bus dữ liệu, 10 bits thấp của bus địa chỉ và các đường điều khiển IOR và IOW. Một đầu nối 15 chân được nối với board mạch cho phép nối cực đại hai thiết bị cho PC game gọi là joystick. Mỗi joystick có 2 biến trở có giá trị biến đổi từ 0 đến 100kΩ được đặt vuông góc với nhau đại diện cho vị trí x và y của joystick. Thêm nữa chúng có 2 phím bấm, thường là các công tắc thường hở phù hợp với các mức logic cao của các dây trên mạch. Có thể xác định được trạng thái nhấn hoặc nhả phím một cách dễ dàng bằng lệnh IN tới địa chỉ 201h. Nibble cao chỉ thị trạng thái của phím. Vì board không dùng đường IRQ do đó không có khả năng phát ra 1 ngắt, do vậy board chỉ hoạt động trong chế độ hỏi vòng (polling). Byte trạng thái của board game như sau: D7 D6 D5 D4 D3 D2 D1 D0 BB2 BB1 BA2 BA1 BY BX AY AX Bảng 85 Byte trạng thái của board game BB2, BB1, BA2, BA1: Trạng thái của các phím B2, B1, A2, A1; 1 = nhả; 0 = nhấn BY, BX, AY, AX: Trạng thái của mạch đa hài tuỳ thuộc vào biến trở tương ứng. Cổng bàn phím Hình 87 Sơ đồ kết nối cổng bàn phím Chip xử lý bàn phím liên tục kiểm tra trạng thái của ma trận quét (scan matrix) để xác định công tắc tại các tọa độ X,Y đang được đóng hay mở và ghi một mã tương ứng vào bộ đệm bên trong bàn phím. Sau đó mã này sẽ được truyền nối tiếp tới mạch ghép nối bàn phím trong PC. Cấu trúc của SDU cho việc truyền số liệu này và các chân cắm của đầu nối bàn phím. SDU 0 10 STRT DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 PAR STOP STRT: bit start (luôn bằng 0) DB0 - DB7: bit số liệu từ 0 đến 7. PAR: bit parity (luôn lẻ) STOP: bit stop (luôn bằng 1). Tín hiệu xung nhịp dùng cho việc trao đổi dữ liệu thông tin nối tiếp đồng bộ với mạch ghép nối bàn phím (keyboard interface) trên main board được truyền qua chân số 1. Một bộ điều khiển bàn phím đã được lắp đặt trên cơ sở các chíp 8042, hoặc 8742,8741. Nó có thể được chương trình hóa (thí dụ khóa bàn phím) hơn nữa số liệu có thể truyền theo 2 hướng từ bàn phím và mạch ghép nối, do vậy vi mã của chíp bàn phím có thể giúp cho việc nhận lệnh điều khiển từ PC, thí dụ như đặt tốc độ lặp lại của nhấn bàn phím,. Hình 88 Đầu cắm bàn phím AT Hình 89 Đầu cắm bàn phím PS/2 TÀI LIỆU THAM KHẢO Bài giảng “Kiến trúc và tổ chức máy tính” , bộ môn Kỹ thuật máy tính – Khoa Điện Tử. Bài giảng “Cấu trúc máy tính” , bộ môn Kỹ thuật máy tính – Khoa Điện Tử. Sách tham khảo: Nguyễn Đình Việt, Kiến trúc máy tính, NXB Giáo dục, 2000. Tống Văn On, Cấu trúc máy tính cơ bản, NXB Thống kê, 2001. Tống Văn On, Cấu trúc máy tính nâng cao, NXB Thống kê, 2001. Trần Quang Vinh, Nguyên lý phần cứng và kỹ thuật ghép nối máy tính, NXB Giáo dục, 2002. Tống Văn On, Hoàng Đức Hải, Giáo trình cấu trúc máy tính, NXB Giáo dục, 2000. Nguyễn Nam Trung, Cấu trúc máy vi tính và thiết bị ngoại vi, NXB KHKT, 2000.
File đính kèm:
- giao_trinh_mon_kien_truc_may_tinh.doc