国产精品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>

      網(wǎng)絡(luò)應(yīng)用內(nèi)的自動(dòng)高速緩存生成的制作方法

      文檔序號(hào):6507241閱讀:228來源:國知局
      專利名稱:網(wǎng)絡(luò)應(yīng)用內(nèi)的自動(dòng)高速緩存生成的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明的實(shí)施例涉及網(wǎng)絡(luò)應(yīng)用,尤其涉及針對(duì)網(wǎng)絡(luò)應(yīng)用的自動(dòng)高速緩存生成。
      背景技術(shù)
      網(wǎng)絡(luò)處理器(NP)正作為高速通信路由器的核心元件浮現(xiàn),并且它們被設(shè)計(jì)成專用于分組處理應(yīng)用。這些應(yīng)用通常具有嚴(yán)格的性能要求。例如,OC-192(10千兆比特/秒)POS(SONET分組)分組處理要求2800萬分組/秒的吞吐量或4.57微秒/分組的服務(wù)時(shí)間用于最差情況下的發(fā)送和接收。
      另一方面,NP中用于外部存儲(chǔ)器訪問的等待時(shí)間通常大于最差情況服務(wù)時(shí)間。為了解決分組處理的獨(dú)特難題(例如,在保持穩(wěn)定性的同時(shí)針對(duì)最差情況話務(wù)使吞吐量最大并使等待時(shí)間最小),現(xiàn)代網(wǎng)絡(luò)處理器通常具有高度并行的架構(gòu)。例如,諸如Intel IXA NPU家族網(wǎng)絡(luò)處理器(IXP)之類的某些網(wǎng)絡(luò)處理器包括并行運(yùn)行的多個(gè)微引擎(例如,有分組處理能力的可編程處理器),并且每個(gè)微引擎都支持多個(gè)硬件線程。
      因此,相關(guān)聯(lián)的網(wǎng)絡(luò)應(yīng)用也是高度并行的,并通常是多線程的以補(bǔ)償較長的存儲(chǔ)器訪問等待時(shí)間。只要有新分組到達(dá),就由一新線程對(duì)該分組執(zhí)行一系列任務(wù)(例如,分組的接收、路由表查找以及入隊(duì))。在這一并行編程范例中,對(duì)諸如共用存儲(chǔ)器內(nèi)的位置之類的全局資源的修改被臨界段保護(hù),以確保各線程之間的相互排他性和同步。
      每一臨界段通常讀取一資源,修改該資源并將其寫回(RMW)。

      圖1是示出多個(gè)線程的常規(guī)外部存儲(chǔ)器訪問的框圖。如圖1所示,如果要求一個(gè)以上線程修改同一臨界數(shù)據(jù),則如果每一線程都訪問該外部存儲(chǔ)器,就會(huì)導(dǎo)致對(duì)每一線程的等待時(shí)間惡化。參考圖1,必須順序執(zhí)行線程101至104中的每一個(gè)。例如,線程102在線程102能夠訪問外部存儲(chǔ)器的同一位置之前必須等待線程101完成對(duì)外部存儲(chǔ)器的讀取、修改和寫回操作。
      附圖簡述通過參考用來示出本發(fā)明實(shí)施例的以下描述和附圖,能夠更好地理解本發(fā)明。
      在附圖中圖1是示出一典型外部存儲(chǔ)器訪問的框圖。
      圖2是示出根據(jù)一個(gè)實(shí)施例的使用軟件控制的高速緩存的外部存儲(chǔ)器訪問的示例的框圖。
      圖3是示出根據(jù)一個(gè)實(shí)施例的高速緩存機(jī)制的示例的框圖。
      圖4是示出根據(jù)另一實(shí)施例的高速緩存機(jī)制的示例的框圖。
      圖5是示出根據(jù)一個(gè)實(shí)施例的用于軟件自動(dòng)控制的高速緩存的進(jìn)程的示例的流程圖。
      圖6至圖8是示出根據(jù)一個(gè)實(shí)施例的軟件控制的高速緩存操作的偽碼的示例的框圖。
      圖9是示出根據(jù)一個(gè)實(shí)施例的表示高速緩存候選的進(jìn)程的示例的流程圖。
      圖10至圖12是示出根據(jù)一個(gè)實(shí)施例的軟件控制的高速緩存操作的偽碼的示例的框圖。
      圖13是示出根據(jù)一個(gè)實(shí)施例的使用軟件控制的高速緩存的外部存儲(chǔ)器訪問的示例的框圖。
      圖14是示出根據(jù)一個(gè)實(shí)施例的CAM和LM的存儲(chǔ)器分配的示例的框圖。
      圖15是示出根據(jù)一個(gè)實(shí)施例的用于軟件自動(dòng)控制的高速緩存的進(jìn)程的示例的流程圖。
      圖16是示出根據(jù)一個(gè)實(shí)施例的用于在微引擎內(nèi)維護(hù)CAM和/或LM的映像的進(jìn)程的示例的流程圖。
      圖17是用于圖16的進(jìn)程示例的偽代碼的示例的框圖。
      圖18是示出根據(jù)一個(gè)實(shí)施例的具有多個(gè)微引擎的處理器的示例的框圖。
      圖19是示出根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。
      具體實(shí)施例方式
      在此將描述網(wǎng)絡(luò)應(yīng)用中的自動(dòng)軟件控制的高速緩存生成。在以下描述中,將闡明多個(gè)具體細(xì)節(jié)。然而可以理解,無需這些具體細(xì)節(jié)也能實(shí)現(xiàn)本發(fā)明的各實(shí)施例。在其他情況下,未詳細(xì)示出公知的電路、結(jié)構(gòu)和技術(shù)以免淡化對(duì)本發(fā)明的理解。
      以下詳細(xì)描述的某些部分將按照對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位的操作的算法和符號(hào)表示來提出。這些算法描述和表示可由數(shù)據(jù)處理技術(shù)領(lǐng)域的普通技術(shù)人員用于將他們的工作主旨有效地傳達(dá)給該領(lǐng)域其他技術(shù)人員。此處的算法通常被認(rèn)為是可導(dǎo)致期望結(jié)果的自一致的操作序列。這些操作是要求對(duì)物理量進(jìn)行物理處理的操作。在通常但非必須的情況下,這些量采用能被存儲(chǔ)、傳輸、組合、比較以及處理的電或磁信號(hào)的形式。已證實(shí)有時(shí)為了方便起見,主要是鑒于常用的原因,可將這些信號(hào)稱為比特、值、元素、符號(hào)、字符、項(xiàng)、數(shù)字等等。
      但應(yīng)該記住的是,所有這些及類似的術(shù)語都與合適的物理量相關(guān)聯(lián),并且只是應(yīng)用于這些量的方便的標(biāo)記。除非另外特別指出,否則如可以從以下討論中清楚的,可以理解,貫穿本說明書,使用諸如“處理”、“計(jì)算”、“演算”、“確定”或“顯示”之類的術(shù)語的討論指的是計(jì)算機(jī)系統(tǒng)或者類似的數(shù)據(jù)處理設(shè)備的動(dòng)作和/或進(jìn)程,這些設(shè)備將計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)被表示為物理(例如,電子)量的數(shù)據(jù)處理并變換成計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其他這類信息存儲(chǔ)、傳輸或顯示設(shè)備內(nèi)類似地被表示為物理量的其他數(shù)據(jù)。
      本發(fā)明的實(shí)施例還涉及用于執(zhí)行在此描述的操作的裝置。裝置可以是為了所需的目的特別構(gòu)造的,或者可以包括由存儲(chǔ)在計(jì)算機(jī)中的計(jì)算機(jī)程序選擇性地激活或重新配置的通用計(jì)算機(jī)。這些計(jì)算機(jī)程序可以被存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)諸如但不限于包括軟盤、光盤、CD-ROM和磁光盤的各類盤、只讀存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)RAM(DRAM)等隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、磁卡或光卡、或者適于存儲(chǔ)電子指令的任何類型的介質(zhì),并且上述存儲(chǔ)組件的每一個(gè)都能耦合至計(jì)算機(jī)系統(tǒng)總線。
      此處提出的算法和顯示本質(zhì)上并不涉及任何特定的計(jì)算機(jī)或其他裝置。可以結(jié)合根據(jù)此處的教示的程序使用各種通用系統(tǒng),或者構(gòu)造更專用的裝置以執(zhí)行這些方法可以被證明是方便的。用于這各種系統(tǒng)的結(jié)構(gòu)將從如下的描述中變得顯而易見。此外,將不會(huì)參考任何特定的編程語言來描述本發(fā)明的實(shí)施例。應(yīng)該認(rèn)識(shí)到,可以使用各種編程語言來實(shí)現(xiàn)對(duì)在此描述的本發(fā)明實(shí)施例的教示。
      機(jī)器可讀介質(zhì)包括用于存儲(chǔ)或傳輸具有機(jī)器(例如,計(jì)算機(jī))可讀形式的信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)可以包括只讀存儲(chǔ)器(″ROM″);隨機(jī)存取存儲(chǔ)器(″RAM″);磁盤存儲(chǔ)介質(zhì);光盤存儲(chǔ)介質(zhì);閃存設(shè)備;電、光、聲或其他形式的傳播信號(hào)(例如,載波、紅外信號(hào)、數(shù)字信號(hào)等等)等等。
      在一個(gè)實(shí)施例中,軟件控制的高速緩存可用于通過將多個(gè)RMW操作折疊成單個(gè)讀取和一個(gè)或多個(gè)修改來幫助減小等待時(shí)間的不利結(jié)果。因此,顯著降低了外部存儲(chǔ)器訪問的次數(shù),并有效地最小化了由線程間(圍繞臨界數(shù)據(jù)的)依賴性所導(dǎo)致的等待時(shí)間。
      圖2是示出根據(jù)一個(gè)實(shí)施例的多個(gè)線程的外部存儲(chǔ)器訪問的示例的框圖。外部存儲(chǔ)器訪問示例200包括含有線程201至204在內(nèi)的多個(gè)線程。與圖1所示的存儲(chǔ)器訪問類似,每個(gè)線程包括讀取操作、修改操作和寫入操作,這些操作被稱為RMW操作。在一個(gè)實(shí)施例中,使用如下將詳述的高速緩存機(jī)制將線程201至204的RMW操作合并或折疊成單個(gè)讀取操作、一個(gè)或多個(gè)修改操作以及在末尾的單個(gè)寫入操作。結(jié)果,顯著減少了外部存儲(chǔ)器訪問的次數(shù),并大幅減小由線程間依賴性所導(dǎo)致的等待時(shí)間。
      圖3是示出根據(jù)一個(gè)實(shí)施例的高速緩存機(jī)制的示例的框圖。在一個(gè)實(shí)施例中,高速緩存機(jī)制300可以在諸如Intel IXA NPU家族的網(wǎng)絡(luò)處理器(IXP)等具有多個(gè)微引擎的處理器的一個(gè)微引擎中實(shí)現(xiàn)。
      例如,根據(jù)一個(gè)實(shí)施例,在諸如Intel IXA NPU家族的網(wǎng)絡(luò)處理器(IXP)等具有多個(gè)微引擎的處理器的每個(gè)微引擎中,內(nèi)容可尋址存儲(chǔ)器(CAM)單元和局部存儲(chǔ)器(LM)可以被組合以實(shí)現(xiàn)軟件控制的高速緩存。微引擎中的CAM單元是內(nèi)容可尋址存儲(chǔ)器。CAM單元中的每一條目都存儲(chǔ)高速緩存線的狀態(tài)和標(biāo)志部分,并且其最近最少使用(LRU)邏輯維護(hù)CAM條目使用的時(shí)序列表。此外,微引擎中的局部存儲(chǔ)器基本上是其中能夠存儲(chǔ)高速緩存線的數(shù)據(jù)部分的已索引寄存器文件。所有相關(guān)的高速緩存操作(例如,查找標(biāo)志、數(shù)據(jù)加載、數(shù)據(jù)寫回等等)都在軟件控制之下。
      在一個(gè)實(shí)施例中,處理器包括但不限于,各自具有內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器以基本同時(shí)地執(zhí)行多個(gè)線程的多個(gè)微引擎,每個(gè)線程都包括基于實(shí)質(zhì)相同的基地址來執(zhí)行至少一個(gè)外部存儲(chǔ)器訪問的一個(gè)或多個(gè)指令,其中在CAM中檢查基地址以確定該CAM是否包括含有該基地址的條目,并且如果該CAM包括了含有該基地址的條目,則無需訪問外部存儲(chǔ)器就能訪問對(duì)應(yīng)于該CAM條目的局部存儲(chǔ)器的條目。
      參見圖3,在一個(gè)實(shí)施例中,高速緩存機(jī)制示例300包括但不限于CAM 301和LM 302。雖然高速緩存機(jī)制示例300示出了一個(gè)CAM和一個(gè)LM,但應(yīng)該認(rèn)識(shí)到,可實(shí)現(xiàn)一個(gè)以上CAM和LM。CAM 301和LM 302可以被組合使用以自動(dòng)實(shí)現(xiàn)軟件控制的高速緩存以減輕網(wǎng)絡(luò)應(yīng)用中訪問外部存儲(chǔ)器的等待時(shí)間的不利結(jié)果。為說明起見,CAM和LM單元被用作一示例以示出貫穿本申請(qǐng)的程序變換。但也應(yīng)該認(rèn)識(shí)到,也可實(shí)現(xiàn)其他類型的存儲(chǔ)器和機(jī)制而不背離本發(fā)明實(shí)施例的較寬范圍和精神。
      在一個(gè)實(shí)施例中,CAM 301包括一個(gè)或多個(gè)條目304至306,其中條目304至306中的每一個(gè)都包括標(biāo)志字段和狀態(tài)字段,以分別存儲(chǔ)高速緩存線的標(biāo)志部分和狀態(tài)部分。此外,CAM 301還包括一最近最少使用(LRU)邏輯以確定CAM 301中最近最少使用的條目。在一個(gè)實(shí)施例中,LM 302包括一個(gè)或多個(gè)條目308至310,其中條目308至310中的每一個(gè)都被用于存儲(chǔ)高速緩存線的數(shù)據(jù)部分。
      在一個(gè)實(shí)施例中,當(dāng)接收到對(duì)訪問帶有外部存儲(chǔ)器的基地址的位置的請(qǐng)求時(shí),處理該請(qǐng)求的線程的微引擎可以檢查(例如,走查)CAM 301以定位帶有所請(qǐng)求的基地址的條目。例如,可以檢查CAM 301的條目304至306中的每一個(gè)以匹配所請(qǐng)求的外部存儲(chǔ)器的基地址。通常,CAM 301的條目304至306中的每一個(gè)可存儲(chǔ)最近訪問的外部存儲(chǔ)器的基地址。如果在CAM 301中找到帶有所請(qǐng)求的基地址的條目,則LRU邏輯303返回具有狀態(tài)字段312、情況字段313和條目號(hào)字段314的結(jié)果311。狀態(tài)字段312可以包含相對(duì)應(yīng)的高速緩存線的狀態(tài)和/或CAM的狀態(tài),而情況字段313則指示該高速緩存是命中(結(jié)果311b)還是未中(結(jié)果311a)。條目號(hào)字段314包括內(nèi)含所請(qǐng)求的基地址的CAM 301命中條目號(hào)。命中條目號(hào)可用于根據(jù)如下將進(jìn)一步描述的預(yù)定算法經(jīng)由LM 302的索引邏輯307來訪問LM302的條目。
      如果確定CAM 301不含有所請(qǐng)求的基地址,則LRU邏輯303返回CAM 301的最近最少使用條目(例如,結(jié)果311a)。CAM的最近最少使用條目鏈接至可用于存儲(chǔ)(例如,高速緩存)來自外部存儲(chǔ)器訪問的數(shù)據(jù)以供對(duì)同一基地址的后續(xù)外部存儲(chǔ)器訪問的LM 302的條目。
      LRU邏輯303可被實(shí)現(xiàn)為CAM 301的一部分,和/或索引邏輯可被實(shí)現(xiàn)為LM302的一部分。然而,該配置可以不限于圖3所示的那一種。應(yīng)該認(rèn)識(shí)到,可存在其他配置。例如,根據(jù)另一實(shí)施例,作為圖4所示的高速緩存機(jī)制示例400,LRU邏輯303可以在CAM 301外部實(shí)現(xiàn),和/或索引邏輯307可以在LM 302外部實(shí)現(xiàn)。此外,CAM 301和/或LM 302可被實(shí)現(xiàn)為在處理器內(nèi)的多個(gè)微引擎之間共享的全局CAM和/或LM的一部分,其中該全局CAM和LM可被劃分成用于多個(gè)微引擎的多個(gè)分區(qū)。也可存在其他配置。
      圖5是示出根據(jù)一個(gè)實(shí)施例的用于軟件自動(dòng)控制的高速緩存的進(jìn)程的示例的流程圖。示例性進(jìn)程500可由包括硬件(電路、專用邏輯等)、軟件(諸如在專用機(jī)器上運(yùn)行的軟件)或兩者的組合的處理邏輯執(zhí)行。例如,進(jìn)程示例500可由編譯器在編譯用諸如C/C++和/或匯編語言等各種編程語言編寫的源代碼時(shí)執(zhí)行。在一個(gè)實(shí)施例中,進(jìn)程示例包括但不限于,標(biāo)識(shí)表示執(zhí)行一個(gè)或多個(gè)外部存儲(chǔ)器訪問的多個(gè)線程的多個(gè)指令的候選,其中外部存儲(chǔ)器訪問帶有實(shí)相同的基地址;以及將一個(gè)或多個(gè)偽指令或指令插入到與所標(biāo)識(shí)的候選相對(duì)應(yīng)的指令流中,以維護(hù)處理器的內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)中的至少一個(gè)的內(nèi)容并修改該外部存儲(chǔ)器訪問的至少一個(gè)以訪問處理器的CAM和LM中的至少一個(gè)而無需執(zhí)行各自的外部存儲(chǔ)器訪問。
      參見圖5,在框501處,處理邏輯接收用諸如C/C++和/或匯編語言等各種編程語言編寫的源代碼。在框502處,該處理邏輯對(duì)該源代碼進(jìn)行語法分析以標(biāo)識(shí)用于軟件控制的高速緩存的一個(gè)或多個(gè)候選,諸如具有實(shí)際相同的基地址的每個(gè)線程內(nèi)的外部存儲(chǔ)器訪問。在框503處,該處理邏輯將一個(gè)或多個(gè)指令插入該源代碼的指令流中以維護(hù)處理器的微引擎的CAM和/或LM的映像,并修改候選的原始外部存儲(chǔ)器訪問以訪問LM的數(shù)據(jù)映像而無需訪問該外部存儲(chǔ)器。也可執(zhí)行其他操作。
      在一個(gè)實(shí)施例中,在網(wǎng)絡(luò)應(yīng)用手動(dòng)或通過并行化編譯器自動(dòng)多線程化之后,每個(gè)線程對(duì)新接收的分組執(zhí)行本質(zhì)上相同的操作,并且對(duì)全局資源(例如,外部存儲(chǔ)器訪問)的修改受到臨界段保護(hù)。這一變換自動(dòng)識(shí)別用于高速緩存的候選(每個(gè)線程內(nèi)的外部存儲(chǔ)器訪問)并實(shí)現(xiàn)軟件控制的高速緩存(例如,維護(hù)CAM和LM的映像,并且修改原始訪問以訪問LM中的數(shù)據(jù)映像)。
      為了提供用于軟件控制的高速緩存的候選,必須基于對(duì)相應(yīng)源代碼的分析從多個(gè)潛在候選中標(biāo)識(shí)出該候選。圖6是示出根據(jù)一個(gè)實(shí)施例的可用與提供用于軟件控制的高速緩存的候選的源代碼的示例。參見圖6,源代碼示例600包括可經(jīng)由多線程進(jìn)程處理的多個(gè)操作框601至604。
      在一個(gè)實(shí)施例中,源代碼示例600可以被分析以生成如圖7所示的潛在候選池。參見圖7,在此示例中,潛在候選池700包括候選701至705。在一個(gè)實(shí)施例中,候選701至705可以被分析以標(biāo)識(shí)經(jīng)由同一基地址的外部存儲(chǔ)器訪問的閉集。即,它們?cè)L問地址(基址+偏移量),其中基址對(duì)集合內(nèi)的全部訪問是共有的,且對(duì)不同線程可以是不同的,而偏移量則是一常數(shù)。該結(jié)合在它包含線程內(nèi)彼此依賴的所有訪問的意義上是封閉的。
      結(jié)果,根據(jù)一個(gè)實(shí)施例,如圖8所示,任何不合格的候選被篩出,并且一個(gè)或多個(gè)合格候選可基于它們相同的基地址被合并成一個(gè)更大的候選。在一個(gè)實(shí)施例中,如果該基址并非對(duì)候選內(nèi)的所有訪問是共用的,則該候選對(duì)于高速緩存是不合格的?;蛘撸绻梢缓蜻x訪問的存儲(chǔ)器位置能夠被其他程序訪問,則該相應(yīng)候選是不合格的。在該示例中,候選701是不合格候選,因?yàn)樗哂胁煌幕刂?。另一方面,候選702至705是合格候選,因?yàn)樗鼈兙哂邢嗤幕刂?例如,state+16*i),由此,候選702至705被合并成一個(gè)更大的候選800,作為用于高速緩存的最終候選。
      圖9是示出根據(jù)一個(gè)實(shí)施例的標(biāo)識(shí)用于高速緩存的候選的進(jìn)程的示例的流程圖。進(jìn)程示例900可由包括硬件(電路、專用邏輯等)、軟件(諸如在專用機(jī)器上運(yùn)行的軟件)或兩者的組合的處理邏輯執(zhí)行。例如,進(jìn)程示例900可由編譯器在編譯用諸如C/C++和/或匯編語言等各種編程語言編寫的源代碼時(shí)執(zhí)行。
      參見圖9,在框901處,處理邏輯將基本上所有的外部存儲(chǔ)器訪問劃分成一個(gè)或多個(gè)候選集合(例如,閉集)。例如,若訪問A依賴于訪問B,則它們可以被分入同一分區(qū)。即,如果兩個(gè)訪問處于依賴關(guān)系,則它們應(yīng)該訪問同一數(shù)據(jù)映像(在外部存儲(chǔ)器內(nèi)或在局部存儲(chǔ)器內(nèi))。因此,所標(biāo)識(shí)的每個(gè)閉集都是一個(gè)用于高速緩存的候選。
      在框902處,可以對(duì)每個(gè)外部存儲(chǔ)器訪問的地址可任選地執(zhí)行一個(gè)或多個(gè)前向復(fù)制變換。例如,以下操作a=b+c;d=load[a];可被變換成以下操作d=load[b+c]在框903處,可以為每個(gè)線程執(zhí)行一個(gè)或多個(gè)全局值編號(hào)和/或恒定折疊操作。例如,在全局值編號(hào)操作期間,下列操作a=2;b=c*a;d=2;e=d*c;可以被變換成以下操作a=2;b=c*a;a=2;b=c*a;例如,在恒定折疊操作期間,以下操作a=2;b=c+d;e=a+b;可以被變換成以下操作a=2;b=c+d;e=2+b;在框904處,對(duì)與每個(gè)候選的每個(gè)外部存儲(chǔ)器訪問,外部存儲(chǔ)器訪問的地址被轉(zhuǎn)換成(基址+偏移量)的形式。在一個(gè)實(shí)施例中,基地址是地址的非恒定部分,而偏移量是恒定部分。注意,如果一程序已在使同一地址具有同一表示的意義下被值編號(hào),則變換效率將得到改善。
      在框905處,標(biāo)識(shí)例如圖7的候選702至705等一個(gè)或多個(gè)合格候選,而不合格候選則被篩除(例如,消除)。在一個(gè)實(shí)施例中,如果基地址對(duì)分區(qū)內(nèi)基本上所有外部存儲(chǔ)器訪問來說不是相同的,那么相應(yīng)的一個(gè)或多個(gè)候選被認(rèn)為是不合格的。此外,如果外部存儲(chǔ)器訪問的存儲(chǔ)器位置可以被其他程序訪問,則對(duì)應(yīng)的一個(gè)或多個(gè)候選也被認(rèn)為是不合格的。即,如果正被訪問的存儲(chǔ)器地址對(duì)其他程序來說是已知的,例如是被外部定義的,那么這些地址就不適用于高速緩存。這一個(gè)或多個(gè)候選可以通過由編譯器執(zhí)行的換碼分析來標(biāo)識(shí)。
      在框906處,合格候選可以被合并成單個(gè)大候選。例如,根據(jù)一個(gè)實(shí)施例,具有相同基地址的所有合格候選可以被組合為單個(gè)候選,諸如圖8中的候選800。在框907處,選擇具有組合的最大候選的候選作為用于高速緩存的最終候選。也可以執(zhí)行其他操作。
      注意,軟件控制的高速緩存用于減輕對(duì)多線程全局資源的修改的等待時(shí)間不利結(jié)果。然而,如果CAM和LM單元是由多個(gè)線程共享的全局資源,則所有的高速緩存操作就應(yīng)該受到臨界段的保護(hù)。根據(jù)一個(gè)實(shí)施例,為簡化臨界段所需的同步,僅選擇一個(gè)候選(例如,一個(gè)全局資源)。然而,應(yīng)該認(rèn)識(shí)到,只要能適當(dāng)?shù)靥幚砼R界段,就可以依據(jù)特定系統(tǒng)設(shè)計(jì)選擇一個(gè)以上選。
      在標(biāo)識(shí)了用于高速緩存的最終候選之后,將一條或多條指令插入到相應(yīng)的指令流中以維護(hù)CAM和LM單元,并且修改該候選中的原始訪問以訪問LM中的數(shù)據(jù)映像。圖10是示出在每條外部存儲(chǔ)器訪問指令之前已插入了一高速緩存指令的偽代碼的示例的框圖。在某些情況下,所插入的高速緩存指令可以如圖11所示地復(fù)制并被合并成每個(gè)相關(guān)外部存儲(chǔ)器訪問的一條高速緩存指令。其后,可以擴(kuò)展所插入的高速緩存指令來修改外部存儲(chǔ)器訪問,以便如圖12所示地訪問相應(yīng)的局部存儲(chǔ)器而非訪問外部存儲(chǔ)器。在此示例中,base=state+i*16,m=0,M=15,并且n是含有基址的CAM中的條目。
      于是,當(dāng)不同的線程訪問同一數(shù)據(jù)時(shí),這些線程就能如圖13所示(假設(shè)LM內(nèi)的起始地址B是0)直接訪問LM內(nèi)的數(shù)據(jù)映像。此外,還可以執(zhí)行一些進(jìn)一步的優(yōu)化。例如,響應(yīng)于CAM查找未中,擴(kuò)展的高速緩存指令僅寫回臟字節(jié)并且僅載入實(shí)際使用的字節(jié)。也可以執(zhí)行其他操作。
      為執(zhí)行合適的軟件控制的高速緩存,必須為每個(gè)外部存儲(chǔ)器訪問保留充足的局部存儲(chǔ)空間。圖14是示出根據(jù)一個(gè)實(shí)施例的CAM和LM的存儲(chǔ)器分配的示例的框圖。參見圖14,存儲(chǔ)器配置示例1400包括CAM 1401和局部存儲(chǔ)器1402。CAM 1401包括分別對(duì)應(yīng)于一個(gè)或多個(gè)保留的存儲(chǔ)空間1405至1406的一個(gè)或多個(gè)條目1403至1404。
      對(duì)于候選內(nèi)的每個(gè)訪問,其地址采用基址+偏移量的形式。為了說明起見,假設(shè)m是(具有CAM 1401的第n個(gè)條目的)選定候選中的所有訪問中所訪問的最小地址字節(jié)并且M是所訪問的最大地址字節(jié),而N是CAM中的條目數(shù),則在LM302中為數(shù)據(jù)映像保留N*(M-m+1)個(gè)字節(jié)。假設(shè)LM 302中的數(shù)據(jù)映像的起始地址是B。如果候選的基地址被存儲(chǔ)在CAM的第n個(gè)條目1404中,其中n的范圍在0至N-1之間,則LM 302內(nèi)相關(guān)聯(lián)高速緩存線的數(shù)據(jù)部分就如存儲(chǔ)空間1406中所指示的那樣從B+n*(M-m+1)至B+(n+1)*(M-m+1)-1。
      圖15是示出根據(jù)一個(gè)實(shí)施例的用于自動(dòng)軟件控制的高速緩存的進(jìn)程的示例的流程圖。進(jìn)程示例1500可以由包括硬件(電路、專用邏輯等)、軟件(諸如在專用機(jī)器上運(yùn)行的軟件)或兩者的組合的處理邏輯執(zhí)行。例如,進(jìn)程示例1500可由編譯器在編譯用諸如C/C++和/或匯編語言等各種編程語言編寫的源代碼時(shí)執(zhí)行。
      參見圖15,在框1501處,在局部存儲(chǔ)器中保留充足的存儲(chǔ)空間以存儲(chǔ)外部存儲(chǔ)器訪問的高速緩存線的數(shù)據(jù)部分。在框1502處,例如如圖10所示,將一高速緩存指令插入到每個(gè)候選的每一外部存儲(chǔ)器訪問指令之前。在框1503處,處理邏輯可任選地對(duì)插入的高速緩存指令執(zhí)行局部冗余性消除操作,從而例如如圖10所示,在該局部冗余性消除之后,在通過該程序的任何路徑中最多有一條高速緩存指令。在框1504處,高速緩存指令被擴(kuò)展至一個(gè)或多個(gè)碼序列,用于在CAM中查找基地址,收回老的高速緩存線并在CAM中查找未中的情況下將新映像載入LM。在框1505處,修改每個(gè)候選的每個(gè)外部存儲(chǔ)器訪問以訪問LM內(nèi)的相關(guān)聯(lián)數(shù)據(jù)映像。注意,包括擴(kuò)展高速緩存指令和經(jīng)修改的訪問在內(nèi)的實(shí)現(xiàn)軟件控制的高速緩存的所有指令都應(yīng)該受到臨界段的保護(hù)。也可以執(zhí)行其他操作。
      圖16是示出根據(jù)一個(gè)實(shí)施例的用于維護(hù)微引擎內(nèi)的CAM和/或LM的映像的進(jìn)程的示例的流程圖。進(jìn)程示例1600可由包括硬件(電路、專用邏輯等)、軟件(諸如在專用機(jī)器上運(yùn)行的軟件)或兩者的組合的處理邏輯執(zhí)行。例如,進(jìn)程示例1600可由編譯器在編譯用諸如C/C++和/或匯編語言等各種編程語言編寫的源代碼時(shí)執(zhí)行??梢詧?zhí)行進(jìn)程示例1600作為圖15的框1504處所執(zhí)行操作的一部分。
      參見圖16,當(dāng)處理邏輯接收到訪問外部存儲(chǔ)器位置的請(qǐng)求時(shí),在框1601處,處理邏輯在CAM中進(jìn)行查找以確定該CAM是否含有所請(qǐng)求的外部存儲(chǔ)器訪問的基地址。如果CAM含有所請(qǐng)求的外部存儲(chǔ)器訪問的基地址(例如,命中),那么在框1606處,檢索CAM中含有該基地址的對(duì)應(yīng)條目的索引,并在框1607處在無需訪問外部存儲(chǔ)器的情況下基于檢索到的索引訪問LM的條目。
      如果CAM不包含所請(qǐng)求的外部存儲(chǔ)器訪問的基地址(例如,未中),則在框1602處,分配或標(biāo)識(shí)CAM中的最近最少使用(LRU)條目(例如,用于前一外部存儲(chǔ)器訪問的先前的高速緩存操作的條目),并檢索其中存儲(chǔ)的索引和地址。在框1603處,檢查存儲(chǔ)在CAM的LRU條目中的檢索到的地址來確定該地址是否有效。
      如果該地址被確定為有效,則在框1604處,基于所標(biāo)識(shí)的有效地址將存儲(chǔ)在相應(yīng)局部存儲(chǔ)器內(nèi)的數(shù)據(jù)(例如,用于前一外部存儲(chǔ)器訪問的先前的高速緩存數(shù)據(jù))寫回(例如,交換)至外部存儲(chǔ)器。于是,CAM的LRU條目和對(duì)應(yīng)的LM空間現(xiàn)在可用于高速緩存當(dāng)前的外部存儲(chǔ)器訪問。在框1605處,將當(dāng)前存儲(chǔ)器訪問的數(shù)據(jù)從由基地址標(biāo)識(shí)的外部存儲(chǔ)器位置載入CAM的LRU條目以及對(duì)應(yīng)的LM空間中。在框1606處,響應(yīng)于該請(qǐng)求,返回存儲(chǔ)在局部存儲(chǔ)器中的數(shù)據(jù)。圖17是用于圖16的進(jìn)程示例1600的偽代碼的示例的框圖。也可以執(zhí)行其他操作。
      圖18是根據(jù)一個(gè)實(shí)施例的具有多個(gè)微引擎的處理器的示例的框圖。處理器示例1800包括多個(gè)微引擎1801至1802。微引擎1801至1802中的每一個(gè)都各自包括分別由LRU邏輯1807至1808管理的CAM 1803至1804。每個(gè)微引擎還各自包括分別由索引邏輯1809至1810管理的LM 1805至1806。微引擎1801至1802可用于執(zhí)行上述的自動(dòng)軟件控制額高速緩存操作,其中每個(gè)微引擎都能為各自的線程基本同時(shí)地執(zhí)行這些操作。應(yīng)該理解,未示出處理器的某些公知組件以避免用不必要的細(xì)節(jié)模糊本發(fā)明的各實(shí)施例。
      圖19是示出根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)的示例的框圖。示例性系統(tǒng)1900可用于執(zhí)行針對(duì)上述軟件控制的高速緩存的進(jìn)程示例。注意,雖然圖19示出了計(jì)算機(jī)系統(tǒng)的各種組件,但是它并不旨在表示任何特定的架構(gòu)或組件互連方式,因?yàn)檫@些細(xì)節(jié)與本發(fā)明并沒有密切聯(lián)系。還應(yīng)該理解,具有更少或可能更多組件的網(wǎng)絡(luò)計(jì)算機(jī)、手持式計(jì)算機(jī)、蜂窩電話和其他數(shù)據(jù)處理系統(tǒng)也可以用于本發(fā)明。圖19的計(jì)算機(jī)系統(tǒng)例如可以是Apple Macintosh計(jì)算機(jī)或IBM兼容PC。
      參見圖19,計(jì)算機(jī)系統(tǒng)1900包括但不限于處理數(shù)據(jù)信號(hào)的處理器1902。處理器1902可以是圖1所示的示例性處理器100。處理器1902可以是復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精簡指令集計(jì)算機(jī)(RISC)微處理器、超長指令字(VLIW)微處理器、實(shí)現(xiàn)指令集組合的處理器、或者諸如數(shù)字信號(hào)處理器等其他處理設(shè)備。圖19示出了被實(shí)現(xiàn)為單個(gè)處理器系統(tǒng)1900的本發(fā)明的一個(gè)實(shí)施例的示例。然而,應(yīng)該理解,本發(fā)明的實(shí)施例也可以替換地被實(shí)現(xiàn)為具有多個(gè)處理器的系統(tǒng)。處理器1902可以耦合至在處理器1902和系統(tǒng)1900內(nèi)的其他組件之間傳輸數(shù)據(jù)信號(hào)的處理器總線1910。
      在一個(gè)實(shí)施例中,處理器1902包括但不限于多個(gè)微引擎1940至1942。微引擎1940至1942可用于為多個(gè)線程基本同時(shí)執(zhí)行自動(dòng)軟件控制的高速緩存。
      此外,系統(tǒng)1900包括存儲(chǔ)器1916。存儲(chǔ)器1916可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)設(shè)備、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)設(shè)備或其他存儲(chǔ)器設(shè)備。存儲(chǔ)器1916可以存儲(chǔ)由可以被處理器1902執(zhí)行的數(shù)據(jù)信號(hào)表示的指令和/或數(shù)據(jù)。指令和/或數(shù)據(jù)可以包括用于執(zhí)行本發(fā)明任何和/或全部技術(shù)的代碼。編譯器用于編譯源代碼,包括標(biāo)識(shí)適用于軟件控制的高速緩存的一個(gè)或多個(gè)候選,以及插入并擴(kuò)展高速緩存指令以訪問局部存儲(chǔ)器而非外部存儲(chǔ)器。存儲(chǔ)器1916還可包括未示出的附加軟件和/或數(shù)據(jù)。對(duì)存儲(chǔ)在存儲(chǔ)器1916內(nèi)的數(shù)據(jù)信號(hào)進(jìn)行存儲(chǔ)的高速緩沖存儲(chǔ)器1904可以位于處理器1902內(nèi)部或者外部。本實(shí)施例中的高速緩沖存儲(chǔ)器1904通過利用其訪問的局部性來加速處理器的存儲(chǔ)器訪問。
      此外,橋/存儲(chǔ)器控制器1914可被耦合至處理器總線1910和存儲(chǔ)器1916。橋/存儲(chǔ)器控制器1914在處理器1902、存儲(chǔ)器1916和系統(tǒng)1900中的其他組件之間引導(dǎo)數(shù)據(jù)信號(hào)并在處理器總線1910、存儲(chǔ)器1916和第一輸入/輸出(I/O)總線1920之間橋接數(shù)據(jù)信號(hào)。在某些實(shí)施例中,橋/存儲(chǔ)器控制器提供用于耦合到圖形控制器1912的圖形端口。在此實(shí)施例中,圖形控制器1912接口至顯示設(shè)備以向用戶顯示圖形控制器1912描繪或處理的圖像。顯示設(shè)備可以包括電視機(jī)、計(jì)算機(jī)監(jiān)視器、平板顯示器或其他合適的顯示設(shè)備。
      第一I/O總線1920可以包括單條總線或多條總線的組合。第一I/O總線1920提供系統(tǒng)1900內(nèi)的各組件之間的通信鏈路。網(wǎng)絡(luò)控制器1922可以耦合至第一I/O總線1920。網(wǎng)絡(luò)控制器將系統(tǒng)1900鏈接至包括多個(gè)處理系統(tǒng)并支持各系統(tǒng)間的通信的網(wǎng)絡(luò)。處理系統(tǒng)的網(wǎng)絡(luò)可以包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)或其他網(wǎng)絡(luò)。用于編譯源代碼的編譯器可以經(jīng)由網(wǎng)絡(luò)從一個(gè)計(jì)算機(jī)傳輸至另一個(gè)系統(tǒng)。類似地,包括編譯器插入的偽指令或指令的已編譯代碼可以從主機(jī)(例如,開發(fā)機(jī))傳輸至目標(biāo)機(jī)(例如,執(zhí)行機(jī))。
      在某些實(shí)施例中,顯示設(shè)備控制器1924可以被耦合至第一I/O總線1920。顯示設(shè)備控制器1924允許將顯示設(shè)備耦合至系統(tǒng)1900并用作顯示設(shè)備和系統(tǒng)之間的接口。顯示設(shè)備可包括電視機(jī)、計(jì)算機(jī)監(jiān)視器、平板顯示器或其他合適的顯示設(shè)備。顯示設(shè)備通過顯示設(shè)備控制器1924接收來自處理器1902的數(shù)據(jù)信號(hào),并向系統(tǒng)1900的用戶顯示包含在該數(shù)據(jù)信號(hào)內(nèi)的信息。
      第二I/O總線1930可以包括單條總線或多條總線的組合。第二I/O總線1930提供系統(tǒng)1900內(nèi)的各組件之間的通信鏈路。數(shù)據(jù)存儲(chǔ)設(shè)備1932可以耦合至第二I/O總線1930。數(shù)據(jù)存儲(chǔ)設(shè)備1932包括硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、CD-ROM設(shè)備、閃存設(shè)備或其他大容量存儲(chǔ)設(shè)備。數(shù)據(jù)存儲(chǔ)設(shè)備1932可以包括一個(gè)或多個(gè)所述的數(shù)據(jù)存儲(chǔ)設(shè)備。
      諸如鍵盤或定點(diǎn)設(shè)備(例如,鼠標(biāo))等用戶輸入接口1934可以耦合至第二I/O總線1930。用戶輸入接口1934可以包括鍵盤控制器或其他鍵盤接口設(shè)備。用戶輸入接口1934可以包括專用設(shè)備或者可以駐留在諸如總線控制器或其他控制器設(shè)備等另一設(shè)備之內(nèi)。用戶輸入接口1934允許用戶輸入設(shè)備(例如,鍵盤、鼠標(biāo)、操縱桿或跟蹤球等)與系統(tǒng)1900的耦合并將數(shù)據(jù)信號(hào)從用戶輸入設(shè)備傳輸至系統(tǒng)1900。
      一個(gè)或多個(gè)I/O控制器1938可用于將一個(gè)或多個(gè)I/O設(shè)備連接至示例性系統(tǒng)1900。例如,I/O控制器1938可以包括適用于控制USB(通用串行總線)外圍設(shè)備的USB適配器,或者適用于控制IEEE 1934(也稱之為火線(Firewire))兼容設(shè)備的IEEE 1934總線控制器。
      此外,系統(tǒng)1900的元件執(zhí)行本領(lǐng)域內(nèi)公知的其常規(guī)功能。更具體地,數(shù)據(jù)存儲(chǔ)設(shè)備1932可以用于根據(jù)本發(fā)明實(shí)施例為用于動(dòng)態(tài)循環(huán)聚集方法的實(shí)施例的可執(zhí)行指令和數(shù)據(jù)結(jié)構(gòu)提供長期存儲(chǔ),而存儲(chǔ)器1916則用于根據(jù)本發(fā)明的實(shí)施例在處理器1902執(zhí)行期間在短期的基礎(chǔ)上存儲(chǔ)動(dòng)態(tài)循環(huán)聚集方法的實(shí)施例的可執(zhí)行指令。
      雖然以上示例描述了經(jīng)由數(shù)據(jù)存儲(chǔ)設(shè)備對(duì)計(jì)算機(jī)代碼的分發(fā),但是也可以通過其他計(jì)算機(jī)可讀介質(zhì)來分發(fā)程序代碼。例如,可以通過諸如軟盤、CD ROM、載波、網(wǎng)絡(luò)甚至是經(jīng)因特網(wǎng)的傳輸?shù)扔?jì)算機(jī)可讀介質(zhì)來分發(fā)計(jì)算機(jī)程序。軟件代碼編譯器通常在代碼編譯過程中使用優(yōu)化以試圖生成更快更好的代碼。
      由此,此處已描述了網(wǎng)絡(luò)應(yīng)用中的自動(dòng)軟件控制的高速緩存生成。在前述說明中,本發(fā)明是參考其具體的示例性實(shí)施例來描述的。顯而易見的是,可以在不背離所附權(quán)利要求書中闡明的本發(fā)明的較寬的精神和范圍的前提下對(duì)其做出各種修改。因此,說明書和附圖是說明性而非限制性的意義上考慮的。
      權(quán)利要求
      1.一種方法,包括標(biāo)識(shí)表示執(zhí)行一個(gè)或多個(gè)外部存儲(chǔ)器訪問的多個(gè)線程的多條指令的候選,所述外部存儲(chǔ)器訪問具有實(shí)際相同的基地址;以及將偽指令和指令中的至少一個(gè)插入到對(duì)應(yīng)于所標(biāo)識(shí)的候選的指令流中,以便維護(hù)處理器的內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)中的至少一個(gè)的內(nèi)容,并且修改所述外部存儲(chǔ)器訪問中的至少一個(gè)以在無需執(zhí)行各自的外部存儲(chǔ)器訪問的情況下訪問所述處理器的CAM和LM中的至少一個(gè)。
      2.如權(quán)利要求1所述的方法,其特征在于,還包括基于所述指令間的依賴關(guān)系將所述外部存儲(chǔ)器訪問的多條指令劃分成一個(gè)或多個(gè)潛在候選集合;以及選擇所述潛在候選集合之一作為所述候選,所述候選的指令滿足預(yù)定的依賴關(guān)系。
      3.如權(quán)利要求2所述的方法,其特征在于,還包括將每個(gè)外部存儲(chǔ)器訪問的地址轉(zhuǎn)換成具有基地址和偏移量的形式。
      4.如權(quán)利要求3所述的方法,其特征在于,所述基地址是所轉(zhuǎn)換的地址的非恒定部分,而所述偏移量是恒定部分。
      5.如權(quán)利要求3所述的方法,其特征在于,還包括從所述潛在候選中篩除一個(gè)或多個(gè)不合格候選,其中所述不合格候選包括與其余的潛在候選不同的基地址。
      6.如權(quán)利要求3所述的方法,其特征在于,還包括將具有實(shí)際相同的基地址的多個(gè)潛在候選組合成單個(gè)候選,其中具有最多所述潛在候選的組被選為用于高速緩存的最終候選。
      7.如權(quán)利要求1所述的方法,其特征在于,所述標(biāo)識(shí)候選還包括對(duì)每一所述外部存儲(chǔ)器訪問的地址執(zhí)行前向復(fù)制變換;以及為每個(gè)線程執(zhí)行全局值編號(hào)操作和恒定折疊操作中的至少一種。
      8.如權(quán)利要求3所述的方法,其特征在于,還包括對(duì)每個(gè)線程,在所述局部存儲(chǔ)器內(nèi)保留充足的空間以存儲(chǔ)高速緩存線的數(shù)據(jù)部分;以及在每個(gè)所述外部存儲(chǔ)器訪問之前插入一高速緩存指令。
      9.如權(quán)利要求8所述的方法,其特征在于,還包括在所述CAM中查找每個(gè)外部存儲(chǔ)器訪問的基地址以確定所述CAM是否包括含有被查找的基地址的條目。
      10.如權(quán)利要求9所述的方法,其特征在于,如果所述CAM包括含有被查找的基地址的條目,則所述方法還包括基于所述CAM中含有被查找的基地址的條目確定所述局部存儲(chǔ)器的偏移量;以及訪問對(duì)來自所述局部存儲(chǔ)器中由所確定的偏移量引用的條目的數(shù)據(jù)。
      11.如權(quán)利要求9所述的方法,其特征在于,如果所述CAM不包括含有被查找的基地址的條目,則所述方法還包括分配所述CAM中具有前一外部存儲(chǔ)器訪問的基地址的最少最近使用(LRU)條目。
      12.如權(quán)利要求11所述的方法,其特征在于,還包括將來自所述外部存儲(chǔ)器的當(dāng)前外部存儲(chǔ)器訪問的數(shù)據(jù)載入所述局部存儲(chǔ)器中由所分配的LRU條目引用的條目;以及在所述CAM的LRU條目中存儲(chǔ)所述當(dāng)前外部存儲(chǔ)器訪問的基地址以代替所述前一外部存儲(chǔ)器訪問的基地址。
      13.如權(quán)利要求11所述的方法,其特征在于,還包括在所分配的LRU條目中檢查所述前一外部存儲(chǔ)器訪問的基地址以確定所述基地址是否有效;以及將所述局部存儲(chǔ)器中與所分配的LRU條目相對(duì)應(yīng)的條目的數(shù)據(jù)復(fù)制到所述前一外部存儲(chǔ)器訪問的外部存儲(chǔ)器基地址的位置。
      14.一種具有使得機(jī)器執(zhí)行一方法的可執(zhí)行碼的計(jì)算機(jī)可讀介質(zhì),所述方法包括標(biāo)識(shí)表示執(zhí)行一個(gè)或多個(gè)外部存儲(chǔ)器訪問的多個(gè)線程的多條指令的候選,所述外部存儲(chǔ)器訪問具有實(shí)際相同的基地址;以及將偽指令和指令中的至少一個(gè)插入到對(duì)應(yīng)于所標(biāo)識(shí)的候選的指令流中,以便維護(hù)處理器的內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)中的至少一個(gè)的內(nèi)容,并且修改所述外部存儲(chǔ)器訪問中的至少一個(gè),以在無需執(zhí)行各自的外部存儲(chǔ)器訪問的情況下訪問所述處理器的CAM和LM中的至少一個(gè)。
      15.如權(quán)利要求14所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括基于所述指令間的依賴關(guān)系將所述外部存儲(chǔ)器訪問的多條指令劃分成一個(gè)或多個(gè)潛在候選集合;以及選擇所述所述潛在候選集合之一作為所述候選,所述候選的指令滿足預(yù)定的依賴關(guān)系。
      16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括將每個(gè)外部存儲(chǔ)器訪問的地址轉(zhuǎn)換成具有基地址和偏移量的形式。
      17.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括從所述潛在候選中篩除一個(gè)或多個(gè)不合格候選,其中所述不合格候選包括與其余的潛在候選不同的基地址。
      18.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括將具有實(shí)際相同的基地址的多個(gè)潛在候選組合成單個(gè)候選,其中具有最多的所述潛在候選的組被選為用于高速緩存的最終候選。
      19.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括對(duì)每個(gè)線程,在所述局部存儲(chǔ)器內(nèi)保留充足的空間以存儲(chǔ)高速緩存線的數(shù)據(jù)部分;以及在每個(gè)所述外部存儲(chǔ)器訪問之前插入一高速緩存指令。
      20.如權(quán)利要求19所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括在所述CAM內(nèi)查找每個(gè)所述外部存儲(chǔ)器訪問的基地址以確定所述CAM是否包括含有被查找的基地址的條目。
      21.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,如果所述CAM包括含有被查找的基地址的條目,則所述方法還包括基于所述CAM中含有被查找的基地址的條目確定所述局部存儲(chǔ)器的偏移量;以及訪問來自所述局部存儲(chǔ)器中由所確定的偏移量引用的條目的數(shù)據(jù)。
      22.如權(quán)利要求20所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,如果所述CAM不包括含有被查找的基地址的條目,則所述方法還包括分配所述CAM中具有前一外部存儲(chǔ)器訪問的基地址的最少最近使用(LRU)條目。
      23.如權(quán)利要求22所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括將來自所述外部存儲(chǔ)器的當(dāng)前外部存儲(chǔ)器訪問的數(shù)據(jù)載入所述局部存儲(chǔ)器中由所分配的LRU條目引用的條目中;以及在所述CAM的LRU條目中存儲(chǔ)所述當(dāng)前外部存儲(chǔ)器訪問的基地址以代替所述前一外部存儲(chǔ)器訪問的基地址。
      24.如權(quán)利要求22所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,所述方法還包括在所分配的LRU條目中檢查所述前一外部存儲(chǔ)器訪問的基地址以確定所述基地址是否有效;以及將所述局部存儲(chǔ)器內(nèi)與所分配的LRU條目相對(duì)應(yīng)的條目的數(shù)據(jù)復(fù)制到所述前一外部存儲(chǔ)器訪問的外部存儲(chǔ)器基地址的位置。
      25.一種處理器,包括各自具有內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)以基本同時(shí)執(zhí)行多個(gè)線程的多個(gè)微引擎,所述多個(gè)線程中的每一個(gè)都包括基于實(shí)際相同的基地址執(zhí)行至少一個(gè)外部存儲(chǔ)器訪問的一條或多條指令,其中在所述CAM內(nèi)檢查所述基地址以確定所述CAM是否包括含有所述基地址的條目,以及其中如果所述CAM包括含有所述基地址的條目,則在無需訪問所述外部存儲(chǔ)器的情況下訪問所述局部存儲(chǔ)器中與所述CAM的條目相對(duì)應(yīng)的條目。
      26.如權(quán)利要求25所述的處理器,其特征在于,所述微引擎的CAM包括最少最近使用(LRU)邏輯,以分配所述CAM中與所述局部存儲(chǔ)器的條目相鏈接的LRU條目,其中所分配的LRU條目用來高速緩存所述外部存儲(chǔ)器訪問以供對(duì)所述外部存儲(chǔ)器的同一位置進(jìn)行后續(xù)訪問。
      27.如權(quán)利要求26所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述LM包括基于由所述LRU邏輯提供的引用提供指向所述LM的條目的索引的索引邏輯。
      28.一種數(shù)據(jù)處理系統(tǒng),包括處理器;耦合至所述處理器的存儲(chǔ)器;以及程序指令,當(dāng)從所述存儲(chǔ)器中執(zhí)行所述程序指令時(shí),使所述處理器標(biāo)識(shí)表示執(zhí)行一個(gè)或多個(gè)外部存儲(chǔ)器訪問的多個(gè)線程的多條指令的候選,所述外部存儲(chǔ)器訪問具有實(shí)際相同的基地址;以及將偽指令和指令中的至少一個(gè)插入到對(duì)應(yīng)于所標(biāo)識(shí)的候選的指令流中,以便維護(hù)執(zhí)行所述多個(gè)線程的執(zhí)行處理器的內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)中的至少一個(gè)的內(nèi)容,并且修改所述外部存儲(chǔ)器訪問中的至少一個(gè),以在無需執(zhí)行各自的外部存儲(chǔ)器訪問的情況下訪問所述執(zhí)行處理器的CAM和LM中的至少一個(gè)。
      29.如權(quán)利要求27所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述多個(gè)線程分別由所述執(zhí)行處理器的多個(gè)微引擎執(zhí)行,并且其中,所述執(zhí)行處理器的每個(gè)所述微引擎都包括CAM和LM。
      30.如權(quán)利要求28所述的數(shù)據(jù)處理系統(tǒng),其特征在于,所述微引擎的CAM包括最少最近使用(LRU)邏輯,用于在所述CAM不包括當(dāng)前外部存儲(chǔ)器訪問的基地址的情況下分配所述CAM中的LRU條目,以高速緩存當(dāng)前的外部存儲(chǔ)器訪問以供后續(xù)的同一外部存儲(chǔ)器訪問使用,并且其中所述LM包括基于由所述LRU邏輯提供的引用提供指向所述LM的條目的索引的索引邏輯。
      全文摘要
      在此描述了在網(wǎng)絡(luò)應(yīng)用中的自動(dòng)軟件控制的高速緩存生成。在一個(gè)實(shí)施例中,標(biāo)識(shí)表示執(zhí)行一個(gè)或多個(gè)外部存儲(chǔ)器訪問的多個(gè)線程的多條指令的候選,其中該外部存儲(chǔ)器訪問具有基本相同的基地址。將一條或多條偽指令和/或指令插入到與所標(biāo)識(shí)的候選相對(duì)應(yīng)的指令流中,以維護(hù)處理器的內(nèi)容可尋址存儲(chǔ)器(CAM)和局部存儲(chǔ)器(LM)中的至少一個(gè)的內(nèi)容,并且修改外部存儲(chǔ)器訪問中的至少一個(gè),以在無需執(zhí)行各自的外部存儲(chǔ)器訪問的情況下訪問該處理器的CAM和LM中的至少一個(gè)。同時(shí)還描述了其他方法和裝置。
      文檔編號(hào)G06F12/00GK1957331SQ200480043163
      公開日2007年5月2日 申請(qǐng)日期2004年5月26日 優(yōu)先權(quán)日2004年5月26日
      發(fā)明者戴金權(quán), L·哈里森, 李龍, 黃波 申請(qǐng)人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1