亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)及其方法

文檔序號(hào):6539448閱讀:253來源:國(guó)知局
一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)及其方法
【專利摘要】本發(fā)明公開了一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),該系統(tǒng)包含:多個(gè)外設(shè)可訪問寄存器和一外部總線裝置,該外設(shè)可訪問寄存器位于處理器核內(nèi)部,外設(shè)通過外部總線裝置直接訪問外設(shè)可訪問寄存器進(jìn)行數(shù)據(jù)的修改和讀?。槐景l(fā)明還公開了一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,該方法包括:外設(shè)向處理器傳送數(shù)據(jù)步驟和處理器向外設(shè)傳送數(shù)據(jù)步驟,外設(shè)通過外部總線裝置直接訪問位于處理器內(nèi)部的外設(shè)可訪問寄存器,與處理器進(jìn)行數(shù)據(jù)的傳輸。
【專利說明】一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)及其方法【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)體系結(jié)構(gòu),特別涉及一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)及其方法。
【背景技術(shù)】
[0002]計(jì)算機(jī)系統(tǒng)中的處理器經(jīng)常要和外部設(shè)備之間傳輸大量的數(shù)據(jù),比如從磁盤上讀寫數(shù)據(jù),通過網(wǎng)卡收發(fā)網(wǎng)絡(luò)數(shù)據(jù)包,顯卡接收需要輸出給顯示器的幀數(shù)據(jù)。此外還有功能各異的硬件加速卡,從處理器接收需要計(jì)算的任務(wù),并將計(jì)算結(jié)果返回給處理器以減輕處理器的開銷實(shí)現(xiàn)應(yīng)用加速。
[0003]外部設(shè)備和處理器之間傳輸數(shù)據(jù)的主要途徑是通過動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM, Dynamic Random Access Memory)也就是內(nèi)存進(jìn)行中轉(zhuǎn),比如處理器將要發(fā)送的數(shù)據(jù)寫入內(nèi)存,然后通知外部設(shè)備從內(nèi)存上的特定設(shè)備獲取數(shù)據(jù)。外部設(shè)備從內(nèi)存中取數(shù)據(jù)通常是通過一個(gè)直接內(nèi)存訪問(DMA, Direct Memory Access)控制器實(shí)現(xiàn)的,數(shù)據(jù)傳輸過程中無需處理器控制。隨著對(duì)外部設(shè)備的工作效率要求越來越高,也有系統(tǒng)采用處理器內(nèi)的高速緩存實(shí)現(xiàn)數(shù)據(jù)中轉(zhuǎn),具體實(shí)現(xiàn)方式是外部設(shè)備將數(shù)據(jù)寫入內(nèi)存后,由內(nèi)存控制器主動(dòng)發(fā)出預(yù)取請(qǐng)求,將剛傳輸完的數(shù)據(jù)取出存放到高速緩存。
[0004]隨著半導(dǎo)體技術(shù)的不斷發(fā)展和電子產(chǎn)品的更新?lián)Q代,系統(tǒng)級(jí)芯片(SOC, system ona chip)得到了非常廣泛的應(yīng)用。在一個(gè)芯片內(nèi)可以集成處理器、顯示芯片、網(wǎng)絡(luò)適配器以及定制加速模塊等,這些模塊在芯片內(nèi)通過片上總線互聯(lián)起來,傳輸數(shù)據(jù)時(shí)還可以通過片上存儲(chǔ)(0CM,0n Chip Memory)實(shí)現(xiàn)中轉(zhuǎn)。此時(shí)數(shù)據(jù)傳輸完全在片內(nèi)進(jìn)行,克服了外部引腳物理電氣特性的限制,顯著提高了數(shù)據(jù)傳輸?shù)奈粚捄皖l率。
[0005]處理器與外部模塊之間傳輸數(shù)據(jù)時(shí),除了提供內(nèi)存、高速緩存、片上存儲(chǔ)等保存數(shù)據(jù)的空間之外,還需要一定的同步機(jī)制保證雙方互相通知數(shù)據(jù)傳輸?shù)臓顟B(tài)以及數(shù)據(jù)傳輸?shù)牡刂贩秶?,才能正確、安全的完成數(shù)據(jù)傳輸。下面以網(wǎng)卡接收數(shù)據(jù)包的場(chǎng)景為例介紹一下現(xiàn)有外部模塊與處理器傳輸數(shù)據(jù)的方法。
[0006]圖1為現(xiàn)有技術(shù)的內(nèi)存中數(shù)據(jù)結(jié)構(gòu)示意圖,如圖1所示,網(wǎng)卡驅(qū)動(dòng)程序初始化的時(shí)候會(huì)在內(nèi)存中構(gòu)造一組接收描述符數(shù)據(jù)結(jié)構(gòu),每一個(gè)描述符中有一個(gè)指針指向一塊物理地址連續(xù)的空間,可以存儲(chǔ)一個(gè)網(wǎng)絡(luò)數(shù)據(jù)報(bào)文,描述符中也有緩沖區(qū)的狀態(tài)字段表示里面是否存儲(chǔ)了網(wǎng)卡傳輸?shù)臄?shù)據(jù)。網(wǎng)卡驅(qū)動(dòng)同時(shí)也要在初始化的時(shí)候?qū)⒚枋龇牡刂钒l(fā)給網(wǎng)卡。當(dāng)網(wǎng)卡收到數(shù)據(jù)包了之后,會(huì)從內(nèi)存中取出接收描述符,通過DMA將數(shù)據(jù)包寫入描述符指定的地址,并更新緩沖區(qū)的狀態(tài)字段標(biāo)記其緩沖區(qū)已存儲(chǔ)了一個(gè)數(shù)據(jù)包。之后網(wǎng)卡會(huì)發(fā)出一個(gè)中斷信號(hào),一個(gè)中斷控制器收到中斷信號(hào)之后會(huì)將中斷源寫入一個(gè)中斷向量寄存器,之后處理器執(zhí)行中斷處理程序,根據(jù)中斷向量寄存器的結(jié)果獲知這是一個(gè)網(wǎng)卡接收數(shù)據(jù)中斷,然后調(diào)用網(wǎng)卡驅(qū)動(dòng)程序注冊(cè)的對(duì)應(yīng)網(wǎng)卡接收數(shù)據(jù)中斷處理程序,產(chǎn)生一個(gè)軟中斷放入軟中斷隊(duì)列。之后操作系統(tǒng)在合適的時(shí)候調(diào)用軟中斷隊(duì)列中的軟中斷處理程序,取走接收描述符中的緩沖區(qū),發(fā)給具體處理網(wǎng)絡(luò)數(shù)據(jù)包的程序,之后申請(qǐng)一個(gè)新的緩沖區(qū)將地址填入接收描述符,同時(shí)修改描述符中記錄的緩沖區(qū)的狀態(tài)字段。
[0007]在上述的過程中,網(wǎng)卡和處理器是通過描述符來同步數(shù)據(jù)傳輸?shù)臓顟B(tài),網(wǎng)卡將數(shù)據(jù)寫入到內(nèi)存后在描述符中標(biāo)記該描述符指向的緩沖區(qū)中有數(shù)據(jù),處理器將數(shù)據(jù)處理完成之后修改描述符中的狀態(tài)字段表示該描述符指向的緩沖區(qū)是空閑的了。網(wǎng)卡修改了描述符后要通過中斷機(jī)制通知處理器,處理器經(jīng)過一系列復(fù)雜的中斷處理之后找到網(wǎng)卡發(fā)過來的數(shù)據(jù)并取走。當(dāng)大量傳輸數(shù)據(jù)時(shí),如對(duì)于千兆網(wǎng)卡,每秒中最多可以發(fā)出超過100萬個(gè)數(shù)據(jù)包。處理器上頻繁執(zhí)行中斷處理程序的開銷將非常大,甚至不能給處理數(shù)據(jù)的應(yīng)用程序足夠的處理器資源。如果采用關(guān)中斷、按時(shí)間片定時(shí)輪詢的方式,收到一批數(shù)據(jù)包再發(fā)出中斷,這樣減少了中斷的次數(shù),但是引入了較大的處理延遲。
[0008]如果不采用外設(shè)通知中斷的方式,在發(fā)起DMA操作后由處理器上的程序監(jiān)測(cè)外設(shè)的狀態(tài)來判斷數(shù)據(jù)傳輸是否完成,也就是直接在軟件執(zhí)行過程中訪問外設(shè)上的狀態(tài)信息,待數(shù)據(jù)傳輸完成后直接對(duì)數(shù)據(jù)進(jìn)行處理。但因?yàn)樘幚砥鞑荒苤罃?shù)據(jù)傳輸何時(shí)會(huì)完成,而反復(fù)查詢外設(shè)上DMA控制器的時(shí)間開銷又很大,處理器在這段時(shí)間基本上就無法完成其它任務(wù)了,所以只有在少數(shù)對(duì)數(shù)據(jù)處理實(shí)時(shí)性要求很高的場(chǎng)景下才會(huì)采用這種辦法。
[0009]從上面的分析可以看出,由于外設(shè)傳輸數(shù)據(jù)的操作對(duì)于處理器來說是異步的過程,所以通常是在傳輸結(jié)束的時(shí)候通過發(fā)出中斷信號(hào)通知處理器進(jìn)行中斷處理。盡管現(xiàn)在的操作系統(tǒng)已經(jīng)針對(duì)中斷服務(wù)程序做了非常多的優(yōu)化,但是不可避免的上下文切換開銷以及伴隨的TLB、cache污染等問題都會(huì)影響應(yīng)用的性能。隨著技術(shù)的進(jìn)步,外設(shè)傳輸數(shù)據(jù)的速度越快,單位時(shí)間內(nèi)發(fā)生的中斷次數(shù)就越多,需要在通知機(jī)制上做文章才能降低外設(shè)傳輸數(shù)據(jù)迆開銷。

