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.

 

doc 141 trang kimcuc 6621
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình môn Kiến trúc máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

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

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:

  • docgiao_trinh_mon_kien_truc_may_tinh.doc