欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多線(xiàn)程計(jì)算機(jī)中用于環(huán)境切換數(shù)據(jù)預(yù)取的方法和裝置的制作方法

文檔序號(hào):6440506閱讀:176來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):多線(xiàn)程計(jì)算機(jī)中用于環(huán)境切換數(shù)據(jù)預(yù)取的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)和計(jì)算機(jī)軟件,特別是多線(xiàn)程計(jì)算機(jī)系統(tǒng)中指令和數(shù)據(jù)的預(yù)取。
背景技術(shù)
隨著當(dāng)前社會(huì)中對(duì)計(jì)算機(jī)的不斷增長(zhǎng)的信賴(lài),計(jì)算機(jī)技術(shù)已經(jīng)不得不在很多前沿取得進(jìn)展以趕上增長(zhǎng)的需要。并行性,即多個(gè)任務(wù)并行的性能是重大研發(fā)努力的一個(gè)特殊主題。
許多計(jì)算機(jī)軟件和硬件技術(shù)已經(jīng)開(kāi)發(fā)出來(lái)以利于增加的并行處理。從軟件的觀(guān)點(diǎn),已經(jīng)開(kāi)發(fā)出多線(xiàn)程操作系統(tǒng),它允許計(jì)算機(jī)程序在多個(gè)“線(xiàn)程”中并發(fā)執(zhí)行,使得多個(gè)任務(wù)本質(zhì)上能夠同時(shí)執(zhí)行。線(xiàn)程一般表示對(duì)程序的獨(dú)立的執(zhí)行路徑。例如,對(duì)于電子商務(wù)計(jì)算機(jī)應(yīng)用,不同的線(xiàn)程可能分配給不同的顧客,使得每個(gè)顧客的特定電子商務(wù)交易在單獨(dú)的線(xiàn)程中處理。
從硬件的觀(guān)點(diǎn),計(jì)算機(jī)越來(lái)越依賴(lài)多個(gè)微處理器以提供增大的工作負(fù)荷能力。進(jìn)而,已經(jīng)開(kāi)發(fā)出一些微處理器,它們支持并行執(zhí)行多個(gè)線(xiàn)程的能力,有效地提供通過(guò)使用多個(gè)微處理器可達(dá)到的很多相同的性能增益。與只支持單一的執(zhí)行路徑的單線(xiàn)程微處理器相比,多線(xiàn)程微處理器支持多個(gè)執(zhí)行路徑,使得分配給不同的執(zhí)行路徑的不同的線(xiàn)程能夠并行進(jìn)行。
然而,不考慮下層的硬件支持的獨(dú)立的執(zhí)行路徑的數(shù)目,通常通過(guò)在每個(gè)執(zhí)行路徑上分配時(shí)間片給不同的線(xiàn)程,通常設(shè)計(jì)多線(xiàn)程計(jì)算機(jī)中的操作系統(tǒng)以在每個(gè)單獨(dú)的執(zhí)行路徑上執(zhí)行多個(gè)線(xiàn)程。雖然分配給給定的執(zhí)行路徑的線(xiàn)程技術(shù)上不是并行執(zhí)行的,但通過(guò)使每個(gè)線(xiàn)程能執(zhí)行一段時(shí)間和在每個(gè)線(xiàn)程間切換,每個(gè)線(xiàn)程能以合理和公平的方式進(jìn)行,因此保持并行的樣子。
雖然多線(xiàn)程在此性質(zhì)上能夠顯著地增強(qiáng)系統(tǒng)性能,但是,因?yàn)樵诮o定的執(zhí)行路徑上執(zhí)行不同線(xiàn)程間的切換,存在一些低效率。特別地,無(wú)論何時(shí)執(zhí)行路徑在執(zhí)行不同線(xiàn)程間切換,必須執(zhí)行稱(chēng)為環(huán)境(context)切換的操作。通常,環(huán)境切換包括保存或要么保留以前正在執(zhí)行并且現(xiàn)在正在被切換出去的線(xiàn)程的工作狀態(tài),以及恢復(fù)準(zhǔn)備要執(zhí)行或切換進(jìn)來(lái)的線(xiàn)程的工作狀態(tài)。
線(xiàn)程的工作狀態(tài)包括從線(xiàn)程的觀(guān)點(diǎn)特征化特定的時(shí)間點(diǎn)的系統(tǒng)狀態(tài)的各種狀態(tài)信息,并且可包括其它之中的各種信息,如寄存器文件、程序計(jì)數(shù)器和其它專(zhuān)用寄存器的內(nèi)容。因此,通過(guò)線(xiàn)程被切換出去或掛起時(shí)保存工作狀態(tài),然后線(xiàn)程被切換進(jìn)來(lái)或恢復(fù)時(shí)恢復(fù)工作狀態(tài),線(xiàn)程功能上以與線(xiàn)程好像從未被中斷相同的方式執(zhí)行。
但是,一旦線(xiàn)程切換回來(lái),在很多環(huán)境中執(zhí)行環(huán)境切換的一個(gè)不希望的副作用是高速緩存未中的發(fā)生增加。高速緩存是現(xiàn)代計(jì)算機(jī)架構(gòu)中已經(jīng)普遍利用的技術(shù),用來(lái)解決由微處理器的速度相對(duì)于微處理器用來(lái)訪(fǎng)問(wèn)存儲(chǔ)的數(shù)據(jù)的存儲(chǔ)器設(shè)備的速度產(chǎn)生的延遲問(wèn)題。
特別地,高速緩存企圖通過(guò)使用多級(jí)存儲(chǔ)器的代價(jià)來(lái)平衡存儲(chǔ)器的速度和容量。通常地,計(jì)算機(jī)依賴(lài)相對(duì)大、慢并且便宜的大規(guī)模的存儲(chǔ)系統(tǒng),如硬盤(pán)驅(qū)動(dòng)器或其它外部存儲(chǔ)設(shè)備、使用動(dòng)態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器件(DRAM’s)或其它易失性存儲(chǔ)器存儲(chǔ)器件的中間主存儲(chǔ)存儲(chǔ)器、以及一個(gè)或更多用靜態(tài)隨機(jī)訪(fǎng)問(wèn)存儲(chǔ)器件(SRAM’s)等實(shí)現(xiàn)的高速的容量有限的高速緩沖存儲(chǔ)器或高速緩存。經(jīng)常使用多級(jí)高速緩沖存儲(chǔ)器,每級(jí)具有越來(lái)越快和越來(lái)越小的存儲(chǔ)器件。同樣地,依賴(lài)于使用的存儲(chǔ)器架構(gòu),高速緩沖存儲(chǔ)器可以由多個(gè)微處理器共享或?qū)S糜趩为?dú)微處理器,并且可以或者集成到同一塊集成電路上作為微處理器,或者在分離的集成電路上提供。
此外,一些高速緩沖存儲(chǔ)器可以用于存儲(chǔ)包含正在執(zhí)行的實(shí)際程序的指令以及正在由這些程序處理的數(shù)據(jù)。其它高速緩沖存儲(chǔ)器,通常是那些最靠近微處理器的,可以專(zhuān)門(mén)用于只存儲(chǔ)指令或數(shù)據(jù)。
當(dāng)計(jì)算機(jī)架構(gòu)中提供多級(jí)存儲(chǔ)器時(shí),通常依賴(lài)一個(gè)或多個(gè)存儲(chǔ)器控制器在各種存儲(chǔ)器級(jí)之間交換通常稱(chēng)為“高速緩存行(cache line)”的來(lái)自存儲(chǔ)器地址段的需要的數(shù)據(jù),從而企圖最大化請(qǐng)求的數(shù)據(jù)存儲(chǔ)于微處理器可以訪(fǎng)問(wèn)的最快的高速緩沖存儲(chǔ)器中的頻率。無(wú)論何時(shí)存儲(chǔ)器訪(fǎng)問(wèn)請(qǐng)求企圖訪(fǎng)問(wèn)未在高速緩沖存儲(chǔ)器中緩存的存儲(chǔ)器地址,發(fā)生“高速緩存未中(cache miss)”。作為高速緩存未中的結(jié)果,通常必須從相對(duì)慢的更低級(jí)的存儲(chǔ)器取得用于存儲(chǔ)器地址的高速緩存行,通常伴隨顯著的性能打擊(hit)。
高速緩存依賴(lài)時(shí)間和空間的位置以改善系統(tǒng)性能。采用另一種方式,當(dāng)取得特定的高速緩存行到高速緩沖存儲(chǔ)器中時(shí),很可能將再次需要來(lái)自那個(gè)高速緩存行的數(shù)據(jù),所以對(duì)同一高速緩存行中的數(shù)據(jù)的下一次訪(fǎng)問(wèn)將導(dǎo)致“高速緩存命中(cache hit)”,并且因此不會(huì)招致性能障礙。
其它的加速與高速緩存有關(guān)的性能的方法包括如指令預(yù)取、分支預(yù)測(cè)和數(shù)據(jù)預(yù)取的技術(shù)。例如,指令預(yù)取通常在微處理器中實(shí)現(xiàn),并且企圖在需要指令之前從存儲(chǔ)器中取它們,使得當(dāng)真正需要指令時(shí),將充滿(mǎn)希望地緩存它們。通過(guò)企圖預(yù)測(cè)哪個(gè)判斷分支將可能采取,然后從預(yù)測(cè)的分支預(yù)取指令,同樣通常在微處理器中實(shí)現(xiàn)的分支預(yù)測(cè)擴(kuò)展了指令預(yù)取。通常在與微處理器分離的部件(但它仍然可以安置在同一集成電路器件上)中實(shí)現(xiàn)的數(shù)據(jù)預(yù)取,企圖檢測(cè)數(shù)據(jù)訪(fǎng)問(wèn)的模式并基于任何檢測(cè)到的模式預(yù)取可能要需要的數(shù)據(jù)。
因此,從執(zhí)行線(xiàn)程的觀(guān)點(diǎn),當(dāng)特定的線(xiàn)程執(zhí)行時(shí),線(xiàn)程使用的越來(lái)越多的指令和數(shù)據(jù)將逐漸地變?yōu)榫彺娴?,并且因此線(xiàn)程執(zhí)行得越久,線(xiàn)程的執(zhí)行將趨向于越有效。
但是,假定同樣的前提施加到多線(xiàn)程計(jì)算機(jī)中執(zhí)行的所有線(xiàn)程,不論何時(shí)線(xiàn)程因?yàn)榄h(huán)境切換被掛起,并且然后因?yàn)榱硪粋€(gè)環(huán)境切換隨后被恢復(fù),可能一些或所有掛起線(xiàn)程前高速緩存的指令和數(shù)據(jù)當(dāng)線(xiàn)程恢復(fù)時(shí)不再被高速緩存(主要因?yàn)橹虚g被執(zhí)行的其它線(xiàn)程需要的指令和數(shù)據(jù)的高速緩存)。然后通常發(fā)生更大數(shù)目的高速緩存未中,因此消極影響整個(gè)系統(tǒng)性能。依賴(lài)于歷史數(shù)據(jù)的預(yù)取和分支預(yù)測(cè)通常也為恢復(fù)的線(xiàn)程在其執(zhí)行的初始恢復(fù)時(shí)提供很少或不提供好處,因?yàn)橹噶詈蛿?shù)據(jù)的預(yù)取直到線(xiàn)程恢復(fù)其執(zhí)行后才能初始化。
因此,在多線(xiàn)程計(jì)算機(jī)中,本領(lǐng)域已經(jīng)產(chǎn)生對(duì)最小化與環(huán)境切換相聯(lián)系的不利性能影響的方法的明顯需求。

