專利名稱:處理器及其中處理鎖事務(wù)的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及多核心處理器中共享存儲器的鎖機制,尤其涉及 多核心處理器中基于地址仲裁器的共享存儲器的鎖機制。
背景技術(shù):
隨著半導(dǎo)體技術(shù)的不斷進(jìn)步,多核心處理器(例如單元處理器Cell Processor)已經(jīng)迅速得到普及。多核心處理器中的核心上運行的多線 程程序必須控制對共享存儲器區(qū)的并發(fā)訪問。常見的控制方式是通過 鎖/信號燈來同步線程。因此鎖/信號燈的效率是多線程平臺的關(guān)鍵因 素。鎖的實現(xiàn)不僅會影響同步搮作的開銷,而且會影響等待鎖釋放的 線程的阻塞時間。對于采用多核心多線程作為充分利用小片面積的重 要技術(shù)的當(dāng)前處理器而言,這是非常關(guān)鍵的。
加鎖/解鎖操作通常被實現(xiàn)為硬件支持的共享存儲器和原子同步 原語(例如測試-設(shè)置(T&S),比較-交換(C&S)和加載-鏈接/存儲 -條件(LL/SC))的組合。這些硬件支持共享存儲器系統(tǒng)提供當(dāng)原子 原語正在進(jìn)行時阻塞全局存儲器訪問/通信的機制,例如x86處理器中
的總線鎖。這對于傳統(tǒng)共享存儲器多處理器平臺是適用的,因為存儲 器接口 /總線是處理器執(zhí)行全局通信的唯一途徑。然而對于當(dāng)前和將來 的多核心處理器,這種機制在兩個方面降低了系統(tǒng)性能
1. 所有加鎖/解鎖操作匯集到存儲器接口以消除潛在的爭用。芯 片外存儲器接口本來就是系統(tǒng)的瓶頸,這不僅因為其帶寬,而且因為 其時延(大約為芯片上高速緩存時延的數(shù)百或數(shù)千倍)。即使在共享 的芯片上L2/L3高速緩存中能夠消除訪問沖突,操作開銷仍然高出一 個數(shù)量級。
2. 越來越多的網(wǎng)絡(luò)拓樸被用作多核心芯片中的全局互連,以支持并發(fā)數(shù)據(jù)事務(wù)/通信。例如在單元處理器中存在環(huán)網(wǎng)絡(luò)。
圖l示出了單元處理器中的這種環(huán)網(wǎng)絡(luò)的示例。如圖1所示,PPE、 SPE0-SPE7、 MIC、 IOIF1和BIF/IOIF0是單元處理器中的處理核心。 這些處理核心訪問環(huán)網(wǎng)絡(luò)(如圖1中串聯(lián)成環(huán)的帶箭頭實線所示)。 各個處理核心通過總線接口 (如圖1中細(xì)長條所示)與地址仲裁器 (DataArb)相連。當(dāng)處理核心需要訪問網(wǎng)絡(luò)以進(jìn)行數(shù)據(jù)事務(wù)時,它 首先請求地址仲裁器對其數(shù)據(jù)事務(wù)所涉及的地址進(jìn)行仲裁,并在獲得 許可的情況下訪問網(wǎng)絡(luò)以進(jìn)行數(shù)據(jù)事務(wù)。有關(guān)圖l所示單元處理器更 進(jìn)一步的內(nèi)容請參見 http:〃www-128.ibm.com/developerworks/power/library/pa-fpfeib/。
圖l所示的網(wǎng)絡(luò)能夠同時支持多達(dá)6路并發(fā)數(shù)據(jù)傳送。如果一個 處理核心的原子操作必須阻塞全局總線/網(wǎng)絡(luò),這會導(dǎo)致嚴(yán)重的性能下 降。
因此,需要提供一種新的用于多核心芯片的鎖機制,以提供更好 的鎖性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種處理器及其中處理鎖事務(wù)的方法,能 夠提供更好的鎖性能。
本發(fā)明提供了一種處理器,包括至少一個處理核心,所述至少一個處理 核心中的每個處理核心被配置成響應(yīng)特定指令的執(zhí)行向地址仲裁器提交與所 述特定指令相應(yīng)的鎖事務(wù)請求,所述鎖事務(wù)請求包括在地址總線上聲明的鎖 變量地址;開關(guān)裝置,分別與地址仲裁器和鎖控制器連接,用于識別所述鎖 事務(wù)請求并將所述鎖事務(wù)請求通知鎖控制器;鎖控制器,用于響應(yīng)所述鎖事 務(wù)請求而進(jìn)行鎖事務(wù)處理,并將處理結(jié)果通知給發(fā)出所述請求的處理核心。
本發(fā)明還提供了一種處理器中處理鎖亊務(wù)的方法,包括當(dāng)處理核心# 行特定指令時,向地址仲裁器提交與所述特定指令相應(yīng)的鎖亊務(wù)請求,其中 在地址總線上聲明鎖變量地址;識別所述鎖事務(wù)請求;進(jìn)行鎖亊務(wù)處理,并 將處理結(jié)果通知所述處理核心。根據(jù)本發(fā)明,能夠?qū)⒌刂房偩€仲裁(包含高速緩存一致性檢查, 網(wǎng)絡(luò)路由等等)與數(shù)據(jù)事務(wù)分離。在地址總線事務(wù)中實現(xiàn)原子鎖操作。
根據(jù)本發(fā)明,能夠在地址仲裁器中提供針對最近訪問的鎖的快速 查找表,系統(tǒng)存儲器層次結(jié)構(gòu)是整個查找表的存儲區(qū)。
本發(fā)明具有若干優(yōu)點,例如能夠獲得多核心平臺中加鎖/解鎖操作 的高性能實現(xiàn),鎖事務(wù)與系統(tǒng)總線的分離使得能夠更加高效地利用多 核心芯片的芯片上網(wǎng)絡(luò),對當(dāng)前多核心實現(xiàn)的修改較少,不需要修改 軟件。而且,這個機制能夠與其它分布式鎖方法配合以提供大規(guī)模多 線程系統(tǒng)的可伸縮解決方案。
被說明書引用并且構(gòu)成說明書組成部分的附解了本發(fā)明的實 施例,并且和前面的概括說明、下面針對實施例的詳細(xì)描述一起被用
來說明本發(fā)明的原理,其中
圖l示出了單元處理器中的一種示例性網(wǎng)絡(luò)拓樸。
圖2示出了基于本發(fā)明一個實施例、具有快速鎖機制的多核心處
理器的示例性結(jié)構(gòu)。
圖3示出了圖2所示的處理單元與地址仲裁器和鎖控制器之間的
示例性信號連接。
圖4示出了圖2所示的地址仲裁器和鎖控制器的示例性結(jié)構(gòu)。 圖5示出了圖2所示的地址仲裁器和鎖控制器中的鎖查找表的示
例性結(jié)構(gòu)。
圖6是說明測試&設(shè)置0 (鎖獲得)的操作過程的流程圖。
具體實施例方式
在下面的描述中,將參考圖l示出的單元處理器的結(jié)構(gòu)來描述本 發(fā)明的實施例。然而本領(lǐng)域技術(shù)人員明白,圖l所示單元處理器的細(xì) 節(jié)只是為了說明本發(fā)明而提供的,不應(yīng)被解釋為對本發(fā)明的限制。
另外,由于信號燈的核心機制與鎖相類似,只是在應(yīng)用方面有差異,如果能夠?qū)崿F(xiàn)鎖,也自然也能夠?qū)崿F(xiàn)信號燈,因而下面僅針對鎖 機制對本發(fā)明進(jìn)行說明。
圖2示出了基于本發(fā)明一個實施例、具有快速鎖機制的多核心處 理器10的結(jié)構(gòu)。如圖2所示,處理器10包括地址仲裁器和鎖控制器 (AALC)101,多個處理單元PU102、 103、 104,數(shù)據(jù)事務(wù)網(wǎng)絡(luò)105 和共享高速緩存106。數(shù)據(jù)事務(wù)網(wǎng)絡(luò)的拓樸可基于圖l所示的環(huán)網(wǎng)絡(luò), 例如PU 102、 103、 104可對應(yīng)于圖1中的SPE,地址仲裁器和鎖控 制器IOI可對應(yīng)于圖1中的地址仲裁器Data Arb。
PU102、 103、 104是運行應(yīng)用程序線程的處理核心。單個PU可 運行單個線程,或同時運行多個線程。如同圖l中的環(huán)網(wǎng)絡(luò)那樣,數(shù) 據(jù)事務(wù)網(wǎng)絡(luò)105是連接PU和共享高速緩存的互連網(wǎng)絡(luò),其在PU和 高速緩存之間傳遞數(shù)據(jù)事務(wù)消息。如同圖1中的地址仲裁器DataArb 那樣,地址仲裁器和鎖控制器101從PU接收數(shù)據(jù)請求,并且安排事 務(wù)的調(diào)度和路由。如后面將會描述的,地址仲裁器和鎖控制器101也 從PU得到鎖請求,檢查/修改該鎖請求所對應(yīng)的、其負(fù)責(zé)維護的鎖變 量的狀態(tài),并且向請求方PU返回鎖請求的處理結(jié)果。優(yōu)選地,地址 仲裁器和鎖控制器IOI可以在其中只保留部分的鎖變量,而整個鎖變 量集合被映射到系統(tǒng)存儲器,并且當(dāng)需要時可以通過芯片上高速緩存 106載入到地址仲裁器和鎖控制器101中。這樣可更靈活地適應(yīng)鎖變 量集合的規(guī)模,即提高鎖機制的可伸縮性-
圖4示出了圖2所示的地址仲裁器和鎖控制器101的示例性結(jié)構(gòu)。 圖4所示,地址仲裁器和鎖控制器101包括地址仲裁器201,快速鎖 查找表202,鎖控制器203和總線接口 204。地址仲裁器201類似于圖 1所示的地址仲裁器Data Arb。在數(shù)據(jù)事務(wù)方面,總線接口 204類似 于圖1中的總線接口。
圖3示出了圖2所示的處理單元與地址仲裁器和鎖控制器101的 總線接口 204之間的信號連接。如圖3所示,信號線"數(shù)據(jù)長度","請 求","同意/拒絕","其它"和"保持"是用于數(shù)據(jù)傳送請求的信號,這 與圖l所示總線接口類似。根據(jù)本發(fā)明的實施例,總線接口 204還具有用于鎖操作的信號線, 即"鎖"信號,"獲得/釋放"信號和"鎖值"。鎖事務(wù)通常可分為三個階 段
1. 請求階段
當(dāng)PU請求對某個鎖變量進(jìn)行鎖事務(wù)時,將該鎖變量的地址放在 地址總線上,以指示該鎖變量;并且聲明"鎖,,信號,以通知地址仲裁 器和鎖控制器IOI當(dāng)前請求是針對鎖事務(wù)的;并且通過"獲得/釋放,,信 號來聲明所請求的鎖事務(wù)的類型,即鎖獲得和鎖釋放。另外,可通過 諸如"鎖值"或附加的信號線向地址仲裁器和鎖控制器101提供標(biāo)識作 出請求的線程的信息。
2. 處理階段
地址仲裁器和鎖控制器101響應(yīng)PU在總線接口 204上提交的鎖 事務(wù)請求進(jìn)行相應(yīng)的處理(后面會結(jié)合圖4和5進(jìn)行說明)。
3. 響應(yīng)階段
在鎖事務(wù)方面,"同意/拒絕"信號被用來向PU指示處理鎖事務(wù)請 求的結(jié)果類型。對于來自PU的鎖事務(wù)請求,地址仲裁器和鎖控制器 101在請求的下一周期可能有3種響應(yīng)。第一種是"同意"(由"同意/ 拒絕"信號指示),即鎖事務(wù)請求被成功處理。第二種是"拒絕"(由"同 意/拒絕,,信號指示),即鎖事務(wù)請求失敗。第三種是"保持,,(通過"保 持"指示),即因為鎖事務(wù)請求所涉及的鎖變量不在地址仲裁器和鎖控 制器101本地,使得該鎖事務(wù)被暫停。對于第三種情況,地址仲裁器 和鎖控制器101還通過"鎖值"信號向PU提供鎖ID,以標(biāo)識該被暫停 的鎖事務(wù)。當(dāng)請求的鎖變量被加載到地址仲裁器和鎖控制器101中時, 地址仲裁器和鎖控制器101繼續(xù)處理該鎖事務(wù)請求,并將標(biāo)識有該鎖 ID ("鎖值"信號)的最終授權(quán)結(jié)果("同意/拒絕"信號)返回給發(fā)出請 求的PU。針對第三種情況,在PU本地維護發(fā)出請求的線程與返回的 鎖ID的對應(yīng)關(guān)系,以便在收到最終結(jié)果時能夠找到相關(guān)的線程。
由于具體的鎖變量由地址總線上的地址來標(biāo)識,因而應(yīng)用程序能 夠任意指定某地址的存儲器位置作為鎖變量。相應(yīng)地,應(yīng)用程序需要在其使用鎖/信號燈之前初始化鎖/信號燈,例如向地址寫入初值,或
用于鎖事務(wù)驗證的幻數(shù)。接著如上所述,應(yīng)用特定指令來對鎖變量執(zhí) 行原子操作。
PU根據(jù)指定指令在總線接口 204上進(jìn)行的這些鎖信號操作對于 PU上運行的程序線程可以是透明的。例如對于圖1示出的單元處理 器的多核心處理器,其處理核心的指令集包含用于鎖操作的指令,例 如getlar、 putllc、 putlluc、 putqlhic。在實現(xiàn)本發(fā)明時,需要對PU 的指令執(zhí)行部分加以修改,使得當(dāng)遇到這些特定的指令時,通過總線 接口 204發(fā)出相應(yīng)的鎖事務(wù)請求,以在地址仲裁器和鎖控制器101上 執(zhí)行相應(yīng)鎖事務(wù)。PU進(jìn)行的鎖事務(wù)請求取決于所執(zhí)行的特定指令的 語義。
下面結(jié)合圖4和5來說明地址仲裁器和鎖控制器101及其響應(yīng)PU 的鎖事務(wù)請求而進(jìn)行的處理。
回到圖4,在地址仲裁器和鎖控制器101中,總線接口 204的數(shù) 據(jù)事務(wù)部分與圖l所示的總線接口相同,但增加了一種開關(guān)邏輯(未 示出),用于根據(jù)"鎖"信號來區(qū)分PU提交的請求涉及數(shù)據(jù)事務(wù)還是 鎖事務(wù);如果是數(shù)據(jù)事務(wù),則啟用地址仲裁器201來處理事務(wù)請求; 如果是鎖事務(wù),則啟用鎖控制器203來處理事務(wù)請求。地址仲裁器201 則與圖l所示的仲裁器相同。
鎖控制器203負(fù)責(zé)查找表管理,鎖變量搜索和更新,鎖事務(wù)處理 等等。更具體地,當(dāng)鎖控制器203經(jīng)由總線接口 204收到PU的鎖事 務(wù)請求時,從地址總線上得到鎖請求所涉及的鎖變量的地址,在快速 鎖查找表202中檢索對應(yīng)于該地址的鎖變量,根據(jù)鎖事務(wù)的類型對檢 索到的鎖變量進(jìn)行相應(yīng)的修改,并且將結(jié)果返回給請求PU。如果在 快速鎖查找表中沒有找到對應(yīng)于該地址的鎖變量,則鎖控制器203通 過請求方PU或直接從存儲器或共享高速緩存中加栽該變量。如果需 要,可在加栽階段進(jìn)行某些格式驗證或變換。
圖5示出了地址仲裁器和鎖控制器101中的快速鎖查找表202的 示例性結(jié)構(gòu)。如圖5所示,快速鎖查找表包含若干表項,每個表項對應(yīng)一個鎖變量,包含地址字段,表示鎖變量的存儲器地址;鎖變量 值字段,記錄鎖變量的當(dāng)前值;所有者字段,標(biāo)識當(dāng)前獲得該鎖的線 程。這里,"快速"是相對而言的,只要能夠滿足查找性能要求即可, 并沒有絕對的標(biāo)準(zhǔn)??焖冁i查找表202可以是內(nèi)容可尋址存儲器,其 將鎖控制器203提供的地址與所有表項的地址項進(jìn)行比較。將匹配的 表項中的鎖變量值和所有者回送給鎖控制器203以進(jìn)行進(jìn)一步的操 作。如果鎖控制器203在操作中修改選定表項的內(nèi)容,則鎖控制器203 將更新結(jié)果回送給查找表。表項中的R位記錄變量訪問歷史,其能夠 用于鎖控制器203中的表項替換策略(例如最近最少使用等等)。此 外,當(dāng)系統(tǒng)進(jìn)程或應(yīng)用程序線程需要將一個鎖變量復(fù)位時,可以重復(fù) 請求釋放該鎖,直至鎖控制器203檢測到該鎖變量的值為負(fù)(假設(shè)初 值為0)。應(yīng)當(dāng)理解,本發(fā)明不限于該具體數(shù)值。對于被復(fù)位的鎖變 量,鎖控制器203可將其替換出鎖查找表。
在該實現(xiàn)中,多數(shù)鎖操作能夠被簡化為PU和地址仲裁器和鎖控 制器101之間的一個事務(wù)。下面結(jié)合圖6說明鎖操作的一個示例性過 程。
圖6是說明測試&設(shè)置0 (鎖獲得)的操作過程的流程圖。如圖6 所示,在步驟SIO, PU的指令執(zhí)行部分在執(zhí)行線程時識別出涉及鎖操 作的指令,即測試&設(shè)置0(鎖獲得),于是向總線接口 204提交鎖事務(wù) 請求,其中在地址總線上聲明有關(guān)鎖變量的地址,聲明"鎖,,信號,并 且聲明"獲得"信號。
接著在步驟S12,總線接口 204根據(jù)"鎖"識別出鎖事務(wù)請求,并 且通知鎖控制器203。
接著在步稞S14,鎖控制器203從總線接口 204獲得地址總線上 的地址,在快速鎖查找表202中搜索匹配表項。
接著在步驟S16,快速鎖查找表202向鎖控制器203返回匹配表 項的內(nèi)容。鎖控制器203檢查是否該表項中的鎖變量值>0。
如果鎖變量值> 0,則在步猓S18,鎖控制器203通過總線接口 204 聲明"同意"信號以作為對請求PU的響應(yīng)。PU則成功地獲得鎖。同時,鎖控制器203遞減該鎖變量的值,并且用新的值和所有者(PU)更新 該查找表項。
如果鎖變量值<=0,則在步驟S20,鎖控制器203通過總線接口 204聲明"拒絕"信號以作為對PU的響應(yīng)。鎖獲得操作失敗或T&S指 令返回0。
雖然在實施例中PU的指令執(zhí)行部分需要識別涉及鎖操作的特殊 指令,然而也可以通過使用特殊聲明的存儲器區(qū)或具有可識別特征的 特定地址來進(jìn)行鎖變量訪問。在后一種情況下,如果指令執(zhí)行部分識 別出指令涉及的地址在該存儲器區(qū)范圍內(nèi)或?qū)儆谔囟ǖ刂?,則作為鎖 操作來處理。
雖然前面對照多核心處理器描述了本發(fā)明的實施例,然而本領(lǐng)域 技術(shù)人員能夠明白,由于鎖ID和所有者字段的使用,同一核心中的 不同線程能夠識別對其各自鎖請求的響應(yīng),而對于同一鎖變量,鎖控 制器能夠區(qū)分出同一核心中的不同線程,因此本發(fā)明也適用于單核心 處理器(屬于多核心處理器的特例)。
雖然前面提供了具體信號線的例子說明了 PU與地址仲裁器和鎖 控制器之間的接口,然而本領(lǐng)域的技術(shù)人員能夠明白,本發(fā)明并不限 于這些具體的例子,而是能夠根據(jù)具體需要加以修改,以完成涉及鎖 事務(wù)的處理。
以上所揭示的內(nèi)容是將被考慮為說明性的,而不是限制性的,并 且附加的權(quán)利要求意欲涵蓋所有屬于本發(fā)明的真實精神及范圍的這類 修改、改進(jìn)及其他實施例。因此,以法律所允許的最大程度,本發(fā)明 的范圍將由以下權(quán)利要求及其等同的最廣泛可容許的解釋來確定,并 且不應(yīng)由上述具體實施方式
約束或限制。
ii
權(quán)利要求
1.一種處理器,包括至少一個處理核心,所述至少一個處理核心中的每個處理核心被配置成響應(yīng)特定指令的執(zhí)行向地址仲裁器提交與所述特定指令相應(yīng)的鎖事務(wù)請求,所述鎖事務(wù)請求包括在地址總線上聲明的鎖變量地址;開關(guān)裝置,分別與地址仲裁器和鎖控制器連接,用于識別所述鎖事務(wù)請求并將所述鎖事務(wù)請求通知鎖控制器;鎖控制器,用于響應(yīng)所述鎖事務(wù)請求而進(jìn)行鎖事務(wù)處理,并將處理結(jié)果通知給發(fā)出所述請求的處理核心。
2. 根據(jù)權(quán)利要求1的處理器,還包括鎖查找表,用于存儲最近操作的鎖 變量的相關(guān)信息,其中所述鎖事務(wù)處理基于所述鎖查找表來進(jìn)行。
3. 根據(jù)權(quán)利要求2的處理器,其中所述鎖查找表是內(nèi)容可尋址存儲器。
4. 根據(jù)權(quán)利要求2的處理器,其中所述鎖控制器還被配置為當(dāng)檢測到所述鎖事務(wù)請求的鎖變量不在所述鎖查找表中時,將所述鎖變量從外部存儲位 置取到所述鎖查找表中。
5. 根據(jù)權(quán)利要求4的處理器,其中所述鎖控制器還被配置為當(dāng)檢測到所 述鎖事務(wù)請求的鎖變量不在所述鎖查找表中時,通知請求方PU當(dāng)前事務(wù)被保 持。
6. —種處理器中處理鎖事務(wù)的方法,包括當(dāng)處理核心^IMt特定指令時,向地址仲裁器提交與所迷特定指令相應(yīng)的 鎖事務(wù)請求,其中在地址總線上聲明鎖變量地址; 識別所述鎖事務(wù)請求;進(jìn)行鎖事務(wù)處理,并將處理結(jié)果通知所述處理核心。
7. 根據(jù)權(quán)利要求6的方法,其中所述鎖事務(wù)處理是基于鎖查找表來進(jìn)行 的,所述鎖查找表用于存儲最近操作的鎖變量的相關(guān)信息.
8. 根據(jù)權(quán)利要求7的方法,其中所述鎖查找表是內(nèi)容可尋址存儲器.
9. 根據(jù)權(quán)利要求7的方法,其中所述鎖亊務(wù)處理包括當(dāng)檢測到所述鎖事 務(wù)請求的鎖變量不在所述鎖查找表中時,將所述鎖變量從外部存儲位置取到所述鎖查找表中。
10.根據(jù)權(quán)利要求9的方法,其中所述鎖事務(wù)處理還包括當(dāng)檢測到所述鎖 事務(wù)請求的鎖變量不在所述鎖查找表中時,通知請求方PU當(dāng)前事務(wù)被保持。
全文摘要
公開了一種處理器,包括至少一個處理核心,所述至少一個處理核心中的每個處理核心被配置成響應(yīng)特定指令的執(zhí)行向地址仲裁器提交與所述特定指令相應(yīng)的鎖事務(wù)請求,所述鎖事務(wù)請求包括在地址總線上聲明的鎖變量地址;開關(guān)裝置,分別與地址仲裁器和鎖控制器連接,用于識別所述鎖事務(wù)請求并將所述鎖事務(wù)請求通知鎖控制器;鎖控制器,用于響應(yīng)所述鎖事務(wù)請求而進(jìn)行鎖事務(wù)處理,并將處理結(jié)果通知給發(fā)出所述請求的處理核心。
文檔編號G06F9/46GK101308461SQ20071010500
公開日2008年11月19日 申請日期2007年5月18日 優(yōu)先權(quán)日2007年5月18日
發(fā)明者別曉媛, 弋 戈, 梁志勇, 沈文博, 鵬 邵 申請人:國際商業(yè)機器公司