【發(fā)明內(nèi)容】

[0010]本發(fā)明所要解決的技術(shù)問題在于提供一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)及其方法,以克服現(xiàn)有技術(shù)中存在的外部模塊與處理器核之間傳輸數(shù)據(jù)所需的開銷大的問題。
[0011]為達(dá)上述目的,本發(fā)明提供了一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),所述系統(tǒng)包含:多個(gè)外設(shè)可訪問寄存器和一外部總線裝置,所述外設(shè)可訪問寄存器位于處理器核內(nèi)部,外設(shè)通過所述外部總線裝置直接訪問所述外設(shè)可訪問寄存器進(jìn)行數(shù)據(jù)的修改和讀取。
[0012]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外設(shè)可訪問寄存器包含:處理器可寫外部模塊可寫寄存器、只讀外設(shè)可訪問寄存器和只寫外設(shè)可訪問寄存器。
[0013]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外設(shè)可訪問寄存器的程序訪問方式與用機(jī)器指令訪問通用寄存器的方式相同。
[0014]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外部總線裝置包括:旁路總線裝置和/或片上總線裝置,外設(shè)通過所述旁路總線裝置和/或所述片上總線裝置對(duì)外設(shè)可訪問寄存器進(jìn)行直接訪問。
[0015]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述旁路總線裝置包含一位于IO控制器和處理器之間的新增總線,用于處理IO控制器讀寫外部設(shè)備可訪問寄存器的旁路總線請(qǐng)求。
[0016]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線裝置包括:處理器核、緩存控制器、IO控制器和片上總線,在所述處理器核與所述緩存控制器之間具有一條基于所述片上總線的可直接訪問外設(shè)可訪問寄存器的數(shù)據(jù)通路。
[0017]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線通過緩存一致性協(xié)議實(shí)現(xiàn)所述外設(shè)可訪問寄存器裝置。
[0018]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述旁路總線請(qǐng)求包括:處理器核ID信息和所述外設(shè)可訪問寄存器標(biāo)示信息,所述旁路總線依據(jù)所述標(biāo)示信息檢查所述請(qǐng)求是否合法。
[0019]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線將所述外設(shè)可訪問寄存器與緩存塊進(jìn)行統(tǒng)一編址,并基于所述緩存一致性協(xié)議完成外設(shè)對(duì)所述外設(shè)可訪問寄存器的讀寫操作。
[0020]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述緩存控制器可將片上總線的請(qǐng)求轉(zhuǎn)換為所述外設(shè)可訪問寄存器的讀寫操作請(qǐng)求。
[0021]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述IO控制器將所述外設(shè)可訪問寄存器的讀寫請(qǐng)求轉(zhuǎn)化為所述片上總線的請(qǐng)求,所述片上總線的請(qǐng)求的地址空間位于系統(tǒng)分配給所述外設(shè)可訪問寄存器的地址空間內(nèi)。
[0022]本發(fā)明還提供了一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,應(yīng)用于如所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),所述傳輸系統(tǒng)包括多個(gè)外設(shè)可訪問寄存器和一外部總線裝置,其特征在于,所述方法包括:
[0023]外設(shè)向處理器傳送數(shù)據(jù)步驟:外設(shè)將數(shù)據(jù)信息通過所述外部總線裝置寫入所述外設(shè)可訪問寄存器,處理器讀取所述外部設(shè)備可訪問寄存器中的數(shù)據(jù)信息并獲取外設(shè)發(fā)送的數(shù)據(jù);
[0024]處理器向外設(shè)傳送數(shù)據(jù)步驟:處理器在所述外設(shè)可訪問寄存器中寫入要傳輸?shù)臄?shù)據(jù)信息,外設(shè)通過所述外部總線裝置讀取所述外設(shè)可訪問寄存器中數(shù)據(jù)信息并獲取處理器發(fā)送的數(shù)據(jù)。
[0025]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)向處理器傳送數(shù)據(jù)步驟包括:
[0026]外設(shè)發(fā)送操作步驟:外部設(shè)備將數(shù)據(jù)傳輸?shù)揭还蚕砜臻g,把數(shù)據(jù)在所述共享空間中的地址和長(zhǎng)度通過所述外部總線裝置寫入所述外設(shè)可訪問寄存器,并通過所述外部總線裝置更新所述外設(shè)可訪問寄存器;
[0027]處理器接收操作步驟:處理器在所述外設(shè)可訪問寄存器中讀取共享空間中的數(shù)據(jù)地址和長(zhǎng)度,并判斷數(shù)據(jù)接收完整后,進(jìn)行數(shù)據(jù)處理。
[0028]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)發(fā)送操作步驟還包括:
[0029]外設(shè)讀取寄存器步驟:外設(shè)根據(jù)處理器發(fā)送的所述DMA操作請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器;
[0030]外設(shè)傳輸數(shù)據(jù)步驟:外設(shè)向所述共享空間中拷貝數(shù)據(jù);
[0031]外設(shè)更新寄存器步驟:外設(shè)通過所述外部總線裝置在只讀外設(shè)可訪問寄存器中更新所述DMA請(qǐng)求的進(jìn)度。
[0032]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器接收操作步驟還包括:
[0033]處理器請(qǐng)求步驟:用于所述處理器在所述外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知所述外設(shè)啟動(dòng)DMA操作;
[0034]處理器判斷并讀取數(shù)據(jù)步驟:處理器檢查所述只讀外部設(shè)備可訪問寄存器,如果所述共享空間中已經(jīng)收到足夠多的新數(shù)據(jù),則處理所述新數(shù)據(jù),否則繼續(xù)執(zhí)行所述外設(shè)傳輸數(shù)據(jù)步驟。
[0035]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器向外設(shè)傳送數(shù)據(jù)步驟還包括:
[0036]處理器發(fā)送操作步驟:處理器在所述外設(shè)可訪問寄存器填寫要傳輸?shù)奈挥趦?nèi)存中的數(shù)據(jù)地址和長(zhǎng)度;
[0037]外設(shè)接收操作步驟:外設(shè)通過所述外部總線裝置讀取所述外設(shè)可訪問寄存器,從內(nèi)存讀取數(shù)據(jù),并通過外部總線裝置更新所述外設(shè)可訪問寄存器。
[0038]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)接收操作步驟還包括:
[0039]外設(shè)讀取寄存器步驟:外設(shè)根據(jù)處理器發(fā)送的DMA請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器;
[0040]外設(shè)讀取數(shù)據(jù)步驟:外設(shè)從只寫外部設(shè)備可訪問寄存器中獲取所述DMA請(qǐng)求的地址和長(zhǎng)度,并從內(nèi)存中讀取數(shù)據(jù);
[0041]外設(shè)更新寄存器步驟:外設(shè)通過所述外部總線裝置在只讀外設(shè)可訪問寄存器中更新所述DMA請(qǐng)求的進(jìn)度。
[0042]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器發(fā)送操作步驟還包括:
[0043]處理器請(qǐng)求步驟:用于處理器在所述外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知外設(shè)啟動(dòng)DMA操作;
[0044]處理器傳輸數(shù)據(jù)步驟:處理器中空閑內(nèi)存空間寫入需要發(fā)送的數(shù)據(jù),并執(zhí)行所述處理器請(qǐng)求步驟;
[0045]處理器檢查步驟:處理器檢查只讀外部設(shè)備可訪問寄存器,如果有足夠內(nèi)存空間,則執(zhí)行所述處理器傳輸數(shù)據(jù)步驟,否則,執(zhí)行所述外設(shè)更新寄存器步驟。
[0046]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)讀取寄存器步驟進(jìn)一步包括:
[0047]旁路總線外設(shè)讀取步驟:所述外設(shè)通過所述旁路總線讀取所述外部設(shè)備可訪問寄存器的最新值;和/或
[0048]片上總線外設(shè)讀取步驟:所述外設(shè)通過所述片上總線讀取所述外部設(shè)備可訪問寄存器的最新值。
[0049]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)更新寄存器步驟進(jìn)一步包括:
[0050]旁路總線外設(shè)更新步驟:所述外設(shè)通過所述旁路總線更新所述外部設(shè)備可訪問寄存器的最新值;和/或
[0051]片上總線外設(shè)更新步驟:所述外設(shè)通過所述片上總線更新所述外部設(shè)備可訪問寄存器的最新值。
[0052]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述片上總線外設(shè)讀取步驟進(jìn)一步包括:
[0053]外設(shè)讀取IO控制器的處理步驟:所述外設(shè)向IO控制器發(fā)出讀取所述外設(shè)可訪問寄存器的讀取請(qǐng)求,所述IO控制器在片上總線發(fā)出請(qǐng)求,并收到返回值后,將所述返回值發(fā)給所述外設(shè);
[0054]外設(shè)讀取緩存控制器的處理步驟:緩存控制器根據(jù)從所述片上總線接收到的請(qǐng)求的地址進(jìn)行識(shí)別,如果所述地址為所述外設(shè)可訪問寄存器占用的空間,并且如果所述外設(shè)可訪問寄存器屬于本處理器核,則所述緩存控制器讀取所述外設(shè)可訪問寄存器,并將返回值放入所述片上總線。
[0055]上述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述片上總線外設(shè)更新步驟進(jìn)一步包括:
[0056]外設(shè)更新IO控制器的處理步驟:外設(shè)向IO控制器發(fā)出更新所述外設(shè)可訪問寄存器的更新請(qǐng)求,所述IO控制器在片上總線發(fā)出請(qǐng)求,并收到響應(yīng)后,將更新數(shù)據(jù)置于所述片上總線;
[0057]外設(shè)更新緩存控制器的處理步驟:緩存控制器從所述片上總線收到片上總線的請(qǐng)求,根據(jù)所述請(qǐng)求的地址進(jìn)行識(shí)別,如果所述地址為本處理器核的外設(shè)可訪問寄存器地址,所述緩存控制器修改所述外設(shè)可訪問寄存器的地址空間狀態(tài),將收到的所述片上總線請(qǐng)求的返回值發(fā)給目標(biāo)外設(shè)可訪問寄存器,并再次修改所述地址空間狀態(tài)。
[0058]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
[0059]1、外設(shè)訪問處理器的處理延遲減少,并節(jié)省了中斷處理操作的開銷;
[0060]2、根據(jù)現(xiàn)有技術(shù)中處理器具有的分支預(yù)測(cè)功能,檢查外設(shè)可訪問寄存器的指令對(duì)于整個(gè)應(yīng)用的性能影響很少;
[0061]3、采用本發(fā)明技術(shù)方案,SOC產(chǎn)品中片上加速部件和處理器可通過本發(fā)明方式實(shí)現(xiàn)數(shù)據(jù)高效傳輸,同時(shí),在片上的PC1-E (PCI express)控制器中集成本發(fā)明技術(shù)方案,各種外設(shè)擴(kuò)展卡,包括網(wǎng)卡,顯卡,應(yīng)用加速卡等均可以通過更新驅(qū)動(dòng)方式來支持外部設(shè)備可訪問寄存器,以提高整個(gè)系統(tǒng)傳輸數(shù)據(jù)的效率。
【專利附圖】