發(fā)明內(nèi)容
通過(guò)關(guān)于環(huán)境切換操作初始化恢復(fù)在線(xiàn)程的執(zhí)行之前可能被那個(gè)線(xiàn)程使用的數(shù)據(jù)的預(yù)取,本發(fā)明致力于解決這些和其它與先前技術(shù)相關(guān)聯(lián)的問(wèn)題。采用另一種方式,一旦已知將對(duì)特定的線(xiàn)程執(zhí)行環(huán)境切換,符合本發(fā)明的實(shí)施例為那個(gè)線(xiàn)程初始化數(shù)據(jù)的預(yù)取,使得當(dāng)恢復(fù)線(xiàn)程的執(zhí)行時(shí),或者至少在正在取得到高速緩沖存儲(chǔ)器中的過(guò)程中,可能為線(xiàn)程緩存更多工作狀態(tài)。因此,在很多實(shí)例中,可以減小與環(huán)境切換相關(guān)聯(lián)的與高速緩存有關(guān)的性能障礙(penalty),并且因此可以增強(qiáng)整個(gè)系統(tǒng)性能。
特征化本發(fā)明的這些和其它優(yōu)點(diǎn)和特征在形成本發(fā)明進(jìn)一步的部分的權(quán)利要求中提出。但是,為更好地理解本發(fā)明和通過(guò)其使用得到的優(yōu)點(diǎn)和目的,應(yīng)該參考附圖和附隨描述內(nèi)容,其中描述了本發(fā)明的示范性的實(shí)施例。


