Tải bản đầy đủ (.pdf) (34 trang)

Chương 3: Các phương pháp trao đổi thông tin pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (445.71 KB, 34 trang )

P&I Ch3: Methodes 1
Ch. 3. c¸c ph−¬ng ph¸p
trao ®æi th«ng tin
• Polling - Th¨m dß
• Interrupt - ng¾t &
• DMA - truy nhËp
trùc tiÕp mem - IO
P&I Ch3: Methodes 2
3.1. Phương pháp thăm dò (polling)
• K/n Polling: Dùng phần mềm để kiểm tra
các cờ trạng thái @ IO Ports => quyết định
trao đổi số liệu hay không.
• Nhanh, đơn giản, thường dùng trong các hệ
nhỏ hoặc đơn nhiệm - ít thiết bị IO,
• Để thử nghiệm,
• Dùng với các thiết bị ngoại vi tần suất truy
nhập thấp, tốc độ chậm, ví dụ các kênh đo
nhiệt độ,
• Không phù hợp với ‘đa nhiệm’, đặc biệt
trong máy tính
P&I Ch3: Methodes 3
Một l−u
®å :
Polling
Device #1 Y
Request ?
N
Device #2 Y
Request ?
N
Device #n Y


Request ?
N
Device #1
Service Routine
Device #2
Service Routine
Device #n
Service Routine
Quit
H×nh 3.1. L−u ®å ph−¬ng ph¸p IO interface polling
P&I Ch3: Methodes 4
3.2. Ph−¬ng ph¸p ng¾t (Interrupt)
• Kh¸i niÖm,
• Ph©n lo¹i vµ
• ‘Case studies’
P&I Ch3: Methodes 5
• Là sự dừng thực hiện CTC để thực hiện
ctc, thường là do TBNV yêu cầu thông
qua port.
• Khi CPU đang thực hiện CTC, đến
dòng lệnh thứ n, ngẫu nhiên, ngoại vi
thứ i xin phục vụ bằng cách phát ra tín
hiệu IRQ(i) (Interrupt Request) đến
CPU. Nói chung, CPU sẽ ngừng xử lý
CTC và cất ngữ cảnh (flags và địa chỉ
của lệnh tiếp theo) vào Stack Mem, rồi
tìm địa chỉ của ctc phục vụ ngắt tương
ứng (Interrupt Service Routine - ISR)
để thự
c hiện.

• Sau khi thực hiện xong ISR, gặp lệnh
iret (reti ), CPU khôi phục lại ngữ
cảnh (từ Stack Mem) của CTC và tiếp
tục thực hiện.
3.2. Phương pháp ngắt (Interrupt):
3.2.1. Khái niệm
H×nh 3.2. K/n
ng¾t
P&I Ch3: Methodes 6
• Đặc điểm:
– Là phương pháp vào/ra kết hợp tín hiệu và phần
mềm, để thực hiện đa nhiệm.
– Đối tượng bị ngắt: CTC bị dừng xử lý để thực hiện
ctc.
– Là chế độ hoạt động riêng cho các Vi xử lý/ máy
tính ON-LINE,
– Nguồn ngắt: chủ yếu từ ngoại vi thông qua IO ports,
CPU (exceptions, internal),
– Xảy ra ngẫu nhiên,
– Nhiều IOs
• => Tranh chấp => Phải giải quyết ưu tiên ngắt.
3.2. Phương pháp ngắt (Interrupt):
3.2.1. Khái niệm:
P&I Ch3: Methodes 7
• Ưu tiên ngắt - Interrupt Priority:
- T/bị ưu tiên cao có thể dừng ISR của t/bị ưu tiên thấp
- Hệ lớn, nhiều IOs thường dùng PIC (Intel PIC8259A)
- Chỉ số ưu tiên do nhà sx qui định cho các t/bị ngoại vi,
cố định, mức 0 là cao nhất.
Theo hình 3.2: Level (j) > Level(i),

