用于從多線程發(fā)送請(qǐng)求至加速器的機(jī)制的制作方法
【專利摘要】一種裝置被描述為擁有多個(gè)核,每個(gè)核具有a)CPU、b)加速器、和c)在該CPU和該加速器之間耦合的控制器以及多個(gè)排序緩沖器。每個(gè)排序緩沖器專用于一個(gè)不同的CPU線程。每一個(gè)排序緩沖器保持從它的相應(yīng)的線程處發(fā)送至加速器的一個(gè)或多個(gè)請(qǐng)求。該控制器控制將該排序緩沖器的各個(gè)請(qǐng)求發(fā)送至加速器。
【專利說明】用于從多線程發(fā)送請(qǐng)求至加速器的機(jī)制
【技術(shù)領(lǐng)域】
[0001]
【技術(shù)領(lǐng)域】一般地涉及計(jì)算系統(tǒng)設(shè)計(jì),且更特別地,涉及用于從多線程發(fā)送請(qǐng)求至 加速器的機(jī)制。
【背景技術(shù)】
[0002] 協(xié)處理器的傳統(tǒng)集成
[0003] 隨著半導(dǎo)體制造過程到達(dá)了每個(gè)管芯一百萬兆晶體管的時(shí)代,設(shè)計(jì)工程師將面對(duì) 如何最有效地利用所有可用晶體管的問題。一種設(shè)計(jì)方法是使用管芯上的專用硬件"加速" 以及一個(gè)或多個(gè)通用的CPU核來實(shí)現(xiàn)特定的計(jì)算密集型函數(shù)。加速器以被設(shè)計(jì)為執(zhí)行特定 計(jì)算密集型函數(shù)的專用的邏輯塊實(shí)現(xiàn)。此專用邏輯塊的遷移密集型計(jì)算將通用CPU核從執(zhí) 行大量指令釋放,因此增加 CPU核的效力和效率。
[0004] 雖然以協(xié)處理器(諸如制圖法協(xié)處理器)為形式的"加速"在本領(lǐng)域是公知的, 但是此傳統(tǒng)的協(xié)處理器被0S視為操作系統(tǒng)(0S)在其上運(yùn)行的CPU核外部的單獨(dú)的"設(shè) 備"(在更大的計(jì)算系統(tǒng)中)。這些協(xié)處理器因此通過特定設(shè)備驅(qū)動(dòng)器軟件被訪問且不在與 (PU核相同的虛擬存儲(chǔ)器空間外操作。同樣地,傳統(tǒng)協(xié)處理器不分享或預(yù)期在通用CPU核上 執(zhí)行的虛擬地址到物理的地址轉(zhuǎn)換機(jī)制。
[0005] 此外,當(dāng)0S卸載任務(wù)至傳統(tǒng)協(xié)處理器時(shí),發(fā)生大的延遲。特定地,因?yàn)镃PU和傳統(tǒng) 協(xié)處理器本質(zhì)上對(duì)應(yīng)單獨(dú)的、隔離的子系統(tǒng),當(dāng)運(yùn)行在CPU核上應(yīng)用中限定的任務(wù)從應(yīng)用 通過0S "內(nèi)核"傳遞至管理協(xié)處理器的驅(qū)動(dòng)器時(shí),重要的通信資源被消耗了。這種大的延 遲支持這樣的系統(tǒng)設(shè)計(jì):從主0S調(diào)用協(xié)處理器上相對(duì)不頻繁的任務(wù),但每個(gè)任務(wù)有大量相 關(guān)聯(lián)的數(shù)據(jù)塊。實(shí)際上,傳統(tǒng)協(xié)處理器主要以粗粒方式而不是以細(xì)粒方式被利用。
[0006] 隨著當(dāng)前的系統(tǒng)設(shè)計(jì)者對(duì)以細(xì)粒度的使用方式將更快的加速引入計(jì)算系統(tǒng)中感 興趣,用于在計(jì)算系統(tǒng)中集成加速的新范式正在形成。
[0007] 附圖簡述
[0008] 本發(fā)明是通過示例說明的,而不僅局限于各個(gè)附圖的圖示,在附圖中,類似的參考 標(biāo)號(hào)表示類似的元件,其中:
[0009] 圖1示出計(jì)算系統(tǒng),其每個(gè)處理核包括通用CPU和緊密耦合于通用CPU的加速器。
[0010] 圖2示出用于在通用CPU上的線程以調(diào)用加速器的技術(shù)。
[0011] 圖3示出排序緩沖器和相關(guān)的狀態(tài)圖。
[0012] 圖4不出線程切換過程;
[0013] 圖5示出用于處理頁面錯(cuò)誤的過程;
[0014] 圖6示出第一計(jì)算系統(tǒng)實(shí)施例。
[0015] 圖7示出第二計(jì)算系統(tǒng)實(shí)施例。
[0016] 圖8示出第三計(jì)算系統(tǒng)實(shí)施例。
[0017] 圖9示出第四計(jì)算系統(tǒng)實(shí)施例。
[0018] 圖10示出軟件指令轉(zhuǎn)換器。
[0019] 詳細(xì)描述
[0020] 圖1示出新處理核100_1架構(gòu),其中加速器101類似于設(shè)計(jì)在核100_1中且緊密 耦合于核的通用CPU102的大規(guī)模功能單元。該多個(gè)核100_1至核100_0可以被放置在集 成入半導(dǎo)體芯片中的單個(gè)處理器120上。如下文更詳細(xì)的描述,在典型的實(shí)現(xiàn)中,該加速器 101支持多個(gè)不同的計(jì)算密集型任務(wù)。
[0021] 此處,參考諸如核100_1之類的單核的操作,從存儲(chǔ)器和/或高速緩存處讀取標(biāo)準(zhǔn) 指令且通過核的通用CPU102被執(zhí)行。但是,由處理核100_1接收的其他類型的指令將觸發(fā) 加速器101行動(dòng)。在具體的實(shí)現(xiàn)中,底層硬件支持軟件以代碼調(diào)用特定加速任務(wù)的能力。也 就是說,特定命令可以通過軟件編程器(或通過編譯器)嵌入代碼中,此處,該特定命令調(diào) 用并定義將通過加速器101執(zhí)行的特定加速任務(wù)和用于該特定任務(wù)的輸入操作數(shù)。
[0022] 該命令最后以目標(biāo)代碼的某種形式表示。在運(yùn)行時(shí)間期間,底層硬件"執(zhí)行"該目 標(biāo)代碼且在執(zhí)行時(shí)調(diào)用加速器101和傳遞相關(guān)輸入數(shù)據(jù)至加速器101。圖1示出加速器101 耦合至通用CPU102以示出命令發(fā)送至加速器101。下文還將更詳細(xì)地討論關(guān)于用于調(diào)用加 速器單元的特定技術(shù)的更多細(xì)節(jié)。
[0023] 在被調(diào)用之后,該加速器101在與通用CPU102相同的存儲(chǔ)器空間之外操作。類似 地,數(shù)據(jù)操作數(shù)可以通過虛擬地址由加速器識(shí)別,該虛擬地址的對(duì)應(yīng)轉(zhuǎn)換為物理地址空間 與通用CPU102使用的那些相同。以其他方式來說,該加速器101在與CPU102相同的虛擬 存儲(chǔ)器空間之外操作。此外,一般地,加速器執(zhí)行命令的執(zhí)行時(shí)間比在通用CPU102內(nèi)執(zhí)行 傳統(tǒng)/標(biāo)準(zhǔn)指令的時(shí)間長(由于加速器101正在執(zhí)行的任務(wù)的復(fù)雜本質(zhì))。輸入操作數(shù)和 /或結(jié)果也可能比通用CPU102的功能單元使用的標(biāo)準(zhǔn)寄存器尺寸更大。
[0024] 因此加速器101可以一般地被視為比傳統(tǒng)功能單位和通用CPU102的相關(guān)的指令 更粗粒(有更大的執(zhí)行時(shí)間和/或在更大的數(shù)據(jù)塊上操作)。同時(shí),加速器101還可以一般 地被視為比傳統(tǒng)協(xié)處理器更細(xì)?;蛑辽俑o地耦合于通用CPU102。
[0025] 特定地,加速器的耗時(shí)"驅(qū)動(dòng)器調(diào)用"的調(diào)用的避免和通過加速器101和通用 CPU102對(duì)相同存儲(chǔ)器空間(包括虛擬至物理地址轉(zhuǎn)換)的分享對(duì)應(yīng)于比典型協(xié)處理器更 緊地耦合于通用CPU102。此外,加速器101可以調(diào)用以執(zhí)行的特定個(gè)別任務(wù)還可以比協(xié)處 理器傳統(tǒng)執(zhí)行的更大的、大規(guī)模的任務(wù)更細(xì)粒。適合于以加速器實(shí)現(xiàn)為單個(gè)"可調(diào)用的"操 作的特定個(gè)別任務(wù)包括結(jié)構(gòu)取樣、運(yùn)動(dòng)搜索或運(yùn)動(dòng)補(bǔ)償、安全相關(guān)計(jì)算(例如,密碼、加密 等),特定金融計(jì)算、和/或特定科學(xué)計(jì)算。
[0026] 現(xiàn)代通用CPU核典型地能夠同時(shí)執(zhí)行多線程(例如因特爾處理器使用同時(shí)多線程 技術(shù))。注意的是,通用CPU102可以有一個(gè)或多個(gè)流水線以處理傳統(tǒng)指令。以多流水線同 時(shí)執(zhí)行多線程是直接的概念。但是,單個(gè)流水線還可以被設(shè)計(jì)以支持多線程的同時(shí)執(zhí)行。
[0027] 因此,如圖1所示,處理核100_1可以由特定的邏輯103設(shè)計(jì),邏輯103被設(shè)計(jì)為 允許由核的通用CPU102執(zhí)行的任何/所有多線程調(diào)用加速器101?;貞?,在通用CPU102和 加速器101之間更緊耦合的特征利用了在兩者之間相同的虛擬到物理的地址轉(zhuǎn)換,在多線 程核的情況下,每個(gè)線程可以有它自己獨(dú)特的虛擬到物理的地址轉(zhuǎn)換機(jī)制。
[0028] 因此,當(dāng)加速器執(zhí)行用于具體線程的任務(wù)時(shí),它采用了線程的虛擬到物理的地址 轉(zhuǎn)換機(jī)制(例如,通過在其中保持與用于線程的CPU102中的相同的轉(zhuǎn)換后備緩沖器(TLB) 中和/或在用于線程的CPU102中利用TLB)。參考圖2至圖5,關(guān)于用于特定邏輯103的可 能設(shè)計(jì)的細(xì)節(jié)將在下文更詳細(xì)地呈現(xiàn)。
[0029] 圖2描述機(jī)制的實(shí)施例,通過此機(jī)制線程可以調(diào)用加速器。如圖2所示,負(fù)責(zé)調(diào)用 特定加速器的目標(biāo)代碼在存儲(chǔ)器地址空間210塊中首先構(gòu)建用于加速器的命令。命令的內(nèi) 容是否真的存儲(chǔ)在存儲(chǔ)器中或在相同半導(dǎo)體芯片上的高速緩存中是設(shè)計(jì)者選擇的問題。
[0030] 當(dāng)寫命令時(shí),通用CPU202在存儲(chǔ)器地址空間210塊(無論在高速緩存或在系統(tǒng)存 儲(chǔ)器中)中寫。1)將執(zhí)行的任務(wù)211 ;和2)用于任務(wù)的輸入數(shù)據(jù)212。存儲(chǔ)器空間塊還擁 有用于關(guān)于任務(wù)的狀態(tài)信息213的空間,和用于指示執(zhí)行任務(wù)214中的任何錯(cuò)誤的空間字 段。CPU202可以初始設(shè)置狀態(tài)字段213以指示新請(qǐng)求是待定的。任務(wù)的輸出/結(jié)果215可 以被寫入在為輸入212保留的存儲(chǔ)器空間中和/或塊210內(nèi)放置輸入信息以外的額外地址 空間中。加速器201可以向任何字段213、214寫入且將輸出/結(jié)果寫入在存儲(chǔ)器地址空間 中。
[0031] 在命令被寫入存儲(chǔ)器地址空間中后,通用CPU202發(fā)送請(qǐng)求至排序緩沖器220。排 序緩沖器220為已經(jīng)調(diào)用加速器201的線程保留且本質(zhì)地對(duì)應(yīng)于用于追蹤和控制由線程對(duì) 加速器201做出的多請(qǐng)求的隊(duì)列或其他結(jié)構(gòu)。
[0032] 在實(shí)施例中,存在用于由通用CPU202支持的N個(gè)線程中的每一個(gè)線程的N個(gè)排序 緩沖器。根據(jù)一個(gè)實(shí)施例,如果通用CPU202可以支持最大量的N個(gè)活動(dòng)線程,則在核200 中的特定邏輯203被設(shè)計(jì)為還包括N個(gè)排序緩沖器(在最差情況下每個(gè)線程一個(gè)排序緩沖 器)。
[0033] 如果通用CPU202還支持活動(dòng)的線程轉(zhuǎn)換,其中M>N個(gè)線程被CPU202識(shí)別但只有 最大N個(gè)線程可同時(shí)活動(dòng)(目前能夠執(zhí)行目標(biāo)代碼),如果其正支持的線程被切換"在外" 以支持被切換"在內(nèi)"的另一個(gè)線程,排序緩沖器的內(nèi)容可以被切換。也就是說,當(dāng)線程被 切換到核200外作為其正在被帶出目前活動(dòng)狀態(tài)的部分時(shí),連同用于線程的通用CPU的相 關(guān)上下文信息一起(例如,內(nèi)部寄存器內(nèi)容),用于線程的排序緩沖器之內(nèi)的上下文信息被 切換到核200之外(例如進(jìn)入L2高速緩存或存儲(chǔ)器)。在它的位置,用于最近激活的線程 的對(duì)應(yīng)上下文信息被分別加載(例如,從L2高速緩存或存儲(chǔ)器)到通用CPU202和排序緩 沖器中。關(guān)于上下文切換的更多信息將在下文更詳細(xì)提供。
[0034] 回到圖2的描述,一旦線程已經(jīng)發(fā)送請(qǐng)求至其相應(yīng)排序緩沖器220用于由加速器 201執(zhí)行的具體任務(wù),該請(qǐng)求在線程的排序緩沖器220中有效地排隊(duì)直到其由控制對(duì)加速 器201的訪問的控制器230服務(wù)??刂破?30可以被設(shè)計(jì)為實(shí)現(xiàn)一個(gè)或多個(gè)各種負(fù)載平衡 技術(shù)和/或公平算法,例如,根據(jù)跨N個(gè)線程/排序緩沖器的循環(huán)服務(wù)方案允許訪問加速器 201。例如,這可以通過控制器230以循環(huán)方式輪詢每個(gè)排序緩沖器來實(shí)現(xiàn)。
[0035] -旦請(qǐng)求由控制器230服務(wù),該請(qǐng)求本質(zhì)上被轉(zhuǎn)發(fā)至加速器201。在實(shí)施例中,請(qǐng) 求240包括請(qǐng)求的任務(wù)211和相關(guān)輸入數(shù)據(jù)212所駐留的上述的存儲(chǔ)器地址空間210塊上 的存儲(chǔ)器地址指針216。在更多的實(shí)施例中,請(qǐng)求還包括輸入數(shù)據(jù)212大小217的指示。
[0036] 作為響應(yīng),加速器201取回任務(wù)211和輸入數(shù)據(jù)212,和在存儲(chǔ)器地址空間210的 適合部分中執(zhí)行特定的任務(wù)和寫回結(jié)果的信息。與任務(wù)相關(guān)聯(lián)的的狀態(tài)字段213由加速器 201設(shè)置以指示任務(wù)完成。初始發(fā)出對(duì)加速器的請(qǐng)求的線程還監(jiān)控狀態(tài)字段213并識(shí)別來 自加速器的操作的數(shù)據(jù)結(jié)果是可用的。在這一點(diǎn),線程開始利用結(jié)果且隨著依靠它的無論 什么操作向前移動(dòng)。
[0037] 此外,隨著請(qǐng)求的完成,控制器230自由地從考慮到控制器的負(fù)載平衡方案而適 合的任何排序緩沖器發(fā)送下一請(qǐng)求。恰當(dāng)?shù)氖亲⒁獾剑铀倨?01可以被設(shè)計(jì)為同時(shí)執(zhí)行 多個(gè)任務(wù)。例如,加速器201可以被設(shè)計(jì)為包括多功能單位,每個(gè)多功能單位被設(shè)計(jì)為處理 它自己的任務(wù)并可以同時(shí)或另外地與其他功能單位的操作并行操作。因此,在任何請(qǐng)求由 加速器完成之前,控制器230可以被設(shè)計(jì)為發(fā)送多個(gè)請(qǐng)求至加速器201。此外,如果任何兩 個(gè)或多個(gè)功能單位被設(shè)計(jì)為支持相同任務(wù),在任何一個(gè)請(qǐng)求完成之前,控制器可以發(fā)送相 同任務(wù)的多個(gè)請(qǐng)求至加速器。
[0038] 圖3示出用于具體線程的排序緩沖器320的示例性實(shí)施例和相關(guān)的狀態(tài)圖。如圖 3所示,頭、尾和下一指針指向在排序緩沖器320內(nèi)的特定條目。排序緩沖器320本質(zhì)上包 括從排序緩沖器專用于的線程最近發(fā)送的請(qǐng)求和每個(gè)該請(qǐng)求的狀態(tài)。如上文所提,每個(gè)請(qǐng) 求可以作為識(shí)別請(qǐng)求任務(wù)和輸入數(shù)據(jù)可以在哪里被找到的存儲(chǔ)器地址指針被嵌入。如上所 述,請(qǐng)求也可以包括輸入數(shù)據(jù)大小的指示(例如在高速緩存線的單元中)。排序緩沖器320 可以由用于保存實(shí)際請(qǐng)求的寄存器實(shí)現(xiàn),且邏輯電路可以被用來實(shí)現(xiàn)下文描述的指針和狀 態(tài)圖。
[0039] 在實(shí)施例中,除了其相關(guān)的請(qǐng)求,在緩沖器320中的每個(gè)條目可以指定請(qǐng)求狀態(tài)。 在更多的實(shí)施例中,每個(gè)請(qǐng)求的狀態(tài)是如下之一:
[0040] i)N…新:請(qǐng)求還沒有由控制器服務(wù)。
[0041] ii)E…執(zhí)行:請(qǐng)求由控制器服務(wù)且假設(shè)利用加速器執(zhí)行。
[0042] iii)D…完成:加速器已經(jīng)執(zhí)行由請(qǐng)求所請(qǐng)求的任務(wù)。
[0043] iv)P…頁面錯(cuò)誤:在試圖執(zhí)行所請(qǐng)求的任務(wù)時(shí)已經(jīng)引起頁面錯(cuò)誤。
[0044] v)I…條目無效。
[0045] 將在下文更充分地描述以上狀態(tài)的每一個(gè)。
[0046] 狀態(tài)圖301描述"下一"指針的操作。"下一"指針指向下一請(qǐng)求,下一請(qǐng)求在排序 緩沖器中被提供給控制器用于加速器的后續(xù)執(zhí)行。根據(jù)狀態(tài)圖301,下一指針持續(xù)地調(diào)整自 己以執(zhí)行排序緩沖器中具有新(N)狀態(tài)的最早條目。此處,條目在排序緩沖器中按以下順 序列出:從緩沖器的對(duì)應(yīng)的線程接收他們對(duì)應(yīng)的請(qǐng)求(例如,條目2的請(qǐng)求在條目1的請(qǐng)求 之后被接收)。因此,排序緩沖器被設(shè)計(jì)為以它們被線程發(fā)送的相同順序?qū)⒄?qǐng)求提供給控制 器。當(dāng)狀態(tài)N的請(qǐng)求由控制器服務(wù)時(shí),請(qǐng)求的狀態(tài)變?yōu)镋 (執(zhí)行)。因此,下一指針調(diào)節(jié)至下 一具有狀態(tài)N的最早請(qǐng)求。頻繁地,這是在緩沖器中的下一稍后條目。
[0047] 狀態(tài)圖302描述了"頭"指針的操作。頭指針指向在排序緩沖器中具有狀態(tài)D(完 成)或新(N)的最早條目。因此,頭指針本質(zhì)地指向最早"有效"請(qǐng)求(或,以另一方式來說, 還沒有完成的最早請(qǐng)求)。在典型的流程中,具有狀態(tài)D或N的最早條目是具有狀態(tài)E (執(zhí) 行)的最早請(qǐng)求。即,"頭"指針典型地指向在加速器中還在執(zhí)行的最早請(qǐng)求。
[0048] 當(dāng)由頭指針指向的請(qǐng)求最后成功完成時(shí),它的狀態(tài)在排序緩沖器中從E變?yōu)镈。因 此,頭指針需要移至緩沖器中的不具有狀態(tài)D或N的下一最早請(qǐng)求。典型地,這需要改變頭 指針以指向緩沖器中的下一更遲的條目。注意到,雖然這可能是通常的情況,但并不保證, 因?yàn)榧铀倨骺赡芡瑫r(shí)接受多個(gè)來自相同緩沖器的請(qǐng)求,且不同任務(wù)可能有不同執(zhí)行時(shí)間以 完成。因此,更遲的請(qǐng)求可能比更早的請(qǐng)求更早結(jié)束。因此,"EDE"的狀態(tài)模式和其類似 (兩個(gè)E之間的D)可以跨緩沖器條目存在。
[0049] 狀態(tài)圖303描述指向具有狀態(tài)N的最遲條目的尾指針的操作。頻繁地,緩沖器中 的具有狀態(tài)N的最遲條目是緩沖器中的最遲條目(是最近接收(最遲)的請(qǐng)求和還沒有被 服務(wù))。
[0050] 狀態(tài)圖304示出用于從排序緩沖器去除條目的狀態(tài)圖。根據(jù)該狀態(tài)圖,比具有狀 態(tài)E的最早條目更早的具有狀態(tài)D的任何條目從排序緩沖器被去除。
[0051] 在實(shí)施例中,沒有包括在頭和尾指針間的任何條目被給予無效狀態(tài)。
[0052] 圖4關(guān)于上下文切換的詳情。如圖4所觀察,排序緩沖器的相關(guān)邏輯接收指示,該 指示指出緩沖器專用的線程正在被切換出活動(dòng)狀態(tài)401。此后,從線程接收的任何請(qǐng)求被忽 視402(直到線程變回活動(dòng)狀態(tài))。頭和尾指針之間的緩沖器中的不具有完成(D)狀態(tài)的所 有條目從緩沖器清除且在外部存留403 (例如,保存在存儲(chǔ)器或高速緩存中)。
[0053] 此處,對(duì)于每個(gè)條目,存留存儲(chǔ)器地址指針、輸入數(shù)據(jù)大小和狀態(tài)指示。如同正在 被停用的線程的上下文,用于每個(gè)其條目正在被存留的任務(wù)的加速器上下文(例如加速器 寄存器空間中的數(shù)據(jù)值)也被存留。例如,線程的上下文可以包括通用CPU的寄存器中的 正在用以支持線程的值(除操作數(shù)數(shù)據(jù)之外,存儲(chǔ)在此寄存器中的其他值可以對(duì)應(yīng)于虛擬 至物理地址轉(zhuǎn)換)。
[0054] 其后,緩沖器重新專用的重新激活的線程的存留條目被加載進(jìn)緩沖器404。重新激 活的線程的存留狀態(tài)和用于正在被加載的任何緩沖器條目的加速器狀態(tài)各自被加載進(jìn)通 用CPU和加速器中。在實(shí)施例中,如果加速器沒有用于重新激活的線程的加速器任務(wù)的狀 態(tài)信息的空間(例如,因?yàn)檎诨謴?fù)的加速器任務(wù)與現(xiàn)在執(zhí)行的另一個(gè)線程的有效任務(wù)是 相同的),當(dāng)空間可用時(shí),該加速器被配置為加載存留的狀態(tài)信息。
[0055] 使用對(duì)該情況的認(rèn)知,控制器可以被設(shè)計(jì)為防止從另一個(gè)線程至加速器對(duì)具體任 務(wù)的任何更多發(fā)送,直到重新恢復(fù)的加速器任務(wù)被加載和完成。一旦緩沖器以存留的條目 被加載,且存留的加速器任務(wù)的狀態(tài)被加載入加速器,當(dāng)重新恢復(fù)的線程先被放入不活動(dòng) 狀態(tài)時(shí),加速器可以"在其停止處撿起(pick up)"。
[0056] 某些時(shí)間后,重新激活的線程被停用405且在過程401-403中不活動(dòng)的原始線程 參考過程404通過以上描述的本質(zhì)上相同的過程被重新設(shè)定。
[0057] 圖5示出頁面錯(cuò)誤的處理。此處,回想到,加速器可以被設(shè)計(jì)為參考與調(diào)用加速器 的通用CPU的線程相同的虛擬地址空間和利用與調(diào)用加速器的通用CPU的線程相同的虛擬 至物理地址轉(zhuǎn)換。由此,正如通用CPU可以遭受頁面錯(cuò)誤,加速器也可以。頁面錯(cuò)誤本質(zhì)上 對(duì)應(yīng)在虛擬至物理地址轉(zhuǎn)換中由硬件對(duì)問題的識(shí)別,該硬件嘗試通過轉(zhuǎn)換定位數(shù)據(jù)或指令 (例如轉(zhuǎn)換丟失,虛擬地址無效等)。
[0058] 如圖5所示,當(dāng)加速器在執(zhí)行具體請(qǐng)求任務(wù)中檢測(cè)到頁面錯(cuò)誤時(shí),控制器或加速 器將對(duì)應(yīng)緩沖器條目中的狀態(tài)從執(zhí)行(E)變?yōu)轫撁驽e(cuò)誤(PF)501。在實(shí)施例中,控制器或加 速器在為請(qǐng)求保留的存儲(chǔ)器地址空間塊的錯(cuò)誤狀態(tài)部分中指示頁面錯(cuò)誤,和在存儲(chǔ)器地址 空間塊的錯(cuò)誤部分中寫入指定頁面錯(cuò)誤類型的代碼502。
[0059] 然后頁面錯(cuò)誤被處理503。頁面錯(cuò)誤處理在本領(lǐng)域公知且因此不需詳細(xì)地重復(fù)。 頁面錯(cuò)誤處理是經(jīng)常伴隨著不合適轉(zhuǎn)換被糾正或以其它方式被固定的過程,通過此過程檢 測(cè)的頁面錯(cuò)誤被解決。一般地,頁面錯(cuò)誤可以在軟件或硬件中被處理。在硬件頁面錯(cuò)誤處 理情況下,特定的邏輯電路被設(shè)計(jì)為探查錯(cuò)誤的類型(例如,未命中轉(zhuǎn)換、無效的虛擬地址 等)和提供可能的正確動(dòng)作。
[0060] 在軟件頁面錯(cuò)誤處理情況下,典型地,檢測(cè)頁面錯(cuò)誤的硬件拋出異常,且寫指示錯(cuò) 誤類型的錯(cuò)誤代碼。用戶、操作系統(tǒng)或虛擬機(jī)監(jiān)控進(jìn)程接著檢測(cè)拋來的異常且嘗試糾正問 題。在本討論中,負(fù)責(zé)處理頁面錯(cuò)誤的硬件和/或軟件負(fù)責(zé)錯(cuò)誤的檢測(cè)且在存儲(chǔ)器地址塊 的錯(cuò)誤部分中查看核以了解問題的準(zhǔn)確本質(zhì)。
[0061] 當(dāng)頁面錯(cuò)誤被解決,例如通過固定轉(zhuǎn)換問題解決時(shí),檢查排序緩沖器以確定具有 頁面錯(cuò)誤請(qǐng)求的排序緩沖器中的哪些請(qǐng)求還沒有完成504。此處,完全可能的是其他請(qǐng) 求-甚至于比錯(cuò)誤請(qǐng)求更遲發(fā)送(至排序緩沖器和/或加速器)的請(qǐng)求-可能不會(huì)遭受頁 面錯(cuò)誤和相應(yīng)地完成。因此,僅那些在頁面錯(cuò)誤被認(rèn)為處理時(shí)仍保持未完成的請(qǐng)求從控制 器重新發(fā)送至加速器504。在實(shí)施例中,僅通過在隊(duì)列中移動(dòng)下一指針以指向頭位置來完成 它。
[0062] 示例性計(jì)算機(jī)架構(gòu)
[0063] 圖6-9是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的對(duì)膝上型設(shè)備、臺(tái)式機(jī)、手持 PC、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)中樞、交換機(jī)、嵌入式處理器、數(shù)字 信號(hào)處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放 器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般來說,能夠含 有本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。
[0064] 現(xiàn)在參考圖6,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)600的框圖。系統(tǒng)600可 以包括一個(gè)或多個(gè)處理器610、615,這些處理器耦合到控制器中樞620。在一個(gè)實(shí)施例中, 控制器中樞620包括圖形存儲(chǔ)器控制器中樞(GMCH) 690和輸入/輸出中樞(Ι0Η) 650 (其可 以在分開的芯片上);GMCH 690包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器640和協(xié)處理器645耦合 到該圖形控制器;I0H650將輸入/輸出(I/O)設(shè)備660耦合到GMCH 690。替換地,存儲(chǔ)器 和圖形控制器中的一個(gè)或兩個(gè)集成在處理器(如本文中所描述的)內(nèi),存儲(chǔ)器640和協(xié)處 理器645直接耦合到處理器610,且控制器中樞620與I0H650在單一芯片中。
[0065] 附加處理器615的可選性質(zhì)用虛線表不在圖6中。每一處理器610、615可包括本 文中描述的處理核中的一個(gè)或多個(gè),并且可以是處理器1100的某一版本。
[0066] 存儲(chǔ)器640可以是例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、相變存儲(chǔ)器(PCM)或這兩者 的組合。對(duì)于至少一個(gè)實(shí)施例,控制器中樞620經(jīng)由諸如前端總線(FSB)之類的多點(diǎn)總線 (multi-drop bus)、諸如快速通道互連(QPI)之類的點(diǎn)對(duì)點(diǎn)接口、或者類似的連接695與處 理器610、615進(jìn)行通信。
[0067] 在一個(gè)實(shí)施例中,協(xié)處理器645是專用處理器,諸如例如高吞吐量MIC處理器、網(wǎng) 絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。在一個(gè)實(shí)施例中,控 制器中樞620可以包括集成圖形加速器。
[0068] 按照包括架構(gòu)、微架構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源610、615之間 存在各種差別。
[0069] 在一個(gè)實(shí)施例中,處理器610執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。嵌入在 這些指令中的可以是協(xié)處理器指令。處理器610將這些協(xié)處理器指令識(shí)別為應(yīng)當(dāng)由附連的 協(xié)處理器645執(zhí)行的類型。因此,處理器610在協(xié)處理器總線或者其他互連上將這些協(xié)處 理器指令(或者表示協(xié)處理器指令的控制信號(hào))發(fā)布到協(xié)處理器645。協(xié)處理器645接受 并執(zhí)行所接收的協(xié)處理器指令。
[0070] 現(xiàn)在參照?qǐng)D7,所示出的是根據(jù)本發(fā)明實(shí)施例的更具體的第一示例性系統(tǒng)700的 框圖。如圖7所示,多處理器系統(tǒng)700是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連750耦合 的第一處理器770和第二處理器780。處理器770和780中的每一個(gè)都可以是處理器1100 的某一版本。在本發(fā)明的一個(gè)實(shí)施例中,處理器770和780分別是處理器610和615,而協(xié) 處理器738是協(xié)處理器645。在另一實(shí)施例中,處理器770和780分別是處理器610和協(xié)處 理器645。
[0071] 處理器770和780被示為分別包括集成存儲(chǔ)器控制器(MC)單元772和782。處 理器770還包括作為其總線控制器單元的一部分的點(diǎn)對(duì)點(diǎn)(P-P)接口 776和778 ;類似地, 第二處理器780包括點(diǎn)對(duì)點(diǎn)接口 786和788。處理器770、780可以使用點(diǎn)對(duì)點(diǎn)(P-P)接口 電路778、788經(jīng)由P-P接口 750來交換信息。如圖7所示,MC 772和782將諸處理器耦 合至相應(yīng)的存儲(chǔ)器,即存儲(chǔ)器732和存儲(chǔ)器734,這些存儲(chǔ)器可以是本地附連至相應(yīng)的處理 器的主存儲(chǔ)器的一部分。
[0072] 處理器770、780可各自使用點(diǎn)對(duì)點(diǎn)接口電路776、794、786、798經(jīng)由各個(gè)P-P接口 752、754與芯片組790交換信息。芯片組790可以可選地經(jīng)由高性能接口 739與協(xié)處理器 738交換信息。在一個(gè)實(shí)施例中,協(xié)處理器738是專用處理器,諸如例如高吞吐量MIC處理 器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等等。
[0073] 共享高速緩存(未示出)可以被包括在兩個(gè)處理的任一個(gè)之內(nèi)或被包括兩個(gè)處理 器外部但仍經(jīng)由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時(shí),可 將任一處理器或兩個(gè)處理器的本地高速緩存信息存儲(chǔ)在該共享高速緩存中。
[0074] 芯片組790可經(jīng)由接口 796耦合至第一總線716。在一個(gè)實(shí)施例中,第一總線716 可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之 類的總線,但本發(fā)明的范圍并不受此限制。
[0075] 如圖7所示,各種I/O設(shè)備714可以連同總線橋718耦合到第一總線716,總線橋 718將第一總線716耦合至第二總線720。在一個(gè)實(shí)施例中,諸如協(xié)處理器、高吞吐量MIC處 理器、GPGPU的處理器、加速器(諸如例如圖形加速器或數(shù)字信號(hào)處理器(DSP)單元)、現(xiàn)場(chǎng) 可編程門陣列或任何其他處理器的一個(gè)或多個(gè)附加處理器715被耦合到第一總線716。在 一個(gè)實(shí)施例中,第二總線720可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以被耦合至第二 總線720,在一個(gè)實(shí)施例中這些設(shè)備包括例如鍵盤/鼠標(biāo)722、通信設(shè)備727以及諸如可包 括指令/代碼和數(shù)據(jù)730的盤驅(qū)動(dòng)器或其它海量存儲(chǔ)設(shè)備的存儲(chǔ)單元728。此外,音頻I/O 724可以被耦合至第二總線720。注意,其它架構(gòu)是可能的。例如,代替圖7的點(diǎn)對(duì)點(diǎn)架構(gòu), 系統(tǒng)可實(shí)現(xiàn)多點(diǎn)總線或者其他此類架構(gòu)。
[0076] 現(xiàn)在參考圖8,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的更具體的第二示例性系統(tǒng)800 的方框圖。圖7和圖8中的相同部件用相同附圖標(biāo)記表示,并從圖8中省去了圖7中的某 些方面,以避免使圖8的其它方面變得難以理解。
[0077] 圖8例示了處理器770、780可分別包括集成存儲(chǔ)器和I/O控制邏輯(CL) 772和 782。因此,CL 772、782包括集成存儲(chǔ)器控制器單元并包括I/O控制邏輯。圖8示出:不僅 存儲(chǔ)器732、734耦合至CL 772、782, I/O設(shè)備814也耦合至控制邏輯772、782。傳統(tǒng)I/O設(shè) 備815被耦合至芯片組790。
[0078] 現(xiàn)在參照?qǐng)D9,所示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的SoC 900的框圖。虛線框是 更先進(jìn)的SoC的可選特征。在圖9中,互連單元902被耦合至:應(yīng)用處理器910,該應(yīng)用處 理器包括一個(gè)或多個(gè)核902A-N的集合以及共享高速緩存單元906 ;系統(tǒng)代理單元910 ;總 線控制器單元916 ;集成存儲(chǔ)器控制器單元914 ;一組或一個(gè)或多個(gè)協(xié)處理器920,其可包括 集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)單元 930 ;直接存儲(chǔ)器存?。―MA)單元932 ;以及用于耦合至一個(gè)或多個(gè)外部顯示器的顯示單元 940。在一個(gè)實(shí)施例中,協(xié)處理器920包括專用處理器,諸如例如網(wǎng)絡(luò)或通信處理器、壓縮引 擎、GPGPU、高吞吐量MIC處理器、或嵌入式處理器等等。
[0079] 本文公開的機(jī)制的各實(shí)施例可以被實(shí)現(xiàn)在硬件、軟件、固件或這些實(shí)現(xiàn)方法的組 合中。本發(fā)明的實(shí)施例可實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,該可編程 系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至 少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。
[0080] 諸如圖7所示的代碼730之類的程序代碼可應(yīng)用于輸入指令,以執(zhí)行本文中所描 述的功能并生成輸出信息。輸出信息可以按已知方式被應(yīng)用于一個(gè)或多個(gè)輸出設(shè)備。為了 本申請(qǐng)的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電 路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。
[0081] 程序代碼可以用高級(jí)程序化語言或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),以便與處理系統(tǒng) 通信。程序代碼也可以在需要的情況下用匯編語言或機(jī)器語言來實(shí)現(xiàn)。事實(shí)上,本文中描 述的機(jī)制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解譯 語目。
[0082] 至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面可以由存儲(chǔ)在機(jī)器可讀介質(zhì)上的代表性指令 來實(shí)現(xiàn),該指令表示處理器中的各種邏輯,該指令在被機(jī)器讀取時(shí)使得該機(jī)器制作用于執(zhí) 行本文所述的技術(shù)的邏輯。被稱為"IP核"的這些表示可以被存儲(chǔ)在有形的機(jī)器可讀介質(zhì) 上,并被提供給各種客戶或生產(chǎn)設(shè)施以加載到實(shí)際制造該邏輯或處理器的制造機(jī)器中。
[0083] 這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于通過機(jī)器或設(shè)備制造或形成的制品 的非瞬態(tài)、有形配置,其包括存儲(chǔ)介質(zhì),諸如硬盤;任何其它類型的盤,包括軟盤、光盤、緊致 盤只讀存儲(chǔ)器(CD-ROM)、緊致盤可重寫(CD-RW)的以及磁光盤;半導(dǎo)體器件,例如只讀存儲(chǔ) 器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)的隨機(jī)存取存儲(chǔ) 器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPR0M); 相變存儲(chǔ)器(PCM);磁卡或光卡;或適于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。
[0084] 因此,本發(fā)明的各實(shí)施例還包括非瞬態(tài)、有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包 含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/ 或系統(tǒng)特性。這些實(shí)施例也被稱為程序產(chǎn)品。
[0085] 仿真(包括二進(jìn)制變換、代碼變形等)
[0086] 在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如, 指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制變換)、變形 (morph)、仿真或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個(gè)或多個(gè)其它指令。指令轉(zhuǎn)換 器可以用軟件、硬件、固件、或其組合實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者 部分在處理器上部分在處理器外。
[0087] 圖10是根據(jù)本發(fā)明的實(shí)施例的對(duì)照使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制 指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指 令轉(zhuǎn)換器,但作為替代該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實(shí)現(xiàn)。圖10示 出了用高級(jí)語言1002的程序可以使用x86編譯器1004來編譯,以生成可以由具有至少一 個(gè)x86指令集核的處理器1016原生執(zhí)行的x86二進(jìn)制代碼1006。具有至少一個(gè)x86指令 集核的處理器1016表示任何處理器,這些處理器能通過兼容地執(zhí)行或以其他方式處理以 下內(nèi)容來執(zhí)行與具有至少一個(gè)x86指令集核的英特爾處理器基本相同的功能:1)英特爾 x86指令集核的指令集的本質(zhì)部分(substantial portion),或2)目標(biāo)旨在在具有至少一 個(gè)x86指令集核的英特爾處理器上運(yùn)行的應(yīng)用或其它程序的對(duì)象代碼版本,以便取得與具 有至少一個(gè)x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器1004表示用于生成 x86二進(jìn)制代碼1006 (例如,對(duì)象代碼)的編譯器,該二進(jìn)制代碼1006可通過或不通過附加 的可鏈接處理在具有至少一個(gè)x86指令集核的處理器1016上執(zhí)行。類似地,圖10示出用高 級(jí)語言1002的程序可以使用替代的指令集編譯器1008來編譯,以生成可以由不具有至少 一個(gè)x86指令集核的處理器1014 (例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公 司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核 的處理器)來原生執(zhí)行的替代指令集二進(jìn)制代碼1010。指令轉(zhuǎn)換器1012被用來將x86二 進(jìn)制代碼1006轉(zhuǎn)換成可以由不具有x86指令集核的處理器1014原生執(zhí)行的代碼。該經(jīng)轉(zhuǎn) 換的代碼不大可能與替換性指令集二進(jìn)制代碼1010相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器 難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替換性指令集的指令構(gòu)成。因此, 指令轉(zhuǎn)換器1012表示:通過仿真、模擬或任何其它過程來允許不具有x86指令集處理器或 核的處理器或其它電子設(shè)備得以執(zhí)行x86二進(jìn)制代碼1006的軟件、固件、硬件或其組合。
【權(quán)利要求】
1. 一種裝置,包括: 多個(gè)核,每個(gè)核具有: a) CPU ; b) 加速器; 在所述CPU和所述加速器之間耦合的控制器以及多個(gè)排序緩沖器,每個(gè)所述排序緩沖 器專用于所述CPU的線程中不同的一個(gè)線程,每一個(gè)所述的排序緩沖器保持從其相應(yīng)的線 程發(fā)送至所述加速器的一個(gè)或多個(gè)請(qǐng)求,所述控制器控制將所述排序緩沖器各自的請(qǐng)求發(fā) 送至所述加速器。
2. 如權(quán)利要求1所述的裝置,其特征在于,所述請(qǐng)求中的一個(gè)由標(biāo)識(shí)存儲(chǔ)器地址的指 針組成,在所述存儲(chǔ)器地址中能找到用于所述加速器的所述請(qǐng)求的相關(guān)輸入數(shù)據(jù)。
3. 如權(quán)利要求2所述的裝置,其特征在于,所述請(qǐng)求還由指示所述輸入數(shù)據(jù)有多大的 指示符組成。
4. 如權(quán)利要求3所述的裝置,其特征在于,所述輸入數(shù)據(jù)的大小被指定為高速緩存線 的數(shù)量。
5. 如權(quán)利要求1所述的裝置,其特征在于,所述請(qǐng)求的狀態(tài)信息與所述輸入數(shù)據(jù)一起 被存儲(chǔ)。
6. 如權(quán)利要求1所述的裝置,其特征在于,所述加速器使用與已經(jīng)請(qǐng)求所述加速器執(zhí) 行任務(wù)的所述CPU上的線程相同的虛擬到物理地址轉(zhuǎn)換。
7. 如權(quán)利要求1所述的裝置,其特征在于,所述加速器具有多個(gè)功能單元從而使得所 述加速器能夠同時(shí)執(zhí)行多個(gè)任務(wù)。
8. 如權(quán)利要求7所述的裝置,其特征在于,所述加速器能同時(shí)執(zhí)行同一個(gè)任務(wù)的不同 例程。
9. 一種方法,包括: 在多核半導(dǎo)體芯片的核內(nèi)的CPU上執(zhí)行第一和第二線程; 將第一加速請(qǐng)求從所述第一線程發(fā)送至專用于所述第一線程的第一排序緩沖器; 將第二加速請(qǐng)求從所述第二線程發(fā)送至專用于所述第二線程的第二排序緩沖器; 將所述第一加速請(qǐng)求從所述第一排序緩沖器發(fā)送到加速器,所述加速器使用由所述第 一線程使用的第一虛擬到物理地址轉(zhuǎn)換機(jī)制處理所述第一請(qǐng)求;以及 將所述第二加速請(qǐng)求從所述第二排序緩沖器發(fā)送到加速器,所述加速器使用由所述第 二線程使用的第二虛擬到物理地址轉(zhuǎn)換機(jī)制處理所述第二請(qǐng)求。
10. 如權(quán)利要求9所述的方法,其特征在于,所述第一請(qǐng)求包含標(biāo)識(shí)所述第一任務(wù)的輸 入數(shù)據(jù)能在哪里找到的存儲(chǔ)器地址指針。
11. 如權(quán)利要求10所述的方法,其特征在于,所述第一請(qǐng)求還包含關(guān)于所述輸入數(shù)據(jù) 有多大的指示。
12. 如權(quán)利要求11所述的方法,其特征在于,所述指示被表達(dá)為高速緩存線的數(shù)量。
13. 如權(quán)利要求9所述的方法,其特征在于,還包括在所述第一請(qǐng)求被所述第一排序緩 沖器接收后在所述第一排序緩沖器中將所述第一請(qǐng)求的狀態(tài)標(biāo)識(shí)為新請(qǐng)求,以及調(diào)節(jié)尾指 針指向所述排序緩沖器中的所述第一請(qǐng)求的條目。
14. 如權(quán)利要求13所述的方法,其特征在于,還包括當(dāng)所述第一請(qǐng)求為所述第一排序 緩沖器中最早的新條目時(shí)調(diào)節(jié)下一指針以指向所述排序緩沖器中所述第一請(qǐng)求的條目。
15. 如權(quán)利要求14所述的方法,其特征在于,還包括當(dāng)所述第一請(qǐng)求被傳遞至所述加 速器時(shí)將所述排序緩沖器中所述第一請(qǐng)求的狀態(tài)從新的改變?yōu)檎趫?zhí)行,并且當(dāng)所述第一 請(qǐng)求為所述第一排序緩沖器中最老的未完成請(qǐng)求時(shí)調(diào)節(jié)頭指針指向所述第一排序緩沖器 中的所述第一請(qǐng)求的條目。
16. 如權(quán)利要求15所述的方法,其特征在于,還包括在所述加速器完成所述第一請(qǐng)求 的相關(guān)任務(wù)后將所述第一請(qǐng)求的狀態(tài)從正在執(zhí)行改變?yōu)橐淹瓿桑⑶覐乃龅谝慌判蚓彌_ 器中刪除所述第一請(qǐng)求。
17. -種方法,包括: 在多核半導(dǎo)體芯片的核內(nèi)的CPU上執(zhí)行第一和第二線程; 將第一加速請(qǐng)求從所述第一線程發(fā)送至專用于所述第一線程的第一排序緩沖器; 將第二加速請(qǐng)求從所述第二線程發(fā)送至專用于所述第二線程的第二排序緩沖器; 將所述第一加速請(qǐng)求從所述第一排序緩沖器發(fā)送到加速器,所述加速器使用由所述第 一線程使用的第一虛擬到物理地址轉(zhuǎn)換機(jī)制處理所述第一請(qǐng)求;以及 將所述第二加速請(qǐng)求從所述第二排序緩沖器發(fā)送到加速器,所述加速器使用由所述第 二線程使用的第二虛擬到物理地址轉(zhuǎn)換機(jī)制處理所述第二請(qǐng)求;以及 將所述第一線程從活動(dòng)狀態(tài)切換至非活動(dòng)狀態(tài)并且將第三進(jìn)程從非活動(dòng)狀態(tài)切換至 活動(dòng)狀態(tài),包括用來自所述第三線程的請(qǐng)求替換具有來自所述第一線程的請(qǐng)求的所述第一 排序緩沖器的內(nèi)容。
18. 如權(quán)利要求17所述的方法,其特征在于,所述切換所述第一線程以及所述切換所 述第三線程包括將所述第一線程的虛擬到物理地址轉(zhuǎn)換切換出所述CPU外,以及,將所述 第三線程的虛擬到物理地址轉(zhuǎn)換切換到所述CPU內(nèi)。
19. 如權(quán)利要求18所述的方法,其特征在于,所述加速器同時(shí)處理所述第一和第二請(qǐng) 求。
20. 如權(quán)利要求17所述的方法,其特征在于,所述加速器檢測(cè)到在處理所述第二請(qǐng)求 中的頁面錯(cuò)誤并且將所述頁面錯(cuò)誤的指示寫入存儲(chǔ)所述第二請(qǐng)求的輸入數(shù)據(jù)的存儲(chǔ)器地 址空間塊中。
【文檔編號(hào)】G06F9/38GK104221005SQ201280072132
【公開日】2014年12月17日 申請(qǐng)日期:2012年3月30日 優(yōu)先權(quán)日:2012年3月30日
【發(fā)明者】R·羅恩, B·靳茲伯格, E·威斯曼 申請(qǐng)人:英特爾公司