專利名稱:支持事務(wù)存儲的系統(tǒng)及基于預(yù)測的事務(wù)執(zhí)行方法
技術(shù)領(lǐng)域:
本發(fā)明涉及支持事務(wù)存儲的系統(tǒng),尤其涉及支持事務(wù)存儲的系統(tǒng) 的溢出預(yù)測。
背景技術(shù):
事務(wù)(Transaction)的概念已經(jīng)被廣泛地應(yīng)用于數(shù)據(jù)庫領(lǐng)域當(dāng) 中。本發(fā)明中所指的事務(wù)有別于傳統(tǒng)的事務(wù)的概念,它是并行計(jì)算領(lǐng) 域中的一個(gè)概念。本發(fā)明中所涉及的事務(wù)指多條指令的執(zhí)行,其中這 多條指令看起來像是一起被原子性地執(zhí)行,執(zhí)行期間沒有任何其他操 作介入。例如,如果一個(gè)存儲器地址在一個(gè)事務(wù)中被訪問,則在該事 務(wù)完成之前,該存儲器地址不應(yīng)該被該事務(wù)之外的其他代碼所修改。
事務(wù)可以直接在計(jì)算機(jī)體系結(jié)構(gòu)層面被實(shí)現(xiàn)。在體系結(jié)構(gòu)層面實(shí) 現(xiàn)事務(wù)的硬件系統(tǒng)被稱為支持事務(wù)存儲或者事務(wù)內(nèi)存(Transactional Memory)的系統(tǒng)。采用支持事務(wù)存儲的系統(tǒng),編程人員不必再繼續(xù) 使用傳統(tǒng)的鎖(lock)機(jī)制來保護(hù)共享數(shù)據(jù)的訪問,同時(shí)使程序的性 能保持在可接受的范圍內(nèi),因此軟件開發(fā)效率有所提高。
支持事務(wù)存儲的系統(tǒng)的一種實(shí)現(xiàn)方法如下。在處理器芯片內(nèi)部增 加專用緩沖器,將一個(gè)事務(wù)要寫的數(shù)據(jù)(推測性數(shù)據(jù))存儲在該專用 緩沖器中,而不是將其直接寫到普通的存儲器系統(tǒng)。如果兩個(gè)事務(wù)都 對同一地址進(jìn)行訪問,且其中至少一個(gè)是寫操作,則其中一個(gè)事務(wù)必 須回退(rollback)并且重新執(zhí)行,而另 一個(gè)事務(wù)可以繼續(xù)執(zhí)行。這 種情況被稱為"沖突"。如果不存在沖突,則在事務(wù)結(jié)束時(shí),將臨時(shí)存 儲在專用緩沖器中的數(shù)據(jù)寫到普通的存儲器系統(tǒng)中。這個(gè)動(dòng)作被稱為 "提交"。也就是說,事務(wù)被推測性地執(zhí)行,并且在該事務(wù)中的所有操 作被推測性地執(zhí)行之后才將推測性執(zhí)行的結(jié)果提交到普通的存儲器系統(tǒng)中。
圖1示意性地示出了這種支持事務(wù)存儲的系統(tǒng)的原理圖。如圖1
所示,在支持事務(wù)存儲的系統(tǒng)中設(shè)置有硬件緩沖器1012或1022,用 于在執(zhí)行事務(wù)過程中臨時(shí)存儲該事務(wù)要寫的所有數(shù)據(jù),即推測性數(shù) 據(jù)。在該事務(wù)的所有程序代碼都被執(zhí)行完成之后,才將存儲在硬件緩 沖器中的推測性數(shù)據(jù)通過總線1030提交到普通的存儲器系統(tǒng)中。需 要指出的是,作為另外一種實(shí)現(xiàn)方法,硬件緩沖器1012可以和數(shù)據(jù) 高速緩沖器1014合并在一個(gè)物理硬件中,硬件緩沖器1022可以和數(shù) 據(jù)高速緩沖器1024合并在一個(gè)物理硬件中。這種實(shí)現(xiàn)方法就本發(fā)明 所關(guān)心的內(nèi)容看來是一樣的,本發(fā)明的精神實(shí)質(zhì)可以繼續(xù)適用,因此 不再單獨(dú)闡述。
在現(xiàn)有技術(shù)中,所有事務(wù)都是被推測性地執(zhí)行。其中在推測性執(zhí) 行過程中,該事務(wù)要寫的所有數(shù)據(jù)被臨時(shí)存儲在硬件緩沖器中。只有 在該事務(wù)的所有程序代碼都被成功(推測性)執(zhí)行之后,才將存儲在 硬件緩沖器中的推測性數(shù)據(jù)提交到普通的存儲器系統(tǒng)中,此時(shí)該事務(wù) 才成功地執(zhí)行完成。
但是,因?yàn)橛布彌_器不可能非常大,所以如果事務(wù)很大(即訪 問大量地址),則緩沖器不能保存所有數(shù)據(jù),從而緩沖器將溢出。在 現(xiàn)有技術(shù)中,緩沖器溢出將強(qiáng)迫事務(wù)異常終止(在以下將其稱為事務(wù) 溢出),然后重新執(zhí)行該事務(wù)。 一般說來,重新執(zhí)行該事務(wù)時(shí),為避 免再次溢出,將采用很費(fèi)時(shí)的方式來進(jìn)行處理,比如退回到以前基于 鎖的方法。本發(fā)明并不關(guān)心具體的處理溢出事務(wù)的方法。在以下敘述 中,將用基于鎖的方法為例進(jìn)行說明,但是它泛指所有費(fèi)時(shí)的處理溢 出事務(wù)的方法。
根據(jù)上述說明,在現(xiàn)有技術(shù)中存在兩種方式執(zhí)行一個(gè)事務(wù)。如果 事務(wù)小,則通過將推測性數(shù)據(jù)存儲在硬件緩沖器的方式來執(zhí)行該事務(wù)
(簡稱為利用硬件緩沖器來執(zhí)行),這種方法速度快;而如果事務(wù)大, 則通過基于鎖的方法來執(zhí)行該事務(wù),這種方法速度慢。
但是,在現(xiàn)有技術(shù)中,在事務(wù)執(zhí)行之前并不知道該事務(wù)是否將溢出,即不知道對于該事務(wù)的執(zhí)行,硬件緩沖器是否會(huì)溢出。因此,不 管事務(wù)大還是小,都首先假設(shè)不會(huì)溢出,利用硬件緩沖器來執(zhí)行。而 大的事務(wù)的執(zhí)行會(huì)由于硬件緩沖器溢出而異常終止,然后異常終止的 事務(wù)再通過第二種慢速的方法重新執(zhí)行。因此,大的事務(wù)必須試探性 地運(yùn)行第一次,在因?yàn)橐绯龆惓=K止之后再通過基于鎖的方法重新 執(zhí)行。在這樣的情形下,大的事務(wù)的第一次運(yùn)行(即發(fā)生異常終止的 那次執(zhí)行)浪費(fèi)了時(shí)間和能量,并占用了系統(tǒng)資源。
在美國專利申請文獻(xiàn)US2005/0060559中7>開了一種通過運(yùn)行一 個(gè)偽事務(wù)(pseudo-transactions)來判斷事務(wù)是否會(huì)溢出的方法。但 是,在這種方法中,同樣必須通過運(yùn)行一次來判斷事務(wù)是否溢出,而 運(yùn)行一次會(huì)消耗時(shí)間和能量,并占用了系統(tǒng)資源。
而在美國專利申請文獻(xiàn)US2006/0085591中公開了 一種通過軟硬 件混合實(shí)現(xiàn)的支持事務(wù)存儲的系統(tǒng),其中如果硬件事務(wù)存儲器系統(tǒng)溢 出,就切換到軟件事務(wù)存儲器系統(tǒng)中重新運(yùn)行。也就是說,該專利文 獻(xiàn)提出了一種溢出后的處理方法,而這種處理方法是以運(yùn)行一次并且 溢出為代價(jià)的。
發(fā)明內(nèi)容
本發(fā)明的目的是對現(xiàn)有技術(shù)中的上述不足進(jìn)行改進(jìn),即在一個(gè)事 務(wù)執(zhí)行之前事先確定其是否會(huì)溢出,從而節(jié)省了事務(wù)執(zhí)行時(shí)間和消耗 的能量以及占用的資源。
為此,本發(fā)明提出了 一種具有溢出預(yù)測機(jī)制的支持事務(wù)存儲的系 統(tǒng),其中在事務(wù)執(zhí)行之前預(yù)測該事務(wù)是否會(huì)溢出,然后根據(jù)預(yù)測結(jié)果
來執(zhí)行事務(wù)。如果一個(gè)事務(wù)被預(yù)測為不溢出,則該事務(wù)在事務(wù)模式(也 被稱為非溢出模式)下執(zhí)行,即利用硬件緩沖器執(zhí)行。而如果一個(gè)事 務(wù)被預(yù)測為溢出,則該事務(wù)在溢出模式下工作,即該事務(wù)的執(zhí)行不使 用硬件緩沖器,而是例如通過基于鎖的方法執(zhí)行。
為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種支持事 務(wù)存儲的系統(tǒng),包括預(yù)測單元,用于根據(jù)事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測所述事務(wù)的下一次執(zhí)行模式;執(zhí)行單元,用于在預(yù)測單元所 預(yù)測的執(zhí)行模式下執(zhí)行所述事務(wù)。其中執(zhí)行模式包括溢出模式和非溢 出模式。
根據(jù)本發(fā)明的另一方面,提供了一種基于預(yù)測的事務(wù)執(zhí)行方法, 包括預(yù)測步驟,用于根據(jù)事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài),預(yù)測所述 事務(wù)的下一次執(zhí)行模式;執(zhí)行步驟,用于在預(yù)測步驟所預(yù)測的執(zhí)行模 式下執(zhí)行事務(wù)。其中執(zhí)行模式包括溢出模式和非溢出模式。
根據(jù)本發(fā)明的再一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,包括存儲 在計(jì)算機(jī)可讀存儲介質(zhì)中的程序代碼,所述程序代碼用于實(shí)現(xiàn)根據(jù)本 發(fā)明的方法。
本發(fā)明在事務(wù)執(zhí)行之前就基于該事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài) 預(yù)測該事務(wù)的下一次執(zhí)行的執(zhí)行模式,從而節(jié)省了為了判斷溢出所必 須執(zhí)行的一次運(yùn)行,并因此提高了性能并節(jié)省了能量和資源。
通過結(jié)合附圖,參考以下對示例性實(shí)施例的詳細(xì)描述,將更好地 理解示例性實(shí)施例本身以及其優(yōu)選使用方式、其他目標(biāo)和其優(yōu)點(diǎn),其 中
圖l示意性地示出了支持事務(wù)存儲的系統(tǒng)的原理圖; 圖2示出了根據(jù)本發(fā)明的支持事務(wù)存儲的系統(tǒng)的示意性方框圖; 圖3示出了根據(jù)本發(fā)明的基于預(yù)測的事務(wù)執(zhí)行方法的流程圖; 圖4以在處理器內(nèi)核中實(shí)現(xiàn)的方式示出了根據(jù)本發(fā)明的支持事務(wù) 存儲的系統(tǒng)的 一個(gè)例子的示意圖5示出了根據(jù)本發(fā)明第一實(shí)施例的支持事務(wù)存儲的系統(tǒng)的示意
圖6示出了根據(jù)本發(fā)明第一實(shí)施例的基于預(yù)測的事務(wù)執(zhí)行方法 的流程圖7示出了根據(jù)本發(fā)明第二實(shí)施例的支持事務(wù)存儲的系統(tǒng)中查找 表的一項(xiàng)的示意圖;圖8示出了說明根據(jù)本發(fā)明第二實(shí)施例的狀態(tài)機(jī); 圖9示出了根據(jù)本發(fā)明第二實(shí)施例的基于預(yù)測的事務(wù)執(zhí)行方法 的流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖參 考優(yōu)選實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。
在根據(jù)本發(fā)明的支持事務(wù)存儲的系統(tǒng)中,存在以下三種模式
1) 非事務(wù)模式,用于非事務(wù)代碼的執(zhí)行。在非事務(wù)模式中,如 普通方式那樣執(zhí)行訪存操作;
2) 事務(wù)模式,也被稱為非溢出模式,用于被預(yù)測為不溢出的事 務(wù)的執(zhí)行。大部分事務(wù)是小事務(wù)并在非溢出模式中執(zhí)行;
3) 溢出模式,用于被預(yù)測為溢出的事務(wù)的執(zhí)行。由于硬件緩沖 器容量的限制,少量的大事務(wù)在溢出模式下被執(zhí)行。
圖2示出了根據(jù)本發(fā)明的具有預(yù)測機(jī)制的支持事務(wù)存儲的系統(tǒng) 的方框圖。如圖2所示,根據(jù)本發(fā)明的具有預(yù)測機(jī)制的支持事務(wù)存儲 的系統(tǒng)200包括預(yù)測單元202和執(zhí)行單元201。預(yù)測單元202根據(jù)事 務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測事務(wù)的下 一 次執(zhí)行模式,而執(zhí)行單元 201才艮據(jù)預(yù)測單元202的預(yù)測,即在預(yù)測單元202所預(yù)測的執(zhí)行模式 (溢出模式或非溢出模式)下執(zhí)行該事務(wù)。
優(yōu)選地,根據(jù)本發(fā)明的預(yù)測單元202包括查找表。查找表包含多 項(xiàng)(例如32個(gè)或更多項(xiàng)),每項(xiàng)具有一個(gè)物理地址字段和(一個(gè)或 多個(gè))預(yù)測信息字段,其中物理地址字段中存儲事務(wù)的物理地址,例 如事務(wù)的起始指令的地址,而相應(yīng)的預(yù)測信息字段中存儲關(guān)于該事務(wù) 下一次執(zhí)行是否溢出的預(yù)測,即該事務(wù)的執(zhí)行模式信息。
由于查找表只具有有限的項(xiàng),因此在所有項(xiàng)都被使用的情況下必 須對某些項(xiàng)進(jìn)行替換。對于選擇哪些項(xiàng)進(jìn)行替換,可以使用現(xiàn)有技術(shù) 中的多種方法,諸如循環(huán)法、最近最少使用算法(LRU)和隨機(jī)法。
優(yōu)選地,根據(jù)本發(fā)明的具有預(yù)測機(jī)制的支持事務(wù)存儲的系統(tǒng)200還可以包括狀態(tài)寄存器。執(zhí)行單元201對狀態(tài)寄存器進(jìn)行設(shè)置,并通 過狀態(tài)寄存器來控制對程序代碼的執(zhí)行。對于非事務(wù)的程序代碼,執(zhí) 行單元201將狀態(tài)寄存器設(shè)置為非事務(wù)模式,使得該非事務(wù)的程序代 碼在非事務(wù)模式下執(zhí)行;對于被預(yù)測單元202預(yù)測為不溢出的事務(wù), 執(zhí)行單元201將狀態(tài)寄存器設(shè)置為非溢出模式,使得被預(yù)測為不溢出 的事務(wù)在非溢出模式下執(zhí)行;而對于被預(yù)測單元202預(yù)測為溢出的事 務(wù),執(zhí)行單元201將狀態(tài)寄存器設(shè)置為溢出模式,使得被預(yù)測為溢出 的事務(wù)在溢出模式下執(zhí)行。
根據(jù)本發(fā)明,當(dāng)一個(gè)事務(wù)開始被執(zhí)行時(shí),例如當(dāng)該事務(wù)的起始指 令被執(zhí)行時(shí),執(zhí)行單元201搜索查找表。如果在查找表中找到某一項(xiàng) 的物理地址字段中所存儲的物理地址等于該事務(wù)的地址,例如該事務(wù) 的起始指令的地址,則被稱為"命中(hit)",否則被稱為"未命中 (miss)"。如果搜索結(jié)果為命中,則執(zhí)行單元201根據(jù)查找表中命中 項(xiàng)的預(yù)測信息字段中所存儲的執(zhí)行模式信息來執(zhí)行該事務(wù)。例如,如 果命中項(xiàng)的預(yù)測信息字段指示溢出模式(即該事務(wù)被預(yù)測為溢出), 則狀態(tài)寄存器被執(zhí)行單元201設(shè)置為溢出模式,于是當(dāng)前事務(wù)在溢出 模式下運(yùn)行。如果命中項(xiàng)的預(yù)測信息字段指示非溢出模式(即該事務(wù) 被預(yù)測為不溢出),則狀態(tài)寄存器被執(zhí)行單元201設(shè)置為非溢出模式, 于是當(dāng)前事務(wù)在非溢出模式下運(yùn)行。如果搜索結(jié)果為未命中,則狀態(tài) 寄存器被執(zhí)行單元201設(shè)置為非溢出模式,于是當(dāng)前事務(wù)在非溢出模 式下運(yùn)行,后面章節(jié)將更詳細(xì)地介紹??蛇x地在任何事務(wù)結(jié)束后,執(zhí) 行單元都將狀態(tài)寄存器設(shè)置為非事務(wù)模式。
圖3示出了根據(jù)本發(fā)明的基于預(yù)測的事務(wù)執(zhí)行方法的流程圖。如 圖3所示,首先在步驟S301中執(zhí)行預(yù)測步驟,即根據(jù)事務(wù)先前執(zhí)行 的執(zhí)行結(jié)束狀態(tài)預(yù)測該事務(wù)的下一次執(zhí)行模式。然后根據(jù)步驟S301 中的預(yù)測結(jié)果,在步驟S301中所預(yù)測的執(zhí)行模式下執(zhí)行事務(wù)。在步 驟S302中判斷在步驟S301中所作的預(yù)測是否是溢出預(yù)測,即判斷步 驟S301中所預(yù)測的下一次執(zhí)行模式是否是溢出模式。如果是,則在 步驟S303中在溢出模式下執(zhí)行該事務(wù)。相反,如果在步驟S301中將該事務(wù)的下一次執(zhí)行模式預(yù)測為非溢出模式,則在步驟S304中在非 溢出模式下執(zhí)行該事務(wù)。
圖4以在處理器內(nèi)核中實(shí)現(xiàn)的形式示出了根據(jù)本發(fā)明的具有預(yù) 測機(jī)制的支持事務(wù)存儲的系統(tǒng)的詳細(xì)結(jié)構(gòu)的示意圖。如圖4所示,根 據(jù)本發(fā)明的具有預(yù)測機(jī)制的支持事務(wù)存儲的系統(tǒng)400包括執(zhí)行單元 401和預(yù)測單元402。支持事務(wù)存儲的系統(tǒng)400還可以包括執(zhí)行讀操 作的加栽單元404、執(zhí)行寫操作的存儲單元405、控制存儲單元405 和加載單元404對數(shù)據(jù)的寫入或讀取(即控制讀操作和寫操作的數(shù)據(jù) 流)的數(shù)據(jù)流控制器409、高速緩存器406、寫緩沖器407和讀緩沖 器408。優(yōu)選地,根據(jù)本發(fā)明的具有預(yù)測機(jī)制的支持事務(wù)存儲的系統(tǒng) 400還包括狀態(tài)寄存器403。在圖4所示的示例中,狀態(tài)寄存器403 通過數(shù)據(jù)流控制器409來控制事務(wù)的讀操作和寫操作的數(shù)據(jù)流。
根據(jù)本發(fā)明,當(dāng)預(yù)測單元402將一個(gè)事務(wù)預(yù)測為溢出,即預(yù)測該 事務(wù)的下一次執(zhí)行模式是溢出模式時(shí),執(zhí)行單元401在溢出模式下執(zhí) 行該事務(wù),即不通過硬件緩沖器執(zhí)行該事務(wù)。
可選地,在預(yù)測單元402將一個(gè)事務(wù)預(yù)測為溢出時(shí),執(zhí)行單元 401將狀態(tài)寄存器403設(shè)置為溢出模式,于是狀態(tài)寄存器403通過數(shù) 據(jù)流控制器409來實(shí)現(xiàn)該事務(wù)在溢出模式下的執(zhí)行。例如,對于該事 務(wù)的讀操作,加載單元404在數(shù)據(jù)流控制器409的控制下直接從高速 緩存器406讀取數(shù)據(jù),而對于該事務(wù)的寫操作,存儲單元405在數(shù)據(jù) 流控制器409的控制下將數(shù)據(jù)直接寫入到高速緩存器406中。
當(dāng)預(yù)測單元402將一個(gè)事務(wù)預(yù)測為不溢出、即預(yù)測該事務(wù)的下一 次執(zhí)行模式為非溢出模式時(shí),執(zhí)行單元401在非溢出模式下執(zhí)行該事 務(wù),即通過硬件緩沖器(寫緩沖器407和讀緩沖器408)執(zhí)行該事務(wù)。
可選地,當(dāng)預(yù)測單元402將一個(gè)事務(wù)預(yù)測為不溢出時(shí),執(zhí)行單元 401將狀態(tài)寄存器403設(shè)置為非溢出模式,于是狀態(tài)寄存器403通過 數(shù)據(jù)流控制器409來實(shí)現(xiàn)該事務(wù)在非溢出模式下的執(zhí)行。
本領(lǐng)域技術(shù)人員可以想到,數(shù)據(jù)流控制器409可以使用多路復(fù)用 器、觸發(fā)器、開關(guān)等等來實(shí)現(xiàn)。以下介紹根據(jù)本發(fā)明的基于事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測 該事務(wù)是否溢出、即預(yù)測該事務(wù)的下一次執(zhí)行模式的過程的兩個(gè)優(yōu)選 實(shí)施例。
圖5示出了根據(jù)本發(fā)明第一實(shí)施例的具有預(yù)測機(jī)制的支持事務(wù) 存儲的系統(tǒng)的示意圖。在圖5所示的支持事務(wù)存儲的系統(tǒng)500中,預(yù) 測單元502包括查找表5021,該查找表中每項(xiàng)具有兩個(gè)字段,其中一 個(gè)字段是記錄物理地址的地址字段,另一個(gè)字段是記載溢出位的溢出 位字段。如果溢出位為1,則表示相應(yīng)事務(wù)被預(yù)測為溢出,即該事務(wù) 的下一執(zhí)行模式被預(yù)測為溢出模式;相反,如果溢出位為0,則表示 相應(yīng)事務(wù)被預(yù)測為不溢出,即該事務(wù)的下一次執(zhí)行模式被預(yù)測為非溢 出模式。本領(lǐng)域技術(shù)人員應(yīng)該理解,溢出字段除了通過一個(gè)比特位來 實(shí)現(xiàn)以外,也可以通過多個(gè)比特位來實(shí)現(xiàn)。例如用一個(gè)含有多個(gè)比特 位的計(jì)數(shù)器,只有溢出的次數(shù)累積到一個(gè)閾值才預(yù)測該事務(wù)的下一執(zhí) 行模式為溢出模式。這些方法是本領(lǐng)域的常識,以下針對第一實(shí)施例 的介紹僅以單比特位的實(shí)現(xiàn)為例進(jìn)行說明。
根據(jù)本發(fā)明的第一實(shí)施例,查找表5021中各項(xiàng)的初始狀態(tài)為無 效(invalid)。當(dāng)一個(gè)事務(wù)開始時(shí),在執(zhí)行單元501中執(zhí)行該事務(wù)的 起始指令。于是,執(zhí)行單元501搜索查找表5021。如果搜索結(jié)果為未 命中,則該事務(wù)的地址、即該事務(wù)的起始指令的物理地址被記錄在查 找表5021的某一項(xiàng)的地址字段中,并且該項(xiàng)的溢出位字段被設(shè)置為0, 即事務(wù)被預(yù)測為不溢出。
根據(jù)本發(fā)明,如果搜索結(jié)果為命中,則根據(jù)命中的項(xiàng)的溢出位設(shè) 置狀態(tài)寄存器503。
如果預(yù)測單元502將一個(gè)事務(wù)預(yù)測為不溢出,則執(zhí)行單元501 將在非溢出模式下執(zhí)行該事務(wù)。
在非溢出模式下,對于事務(wù)寫操作,存儲單元505在數(shù)據(jù)流控制 器509的控制下將數(shù)據(jù)寫入寫緩沖器507中,而不是將數(shù)據(jù)寫入一級 高速緩存器506中。其中如果命中寫緩沖器507,即在寫緩沖器507 中發(fā)現(xiàn)事務(wù)寫操作所指向的地址,則數(shù)據(jù)流控制器509控制存儲單元505直接將數(shù)據(jù)寫入到寫緩沖器507中。相反,如果未命中寫緩沖器 507,則進(jìn)行沖突檢測。如果沖突檢測確定不存在沖突,則存儲單元 505將在寫緩沖器507中為該事務(wù)寫操作分配一項(xiàng),將該事務(wù)寫操作 所指向的地址寫入寫緩沖器507中該項(xiàng)的地址字段中,并將數(shù)據(jù)寫入 寫緩沖器507中該項(xiàng)的相應(yīng)存儲字段中。相反,如果沖突檢測確定存 在沖突,則選擇發(fā)生沖突的事務(wù)之一異常終止。在任何情況下,如果 寫緩沖器507溢出,則事務(wù)異常終止。
在非溢出模式下,對于事務(wù)讀操作,加載單元504從一級高速緩 存器506和寫緩沖器507 二者讀取數(shù)據(jù),并檢查該事務(wù)讀操作所指向 的地址是否命中讀緩沖器508。對于事務(wù)讀操作,如果命中寫緩沖器 507,則在數(shù)據(jù)流控制器509的控制下返回來自寫緩沖器507的數(shù)據(jù), 并忽略來自 一級高速緩存器506的數(shù)據(jù);如果未命中寫緩沖器507但 命中讀緩沖器508,則在數(shù)據(jù)流控制器509的控制下返回來自一級高 速緩存器506的數(shù)據(jù);而如果寫緩沖器507和讀緩沖器508 二者都未 命中,則進(jìn)行沖突檢測。如果沖突檢測確定不存在沖突,則加載單元 504重新從一級高速緩存器506讀取數(shù)據(jù),并將該數(shù)據(jù)的地址(即該 事務(wù)讀操作所指向的地址)記錄到讀緩沖器508中。相反,如果沖突 檢測確定存在沖突,則選擇沖突的事務(wù)之一異常終止。
根據(jù)本發(fā)明,如果一個(gè)在非溢出模式下執(zhí)行的事務(wù)最后發(fā)生溢 出,則在該事務(wù)溢出之后,將查找表5021中與該事務(wù)相對應(yīng)的項(xiàng)中 的溢出位改變?yōu)?,即將對該事務(wù)的預(yù)測改變?yōu)橐绯?,從而該事?wù)的 下一次執(zhí)行將在溢出模式下執(zhí)行。
如果預(yù)測單元502將一個(gè)事務(wù)預(yù)測為溢出,則執(zhí)行單元501將在 溢出模式下執(zhí)行該事務(wù)。
在溢出模式下,事務(wù)中的執(zhí)行不使用硬件緩沖器(即寫緩沖器 507和讀緩沖器508)來保存臨時(shí)數(shù)據(jù)和數(shù)據(jù)地址;相反,事務(wù)寫操 作將數(shù)據(jù)直接存儲到一級高速緩存器506中,而事務(wù)中的讀操作直接 從一級高速緩存器506讀取數(shù)據(jù)。
根據(jù)本發(fā)明的第一實(shí)施例,在溢出模式下,除了直接從/向一級高速緩存器506讀取/寫入數(shù)據(jù)之外,還將寫數(shù)據(jù)地址(即事務(wù)寫操作 所指向的地址)記錄到寫緩沖器507中。
優(yōu)選地,如果在溢出模式下執(zhí)行的事務(wù)結(jié)束時(shí),寫緩沖器507 中的地址空間能夠保持該事務(wù)的所有寫操作的地址,則表明該事務(wù)實(shí) 際上并不溢出,即對于該事務(wù)的溢出預(yù)測不正確,于是預(yù)測單元502 修改查找表中相應(yīng)項(xiàng)中的溢出位,即將對該事務(wù)的溢出預(yù)測修改為非 溢出預(yù)測。相反,如果寫緩沖器507中的地址空間不足以保持該事務(wù) 的所有寫操作的地址,則表明該事務(wù)確實(shí)溢出,即關(guān)于該事務(wù)溢出的 預(yù)測是正確的,于是預(yù)測單元502仍然預(yù)測該事務(wù)溢出,即預(yù)測該事 務(wù)的下一次執(zhí)行模式為溢出模式。
優(yōu)選地,還將讀數(shù)據(jù)地址(即事務(wù)讀操作所指向的地址)記錄到 讀緩沖器508中,并且,在溢出模式下執(zhí)行的事務(wù)結(jié)束時(shí),只有硬件 緩沖器(即寫緩沖器507和讀緩沖器508)中的地址空間能夠保持該 事務(wù)所訪問的所有地址(包括寫操作和讀操作所涉及的數(shù)據(jù)地址), 即寫緩沖器足以記錄該事務(wù)的所有寫操作的數(shù)據(jù)地址,并且讀緩沖器 足以記錄該事務(wù)的所有讀操作的數(shù)據(jù)地址,才表明關(guān)于該事務(wù)的溢出 預(yù)測不正確,于是預(yù)測單元502才^務(wù)改查找表中相應(yīng)項(xiàng)中的溢出位,
即將對于該事務(wù)的溢出預(yù)測修改為非溢出預(yù)測。
在以上過程中,寫緩沖器507和/或讀緩沖器508提供了簿記功 能??蛇x地,當(dāng)事務(wù)結(jié)束時(shí),寫緩沖器507和讀緩沖器508被清空。
在溢出模式中,不需要沖突檢測,并且硬件緩沖器中地址空間的 溢出不強(qiáng)迫事務(wù)異常終止,因?yàn)閿?shù)據(jù)已經(jīng)被保存在一級高速緩存器 506中。
由上面可知,根據(jù)本發(fā)明的第一實(shí)施例,可以在一個(gè)被預(yù)測為溢 出的事務(wù)執(zhí)行結(jié)束時(shí)準(zhǔn)確地確定該事務(wù)是否確實(shí)溢出。如果關(guān)于溢出
的預(yù)測是錯(cuò)誤的,則將下一次執(zhí)行預(yù)測為非溢出;否則,再次將下一 次執(zhí)行預(yù)測為溢出。
圖6示出了根據(jù)本發(fā)明第一實(shí)施例的基于預(yù)測的事務(wù)執(zhí)行方法
的流程圖。如圖6所示,在步驟S601,預(yù)測事務(wù)是否溢出,即預(yù)測事務(wù)的下一次執(zhí)行模式。在前面對第一實(shí)施例的具體描述中,步驟S601 讀取查找表中所存儲的執(zhí)行模式信息。然后,在步驟S602中判斷步 驟S601中的預(yù)測是否是溢出預(yù)測(即步驟S601中所預(yù)測(讀取)的 執(zhí)行模式是否是溢出模式)。如果是溢出預(yù)測,則在步驟S603中在 溢出模式下執(zhí)行該事務(wù)。而如果不是溢出預(yù)測,則在S604中在非溢 出模式下執(zhí)行該事務(wù)。
根據(jù)本發(fā)明的第一實(shí)施例,在溢出模式下執(zhí)行時(shí),利用寫緩沖器 記錄寫數(shù)據(jù)地址。優(yōu)選地,在這次執(zhí)行結(jié)束后,在步驟S605中判斷 寫緩沖器是否足以記錄所有被寫的數(shù)據(jù)的地址(即寫數(shù)據(jù)地址)。如 果是,則在步驟S607中將該事務(wù)的執(zhí)行模式信息修改為非溢出模式, 即指示該事務(wù)的下一次執(zhí)行模式是非溢出模式,否則在步驟S608中 將該事務(wù)的執(zhí)行模式信息保持為溢出模式,即指示該事務(wù)的下一次執(zhí) 行模式是溢出模式。
在非溢出模式下執(zhí)行的情況下,在這次事務(wù)執(zhí)行之后,在步驟 S606中判斷該執(zhí)行是否發(fā)生了溢出。如果發(fā)生了溢出,則在步驟S609 中將該事務(wù)的執(zhí)行模式信息修改為溢出模式,否則在步驟S610中將 該事務(wù)的執(zhí)行模式信息保持為非溢出模式。
下面描述根據(jù)本發(fā)明的第二實(shí)施例。
在根據(jù)本發(fā)明的第二實(shí)施例中,支持事務(wù)存儲的系統(tǒng)的結(jié)構(gòu)與第 一實(shí)施例基本相同,事務(wù)在非溢出模式下的執(zhí)行也與第一實(shí)施例基本 相同,所不同的是事務(wù)在溢出模式下的工作過程。
根據(jù)本發(fā)明的第二實(shí)施例,在預(yù)測事務(wù)溢出的同時(shí),還推測該事 務(wù)將溢出多少次。
根據(jù)本發(fā)明的第二實(shí)施例,對于在非溢出模式下執(zhí)行的事務(wù),如 果該事務(wù)的該次執(zhí)行因?yàn)橐绯龆惓=K止,則預(yù)測單元除了預(yù)測該事 務(wù)的下一次執(zhí)行將溢出之外,還預(yù)測該事務(wù)將連續(xù)溢出N次,從而預(yù) 測單元在隨后N次對該事務(wù)的預(yù)測中預(yù)測該事務(wù)溢出,即該事務(wù)在隨 后N次的執(zhí)行都在溢出模式下,并且預(yù)測單元預(yù)測該事務(wù)隨后的第 N+l次執(zhí)行將不會(huì)溢出。優(yōu)選地,通過采用指數(shù)遞增策略來推測事務(wù)將溢出的次數(shù)N。例 如,假設(shè)預(yù)測單元當(dāng)前預(yù)測一個(gè)事務(wù)要溢出N次。則該事務(wù)的接下來 的N次執(zhí)行將處于溢出模式中。在該事務(wù)的這N次在溢出模式下的 執(zhí)行之后,預(yù)測單元翻轉(zhuǎn)(flip)預(yù)測位,即將該事務(wù)預(yù)測為不溢出。 但是,如果該事務(wù)的第N+l次執(zhí)行(該次執(zhí)行在非溢出模式下)再次 發(fā)生溢出,則預(yù)測單元將該事務(wù)的N加倍,即預(yù)測該事務(wù)將溢出2N 次。
有利地,根據(jù)本發(fā)明的第二實(shí)施例,如果事務(wù)在發(fā)生溢出的執(zhí)行 的前一次執(zhí)行是在非溢出模式下的執(zhí)行,則預(yù)測單元將該事務(wù)將溢出
的次數(shù)預(yù)測為最小值Nmin;否則預(yù)測單元將該事務(wù)將溢出的次數(shù)預(yù)測 為上次預(yù)測的次數(shù)的兩倍。優(yōu)選地,事務(wù)將溢出的最大次數(shù)被設(shè)置為
Nmax。默認(rèn)的最小值Nmin可以取值為l,當(dāng)然也可以取其它2的冪或其 它整數(shù)。最大值Nmax的取值取決于圖7中計(jì)數(shù)器702所能存儲的數(shù)的 范圍。比如,如果702有3個(gè)比特位,那么最大的值就是二進(jìn)制IOO, 也就是十進(jìn)制4。因?yàn)樵趦?yōu)選實(shí)施例中Nmax必須是2的冪,所以最大 值不是二進(jìn)制lll。計(jì)數(shù)器702本質(zhì)上是一個(gè)寄存器,它包含多少個(gè)比 特位取決于具體實(shí)現(xiàn)。
圖7示出了根據(jù)本發(fā)明第二實(shí)施例的查找表中一項(xiàng)的一個(gè)例子, 其中具有四個(gè)字段,計(jì)數(shù)器字段702替代了本發(fā)明第一實(shí)施例中的溢 出位字段。如果計(jì)數(shù)器字段702中的內(nèi)容(即計(jì)數(shù)器)為0,則表示 相應(yīng)事務(wù)被預(yù)測為不溢出,即預(yù)測該事務(wù)的下一次執(zhí)行模式為非溢出 模式;相反,如果不為0,則表示相應(yīng)事務(wù)被預(yù)測為溢出,即預(yù)測該 事務(wù)的下一次執(zhí)行模式為溢出模式。每次當(dāng)事務(wù)在溢出模式下執(zhí)行 時(shí),相應(yīng)項(xiàng)中的計(jì)數(shù)器減l。指數(shù)字段703中的內(nèi)容(即指數(shù))表示 計(jì)數(shù)器的初始值。
在根據(jù)本發(fā)明的第二實(shí)施例中,最初,查找表中所有項(xiàng)為無效的。
當(dāng)一個(gè)事務(wù)開始時(shí),執(zhí)行單元搜索查找表。
如果搜索未命中,則該事務(wù)的地址、例如事務(wù)起始指令的地址被 記錄到查找表中某一項(xiàng)的地址字段701中。該項(xiàng)中的計(jì)數(shù)器字段702、指數(shù)字段703和保持位(stick bit)字段704的內(nèi)容都被設(shè)置為0。于 是,該事務(wù)被預(yù)測為非溢出,并在非溢出模式下執(zhí)行。當(dāng)該事務(wù)結(jié)束 時(shí),如果該事務(wù)實(shí)際上溢出了,則相應(yīng)項(xiàng)中的計(jì)數(shù)器和指數(shù)被設(shè)置為 1,并且保持位被設(shè)置為0。
如果搜索結(jié)果為命中,并且計(jì)數(shù)器為0,則事務(wù)被預(yù)測為非溢出, 并且在非溢出模式下執(zhí)行。其中,對于保持位為0的情形,如果事務(wù) 在結(jié)束時(shí)實(shí)際上溢出了,則相應(yīng)的指數(shù)和計(jì)數(shù)器被設(shè)置為1,并且保 持位被保持為0;而如果事務(wù)在結(jié)束時(shí)實(shí)際上并未溢出,則相應(yīng)項(xiàng)中 的內(nèi)容保持不變。而對于保持位為l的情形,如果事務(wù)在結(jié)束時(shí)實(shí)際 上溢出了,則相應(yīng)的指數(shù)加倍,計(jì)數(shù)器被設(shè)置為與指數(shù)相同的值,并 且保持位被設(shè)置為0;而如果事務(wù)在結(jié)束時(shí)實(shí)際上并未溢出,則相應(yīng) 的指數(shù)和保持位被設(shè)置為0。
如果搜索結(jié)果為命中,并且計(jì)數(shù)器不為0,則事務(wù)被預(yù)測為溢出, 并且在溢出模式下執(zhí)行。在該情形下,事務(wù)在溢出模式下執(zhí)行一次, 相應(yīng)的計(jì)數(shù)器就減1。如果計(jì)數(shù)器變?yōu)镺,則相應(yīng)的保持位被設(shè)置為1。
圖8示出了 一個(gè)狀態(tài)機(jī),以說明根據(jù)本發(fā)明第二實(shí)施例的支持事 務(wù)存儲的系統(tǒng)的查找表中一項(xiàng)中的計(jì)數(shù)器字段、指數(shù)字段和保持位字 段中內(nèi)容的變化。其中括號中的三個(gè)數(shù)字依次表示一項(xiàng)中計(jì)數(shù)器字段 的內(nèi)容、指數(shù)字段的內(nèi)容和保持位字段的內(nèi)容,例如(l, 1, O)表 示計(jì)數(shù)器為1,指數(shù)為1,而保持位為0。"不溢出,,表示相應(yīng)事務(wù)在非 溢出模式下執(zhí)行,并且不發(fā)生溢出。"溢出"表示相應(yīng)事務(wù)在非溢出模 式下執(zhí)行,并且發(fā)生溢出。"溢出模式下N次執(zhí)行"表示相應(yīng)事務(wù)已經(jīng) 在溢出模式下執(zhí)行了 N次。
在圖8所示的示例中,最大指數(shù)值(即事務(wù)被預(yù)測將溢出的最大 次數(shù)N皿x)為4。但是,在實(shí)踐中,最大指數(shù)值可以根據(jù)查找表中指 數(shù)字段的比特?cái)?shù)任意設(shè)置。另外,在圖8所示的示例中,事務(wù)被預(yù)測 將溢出的最小次數(shù)Nn^被設(shè)置為1。
圖9示出了根據(jù)本發(fā)明第二實(shí)施例的基于預(yù)測的事務(wù)執(zhí)行方法 的流程圖。如圖9所示,首先在步驟S901處對事務(wù)進(jìn)行預(yù)測。在前面對第 二實(shí)施例的具體描述中,步驟S卯l讀取查找表中所存儲的執(zhí)行模式 信息。在步驟S902中判斷步驟S901的預(yù)測結(jié)果是否是溢出預(yù)測。如 果不是,則在步驟S907中,在非溢出模式下執(zhí)行該事務(wù)。然后在步 驟S卯8中判斷執(zhí)行是否發(fā)生溢出。如果發(fā)生了溢出,則在步驟S909 中將該事務(wù)的執(zhí)行模式信息修改為溢出預(yù)測,否則在步驟S910中將
該事務(wù)的執(zhí)行模式保持為非溢出預(yù)測。
相反,如果在步驟S902中確定是溢出模式,則在步驟S903中 預(yù)測溢出次數(shù)N。然后在步驟S卯4中在溢出;f莫式下執(zhí)行該事務(wù),并 將預(yù)測的溢出次數(shù)N減1。然后,在步驟S905中判斷N是否大于0, 以確定該事務(wù)的下一次執(zhí)行是否還是在溢出模式下的執(zhí)行。如果N大 于O,則返回S904,即該事務(wù)的下一次執(zhí)行在溢出模式下執(zhí)行。如果 N不大于O,則在步驟S906中將該事務(wù)的執(zhí)行模式修改為非溢出模式。
有利地,在步驟S903中釆用指數(shù)遞增策略來推測事務(wù)將溢出的 次數(shù)N。例如,假設(shè)預(yù)測單元當(dāng)前預(yù)測一個(gè)事務(wù)要溢出N次。則該事 務(wù)的接下來的N次執(zhí)行將處于溢出模式中。在該事務(wù)的這N次在溢 出模式下的執(zhí)行之后,預(yù)測單元翻轉(zhuǎn)(flip)預(yù)測位,即將該事務(wù)預(yù) 測為不溢出。但是,如果該事務(wù)的第N+l次執(zhí)行(該次執(zhí)行在非溢出 模式下)再次發(fā)生溢出,則預(yù)測單元將所預(yù)測的該事務(wù)將溢出的次數(shù) N加倍,即預(yù)測該事務(wù)將溢出2N次。
雖然在前面的描述中,在每次事務(wù)執(zhí)行之后記錄該事務(wù)的下一次 執(zhí)行模式信息,并在事務(wù)每次執(zhí)行之前通過讀取上一次執(zhí)行結(jié)束后所 記錄的執(zhí)行模式信息來進(jìn)行預(yù)測,但是也可以想到在每次事務(wù)執(zhí)行之 后只記錄該次執(zhí)行的結(jié)束狀態(tài),而在事務(wù)每次執(zhí)行之前讀取上一次執(zhí) 行結(jié)束后所記錄的結(jié)束狀態(tài)并根據(jù)所讀取的結(jié)束狀態(tài)預(yù)測該事務(wù)的 下一次執(zhí)行模式。
另夕卜,在實(shí)施例一和二中都涉及到對預(yù)測單元所存儲的預(yù)測信息 進(jìn)行修改。上述描述中優(yōu)選地釆用了通過執(zhí)行單元對預(yù)測信息進(jìn)行修 改的實(shí)現(xiàn)方法。但是本領(lǐng)域技術(shù)人員應(yīng)該能夠理解,對預(yù)測單元進(jìn)行修改的操作也可以由其他部件完成,比如讓專用緩存器來完成。物理 上,無論誰完成修改的操作,都是向預(yù)測單元發(fā)出事先定義的物理信 號,預(yù)測單元接收到上述信號后,按照本文實(shí)施例一和二中所述算法 對預(yù)測信息進(jìn)行變更。
本領(lǐng)域技術(shù)人員將能夠理解,可以采用任何軟件或/和硬件的形 式,以及記錄執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)來實(shí)現(xiàn)本發(fā)明 的預(yù)測事務(wù)是否溢出的過程。
示例性實(shí)施例的描述是為了示例和描述的目的而提供的,而并不 是要窮舉或限制到所公開形式的說明性實(shí)施例。4艮多修改和變形對于 本領(lǐng)域技術(shù)人員來說是顯而易見的。選擇和描述了實(shí)施例,以便更好 地解釋示例性實(shí)施例的原理、實(shí)踐應(yīng)用,并使本領(lǐng)域的其他技術(shù)人員
能夠理解示例性實(shí)施例的多種實(shí)施方式,其中可以想到適于特定使用 的各種變形。
雖然結(jié)合附圖詳細(xì)描述了本發(fā)明的實(shí)施例,但是對于本領(lǐng)域的技 術(shù)人員來說,仍可以對上述實(shí)施例作出各種修改和變更而不背離本發(fā) 明的實(shí)質(zhì)和范圍。因此,本發(fā)明的范圍僅由所附權(quán)利要求書限定。
權(quán)利要求
1.一種支持事務(wù)存儲的系統(tǒng),包括預(yù)測單元,用于根據(jù)事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測所述事務(wù)的下一次執(zhí)行模式;執(zhí)行單元,用于在預(yù)測單元所預(yù)測的執(zhí)行模式下執(zhí)行所述事務(wù),其中所述執(zhí)行模式包括溢出模式和非溢出模式。
2. 根據(jù)權(quán)利要求1的支持事務(wù)存儲的系統(tǒng),其中對于在非溢出 模式下執(zhí)行的事務(wù),如果所述事務(wù)的所述執(zhí)行發(fā)生了溢出,則預(yù)測單 元將所述事務(wù)的下一次執(zhí)行模式預(yù)測為溢出模式,否則將所述事務(wù)的 下 一次執(zhí)行模式預(yù)測為非溢出模式。
3. 根據(jù)權(quán)利要求2的支持事務(wù)存儲的系統(tǒng),還包括 事務(wù)寫緩沖器,用于在執(zhí)行單元在非溢出模式下執(zhí)行事務(wù)的過程中臨時(shí)存儲所執(zhí)行事務(wù)的推測性數(shù)據(jù),并且用于在執(zhí)行單元在溢出模 式下執(zhí)行事務(wù)的過程中記錄所執(zhí)行事務(wù)的寫操作的數(shù)據(jù)地址。
4. 根據(jù)權(quán)利要求3的支持事務(wù)存儲的系統(tǒng),其中對于在溢出模 式下執(zhí)行的事務(wù),如果在所述事務(wù)的所述執(zhí)行中,事務(wù)寫緩沖器足以 記錄所述事務(wù)的所有寫操作的數(shù)據(jù)地址,則預(yù)測單元將所述事務(wù)的下 一次執(zhí)行模式預(yù)測為非溢出模式,否則預(yù)測單元將所述事務(wù)的下一次 執(zhí)行模式預(yù)測為溢出模式。
5. 根據(jù)權(quán)利要求3或4的支持事務(wù)存儲的系統(tǒng),還包括 事務(wù)讀緩沖器,用于在執(zhí)行單元執(zhí)行事務(wù)的過程中記錄所執(zhí)行事務(wù)的讀操作的數(shù)據(jù)地址;其中對于在溢出模式下執(zhí)行的事務(wù),如果在所述事務(wù)的所述執(zhí)行的過程中事務(wù)讀緩沖器不足以記錄所述事務(wù)的所有讀操作的數(shù)據(jù)地址,則預(yù)測單元將所述事務(wù)的下一次執(zhí)行模式預(yù)測為溢出模式。
6. 根據(jù)權(quán)利要求2的支持事務(wù)存儲的系統(tǒng),其中對于在非溢出 模式下執(zhí)行的事務(wù),如果所述事務(wù)的所述執(zhí)行發(fā)生了溢出,則預(yù)測單 元還預(yù)測所述事務(wù)將在溢出模式下執(zhí)行的次數(shù)N,并且在所述事務(wù)在 溢出模式下執(zhí)行N次之后將所述事務(wù)的下一次執(zhí)行模式預(yù)測為非溢 出模式。
7. 根據(jù)權(quán)利要求6的支持事務(wù)存儲的系統(tǒng),其中如果所述事務(wù) 在發(fā)生了溢出的執(zhí)行的前一次執(zhí)行是在非溢出模式下的執(zhí)行,則預(yù)測 單元將所述事務(wù)將在溢出模式下執(zhí)行的次數(shù)預(yù)測為最小值Nmin,最小 值N^為2的冪;而如果所述前一次執(zhí)行是在溢出模式下的執(zhí)行,則 預(yù)測單元將所述事務(wù)將在溢出模式下執(zhí)行的次數(shù)預(yù)測為上次預(yù)測的 次數(shù)N的兩倍。
8. 根據(jù)權(quán)利要求l的支持事務(wù)存儲的系統(tǒng),還包括 狀態(tài)寄存器,用于存儲執(zhí)行單元所指示的執(zhí)行模式; 存儲單元,用于將數(shù)據(jù)寫入高速緩存器或者寫緩沖器; 加載單元,用于從高速緩存器或者事務(wù)寫緩沖器讀取數(shù)據(jù); 數(shù)據(jù)流控制器,用于根據(jù)狀態(tài)寄存器所存儲的執(zhí)行模式,控制存儲單元或加載單元對數(shù)據(jù)的寫入或讀取。
9. 根據(jù)權(quán)利要求1的支持事務(wù)存儲的系統(tǒng),其中所述預(yù)測單元 包括查找表,用于存儲標(biāo)識事務(wù)的執(zhí)行模式的信息,并且查找表中所存儲的執(zhí)行模式信息根據(jù)事務(wù)的執(zhí)行結(jié)束狀態(tài)而改變。
10. 根據(jù)權(quán)利要求9的支持事務(wù)存儲的系統(tǒng),其中如果執(zhí)行單元 在所述查找表中沒有查詢到對應(yīng)于待執(zhí)行事務(wù)的執(zhí)行模式的信息,則在查找表中創(chuàng)建對應(yīng)于所述事務(wù)的執(zhí)行模式的信息并將執(zhí)行模式設(shè) 置為非溢出模式。
11. 一種基于預(yù)測的事務(wù)執(zhí)行方法,包括 >預(yù)測步驟,用于根據(jù)事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測所述事務(wù) 的下一次執(zhí)行模式;執(zhí)行步驟,用于在預(yù)測步驟所預(yù)測的執(zhí)行模式下執(zhí)行事務(wù),其中 所述執(zhí)行模式包括溢出模式和非溢出模式。
12. 根據(jù)權(quán)利要求11的事務(wù)執(zhí)行方法,其中所述預(yù)測步驟包括 如下步驟對于在非溢出模式下執(zhí)行的事務(wù),如果所述事務(wù)的所述執(zhí)行發(fā)生 了溢出,則將所述事務(wù)的下一次執(zhí)行模式預(yù)測為溢出模式,否則將所 述事務(wù)的下一次執(zhí)行模式預(yù)測為非溢出模式。
13. 根據(jù)權(quán)利要求12的事務(wù)執(zhí)行方法,其中所述執(zhí)行步驟包括 在溢出模式下,用事務(wù)寫緩沖器記錄被執(zhí)行的事務(wù)的寫操作的數(shù)據(jù)地址。
14. 根據(jù)權(quán)利要求13的事務(wù)執(zhí)行方法,其中所述預(yù)測步驟還包括對于在溢出模式下執(zhí)行的事務(wù),如果在所述事務(wù)的所述執(zhí)行中, 事務(wù)寫緩沖器足以記錄所述事務(wù)的所有寫操作的數(shù)據(jù)地址,則將所述 事務(wù)的下一次執(zhí)行模式預(yù)測為非溢出模式,否則將所述事務(wù)的下一次 執(zhí)行模式預(yù)測為溢出模式。
15. 根據(jù)權(quán)利要求13或14的事務(wù)執(zhí)行方法,其中所述執(zhí)行步驟 還包括使用事務(wù)讀緩沖器記錄事務(wù)的讀操作的數(shù)據(jù)地址;并且所述預(yù)測步驟還包括對于在溢出模式下執(zhí)行的事務(wù),如果在所述事務(wù)的所述執(zhí)行中, 事務(wù)讀緩沖器不足以記錄所述事務(wù)的所有讀操作的數(shù)據(jù)地址,則將所 述事務(wù)的下一次執(zhí)行模式預(yù)測為溢出模式。
16. 根據(jù)權(quán)利要求12的事務(wù)執(zhí)行方法,其中所述預(yù)測步驟還包括對于在非溢出模式下執(zhí)行的事務(wù),如果所述事務(wù)的所述執(zhí)行發(fā)生 了溢出,則還預(yù)測所述事務(wù)將在溢出模式下執(zhí)行的次數(shù)N,并且在所 述事務(wù)在溢出模式下執(zhí)行N次之后將所述事務(wù)的下一次執(zhí)行模式預(yù) 測為非溢出模式。
17. 根據(jù)權(quán)利要求16的事務(wù)執(zhí)行方法,其中如果所述事務(wù)在發(fā) 生了溢出的執(zhí)行的前一次執(zhí)行是在非溢出模式下的執(zhí)行,則將所述事務(wù)將在溢出模式下執(zhí)行的次數(shù)預(yù)測為最小值Nmin,最小值N^為2的冪;而如果所述前一次執(zhí)行是在溢出模式下的執(zhí)行,則將所述事務(wù)將 在溢出模式下執(zhí)行的次數(shù)預(yù)測為上次預(yù)測的次數(shù)N的兩倍。
18. 根據(jù)權(quán)利要求ll的事務(wù)執(zhí)行方法,所述執(zhí)行步驟還包括 存儲執(zhí)行模式信息;根據(jù)所存儲的執(zhí)行模式信息,執(zhí)行事務(wù)的存儲操作或加載操作。
19. 根據(jù)權(quán)利要求ll的事務(wù)執(zhí)行方法,其中所述預(yù)測步驟包括使用查找表存儲標(biāo)識事務(wù)的執(zhí)行模式的信息,以及 根據(jù)事務(wù)的執(zhí)行結(jié)束狀態(tài)改變查找表中所存儲的執(zhí)行模式信息。
20. 根據(jù)權(quán)利要求19的事務(wù)執(zhí)行方法,其中如果在所述查找表 中沒有查詢到對應(yīng)于待執(zhí)行事務(wù)的執(zhí)行模式信息,則在查找表中創(chuàng)建 對應(yīng)于所述事務(wù)的執(zhí)行模式信息并將執(zhí)行模式設(shè)置為非溢出模式。
全文摘要
本發(fā)明提供了一種具有溢出預(yù)測機(jī)制的支持事務(wù)存儲的系統(tǒng),包括預(yù)測單元,用于根據(jù)事務(wù)先前執(zhí)行的執(zhí)行結(jié)束狀態(tài)預(yù)測所述事務(wù)的下一次執(zhí)行模式;執(zhí)行單元,用于在預(yù)測單元所預(yù)測的執(zhí)行模式下執(zhí)行所述事務(wù),其中所述執(zhí)行模式包括溢出模式和非溢出模式。根據(jù)本發(fā)明,可以在事務(wù)執(zhí)行之前預(yù)測事務(wù)是否將溢出,從而節(jié)省了為了判斷溢出所必須執(zhí)行的一次運(yùn)行,并因此提高了性能。
文檔編號G06F9/46GK101587447SQ200810109178
公開日2009年11月25日 申請日期2008年5月23日 優(yōu)先權(quán)日2008年5月23日
發(fā)明者C·B·豪爾, 梁志勇, 沈曉衛(wèi), 王華勇, 王艷琦 申請人:國際商業(yè)機(jī)器公司