i>j.
• Ưu tiên phân định do các tín hiệu ngắt trong CPU (Intel
8085: INTR, 5.5, 6.5, 7.5 và TRAP),
• Z80 CPU & others: ưu tiên theo kiểu Daisy Chain
3.2. Ph−¬ng ph¸p ng¾t (Interrupt): 3.2.1. Kh¸i niÖm
P&I Ch3: Methodes 8
a. Software Interrupt:
• Là việc gọi 1 ctc (Subroutine) được xây dựng riêng mà ctc
này còn có thể được gọi bởi thiết bị ngoại vi.
• Các lệnh gọi như INT n; (Intel x86) hay SWI n; (Moto).
• Tuy nhiên, việc thực hiện lệnh ngắt mềm giống như gọi
thủ tục, và đôi khi được hiểu là TRAP,
• Ngắt mềm không phải là ngắt
3.2. Interrupt: 3.2.2. ph©n lo¹i:
Gåm: Hardware, software, internal, exception, NMI
P&I Ch3: Methodes 9
• Do Ports phát tín hiệu NMI/ IRQ đến CPU.
• Chia thành 2 loại: Maskable & Non Maskable
9 Maskable Interrupt: là các ngắt thông thường, có thể
cấm (disable) bởi lệnh CLI hay cho phép (enable) bởi
lệnh STI (Intel vs Moto!).
Các ngắt sẽ bị cấm (tại CPU) - IF disabled: sau khi CPU
reset, trước đó đã có IRQ khác, sau khi th/h lệnh CLI.
9Non Maskable Interrupt, NMI là ngắt có mức ưu tiên cao
nhất, thường cho các việc: mất điện, sai số liệu (DRAM
parity) PC hiện nay, thường không dùng NMI.
3.2. Interrupt: 3.2.2. ph©n lo¹i: b. Hardware:
P&I Ch3: Methodes 10
Trong một số CPU, để bẫy/ để xử lý các sự kiện trong khi
thực hiện, như Intel x86:

- Divide by zero: tương ứng thực hiện lệnh, Int 0,
- Trap - Single Step: thực hiện từng lệnh, debugger, Int 1,
dùng cùng với Trap Flag (Trace).
- Break Point: tạo điểm dừng, debugger, Int 3,
- Overflow: (tràn số nguyên), Int 4
-
3.2. Interrupt: 3.2.2. ph©n lo¹i: c. Internal:
P&I Ch3: Methodes 11
Là vấn đề hay điều kiện để CPU dừng công việc
đang t/h, tìm địa chỉ và thực hiện 1 ctc, đợc thiết kế
để xử lý sự kiện này.
Exception giống Interrupt, thực hiện lệnh riêng.
Trong PC, Exp khác Intr qua 2 điểm:
- Liên quan tới việc thực hiện chơng trình,
-Có u tiên cao để dừng ch/tr
(Apple Macintosh Computers): các Error, thay đổi
điều kiện, kể cả ngắt, đợc CPU phát hiện trong khi
chơng trình đang hoạt động.
3.2. Interrupt: 3.2.2. phân loại: c. Exceptions:
P&I Ch3: Methodes 12
a. Intel 8x51 Micro Controllers:
Họ Intel 8x51 có 6 nguồn ngắt:
02 Ext. Interrupts: Int0 và Int1,
03 Timer Interrupts: Timer 0, 1, 2 và
01 Serial port Interrupt (phát/thu char).
ứng với các ngắt này, có các địa chỉ đầu cho ISR
tơng ứng tại trang zero @ Prog. Memory: 0003,
000Bh, 0013h, 001Bh, 0023h và 002Bh.
Tại các địa chỉ này thờng đặt lệnh LJMP nnnn và
đợc đặt lệnh RETI nếu không có ISR.

3.2. Interrupt: 3.2.3. Case study:
tổ chức ngắt của các hệ VXL/Máy tính
P&I Ch3: Methodes 13
b. Z80 system:
Z80-CPU, 3 modes ngắt: Các
lệnh ReStart (nh Intel 8085),
NMI và Daisy Chain. Kiểu Daisy
Chain:
Ghép nối với các Z80-Ports:
Z80-PIO, Z80-SIO, Z80-CTC
IRQs từ các ports là Open Drain,
Khi CPU: M1 & IO Request =>
INTA đến port1,
Nếu Port1 Resq, sẽ phát m
Addr lên data bus, nếu không
Chuyển INTA đến Port 2
Ưu tiên cố định/ jumper.
3.2. Interrupt: 3.2.3. Case study: ngắt các hệ VXL/Máy tính
P&I Ch3: Methodes 14
c. x86 & PC interrupt : Real & Protected modes
REAL MODE: Bảng vector ngắt IVT - Interrupt
Vector Table: 1
st
kilo byte (RAM) bảng vector ngắt
1 KB = 256 elements of 4 bytes
Chứa địa chỉ đầu của ISR tơng ứng CS:IP. Khi khởi
tạo, BIOS nạp vào IVT đcđ của các ISR ứng với IO.
Đổi vector ngắt: đổi nội dung các vector này
Các ngắt cứng, NMI v Internal đều tơng ứng với 1
lệnh ngắt mềm có cùng vector type, tức có vector

