專利名稱::基于異常處理的事務(wù)存儲訪問機制的實現(xiàn)方法及所用系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及事務(wù)存儲訪問機制的實現(xiàn),所涉及的實現(xiàn)方法采用異常處理的機制,通過軟件和硬件的協(xié)同配合,完成事務(wù)存儲訪問;屬于計算機系統(tǒng)軟件設(shè)計領(lǐng)域。
背景技術(shù):
:事務(wù)存儲訪問機制是為了解決共享存儲式多處理器系統(tǒng)中的存儲同步問題而提出的。共享存儲式多處理器系統(tǒng)中包含n(n〉1)個處理器單元,它們可以各自執(zhí)行不同的指令代碼,對同一塊存儲空間發(fā)出讀寫請求。如圖l所示,其中包含有n個處理器(處理器101-處理器103),并通過一條總線(或片上網(wǎng)絡(luò))(總線或片上網(wǎng)絡(luò)104)將處理器連接起來。多個處理器可以共同訪問同一個共享存儲空間(存儲單元105)。在這種結(jié)構(gòu)中,多個處理器可以并行執(zhí)行多段程序,運行多條指令流,與單處理器系統(tǒng)結(jié)構(gòu)相比,其應(yīng)用程序的并行性得到利用、系統(tǒng)性能得到提升。共享存儲式多處理器系統(tǒng)中,多個處理器分別運行不同的程序代碼,不同的指令流,邏輯上對存儲器訪問是并行共享的。而系統(tǒng)中一條總線(或片上網(wǎng)絡(luò)),一個共享存儲器決定了物理上存儲器訪問是串行的。存儲同步問題由此矛盾衍生而出。當不同處理器對同一塊地址空間同時進行存儲訪問時,實際執(zhí)行順序的不同會造成程序運行結(jié)果的不同。為了解決共享存儲式多處理器系統(tǒng)結(jié)構(gòu)中的同步問題,程序員在編寫相應(yīng)應(yīng)用程序時,需要采用同步自旋鎖或同步阻塞鎖等手段保證多處理器訪存順序,協(xié)調(diào)處理器運行。軟件同步鎖的方法解決同步問題存在下列缺陷>程序可讀性不強。>程序編寫困難,軟件開發(fā)周期加長。>同步鎖本身沒有優(yōu)先級之分,不利于大型程序的擴展。>避免死鎖的算法一般復(fù)雜,而且開銷大。為了彌補同步鎖方法的缺陷,事務(wù)存儲訪問機制由劍橋研究所的Herlihy和馬薩諸塞大學(xué)的Moss最早提出。事務(wù)指某一指令段,每個在處理器上運行的事務(wù)都擁有各自的虛擬地址空間,其訪存是互斥的。該機制使得程序員在編寫程序時,將不同的原子指令段中訪問的存儲空間當作不同空間對待,而一致性由該機制本身保證,最終提高了程序的可讀性。同時由于事務(wù)含有虛擬地址空間,可以在多處理器上并行執(zhí)行,不需要互相等待,系統(tǒng)性能得到了提高。事務(wù)一般分為事務(wù)開始、事務(wù)執(zhí)行和事務(wù)提交三個階段,事務(wù)開始和事務(wù)提交一般以特殊的指令代碼加以區(qū)分。事務(wù)存儲訪問機制實現(xiàn)的主要手段有軟件實現(xiàn)(STM:SoftwareTransactionalMemory)、硬件實現(xiàn)(HTM:HardwareTransactionalMemory)、混合實現(xiàn)(HyTM:HybridTransactionalMemory)。盡管各種實現(xiàn)策略不盡相同,但其所達到的目標是相同的。即實現(xiàn)事務(wù)的以下三個特點>原子性(atomicity):將需要原子性執(zhí)行的指令段封裝成一個事務(wù),事務(wù)與事務(wù)之間需要互斥執(zhí)行,也就是要保證事務(wù)的原子性。>隔離性(isolation):不同事務(wù)之間要相互隔離,當對同一片地址空間進行讀寫操作,也就是產(chǎn)生沖突時,需要由硬件或軟件進行地址空間的保護。>—致性(consistency):最后運行的結(jié)果不會由于事務(wù)運行先后順序的改變而改變。由軟件實現(xiàn)的事務(wù)性存儲訪問機制側(cè)重于軟件程序的結(jié)構(gòu)封裝,通過軟件抽象實現(xiàn)事務(wù),有更好的結(jié)構(gòu)擴展性,但不會提升多處理器系統(tǒng)效率,因此實際應(yīng)用中一般會考慮由硬件實現(xiàn)一部分事務(wù)處理功能。而由硬件實現(xiàn)或混合實現(xiàn)的事務(wù)性存儲訪問機制側(cè)重于事務(wù)緩沖區(qū)的構(gòu)建,以硬件代替軟件復(fù)雜度,提升了多處理器系統(tǒng)效率。但這兩種實現(xiàn)方式的不足之處在于它們無法動態(tài)申請硬件緩存空間,無法解決事務(wù)的緩沖溢出問題。實際應(yīng)用中對于此類問題的一般解決方案是當硬件事務(wù)存儲發(fā)生溢出時,重啟該事務(wù),轉(zhuǎn)而尋求軟件進行事務(wù)機制的實現(xiàn)。由于在事務(wù)開始前無法判斷是否會發(fā)生溢出,每次緩存溢出的事務(wù)處理都需要經(jīng)過硬件和軟件的重復(fù)執(zhí)行,因此降低了多處理器系統(tǒng)性能。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種共享存儲式多處理器系統(tǒng)以及利用上述系統(tǒng)進行的基于異常處理的事務(wù)存儲機制實現(xiàn)方法,解決事務(wù)存儲實現(xiàn)時的緩存溢出問題。為了解決以上問題,本發(fā)明提供了一種共享存儲式多處理器系統(tǒng),該系統(tǒng)包括n個處理器(n>l),還包括總線(或片上網(wǎng)絡(luò))和存儲器,總線(或片上網(wǎng)絡(luò))的一端與每個處理器相連、總線(或片上網(wǎng)絡(luò))的另一端與存儲器相連;在每個處理器內(nèi)分別設(shè)置一個事務(wù)讀寫緩存和一個事務(wù)屬性緩存;在處理器內(nèi)設(shè)置與每個處理器相一一對應(yīng)的處理器局部緩存。作為本發(fā)明的共享存儲式多處理器系統(tǒng)的改進事務(wù)屬性緩存用于保存事務(wù)順序編號、通用寄存器數(shù)據(jù)、處理器狀態(tài)和事務(wù)起始時指令地址;事務(wù)讀寫緩存用于保存事務(wù)讀寫操作中涉及到的地址以及寫操作中涉及到的數(shù)據(jù)。本發(fā)明還同時提供了利用上述共享存儲式多處理器系統(tǒng)進行的基于異常處理的事務(wù)存儲機制實現(xiàn)方法,設(shè)置5種異常機制,分別為事務(wù)初始異常機制、事務(wù)滿異常機制、事務(wù)讀寫異常機制、事務(wù)提交異常機制和事務(wù)重啟異常機制;事務(wù)初始異常機制為實現(xiàn)事務(wù)開始時的軟硬件協(xié)調(diào),進行事務(wù)處理的數(shù)據(jù)結(jié)構(gòu)初始化,以及事務(wù)中保存讀寫記錄的雙向鏈表的空間分配和初始化;事務(wù)滿異常機制為實現(xiàn)事務(wù)執(zhí)行時的虛擬存儲;當識別到事務(wù)滿異常后,將事務(wù)讀寫緩存中的數(shù)據(jù)拷貝到處理器局部緩存中,以數(shù)據(jù)結(jié)構(gòu)的形式記錄,之后清空硬件事務(wù)讀寫緩存;事務(wù)讀寫異常機制為實現(xiàn)事務(wù)執(zhí)行時的虛擬存儲;當識別到事務(wù)讀寫異常后,將該讀寫操作中涉及的地址信息與事務(wù)讀寫記錄的雙向鏈表中的記錄進行比較;若匹配,則以事務(wù)讀寫記錄的雙向鏈表中的數(shù)據(jù)為準進行讀寫操作;若不匹配,則從主存儲器中讀取數(shù)據(jù),更新事務(wù)讀寫緩存。事務(wù)提交異常機制為實現(xiàn)事務(wù)提交以及事務(wù)沖突檢測;當識別到事務(wù)提交異常后,將事務(wù)讀寫緩存中未滿的數(shù)據(jù)信息拷貝入處理器局部緩存,用事務(wù)讀寫記錄的雙向鏈表的數(shù)據(jù)結(jié)構(gòu)來表示;此時檢測是否發(fā)生事務(wù)讀寫地址沖突,并在發(fā)生沖突時對其他處理器產(chǎn)生事務(wù)重啟異常;事務(wù)重啟異常機制為對發(fā)生沖突后的沖突解決進行保證;當識別到事務(wù)重啟異常后,清空處理器局部緩存中的數(shù)據(jù)結(jié)構(gòu),通過指令或地址的賦值啟動事務(wù)的硬件自動恢復(fù)。本發(fā)明將硬件實現(xiàn)和軟件實現(xiàn)進行結(jié)合,通過五種異常機制的設(shè)計,實現(xiàn)了事務(wù)存儲訪問機制。這五種異常機制分別為事務(wù)初始異常、事務(wù)滿異常、事務(wù)讀寫異常、事務(wù)提交異常和事務(wù)重啟異常。實現(xiàn)的步驟為步驟1:添加事務(wù)用硬件緩存;步驟2:添加事務(wù)用軟件緩存;步驟3:實現(xiàn)事務(wù)初始異常機制;步驟4:實現(xiàn)事務(wù)滿異常機制;步驟5:實現(xiàn)事務(wù)讀寫異常機制;步驟6:實現(xiàn)事務(wù)提交異常機制;步驟7:實現(xiàn)事務(wù)重啟異常機制。事務(wù)初始異常實現(xiàn)了事務(wù)開始時的軟硬件協(xié)調(diào),事務(wù)滿異常和讀寫異常實現(xiàn)了事務(wù)執(zhí)行時的虛擬存儲,事務(wù)提交異常實現(xiàn)了事務(wù)提交以及事務(wù)沖突檢測,事務(wù)重啟異常對發(fā)生沖突后的沖突解決進行保證。在本發(fā)明中,硬件緩存分事務(wù)屬性緩存和事務(wù)讀寫緩存,都可以通過高速緩存、內(nèi)部寄存器或地址配值的方式實現(xiàn)。軟件緩存指處理器局部緩存,實現(xiàn)方法是在系統(tǒng)能夠軟件存儲管理的程序代碼中實現(xiàn)有關(guān)局部緩存的聲明和操作函數(shù);每個緩存對所有處理器開放讀權(quán)限,僅對相應(yīng)處理器開放寫權(quán)限;權(quán)限由系統(tǒng)軟件維護。與一般的事務(wù)存儲訪問機制的實現(xiàn)相比,采用本發(fā)明實現(xiàn)事務(wù)存儲訪問,能夠解決硬件緩存溢出問題,對于發(fā)生溢出的數(shù)據(jù)能夠通過軟件的異常處理進行保存。同時結(jié)合了軟件實現(xiàn)和硬件實現(xiàn)事務(wù)存儲的優(yōu)點,程序可擴展性強,降低了多處理器的系統(tǒng)開銷。綜上所述,本發(fā)明是一種基于異常處理的事務(wù)存儲訪問機制的實現(xiàn)方法。該方法適用于系統(tǒng)軟件設(shè)計比較靈活的多處理器核系統(tǒng),采用添加事務(wù)初始異常、事務(wù)滿異常、事務(wù)讀寫異常、事務(wù)提交異常和事務(wù)重啟異常的機制,通過軟件和硬件的系統(tǒng)配合,完成事務(wù)存儲設(shè)計,其優(yōu)勢在于結(jié)合了硬件實現(xiàn)事務(wù)存儲和軟件實現(xiàn)事務(wù)存儲的各自優(yōu)點,解決硬件實現(xiàn)的緩存溢出問題,提高系統(tǒng)性能。下面結(jié)合附圖對本發(fā)明的具體實施方式作進一步詳細說明。圖1是現(xiàn)有的共享存儲式多處理器系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明的共享存儲式多處理器系統(tǒng)結(jié)構(gòu)示意圖;圖3是本發(fā)明的基于異常處理的事務(wù)存儲機制實現(xiàn)方法的流程示意圖。具體實施例方式圖2給出了本發(fā)明所采用的共享存儲式多處理器系統(tǒng),包括n(n二3)個處理器,即處理器a201、處理器b202和處理器c203。每個處理器包含一個事務(wù)讀寫緩存和事務(wù)屬性緩存,即處理器a201包含事務(wù)讀寫緩存204和事務(wù)屬性緩存207;處理器a202包含事務(wù)讀寫緩存205和事務(wù)屬性緩存208;處理器a203包含事務(wù)讀寫緩存206和事務(wù)屬性緩存209。系統(tǒng)還包括總線(或片上網(wǎng)絡(luò))210和一個共享存儲器,同時在共享存儲器中分別劃分出處理器a,b,c的局部緩存211,212,213。本系統(tǒng)可以很容易的擴展為包含n個處理器的共享存儲式多處理器系統(tǒng)。本發(fā)明也同樣適用于這樣的系統(tǒng)。在每個處理器上實現(xiàn)事務(wù)讀寫緩存和事物屬性緩存,同時在共享存儲器中分別劃出對應(yīng)處理器的局部緩存空間,即可實現(xiàn)本發(fā)明。本發(fā)明基于五種異常機制的實現(xiàn),達到解決緩存溢出,實現(xiàn)事務(wù)存儲的發(fā)明目的。本發(fā)明中將其統(tǒng)稱為事務(wù)異常。事務(wù)異常包括事務(wù)初始異常、事務(wù)滿異常、事務(wù)讀寫異常、事務(wù)提交異常以及事務(wù)重啟異常。為實現(xiàn)五種事務(wù)異常機制,首先須進行硬件緩存和軟件緩存的設(shè)計;其實現(xiàn)步驟如下步驟1:添加事務(wù)用硬件緩存a)添加事務(wù)屬性緩存(207-209)(TPB,TransactionPropertyBuffer)。即在處理器a201內(nèi)添加了事務(wù)屬性緩存207,在處理器b202內(nèi)添加了事務(wù)屬性緩存208,在處理器c203內(nèi)添加了事務(wù)屬性緩存209。在硬件處理器內(nèi)部,通過片內(nèi)實現(xiàn)高速緩存、內(nèi)部寄存器或者特殊地址配值的方式,添加事務(wù)屬性緩存的硬件模塊。緩存中需要保存TM_num,reg_data,pe_sta,start_pc四部分數(shù)據(jù),如表l所示。表1事務(wù)屬性緩存中記錄的數(shù)據(jù)<table>tableseeoriginaldocumentpage6</column></row><table>b)添加事務(wù)讀寫緩存(204-206)(TRWB,TransactionR/WBuffer)。即在處理器a201內(nèi)添加了事務(wù)讀寫緩存204,在處理器b202內(nèi)添加了事務(wù)讀寫緩存205,在處理器c203內(nèi)添加了事務(wù)讀寫緩存206。該緩存同樣通過高速緩存cache,內(nèi)部寄存器或者地址配值的方式實現(xiàn)。其包含多條事務(wù)讀寫操作的紀錄。添加時需要根據(jù)面向的平臺和具體的應(yīng)用設(shè)定該緩存可以容納記錄條目的多少。每一條記錄包含的數(shù)據(jù)信息如表2所示表2事務(wù)讀寫緩存中一條記錄包含的數(shù)據(jù)<table>tableseeoriginaldocumentpage6</column></row><table>步驟2:添加事務(wù)用軟件緩存在進行事務(wù)管理的系統(tǒng)軟件函數(shù)中,添加維護事務(wù)用軟件緩存。針對系統(tǒng)中的每個處理器,各分配一個處理器局部緩存(211-213)。即在存儲器內(nèi)分別設(shè)置針對處理器a201的a的處理器局部緩存211、針對處理器b202的b的處理器局部緩存212、針對處理器c203的c的處理器局部緩存213。方法是在系統(tǒng)軟件存儲管理的程序代碼中,實現(xiàn)有關(guān)該局部緩存的聲明和操作函數(shù)。比如在操作系統(tǒng)得程序代碼中,添加下列數(shù)據(jù)結(jié)構(gòu)表示<table>tableseeoriginaldocumentpage7</column></row><table>維護該局部緩存所實現(xiàn)的操作函數(shù),作用在于每個緩存對所有處理器開放讀權(quán)限,但僅對相應(yīng)處理器開放寫權(quán)限。例如PrivateMem—Pe2種的數(shù)據(jù)可以被所有處理器讀,但僅能被2號處理器(即處理器b202)執(zhí)行寫操作。權(quán)限由系統(tǒng)軟件維護。以下內(nèi)容如圖3所示。步驟3:實現(xiàn)事務(wù)初始異常機制事務(wù)初始異常發(fā)生在事務(wù)初始時,機制分為硬件實現(xiàn)部分和軟件實現(xiàn)部分。硬件實現(xiàn)部分的實現(xiàn)步驟如下i.(301)在處理器流水線的譯碼級添加事務(wù)初始指令的譯碼單元。當處理器識別到事務(wù)初始指令時,產(chǎn)生事務(wù)使能信號。ii.(302)將事務(wù)使能信號送入總線(或片上網(wǎng)絡(luò))上的事務(wù)仲裁模塊,事務(wù)仲裁模塊根據(jù)處理器產(chǎn)生事務(wù)使能信號的先后順序,為每個事務(wù)分配一個編號TM_num,并將其記錄在事務(wù)屬性緩存中。以Ti,Tj來表示第i個和第j個事務(wù)在系統(tǒng)中出現(xiàn)的先后時間點,則TM—畫i<TM—塵jOL<Tjiii.(303)在事務(wù)屬性緩存中記錄通用寄存器數(shù)據(jù)reg—data,處理器狀態(tài)pe—stat以及事務(wù)起始時指令地址start—pc,也就是事務(wù)起始時的程序上下文。iv.(304)產(chǎn)生事務(wù)初始異常信號,將該處理器的指令指針跳轉(zhuǎn)到事務(wù)初始異常處理的向量入口。產(chǎn)生事務(wù)初始異常后由軟件實現(xiàn)后續(xù)部分。軟件實現(xiàn)部分的實現(xiàn)步驟如下i.(305)進行事務(wù)處理的數(shù)據(jù)結(jié)構(gòu)初始化,主要指TMB數(shù)據(jù)結(jié)構(gòu)的初始化。TMB結(jié)構(gòu)的聲明如下<table>tableseeoriginaldocumentpage7</column></row><table>其中tm_num是該事務(wù)的順序編號,RW_REC是事務(wù)中保存讀寫記錄的雙向鏈表。ii.(306)TMB結(jié)構(gòu)中的RW—REC為一個雙向鏈表,用來存儲事務(wù)讀寫記錄。在本步驟中對RW—REC進行空間分配和初始化。其聲明如下st潔tRW—RECstructRW—REOprev;st潔tRW—REO證t;intrw_flag;inteddrjintdata5其中prev以及next為雙向鏈表的前后指針。rw_flag用來區(qū)分該記錄記錄了讀操作或是寫操作。addr記錄了該讀操作或?qū)懖僮鞯牡刂?。data記錄了寫操作時寫操作的數(shù)據(jù)。iii.異常返回。由軟件實現(xiàn)的上述兩個數(shù)據(jù)結(jié)構(gòu),其空間在處理器局部緩存中分配。步驟4:實現(xiàn)事務(wù)滿異常機制事務(wù)滿異常發(fā)生在事務(wù)執(zhí)行過程中,其硬件實現(xiàn)步驟為i.(307-311)事務(wù)執(zhí)行中每當處理器流水線的譯碼級識別到對存儲器的讀寫指令時,將讀地址信息laddr,寫地址信息saddr和寫數(shù)據(jù)信息data記錄在事務(wù)讀寫緩存中。具體如下(307)識別到事務(wù)運行時,事務(wù)中的讀寫指令;(308)判別處理器(例如處理器a201)內(nèi)部事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)狀態(tài),判別為滿或者未滿;ii.判斷事務(wù)讀寫緩存是否未滿,若滿,則產(chǎn)生事務(wù)滿異常(309),程序跳轉(zhuǎn)到事務(wù)滿異常的向量入口。識別到事務(wù)滿異常后,軟件實現(xiàn)部分將事務(wù)讀寫緩存中的數(shù)據(jù)拷貝到處理器局部緩存中(310),以RW—REC數(shù)據(jù)結(jié)構(gòu)的形式記錄,之后清空硬件的事務(wù)讀寫緩存(311),返回異常。具體如下(309)若滿,產(chǎn)生事務(wù)滿異常;(310)將處理器(例如處理器a201)內(nèi)部事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)中的數(shù)據(jù),拷貝到處理器(例如處理器a201)對應(yīng)的局部緩存(例如局部緩存211)中;(311)清空事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)。步驟5:實現(xiàn)事務(wù)讀寫異常機制事務(wù)讀寫異常也發(fā)生在事務(wù)執(zhí)行過程中,其硬件實現(xiàn)步驟為i.(312,313,315)將事務(wù)執(zhí)行讀寫操作中涉及的地址信息taddr與事務(wù)讀寫緩存中記錄的地址進行比較,若匹配,則以事務(wù)讀寫緩存中的記錄為準進行讀寫操作。具體如下(312)判斷事務(wù)讀寫指令中的讀寫地址是否與事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)中的地址相匹配。(313)若不匹配,產(chǎn)生事務(wù)讀寫異常,轉(zhuǎn)由軟件異常處理程序處理。(315)若匹配,僅在事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)中修改讀寫數(shù)據(jù),保存讀寫操作。ii.若不匹配,產(chǎn)生事務(wù)讀寫異常,跳轉(zhuǎn)到事務(wù)讀寫異常的向量入口。識別到事務(wù)讀寫異常后,軟件實現(xiàn)部分的步驟如下i.(314,316,317)將該讀寫操作中涉及的地址信息taddr與RW_REC中的記錄進行比較,若匹配,則以RW—REC中的數(shù)據(jù)為準進行讀寫操作。若不匹配,則從主存儲器中讀取數(shù)據(jù),更新硬件事務(wù)讀寫緩存。具體如下(314)將該讀寫指令中包含的讀寫地址與處理器(例如處理器a201)對應(yīng)的局部緩存(例如局部緩存211)中保存的地址進行匹配查找。(316)若匹配,僅在局部緩存(例如局部緩存211)中修改讀寫數(shù)據(jù),保存讀寫操作。(317)若不匹配,返回異常。ii.(317)若從未匹配狀態(tài)返回異常,則從存儲器中讀出讀寫數(shù)據(jù),更新事務(wù)讀寫緩存(例如事務(wù)讀寫緩存204)。之后運行后續(xù)事務(wù)指令(318)。若從匹配狀態(tài)返回異常,則不做其他操作,直接運行后續(xù)事務(wù)指令(318)。步驟6:實現(xiàn)事務(wù)提交異常機制事務(wù)提交異常發(fā)生在事務(wù)的提交過程中,其硬件實現(xiàn)步驟為i.(319)在處理器流水線的譯碼級添加事務(wù)提交指令的譯碼單元。當處理器識別到事務(wù)提交指令時,產(chǎn)生事務(wù)提交信號。ii.(320)產(chǎn)生事務(wù)提交異常,跳轉(zhuǎn)到事務(wù)提交異常處理的向量入口。軟件識別到事務(wù)提交異常后,進入事務(wù)提交異常處理程序,軟件部分檢測是否發(fā)生事務(wù)讀寫地址沖突,并在發(fā)生沖突時對其他處理器產(chǎn)生事務(wù)重啟異常。其實現(xiàn)步驟如下i.(321)將事務(wù)讀寫緩存中未滿的數(shù)據(jù)信息拷貝入處理器局部緩存,用RW—REC數(shù)據(jù)結(jié)構(gòu)來表示。ii.檢測其它處理器上是否仍在運行事務(wù),判斷系統(tǒng)中是否存在TM—皿m更小的事務(wù)(322)。若存在,則等待TM—皿m較小的事務(wù)的執(zhí)行完畢(323)。iii.若不存在或等待結(jié)束,根據(jù)RW_REC中的信息對系統(tǒng)中運行的所有事務(wù)進行檢測(324)。若產(chǎn)生沖突,則通過軟件向?qū)?yīng)沖突處理器產(chǎn)生事務(wù)重啟異常(325)(處理器不會對自己產(chǎn)生事務(wù)重啟異常)。iv.根據(jù)本事務(wù)中需要提交的訪存信息對存儲器進行更新(326)。初始化處理器局部緩存,使其可以被重用。v.結(jié)束事務(wù)異常處理流程(327):初始化事務(wù)讀寫緩存以及事務(wù)屬性緩存,使其可以被重用,處理器進入普通指令流處理狀態(tài)。步驟7:實現(xiàn)事務(wù)重啟異常機制系統(tǒng)中某處理器的事務(wù)重啟異常由系統(tǒng)中其它處理器引發(fā),本發(fā)明中將處理事務(wù)重啟異常的處理器稱作本地處理器,將引發(fā)事務(wù)重啟異常的處理器稱作遠程處理器。事務(wù)重啟異常在本發(fā)明中可以發(fā)生在本地處理器運行事務(wù)中的各個階段。接收到該異常后,本地處理器跳轉(zhuǎn)到事務(wù)重啟異常的向量入口,異常處理程序?qū)崿F(xiàn)的步驟如下i.清空處理器局部緩存中的各項數(shù)據(jù)結(jié)構(gòu)。ii.通過指令或地址的賦值啟動事務(wù)的硬件自動恢復(fù)。事務(wù)的硬件自動恢復(fù)包含以下幾個步驟i.將事務(wù)屬性緩存中的通用寄存器數(shù)據(jù)reg—data以及處理器狀態(tài)pe—stat讀出,恢復(fù)事務(wù)起始時系統(tǒng)的運行狀態(tài)。ii.根據(jù)事務(wù)屬性緩存中的事務(wù)起始時指令地址start_pc恢復(fù)程序指令指針,使其指向事務(wù)起始地址。圖3是結(jié)合了以上幾個異常處理的事務(wù)存儲機制實現(xiàn)流程示意圖。處理五種異常機制的觸發(fā)時刻及觸發(fā)條件如表3所示。表3事務(wù)異常觸發(fā)時刻及觸發(fā)條件表[O川]<table>tableseeoriginaldocumentpage10</column></row><table>最后,還需要注意的是,以上列舉的僅是本發(fā)明的一個具體實施例。顯然,本發(fā)明不限于以上實施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認為是本發(fā)明的保護范圍。權(quán)利要求一種共享存儲式多處理器系統(tǒng),包括2個以上的處理器,還包括存儲器以及總線/片上網(wǎng)絡(luò),總線/片上網(wǎng)絡(luò)的一端與每個處理器相連、總線/片上網(wǎng)絡(luò)的另一端與存儲器相連;其特征是在每個處理器內(nèi)分別設(shè)置一個事務(wù)讀寫緩存和一個事務(wù)屬性緩存;在處理器內(nèi)設(shè)置與每個處理器相對應(yīng)的處理器局部緩存。2.根據(jù)權(quán)利要求1所述的共享存儲式多處理器系統(tǒng),其特征是所述事務(wù)屬性緩存用于保存事務(wù)順序編號、通用寄存器數(shù)據(jù)、處理器狀態(tài)和事務(wù)起始時指令地址;事務(wù)讀寫緩存用于保存事務(wù)讀寫操作中涉及到的地址以及寫操作中涉及到的數(shù)據(jù)。3.利用如權(quán)利要求1或2所述的共享存儲式多處理器系統(tǒng)進行的基于異常處理的事務(wù)存儲訪問機制實現(xiàn)方法,其特征在于設(shè)置5種異常機制,分別為事務(wù)初始異常機制、事務(wù)滿異常機制、事務(wù)讀寫異常機制、事務(wù)提交異常機制和事務(wù)重啟異常機制;所述事務(wù)初始異常機制為實現(xiàn)事務(wù)開始時的軟硬件協(xié)調(diào),進行事務(wù)處理的數(shù)據(jù)結(jié)構(gòu)初始化,以及事務(wù)中保存讀寫記錄的雙向鏈表的空間分配和初始化;所述事務(wù)滿異常機制為實現(xiàn)事務(wù)執(zhí)行時的虛擬存儲;當識別到事務(wù)滿異常后,將事務(wù)讀寫緩存中的數(shù)據(jù)拷貝到處理器局部緩存中,以數(shù)據(jù)結(jié)構(gòu)的形式記錄,之后清空硬件事務(wù)讀寫緩存;所述事務(wù)讀寫異常機制為實現(xiàn)事務(wù)執(zhí)行時的虛擬存儲;當識別到事務(wù)讀寫異常后,將該讀寫操作中涉及的地址信息與事務(wù)讀寫記錄的雙向鏈表中的記錄進行比較;若匹配,則以事務(wù)讀寫記錄的雙向鏈表中的數(shù)據(jù)為準進行讀寫操作;若不匹配,則從主存儲器中讀取數(shù)據(jù),更新事務(wù)讀寫緩存。所述事務(wù)提交異常機制為實現(xiàn)事務(wù)提交以及事務(wù)沖突檢測;當識別到事務(wù)提交異常后,將事務(wù)讀寫緩存中未滿的數(shù)據(jù)信息拷貝入處理器局部緩存,用事務(wù)讀寫記錄的雙向鏈表的數(shù)據(jù)結(jié)構(gòu)來表示;此時檢測是否發(fā)生事務(wù)讀寫地址沖突,并在發(fā)生沖突時對其他處理器產(chǎn)生事務(wù)重啟異常;所述事務(wù)重啟異常機制為對發(fā)生沖突后的沖突解決進行保證;當識別到事務(wù)重啟異常后,清空處理器局部緩存中的數(shù)據(jù)結(jié)構(gòu),通過指令或地址的賦值啟動事務(wù)的硬件自動恢復(fù)。全文摘要本發(fā)明公開了一種共享存儲式多處理器系統(tǒng),包括2個以上的處理器,還包括存儲器以及總線/片上網(wǎng)絡(luò),總線/片上網(wǎng)絡(luò)的一端與每個處理器相連、總線/片上網(wǎng)絡(luò)的另一端與存儲器相連;在每個處理器內(nèi)分別設(shè)置一個事務(wù)讀寫緩存和一個事務(wù)屬性緩存;在處理器內(nèi)設(shè)置與每個處理器相對應(yīng)的處理器局部緩存。本發(fā)明還同時公開了利用上述共享存儲式多處理器系統(tǒng)進行的基于異常處理的事務(wù)存儲訪問機制實現(xiàn)方法,其設(shè)置5種異常機制,分別為事務(wù)初始異常機制、事務(wù)滿異常機制、事務(wù)讀寫異常機制、事務(wù)提交異常機制和事務(wù)重啟異常機制。本發(fā)明用于解決事務(wù)存儲實現(xiàn)時的緩存溢出問題。文檔編號G06F15/16GK101719116SQ20091015475公開日2010年6月2日申請日期2009年12月3日優(yōu)先權(quán)日2009年12月3日發(fā)明者劉鵬,史冊,吳東,姚慶棟,姚懿鵬,王維東,王苑瑾,高豐申請人:浙江大學(xué)