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

與不同種類的資源通信的基于指令系統(tǒng)結(jié)構(gòu)的內(nèi)定序器的制作方法

文檔序號(hào):6557441閱讀:252來源:國(guó)知局
專利名稱:與不同種類的資源通信的基于指令系統(tǒng)結(jié)構(gòu)的內(nèi)定序器的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實(shí)施例涉及改善基于處理器的系統(tǒng)中的通信,尤其涉及一種包括多個(gè)定序器的系統(tǒng)。
背景技術(shù)
計(jì)算機(jī)系統(tǒng)包括各種組件以便處理和傳送數(shù)據(jù)。一般的系統(tǒng)包括一個(gè)或多個(gè)處理器,每個(gè)處理器可以包括多個(gè)核,以及相關(guān)的存儲(chǔ)器,輸入/輸出(I/O)設(shè)備和其它這樣的組件。為了提高計(jì)算效率,計(jì)算加速器,專用的I/O設(shè)備及其他這樣的專用單元可以通過一個(gè)或多個(gè)專用的組件提供,在這里一般被稱為輔助單元。然而,在使用這種輔助單元的過程中可能出現(xiàn)低效率,因?yàn)樵趫?zhí)行通用處理器的一般的計(jì)算環(huán)境和行業(yè)標(biāo)準(zhǔn)操作系統(tǒng)(OS)環(huán)境中,軟件棧可能阻止高效的使用。也就是說,在一般的操作系統(tǒng)環(huán)境中,通過不同的特權(quán)級(jí)別將系統(tǒng)軟件與應(yīng)用軟件隔離,并且在這些不同的特權(quán)級(jí)別的每一個(gè)中的操作受限于OS環(huán)境的保存和恢復(fù)操作,以及其它限制。
因此每當(dāng)包括諸如專用加速器之類的輔助單元時(shí),該單元通常被展示為一個(gè)設(shè)備而用戶級(jí)應(yīng)用程序只能通過OS的設(shè)備驅(qū)動(dòng)程序軟件棧間接地使用輔助單元,而該應(yīng)用程序可以直接訪問原始物理輔助單元資源。因此,通過相關(guān)的設(shè)備驅(qū)動(dòng)程序的輔助單元資源是全系統(tǒng)范圍的資源而不是諸如通過上下文轉(zhuǎn)換而虛擬化的通用寄存器、虛擬存儲(chǔ)器或定序器之類的應(yīng)用程序級(jí)資源。
不得不使用設(shè)備驅(qū)動(dòng)程序來訪問輔助單元的問題是效率低(根據(jù)從驅(qū)動(dòng)器應(yīng)用程序到輔助單元的路徑長(zhǎng)度),以及由于強(qiáng)加的OS限制相關(guān)的″標(biāo)準(zhǔn)化″驅(qū)動(dòng)程序接口而不靈活。
計(jì)算加速器的范例是諸如數(shù)學(xué)協(xié)處理器(像所謂的用于早期的英特爾體系結(jié)構(gòu)(IA)-32處理器的x87浮點(diǎn)協(xié)處理器)之類的協(xié)處理器。一般地,這種協(xié)處理器通過協(xié)處理器接口與主處理器(例如,中央處理單元(CPU))耦合,其就像主處理器一樣具有普通的指令系統(tǒng)結(jié)構(gòu)(ISA)。此外,通過傳統(tǒng)的退出/等待信號(hào)協(xié)議在這些資源之間進(jìn)行交互,其中主處理器處于等待狀態(tài)同時(shí)協(xié)處理器執(zhí)行它的請(qǐng)求功能,在交互結(jié)束時(shí)控制返回主處理器。然而,在協(xié)處理器操作期間,主處理器不能執(zhí)行有用功而是等待來自于協(xié)處理器的結(jié)果。也就是說,協(xié)處理器被集成以致它結(jié)構(gòu)上用主處理器的控制流的程序指令順序地操作。這導(dǎo)致處理器利用的低效率,特別是,當(dāng)協(xié)處理器能夠和主處理器上的計(jì)算同時(shí)操作時(shí)。因此存在對(duì)改進(jìn)與這種輔助單元通信以及使用這種輔助單元的方式的需要。


圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的方框圖。
圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的一部分的方框圖。
圖3是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的系統(tǒng)的一部分的方框圖。
圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)的方框圖。
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例,與處理器中執(zhí)行的操作相應(yīng)的方法的流程圖。
圖6是根據(jù)本發(fā)明的實(shí)施例,與加速器中執(zhí)行的操作相應(yīng)的方法的流程圖。
圖7是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的系統(tǒng)的方框圖。
具體實(shí)施例方式
在各種實(shí)施例中,提供多種結(jié)構(gòu)以使基于指令系統(tǒng)結(jié)構(gòu)(ISA)的內(nèi)定序器能夠通信。正如這里所使用的,″定序器″是獨(dú)特的線程執(zhí)行資源并且可能是任何能夠執(zhí)行線程的物理或邏輯單元。定序器可能是邏輯線程單元或物理線程單元,并且可能包括下一指令指針邏輯以便確定將對(duì)給定的線程執(zhí)行的下一指令。
更具體來講,可以在第一ISA的第一定序器和不同種類的第二資源之間實(shí)現(xiàn)基于ISA的內(nèi)定序器通信,第二資源可以是定序器或非定序器。也就是說,第二資源可以是不同ISA的定序器或者可以是非定序器資源,諸如固定功能單元(FFU)、專用集成電路(ASIC)或其他預(yù)編程邏輯。在各種實(shí)施例中,中間物或接口,在此稱為″外骨骼″,可以提供在這些不同種類的資源之間的通信。在不同的實(shí)施例中外骨骼可以采用各種形式,包括軟件、硬件和/或固件。在一些實(shí)施例中,可以在緊緊地耦合到不同種類資源的有限狀態(tài)機(jī)(FSM)中實(shí)現(xiàn)該外骨骼。當(dāng)然,其它實(shí)現(xiàn)方式是可能的。
現(xiàn)在參考圖1,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的方框圖。如圖1中所示,處理器10包括各種不同的資源。在不同的實(shí)現(xiàn)方式中,處理器10可以是單核處理器或多核處理器。可以在不同類型的系統(tǒng)中實(shí)現(xiàn)這樣的處理器,包括芯片多處理器(CMP)系統(tǒng)或同步的多線程(SMT)系統(tǒng)或接通事件多線程(SoeMT)系統(tǒng),以及其它這樣的系統(tǒng)。
如圖1中所示,處理器10包括多個(gè)定序器20a,20b,20c,和20d(即,定序器1-4,和一般的定序器20)。雖然在圖1的實(shí)施例中用示出了四個(gè)這樣的定序器,應(yīng)當(dāng)理解本發(fā)明的范圍不因此受限。如圖1中所示,處理器10中的定序器20實(shí)現(xiàn)ISA30,在一個(gè)實(shí)施例中其可以是英特爾體系結(jié)構(gòu)(IA-32)指令系統(tǒng)結(jié)構(gòu)和/或它的64位擴(kuò)展名(也叫英特爾擴(kuò)展內(nèi)存64位技術(shù)(EM64T))。處理器10進(jìn)一步包括其它資源,包括第一資源(即,資源1)50a,第二資源(即,資源2)50b,和第三資源50c(即,資源3)(以及一般的資源50)。這些資源可以是不同種類的資源,它們沒有實(shí)現(xiàn)處理器10的ISA30。雖然圖1的實(shí)施例中顯示為包括三個(gè)這樣的資源,但是在不同的實(shí)施例中可能包括更多的或更少的這樣的資源。
每個(gè)資源50包括定序器(其可以實(shí)現(xiàn)為不同于ISA30的ISA)、非定序器處理引擎、或其它特殊功能邏輯,在這里一般稱為加速器。在不同的實(shí)施例中,不同類型的資源可以實(shí)現(xiàn)為加速器,包括圖形處理單元(GPU)(典型的定序器)、加密單元(典型的非定序器)、物理處理單元(PPU)(典型的非定序器)、固定功能單元(FFU)(典型的非定序器)等等。如圖1中所示,每個(gè)資源50可以包括加速器52(統(tǒng)稱),更具體地,每個(gè)加速器52a,52b,和52c與資源50a-50c之一有關(guān)。在這里加速器52也被稱為輔助單元。因?yàn)橘Y源50a-50c可以是另一個(gè)ISA或者甚至可以是非定序器并且因而可能相對(duì)于定序器20是不同種類的,一個(gè)接口可用于提供與這種資源通信的能力。特別地如圖1中所示,外骨骼54a,54b,和54c(統(tǒng)稱外骨骼54)可以與資源50中的每一個(gè)有關(guān)。每個(gè)資源50因此可以被稱為表示外骨骼54和它的相關(guān)加速器52之間緊密耦合的″外定序器″。用這樣的方式,這些不同種類的資源可以和支持內(nèi)定序器通信(和/或如果可用的話基于共享存儲(chǔ)器的尋址)的統(tǒng)一的ISA結(jié)構(gòu)中的同類定序器資源集成在一起。此外,各種資源可以以并行方式,例如,以多指令多數(shù)據(jù)(MIMD)方式執(zhí)行,以便可以同時(shí)使用每個(gè)資源以提高性能。
然而在其它實(shí)施例中,資源50可以是相對(duì)于定序器20同類的定序器資源并且可以是對(duì)稱的核以致它們包括與定序器20相同或類似的體系結(jié)構(gòu)。以這種方式,可以實(shí)現(xiàn)并行光纖并且可以增強(qiáng)傳統(tǒng)OS的可量測(cè)性。更進(jìn)一步,在其它實(shí)現(xiàn)方式中資源50可以是不對(duì)稱的核。換句話說,這些資源可以是與定序器20相同的ISA,但是是不同的微體系結(jié)構(gòu)。這種實(shí)施例可以幫助管理不對(duì)稱并且提供與傳統(tǒng)OS的兼容性。
對(duì)于實(shí)現(xiàn)不同種類的資源的實(shí)施例,根據(jù)一個(gè)實(shí)施例,外骨骼可能提供這些不同種類的資源具有通用的ISA以便對(duì)于內(nèi)定序器通信實(shí)現(xiàn)最小限度符合的錯(cuò)覺。因此在各種實(shí)施例中,不同種類的資源可以起用戶級(jí)功能單元資源(而不是系統(tǒng)級(jí)設(shè)備)的作用。換句話說,各種用戶級(jí)應(yīng)用程序可以直接與加速器通信并且訪問加速器以致它變成用戶級(jí)功能單元。以這種方式,各種加速器資源可以變成管理的ISA的不同種類的組件。
例如,每個(gè)外定序器或資源50可以展示為具有像″包裝紙″的外骨骼54的定序器的專用計(jì)算加速器,以便可以由作為用戶級(jí)不同種類的計(jì)算資源,諸如MIMD資源的應(yīng)用程序直接使用這些加速器52。
因此,應(yīng)用程序設(shè)計(jì)員可以直接使用用戶級(jí)ISA30以編程這些輔助單元52,即使輔助單元本身物理上不必要具有ISA30。進(jìn)一步,程序員可以使用統(tǒng)一的ISA結(jié)構(gòu)來編程不同組不同種類的輔助單元,每個(gè)輔助單元具有獨(dú)特的″特征″(根據(jù)ISA或設(shè)備屬性)。實(shí)際上,根據(jù)本發(fā)明的實(shí)施例,外定序器允許程序員短路傳統(tǒng)設(shè)備驅(qū)動(dòng)程序軟件棧。為此,外定序器因而可以配備具有表層外骨骼的輔助單元并且使輔助單元看起來像是最小的定序器,該定序器可以參與處理器或其它設(shè)備的基于定序器-感知ISA的內(nèi)定序器操作。根據(jù)軟件棧的透視圖,具有外定序器的應(yīng)用程序或用戶運(yùn)行時(shí)間可以提供應(yīng)用級(jí)軟件層來管理加速器為應(yīng)用程序資源,并且為緊密耦合的應(yīng)用程序二進(jìn)制的一部分,而不需要使用基于松散耦合OS的設(shè)備驅(qū)動(dòng)程序來管理加速器為系統(tǒng)級(jí)資源。
此外,在一些實(shí)現(xiàn)方式中,一個(gè)或多個(gè)外定序器可以包括外在的MIMD多定序器ISA接口,其中每個(gè)參與的輔助單元在結(jié)構(gòu)上用作最小的定序器資源,通過定序器-感知同步的操作或通過最輕度級(jí)的用戶級(jí)事件產(chǎn)生機(jī)構(gòu)的異步內(nèi)定序器交互作用與主處理器(即,第一定序器)交互。即使輔助單元和第一定序器緊密耦合到相同的OS線程,結(jié)構(gòu)上,主處理器和配備外骨骼的輔助單元交互作用為兩個(gè)獨(dú)特的MIMD定序器。特別是,通過外骨骼接口在第一定序器和輔助單元之間的數(shù)據(jù)和控制交換在結(jié)構(gòu)上等于內(nèi)定序器交換。
雖然在圖1的實(shí)施例中用具體的資源顯示,但是可以理解的是,處理器10可以是單個(gè)物理處理器,其可以支持多個(gè)硬件線程環(huán)境(在沒有透明性損失的情況下,也稱作″線程環(huán)境″,注意這個(gè)與軟件線程環(huán)境不相同),每個(gè)包括一組體系結(jié)構(gòu)狀態(tài)。在一些實(shí)施例中,某些資源對(duì)這些線程環(huán)境來說可以是可見的,而其它資源是不可見的。因而如圖1中所示,定序器20中的每一個(gè)可以對(duì)應(yīng)于一個(gè)線程環(huán)境。當(dāng)產(chǎn)生對(duì)操作系統(tǒng)是可見的至少一些線程環(huán)境(例如,m在n的范圍之外,m≤n)時(shí),這些線程環(huán)境有時(shí)被稱為邏輯處理器或管理的OS定序器。每個(gè)線程環(huán)境分別保持一組體系結(jié)構(gòu)狀態(tài)AS1-ASn。所述體系結(jié)構(gòu)狀態(tài)包括,例如,數(shù)據(jù)寄存器、段寄存器、控制寄存器、調(diào)試寄存器、和大部分模式特殊寄存器。線程環(huán)境可以共享物理處理器的大部分微體系結(jié)構(gòu)資源,諸如高速緩存器、執(zhí)行單元、分支預(yù)測(cè)器、控制邏輯和總線。盡管這樣的特征可以被共享,處理器10的每個(gè)線程環(huán)境可以獨(dú)立地產(chǎn)生下一個(gè)指令地址(并且執(zhí)行,例如,從指令高速緩沖存儲(chǔ)器、執(zhí)行指令高速緩存器、或追蹤高速緩存器中的讀取)。與線程環(huán)境相應(yīng)的定序器20中的每一個(gè)與對(duì)應(yīng)的體系結(jié)構(gòu)狀態(tài)40(統(tǒng)稱)有關(guān)。更具體地說,例如體系結(jié)構(gòu)狀態(tài)(AS1)40a可以與定序器20a有關(guān),AS240b可以與定序器20b有關(guān),AS340c可以與定序器20c有關(guān),而AS440d可以與定序器20d有關(guān)。
使用處理器10或類似的這種處理器,基于ISA的內(nèi)定序器通信可以在不涉及OS的情況下發(fā)生。例如,在共享存儲(chǔ)器多處理范例中,應(yīng)用程序設(shè)計(jì)員可以把軟件程序(即,應(yīng)用程序或處理)拆分成為多個(gè)將被同時(shí)運(yùn)行的任務(wù)以便表示并行。相同軟件程序的所有線程(″處理″)共享存儲(chǔ)器地址空間的公共邏輯視圖。然而,OS線程可以與也許不被創(chuàng)建、調(diào)度、或相反由操作系統(tǒng)管理的多用戶級(jí)線程有關(guān)。這種用戶級(jí)線程可以被稱為″碎片″,以便把它們與OS線程區(qū)分。這些碎片也許對(duì)于OS調(diào)度程序是不可見的,因此OS不管理相關(guān)的OS線程何時(shí)或如何調(diào)度碎片以在分配的邏輯定序器地址上運(yùn)行。OS線程本身通常負(fù)責(zé)調(diào)度何時(shí)以及怎樣運(yùn)行它的一個(gè)碎片。
對(duì)基于ISA的內(nèi)定序器通信的體系結(jié)構(gòu)支持可以包括對(duì)于ISA的擴(kuò)建,以致提供一個(gè)或多個(gè)指令來允許用戶直接操作定序器之間的控制和狀態(tài)轉(zhuǎn)換,其可以是所謂的定序器-感知或定序器-算術(shù)指令。這種指令可以包括如下指令,即該指令或者為第一定序器作準(zhǔn)備以發(fā)信號(hào)給另一個(gè)(即,第二)定序器(一個(gè)指令在這里被稱為碎片轉(zhuǎn)換或″SXFR″指令,其可以發(fā)送稱作外出方案的外出控制信息,并且也可以攜帶數(shù)據(jù)有效負(fù)載)或者為安裝第二定序器作準(zhǔn)備以監(jiān)控這種信號(hào)(在這里稱為碎片監(jiān)控或者″SEMONITOR″指令)并且一旦異步地接收所述信號(hào)(稱作進(jìn)入方案)就對(duì)控制器執(zhí)行控制轉(zhuǎn)換。
定序器-感知指令也可以包括諸如定序器-感知狀態(tài)保存和恢復(fù)指令之類的其它指令。一旦執(zhí)行這種狀態(tài)保存指令,第一定序器可以創(chuàng)建第二定序器的體系結(jié)構(gòu)狀態(tài)的快照拷貝。定序器-感知恢復(fù)指令可以指定保存的體系結(jié)構(gòu)狀態(tài)被加載到指定的定序器。
對(duì)于至少一個(gè)實(shí)施例,一個(gè)或多個(gè)定序器-感知指令可以由程序員編碼成為屬于OS線程的碎片。當(dāng)在操作OS線程期間執(zhí)行時(shí),這種指令可以促使生成、控制轉(zhuǎn)換、環(huán)境保存、環(huán)境恢復(fù)或?qū)λ槠钠渌僮鳎恍枰迦隣S調(diào)度邏輯。
以這種方式,根據(jù)一個(gè)實(shí)施例,基于ISA的內(nèi)定序器通信減少了系統(tǒng)開銷,提高了性能。根據(jù)本發(fā)明的一個(gè)實(shí)施例,除了在相同ISA的定序器之間通信之外,在各種實(shí)施例中可以例如,通過外骨骼在不同種類的定序器之間或在定序器和非定序器之間發(fā)生基于ISA的內(nèi)定序器通信。
現(xiàn)在參考圖2,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例一個(gè)系統(tǒng)的一部分的方框圖。如圖2中所示,系統(tǒng)100包括定序器110和加速器130。加速器130可以在不同的實(shí)施例中采用許多不同的形式,但是為了在這里討論的目的,假定加速器130具有與定序器110不同種類的特性。換句話說,加速器130可以具有不同的ISA或可以是非定序器。然而在各種實(shí)施例中,定序器110和加速器130可以在單個(gè)襯底上實(shí)現(xiàn)(例如,作為多核處理器的一部分)。另一方面,定序器110和加速器130可以在集成電路(IC)內(nèi)的不同片的硅中,或在諸如位于封裝或母板上之類的不同的IC中,或以另外的方式實(shí)現(xiàn)。
為了使基于ISA的內(nèi)定序器能夠通信,外骨骼120可以與加速器130耦合。外骨骼120和加速器130一起在這里也被稱為外定序器135。在其中加速器130具有不同種類的ISA或是非定序器的實(shí)施例中,可以是一個(gè)有限狀態(tài)機(jī)(FSM)或虛擬化層的外骨骼120可以被實(shí)現(xiàn)(在硬件、固件乃至在軟件中,取決于具體實(shí)施例)以便加速器130可以參與內(nèi)定序器通信。這種基于ISA的內(nèi)定序器通信在進(jìn)入方向上提供信號(hào)協(xié)議到加速器130中,以便它可以監(jiān)控和響應(yīng)由SXFR從另外的定序器或外定序器發(fā)送的進(jìn)入方案,包括用于外定序器的體系結(jié)構(gòu)狀態(tài)的GET和/或SET指令。此外,信號(hào)協(xié)議包括從加速器130到信號(hào)定序器110與包括用于諸如代理執(zhí)行對(duì)這種事件的請(qǐng)求的異常處理的指示作為頁面錯(cuò)誤的外出方案進(jìn)行外出通信。此外,在一些實(shí)施例中,通過外骨骼120的加速器130可以參與面向通信活動(dòng)的性能報(bào)告以致一旦有來自于定序器110或另外的資源的查詢,外骨骼120可以傳送關(guān)于加速器130性能的信息以允許它們的更有效的使用。
如圖2中所示,外骨骼120可以與加速器130緊密耦合。進(jìn)一步如圖2中所示,系統(tǒng)100包括用戶級(jí)運(yùn)行時(shí)間軟件層,表示為碎片庫150以管理和調(diào)度碎片,即,用戶級(jí)線程。在不同的實(shí)現(xiàn)方式中,碎片庫150可以執(zhí)行操作以支持和管理在諸如定序器110之類的定序器上的碎片。例如,碎片庫150可以管理碎片調(diào)度、碎片環(huán)境保存、切換、和恢復(fù),等等。以這種方式,消耗了低系統(tǒng)開銷因?yàn)镺S 190不涉及這些操作。
可以在系統(tǒng)100內(nèi)執(zhí)行用戶應(yīng)用程序160并且可以請(qǐng)求執(zhí)行專門的或計(jì)算密集的功能。為了能夠提高性能,尤其在MIMD或并行的環(huán)境中,用戶應(yīng)用程序160可以請(qǐng)求定序器110與加速器130通信以致加速器130將并行于執(zhí)行應(yīng)用程序其它有用功(或其它將由定序器110執(zhí)行的碎片)的定序器110而執(zhí)行功能。用這樣的方式,改進(jìn)執(zhí)行得以實(shí)現(xiàn),因?yàn)槎ㄐ蚱?10和加速器130兩者可以在作為碎片的應(yīng)用程序線程的不同部分上并行執(zhí)行。因此,使用本發(fā)明的實(shí)施例,定序器110的控制流可以并行地并且與外定序器上執(zhí)行的專用計(jì)算異步地運(yùn)行,其作為單獨(dú)的碎片有效地操作。
為了減少系統(tǒng)開銷,在定序器110和外定序器135之間通過定序器-感知指令的基于ISA的內(nèi)定序器通信也許不需要OS 190的介入。以這種方式,可以避免OS 190的設(shè)備驅(qū)動(dòng)程序棧并且相反在定序器110和外定序器135之間的直接通信可以實(shí)現(xiàn)。因而如圖2中所示,在一個(gè)實(shí)施例中,可以在定序器110和外骨骼120之間通過定序器-感知指令直接進(jìn)行基于ISA的內(nèi)定序器通信??梢允怯脩魬?yīng)用程序的應(yīng)用程序代碼160可以通過碎片運(yùn)行時(shí)間庫150使用這種基于ISA的內(nèi)定序器通信。最小的OS層140支持OS線程的環(huán)境保存和環(huán)境恢復(fù)操作。當(dāng)OS線程在OS管理的定序器上執(zhí)行環(huán)境保存或環(huán)境恢復(fù)指令時(shí),用于所有應(yīng)用程序管理的定序器以及與OS管理的定序器有關(guān)的外定序器的環(huán)境將因此被保存和恢復(fù)。OS可以對(duì)每一OS線程提供足夠的保存區(qū),用于保存這些與OS線程環(huán)境轉(zhuǎn)換相交叉的狀態(tài)。那里,基于ISA的內(nèi)定序器通信可以用這樣的方式轉(zhuǎn)換,即它可以被提供給外定序器135并且遵照外定序器135行事。在相反方向可能發(fā)生類似的通信流。在至少一個(gè)實(shí)施例中,在每個(gè)定序器或外定序器上一旦OS線程環(huán)境轉(zhuǎn)換,可以由并行于相同OS線程中的其它定序器/外定序器的每個(gè)定序器或外定序器執(zhí)行環(huán)境的保存和恢復(fù)。這種并行實(shí)現(xiàn)可以提高整個(gè)保存和恢復(fù)操作的性能。
雖然圖2的實(shí)施例中所示的為包括單個(gè)定序器110,但是可以理解的是,本發(fā)明的范圍不因此受限,并且在其它實(shí)施例中,可以提供多定序器系統(tǒng)。在這種系統(tǒng)中,外骨骼120可以進(jìn)一步執(zhí)行虛擬化功能以便單個(gè)物理的加速器130可以由多個(gè)定序器關(guān)聯(lián)。因此,外骨骼120可以執(zhí)行對(duì)多個(gè)環(huán)境的存儲(chǔ),以便為不同的定序器存儲(chǔ)加速器130的體系結(jié)構(gòu)狀態(tài)的多個(gè)副本,每個(gè)與邏輯外定序器相耦合。外骨骼120可以進(jìn)一步包括邏輯,以便能夠保存和恢復(fù)環(huán)境狀態(tài),以及為定序或多路復(fù)用不同的定序器作準(zhǔn)備以使用加速器130。以這種方式,加速器130可以服務(wù)一個(gè)系統(tǒng)的多個(gè)定序器。在至少一個(gè)實(shí)施例中,外骨骼可以通過接通事件多線程而執(zhí)行多個(gè)邏輯外定序器。在這種實(shí)施例中,邏輯外定序器環(huán)境能夠被執(zhí)行為獨(dú)特的芯片上寄存器堆或?qū)S玫臅簳r(shí)存儲(chǔ)器,并且外定序器環(huán)境轉(zhuǎn)換狀態(tài)可以在邏輯中或在諸如微代碼之類的固件中執(zhí)行。在至少另一個(gè)的實(shí)施例中,可以為每個(gè)定序器實(shí)現(xiàn)獨(dú)特的物理外定序器。在這個(gè)實(shí)施例中,多個(gè)物理的外定序器可以被實(shí)現(xiàn)為同步的多線程(SMT)或CMP系統(tǒng)。
當(dāng)加速器不具有和定序器130和/或剩余的系統(tǒng)相同的ISA或其中加速器是非定序器時(shí),可以使用諸如圖2中所示的實(shí)施例。在這種實(shí)施例中,圖2中所示的數(shù)據(jù)流提供定序器110和加速器130之間的高效的基于ISA的內(nèi)定序器通信而不需要OS 190的介入。
然而,在其它實(shí)現(xiàn)方式中,加速器可以具有公共的ISA作為定序器或系統(tǒng)的其它部分。更進(jìn)一步,在一些實(shí)現(xiàn)方式中,可以用剩余的系統(tǒng)接近地配置加速器。例如,在一些實(shí)現(xiàn)方式中,加速器可以是配置為執(zhí)行專門操作的系統(tǒng)組件。然而,在給定的系統(tǒng)配置中,組件是無效的或有利于諸如外圍設(shè)備或附加設(shè)備之類的其它組件的最低限度地的使用。例如,可以將集成的圖形處理單元(GPU)實(shí)現(xiàn)為系統(tǒng)主板上的芯片組的一部分(諸如圖形存儲(chǔ)器控制器集線器(GMCH))。然而,在某些系統(tǒng)配置中,附加的離散圖形卡也被配置為插入(例如,在外圍設(shè)備組件互連(PCI)槽口上)到主板上。在這種實(shí)例中,集成的GPU可以被無效等而不使用。類似地,GPU或其它這種組件可以包括多個(gè)不同的處理引擎,其中一些在某些系統(tǒng)配置中也許不被完全使用。
在這種實(shí)現(xiàn)方式中,根據(jù)本發(fā)明的一個(gè)實(shí)施例,這些或使無效或最低限度使用的處理資源可以被配置為加速器。現(xiàn)在參照?qǐng)D3,示出了系統(tǒng)200的一部分的方框圖,其包括定序器210和加速器230。在圖3的實(shí)施例中,加速器230可以包括第一部分232和第二部分234。第一部分232可以被配置為充當(dāng)外定序器,而第二部分234可以被配置為執(zhí)行諸如在正常的OS控制下專門的圖形或介質(zhì)功能之類的各種功能。因此,如圖3中所示,第二部分234與OS 290的設(shè)備驅(qū)動(dòng)程序棧295耦合,以致它可以通過OS應(yīng)用編程接口(API)到設(shè)備驅(qū)動(dòng)程序棧295與基于OS的執(zhí)行模型的應(yīng)用程序260通信。用這樣的方式,第二部分234可以在應(yīng)用程序260的請(qǐng)求下通過傳統(tǒng)的OS通信路線執(zhí)行處理功能。
與此相反,第一部分232被配置為通過外骨骼220直接與定序器210通信。外骨骼220可以是硬件、軟件、固件或它們的組合,以使能夠在第一部分232和定序器210之間基于ISA通信。因此,用戶級(jí)應(yīng)用程序256可以使用基于ISA的內(nèi)定序器指令用于通過外骨骼220在定序器210和第一部分232之間通信。一般地,可以使用用戶級(jí)碎片庫250,并且OS支持240的最小層用于提供對(duì)如上所述的OS線程環(huán)境保存和恢復(fù)操作的支持。
因而,在圖3的實(shí)施例中,根據(jù)本發(fā)明的一個(gè)實(shí)施例,兩個(gè)軟件??梢怨泊妫碠S驅(qū)動(dòng)程序棧和用戶級(jí)運(yùn)行時(shí)間棧。通過為資源共享加速器230作準(zhǔn)備,可以實(shí)現(xiàn)改善性能,因?yàn)橥ㄟ^基于ISA的內(nèi)定序器通信,基于傳統(tǒng)的應(yīng)用程序(例如,使用OS設(shè)備驅(qū)動(dòng)程序模式)和為最小的系統(tǒng)開銷作準(zhǔn)備的用戶級(jí)應(yīng)用程序兩者可以利用加速器230的資源。在一些實(shí)現(xiàn)方式中,外骨骼220可以相對(duì)于加速器230執(zhí)行虛擬化任務(wù),以致應(yīng)用程序256和應(yīng)用程序260兩者都相信它們已經(jīng)擁有加速器230的完整資源(由于對(duì)于應(yīng)用程序是可見的)。因而在不同的實(shí)施例中,外骨骼220可以執(zhí)行虛擬化任務(wù),該任務(wù)包括提供用于加速器230的體系結(jié)構(gòu)狀態(tài)的多個(gè)環(huán)境以及在類似接通事件多線程情況下提供對(duì)環(huán)境轉(zhuǎn)換的支持。
因而,根據(jù)本發(fā)明的一個(gè)實(shí)施例,加速器230中功能的子集可以通過OS 290與傳統(tǒng)應(yīng)用程序有關(guān),而不同的功能子集可以通過基于ISA的內(nèi)定序器通信協(xié)議與用戶級(jí)應(yīng)用程序有關(guān)。因而,加速器230的物理資源可以支持這兩個(gè)全異范例的共存。
現(xiàn)在參考圖4,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例一個(gè)系統(tǒng)的方框圖。如圖4中所示,系統(tǒng)300包括與圖形存儲(chǔ)器控制器集線器(GMCH)320耦合的處理器(例如,定序器)310,該圖形存儲(chǔ)器控制器集線器320依次與存儲(chǔ)器330耦合,該存儲(chǔ)器330例如可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。此外,GMCH320與顯示器340(諸如平板顯示器)耦合。GMCH320可以包括集成的圖形加速器。GMCH320進(jìn)一步與輸入/輸出(I/O)控制器集線器(ICH)350耦合,該集線器可被用于將各種外圍設(shè)備耦合到系統(tǒng)300。例如在圖4的實(shí)施例中示出的是外部圖形設(shè)備360,其可以是分離的圖形設(shè)備,該設(shè)備連同另一個(gè)外圍設(shè)備370一起耦合到ICH350。
因?yàn)橄到y(tǒng)300被配置為具有單獨(dú)的外部分離圖形設(shè)備360,GMCH320內(nèi)集成的圖形可能是無效的。例如,在GMCH320中系統(tǒng)基本輸入/輸出系統(tǒng)(BIOS)可以編程無效位,或另一個(gè)機(jī)構(gòu)可以使圖形功能無效。另外,根據(jù)本發(fā)明的一個(gè)實(shí)施例,在GMCH320中被用于圖形處理的空閑進(jìn)程資源可以替換地被轉(zhuǎn)換為加速器。因此,例如,通過用戶級(jí)應(yīng)用程序,資源可被用于執(zhí)行各種功能而不需要OS介入。以這種方式,可以實(shí)現(xiàn)改善性能,尤其其中通過GMCH320的圖形資源的這種處理與處理器310的定序器中的任務(wù)并行(例如,以MIMD方式)執(zhí)行。
在一些實(shí)施例中,GMCH320的集成圖形中用于圖形功能的外定序器可以包括執(zhí)行互不相關(guān)的功能的各種圖形處理單元。一個(gè)或多個(gè)這些處理資源可以被配置為基于ISA的介質(zhì)加速器外定序器,以便實(shí)現(xiàn)系統(tǒng)300內(nèi)的介質(zhì)操作,而沒有與系統(tǒng)300的OS有關(guān)的一個(gè)或多個(gè)介質(zhì)設(shè)備驅(qū)動(dòng)程序的介入。以這種方式,可以在具有處理器310的最少介入的系統(tǒng)300中執(zhí)行諸如編碼和解碼數(shù)字介質(zhì)之類的介質(zhì)操作,而且不用遭受OS的設(shè)備驅(qū)動(dòng)程序棧的系統(tǒng)開銷。
在各種實(shí)施例中,像定序器、外定序器是一種應(yīng)用程序級(jí)體系結(jié)構(gòu)資源,并且因此可能具有供定序器-感知用戶級(jí)操作使用的唯一的和虛擬化的名字空間。因此,可以完全在用戶級(jí)執(zhí)行內(nèi)定序器通信而不需要OS介入。隨著定序器的虛擬化,邏輯的外定序器體系結(jié)構(gòu)資源可以以類似于記錄重命名和存儲(chǔ)器虛擬化的方式被管理,其中物理資源的數(shù)目不需要與邏輯資源的數(shù)目相同。進(jìn)一步地,根據(jù)包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱量、功率損耗特性等等優(yōu)點(diǎn)的量度的光譜,在物理資源之間可能存在各種差別。這些差別實(shí)際上在外定序器資源之中本身顯現(xiàn)為不對(duì)稱性和不均勻性。此外,作為實(shí)際上可尋址的資源,外定序器資源還能夠受到基于性能的管理,其中可以由某一個(gè)硬件、固件、和抽象的軟件層使用虛擬定序器地址中的位,以便表示物理的特定定序器的性能來管理同步的或異步的對(duì)外定序器資源的訪問控制。
在至少一個(gè)實(shí)施例中,外定序器可以通過提供對(duì)下列來自于第一定序器的兩個(gè)規(guī)范的進(jìn)入方案的響應(yīng),而支持最少的內(nèi)定序器交換協(xié)議GET進(jìn)入方案,其中第一定序器可以使用SXFR以便向外定序器發(fā)送GET方案從而讀取/獲得本地狀態(tài)給外定序器;以及SET進(jìn)入方案,其中第一定序器可以使用SXFR以便向外定序器發(fā)送SET方案從而寫入/更新本地狀態(tài)到外定序器。更進(jìn)一步,外定序器可以使用NOTIFY外出方案和SXFR,以便向第一定序器發(fā)送NOTIFY方案來執(zhí)行例如結(jié)束、進(jìn)程或異常條件的異步事件通知。PROXY方案是NOTIFY外出方案的特殊形式,該P(yáng)ROXY方案可以代表第一定序器促使加速器以代理執(zhí)行模式操作。
有了這個(gè)最低限狀態(tài)報(bào)告和更新性能,第一定序器可以構(gòu)成高級(jí)的控制消息來操作數(shù)據(jù)和控制狀態(tài)(單獨(dú)地或整個(gè))。尤其是,可以構(gòu)建各種合成狀態(tài)訪問。例如使用環(huán)境保存/恢復(fù),或者第一定序器可以重復(fù)地使用SXFR通過環(huán)境轉(zhuǎn)換來讀取或更新一組將被保存/恢復(fù)的狀態(tài),或者在可替換的實(shí)施例中,第一定序器可以使用一個(gè)SXFR來讀取和更新外定序器本地重復(fù)過多狀態(tài)的狀態(tài)子集。此外,第一定序器可以使用SXFR來查詢配置(即,性能列舉),該配置包括狀態(tài)、相關(guān)屬性(寫入,讀取等等)、格式等等。以這種方式,傳統(tǒng)上或者不是定序器或者不基于OS的設(shè)備驅(qū)動(dòng)程序就無法與通用處理器工作的專用類的集成設(shè)備,可以根據(jù)需要由特殊的應(yīng)用程序虛擬化,就像它們是處理器的功能部件并且它們的狀態(tài)通過OS線程環(huán)境轉(zhuǎn)換而經(jīng)過OS線程環(huán)境保存和恢復(fù)。
在一個(gè)實(shí)施例中,定序器類型的并且具有不同于第一定序器的ISA的輔助單元可以使用它專用的ISA以實(shí)現(xiàn)外骨骼有限狀態(tài)機(jī)(FSM)來經(jīng)由體系結(jié)構(gòu)定義的用于第一定序器的輸入和輸出方案通信。用這樣的方式,輔助單元可以選擇使用它專用的ISA以響應(yīng)由第一定序器請(qǐng)求的操作而實(shí)現(xiàn)各種算法,即使輔助單元硬件本身不直接支持所述操作??梢栽谌魏挝锢淼幕ミB或接口上實(shí)現(xiàn)這個(gè)定序器FSM實(shí)現(xiàn)方式?;ミB的兩個(gè)設(shè)備可以彼此發(fā)信號(hào),并且該信號(hào)可以在第一定序器上被本地接收和轉(zhuǎn)換為邏輯上和結(jié)構(gòu)上的用戶級(jí)事件并且作為觸發(fā)脈沖輸入給FSM。在一個(gè)實(shí)施例中,受有關(guān)查詢的環(huán)境保存/恢復(fù)進(jìn)入/外出方案影響的外定序器的集合狀態(tài)可以是輔助單元的初始狀態(tài)的子集(或全集)。在該情況下,輔助單元的專用ISA中的外骨骼代碼具有固件中實(shí)現(xiàn)的微代碼例程的性質(zhì)以支持第一定序器的定序器-感知操作。
在另一個(gè)實(shí)施例中,與第一定序器的ISA相同的分離的定序器可以被用作外骨骼以代表輔助單元實(shí)現(xiàn)最小的FSM。而外定序器和輔助單元之間的專用協(xié)議不是必須的本地ISA兼容,第一定序器可以與外骨骼交互,以便外骨骼為第一定序器呈現(xiàn)自身的集合狀態(tài)和輔助單元(即,不同的ISA)。可以由外骨骼定序器將輔助單元的狀態(tài)到外定序器的集合狀態(tài)映象為1∶1或M∶1(其中M>1)。此外,實(shí)現(xiàn)FSM以支持第一定序器的內(nèi)定序器操作的代碼序列類似于輔助單元硬件的基于微代碼的控制。
在另一個(gè)例子中,外定序器可以包括硬連接的″固定功能″輔助設(shè)備,該設(shè)備沒有(任何ISA的)內(nèi)部控制序列,例如,具有I/O邏輯的專用ASIC塊。對(duì)于這種輔助單元,在至少一個(gè)實(shí)施例中,可以經(jīng)由附著于固定功能單元的代理FSM而構(gòu)造外骨骼。可以在具有物理訪問ASIC的外骨骼FSM中實(shí)現(xiàn)最少的定序器狀態(tài)列舉和查詢界面。所展示的ASIC狀態(tài)到外骨骼定序器狀態(tài)可以映象為1∶1或M∶1,并且可以在外骨骼FSM中實(shí)現(xiàn)。FSM邏輯可以物理地實(shí)現(xiàn)為到ASIC塊的接口。在其他實(shí)施例中,外骨骼FSM可以是可編程的微控制器定序器,或硬布線的ASIC塊,但是能夠截取進(jìn)入方案并且發(fā)布外出方案。
在一個(gè)實(shí)施例中,與第一定序器的ISA相同的分離的定序器可以工作以實(shí)現(xiàn)外骨骼FSM,而外骨骼定序器可以物理訪問ASIC狀態(tài),并且邏輯上/結(jié)構(gòu)上集合ASIC狀態(tài)加上它自己的狀態(tài)作為外定序器狀態(tài)。在另一個(gè)實(shí)施例中,不同于第一定序器的ISA的分離的定序器可以工作以實(shí)現(xiàn)外骨骼FSM。
但不論是哪種情況,可以或者物理地通過保留靜態(tài)貢獻(xiàn)給給定輔助單元的物理定序器,或者動(dòng)態(tài)地多路復(fù)用為多個(gè)邏輯分離的定序器來執(zhí)行外骨骼定序器的分離,每個(gè)邏輯分離的定序器與唯一的輔助單元邏輯地關(guān)聯(lián)。換言之,外骨骼定序器可以是一個(gè)通過對(duì)定序器地址虛擬化的任何想要的方案來虛擬化的定序器。
在一個(gè)實(shí)施例中,加速器可以具有相對(duì)于第一定序器的非相干高速暫存存儲(chǔ)器。為了使該輔助單元成為外定序器,非相干高速暫存存儲(chǔ)器狀態(tài)可以被映象為外定序器的″公布的″(即,可列舉的)集合狀態(tài)的一部分。如果暫時(shí)存儲(chǔ)器的尺寸足夠大,外骨骼僅僅可以得到暫存狀態(tài)(包括狀態(tài)的零數(shù)量)的有限子集作為對(duì)應(yīng)的外定序器狀態(tài)的一部分。例如,即使加速器可以處理1千字節(jié)(Kb)長(zhǎng)度的數(shù)據(jù)幀,外定序器也僅僅可以展示為包括將被保存/恢復(fù)的256字節(jié)的緩沖狀態(tài)的加速器。
對(duì)于使用直接存儲(chǔ)器存取(DMA)協(xié)議將數(shù)據(jù)傳送到第一定序器/從第一定序器傳送數(shù)據(jù)的輔助單元設(shè)備,在一個(gè)實(shí)施例中,輔助單元和外骨骼之間的專用協(xié)議可以保持原始的基于DMA的狀態(tài),而外定序器可以在輔助單元設(shè)備上為第一定序器呈現(xiàn)外骨骼的集合狀態(tài)和DMA結(jié)構(gòu)狀態(tài)。然后,外骨骼上的DMA配置和外定序器“仿真/實(shí)施”FSM狀態(tài)可以經(jīng)過環(huán)境保存/恢復(fù)(因此通過OS環(huán)境轉(zhuǎn)換是可虛擬化的)。然而,第一定序器不需要結(jié)構(gòu)上感知任何DMA配置信息,其是特定的實(shí)現(xiàn)。
在另一個(gè)實(shí)施例中,外定序器(例如,作為用戶級(jí)體系結(jié)構(gòu)資源)和系統(tǒng)級(jí)(例如,特權(quán)級(jí)別)設(shè)備資源可以實(shí)際上共享公共的物理原始構(gòu)件塊資源。對(duì)于外定序器,公布的邏輯狀態(tài)可以在構(gòu)件塊中被重命名為相同的物理狀態(tài),其是通過讀/寫命令由系統(tǒng)級(jí)邏輯設(shè)備可訪問的。在物理輔助單元內(nèi),可以靜態(tài)地或動(dòng)態(tài)地管理資源的區(qū)域/部分,并且對(duì)于用戶級(jí)外定序器和系統(tǒng)級(jí)設(shè)備兩者的ISA是透明的。
具備加密/解密加速器的某些服務(wù)器平臺(tái)用于加速網(wǎng)絡(luò)棧計(jì)算。這些隱藏引擎通常物理地與網(wǎng)絡(luò)處理器耦合,該處理器包括可編程的微引擎以控制隱藏加速器。例如,加密引擎可以包括諸如供散列表計(jì)算使用的隨機(jī)數(shù)發(fā)生器或偽隨機(jī)數(shù)發(fā)生器。在這樣一種實(shí)現(xiàn)方式中,處理器微引擎作為與隱藏引擎耦合的外骨骼FSM可以被重新編程成為一個(gè)外定序器。
在一個(gè)實(shí)施例中,可以通過基于虛擬機(jī)擴(kuò)展(VMX)的仿真器虛擬機(jī)監(jiān)督系統(tǒng)(VMM)來仿真分離的加速器??梢栽诰哂凶鳛橥舛ㄐ蚱鞯募蠣顟B(tài)的附加體系結(jié)構(gòu)狀態(tài)的定序器仿真頂上實(shí)現(xiàn)用于狀態(tài)訪問和更新的包括環(huán)境保存/恢復(fù)的進(jìn)入/外出方案。從外定序器到第一定序器的異步NOTIFY信號(hào)發(fā)送可以作為PROXY方案實(shí)現(xiàn)。
通過外骨骼,可以表示各種內(nèi)定序器計(jì)算基元的附加進(jìn)入方案可以被仿真或通過外定序器FSM仿真器傳送并且被遞交給分離的原始物理資源用于計(jì)算加速度。實(shí)際上,輔助單元的原始計(jì)算資源的子集可以由應(yīng)用程序使用,就像它們是用戶級(jí)MIMD定序器體系結(jié)構(gòu)資源一樣。
現(xiàn)在參照?qǐng)D5,示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例一種方法的流程圖。如圖5中所示,可以在定序器例如,處理器核等等中實(shí)現(xiàn)方法400。如圖5中所示,可以通過執(zhí)行開始監(jiān)視器(例如,SEMONITOR指令)以便開始監(jiān)視來自加速器的信號(hào)并且把定序器中的事件處理程序與該信號(hào)相關(guān)聯(lián)而開始方法400(方框405)。具體來講,這種信號(hào)可以是用于指示來自加速器的消息的識(shí)別或通知信號(hào)。加速器可以是相對(duì)于指令定序器的不同種類的資源,例如,是不同的ISA或非定序器。因此,可以通過外骨骼在指令定序器和加速器之間通信。因此,可以由定序器通過外骨骼接收從加速器接收的信號(hào)。
為了配置和啟動(dòng)加速器以代表用戶級(jí)應(yīng)用程序執(zhí)行操作,供應(yīng)用程序使用的體系結(jié)構(gòu)狀態(tài)可以被傳輸給加速器(方框410),例如,通過SXFR。例如,指令定序器可以通過外骨骼傳輸用于與寄存器值相對(duì)應(yīng)的碎片體系結(jié)構(gòu)狀態(tài)的各種信息,配置信息等等。
其次,指令定序器可以為加速器準(zhǔn)備命令信息,以便加速器可以代表用戶級(jí)應(yīng)用程序執(zhí)行一個(gè)或多個(gè)操作(方框415)。例如,指令定序器可以準(zhǔn)備命令信息,其可以進(jìn)一步的包括將由加速器和/或特定的將被應(yīng)用在數(shù)據(jù)上的加速功能操作或處理的數(shù)據(jù)。然后,可以通過內(nèi)定序器協(xié)議(方框420)例如,包括使用SXFR指令傳送這個(gè)命令信息。更具體地說,這個(gè)協(xié)議可以具有指令定序器的ISA??梢允褂盟鰠f(xié)議直接將這個(gè)信息傳送到外骨骼,其可以轉(zhuǎn)換所述協(xié)議以便底層的數(shù)據(jù)可以被傳送到加速器。
在各種實(shí)施例中,可以存在執(zhí)行這種內(nèi)定序器協(xié)議通信的不同方式。例如,在一些實(shí)施例中,通信可以包括一個(gè)或多個(gè)用于存儲(chǔ)在緩沖器中的每個(gè)基本工序的指令,其可以是在指令定序器和加速器之間共享的存儲(chǔ)緩沖器。在其他實(shí)施例中,最小的命令信息可以從指令定序器,例如,指令指針(IP)中發(fā)送到想要在加速器上執(zhí)行的代碼段。然后,假定加速器本身是定序器,加速器可以執(zhí)行操作以便從指示的位置中讀取代碼。發(fā)送命令信息的間隔尺寸也可以改變。例如,在不同的實(shí)施例中,可以以每個(gè)命令為基礎(chǔ)或以充足的間隔尺寸發(fā)送命令信息。在又一個(gè)實(shí)施例中,第一定序器可以通過外骨骼而不需要通過存儲(chǔ)器將本地命令發(fā)送到加速器,然后加速器能直接執(zhí)行所述命令。
仍然參考圖5,其次指令定序器可以在指令定序器的命令下執(zhí)行并行于加速器的操作的互不相關(guān)的(例如,獨(dú)立的)操作(方框425)。也就是說,在一些實(shí)施例中,可以執(zhí)行并行操作,例如,MIMD操作,以便指令定序器和加速器兩者都可以并行執(zhí)行有用功。以這種方式,指令定序器無需等待由加速器產(chǎn)生的結(jié)果,并且可以代替地執(zhí)行其它有用功。當(dāng)然,指令定序器可以并行執(zhí)行相關(guān)的操作。
其次可以確定指令定序器是否已經(jīng)從加速器中接收了事件(菱形430)。這種事件可以是通知或其它消息的形式,表示加速器中任務(wù)的狀態(tài)或完成。注意,這個(gè)確定無需通過同步的輪詢,并且代替的通知可以是異步和事件驅(qū)動(dòng)的并且因而基于非輪詢。如果在菱形430處沒有接收這樣的事件,控制可以退回到上述的方框425。代替的,當(dāng)接收事件時(shí),指令定序器可以啟動(dòng)事件處理程序(例如,在方框405中通過SMONITOR的最初記錄)以便接收和處理來自于加速器的數(shù)據(jù)(方框440)。在各種實(shí)現(xiàn)方式中,這個(gè)事件處理程序可以是輕度的用戶級(jí)處理程序,以致避免了OS調(diào)用或環(huán)境轉(zhuǎn)換的系統(tǒng)開銷。以這種方式,可以存在改善的操作并且可以從加速器中獲得結(jié)果數(shù)據(jù)并且用作用戶級(jí)應(yīng)用程序所期望的。可以在記錄了下一個(gè)指令指針之后發(fā)生到處理程序的控制傳輸(例如,推到棧中),以致可以在事件處理程序完成之后恢復(fù)暫停的執(zhí)行。
現(xiàn)在參考圖6,示出了根據(jù)本發(fā)明的實(shí)施例與具有外骨骼的加速器中執(zhí)行的操作相應(yīng)的方法的流程圖。如上所述,這個(gè)加速器可以具有相對(duì)于定序器不同種類的特性。因此,外骨骼可以提供內(nèi)定序器協(xié)議通信。響應(yīng)方框410(圖5的,如上所述),加速器可以從定序器中接收碎片體系結(jié)構(gòu)狀態(tài)信息。因此,可以根據(jù)這個(gè)信息配置加速器(方框460)。因?yàn)榧铀倨鞯牟煌N類的特性,外骨骼可以用于接收這個(gè)內(nèi)定序器通信并且轉(zhuǎn)換它,以便可以由加速器處理它。
其次,響應(yīng)方框420(圖5的),可以通過外骨骼從定序器中接收命令信息(方框465)。該命令信息可以包括控制和/或配置信息以及將被處理的數(shù)據(jù)。因此,加速器可以按照所述命令信息執(zhí)行操作(方框470)??梢圆⑿杏讵?dú)立執(zhí)行操作的定序器執(zhí)行這些操作。也就是說,定序器無需在執(zhí)行其它有用功之前等待加速器完成它的操作。如上所述,可以以MIMD方式執(zhí)行定序器和加速器中的操作,并且在一些實(shí)現(xiàn)方式中可以對(duì)應(yīng)于互不相關(guān)的操作。
當(dāng)加速器完成它的操作時(shí),外骨骼可以相應(yīng)地通知定序器(方框475)。然后,在用戶級(jí)代碼的控制下,例如,啟動(dòng)用戶級(jí)事件處理程序的輕度用戶級(jí)產(chǎn)生機(jī)構(gòu),可以通過外骨骼將與加速器中獲取的各種結(jié)果相應(yīng)的數(shù)據(jù)傳輸?shù)蕉ㄐ蚱?方框480)。雖然在圖5和圖6的實(shí)施例中用這個(gè)具體的流程進(jìn)行了描述,應(yīng)當(dāng)理解的是,本發(fā)明的范圍不因此受限。
使用根據(jù)本發(fā)明的實(shí)施例的外定序器,可以執(zhí)行不同級(jí)別的提取。例如,在一些實(shí)現(xiàn)方式中,虛擬或復(fù)雜指令集計(jì)算機(jī)(CISC)指令可以發(fā)送給外骨骼,然后其執(zhí)行擴(kuò)展以便將這種指令映射到加速器的本地的物理指令或命令序列,該加速器可以是不同于第一定序器的ISA的定序器或根本是一個(gè)非定序器。因此,如果加速器的基本命令集隨時(shí)間被修改或改善,則仍然可以通過這種提取的級(jí)別提供傳統(tǒng)支持。以這種方式,即使對(duì)于傳統(tǒng)用戶級(jí)應(yīng)用程序也可以實(shí)現(xiàn)在加速器上提高性能。在其它實(shí)現(xiàn)方式中,可以從定序器將直接或精簡(jiǎn)指令集計(jì)算(RISC)指令發(fā)送到可以直接執(zhí)行加速器硬件上的指令的外定序器。
可以以許多不同的系統(tǒng)類型實(shí)現(xiàn)這些實(shí)施例?,F(xiàn)在參考圖7,示出了根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的方框圖。如圖7中所示,多處理器系統(tǒng)500是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括通過點(diǎn)對(duì)點(diǎn)互連550耦合的第一處理器570和第二處理器580。如圖7中所示,處理器570和580中的每一個(gè)可以是多核心處理器,包括第一和第二處理器核心(即,處理器核心574a和574b以及處理器核心584a和584b)。處理器570和580中的每一個(gè)可以進(jìn)一步包括外定序器,即,第一外定序器575和第二外定序器585。如上所述,外定序器575和585可以是相對(duì)于處理器核心570和580的剩余資源的不同種類的資源。雖然僅僅用每個(gè)處理器的單個(gè)外定序器示出,可以理解的是,本發(fā)明的范圍不因此受限。在其它實(shí)施例中,給定的處理器中可以存在多個(gè)外定序器。此外,一個(gè)或多個(gè)外定序器可以與處理器的每個(gè)獨(dú)立核心有關(guān)。
第一處理器570進(jìn)一步包括存儲(chǔ)控制器集線器(MCH)572和點(diǎn)對(duì)點(diǎn)(P-P)接口576和578。類似地,第二處理器580包括MCH 582和P-P接口586和588。如圖7中所示,MCH的572和582將處理器耦合到各自的存儲(chǔ)器,即存儲(chǔ)器532和存儲(chǔ)器534,其可以是與各自的處理器本地連接的主存儲(chǔ)器的一部分。
第一處理器570和第二處理器580可以分別通過P-P互連552和554與芯片組590耦合。如圖7中所示,芯片組590包括P-P接口594和598。此外,芯片組590包括接口592,用于將高性能圖形引擎538與芯片組590耦合。在一個(gè)實(shí)施例中,加速圖形端口(AGP)總線539可以用于將圖形引擎538耦合到芯片組590。AGP總線539可以遵循由加利福尼亞州,圣克拉拉,英特爾公司于1998年5月4日公布的加速圖形端口接口規(guī)格,修訂版2.0(AcceleratedGraphics Port Interface Specification,Revision 2.0)。另一方面,點(diǎn)對(duì)點(diǎn)互連539可以耦合這些組件。
依次,芯片組590可以通過接口596與第一總線516耦合。在一個(gè)實(shí)施例中,第一總線516可以是外圍設(shè)備組件互連(PCI)總線,正如PCI本地總線規(guī)約,生產(chǎn)版本,修訂版2.1,注明日期1995年6月所定義的,或者諸如PCIExpress總線或另外的第三代I/O互連總線之類的總線,盡管本發(fā)明的范圍不因此受限。
如圖7中所示,各種I/O設(shè)備514可以耦合到第一總線516,以及將第一總線516耦合到第二總線520的總線橋接器518。在一個(gè)實(shí)施例中,第二總線520可以是低引腳計(jì)數(shù)(LPC)總線。各種設(shè)備可以耦合到第二總線520,各種設(shè)備包括例如,鍵盤/鼠標(biāo)522、通信設(shè)備526以及諸如在一個(gè)實(shí)施例中可以包括代碼530的磁盤驅(qū)動(dòng)器或其它大容量存儲(chǔ)設(shè)備之類的數(shù)據(jù)存儲(chǔ)單元528。進(jìn)一步,音頻I/O 524可以與第二總線520耦合。注意,其它體系結(jié)構(gòu)是可能的。例如,代替圖7的點(diǎn)對(duì)點(diǎn)體系結(jié)構(gòu),系統(tǒng)可以實(shí)現(xiàn)多支路總線或另外的這種體系結(jié)構(gòu)。
可以用代碼實(shí)現(xiàn)實(shí)施例并且可以存儲(chǔ)到已經(jīng)在其上存儲(chǔ)了指令的存儲(chǔ)介質(zhì)上,存儲(chǔ)的指令可被用于編程系統(tǒng)以執(zhí)行所述指令。存儲(chǔ)介質(zhì)可以包括但不局限于任何類型的盤,其包括軟盤、光盤、高密度盤只讀存儲(chǔ)器(CD-ROM)、高密度可重寫盤(CD-RW)、和磁光盤,諸如只讀存儲(chǔ)器(ROM),諸如動(dòng)態(tài)的隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)的隨機(jī)存取存儲(chǔ)器(SRAM)的隨機(jī)存取存儲(chǔ)器(RAM),可擦除可編程只讀存儲(chǔ)器(EPROM),閃存,電可擦除可編程只讀存儲(chǔ)器(EEPROM),磁或光卡之類的半導(dǎo)體裝置,或任何其它類型的適用于存儲(chǔ)電子指令的介質(zhì)。
雖然本發(fā)明已經(jīng)描述了相對(duì)有限數(shù)目的實(shí)施例,本領(lǐng)域中的那些普通技術(shù)人員可以理解的是,可以由此產(chǎn)生大量的修改和變化。意圖是附加的權(quán)利要求覆蓋了所有的這種修改和變化,正如落在本發(fā)明的真實(shí)精神和范圍內(nèi)。
權(quán)利要求
1.一種方法,包括通過第一指令定序器將請(qǐng)求直接從用戶級(jí)別應(yīng)用程序傳送到與第一指令定序器耦合的加速器,其中加速器包括相對(duì)于第一指令定序器的不同種類的資源;通過與所述加速器有關(guān)的外骨骼向加速器提供請(qǐng)求;以及響應(yīng)請(qǐng)求,并行于第一指令定序器中的第二功能執(zhí)行加速器中的第一功能。
2.根據(jù)權(quán)利要求1的方法,其中直接傳送請(qǐng)求包括根據(jù)外骨骼和加速器之間的專用協(xié)議,發(fā)送請(qǐng)求到外骨骼并且從外骨骼傳遞請(qǐng)求到加速器。
3.根據(jù)權(quán)利要求2的方法,進(jìn)一步包括通過第一指令系統(tǒng)結(jié)構(gòu)發(fā)送請(qǐng)求到外骨骼,并且其中加速器包括第二指令系統(tǒng)結(jié)構(gòu)的資源。
4.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括直接傳送請(qǐng)求而不需要操作系統(tǒng)(OS)的支持,其中加速器對(duì)OS是透明的。
5.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括響應(yīng)請(qǐng)求將加速器的體系結(jié)構(gòu)狀態(tài)的子集提供到用戶級(jí)應(yīng)用程序。
6.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括響應(yīng)請(qǐng)求將外骨骼和加速器的集合體系結(jié)構(gòu)狀態(tài)提供到用戶級(jí)應(yīng)用程序。
7.如權(quán)利要求所述的方法,進(jìn)一步包括識(shí)別系統(tǒng)禁止的資源并且將禁止資源配置為加速器。
8.根據(jù)權(quán)利要求7所述的方法,進(jìn)一步包括通過禁止資源而不是通過操作系統(tǒng)級(jí)介質(zhì)驅(qū)動(dòng)程序來執(zhí)行用戶級(jí)介質(zhì)應(yīng)用程序。
9.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括通過外骨骼虛擬化加速器,以便加速器內(nèi)的功能性第一子集對(duì)用戶級(jí)應(yīng)用程序是可見的并且加速器內(nèi)的功能性第二子集對(duì)操作系統(tǒng)(OS)是可見的。
10.一種裝置,包括用于執(zhí)行指令的第一指令定序器;以及耦合到第一指令定序器的外定序器,其包括加速器,用于對(duì)從第一指令定序器接收的數(shù)據(jù)執(zhí)行至少一個(gè)操作,其中加速器包括相對(duì)于第一指令定序器的不同種類的資源;以及與加速器耦合的外骨骼,用于使內(nèi)定序器能夠在用戶級(jí)控制下在第一指令定序器和加速器之間通信。
11.如權(quán)利要求10所述的裝置,其中加速器包括固定功能單元,而外骨骼包括與固定功能單元耦合的有限狀態(tài)機(jī)(FSM)。
12.如權(quán)利要求10所述的裝置,其中裝置包括具有單個(gè)襯底的處理器,該單個(gè)襯底包括第一指令定序器和加速器。
13.如權(quán)利要求10所述的裝置,其中第一指令定序器和加速器并行執(zhí)行操作。
14.如權(quán)利要求10所述的裝置,其中一旦完成至少一個(gè)操作,加速器將通知第一指令定序器。
15.如權(quán)利要求14所述的裝置,其中通知之后,在用戶級(jí)控制下,第一指令定序器將執(zhí)行事件處理程序,其中事件處理程序?qū)⒔邮蘸吞幚韥碜杂谥辽僖粋€(gè)操作的結(jié)果數(shù)據(jù)。
16.如權(quán)利要求10所述的裝置,其中內(nèi)定序器通信包括直接通信而不需要操作系統(tǒng)(OS)介入。
17.如權(quán)利要求10所述的裝置,其中第一指令定序器包括本地指令系統(tǒng)結(jié)構(gòu)(ISA)的處理引擎,而加速器包括非本地ISA的處理引擎。
18.如權(quán)利要求10所述的裝置,其中加速器包括被禁止的系統(tǒng)資源,其中加速器包括將被配置成在用戶級(jí)控制下由第一指令定序器使用的第一部分;以及將被配置成通過啟用操作系統(tǒng)的應(yīng)用程序而使用的第二部分。
19.如權(quán)利要求10所述的裝置,其中外骨骼包括第一邏輯,用于啟動(dòng)對(duì)于加速器的體系結(jié)構(gòu)狀態(tài)信息的進(jìn)入通信以及對(duì)于第一指令定序器的狀態(tài)信息的發(fā)出通信;以及第二邏輯,用于虛擬化在用戶級(jí)控制下和在操作系統(tǒng)控制下使用的加速器。
20.一種包括含有指令的機(jī)器可讀存儲(chǔ)介質(zhì)的產(chǎn)品,該指令如果由機(jī)器執(zhí)行,則啟動(dòng)機(jī)器執(zhí)行一種方法包括在第一定序器中,通過與輔助單元耦合的接口從輔助單元接收信號(hào),其中輔助單元是相對(duì)于第一定序器的不同種類的資源;通過接口從第一定序器向輔助單元提供命令信息,并且通過接口而不需要操作系統(tǒng)(OS)的支持來轉(zhuǎn)換第一定序器的第一指令系統(tǒng)結(jié)構(gòu)(ISA)的命令信息;以及并行于輔助單元中的第一操作執(zhí)行第一定序器中的第二操作,第一操作響應(yīng)所述命令信息。
21.如權(quán)利要求20所述的產(chǎn)品,其中所述方法進(jìn)一步包括在第一定序器和輔助單元中執(zhí)行多指令多數(shù)據(jù)(MIMD)操作。
22.如權(quán)利要求20所述的產(chǎn)品,其中所述方法進(jìn)一步包括從輔助單元中接收第一操作完成的指示;以及啟動(dòng)第一定序器上的用戶級(jí)處理程序,以便通過接口接收與第一操作相對(duì)應(yīng)的數(shù)據(jù)。
23.如權(quán)利要求20所述的產(chǎn)品,其中所述方法進(jìn)一步包括在用戶級(jí)應(yīng)用程序和OS驅(qū)動(dòng)程序之間共享所述輔助單元。
24.如權(quán)利要求23所述的產(chǎn)品,其中所述方法進(jìn)一步包括通過接口向用戶級(jí)應(yīng)用程序展示輔助單元的第一部分以及向OS驅(qū)動(dòng)程序展示輔助單元的第二部分。
25.如權(quán)利要求24所述的產(chǎn)品,其中所述方法進(jìn)一步包括從第一定序器將與輔助單元的第一部分有關(guān)的第一體系結(jié)構(gòu)狀態(tài)提供到接口。
26.一種系統(tǒng),包括第一定序器,用于通過第一指令系統(tǒng)結(jié)構(gòu)(ISA)執(zhí)行指令;與第一定序器耦合的第二定序器,第二定序器包括通過內(nèi)定序器通信協(xié)議與第一定序器通信的接口,第二定序器進(jìn)一步包括與接口耦合的計(jì)算資源,其中計(jì)算資源是相對(duì)于第一定序器的非同類的并且將通過專用協(xié)議與接口通信;以及耦合到第一定序器和第二定序器的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)。
27.如權(quán)利要求26所述的系統(tǒng),其中第一定序器和第二定序器包括處理器的不同種類的資源。
28.如權(quán)利要求26所述的系統(tǒng),進(jìn)一步包括包括第一定序器的第一處理器;與第一處理器耦合的第一系統(tǒng)元件,用于執(zhí)行專門的功能;以及與第一處理器耦合的第二系統(tǒng)元件,該第二系統(tǒng)元件包括第二定序器,其中計(jì)算資源包括相對(duì)于將由第一系統(tǒng)元件執(zhí)行的專門功能而具有雙重功能性的第二系統(tǒng)元件的處理引擎。
29.如權(quán)利要求28所述的系統(tǒng),進(jìn)一步包括用戶級(jí)應(yīng)用程序,用于使用處理引擎來執(zhí)行不同于專門功能的第一任務(wù)而不需要操作系統(tǒng)(OS)的支持。
30.如權(quán)利要求26所述的系統(tǒng),其中第一定序器將向第二定序器提供虛擬命令,其中接口將虛擬命令映射為與計(jì)算資源有關(guān)的第二指令系統(tǒng)結(jié)構(gòu)(ISA)的一個(gè)或多個(gè)指令。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明包括一種方法,用于在加速器和耦合加速器的指令定序器之間直接通信,其中加速器是相對(duì)于指令定序器的不同種類的資源。接口可以用于提供這些資源之間的通信。通過這種通信機(jī)制,用戶級(jí)應(yīng)用程序可以直接與加速器通信而不需要操作系統(tǒng)的支持。進(jìn)一步,指令定序器和加速器可以并行執(zhí)行操作。描述并要求了其他實(shí)施例。
文檔編號(hào)G06F9/54GK1991768SQ20061006422
公開日2007年7月4日 申請(qǐng)日期2006年12月29日 優(yōu)先權(quán)日2005年12月29日
發(fā)明者H·王, J·沈, H·蔣, R·漢金斯, P·哈馬隆德, D·羅杰斯, G·蔡亞, B·帕特爾, S·考施克, B·比格比, G·希菲爾, Y·塔爾加姆, Y·尤塞夫, J·P·赫爾德 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
呈贡县| 北流市| 方山县| 灵石县| 赫章县| 张家港市| 桓台县| 开远市| 东方市| 金昌市| 奉节县| 肥东县| 灌阳县| 银川市| 九寨沟县| 桂东县| 凤阳县| 安达市| 新乡县| 江西省| 华宁县| 涿州市| 花莲县| 保山市| 吉林市| 仁布县| 赣州市| 南汇区| 乡城县| 历史| 庆阳市| 巨野县| 华蓥市| 霍城县| 健康| 商丘市| 九龙城区| 庄浪县| 微山县| 新河县| 台州市|