You are on page 1of 34

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 1


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 2


Polling
Một l−u
®å : Device #1 Y Device #1
Request ? Service Routine

Device #2 Y Device #2
Request ? Service Routine

Device #n Y Device #n
Request ? Service Routine

Quit

H×nh 3.1. L−u ®å ph−¬ng ph¸p IO interface polling


P&I Ch3: Methodes 3
3.2. Ph−¬ng ph¸p ng¾t (Interrupt)

• Kh¸i niÖm,
• Ph©n lo¹i vµ
• ‘Case studies’

P&I Ch3: Methodes 4


3.2. Phương pháp ngắt (Interrupt):
3.2.1. Khái niệm
• 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 H×nh 3.2. K/n
tục thực hiện. ng¾t
P&I Ch3: Methodes 5
3.2. Phương pháp ngắt (Interrupt):
3.2.1. Khái niệm:
• Đặ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.

P&I Ch3: Methodes 6


3.2. Ph−¬ng ph¸p ng¾t (Interrupt): 3.2.1. Kh¸i niÖm

• Ư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

P&I Ch3: Methodes 7


3.2. Interrupt: 3.2.2. ph©n lo¹i:
Gåm: Hardware, software, internal, exception, NMI...

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

P&I Ch3: Methodes 8


3.2. Interrupt: 3.2.2. ph©n lo¹i: b. Hardware:
• 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.

P&I Ch3: Methodes 9


3.2. Interrupt: 3.2.2. ph©n lo¹i: c. Internal:

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
- ...

P&I Ch3: Methodes 10


3.2. Interrupt: 3.2.2. ph©n lo¹i: c. Exceptions:

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.

P&I Ch3: Methodes 11


3.2. Interrupt: 3.2.3. Case study:
tæ chøc ng¾t cña c¸c hÖ VXL/M¸y tÝnh

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.

P&I Ch3: Methodes 12


3.2. Interrupt: 3.2.3. Case study: ng¾t c¸c hÖ VXL/M¸y tÝnh

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.

P&I Ch3: Methodes 13


3.2. Interrupt: 3.2.3. Case study: ng¾t c¸c hÖ VXL/M¸y tÝnh

c. x86 & PC interrupt : Real & Protected modes


REAL MODE: B¶ng vector ng¾t IVT - Interrupt
Vector Table: 1st 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.

P&I Ch3: Methodes 14


3.2. Interrupt: 3.2.3. Case study: x86 & pc IVT

P&I Ch3: Methodes 15


3.2. Interrupt: 3.2.3. Case study: x86 & pc, int n instruction

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!).
P&I Ch3: Methodes 16
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

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

P&I Ch3: Methodes 17


3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

PCI bus dïng chung 1 IRQ


P&I Ch3: Methodes 18
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
Priority Interrupt Controller Intel 8259A

ƒ 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

P&I Ch3: Methodes 19


3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

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 l−u vector cò?
Enabling IRQi @ PIC’s, Mask Reg (OCW1): b(i) = 0,
Enabling cê IF trong CPU, lÖnh STI, Set Interrupt
Enable Flag, cho phÐp ng¾t.
P&I Ch3: Methodes 20
P&I Ch3: Methodes 21
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
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

P&I Ch3: Methodes 22


3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

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 L−u ý 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.

P&I Ch3: Methodes 23


3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int

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
P&I Ch3: Methodes 24
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Hardware Int
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.
P&I Ch3: Methodes 25
3.2. Interrupt: 3.2.3. Case study: x86 & pc, Int. instruction

CLI
STI
LIDT EA ; Load IDT từ Effct Addr
SIDT EA
INT n
IRET
INT O ; ( INT 4)
HLT ; Wait for Ext IRQ or Reset
WAIT ; Wait for -Busy => inactive

P&I Ch3: Methodes 26


3.3. direct memory access - dma
3.3.1. kh¸i niÖm:

Controlled by DMAC, bus master (ph¸t ®Þa chØ,


th ®iÒu khiÓn bus)
ƒ In/Out dïng hardware [burst mode] => nhanh,
2-5 MBps ISA bus (max 33 MBps, MCA/EISA bus)
ƒ ChuyÓn block/ Single byte (FDC)
ƒ IO port ÍÎ Mem, Mem ÍÎ Mem (Ýt)
ƒ Specified Block/ IO Requirement
ƒ Stealing cycle (DRAM controller Intel 8208)

P&I Ch3: Methodes 27


3.3. direct memory access – dma
3.3.1. Kh¸i niÖm dma:

P&I Ch3: Methodes 28


