3.2.1 Phân loại
Thiết bị giao diện chỉ giúp CPU kết nối một cách thích hợp về mặt vật lý các thiết bị bên ngoài, nhưng chưa đảm bảo tính tin cậy của quá trình trao đổi thông tin. Điều này xuất phát từ một số nguyên nhân khách quan là nhịp làm việc và tốc độ làm việc của CPU khác xa thiết bị bên ngoài nhiều. Để CPU có thể thực hiện trao đổi thông tin với các thiết bị bên ngoài có độ tin cậy cao cần phải áp dụng các phương pháp vào ra thích hợp, các phương pháp này được gọi là các phương pháp vào ra dữ liệu.
50 vẽ):
Các phương pháp vào/ra dữ liệu
Vào/ra do CPU chủ động Vào/ra do các thiết bị vào/ra chủ động
Vào/ra theo định trình
Vào/ra có
thăm dò Vào/ra theo ngắt cứng Vào/ra kiểu DMA
3.2.2 Phương pháp vào/ra dữ liệu theo định trình
Phương pháp vào ra theo định trình là phương pháp trong đó quá trình vào ra được thực hiện theo một chu kỳ xác định trước, nhờ các lệnh vào ra ( lệnh IN hoặc OUT) và CPU không quan tâm đến trạng thái của thiết bị vào ra ( gồm thiết bị giao diện và thiết bị ngoại vi). .
Ưu điểm: Phương pháp này phù hợp với những quá trình vào/ra có chu kỳ cố định và có thể xác định trước.
51
3.2.3 Phương pháp vào/ra dữ liệu theo kiểu thăm dò
Vấn đề điều khiển vào/ra dữ liệu sẽ là đơn giản nếu thiết bị ngoại vi luôn sẵn sàng để làm việc với CPU. Ví dụ, với thiết bị vào như bộ phận đo nhiệt độ số lắp sẵn trong một hệ thống điều khiển lúc nào cũng có thể cung cấp số đo về nhiệt độ của đối tượng cần điều chỉnh, hay thiết bị ra như bộ đèn LED dùng để hiển thị giá trị nhiệt độ trong hệ thống nói trên thì lúc nào cũng có thể biểu hiện thông tin đó. Như vậy khi CPU cần có thông tin về nhiệt độ của đối tượng thì nó chỉ việc đọc dữ liệu tại cổng phối ghép với bộ đo nhiệt độ và nếu CPU muốn biểu diễn thông tin vừa đọc lên đèn LED thì nó chỉ việc đưa ra tín hiệu điều khiển tới đó mà không cần kiểm tra xem các thiết bị này có đang sẵn sàng làm việc hay không.
Trong mỗi thiết bị giao diện thường có ít nhất một thanh ghi trạng thái chứa thông tin phản ánh trạng thái làm việc của thiết bị này và của thiết bị ngoại vi. Khi thực hiện phương pháp vào ra có thăm dò, CPU luôn thực hiện kiểm tra trạng thái sẵn sàng làm việc của thiết bị trước khi thực hiện thật sự việc vào ra dữ liệu. Việc kiểm tra trạng thái sẵn sàng của thiết bị bằng cách kiểm tra thông tin trên thanh ghi trạng thái.
Quá trình vào/ra dữ liệu theo phương pháp thăm dò như sau:
52 Ưu điểm của phương pháp thăm dò: do CPU luôn kiểm tra trạng thái sẵn sàng làm việc của thiết bị
trước khi thực hiện vào/ra dữ liệu nên quá trình vào/ra dữ liệu kiểu này có độ tin cậy cao.
Nhược điểm: Do CPU luôn phải kiểm tra lần lượt trạng thái làm việc của các thiết bị cho nên tốc độ vào/ra dữ liệu chậm. Hơn nữa, nếu CPU chỉ làm có một công việc là vào/ra dữ liệu (theo phương pháp thăm dò) thì hiệu quả không cao, ngược lại nếu CPU đồng thời phải thực hiện nhiều loại công việc hơn thì thời gian làm việc của CPU sẽ bị chia xẻ, đồng thời độ tin cậy của phương pháp vào/ra thăm dò cũng bị giảm đi rất nhiều.
3.2.4 Phương pháp vào/ra dữ liệu theo ngắt cứng
Trong cách vào/ra dữ liệu điều khiển bằng phương pháp thăm dò, trước khi tiến hành trao đổi dữ liệu CPU phải dành toàn bộ thời gian vào việc xác định trạng thái sẵn sàng của thiết bị cần trao đổi. Trong hệ thống VXL với cách làm việc như vậy, thông thường CPU được thiết kế chủ yếu chỉ là để phục vụ cho việc vào/ ra dữ liệu và thực hiện các tác vụ xử lý dữ liệu liên quan.
Trong thực tế, người ta phải tận dụng những khả năng của CPU để thực hiện những công việc khác ngoài việc trao đổi dữ liệu với TBN, chỉ khi nào có yêu cầu trao đổi dữ liệu thì mới yêu cầu CPU tạm dừng công việc hiện tại để phục vụ việc trao đổi dữ liệu. Sau khi hoàn thành thì CPU lại trở lại thực hiện tiếp công việc đang tiến hành, hoặc thực hiện một công việc mới. Cách làm việc như vậy gọi là ngắt cứng để trao đổi dữ liệu. Một hệ thống như vậy có thể đáp ứng rất nhanh với các yêu cầu trao đổi dữ liệu trong khi vẫn có thể thực hiện các công việc khác.
53
Ngắt là sự kiện CPU bị tạm dừng tiến trình đang thực hiện để chuyển sang thực hiện quá trình phục vụ ngắt.
Ngắt cứng là phương pháp vào/ra dữ liệu trong đó thiết bị vào/ra chủ động khởi động quá trình vào/ra dữ liệu nhờ hệ thống ngắt cứng.
Thông thường quá trình vào/ra theo ngắt cứng được trợ giúp bởi thiết bị điều khiển ngắt PIC (Programmable Interrupt Controller). PIC có chức năng ghi nhận các yêu cầu ngắt IRQ và cung cấp cho CPU số ngắt đại diện cho địa chỉ của chương trình con phục vụ ngắt và tương ứng yêu cầu ngắt IRQ.
Cấu trúc của hệ thống ngắt cứng:
Quá trình vào ra theo ngắt cứng;
- CPU dang thực hiện một chương trình nào đó
- Một hoặc nhiều thiết bị vào/ra có yêu cầu được phục vụ phát tín hiệu IRQ cho PIC - Thiết bị PIC phát ra tín hiệu INT cho CPU, đòi CPU phục vụ
- CPU thực hiện các thao tác sau:
++ Thực hiện nốt lệnh của chương trình hiện hành.
++ Lưu địa chỉ trở về (nội dung các thanh ghi CS, IP) và thanh ghi cờ FLAGS vào ngăn xếp. ++ Gửi 2 tín hiệu trả lời ngắt INTA cho PIC
- PIC nhận được tín hiệu INTA lần thứ 1 từ CPU thì PIC không gửi gì cho CPU mà thực hiện chức năng của nó như: Sắp xếp độ ưu tiên cho các yêu cầu ngắt IRQi.
- PIC nhận được tín hiệu INTA lần 2 thì nó phát số hiệu ngắt (con số đại diện cho địa chỉ của chương trình con phục vụ ngắt, và tương ứng với tín hiệu IRQ) cho CPU.
- Dựa trên số hiệu ngắt này CPU kích hoạt và thực hiện chương trình con phục vụ ngắt để thực hiện vào ra dữ liệu.
- Khi chương trình phục vụ ngắt kết thúc (Khi CPU thực hiện lệnh IRET) thì CPU khôi phục địa chỉ trở về vào thanh ghi CS, IP, nội dung thanh ghi FLAGS và tiếp tục tiếp tục thực hiện chương trình vừa bị tạm dừng.
54 Ưu điểm:
- CPU thực hiện vào ra dữ liệu ngay sau khi có yêu cầu từ TB bên ngoài do vậy quá trình vào dữ liệu có độ tin cậy cao.
- CPU chỉ phục vụ thiết bị vào ra khi có yêu cầu do vậy tăng hiệu quả làm việc của CPU.
Do những ưu điểm này mà phương pháp này được dùng để thực hiện vào/ra dữ liệu với phần lớn các thiết bị chuẩn của máy tính như: Bàn phím, máy in, thiết bị vào/ra nối tiếp, song song,…
Tuy nhiên đối với phương pháp này quá trình chuyển dữ liệu giữa bộ nhớ và thiết bị vào/ra vẫn phải qua CPU và quá trình vào/ra dữ liệu vẫn do CPU thực hiện nên đây chưa phải là phương pháp vào ra dữ liệu nhanh nhất.
3.2.5 Phương pháp vào/ra dữ liệu theo kiểu DMA (truy nhập trực tiếp bộ nhớ - Direct Memory Access) Memory Access)
Trong các cách điều khiển việc trao đổi dữ liệu giữa thiết bị ngoại vi và VXL bằng các cách thăm dò trạng thái sẵn sàng của thiết bị ngoại vi hay bằng cách ngắt bộ VXL như trên, dữ liệu thường được chuyển từ bộ nhớ qua bộ VXL rồi từ đó ghi vào thiết bị ngoại vi hoặc ngược lại, từ thiết bị ngoại vi, dữ liệu được đọc vào qua bộ VXL rồi từ đó ghi vào bộ nhớ. Vì thế tốc độ trao đổi dữ liệu phụ thuộc rất nhiều vào tốc độ thực hiện của các lệnh MOV, IN và OUT của bộ VXL. Do đó tốc độ trao đổi dữ liệu nói chung là chậm.
Trong thực tế có những khi rất cần thiết phải trao đổi dữ liệu thật nhanh với thiết bị ngoại vi: như khi đưa dữ liệu hiển thị ra màn hình hoặc đọc, ghi đĩa ... . Trong các trường hợp đó ta cần có được khả năng ghi/ đọc dữ liệu trực tiếp với bộ nhớ thì mới đáp ứng được yêu cầu về tốc độ trao đổi dữ liệu. Có một phương pháp vào ra dữ liệu đáp ứng được yêu cầu cao về tốc độ vào ra, đó là phương pháp truy nhập trực tiếp bộ nhớ ( phương pháp DMA). Để làm được điều này, các hệ VXL nói chung đều phải dùng thêm mạch chuyên dụng để điều khiển việc truy nhập trực tiếp bộ nhớ (Direct Memory Access Controller, DMAC) và phương pháp này là phương pháp điều khiển vào/ra dữ liệu bằng DMA.
Quá trình vào ra dữ liệu trực tiếp giữa bộ nhớ và thiết bị ngoại vi không qua CPU được gọi là quá trình DMA.
Trong quá trình DMA việc chuyển dữ liệu không được điều khiển bởi CPU mà bởi một thiết bị phần cứng được gọi là bộ điều khiển DMAC(Direct Memory Access Controller)
Cấu trúc hệ thống vào ra dữ liệu theo kiểu truy nhập trực tiếp bộ nhớ như sau.
55 Giả sử CPU đang thực hiện bình thường
- DMAC được xác lập chế độ làm việc, nhận thông tin về địa chỉ đầu khối nhớ chứa dữ liệu và kích thước khối dữ liệu cần truyền
- Thiết bị vào/ra phát tín hiệu DRQ cho DMAC
- DMAC phát tín hiệu HOLD=1 cho CPU, đòi CPU đi vào chế độ DMA - CPU thực hiện nốt chu kỳ máy
- CPU phát tín hiệu HLDA trả lời cho DMAC và tự tách ra khỏi hệ thống BUS. Quyền điều khiển hệ thống BUS thuộc về DMAC.
- DMAC làm chủ hệ thống BUS (bus dữ liệu, bus điều khiển, bus điều khiển)
- DMAC tạo ra tín hiệu DACK trả lời thiết bị yêu cầu, phát địa chỉ ô nhớ lên BUS địa chỉ, phát ra các tín hiệu điều khiển ghi/đọc thiết bị vào/ra và các tín hiệu điều khiển ghi/đọc bộ nhớ và thực hện điều khiển toàn bộ quá trình chuyển dữ liệu trực tiếp giữa thiết bị vào/ra và bộ nhớ.
- Khi một khối dữ liệu được chuyển xong, DMAC kết thúc quá trình DMA bằng việc phát tín hiệu HOLD=0 cho CPU và trả quyền điều khiển hệ thống BUS cho CPU.
- CPU tiếp tục làm việc bình thường
Phương pháp vào ra dữ liệu kiểu DMA được dùng để thực hiện truyền dữ liệu giữa các thiết bị có khả năng truy xuất thông tin với khối lượng lớn và đòi hỏi tốc độ truy xuất cao như thiết bị đĩa cứng, đĩa mềm và bộ nhớ.
56
Chương 4 Các thiết bị vào ra 4.1 Các thiết bị giao diện và điều khiển vào/ra dữ liệu
4.1.1 Ngắt và bộ điều khiển ngắt PIC 8259
- Một số khái niệm
Ngắt là sự kiện CPU bị tạm dừng việc thực hiện quá trình chính và chuyển sang thực hiện quá trình phục vụ ngắt.
Ngắt cứng là phương pháp vào/ra dữ liệu, trong đó thiết bị vào/ra (thiết bị vật tư: bàn phím, máy in, đồng hồ nhịp thời gian,v.v...) chủ động khởi động quá trình vào/ra. Quá trình phục vụ ngắt cũng được kích hoạt bằng một tín hiệu vật lý từ bên ngoài.
Thuật ngữ "ngắt" xuất phát từ kỹ thuật ngắt cứng. Khi nói đến ngắt cứng, ngắt mềm hoặc ngắt logic (ngoại lệ) là hàm ý nói đến các chương trình con phục vụ hoạt động của hệ thống máy tính và nói đến cách kích hoạt các chương trình con này. Tất cả các chương trình phục vụ ngắt đều có chung đặc điểm: thứ nhất là hầu hết đã được viết sẵn (là các chương trình của hệ điều hành) và được phép sử dụng: thứ hai là địa chỉ của các chương trình con này phải được đặt ở một vùng xác định là bảng vectơ ngắt, nằm trong bộ nhớ chính. Các chương trình con phục vụ ngắt cũng thường được dùng để điều khiển quá trình vào/ra với các thiết bị vào-ra chuẩn bị ở mức vật lý. Các chương trình con phục vụ ngắt cứng được kích hoạt bởi các tín hiệu vật lý IRQ đến thiết bị vào-ra. Các chương trình con phục vụ ngắt mềm là các chương trình hệ thống thực hiện các thao tác vào-ra cơ bản ở mức logic và các hạot động bởi của hệ thống. Các chương trình con phục vụ ngắt mềm được kích hoạt bởi lệnh INT trong hệ lệnh của CPU. Các chương trình con phục vụ ngắt logic cũng phục vụ cho hoạt động của hệ thống, nhưng chúng chỉ được kích hoạt khi CPU thực hiện lệnh và phát sinh một ngoại lệ nào đó.
- Bảng vectơ ngắt
Bảng vectơ ngắt là bảng chứa địa chỉ của các chương trình phục vụ ngắt. Bảng này có 256 ô, các ô được đánh số thứ tự lần lượt từ 00h, 01h, ..., 08h, ... 0Fh, 10h, ... FFh. Số thứ tự
57 của từng ô trong bảng được gọi là số ngắt. Mỗi ô chứa địa chỉ logic của một chương trình phục vụ ngắt xác định, các địa chỉ này còn được gọi là vectơ ngắt.
Cấu trúc bảng vectơ ngắt ở chế độ thực:
- Hệ thống ngắt cứng
CPU được thiết kế để đáp ứng được với các quá trình ngắt cứng. CPU có một đầu vào nhận tín hiệu ngắt INT, khi nhận được tín hiệu này CPU sẽ phản ứng theo cơ chế ngắt cứng. Trong thực tế có nhiều thiết bị ngoại vi yêu cầu được phục vụ theo phương pháp ngắt cứng (bàn phím, đồng hồ hệ thống, máy in, v.v..) và sinh ra nhiều yêu cầu ngắt, do vậy cần có một bộ điều khiển giúp CPU quản lý và phục vụ các yêu cầu ngắt, đó là bộ điều khiển ngắt PIC (Programmeble Interrupt Controller).
Cấu trúc của hệ thống ngắt cứng như sau:
Hệ thống ngắt cứng được xây dựng trên cơ sở 2 bộ điều khiển ngắt PIC 8259, mỗi PIC 8259 có thể nhận 8 tín hiệu yêu cầu ngắt IRQ từ thiết bị vào/ra. Hai PIC này được kết nối với nhau theo kiểu ghép tầng (chủ/thợ tức là tín hiệu đầu ra INT của PIC thợ được nối với yêu cầu ngắt IRQ2 của PIC chủ), kết hợp hoạt động để có thể phục vụ được 16 yêu cầu ngắt IRQ.
58 Chức năng cơ bản của PIC 8259, PIC 8259 là một vi mạch điện tử khả trình được thiết kế giúp CPU thực hiện quá trình ngắt cứng, PIC 8259 thực hiện các chức năng sau:
+ Ghi nhận được 8 yêu cầu ngắt IRQi. Số ngắt này đại diện cho địa chỉ của chương trình con phục vụ thiết bị yêu cầu ngắt IRQi.
+ Cho phép chọn và phục vụ các yêu cầu ngắt theo mức ưu tiên
+ Cung cấp cho CPU số ngắt tương ứng với yêu cầu ngắt IRQi. Số ngắt này đại diện cho địa chỉ của chương trình con phục vụ thiết bị yêu cầu ngắt IRQi.
+ Cho phép hoặc không cho phép các yêu cầu IRQi kích hoạt hệ thống ngắt.
Thiết bị điều khiển ngắt PIC 8259 và cơ chế hoạt động của hệ thống ngắt cứng:
Cấu trúc bên ngoài của PIC 8259 (hình dưới):
+ IRQ0÷IRQ7: Các yêu cầu ngắt từ thiết bị ngoại vi + -WR/RD: Tín hiệu ghi/đọc
Ý nghĩa các chân tín hiệu của PIC 8259 như sau:
+ A0: Tín hiệu xác định địa chỉ cổng (vì PIC chủ có 2 địa chỉ là 20h hoặc 21h; PIC thợ có 2 địa chỉ cổng A0h hoặc A1h).
+ INT: tín hiệu yêu cầu đòi CPU phục vụ
+ -INTA: Tín hiệu trả lời từ CPU sẵn sàng phục vụ theo phương pháp ngắt cứng.
+ CAS0÷CAS2: Các tín hiệu nối tầng (là đầu ra đối với vi mạch chủ và là đầu vào đối với vi mạch thợ).
+ -SP/-EN (Slave Program, Enable Buffer): Tín hiệu lập trình chủ tớ hoặc mở đệm bus dữ liệu. -SP/-EN=0: PIC làm việc ở chế độ thợ và mở thông bus hệ thống (chế độ đệm bus)
-SP/-EN=1: PIC làm việc ở chế độ chủ