2009年5月31日 星期日

CPU與I/O運作之間的溝通

1.
a . Busy waiting I/O(polling(詢問) I/O)(programmed I/O) I/O Device(DISK)
1. process執行至某部分時發出I/O request
2. CPU對device controller設定I/O command
3. I/O運作
4. PA(origin process)waiting for I/O complete
5. CPU切給PB執行
6. CPU會在執行PB期間不斷詢問(polling) I/O Device,監督I/O資料傳輸,確定其完成否
2.
b. Interrupt I/O
1. I/O完成時,I/O device controller發出"I/O complete" interrupt通知OS
2. OS會暫停目前process(PB)的執行,並保存其執行狀況
3. OS根據interrupt ID,查詢interrupt vector(table),取出對應的Interrupt Service Routine(ISR)的起始位址
4. CPU執行ISR(此routine的內容,將buffer register中的資料傳送到memory中)
5. ISR完成後,OS通知PA其I/O request完成,且將PA的state從wait改回ready
6. (可能)繼續原先Process(PA)的執行
優點:避免CPU耗費大量時間於polling I/O status上,故CPU可全力用在process之執行
缺點:CPU仍要參與在I/O device與記憶體之間的資料傳輸過程

3.
DMA(Direct Memory Access)
1. controller負責I/O Device與Memory之間的資料傳輸,其過程完全不需CPU參與,CPU 就有更多時間用在process執行
2. DMA大多用在High Speed Block-transfer的I/O Device上
CPU在設定DMA的controller時,需包含:
a. I/O command(eg. read/write)
b.I/O Device physical location for data access
c. Counter(表示傳輸量有多大)
d. Memory location
DMA controller與CPU採Interleaving(交替)使用memory resource,一般稱為"cycle straling"技術