trong bảng IVT.
3.2. Interrupt: 3.2.3. Case study: ngắt các hệ VXL/Máy tính
P&I Ch3: Methodes 15
3.2. Interrupt: 3.2.3. Case study: x86 & pc IVT
P&I Ch3: Methodes 16
Software Interrupt:
lệnh Int n, n=0 FFh, n - vector type
Mô tả lệnh:
Trớc khi thực hiện lệnh, phải có chtr khởi tạo ngắt
(Intr house-keeping): định vị ISR và đổi vector ngắt,
Khi gặp lệnh Int n, CPU sẽ cất 6 byte Flag Reg, CS và
IP vào Stack mem,
(n x 4) là địa chỉ IVT, đọc 4 byte nạp vào IP và CS
tơng ứng => ISR bắt đầu đợc thực hiện.
Khi gặp lệnh IRET, CPU khôi phục lại từ Stack Mem IP,
CS và Flag Reg (LIFO!).
3.2. Interrupt: 3.2.3. Case study: x86 & pc, int n instruction
P&I Ch3: Methodes 17
Hardware Interrupt, irq:
IRQ trong PC: dïng 2 PICs - Priority Interrupt Controller
PIC 8259A
Master PIC (®Þa chØ: 20h, 21h, IO Space), IRQ0 IRQ7
=> Int 8 Int 0Fh
Slave PIC (®ịa chØ: 0a0h, 0a1h) = IRQ8 IRQ15 =>
=> Int 70h Int 77h
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
P&I Ch3: Methodes 18
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
PCI bus dïng chung 1 IRQ
P&I Ch3: Methodes 19

8 Channel (8 I/O ports)
Ưu tiên cố định, vòng, vòng định trớc
Nối tầng với Slave PIC(s), mở rộng thêm IOs
Nhiều chế độ hoạt động - ICWs & OCWs
Dùng với nhiều hệ VXL của Intel, IBM-PC
Tham khảo VXL của MTV
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
Priority Interrupt Controller Intel 8259A
P&I Ch3: Methodes 20
Hardware Interrupt, irq:
Hoạt động Hardware Intr trong PC (xem PIC 8259A)
Interrupt Housekeeping - chuẩn bị:
ISR, ví dụ files.sys[com], gmouse.com - cổng
comm 1
Load ISR và xác định địa chỉ vật lý,
Thay vector ngắt, cần lu vector cũ?
Enabling IRQi @ PICs, Mask Reg (OCW1): b(i) = 0,
Enabling cờ IF trong CPU, lệnh STI, Set Interrupt
Enable Flag, cho phép ngắt.
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
P&I Ch3: Methodes 21
P&I Ch3: Methodes 22
Hoạt động:
1 Khi trao đổi số liệu: Ngoại vi <=> với IO port
2 IO port phát tín hiệu IRQ(i) tới PIC 8259A,
3 Nếu đợc, PIC phát tín hiệu INT => CPU. CPU thực
hiện nốt lệnh hiện tại
4 CPU cất ngữ cảnh của main prog. vào stack mem
5 T/h #1 INTA bus cycle => Prioritizing, thiết lập u tiên
6 T/h #2 INTA bus cycle => đọc Vector type của IO port,

VectorType = i+8; nếu VT =0 7 int8 int 0Fh
= i+ 68h nếu vt = 8 15 int 70h int 77h
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
P&I Ch3: Methodes 23
7 CPU lấy (VectorType x 4) => IVT, đọc ISR đcđ
tơng ứng, nạp vào IP&CS, IRS bắt đầu đợc thực hiện.
8 Lu ý khi xây dựng ISR: (nếu dùng ASM)
- Realtime Prog. Languages: MASM, C
- Enabling Interrupt for Higher priority Levels,
- Cất những thanh ghi-ISR dùngvào STACK Mem,
- T/h nội dung ISR,
- Khôi phục Reg từ STACK Mem, LIFO,
- Depriorotizing: OCW2:
Ví dụ: mov al, 20h
out 20h, al ; Non Specific EOI
iret ; Return fron Intr.
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
P&I Ch3: Methodes 24
d. Xây dựng PC ISR:
- NN cao Pascal/C: Pointers (for Old Vector) và
procedure có chỉ dẫn Interrupt. Chú ý cần có thêm các
lệnh STI và CLI hoặc inline m máy FAh và FBh (En/Dis).
- MASM và OS: thay vector ngắt trực tiếp, lệnh mov
các con trỏ vào IVT; int 21h subfunctions: 25h và 35h
của DOS.
- Case Study: Xây dựng ứng dụng dùng ngắt cứng để
ghép nối ngoại vi: IRQ1 (Any key), IRQ4: CommPort,
IRQ5 (Option) hoặc IRQ7 (LPT1, Falling Edge of -ACK),
cảnh báo virus
-Thờng trú ngắt thời gian Int 1Ch thuộc Int 8 ISR,

Timer
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
P&I Ch3: Methodes 25
80x86 Interrupt in
Protected Mode:
• Int. Descriptor Table
(IDT) có thể định vị bất
kỳ vùng nhớ nào
• Vị trí và kích thước
trong bảng IDTR: 32bit
addr và 16 bit limit
• Gate, not vector.
• 256 gate descriptor:
trap/ interrupt/ task -
ISR's Addr & Attribute
• Int/ trap cho phép
chuyển đến ISR trong
current task.
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

×