3.3. direct memory access - dma
3.3.2. dmac 8237a, Intel : MTV

ƒ 4 Channel of 8/16 bit


ƒ IOR-MEMW & MEMR-IOW DMA bus cycles
ƒ Mem to Mem
ƒ Single byte/ block transfer (64KB/Kw max)
ƒ ¦u tiªn cè ®Þnh/ vßng
ƒ Specified block (kÕt thóc bëi t/h TC) / IO
Requirement (EoP)
ƒ Nèi tÇng ®Ó më réng sè kªnh DMA
ƒ ...

P&I Ch3: Methodes 29


3.3. direct memory access - dma
3.3.3. PC’s dma:
• DMAC#1: 8 bit Channels, 64KB max, 0h-0fh addr
• Ch0 - DRAM Refresh, Spare
• Ch1 - SDLC, LPT’s EPP/ECP/IEEE1284 mode Alt.,
Spare
• Ch2 - FDC, single byte mode
• Ch3 - LPT’s EPP/ECP/IEEE1284 mode, Ir port (IEEE
802.11b), Spare
• DMAC #2: 16 bit Channels, 64KW max, 0C0-0Cfh ®Þa chØ
• Ch4 - Cascade for DMAC 1
• Ch5 - HDC ISA bus, spare
• Ch6 - Spare,
• Ch7 - Spare.
• Page Registers: 080h..08Fh: Gi÷ ®Þa chØ cao v× DMAC chØ
ph¸t 16 low addr bit
• SysBus in DMA mode, AEN = 1 (Addr Enable)
P&I Ch3: Methodes 30
3.3. direct memory access - dma
3.3.3. PC’s dma: Case study - S¬ ®å khèi:

IOR

P&I Ch3: Methodes 31


3.3. direct memory access – dma
3.3.3. PC’s dma: Case study – M« t¶ H§:
• DMA Housekeeping khëi t¹o tr−íc khi ho¹t ®éng – DMAC
as Passive Device:
– Addr lines (DMAC & Page Reg) input/ Hi-Z
– Init: 8bit(Master:0..1F)/ 16bit (Slave:0C0..0DFh)
• Channel (i): DRQi vµ -DACKi trªn ISA bus.
• Port (IO Addr), AEN = 1 (Address decode)
• IOR-MEMW hay MEMR-IOW
• Hi Addr of data memory => page reg t/øng. Addr tõ
Ch0 (hex): 87, 83, 81, 82, 88, 89, 8A, IO space
• Low Addr => BaseAddrRegi, (TechHelp 6.0)
• KÝch th−íc m¶ng: BaseCounteri
• Single byte/ block
• Specificed block/ IO Port Requirement
• Burst mode: SRAM vµ counter- ®Þa chØ, DACKi

P&I Ch3: Methodes 32


3.3. direct memory access – dma
3.3.3. PC’s dma: Case study:IOR-MEMW bus cycle
c B¾t ®Çu t/h DMA, ngo¹i vi chuyÓn data => IO Port
d IO Port ph¸t tÝn hiÖu DRQi tíi DMAC. NÕu chÊp nhËn
e DMAC ph¸t HRQ tíi CPU (CPU logic circuitry)
f CPU dõng ho¹t ®éng @ state T3, Hi Z bus cña CPU
g CPU Tr¶ lêi t/h HLDA => DMAC & ‘goes to sleep’
h Thùc hiÖn DMA bus cycle:
- DACKi = 0, as Chip Select
- IOR = 0 ==> IO Port 'nh¶' data lªn bus
- Addr Mem (DMAC & Page Reg)
- MEMW = 0
=> chuyÓn 1 byte/word
i DMAC: T¨ng CurrentAddrReg, gi¶m CurrentCounter. NÕu
Current Counter=0 th× ph¸t T/C (Terminate Count), nÕu <>0
=> h, next DMA bus cycle
Mçi
P&I
chu kú bus, chuyÓn ®−îc 1 byte hoÆc 1 tõ
Ch3: Methodes 33
Bμi tËp ch−¬ng 3:

• X©y dùng øng dông ng¾t: bµn phÝm, LPT,


Comm hoÆc m¹ch ghÐp nèi.
• X©y dùng s¬ ®å ghÐp nèi vµ lËp tr×nh cho
DMAC c¸c kªnh 8 vµ 16 bit cho m¸y tÝnh
PC ®Ó göi sè liÖu ra hoÆc nhËn sè liÖu vµo.
– Channel,
– Mode,
– Block
– BTCT: DMA 16bit!
P&I Ch3: Methodes 34

You might also like