簡介
周期挪用是指利用CPU不訪問存儲器的那些周期來實現DMA操作,此時DMA可以使用匯流排而不用通知CPU也不會妨礙CPU的工作。周期挪用並不減慢CPU的操作,但可能需要複雜的時序電路,而且數據傳送過程是不連續的和不規則的。
周期挪用(或周期竊取)
在這種方法中,每當I/O設備發出DMA請求時,I/O設備便挪用或竊取匯流排占用權一個或幾個主存周期,而DMA不請求時,CPU仍繼續訪問主存。
I/O設備要求DMA傳送會遇到三種情況,一種是此時CPU不需訪問主存(如CPU正在執行乘法指令,由於乘法指令執行時間較長,此時CPU不需訪問主存),故I/O設備訪存與CPU不發生衝突。第二種情況是I/O設備要求DMA傳送時,CPU正在訪存,此時必須待存取周期結束時刻,CPU才能將匯流排占有權讓出。第三種情況是I/O設備要求訪存時,CPU也要求訪存,這就出現了訪存衝突。此刻,I/O訪存優先於CPU訪存,因為I/O不立即訪存就可能丟失數據,這時I/O要竊取一二個存取周期,意味著CPU在執行訪存指令過程中插入了DMA請求,並挪用了一二個存取周期,使CPU延緩了一二個存取周期再訪存。
對比
與CPU暫停訪存的方式相比,它既實現了I/O傳送,又較好地發揮了主存與CPU的效率,是一種廣泛採用的方法。
應該指出,I/O設備每挪用一個主存周期都要申請匯流排控制權、建立匯流排控制權和歸還匯流排控制級權。因此,儘管傳送一個字對主存而言只占用一個主存周期,但對DMA接口而言,實質上要占2—5個主存周期(由邏輯線路的延遲特性而定)。因此周期挪用的方法比較適合於I/O設備的讀寫周期大於主存周期的情況。