国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      檢測載入-儲存沖突的方法及其裝置的制作方法

      文檔序號:6603094閱讀:113來源:國知局

      專利名稱::檢測載入-儲存沖突的方法及其裝置的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明是有關(guān)于微處理器,特別是有關(guān)于微處理器的載入-儲存沖突(load-storecollision)的檢測。
      背景技術(shù)
      :于管線化微處理器設(shè)計上,通常會發(fā)生載入(load)操作與先前的儲存(store)操作在存儲器上重疊的情況。換言之,由儲存操作所預(yù)定(destine)的存儲器位置的一或多個字節(jié),亦包含于由載入操作所指定(specify)的來源存儲器位置(sourcememorylocation)內(nèi)。圖1是顯示程序序列中,對存儲器位置0x1234的32位(雙字,dword)儲存操作,及其后起始于存儲器位置0x1236的16位(半字,halfword)載入操作。由于載入操作所指定的來源存儲器位置的至少一字節(jié),是與儲存操作所指定的目的存儲器位置(destinationmemorylocation)相同,故兩操作指定的地址重疊。于某些情況下,微處理器可將儲存數(shù)據(jù)直接轉(zhuǎn)送至載入,此被稱為儲存轉(zhuǎn)送(storeforwarding)操作,且通常有助于效能提升。然而,于其它情況下,載入操作必須等待儲存操作提交(commit)至存儲器后,才能讀取數(shù)據(jù),此被稱為一種載入-儲存沖突情況。舉例來講,載入操作與儲存操作并非同時具有寫回可高速緩存特性(write-backcacheablememorytrait)的存儲器區(qū)域,或者,載入操作無法接收所有來自儲存操作或儲存操做與快取所組合的數(shù)據(jù)。載入_儲存沖突通常不利于效能,因此必須被檢測出來。
      發(fā)明內(nèi)容一方面,本發(fā)明提供一種檢測裝置,用以檢測一微處理器內(nèi)一載入操作與一先前儲存操作之間,均存取同一快取列數(shù)據(jù)的一載入-儲存沖突。該檢測裝置包括一載入字節(jié)屏蔽,用以于該快取列內(nèi),指定含有該載入操作所指定數(shù)據(jù)的起始字組;一儲存字節(jié)屏蔽,用以于該快取列內(nèi),指定含有該儲存操作所指定數(shù)據(jù)的起始字組;以及一載入操作快取列字組屏蔽,用以于該快取列內(nèi),指定含有該載入操作所指定數(shù)據(jù)的字組;一儲存操作快取列字組屏蔽,用以于該快取列內(nèi),指定含有該儲存操作所指定數(shù)據(jù)的字組。該檢測裝置亦包括一組合邏輯電路,用以檢測該載入_儲存沖突,若該載入與儲存操作所指定數(shù)據(jù)起始于該快取列的同一字組,被配置使用該載入字節(jié)屏蔽與儲存字節(jié)屏蔽來檢測該載入-儲存沖突,以及若該載入與儲存操作所指定數(shù)據(jù)并非起始于該快取列的同一字組,被配置使用該載入操作快取列字組屏蔽與儲存操作快取列字組屏蔽來檢測該載入_儲存沖突。另一方面,本發(fā)明提供一種檢測方法,用以檢測一微處理器內(nèi)一載入操作與一先前儲存操作之間,均存取同一快取列數(shù)據(jù)的一載入_儲存沖突。該檢測方法包括判斷由一載入字節(jié)屏蔽所指定的含有該載入操作所指定數(shù)據(jù)的起始字與由一儲存字節(jié)屏蔽所指定的含有該儲存操作所指定數(shù)據(jù)的起始字組是否起始于該快取列的同一字組,其中,一字組包括多個的字節(jié)。若該載入操作所指定數(shù)據(jù)與該儲存操作所指定數(shù)據(jù)起始于該快取列的同一字組,利用該載入字節(jié)屏蔽與該儲存字節(jié)屏蔽檢測該載入-儲存沖突。若該載入操作所指定數(shù)據(jù)與該儲存操作所指定數(shù)據(jù)并非起始于該快取列的同一字組,利用一于該快取列內(nèi)指定含有該載入操作所指定數(shù)據(jù)的字組的載入操作快取列字屏蔽與一于該快取列指定含有該儲存操作所指定數(shù)據(jù)的字組的儲存操作快取列字組屏蔽檢測該載入_儲存沖突。為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合所附圖式,詳細(xì)說明如下。圖1是顯示一載入_儲存沖突的范例方塊圖。圖2為一方塊圖,是顯示一快取列內(nèi)的雙字與一雙字內(nèi)的字節(jié)。圖3是顯示依據(jù)本發(fā)明實施例,利用載入-儲存檢測單元的微處理器方塊圖。圖4是顯示依據(jù)本發(fā)明圖3的載入-儲存檢測沖突單元所使用的一存儲器操作向量方塊圖。圖5是顯示依據(jù)本發(fā)明實施例圖3的載入_儲存沖突檢測單元方塊圖。圖6是顯示依據(jù)本發(fā)明圖5的載入-儲存沖突檢測單元的操作流程圖。[主要元件標(biāo)號說明]20264字節(jié)快取列的16個雙字;300微處理器;304存儲器子系統(tǒng);308載入-儲存沖突檢測單元;312指令轉(zhuǎn)譯器;318保留站;324引退單元;402L載入字節(jié)屏蔽;404存儲器操作雙字屏蔽;404S儲存雙字屏蔽;408存儲器操作快取列雙字屏蔽;408L載入操作快取列雙字屏蔽;408S儲存操作快取列雙字屏蔽;502、512、534、536、542與(AND)門;504、514、538或(OR)門;506雙字重疊信號;516字節(jié)重疊信號;522載入地址;524儲存地址;526起始雙字相同信號;528同一快取列信號;及532非(NOT)門。具體實施例方式一般而言,為了判定載入_儲存沖突,處理器進(jìn)行某種結(jié)合字節(jié)重疊檢測的地址204雙字的4個字節(jié);302指令快??;-數(shù)據(jù)快?。?06-316-322-402-402S404L-暫存器別名表;4丸行單元;y存儲器操作字節(jié)屏蔽儲存字節(jié)屏蔽;載入雙字屏蔽;406、406L、406S移位器;508比較器;518沖突信號;比較操作。地址比較操作通常為快取列比較操作。某些實現(xiàn)方式是比較快取列地址。意味著字節(jié)重疊檢測必須計算載入操作的任一字節(jié)是否與64字節(jié)快取列的任一儲存字節(jié)沖突,以產(chǎn)生一符合信號,亦即存在載入-儲存沖突的情況。參考圖2,是顯示一64字節(jié)快取列的16個雙字202,且每一雙字包含4個字節(jié)204。舉例來講,微架構(gòu)的最大存儲器操作(亦即,載入操作與儲存操作,本文中亦指存儲器操作)大小為16字節(jié),且其小于一快取列的大小。已知上,字節(jié)重疊檢測的實現(xiàn),可通過對每一存儲器操作產(chǎn)生或儲存一16位的存儲器操作向量并儲存至一16位的字節(jié)屏蔽(mask),即載入操作與儲存操作所含的每一字節(jié)對應(yīng)至上述16位的字節(jié)屏蔽的每一位。接著,分別將載入操作與儲存操作的字節(jié)屏蔽移位至快取列內(nèi)的對應(yīng)位置,上述對應(yīng)位置是根據(jù)載入操作與儲存操作于一系統(tǒng)存儲器的地址。接著,比較并檢測上述兩個字節(jié)屏蔽中是否有任一位重疊,用以表示載入操做與儲存操作所指定快取列內(nèi)的至少一共用字節(jié)位置。若是,即存在載入_儲存沖突。當(dāng)要求檢測載入_儲存沖突的精確度越高時,地址比較器需求量也愈大,這通常造成該等比較器需消耗較多功率及需要較多時間以完成比較。已知的字節(jié)重疊檢測方法,是對每一存儲器操作進(jìn)行下列其中之一(1)儲存一64字節(jié)屏蔽,其具有多個事先已移位至快取列內(nèi)適當(dāng)位置的16位的字節(jié)屏蔽;(2)儲存16位的字節(jié)屏蔽,并將其實時移位;或者(3)產(chǎn)生16位的字節(jié)屏蔽,并將其實時移位。上述每一已知字節(jié)重疊檢測方法各自具有其優(yōu)點與缺點,但全部都存在某些問題。儲存事先移位的字節(jié)屏蔽(方法(1))需要大量的硬件。產(chǎn)生與實時移位字節(jié)屏蔽(方法(3))會產(chǎn)生時序問題且會增加功率消耗。方法(2)為一折衷辦法,由于需實時移位,因此依然會產(chǎn)生時序問題,也仍然需要額外硬件來儲存字節(jié)屏蔽。不論是利用16位的字節(jié)屏蔽實時移位或利用64位屏蔽進(jìn)行比較操作,皆需要大量硬件實現(xiàn)且具有時序問題。因此,需要一種新的字節(jié)重疊檢測方法能克服上述的問題。本文所說明的實施例,是通過不用非常精確地檢測載入-儲存沖突,用以有效地減少載入-儲存沖突檢測存儲器操作向量的大小。換言之,微處理器仍可正確運(yùn)行,并檢測出每一個載入-儲存沖突的情況。然而,微處理器被允許發(fā)出一些誤判的載入-儲存沖突信號,也就是說,并非為真正載入_儲存沖突的情況,此時微處理器仍可正確運(yùn)行于一容忍范圍內(nèi)。當(dāng)然,由于一些載入操作需等待更多時間,因此發(fā)出誤判的載入-儲存沖突信號將不利于效能。本文所述的實施例,是對檢測載入_儲存沖突的精確度及某些潛在效能進(jìn)行權(quán)衡,藉以得到較佳的時序、較少的功率消耗以及較少的硬件成本。參考圖3,是顯示依據(jù)本發(fā)明所述實施例,使用載入_儲存檢測單元的微處理器300。微處理器300為一亂序性執(zhí)行管線式微處理器(out-of-orderexecutionpipelinedmicroprocessor),其包括指令快取302、耦接于指令快取302的指令轉(zhuǎn)譯器312、耦接于指令轉(zhuǎn)譯器312的暫存器別名表(registeraliasingtable)316、耦接于暫存器別名表316的保留站(reserVati0nstati0n)318、耦接于保留站318的多個執(zhí)行單元322、及耦接于執(zhí)行單元322的引退單元(retireunit)324,如已知的微處理器設(shè)計。執(zhí)行單元322包括一或多個載入單元與儲存單元,用以進(jìn)行載入操作與儲存操作。存儲器子系統(tǒng)304,耦接于執(zhí)行單元322。存儲器子系統(tǒng)304包括一數(shù)據(jù)快取306,其耦接于載入-儲存沖突檢測單元308。參考圖4,是顯示依據(jù)本發(fā)明的載入_儲存檢測沖突單元308所使用的一存儲器操作向量方塊圖。該存儲器操作向量大小僅為8位。圖4僅為一舉例說明,其中4位的向量b3,b2,bl,b0用以指定一存儲器操作所指定快取列的數(shù)據(jù)起始處的第一雙字,另外的4位的向量d3,d2,dl,d0用以指定該存儲器操作的剩余雙字。向量b3,b2,bl,b0會儲存至4位的存儲器操作字節(jié)屏蔽402以指定對應(yīng)于每一存儲器操作所指定快取列的數(shù)據(jù)起始處的第一雙字,即存儲器操作字節(jié)屏蔽402的每一位對應(yīng)至第一雙字的每一字節(jié)。在一實施例中,因應(yīng)于一載入操作,4位的載入字節(jié)屏蔽儲存該載入操作向量中的4位以于快取列內(nèi)指定含有載入操作所指定數(shù)據(jù)的起始雙字。因應(yīng)于一儲存操作,4位的儲存字節(jié)屏蔽儲存該儲存操作向量中的4位以于快取列內(nèi)指定含有儲存操作所指定數(shù)據(jù)的起始雙字。當(dāng)載入操作與儲存操作起始于一快取列的同一雙字時,則將載入字節(jié)屏蔽與儲存字節(jié)屏蔽中的位進(jìn)行比較。當(dāng)檢測出上述兩個字節(jié)屏蔽中有任一位重疊,即檢測出載入_儲存沖突。對于該存儲器操作的剩余雙字,并未使用如前述方法(1)中完整64位的字節(jié)屏蔽來對應(yīng)至快取列的每一字節(jié)。對于該存儲器操作的剩余雙字,此處是儲存與產(chǎn)生存儲器操作雙字屏蔽404,而非字節(jié)屏蔽。向量d3,d2,dl,d0會儲存至4位的存儲器操作雙字屏蔽404以指定對應(yīng)于每一存儲器操作所指定快取列的剩余雙字。在一實施例中,因應(yīng)于一載入操作,4位的載入雙字屏蔽儲存該載入操作向量中的4位以于快取列內(nèi)指定含有載入操作所指定數(shù)據(jù)的雙字。因應(yīng)于一儲存操作,4位的儲存雙字屏蔽儲存該儲存操作向量中的4位以于快取列內(nèi)指定含有儲存操作所指定數(shù)據(jù)的雙字。當(dāng)載入操作與儲存操作并非起始于一快取列的同一雙字時,則將載入雙字屏蔽與儲存雙字屏蔽中的位進(jìn)行移位后比較,以檢測出載入_儲存沖突。存儲器操作雙字屏蔽404提供一相對粗略精確度的沖突檢測,而存儲器操作字節(jié)屏蔽402是提供較佳的精確度的沖突檢測。值得一提的是,對于每一存儲器操作,向量大小僅為8位,為前述方法(2)位數(shù)量的一半,因此減少了屏蔽比較器的數(shù)量,相對地也帶來一些好處,例如簡化向量的儲存。載入-儲存沖突檢測單元308利用一移位器406(圖4所示),用以根據(jù)該存儲器操作的系統(tǒng)存儲器地址,將存儲器操作雙字屏蔽404移位至16位存儲器操作快取列的一對應(yīng)位置。如圖4所示,移位器406將存儲器操作雙字屏蔽404移位至16位存儲器操作快取列雙字屏蔽408內(nèi)的13個可能位置之一。這將大幅減少上述已知方法所需的移位數(shù)量,明顯有助于時序。16位存儲器操作快取列雙字屏蔽408的剩余位將被設(shè)定(populated)為零。該16位存儲器操作快取列雙字屏蔽408類似于傳統(tǒng)方法中對每一存儲器操作產(chǎn)生或儲存的16位的字節(jié)屏蔽,只是該16位存儲器操作快取列雙字屏蔽408中僅有移位進(jìn)來的4位的存儲器操作雙字屏蔽404,其余12位已被設(shè)定為零。當(dāng)載入操作與儲存操作并非起始于一快取列的同一雙字時,則將儲存雙字屏蔽移位至16位的儲存操作快取列雙字屏蔽,將載入雙字屏蔽移位至16位的載入操作快取列雙字屏蔽,并將儲存操作快取列雙字屏蔽與載入操作快取列雙字屏蔽中的位進(jìn)行比較。當(dāng)檢測出上述兩個快取列雙字屏蔽中有任一位重疊,即檢測出載入_儲存沖突。如圖4所示的實施例,存儲器操作雙字屏蔽404的位數(shù)量為4位,是因微處理器300微架構(gòu)的最大存儲器操作大小為16字節(jié),不過于其它實施例中,可考慮不同大小,像是32字節(jié)及64字節(jié)的存儲器操作,特別是具有大于64字節(jié)快取列的微處理器300。在一實施例中,對于一4字節(jié)的儲存操作,其位于存儲器位置0x1234,則其共占據(jù)存儲器中0x12340x1237這4個字節(jié)。該儲存操作的起始雙字為0x1234,并占據(jù)了該雙字的全部4個字節(jié),由此,該儲存操作的儲存字節(jié)屏蔽為b’1111。而該儲存操作僅位于0x1234這一個雙字中,因此,該儲存操作的儲存雙字屏蔽為b’0001。對于一2字節(jié)的載入操作,其位于存儲器位置0x1236,則其共占據(jù)存儲器中0x12360x1237這2個字節(jié)。該載入操作的起始雙字為0x1234,并占據(jù)了該雙字的高兩位的兩個字節(jié),由此,該載入操作的載入字節(jié)屏蔽為b’1100。而該載入操作僅位于0x1234這一個雙字中,因此,該載入操作的載入雙字屏蔽為b’0001。由于該載入操作與該儲存操作起始于一快取列的同一雙字0x1234,則將載入字節(jié)屏蔽b’1100與儲存字節(jié)屏蔽b’1111中的位進(jìn)行比較。這兩個字節(jié)屏蔽的高兩位均為1,即檢測出上述兩個字節(jié)屏蔽中有兩位重疊,即檢測出載入_儲存沖突。在另一實施例中,對于一16字節(jié)的儲存操作,其位于存儲器位置0x1200,則其共占據(jù)存儲器中0x12000xl20F這16個字節(jié)。該儲存操作的起始雙字為0x1200,并且占據(jù)了該雙字的全部4個字節(jié),由此,該儲存操作的儲存字節(jié)屏蔽為b’1111。而該儲存操作位于0x1200,0x1204,0xl208和0xl20C這四個雙字中,因此,該儲存操作的儲存雙字屏蔽為b’1111。對于一16字節(jié)的載入操作,其位于存儲器位置0x1208,則其共占據(jù)存儲器中0x12080x1217這16個字節(jié)。該載入操作的起始雙字為0x1208,并占據(jù)了該雙字的全部4個字節(jié),由此,該載入操作的載入字節(jié)屏蔽為b’llll。而該載入操作位于0X1208,0X120C,0x1210和0x1214這四個雙字中,因此,該載入操作的載入雙字屏蔽為b’1111。由于該載入操作與該儲存操作并非起始于一快取列的同一雙字,因此需要將儲存雙字屏蔽移位至16位的儲存操作快取列雙字屏蔽,將載入雙字屏蔽移位至16位的載入操作快取列雙字屏蔽。由于儲存操作位于0x1200,0x1204,0x1208和0xl20C這四個雙字中,因此,將儲存雙字屏蔽b’1111移位至16位的儲存操作快取列雙字屏蔽的d0d3,即16位的儲存操作快取列雙字屏蔽為OxOOOF。該載入操作位于0x1208,0xl20C,0x1210和0x1214這四個雙字中,因此,將載入雙字屏蔽b’1111移位至16位的載入操作快取列雙字屏蔽的d2d5,即16位的儲存操作快取列雙字屏蔽為0x003C。將儲存操作快取列雙字屏蔽OxOOOF與載入操作快取列雙字屏蔽0x003C中的位進(jìn)行比較。這兩個快取列雙字屏蔽中有2位重疊,即檢測出載入-儲存沖突。參考圖5,是顯示依據(jù)本發(fā)明實施例圖3的載入-儲存沖突檢測單元308。載入-儲存沖突檢測單元308包括16個具有2輸入的與(AND)門502,每一與門502自16位載入操作快取列雙字屏蔽408L接收一輸入位。16位載入操作快取列雙字屏蔽408L,是類似于圖4的16位存儲器操作快取列雙字屏蔽408,且由類似于圖4存儲器操作雙字屏蔽404的載入雙字屏蔽404L,與其后經(jīng)過的移位器406L產(chǎn)生,其中,移位器406L類似于圖4的移位器406。每一與門502自16位儲存操作快取列雙字屏蔽408S接收一第二輸入位。16位儲存操作快取列雙字屏蔽408S,是類似于圖4的16位存儲器操作快取列雙字屏蔽408,且由類似于圖4存儲器操作雙字屏蔽404的儲存雙字屏蔽404S,與其后經(jīng)過的移位器406S加以產(chǎn)生,其中,移位器406S類似于圖4的移位器406。將16個與門502的16個輸出提供至具有16個輸入的或(0R)門504,用以輸出一雙字重疊信號506。若載入操作快取列雙字屏蔽408L中的一位及儲存操作快取列雙字屏蔽408S中的對應(yīng)位均為真(truevalue),則雙字重疊信號506為真。也就是說,16個與門502的其中一與門接收雙字屏蔽408L以及雙字屏蔽408S的位dl5的值并做與運(yùn)算。16個與門502的另一與門接收雙字屏蔽408L以及雙字屏蔽408S的位dl4的值并做與運(yùn)算,依此類推。舉例來說,雙字屏蔽408L的dl5為邏輯值1,雙字屏蔽408S的dl5的邏輯值也為1,則在經(jīng)過與運(yùn)算和或運(yùn)算后,產(chǎn)生一值為真的雙字重疊信號506。載入-儲存沖突檢測單元308包括4個具有2輸入的與門512,每一與門512自4位載入字節(jié)屏蔽402L接收一輸入位,其中,4位載入字節(jié)屏蔽402L類似于圖4的4位存儲器操作字節(jié)屏蔽402。每一與門512,是自4位儲存字節(jié)屏蔽402S接收一第二輸入位,其中,4位儲存字節(jié)屏蔽402S類似于圖4的4位存儲器操作字節(jié)屏蔽402。將4個與門512的4個輸出提供至具有4個輸入的或門514,用以輸出一字節(jié)重疊信號516。若載入字節(jié)屏蔽402L中的一位及儲存字節(jié)屏蔽402S中的對應(yīng)位均為真,則字節(jié)重疊信號516為真。也就是說,4個與門512中的其中一與門接收載入字節(jié)屏蔽402L以及儲存字節(jié)屏蔽402S的位b3的值并做與運(yùn)算。4個與門512中的另一與門接收載入字節(jié)屏蔽402L以及儲存字節(jié)屏蔽402S的位b2的值并做與運(yùn)算,依此類推。舉例來說,載入字節(jié)屏蔽402L的b3為邏輯值1,儲存字節(jié)屏蔽402S的b3的值也為邏輯值1,則在經(jīng)過與運(yùn)算和或運(yùn)算后,產(chǎn)生一值為真的字節(jié)重疊信號516。載入-儲存沖突檢測單元308亦包括一比較器508,用以比較一載入地址522與一儲存地址524。若地址522與524存取同一快取列,亦即,地址的第5位以上均相同,則產(chǎn)生一值為真的同一快取列信號528。若載入地址522及儲存地址524起始于快取列的同一雙字上,亦即,地址的第1位以上均相同(即,位[52]),則比較器508亦產(chǎn)生一值為真的起始雙字相同信號526。具2輸入的與門534接收起始雙字相同信號526及字節(jié)重疊信號516。具2輸入的與門536接收起始雙字相同信號526的互補(bǔ)信號及雙字重疊信號506。具2輸入的或門538接收與門534與與門536的輸出。具2輸入的與門542接收同一快取列信號528與或門538的輸出,用以產(chǎn)生一沖突信號518,當(dāng)存在一載入-儲存沖突時,該沖突信號518為一真值。圖5雖然僅顯示載入-儲存沖突檢測單元308的一邏輯電路集合,不過對于每一個先前儲存操作而言(換言之,所討論為比該載入操作還早的每一儲存操作),仍存在類似的邏輯電路,用以產(chǎn)生多個沖突信號518,且將多個沖突信號518進(jìn)行邏輯或運(yùn)算,用以產(chǎn)生一最終沖突信號。圖5實施例所顯示著雖然為邏輯門的一特殊配置,其它實施例仍可完成等效的功能。參考圖6,是顯示依據(jù)本發(fā)明圖5的載入-儲存沖突檢測單元308的操作流程圖。流程始于區(qū)塊602。于區(qū)塊602中,存儲器子系統(tǒng)304接收一載入操作。之后,流程進(jìn)入?yún)^(qū)塊604。于區(qū)塊604中,載入-儲存沖突檢測單元308的比較器508比較載入地址522與一先前儲存操作的儲存地址524。流程進(jìn)入決策區(qū)塊606。在一實施例中,載入-儲存沖突檢測單元308包含多個比較器用以比較一載入地址與多個先前儲存操作的儲存地址。于決策區(qū)塊606中,載入-儲存沖突檢測單元308檢測同一快取列信號528,用以判斷載入操作是否與任一先前儲存操作存取于同一快取列。若是,流程進(jìn)入決策區(qū)塊608;否則,流程進(jìn)入?yún)^(qū)塊620。于決策區(qū)塊608中,載入-儲存沖突檢測單元308檢測起始雙字相同信號526,用以判斷載入操作是否與任一先前儲存操作起始于快取列的同一雙字。若是,流程進(jìn)入?yún)^(qū)塊610;否則,流程進(jìn)入?yún)^(qū)塊614。于區(qū)塊610中,與門512比較載入字節(jié)屏蔽402L與先前儲存字節(jié)屏蔽402S。流程進(jìn)入決策區(qū)塊612。于區(qū)塊612中,載入-儲存沖突檢測單元308檢測字節(jié)重疊信號516,用以判斷載入字節(jié)屏蔽402L的任一位與先前儲存操作的字節(jié)屏蔽402S的對應(yīng)位是否均為真。若是,流程進(jìn)入?yún)^(qū)塊618;否則,流程進(jìn)入?yún)^(qū)塊620。于區(qū)塊614中,移位器406L對載入雙字屏蔽404L進(jìn)行移位,用以產(chǎn)生載入操作快取列雙字屏蔽408L,且移位器406S對一先前儲存操作的儲存雙字屏蔽404S進(jìn)行移位,用以產(chǎn)生儲存操作快取列雙字屏蔽408S。另外,與門502比較載入操作快取列雙字屏蔽408L及先前儲存操作的儲存操作快取列雙字屏蔽408S。流程進(jìn)入決策區(qū)塊616。于決策區(qū)塊616中,載入-儲存沖突檢測單元308檢測雙字重疊信號506,用以判斷載入操作快取列雙字屏蔽408L是否與先前儲存操作的儲存操作快取列雙字屏蔽408S重疊。若是,流程進(jìn)入?yún)^(qū)塊618;否則,流程進(jìn)入?yún)^(qū)塊620。于區(qū)塊618中,載入-儲存沖突檢測單元308的沖突信號518設(shè)置為一真值,用以表示(indicate)—載入-儲存沖突。流程結(jié)束于區(qū)塊618。于區(qū)塊620中,載入-儲存沖突檢測單元308的沖突信號518設(shè)置為一偽值(falsevalue),用以表示沒有載入-儲存沖突。流程結(jié)束于區(qū)塊620。在一實施例中,儲存操作和載入操作可起始于位于雙字的邊界(boundary)的字節(jié)。此時,將使用5位的存儲器操作雙字屏蔽以指定對應(yīng)于每一存儲器操作所指定快取列的剩余雙字。例如,對于一16字節(jié)的儲存操作,其位于存儲器位置0x1201,則其共占據(jù)存儲器中0x12010x1210這16個字節(jié)。該儲存操作的起始雙字為0x1200,并且占據(jù)了該雙字的3個字節(jié),由此,該儲存操作的儲存字節(jié)屏蔽為b’1110。而該儲存操作位于0x1200,0x1204,0x1208,0xl20C和0x1210這五個雙字中,因此,該儲存操作的儲存雙字屏蔽為b’11111。對于一16字節(jié)的載入操作,其位于存儲器位置0x1207,則其共占據(jù)存儲器中0x12070x1216這16個字節(jié)。該載入操作的起始雙字為0x1204,并占據(jù)了該雙字的1個字節(jié),由此,該載入操作的載入字節(jié)屏蔽為b’1000。而該載入操作位于0x1204,0x1208,0xl20C,0x1210和0x1214這五個雙字中,因此,該載入操作的載入雙字屏蔽為b,11111。由于該載入操作與該儲存操作并非起始于一快取列的同一雙字,因此需要將儲存雙字屏蔽移位至16位的儲存操作快取列雙字屏蔽,將載入雙字屏蔽移位至16位的載入操作快取列雙字屏蔽。由于儲存操作位于0x1200,0x1204,0x1208,0xl20C和0x1210這五個雙字中,因此,將儲存雙字屏蔽b’11111移位至16位的儲存操作快取列雙字屏蔽的d0d4,即16位的儲存操作快取列雙字屏蔽為OxOOlF。該載入操作位于0x1204,0x1208,0xl20C,0x1210和0x1214這五個雙字中,因此,將載入雙字屏蔽b’11111移位至16位的載入操作快取列雙字屏蔽的dld5,即16位的儲存操作快取列雙字屏蔽為0x003E。將儲存操作快取列雙字屏蔽OxOOlF與載入操作快取列雙字屏蔽0x003E中的位進(jìn)行比較。這兩個快取列雙字屏蔽中有4位重疊,即檢測出載入-儲存沖突。為了有助于減少存儲器操作向量所使用的位數(shù)量(較少功率消耗及較少硬件)及減少移位操作(較佳時序),本文所述的實施例是犧牲載入_儲存沖突檢測的部分精確度。假如載入操作與儲存操作所指定的地址非常接近但未命中(miss)的情況,則微處理器被允許發(fā)出一些誤判的載入_儲存沖突信號,也就是說,并非為真正載入_儲存沖突的情況,此時微處理器仍可正確運(yùn)行于一容忍范圍內(nèi)。例如,對于一4字節(jié)的儲存操作,其位于存儲器位置0x1201,則其共占據(jù)存儲器中0x12010x1204這4個字節(jié)。該儲存操作的起始雙字為0x1200,并占據(jù)了該雙字的3個字節(jié),由此,該儲存操作的儲存字節(jié)屏蔽為b’1110。而該儲存操作位于0x1200和0x1204這兩個雙字中,因此,該儲存操作的儲存雙字屏蔽為b’00011。對于一4字節(jié)的載入操作,其位于存儲器位置0x1207,則其共占據(jù)存儲器中0x12070xl20A這4個字節(jié)。該載入操作的起始雙字為0x1204,并占據(jù)了該雙字的1個字節(jié),由此,該載入操作的載入字節(jié)屏蔽為b,1000。而該載入操作位于0x1204和0x1208這兩個雙字中,因此,該載入操作的載入雙字屏蔽為b’00011。由于該載入操作與該儲存操作并非起始于一快取列的同一雙字,因此需要將儲存雙字屏蔽移位至16位的儲存操作快取列雙字屏蔽,將載入雙字屏蔽移位至16位的載入操作快取列雙字屏蔽。由于儲存操作位于0x1200和0x1204這兩個雙字中,因此,將儲存雙字屏蔽b’00011移位至16位的儲存操作快取列雙字屏蔽的d0d4,即16位的儲存操作快取列雙字屏蔽為0x0003。該載入操作位于0x1204和0x1208這兩個雙字中,因此,將載入雙字屏蔽b,00011移位至16位的載入操作快取列雙字屏蔽的dld5,即16位的儲存操作快取列雙字屏蔽為0x0006。將儲存操作快取列雙字屏蔽0x0003與載入操作快取列雙字屏蔽0x0006中的位進(jìn)行比較。這兩個快取列雙字屏蔽中有1位重疊,即檢測出載入-儲存沖突。而實際上,該儲存操作占據(jù)存儲器中0x12010x1204這4個字節(jié),該載入操作占據(jù)存儲器中0x12070xl20A這4個字節(jié),并不存在載入-儲存沖突的問題,此時,就屬于誤判的情況。由前述可知,本文所述的實施例,是對檢測載入_儲存沖突的精確度及微處理器的效能進(jìn)行權(quán)衡,藉以得到較佳的時序、較少的功率消耗以及較少的硬件成本。于其它實施例中,可通過微處理器300較常執(zhí)行的執(zhí)行碼,并根據(jù)其數(shù)據(jù)存取樣式(pattern),用以減少對效能的影響。舉例而言,若大部分常用執(zhí)行碼常接近但未命中一快取列的一第二雙字,則存儲器操作向量可被設(shè)定為可指定一存儲器操作所指定快取列的數(shù)據(jù)起始處的兩個雙字,并被儲存至8位的存儲器操作字節(jié)屏蔽以指定對應(yīng)于每一存儲器操作所指定快取列的數(shù)據(jù)起始處的兩個雙字,即存儲器操作字節(jié)屏蔽的每一位對應(yīng)至包括上述起始兩個雙字的每一字節(jié)。此外,存儲器操作向量可以采用4字(qword,64位)或8字(dqword,128位)以指定對應(yīng)于每一存儲器操作所指定快取列的剩余4字或8字,并被儲存至4字或8字屏蔽。利用這樣的方式,并于可接受的效能影響下,可更進(jìn)一步降低存儲器操作向量的大小,相較于已知的存儲器操作向量大小而言。另外,當(dāng)微處理器300的指令集架構(gòu)引入(introduce)更大的存儲器操作向量時,也可以利用這樣的方式于可接受的效能影響下,更進(jìn)一步降低存儲器操作向量的大小。本發(fā)明雖以各種實施例揭露如上,然而其僅為范例參考而非用以限定本發(fā)明的范圍,所屬
      技術(shù)領(lǐng)域
      中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可做些許的更動與潤飾。舉例來說,可用軟件來實作本文所描述的裝置與方法中的上述功能、構(gòu)造、模塊、仿真、描述、以及測試。該軟件可使用一般的程序語言(例如C、C++)、硬件描述語言(HardwareDescriptionLanguage,HDL),其包括Verilog硬件描述語言、超高速集成電路硬件描述語言(VHDL)等、或其它可用的程序來實現(xiàn)。此軟件可被設(shè)置于任何已知計算機(jī)可用的媒體,像是半導(dǎo)體、磁盤、或光盤(諸如CD-R0M、DVD_R0M等)。本文所述的裝置與方法實施例,可被包括于半導(dǎo)體智慧財產(chǎn)權(quán)核心(semiconductorintellectualpropertycore),像是微處理器核心(舉例來講,以硬件描述語言加以實現(xiàn)),及被轉(zhuǎn)換為硬件型態(tài)的集成電路產(chǎn)品。除此之外,本文所述的裝置與方法可以結(jié)合硬件與軟件的方式實現(xiàn)。因此,本發(fā)明的范圍不應(yīng)以本文的任一實施例加以限定,而當(dāng)視所附的權(quán)利要求范圍及其等效物所界定者為準(zhǔn)。特別是,本發(fā)明可實現(xiàn)于通用計算機(jī)所使用的微處理器裝置中。最后,在不脫離本發(fā)明的精神和范圍內(nèi),所屬
      技術(shù)領(lǐng)域
      中具有通常知識者,當(dāng)可以上述所揭露實施例及其概念為基礎(chǔ),做些許更動與潤飾,用以實現(xiàn)與本發(fā)明相同的目的。權(quán)利要求一種檢測裝置,用以檢測一微處理器內(nèi)一載入操作與一先前儲存操作均存取同一快取列的一載入-儲存沖突,該檢測裝置包括一載入字節(jié)屏蔽,用于指定含有該載入操作所指定數(shù)據(jù)的起始字組;一儲存字節(jié)屏蔽,用于指定含有該儲存操作所指定數(shù)據(jù)的起始字組;一載入操作快取列字組屏蔽,用以于該快取列內(nèi),指定含有該載入操作所指定數(shù)據(jù)的字組;一儲存操作快取列字組屏蔽,用以于該快取列內(nèi),指定含有該儲存操作所指定數(shù)據(jù)的字組;以及一組合邏輯電路,用以檢測該載入-儲存沖突,若該載入操作與該儲存操作所指定數(shù)據(jù)起始于該快取列的同一字組,被配置使用該載入字節(jié)屏蔽與該儲存字節(jié)屏蔽來檢測該載入-儲存沖突,以及若該載入操作與該儲存操作所指定數(shù)據(jù)并非起始于該快取列的同一字組,被配置使用該載入操作快取列字組屏蔽與該儲存操作快取列字組屏蔽來檢測該載入-儲存沖突。2.根據(jù)權(quán)利要求1所述的檢測裝置,其中,該載入字節(jié)屏蔽的位數(shù)量以及該儲存字節(jié)屏蔽的位數(shù)量皆等于一字組包含的字節(jié)數(shù)量。3.根據(jù)權(quán)利要求1所述的檢測裝置,其中,該載入字節(jié)屏蔽的位數(shù)量以及該儲存字節(jié)屏蔽的位數(shù)量皆小于該微處理器微架構(gòu)所支持最大存儲器操作的字節(jié)數(shù)量。4.根據(jù)權(quán)利要求1所述的檢測裝置,其中,該載入操作快取列字組屏蔽的位數(shù)量以及該儲存操作快取列字組屏蔽的位數(shù)量皆等于該微處理器微架構(gòu)所支持最大存儲器操作的字節(jié)數(shù)量。5.根據(jù)權(quán)利要求1所述的檢測裝置,其中,若該載入字節(jié)屏蔽與該儲存字節(jié)屏蔽指示該載入數(shù)據(jù)與該儲存數(shù)據(jù)起始于該快取列的同一字組內(nèi)且具有一字節(jié)重疊,該組合邏輯電路被配置用以指示該載入_儲存沖突,否則,則指示沒有載入_儲存沖突。6.根據(jù)權(quán)利要求1所述的檢測裝置,其中,若該載入操作快取列字組屏蔽與該儲存操作快取列字組屏蔽指示該快取列內(nèi)具有一字組重疊,該組合邏輯電路被配置用以指示該載入_儲存沖突,否則,則指示沒有載入_儲存沖突。7.根據(jù)權(quán)利要求6所述的檢測裝置,其中,該組合邏輯電路包括多個移位器,該多個移位器用以將一載入字組屏蔽移位至該載入操作快取列字組屏蔽,以及將一儲存字組屏蔽移位至該儲存操作快取列字組屏蔽。8.—種檢測方法,用以檢測一微處理器內(nèi)一載入操作與一先前儲存操作之間,均存取同一快取列數(shù)據(jù)的一載入_儲存沖突,該檢測方法包括判斷由一載入字節(jié)屏蔽所指定的含有該載入操作所指定數(shù)據(jù)的起始字組與由一儲存字節(jié)屏蔽所指定的含有該儲存操作所指定數(shù)據(jù)的起始字組是否起始于該快取列的同一字組,其中,一字組包括多個字節(jié);若該載入操作所指定數(shù)據(jù)與該儲存操作所指定數(shù)據(jù)起始于該快取列的同一字組,利用該載入字節(jié)屏蔽與該儲存字節(jié)屏蔽檢測該載入-儲存沖突;以及若該載入操作所指定數(shù)據(jù)與該儲存操作所指定數(shù)據(jù)并非起始于該快取列的同一字組,利用一于該快取列內(nèi)指定含有該載入操作所指定數(shù)據(jù)的字組的載入操作快取列字組屏蔽與一于該快取列指定含有該儲存操作所指定數(shù)據(jù)的字組的儲存操作快取列字組屏蔽檢測該載入-儲存沖突。9.根據(jù)權(quán)利要求8所述的檢測方法,其中該載入字節(jié)屏蔽的位數(shù)量以及該儲存字節(jié)屏蔽的位數(shù)量皆等于一字組包含的字節(jié)數(shù)量。10.根據(jù)權(quán)利要求8所述的檢測方法,其中,該載入字節(jié)屏蔽的位數(shù)量以及該儲存字節(jié)屏蔽的位數(shù)量皆小于該微處理器微架構(gòu)所支持最大存儲器操作的字節(jié)數(shù)量。11.根據(jù)權(quán)利要求8所述的檢測方法,其中,該載入操作快取列字組屏蔽的位數(shù)量以及該儲存操作快取列字組屏蔽的位數(shù)量皆等于該微處理器微架構(gòu)所支持最大存儲器操作的字節(jié)數(shù)量。12.根據(jù)權(quán)利要求8所述的檢測方法,其中,利用字節(jié)屏蔽檢測該載入_儲存沖突的步驟包括于該載入字節(jié)屏蔽與該儲存字節(jié)屏蔽指示該載入數(shù)據(jù)與該儲存數(shù)據(jù)起始于該快取列的同一字內(nèi),若具有一字節(jié)重疊,則指示該載入_儲存沖突;以及否則,則指示沒有載入_儲存沖突。13.根據(jù)權(quán)利要求8所述的檢測方法,其中,使用字組屏蔽檢測該載入-儲存沖突的步驟包括于該載入操作快取列字組屏蔽與該儲存操作快取列字組屏蔽指示該快取列內(nèi),若具有一字組重疊,則指示該載入_儲存沖突;以及否則,則指示沒有載入_儲存沖突。14.根據(jù)權(quán)利要求13所述的檢測方法,其中,使用字組屏蔽檢測該載入-儲存沖突的步驟進(jìn)一步包括將一載入字組屏蔽移位至該載入操作快取列字組屏蔽;以及將一儲存字組屏蔽移位至該儲存操作快取列字組屏蔽。全文摘要一種檢測裝置,以檢測微處理器內(nèi)載入操作與先前儲存操作間,均存取同一快取列數(shù)據(jù)的載入-儲存沖突。載入及儲存字節(jié)屏蔽各自于快取列內(nèi)指定含有載入及儲存操作所指定數(shù)據(jù)的起始字組。載入及儲存操作快取列字組屏蔽各自于快取列內(nèi)指定含有載入及儲存操作所指定數(shù)據(jù)的字組。若載入及儲存操作所指定數(shù)據(jù)起始于快取列同一字組,組合邏輯電路使用載入及儲存字節(jié)屏蔽檢測載入-儲存沖突,若載入及儲存操作所指定數(shù)據(jù)并非起始于該快取列同一字組,則使用載入及儲存操作快取列字組屏蔽檢測載入-儲存沖突。文檔編號G06F9/38GK101853188SQ201010183399公開日2010年10月6日申請日期2010年5月20日優(yōu)先權(quán)日2009年5月21日發(fā)明者柯林·艾迪,羅德尼·E·虎克申請人:威盛電子股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1