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

      在多處理器計(jì)算機(jī)系統(tǒng)中進(jìn)行基于資源的線程分配的方法和裝置的制作方法

      文檔序號(hào):6562100閱讀:232來(lái)源:國(guó)知局
      專利名稱:在多處理器計(jì)算機(jī)系統(tǒng)中進(jìn)行基于資源的線程分配的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及多線程計(jì)算機(jī)系統(tǒng),并具體涉及確定在這種系統(tǒng)中的線程之間的沖突。
      背景技術(shù)
      圖1中示出了傳統(tǒng)的片上雙處理器系統(tǒng)。在此系統(tǒng)100中,處理器102和104共享處理器局部總線(“PLB”)106,PLB 106通過(guò)橋110與片上外圍總線(“OPB”)108以及存儲(chǔ)器控制器112互連,存儲(chǔ)器控制器112與隨機(jī)存取存儲(chǔ)器(“RAM”)116和DMA外圍設(shè)備118互連。如圖所示,系統(tǒng)100包括耦合于OPB 108的多個(gè)外圍設(shè)備(包括未示出的外圍適配器)usb30、SATA、音頻DAC、音頻ADC、LCD、MAL、無(wú)線、uART、密碼機(jī)、照相機(jī)、mpeg編碼器、mpeg解碼器和DMA。在諸如此類的多處理器環(huán)境中,多個(gè)線程在同一時(shí)間逐個(gè)運(yùn)行,并從而可能競(jìng)爭(zhēng)使用相同的外圍設(shè)備。當(dāng)然,這引起了線程之間的潛在沖突。在現(xiàn)有技術(shù)中已處理了該問(wèn)題的各方面。例如,在美國(guó)專利No.6,018,759中,提供了使用超時(shí)過(guò)程來(lái)調(diào)整線程運(yùn)行的時(shí)間量的線程交換協(xié)調(diào)工具。在另一示例中,美國(guó)專利No.6,061,710處理了對(duì)多線程上下文中的硬件中斷的處理。

      發(fā)明內(nèi)容
      本發(fā)明解決了上述問(wèn)題。在本發(fā)明的一種形式中,一種裝置包括處理器,可操作用于并行地執(zhí)行各個(gè)指令線程,其中系統(tǒng)包括可操作用于與所述處理器通信的電路,并且系統(tǒng)可操作用于訪問(wèn)共享的處理資源。所述電路包括用于各個(gè)指令線程的存儲(chǔ)器以及可操作用于在用于各個(gè)指令線程的存儲(chǔ)器中生成和存儲(chǔ)處理資源的歷史項(xiàng)的第一邏輯電路。所述歷史項(xiàng)指示出用于該項(xiàng)的處理資源是否已被存儲(chǔ)器的指令線程中相應(yīng)的一個(gè)所使用。第二邏輯電路可操作用于比較所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng)。第二邏輯電路還可操作用于如果所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則選擇所述第二指令線程用以執(zhí)行。
      在另一方面中,所述第一邏輯電路包括第一子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)是否使用歷史項(xiàng)。所述第一子邏輯電路設(shè)置所述是否使用項(xiàng)以指示出所述處理資源中對(duì)應(yīng)的一個(gè)是否被所述指令線程中對(duì)應(yīng)的一個(gè)所使用,并且響應(yīng)于所述相應(yīng)的指令線程超過(guò)所累計(jì)的所述相應(yīng)的處理資源的未使用的某個(gè)閾值,復(fù)位所述是否使用項(xiàng)。
      在另一方面中,所述第一邏輯電路包括第二子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)何時(shí)使用歷史項(xiàng)。所述何時(shí)使用歷史項(xiàng)指示出所述各個(gè)處理資源何時(shí)被所述各個(gè)線程最后使用。
      在本發(fā)明的方法形式中,在第一存儲(chǔ)器中存儲(chǔ)指示出所執(zhí)行的指令線程的線程項(xiàng)。檢測(cè)由各個(gè)指令線程對(duì)處理資源的使用,并且在第二存儲(chǔ)器中存儲(chǔ)用于所述線程的歷史項(xiàng)。所述歷史項(xiàng)指示出各個(gè)處理資源是否已被各個(gè)指令線程所使用。比較所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng)。如果所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則選擇所述第二指令線程用以執(zhí)行。
      在另一方面中,由所述第一線程使用的處理資源的歷史與由所述第二線程使用的處理資源的歷史之間的所述某種不同包括由所述第一線程使用的處理資源的歷史與由所述第二線程使用的處理資源的歷史完全不同。
      在一可替換方案中,所述第一線程正在運(yùn)行,而系統(tǒng)處理器之一已經(jīng)選擇所述第二線程作為與所述第一線程一起運(yùn)行的候選。
      在另一可替換方案中,系統(tǒng)處理器之一已選擇所述第一線程運(yùn)行,并且所述第二線程已經(jīng)在運(yùn)行。
      在另一方面中,所述處理資源包括系統(tǒng)的外圍設(shè)備。
      通過(guò)閱讀以下的詳細(xì)描述并參考附圖,本發(fā)明的其它變體、目的、優(yōu)點(diǎn)和形式將更加明顯。


      在權(quán)利要求中闡明了被認(rèn)為是本發(fā)明新穎特征的特性。然而,通過(guò)參考以下對(duì)例示性實(shí)施例的詳細(xì)描述并結(jié)合附圖閱讀,將最好地理解本發(fā)明本身以及其優(yōu)選使用模式、另外的目標(biāo)和優(yōu)點(diǎn),在附圖中圖1例示了根據(jù)現(xiàn)有技術(shù)的傳統(tǒng)的片上雙處理器系統(tǒng)。
      圖2例示了根據(jù)本發(fā)明實(shí)施例的片上系統(tǒng)。
      圖3是例示了根據(jù)本發(fā)明實(shí)施例的用于確定特定線程與在特定時(shí)間正運(yùn)行的線程是否存在沖突的候選線程查詢的某些過(guò)程和結(jié)構(gòu)的高級(jí)框圖。
      圖4是例示了根據(jù)本發(fā)明實(shí)施例的用于確定可以與饑餓線程一起運(yùn)行的線程的查詢的某些過(guò)程和結(jié)構(gòu)的高級(jí)框圖。
      圖5是例示了根據(jù)本發(fā)明實(shí)施例的線程資源分配邏輯的某些方面的框圖。
      圖6例示了根據(jù)本發(fā)明實(shí)施例的用于跟蹤哪些外圍資源被使用以及哪些線程在使用它們的線程資源分配邏輯的存儲(chǔ)器陣列的細(xì)節(jié)。
      圖7是例示了根據(jù)本發(fā)明實(shí)施例的關(guān)于線程資源分配邏輯怎樣確定特定線程是否可以與在特定時(shí)間已經(jīng)在運(yùn)行的其它線程一起運(yùn)行的某些一般方面的流程圖。
      圖8例示了根據(jù)本發(fā)明實(shí)施例的用于確定可以與饑餓線程一起運(yùn)行的線程的線程資源分配邏輯。
      圖9例示了根據(jù)本發(fā)明實(shí)施例的用于確定特定線程是否可以與在特定時(shí)間已經(jīng)在運(yùn)行的其它線程一起運(yùn)行的線程資源分配邏輯。
      具體實(shí)施例方式
      在以下對(duì)優(yōu)選實(shí)施例的詳細(xì)描述中,參考了例示出可實(shí)踐本發(fā)明的實(shí)施例的附圖。應(yīng)該理解,在不背離本發(fā)明范圍的情況下,可以使用其它實(shí)施例并可做出改變。附圖和詳細(xì)描述并非將本發(fā)明限制為所公開的特定形式。相反,本發(fā)明將覆蓋落入如權(quán)利要求所限定的本發(fā)明的精神和范圍中的所有修改、等同物和變體。這里的標(biāo)題并非以任何方式限制其主題。
      系統(tǒng)如前所述,在多處理器環(huán)境中,多個(gè)線程在同一時(shí)間逐個(gè)運(yùn)行,并從而可能競(jìng)爭(zhēng)使用相同的外圍設(shè)備。根據(jù)本發(fā)明的實(shí)施例,線程資源分配邏輯(這里也被稱為“線程資源分配核”或“TRAC”)確定可以在特定時(shí)間運(yùn)行的線程組合,以減少線程沖突。這可包括TRAC響應(yīng)于來(lái)自處理器的特定線程查詢,其中該處理器將特定線程指示為用于上下文交換的候選者,并且TRAC通過(guò)指示出該線程是否將導(dǎo)致資源沖突來(lái)進(jìn)行響應(yīng)。此外,或者可替換地,這可包括TRAC響應(yīng)于來(lái)自處理器的饑餓(starved)線程查詢,其中TRAC確定出將不會(huì)導(dǎo)致與給定線程(例如,需要運(yùn)行的“饑餓”線程)的資源沖突的線程的一個(gè)或多個(gè)列表,并將其傳送給處理器。
      TRAC包括用來(lái)跟蹤哪些外圍資源被使用以及哪些線程在使用它們的邏輯和存儲(chǔ)器陣列(這里被稱為“資源使用存儲(chǔ)器”、“資源使用列表”或“RUL”)。RUL具有指示出每個(gè)線程已使用了哪些外圍資源的存儲(chǔ)器項(xiàng),以及指示出每個(gè)線程何時(shí)使用了這些外圍資源中的每個(gè)的存儲(chǔ)器項(xiàng)。
      現(xiàn)在參考圖2,例示了根據(jù)本發(fā)明實(shí)施例的片上系統(tǒng)200。與圖1的系統(tǒng)100相似,在系統(tǒng)200中,處理器102和104共享PLB互連總線106,PLB 106進(jìn)一步連接到OPB總線108、橋110以及存儲(chǔ)器控制器112。(當(dāng)然,本發(fā)明適用于具有多于兩個(gè)處理器的系統(tǒng)。增加存儲(chǔ)器數(shù)量會(huì)增加外圍資源沖突。因此本發(fā)明在具有更多處理器的系統(tǒng)中更加有用。)圖2的OPB 108具有相關(guān)聯(lián)的OPB時(shí)鐘120,并根據(jù)其周期而工作。與系統(tǒng)100相似,如圖所示,系統(tǒng)200包括多個(gè)外圍設(shè)備(通過(guò)未示出的外圍適配器連接于OPB 108)usb30、SATA、音頻DAC、音頻ADC、LCD、MAL、無(wú)線、uART、密碼機(jī)、照相機(jī)、mpeg編碼器、mpeg解碼器和DMA。
      除了傳統(tǒng)系統(tǒng)100的特征之外,系統(tǒng)200包括TRAC 202。其與PLB 106相連,從而其可以監(jiān)聽總線上的事務(wù)。處理器102和104可以經(jīng)由DCR總線204訪問(wèn)TRAC 202的DCR寄存器(圖2中未示出)。DCR寄存器包含線程和外圍資源的狀態(tài)信息,所述外圍資源包括圖2中示出的usb30、SATA、音頻DAC等。DCR寄存器指示出在特定時(shí)間處理器102和104可以運(yùn)行的線程組合。
      用于確定線程組合的概念性框圖候選線程查詢現(xiàn)在參考圖3,所示出的框圖例示了根據(jù)本發(fā)明實(shí)施例的用于確定特定線程在特定時(shí)間是否可以運(yùn)行的候選線程查詢的某些過(guò)程和結(jié)構(gòu)。所示出的TRAC 202響應(yīng)于在圖3中被稱為“已排隊(duì)線程”302的查詢。即,“可用處理器”304向TRAC 202指示出作為用于上下文交換的候選者的特定線程。在所例示的實(shí)例中,圖2的處理器102和104可用,并且查詢302的候選線程是線程3、6、4和9。這些線程3、6、4和9中的每個(gè)都以將在下文進(jìn)一步解釋的方式分別關(guān)聯(lián)于圖2中示出的某些外圍資源。具體而言,如已排隊(duì)線程302中所示,線程3關(guān)聯(lián)于IrDA和USB;線程6關(guān)聯(lián)于JPEG和SATA;線程4關(guān)聯(lián)于MAL;以及線程9關(guān)聯(lián)于IIC。
      TRAC 202包括用來(lái)跟蹤哪些外圍資源被使用以及哪些線程在使用它們的邏輯和存儲(chǔ)器陣列(圖3中未示出)。這包括指示出每個(gè)線程已使用了圖2的外圍usb30、SATA、音頻DAC等中的哪些的存儲(chǔ)器項(xiàng)(未示出),以及指示出每個(gè)線程何時(shí)使用了這些外圍資源中的每個(gè)的存儲(chǔ)器項(xiàng)。因此,如圖所示,TRAC 202經(jīng)由OPB 108(圖2)監(jiān)視“當(dāng)前運(yùn)行線程”306。在所例示的實(shí)例中,線程1和7正在運(yùn)行。線程1正在使用USB,而線程7正在使用MAL。TRAC 202通過(guò)指示出候選線程3、6、4和9中的哪些可以運(yùn)行(即,指示出哪些線程將不會(huì)導(dǎo)致與當(dāng)前運(yùn)行線程1和7的資源沖突,以及通過(guò)暗示指示出哪些線程將會(huì)導(dǎo)致與線程1和7的沖突)而響應(yīng)于特定查詢302。在所示的示例中,如圖所示,TRAC 202指示出“計(jì)劃中線程”308線程6和9可以運(yùn)行,即,它們將不會(huì)導(dǎo)致沖突。
      饑餓線程查詢現(xiàn)在參考圖4,所示出的框圖例示了根據(jù)本發(fā)明實(shí)施例的用于確定可以與饑餓線程一起運(yùn)行的線程的查詢的某些過(guò)程和結(jié)構(gòu)。所示出的TRAC202響應(yīng)于來(lái)自處理器的查詢,在圖4中被稱為“饑餓線程”402。即,處理器102或104指示出TRAC 202用來(lái)確定可以與饑餓線程一起運(yùn)行而不存在外圍資源沖突的特定線程。在所例示的實(shí)例中,該查詢的饑餓線程是線程號(hào)3。TRAC 202以將在下文進(jìn)一步解釋的方式將此線程與圖4中示出的某些外圍資源相關(guān)聯(lián)。具體而言,線程3關(guān)聯(lián)于IrDA和USB。
      TRAC 202通過(guò)指示出現(xiàn)有線程中的哪些線程可以運(yùn)行(即,不論這些線程是否正在運(yùn)行,指示出哪些線程將不會(huì)導(dǎo)致資源沖突,以及通過(guò)暗示指示出哪些線程將會(huì)導(dǎo)致沖突)而響應(yīng)于饑餓線程查詢402。在所示出的示例中,線程5、7和9可以運(yùn)行,即,它們將不會(huì)導(dǎo)致沖突,因?yàn)榫€程5與外圍MAL相關(guān)聯(lián),線程7與IIC相關(guān)聯(lián),而線程9與JPEG和SATA相關(guān)聯(lián),它們均與關(guān)聯(lián)于線程3的外圍資源不同。
      TRAC 202將所標(biāo)識(shí)出的無(wú)沖突線程寫入所分配的存儲(chǔ)器陣列,作為線程過(guò)程標(biāo)識(shí)符的列表404,在該列表末端為“00”。當(dāng)然,可以使用不同的終止符號(hào)。
      TRAC的框圖現(xiàn)在參考圖5,所示出的高級(jí)框圖例示了根據(jù)本發(fā)明實(shí)施例的TRAC202的某些方面。TRAC 202包括耦合于RUL線程分配邏輯504的RUL502,RUL線程分配邏輯504接著耦合于DCR總線接口506(圖2)。TRAC202還包括耦合于PLB 106(圖2)的總線監(jiān)視邏輯508,其功能是監(jiān)聽在OPB 108(圖2)上由處理器102和104(圖2)的線程對(duì)外圍資源的訪問(wèn)。即,總線監(jiān)視邏輯508監(jiān)聽PLB 106(圖2)來(lái)確定線程在由處理器102和104(圖2)執(zhí)行之時(shí)的身份,以及確定特定線程正在訪問(wèn)的外圍usb30、SATA等(圖2)的身份。因此,通過(guò)監(jiān)聽PLB 106,TRAC 202持續(xù)地跟蹤哪些線程正在使用哪些外圍資源。
      更具體地,系統(tǒng)200上的操作系統(tǒng)分配哪些線程在處理器102和104中的哪個(gè)上運(yùn)行,并將這些線程分配用信號(hào)發(fā)送給總線接口單元506??刂茊卧?10從總線接口單元506獲得此信息。TRAC 202包括線程處理器映射寄存器(未示出),控制單元510將用于每個(gè)線程的項(xiàng)(包括線程過(guò)程標(biāo)識(shí)符和用于線程的相關(guān)聯(lián)處理器102或104的標(biāo)識(shí)符)寫入所述線程處理器映射寄存器中。這提供了線程到處理器的映射。
      總線監(jiān)視邏輯508還將用于相應(yīng)外圍usb30、SATA等的項(xiàng)寫入寄存器(未示出),所述項(xiàng)指示出處理器102和104用來(lái)訪問(wèn)外圍資源的地址。這提供了地址到外圍資源的映射。
      在系統(tǒng)200的工作期間,總線監(jiān)視邏輯508在PLB 106上監(jiān)視線程事務(wù),并通過(guò)參考地址到外圍資源的映射來(lái)確定這種事務(wù)的目標(biāo)外圍usb30、SATA、音頻DAC等??偩€監(jiān)視邏輯508在操作上耦合于線程分配邏輯504,線程分配邏輯504接著耦合于RUL 502??偩€監(jiān)視邏輯508將外圍資源的使用傳送給線程分配邏輯504,線程分配邏輯504將線程項(xiàng)寫入其中,其提供了在RUL 502中的哪些線程正在使用哪些外圍資源的記錄,如下文進(jìn)一步描述的。
      控制邏輯510經(jīng)由DCR總線接口506從處理器102和104(圖2)接收候選線程和饑餓線程查詢,并作為響應(yīng)將用于查詢的線程的過(guò)程標(biāo)識(shí)符傳遞到?jīng)_突邏輯512。TRAC 202的控制邏輯510耦合于沖突邏輯512和DCR總線接口506(圖2)。沖突邏輯512還耦合于RUL 502,并可操作來(lái)讀取RUL 502的項(xiàng),以便對(duì)于給定查詢的線程確定其它線程與該線程有什么外圍資源沖突以及沒有什么外圍資源沖突。沖突邏輯512將答復(fù)返回到控制邏輯510,控制邏輯510接著經(jīng)由DCR總線接口506答復(fù)處理器102和104。
      更具體地,在對(duì)TRAC 202的查詢中,處理器102或104包括用于線程的過(guò)程標(biāo)識(shí)符和查詢類型,其指示出該查詢是否正在詢問(wèn)i)所標(biāo)識(shí)的線程是否與當(dāng)前正運(yùn)行的線程沖突(這里被稱為“候選線程”查詢),或者ii)存在與所標(biāo)識(shí)的線程不沖突的什么線程(這里被稱為“饑餓線程”查詢)。過(guò)程標(biāo)識(shí)符和查詢類型被控制邏輯510寫入DCR查詢寄存器(未示出),接著沖突邏輯512執(zhí)行在DCR查詢寄存器中的所標(biāo)識(shí)線程與RUL502中的線程之間的由查詢類型所指定的特定比較或一系列比較,如下文將進(jìn)一步描述的。
      RUL現(xiàn)在參考圖6,示出了根據(jù)本發(fā)明實(shí)施例的用于跟蹤哪些外圍資源被使用、它們何時(shí)被使用以及哪些線程在使用它們的RUL 502和線程分配邏輯504的相關(guān)聯(lián)的“是否使用”邏輯602和“何時(shí)使用”邏輯604。RUL 502包括多個(gè)線程陣列,即,用于第一線程的第一陣列606、用于第二線程的第二陣列608等,出于例示性目的象征性地將這些線程陣列彼此堆疊地示出。每個(gè)線程陣列在結(jié)構(gòu)上與圖6上端象征性示出的線程陣列606相類似。
      線程陣列606具有用于圖2中的外圍資源的每一個(gè)的列、“是否使用”行610(其可以是寄存器)以及“何時(shí)使用”行612(其也可以是寄存器),“是否使用”行610在每一列中具有指示出相應(yīng)列的外圍資源是否過(guò)去被關(guān)聯(lián)于線程陣列606的線程所使用的存儲(chǔ)器項(xiàng),“何時(shí)使用”行612在每一列中具有指示出相應(yīng)列的外圍資源在過(guò)去何時(shí)被相關(guān)聯(lián)的線程所使用的存儲(chǔ)器項(xiàng)。(應(yīng)該理解,RUL 502的每一行可以是寄存器,而每一列可以是該寄存器中的一比特。因此,線程的“是否使用”行的列中的項(xiàng)在這里可以被稱為“已使用”比特。)應(yīng)該理解,在本發(fā)明其它實(shí)施例中,存在與上述不同的布置。在一其它實(shí)施例中,與TRAC 202使用線程陣列606的“是否使用”行610以及“何時(shí)使用”行612(以及其它陣列,諸如陣列608等)不同,TRAC 202僅使用“何時(shí)使用”行612來(lái)確定外圍資源是否已被使用以及它何時(shí)被使用。
      生成和移除RUL的項(xiàng)的可替換方式在圖6中示出的本發(fā)明實(shí)施例中,通過(guò)響應(yīng)于周期計(jì)數(shù)器的“何時(shí)使用”邏輯604來(lái)生成線程陣列(諸如陣列606)的“何時(shí)使用”行612的項(xiàng)。在所例示的基于周期計(jì)數(shù)器的本發(fā)明實(shí)施例中,用于線程陣列606的“何時(shí)使用”行612的邏輯604包括PLB周期計(jì)數(shù)器邏輯614。(注意,在圖2中,PLB 106具有相關(guān)聯(lián)的PLB時(shí)鐘120,并根據(jù)該時(shí)鐘的周期進(jìn)行工作。)用于關(guān)聯(lián)于線程陣列606的線程的PLB周期計(jì)數(shù)器邏輯614對(duì)于“何時(shí)使用”行612的每一列周期性地輸入PLB時(shí)鐘120的周期的累計(jì)計(jì)數(shù)。(例如,這可以在PLB時(shí)鐘120的每個(gè)周期后完成。)復(fù)位邏輯616監(jiān)視PLB 106中的由相應(yīng)處理器102和104(圖2)對(duì)外圍usb30等的I/O訪問(wèn),并將其用信號(hào)通知PLB周期計(jì)數(shù)器邏輯614以便每當(dāng)該線程訪問(wèn)關(guān)聯(lián)于這一列的外圍資源時(shí)復(fù)位該列的計(jì)數(shù)。因此,線程陣列606的列的行612中的計(jì)數(shù)越小,相關(guān)聯(lián)的外圍資源被使用的時(shí)間就越近。
      同樣地,在本發(fā)明實(shí)施例中,通過(guò)“是否使用”邏輯602來(lái)生成線程陣列606的“是否使用”行610的項(xiàng)。“是否使用”邏輯602包括“已使用”邏輯618,其響應(yīng)于訪問(wèn)外圍資源的與陣列606相關(guān)聯(lián)的線程,從復(fù)位邏輯616接收信號(hào)以訪問(wèn)外圍資源并將所有列中與圖2的外圍usb30等中的特定一個(gè)相關(guān)聯(lián)的相應(yīng)一列中的“是否使用”行610的比特設(shè)置為值“1”?!笆欠袷褂谩边壿?02響應(yīng)于該線程在超過(guò)預(yù)定時(shí)間間隔后仍未再次訪問(wèn)該外圍資源,將該比特復(fù)位為值“0”。即,在所例示的本發(fā)明實(shí)施例中,“是否使用”邏輯602包括“未使用”邏輯620,其讀取對(duì)于該外圍資源的PLB時(shí)鐘120的周期的累計(jì)計(jì)數(shù),并響應(yīng)于該累計(jì)計(jì)數(shù)超出預(yù)定閾值數(shù)則用信號(hào)通知“已使用”邏輯618將該比特復(fù)位為“0”。
      在本發(fā)明的可替換實(shí)施例中,與PLB周期計(jì)數(shù)器邏輯614不同,“何時(shí)使用”邏輯604具有用于關(guān)聯(lián)于線程陣列606的線程的線程訪問(wèn)計(jì)數(shù)器邏輯(未示出)。線程訪問(wèn)計(jì)數(shù)器邏輯首先響應(yīng)于復(fù)位邏輯616用信號(hào)通知線程陣列606的陣列已訪問(wèn)“何時(shí)使用”行612的一列的外圍資源,將該列設(shè)置為預(yù)定值。線程訪問(wèn)計(jì)數(shù)器邏輯還監(jiān)視PLB 106以確定該線程是否被暫停。響應(yīng)于該線程被暫停而沒有訪問(wèn)外圍資源,線程訪問(wèn)計(jì)數(shù)器邏輯減小“何時(shí)使用”行612中用于該外圍資源的列。另外,響應(yīng)于該列的值被減小為“0”,線程訪問(wèn)計(jì)數(shù)器邏輯用信號(hào)通知“已使用”邏輯618將該列的“是否使用”行610復(fù)位。因此,對(duì)于本發(fā)明的可替換實(shí)施例,在線程陣列606的一列的“何時(shí)使用”行612中的累計(jì)計(jì)數(shù)越高,相關(guān)聯(lián)的外圍資源被使用的時(shí)間就越近。
      關(guān)于上述可替換方案,在外圍資源對(duì)線程透明的情形中,圖6中示出的基于周期計(jì)數(shù)器的本發(fā)明實(shí)施例是有利的。例如,到存儲(chǔ)設(shè)備的直接存儲(chǔ)器存取寫入可能無(wú)法使能中斷,這使線程要知道對(duì)設(shè)備的寫入何時(shí)完成變得復(fù)雜。即,除非線程查詢?cè)撛O(shè)備本身,否則TRAC 202將不會(huì)檢測(cè)到對(duì)設(shè)備的寫入已完成的任何指示。
      TRAC工作的示例再次參考圖2和5,在示例性的實(shí)例中,系統(tǒng)200正在工作。具體而言,處理器102正在運(yùn)行以下線程使用USB30、密碼機(jī)和SATA的線程0;使用無(wú)線、MPEG解碼器、LCD控制器和音頻DAC的線程1;使用MPEG編碼器、MPEG解碼器、音頻adc、音頻dac、lcd控制器、照相機(jī)和無(wú)線控制器的線程2;使用SATA的線程3;以及使用USB30的線程4。
      處理器104正在運(yùn)行使用音頻ADC的線程5。
      在這里如上所述,操作系統(tǒng)知道哪些線程在處理器102和104中的哪個(gè)上運(yùn)行,該信息經(jīng)由總線接口506被傳送到TRAC 202的控制單元510??偩€監(jiān)視邏輯508通過(guò)檢測(cè)由處理器102或104對(duì)特定地址的I/O設(shè)備的I/O請(qǐng)求而確定線程正在使用哪個(gè)外圍資源。響應(yīng)于來(lái)自總線監(jiān)視邏輯508的信息,線程分配邏輯504將以下列舉的序列分配給外圍資源,并將此分配映射寫入寄存器。
      USB30[1]SATA[2]音頻DAC[3]音頻ADC[4]LCD[5]MAL[6]無(wú)線[7]uART 密碼機(jī)[9]照相機(jī)[10]MPEG編碼器[11]MPEG解碼器(DMA未在以上列表中,因?yàn)樗梢员慌渲脕?lái)處理來(lái)自多個(gè)處理器的多個(gè)請(qǐng)求,并因此不會(huì)遇到?jīng)_突。)對(duì)于此情形,總線監(jiān)視邏輯508監(jiān)視在PLB 106上的線程事務(wù),參照地址到外圍資源的映射,并作為響應(yīng)而確定以上線程正在使用以上所指示的外圍資源。因此,監(jiān)視邏輯508寫入對(duì)于相應(yīng)線程的“是否使用”行,諸如陣列606的行610(圖6)。這提供了在RUL 502中的哪些線程正在使用哪些外圍資源的記錄,如以下表1中示出的。
      表1RUL中對(duì)于各個(gè)線程的“已使用”比特

      經(jīng)過(guò)一段時(shí)間后,處理器102超時(shí),并中斷操作系統(tǒng)進(jìn)行上下文交換。操作系統(tǒng)確定它將交換處理器102和104,并查詢TRAC 202以找到可以并行運(yùn)行的線程組。因此,處理器102或104之一發(fā)送查詢到TRAC 202的控制邏輯510,控制邏輯510將查詢寫入DCR寄存器并將該查詢通知沖突邏輯512。作為響應(yīng),沖突邏輯512執(zhí)行在RUL 502的項(xiàng)之間的比較或一系列比較,這確定了沒有沖突的四組線程。沖突邏輯512將無(wú)沖突線程的組寫入四個(gè)DCR可讀的寄存器,如以下表2所列舉的。(寄存器數(shù)量對(duì)應(yīng)于TRAC可計(jì)算的不同組的數(shù)量。在所例示的實(shí)施例中,四組無(wú)沖突線程是沖突邏輯可確定的最大值。在本發(fā)明其它實(shí)施例中,此數(shù)量可以不同。需要更多邏輯來(lái)確定更多組,這限制了組的數(shù)量。)
      表2

      應(yīng)該理解,在表2中列舉的寄存器值以十六進(jìn)制格式示出。因此,例如,0000_0023表示以下的32比特00000000000000000000000000100011,其在第一、第二和第五比特(表示第一、第二和第五線程)具有邏輯值“1”。寄存器寬度由TRAC 202可以追蹤的線程的最大數(shù)量所確定,在所例示的實(shí)施例的示例中為32。表2示出了在上下文交換之時(shí)這些寄存器的狀態(tài)。
      在此示例中,操作系統(tǒng)挑選線程2和3分別在處理器102和104上運(yùn)行。操作系統(tǒng)將此選擇經(jīng)由DCR總線108通知TRAC 202,并且線程分配邏輯504作為響應(yīng)而更新線程到處理器的映射。
      在經(jīng)過(guò)再一段時(shí)間后,處理器102或104之一再次超時(shí),并中斷操作系統(tǒng)來(lái)執(zhí)行另一次上下文交換。操作系統(tǒng)確定不管沖突的可能性,線程1都必須被安排。操作系統(tǒng)將此選擇經(jīng)由DCR總線204通知TRAC 202,并且控制邏輯510設(shè)置TRAC寄存器以指示僅包含線程1的子組。寄存器與TRAC 202可以管理的線程的最大數(shù)量等寬,在所例示的實(shí)施例中為32。因此,寄存器被設(shè)為“0x0000_0001”。沖突邏輯512執(zhí)行在RUL 502的項(xiàng)之間的“饑餓線程”比較或一系列比較,這確定了可以與線程1一起運(yùn)行而沒有沖突的線程組。沖突邏輯512將無(wú)沖突線程的組寫入四個(gè)DCR可讀的寄存器,如以下表3所列舉的。
      表3

      操作系統(tǒng)挑選線程4與線程1一起運(yùn)行,將此選擇經(jīng)由DCR總線204通知TRAC 202,并且線程分配邏輯504作為響應(yīng)而再一次更新線程到處理器的映射。
      用于確定線程是否可與當(dāng)前運(yùn)行的線程一起運(yùn)行的過(guò)程現(xiàn)在參考圖7,所示出的流程圖一般地例示了根據(jù)本發(fā)明實(shí)施例的TRAC操作。在702,當(dāng)處理器102或104可用于開始交換新線程時(shí),處理器102或104之一在704查詢TRAC 202,以確定該處理器的候選線程之間的特定線程是否可以與已經(jīng)在運(yùn)行的其它線程一起運(yùn)行。如果否,則處理器選擇不同的候選線程,并重復(fù)704的查詢,直到在706找到可以運(yùn)行的線程為止。
      當(dāng)找到要運(yùn)行的線程之后,處理器運(yùn)行該線程。在708,TRAC 202進(jìn)行監(jiān)視以維持RUL 502對(duì)哪些線程使用哪些外圍資源的當(dāng)前關(guān)注。具體而言,這包括在710檢測(cè)以找到要停止的線程。在線程繼續(xù)時(shí),這包括TRAC 202在712監(jiān)聽線程對(duì)外圍資源的訪問(wèn)。如果檢測(cè)到訪問(wèn),則在714,TRAC 202檢查已使用比特以查看所訪問(wèn)的外圍資源之前是否已被訪問(wèn)過(guò)。如果否,則在716,TRAC 202設(shè)置RUL 502中用于該線程的外圍資源比特,而TRAC 202的邏輯流繼續(xù)到718。如果是,則在716該比特?zé)o需被設(shè)置。從而,TRAC 202的邏輯流跳過(guò)718,在718,TRAC將用于該線程的外圍資源的“最后使用”比特復(fù)位,以指示該外圍資源為最后使用的一個(gè)。接著TRAC 202的邏輯流返回框708以繼續(xù)監(jiān)視。
      在710,當(dāng)TRAC檢測(cè)到線程停止時(shí),TRAC 202的邏輯流沿分支到達(dá)702。并在704等待來(lái)自處理器對(duì)于新的候選線程的新查詢。
      用于確定線程是否可以與饑餓線程一起運(yùn)行的TRAC邏輯現(xiàn)在參考圖8,所示出的根據(jù)本發(fā)明實(shí)施例的TRAC 202的沖突邏輯512的一部分用于確定給定線程(諸如饑餓線程,即處理器已確定必須運(yùn)行的線程)是否具有與另一線程(諸如可用于與饑餓線程一起運(yùn)行的線程)的外圍資源沖突。如圖所示,饑餓線程的N個(gè)“已使用比特”的每個(gè)以及所述另一線程的相應(yīng)的N個(gè)“已使用比特”的每個(gè)被分別輸入到N個(gè)兩輸入與門,由沖突邏輯512中的與門802所表示。(記住,在這里如上所述,相應(yīng)的“已使用比特”與給定外圍資源相關(guān)聯(lián)。如果兩線程的比特都被設(shè)置為邏輯“1”,這指示出兩線程均已使用過(guò)相同的外圍資源,并因此兩線程被認(rèn)為存在沖突。)與門802輸出的N個(gè)結(jié)果被輸入到N輸入或門804。如果這N個(gè)輸入都不是“1”,則或門804的輸出為“0”。接著,或門804的單個(gè)輸出被輸入到非門806,使得如果或門804的輸出為“0”,則非門806的輸出為“1”,這指示出沒有沖突。
      用于確定線程是否可以與當(dāng)前運(yùn)行的線程一起運(yùn)行的TRAC邏輯現(xiàn)在參考圖9,所示出的根據(jù)本發(fā)明實(shí)施例的TRAC 202的沖突邏輯512的一部分用于確定一組特定線程是否具有與另一組特定線程的沖突。例如,這具有用于確定一組候選線程是否可以與已經(jīng)在運(yùn)行的一組線程一起運(yùn)行的應(yīng)用。RUL 502中每個(gè)線程的相應(yīng)的“已使用比特”被輸入沖突邏輯512中的若干對(duì)相應(yīng)與門。即,在所例示的實(shí)例中,存在三個(gè)線程,每個(gè)線程具有N個(gè)已使用比特。一個(gè)線程的已使用比特被輸入與門902和908,另一個(gè)線程的已使用比特被輸入與門904和910,而另一個(gè)線程的已使用比特被輸入與門906和912。(以與圖8所例示的相同方式,圖9中所示的與門902-912以及918均表示N個(gè)兩輸入與門。同樣,或門914和916均表示N個(gè)三輸入或門。)控制邏輯512中的控制使能邏輯922通過(guò)將每個(gè)所選擇的與門聲明為邏輯“1”而選擇與門902-912中的哪些被使能。
      因此,例如,如果處理器102向RUL 502指示出第一線程是候選線程,并且RUL 502已經(jīng)確定第二和第三線程已經(jīng)在運(yùn)行,則控制使能邏輯922使能用于第二和第三線程的與門904和906,以及使能用于第一線程的與門908。接著將候選線程的相應(yīng)“已使用比特”與第二和第三線程的相應(yīng)比特進(jìn)行比較。即,對(duì)于被聲明過(guò)的第二或第三線程的每個(gè)比特,或門914的輸出被聲明,這指示出線程之一已使用了相應(yīng)的外圍資源?;蜷T914的輸出被發(fā)送到與門918。同樣,對(duì)于被聲明過(guò)的第一線程的每個(gè)比特,或門916的輸出被聲明,并且或門916的輸出被發(fā)送到與門918。
      與門918比較或門914和916的N個(gè)輸出,并且如果同一比特的輸出均是邏輯“1”,則這指示出外圍資源沖突。與門918的N個(gè)輸出被饋送給N輸入或門920。如果對(duì)于在線程之間進(jìn)行比較的任意“已使用比特”指示出沒有沖突,則不會(huì)對(duì)或門920的所有輸入進(jìn)行聲明,從而不會(huì)對(duì)或門920的輸出進(jìn)行聲明,并且對(duì)于所比較的線程指示出沒有沖突。
      其它變體和一般注解通過(guò)前述內(nèi)容應(yīng)該理解,由于本發(fā)明減少了線程進(jìn)行交換時(shí)必須等待外圍資源的機(jī)會(huì),所以本發(fā)明是尤其有利的。即,本發(fā)明提供了之前的外圍資源使用的適當(dāng)收集的和存儲(chǔ)的歷史,其很可能指示出其后的外圍資源使用。響應(yīng)于所存儲(chǔ)的歷史,線程資源分配邏輯有利地與處理器合作來(lái)選擇要運(yùn)行的線程。盡管這并不保證線程將不會(huì)遇到?jīng)_突和停止,但它減少了這種可能性。此外,本發(fā)明可以補(bǔ)充管理線程使用的其它方法,諸如當(dāng)線程遇到?jīng)_突并被停止時(shí)交換線程的方法。
      在各種實(shí)施例中,系統(tǒng)200(圖2)采用各種形式,包括個(gè)人計(jì)算機(jī)系統(tǒng)、大型機(jī)計(jì)算機(jī)系統(tǒng)、工作站、服務(wù)器等。即,應(yīng)該理解,術(shù)語(yǔ)“計(jì)算機(jī)系統(tǒng)”旨在包括具有執(zhí)行來(lái)自存儲(chǔ)器媒體的指令的處理器的任何設(shè)備。系統(tǒng)200還可包括鍵盤、點(diǎn)擊設(shè)備(例如鼠標(biāo))、非易失性存儲(chǔ)器(例如ROM、硬盤、軟盤、CD-ROM和DVD)以及顯示設(shè)備。
      系統(tǒng)200的存儲(chǔ)器存儲(chǔ)程序指令(也被稱為“軟件程序”),程序指令可由處理器102和104執(zhí)行來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明的方法的各種實(shí)施例。各種實(shí)施例以各種方式實(shí)現(xiàn)一個(gè)或多個(gè)軟件程序,包括基于過(guò)程的技術(shù)、基于組件的技術(shù)、和/或面向?qū)ο蟮募夹g(shù)等等。特定示例包括XML、C、C++對(duì)象、Java和商用類庫(kù)。本領(lǐng)域普通技術(shù)人員將理解,圖200中的硬件取決于實(shí)現(xiàn)方式可以不同。例如,除了圖2中描述的硬件之外可以再使用其它外圍設(shè)備,或者用其它外圍設(shè)備取代圖2中描述的硬件。所描述的示例并非暗示對(duì)本發(fā)明的體系結(jié)構(gòu)上的限制。
      在此使用了術(shù)語(yǔ)“邏輯”、“核”、“存儲(chǔ)器”等。應(yīng)該理解,這些術(shù)語(yǔ)指代作為集成電路芯片的設(shè)計(jì)的一部分的電路。芯片設(shè)計(jì)用圖形計(jì)算機(jī)編程語(yǔ)言來(lái)創(chuàng)建,并被存儲(chǔ)于計(jì)算機(jī)存儲(chǔ)媒體(諸如盤、磁帶、物理硬盤驅(qū)動(dòng)器、或諸如存儲(chǔ)存取網(wǎng)絡(luò)中的虛擬硬盤驅(qū)動(dòng)器)中。如果設(shè)計(jì)者未構(gòu)造芯片或用于構(gòu)造芯片的光刻掩模,則設(shè)計(jì)者直接或者間接地通過(guò)物理裝置(例如通過(guò)提供存儲(chǔ)了所得到的設(shè)計(jì)的存儲(chǔ)媒體的拷貝)或者用電子方法(例如通過(guò)因特網(wǎng))來(lái)將所得到的設(shè)計(jì)傳送到這些實(shí)體。接著所存儲(chǔ)的設(shè)計(jì)被轉(zhuǎn)換為用于構(gòu)造光刻掩模的適當(dāng)格式(例如GDSII),其典型地包括將在晶片上構(gòu)成的所述芯片設(shè)計(jì)的多個(gè)拷貝。光刻掩模被用來(lái)限定將被刻蝕或另外處理的晶片(和/或其上的層)的區(qū)域。
      所得到的集成電路芯片可被構(gòu)造者用原料晶片的形式(即,具有多個(gè)未封裝芯片的單個(gè)晶片)作為裸片分發(fā),或者以封裝形式被分發(fā)。在后一情形中,該芯片被安裝在單芯片包裝(諸如具有附著于主板的導(dǎo)線的塑料載體或者其它高級(jí)載體)中或多芯片包裝(諸如具有單表面或雙表面互連或嵌入互連的陶瓷載體)中。在任意情形中,該芯片接著與其它芯片、分散的電路單元、和/或其它信號(hào)處理設(shè)備相集成,成為(a)中間產(chǎn)品(諸如主板)或(b)最終產(chǎn)品的一部分。最終產(chǎn)品可以是包括集成電路芯片的任何產(chǎn)品,其范圍從玩具和其它低端應(yīng)用到具有顯示器、鍵盤或其它輸入設(shè)備和中央處理器的高級(jí)計(jì)算機(jī)產(chǎn)品。
      已經(jīng)出于例示目的呈現(xiàn)了對(duì)本實(shí)施例的描述,但其不是窮盡性的,也并非將本發(fā)明限制于所公開的形式。許多修改和變體對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)將很明顯。例如,應(yīng)該理解,盡管已在完全運(yùn)行的數(shù)據(jù)處理系統(tǒng)的上下文中描述了本發(fā)明,并且盡管已根據(jù)基于硬件的邏輯描述了TRAC202,但是本領(lǐng)域普通技術(shù)人員將理解,TRAC 202的邏輯可以由對(duì)于處理器應(yīng)用特定的集成電路來(lái)實(shí)現(xiàn),其中本發(fā)明的過(guò)程能夠用計(jì)算機(jī)可讀媒體的指令的形式被分布。這種計(jì)算機(jī)可讀媒體可具有多種形式。不管實(shí)際用來(lái)執(zhí)行所述分布的信號(hào)承載媒體的特定類型如何,均可等同應(yīng)用本發(fā)明。計(jì)算機(jī)可讀媒體的示例包括可讀類型的媒體(諸如軟盤、硬盤驅(qū)動(dòng)器、RAM和CD-ROM)和傳輸類型的媒體(諸如數(shù)字和模擬通信鏈路)。
      另外,在此描述的本發(fā)明實(shí)施例中,線程分配是基于外圍設(shè)備的線程使用的歷史(其可以作為一類計(jì)算(即處理、資源)來(lái)查看)。不過(guò),其處于本發(fā)明的精神和范圍內(nèi),以包括其中線程分配基于不同類型的計(jì)算資源的線程使用的歷史的實(shí)施例。
      還要注意,在此處上述的本發(fā)明實(shí)施例中,基于指示出線程已使用了完全不同的線程組的線程歷史來(lái)選擇線程。不過(guò),在可替換方案中,如果本發(fā)明的計(jì)算機(jī)系統(tǒng)具有多個(gè)饑餓線程,則操作系統(tǒng)可以指引兩個(gè)(或甚至更多個(gè))饑餓線程運(yùn)行而不管潛在沖突。即,選擇饑餓線程來(lái)并行地運(yùn)行,即便它們各自的歷史指示出潛在的沖突。在一所述可替換方案中,如上所示比較所有饑餓線程的歷史,選擇具有最少數(shù)量的潛在沖突的線程來(lái)運(yùn)行。在另一可替換方案中,選擇具有數(shù)量少于某個(gè)閾值數(shù)量的潛在沖突的線程來(lái)運(yùn)行。
      作為重申,所選擇和描述的實(shí)施例是為了最好地解釋本發(fā)明的原理、實(shí)踐應(yīng)用,并使本領(lǐng)域普通技術(shù)人員能夠理解本發(fā)明。具有多種修改的多種其它實(shí)施例可適合于所預(yù)期的特定使用,但也可處于本發(fā)明的范圍內(nèi)。
      除了清楚明確說(shuō)明之外,權(quán)利要求并非旨在暗示動(dòng)作的任何特定順序。所包括的用于權(quán)利要求一部分的諸如a)、b)、c)等的標(biāo)號(hào)并非獨(dú)立地暗示任何特定順序,而是僅使得對(duì)這些部分的引用更方便。
      權(quán)利要求
      1.一種裝置,包括處理器,可操作用于并行地執(zhí)行各個(gè)指令線程,其中系統(tǒng)可操作用于訪問(wèn)共享的處理資源;以及電路,可操作用于與所述處理器通信,其中所述電路包括用于各個(gè)指令線程的存儲(chǔ)器;第一邏輯電路,可操作用于在用于各個(gè)指令線程的各個(gè)存儲(chǔ)器中生成和存儲(chǔ)處理資源的歷史項(xiàng),其中所述歷史項(xiàng)指示出用于該項(xiàng)的處理資源是否已被存儲(chǔ)器的指令線程中相應(yīng)的一個(gè)所使用;以及第二邏輯電路,可操作用于i)比較所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng),以及ii)如果所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則選擇所述第二指令線程用以執(zhí)行。
      2.如權(quán)利要求1所述的裝置,其中所述第一邏輯電路包括第一子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)是否使用歷史項(xiàng),其中所述第一子邏輯電路設(shè)置所述是否使用項(xiàng)以指示出由所述指令線程中對(duì)應(yīng)的一個(gè)對(duì)所述處理資源中對(duì)應(yīng)的一個(gè)的使用,并且響應(yīng)于所述相應(yīng)的指令線程超過(guò)所累計(jì)的所述相應(yīng)的處理資源的未使用的某個(gè)閾值,復(fù)位所述是否使用項(xiàng)。
      3.如權(quán)利要求1所述的裝置,其中所述第一邏輯電路包括第二子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)何時(shí)使用歷史項(xiàng),所述何時(shí)使用歷史項(xiàng)指示出所述各個(gè)處理資源何時(shí)被所述各個(gè)線程最后使用。
      4.如權(quán)利要求3所述的裝置,其中所述第二子邏輯電路包括周期計(jì)數(shù)器電路,所述周期計(jì)算器電路可操作用于響應(yīng)于用于處理器的局部總線的周期,控制對(duì)所述何時(shí)使用項(xiàng)的更新。
      5.如權(quán)利要求4所述的裝置,其中所述第二子邏輯電路包括復(fù)位邏輯電路,所述復(fù)位邏輯電路可操作用于響應(yīng)于線程訪問(wèn)外圍資源,用信號(hào)通知所述周期計(jì)數(shù)器電路來(lái)復(fù)位所述何時(shí)使用項(xiàng)。
      6.如權(quán)利要求5所述的裝置,其中所述第一邏輯電路包括第一子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)是否使用歷史項(xiàng),其中所述第一子邏輯電路設(shè)置所述是否使用項(xiàng)以指示出由所述指令線程中對(duì)應(yīng)的一個(gè)對(duì)所述處理資源中對(duì)應(yīng)的一個(gè)的使用,并且響應(yīng)于所述相應(yīng)的指令線程超過(guò)所累計(jì)的所述相應(yīng)的處理資源的未使用的某個(gè)閾值,復(fù)位所述是否使用項(xiàng)。
      7.如權(quán)利要求6所述的裝置,其中由所述第一子邏輯電路對(duì)所述是否使用歷史項(xiàng)的所述設(shè)置是響應(yīng)于來(lái)自所述復(fù)位邏輯電路的復(fù)位信號(hào)的。
      8.如權(quán)利要求3所述的裝置,其中所述第二子邏輯電路具有線程訪問(wèn)計(jì)數(shù)器邏輯電路和復(fù)位電路,所述線程訪問(wèn)計(jì)數(shù)器邏輯電路可操作用于i)響應(yīng)于所述復(fù)位電路用信號(hào)通知某個(gè)線程已訪問(wèn)外圍資源,將所述何時(shí)使用項(xiàng)初始化為第一預(yù)定值,以及ii)響應(yīng)于所述線程未訪問(wèn)所述外圍資源,減少所述何時(shí)使用項(xiàng)。
      9.如權(quán)利要求8所述的裝置,其中所述第一邏輯電路包括第一子邏輯電路,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)是否使用歷史項(xiàng),其中所述第一子邏輯電路設(shè)置所述是否使用項(xiàng)以指示出由所述指令線程中對(duì)應(yīng)的一個(gè)對(duì)所述處理資源中對(duì)應(yīng)的一個(gè)的使用,并且響應(yīng)于所述相應(yīng)的指令線程超過(guò)所累計(jì)的所述相應(yīng)的處理資源的未使用的某個(gè)閾值,復(fù)位所述是否使用項(xiàng)。
      10.如權(quán)利要求9所述的裝置,其中所述線程訪問(wèn)計(jì)數(shù)器電路可操作用于響應(yīng)于所述何時(shí)使用項(xiàng)被減少到第二預(yù)定值,用信號(hào)通知所述第一子邏輯來(lái)復(fù)位所述是否使用項(xiàng)。
      11.如權(quán)利要求1所述的裝置,其中所述處理資源包括外圍設(shè)備。
      12.一種裝置,包括處理器,可操作用于并行地執(zhí)行各個(gè)指令線程,其中系統(tǒng)包括共享的處理資源;以及電路,可操作用于與所述處理器通信,其中所述線程資源分配核包括用于各個(gè)指令線程的存儲(chǔ)器;第一邏輯,可操作用于在用于各個(gè)指令線程和處理資源的各個(gè)存儲(chǔ)器中生成和存儲(chǔ)歷史項(xiàng),其中所述歷史項(xiàng)指示出用于該項(xiàng)的處理資源是否已被存儲(chǔ)器的指令線程中相應(yīng)的一個(gè)所使用;以及第二邏輯,可操作用于i)比較所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng),以及ii)如果所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則選擇所述第二指令線程用以執(zhí)行,其中所述第一邏輯包括第一子邏輯,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)是否使用歷史項(xiàng),其中所述第一子邏輯設(shè)置所述是否使用項(xiàng)以指示出由所述指令線程中對(duì)應(yīng)的一個(gè)對(duì)所述處理資源中對(duì)應(yīng)的一個(gè)的使用,并且響應(yīng)于所述相應(yīng)的指令線程超過(guò)所累計(jì)的所述相應(yīng)的處理資源的未使用的某個(gè)閾值,復(fù)位所述是否使用項(xiàng),以及其中所述第一邏輯包括第二子邏輯,其可操作用于在存儲(chǔ)器中生成和存儲(chǔ)何時(shí)使用歷史項(xiàng),所述何時(shí)使用歷史項(xiàng)指示出所述各個(gè)處理資源何時(shí)被所述各個(gè)線程最后使用。
      13.一種多處理器系統(tǒng)中的方法,所述方法包括a)檢測(cè)由所述系統(tǒng)執(zhí)行的指令線程;b)在所述系統(tǒng)的第一存儲(chǔ)器中存儲(chǔ)線程項(xiàng),其中所述線程項(xiàng)指示出所執(zhí)行的指令線程;c)檢測(cè)由所述各個(gè)指令線程對(duì)處理資源的使用;d)在所述系統(tǒng)的第二存儲(chǔ)器中存儲(chǔ)用于所執(zhí)行的指令線程的歷史項(xiàng),其中所述歷史項(xiàng)指示出各個(gè)處理資源是否已被各個(gè)指令線程所使用;e)比較所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng);以及f)如果e)中的所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則選擇所述第二指令線程用以執(zhí)行。
      14.如權(quán)利要求13所述的方法,其中f)中的所述某種不同包括由所述第一線程使用的處理資源的歷史與由所述第二線程使用的處理資源的歷史完全不同。
      15.如權(quán)利要求13所述的方法,包括g)響應(yīng)于所累計(jì)的處理資源的使用和未使用,改變歷史項(xiàng)。
      16.如權(quán)利要求15所述的方法,其中g(shù))包括設(shè)置所述的處理資源的歷史項(xiàng)以指示出使用;以及響應(yīng)于所述歷史項(xiàng)的相應(yīng)指令線程超過(guò)所累計(jì)的所述處理資源的未使用的某個(gè)閾值,復(fù)位所述項(xiàng)。
      17.如權(quán)利要求13所述的方法,其中e)中的所述第一線程正在運(yùn)行,而所述系統(tǒng)的處理器已經(jīng)選擇所述第二線程作為與所述第一線程一起運(yùn)行的候選。
      18.如權(quán)利要求13所述的方法,其中e)中的所述系統(tǒng)處理器之一已選擇所述第一線程運(yùn)行,并且所述第二線程已經(jīng)在運(yùn)行。
      19.如權(quán)利要求13所述的方法,其中所述處理資源包括所述系統(tǒng)的外圍設(shè)備。
      20.如權(quán)利要求13所述的方法,其中所述處理資源包括所述系統(tǒng)的外圍設(shè)備,其中e)中的所述第一線程正在運(yùn)行,而所述系統(tǒng)的處理器已經(jīng)選擇所述第二線程作為與所述第一線程一起運(yùn)行的候選,其中f)中的所述某種不同包括由所述第一線程使用的處理資源的歷史與由所述第二線程使用的處理資源的歷史完全不同,并且其中所述方法包括g)響應(yīng)于所累計(jì)的處理資源的使用和未使用,改變歷史項(xiàng),包括設(shè)置所述的處理資源的歷史項(xiàng)以指示出使用;以及響應(yīng)于所述歷史項(xiàng)的相應(yīng)指令線程超過(guò)所累計(jì)的所述處理資源的未使用的某個(gè)閾值,復(fù)位所述項(xiàng)。
      全文摘要
      在系統(tǒng)的存儲(chǔ)器中存儲(chǔ)指示出所執(zhí)行的指令線程的線程項(xiàng)。由各個(gè)指令線程對(duì)處理資源的使用被檢測(cè),并且用于所述線程的歷史項(xiàng)被存儲(chǔ)在系統(tǒng)的存儲(chǔ)器中。所述歷史項(xiàng)指示出各個(gè)處理資源是否已被各個(gè)指令線程所使用。所述指令線程中的第一指令線程和第二指令線程的歷史項(xiàng)被比較。如果所述比較指示出由所述第一線程使用的處理資源的歷史相對(duì)于由所述第二線程使用的處理資源的歷史具有某種不同,則所述第二指令線程被選擇用以執(zhí)行。
      文檔編號(hào)G06F9/46GK1955920SQ200610137468
      公開日2007年5月2日 申請(qǐng)日期2006年10月27日 優(yōu)先權(quán)日2005年10月28日
      發(fā)明者A·J·庫(kù)爾謝內(nèi), G·J·曼, J·M·諾曼, S·B·斯坦斯基, F·A·坎普夫 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1