專利名稱::一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)集成電路芯片領(lǐng)域,尤其涉及一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng)及方法。
背景技術(shù):
:現(xiàn)代計(jì)算機(jī)系統(tǒng)由至少一個(gè)中央處理器、相當(dāng)容量的存儲(chǔ)器和用于與外界通信的輸入輸出控制器模塊(簡稱io控制器模塊)所組成。在系統(tǒng)中,存儲(chǔ)器由處理器和IO控制器模塊共享,是兩者之間通信的介質(zhì)。數(shù)據(jù)由處理器或IO控制器模塊寫入內(nèi)存,并被另一方所讀取,以此種方式完成信息交換。隨著集成電路工藝和計(jì)算機(jī)體系結(jié)構(gòu)的飛速發(fā)展,10控制器模塊和主存的訪問速度遠(yuǎn)落后于處理器的處理能力,為了彌補(bǔ)這一差異,現(xiàn)代計(jì)算機(jī)系統(tǒng)都采用一種層次化的存儲(chǔ)系統(tǒng)設(shè)計(jì),通過訪問的局部性來提高處理器訪存性能。在存儲(chǔ)層次中層次越高,數(shù)據(jù)單元的訪問速度越快,但單位容量的資源消耗和制造成本越高。位于最高級的一級緩存通常設(shè)置于處理器核內(nèi),與處理器核主流水線緊密耦合;位于中間層的二級高速緩沖存儲(chǔ)器(Cache)或者三級高速緩沖存儲(chǔ)器則設(shè)置在處理器核之外,其容量要遠(yuǎn)大于一級高速緩沖存儲(chǔ)器;位于最底層的內(nèi)存則提供一個(gè)容量最大但速度最慢的存儲(chǔ)區(qū)。由于IO控制器模塊所能直接訪問的存儲(chǔ)層次有限,不能直接訪問位于處理器核內(nèi)的存儲(chǔ)層次(即一級高速緩沖存儲(chǔ)器)。當(dāng)IO控制器模塊和處理器進(jìn)行異步的讀寫訪問操作時(shí),各存儲(chǔ)層次中的數(shù)據(jù)副本得不到及時(shí)的通知和更新,即會(huì)產(chǎn)生io控制器模塊與處理器間的數(shù)據(jù)一致性問題。解決10控制器模塊與處理器間的數(shù)據(jù)一致性問題可以采用軟件手段,通過專用的緩沖指令對各存儲(chǔ)層次的數(shù)據(jù)進(jìn)行寫回、刷新、無效等操作,使10控制器模塊和處理器對內(nèi)存的訪問符合數(shù)據(jù)一致性的要求。但是軟件手段的效率較低,且管理方案需要對驅(qū)動(dòng)程序進(jìn)行修改,增加系統(tǒng)開發(fā)人員的負(fù)擔(dān),同時(shí)也增加了軟件在平臺(tái)間移植的難度。相對于軟件解決方案,采用硬件直接維護(hù)io控制器模塊和處理器間數(shù)據(jù)一致性的方式可以避免軟件介入對緩沖的管理,降低驅(qū)動(dòng)程序開發(fā)和移植的難度,同時(shí)還可以提高一致性維護(hù)的效率。但是采用硬件維護(hù)10控制器模塊和處理器間數(shù)據(jù)一致性同樣面臨設(shè)計(jì)和實(shí)現(xiàn)的問題。由于處理器對內(nèi)存訪問的模式比較簡單和固定,一般不會(huì)超過一個(gè)緩沖行的單位,硬件方案可以采用以緩沖行為單位,通過附帶在每個(gè)緩沖行上的狀態(tài)信息來實(shí)現(xiàn)對數(shù)據(jù)一致性的管理,這種硬件方案多用于維護(hù)多處理器系統(tǒng)的處理器間緩沖一致性。而io控制器模塊涉及到的接口協(xié)議豐富多樣,對內(nèi)存的數(shù)據(jù)訪問模式復(fù)雜而多變,其一致性維護(hù)要求不同于處理器。具體差異主要體現(xiàn)在io控制器模塊對數(shù)據(jù)的訪問通常是突發(fā)性的,且訪問長度一般要遠(yuǎn)大于單個(gè)緩沖行,另外io控制器模塊一般不存在存儲(chǔ)層次,其數(shù)據(jù)讀取和寫入都是一次性的,即在io控制器模塊完成DMA(DirectMemoryAccess,直接存儲(chǔ)器存取)數(shù)據(jù)讀取后,系統(tǒng)并不需要繼續(xù)跟蹤維護(hù)該數(shù)據(jù)單元與10控制器模塊的一致性關(guān)系;在10控制器進(jìn)行DMA寫時(shí),則無效掉各存儲(chǔ)層次的數(shù)據(jù)副本,之后進(jìn)行正常的數(shù)據(jù)寫操作。由于硬件實(shí)現(xiàn)與平臺(tái)和結(jié)構(gòu)聯(lián)系過于緊密,同時(shí)10控制器模塊與處理器在數(shù)據(jù)訪問模式上的巨大差異,采用硬件維護(hù)10控制器模塊和處理器的數(shù)據(jù)一致性客觀上需要采用一種簡潔、通用、高效的解決方案。
發(fā)明內(nèi)容為解決上述問題,本發(fā)明提供了一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng)及方法,能夠簡潔高效的實(shí)現(xiàn)數(shù)據(jù)一致性。本發(fā)明公開了一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),包括處理器、用于發(fā)起I0請求的I0模塊,所述系統(tǒng)還包括DMA模塊和二級緩沖模塊,所述DMA模塊,用于將多緩沖行的所述10請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;在接收到所述二級緩沖模塊的應(yīng)答后,依據(jù)所述應(yīng)答進(jìn)行操作,并且收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述10模塊返回應(yīng)答;所述二級緩沖模塊,用于接收所述單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答。所述系統(tǒng)還包括互連模塊,所述DMA模塊在將所述單緩沖行請求傳遞給二級緩沖模塊時(shí)進(jìn)一步用于通過所述互連模塊將所述單緩沖行請求傳遞給所述二級緩沖模塊。所述10模塊進(jìn)一步用于發(fā)起寫請求。所述DMA模塊包括寫處理模塊,所述寫處理模塊用于在接收到讀請求后進(jìn)行所述將多緩沖行的所述10請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;在接收到所述二級緩沖模塊的應(yīng)答后,依據(jù)所述應(yīng)答進(jìn)行操作,收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述10模塊返回應(yīng)答;還用于在完成拆分后,向所述二級緩沖模塊發(fā)送無效請求;所述二級緩沖模塊還用于在接到所述無效請求后,進(jìn)行無效操作,完成無效操作后向所述DMA模塊返回應(yīng)答。所述二級緩沖模塊包括二級高速緩沖存儲(chǔ)器,在依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答時(shí)進(jìn)一步用于,判斷請求寫入的數(shù)據(jù)是否在所述二級高速緩沖存儲(chǔ)器中,并將判斷結(jié)果通過所述應(yīng)答通知給所述DMA模塊。所述寫處理模塊在依據(jù)所述應(yīng)答進(jìn)行操作時(shí)進(jìn)一步用于在所述數(shù)據(jù)在所述二級高速緩沖存儲(chǔ)器中時(shí),則將所述數(shù)據(jù)直接寫入所述二級高速緩沖存儲(chǔ)器,否則將所述數(shù)據(jù)寫入內(nèi)存。所述10模塊進(jìn)一步用于發(fā)起讀請求。所述二級緩沖模塊在依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答時(shí)進(jìn)一步用于獲取所述單緩沖行請求所需數(shù)據(jù),將所述數(shù)據(jù)返回給所述DMA模塊。所述DMA模塊包括讀處理模塊,所述讀處理模塊用于在接收到讀請求后,進(jìn)行所述將多緩沖行的所述10請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;并在接收到所述數(shù)據(jù)后,將返回的數(shù)據(jù)進(jìn)行緩存;收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,將緩存的數(shù)據(jù)返回給所述IO模塊。本發(fā)明還公開了一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,包括步驟l,IO模塊發(fā)起IO請求;步驟2,DMA模塊將多緩沖行的所述IO請求拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給二級緩沖模塊;步驟3,所述二級緩沖模塊接收所述單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答-,步驟4,所述畫A模塊依據(jù)所述應(yīng)答進(jìn)行操作,收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述io模塊返回應(yīng)答。所述步驟2中將所述單緩沖行請求傳遞給二級緩沖模塊進(jìn)一步為通過互連模塊將所述單緩沖行請求傳遞給所述二級緩沖模塊。所述步驟1進(jìn)一步為,10模塊發(fā)起寫請求。所述歩驟2中拆分操作之后還包括步驟131,所述DMA模塊向所述二級緩沖模塊發(fā)送無效請求;步驟132,所述二級緩沖模塊完成無效操作后,向所述DMA模塊返回應(yīng)答。所述二級緩沖模塊包括二級高速緩沖存儲(chǔ)器;所述歩驟3中依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答進(jìn)一步為,判斷請求寫入的數(shù)據(jù)是否在所述二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,并將判斷結(jié)果通過所述應(yīng)答通知給所述DMA模塊。所述步驟4中依據(jù)所述應(yīng)答進(jìn)行操作進(jìn)一歩為步驟151,收到所述判斷結(jié)果后,如果所述數(shù)據(jù)在所述二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,則將所述數(shù)據(jù)直接寫入所述二級高速緩沖存儲(chǔ)器,否則,將所述數(shù)據(jù)寫入內(nèi)存。所述步驟1進(jìn)一步為,10模塊發(fā)起讀請求。所述歩驟3中依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答進(jìn)一步為,獲取所述單緩沖行請求所需數(shù)據(jù),將所述數(shù)據(jù)返回給所述DMA模塊。所述步驟4進(jìn)一步為,步驟181,將返回的數(shù)據(jù)進(jìn)行緩存;步驟182,收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,將緩存的數(shù)據(jù)返回給所述10模塊。本發(fā)明的有益效果在于,由于二級緩沖模塊統(tǒng)一按緩沖行為單位進(jìn)行管理,并且將大于一個(gè)緩沖行的10請求,拆分為多個(gè)單緩沖行請求,所以采用本發(fā)明實(shí)現(xiàn)一致性更加簡潔高效。圖1是本發(fā)明實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng)的實(shí)施例的結(jié)構(gòu)圖2是DMA模塊的結(jié)構(gòu)圖3是DMA寫模塊進(jìn)行拆分的流程圖4是DMA寫狀態(tài)變化圖5是本發(fā)明實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法流程圖。具體實(shí)施例方式下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的詳細(xì)描述。本發(fā)明的系統(tǒng)包括處理器、用于發(fā)起I0請求的I0模塊,DMA模塊和包括二級高速緩沖存儲(chǔ)器的二級緩沖模塊。DMA模塊,用于將多緩沖行的10請求,拆分為多個(gè)單緩沖行請求,將該單緩沖行請求傳遞給二級緩沖模塊;在接收到二級緩沖模塊的應(yīng)答后,依據(jù)該應(yīng)答進(jìn)行操作,收集到10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向I0模塊返回應(yīng)答;二級緩沖模塊,用于接收單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)該單緩沖行請求進(jìn)行操作。本發(fā)明的系統(tǒng)還包括互連模塊。本發(fā)明系統(tǒng)的一個(gè)具體實(shí)施例的結(jié)構(gòu)如圖1所示。該系統(tǒng)包括..處理器101、10模塊102、DMA模塊103、互連模塊104、二級緩沖模塊105。處理器101的處理器核和I0模塊102是主模塊,能夠發(fā)起讀寫請求;二級緩沖模塊105是從模塊,能夠接受來自各主模塊的讀寫請求,并發(fā)出一致性命令和接受一致性應(yīng)答;DMA模塊103—端與IO模塊102連接,能夠作為從模塊連接10模塊102,另一端與互連模塊104連接,能夠作為主模塊發(fā)出讀寫命令和一致性指令,還可以接受來自二級緩沖模塊105的一致性應(yīng)答。實(shí)施例中各模塊都兼容標(biāo)準(zhǔn)AXI接口協(xié)議,在此基礎(chǔ)上實(shí)現(xiàn)對一致性的支持。標(biāo)準(zhǔn)的AXI協(xié)議是一種開放的片上系統(tǒng)的IP接口協(xié)議,具有簡單、高效的特點(diǎn),其基本協(xié)議已經(jīng)可以支持普通的讀寫交易,但不能直接支持緩沖一致性維護(hù)信息的傳輸。在標(biāo)準(zhǔn)AXI協(xié)議基礎(chǔ)上,本實(shí)施例對AXI通道信號進(jìn)行適量的擴(kuò)充,以此來實(shí)現(xiàn)對緩沖一致性維護(hù)信息的傳輸支持。本實(shí)施例中擴(kuò)充是在嚴(yán)格保證AXI協(xié)議規(guī)范語義情況下,超集式而非修改式的增加,當(dāng)處理器核與標(biāo)準(zhǔn)的AXIIP進(jìn)行連接時(shí),只需簡單將新增信號接為缺省值即可。標(biāo)準(zhǔn)AXI協(xié)議包括5個(gè)傳送通道,分別是AR(讀地址)、R(讀數(shù)據(jù))、AW(寫地址)、W(寫數(shù)據(jù))、B(寫應(yīng)答)。這五個(gè)通道己經(jīng)可以支持由處理器核發(fā)起的普通讀寫交易。而與一致性相關(guān)的部分包括由二級緩沖模塊105發(fā)向處理器核的一致性命令通道與處理器核發(fā)往二級緩沖模塊105的一致性應(yīng)答通道。這兩個(gè)通道分別借助讀數(shù)據(jù)返回通道(R通道)與寫通道(包括AW與W通道)完成。下面給出在AXI通道上擴(kuò)展出信號如下表所示。<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>二級緩沖模塊105是一致性管理與維護(hù)的樞紐,處理器101和10模塊102都通過二級緩沖模塊105實(shí)現(xiàn)內(nèi)存的共享訪問。二級緩沖模塊105包括二級高速緩沖存儲(chǔ)器、二級緩沖管理模塊和二級緩沖訪問模塊。二級緩沖管理模塊包括隊(duì)列(dirq)和通路(bypass)。隊(duì)列負(fù)責(zé)處理所有發(fā)向?qū)?yīng)二級緩沖模塊105的訪問請求。10模塊102和DMA模塊103的請求必須進(jìn)入隊(duì)列才能訪問二級高速緩沖存儲(chǔ)器。通路負(fù)責(zé)將uncache(非緩沖)訪存請求送到內(nèi)存控制器,將應(yīng)答返回處理器核。二級緩沖訪問模塊包含二級緩沖RAM,處理來自二級緩沖管理模塊的讀寫請求并給出應(yīng)答。二級緩沖RAM包括TAG(標(biāo)志)、目錄和數(shù)據(jù)三個(gè)部分。為降低功耗,二級緩沖RAM的TAG、目錄和數(shù)據(jù)分開訪問,二級緩沖狀態(tài)位、目錄狀態(tài)位及w位與TAG—起存儲(chǔ),TAG存放在標(biāo)志RAM中,數(shù)據(jù)存放在數(shù)據(jù)RAM中。二級緩沖管理模塊接DMA模塊103的讀寫請求,然后讀取二級緩沖訪問模塊中的信息,根據(jù)二級高速緩沖存儲(chǔ)器的TAG和目錄的情況進(jìn)行一級高速緩沖存儲(chǔ)器一致性維護(hù),并在適當(dāng)?shù)臅r(shí)候訪問內(nèi)存。對于DMA模塊103傳送的讀請求,在得獲得該請求所需數(shù)據(jù)后通過AXI的讀數(shù)據(jù)(R)通道返回該數(shù)據(jù)。對于DMA模塊103傳送的寫請求,在完成一致性維護(hù)過程后,通過AXI的讀數(shù)據(jù)(R)通道通知DMA模塊103該數(shù)據(jù)是否在二級高速緩沖存儲(chǔ)器中;如果數(shù)據(jù)在二級高速緩沖存儲(chǔ)器中,DMA模塊103直接寫入二級高速緩沖存儲(chǔ)器,否則用uncache方式寫入內(nèi)存。處理器101中維護(hù)了二級高速緩沖存儲(chǔ)器中部分緩沖塊的副本。當(dāng)處理器101訪問自己所未擁有的緩沖塊時(shí),就會(huì)發(fā)生訪存缺失。處理器接口通過AXI讀請求通道向交叉開關(guān)發(fā)送訪存缺失請求。如果是讀指令導(dǎo)致的訪存缺失,讀請求通道擴(kuò)展域arcmd-4'hc;如果是寫請求指令導(dǎo)致訪存缺失,讀通道擴(kuò)展域awcmd二4'hd。交叉開關(guān)會(huì)將二級緩沖模塊105返回的數(shù)據(jù)通過讀數(shù)據(jù)通道返回所需的緩沖塊。當(dāng)二級緩沖模塊105需要迸行一致性維護(hù)時(shí),可以通過AXI讀通道向處理器核發(fā)出無效請求(Invalidation),令處理器101將Cache塊副本寫回二級高速緩沖存儲(chǔ)器。處理器核內(nèi)部如果發(fā)生一級高速緩沖存儲(chǔ)器替換,也會(huì)發(fā)生緩沖塊副本寫回二級高速緩沖存儲(chǔ)器的事件。寫回二級高速緩沖存儲(chǔ)器的事件利用寫地址和寫數(shù)據(jù)兩個(gè)通道分別發(fā)送緩沖塊地址和緩沖塊數(shù)據(jù),在寫回事件中,寫地址通道awcmd^4'hf。DMA模塊103位于10模塊102與互連模塊104之間,與10模塊102通過標(biāo)準(zhǔn)AXI協(xié)議進(jìn)行對接,與互連模塊104之間通過擴(kuò)展AXI協(xié)議進(jìn)行連接。DMA模塊103主要功能是將10模塊102發(fā)來的標(biāo)準(zhǔn)AXI讀寫請求轉(zhuǎn)換成二級緩沖模塊105可處理的緩沖一致性讀寫請求,按照擴(kuò)展AX工協(xié)議編碼為后,通過互連通道傳遞給二級緩沖模塊105;接收來自二級緩沖模塊105的緩沖一致性應(yīng)答和數(shù)據(jù)返回,對返回?cái)?shù)據(jù)和應(yīng)答進(jìn)行緩沖處理,并轉(zhuǎn)換為標(biāo)準(zhǔn)AXI協(xié)議讀寫應(yīng)答后返回傳遞給10模塊102。AXI協(xié)議并沒有直接規(guī)定通道的數(shù)據(jù)寬度,在下面的示例中,讀寫通道數(shù)據(jù)寬度均采用128比特。DMA模塊103的結(jié)構(gòu)如附圖2所示,包括DMA寫模塊201、DMA讀模塊202、仲裁模塊203。DMA寫模塊201連接的10模塊102的請求長度具有多樣性,DMA寫模塊201需要能夠處理跨越多個(gè)緩沖行大小的寫請求。系統(tǒng)中二級緩沖模塊105以一個(gè)緩沖行(實(shí)際典型的例中,一個(gè)緩沖行大小為256比特)為單位對數(shù)據(jù)一致性進(jìn)行維護(hù),因此DMA寫模塊201需要以緩沖行為單位與二級緩沖模塊105進(jìn)行通信。在所采用的128位數(shù)據(jù)寬度的AXI協(xié)議中,跨越多行的寫請求主要有兩類,一類是awlen〉1的請求,在AXI協(xié)議中,awlen二O表示傳1拍,awlen二l表示傳2拍,該類寫請求傳送兩拍以上的數(shù)據(jù),涉及到超過一個(gè)緩沖行的數(shù)據(jù);另一類是在awlen為1,awaddr[4](表示地址第4位)為1,且awburst為1的增加(incremental)情況下,雖然只傳送兩拍的數(shù)據(jù),但因?yàn)樯婕暗絘waddr所在緩沖行的后128位以及awaddr后面一行的前128位數(shù)據(jù),是一類特殊的跨越多行的請求。DMA寫模塊201首先把多行寫請求拆分成多個(gè)單緩沖行請求,寫請求本身為單緩沖行請求,則跳過拆分過程,請求直接進(jìn)入DMA寫隊(duì)列。awlen為O時(shí),當(dāng)次寫請求不涉及多個(gè)緩沖行,當(dāng)次寫請求作為1項(xiàng)直接迸入隊(duì)列;awlen為1時(shí),繼續(xù)根據(jù)地址(awaddr)的第4位進(jìn)行判斷,若地址第4位為0,則當(dāng)次寫請求僅涉及地址所在的單緩沖行,當(dāng)次寫請求作為1項(xiàng)直接進(jìn)入隊(duì)列;若地址第4位為1,寫請求涉及到地址所對應(yīng)緩沖的后128位和下一緩沖行的前128,寫請求拆分成2項(xiàng)后進(jìn)入隊(duì)列。awlen大于l時(shí),則地址涉及多個(gè)緩沖行,將當(dāng)前寫請求地址涉及到的緩沖行作為l項(xiàng)進(jìn)入寫隊(duì)列,寫請求的寬度由根據(jù)地址的第4位進(jìn)行判斷,若地址第4位為0,則地址寬度為1個(gè)Cache行寬,否則地址寬度為半個(gè)地址行寬。拆分后的第一個(gè)單緩沖行請求進(jìn)入隊(duì)列后,調(diào)整拆分請求地址和剩余長度,將awaddr加上請求地址長度,awlen值減去當(dāng)次拆分項(xiàng)的傳送拍數(shù),繼續(xù)進(jìn)行隨后的拆分工作,當(dāng)每次拆分直至最后一行時(shí),根據(jù)剩余的長度來決定最后一項(xiàng)請求的長度。DMA寫模塊201拆分的流程如圖3所示。步驟S301,接收I0模塊102的寫請求。步驟S302,判斷awlen是否大于1,如果是,執(zhí)行步驟S306,否則執(zhí)行歩驟S303。步驟S303,判斷awlen是否等于1,如果是,執(zhí)行歩驟S304,否則,執(zhí)行步驟S305。步驟S304,判斷awaddr[4]是否等于l,如果是,則執(zhí)行步驟S305,否則,執(zhí)行步驟S310。步驟S305,緩存當(dāng)前地址行請求,請求長度為O,執(zhí)行步驟S308。歩驟S306,判斷awaddr[4]是否為0,如果是,則執(zhí)行步驟S307。步驟S307,緩存當(dāng)前地址行請求,若剩余長度小于2,則緩存的當(dāng)前請求長度為剩余長度,否則緩存的當(dāng)前請求長度為2。步驟S308,根據(jù)剩余長度判斷是否為最后行,如果是,執(zhí)行步驟S310,否則,執(zhí)行步驟S309。步驟S309,當(dāng)前地址增加請求寬度,剩余長度減去請求長度,執(zhí)行步驟S307。步驟S310,地址拆分結(jié)束。在DMA寫模塊201中設(shè)置了一個(gè)DMA寫隊(duì)列(dmaq)緩沖來自10模塊102的寫請求,每項(xiàng)處理一個(gè)單緩沖行請求,在拆分之后,每個(gè)單緩沖行請求會(huì)按序進(jìn)入DMA寫隊(duì)列。DMA寫隊(duì)列設(shè)置為8項(xiàng),可以緩存8個(gè)單緩沖行AXI寫請求(8個(gè)AW請求和16個(gè)W請求)。函A寫隊(duì)列的處理分為三個(gè)階段。第一階段,通過AR通道向二級緩沖模塊105發(fā)送無效請求,收到應(yīng)答后,再進(jìn)行第二階段操作。第二階段,通過正常的寫通道將數(shù)據(jù)寫回。第三階段,等待收集寫應(yīng)答,待收集齊一次IO請求涉及到的所有單緩沖行寫應(yīng)答后,再將本次10請求的寫完成應(yīng)答返回給10模塊102。除了與AW和W相關(guān)的域外,寫隊(duì)列相關(guān)的狀態(tài)和控制信號說明如下Awdma:表示本項(xiàng)aw請求的狀態(tài)。Icoriid:記錄原始的AWID。Iclast:表示本項(xiàng)是否應(yīng)該返回bvalid,是否對應(yīng)源請求的最后一行。Datardy:表示W(wǎng)通道數(shù)據(jù)等待發(fā)送。其中awdma狀態(tài)轉(zhuǎn)換如圖4所示。FREE:空閑狀態(tài),允許接收新請求。ENTER:接收到了新請求,尚未發(fā)出flushcache請求(刷新緩沖)。ICWAIT:己發(fā)出flushcache請求,等待應(yīng)答。ICD0NE:收到flushcache請求的應(yīng)答,待相應(yīng)的W通道數(shù)據(jù)就緒后可以發(fā)出。QUIT:AW請求已發(fā)出,等待至隊(duì)列頭時(shí)恢復(fù)空閑狀態(tài)。狀態(tài)轉(zhuǎn)換401,接收到新請求,尚未發(fā)出無效請求。狀態(tài)轉(zhuǎn)換402,已發(fā)出flushcache請求,等待應(yīng)答。狀態(tài)轉(zhuǎn)換403,已接收到flushcache請求的應(yīng)答,待相應(yīng)的W通道數(shù)據(jù)就緒。狀態(tài)轉(zhuǎn)換404,AW請求已發(fā)出。狀態(tài)轉(zhuǎn)換405,等待至隊(duì)列頭。DMA寫隊(duì)列是一個(gè)有序進(jìn)入、有序刷新(flush)、亂序?qū)?、有序退出的?duì)列。請求按序進(jìn)入隊(duì)列,按序退出隊(duì)列,無效緩沖的命令也按序發(fā)出,但是為了避免在二級緩沖模塊105的隊(duì)列(dirq)處產(chǎn)生死鎖,需要能亂序發(fā)出寫請求。死鎖產(chǎn)生的原因是,由于沖突請求的存在或者隊(duì)列滿等情況,二級緩沖模塊105的隊(duì)列可能無法及時(shí)返回刷新請求(flush)的應(yīng)答,在DMA寫隊(duì)列一側(cè),需要將隊(duì)列項(xiàng)狀態(tài)為ICDONE的請求項(xiàng)的盡快發(fā)到二級緩沖模塊105的隊(duì)列,以解除由于DMA寫隊(duì)列寫對二級緩沖模塊105造成的沖突。對于從二級緩沖模塊105返回的B通道寫應(yīng)答,DMA寫隊(duì)列中會(huì)根據(jù)iclast標(biāo)記位來判斷該請求是不是某次交易拆分后的最后一個(gè)請求,若是最后一個(gè)請求,則判斷IO寫交易全部完成,返回有效的B應(yīng)答給I0模塊102。DMA讀模塊202的主要功能是多行讀請求進(jìn)行拆分成單緩沖行請求,將單緩沖行請求發(fā)送,對應(yīng)答的數(shù)據(jù)的拼接返回。讀請求拆分的處理過程與寫基本一致,具體見圖3對寫請求拆分的描述。與DMA寫模塊201需要處理與一致性相關(guān)的操作不同,DMA讀模塊202只是起到一個(gè)命令拆分和數(shù)據(jù)拼接轉(zhuǎn)送的功能,具體的一致性操作則在二級緩沖模塊105處理。讀隊(duì)列設(shè)計(jì)為8項(xiàng),每項(xiàng)對應(yīng)一個(gè)單緩沖行請求,并對應(yīng)有一個(gè)緩沖行的數(shù)據(jù)緩沖區(qū)。DMA讀處理過程為在接受到讀請求時(shí)判斷請求所涉及到的緩沖行數(shù),對于單緩沖行請求,該單緩沖行請求直接進(jìn)入隊(duì)列;對于多行請求將其拆分成多個(gè)單緩沖行請求后進(jìn)入隊(duì)列。讀隊(duì)列作的另一主要處理是進(jìn)行ID的轉(zhuǎn)換,其發(fā)出的arid是變換后的ID,低3位對應(yīng)該項(xiàng)在隊(duì)列中的編號,而高位則保持不變。在讀隊(duì)列中,除了記錄完整的AR和R通道信號外,還包括如下控制信號arbusy:表示該AR請求已經(jīng)發(fā)出,在等待R的返回。aroldid:轉(zhuǎn)換前的原始ID。aroldlast:表示該行請求是否為原請求的最后一行請求。讀隊(duì)列設(shè)置有三個(gè)指針,分別是AR的頭指針和尾指針,以及R通道的頭指針。讀隊(duì)列是一個(gè)嚴(yán)格有序的隊(duì)列,AR通道按照接受的請求先后以及拆分的順序進(jìn)行請求的發(fā)送。在數(shù)據(jù)返回時(shí),根據(jù)RID的低3位選擇進(jìn)入對應(yīng)項(xiàng)的緩沖區(qū),并在R通道頭指針的索引下,嚴(yán)格有序的返回給與之相連的10接口。在標(biāo)準(zhǔn)AXI協(xié)議中,讀交易涉及到AR和R兩個(gè)通道,寫交易涉及到AW、R和B三個(gè)通道,彼此間是獨(dú)立的。但在擴(kuò)展AXI協(xié)議中,寫請求需要通過AR通道發(fā)送一致性請求命令,并通過R通道接受一致性應(yīng)答,因此在DMA模塊103的寫通道涉及到的三個(gè)通路AW、W、B可以對接到互連模塊104的對應(yīng)通道。而AR通道則需要在讀寫處理模塊之間通過仲裁模塊203進(jìn)行仲裁后發(fā)送,同時(shí)為了能夠區(qū)分是請求是由DMA讀模塊202還是DMA寫模塊201發(fā)出,以便在R交易返回時(shí)判斷請求應(yīng)該傳送回DMA讀模塊202還是DMA寫模塊201,在仲裁模塊中還需要修改ARID中的第4位,用1和0分別表示對應(yīng)寫和讀模塊。在二級緩沖模塊105處理完相應(yīng)請求后,會(huì)通過R通道的RID信號將對應(yīng)的ARID傳回,仲裁模塊則根據(jù)RID的第4位來決定將該數(shù)據(jù)包傳輸給DMA寫模塊201或DMA讀模塊202。本發(fā)明的方法如圖5所示。一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,包括步驟S501,IO模塊發(fā)起IO請求。10模塊發(fā)起寫請求或讀請求。步驟S502,DMA模塊將多緩沖行的所述10請求拆分為多個(gè)單緩沖行請求,將該單緩沖行請求傳遞給二級緩沖模塊。DMA模塊通過互連模塊將單緩沖行請求傳遞給二級緩沖模塊。在接收到寫請求后,DMA模塊將多緩沖行的所述10請求拆分為多個(gè)單緩沖行請求;DMA模塊向二級緩沖模塊發(fā)送無效請求,二級緩沖模塊完成無效操作后,向DMA模塊返回應(yīng)答;DMA模塊接收到應(yīng)答后將單緩沖行請求傳遞給二級緩沖模塊。步驟S503,二級緩沖模塊接收單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)該單緩沖行請求進(jìn)行操作,向DMA模塊返回應(yīng)答。在IO模塊發(fā)送寫請求時(shí),二級緩沖模塊接收單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),判斷請求寫入的數(shù)據(jù)是否在該二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,并將判斷結(jié)果通過所述應(yīng)答通知給DMA模塊,向DMA模塊返回應(yīng)答。在IO模塊發(fā)送讀請求時(shí),二級緩沖模塊接收單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),獲取所述單緩沖行請求所需數(shù)據(jù),將所述數(shù)據(jù)返回給所述匿A模塊。步驟S504,DMA模塊依據(jù)應(yīng)答進(jìn)行操作,收集到10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述IO模塊返回應(yīng)答。在IO模塊發(fā)送寫請求時(shí),DMA模塊收到判斷結(jié)果后,如果數(shù)據(jù)在二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,則將所述數(shù)據(jù)直接寫入該二級高速緩沖存儲(chǔ)器,否則,將數(shù)據(jù)寫入內(nèi)存,收集到10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向IO模塊返回應(yīng)答。在IO模塊發(fā)送讀請求時(shí),將返回的數(shù)據(jù)進(jìn)行緩存;收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,將緩存的數(shù)據(jù)返回給10模塊。本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條件下,還可以對以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說明,而是由權(quán)利要求書的范圍來確定的。權(quán)利要求1.一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),包括處理器、用于發(fā)起IO請求的IO模塊,其特征在于,所述系統(tǒng)還包括DMA模塊和二級緩沖模塊,所述DMA模塊,用于將多緩沖行的所述IO請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;在接收到所述二級緩沖模塊的應(yīng)答后,依據(jù)所述應(yīng)答進(jìn)行操作,并且收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述IO模塊返回應(yīng)答;所述二級緩沖模塊,用于接收所述單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答。2.如權(quán)利要求1所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述系統(tǒng)還包括互連模塊,所述DMA模塊在將所述單緩沖行請求傳遞給二級緩沖模塊時(shí)進(jìn)一步用于通過所述互連模塊將所述單緩沖行請求傳遞給所述二級緩沖模塊。3.如權(quán)利要求1所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述10模塊進(jìn)一步用于發(fā)起寫請求。4.如權(quán)利要求3所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述函A模塊包括寫處理模塊,所述寫處理模塊用于在接收到讀請求后進(jìn)行所述將多緩沖行的所述10請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;在接收到所述二級緩沖模塊的應(yīng)答后,依據(jù)所述應(yīng)答進(jìn)行操作,收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述IO模塊返回應(yīng)答;還用于在完成拆分后,向所述二級緩沖模塊發(fā)送無效請求;所述二級緩沖模塊還用于在接到所述無效請求后,進(jìn)行無效操作,完成無效操作后向所述DMA模塊返回應(yīng)答。5.如權(quán)利要求4所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述二級緩沖模塊包括二級高速緩沖存儲(chǔ)器,在依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答時(shí)進(jìn)一步用于,判斷請求寫入的數(shù)據(jù)是否在所述二級高速緩沖存儲(chǔ)器中,并將判斷結(jié)果通過所述應(yīng)答通知給所述DMA模塊。6.如權(quán)利要求5所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述寫處理模塊在依據(jù)所述應(yīng)答進(jìn)行操作時(shí)進(jìn)一步用于在所述數(shù)據(jù)在所述二級高速緩沖存儲(chǔ)器中時(shí),則將所述數(shù)據(jù)直接寫入所述二級高速緩沖存儲(chǔ)器,否則將所述數(shù)據(jù)寫入內(nèi)存。7.如權(quán)利要求1所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述10模塊進(jìn)一步用于發(fā)起讀請求。8.如權(quán)利要求7所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述二級緩沖模塊在依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答時(shí)進(jìn)一步用于獲取所述單緩沖行請求所需數(shù)據(jù),將所述數(shù)據(jù)返回給所述函A模塊。9.如權(quán)利要求8所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng),其特征在于,所述DMA模塊包括讀處理模塊,所述讀處理模塊用于在接收到讀請求后,進(jìn)行所述將多緩沖行的所述10請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;并在接收到所述數(shù)據(jù)后,將返回的數(shù)據(jù)進(jìn)行緩存;收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,將緩存的數(shù)據(jù)返回給所述10模塊。10.—種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,包括步驟l,IO模塊發(fā)起IO請求;歩驟2,DMA模塊將多緩沖行的所述IO請求拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給二級緩沖模塊;步驟3,所述二級緩沖模塊接收所述單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答;步驟4,所述DMA模塊依據(jù)所述應(yīng)答進(jìn)行操作,收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述io模塊返回應(yīng)答。11.如權(quán)利要求10所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟2中將所述單緩沖行請求傳遞給二級緩沖模塊進(jìn)一步為通過互連模塊將所述單緩沖行請求傳遞給所述二級緩沖模塊。12.如權(quán)利要求IO所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟1進(jìn)一步為,10模塊發(fā)起寫請求。13.如權(quán)利要求12所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟2中拆分操作之后還包括步驟131,所述DMA模塊向所述二級緩沖模塊發(fā)送無效請求;歩驟132,所述二級緩沖模塊完成無效操作后,向所述DMA模塊返回應(yīng)答。14.如權(quán)利要求13所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述二級緩沖模塊包括二級高速緩沖存儲(chǔ)器;.所述步驟3中依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答進(jìn)一步為,判斷請求寫入的數(shù)據(jù)是否在所述二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,并將判斷結(jié)果通過所述應(yīng)答通知給所述DMA模塊。15.如權(quán)利要求14所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟4中依據(jù)所述應(yīng)答進(jìn)行操作進(jìn)一步為-步驟151,收到所述判斷結(jié)果后,如果所述數(shù)據(jù)在所述二級緩沖模塊的二級高速緩沖存儲(chǔ)器中,則將所述數(shù)據(jù)直接寫入所述二級高速緩沖存儲(chǔ)器,否則,將所述數(shù)據(jù)寫入內(nèi)存。16.如權(quán)利要求10所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟1進(jìn)一步為,10模塊發(fā)起讀請求。17.如權(quán)利要求16所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述步驟3中依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答進(jìn)一步為,獲取所述單緩沖行請求所需數(shù)據(jù),將所述數(shù)據(jù)返回給所述固A模塊。18.如權(quán)利要求17所述的實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的方法,其特征在于,所述歩驟4進(jìn)一歩為,步驟181,將返回的數(shù)據(jù)進(jìn)行緩存;步驟182,收集到所述10請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,將緩存的數(shù)據(jù)返回給所述IO模塊。全文摘要本發(fā)明涉及一種實(shí)現(xiàn)輸入輸出數(shù)據(jù)一致性的系統(tǒng)及方法,所述系統(tǒng)包括處理器、用于發(fā)起IO請求的IO模塊,DMA模塊和二級緩沖模塊,所述DMA模塊,用于將多緩沖行的所述IO請求,拆分為多個(gè)單緩沖行請求,將所述單緩沖行請求傳遞給所述二級緩沖模塊;在接收到所述二級緩沖模塊的應(yīng)答后,依據(jù)所述應(yīng)答進(jìn)行操作,收集到所述IO請求的所有單緩沖行請求對應(yīng)的應(yīng)答后,向所述IO模塊返回應(yīng)答;所述二級緩沖模塊,用于接收所述單緩沖行請求,以一個(gè)緩沖行為單位進(jìn)行數(shù)據(jù)一致性維護(hù),并依據(jù)所述單緩沖行請求進(jìn)行操作,向所述DMA模塊返回應(yīng)答。本發(fā)明能夠簡潔高效的實(shí)現(xiàn)數(shù)據(jù)一致性。文檔編號G06F13/20GK101446931SQ20081023920公開日2009年6月3日申請日期2008年12月3日優(yōu)先權(quán)日2008年12月3日發(fā)明者陳云霽,翔高申請人:中國科學(xué)院計(jì)算技術(shù)研究所