• Nhanh, đơn giản, thường dùng trong các hệ nhỏ hoặc đơn nhiệm - ít thiết bị IO, • Tốt cho việc 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
Trang 1• DMA - truy nhËp trùc tiÕp mem - IO
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,
• Tốt cho việc 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
Trang 2P&I Ch3: Methodes 3
Ví dụ về PP polling
• Cổng Comm (RS232) của máy tính PC:
– Thanh ghi Line Status Register có các bit:
• b0 – Char received, đã thu xong 1 char,
• b1 – Overrun Error, char bị xóa đè
Device #2 Y Request ?
N
Device #n Y Request ?
N
Device #1 Service Routine
Device #2 Service Routine
Device #n Service Routine
Trang 3• 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
Trang 4P&I Ch3: Methodes 7
• Đặ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:
• Ư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,
• 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
Trang 5P&I Ch3: Methodes 9
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
• 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:
Trang 6P&I Ch3: Methodes 11
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:
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:
Trang 7P&I Ch3: Methodes 13
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:
• 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
Trang 8P&I Ch3: Methodes 15
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
3.2 Interrupt: 3.2.3 Case study: x86 & pc IVT
Trang 9P&I Ch3: Methodes 17
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
Hardware Interrupt, irq:
IRQ trong PC: dùng 2 PICs - Priority Interrupt Controller
Trang 10P&I Ch3: Methodes 19
3.2 Interrupt: 3.2.3 Case study: x86 & pc, Hardware Int
PCI bus dùng chung 1 IRQ
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
Trang 11P&I Ch3: Methodes 21
Các IRQ được mô tả theo mức ưu tiên giảm dần:
• IRQ0: System Timer, HĐH và các ứng dụng căn cứ
nhịp thời gian này để thực hiện các tác vụ chu kỳ
55ms, được tạo từ:
14.31818 MHz/3 = 4.77MHz
4.77 MHz/4 = 1.19 MHz, qua PIT8254,
f = 1.19MHz/65536 = 18.2Hz Ù T=55ms
(Channel 0 của PIT8254, divisor=65536)
• IRQ1: Key board Port Interrupt: khi có người
dùng bấm phím
– IRQ2: Nối sang Slave PIC, mở rộng các thiết bị
ngoại vi
– IRQ8: Real time Clock – RTC, (Motorola
MC146818 hoặc Dallas 12C887) được lập trình
Trang 12P&I Ch3: Methodes 23
– IRQ13:Math Processor Errors: báo thực hiện
xong phép tính, báo lỗi phép toán: chia zero,
căn bậc chẵn của số âm, arcsin >1, loga của số
âm, số 0
– IRQ14:IDE ghép qua ISA bus = báo ngắt mỗi
khi HD Controller thực hiện xong 1 lệnh do CS
yêu cầu (có kết quả tốt hay lỗi)
– IRQ15:Reserved – Đ/v Industrial PC Watch
Dog Timer – WDT, là mạch chống treo.
Watch Dog Timer
• Là cơ chế dùng để chống treo cho VXL
• Dùng 01 counter down, và mạch Oscillator độc
lập với CPU Trong quá trình hoạt động, theo 1
chu kỳ, do IRQ15 gọi ISR15 nạp giá trị preload
cho counter để sao cho nội dung bộ đếm không về
đến zero Nếu CPU bị treo (halted), bộ đếm sẽ
đếm lùi đần đến zero, phát ra xung BORROW
OUT, xung này sẽ reset CPU – cold start.
• Tùy thuộc vào hằng số thời gian của đối tượng,
tùy từng hệ thống, bộ đếm WDT có thể được nạp
giá trị đếm, nạp số chia tần để các khoảng thời
Trang 13P&I Ch3: Methodes 25
Fig 3.5b Watch dog Timer principle
• IRQ3: Cổng truyền tin RS232 số 2
(Comm2), báo ngắt khi: thu/phát xong 1
byte, lỗi khi thu, có tín hiệu báo về từ
MODEM
ngắt mỗi khi có sườn xuống của xung ACK
(từ máy in hoặc từ bên ngoài) – Reserved
Trang 14P&I Ch3: Methodes 27
• IRQ6: FDC Interrupt – Floppy Disk Contronller
bỏo thực hiện xong 1 lệnh do CS yờu cầu (cú kết
quả normal or error), như khởi động xong motor,
tỡm thấy track, tỡm thấy sector, ghi/đọc/verify
xong 1 sector, format 1 track
• IRQ7: Như 5, LPT1
• Chỳ ý: cỏc thiết bị ghộp qua PCI bus dựng chung
1 IRQ => CRTC, HDC, USB controller, Sound
Controller khụng dựng ngắt riờng – thường
dựng chung IRQ11
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.
3.2 Interrupt: 3.2.3 Case study: x86 & pc, Hardware Int
Trang 15P&I Ch3: Methodes 29
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 i =0 7 Ù int8 int 0Fh
= i+ 68h nếu i = 8 15 Ù int 70h int 77h 3.2 Interrupt: 3.2.3 Case study: x86 & pc, Hardware Int
Trang 16P&I Ch3: Methodes 31
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.
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,
3.2 Interrupt: 3.2.3 Case study: x86 & pc, Hardware Int
Trang 17trong 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
HLT ; Wait for Ext IRQ or Reset
WAIT ; Wait for -Busy => inactive
3.2 Interrupt: 3.2.3 Case study: x86 & pc, Int instruction
Trang 18P&I Ch3: Methodes 35
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)
3.3 direct memory access – dma
3.3.1 Khái niệm dma:
Trang 19P&I Ch3: Methodes 37
3.3 direct memory access - dma
3.3.2 dmac 8237a, Intel : MTV
• 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)
Trang 20P&I Ch3: Methodes 39
3.3 direct memory access - dma
3.3.3 PC’s dma: Case study - Sơ đồ khối:
IOR
• 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): DRQ i và -DACK i 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 => BaseAddrReg i , (TechHelp 6.0)
• Kích thước mảng: BaseCounter i
• Single byte/ block
• Specificed block/ IO Port Requirement
• Burst mode: SRAM và counter- địa chỉ, DACK i
3.3 direct memory access – dma
3.3.3 PC’s dma: Case study – Mô tả HĐ:
Trang 21P&I Ch3: Methodes 41
c Bắt đầu t/h DMA, ngoại vi chuyển data => IO Port
d IO Port phát tín hiệu DRQ i 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:
- DACK i = 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 chu kỳ bus, chuyển được 1 byte hoặc 1 từ
3.3 direct memory access – dma
3.3.3 PC’s dma: Case study:IOR-MEMW bus cycle
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!