圖1是包含符合本發(fā)明的環(huán)境切換預(yù)取的示范性裝置的方塊圖。
圖2是圖1的裝置中處理器通過(guò)高速緩存系統(tǒng)與主存儲(chǔ)器互連的方塊圖。
圖3是說(shuō)明由圖1的裝置執(zhí)行的環(huán)境切換程序的程序流的流程圖。
圖4是說(shuō)明圖3的環(huán)境切換程序的執(zhí)行期間發(fā)生的操作的序列的功能性時(shí)間線(xiàn)(timeline)。
圖5是說(shuō)明對(duì)圖3中說(shuō)明的環(huán)境切換程序的替換環(huán)境切換程序的程序流的流程圖。
圖6是說(shuō)明圖5的環(huán)境切換程序的執(zhí)行期間發(fā)生的操作的序列的功能性時(shí)間線(xiàn)。
圖7是圖2中引用的數(shù)據(jù)預(yù)取器的示范性的實(shí)現(xiàn)的方塊圖。
圖8是圖2中引用的L1數(shù)據(jù)高速緩存的示范性的實(shí)現(xiàn)的方塊圖。
圖9是說(shuō)明由圖1的裝置在環(huán)境切換期間執(zhí)行的示范性的初始化指令預(yù)取程序的程序流的流程圖。
圖10是說(shuō)明由圖1的裝置在環(huán)境切換期間執(zhí)行的另一個(gè)示范性的初始化指令預(yù)取程序的程序流的流程圖。
圖11是說(shuō)明由圖1的裝置在環(huán)境切換期間執(zhí)行的示范性的初始化數(shù)據(jù)預(yù)取程序的程序流的流程圖。
圖12是說(shuō)明由圖1的裝置在環(huán)境切換期間執(zhí)行的另一個(gè)示范性的初始化數(shù)據(jù)預(yù)取程序的程序流的流程圖。
具體實(shí)施例方式
以下討論的各實(shí)施例利用環(huán)境切換預(yù)取以在線(xiàn)程的執(zhí)行恢復(fù)之前預(yù)取線(xiàn)程可能使用的數(shù)據(jù)。在這個(gè)環(huán)境中,可以認(rèn)為線(xiàn)程可能使用的數(shù)據(jù)包括由線(xiàn)程執(zhí)行的指令以及作為其執(zhí)行結(jié)果而由那些指令處理的數(shù)據(jù)。
如下面將會(huì)變得更明顯,環(huán)境切換預(yù)取可以用于關(guān)于到線(xiàn)程的環(huán)境切換,或者可替代地關(guān)于到另一個(gè)線(xiàn)程的環(huán)境切換(例如當(dāng)為之預(yù)取數(shù)據(jù)的線(xiàn)程將在下一次環(huán)境切換時(shí)恢復(fù)的時(shí)候)而為那個(gè)線(xiàn)程預(yù)取數(shù)據(jù)。此外,預(yù)取可以是基于軟件或硬件的,并且可以為指令、要由指令處理的數(shù)據(jù)或兩者執(zhí)行。同樣可以使用各種初始化預(yù)取的方法,包括發(fā)出接觸指令、對(duì)硬件預(yù)取器編程和/或?qū)懣刂茢?shù)據(jù)到緩沖器。
進(jìn)而,狀態(tài)信息的類(lèi)型可以在不同的實(shí)施例中變化,可以關(guān)于保存線(xiàn)程的工作狀態(tài)存儲(chǔ)該狀態(tài)信息,并且隨后用于在環(huán)境切換期間初始化預(yù)取。例如,為預(yù)取指令可以使用如程序計(jì)數(shù)器的狀態(tài)信息、分支預(yù)測(cè)信息、硬件預(yù)取器狀態(tài)信息、和/或如標(biāo)記陣列數(shù)據(jù)的高速緩存狀態(tài)信息、最近使用(MRU)的數(shù)據(jù)和/或路線(xiàn)(way)預(yù)測(cè)數(shù)據(jù)(在其它之中)。同樣地,為預(yù)取由指令處理的數(shù)據(jù),可以使用如高速緩存歷史信息的狀態(tài)信息、硬件預(yù)取器狀態(tài)信息、關(guān)于數(shù)據(jù)預(yù)取使用的基地址和步幅(stride)、和/或如標(biāo)記陣列數(shù)據(jù)的高速緩存狀態(tài)信息、最近使用(MRU)的數(shù)據(jù)和/或路線(xiàn)預(yù)測(cè)數(shù)據(jù)(在其它之中)。進(jìn)而,環(huán)境切換期間什么時(shí)候正好初始化預(yù)取可在不同的實(shí)施例中變化,例如,恢復(fù)工作狀態(tài)前,恢復(fù)工作狀態(tài)時(shí),恢復(fù)工作狀態(tài)后,或者甚至在執(zhí)行另一個(gè)線(xiàn)程期間,該線(xiàn)程安排在為之要初始化預(yù)取的線(xiàn)程的恢復(fù)之前執(zhí)行。
可知在其它符合本發(fā)明的實(shí)施例中可以利用很多其它的修改和變化。因此本發(fā)明不限于以下揭示的各特定實(shí)施例。
現(xiàn)在轉(zhuǎn)向附圖,在所有的幾張圖中,同樣的數(shù)字表示同樣的部分,圖1說(shuō)明包含了符合本發(fā)明的環(huán)境切換預(yù)取的計(jì)算機(jī)10。計(jì)算機(jī)10一般表示例如任何數(shù)量的多用戶(hù)計(jì)算機(jī),如網(wǎng)絡(luò)服務(wù)器、中型(midrange)計(jì)算機(jī)、大型主機(jī)(mainframe)計(jì)算機(jī)等。但是,應(yīng)該知道本發(fā)明可以在其它計(jì)算機(jī)和數(shù)據(jù)處理系統(tǒng)中實(shí)現(xiàn),例如在單用戶(hù)計(jì)算機(jī),如工作站、桌面計(jì)算機(jī)、便攜式計(jì)算機(jī)等中,或者在其它的可編程的電子設(shè)備(例如包含嵌入的控制器等),例如機(jī)頂盒、游戲機(jī)等。
計(jì)算機(jī)10一般包括一個(gè)或更多的系統(tǒng)處理器12,該處理器通過(guò)安置在高速緩存系統(tǒng)16內(nèi)的一級(jí)或更多級(jí)高速緩沖存儲(chǔ)器耦合到主存儲(chǔ)器14。進(jìn)而,主存儲(chǔ)器14通過(guò)系統(tǒng)輸入/輸出(I/O)系統(tǒng)18耦合到多種類(lèi)型的外部設(shè)備,例如一個(gè)或更多的網(wǎng)絡(luò)20、一個(gè)或更多的工作站22和一個(gè)或更多的大規(guī)模存儲(chǔ)設(shè)備24。任何數(shù)目的替代計(jì)算機(jī)架構(gòu)可供選擇使用。
同樣顯示用于計(jì)算機(jī)10的典型軟件配置存在于主存儲(chǔ)器14中,包括能夠被一個(gè)或更多的應(yīng)用28訪(fǎng)問(wèn)的操作系統(tǒng)26(它可以包括各種部件如內(nèi)核、設(shè)備驅(qū)動(dòng)器、實(shí)時(shí)庫(kù)等)。如下面將變得更明顯地,環(huán)境切換預(yù)取通常在整個(gè)或部分操作系統(tǒng)中實(shí)現(xiàn),并且特別是,在其線(xiàn)程管理和調(diào)度部件內(nèi)。此外,下面同樣將變得更明顯,環(huán)境切換預(yù)取可以用或不用專(zhuān)用的硬件部件和/或?qū)鹘y(tǒng)硬件部件的修正來(lái)實(shí)現(xiàn),并且特別是,純粹通過(guò)在傳統(tǒng)硬件平臺(tái)上執(zhí)行的軟件來(lái)實(shí)現(xiàn)。
一般地,為實(shí)現(xiàn)本發(fā)明的實(shí)施例而執(zhí)行的程序的軟件實(shí)現(xiàn)部分,不論實(shí)現(xiàn)為操作系統(tǒng)的部分還是特定的應(yīng)用、部件、程序、對(duì)象、模塊或指令的序列或甚至其子集,在這里將稱(chēng)為“計(jì)算機(jī)程序代碼”或簡(jiǎn)稱(chēng)“程序代碼”。程序代碼通常包含一條或更多條指令,該指令在不同的時(shí)間存留于計(jì)算機(jī)中不同的存儲(chǔ)器和存儲(chǔ)設(shè)備中,當(dāng)由計(jì)算機(jī)中一個(gè)或更多個(gè)處理器讀取并執(zhí)行時(shí),使得那個(gè)計(jì)算機(jī)履行對(duì)執(zhí)行體現(xiàn)本發(fā)明的各個(gè)方面的步驟或單元必要的步驟。此外,雖然在功能全面的計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)環(huán)境下已經(jīng)和在下文中將描述本發(fā)明,但本領(lǐng)域技術(shù)人員會(huì)理解本發(fā)明的各種實(shí)施例能夠作為程序產(chǎn)品以各種形式分發(fā),并且不管實(shí)際用于執(zhí)行分發(fā)的計(jì)算機(jī)可讀信號(hào)承載媒體的特定類(lèi)型,本發(fā)明同樣適用。計(jì)算機(jī)可讀信號(hào)承載媒體的例子包括但不限于其中的可記錄類(lèi)型的媒體,如易失和非易失存儲(chǔ)器件、軟盤(pán)和其它可移動(dòng)盤(pán)、硬盤(pán)驅(qū)動(dòng)器、磁帶、光盤(pán)(例如CD-ROM、DVD等),和傳輸型媒體如數(shù)字和模擬通信鏈路。
另外,可以基于應(yīng)用識(shí)別以下描述的各種程序代碼,在該應(yīng)用內(nèi)它在本發(fā)明的特定的實(shí)施例中實(shí)現(xiàn)。但是,應(yīng)該知道使用下面的任何特定程序術(shù)語(yǔ)只是為了方便,并且因此本發(fā)明不應(yīng)該限定為僅僅在由這樣的術(shù)語(yǔ)識(shí)別和/或暗示的任何特定的應(yīng)用中使用。進(jìn)而,給定通常無(wú)數(shù)方式,其中計(jì)算機(jī)程序可組織成為例程、進(jìn)程、方法、模塊、對(duì)象等,以及程序功能可在存留在典型的計(jì)算機(jī)內(nèi)的各種軟件層間分配的各種方式(例如操作系統(tǒng)、庫(kù)、API、應(yīng)用、applet等),應(yīng)該知道本發(fā)明不限于這里描述的程序功能的特定組織和分配。
本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到圖1中說(shuō)明的典型環(huán)境并不打算限制本發(fā)明。實(shí)際上,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到可以使用其它替代硬件和/或軟件環(huán)境而不脫離本發(fā)明的范圍。
接下來(lái)圖2說(shuō)明來(lái)自計(jì)算機(jī)10的處理器12之一與主存儲(chǔ)器14通過(guò)高速緩存系統(tǒng)16的互連。在說(shuō)明的實(shí)現(xiàn)中,顯示高速緩存系統(tǒng)16包括3級(jí)高速緩沖存儲(chǔ)器,第一級(jí)(L1)包括獨(dú)立的指令和數(shù)據(jù)高速緩存30、32,配置第二和第三級(jí)(L2和L3)高速緩存34、36緩存指令和數(shù)據(jù)。如在本領(lǐng)域已知的,高速緩存30-36的每個(gè)可以集成到同一集成電路器件或芯片上作為處理器12,或者可以安排在一個(gè)或更多的外部芯片上。此外,高速緩存30-36的每個(gè)可以為處理器12專(zhuān)用,或者由處理器12和一個(gè)或更多另外的處理器共享。進(jìn)而,如上述,任何處理器12可以包括一個(gè)或更多提供單獨(dú)執(zhí)行路徑的核心,并且在一些實(shí)現(xiàn)中,一個(gè)或更多的高速緩存可以為單獨(dú)的內(nèi)核專(zhuān)用。
符合本發(fā)明,利用環(huán)境切換操作在線(xiàn)程的執(zhí)行恢復(fù)之前初始化那個(gè)線(xiàn)程可能使用的數(shù)據(jù)的預(yù)取。在這點(diǎn)上,數(shù)據(jù)的預(yù)取可以導(dǎo)致取得數(shù)據(jù)到高速緩存系統(tǒng)中任何或所有高速緩沖存儲(chǔ)器。
此外,可以完全在軟件中、完全在硬件中或使用硬件和軟件的結(jié)合執(zhí)行預(yù)取的初始化。在這點(diǎn)上,對(duì)于完全或部分依賴(lài)硬件的實(shí)現(xiàn),可以使用基于硬件的預(yù)取器,例如數(shù)據(jù)預(yù)取器38提供數(shù)據(jù)預(yù)取功能。另外,在一些實(shí)施例中,可希望另外包括基于硬件的指令的預(yù)取,例如使用指令預(yù)取器40。在一些實(shí)施例中,可以結(jié)合預(yù)取器38和40的功能。在其它的實(shí)現(xiàn)中,可以配置高速緩存控制器被直接控制,以在環(huán)境切換期間如所要求的而預(yù)取指令和/或數(shù)據(jù)。
基于硬件的預(yù)取器通常包括功能提供命令給高速緩存系統(tǒng)16中的高速緩存控制器和/或主存儲(chǔ)器14,以初始化特定的高速緩存行中的數(shù)據(jù)的取得。如下將變得更明顯地,很多傳統(tǒng)的數(shù)據(jù)預(yù)取器企圖檢測(cè)數(shù)據(jù)訪(fǎng)問(wèn)中的模式,并根據(jù)這樣檢測(cè)到的模式預(yù)取數(shù)據(jù)。另一方面,指令預(yù)取器通常直接包含進(jìn)處理器,并且通?;谥噶盍黝A(yù)取,這常常通過(guò)預(yù)取隨后的高速緩存行到被指向的那個(gè)作為程序計(jì)數(shù)器,并可選擇地使用分支預(yù)測(cè)以從一個(gè)或更多判決路徑預(yù)取指令。
為控制基于硬件的預(yù)取器以響應(yīng)環(huán)境切換,可以使用許多不同的配置。例如,預(yù)取器可以被處理器直接可讀和可寫(xiě)以實(shí)現(xiàn)基于軟件的控制。在其它實(shí)施例中,緩沖器,例如緩沖器42、44之一,可以用于存儲(chǔ)由預(yù)取器讀出的預(yù)取控制數(shù)據(jù)以預(yù)取數(shù)據(jù),該緩沖器本質(zhì)上可以是邏輯的或物理的。例如,在一些實(shí)施例中,軟件可以寫(xiě)預(yù)取控制數(shù)據(jù)到這樣的緩沖器,并且可以配置預(yù)取器讀出預(yù)取控制數(shù)據(jù)以響應(yīng)環(huán)境切換的檢測(cè)。另外,在一些實(shí)施例中,可以使用寫(xiě)緩沖器以由硬件預(yù)取器觸發(fā)預(yù)取。
在軟件中完全實(shí)現(xiàn)預(yù)取的初始化的情形,例如,通過(guò)專(zhuān)用指令如接觸指令(如PowerPC ISA中的dcbt)的使用,或者通過(guò)裝載或存儲(chǔ)指令到適當(dāng)?shù)拇鎯?chǔ)器地址的執(zhí)行(如果存儲(chǔ)器地址未被緩存,就由高速緩存系統(tǒng)處理它們),可以實(shí)現(xiàn)這樣的初始化。
現(xiàn)在轉(zhuǎn)向圖3,說(shuō)明環(huán)境切換程序50的代表性的實(shí)現(xiàn)。程序50可以由例如多線(xiàn)程操作系統(tǒng)的調(diào)度邏輯執(zhí)行。程序50同樣可以由其它操作系統(tǒng)部件和/或在運(yùn)行時(shí)庫(kù)內(nèi)執(zhí)行,并且可以由許多不同的事件觸發(fā)。例如,環(huán)境切換可以由硬件或軟件定時(shí)器的超時(shí)觸發(fā),例如一旦分配給線(xiàn)程的時(shí)間片已經(jīng)到期。環(huán)境切換同樣可由線(xiàn)程主動(dòng)釋放或掛起觸發(fā),例如如果線(xiàn)程在等待盤(pán)訪(fǎng)問(wèn)。環(huán)境切換同樣可以由搶先行為如較高優(yōu)先級(jí)的線(xiàn)程或中斷觸發(fā)。
程序50開(kāi)始于塊52,保存正在執(zhí)行的當(dāng)前線(xiàn)程的工作狀態(tài),包括在指示線(xiàn)程的執(zhí)行恢復(fù)前應(yīng)該預(yù)取什么數(shù)據(jù)和/或指令時(shí)需要的任何預(yù)取控制數(shù)據(jù)。接下來(lái),塊54決定應(yīng)該執(zhí)行哪個(gè)線(xiàn)程,例如使用許多已知的線(xiàn)程調(diào)度算法,例如round-robin算法。然后塊56為下一個(gè)線(xiàn)程取得存儲(chǔ)的預(yù)取控制數(shù)據(jù),并且使用這里討論的任何變化,塊58為下一個(gè)線(xiàn)程初始化數(shù)據(jù)和/或指令預(yù)取。然后塊60以本領(lǐng)域已知的通常方式恢復(fù)下一個(gè)線(xiàn)程的工作狀態(tài)。然后在塊62恢復(fù)下一個(gè)線(xiàn)程的執(zhí)行,并且程序50完成。
如圖4中所示,它說(shuō)明在從線(xiàn)程T1到線(xiàn)程T2的環(huán)境切換期間按時(shí)間順序排列的進(jìn)展,恢復(fù)線(xiàn)程T2的工作狀態(tài)之前預(yù)取的初始化使數(shù)據(jù)和/或指令能夠與線(xiàn)程T2的工作狀態(tài)的恢復(fù)并行發(fā)生。同樣地,當(dāng)線(xiàn)程T2恢復(fù)執(zhí)行時(shí),線(xiàn)程使用的一些或所有數(shù)據(jù)和/或指令將被緩存,或者至少處于正在被緩存的過(guò)程中。
同樣地,圖4的環(huán)境切換期間預(yù)取的初始化發(fā)生在恢復(fù)線(xiàn)程T2的執(zhí)行之前,以及在為線(xiàn)程T2恢復(fù)工作狀態(tài)之前。但是,將會(huì)知道預(yù)取的初始化可能在其它的序列中發(fā)生。例如,預(yù)取的初始化可能在工作狀態(tài)的恢復(fù)同時(shí)或者期間、或者甚至在保存正在掛起的線(xiàn)程的工作狀態(tài)之前發(fā)生。另外,如由圖5的例程50′說(shuō)明的,為線(xiàn)程的預(yù)取的初始化甚至可能在環(huán)境切換到那個(gè)線(xiàn)程之前發(fā)生。
特別地,例程50′說(shuō)明環(huán)境切換例程的實(shí)現(xiàn),其中為線(xiàn)程的預(yù)取的初始化發(fā)生在到為在那個(gè)線(xiàn)程之前執(zhí)行而調(diào)度的另一個(gè)線(xiàn)程的環(huán)境切換期間,例如,緊接其之前。例程50′在塊64開(kāi)始,存儲(chǔ)當(dāng)前線(xiàn)程的狀態(tài)。接下來(lái),塊66決定下下個(gè)要執(zhí)行的線(xiàn)程,即這個(gè)環(huán)境切換所屬的線(xiàn)程已經(jīng)恢復(fù)執(zhí)行之后將被執(zhí)行的線(xiàn)程。然后塊68為下下個(gè)線(xiàn)程取得預(yù)取控制數(shù)據(jù)。其后,塊70為下下個(gè)線(xiàn)程初始化數(shù)據(jù)和/或指令的預(yù)取,并且塊72和74分別恢復(fù)下一個(gè)線(xiàn)程的狀態(tài)并初始化線(xiàn)程的執(zhí)行。
如可以代替塊70被執(zhí)行的塊70′所表示的,可希望在例程50′期間的其它點(diǎn),例如恢復(fù)下一個(gè)線(xiàn)程的狀態(tài)之后初始化預(yù)取。另外,在其它的實(shí)施例中,初始化預(yù)取可能發(fā)生在環(huán)境切換中的任何點(diǎn),并且甚至可以發(fā)生在下一個(gè)線(xiàn)程的執(zhí)行期間,但是在隨后的到下下個(gè)線(xiàn)程的環(huán)境切換之前。
因此,如圖6中所說(shuō)明的,說(shuō)明從線(xiàn)程T1到線(xiàn)程T2的環(huán)境切換的按時(shí)間順序排列的進(jìn)展。在這個(gè)環(huán)境切換中,決定下下個(gè)線(xiàn)程(這里指明為線(xiàn)程T3),并且在環(huán)境切換期間預(yù)取數(shù)據(jù)和/或指令。假如線(xiàn)程T2的執(zhí)行和到線(xiàn)程T3的環(huán)境切換仍然必須發(fā)生在為線(xiàn)程T3預(yù)取的數(shù)據(jù)和/或指令的使用之前,將會(huì)知道例程50′一般提供額外的時(shí)間以確?;謴?fù)掛起的線(xiàn)程的執(zhí)行時(shí)將緩存更多的必需的數(shù)據(jù)和/或指令。
同樣將會(huì)知道,在本發(fā)明的環(huán)境中,恢復(fù)線(xiàn)程的執(zhí)行前預(yù)取的初始化不一定導(dǎo)致在恢復(fù)線(xiàn)程的執(zhí)行時(shí)取數(shù)據(jù)和/或指令的過(guò)程完成,或者甚至在恢復(fù)執(zhí)行時(shí)將初始化活動(dòng)的數(shù)據(jù)傳遞。只要在這樣的恢復(fù)之前初始化預(yù)取的過(guò)程并且通常當(dāng)線(xiàn)程被掛起時(shí),可以預(yù)見(jiàn),相對(duì)取得線(xiàn)程的執(zhí)行期間需要的數(shù)據(jù)/指令,與取得需要的數(shù)據(jù)和/或指令相聯(lián)系的反應(yīng)時(shí)間將會(huì)改善。
如上所述,狀態(tài)信息的類(lèi)型在不同的實(shí)施例中可以變化,該狀態(tài)信息可以作為線(xiàn)程的工作狀態(tài)的部分存儲(chǔ),并且可以用于產(chǎn)生預(yù)取的初始化中使用的預(yù)取控制數(shù)據(jù)。例如,為預(yù)取指令,可以使用狀態(tài)信息如程序計(jì)數(shù)器、分支預(yù)測(cè)信息、硬件預(yù)取器狀態(tài)信息、和/或高速緩存狀態(tài)信息如標(biāo)記陣列數(shù)據(jù)、最近使用(MRU)的數(shù)據(jù)和/或路線(xiàn)預(yù)測(cè)數(shù)據(jù)(除了別的以外)。同樣地,為預(yù)取由指令處理的數(shù)據(jù),可以使用狀態(tài)信息如高速緩存歷史信息、硬件預(yù)取器狀態(tài)信息、有關(guān)數(shù)據(jù)預(yù)取使用的基地址和步幅、和/或高速緩存狀態(tài)信息如標(biāo)記陣列數(shù)據(jù)、最近使用(MRU)的數(shù)據(jù)和/或路線(xiàn)預(yù)測(cè)數(shù)據(jù)(除了別的以外)。
例如,一個(gè)示范性的基于硬件的預(yù)取器38的實(shí)現(xiàn)包括具有調(diào)度程序塊82的預(yù)取引擎80,該調(diào)度程序塊82與更新步幅表86中的表項(xiàng)88的增加/減少控制塊84接口。特別地,每個(gè)表項(xiàng)88包括基地址值和步幅值,基地址值表示當(dāng)前要取的地址,步幅值表示從基地址增加或減去的數(shù)量以產(chǎn)生下一個(gè)要取的地址。
預(yù)取器38一般通過(guò)企圖識(shí)別存儲(chǔ)器地址中的訪(fǎng)問(wèn)模式并預(yù)測(cè)基于那些模式將可能需要哪些數(shù)據(jù)來(lái)工作。更具體地,一旦確定基地址和步幅值,通過(guò)來(lái)自調(diào)度程序82的命令取基地址到高速緩存系統(tǒng),并且由增加/減少控制塊84將基地址與步幅值相加,新的基地址值被寫(xiě)回到表中。另外,調(diào)度程序82在多個(gè)表項(xiàng)間仲裁,并且基于高速緩存系統(tǒng)提供的高速緩存工作負(fù)荷信息抑制發(fā)出高速緩存取請(qǐng)求。
表項(xiàng)88中的每個(gè)與特定的線(xiàn)程可能或可能不相關(guān)聯(lián)。通常由分析歷史表90確定存儲(chǔ)在表項(xiàng)中的初始值,該歷史表90具有表項(xiàng)92用于上次訪(fǎng)問(wèn)的N個(gè)高速緩存行(或者可替代地上次訪(fǎng)問(wèn)的N個(gè)地址)。流分配控制器94執(zhí)行這樣的分析并且在步幅表86中存儲(chǔ)適當(dāng)?shù)闹涤糜跀?shù)據(jù)訪(fǎng)問(wèn)模式中檢測(cè)到的規(guī)則的步幅。
在說(shuō)明的實(shí)施例中,關(guān)于環(huán)境切換預(yù)取,可希望存儲(chǔ)來(lái)自步幅表86、歷史表90或兩者的狀態(tài)信息。在這點(diǎn)上,可希望提供讀/寫(xiě)控制塊96從而為處理器對(duì)預(yù)取器的訪(fǎng)問(wèn)提供保存/恢復(fù)端口。另外,為線(xiàn)程初始化預(yù)取的預(yù)取控制數(shù)據(jù)可以使用保存/恢復(fù)端口更新預(yù)取器的狀態(tài),例如通過(guò)恢復(fù)表86、90任一個(gè)或兩者中特定表項(xiàng)的狀態(tài)。例如,在只有某些表項(xiàng)與特定的線(xiàn)程相關(guān)聯(lián)的地方,可能希望只保存和恢復(fù)那些對(duì)特定的線(xiàn)程有關(guān)的表項(xiàng)。
另外,可能希望提供修改任一個(gè)表中的表項(xiàng)的能力。例如,在基于步幅的預(yù)取的情況下,可能希望重做一個(gè)或更多的先前的取操作。在這樣的實(shí)例中,例如,在步幅值中存儲(chǔ)基地址之前,可能希望從作為環(huán)境切換的結(jié)果存儲(chǔ)的當(dāng)前基地址減去一個(gè)或多個(gè)步幅值。在很多實(shí)例中,這導(dǎo)致重復(fù)一個(gè)或更多的在線(xiàn)程的掛起之前被執(zhí)行的先前的取操作。在其它實(shí)施例中,可能希望簡(jiǎn)單地利用歷史表識(shí)別應(yīng)該為特定的線(xiàn)程預(yù)取的高速緩存行。同樣將會(huì)知道,本發(fā)明可以和其它類(lèi)型的硬件預(yù)取器一起使用,例如那些企圖預(yù)取鏈接的表、不規(guī)則的步幅的硬件預(yù)取器等。
作為另一個(gè)關(guān)于基于環(huán)境的預(yù)取可保存和/或恢復(fù)的狀態(tài)信息的例子,圖8更詳細(xì)地說(shuō)明數(shù)據(jù)高速緩存32的一個(gè)實(shí)現(xiàn)。在這個(gè)實(shí)現(xiàn)中,數(shù)據(jù)高速緩存32是直接映射(非連帶(non-associative))的高速緩存。通過(guò)地址100訪(fǎng)問(wèn)高速緩存,該地址100劃分為標(biāo)記、索引和偏置域102、104、106。索引104用于在表項(xiàng)112、114中分別為存儲(chǔ)標(biāo)記的標(biāo)記陣列108和存儲(chǔ)高速緩存行的數(shù)據(jù)陣列110做索引。判決塊116比較標(biāo)記陣列110中的表項(xiàng)112存儲(chǔ)的標(biāo)記和提供的地址的標(biāo)記域102。發(fā)現(xiàn)匹配時(shí)(指示高速緩存命中),通過(guò)塊118提供索引104給數(shù)據(jù)陣列110,產(chǎn)生存儲(chǔ)在索引的表項(xiàng)114的高速緩存行的輸出。未發(fā)現(xiàn)匹配時(shí)(指示高速緩存未中),塊116傳遞地址給下一級(jí)高速緩存,請(qǐng)求從那個(gè)高速緩存取得對(duì)于請(qǐng)求的地址的高速緩存行。
從環(huán)境切換預(yù)取的觀(guān)點(diǎn),可能希望取得標(biāo)記陣列108的內(nèi)容并且例如通過(guò)讀/寫(xiě)控制塊120為線(xiàn)程存儲(chǔ)這樣的內(nèi)容作為狀態(tài)信息的一部分。其后,標(biāo)記數(shù)據(jù)可以用于請(qǐng)求如先前被緩存的而由標(biāo)記陣列識(shí)別的高速緩存行(將會(huì)知道當(dāng)希望為標(biāo)記陣列表項(xiàng)產(chǎn)生高速緩存行的時(shí)候,用于特定的標(biāo)記陣列表項(xiàng)的索引可以從它在陣列中的位置得到)。此外,當(dāng)高速緩存32實(shí)現(xiàn)為直接映射的高速緩存時(shí),在其它連帶的實(shí)施例中,或者多路高速緩存可以被使用。在這樣的實(shí)例中,可能同樣希望存儲(chǔ)其它高速緩存狀態(tài)數(shù)據(jù),如MRU數(shù)據(jù)和/或路線(xiàn)預(yù)測(cè)數(shù)據(jù)。
同樣將會(huì)知道數(shù)據(jù)和/或指令訪(fǎng)問(wèn)模式的分析可以純粹在軟件中發(fā)生,例如通過(guò)分析指令數(shù)據(jù)流。因此本發(fā)明不限于這里討論的特定的硬件實(shí)現(xiàn)。
現(xiàn)在轉(zhuǎn)向圖9-12,顯示了符合本發(fā)明的預(yù)取初始化的四個(gè)特定實(shí)現(xiàn)。將會(huì)知道在任何給定的環(huán)境切換中可以執(zhí)行多個(gè)這樣的例程。
圖9說(shuō)明了實(shí)現(xiàn)基于軟件的指令預(yù)取的初始化指令預(yù)取例程130。例程130在塊132由取得存儲(chǔ)于用于線(xiàn)程的狀態(tài)信息中的程序計(jì)數(shù)器(PC)開(kāi)始。然后塊134向由PC指向的高速緩存行發(fā)出接觸指令或任何其它適當(dāng)?shù)拇鎯?chǔ)器訪(fǎng)問(wèn)指令。其后,塊136可選地為其它高速緩存行初始化預(yù)取。例如,可能希望為跟隨由PC識(shí)別的那個(gè)高速緩存行的下N個(gè)高速緩存行初始化預(yù)取??赡芡瑯酉M谄渌鼘?shí)施例中預(yù)取其它的執(zhí)行路徑,例如使用如分支目標(biāo)地址高速緩存(BTAC)中的包含在狀態(tài)信息中的分支預(yù)測(cè)數(shù)據(jù)。
圖10說(shuō)明了實(shí)現(xiàn)基于硬件的指令預(yù)取的替代的初始化指令預(yù)取例程140。例程140在塊142由取得存儲(chǔ)于用于線(xiàn)程的狀態(tài)信息中的PC開(kāi)始。然后塊142指示硬件指令預(yù)取器預(yù)取一個(gè)或更多從那個(gè)由PC確定的高速緩存行開(kāi)始的高速緩存行。如上,這樣的預(yù)取可能簡(jiǎn)單地預(yù)取鄰近的高速緩存行并且/或者基于分支預(yù)測(cè)技術(shù)預(yù)取其它高速緩存行。
圖11說(shuō)明了實(shí)現(xiàn)基于步幅的數(shù)據(jù)預(yù)取的初始化數(shù)據(jù)預(yù)取例程150。例程150在塊152由從狀態(tài)信息取得基地址和步幅值開(kāi)始。然后塊154通過(guò)從基地址減去一個(gè)或更多個(gè)步幅值可選地修改基地址,有效地重做先前的數(shù)據(jù)訪(fǎng)問(wèn)。然后塊156寫(xiě)(可能被修改的)基地址和步幅值到硬件數(shù)據(jù)預(yù)取器中。作為這樣的更新的結(jié)果,硬件數(shù)據(jù)預(yù)取器然后將在基地址開(kāi)始著手預(yù)取。
圖12說(shuō)明了執(zhí)行基于高速緩存行或記錄的預(yù)取的替代的初始化數(shù)據(jù)預(yù)取例程160。例程160在塊162由從用于線(xiàn)程的狀態(tài)信息取得高速緩存歷史開(kāi)始,例如使用從標(biāo)記陣列和/或歷史表取得的數(shù)據(jù)。塊164然后發(fā)出接觸指令或其它適當(dāng)?shù)拇鎯?chǔ)器訪(fǎng)問(wèn)指令用于最后N個(gè)高速緩存行,因此有效地重復(fù)先前的線(xiàn)程的執(zhí)行期間發(fā)生的數(shù)據(jù)訪(fǎng)問(wèn)活動(dòng)。
可以對(duì)說(shuō)明的實(shí)施例進(jìn)行各種額外的修改而不背離本發(fā)明的精神和范圍。因此,本發(fā)明在于所附的權(quán)利要求。
權(quán)利要求
1.一種多線(xiàn)程計(jì)算機(jī)中執(zhí)行環(huán)境切換操作的方法,該方法包含恢復(fù)線(xiàn)程的執(zhí)行前初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取。
2.根據(jù)權(quán)利要求1所述的方法,其中初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取包括初始化可能由線(xiàn)程執(zhí)行的至少一個(gè)指令的預(yù)取。
3.根據(jù)權(quán)利要求1所述的方法,其中初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取包括初始化可能被至少一個(gè)由線(xiàn)程執(zhí)行的指令處理的數(shù)據(jù)的預(yù)取。
4.根據(jù)權(quán)利要求1所述的方法,還包含為線(xiàn)程恢復(fù)工作狀態(tài);并且為其恢復(fù)工作狀態(tài)時(shí)恢復(fù)線(xiàn)程的執(zhí)行。
5.根據(jù)權(quán)利要求4所述的方法,其中當(dāng)為線(xiàn)程恢復(fù)工作狀態(tài)時(shí)執(zhí)行初始化預(yù)取。
6.根據(jù)權(quán)利要求4所述的方法,其中為線(xiàn)程恢復(fù)工作狀態(tài)之前執(zhí)行初始化預(yù)取。
7.根據(jù)權(quán)利要求1所述的方法,其中環(huán)境切換操作包括環(huán)境切換到為在到該線(xiàn)程的環(huán)境切換之前執(zhí)行而調(diào)度的另一個(gè)線(xiàn)程。
8.根據(jù)權(quán)利要求7所述的方法,其中在為其它線(xiàn)程恢復(fù)工作狀態(tài)和恢復(fù)該其它線(xiàn)程的執(zhí)行的至少之一期間,執(zhí)行初始化預(yù)取。
9.根據(jù)權(quán)利要求7所述的方法,其中執(zhí)行初始化預(yù)取以響應(yīng)為在其它線(xiàn)程的執(zhí)行后立即執(zhí)行而正在調(diào)度的線(xiàn)程。
10.根據(jù)權(quán)利要求1所述的方法,其中初始化預(yù)取還包括從線(xiàn)程取得前面的環(huán)境切換期間存儲(chǔ)的狀態(tài)信息。
11.根據(jù)權(quán)利要求10所述的方法,其中狀態(tài)信息包括硬件預(yù)取器狀態(tài)信息,并且其中初始化預(yù)取還包括使用硬件預(yù)取器狀態(tài)信息初始化硬件預(yù)取器。
12.根據(jù)權(quán)利要求11所述的方法,其中硬件預(yù)取器狀態(tài)信息包括基地址值。
13.根據(jù)權(quán)利要求12所述的方法,其中硬件預(yù)取器狀態(tài)信息還包括步幅值。
14.根據(jù)權(quán)利要求13所述的方法,其中初始化硬件預(yù)取器包括初始化硬件預(yù)取器以在基地址開(kāi)始預(yù)取。
15.根據(jù)權(quán)利要求13所述的方法,其中初始化硬件預(yù)取器包括初始化硬件預(yù)取器以通過(guò)從基地址減去至少一個(gè)步幅值和多個(gè)步幅值而計(jì)算的地址開(kāi)始預(yù)取。
16.根據(jù)權(quán)利要求11所述的方法,其中初始化硬件預(yù)取器包括初始化硬件預(yù)取器以重復(fù)在從該線(xiàn)程的前面的環(huán)境切換之前執(zhí)行的至少一個(gè)預(yù)取操作。
17.根據(jù)權(quán)利要求10所述的方法,其中,狀態(tài)信息識(shí)別從該線(xiàn)程的前面的環(huán)境切換之前訪(fǎng)問(wèn)的至少一個(gè)高速緩存行,并且其中初始化預(yù)取還包括初始化由狀態(tài)信息識(shí)別的高速緩存行的預(yù)取。
18.根據(jù)權(quán)利要求17所述的方法,初始化由狀態(tài)信息識(shí)別的高速緩存行的預(yù)取包括執(zhí)行對(duì)高速緩存行中的地址的接觸指令。
19.根據(jù)權(quán)利要求10所述的方法,還包含關(guān)于在從該線(xiàn)程的環(huán)境切換期間為該線(xiàn)程存儲(chǔ)工作狀態(tài),存儲(chǔ)狀態(tài)信息。
20.根據(jù)權(quán)利要求10所述的方法,其中狀態(tài)信息包括高速緩存狀態(tài)信息。
21.根據(jù)權(quán)利要求20所述的方法,其中高速緩存狀態(tài)信息包括標(biāo)記陣列信息、最近使用的信息和路線(xiàn)預(yù)測(cè)信息的至少之一。
22.根據(jù)權(quán)利要求1所述的方法,其中初始化預(yù)取包括指示硬件預(yù)取器預(yù)取數(shù)據(jù)。
23.根據(jù)權(quán)利要求22所述的方法,其中指示由計(jì)算機(jī)中的操作系統(tǒng)執(zhí)行硬件預(yù)取器。
24.根據(jù)權(quán)利要求1所述的方法,其中初始化預(yù)取包括執(zhí)行接觸指令。
25.根據(jù)權(quán)利要求24所述的方法,其中執(zhí)行接觸指令由計(jì)算機(jī)中的操作系統(tǒng)執(zhí)行。
26.根據(jù)權(quán)利要求1所述的方法,其中初始化預(yù)取包括在緩沖器中為線(xiàn)程存儲(chǔ)預(yù)取控制數(shù)據(jù),該方法還包含從緩沖器取得預(yù)取控制數(shù)據(jù)并且執(zhí)行基于預(yù)取控制數(shù)據(jù)的預(yù)取操作。
27.根據(jù)權(quán)利要求1所述的方法,還包含取得數(shù)據(jù)到高速緩沖存儲(chǔ)器中以響應(yīng)初始化預(yù)取。
28.一種多線(xiàn)程計(jì)算機(jī)中預(yù)取數(shù)據(jù)的方法,該方法包括關(guān)聯(lián)于從第一個(gè)線(xiàn)程到第二個(gè)線(xiàn)程的環(huán)境切換,為第一個(gè)線(xiàn)程存儲(chǔ)狀態(tài)信息;從存儲(chǔ)的狀態(tài)信息確定第一個(gè)線(xiàn)程的下次執(zhí)行期間第一個(gè)線(xiàn)程可能使用的數(shù)據(jù);以及在第一個(gè)線(xiàn)程的下次執(zhí)行之前初始化第一個(gè)線(xiàn)程可能使用的被確定的數(shù)據(jù)的預(yù)取。
29.根據(jù)權(quán)利要求28所述的方法,其中初始化線(xiàn)程可能使用的被確定的數(shù)據(jù)的預(yù)取包括初始化可能由該線(xiàn)程執(zhí)行的至少一個(gè)指令的預(yù)取。
30.根據(jù)權(quán)利要求28所述的方法,其中初始化線(xiàn)程可能使用的被確定的數(shù)據(jù)的預(yù)取包括初始化可能由至少一個(gè)被線(xiàn)程執(zhí)行的指令處理的數(shù)據(jù)的預(yù)取。
31.根據(jù)權(quán)利要求28所述的方法,其中在環(huán)境切換到第一個(gè)線(xiàn)程期間初始化預(yù)取發(fā)生。
32.根據(jù)權(quán)利要求28所述的方法,其中在環(huán)境切換到另一個(gè)線(xiàn)程期間初始化預(yù)取發(fā)生。
33.根據(jù)權(quán)利要求32所述的方法,其中初始化預(yù)取發(fā)生在到第三個(gè)線(xiàn)程的環(huán)境切換期間,第三線(xiàn)程是為第一個(gè)線(xiàn)程的下次執(zhí)行前立即執(zhí)行而調(diào)度的。
34.根據(jù)權(quán)利要求28所述的方法,其中初始化預(yù)取發(fā)生在第一個(gè)線(xiàn)程的掛起期間。
35.一種裝置,包含至少一個(gè)處理器,配置以執(zhí)行多個(gè)線(xiàn)程;以及程序代碼,配置以通過(guò)恢復(fù)線(xiàn)程的執(zhí)行前初始化可能被多個(gè)線(xiàn)程中的線(xiàn)程使用的數(shù)據(jù)的預(yù)取,從而執(zhí)行環(huán)境切換操作。
36.根據(jù)權(quán)利要求35所述的裝置,其中,配置程序代碼,以通過(guò)初始化至少一個(gè)可能由線(xiàn)程執(zhí)行的指令的預(yù)取,初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取。
37.根據(jù)權(quán)利要求35所述的裝置,其中,配置程序代碼,以通過(guò)初始化可能被至少一個(gè)由線(xiàn)程執(zhí)行的指令處理的數(shù)據(jù)的預(yù)取,初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取。
38.根據(jù)權(quán)利要求35所述的裝置,其中,進(jìn)一步配置程序代碼為線(xiàn)程恢復(fù)工作狀態(tài)并且在為其恢復(fù)工作狀態(tài)時(shí)執(zhí)行線(xiàn)程。
39.根據(jù)權(quán)利要求38所述的裝置,其中,當(dāng)為線(xiàn)程恢復(fù)工作狀態(tài)時(shí)配置程序代碼以初始化預(yù)取。
40.根據(jù)權(quán)利要求38所述的裝置,其中,配置程序代碼以在為線(xiàn)程恢復(fù)工作狀態(tài)之前初始化預(yù)取。
41.根據(jù)權(quán)利要求35所述的裝置,其中,配置程序代碼以通過(guò)環(huán)境切換到為在到該線(xiàn)程的環(huán)境切換之前的執(zhí)行而調(diào)度的另一個(gè)線(xiàn)程,來(lái)執(zhí)行環(huán)境切換操作。
42.根據(jù)權(quán)利要求41所述的裝置,其中,配置程序代碼以在為其它線(xiàn)程恢復(fù)工作狀態(tài)和恢復(fù)其它線(xiàn)程的執(zhí)行的至少之一期間初始化預(yù)取。
43.根據(jù)權(quán)利要求41所述的裝置,其中,配置程序代碼初始化預(yù)取以響應(yīng)為在其它線(xiàn)程的執(zhí)行之后立即執(zhí)行而正在調(diào)度的線(xiàn)程。
44.根據(jù)權(quán)利要求35所述的裝置,其中,配置程序代碼以進(jìn)一步通過(guò)取得在從線(xiàn)程的前面的環(huán)境切換期間存儲(chǔ)的狀態(tài)信息來(lái)初始化預(yù)取。
45.根據(jù)權(quán)利要求44所述的裝置,還包含硬件預(yù)取器,其中,狀態(tài)信息包含硬件預(yù)取器狀態(tài)信息,并且其中,配置程序代碼以通過(guò)使用硬件預(yù)取器狀態(tài)信息初始化硬件預(yù)取器來(lái)初始化預(yù)取。
46.根據(jù)權(quán)利要求45所述的裝置,其中硬件預(yù)取器狀態(tài)信息包括基地址值。
47.根據(jù)權(quán)利要求46所述的裝置,其中硬件預(yù)取器狀態(tài)信息還包括步幅值。
48.根據(jù)權(quán)利要求47所述的裝置,其中,配置程序代碼以通過(guò)初始化硬件預(yù)取器以在基地址開(kāi)始預(yù)取,來(lái)初始化硬件預(yù)取器。
49.根據(jù)權(quán)利要求47所述的裝置,其中,配置程序代碼以通過(guò)初始化硬件預(yù)取器以在從基地址減去至少一個(gè)步幅值和多個(gè)步幅值計(jì)算的地址開(kāi)始預(yù)取,來(lái)初始化硬件預(yù)取器。
50.根據(jù)權(quán)利要求45所述的裝置,其中,配置程序代碼以通過(guò)初始化硬件預(yù)取器以重復(fù)從線(xiàn)程的前面的環(huán)境切換之前執(zhí)行的至少一個(gè)預(yù)取操作,來(lái)初始化硬件預(yù)取器。
51.根據(jù)權(quán)利要求44所述的裝置,其中狀態(tài)信息識(shí)別從線(xiàn)程的前面的環(huán)境切換之前訪(fǎng)問(wèn)的至少一個(gè)高速緩存行,并且其中配置程序代碼以通過(guò)初始化由狀態(tài)信息識(shí)別的高速緩存行的預(yù)取,來(lái)初始化預(yù)取。
52.根據(jù)權(quán)利要求44所述的裝置,其中,進(jìn)一步配置程序代碼以關(guān)于在從線(xiàn)程的環(huán)境切換期間為線(xiàn)程存儲(chǔ)工作狀態(tài),存儲(chǔ)狀態(tài)信息。
53.根據(jù)權(quán)利要求44所述的裝置,其中狀態(tài)信息包括高速緩存狀態(tài)信息,它包括標(biāo)記陣列信息、最近使用的信息和路線(xiàn)預(yù)測(cè)信息的至少之一。
54.根據(jù)權(quán)利要求35所述的裝置,還包含硬件預(yù)取器,其中通過(guò)指示硬件預(yù)取器預(yù)取數(shù)據(jù),配置程序代碼以初始化預(yù)取。
55.根據(jù)權(quán)利要求35所述的裝置,其中配置程序代碼以通過(guò)執(zhí)行接觸指令初始化預(yù)取。
56.根據(jù)權(quán)利要求35所述的裝置,其中配置程序代碼為在緩沖器中的線(xiàn)程存儲(chǔ)預(yù)取控制數(shù)據(jù),并且其中在執(zhí)行預(yù)取操作中使用預(yù)取控制數(shù)據(jù)。
57.根據(jù)權(quán)利要求35所述的裝置,還包含高速緩沖存儲(chǔ)器,其中進(jìn)一步配置程序代碼以取得數(shù)據(jù)到高速緩沖存儲(chǔ)器中以響應(yīng)初始化預(yù)取。
58.一種裝置,包含至少一個(gè)高速緩沖存儲(chǔ)器;和電路布置,配置以執(zhí)行多個(gè)線(xiàn)程,并且通過(guò)恢復(fù)線(xiàn)程的執(zhí)行之前初始化可能被多個(gè)線(xiàn)程中的線(xiàn)程使用的數(shù)據(jù)的預(yù)取到高速緩沖存儲(chǔ)器中,來(lái)執(zhí)行環(huán)境切換操作。
59.根據(jù)權(quán)利要求58所述的裝置,其中可能被線(xiàn)程使用的數(shù)據(jù)包括至少一個(gè)可能由線(xiàn)程執(zhí)行的指令。
60.根據(jù)權(quán)利要求58所述的裝置,其中可能被線(xiàn)程使用的數(shù)據(jù)包括可能被至少一個(gè)由線(xiàn)程執(zhí)行的指令處理的數(shù)據(jù)。
61.根據(jù)權(quán)利要求58所述的裝置,其中電路布置包含至少一個(gè)處理器。
62.根據(jù)權(quán)利要求61所述的裝置,其中電路布置還包含由至少一個(gè)處理器執(zhí)行的操作系統(tǒng)程序代碼。
63.根據(jù)權(quán)利要求58所述的裝置,還包含耦合到高速緩沖存儲(chǔ)器的硬件預(yù)取器,并且其中配置電路布置以通過(guò)控制硬件預(yù)取器初始化數(shù)據(jù)的預(yù)取。
64.根據(jù)權(quán)利要求63所述的裝置,其中,進(jìn)一步配置電路布置代碼,以關(guān)于從線(xiàn)程的環(huán)境切換,從硬件預(yù)取器取得狀態(tài)信息,并且其中配置電路布置從而使用取得的狀態(tài)信息初始化預(yù)取。
65.根據(jù)權(quán)利要求63所述的裝置,還包含耦合到硬件預(yù)取器的緩沖器,其中配置電路布置,以通過(guò)在緩沖器中存儲(chǔ)數(shù)據(jù)來(lái)初始化預(yù)取,并且其中配置硬件預(yù)取器初始化預(yù)取操作以響應(yīng)存儲(chǔ)在緩沖器中的數(shù)據(jù)。
66.一種程序產(chǎn)品,包含程序代碼,配置以通過(guò)恢復(fù)線(xiàn)程的執(zhí)行前初始化可能被線(xiàn)程使用的數(shù)據(jù)的預(yù)取,執(zhí)行到多線(xiàn)程計(jì)算機(jī)中的多個(gè)線(xiàn)程中的線(xiàn)程的環(huán)境切換;以及計(jì)算機(jī)可讀信號(hào)承載媒體,用于承載程序代碼。
67.根據(jù)權(quán)利要求66所述的程序產(chǎn)品,其中計(jì)算機(jī)可讀信號(hào)承載媒體包括傳輸媒體和可記錄媒體的至少之一。
全文摘要
一種關(guān)于環(huán)境切換操作的裝置、程序產(chǎn)品和方法,初始化數(shù)據(jù)的預(yù)取,該數(shù)據(jù)在線(xiàn)程的執(zhí)行恢復(fù)之前可能被那個(gè)線(xiàn)程使用。因此,一旦已知將執(zhí)行環(huán)境切換到特定的線(xiàn)程,可以為那個(gè)線(xiàn)程預(yù)取數(shù)據(jù),使得當(dāng)恢復(fù)線(xiàn)程的執(zhí)行時(shí),可能為線(xiàn)程緩存工作狀態(tài)的更多,或者至少在正在取得到高速緩沖存儲(chǔ)器中的過(guò)程中,因此減小與環(huán)境切換相關(guān)聯(lián)的與高速緩存有關(guān)的性能劣化。
文檔編號(hào)G06F9/38GK1629800SQ20041009475
公開(kāi)日2005年6月22日 申請(qǐng)日期2004年11月17日 優(yōu)先權(quán)日2003年12月18日
發(fā)明者杰弗里·P·布拉德福德, 哈羅德·F·科斯曼, 蒂莫西·J·馬林斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
孙吴县| 孝义市| 苍山县| 云浮市| 塔河县| 丰县| 平湖市| 高阳县| 方正县| 昌图县| 涿州市| 商丘市| 娄烦县| 辰溪县| 镇坪县| 鸡西市| 中西区| 五华县| 徐水县| 清苑县| 文山县| 理塘县| 七台河市| 林周县| 彰化县| 琼结县| 黔西县| 信宜市| 阳新县| 巴里| 沛县| 柯坪县| 罗山县| 错那县| 华亭县| 彭水| 合川市| 衢州市| 克拉玛依市| 咸丰县| 邛崃市|