專利名稱:用于降低軟件應用中的存儲器延遲的方法和裝置的制作方法
技術領域:
本公開涉及助手線程(helper thread),并且更具體地,涉及用于降低軟件應用中的存儲器延遲的方法和裝置。
背景消費者不斷要求更快的計算機。例如并發多線程(SMT)的多線程技術是對處理器管芯(die)面積影響有限的提升吞吐量性能的有效方法。SMT通過并行執行多個處理線程來提高處理器的吞吐量。但是很多軟件應用并未受益于SMT,因為它們是單線程的,并因此沒有利用多線程技術。
此外,處理器和存儲器速度之間的差距不斷加大,處理器速度超過了存儲器速度。結果,計算機性能日益由處理器緩存層次結構的有效性來確定。預取(Prefetching)是公知的且有效地改善緩存層次結構有效性的技術,預取是一種過程,通過預取過程將指令從系統存儲器轉移到緩存存儲器。但是,只有預取不能確保軟件應用能夠受益于緩存存儲器的速度。此外,需要某種努力來防止在軟件應用已經能夠使用被預取的變量之前,所述被預取的變量從高速緩存中被去除。
附圖簡要說明
圖1是示出被公開系統的使用環境的示例性計算機系統的框圖。
圖2是示出被公開系統的使用環境的另一個示例性計算機系統的框圖。
圖3是代表示例性機器可讀指令的流程圖,所述機器可讀指令可以被設備執行以實現降低軟件應用中的存儲器延遲的示例性方法。
圖4是代表示例性機器可讀指令的流程圖,所述機器可讀指令可以被設備執行以實現管理與助手線程相關的主線程的執行的示例性方法。
圖5是代表示例性機器可讀指令的流程圖,所述機器可讀指令可以被設備執行以實現管理與主線程相關的助手線程的執行的示例性方法。
詳細描述總的來說,所述被公開系統使用助手線程來預取軟件應用的主線程內的變量和/或指令,以便降低存儲器延遲。針對緩存未命中和長存儲器延遲時間來分析軟件應用,并且將編譯器運行時指令添加到軟件應用中,以生成助手線程并管理所述助手線程和主線程。從主線程產生助手線程,用于預取變量和/或指令并緩存被預取的變量和/或指令供主線程訪問。為了防止被緩存的變量和/或指令在主線程能夠訪問緩存之前從緩存中被去除,添加計數機制到主線程和助手線程中,以協調主線程和助手線程的執行。
圖1是示出被公開系統的使用環境的示例性計算機系統的框圖。計算機系統100可以是個人計算機(PC)或者任何其他的計算設備。在所示實施例中,計算機系統100包括由電源104供電的主處理單元102。主處理單元102可以包括處理器106,所述處理器106在電氣上通過系統互連108耦合到主存儲器設備110、閃存存儲器設備112,以及一個或更多個接口電路114。在實施例中,系統互連108是地址/數據總線。當然,本領域的普通技術人員將很容易理解,可以使用除了總線以外的其他互連將處理器106連接到其他的設備110、112和114。例如,可以使用一條或更多條專用線路和/或縱橫結構(crossbar)將處理器106連接到其他設備110、112和114。
處理器106可以是任何類型的公知處理器,例如來自Intel Pentium微處理器系列、IntelItanium微處理器系列、Intel Centrino微處理器系列,和/或Intel Xscale微處理器系列的處理器。此外,處理器106可以包括任何類型的公知緩存存儲器,例如靜態隨機訪問存儲器(SRAM)。主存儲器設備110可以包括動態隨機訪問存儲器(DRAM)和/或任何其他形式的隨機訪問存儲器。例如,主存儲器設備110可以包括雙數據率隨機訪問存儲器(DDRAM)。主存儲器設備110還可以包括非易失性存儲器。在實施例中,主存儲器設備110以公知的方式儲存由處理器106執行的軟件程序。閃存存儲器設備112可以是任何類型的閃存存儲器設備。閃存存儲器設備112可以儲存用來引導計算機系統100的固件。
可以使用任何類型的公知接口標準來實現接口電路114,接口標準例如以太網接口和/或通用串行總線(USB)接口。一個或更多個輸入設備116可以連接到接口電路114,用于將數據和命令輸入主處理單元102。例如,輸入設備116可以是鍵盤、鼠標、觸摸屏、跟蹤板(track pad)、跟蹤球、指向柱(isopoint)和/或語音識別系統。
一個或更多個顯示器、打印機、揚聲器,和/或其他輸出設備118也可以通過接口電路114中的一個或更多個連接到主處理單元102。顯示器118可以是陰極射線管(CRT)、液晶顯示器(LCD),或任何其他類型的顯示器。顯示器118可以產生在主處理單元102工作期間所產生的數據的可見指示。所述可見指示可以包括操作人員輸入提示(prompt)、計算出的值、檢測到的數據,等等。
計算機系統100還可以包括一個或更多個儲存設備120。例如,計算機系統100可以包括一個或更多個硬盤驅動器、致密盤(CD)驅動器、數字多功能盤驅動器(DVD),和/或其他的計算機媒體輸入/輸出(I/O)設備。
計算機系統100還可以通過到網絡124的連接與其他設備122交換數據。所述網絡連接可以是任何類型的網絡連接,例如以太網連接、數字用戶線(DSL)、電話線、同軸電纜等。網絡124可以是任何類型的網絡,例如國際互聯網、電話網絡、有線網絡(cablenetwork)、和/或無線網絡。網絡設備122可以是任何類型的網絡設備122。例如,網絡設備122可以是客戶(client)、服務器、硬盤驅動器等。
可以使用計算機系統100來執行軟件應用。在計算機系統100上可以使用各種類型的軟件應用,例如字處理器、計算機游戲,和/或工程開發工具。此外,計算機系統100可以執行軟件評測工具(profiler)和/或軟件性能分析,以確定軟件應用執行的良好程度。計算機系統100還可以執行已經在計算機系統100被優化以改善性能的軟件應用。
圖2是示出被公開系統的使用環境的另一個示例性計算機系統的框圖。在該實施例中,計算機系統200包括處理器202、編譯器204、主存儲器206、性能分析工具208,以及軟件應用210。
再次重申,處理器202可以是任何類型的公知處理器,例如來自Intel Pentium微處理器系列、Intel Itanium微處理器系列、Intel Centrino微處理器系列,和/或Intel Xscale微處理器系列的處理器。主存儲器設備206可以包括動態隨機訪問存儲器(DRAM)和/或任何其他形式的隨機訪問存儲器。主存儲器設備206還可以包括用于緩存層次結構的存儲器。緩存層次結構可以由單個緩存組成,或者可以是幾個層次的具有不同尺寸和/或訪問速度的緩存。例如,緩存層次結構可以由三個層次的板載(on-board)緩存存儲器組成。第一層次的緩存可以是最小的緩存,具有最快的訪問時間。其他層次的緩存在尺寸和訪問時間上漸進地增加。
通常,編譯器204可以是任何類型的用于解釋例如C、C++、Java或Basic的任意類型編程語言的編譯器。編譯器204通過讀取軟件應用的代碼列表并產生處理器202和/或計算機系統200能夠解釋和執行的指令,從軟件應用的代碼列表產生軟件應用210。
性能分析工具208是提供關于軟件應用的運行時性能的反饋的工具。當處理器202和/或計算機系統200正在執行軟件應用210時,性能分析工具208監視計算機系統的使用(例如處理器使用、存儲器使用、定時器、數據總線等)。性能分析工具208提供關于軟件應用的性能瓶頸和/或資源使用的反饋。例如,反饋可以包括緩存命中(hit)率、緩存未命中(miss)率、處理器使用、存儲器延遲時間、存儲器使用,以及花在軟件應用210的每一段上的時間。
圖3是代表示例性機器可讀指令的流程圖,所述機器可讀指令可以被設備執行以實現降低軟件應用中的存儲器延遲的示例性方法。優選地,所示過程300被具體實施在一個或更多個軟件程序中,所述一個或更多個軟件程序儲存在一個或更多個存儲器(例如閃存存儲器112和/或硬盤120)中,并由一個或更多個處理器(例如處理器106和/或202)以公知的方式執行。但是,過程300的框中的一些或者全部可以人工地執行和/或由某個其他設備執行。盡管參考圖3中所示流程圖來描述過程300,本領域的普通技術人員將很容易理解,可以使用很多其他的執行過程300的方法。例如,這些框中很多的順序可以被更改,一個或更多個框的操作可以被改變,框可以被組合和/或框可以被去掉。
總的來說,示例性過程300使用性能分析工具208來確定軟件應用210的因存儲器訪問時間和/或高速緩存未命中而具有性能瓶頸的區域。使用這種性能信息,編譯器204產生編譯器運行時指令,并將所述指令插入軟件應用210。編譯器運行時指令產生助手線程,用于通過預取被性能分析工具208標識為造成瓶頸的變量來幫助緩和性能瓶頸。編譯器204還將一部分計數機制插入助手線程,并將一部分計數機制插入主線程,以防止助手線程的執行點(execution point)過于領先或過于落后于主線程的執行點。
示例性過程300通過分析軟件應用210開始(框302)。使用性能分析工具208來標識軟件應用210的因高速緩存未命中和/或存儲器延遲時間而遭遇性能瓶頸的區域。示例性的性能分析工具208是VtuneTM性能分析工具。VtuneTM性能分析工具給用戶提供例如多少時間花費在軟件的區域上、軟件應用210中軟件函數(function)之間的關系、資源使用(例如軟件應用210正在使用多少RAM或者軟件應用210正使用的CPU時間百分比)的信息,以及關于大的多線程應用中各個線程的性能的信息。
性能分析工具208完成分析軟件應用210以后,評測信息(profiling information)被發送到編譯器204(框304)。編譯器204處理來自性能分析工具208的評測信息,并確定編譯器204將修改軟件應用210的哪些區域來幫助緩和性能瓶頸。在示例性實現中,編譯器204可以接收列表,所述列表標識軟件應用的因緩存未命中和/或存儲器延遲而經歷性能瓶頸的區域。然后,編譯器204確定代碼的具有最高緩存未命中率和/或最大存儲器訪問時間的區域,并修改軟件應用210的這些區域。
編譯器204嘗試通過產生編譯器運行時指令并將所述指令插入主線程以生成和管理助手線程來緩和性能瓶頸(框306),生成和管理所述助手線程是為了預取軟件應用210的被性能分析工具208標識的區域中的變量。一種實現生成助手線程的示例性方法是產生指令_ssp_begin,并將所述指令插入主線程。這個指令生成線程組(thread team)(例如線程及由線程派生的助手線程),所述線程組最初僅由主線程組成。第二編譯器運行時指令_ssp_spawn_helper也被產生并被插入主線程,以便從由計算機系統200維護的線程池(thread pool)產生助手線程。第三編譯器運行時指令_ssp_end在軟件應用210中產生,用于終止所有和主線程相關聯的助手線程。
在編譯器產生編譯器運行時指令并將所述指令插入主線程以產生助手線程之后,產生助手線程代碼(例如構成助手線程的軟件指令)。一種生成助手線程代碼的示例性方法是使編譯器204使用從性能分析工具208接收到的評測信息,并標識軟件應用的區域內引起緩存未命中的變量。在造成緩存未命中的變量被標識以后,編譯器在助手線程主體(body)內產生用于訪問所述變量的指令(例如將變量分配給寄存器),并緩存所述變量。
另一種生成助手線程代碼的示例性方法是允許軟件開發者生成助手線程代碼并使用pragma語句來管理助手線程和主線程(例如產生新線程、控制主線程和/或助手線程的執行等)。可以使用線程圖(thread graph)來使代碼能在允許軟件開發者生成助手線程代碼的方法和允許編譯器產生助手線程代碼的方法之間重用。線程圖是指令序列或代碼區域的表示,并示出了線程和助手線程之間的線程派生(thread-spawning)關系。被用戶插入的編譯指示語句和被編譯器產生的編譯器運行時指令將共享線程圖,并允許共享助手線程代碼產生模塊。
編譯器204還將計數機制插入助手線程和主線程(框308)。計數機制允許助手線程和主線程的并行執行得到協調,以防止一個線程的執行過于領先或落后于另一線程的執行。主線程和助手線程的相對同步幫助防止變量被助手線程預取且緩存,并在主線程有機會訪問該變量之前從緩存中被去除。因此,主線程和助手線程的相對同步降低了主線程遭遇緩存未命中的機會,為防止所述緩存未命中生成了助手線程。
作為示例性過程300的結果,產生了可以在計算機系統100上執行的經過優化的軟件應用。所述已優化的軟件應用被優化成利用多線程技術,并且包括產生用于預取變量的助手線程和用于協調助手線程和主線程的執行的計數機制的指令。
圖4和圖5示出了使用軟件計數器和編譯器運行時指令在助手線程和主線程中實現計數機制的示例性方法,所述計數機制響應于計數器的值來控制助手線程和主線程的執行。本領域的普通技術人員將很容易理解,可以使用很多其他的實現計數機制的方法。例如,計數器的數量可以被改變,或者可以使用郵箱系統來協調助手線程和主線程的執行。在實現所述計數機制的示例性方法中,所述計數機制包括并行工作的兩半。所述計數機制的第一半用來控制主線程的執行(例如過程400),并在圖4中示出。所述計數機制的第二半用來控制助手線程的執行(例如過程500),并在圖5中示出。
總的來說,計數機制嘗試控制主線程和助手線程的相對執行。主線程使用對計數器對來保持主線程的執行點落后于助手線程的執行點某個距離,以留出足夠多的時間量供預取變量。助手線程使用第二計數器對來保持助手線程的執行點距主線程的執行點預定的距離,以允許主線程從預取中受益。
圖4示出在主線程中實現的用于控制主線程的執行的計數機制的第一半400。首先,確定先行值(run-ahead value)(例如X)(框402)。先行值是預先定義的閾值,指示主線程和助手線程在執行中可以領先或落后于彼此多少地工作。可以通過分析評測信息以經驗為主地確定先行值,或者可以利用編譯器204中的選項設置所述先行值。兩個計數器(例如mc和M)被插入主線程并被初始化(例如mc=X和M=1)(框404)。
主線程通常包括執行某些數據處理(例如計算、操作變量、排序等)的循環,所述數據處理涉及在循環內引起性能瓶頸的變量。主線程檢查是否存在任何剩余的數據要被處理(框406)。如果沒有數據剩余,則主線程調用編譯器運行時指令(例如_ssp_end)來終止任何和主線程相關聯的助手線程(框408)。
如果有數據剩余(框406),則主線程執行數據處理(框410),然后遞增計數器mc(框412)。將計數器mc與計數器M被先行閾值比例縮放的值(例如M*X)進行比較,看計數器mc是否大于計數器M被縮放的值(例如mc>M*X)(框414)。
如果計數器mc大于M*X,則表明主線程的執行過于領先助手線程的執行。然后,遞增計數器M(框416),并且調用編譯器運行時指令(例如_ssp_post)來激活助手線程(框418)。主線程通過取回下一個數據元素(框420)并重復通過數據處理循環(框406、408、410、412、414、416、418和420)來繼續執行。
如果計數器mc小于或等于M*X,則表明主線程的執行在預先定義的先行閾值以內。主線程通過取回下一個數據元素(框420)并重復通過數據處理循環(框406、408、410、412、414、416、418和420)來繼續執行。
圖5示出在助手線程中實現的用于控制助手線程執行的計數機制的第二半500。在計數機制的第二半500開始后,兩個計數器(hc和H)被初始化(hc=0且H=1)(框502),然后,助手線程檢查是否仍有數據要被預取(框504)。如果沒有數據剩余,則助手線程結束。
如果數據仍要被預取(框504),則助手線程預取數據(例如讀取變量并將該變量的值放入緩存的某個指令)被執行(框506)。計數器hc的值被遞增,并且主線程的計數器mc的值被取回(框508)。
將計數器hc與計數器H按先行閾值X縮放的值進行比較(例如是hc>H*X),并且計數器hc與計數器mc的值進行比較(例如是hc>mc)(框510)。如果兩個條件都滿足,則助手線程過于領先主線程。助手線程通過遞增計數器H(框512)并執行編譯器運行時指令(例如_ssp_wait)以等待并允許主線程追趕(catch up)(框514)而繼續。然后,助手線程繼續取回下一個數據元素以便預取(框516),并繼續重復通過循環。
如果兩個條件(hc>H*X和hc>mc)不都滿足(框510),則助手線程將計數器hc與計數器mc進行比較(例如是hc<=mc)(框518)。如果計數器hc小于計數器mc,則助手線程落后于主線程。然后,助手線程將執行編譯器運行時指令(例如_ssp_catchup),以允許助手線程追趕(框520)。一種實現追趕指令的方法是使追趕指令將計數器hc、計數器H以及正被預取的數據的值設置為分別等于計數器mc、計數器M以及正在主線程中被處理的數據的值。通過如此修改計數器值,助手線程跳過預取已經被主線程取出的變量的操作。然后取回下一個數據元素(框516),并且助手線程繼續重復通過循環(框504、506、508、510、512、514以及516)。
盡管上面公開了包括除其他以外在硬件上執行的軟件的示例性系統,但是應該注意,這些系統僅僅是說明性的,并且不應該被視為限制性的。例如,可以預期,所公開的硬件和軟件組件(component)的全部或一些能夠被排他地具體實施在專用硬件中、專門地具體實施在軟件中、專門地具體實施在固件中或硬件、固件和/或軟件的某種組合中。
此外,盡管這里已經描述了某些方法、裝置和制品,但是本專利的覆蓋范圍不限于此。相反,本專利覆蓋了所有在字面上或在等同原則之下明確地落入所附權利要求書范圍內的方法、裝置和制品。
權利要求
1.一種降低軟件應用中的存儲器延遲的方法,所述方法包括分析所述軟件應用并確定遭遇緩存未命中的第一軟件指令區域;產生助手線程;產生第一組編譯器運行時指令,并將所述第一組編譯器運行時指令插入主線程;產生第二組編譯器運行時指令,并將所述第二組編譯器運行時指令插入所述助手線程;以及在所述主線程和所述助手線程中插入計數機制,所述計數機制被構造成協調所述主線程和所述助手線程的相對執行點。
2.如權利要求1所述的方法,還包括分析所述軟件應用并確定遭遇存儲器裝載延遲的第二軟件指令區域。
3.如權利要求2所述的方法,其中,所述第一軟件指令區域和所述第二軟件指令區域不同。
4.如權利要求2所述的方法,其中,所述第一軟件指令區域包括所述第二軟件指令區域。
5.如權利要求2所述的方法,其中,分析所述軟件應用的操作包括使用性能分析工具測量與所述軟件應用相關聯的緩存未命中率;使用所述性能分析工具測量和所述軟件應用相關聯的存儲器裝載延遲;向編譯器報告遭遇所述緩存未命中的所述第一軟件指令區域;以及報告遭遇所述存儲器裝載延遲的所述第二軟件指令區域。
6.如權利要求1所述的方法,其中,產生助手線程的操作包括產生線程圖。
7.如權利要求6所述的方法,其中,所述線程圖顯現代表所述主線程和所述助手線程之間的關系的數據結構。
8.如權利要求6所述的方法,其中,所述線程圖輔助代碼重用。
9.如權利要求1所述的方法,其中,所述第一組編譯器運行時指令的至少一部分包括所述第二組編譯器運行時指令的至少一部分。
10.如權利要求1所述的方法,其中,被插入所述主線程的所述第一組編譯器運行時指令包括用于派生所述助手線程、終止所述助手線程和協調所述助手線程和所述主線程的執行的指令。
11.如權利要求1所述的方法,其中,被插入所述助手線程的所述第二組編譯器運行時指令包括用于協調所述助手線程和所述主線程的執行的指令。
12.如權利要求1所述的方法,其中,所述計數機制包括軟件計數器。
13.如權利要求12所述的方法,其中,所述第一組編譯器運行時指令和所述第二組編譯器運行時指令中的至少一個包括基于與所述軟件計數器相關聯的值來控制所述助手線程的執行速率的指令。
14.如權利要求12所述的方法,其中,所述第一組編譯器運行時指令和所述第二組編譯器運行時指令中的至少一個包括基于與所述軟件計數器相關聯的值來控制所述主線程的執行速率的指令。
15.如權利要求14所述的方法,其中,所述用于控制執行速率的編譯器運行時指令包括延時指令、追趕指令,以及強制執行指令。
16.一種用于降低存儲器延遲的系統,所述系統包括處理器;可操作地耦合到所述處理器的存儲器所述存儲器儲存被構造成標識應用程序中遭遇數據緩存未命中的代碼區域;可操作地耦合到所述軟件工具的編譯器,所述編譯器被構造成從所述軟件工具接收信息和產生助手線程;一組要被產生并被插入所述應用程序的編譯器運行時指令,所述編譯器運行時指令用于管理所述助手線程和管理主線程;以及供插入所述主線程和所述助手線程的計數機制,所述計數機制用于輔助與所述助手線程和所述主線程相關聯的執行點的協調。
17.如權利要求16所述的系統,其中,所述軟件工具包括VtuneTM性能分析器。
18.如權利要求16所述的系統,其中,所述編譯器從所述軟件工具接收到的所述信息包括與所述被標識的代碼區域相關聯的數據緩存未命中率。
19.如權利要求16所述的系統,其中,所述編譯器從所述軟件工具接收到的所述信息包括與所述被標識的代碼區域相關聯的存儲器裝載延遲時間。
20.如權利要求16所述的系統,其中,所述助手線程被構造成預取被包括在所述被標識的代碼區域中的變量。
21.如權利要求16所述的系統,其中,所述編譯器運行時指令組包括用于生成所述助手線程、終止所述助手線程、推遲所述助手線程的執行,以及激活所述助手線程的指令。
22.如權利要求16所述的系統,其中,所述編譯器運行時指令組包括用于協調所述助手線程和所述主線程的執行的指令。
23.一種儲存指令的機器可讀介質,所述指令引起機器分析包括主線程的軟件應用;標識所述軟件應用中的代碼區域;產生助手線程;產生第一組編譯器運行時指令并將其插入所述主線程,以管理所述助手線程和所述主線程;產生第二組編譯器運行時指令并將其插入所述助手線程,以管理所述助手線程和所述主線程;以及管理所述助手線程和所述主線程的執行點。
24.如權利要求22所述的機器可讀指令,其中,所述被儲存的指令被構造成引起所述機器基于緩存未命中率來標識所述代碼區域。
25.如權利要求22所述的機器可讀指令,其中,所述被儲存的指令被構造成引起所述機器基于存儲器裝載延遲來標識所述代碼區域。
26.如權利要求22所述的機器可讀指令,其中,所述被儲存的指令被構造成引起所述機器產生所述助手線程,以用于預取所述被標識的代碼區域內的指令。
27.如權利要求22所述的機器可讀指令,其中,所述被儲存的指令被構造成引起所述機器產生用于派生所述助手線程、終止所述助手線程、協調所述助手線程和所述主線程的執行的編譯器運行時指令。
28.如權利要求22所述的機器可讀指令,其中,所述被儲存的指令被構造成引起所述機器通過將計數機制的第一部分插入所述主線程并將計數機制的第二部分插入所述助手線程來管理所述主線程和所述助手線程的執行。
29.一種用于降低存儲器延遲的裝置,所述裝置包括被構造成標識應用程序中的遭遇數據緩存未命中的代碼區域的軟件工具;可操作地耦合到所述軟件工具的編譯器,所述編譯器被構造成從所述軟件工具接收信息和產生助手線程;一組要被產生并被插入所述應用程序中的編譯器運行時指令,所述編譯器運行時指令用于管理所述助手線程和管理主線程;以及供插入所述主線程和所述助手線程的計數機制,所述計數機制用于輔助與所述助手線程和所述主線程相關聯的執行點的協調。
30.如權利要求29所述的裝置,其中所述編譯器從所述軟件工具接收到的所述信息包括與所述被標識的代碼區域相關聯的數據緩存未命中率。
31.如權利要求29所述的裝置,其中所述編譯器從所述軟件工具接收到的所述信息包括與所述被標識的代碼區域相關聯的存儲器裝載延遲時間。
32.如權利要求29所述的裝置,其中所述助手線程被構造成預取包含在所述被標識的代碼區域中的變量。
33.如權利要求29所述的裝置,其中所述編譯器運行時指令組包括用于生成所述助手線程、終止所述助手線程、推遲所述助手線程的執行,以及激活所述助手線程的指令。
34.如權利要求29所述的裝置,其中,所述編譯器運行時指令組包括用于協調所述助手線程和所述主線程的執行的指令。
全文摘要
公開了用于降低軟件應用中的存儲器延遲的方法和裝置。被公開的系統使用一個或更多個助手線程為主線程預取變量,以便降低因存儲器延遲和/或緩存未命中所致的性能瓶頸。使用性能分析工具對軟件應用的資源使用進行評測,并標識軟件應用中經歷性能瓶頸的區域。在軟件應用中產生編譯器運行時指令,用于生成和管理助手線程。助手線程預取被標識的軟件應用的經歷性能瓶頸的區域中的數據。計數機制被插入助手線程并且計數機制被插入主線程,以便利用主線程協調助手線程的執行,并幫助確保在主線程能夠利用被預取的數據之前所述被預取的數據沒有從緩存中被去除。
文檔編號G06F9/48GK1890635SQ200480035709
公開日2007年1月3日 申請日期2004年9月29日 優先權日2003年10月2日
發明者田新民, S-W·廖, 王紅, 米林德·吉爾卡, 約翰·申, 佩里·王, 格蘭特·哈伯, 蓋羅爾夫·霍夫萊納, 丹尼爾·萊弗里, H·齋藤, 桑吉夫·沙阿, D·金 申請人:英特爾公司