两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

共享存儲數(shù)據(jù)的處理器和芯片的制作方法

文檔序號:10624744閱讀:206來源:國知局
共享存儲數(shù)據(jù)的處理器和芯片的制作方法
【專利摘要】本發(fā)明實施例提供了一種共享存儲數(shù)據(jù)的處理器和芯片。該處理器包括共享存儲單元、控制器、第一簇和第二簇。其中,第一簇包括第一處理器核,第二簇包括第二處理器核。共享存儲單元位于所述第一簇和所述第二簇之間,且能夠與第一處理器核或第二處理器核通過總線連接,控制器與第一處理器核和第二處理器核通過總線連接,控制器用于控制第一處理器核將第一處理器核生成的數(shù)據(jù)寫入所述共享存儲單元,共享存儲單元用于存儲第一處理器核生成的數(shù)據(jù),控制器還用于控制第二處理器核讀取共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)。本發(fā)明實施例通過增加共享存儲單元和控制器,能夠縮短簇間訪問存儲器中的數(shù)據(jù)的時間。
【專利說明】
共享存儲數(shù)據(jù)的處理器和芯片
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及處理器領(lǐng)域,并且更具體地,涉及一種共享存儲數(shù)據(jù)的處理器和芯片。 【背景技術(shù)】
[0002]自上個世紀(jì)60年代起,處理器性能一直遵循著摩爾定律持續(xù)高速發(fā)展。隨著單芯片晶體管集成度越來越高,芯片功耗、線傳輸延遲、漏電流等問題日益嚴(yán)重,單純依靠提高主頻來提高處理器性能已非常困難,而采用傳統(tǒng)的超標(biāo)量和前瞻技術(shù)開發(fā)指令級并行的回報率也越來越低。開發(fā)更高層次的進程級并行和任務(wù)級并行已成為持續(xù)提升處理器性能的必然趨勢,以多核處理器為代表的先進體系結(jié)構(gòu)已成為當(dāng)前高性能計算領(lǐng)域的主導(dǎo)設(shè)計結(jié)構(gòu)。目前,多核處理器已應(yīng)用于服務(wù)器、筆記本、游戲平臺以及高性能多媒體應(yīng)用等多個領(lǐng)域。
[0003] 多核處理器通常采用簇狀結(jié)構(gòu)。簇狀結(jié)構(gòu)的多核處理器包括多個簇(Cluster),每個Cluster包括至少一個存儲器和多個處理器核。處理器核也被稱為內(nèi)核或核(core),是中央處理器(Central Processing Unit,CPU)最重要的組成部分。CPU所有的計算、接收/ 存儲命令、處理數(shù)據(jù)都由處理器核執(zhí)行。
[0004] 同一簇中的處理器核和存儲器之間可以采用數(shù)據(jù)總線和地址總線相連接,處理器核在同一簇內(nèi)訪問存儲器中的數(shù)據(jù)時,可以通過總線直接訪問。不同簇之間通過片上網(wǎng)絡(luò) (Network on a Chip,NoC)相連接,跨簇訪問存儲器中的數(shù)據(jù)時,需要依賴NoC進行存儲數(shù)據(jù)的搬移。例如,第一簇中的第一處理器核要訪問第二簇中的存儲器存儲的第二處理器核生成的數(shù)據(jù)時,首先,第二簇中的處理器核從第二簇的存儲器中讀取第二處理器核生成的數(shù)據(jù)。接著,第二簇中的處理器核通過NoC向第一簇發(fā)送第二處理器核生成的數(shù)據(jù)。然后, 第一簇將接收的數(shù)據(jù)存儲到第一簇的存儲器中,這樣第一處理器核就可以通過訪問第一簇的存儲器來讀取第二處理器核生成的數(shù)據(jù)。但是,這種跨簇訪問存儲器中的數(shù)據(jù)時,需要進行多次讀寫操作,還需要依賴NoC進行存儲數(shù)據(jù)的搬移,存在較大的網(wǎng)絡(luò)時間延遲。
【發(fā)明內(nèi)容】

