|
在許多高性能處理器中,還提出了一些新的概念,以加速外設(shè)到存儲器的DMA寫過程。如Freescale的I/O Stashing和Intel的IOAT技術(shù)。 如圖3?8所示,當(dāng)設(shè)備進(jìn)行存儲器寫時(shí),如果可以對Cache直接進(jìn)行寫操作時(shí),即便這個(gè)存儲器寫命中了一個(gè)狀態(tài)為M的Cache行,可以不將該Cache行的數(shù)據(jù)回寫到存儲器中,而是直接將數(shù)據(jù)寫入Cache,之后該Cache行的狀態(tài)依然為M。采用這種方法可以有效提高設(shè)備對存儲器進(jìn)行寫操作的效率。采用直接向Cache行寫的方法,PCI設(shè)備對存儲器寫命中一個(gè)狀態(tài)為M的Cache行時(shí),將執(zhí)行以下操作。
(1)
(2)
(3) 從原理上看,這種方法并沒有奇特之處,僅需Cache能夠提供一個(gè)接口,使外部設(shè)備能夠直接寫入即可。但是從具體實(shí)現(xiàn)上看,設(shè)備直接將數(shù)據(jù)寫入Cache中,還是有相當(dāng)大的難度。特別是考慮在一個(gè)處理器中,可能存在多級Cache,當(dāng)CPU進(jìn)行總線監(jiān)聽時(shí),可能是在L1、L2或者L3 Cache中命中,此時(shí)的情況較為復(fù)雜,多級Cache間的協(xié)議狀態(tài)機(jī)遠(yuǎn)比FSB總線協(xié)議復(fù)雜的多。 在一個(gè)處理器系統(tǒng)中,如果FSB總線事務(wù)在“與FSB直接相連的Cache”中命中時(shí),這種情況相對容易處理;但是在與BSB(Back-Side Bus)直接相連的Cache命中時(shí),這種情況較難處理。下文分別對這兩種情況進(jìn)行討論,在一個(gè)處理器中,采用FSB和BSB連接Cache的拓?fù)淙?/span>圖3?9所示。 當(dāng)采用FSB總線連接L2 Cache時(shí),L2 Cache直接連接到FSB總線上,設(shè)備通過FSB總線向L2 Cache進(jìn)行寫操作并不難實(shí)現(xiàn),MPC8548處理器就是采用了這種結(jié)構(gòu)將L2 Cache直接連接到FSB總線上。 但是由于FSB總線的頻率遠(yuǎn)低于BSB總線頻率,因此采用這種結(jié)構(gòu)將影響L2 Cache的訪問速度,為此高端處理器多采用BSB總線連接L2 Cache,x86處理器在Pentium Pro之后的高性能處理器都使用BSB總線連接L2 Cache,Freescale的G4系列處理器和最新的P4080處理器也使用BSB總線連接L2 Cache。 當(dāng)L2 Cache沒有直接連接到FSB上時(shí),來自外部設(shè)備的數(shù)據(jù)并不容易到達(dá)BSB總線。除了需要考慮Cache連接在BSB總線的情況外,在外部設(shè)備進(jìn)行DMA操作時(shí),還需要考慮多處理器系統(tǒng)的Cache共享一致性協(xié)議。設(shè)計(jì)一個(gè)專用通道,將數(shù)據(jù)從外部設(shè)備直接寫入到處理器的Cache中并不容易實(shí)現(xiàn)。Intel的IOAT和Freescale的I/O Stashing可能使用了這種專用通道技術(shù),直接對L1和L2 Cache進(jìn)行寫操作,并在極大增加了設(shè)計(jì)復(fù)雜度的前提下,提高了處理器系統(tǒng)的整體效率。 以上對Cache進(jìn)行直接寫操作,僅是Intel的IOAT和Freescale的I/O Stashing技術(shù)的一個(gè)子集。目前Intel和Freescale沒有公開這些技術(shù)的具體實(shí)現(xiàn)細(xì)節(jié)。在一個(gè)處理器系統(tǒng)中,可能存在多級Cache,這些Cache的層次組成結(jié)構(gòu)和狀態(tài)機(jī)模型異常復(fù)雜,本章對這些內(nèi)容不做進(jìn)一步說明。在許多高性能處理器中,還提出了一些新的概念,以加速外設(shè)到存儲器的DMA寫過程。如Freescale的I/O Stashing和Intel的IOAT技術(shù)。 如圖3?8所示,當(dāng)設(shè)備進(jìn)行存儲器寫時(shí),如果可以對Cache直接進(jìn)行寫操作時(shí),即便這個(gè)存儲器寫命中了一個(gè)狀態(tài)為M的Cache行,可以不將該Cache行的數(shù)據(jù)回寫到存儲器中,而是直接將數(shù)據(jù)寫入Cache,之后該Cache行的狀態(tài)依然為M。采用這種方法可以有效提高設(shè)備對存儲器進(jìn)行寫操作的效率。采用直接向Cache行寫的方法,PCI設(shè)備對存儲器寫命中一個(gè)狀態(tài)為M的Cache行時(shí),將執(zhí)行以下操作。
(1)
(2)
(3) 從原理上看,這種方法并沒有奇特之處,僅需Cache能夠提供一個(gè)接口,使外部設(shè)備能夠直接寫入即可。但是從具體實(shí)現(xiàn)上看,設(shè)備直接將數(shù)據(jù)寫入Cache中,還是有相當(dāng)大的難度。特別是考慮在一個(gè)處理器中,可能存在多級Cache,當(dāng)CPU進(jìn)行總線監(jiān)聽時(shí),可能是在L1、L2或者L3 Cache中命中,此時(shí)的情況較為復(fù)雜,多級Cache間的協(xié)議狀態(tài)機(jī)遠(yuǎn)比FSB總線協(xié)議復(fù)雜的多。 在一個(gè)處理器系統(tǒng)中,如果FSB總線事務(wù)在“與FSB直接相連的Cache”中命中時(shí),這種情況相對容易處理;但是在與BSB(Back-Side Bus)直接相連的Cache命中時(shí),這種情況較難處理。下文分別對這兩種情況進(jìn)行討論,在一個(gè)處理器中,采用FSB和BSB連接Cache的拓?fù)淙?/span>圖3?9所示。 當(dāng)采用FSB總線連接L2 Cache時(shí),L2 Cache直接連接到FSB總線上,設(shè)備通過FSB總線向L2 Cache進(jìn)行寫操作并不難實(shí)現(xiàn),MPC8548處理器就是采用了這種結(jié)構(gòu)將L2 Cache直接連接到FSB總線上。 但是由于FSB總線的頻率遠(yuǎn)低于BSB總線頻率,因此采用這種結(jié)構(gòu)將影響L2 Cache的訪問速度,為此高端處理器多采用BSB總線連接L2 Cache,x86處理器在Pentium Pro之后的高性能處理器都使用BSB總線連接L2 Cache,Freescale的G4系列處理器和最新的P4080處理器也使用BSB總線連接L2 Cache。 當(dāng)L2 Cache沒有直接連接到FSB上時(shí),來自外部設(shè)備的數(shù)據(jù)并不容易到達(dá)BSB總線。除了需要考慮Cache連接在BSB總線的情況外,在外部設(shè)備進(jìn)行DMA操作時(shí),還需要考慮多處理器系統(tǒng)的Cache共享一致性協(xié)議。設(shè)計(jì)一個(gè)專用通道,將數(shù)據(jù)從外部設(shè)備直接寫入到處理器的Cache中并不容易實(shí)現(xiàn)。Intel的IOAT和Freescale的I/O Stashing可能使用了這種專用通道技術(shù),直接對L1和L2 Cache進(jìn)行寫操作,并在極大增加了設(shè)計(jì)復(fù)雜度的前提下,提高了處理器系統(tǒng)的整體效率。 以上對Cache進(jìn)行直接寫操作,僅是Intel的IOAT和Freescale的I/O Stashing技術(shù)的一個(gè)子集。目前Intel和Freescale沒有公開這些技術(shù)的具體實(shí)現(xiàn)細(xì)節(jié)。在一個(gè)處理器系統(tǒng)中,可能存在多級Cache,這些Cache的層次組成結(jié)構(gòu)和狀態(tài)機(jī)模型異常復(fù)雜,本章對這些內(nèi)容不做進(jìn)一步說明。 |
|
|