【附圖說明】
[0062]圖1為現(xiàn)有技術(shù)的內(nèi)存中數(shù)據(jù)結(jié)構(gòu)示意圖;
[0063]圖2為本發(fā)明基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖;
[0064]圖3為芳路總線裝直系統(tǒng)不意圖;
[0065]圖4為片上總線裝置系統(tǒng)示意圖;
[0066]圖5為本發(fā)明基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法流程示意圖;
[0067]圖6A?圖6B為本發(fā)明外設(shè)向處理器傳送數(shù)據(jù)步驟示意圖;
[0068]圖7A?圖7B為本發(fā)明處理器向外設(shè)傳送數(shù)據(jù)步驟示意圖;
[0069]圖8A?圖8B為本發(fā)明外設(shè)讀取寄存器步驟示意圖;[0070]圖SC?圖8D為本發(fā)明外設(shè)更新寄存器步驟示意圖;
[0071]圖9A?圖9B為本發(fā)明片上總線外設(shè)讀取步驟示意圖;
[0072]圖9C?圖9D為本發(fā)明旁路總線外設(shè)更新步驟示意圖;
[0073]圖10為本發(fā)明一實(shí)施例外設(shè)向處理器傳送數(shù)據(jù)步驟示意圖;
[0074]圖11為本發(fā)明一實(shí)施例外設(shè)向處理器傳輸數(shù)據(jù)步驟示意圖;
[0075]圖12為本發(fā)明一實(shí)施例外設(shè)讀取IO控制器的處理步驟示意圖;
[0076]圖13為本發(fā)明一實(shí)施例外設(shè)讀取緩存控制器處理步驟示意圖;
[0077]圖14為本發(fā)明一實(shí)施例外設(shè)更新IO控制器的處理步驟示意圖;
[0078]圖15為本發(fā)明一實(shí)施例外設(shè)更新緩存控制器的處理步驟示意圖。
[0079]SI ?S2、S11 ?S13、S21 ?S23、S111 ?S113、S121 ?S122、S211 ?S213、S221 ?S223:本發(fā)明各實(shí)施例的施行步驟
【具體實(shí)施方式】
[0080]本發(fā)明提出了一種可以由外部模塊直接訪問處理器核內(nèi)部的寄存器和訪問方法。當(dāng)外部模塊需要同步數(shù)據(jù)傳輸操作的狀態(tài)時(shí),利用片內(nèi)總線上的協(xié)議直接修改處理器核內(nèi)部的某些寄存器,軟件可以讀取處理器核內(nèi)部的寄存器來判斷數(shù)據(jù)傳輸操作是否已經(jīng)完成。
[0081]本發(fā)明的技術(shù)關(guān)鍵點(diǎn)及相應(yīng)的技術(shù)效果:
[0082]1.一組外設(shè)可訪問寄存器,所述的外設(shè)可訪問寄存器位于處理器核內(nèi)部,可被系統(tǒng)的外部設(shè)備直接修改讀取,無需在處理器上運(yùn)行額外的機(jī)器指令;
[0083]2.該外設(shè)可訪問寄存器的程序訪問方式與用機(jī)器指令訪問通用寄存器的方式相同;
[0084]3.所述的外部設(shè)備可訪問寄存器分三類,處理器可寫外部模塊可寫的寄存器,即只寫外設(shè)可訪問寄存器;處理器只讀外部模塊可寫的寄存器,即只讀外設(shè)可訪問寄存器;外部模塊只讀處理器可寫的寄存器;
[0085]4.一種基于新增旁路總線的旁路總線裝置,所述的旁路總線是一條IO控制器與處理器之間的特殊總線,專門用于處理IO控制器讀寫外部設(shè)備可訪問寄存器的請(qǐng)求;
[0086]5.所述的旁路總線上的請(qǐng)求,包括處理器核ID信息以及外部設(shè)備可訪問寄存器標(biāo)示信息,旁路總線會(huì)根據(jù)標(biāo)示信息檢查請(qǐng)求類型是否合法。
[0087]6.一種基于緩存一致性協(xié)議的片上總線裝置,包括處理器核、緩存控制器、IO控制器、支持外設(shè)可訪問寄存器片上總線。
[0088]7.所述的處理器核與緩存控制器之間,有一條讀寫外設(shè)可訪問寄存器的數(shù)據(jù)通路。
[0089]8.所述的支持外設(shè)可訪問寄存器的片上總線,將外設(shè)可訪問寄存器與緩存塊統(tǒng)一編址,基于緩存一致性協(xié)議完成外設(shè)讀寫外設(shè)可訪問寄存器的操作。
[0090]9.所述的緩存控制器可將片上總線的請(qǐng)求轉(zhuǎn)化成讀寫外設(shè)可訪問寄存器的請(qǐng)求,所述片上總線的請(qǐng)求要求地址空間位于系統(tǒng)給外部設(shè)備可訪問寄存器分配的空間,片上總線請(qǐng)求的內(nèi)容遵循現(xiàn)有標(biāo)準(zhǔn)。
[0091]10.所述的IO控制器可將外設(shè)讀寫外設(shè)可訪問寄存器的請(qǐng)求轉(zhuǎn)化成片上總線的請(qǐng)求,所述片上總線的請(qǐng)求要求地址空間位于系統(tǒng)給外設(shè)可訪問寄存器分配的空間。
[0092]11.一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,包括如下步驟:處理器在外設(shè)可訪問寄存器填寫要傳輸?shù)臄?shù)據(jù)地址和長(zhǎng)度;外部設(shè)備讀取外設(shè)可訪問寄存器;外部設(shè)備啟動(dòng)數(shù)據(jù)傳輸操作;外部設(shè)備將數(shù)據(jù)傳輸?shù)焦蚕砜臻g,把數(shù)據(jù)在共享空間中的地址和長(zhǎng)度寫入外設(shè)可訪問寄存器;處理器讀取外設(shè)可訪問寄存器,從共享空間中獲得外設(shè)傳來的數(shù)據(jù)。
[0093]基于以上本發(fā)明的技術(shù)關(guān)鍵點(diǎn),下面給出本發(fā)明的【具體實(shí)施方式】,結(jié)合圖示對(duì)本發(fā)明做出了詳細(xì)描述。
[0094]圖2為本發(fā)明基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng)結(jié)構(gòu)示意圖,如圖2所示,本發(fā)明提供的一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),該系統(tǒng)包含:多個(gè)外設(shè)可訪問寄存器I和一外部總線裝置2,外設(shè)可訪問寄存器I位于處理器核內(nèi)部,外設(shè)通過外部總線裝置2直接訪問外設(shè)可訪問寄存器I進(jìn)行數(shù)據(jù)的修改和讀取。
[0095]其中,外設(shè)可訪問寄存器I包含:處理器可寫外部模塊可寫寄存器、只讀外設(shè)可訪問寄存器和只寫外設(shè)可訪問寄存器。
[0096]外設(shè)可訪問寄存器的程序訪問方式與用機(jī)器指令訪問通用寄存器的方式相同。
[0097]本發(fā)明實(shí)現(xiàn)的技術(shù)方案為了減少處理器與外設(shè)之間傳輸數(shù)據(jù)的開銷,在處理器內(nèi)部增加了一種可以被外部設(shè)備直接訪問的寄存器。我們稱這組寄存器為外設(shè)可訪問寄存器(Peripheral Accessible Register,簡(jiǎn)稱為PAR寄存器)。外設(shè)可訪問寄存器既可以被機(jī)器指令當(dāng)作普通的寄存器訪問,也可以通過處理器的外部總線被系統(tǒng)的外部設(shè)備訪問。
[0098]由于外設(shè)可訪問寄存器可以被處理器和外設(shè)兩者讀寫,根據(jù)讀寫權(quán)限不同,可以將外設(shè)可訪問寄存器分成三類:處理器可寫外部模塊可寫的寄存器,處理器只讀外部模塊可寫的寄存器,外部模塊只讀處理器可寫的寄存器??紤]到外部模塊通常與處理器工作在不同時(shí)鐘域且頻率會(huì)慢很多。一個(gè)外設(shè)可訪問寄存器如果既可以被處理器修改又可以被外部設(shè)備修改,那么在數(shù)據(jù)傳輸?shù)倪^程中有可能會(huì)帶來一致性的問題。所以本發(fā)明更側(cè)重于后兩類寄存器:處理器只讀外部設(shè)備可寫,以處理器的角度,之后簡(jiǎn)稱這類寄存器只讀外設(shè)可訪問寄存器;外部設(shè)備只讀處理器可寫,以處理器的角度,之后稱這類寄存器為只寫外設(shè)可訪問寄存器。每一個(gè)訪問外設(shè)可訪問寄存器的請(qǐng)求都要在片上總線上進(jìn)行讀寫合法性檢查。對(duì)于只讀外設(shè)可訪問寄存器,主要由外設(shè)用于填寫剛完成的DMA請(qǐng)求的目的地址,這樣處理器檢查外設(shè)傳輸了多少數(shù)據(jù)時(shí),只需讀取只讀外設(shè)可訪問寄存器的值即可。由于訪問只讀外設(shè)可訪問寄存器的開銷很低,所以可以將處理器查詢外設(shè)狀態(tài)的操作插入到正常的應(yīng)用處理中進(jìn)行。這樣即不會(huì)引入太多的開銷,也能確保收到數(shù)據(jù)后的及時(shí)響應(yīng)。只寫外設(shè)可訪問寄存器則可用于處理器通知外部設(shè)備一個(gè)新DMA請(qǐng)求的目的地址,處理器通知外部設(shè)備可用的緩沖區(qū)信息,外部設(shè)備讀取后發(fā)起DMA操作。根據(jù)程序的需要,兩類外設(shè)可訪問寄存器在一個(gè)處理器核內(nèi)部都會(huì)設(shè)置多個(gè),外部設(shè)備或軟件訪問時(shí)可以通過外設(shè)可訪問寄存器ID來指明具體要訪問的寄存器。
[0099]當(dāng)一個(gè)處理核需要與多個(gè)外部設(shè)備傳輸數(shù)據(jù)時(shí),不同外設(shè)會(huì)共享使用一個(gè)處理核內(nèi)部的外設(shè)可訪問寄存器。共享多個(gè)外設(shè)可訪問寄存器,但是只需要一個(gè)外部總線裝置即可。為了避免沖突,我們要求一段時(shí)間只有一個(gè)外設(shè)可以通過外設(shè)可訪問寄存器與處理器核傳輸數(shù)據(jù)。實(shí)現(xiàn)辦法是使用一個(gè)只寫外設(shè)可訪問寄存器,記錄當(dāng)前使用該處理器核中外設(shè)可訪問寄存器的外設(shè)標(biāo)號(hào),為O的話表示空閑,外設(shè)可以在總線上發(fā)出請(qǐng)求申請(qǐng)只寫外設(shè)可訪問寄存器的使用權(quán),在之后讀取該寄存器以確保申請(qǐng)成功。當(dāng)一個(gè)處理核上運(yùn)行的多個(gè)進(jìn)程需要與外設(shè)傳輸數(shù)據(jù)時(shí),為了避免進(jìn)程間對(duì)外設(shè)可訪問寄存器的污染,需要在進(jìn)程切換的時(shí)候終止正在進(jìn)行的外設(shè)DMA操作,并將外設(shè)可訪問寄存器的內(nèi)容保存到進(jìn)程上下文中。多個(gè)處理核因?yàn)橛懈髯运接械耐庠O(shè)可訪問寄存器,所以可以同時(shí)發(fā)起與一個(gè)或多個(gè)外設(shè)之間的數(shù)據(jù)傳輸操作。
[0100]其中,外部總線裝置2包括:旁路總線裝置3和/或片上總線裝置4,外設(shè)通過旁路總線裝置3和/或片上總線裝置4對(duì)外設(shè)可訪問寄存器I進(jìn)行直接訪問。
[0101]外部設(shè)備要訪問核內(nèi)的外設(shè)可訪問寄存器,既可以通過新增數(shù)據(jù)通路,也可以基于現(xiàn)有的片上總線。前者只需在處理器核上增加新的旁路總線,專門用于外部模塊讀寫外設(shè)可訪問寄存器。這種方式需要較多的布線資源,但訪問操作比較方便,處理核以及IO控制器內(nèi)部需要做的改動(dòng)不大。后者可以在基于現(xiàn)有片上總線的基礎(chǔ)上,修改cache控制器的邏輯,監(jiān)測(cè)總線并將外部設(shè)備訪問外設(shè)可訪問寄存器的請(qǐng)求轉(zhuǎn)發(fā)至處理核內(nèi)部。這樣不需要額外的連線資源,但是需要在現(xiàn)有總線協(xié)議上新增訪問外設(shè)可訪問寄存器的內(nèi)容,對(duì)于cache控制器和IO控制器的邏輯修改較多。具體的實(shí)現(xiàn)方式是將外設(shè)可訪問寄存器視作特殊的cache塊,IO控制器視作特殊的處理器核,IO控制器訪問外設(shè)可訪問寄存器既是向目標(biāo)寄存器所在的處理器核發(fā)出MESI協(xié)議請(qǐng)求,cache控制器解析MESI協(xié)議請(qǐng)求,完成外設(shè)可訪問寄存器的讀寫操作。
[0102]旁路總線裝置3包含一位于IO控制器和處理器之間的新增總線,用于處理IO控制器讀寫外部設(shè)備可訪問寄存器的旁路總線請(qǐng)求。
[0103]圖3為旁路總線裝置系統(tǒng)示意圖,如圖3所示,處理器核與外設(shè)控制器之間單獨(dú)設(shè)置了一條旁路總線。外設(shè)通過旁路總線獲取只寫外設(shè)可訪問寄存器的最新值,或者更新只讀外設(shè)可訪問寄存器的最新值。除上述兩種操作之外,旁路總線上沒有其他類型的請(qǐng)求,總線上的請(qǐng)求可以顯示標(biāo)明處理核ID和外設(shè)可訪問寄存器ID,收到請(qǐng)求的處理核輸出或更新外設(shè)可訪問寄存器的值即可。
[0104]圖4為片上總線裝置系統(tǒng)示意圖,如圖4所示,每一個(gè)處理器核內(nèi)部增加了 cache控制器與外設(shè)可訪問寄存器的數(shù)據(jù)通路。所述的支持外設(shè)可訪問寄存器的片上總線是在現(xiàn)有cache —致性協(xié)議基礎(chǔ)上增加了讀寫外設(shè)可訪問寄存器的新協(xié)議。同時(shí)在cache控制器和IO控制器上增加了處理新協(xié)議所需的功能電路。
[0105]片上總線裝置包括:處理器核、緩存控制器、IO控制器和片上總線,在所述處理器核與所述緩存控制器之間具有一條基于所述片上總線的可直接訪問外設(shè)可訪問寄存器的數(shù)據(jù)通路。
[0106]片上總線通過緩存一致性協(xié)議實(shí)現(xiàn)外設(shè)可訪問寄存器裝置。
[0107]旁路總線請(qǐng)求包括:處理器核ID信息和外設(shè)可訪問寄存器標(biāo)示信息,所述旁路總線依據(jù)標(biāo)示信息檢查所述請(qǐng)求是否合法。
[0108]片上總線將外設(shè)可訪問寄存器與緩存塊進(jìn)行統(tǒng)一編址,并基于緩存一致性協(xié)議完成外設(shè)對(duì)外設(shè)可訪問寄存器的讀寫操作。
[0109]緩存控制器可將片上總線的請(qǐng)求轉(zhuǎn)換為外設(shè)可訪問寄存器的讀寫操作請(qǐng)求。
[0110]IO控制器將外設(shè)可訪問寄存器的讀寫請(qǐng)求轉(zhuǎn)化為片上總線的請(qǐng)求,片上總線的請(qǐng)求的地址空間位于系統(tǒng)分配給外設(shè)可訪問寄存器的地址空間內(nèi)。
[0111]綜上所述,本發(fā)明的外設(shè)可訪問寄存器處理器內(nèi)部,使外部模塊發(fā)出更新外設(shè)可訪問寄存器的請(qǐng)求和通知處理器數(shù)據(jù)傳輸?shù)淖钚聽顟B(tài),只需I個(gè)cycle檢查寄存器的值即可快速判斷出數(shù)據(jù)傳輸是否完成,判斷從外部模塊發(fā)出了多少數(shù)據(jù),儲(chǔ)存于內(nèi)存中的具體位置,這樣減少了外設(shè)訪問處理器的處理延遲,并節(jié)省了中斷處理操作的開銷,降低了整個(gè)系統(tǒng)應(yīng)用的性能。
[0112]本發(fā)明還提供一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,圖5為本發(fā)明基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法流程示意圖,如圖5所示,該方法包括:
[0113]外設(shè)向處理器傳送數(shù)據(jù)步驟S1:外設(shè)將數(shù)據(jù)信息通過外部總線裝置寫入外設(shè)可訪問寄存器,處理器讀取外部設(shè)備可訪問寄存器中的數(shù)據(jù)信息并獲取外設(shè)發(fā)送的數(shù)據(jù);
[0114]處理器向外設(shè)傳送數(shù)據(jù)步驟S2:處理器在外設(shè)可訪問寄存器中寫入要傳輸?shù)臄?shù)據(jù)信息,外設(shè)通過外部總線裝置讀取外設(shè)可訪問寄存器中數(shù)據(jù)信息并獲取處理器發(fā)送的數(shù)據(jù)。
[0115]其中,外設(shè)向處理器傳送數(shù)據(jù)步驟SI包括:
[0116]外設(shè)發(fā)送操作步驟Sll:外部設(shè)備將數(shù)據(jù)傳輸?shù)揭还蚕砜臻g,把數(shù)據(jù)在共享空間中的地址和長(zhǎng)度通過所述外部總線裝置寫入外設(shè)可訪問寄存器,并通過外部總線裝置更新外設(shè)可訪問寄存器;
[0117]處理器接收操作步驟S12:處理器在外設(shè)可訪問寄存器中讀取共享空間中的數(shù)據(jù)地址和長(zhǎng)度,并判斷數(shù)據(jù)接收完整后,進(jìn)行數(shù)據(jù)處理。
[0118]圖6A為本發(fā)明外設(shè)發(fā)送操作步驟示意圖,如圖6A所示,外設(shè)發(fā)送操作步驟Sll還包括:
[0119]外設(shè)讀取寄存器步驟Slll:外設(shè)根據(jù)處理器發(fā)送的DMA操作請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器;
[0120]外設(shè)傳輸數(shù)據(jù)步驟S112:外設(shè)向共享空間中拷貝數(shù)據(jù);
[0121]外設(shè)更新寄存器步驟S113:外設(shè)通過外部總線裝置在只讀外設(shè)可訪問寄存器中更新DMA請(qǐng)求的進(jìn)度。
[0122]圖6B為本發(fā)明處理器接收操作步驟示意圖,如圖6B所示,其中,處理器接收操作步驟S12還包括:
[0123]處理器請(qǐng)求步驟S121:用于處理器在外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知外設(shè)啟動(dòng)DMA操作;
[0124]處理器判斷并讀取數(shù)據(jù)步驟S122:處理器檢查只讀外部設(shè)備可訪問寄存器,如果共享空間中已經(jīng)收到足夠多的新數(shù)據(jù),則處理新數(shù)據(jù),否則繼續(xù)執(zhí)行外設(shè)傳輸數(shù)據(jù)步驟。
[0125]其中,處理器向外設(shè)傳送數(shù)據(jù)步驟S2還包括:
[0126]處理器發(fā)送操作步驟S21:處理器在外設(shè)可訪問寄存器填寫要傳輸?shù)奈挥趦?nèi)存中的數(shù)據(jù)地址和長(zhǎng)度;
[0127]外設(shè)接收操作步驟S22:外設(shè)通過外部總線裝置讀取外設(shè)可訪問寄存器,從內(nèi)存讀取數(shù)據(jù),并通過外部總線裝置更新外設(shè)可訪問寄存器。
[0128]圖7A為本發(fā)明處理器發(fā)送操作步驟示意圖,如圖7A所示,其中,處理器發(fā)送操作步驟S21還包括:[0129]處理器請(qǐng)求步驟S211:用于處理器在外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知外設(shè)啟動(dòng)DMA操作;
[0130]處理器傳輸數(shù)據(jù)步驟S212:處理器中空閑內(nèi)存空間填入需要發(fā)送的數(shù)據(jù),并執(zhí)行處理器請(qǐng)求步驟;
[0131]處理器檢查步驟S213:處理器檢查只讀外部設(shè)備可訪問寄存器,如果有足夠內(nèi)存空間,則執(zhí)行處理器傳輸數(shù)據(jù)步驟,否則,執(zhí)行外設(shè)更新寄存器步驟。
[0132]圖7B為本發(fā)明外設(shè)接收操作步驟示意圖,如圖7B所示,外設(shè)接收操作步驟S22還包括:
[0133]外設(shè)讀取寄存器步驟S221:外設(shè)根據(jù)處理器發(fā)送的DMA請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器;
[0134]外設(shè)讀取數(shù)據(jù)步驟S222:外設(shè)從只寫外部設(shè)備可訪問寄存器中獲取DMA請(qǐng)求的地址和長(zhǎng)度,并從內(nèi)存中讀取數(shù)據(jù);
[0135]外設(shè)更新寄存器步驟S223:外設(shè)通過外部總線裝置在只讀外設(shè)可訪問寄存器中更新所述DMA請(qǐng)求的進(jìn)度。
[0136]圖8A為本發(fā)明外設(shè)讀取寄存器步驟示意圖,如圖8A所示,其中,外設(shè)讀取寄存器步驟Slll進(jìn)一步包括:
[0137]旁路總線外設(shè)讀取步驟Sllll:外設(shè)通過旁路總線讀取外部設(shè)備可訪問寄存器的最新值;和/或
[0138]片上總線外設(shè)讀取步驟S1112:外設(shè)通過片上總線讀取外部設(shè)備可訪問寄存器的
最新值。
[0139]圖SB為本發(fā)明外設(shè)讀取寄存器步驟示意圖,如圖SB所示,其中,外設(shè)讀取寄存器步驟S221都進(jìn)一步包括:
[0140]旁路總線外設(shè)讀取步驟S2211:外設(shè)通過旁路總線讀取外部設(shè)備可訪問寄存器的最新值;和/或
[0141]片上總線外設(shè)讀取步驟S2212:外設(shè)通過片上總線讀取外部設(shè)備可訪問寄存器的
最新值。
[0142]圖SC為本發(fā)明外設(shè)更新寄存器步驟示意圖,如圖SC所示,外設(shè)更新寄存器步驟SI 13進(jìn)一步包括:
[0143]旁路總線外設(shè)更新步驟S1131:外設(shè)通過旁路總線更新外部設(shè)備可訪問寄存器的最新值;和/或
[0144]片上總線外設(shè)更新步驟S1132:外設(shè)通過片上總線更新外部設(shè)備可訪問寄存器的
最新值。
[0145]圖8D為本發(fā)明外設(shè)更新寄存器步驟示意圖,如圖8D所示,外設(shè)更新寄存器步驟S223進(jìn)一步包括:
[0146]旁路總線外設(shè)更新步驟S2231:外設(shè)通過旁路總線更新外部設(shè)備可訪問寄存器的最新值;和/或
[0147]片上總線外設(shè)更新步驟S2232:外設(shè)通過片上總線更新外部設(shè)備可訪問寄存器的
最新值。
[0148]圖9A為本發(fā)明片上總線外設(shè)讀取寄存器步驟示意圖,如圖9A所示,片上總線外設(shè)讀取步驟SI 112進(jìn)一步包括:
[0149]外設(shè)讀取的IO控制器處理步驟S11121:外設(shè)向IO控制器發(fā)出讀取外設(shè)可訪問寄存器的讀取請(qǐng)求,IO控制器在片上總線發(fā)出請(qǐng)求,并收到返回值后,將返回值發(fā)給外設(shè);
[0150]外設(shè)讀取緩存控制器的處理步驟S11122:緩存控制器根據(jù)從片上總線接收到的請(qǐng)求的地址進(jìn)行識(shí)別,如果地址為外設(shè)可訪問寄存器占用的空間,并且如果外設(shè)可訪問寄存器屬于本處理器核,則緩存控制器讀取外設(shè)可訪問寄存器,并將返回值放入片上總線。
[0151]圖9B為本發(fā)明片上總線外設(shè)讀取寄存器步驟示意圖,如圖9B所示,片上總線外設(shè)讀取步驟S2212進(jìn)一步包括:
[0152]外設(shè)讀取IO控制器的處理步驟S22121:外設(shè)向IO控制器發(fā)出讀取外設(shè)可訪問寄存器的讀取請(qǐng)求,IO控制器在片上總線發(fā)出請(qǐng)求,并收到返回值后,將返回值發(fā)給外設(shè);
[0153]外設(shè)讀取緩存控制器的處理步驟S22122:緩存控制器根據(jù)從片上總線接收到的請(qǐng)求的地址進(jìn)行識(shí)別,如果地址為外設(shè)可訪問寄存器占用的空間,并且如果外設(shè)可訪問寄存器屬于本處理器核,則緩存控制器讀取外設(shè)可訪問寄存器,并將返回值放入片上總線。
[0154]圖9C為本發(fā)明片上總線外設(shè)更新寄存器步驟示意圖,如圖9C所示,片上總線外設(shè)更新步驟SI 132進(jìn)一步包括:
[0155]外設(shè)更新IO控制器的處理步驟S11321:外設(shè)向IO控制器發(fā)出更新外設(shè)可訪問寄存器的更新請(qǐng)求,IO控制器在片上總線發(fā)出請(qǐng)求,并收到響應(yīng)后,將更新數(shù)據(jù)置于片上總線.[0156]外設(shè)更新緩存控制器的處理步驟S11322:緩存控制器從片上總線收到片上總線的請(qǐng)求,根據(jù)請(qǐng)求的地址進(jìn)行識(shí)別,如果地址為本處理器核的外設(shè)可訪問寄存器地址,緩存控制器修改外設(shè)可訪問寄存器的地址空間狀態(tài),將收到的所述片上總線請(qǐng)求的返回值發(fā)給目標(biāo)外設(shè)可訪問寄存器,并再次修改地址空間狀態(tài)。
[0157]圖9D為本發(fā)明片上總線外設(shè)更新寄存器步驟示意圖,如圖9D所示,片上總線外設(shè)更新步驟S2232進(jìn)一步包括:
[0158]外設(shè)更新IO控制器的處理步驟S22321:外設(shè)向IO控制器發(fā)出更新外設(shè)可訪問寄存器的更新請(qǐng)求,IO控制器在片上總線發(fā)出請(qǐng)求,并收到響應(yīng)后,將更新數(shù)據(jù)置于片上總線.[0159]外設(shè)更新緩存控制器的處理步驟S22322:緩存控制器從片上總線收到片上總線的請(qǐng)求,根據(jù)請(qǐng)求的地址進(jìn)行識(shí)別,如果地址為本處理器核的外設(shè)可訪問寄存器地址,緩存控制器修改外設(shè)可訪問寄存器的地址空間狀態(tài),將收到的所述片上總線請(qǐng)求的返回值發(fā)給目標(biāo)外設(shè)可訪問寄存器,并再次修改地址空間狀態(tài)。
[0160]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明的一種基于外部設(shè)備可訪問寄存器實(shí)現(xiàn)的數(shù)據(jù)傳輸方法和裝置進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0161]圖10為本發(fā)明一實(shí)施例外設(shè)向處理器傳送數(shù)據(jù)步驟示意圖,如圖10所示,包括下列步驟:
[0162]步驟210,處理器在只寫外設(shè)可訪問寄存器中填寫DMA請(qǐng)求的起始目的地址和長(zhǎng)
度息;
[0163]步驟220,處理器通過IO總線發(fā)出命令,通知外部設(shè)備啟動(dòng)DMA操作;[0164]步驟230,外設(shè)根據(jù)請(qǐng)求的來源讀取處理器中的只寫外設(shè)可訪問寄存器;
[0165]步驟240,外設(shè)拷貝數(shù)據(jù),并在只讀外設(shè)可訪問寄存器中更新DMA請(qǐng)求的進(jìn)度;
[0166]步驟250,處理器檢查只讀外設(shè)可訪問寄存器,是否收到了足夠多的新數(shù)據(jù)。若是,則執(zhí)行步驟260,否則執(zhí)行步驟240 ;
[0167]步驟260,處理器處理最新收到的數(shù)據(jù);
[0168]步驟270,檢查DMA操作是否結(jié)束,若是,則整個(gè)傳輸過程結(jié)束,否則執(zhí)行步驟250。
[0169]下面以一段程序?yàn)槔f明當(dāng)兩個(gè)大數(shù)組向量A、B存儲(chǔ)在外設(shè)上,處理器利用外設(shè)可訪問寄存器實(shí)現(xiàn)讀取兩個(gè)向量,進(jìn)行處理,并寫回結(jié)果的過程。
[0170]//設(shè)置PAR的目標(biāo)值
[0171]MOV OCM_ADDR_A+LEN(A),%TARGET_PAR
[0172]Il啟動(dòng)DMA操作,取A至OCM
[0173]DMA_L0AD 0CM_ADDR_A, [A]
[0174].L1:
[0175]//執(zhí)行與A、B無關(guān)的代碼
[0176]…
[0177]//比較目標(biāo)寄存器,外部模塊更新%LW_PAR
[0178]CMP%Lff_PAR, %TARGET_PAR
[0179]//消息讀未完成,繼續(xù)執(zhí)行無關(guān)代碼
[0180]JNE.LI
[0181]//檢查剛完成的消息讀是否讀的是B
[0182]CMP OCM_ADDR_B+LEN(B),%TARGET_PAR
[0183]//B已經(jīng)讀完,跳轉(zhuǎn)去進(jìn)行計(jì)算
[0184]JE.L2
[0185]//設(shè)置新的PAR目標(biāo)值
[0186]MOV OCM_ADDR_B+LEN(B),%TARGET_PAR
[0187]Il啟動(dòng)DMA操作,取B至OCM
[0188]DMA_L0AD 0CM_ADDR_B, [B]
[0189]//繼續(xù)執(zhí)行與A、B無關(guān)的代碼
[0190]JMP.LI
[0191].L2:
[0192]//計(jì)算 C[i]=A[i]+B[i]
[0193]ADD 0CM_ADDR_C, 0CM_ADDR_A, 0CM_ADDR_B
[0194]//寫回結(jié)果,通過DMA操作將OCM中的結(jié)果傳送至外設(shè)
[0195]DMA_ST0RE 0CM_ADDR_C, [C]
[0196]//計(jì)算結(jié)束
[0197]JMP.LI
[0198]圖11為本發(fā)明一實(shí) 施例外設(shè)向處理器傳輸數(shù)據(jù)步驟示意圖,處理器將數(shù)據(jù)發(fā)送給外設(shè)進(jìn)行處理的過程,如圖11所示,包括下列步驟:
[0199]步驟310,處理器在只寫外設(shè)可訪問寄存器中填寫DMA請(qǐng)求的起始目的地址和長(zhǎng)度?目息;
[0200]步驟320,處理器通過IO總線發(fā)出命令,通知外圍設(shè)備啟動(dòng)DMA操作;
[0201]步驟330,外設(shè)根據(jù)請(qǐng)求的來源讀取處理器中的只寫外設(shè)可訪問寄存器;
[0202]步驟340,外設(shè)從只寫外設(shè)可訪問寄存器取得DMA請(qǐng)求的地址和長(zhǎng)度。從內(nèi)存讀取數(shù)據(jù),并進(jìn)行各種處理;
[0203]步驟350,外設(shè)在只讀外設(shè)可訪問寄存器中更新進(jìn)度,通知CPU已經(jīng)取走了多少數(shù)據(jù);
[0204]步驟360,處理器檢查只讀外設(shè)可訪問寄存器,是否有了足夠多的空閑空間。若是,則執(zhí)行步驟370,否則執(zhí)行步驟350 ;
[0205]步驟370,處理器在空閑內(nèi)存空間中填入新的需要發(fā)給外設(shè)的數(shù)據(jù),并在只寫外設(shè)可訪問寄存器中填寫DMA請(qǐng)求的起始目的地址和長(zhǎng)度信息;
[0206]步驟380,處理器檢查是否發(fā)送了所有數(shù)據(jù),若是則整個(gè)傳輸過程結(jié)束,否則執(zhí)行步驟360。
[0207]圖12為本發(fā)明一實(shí)施例外設(shè)讀取IO控制器的處理步驟示意圖,如圖12所示,該步驟基于支持外設(shè)可訪問寄存器的片上總線,外部設(shè)備讀取只寫外設(shè)可訪問寄存器時(shí)IO控制器的處理過程, 包括下列步驟:
[0208]步驟610,外部設(shè)備向IO控制器發(fā)出讀取外設(shè)可訪問寄存器的請(qǐng)求;
[0209]步驟620, IO控制器在片上總線的請(qǐng)求總線上發(fā)出Get請(qǐng)求,等同于cache控制器的數(shù)據(jù)塊發(fā)生I (Invalid)_>S (Share)狀態(tài)轉(zhuǎn)換時(shí)發(fā)出的請(qǐng)求;
[0210]步驟630,IO控制器收到片上總線的數(shù)據(jù)總線上的返回值,將其發(fā)給提出請(qǐng)求的外部設(shè)備。整個(gè)操作過程結(jié)束。
[0211]圖13為本發(fā)明一實(shí)施例外設(shè)讀取緩存控制器處理步驟示意圖,如圖13所示,該步驟基于支持外設(shè)可訪問寄存器的片上總線,外部設(shè)備讀取只寫外設(shè)可訪問寄存器時(shí)cache控制器的處理過程,包括下列步驟:
[0212]步驟710,處理核將只寫外設(shè)可訪問寄存器占用的空間在cache控制器中登記,cache控制器標(biāo)記這段空間的狀態(tài)恒為E(Exclusive);
[0213]步驟720,Cache控制器從片上總線的請(qǐng)求總線收到請(qǐng)求,根據(jù)請(qǐng)求的地址進(jìn)行識(shí)別;
[0214]步驟730,檢查是否屬于外設(shè)可訪問寄存器占用的空間,如果是,則執(zhí)行步驟640,否則執(zhí)行步驟660 ;
[0215]步驟740,檢查是否屬于本處理核上的外設(shè)可訪問寄存器,如果是,則執(zhí)行步驟750,否則整個(gè)操作過程結(jié)束;
[0216]步驟750,Cache控制器從處理核中讀取需要的外設(shè)可訪問寄存器,作為請(qǐng)求的返回值放到片上總線的數(shù)據(jù)總線上。整個(gè)操作過程結(jié)束;
[0217]步驟760,收到的請(qǐng)求屬于訪問主存儲(chǔ)器的請(qǐng)求,按照傳統(tǒng)方式處理。
[0218]圖14為本發(fā)明一實(shí)施例外設(shè)更新IO控制器的處理步驟示意圖,如圖14所示,該步驟基于支持外設(shè)可訪問寄存器的片上總線,外部設(shè)備更新只讀外設(shè)可訪問寄存器時(shí)IO控制器的處理過程,包括下列步驟:
[0219]步驟810,外部設(shè)備向IO控制器發(fā)出更新外設(shè)可訪問寄存器的請(qǐng)求;[0220]步驟820,IO控制器在片上總線的請(qǐng)求總線上發(fā)出目的處理器核的偽get請(qǐng)求,等同于目的處理器核的cache控制器的數(shù)據(jù)塊發(fā)生I_>S狀態(tài)轉(zhuǎn)換時(shí)發(fā)出的請(qǐng)求;
[0221]步驟830, IO控制器在片上總線的請(qǐng)求總線上發(fā)出Put請(qǐng)求,等同于cache控制器的數(shù)據(jù)塊發(fā)生E->I狀態(tài)轉(zhuǎn)換時(shí)發(fā)出的請(qǐng)求;
[0222]步驟840,IO控制器收到片上總線的請(qǐng)求總線的響應(yīng)后,將要更新的數(shù)據(jù)放到片上總線的數(shù)據(jù)總線上;
[0223]步驟850,IO控制器通知外部設(shè)備更新操作完成。
[0224]圖15為本發(fā)明一實(shí)施例外設(shè)更新緩存控制器的處理步驟示意圖,如圖15所示,該步驟基于支持外設(shè)可訪問寄存器的片上總線,外部設(shè)備更新只讀外設(shè)可訪問寄存器時(shí)cache控制器的處理過程,包括下列步驟:
[0225]步驟910,處理核將只讀外設(shè)可訪問寄存器占用的空間在cache控制器中登記,cache控制器標(biāo)記這段空間的狀態(tài)為S(Share);
[0226]步驟920,Cache控制器從片上總線的請(qǐng)求總線收到偽Get請(qǐng)求,根據(jù)請(qǐng)求的地址進(jìn)行識(shí)別;
[0227]步驟930,檢查是否屬于本處理核上的外設(shè)可訪問寄存器,如果是,則執(zhí)行步驟940,否則整個(gè)操作過程結(jié)束;
[0228]步驟940,Cache控制器將目標(biāo)寄存器占用的地址空間的狀態(tài)設(shè)為發(fā)生I_>S狀態(tài)轉(zhuǎn)換且尚未收到請(qǐng)求數(shù)據(jù)時(shí)的中間狀態(tài);
[0229]步驟950,Cache控制器收到片上總線的數(shù)據(jù)總線上的返回值,將其發(fā)給目標(biāo)外設(shè)可訪問寄存器,并修改對(duì)應(yīng)空間的狀態(tài)為S。整個(gè)操作過程結(jié)束。
[0230]當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述系統(tǒng)包含:多個(gè)外設(shè)可訪問寄存器和一外部總線裝置,所述外設(shè)可訪問寄存器位于處理器核內(nèi)部,外設(shè)通過所述外部總線裝置直接訪問所述外設(shè)可訪問寄存器進(jìn)行數(shù)據(jù)的修改和讀取。
2.根據(jù)權(quán)利要求1所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外設(shè)可訪問寄存器包含:處理器可寫外部模塊可寫寄存器、只讀外設(shè)可訪問寄存器和只寫外設(shè)可訪問寄存器。
3.根據(jù)權(quán)利要求1所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外設(shè)可訪問寄存器的程序訪問方式與用機(jī)器指令訪問通用寄存器的方式相同。
4.根據(jù)權(quán)利要求1所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述外部總線裝置包括:旁路總線裝置和/或片上總線裝置,外設(shè)通過所述旁路總線裝置和/或所述片上總線裝置對(duì)外設(shè)可訪問寄存器進(jìn)行直接訪問。
5.根據(jù)權(quán)利要求2所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述旁路總線裝置包含一位于IO控制器和處理器之間的新增總線,用于處理IO控制器讀寫外部設(shè)備可訪問寄存器的旁路總線請(qǐng)求。
6.根據(jù)權(quán)利要求2所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線裝置包括:處理器核、緩存控制器、IO控制器和片上總線,在所述處理器核與所述緩存控制器之間具有一條基于所述片上總線的可直接訪問外設(shè)可訪問寄存器的數(shù)據(jù)通路。
7.根據(jù)權(quán)利要求5所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線通過緩存一致性協(xié)議實(shí)現(xiàn)所述外設(shè)可訪問寄存器裝置。
8.根據(jù)權(quán)利要求4所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述旁路總線請(qǐng)求包括:處理器核ID信息和所述外設(shè)可訪問寄存器標(biāo)示信息,所述旁路總線依據(jù)所述標(biāo)示信息檢查所述請(qǐng)求是否合法。
9.根據(jù)權(quán)利要求5所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述片上總線將所述外設(shè)可訪問寄存器與緩存塊進(jìn)行統(tǒng)一編址,并基于所述緩存一致性協(xié)議完成外設(shè)對(duì)所述外設(shè)可訪問寄存器的讀寫操作。
10.根據(jù)權(quán)利要求6所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述緩存控制器可將片上總線的請(qǐng)求轉(zhuǎn)換為所述外設(shè)可訪問寄存器的讀寫操作請(qǐng)求。
11.根據(jù)權(quán)利要求6或10所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),其特征在于,所述IO控制器將所述外設(shè)可訪問寄存器的讀寫請(qǐng)求轉(zhuǎn)化為所述片上總線的請(qǐng)求,所述片上總線的請(qǐng)求的地址空間位于系統(tǒng)分配給所述外設(shè)可訪問寄存器的地址空間內(nèi)。
12.—種基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,應(yīng)用于如權(quán)利要求1-11中任一項(xiàng)所述的所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸系統(tǒng),所述傳輸系統(tǒng)包括多個(gè)外部設(shè)備可訪問寄存器和一外部總線裝置,其特征在于,所述方法包括: 外設(shè)向處理器傳送數(shù)據(jù)步驟:外設(shè)將數(shù)據(jù)信息通過所述外部總線裝置寫入所述外設(shè)可訪問寄存器,處理器讀取所述外部設(shè)備可訪問寄存器中的數(shù)據(jù)信息并獲取外設(shè)發(fā)送的數(shù)據(jù); 處理器向外設(shè)傳送數(shù)據(jù)步驟:處理器在所述外設(shè)可訪問寄存器中寫入要傳輸?shù)臄?shù)據(jù)信息,外設(shè)通過所述外部總線裝置讀取所述外設(shè)可訪問寄存器中數(shù)據(jù)信息并獲取處理器發(fā)送的數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)向處理器傳送數(shù)據(jù)步驟包括: 外設(shè)發(fā)送操作步驟:外部設(shè)備將數(shù)據(jù)傳輸?shù)揭还蚕砜臻g,把數(shù)據(jù)在所述共享空間中的地址和長(zhǎng)度通過所述外部總線裝置寫入所述外設(shè)可訪問寄存器,并通過所述外部總線裝置更新所述外設(shè)可訪問寄存器; 處理器接收操作步驟:處理器在所述外設(shè)可訪問寄存器中讀取共享空間中的數(shù)據(jù)地址和長(zhǎng)度,并判斷數(shù)據(jù)接收完整后,進(jìn)行數(shù)據(jù)處理。
14.根據(jù)權(quán)利要求13所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)發(fā)送操作步驟還包括: 外設(shè)讀取寄存器步驟:外設(shè)根據(jù)處理器發(fā)送的所述DMA操作請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器; 外設(shè)傳輸數(shù)據(jù)步驟:外設(shè)向所述共享空間中拷貝數(shù)據(jù); 外設(shè)更新寄存器步驟:外設(shè)通過所述外部總線裝置在只讀外設(shè)可訪問寄存器中更新所述DMA請(qǐng)求的進(jìn)度。
15.根據(jù)權(quán)利要求13所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器接收操作步驟還包括: 處理器請(qǐng)求步驟:用于所述處理器在所述外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知所述外設(shè)啟動(dòng)DMA操作; 處理器判斷并讀取數(shù)據(jù)步驟:處理器檢查所述只讀外部設(shè)備可訪問寄存器,如果所述共享空間中已經(jīng)收到足夠多的新數(shù)據(jù),則處理所述新數(shù)據(jù),否則繼續(xù)執(zhí)行所述外設(shè)傳輸數(shù)據(jù)步驟。
16.根據(jù)權(quán)利要求12所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器向外設(shè)傳送數(shù)據(jù)步驟還包括: 處理器發(fā)送操作步驟:處理器在所述外設(shè)可訪問寄存器填寫要傳輸?shù)奈挥趦?nèi)存中的數(shù)據(jù)地址和長(zhǎng)度; 外設(shè)接收操作步驟:外設(shè)通過所述外部總線裝置讀取所述外設(shè)可訪問寄存器,從內(nèi)存讀取數(shù)據(jù),并通過外部總線裝置更新所述外設(shè)可訪問寄存器。
17.根據(jù)權(quán)利要求16所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)接收操作步驟還包括: 外設(shè)讀取寄存器步驟:外設(shè)根據(jù)處理器發(fā)送的DMA請(qǐng)求來源,通過外部總線裝置讀取只寫外設(shè)可訪問寄存器; 外設(shè)讀取數(shù)據(jù)步驟:外設(shè)從只寫外部設(shè)備可訪問寄存器中獲取所述DMA請(qǐng)求的地址和長(zhǎng)度,并從內(nèi)存中讀取數(shù)據(jù); 外設(shè)更新寄存器步驟:外設(shè)通過所述外部總線裝置在只讀外設(shè)可訪問寄存器中更新所述DMA請(qǐng)求的進(jìn)度。
18.根據(jù)權(quán)利要求16所述的基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述處理器發(fā)送操作步驟還包括: 處理器請(qǐng)求步驟:用于處理器在所述外設(shè)可訪問寄存器中填寫直接內(nèi)存訪問DMA請(qǐng)求的起始目的地址和長(zhǎng)度,并通知外設(shè)啟動(dòng)DMA操作; 處理器傳輸數(shù)據(jù)步驟:處理器中空閑內(nèi)存空間寫入需要發(fā)送的數(shù)據(jù),并執(zhí)行所述處理器請(qǐng)求步驟; 處理器檢查步驟:處理器檢查只讀外部設(shè)備可訪問寄存器,如果有足夠內(nèi)存空間,則執(zhí)行所述處理器傳輸數(shù)據(jù)步驟,否則,執(zhí)行所述外設(shè)更新寄存器步驟。
19.根據(jù)權(quán)利要求14或17所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)讀取寄存器步驟進(jìn)一步包括: 旁路總線外設(shè)讀取步驟:所述外設(shè)通過所述旁路總線讀取所述外部設(shè)備可訪問寄存器的最新值;和/或 片上總線外設(shè)讀取步驟:所述外設(shè)通過所述片上總線讀取所述外部設(shè)備可訪問寄存器的最新值。
20.根據(jù)權(quán)利要求14或17所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述外設(shè)更新寄存器步驟進(jìn)一步包括: 旁路總線外設(shè)更新步驟:所述外設(shè)通過所述旁路總線更新所述外部設(shè)備可訪問寄存器的最新值;和/或 片上總線外設(shè)更新步驟:所述外設(shè)通過所述片上總線更新所述外部設(shè)備可訪問寄存器的最新值。
21.根據(jù)權(quán)利要求19所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述片上總線外設(shè) 讀取步驟進(jìn)一步包括: 外設(shè)讀取IO控制器的處理步驟:所述外設(shè)向IO控制器發(fā)出讀取所述外設(shè)可訪問寄存器的讀取請(qǐng)求,所述IO控制器在片上總線發(fā)出請(qǐng)求,并收到返回值后,將所述返回值發(fā)給所述外設(shè); 外設(shè)讀取緩存控制器的處理步驟:緩存控制器根據(jù)從所述片上總線接收到的請(qǐng)求的地址進(jìn)行識(shí)別,如果所述地址為所述外設(shè)可訪問寄存器占用的空間,并且如果所述外設(shè)可訪問寄存器屬于本處理器核,則所述緩存控制器讀取所述外設(shè)可訪問寄存器,并將返回值放入所述片上總線。
22.根據(jù)權(quán)利要求20所述基于外部設(shè)備可訪問寄存器的數(shù)據(jù)傳輸方法,其特征在于,所述片上總線外設(shè)更新步驟進(jìn)一步包括: 外設(shè)更新IO控制器的處理步驟:外設(shè)向IO控制器發(fā)出更新所述外設(shè)可訪問寄存器的更新請(qǐng)求,所述IO控制器在片上總線發(fā)出請(qǐng)求,并收到響應(yīng)后,將更新數(shù)據(jù)置于所述片上總線; 外設(shè)更新緩存控制器的處理步驟:緩存控制器從所述片上總線收到片上總線的請(qǐng)求,根據(jù)所述請(qǐng)求的地址進(jìn)行識(shí)別,如果所述地址為本處理器核的外設(shè)可訪問寄存器地址,所述緩存控制器修改所述外設(shè)可訪問寄存器的地址空間狀態(tài),將收到的所述片上總線請(qǐng)求的返回值發(fā)給目標(biāo)外設(shè)可訪問寄存器,并再次修改所述地址空間狀態(tài)。
【文檔編號(hào)】G06F13/28GK103885908SQ201410076490
【公開日】2014年6月25日 申請(qǐng)日期:2014年3月4日 優(yōu)先權(quán)日:2014年3月4日
【發(fā)明者】阮元, 陳明宇 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1