[0005] 本發(fā)明實施例提供一種共享存儲數(shù)據(jù)的處理器和芯片,能夠縮短簇間訪問存儲器中的數(shù)據(jù)的時間。
[0006] 第一方面,提供了一種共享存儲數(shù)據(jù)的處理器,包括:共享存儲單元、控制器、第一簇和第二簇;所述第一簇包括至少一個處理器核,所述第二簇包括至少一個處理器核;所述第一簇包括第一處理器核,所述第二簇包括第二處理器核;所述共享存儲單元位于所述第一簇和所述第二簇之間,所述共享存儲單元能夠與所述第一處理器核或所述第二處理器核通過總線連接,所述控制器與所述第一處理器核通過總線連接,所述控制器與所述第二處理器核通過總線連接;所述控制器用于控制所述第一處理器核將所述第一處理器核生成的數(shù)據(jù)寫入所述共享存儲單元;所述共享存儲單元用于存儲所述第一處理器核生成的數(shù)據(jù);所述控制器還用于控制所述第二處理器核讀取所述共享存儲單元存儲的所述第一處理器核生成的數(shù)據(jù)。
[0007]結(jié)合第一方面,在第一方面的一種實現(xiàn)方式中,所述共享存儲單元為單端口單時鐘的存儲器。
[0008]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述處理器還包括第一選擇器和第二選擇器;所述第一選擇器與所述共享存儲單元通過總線連接,所述第一選擇器與所述控制器通過總線連接,所述第二選擇器與所述共享存儲單元通過總線連接,所述第二選擇器與所述控制器通過總線連接;所述第一選擇器用于接收所述控制器發(fā)送的第一控制信號,并根據(jù)所述第一控制信號將所述第一處理器核的時鐘域作為所述共享存儲單元的時鐘域;所述第二選擇器用于接收所述控制器發(fā)送的第二控制信號,并根據(jù)所述第二控制信號將所述共享存儲單元的端口與所述第一處理器核連接。
[0009]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述控制器具體用于接收所述第一處理器核發(fā)送的寫請求信號,所述寫請求信號用于請求將所述第一處理器核生成的數(shù)據(jù)寫入所述共享存儲單元;所述控制器具體用于確定所述第一處理器核能否對所述共享存儲單元進行寫操作;當(dāng)所述第一處理器核能對所述共享存儲單元進行寫操作時,所述控制器用于向所述第一選擇器發(fā)送所述第一控制信號,并向所述第二選擇器發(fā)送所述第二控制信號;所述控制器具體用于向所述第一處理器核發(fā)送第一響應(yīng)ACK信號。
[0010]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述控制器用于檢測忙busy信號,所述busy信號的電平值用于指示所述共享存儲單元的忙閑狀態(tài);所述控制器用于根據(jù)所述共享存儲單元的忙閑狀態(tài),確定所述第一處理器核能否對所述共享存儲單元進行寫操作,其中,當(dāng)所述共享存儲單元的狀態(tài)為閑時,確定所述第一處理器核能對所述共享存儲單元進行寫操作,當(dāng)所述共享存儲單元的狀態(tài)為忙時,確定所述第一處理器核不能對所述共享存儲單元進行寫操作。
[0011]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,當(dāng)所述第一處理器核接收所述控制器發(fā)送的所述第一 ACK信號之后,所述第一處理器核具體用于在所述第一處理器核的時鐘域?qū)⑺龅谝惶幚砥魃傻臄?shù)據(jù)寫入所述共享存儲單元;所述第一處理器核具體用于向所述控制器發(fā)送第一完成信號;所述控制器在接收所述第一處理器核發(fā)送的所述第一完成信號之后,還用于將所述busy信號的電平值設(shè)置為用于指示所述共享存儲單元為閑的狀態(tài)的電平值。
[0012]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述處理器還包括第一異步時鐘同步器和第二異步時鐘同步器;當(dāng)所述第一處理器核和所述控制器所處的時鐘域不同時,所述第一異步時鐘同步器用于實現(xiàn)所述寫請求信號或所述第一完成信號在所述第一處理器核和所述控制器之間的同步;當(dāng)所述第一處理器核和所述控制器所處的時鐘域不同時,所述第二異步時鐘同步器用于實現(xiàn)所述第一 ACK信號在所述第一處理器核和所述控制器之間的同步。
[0013]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述第一選擇器還用于接收所述控制器發(fā)送的第三控制信號,并根據(jù)所述第三控制信號將所述第二處理器核的時鐘域作為所述共享存儲單元的時鐘域;所述第二選擇器還用于接收所述控制器發(fā)送的第四控制信號,并根據(jù)所述第四控制信號將所述共享存儲單元的端口與所述第二處理器核連接。
[0014]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述控制器具體用于接收所述第二處理器核發(fā)送的讀請求信號,所述讀請求信號用于所述處理器核請求讀取所述共享存儲單元存儲的所述第一處理器核生成的數(shù)據(jù);所述控制器具體用于確定所述第二處理器核能否對所述共享存儲單元進行讀操作;當(dāng)所述第二處理器核能對所述共享存儲單元進行讀操作時,所述控制器具體用于向所述第一選擇器發(fā)送所述第三控制信號,并向所述第二選擇器發(fā)送所述第四控制信號;所述控制器具體用于向所述第二處理器核發(fā)送第二響應(yīng)ACK信號。
[0015]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述控制器用于檢測busy信號,并根據(jù)所述busy信號的電平值確定所述共享存儲單元的忙閑狀態(tài);所述控制器用于根據(jù)所述共享存儲單元的忙閑狀態(tài),確定所述第二處理器核能否對所述共享存儲單元進行讀操作,其中,當(dāng)所述共享存儲單元的狀態(tài)為閑時,確定所述第二處理器核能對所述共享存儲單元進行讀操作,當(dāng)所述共享存儲單元的狀態(tài)為忙時,確定所述第二處理器核不能對所述共享存儲單元進行讀操作。
[0016]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,當(dāng)所述第二處理器核接收所述控制器發(fā)送的所述第二ACK信號之后,所述第二處理器核具體用于在所述第二處理器核的時鐘域讀取所述共享存儲單元存儲的所述第一處理器核生成的數(shù)據(jù);所述第二處理器核具體用于向所述控制器發(fā)送第二完成信號;所述控制器在接收所述第二處理器核發(fā)送的所述第二完成信號之后,還用于將所述busy信號的電平值設(shè)置為用于指示所述共享存儲單元為閑的狀態(tài)的電平值。
[0017]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,當(dāng)所述第二處理器核和所述控制器所處的時鐘域不同時,所述第一異步時鐘同步器還用于實現(xiàn)所述讀請求信號或所述第二完成信號在所述第二處理器核和所述控制器之間的同步;當(dāng)所述第二處理器核和所述控制器所處的時鐘域不同時,所述第二異步時鐘同步器還用于實現(xiàn)所述第二ACK信號在所述第二處理器核和所述控制器之間的同步。
[0018]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述第一處理器核為所述第一簇的邊界的處理器核,所述第二處理器核為所述第二簇的邊界的處理器核。
[0019]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述第一異步時鐘同步器為異步先進先出隊列FIFO,所述第二異步時鐘同步器為FIFO或雙寄存器。
[0020]結(jié)合第一方面及其上述實現(xiàn)方式,在第一方面的另一種實現(xiàn)方式中,所述控制器還用于根據(jù)優(yōu)先級順序響應(yīng)不同處理器核對所述共享存儲單元的訪問。
[0021]第二方面,提供了一種芯片,所述芯片包括上述第一方面中任意一個共享存儲數(shù)據(jù)的處理器。
[0022]本發(fā)明實施例通過在多核處理器的簇與簇之間增加通過總線連接的共享存儲單元和控制器,控制器通過控制兩個不同簇中的處理器核分別對共享存儲單元進行寫操作或讀操作,以實現(xiàn)簇間訪問存儲數(shù)據(jù),這樣可以避免傳統(tǒng)的跨簇訪問需要依賴NoC進行存儲數(shù)據(jù)的搬移而帶來較大的網(wǎng)絡(luò)延遲,能夠縮短簇間訪問數(shù)據(jù)的時間?!靖綀D說明】
[0023]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對本發(fā)明實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0024]圖1是本發(fā)明一個實施例的共享存儲數(shù)據(jù)的處理器的框圖。
[0025]圖2是本發(fā)明另一實施例的共享存儲數(shù)據(jù)的處理器的信號交互的示意圖。
[0026]圖3是本發(fā)明一個實施例的共享存儲數(shù)據(jù)的處理器中控制器的示意性電路圖?!揪唧w實施方式】
[0027]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都應(yīng)屬于本發(fā)明保護的范圍。
[0028]圖1是本發(fā)明一個實施例的共享存儲數(shù)據(jù)的處理器的框圖。圖1的共享存儲數(shù)據(jù)的處理器包括第一簇101、第二簇102、共享存儲單元103和控制器104。
[0029]其中,第一簇包括第一處理器核,第二簇包括第二處理器核。共享存儲單元位于第一簇和第二簇之間,共享存儲單元能夠與第一處理器核或第二處理器核通過總線連接??刂破髋c第一處理器核通過總線連接,控制器與第二處理器核通過總線連接。控制器用于控制第一處理器核將第一處理器核生成的數(shù)據(jù)寫入所述共享存儲單元。共享存儲單元用于存儲第一處理器核生成的數(shù)據(jù)??刂破鬟€用于控制第二處理器核讀取共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)。
[0030]本發(fā)明實施例通過在多核處理器的簇與簇之間增加通過總線連接的共享存儲單元和控制器,控制器通過控制兩個不同簇中的處理器核分別對共享存儲單元進行寫操作或讀操作,以實現(xiàn)簇間訪問存儲數(shù)據(jù),這樣可以避免傳統(tǒng)的跨簇訪問需要依賴NoC進行存儲數(shù)據(jù)的搬移而帶來較大的網(wǎng)絡(luò)延遲,能夠縮短簇間訪問數(shù)據(jù)的時間。
[0031]應(yīng)理解,本發(fā)明實施例對每個簇中的處理器核的數(shù)目不做限定,每個簇包括至少一個處理器核即可。例如,圖1中的第一簇還包括第三處理器核、第四處理器核和第五處理器核。第二簇還包括第六處理器核、第七處理器核和第八處理器核。本發(fā)明實施例對不同簇中的處理器核的數(shù)目也不做限定,即不同簇中的處理器核的數(shù)目可以相同,也可以不同。
[0032]第一簇可以包括至少一個處理器核,第二簇可以包括至少一個處理器核。這里,以第一簇包括四個處理器核,第二簇包括四個處理器核為例進行示例性說明。
[0033]應(yīng)理解,本發(fā)明實施例對不同的處理器核和控制器工作的時鐘域不做限定。第一簇中的處理器核、第二簇中的處理器核和控制器三者可以工作在同一時鐘域,也可以工作在不同的時鐘域。另外,當(dāng)?shù)谝淮鼗虻诙匕ㄖ辽賰蓚€處理器核時,同一個簇中的兩個不同的處理器核可以工作在相同的時鐘域,也可以工作在不同的時鐘域,本發(fā)明實施例對此不做限定。例如,第一簇中的第一處理器核和第三處理器核可以工作在相同的時鐘域,也可以工作在不同的時鐘域。
[0034]本發(fā)明實施例中的共享存儲單元可以采用單端口單時鐘的存儲器,與傳統(tǒng)的多端口多時鐘的存儲器相比,可以降低硬件開銷。但本發(fā)明實施例對共享存儲單元的端口數(shù)目不做限定。共享存儲單元可以包括一個端口,也可以包括多個端口。本發(fā)明實施例對共享存儲單元工作的時鐘域數(shù)目也不做限定。共享存儲單元可以為單時鐘的存儲器,也可以為多時鐘的存儲器。
[0035]下面以第一簇中的第一處理器核請求對共享存儲單元進行寫操作為例進行示例性說明。
[0036]共享存儲數(shù)據(jù)的處理器可以包括第一選擇器和第二選擇器。其中,第一選擇器與共享存儲單元通過總線連接,第二選擇器與共享存儲單元通過總線連接。第一選擇器與控制器通過總線連接,第二選擇器與控制器通過總線連接。第一選擇器用于接收控制器發(fā)送的第一控制信號,并根據(jù)第一控制信號將第一處理器核的時鐘域作為共享存儲單元的時鐘域。第二選擇器用于接收控制器發(fā)送的第二控制信號,并根據(jù)第二控制信號將共享存儲單元的端口與第一處理器核連接。
[0037]第一選擇器用于選擇共享存儲單元工作的時鐘域,可以通過第一選擇器對共享存儲單元的時鐘進行切換,使共享存儲單元工作的時鐘域切換至即將與之進行通信的處理器核工作的時鐘域上,以便處理器核和共享存儲單元在相同時鐘域上完成處理器核對共享存儲單元的訪問。
[0038]第二選擇器用于選擇與共享存儲單元的端口連接的處理器核。例如,第一處理器核要訪問共享存儲單元,第二選擇器用于將共享存儲單元的端口與第一處理器核連接,以便第一處理器核對共享存儲單元進行訪問。
[0039]本發(fā)明實施例對第一選擇器不做限定,只要能夠?qū)崿F(xiàn)時鐘切換的裝置都可以作為第一選擇器。本發(fā)明實施例對第二選擇器也不做限定,只要能夠?qū)崿F(xiàn)處理器核切換的裝置都可以作為第二選擇器。例如,第一選擇器可以為開關(guān),第二選擇器也可以為開關(guān)。
[0040]本發(fā)明實施例簡單地使用第一選擇器在不同時鐘之間進行切換,使用第二選擇器在不同處理器核之間進行切換,可以降低硬件開銷,能夠降低電路設(shè)計的難度。
[0041]可選地,在本發(fā)明的一個實施例中,控制器具體用于接收第一處理器核發(fā)送的寫請求信號,寫請求信號用于請求將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元??刂破骶唧w用于確定第一處理器核能否對共享存儲單元進行寫操作。當(dāng)?shù)谝惶幚砥骱四軐蚕泶鎯卧M行寫操作時,控制器用于向第一選擇器發(fā)送第一控制信號,并向第二選擇器發(fā)送第二控制信號??刂破鬟€具體用于向第一處理器核發(fā)送第一響應(yīng)ACK信號。
[0042]控制器通過向第一選擇器發(fā)送第一控制器信號,第一選擇器根據(jù)第一控制器信號選擇第一處理器核工作的時鐘域??刂破魍ㄟ^向第二選擇器發(fā)送第二控制信號,第二選擇器根據(jù)第二控制信號將第一處理器核與共享存儲單元的端口連接。控制器在選擇時鐘域和選擇處理器核完成之后,向第一處理器核發(fā)送第一響應(yīng)信號,以表示第一處理器核可以在所選擇的時鐘域上對共享存儲單元進行訪問。
[0043]控制器用于檢測忙busy信號,busy信號的電平值用于指示共享存儲單元的忙閑狀態(tài)。控制器用于根據(jù)共享存儲單元的忙閑狀態(tài),確定第一處理器核能否對共享存儲單元進行寫操作。其中,當(dāng)共享存儲單元的狀態(tài)為閑時,確定第一處理器核能對共享存儲單元進行寫操作。當(dāng)共享存儲單元的狀態(tài)為忙時,確定第一處理器核不能對共享存儲單元進行寫操作。
[0044]當(dāng)控制器接收信號,并假定busy信號為高電平時,表示共享存儲單元為忙的狀態(tài),此時處理器核不能對共享存儲單元進行訪問。假定busy信號為低電平時,表示共享存儲單元為閑的狀態(tài),此時處理器核可以對共享存儲單元進行訪問。busy信號可以用高電平表示共享存儲單元為忙的狀態(tài),也可以用busy信號為低電平表示共享存儲單元為忙的狀態(tài),只是實現(xiàn)不同的判斷方式,可以設(shè)計不同的電路。本發(fā)明實施例對如何判斷共享存儲單元的忙閑狀態(tài)不做限定。
[0045]第一處理器核接收控制器發(fā)送的所述第一 ACK信號之后,第一處理器核具體用于在第一處理器核的時鐘域?qū)⒌谝惶幚砥魃傻臄?shù)據(jù)寫入共享存儲單元。第一處理器核還用于在將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元之后,向所述控制器發(fā)送第一完成信號??刂破髟诮邮盏谝惶幚砥骱税l(fā)送的第一完成信號之后,還用于將busy信號的電平值設(shè)置為用于指示共享存儲單元為閑的狀態(tài)的電平值。
[0046]控制器接收第一處理器核發(fā)送的完成信號,表示第一處理器核完成對共享存儲單元的訪問。控制器將busy信號指示為共享存儲單元為閑的狀態(tài),以便控制器接收其它請求。
[0047]處理器還包括第一異步時鐘同步器和第二異步時鐘同步器。當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,第一異步時鐘同步器用于實現(xiàn)寫請求信號或第一完成信號在第一處理器核和控制器之間的同步。當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,第二異步時鐘同步器用于實現(xiàn)第一 ACK信號在第一處理器核和控制器之間的同步。
[0048]當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,在第一處理器核向控制器發(fā)送寫請求信號或完成信號之后,第一異步時鐘同步器接收寫請求信號或完成信號,將該寫請求信號或完成信號從第一處理器核的時鐘域調(diào)節(jié)到控制器的時鐘域上。當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,在控制器向第一處理器核發(fā)送第一 ACK信號之后,第二異步時鐘同步器接收該第一 ACK信號,將該第一 ACK信號從控制器的時鐘域調(diào)節(jié)到第一處理器核的時鐘域。
[0049]第一處理器核在收到控制器發(fā)送的第一 ACK信號之后,可以在控制器所選擇的時鐘域上對共享存儲單元進行訪問,將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元。
[0050]上面介紹了第一簇中的第一處理器核請求對共享存儲單元進行寫操作的過程。下面以第二簇中的第二處理器核請求對第一簇中的第一處理器核生成的數(shù)據(jù)進行訪問為例進行示例性說明。第一處理器核完成對共享存儲單元的訪問(即在第一處理器核將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元)之后,第二處理器核可以向共享存儲單元發(fā)起讀數(shù)據(jù)的請求。
[0051]在本發(fā)明的一個實施例中,第一選擇器還用于接收控制器發(fā)送的第三控制信號, 并根據(jù)第三控制信號將第二處理器核的時鐘域作為共享存儲單元的時鐘域。第二選擇器還用于接收控制器發(fā)送的第四控制信號,并根據(jù)第四控制信號將共享存儲單元的端口與第二處理器核連接。
[0052]控制器具體用于接收第二處理器核發(fā)送的讀請求信號,讀請求信號用于處理器核請求讀取共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)??刂破骶唧w用于確定第二處理器核能否對共享存儲單元進行讀操作。當(dāng)?shù)诙幚砥骱四軐蚕泶鎯卧M行讀操作時,控制器具體用于向第一選擇器發(fā)送第三控制信號,并向第二選擇器發(fā)送第四控制信號??刂破骶唧w用于向第二處理器核發(fā)送第二響應(yīng)ACK信號。
[0053]控制器用于檢測busy信號,并根據(jù)busy信號的電平值確定共享存儲單元的忙閑狀態(tài)??刂破饔糜诟鶕?jù)共享存儲單元的忙閑狀態(tài),確定第二處理器核能否對共享存儲單元進行讀操作。其中,當(dāng)共享存儲單元的狀態(tài)為閑時,確定第二處理器核能對共享存儲單元進行讀操作,當(dāng)共享存儲單元的狀態(tài)為忙時,確定第二處理器核不能對共享存儲單元進行讀操作。
[0054]當(dāng)?shù)诙幚砥骱私邮湛刂破靼l(fā)送的所述第二ACK信號之后,第二處理器核具體用于在第二處理器核的時鐘域讀取共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)。第二處理器核具體用于向控制器發(fā)送第二完成信號。控制器在接收第二處理器核發(fā)送的第二完成信號之后,還用于將busy信號的電平值設(shè)置為用于指示共享存儲單元為閑的狀態(tài)的電平值。
[0055]控制器將busy信號的電平值設(shè)置為用于指示共享存儲單元為閑的狀態(tài)的電平值后,共享存儲單元可以接受處理器核的訪問。這時,如果存在處理器核向控制器發(fā)送對共享存儲單元進行訪問的請求,這時控制器檢測busy信號時,可以得到busy信號為低電平,處理器核可以對共享存儲單元進行訪問。
[0056]當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,第一異步時鐘同步器還用于實現(xiàn)讀請求信號或第二完成信號在第一處理器核和所述控制器之間的同步。當(dāng)?shù)谝惶幚砥骱撕退隹刂破魉幍臅r鐘域不同時,第二異步時鐘同步器還用于實現(xiàn)第二ACK信號在第一處理器核和所述控制器之間的同步。
[0057]本發(fā)明實施例中通過增加異步時鐘同步器可以在時鐘域不同的兩個簇之間實現(xiàn)對數(shù)據(jù)的訪問。
[0058]本發(fā)明實施例對異步時鐘同步器不做限定。只要能夠?qū)崿F(xiàn)信號在處理器核和控制器之間的同步的部件都在本發(fā)明的保護范圍之內(nèi)。例如,第一異步時鐘同步器可以為異步先進先出隊列(first-1n-first-out,F(xiàn)IFO),第二異步時鐘同步器為FIFO或雙寄存器。
[0059]當(dāng)共享存儲單元采用單端口的存儲器時,每個時刻只能有一個處理器核對共享存儲單元進行訪問。這時,如果控制器接收到多個處理器核發(fā)送的訪問請求時,可以按照一定的優(yōu)先級順序控制處理器核對共享存儲單元的訪問。這里的優(yōu)先級順序可以由控制器預(yù)先設(shè)定,也可以由控制器動態(tài)配置得到。例如,優(yōu)先級順序可以是輪轉(zhuǎn)優(yōu)先級,可以是一個固定的優(yōu)先級,可以是根據(jù)處理器核對共享存儲單元訪問的時間來確定,還可以是動態(tài)配置的優(yōu)先級策略。本發(fā)明實施例對如何確定優(yōu)先級順序不做限定。
[0060]本發(fā)明實施例可以用于第一簇中的處理器核訪問任一個處理器核存儲在共享存儲單元中的數(shù)據(jù)。本發(fā)明實施例的共享存儲系統(tǒng)可以用于簇間訪問,也可以用于簇內(nèi)訪問, 本發(fā)明實施例對此不做限定。
[0061]本發(fā)明實施例對共享存儲數(shù)據(jù)的處理器不做限定。例如,共享存儲數(shù)據(jù)的處理器可以為共享存儲數(shù)據(jù)的多核處理器。應(yīng)理解,其他跨異步時鐘域的共享存儲數(shù)據(jù)的處理器都在本發(fā)明的保護范圍之內(nèi)。
[0062]在本發(fā)明的一個實施例中,第一處理器核可以為第一簇的邊界的處理器核。所述第二處理器核可以為第二簇的邊界的處理器核。第一簇的邊界的處理器核可以為第一簇中與第二簇的距離較近的處理器核。同理,第二簇的邊界的處理器核可以為第二簇中與第一簇的距離較近的處理器核。
[0063]多核處理器中,相鄰簇的鄰近處理器核之間關(guān)系緊密,數(shù)據(jù)通信比較頻繁,采用傳統(tǒng)的簇間訪問存儲器的方式,會對NoC產(chǎn)生較大的壓力。本發(fā)明實施例可以通過共享存儲單元實現(xiàn)不同處理器核之間的數(shù)據(jù)共享,縮短處理器核對存儲器的訪問時間,可以避免依賴NoC進行的數(shù)據(jù)搬移,尤其是可以減小頻繁的簇邊界上的處理器核訪問存儲器帶來的額外開銷。
[0064] 本發(fā)明實施例中與控制器相連接的總線可以為控制總線。與共享存儲單元相連接的總線可以為數(shù)據(jù)總線和地址總線。本發(fā)明實施例對此不做限定。
[0065] 應(yīng)理解,本發(fā)明實施例對處理器中簇的數(shù)目不做限定。例如,處理器還可以包括第一簇和第二簇之外的其他簇。本發(fā)明實施例以第一簇訪問共享存儲單元存儲的第二簇中的第二處理器核生成的數(shù)據(jù)為例進行示例性說明。同理,也可以是第二簇也可以訪問共享存儲存儲的第一簇中的第一處理器核生成的數(shù)據(jù),具體方法類似,在此不再一一贅述。
[0066]圖2是本發(fā)明另一實施例的共享存儲數(shù)據(jù)的處理器的信號交互的示意圖。圖2的共享存儲數(shù)據(jù)的處理器包括第一簇201、控制器202、共享存儲單元203、第二簇204、第一選擇器205和第二選擇器206。
[0067] 在本發(fā)明的一個實施例中,共享存儲單元可以存儲處理器核生成的數(shù)據(jù)。圖2中僅畫出第一簇中的第一處理器核與控制器之間的信令交互,以及第二簇中的第二處理器核與控制器之間的信令交互。其他處理器核與控制器之間也可以由類似第一處理器核或第二處理器核的信令交互,為避免混淆,圖2中不再一一畫出??刂破骱吞幚砥骱丝梢怨ぷ髟谙嗤臅r鐘域,也可以工作在不同的時鐘域,本發(fā)明實施例對此不做限定。
[0068]下面結(jié)合具體例子詳細(xì)介紹如何通過控制器實現(xiàn)處理器核對共享存儲單元的訪問。當(dāng)?shù)诙刂械牡诙幚砥骱苏埱髮Φ谝淮刂械牡谝惶幚砥骱松傻臄?shù)據(jù)進行訪問時, 首先第一處理器核對共享存儲單元進行寫操作,將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元中。共享存儲單元存儲第一處理器核生成的數(shù)據(jù)。然后,第二處理器核對共享存儲單元進行讀操作,從共享存儲單元中讀取第一處理器核生成的數(shù)據(jù)。
[0069] 假定第一處理器核和控制器工作在相同的時鐘域,第二處理器核和控制器工作在不同的時鐘域。下面以第一處理器核和控制器工作在時鐘域〇,第二處理器核工作在時鐘域 1為例。下面分別以第一簇中的第一處理器核和第二簇中的第二處理器核對共享存儲單元進行訪問為例進行示例性說明。
[0070] 假定第一處理器核和控制器可以工作在相同的時鐘域。例如,第一處理器核和控制器都工作在時鐘域0??刂破骺梢钥刂频谝惶幚砥骱?,將第一處理器核生成的數(shù)據(jù)存儲到共享存儲單元中。下面詳細(xì)介紹第一處理器核如何實現(xiàn)對共享存儲單元進行寫操作的過程。
[0071] 第一處理器核用于向控制器發(fā)送寫請求信號,該寫請求信號用于請求將第一處理器核的數(shù)據(jù)寫入共享存儲單元。
[0072] 控制器接收第一處理器核發(fā)送的寫請求信號,并根據(jù)寫請求信號確定第一處理器核能否對共享存儲單元進行寫操作。當(dāng)控制器確定第一處理器核能對共享存儲單元進行寫操作時,控制器用于向第一選擇器發(fā)送第一控制信號,并向第二選擇器發(fā)送第二控制信號。 控制器還具體用于向第一處理器核發(fā)送第一響應(yīng)ACK信號。
[0073] 本發(fā)明實施例對控制器如何確定第一處理器核能否對共享存儲單元進行寫操作不做限定。例如,控制器可以通過檢測忙busy信號,然后通過busy信號的電平值高低來指示共享存儲單元的忙閑狀態(tài)。這里,busy信號可以是控制器中存儲的一個信號。當(dāng)控制器中已有請求信號時,控制器可以通過一定的邏輯門電路將busy信號的電平值改變,以不同范圍的電平值來指示共享存儲單元的忙閑狀態(tài)??蛇x地,可以用busy信號為高電平來指示共享存儲單元為忙的狀態(tài),用busy信號為低電平來指示共享存儲單元為閑的狀態(tài)。相反, 也可以用busy信號為低電平來指示共享存儲單元為忙的狀態(tài),用busy信號為高電平來指示共享存儲單元為閑的狀態(tài)。本發(fā)明實施例對高電平、低電平的具體電平數(shù)值范圍不做限定。例如,大于或等于電平閾值的電平值可以認(rèn)為是高電平,小于電平閾值的電平值可以認(rèn)為是低電平。
[0074]控制器可以根據(jù)共享存儲單元的忙閑狀態(tài),確定第一處理器核能否對共享存儲單元進行寫操作。其中,當(dāng)共享存儲單元的狀態(tài)為閑時,第一處理器核可以對共享存儲單元進行寫操作。當(dāng)共享存儲單元的狀態(tài)為忙時,第一處理器核不能對所述共享存儲單元進行寫操作。
[0075]具體地,當(dāng)控制器收到處理器核發(fā)送的請求信號并且當(dāng)共享存儲單元為閑時,處理器核可以對共享存儲單元進行訪問。當(dāng)控制器中沒有請求信號或者共享存儲單元為忙時,處理器核不能對共享存儲單元進行訪問。
[0076]當(dāng)控制器確定第一處理器核能對共享存儲單元進行寫操作時,控制器用于向第一選擇器發(fā)送第一控制信號。第一選擇器可以根據(jù)第一控制信號選擇共享存儲單元工作的時鐘域。例如,本發(fā)明實施例中第一處理器核請求對共享存儲單元進行寫操作,這時,將第一處理器核的時鐘域作為所述共享存儲單元的時鐘域。在已假設(shè)第一處理器核工作在時鐘域 0,那么這時將時鐘域0作為共享存儲單元的時鐘域。這樣可以使得第一處理器核和共享存儲單元處理相同的時鐘域上,以便二者在相同的時鐘域上實現(xiàn)第一處理器核對共享存儲單元的寫操作。
[0077]當(dāng)控制器確定第一處理器核能對共享存儲單元進行寫操作時,控制器用于向第二選擇器發(fā)送第二控制信號。第二選擇器可以根據(jù)第二控制信號選擇與共享存儲單元連接的處理器核。例如,本發(fā)明實施例中第一處理器核請求對共享存儲單元進行寫操作,這時,將第一處理器核與共享存儲單元的端口連接。
[0078]控制器通過控制第一選擇器選擇共享存儲單元工作的時鐘域,通過控制第二選擇器確選擇與共享存儲單元的端口連接的處理器核。以便在第一處理器核與共享存儲單元連接之后,二者在相同的時鐘域(例如,時鐘域〇)實現(xiàn)第一處理器核對共享存儲單元的寫操作。
[0079]控制器向第一處理器核發(fā)送響應(yīng)ACK信號(例如,第一響應(yīng)信號)。第一處理器核接收第一響應(yīng)信號之后,可以將第一處理器核生成的數(shù)據(jù)寫入共享存儲單元。然后,第一處理器核向控制器發(fā)送完成信號(例如,第一完成信號),表示第一處理器核完成對共享存儲單元的寫操作。
[0080]控制器接收第一處理器核發(fā)送的完成信號之后,將busy信號用于指示共享存儲單元為忙改變?yōu)橛糜谥甘竟蚕泶鎯卧獮殚e。例如,可以通過將busy信號的高電平置為低電平。
[0081]上述已假定第一處理器核和控制器處在相同的時鐘域。當(dāng)?shù)谝惶幚砥骱撕涂刂破魉幍臅r鐘域不同時,處理器還可以包括第一異步時鐘同步器和第二異步時鐘同步器。其中,第一異步時鐘同步器用來實現(xiàn)寫請求信號或第一完成信號在第一處理器核和控制器之間的同步。第二異步時鐘同步器用來實現(xiàn)第一響應(yīng)信號在第一處理器核和控制器之間的同步。
[0082] 假定第二處理器核和控制器工作在不同的時鐘域。例如,控制器工作在時鐘域0, 第二處理器核工作在時鐘域1??刂破骺梢钥刂频诙幚砥骱耍沟玫诙幚砥骱藦墓蚕泶鎯?shù)據(jù)單元中讀取第一處理器核生成的數(shù)據(jù)。下面詳細(xì)介紹第二處理器核如果實現(xiàn)對共享存儲單元進行讀操作的過程。
[0083]與上述第一處理器核不同的是,第二處理器核和控制器工作在不同的時鐘域。當(dāng)?shù)诙幚砥骱撕涂刂破鞴ぷ髟诓煌臅r鐘域時,第二處理器核和控制器之間存在信號的發(fā)送或接收,首先要在傳輸信號之前實現(xiàn)信號在第二處理器核和控制器之間的同步。
[0084] 第二處理器核用于向控制器發(fā)送讀請求信號之前,首先通過第一異步時鐘同步器,實現(xiàn)讀請求信號在第二處理器核和控制器之間的同步。例如,可以將讀請求信號的時鐘域由第二處理器核的時鐘域調(diào)節(jié)至控制器工作的時鐘域上。
[0085]同步后的讀請求信號進行控制器中,該讀請求信號用于請求將從共享存儲單元中讀取第一處理器核生成的數(shù)據(jù)。
[0086] 控制器接收第二處理器核發(fā)送的讀請求信號,并根據(jù)讀請求信號確定第二處理器核能否對共享存儲單元進行讀操作。當(dāng)控制器確定第二處理器核能對共享存儲單元進行讀操作時,控制器用于向第一選擇器發(fā)送第三控制信號,并向第二選擇器發(fā)送第四控制信號。 控制器還具體用于向第二處理器核發(fā)送第二響應(yīng)ACK信號。
[0087] 本發(fā)明實施例對控制器如何確定第二處理器核能否對共享存儲單元進行讀操作不做限定。例如,控制器可以通過檢測busy信號,通過busy信號的電平值高低來指示共享存儲單元的忙閑狀態(tài)。本發(fā)明實施例中如何確定第二處理器核能否對共享存儲單元進行讀操作可以與上述如何確定第一處理器核能否對共享存儲單元進行寫操作的確定方法類似, 在此不再詳細(xì)贅述。
[0088]當(dāng)所述共享存儲單元的狀態(tài)為閑時,確定第二處理器核能對共享存儲單元進行讀操作。當(dāng)共享存儲單元的狀態(tài)為忙時,確定第二處理器核不能對共享存儲單元進行讀操作。
[0089]具體地,當(dāng)控制器收到處理器核發(fā)送的請求信號并且當(dāng)共享存儲單元為閑時,處理器核可以對共享存儲單元進行訪問。當(dāng)控制器中沒有請求信號或者共享存儲單元為忙時,處理器核不能對共享存儲單元進行訪問。
[0090]當(dāng)控制器確定第二處理器核能訪問共享存儲單元(即能對共享存儲單元進行讀操作)時,控制器控制共享存儲單元與第二處理器核連接,并將共享存儲單元的時鐘域調(diào)節(jié)到與第二處理器核相同的時鐘域上。例如,在本發(fā)明實施例中,控制器可以用于控制第一選擇器將共享存儲單元工作的時鐘域選擇為第二處理器核的時鐘域。上述第二處理器核工作在時鐘域1,此時,將共享存儲單元的時鐘域調(diào)節(jié)至?xí)r鐘域1??刂破鬟€可以用于控制第二選擇器選擇與共享存儲單元的端口連接的處理器核。第二處理器核請求讀取共享存儲單元中的第一控制器核生成的數(shù)據(jù),這時選擇第二處理器核與共享存儲單元的端口連接。
[0091] 控制器通過控制第一選擇器選擇共享存儲單元工作的時鐘域,通過控制第二選擇器確選擇與共享存儲單元的端口連接的處理器核。以便在第二處理器核與共享存儲單元連接之后,二者在相同的時鐘域(例如,時鐘域1)實現(xiàn)第二處理器核對共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)進行讀操作。
[0092]控制器向第二處理器核發(fā)送響應(yīng)ACK信號(例如,第二響應(yīng)信號),由于第二處理器核和控制器所處的時鐘域不同,所以,第二響應(yīng)信號首先經(jīng)過第二異步時鐘同步器實現(xiàn)第二響應(yīng)信號在控制器和第二處理器核之間的同步。
[0093]控制器用于接收同步后的第二響應(yīng)信號,表示第二處理器核可以對共享存儲單元進行訪問。第二處理器核接收第二響應(yīng)信號之后,可以從共享存儲單元中讀取存儲的第一處理器核生成的數(shù)據(jù)。第二處理器核可以在時鐘域1對共享存儲單元進行訪問,即在時鐘域1讀取共享存儲單元存儲的第一處理器核生成的數(shù)據(jù)。
[0094]在第二處理器核完成讀取第一處理器核生成的數(shù)據(jù)之后,第二處理器核向控制器發(fā)送完成信號(例如,第二完成信號),第二完成信號首先經(jīng)過第一異步時鐘同步器,實現(xiàn)第二完成信號在控制器和第二處理器核之間的同步。
[0095]控制器接收同步后的第二完成信號,表示第二處理器核完成對共享存儲單元的讀操作。控制器接收第二處理器核發(fā)送的第二完成信號之后,將busy信號用于指示共享存儲單元為忙的狀態(tài)改變?yōu)橛糜谥甘竟蚕泶鎯卧獮殚e的狀態(tài)。例如,可以通過將busy信號為高電平置為低電平。此時如果控制器檢測busy信號時,可以得到busy信號為低電平,說明此時共享存儲單元可以接受處理器核的訪問。
[0096]第二處理器核和控制器所處的時鐘域不同,那么可以通過第一異步時鐘同步器和第二異步時鐘同步器實現(xiàn)信號在第二處理器核和控制器之間的同步。其中,第一異步時鐘同步器用來實現(xiàn)讀請求信號或第二完成信號在第一處理器核和控制器之間的同步。第二異步時鐘同步器用來實現(xiàn)第二響應(yīng)信號在第二處理器核和控制器之間的同步。
[0097]本發(fā)明實施例對第一處理器核在第一簇中的位置不做限定。本發(fā)明實施例對第二處理器核在第二簇中的位置不做限定。第一處理器核可以為第一簇中的任意一個處理器核,第二處理器核可以為第二簇中的任意一個處理器核。例如,第一處理器核可以為第一簇的邊界的處理器核,第二處理器核可以為第二簇的邊界的處理器核。第一簇的邊界的處理器核可以是與第二簇距離較近的處理器核。相鄰兩個簇的簇邊界的兩個處理器核數(shù)據(jù)通信比較頻繁,使用本發(fā)明實施例中的共享存儲單元來實現(xiàn)對數(shù)據(jù)的跨簇訪問,可以減小對片上網(wǎng)絡(luò)產(chǎn)生的壓力,降低通信的誤碼率。
[0098]本發(fā)明實施例中對第一異步時鐘器和第二異步時鐘器不做限定。只要能夠?qū)崿F(xiàn)信號在處理器核和控制器之間的同步的部件都在本發(fā)明的保護范圍之內(nèi)。例如,第一異步時鐘同步器可以為異步先進先出隊列FIFO。第二異步時鐘同步器可以為FIFO或雙寄存器。
[0099]共享存儲單元可以為單端口存儲器。端口可以與進行訪問的處理器核連接,那么, 同一時刻只能有一個處理器核對共享存儲單元進行訪問。當(dāng)同一時刻有多個處理器核要求訪問共享存儲單元時,控制器可以按照一定的優(yōu)先級順序?qū)Σ煌幚砥骱说脑L問請求做出響應(yīng)??刂破骺梢灶A(yù)先設(shè)定優(yōu)先級順序,也可以通過動態(tài)配置得到優(yōu)先級順序。例如,這里的優(yōu)先級順序可以為固定的優(yōu)先級,可以為輪轉(zhuǎn)優(yōu)先級,也可以為根據(jù)一定的優(yōu)先級策略確定的優(yōu)先級。本發(fā)明實施例對優(yōu)先級順序不做限定。
[0100]本發(fā)明實施例中的其他處理器核對共享存儲單元的寫操作訪問可以同上述第一處理器核工作的具體過程。其他處理器核對共享存儲單元的讀操作訪問可以同上述第二處理器核工作的具體過程。當(dāng)處理器核和控制器工作在不同的時鐘域上時,處理器核和控制器之間信號的傳輸可以同上述第二處理器核和控制器之間信號的傳輸,通過第一異步時鐘同步器或第二異步時鐘同步器實現(xiàn)信號在處理器核和控制器之間的同步。在此不再詳細(xì)--贅述。
[0101]圖3是本發(fā)明一個實施例的共享存儲數(shù)據(jù)的處理器中控制器的示意性電路圖。
[0102]圖3的虛框301中的邏輯門電路用于對busy信號進行處理,D類型觸發(fā)器307用于存儲處理后的busy信號。當(dāng)控制器接收處理器核發(fā)送的信號時,通過邏輯門電路301可以將busy信號設(shè)置為指示共享存儲單元為忙的狀態(tài)。這里,控制器接收的處理器核發(fā)送的信號可以為讀請求信號或?qū)懻埱笮盘???刂破骺梢酝ㄟ^邏輯門電路302或303判斷當(dāng)前發(fā)起信號的處理器核能否對共享存儲單元進行訪問。當(dāng)busy信號指示共享存儲單元為忙的狀態(tài)時,處理器核不能對共享存儲單元進行訪問。當(dāng)控制器接收請求信號,且busy信號指示共享存儲單元為閑的狀態(tài),處理器核可以對共享存儲單元進行訪問??梢杂胋usy信號的高低不同的電平值來指示共享存儲單元的忙閑狀態(tài)。busy信號可以用高電平來指示共享存儲單元為忙的狀態(tài),也可以用低電平來指示共享存儲單元為忙的狀態(tài),只是實現(xiàn)不同的判斷方式,可以設(shè)計不同的電路。本發(fā)明實施例對如何判斷共享存儲單元的忙閑狀態(tài)不做限定。D類型觸發(fā)器308或309分別可以存儲邏輯門電路302或303的判斷結(jié)果,并將判斷結(jié)果輸出到發(fā)起請求信號的處理器核中。邏輯門電路304用來確定處理器核所工作的時鐘域,并將處理器核的時鐘域?qū)懙紻類型觸發(fā)器310中,D類型觸發(fā)器310用于存儲該處理器核的時鐘域并將該時鐘域輸入選擇器311中。
[0103]下面以帶后綴0的信號表示工作在時鐘域0(即clk_0),例如,讀請求信號rd_ req_0、寫請求信號wt_req_0和完成信號commit_0都表示工作在時鐘域0。帶后綴1的信號表示工作在時鐘域1 (即clk_l),例如,讀請求信號rd_req_l、寫請求信號wt_req_l和完成信號commit_l都表示工作在時鐘域1〇
[0104]應(yīng)理解,本發(fā)明實施例對控制器的具體電路不做限定。圖3的電路圖是本發(fā)明實施例中可以實現(xiàn)控制器的功能的示例性說明,但并不對本發(fā)明的保護范圍構(gòu)成限定。
[0105]下面結(jié)合圖3詳細(xì)說明處理器核如何通過如圖3的電路實現(xiàn)對共享存儲單元的訪問操作。假設(shè)處理器核2和控制器工作在相同的時鐘域,處理器核4和控制器工作在不同的時鐘域。下面以處理器核2和處理器核4為例進行詳細(xì)說明。
[0106]下面以busy信號為高電平來指示共享存儲單元為忙的狀態(tài),busy信號為低電平來指示共享存儲單元為閑的狀態(tài)。本發(fā)明的實施例僅以此為例進行說明,但并不對本發(fā)明的保護范圍構(gòu)成限定。
[0107]假定處理器核2工作在時鐘域0,控制器也工作在時鐘域0。處理器核2向控制器發(fā)送讀請求信號rd_req_0,經(jīng)過301可以將busy信號置為高電平,可以用來指示共享存儲單元為忙的狀態(tài),D類型觸發(fā)器307可以存儲busy信號。讀請求信號rd_req_0和busy信號進入電路302中,邏輯門電路302根據(jù)請求信號rd_req_0和busy信號的電平高低判斷處理器核2能否對共享存儲單元進行訪問。假設(shè)busy信號為高電平時,表示共享存儲單元處于忙的狀態(tài),那么處理器核2當(dāng)前不能對共享存儲單元進行訪問。當(dāng)檢測busy信號為低電平時,表示共享存儲單元為閑的狀態(tài),那么處理器核2可以對共享存儲單元進行訪問。當(dāng)處理器核2可以對共享存儲單元進行訪問時,D類型觸發(fā)器308用于存儲響應(yīng)ack_0信號,當(dāng)ack_0信號的電平值為高電平時,表示處理器核2可以對共享存儲單元進行訪問。D類型觸發(fā)器308的接口與處理器核2連接,可以將ack_0信號輸出到處理器核2中。當(dāng)ack_0 信號的電平值為高電平時,處理器核2可以對共享存儲單元進行讀操作。
[0108]本發(fā)明實施例對高電平、低電平的具體數(shù)值不做限定。例如,可以預(yù)設(shè)一個電平門限值,當(dāng)檢測busy信號的電平值高于電平門限值時,確定該busy信號為高電平的信號。
[0109]另外,讀請求信號rd_req_0經(jīng)過或門305進入邏輯門電路304中。邏輯門電路 304用來確定處理器核2所工作的時鐘域,并將確定結(jié)果(即處理器核2的時鐘域)寫到D 類型觸發(fā)器310中,D類型觸發(fā)器310用于存儲確定結(jié)果并將確定結(jié)果輸入選擇器311中。 選擇器311將共享存儲單元的時鐘域選擇為確定結(jié)果中處理器核2的時鐘域。上面已假設(shè)處理器核2所工作的時鐘域為0,那么此時第一選擇器311選擇clk_0。這樣,處理器核2 和共享存儲單元處在同一個時鐘域上,處理器核2可以在同一時鐘域中對共享存儲單元進行訪問。
[0110]處理器核2的寫請求信號wt_req_0經(jīng)過電路圖的流程和上述讀請求信號的具體流程rd_req_0相同,在此不再贅述。
[0111]處理器核2在完成對共享存儲單元的訪問操作之后,處理器核2向控制器發(fā)送完成信號C〇mmit_0,完成信號進入邏輯門電路301中,表示處理器核2已經(jīng)完成對共享存儲單元的訪問。共享存儲單元接收處理器核2發(fā)送的完成信號之后,將busy信號置為低電平, 以指示共享存儲單元為閑的狀態(tài),以便后續(xù)處理器核對共享存儲單元的訪問。
[0112]假定處理器核4工作在時鐘域1,控制器工作在時鐘域0。處理器核4在向控制器發(fā)送寫請求信號wt_req_l之后,寫請求信號wt_req_l首先經(jīng)過異步時鐘同步器。因為處理器核4和控制器所工作的時鐘域不同,所以,首先實現(xiàn)信號在控制器和處理器核4之間的同步。控制器接收寫請求信號之后,邏輯門電路301將busy信號指示為共享存儲單元為忙的狀態(tài),D類型觸發(fā)器307存儲busy信號。寫請求信號wt_req_l和busy信號進入邏輯門電路303判斷處理器核4是否可以訪問共享存儲單元。在邏輯門電路303的判斷結(jié)果為處理器核4能訪問共享存儲單元時,D類型觸發(fā)器309存儲該判斷結(jié)果ack_l (即處理器核4 可以對共享存儲單元進行訪問),并將判斷結(jié)果ack_l輸出到異步時鐘同步器312中。當(dāng)異步時鐘同步器312接收D觸發(fā)器輸出的判斷結(jié)果ack_l時,異步時鐘同步器301與處理器核4連接。異步時鐘同步器312用來實現(xiàn)響應(yīng)信號ack_l在控制器和處理器核4之間的同步,然后將判斷結(jié)果ack_l輸出到處理器核4中。
[0113]另外,寫請求信號wt_req_l經(jīng)過或門306進入邏輯門電路304中。邏輯門電路 304用來確定處理器核4所工作的時鐘域,并將確定結(jié)果(即處理器核4的時鐘域)寫到D 類型觸發(fā)器310中,D類型觸發(fā)器310用于存儲確定結(jié)果并將確定結(jié)果輸入選擇器311中。 選擇器311將共享存儲單元的時鐘域選擇為確定結(jié)果中處理器核4的時鐘域。上面已假設(shè)處理器核4所工作的時鐘域為1,那么此時第一選擇器311選擇clk_l。這樣,處理器核4 和共享存儲單元處在同一個時鐘域上,處理器核4可以在同一時鐘域中對共享存儲單元進行訪問。
[0114]應(yīng)理解,本發(fā)明實施例中D觸發(fā)器用來存儲各種信號,但本發(fā)明并不限定于此。圖 3中的電路圖是可以實現(xiàn)本發(fā)明的控制器功能的一個例子,但本發(fā)明對控制器的具體實現(xiàn)電路并不限定于此。
[0115]處理器核4的讀請求信號rd_req_l經(jīng)過電路圖的流程和上述寫請求信號的具體流程wt_req_l相同,在此不再贅述。
[0116]處理器核4在完成對共享存儲單元的訪問操作之后,處理器核4向控制器發(fā)送完成信號commit」。由于處理器核4和控制器二者所工作的時鐘域不同,完成信號commit」 首先通過異步時鐘同步器實現(xiàn)完成信號commit」在控制器和處理器核4之間的同步。完成信號commit」進入邏輯門電路301中,表示處理器核4已經(jīng)完成對共享存儲單元的訪問。 共享存儲單元接收處理器核4發(fā)送的完成信號之后,將busy信號設(shè)置為用于指示共享存儲單元為閑的狀態(tài),以便后續(xù)處理器核對共享存儲單元的訪問。
[0117]本發(fā)明的實施例可以通過事務(wù)原語來包裝處理器核對共享存儲單元的訪問操作。 例如,上文提到的寫請求信號可以用寫請求指令writejequest來包裝,讀請求信號可以用寫請求指令read_request來包裝,完成信號可以用事務(wù)提交指令commit來包裝。其中, commit可以在寫操作事務(wù)執(zhí)行完成時使用,也可以在讀操作事務(wù)執(zhí)行完成時使用,以釋放對共享存儲單元的占用,以便后續(xù)處理器核對共享存儲單元有訪問時,可以檢測得到busy 信號為閑,這樣處理器核就可以對共享存儲單元進行訪問。本發(fā)明實施例對事務(wù)原語的具體形式不做限定。
[0118]本發(fā)明實施例還提供一種芯片,該芯片包括前述任一種共享存儲數(shù)據(jù)的處理器。 處理器的具體架構(gòu)和實現(xiàn)電路圖可以如前面圖1、圖2和圖3所述,在此不再一一贅述。
[0119]應(yīng)理解,說明書通篇中提到的“一個實施例”或“一實施例”意味著與實施例有關(guān)的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因此,在整個說明書各處出現(xiàn)的 “在一個實施例中”或“在一實施例中”未必一定指相同的實施例。此外,這些特定的特征、 結(jié)構(gòu)或特性可以任意適合的方式結(jié)合在一個或多個實施例中。
[0120]應(yīng)理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實施例的實施過程構(gòu)成任何限定。
[0121]應(yīng)理解,在本發(fā)明實施例中,“與A相應(yīng)的B”表示B與A相關(guān)聯(lián),根據(jù)A可以確定 B。但還應(yīng)理解,根據(jù)A確定B并不意味著僅僅根據(jù)A確定B,還可以根據(jù)A和/或其它信息確定B。
[0122]應(yīng)理解,本文中術(shù)語“和/或”,僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。
[0123]本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例中描述的各方法步驟和單元,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各實施例的步驟及組成。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。本領(lǐng)域普通技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
[0124]結(jié)合本文中所公開的實施例描述的方法或步驟可以用硬件、處理器執(zhí)行的軟件程序,或者二者的結(jié)合來實施。軟件程序可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器 (ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
[0125] 盡管通過參考附圖并結(jié)合優(yōu)選實施例的方式對本發(fā)明進行了詳細(xì)描述,但本發(fā)明并不限于此。在不脫離本發(fā)明的精神和實質(zhì)的前提下,本領(lǐng)域普通技術(shù)人員可以對本發(fā)明的實施例進行各種等效的修改或替換,而這些修改或替換都應(yīng)在本發(fā)明的涵蓋范圍內(nèi)。
【主權(quán)項】
1.一種共享存儲數(shù)據(jù)的處理器,其特征在于,包括:共享存儲單元、控制器、第一簇和 第二簇;所述第一簇包括第一處理器核,所述第二簇包括第二處理器核;所述共享存儲單元位于所述第一簇和所述第二簇之間,所述共享存儲單元能夠與所述 第一處理器核或所述第二處理器核通過總線連接,所述控制器與所述第一處理器核通過總 線連接,所述控制器與所述第二處理器核通過總線連接;所述控制器用于控制所述第一處理器核將所述第一處理器核生成的數(shù)據(jù)寫入所述共 享存儲單元;所述共享存儲單元用于存儲所述第一處理器核生成的數(shù)據(jù);所述控制器還用于控制所述第二處理器核讀取所述共享存儲單元存儲的所述第一處 理器核生成的數(shù)據(jù)。2.如權(quán)利要求1所述的處理器,其特征在于,所述共享存儲單元為單端口單時鐘的存 儲器。3.如權(quán)利要求2所述的處理器,其特征在于,所述處理器還包括第一選擇器和第二選 擇器;所述第一選擇器與所述共享存儲單元通過總線連接,所述第一選擇器與所述控制器通 過總線連接,所述第二選擇器與所述共享存儲單元通過總線連接,所述第二選擇器與所述 控制器通過總線連接;所述第一選擇器用于接收所述控制器發(fā)送的第一控制信號,并根據(jù)所述第一控制信號 將所述第一處理器核的時鐘域作為所述共享存儲單元的時鐘域;所述第二選擇器用于接收所述控制器發(fā)送的第二控制信號,并根據(jù)所述第二控制信號 將所述共享存儲單元的端口與所述第一處理器核連接。4.如權(quán)利要求3所述的處理器,其特征在于,所述控制器具體用于接收所述第一處理器核發(fā)送的寫請求信號,所述寫請求信號用于 請求將所述第一處理器核生成的數(shù)據(jù)寫入所述共享存儲單元;所述控制器具體用于確定所述第一處理器核能否對所述共享存儲單元進行寫操作;當(dāng)所述第一處理器核能對所述共享存儲單元進行寫操作時,所述控制器用于向所述第 一選擇器發(fā)送所述第一控制信號,并向所述第二選擇器發(fā)送所述第二控制信號;所述控制器具體用于向所述第一處理器核發(fā)送第一響應(yīng)ACK信號。5.如權(quán)利要求4所述的處理器,其特征在于,所述控制器用于檢測忙busy信號,所述busy信號的電平值用于指示所述共享存儲單 元的忙閑狀態(tài);所述控制器用于根據(jù)所述共享存儲單元的忙閑狀態(tài),確定所述第一處理器核能否對所 述共享存儲單元進行寫操作,其中,當(dāng)所述共享存儲單元的狀態(tài)為閑時,確定所述第一處理 器核能對所述共享存儲單元進行寫操作,當(dāng)所述共享存儲單元的狀態(tài)為忙時,確定所述第 一處理器核不能對所述共享存儲單元進行寫操作。6.如權(quán)利要求5所述的處理器,其特征在于,當(dāng)所述第一處理器核接收所述控制器發(fā)送的所述第一 ACK信號之后,所述第一處理器 核具體用于在所述第一處理器核的時鐘域?qū)⑺龅谝惶幚砥魃傻臄?shù)據(jù)寫入所述共享存儲單元;所述第一處理器核具體用于向所述控制器發(fā)送第一完成信號;所述控制器在接收所述第一處理器核發(fā)送的所述第一完成信號之后,還用于將所述 busy信號的電平值設(shè)置為用于指示所述共享存儲單元為閑的狀態(tài)的電平值。7.如權(quán)利要求6所述的處理器,其特征在于,所述處理器還包括第一異步時鐘同步器 和第二異步時鐘同步器;當(dāng)所述第一處理器核和所述控制器所處的時鐘域不同時,所述第一異步時鐘同步器用 于實現(xiàn)所述寫請求信號或所述第一完成信號在所述第一處理器核和所述控制器之間的同 步;當(dāng)所述第一處理器核和所述控制器所處的時鐘域不同時,所述第二異步時鐘同步器用 于實現(xiàn)所述第一 ACK信號在所述第一處理器核和所述控制器之間的同步。8.如權(quán)利要求7所述的處理器,其特征在于,所述第一選擇器還用于接收所述控制器發(fā)送的第三控制信號,并根據(jù)所述第三控制信 號將所述第二處理器核的時鐘域作為所述共享存儲單元的時鐘域;所述第二選擇器還用于接收所述控制器發(fā)送的第四控制信號,并根據(jù)所述第四控制信 號將所述共享存儲單元的端口與所述第二處理器核連接。9.如權(quán)利要求8所述的處理器,其特征在于,所述控制器具體用于接收所述第二處理器核發(fā)送的讀請求信號,所述讀請求信號用于 所述處理器核請求讀取所述共享存儲單元存儲的所述第一處理器核生成的數(shù)據(jù);所述控制器具體用于確定所述第二處理器核能否對所述共享存儲單元進行讀操作;當(dāng)所述第二處理器核能對所述共享存儲單元進行讀操作時,所述控制器具體用于向所 述第一選擇器發(fā)送所述第三控制信號,并向所述第二選擇器發(fā)送所述第四控制信號;所述控制器具體用于向所述第二處理器核發(fā)送第二響應(yīng)ACK信號。10.如權(quán)利要求9所述的處理器,其特征在于,所述控制器用于檢測busy信號,并根據(jù)所述busy信號的電平值確定所述共享存儲單 元的忙閑狀態(tài);所述控制器用于根據(jù)所述共享存儲單元的忙閑狀態(tài),確定所述第二處理器核能否對所 述共享存儲單元進行讀操作,其中,當(dāng)所述共享存儲單元的狀態(tài)為閑時,確定所述第二處理 器核能對所述共享存儲單元進行讀操作,當(dāng)所述共享存儲單元的狀態(tài)為忙時,確定所述第 二處理器核不能對所述共享存儲單元進行讀操作。11.如權(quán)利要求10所述的處理器,其特征在于,當(dāng)所述第二處理器核接收所述控制器發(fā)送的所述第二ACK信號之后,所述第二處理器 核具體用于在所述第二處理器核的時鐘域讀取所述共享存儲單元存儲的所述第一處理器 核生成的數(shù)據(jù);所述第二處理器核具體用于向所述控制器發(fā)送第二完成信號;所述控制器在接收所述第二處理器核發(fā)送的所述第二完成信號之后,還用于將所述 busy信號的電平值設(shè)置為用于指示所述共享存儲單元為閑的狀態(tài)的電平值。12.如權(quán)利要求11所述的處理器,其特征在于,當(dāng)所述第二處理器核和所述控制器所處的時鐘域不同時,所述第一異步時鐘同步器還用于實現(xiàn)所述讀請求信號或所述第二完成信號在所述第二處理器核和所述控制器之間的 同步;當(dāng)所述第二處理器核和所述控制器所處的時鐘域不同時,所述第二異步時鐘同步器還 用于實現(xiàn)所述第二ACK信號在所述第二處理器核和所述控制器之間的同步。13.如權(quán)利要求1至12中任一項所述的處理器,其特征在于,所述第一處理器核為所述 第一簇的邊界的處理器核,所述第二處理器核為所述第二簇的邊界的處理器核。14.如權(quán)利要求7或12所述的處理器,其特征在于,所述第一異步時鐘同步器為異步先 進先出隊列FIFO,所述第二異步時鐘同步器為FIFO或雙寄存器。15.如權(quán)利要求1至14中任一項所述的處理器,其特征在于,所述控制器還用于根據(jù)優(yōu)先級順序響應(yīng)不同處理器核對所述共享存儲單元的訪問。16.—種芯片,其特征在于,所述芯片包括權(quán)利要求1至15中任一項所述的共享存儲數(shù) 據(jù)的處理器。
【文檔編號】G06F15/167GK105988970SQ201510073683
【公開日】2016年10月5日
【申請日】2015年2月12日
【發(fā)明人】虞志益, 俞政, 于學(xué)球
【申請人】華為技術(shù)有限公司, 復(fù)旦大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乐平市| 和田县| 南木林县| 泸州市| 凤庆县| 亳州市| 房产| 新密市| 电白县| 秦皇岛市| 淅川县| 高尔夫| 株洲县| 都兰县| 临海市| 大方县| 车致| 永和县| 岳阳县| 筠连县| 兴海县| 巴林左旗| 杨浦区| 平乐县| 宾川县| 河北省| 临猗县| 金山区| 合水县| 望城县| 辽源市| 汾西县| 马关县| 沂水县| 滁州市| 正镶白旗| 开鲁县| 广平县| 威信县| 兴宁市| 河北区|