專利名稱:用于調(diào)度線程的技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的各實(shí)施例一般涉及信息處理領(lǐng)域。更具體而言,本發(fā)明的各實(shí)施例涉及 調(diào)度處理器中的多個(gè)指令線程的技術(shù)。
背景技術(shù):
微處理器中的多線程操作涉及同時(shí)地或以從應(yīng)用程序或操作系統(tǒng)的觀點(diǎn)來看表 現(xiàn)為同時(shí)的方式來執(zhí)行多個(gè)指令序列的技術(shù)。線程操作架構(gòu)中的差異可包括調(diào)度線程的方 式或向各個(gè)線程分配處理資源的方式。例如,某些現(xiàn)有技術(shù)線程操作架構(gòu)在將處理資源分 配給不同的線程之前,僅僅在特定時(shí)間量內(nèi)將該處理資源分配給某一線程。例如,某些現(xiàn)有 技術(shù)架構(gòu)可以實(shí)現(xiàn)將線程的執(zhí)行“暫?!碧囟〞r(shí)間量的指令,并且該時(shí)間量可能不能在每次 使用該指令時(shí)改變,反而是固定的。在不考慮線程的瞬時(shí)處理需求或該線程所使用的處理資源的狀態(tài)的情況下在固 定時(shí)間量內(nèi)向線程分配處理資源可導(dǎo)致在完成某些重要的或者合理的操作之前切換線程。 此外,不顧處理狀態(tài)或線程需求而切換線程可導(dǎo)致處理器性能的降級(jí)。除基于某一任意時(shí)間量切換線程之外,某些現(xiàn)有技術(shù)線程操作架構(gòu)在特定一個(gè)或 一組事件時(shí)切換線程,而不管線程的需求或底層處理資源的狀態(tài)。類似地,這些線程操作架 構(gòu)可導(dǎo)致在次優(yōu)的時(shí)間或頻率切換線程,使得性能受損或功耗可能增加。
本發(fā)明的實(shí)施例在各附圖中是作為示例而非作為限制示出的,在附圖中相同的附 圖標(biāo)記指代相同的元素,并且其中圖1示出其中可以實(shí)現(xiàn)至少一個(gè)實(shí)施例的邏輯;圖2示出其中可以使用本發(fā)明的至少一個(gè)實(shí)施例的處理器;圖3示出其中可以使用本發(fā)明的至少一個(gè)實(shí)施例的共享總線計(jì)算機(jī)系統(tǒng)的框圖;圖4示出其中可以使用本發(fā)明的至少一個(gè)實(shí)施例的點(diǎn)對(duì)點(diǎn)互連計(jì)算機(jī)系統(tǒng)的框 圖;圖5是示出可以在一個(gè)實(shí)施例中使用的操作的流程圖。
具體實(shí)施例方式本發(fā)明的各實(shí)施例涉及計(jì)算機(jī)系統(tǒng)和信息處理。更具體而言,本發(fā)明的各實(shí)施例 涉及至少部分地基于處理資源的各狀態(tài)條件來延遲或阻止不同的線程訪問處理資源的技 術(shù)。在一個(gè)實(shí)施例中,例如指令、子指令(例如“微操作(UOP) ”)或控制信號(hào)(此后一般被 稱為“指令”)可被執(zhí)行,以使得線程調(diào)度邏輯延遲從正在執(zhí)行的一個(gè)線程到另一個(gè)的切換, 直到滿足某一條件為止,如加載了數(shù)據(jù)或已經(jīng)過去了多個(gè)時(shí)鐘周期等。在另一實(shí)施例中,可 以執(zhí)行一指令,該指令使得線程調(diào)度器不調(diào)度線程中的后續(xù)指令來執(zhí)行,直到返回了該后 續(xù)指令所依賴的或者使用的預(yù)取數(shù)據(jù)為止。此外,在一個(gè)實(shí)施例中,以上指令不調(diào)用處理該線程的處理資源(例如處理“流水線”)的清除,而相反允許處理資源保持狀態(tài)信息,以便在 滿足各種條件之后經(jīng)延遲的或停止的線程可以恢復(fù)執(zhí)行。本發(fā)明的各實(shí)施例通過允許各種各樣的和可變數(shù)量的條件來控制是否要延遲、切 換或者清除線程,來允許比現(xiàn)有技術(shù)線程調(diào)度技術(shù)更智能的線程切換。通過允許多個(gè)可變 條件基于任何特定時(shí)間的處理?xiàng)l件來確定是否要調(diào)度或者切換線程,本發(fā)明的各實(shí)施例可 以在只有切換線程的更低的系統(tǒng)功耗的同時(shí)改進(jìn)處理性能,并且因此導(dǎo)致與其相關(guān)聯(lián)的狀 態(tài)保存/恢復(fù)開銷,從處理觀點(diǎn)來看時(shí)這樣做是有意義的。不同于基于固定的或剛性的某 組準(zhǔn)則或定時(shí)來切換線程的現(xiàn)有技術(shù)線程調(diào)度技術(shù),本發(fā)明的各實(shí)施例允許線程切換根據(jù) 變化的系統(tǒng)和處理?xiàng)l件、根據(jù)考慮給定時(shí)刻的系統(tǒng)和處理資源參數(shù)和條件的各種可變算法 來發(fā)生。在一些實(shí)施例中,此處描述的線程調(diào)度技術(shù)至少部分地基于處理資源中的各種微 架構(gòu)條件來阻止或延遲線程切換,其中各線程在以下時(shí)刻執(zhí)行,如在處理未對(duì)齊的數(shù)據(jù)操 作數(shù)期間,在處理鎖定的或原子操作時(shí),在處理要求多個(gè)或復(fù)合操作(加載_>ALU操作、加 載->ALU->存儲(chǔ)操作等)的指令時(shí),在處理使用微碼操作序列的指令時(shí),或在解碼包含特定 前綴、操作數(shù)大小、地址大小、鎖、重復(fù)操作、或段超越操作的指令時(shí)。各實(shí)施例還可以延遲 或阻止作為其它微架構(gòu)條件的結(jié)果的線程切換。在一些實(shí)施例中,取決于特定線程的處理 狀態(tài)、該線程的執(zhí)行階段等,一個(gè)或多個(gè)條件可以選擇性地使得線程調(diào)度器從處理器清除 或不清除該線程。圖1示出其中可以實(shí)現(xiàn)至少一個(gè)實(shí)施例的邏輯。圖1包括預(yù)取緩沖區(qū)組101,其 存儲(chǔ)從高速緩存或其它存儲(chǔ)器(未示出)中取到對(duì)應(yīng)于每一線程的各緩沖區(qū)位置中的指 令。在一個(gè)實(shí)施例中,調(diào)度邏輯100支持四個(gè)線程的調(diào)度,并且預(yù)取緩沖區(qū)組包括每一線程 至少一個(gè)緩沖區(qū)條目以存儲(chǔ)所取的每一線程的指令。在其它實(shí)施例中,預(yù)取緩沖區(qū)組包括 存儲(chǔ)每一線程的多個(gè)指令的多個(gè)緩沖區(qū)條目。所取的每一線程的指令可以沿互連TO、Tl、 T2和T3來傳遞到多路復(fù)用器(mux) 105,其可以基于來自線程選取器邏輯110的選擇線選 擇各指令中的對(duì)應(yīng)于所選線程的一個(gè)。線程選取器邏輯可以基于線程阻塞指示符115和/ 或解碼器120所提供的、所取的指令的經(jīng)解碼的指示或表示來確定選擇哪一線程,并且因 此確定執(zhí)行該線程的哪些指令。在一個(gè)實(shí)施例中,解碼器向線程選取器邏輯指示指令在何時(shí)被解碼并且何時(shí)可以 選擇來自不同的線程的新指令。在一個(gè)實(shí)施例中,如果線程阻塞信號(hào)未置為有效(assert), 并且解碼器向線程選取器邏輯指示所選擇的當(dāng)前指令已被解碼,則線程選取器邏輯可以選 擇來自不同的線程的指令。在一個(gè)實(shí)施例中,線程選取器邏輯以“循環(huán)”的方式選擇來自線 程的指令,以使得以確定的方式來選擇各線程(例如T0、T1、T2、T3)。在一個(gè)實(shí)施例中,線程 選取器邏輯可以根據(jù)某一算法來選擇線程,使得線程被選擇的次序基于其它條件而改變。在一個(gè)實(shí)施例中,線程選取器邏輯通過向多路復(fù)用器將信號(hào)置為有效來選擇特定 線程的指令,這允許線程中的指令由解碼邏輯解碼并由執(zhí)行邏輯(未示出)執(zhí)行。線程選 取器邏輯可以實(shí)現(xiàn)用于選擇從特定線程中選擇哪一指令的各種算法,包括靜態(tài)算法,如順 序或“循環(huán)”選擇算法。然而,在一個(gè)實(shí)施例中,線程選取邏輯接收指示該線程是否應(yīng)被阻 塞/延遲等或其是否應(yīng)當(dāng)繼續(xù)下去的線程阻塞信號(hào)。在一個(gè)實(shí)施例中,線程阻塞信號(hào)可以 超越可由線程選取器實(shí)現(xiàn)的用于選擇接下來要選取哪一線程的任何算法。例如,在一個(gè)實(shí)施例中,線程阻塞信號(hào)的置為有效阻止順序或“循環(huán)”的次序中的下一線程被選擇。在一個(gè)實(shí)施例中,線程阻塞信號(hào)可以出于各種原因而被置為有效,包括延遲指 令或“vprefetch.misshint”指令的執(zhí)行。例如,響應(yīng)于接收、解碼、或處理vprefetch. misshint指令或類似指令,線程阻塞控制邏輯(未示出)可以將線程阻塞信號(hào)置為有效,以 阻止線程選取器邏輯選擇線程,直到從存儲(chǔ)器分層結(jié)構(gòu)中取出了 vprefetch. misshint指 令所請(qǐng)求的數(shù)據(jù)為止。一旦取出了數(shù)據(jù),線程阻塞信號(hào)可被置為無效以允許具有等待所取 的數(shù)據(jù)的指令的線程被選擇和解碼。在一個(gè)實(shí)施例中,在取數(shù)據(jù)(例如從存儲(chǔ)器或2級(jí)高速緩存到1級(jí)高速緩存)的指 令距使用它的指令(例如“加載”指令)特定“距離”(程序指令的數(shù)量)的情況下,vpretch. misshint指令或類似的指令對(duì)開發(fā)者而言可能是有用的。在這些情況下,可以阻止其它線 程利用硬件,直到數(shù)據(jù)被取出并且可以使用為止,因?yàn)槔迷摂?shù)據(jù)的線程在滿足消費(fèi)者指 令(使用所取的數(shù)據(jù)的指令)之前不會(huì)將處理資源重新租用給其它線程。在一個(gè)實(shí)施例中, vprefetch. misshint通過使得包含消費(fèi)者指令的線程被“跳過”或不被調(diào)度,來阻止消費(fèi)者 指令阻止其它線程使用硬件資源并阻止消費(fèi)者指令允許調(diào)度和執(zhí)行另一線程。以此方式, 在線程等待所取的數(shù)據(jù)時(shí),不允許它阻止對(duì)處理資源的訪問。在一個(gè)實(shí)施例中,延遲指令可由處理邏輯(以下描述)來執(zhí)行,該處理邏輯可使得 線程阻塞信號(hào)在可選擇的時(shí)間量內(nèi)被置為有效。例如,在一個(gè)實(shí)施例中,延遲指令包括向處 理邏輯指示線程應(yīng)被延遲的時(shí)鐘數(shù)量的字段。不同于可能基于處理流水線深度來在固定時(shí) 間量內(nèi)暫停線程的現(xiàn)有技術(shù)指令,延遲指令可以在可變時(shí)間量內(nèi)延遲線程并且無需從處理 資源中清除對(duì)應(yīng)于該線程的狀態(tài)。一旦過去了規(guī)定時(shí)間量(例如經(jīng)由時(shí)鐘計(jì)數(shù)器來跟蹤), 線程阻塞信號(hào)可被置為無效以使得線程選取器邏輯可以根據(jù)該線程選取邏輯中實(shí)現(xiàn)的算 法(例如循環(huán))來選擇下一線程。在一個(gè)實(shí)施例中,線程阻塞信號(hào)可以響應(yīng)于處理邏輯(以下描述)執(zhí)行 "vprefetch. misshint”指令而被置為有效,這使得該線程被延遲到從存儲(chǔ)器分層結(jié)構(gòu)接收 到所需的預(yù)取數(shù)據(jù)為止。此外,在一個(gè)實(shí)施例中,vprefetch. misshint指令可以停止或延遲 線程的執(zhí)行而無需從處理資源中清除對(duì)應(yīng)于該線程的狀態(tài)信息。然而,在其它實(shí)施例中,如 果檢索預(yù)取數(shù)據(jù)花費(fèi)過長時(shí)間,則vprefetch. misshint指令可以使得處理器狀態(tài)能夠被 清除,以使其它線程不被不恰當(dāng)?shù)匮舆t執(zhí)行。在一個(gè)實(shí)施例中,可以使用定時(shí)器來對(duì)從響應(yīng) 于vprefetch. misshint指令而延遲線程的時(shí)刻到閾值周期數(shù)量的周期數(shù)量進(jìn)行計(jì)數(shù)。一 旦滿足閾值周期數(shù)量,則可以從處理器邏輯清除對(duì)應(yīng)于延遲線程的狀態(tài),并將線程阻塞信 號(hào)置為無效以允許執(zhí)行不同的線程。在其它實(shí)施例中,可出于其它原因來將線程阻塞信號(hào)置為有效,如響應(yīng)于處理邏 輯中的各種微架構(gòu)事件或狀態(tài),包括上述微架構(gòu)事件。在一個(gè)實(shí)施例中,線程選取器邏輯可 以響應(yīng)于睡眠向量或其它類似控制結(jié)構(gòu)中所包含的信號(hào)或數(shù)據(jù)來選擇線程。例如,在一個(gè) 實(shí)施例中,睡眠向量可以存儲(chǔ)指示處理?xiàng)l件的各個(gè)位,這些條件諸如數(shù)據(jù)轉(zhuǎn)換后備緩沖區(qū) (DTLB)未命中、1級(jí)(Li)高速緩存讀未命中、1級(jí)獨(dú)占讀(RFO)未命中、填充緩沖區(qū)滿條件、 填充緩沖區(qū)組地址匹配條件、不可高速緩存寫、不可高速緩存寫緩沖區(qū)滿條件、延遲指令進(jìn) 行條件、指令預(yù)取緩沖區(qū)空條件和vprefetch. misshint指令執(zhí)行條件。睡眠緩沖區(qū)的各條 目的一個(gè)實(shí)施例由下表示出
權(quán)利要求
一種裝置,包括至少部分地基于第二指令是否已被執(zhí)行來選擇對(duì)應(yīng)于多個(gè)線程中的一個(gè)線程的第一指令的線程選擇邏輯,其中所述第二指令是從包括vprefetch.misshint指令和線程延遲指令的一組指令中選擇的。
2.如權(quán)利要求1所述的裝置,其特征在于,所述第二指令使得線程阻塞信號(hào)被置為有 效以阻止所述線程選擇邏輯選取所述第一指令。
3.如權(quán)利要求1所述的裝置,其特征在于,所述線程選擇邏輯至少部分地基于多個(gè)微 架構(gòu)條件中的一個(gè)來選擇所述第一指令,所述多個(gè)微架構(gòu)條件包括未對(duì)齊的數(shù)據(jù)操作數(shù) 的處理;處理鎖定的或原子操作;處理要求多個(gè)或復(fù)合操作的指令;處理使用微碼操作序 列的指令;以及解碼包含特定前綴、操作數(shù)大小、地址大小、鎖、重復(fù)操作、或段超越操作的 指令。
4.如權(quán)利要求1所述的裝置,其特征在于,所述vprefetch.misshint指令和所述線程 延遲指令的指示存儲(chǔ)在睡眠向量中。
5.如權(quán)利要求4所述的裝置,其特征在于,所述睡眠向量包括多個(gè)微架構(gòu)條件的多個(gè) 指示符。
6.如權(quán)利要求1所述的裝置,其特征在于,所述線程選擇邏輯按照順序次序選擇來自 不同線程的指令。
7.如權(quán)利要求1所述的裝置,其特征在于,所述線程選擇邏輯根據(jù)動(dòng)態(tài)選擇算法選擇 來自不同線程的指令。
8.如權(quán)利要求1所述的裝置,其特征在于,所述線程選擇邏輯根據(jù)時(shí)間復(fù)用算法選擇 來自不同線程的指令。
9.一種系統(tǒng),包括包含一組指令的存儲(chǔ)器,所述指令包括vprefetch. misshint指令和線程延遲指令;取出并執(zhí)行所述一組指令的處理器。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述處理器包括至少部分地基于所述 vprefetch. misshint指令或線程延遲指令是否已被執(zhí)行來選擇對(duì)應(yīng)于多個(gè)線程中的一個(gè) 線程的多個(gè)指令中的一個(gè)的線程選擇邏輯。
11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述一組指令使得線程阻塞信號(hào)被置為有效。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,所述線程選擇邏輯至少部分地基于多個(gè) 微架構(gòu)條件中的一個(gè)來選擇指令,所述多個(gè)微架構(gòu)條件包括未對(duì)齊的數(shù)據(jù)操作數(shù)的處理; 處理鎖定的或原子操作;處理要求多個(gè)或復(fù)合操作的指令;處理使用微碼操作序列的指 令;以及解碼包含特定前綴、操作數(shù)大小、地址大小、鎖、重復(fù)操作、或段超越操作的指令。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述vprefetch.misshint指令和所述線 程延遲指令的指示存儲(chǔ)在睡眠向量中。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述線程選擇邏輯按照順序次序選擇來 自不同線程的指令。
15.如權(quán)利要求14所述的系統(tǒng),其特征在于,所述線程選擇邏輯根據(jù)動(dòng)態(tài)選擇算法選 擇來自不同線程的指令。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述線程選擇邏輯根據(jù)時(shí)間復(fù)用算法選 擇來自不同線程的指令。
17.一種方法,包括取出對(duì)應(yīng)于第一線程的第一指令;取出對(duì)應(yīng)于第二線程的第二指令;如果一組指令中的一個(gè)指令被執(zhí)行,則阻止所述第二指令執(zhí)行,所述一組指令包括 vprefetch. misshint指令和延遲指令。
18.如權(quán)利要求17所述的方法,其特征在于,所述vprefetch.misshint指令延遲線程 切換,直到接收到預(yù)取數(shù)據(jù)為止。
19.如權(quán)利要求17所述的方法,其特征在于,所述延遲指令阻止所述第二指令被執(zhí)行, 直到所述第一指令已被執(zhí)行為止。
20.如權(quán)利要求17所述的方法,其特征在于,包括將線程阻塞信號(hào)置為有效。
21.如權(quán)利要求20所述的方法,其特征在于,包括至少部分地基于多個(gè)微架構(gòu)條件中 的一個(gè)來選擇指令,所述多個(gè)微架構(gòu)條件包括未對(duì)齊的數(shù)據(jù)操作數(shù)的處理;處理鎖定的 或原子操作;處理要求多個(gè)或復(fù)合操作的指令;處理使用微碼操作序列的指令;以及解碼 包含特定前綴、操作數(shù)大小、地址大小、鎖、重復(fù)操作、或段超越操作的指令。
22.如權(quán)利要求21所述的方法,其特征在于,所述vprefetch.misshint指令和所述線 程延遲指令的指示存儲(chǔ)在睡眠向量中。
23.如權(quán)利要求22所述的方法,其特征在于,還包括按照順序次序選擇來自不同線程 的指令。
24.如權(quán)利要求22所述的方法,其特征在于,還包括根據(jù)動(dòng)態(tài)選擇算法選擇來自不同 線程的指令。
25.如權(quán)利要求22所述的方法,其特征在于,包括根據(jù)時(shí)間復(fù)用算法選擇來自不同線 程的指令。
全文摘要
一種調(diào)度多個(gè)線程以供在處理器內(nèi)執(zhí)行的技術(shù)。更具體而言,一個(gè)實(shí)施例涉及基于處理資源的各種狀態(tài)來使用各種條件或指令延遲或阻止處理器中的線程切換操作的技術(shù)。
文檔編號(hào)G06F9/48GK101944046SQ20091015983
公開日2011年1月12日 申請(qǐng)日期2009年7月7日 優(yōu)先權(quán)日2009年7月7日
發(fā)明者C·陳, D·卡爾曼, E·斯普林格, E·格羅科斯基, J·勞洛, K·加納帕錫, M·阿布拉什, T·福塞斯 申請(qǐng)人:英特爾公司