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

      在多線程處理器中的高速緩存器操作的制作方法

      文檔序號:10686990閱讀:236來源:國知局
      在多線程處理器中的高速緩存器操作的制作方法【專利摘要】描述了在多線程處理器中的高速緩存器操作。提供被稱為路啟用表的小存儲器結(jié)構(gòu),其存儲對n路組相聯(lián)高速緩存器的索引。路啟用表針對在n路組相聯(lián)高速緩存器中的每個條目包括一個條目,且在路啟用表中的每個條目被布置成存儲線程ID。在路啟用表中的條目中的線程ID是與被存儲在n路組相聯(lián)高速緩存器中的相應(yīng)的條目中的數(shù)據(jù)項相關(guān)的線程的ID。在從n路組相聯(lián)高速緩存器讀取由索引參數(shù)識別的條目之前,在高速緩存器中的路基于當(dāng)前線程ID和被存儲在路啟用表中的由同一索引參數(shù)識別的條目中的線程ID的比較而被選擇性地啟用?!緦@f明】在多線程處理器中的高速緩存器操作[0001]背景[0002]圖1是2路組相聯(lián)高速緩存器100的示意圖。在高速緩存器中的每個索引位置或行101(例如在圖1中所示的表示中的每行)包括兩個條目,在每個路102、103中有一個條目。路的每個條目包括數(shù)據(jù)字段104、106和高速緩存器標(biāo)記字段108、110。在高速緩存器100用于高速緩存來自較大的存儲器設(shè)備的值(即高速緩存器是數(shù)據(jù)高速緩存器)的場合,給定的存儲器位置可被映射到兩個可能的位置(即:在路O中的條目或在路I中的條目),其中索引常常相應(yīng)于存儲器位置的最低有效位且高速緩存器標(biāo)記(其被存儲在條目中)相應(yīng)于存儲器位置的最高有效位。當(dāng)將數(shù)據(jù)存儲在高速緩存器100中時,如果在所需索引處的條目之一是空的,則那個條目被使用,但如果兩個條目都被填充,則這兩個條目之一被重寫。例如“最近最少使用”(LRU)的置換算法可例如用于確定要重寫哪個條目。[0003]當(dāng)從這樣的高速緩存器100讀取數(shù)據(jù)時,來自高速緩存器的所有路的數(shù)據(jù)都可以被在同一時鐘周期中讀取,且然后高速緩存器標(biāo)記于是被檢查以確定哪個條目包含所需的數(shù)據(jù)項,且其它數(shù)據(jù)項被丟棄??蛇x地,(來自高速緩存器的所有路的)所有標(biāo)記可被在第一時鐘周期中讀取,且然后來自具有匹配標(biāo)記的條目的數(shù)據(jù)被在第二時鐘周期中讀取。[0004]下面所述的實(shí)施方式僅被通過示例的方式來提供并且不是對解決已知的高速緩存器布置的缺點(diǎn)中的任何或所有缺點(diǎn)的實(shí)施以及操作在多線程處理器中的高速緩存器的方法的限制。[0005]概述[0006]本概述被提供來以簡化的形式介紹一系列概念,其在下面在詳細(xì)描述中被進(jìn)一步描述。本概述不旨在識別所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用作在確定所要求保護(hù)的主題的范圍時的幫助。[0007]描述了在多線程處理器中的高速緩存器操作。提供被稱為路啟用表(wayenabletable)的小存儲器結(jié)構(gòu),其存儲到η路組相聯(lián)高速緩存器的索引。路啟用表針對在η路組相聯(lián)高速緩存器中的每個條目包括一個條目,且在路啟用表中的每個條目被布置成存儲線程ID。在路啟用表中的條目中的線程ID是與被存儲在η路組相聯(lián)高速緩存器中的相應(yīng)條目中的數(shù)據(jù)項相關(guān)的線程的ID。在從η路組相聯(lián)高速緩存器讀取由索引參數(shù)識別的條目之前,在高速緩存器中的路基于當(dāng)前線程ID和被存儲在路啟用表中的由同一索引參數(shù)識別的條目中的線程ID的比較而被選擇性地啟用。[0008]第一方面提供多線程處理器,其包括:組相聯(lián)高速緩存器,其包括被布置在多個路中的多個高速緩存條目,每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段;路啟用表,其包括多個路啟用表條目,每個路啟用表條目相應(yīng)于在組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,該線程與被存儲在相應(yīng)的高速緩存條目的數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);以及硬件邏輯,其被布置成至少部分地基于當(dāng)前線程ID和被存儲在由索引參數(shù)識別的路啟用表條目中的線程ID的比較來選擇性地啟用在組相聯(lián)高速緩存器中的路。[0009]第二方面提供訪問在多線程處理器中的組相聯(lián)高速緩存器的方法,組相聯(lián)高速緩存器包括被布置在多個路中的多個高速緩存條目,且每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段,該方法包括:訪問在路啟用表中的由索引參數(shù)識別的兩個或多于兩個路啟用表條目,每個路啟用表條目相應(yīng)于在組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,該線程與被存儲在相應(yīng)的高速緩存條目的數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);對于每個被訪問的路啟用表條目,將所存儲的線程ID與當(dāng)前線程ID進(jìn)行比較;以及響應(yīng)于所述比較識別出在當(dāng)前線程ID與在路啟用表條目中的所存儲的線程ID之間的匹配,啟用在包含相應(yīng)的高速緩存條目的組相聯(lián)高速緩存器中的路。[0010]第三方面提供在其上存儲有用于產(chǎn)生多線程處理器的計算機(jī)可讀程序代碼的計算機(jī)可讀存儲介質(zhì),多線程處理器包括:組相聯(lián)高速緩存器,其包括被布置在多個路中的多個高速緩存條目,每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段;路啟用表,其包括多個路啟用表條目,每個路啟用表條目相應(yīng)于在組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,該線程與被存儲在相應(yīng)的高速緩存條目的數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);以及硬件邏輯,其被布置成至少部分地基于當(dāng)前線程ID和被存儲在由索引參數(shù)識別的路啟用表條目中的線程ID的比較來選擇性地啟用在組相聯(lián)高速緩存器中的路。[0011]第四方面提供其上編碼有用于產(chǎn)生被配置成執(zhí)行訪問在多線程處理器中的組相聯(lián)高速緩存器的方法的處理器的計算機(jī)可讀程序代碼的計算機(jī)可讀存儲介質(zhì),組相聯(lián)高速緩存器包括被布置在多個路中的多個高速緩存條目,且每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段,該方法包括:訪問在路啟用表中的由索引參數(shù)識別的兩個或多于兩個路啟用表條目,每個路啟用表條目相應(yīng)于在組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,該線程與被存儲在相應(yīng)的高速緩存條目的數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);對于每個所訪問的路啟用表條目,將所存儲的線程ID與當(dāng)前線程ID進(jìn)行比較;以及響應(yīng)于所述比較識別出在當(dāng)前線程ID與在路啟用表條目中的所存儲的線程ID之間的匹配,啟用在包含相應(yīng)的高速緩存條目的組相聯(lián)高速緩存器中的路。[0012]優(yōu)選的特征可被酌情組合,如對技術(shù)人員將明顯的,并可與本發(fā)明的任何方面進(jìn)行組合。[0013]附圖簡述[0014]將參考下面的附圖通過示例的方式來描述本發(fā)明的實(shí)施方式,在附圖中:[0015]圖1是2路組相聯(lián)高速緩存器的示意圖;[0016]圖2是改進(jìn)的高速緩存布置的示意圖;[0017]圖3是圖2中所示的改進(jìn)的高速緩存布置的操作的示例方法的流程圖;[0018]圖4示出示例多線程無序處理器的示意圖;[0019]圖5示出在多線程處理器內(nèi)的基本管線的示意圖;[0020]圖6示出對指令高速緩存器使用選擇性路啟用的多線程處理器的操作;[0021]圖7示出包括跳轉(zhuǎn)寄存器高速緩存器的多線程處理器的操作;[0022]圖8示出對跳轉(zhuǎn)寄存器高速緩存器使用選擇性路啟用的多線程處理器的操作;[0023]圖9是示出圖8中所示的方法的更詳細(xì)的示例的示意圖;以及[0024]圖10示出對指令高速緩存器和跳轉(zhuǎn)寄存器高速緩存器兩者使用選擇性路啟用的多線程處理器的操作。[0025]共同的參考數(shù)字被在全部附圖中使用以指示相似的特征。[0026]詳細(xì)描述[0027]下面僅通過示例的方式來描述本發(fā)明的實(shí)施方式。這些示例代表【申請人】當(dāng)前已知的實(shí)施本發(fā)明的最佳方式,盡管它們不是其中本發(fā)明可以被實(shí)現(xiàn)的僅有的方式。該描述闡述示例的功能和用于構(gòu)造和操作示例的步驟的順序。然而,相同或等效的功能和順序可由不同的示例完成。[0028]對于多線程處理器,被存儲在η路組相聯(lián)高速緩存器(例如跳轉(zhuǎn)寄存器高速緩存器或指令高速緩存器)中的數(shù)據(jù)項可以特定于特定的線程,且由于用于確定新數(shù)據(jù)項被存儲在高速緩存器中哪里的置換算法,在特定的路和特定的線程之間可以沒有固定映射。因此,在高速緩存器中的每個條目(即在高速緩存器中的每個路中的每個條目)包括線程標(biāo)識符(或線程ID)。線程ID可被合并為標(biāo)記的部分或可被在單獨(dú)的字段中提供。在高速緩存條目中的線程ID是數(shù)據(jù)所屬的線程的標(biāo)識符,即它是請求/需要數(shù)據(jù)項的線程(例如當(dāng)高速緩存條目被寫入時被提取的線程)。當(dāng)從包括很多個路的高速緩存器(例如η路組相聯(lián)高速緩存器)讀取時,來自高速緩存器的所有路的條目被提取,且然后標(biāo)記和線程ID被檢查以確定哪個條目包含所需的數(shù)據(jù)項(其中如上所述,在一些實(shí)現(xiàn)中,線程ID可被包含在標(biāo)記字段內(nèi)而不是作為單獨(dú)的字段)。這對于基于RAM的高速緩存器(即被實(shí)現(xiàn)為RAM的高速緩沖器)是功率低效的,因為每當(dāng)數(shù)據(jù)被讀取時必須對每個路進(jìn)行上電,即使路中的一個或多個路可包括用于另一線程的數(shù)據(jù)(且因此不能包含相關(guān)數(shù)據(jù))。此外,它是數(shù)據(jù)低效的,因為用于另一線程的不相關(guān)的數(shù)據(jù)被取回。[0029]在本文描述了多線程處理器的改進(jìn)的高速緩存布置和操作在多線程處理器中的高速緩存器的方法,其涉及選擇性地啟用路且其比基于RAM的高速緩存器更功率有效以及更數(shù)據(jù)有效。提供了小存儲器(例如在寄存器中),其為高速緩存器的每個路的每個條目存儲以線程ID的形式的高速緩存器的索引并且其被以與高速緩存器本身相同的方式編索引。這可被稱為“路啟用表”。在訪問高速緩存器之前,當(dāng)前線程(其條目被提取)與在路啟用表中的每個路的每個相應(yīng)的條目(即相應(yīng)于高速緩存器中的索引位置或行的那些條目)的線程ID進(jìn)行比較。這識別包含用于那個特定線程的相關(guān)數(shù)據(jù)的在高速緩存器中的路(即存儲匹配被提取的當(dāng)前線程的線程ID的那些路)和可以然后被選擇性地啟用/禁用,使得不相關(guān)的路(即,其中線程ID不匹配被提取的當(dāng)前線程的那些路)不被上電以被讀取的在高速緩存器中的路。這節(jié)省電力且還保證絕對不相關(guān)的數(shù)據(jù)不被讀取(可以有被讀取的某不相關(guān)的數(shù)據(jù),因為它具有匹配的線程ID但不具有匹配的標(biāo)記)。[0030]用于對高速緩存器和小存儲器(即主高速緩存器和路啟用表兩者)兩者編索引并識別高速緩存行(或索引位置)的參數(shù)被稱為“索引”或“索引參數(shù)”。如在下面更詳細(xì)描述的,當(dāng)實(shí)現(xiàn)本文所述的布置和方法時,高速緩存器可以不被改變或高速緩存器可被修改,使得它不再包含每個條目的線程ID(作為高速緩存器標(biāo)記的部分或作為單獨(dú)的字段)。[0031]圖2是改進(jìn)的尚速緩存布置200的不意圖,而圖3是圖2中所不的改進(jìn)的尚速緩存布置的操作的示例方法的流程圖。改進(jìn)的高速緩存布置200包括高速緩存器202,其包括η路(其中在所示的示例中,η=4)且其中數(shù)據(jù)項(其可以是被存儲在存儲器中的指令、目標(biāo)地址、數(shù)據(jù)項的副本等)被存儲。在高速緩存器202中的每個高速緩存行或索引位置204包括在每個路206中的一個條目205,且每個條目205包括數(shù)據(jù)字段和標(biāo)記字段。根據(jù)高速緩存器的類型,數(shù)據(jù)字段可以例如用于存儲指令(例如對于指令高速緩存器)、目標(biāo)預(yù)測程序計數(shù)器(PC,例如對于跳轉(zhuǎn)寄存器高速緩存器)、來自存儲器的數(shù)據(jù)項(例如對于數(shù)據(jù)高速緩存器)等。使用索引參數(shù)來識別(或引用)高速緩存行或索引位置204,索引參數(shù)可例如相應(yīng)于數(shù)據(jù)高速緩存器的存儲器位置的位(例如最低有效位)的(真)子集或指令高速緩存器或跳轉(zhuǎn)寄存器高速緩存器的程序計數(shù)器(PC)的位(例如PC的最低有效位)的(真)子集。[0032]改進(jìn)的高速緩存布置200還包括路啟用表210,其對高速緩存器中的每個條目205包括一個條目212(即在高速緩存器202和路啟用表210兩者中有相同數(shù)量的條目),使得在高速緩存器202中的條目205和在路啟用表210中的條目212之間有1:1關(guān)系。在圖2中所示的示例中,高速緩存器202包括12個條目(三個高速緩存行,每行包括4個條目如n+4),且路啟用表210也包括12個條目。在路啟用表210中的每個條目212包括線程ID字段。[0033]同一索引參數(shù)用于識別(或引用)在高速緩存器202中的高速緩存行204和在路啟用表202中的相應(yīng)條目,即對于指令或跳轉(zhuǎn)寄存器高速緩存器,高速緩存器(即指令或跳轉(zhuǎn)寄存器高速緩存器)和路啟用表兩者由包括程序計數(shù)器的位(例如最低有效位)的子集的高速緩存參數(shù)來編索引。例如,如果在高速緩存器202中的第一高速緩存行被使用索引參數(shù)A來識別出,則在路啟用表中的相應(yīng)條目也被使用索引參數(shù)A來識別出。[0034]改進(jìn)的高速緩存布置200此外包括路啟用硬件邏輯214,其被布置成選擇性地啟用/禁用在高速緩存器202中的路206中的一個或多個,使得當(dāng)高速緩存行隨后被從高速緩存器讀取時,被禁用的(或未啟用的)路不被上電以被讀取。[0035]改進(jìn)的高速緩存布置200還可包括被布置成分析條目的標(biāo)記的路選擇硬件邏輯216,條目的標(biāo)記已經(jīng)被讀取以確定哪個條目包括所需的數(shù)據(jù)項(例如以將高速緩存器標(biāo)記與當(dāng)前PC進(jìn)行比較)。與也包括路選擇硬件的已知的系統(tǒng)比較,在改進(jìn)的高速緩存布置200中的路選擇硬件邏輯216可丟棄較少的數(shù)據(jù),因為來自被禁用的路的數(shù)據(jù)將不被讀取。[0036]如圖3中所示,當(dāng)從高速緩存器202提取數(shù)據(jù)項(其可以是指令、目標(biāo)預(yù)測PC、來自存儲器的項等)用于由線程(被稱為“當(dāng)前線程”并由“當(dāng)前線程ID”301識別)使用時,在路啟用表210中的多個條目212被使用索引參數(shù)304來訪問(塊302)。被訪問(在塊302中)的多個高速緩存條目212相應(yīng)于在由索引參數(shù)304引用的高速緩存器202中的高速緩存行中的條目。例如,如果索引參數(shù)304引用在高速緩存器202中的第二高速緩存行(其在圖3中被加上陰影),則在路啟用表210中的四個加有陰影的條目被訪問(在塊302中)。[0037]如上所述,在路啟用表210中的每個被訪問的條目包括線程ID。這些所存儲的線程ID306(在塊302中被訪問)然后(在路啟用硬件邏輯214中)與當(dāng)前線程ID301進(jìn)行比較(塊308),即與其數(shù)據(jù)被提取的線程的線程ID進(jìn)行比較。如果所存儲的線程ID匹配當(dāng)前線程ID(在塊308中的“是”),則包括在高速緩存器202中的相應(yīng)條目的路206被啟用(塊310),而如果所存儲的線程ID不匹配當(dāng)前線程ID(在塊308中的“否”),則包括在高速緩存器202中的相應(yīng)條目的路206被禁用/不被啟用(塊312)。針對高速緩存器202中的每個路,比較(在塊308中)因此被執(zhí)行一次(例如在高速緩存器是η路組相聯(lián)高速緩存器的情況下是η次),且根據(jù)比較(在塊308中)的結(jié)果,路被啟用(在塊310中)或禁用/不被啟用(在塊312中)。[0038]例如,如果在路啟用表210中的四個加有陰影的條目包括線程ID0、1、0、0且當(dāng)前線程ID是I,則只有在高速緩存器202中的第二路將被啟用(在塊310中)且其它三個路將被禁用/不被啟用(在塊312中)。然而,如果當(dāng)前線程ID是0,則四個路中的三個路(第一路、第三路和第四路)將被啟用而第二路將被禁用/不被啟用。[0039]在基于線程ID(即基于存儲在路啟用表210中的相應(yīng)條目中的線程ID和當(dāng)前線程ID301的比較)選擇性地啟用/禁用在高速緩存器202中的路206(在塊308-312中)后,隨后的高速緩存讀取操作(塊314)將從在高速緩存器中的被啟用的那些路206只讀取在由索引參數(shù)304引用的高速緩存行中的條目?;貋韰⒖几绲氖纠绻?dāng)前線程ID是I,則單個條目將被從第二路被讀取,而如果當(dāng)前線程ID是O,則三個條目將被從第一路、第三路和第四路讀取。[0040]在從高速緩存器讀取一個或多個條目(在塊314中)后,路選擇邏輯216讀取在那些條目中的標(biāo)記以確定條目是否包含需要的數(shù)據(jù),且在標(biāo)記不匹配的情況下,條目被丟棄(如在當(dāng)前高速緩存實(shí)現(xiàn)中)。[0041]在高速緩存缺失的情況下(即在沒有一個標(biāo)記匹配的場合),所需的數(shù)據(jù)被從其它地方得到(例如被從存儲器讀取或被計算)且這個數(shù)據(jù)可被寫入到高速緩存器。每當(dāng)高速緩存器被更新(塊316)時,例如作為高速緩存缺失的結(jié)果或由于任何其它原因,路啟用表也被更新(塊318)以識別與高速緩存更新相關(guān)的線程(例如其數(shù)據(jù)項被提取的線程)。特別是,在高速緩存器中的條目被更新(在塊316中)的場合,在路啟用表中的相應(yīng)條目也被更新(在塊318中)。[0042]雖然圖3和上面的描述提及啟用和禁用路,但將認(rèn)識到,在一些示例中,路可默認(rèn)被啟用并可作為比較的結(jié)果而被禁用(在塊308中),或路可默認(rèn)被禁用并可作為比較的結(jié)果而被啟用(在塊308中)。此外,術(shù)語“被禁用”和“不被啟用”在本文可互換地使用。[0043]通過使用在圖2中所示的高速緩存布置200和如圖3中所示的方法,當(dāng)高速緩存行被讀取時,在高速緩存器中的包含錯誤線程(即對于不匹配當(dāng)前線程ID301的線程)的條目的那些路不被上電。這減少高速緩存器的功耗。當(dāng)在路啟用表中的每個條目包括比高速緩存器中的條目少得多的位時,路啟用表不占用在處理器中的很多物理區(qū)域且在各種示例中可在寄存器而不是RAM中實(shí)現(xiàn)。在寄存器用于實(shí)現(xiàn)路啟用表210的場合,沒有額外的功率用于從它讀取條目(與從RAM讀取數(shù)據(jù)不同)。[0044]在圖2中的高速緩存器202可以例如是在多線程處理器內(nèi)的指令高速緩存器或跳轉(zhuǎn)寄存器高速緩存器(JRC);然而,路選擇的方法也可用于在多線程處理器中的其它類型的高速緩存器(例如用于數(shù)據(jù)高速緩存器),其中多線程處理器可有序或無序地操作。[0045]圖4示出示例多線程無序處理器400的示意圖,其中本文所述的選擇性路啟用(例如,如在圖3中的)和改進(jìn)的高速緩存布置(例如,如在圖2中的)的方法可被實(shí)現(xiàn)。雖然圖4示出多線程無序處理器,但是方法還可被在不無序地處理指令的多線程處理器中(即在多線程有序處理器中)實(shí)現(xiàn)。在這個示例中,多線程處理器400是兩線程處理器;然而,方法還可適用于具有不同數(shù)量的線程(例如四個或多于四個線程)的多線程處理器。[0046]每個線程402和404包括被配置成從如通過程序計數(shù)器(PC)所指示的程序(以程序順序)提取指令的提取級406或408和被布置成解釋指令并執(zhí)行寄存器重命名的解碼和重命名級410或412。如本領(lǐng)域中的技術(shù)人員已知的,寄存器重命名通過移除某些相關(guān)性(例如讀后寫(WAR)相關(guān)性)來使更多的指令能夠被無序地執(zhí)行。如本文所述的改進(jìn)的高速緩存布置和涉及選擇性地啟用在高速緩存器中的路的訪問高速緩存器的方法可被在提取級406或408內(nèi)實(shí)現(xiàn)(例如,如下面更詳細(xì)描述的)。[0047]在指令經(jīng)過重命名級410或412之后,它(a)被提供到多個無序管線418用于執(zhí)行;以及(b)被插入重排序緩沖器414或416(R0B)內(nèi)。重排序緩沖器414或416是使指令能夠被無序地執(zhí)行但被有序地提交的緩沖器。重排序緩沖器414或416保存被以程序順序插入它內(nèi)的指令,但在R0B414或416內(nèi)的指令可由無序管線418失序地執(zhí)行。指令在它們已經(jīng)由無序管線418執(zhí)行之后被以程序順序從重排序緩沖器414或416輸出到提交級420或422。提交級420或422然后向寄存器/存儲器提交指令的結(jié)果。[0048]每個線程402和404還包括分支預(yù)測器424或425,其被配置成預(yù)測在被已知引起可能的流變化的指令(例如分支指令)的情況下程序流將采用哪個方向。分支預(yù)測是有用的,因為它使指令能夠在分支指令的結(jié)果被獲知之前由處理器400推測地執(zhí)行。每個分支預(yù)測器424或425可與相應(yīng)的提取級406或408、解碼和重命名級410或412和/或無序管線418進(jìn)行通信。例如,提取級406和408可使用來自相應(yīng)的分支預(yù)測器424或425的信息來確定接著提取哪個指令;解碼和重命名級410和412可向分支預(yù)測器424或425提供指示哪些指令是分支指令的信息(在其它情況下,指令可被在提取級406或408中解碼);以及無序管線418可以給分支預(yù)測器424和425提供指示對程序計數(shù)器的更新的信息。[0049]如圖4中所示,無序管線418可包括多個功能(或執(zhí)行)單元430a、430b或430c。每個功能單元430a、430b和430c負(fù)責(zé)執(zhí)行指令,并可包括一個或多個功能單元管線。功能單元430a、430b和430c可被配置成執(zhí)行特定類型的指令。例如,一個或多個功能單元430a、430b和430c可以是加載/儲存單元、整數(shù)單元、浮點(diǎn)單元(FPU)、數(shù)字信號處理(DSP)/單指令多數(shù)據(jù)(SMD)單元或乘積累加(MAC)單元。加載/儲存單元執(zhí)行加載和儲存存儲器指令,整數(shù)單元執(zhí)行整數(shù)指令,F(xiàn)PU執(zhí)行浮點(diǎn)指令,DSP/SIMD單元具有同時在多個數(shù)據(jù)點(diǎn)上執(zhí)行相同操作的多個處理元件,以及MAC單元計算兩個數(shù)字的乘積并將該乘積加到累加器。功能單元和其中的管線可具有不同的長度和/或復(fù)雜性。例如,F(xiàn)PU管線一般比整數(shù)執(zhí)行管線長,因為它通常執(zhí)行更復(fù)雜的操作。[0050]多線程處理器400還可包括不同于圖4中所示的那些元件(例如高速緩存器、存儲器、寄存器文件等)的功能元件。將認(rèn)識到,其它處理器可能不包括在圖4中示出的所有功能元件(即在圖4中示出的功能元件中的一個或多個功能元件可被省略,例如分支預(yù)測器424、425可被省略)。[0051]多線程處理器400可包括在提取級406或408內(nèi)的跳轉(zhuǎn)寄存器高速緩存器(JRC或JR高速緩存器)和/或指令高速緩存器(I高速緩存器)。指令高速緩存器用于加速可執(zhí)行指令提取,即:使得線程不必停止等著指令被從主存儲器(其訪問起來比I高速緩存器更慢)提取為止。JR高速緩存器是實(shí)現(xiàn)基于寄存器的跳轉(zhuǎn)指令的目標(biāo)地址的預(yù)測的結(jié)構(gòu),使得提取級(或提取單元)可推測地提取,同時執(zhí)行單元(即功能單元430a-430c)從寄存器取回實(shí)際目標(biāo)地址并發(fā)送重定向通知。I高速緩存器和JR高速緩存器兩者一般被使用程序計數(shù)器(PC)來編索引;然而,在PC中的位的不同子集可用于對I高速緩存器和JR高速緩存器編索引。[0052]可參考圖5來描述在不使用JRC或選擇性路啟用的情況下的多線程處理器(例如圖4中所示的處理器400)的操作。圖5示出在多線程處理器內(nèi)的基本管線的示意圖,多線程處理器包括提取單元(或級)502和執(zhí)行單元504ο提取單元502包括指令高速緩存器,而執(zhí)行單元504包括多個通用寄存器506連同用于計算跳轉(zhuǎn)指令的目標(biāo)地址的硬件邏輯508。[0053]如圖5中所示,提取單元502選擇線程(使用硬件邏輯510)和要為選擇的線程提取的指令的程序計數(shù)器(使用硬件邏輯512)。如上所述,使用包括PC的最低有效位的索引參數(shù)和使用所選擇的PC(使用邏輯512)來訪問指令高速緩存器,一個條目被從由PC識別的高速緩存行中的每個路讀取。這些條目中的每個包括標(biāo)記字段和數(shù)據(jù)字段,且在圖5所示的示例中,有4個路且所以四個數(shù)據(jù)字段514和四個標(biāo)記字段516被讀取。這要求在指令高速緩存器中的所有路被上電。在多線程處理器中的標(biāo)記字段可包括PC的最高有效位和線程ID,或線程ID可被存儲在也被讀取的單獨(dú)的字段中。[0054]路選擇硬件邏輯518然后將選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))進(jìn)行比較。如果在選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))之間存在匹配,則相應(yīng)的數(shù)據(jù)字段514(即:與匹配的標(biāo)記字段516來自相同的高速緩存條目的數(shù)據(jù)字段514)包含所需的指令。此指令524連同選擇的線程ID520和選擇的PC522(箭頭528)—起被轉(zhuǎn)發(fā)到執(zhí)行單元(箭頭526)。[0055]在指令524是跳轉(zhuǎn)指令(如在部分解碼塊527中識別的)的場合,執(zhí)行單元504使用硬件邏輯508從相應(yīng)的通用寄存器506取回目標(biāo)地址(即目標(biāo)PC)并將包含目標(biāo)PC的重定向通知(箭頭530)發(fā)送到提取單元502。[0056]與圖5相比,圖6示出對指令高速緩存器使用選擇性路啟用的多線程處理器(例如圖4中所示的處理器400)的操作。在圖6中,提取單元602此外包括路啟用表604和選擇性路啟用硬件邏輯606。[0057]如圖6中所示,提取單元602選擇線程(使用硬件邏輯510)和要為選擇的線程提取的指令的程序計數(shù)器(使用硬件邏輯512)。使用包括PC的最低有效位的索引參數(shù)來訪問路啟用表604。使用選擇的PC522(其被在邏輯512中選擇),從路啟用表604讀取η個條目,其中被讀取的η個條目相應(yīng)于在使用同一索引參數(shù)識別的指令高速緩存器中的高速緩存行中的η個條目(在η個路的每個中有一個條目)。從路啟用表604讀取的這些η個條目中的每個包括線程ID字段,且在圖6中所示的示例中,有4個路(η=4)且所以四個線程ID字段被讀取。[0058]如上面參考圖2和3所述的,路啟用硬件邏輯將當(dāng)前線程ID(或線程號)520(如在邏輯510中選擇的)與在被從路啟用表604讀取的η個條目(其中這些條目中的一些可包含線程ID,而一些可以是空的)的每個中的線程ID進(jìn)行比較,且在存在匹配的情況下,在指令高速緩存器中的相應(yīng)路被啟用。在不存在匹配的情況下,在指令高速緩存器中的相應(yīng)路不被啟用/被禁用。如上所述,短語“相應(yīng)路”指的是包含在指令高速緩存器中的相應(yīng)于在路啟用表中的特定條目的條目的路(其中在路啟用表中的條目和指令高速緩存器本身的條目之間存在1:1關(guān)系)。[0059]然后使用與用于訪問路啟用表604相同的索引參數(shù)來訪問指令高速緩存器,且可從指令高速緩存器讀取一個或多個條目。如上所述,這些條目中的每個包括標(biāo)記字段和數(shù)據(jù)字段,但與圖5中所示的示例不同,即使仍然有4個路,不是所有這些路都可被啟用(作為基于被存儲在路啟用表604中的線程ID的路啟用邏輯的行動的結(jié)果),且所以少于4個條目(和所以少于四個數(shù)據(jù)字段514和少于四個標(biāo)記字段516)可被讀取。將認(rèn)識到,如果在從I路啟用表604讀取的η個條目中的所有線程ID都匹配當(dāng)前線程ID520,則4個條目將被從指令高速緩存器讀取;然而在多線程處理器中,這不太可能經(jīng)常發(fā)生,因為通常在線程之間將有近似相等的分布。[0060]路選擇硬件邏輯618然后將選擇的PC522與被訪問的標(biāo)記字段516進(jìn)行比較(與在圖5中的不同,不需要執(zhí)行線程ID的比較)。如果在選擇的PC522與被訪問的標(biāo)記字段516之間存在匹配,則相應(yīng)的數(shù)據(jù)字段514(即:與匹配的標(biāo)記字段516來自相同的高速緩存條目的數(shù)據(jù)字段514)包含所需的指令。如在圖5中,這個指令連同選擇的線程ID520和選擇的PC522(箭頭528)—起被轉(zhuǎn)發(fā)到執(zhí)行單元。[0061]如上所述,在高速緩存缺失的情況下(S卩:在沒有一個標(biāo)記匹配的場合),所需的數(shù)據(jù)(即包含所需指令的數(shù)據(jù)字段)被從其它地方得到(例如被從存儲器讀取或被計算)且這個數(shù)據(jù)可被寫入到高速緩存器(箭頭620),且在路啟用表中的相應(yīng)條目也被更新(箭頭622)ο[0062]在指令524是基于寄存器的跳轉(zhuǎn)指令的場合,執(zhí)行單元504使用硬件邏輯508從相應(yīng)的通用寄存器取回目標(biāo)地址(即目標(biāo)PC)并將包含目標(biāo)PC的重定向通知發(fā)送到提取單元602。[0063]圖7示出多線程處理器(例如圖4中所示的處理器400)的操作,其是對圖5中所示的處理器的進(jìn)一步變形。在圖7中所示的示例中,處理器包括跳轉(zhuǎn)寄存器高速緩存器,但像圖5一樣對指令高速緩存器或?qū)μD(zhuǎn)寄存器高速緩存器不使用選擇性路啟用。[0064]如圖7中所示,提取單元702選擇線程(使用硬件邏輯510)和要為選擇的線程提取的指令的程序計數(shù)器(使用硬件邏輯512)。如上所述,使用包括PC的最低有效位的索引參數(shù)和使用所選擇的PC(使用邏輯512)來訪問指令高速緩存器,從在由PC識別的高速緩存行中的每個路讀取一個條目。這些條目中的每個包括標(biāo)記字段和數(shù)據(jù)字段,且在圖7中所示的示例中,有4個路且所以四個數(shù)據(jù)字段514和四個標(biāo)記字段516被讀取。這要求在指令高速緩存器中的所有路被上電。在多線程處理器中的標(biāo)記字段可包括PC的最高有效位和線程ID,或線程ID可被存儲在也被讀取的單獨(dú)的字段中。[0065]路選擇硬件邏輯518然后將選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))進(jìn)行比較。如果在選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))之間存在匹配,則相應(yīng)的數(shù)據(jù)字段514(即:與匹配的標(biāo)記字段516來自相同的高速緩存條目的數(shù)據(jù)字段514)包含所需的指令。此指令524連同選擇的線程ID520和選擇的PC522(箭頭528)—起被轉(zhuǎn)發(fā)到執(zhí)行單元704(箭頭526)。[0066]與訪問指令高速緩存器并行地,還使用索引參數(shù)(其可以不同于用于訪問指令高速緩存器的索引參數(shù))來訪問JRC,且從在由索引參數(shù)(其可以是PC的位的子集)識別的JRC內(nèi)的高速緩存行中的每個路來讀取一個條目。這些條目中的每個包括標(biāo)記字段和數(shù)據(jù)字段,且在圖7中所示的示例中,有4個路且所以四個數(shù)據(jù)字段714(每個被布置成存儲所預(yù)測的目標(biāo)PC)和四個標(biāo)記字段716被讀取。這要求在JRC中的所有路被上電。在多線程處理器的JRC中的標(biāo)記字段可包括PC的最高有效位和線程ID,或線程ID可被存儲在也被讀取的單獨(dú)的字段中。[0067]JRC路選擇硬件邏輯718然后將選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段716(和額外的線程ID字段,其中這不被包括在標(biāo)記字段716內(nèi))進(jìn)行比較。如果在選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段716(和額外的線程ID字段,其中這不被包括在標(biāo)記字段716內(nèi))之間存在匹配,則相應(yīng)的數(shù)據(jù)字段714(即:與匹配的標(biāo)記字段716來自相同的JRC條目的數(shù)據(jù)字段714)包含所需的所預(yù)測的目標(biāo)PC。[0068]在指令524是基于寄存器的跳轉(zhuǎn)指令(如在部分解碼硬件邏輯720中確定的)的場合,這被指示給JRC路選擇硬件邏輯718(箭頭722)且這觸發(fā)JRC路選擇硬件邏輯718以將所預(yù)測的目標(biāo)PC發(fā)送到程序計數(shù)器選擇邏輯512(箭頭724),使得在所預(yù)測的目標(biāo)PC的指令可被提取。所預(yù)測的目標(biāo)PC還被轉(zhuǎn)發(fā)到執(zhí)行單元704(箭頭726)并被存儲(在寄存器728中)。[0069]如在圖5中的,執(zhí)行單元704仍然使用硬件邏輯508計算目標(biāo)地址(即目標(biāo)PC);然而,它在計算出的目標(biāo)地址不匹配(如存儲在寄存器728中的)所預(yù)測的目標(biāo)PC的情況下只將包含計算出的目標(biāo)PC的重定向通知(箭頭730)發(fā)送到提取單元702。在這樣的情況下,計算出的目標(biāo)地址用于提取正確的指令(在硬件邏輯512中)和更新JRC(箭頭732)兩者。[0070]圖7的上面的描述假設(shè)在JRC中的高速緩存命中(即在JRC中有匹配的條目)。如果沒有匹配的條目由JRC路選擇硬件邏輯718找到,則處理器如上面關(guān)于圖5所述的那樣操作且必須等待直到執(zhí)行單元計算出目標(biāo)PC為止,且這然后被存儲在JRC中用于未來使用。將認(rèn)識到,最初JRC將是空的(S卩:將沒有被存儲在JRC中的所預(yù)測的目標(biāo)PC),且隨著JRC變得更多地被填充有所預(yù)測的目標(biāo)PC,在JRC中的高速緩存命中的數(shù)量將增加。[0071]圖8示出多線程處理器(例如圖4中所示的處理器400)的操作,其是對圖7中所示的處理器的變形(因為處理器包括跳轉(zhuǎn)寄存器高速緩存器);然而,在圖8中,處理器對跳轉(zhuǎn)寄存器高速緩存器(但不對指令高速緩存器)使用選擇性路啟用。操作因此類似于上面關(guān)于圖7所示的操作;然而,JRC被使用的路是不同的。[0072]如圖8中所示,提取單元802選擇線程(使用硬件邏輯510)和要為選擇的線程提取的指令的程序計數(shù)器(使用硬件邏輯512)。如上所述,使用包括PC的最低有效位的第一索引參數(shù)和使用所選擇的PC(使用邏輯512)來訪問指令高速緩存器,從由PC識別的高速緩存行中的每個路來讀取一個條目。路選擇硬件邏輯518然后將選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))進(jìn)行比較。如果在選擇的線程ID520和選擇的PC522與被訪問的標(biāo)記字段516(和額外的線程ID字段,其中這不被包括在標(biāo)記字段516內(nèi))之間存在匹配,則相應(yīng)的數(shù)據(jù)字段514(即:與匹配的標(biāo)記字段516來自相同的高速緩存條目的數(shù)據(jù)字段514)包含所需的指令。此指令524連同選擇的線程ID520和選擇的PC522(箭頭528)—起被轉(zhuǎn)發(fā)到執(zhí)行單元804(箭頭526)。[0073]與訪問指令高速緩存器并行地,使用第二索引參數(shù)(其可以與第一索引參數(shù)相同或不同)來訪問JRC的路啟用表805ο使用選擇的PC522(其在邏輯512中被選擇),從路啟用表805讀取η個條目,其中被讀取的η個條目相應(yīng)于在使用第二索引參數(shù)識別的JRC中的高速緩存行中的η個條目(在η個路的每個中有一個條目)。從路啟用表805讀取的這些η個條目中的每個包括線程ID字段,且在圖8中所示的示例中,有4個路(η=4)且所以四個線程ID字段被讀取。[0074]如上面關(guān)于圖2和3所述的,路啟用硬件邏輯將當(dāng)前線程ID(或線程號)520(如在邏輯510中選擇的)與在被從路啟用表805讀取的η個條目中的每個中的線程ID(其中這些條目中的一些可包含線程ID而一些可以是空的)進(jìn)行比較,且在存在匹配的場合,在JRC中的相應(yīng)的路被啟用。在沒有匹配的場合,在指令高速緩存器中的相應(yīng)的路不被啟用/被禁用。如上所述,短語“相應(yīng)的路”指的是包含在JRC中的相應(yīng)于在路啟用表805中的特定條目的條目的路(其中在路啟用表中的條目和JRC本身中的條目之間存在1:1關(guān)系)。[0075]然后使用第二索引參數(shù)來訪問JRC,且可從JRC讀取一個或多個條目。如上所述,這些條目中的每個包括標(biāo)記字段和數(shù)據(jù)字段,但與圖7中所示的示例不同,即使仍然有4個路,不是所有這些路都可被啟用(作為路啟用邏輯的行動的結(jié)果),且所以少于4個條目(和所以少于四個數(shù)據(jù)字段714和少于四個標(biāo)記字段716)可被讀取。將認(rèn)識到,如果在被從路啟用表805讀取的η個條目中的所有線程ID都匹配當(dāng)前線程ID520,則4個條目將被從指令高速緩存器讀取;然而在多線程處理器中,這不太可能經(jīng)常發(fā)生,因為通常在線程之間將有近似相等的分布。[0076]JRC路選擇硬件邏輯818然后將選擇的PC522與被訪問的標(biāo)記字段716進(jìn)行比較。如果在選擇的PC522與被訪問的標(biāo)記字段716之間存在匹配,則相應(yīng)的數(shù)據(jù)字段714(即與匹配的標(biāo)記字段716來自相同的JRC條目的數(shù)據(jù)字段714)包含所需的預(yù)測的目標(biāo)PC。[0077]在指令524是基于寄存器的跳轉(zhuǎn)指令(如在部分解碼硬件邏輯720中確定的)的場合,這被指示給JRC路選擇硬件邏輯718(箭頭722)且這觸發(fā)JRC路選擇硬件邏輯718以將所預(yù)測的目標(biāo)PC發(fā)送到程序計數(shù)器選擇邏輯512(箭頭724),使得在所預(yù)測的目標(biāo)PC的指令可被提取。所預(yù)測的目標(biāo)PC還被轉(zhuǎn)發(fā)到執(zhí)行單元704(箭頭726)并被存儲(在寄存器728中)。[0078]如在圖5中的,執(zhí)行單元804仍然使用硬件邏輯508來計算目標(biāo)地址(即目標(biāo)PC);然而,它在計算出的目標(biāo)地址不匹配(如被存儲在寄存器728中的)所預(yù)測的目標(biāo)PC的情況下只將包含計算出的目標(biāo)PC的重定向通知(箭頭730)發(fā)送到提取單元802。在這樣的情況下,計算出的目標(biāo)地址被用于提取正確的指令(在硬件邏輯512中)和更新JRC(箭頭732)兩者。在JRC被更新的場合,JRC的路啟用表805也被更新(箭頭830)。[0079]圖8的上面的描述假設(shè)在JRC中的高速緩存命中(即:在JRC中有匹配的條目)。如果沒有匹配的條目由JRC路選擇硬件邏輯818找到,則處理器如上面關(guān)于圖5所述的那樣操作且必須等待直到執(zhí)行單元計算出目標(biāo)PC為止,且這然后被存儲在JRC中用于未來使用。將認(rèn)識到,最初JRC將是空的(S卩:將沒有被存儲在JRC中的所預(yù)測的目標(biāo)PC),且隨著JRC變得更多地被填充有所預(yù)測的目標(biāo)PC,在JRC中的高速緩存命中的數(shù)量將增加。[0080]圖9是示出在圖8中所示和在上面描述的方法的更詳細(xì)的示例的示意圖。特別是,可看到,JRC的路啟用表805包括多個條目902,其中每個條目與在JRC本身中的條目之一相應(yīng)(在1:1關(guān)系中)。在這個示例中,用于對路啟用表和JRC兩者編索引的索引參數(shù)被稱為“JRC索引參數(shù)”并包括PC的位的子集。在這個示例中,JRC標(biāo)記包括線程ID和PC的位的子集。如圖9中所示,路啟用硬件邏輯806執(zhí)行線程ID的比較,其中該比較在選擇的線程(來自線程選擇邏輯510)的ID和在由JRC索引參數(shù)識別的路啟用表805中的條目中的線程ID之間進(jìn)行。[0081]也如圖9中所示的,JRC路選擇硬件邏輯818執(zhí)行在被從JRC中的啟用的路讀取的標(biāo)記和程序計數(shù)器522(且在一些示例中還有當(dāng)前線程ID520)之間的標(biāo)記比較(在塊918中)。如果匹配(其為JR高速緩存命中)被識別出,則包含匹配標(biāo)記的路被選擇(在塊919中)且所預(yù)測的目標(biāo)PC被識別出并接著如上面關(guān)于圖8所述的那樣被使用。此外,識別包含匹配的標(biāo)記的特定路(其現(xiàn)在是“最近使用的路”)的數(shù)據(jù)被饋送到邏輯920內(nèi),邏輯920記錄最近最少使用的路。在高速緩存缺失的情況下或在計算出的目標(biāo)地址不匹配所預(yù)測的目標(biāo)PC(箭頭732)的情況下,最近最少使用的路用于存儲對JRC的下一更新。[0082]圖10示出多線程處理器(例如圖4中所示的處理器400)的操作,其可被認(rèn)為是圖6和8的組合,因為處理器對指令高速緩存器(如在圖6中的)和跳轉(zhuǎn)寄存器高速緩存器(如在圖8中的)兩者使用選擇性路啟用(在提取單元1002中)。在這個示例中,第一索引參數(shù)用于對指令高速緩存器和指令高速緩存器的路啟用表604兩者編索引,且第二索引參數(shù)用于對JRC和JRC的路啟用表805兩者編索引(即:相同的索引參數(shù)用于高速緩存器及其相關(guān)路啟用表兩者,但不同的高速緩存器可使用不同的索引參數(shù))。[0083]在上面所述的示例中,在路啟用表中的每個條目只包括線程ID字段;然而,在另外的示例中,每個條目還可包括有效性位。對于待被啟用的路(例如在圖3的塊310中),線程ID必須匹配(在塊308中的“是”)且此外有效性位需要被置位。通過使用在這個路中的有效性位,不必初始化高速緩存器。[0084]如上所述,路啟用表將一般相當(dāng)小且因此可被在寄存器而不是RAM中實(shí)現(xiàn),其可以在沒有在所使用的功率的方面的任何成本的情況下被讀取。例如,對于包括16個高速緩存行的4路高速緩存器(n=4),路啟用表包括16x4個條目(S卩32個條目),且每個條目可以只包括2位,所以整個路啟用表可以只包括64位。[0085]在路啟用表較大(例如較大的高速緩存器(例如數(shù)據(jù)高速緩存器)的路啟用表)的場合,路啟用表可被在RAM中實(shí)現(xiàn)。從路啟用表讀取所需的功率仍然低于從高速緩存器本身讀取所需的功率(因為路啟用表仍然比高速緩存器小得多)。在各種示例中可通過在從路啟用表讀取之前只將路啟用表中的一行(即由索引參數(shù)識別的那些條目)上電來進(jìn)一步減少從路啟用表讀取所需的功率。[0086]通過使用如本文所述的改進(jìn)的高速緩存布置和方法,當(dāng)從在多線程處理器中的基于RAM的高速緩存器讀取時,可節(jié)省功率。此外,高速緩存器的尺寸可被減小,因為線程ID不再被需要;然而在一些實(shí)現(xiàn)中,線程ID仍然可被存儲在高速緩存器中(例如高速緩存器在一些示例中可以不被修改,盡管路啟用表的使用)。在其它實(shí)現(xiàn)中,線程ID可以不被存儲在高速緩存器中,但不是減小高速緩存器的尺寸,額外的高速緩存行可被包括以在類似的功率成本下提供更好的多線程性能。[0087]術(shù)語“處理器”和“計算機(jī)”被在本文使用以指的是具有處理能力使得它可執(zhí)行指令的任何設(shè)備或其部分。術(shù)語“處理器”可例如包括中央處理單元(CPU)、圖形處理單元(GPU或VPU)、物理處理單元(PPU)、無線電處理單元(RPU)、數(shù)字信號處理器(DSP)、通用處理器(例如通用GPU)、微處理器、被設(shè)計成加速在CPU之外的任務(wù)的任何處理單元等。本領(lǐng)域中的技術(shù)人員將認(rèn)識到,這樣的處理能力被并入很多不同的設(shè)備內(nèi)且因此術(shù)語“計算機(jī)”包括機(jī)頂盒、媒體播放器、數(shù)字收音機(jī)、PC、服務(wù)器、移動電話、個人數(shù)字助理和很多其它設(shè)備。[0088]本領(lǐng)域中的技術(shù)人員將認(rèn)識到,用于存儲程序指令的存儲設(shè)備可分布在整個網(wǎng)絡(luò)中。例如,遠(yuǎn)程計算機(jī)可存儲被描述為軟件的進(jìn)程的示例。本地或終端計算機(jī)可訪問遠(yuǎn)程計算機(jī)并下載軟件的一部分或全部以運(yùn)行程序??蛇x地,本地計算機(jī)可按需要下載軟件的片段,或在本地終端處執(zhí)行一些軟件指令和在遠(yuǎn)程計算機(jī)(或計算機(jī)網(wǎng)絡(luò))處執(zhí)行一些軟件指令。本領(lǐng)域中的技術(shù)人員也將認(rèn)識到,通過利用本領(lǐng)域中的技術(shù)人員已知的常規(guī)技術(shù),軟件指令的全部或一部分可由專用電路(例如DSP、可編程邏輯陣列等)執(zhí)行。[0089]本文所述的方法可由被配置有軟件的計算機(jī)執(zhí)行,軟件是以被存儲在有形存儲介質(zhì)上的機(jī)器可讀形式(例如以包括用于配置計算機(jī)來執(zhí)行所述方法的組成部分的計算機(jī)可讀程序代碼的計算機(jī)程序的形式或以包括適于當(dāng)程序在計算機(jī)上運(yùn)行時執(zhí)行本文所述的任何方法的所有步驟的計算機(jī)程序代碼模塊的計算機(jī)程序的形式),且其中計算機(jī)程序可被體現(xiàn)在計算機(jī)可讀存儲介質(zhì)上。有形(或非暫時性)存儲介質(zhì)的示例包括磁盤、拇指驅(qū)動器、存儲卡等,且不包括傳播的信號。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得方法步驟可以被按任何適當(dāng)?shù)捻樞蚧蛲瑫r執(zhí)行。[0090]本文描述的硬件部件可由非暫時性計算機(jī)可讀存儲介質(zhì)產(chǎn)生,非暫時性計算機(jī)可讀存儲介質(zhì)其上編碼有計算機(jī)可讀程序代碼。[0091]還旨在包括“描述”或定義實(shí)現(xiàn)上面所述的模塊、功能、部件或邏輯的硬件的配置的軟件,例如HDL(硬件描述語言)軟件,如用于設(shè)計集成電路或用于配置可編程芯片以實(shí)現(xiàn)期望的功能。也就是說,可提供計算機(jī)可讀存儲介質(zhì),其上編碼有用于產(chǎn)生被配置成執(zhí)行本文所述的任何方法的處理單元或用于產(chǎn)生包括本文所述的任何裝置的處理單元的計算機(jī)可讀程序代碼。也就是說,計算機(jī)系統(tǒng)可被配置成根據(jù)電路元件的定義以及用于組合那些電路元件的數(shù)據(jù)定義規(guī)則產(chǎn)生數(shù)字電路的表示,其中非暫時性計算機(jī)可讀存儲介質(zhì)可在其上存儲有處理器可執(zhí)行指令,其當(dāng)在這樣的計算機(jī)系統(tǒng)處被執(zhí)行時使計算機(jī)系統(tǒng)產(chǎn)生如本文所述的處理單元。[0092]存儲用于在實(shí)現(xiàn)所公開的方面時使用的機(jī)器可執(zhí)行數(shù)據(jù)的存儲器可以是非暫時性介質(zhì)。非暫時性介質(zhì)可以是易失性的或非易失性的。易失性非暫時性介質(zhì)的示例包括基于半導(dǎo)體的存儲器(例如SRAM或DRAM)??捎糜趯?shí)現(xiàn)非易失性存儲器的技術(shù)的示例包括光學(xué)和磁存儲器技術(shù)、閃存、相變存儲器、電阻式RAM。[0093]對“邏輯”的特定參考指的是執(zhí)行一個功能或多個功能的結(jié)構(gòu)。邏輯的示例包括被布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過程中可用的其它硬件元件。通過示例的方式,這樣的晶體管和/或其它元件可用于形成實(shí)現(xiàn)和/或包含存儲器(例如寄存器、觸發(fā)器或鎖存器)、邏輯運(yùn)算器(例如布爾運(yùn)算、數(shù)學(xué)運(yùn)算器(例如加法器、乘法器或移位器))和互連的電路或結(jié)構(gòu)。這樣的元件可作為定制電路或標(biāo)準(zhǔn)單元庫、宏或以其它的抽象層次被提供??梢栽谔囟ǖ牟贾弥衼砘ミB這樣的元件。邏輯可包括具有固定功能的電路,且電路可被編程以執(zhí)行一個功能或多個功能;這樣的編程可被從固件或軟件更新或控制機(jī)制來提供。被識別為執(zhí)行一個功能的邏輯還可包括實(shí)現(xiàn)組成性功能或子過程的邏輯。在示例中,硬件邏輯具有實(shí)現(xiàn)一個固定功能操作或多個操作、狀態(tài)機(jī)或過程的電路。[0094]如對技術(shù)人員將明顯的是,本文給出的任何范圍或設(shè)備值可被擴(kuò)展或改變而不失去所尋求的效果。[0095]術(shù)語“子集”在本文用于指的是真子集,使得子集不包括集合的所有元素。[0096]將理解,上面描述的益處和優(yōu)點(diǎn)可涉及一個實(shí)施方式或可涉及幾個實(shí)施方式。實(shí)施方式不限于解決任何或所有所陳述的問題的那些實(shí)施方式或具有任何或所有所陳述的益處和優(yōu)點(diǎn)的那些實(shí)施方式。[0097]對“一個(an)”項的任何參考指的是那些項中的一項或多項。術(shù)語“包括”在本文用于意指包括所識別的方法塊或元素,但這樣的塊或元素不包括排他列表,且裝置可包含額外的塊或元素,以及方法可包含額外的操作或元素。此外,塊、元素和操作本身并不隱含地是封閉的。[0098]可在適當(dāng)時以任何適當(dāng)?shù)捻樞蚧蛲瑫r來執(zhí)行本文描述的方法的步驟。在附圖中的框之間的箭頭示出方法步驟的一個示例順序,但并不旨在排除其它序列或并行的多個步驟的執(zhí)行。此外,單獨(dú)的塊可被從任何方法刪除而不偏離本文描述的主題的精神和范圍。上面描述的任何示例的方面可與所描述的其它示例中的任一個示例的方面組合以形成另外的示例,而不失去所尋求的效果。在附圖的元素被示出為由箭頭連接的場合,將認(rèn)識到,這些箭頭僅僅示出在元素之間的通信(包括數(shù)據(jù)和控制消息)的一個示例流。在元素之間的流可以在任一方向上或在兩個方向上。[0099]將理解,優(yōu)選實(shí)施方式的以上描述僅通過示例的方式被給出,以及各種修改可由本領(lǐng)域中的技術(shù)人員做出。盡管上面已經(jīng)以一定程度的特殊性或參考一個或多個單獨(dú)的實(shí)施方式描述了各種實(shí)施方式,但是本領(lǐng)域中的技術(shù)人員可以對所公開的實(shí)施方式做出很多更改而不偏離本發(fā)明的精神或范圍?!局鳈?quán)項】1.一種多線程處理器,包括:組相聯(lián)高速緩存器(202),其包括被布置在多個路(206)中的多個高速緩存條目(205),每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段;路啟用表(210),其包括多個路啟用表條目(212),每個路啟用表條目相應(yīng)于在所述組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,所述線程與被存儲在相應(yīng)的高速緩存條目的所述數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);以及硬件邏輯(214),其被布置成至少部分地基于當(dāng)前線程ID和被存儲在由索引參數(shù)識別的路啟用表條目中的線程ID的比較來選擇性地啟用在所述組相聯(lián)高速緩存器中的路。2.根據(jù)權(quán)利要求1所述的多線程處理器,還包括:硬件邏輯(216),其被布置成讀取在所述組相聯(lián)高速緩存器中的被啟用的路中的由所述索引參數(shù)識別的高速緩存條目并且將在被讀取的每個高速緩存條目中的所述標(biāo)記字段與參考值進(jìn)行比較。3.根據(jù)權(quán)利要求2所述的多線程處理器,其中所述參考值是程序計數(shù)器。4.根據(jù)權(quán)利要求1所述的多線程處理器,其中與被存儲在所述相應(yīng)的高速緩存條目的所述數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān)的線程包括在當(dāng)所述數(shù)據(jù)項被存儲在所述相應(yīng)的高速緩存條目的所述數(shù)據(jù)字段中時的當(dāng)前線程ID。5.根據(jù)權(quán)利要求1所述的多線程處理器,其中所述組相聯(lián)高速緩存器被在第一類型的存儲器中實(shí)現(xiàn),且所述路啟用表被在第二類型的存儲器中實(shí)現(xiàn)。6.根據(jù)權(quán)利要求5所述的多線程處理器,其中所述組相聯(lián)高速緩存器是基于RAM的高速緩存器,且所述路啟用表被在寄存器中實(shí)現(xiàn)。7.根據(jù)權(quán)利要求1所述的多線程處理器,其中索引值識別在所述組相聯(lián)高速緩存器中的每個路中的一個高速緩存條目,且所述索引值還識別所述路啟用表條目的子集,在所述子集中的每個路啟用表條目相應(yīng)于被識別的高速緩存條目之一。8.根據(jù)權(quán)利要求1所述的多線程處理器,其中所述組相聯(lián)高速緩存器是指令高速緩存器。9.根據(jù)權(quán)利要求1-7中的任一項所述的多線程處理器,其中所述組相聯(lián)高速緩存器是跳轉(zhuǎn)寄存器高速緩存器。10.根據(jù)權(quán)利要求1-7中的任一項所述的多線程處理器,所述處理器還包括:第二組相聯(lián)高速緩存器(202),其包括被布置在第二多個路(206)中的第二多個高速緩存條目(205),在所述第二組相聯(lián)高速緩存器中的每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段;第二路啟用表(210),其包括第二多個路啟用表條目(212),在所述第二路啟用表中的每個路啟用表條目相應(yīng)于在所述第二組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲與被存儲在所述第二組相聯(lián)高速緩存器中的所述相應(yīng)的高速緩存條目的所述數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān)的線程的線程ID的線程ID字段;以及第二硬件邏輯(214),其被布置成至少部分地基于當(dāng)前線程ID和被存儲在所述第二路啟用表中的由第二索引參數(shù)識別的路啟用表條目中的線程ID的比較來選擇性地啟用在所述第二組相聯(lián)高速緩存器中的路。11.根據(jù)權(quán)利要求10所述的多線程處理器,其中所述組相聯(lián)高速緩存器是跳轉(zhuǎn)寄存器高速緩存器,而所述第二組相聯(lián)高速緩存器是指令高速緩存器。12.—種訪問在多線程處理器中的組相聯(lián)高速緩存器的方法,所述組相聯(lián)高速緩存器包括被布置在多個路中的多個高速緩存條目,且每個高速緩存條目包括數(shù)據(jù)字段和標(biāo)記字段,所述方法包括:訪問在路啟用表中的由索引參數(shù)識別的兩個或多于兩個路啟用表條目(302),每個路啟用表條目相應(yīng)于在所述組相聯(lián)高速緩存器中的高速緩存條目并包括被布置成存儲線程的線程ID的線程ID字段,所述線程與被存儲在相應(yīng)的高速緩存條目的所述數(shù)據(jù)字段中的數(shù)據(jù)項相關(guān);對于每個被訪問的路啟用表條目,將存儲的線程ID與當(dāng)前線程ID進(jìn)行比較(308);以及響應(yīng)于識別在所述當(dāng)前線程ID與在路啟用表條目中的所述存儲的線程ID之間的匹配的所述比較,啟用在所述組相聯(lián)高速緩存器中的包含所述相應(yīng)的高速緩存條目的路(310)。13.根據(jù)權(quán)利要求12所述的方法,還包括:響應(yīng)于識別出在所述當(dāng)前線程ID與在路啟用表條目中的所述存儲的線程ID之間不匹配的所述比較,禁用在所述組相聯(lián)高速緩存器中的包含所述相應(yīng)的高速緩存條目的路(312)014.根據(jù)權(quán)利要求12或13所述的方法,還包括:讀取在所述組相聯(lián)高速緩存器中的被啟用的路中的由所述索引參數(shù)識別的高速緩存條目(314)。15.根據(jù)權(quán)利要求12或13所述的方法,還包括:響應(yīng)于對在所述組相聯(lián)高速緩存器中的高速緩存條目的更新(316),更新被存儲在相應(yīng)于被更新的高速緩存條目的路啟用表條目中的線程ID(318)。【文檔編號】G06F12/0893GK106055490SQ201610214946【公開日】2016年10月26日【申請日】2016年4月8日公開號201610214946.7,CN106055490A,CN106055490A,CN201610214946,CN-A-106055490,CN106055490A,CN106055490A,CN201610214946,CN201610214946.7【發(fā)明人】菲利普·戴【申請人】想象技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1