通過(guò)虛擬機(jī)切換的重構(gòu)的制作方法
【專(zhuān)利說(shuō)明】
【背景技術(shù)】
[0001]除非在此處進(jìn)行說(shuō)明,否則此處所描述的材料不是本申請(qǐng)權(quán)利要求的現(xiàn)有技術(shù)并且不因包含在該部分中而承認(rèn)是現(xiàn)有技術(shù)。
[0002]在多核體系結(jié)構(gòu)中,可以在單個(gè)集成電路晶粒上包含多個(gè)處理器核,或者可以在布置于單個(gè)芯片封裝中的多個(gè)集成電路晶粒上包括多個(gè)處理器核。高速緩沖存儲(chǔ)器可用來(lái)存儲(chǔ)數(shù)據(jù)以便由一個(gè)或多個(gè)處理器核訪問(wèn)。加速器可以是集中于一個(gè)或多個(gè)應(yīng)用上的專(zhuān)用處理器。
[0003]概述
[0004]在一些示例中,一般地描述了重構(gòu)可編程電路的方法。該方法可以包括檢測(cè)觸發(fā)器。該觸發(fā)器可以指示命令已經(jīng)發(fā)送到處理器以從第一虛擬機(jī)的執(zhí)行切換到第二虛擬機(jī)。該方法可以包括:響應(yīng)于檢測(cè)到觸發(fā)器,選擇可編程電路和用于可編程電路的程序,其中可編程電路與第二虛擬機(jī)相關(guān)聯(lián)。該方法可以進(jìn)一步包括生成寫(xiě)命令以將程序?qū)懭肟删幊屉娐贰?br>[0005]在一些示例中,一般地描述了用于重構(gòu)可編程電路的設(shè)備。該設(shè)備可以包括存儲(chǔ)器、切換檢測(cè)器和第二處理器。該切換檢測(cè)器可以用來(lái)檢測(cè)觸發(fā)器。該觸發(fā)器可以指示命令已經(jīng)發(fā)送到第一處理器以從第一虛擬機(jī)的執(zhí)行切換到第二虛擬機(jī)。第二處理器可配置為與存儲(chǔ)器和切換檢測(cè)器通信。該第二處理器可用來(lái)檢測(cè)觸發(fā)器。該第二處理器可用來(lái)標(biāo)識(shí)與第二虛擬機(jī)相關(guān)聯(lián)的用于可編程電路的加速器和加速器映射。第二處理器可用來(lái)生成寫(xiě)命令以將所述加速器映射寫(xiě)入所述加速器。
[0006]在一些示例中,一般地描述了用來(lái)重構(gòu)可編程電路的系統(tǒng)。該系統(tǒng)可以包括第一處理器、虛擬機(jī)管理器、可編程電路和重構(gòu)設(shè)備。虛擬機(jī)管理器可用來(lái)將命令發(fā)送到第一處理器以從第一虛擬機(jī)的執(zhí)行切換到第二虛擬機(jī)。虛擬機(jī)管理器可以進(jìn)一步用來(lái)響應(yīng)于命令而生成觸發(fā)器。重構(gòu)設(shè)備可以包括存儲(chǔ)器、切換檢測(cè)器和第二處理器。該第二處理器可以用來(lái)檢測(cè)該觸發(fā)器。第二處理器可用來(lái)標(biāo)識(shí)與第二虛擬機(jī)相關(guān)聯(lián)的可編程電路和映射。第二處理器可用來(lái)生成寫(xiě)命令以將映射寫(xiě)入可編程電路。
[0007]前面的概述僅僅是示例性的,而不意在以任何方式進(jìn)行限制。通過(guò)參考附圖以及下面的詳細(xì)說(shuō)明,除了上文所描述的示例性的方面、實(shí)施例和特征之外,另外的方面、實(shí)施例和特征將變得清晰可見(jiàn)。
【附圖說(shuō)明】
[0008]通過(guò)下面結(jié)合附圖給出的詳細(xì)說(shuō)明和隨附的權(quán)利要求,本公開(kāi)的前述特征以及其它特征將變得更加清晰。應(yīng)理解的是,這些附圖僅描繪了依照本公開(kāi)的多個(gè)實(shí)施例,因此,不應(yīng)視為對(duì)本發(fā)明范圍的限制,將通過(guò)利用附圖結(jié)合附加的具體描述和細(xì)節(jié)對(duì)本公開(kāi)進(jìn)行說(shuō)明,在附圖中:
[0009]圖1示出了能夠用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng);
[0010]圖2示出了能夠用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng);
[0011]圖3示出了能夠用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng);
[0012]圖4示出了能夠用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng);
[0013]圖5示出了能夠用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng);
[0014]圖6描繪了用于通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的過(guò)程的流程圖;
[0015]圖7示出了能夠用來(lái)通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的計(jì)算機(jī)程序產(chǎn)品;以及
[0016]圖8是示出布置成通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的計(jì)算設(shè)備的框圖;
[0017]全部根據(jù)本文所描述的至少一些實(shí)施例而布置。
【具體實(shí)施方式】
[0018]在下面的詳細(xì)說(shuō)明中,將參考附圖,附圖構(gòu)成了詳細(xì)說(shuō)明的一部分。在附圖中,除非上下文指出,否則相似的符號(hào)通常表示相似的部件。在詳細(xì)說(shuō)明、附圖和權(quán)利要求中所描述的示例性實(shí)施例不意在限制??梢允褂闷渌鼘?shí)施例,并且可以做出其它改變,而不偏離本文呈現(xiàn)的主題的精神或范圍。將易于理解的是,如本文大致描述且如圖中所圖示的,本公開(kāi)的方案能夠以各種不同配置來(lái)布置、替代、組合、分離和設(shè)計(jì),所有這些都在本文中明確地構(gòu)思出。
[0019]本公開(kāi)大體尤其涉及與通過(guò)虛擬機(jī)切換進(jìn)行重構(gòu)有關(guān)的方法、裝置、系統(tǒng)、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。
[0020]簡(jiǎn)言之,一般地描述了用于重構(gòu)可編程電路的系統(tǒng)和方法的技術(shù)。加速器重構(gòu)設(shè)備可以檢測(cè)觸發(fā)信號(hào)。該觸發(fā)信號(hào)可以指示命令已經(jīng)發(fā)送到處理器以從第一虛擬機(jī)的執(zhí)行切換到第二虛擬機(jī)。響應(yīng)于檢測(cè)到觸發(fā)信號(hào),重構(gòu)設(shè)備可以標(biāo)識(shí)可編程電路以及與第二虛擬機(jī)相關(guān)聯(lián)的用于可編程電路的程序。重構(gòu)設(shè)備可以進(jìn)一步生成寫(xiě)命令以將程序?qū)懭肟删幊屉娐贰?br>[0021]圖1示出了根據(jù)本文所描述的至少一些實(shí)施例布置的能夠用來(lái)通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng)。示例的系統(tǒng)100可以包括處理器核108、諸如加速器102的可編程電路、諸如加速器104的可編程電路、諸如加速器編程器112的編程器、虛擬機(jī)管理器120和/或加速器重構(gòu)設(shè)備116,這些均布置成相互通信。加速器編程器112可以是專(zhuān)用單元或通用處理器。處理器核108可以包括用來(lái)存儲(chǔ)在操作期間由處理器核108可使用的信息的存儲(chǔ)器106。加速器102或104可以配置為可操作以執(zhí)行特定的應(yīng)用或代碼或由映射114重構(gòu)為可操作以執(zhí)行特定的應(yīng)用或代碼。在一些示例中,處理器核108、可重構(gòu)加速器102、104、加速器編程器112、虛擬機(jī)管理器120和/或加速器重構(gòu)設(shè)備116中的一個(gè)或多個(gè)可以定位于同一晶粒110上。在其他示例中,處理器核108、可重構(gòu)加速器102、104、加速器編程器112、虛擬機(jī)管理器120和/或加速器重構(gòu)設(shè)備116中的一個(gè)或多個(gè)可以定位在不同的晶粒上。加速器重構(gòu)設(shè)備116可以實(shí)現(xiàn)為軟件、硬件或者軟件和硬件的組合。加速器重構(gòu)設(shè)備116可以是虛擬機(jī)管理器120的部分。處理器核108可以配置為使用可重構(gòu)加速器102、104中的一個(gè)或多個(gè)來(lái)執(zhí)行操作或任務(wù)。
[0022]加速器編程器112可以包括加速器映射114。加速器映射114可對(duì)應(yīng)于用于可重構(gòu)加速器102、104的一個(gè)或多個(gè)程序。加速器映射114可以包括被流送到可重構(gòu)加速器的門(mén)的二進(jìn)制數(shù)據(jù)。加速器編程器112可以配置為基于加速器映射114對(duì)可重構(gòu)加速器102、104進(jìn)行編程。
[0023]加速器編程器112可以配置為基于加速器映射114對(duì)可重構(gòu)加速器102、104進(jìn)行編程。例如,加速器映射114可用來(lái)定義可重構(gòu)加速器102、104的FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)、EEPR0M(電可擦除可編程只讀存儲(chǔ)器)中的門(mén)或開(kāi)關(guān)的狀態(tài)。在操作期間,處理器核108可以控制加速器編程器112以基于執(zhí)行隊(duì)列來(lái)將所請(qǐng)求的加速器映射114裝載到可重構(gòu)加速器102、104中。
[0024]在示例中,虛擬機(jī)管理器120可以將命令發(fā)送到處理器核108以實(shí)現(xiàn)第一虛擬機(jī)。在一定時(shí)間段之后,虛擬機(jī)管理器120可以將切換命令142發(fā)送到處理器核108以實(shí)現(xiàn)第二虛擬機(jī)。虛擬機(jī)管理器120可以為例如監(jiān)督器。例如,切換命令142可以用來(lái)實(shí)現(xiàn)處理器核120中的上下文切換(context switch)或者處理器核120中的世界切換(worldswitch)。在上下文切換中,處理器核108可以停止處理對(duì)應(yīng)于第一虛擬機(jī)的指令且可以開(kāi)始處理對(duì)應(yīng)于第二虛擬機(jī)的指令。在上下文切換中,處理器核108的狀態(tài)可以保持不變。在一些示例中,處理器核108的狀態(tài)可以對(duì)應(yīng)于處理器核108的狀態(tài)寄存器、緩沖器、高速緩沖存儲(chǔ)器等。上下文切換可以用于如下情形:在操作之間共享資源,并且那些資源修改用戶存儲(chǔ)器,而不是低級(jí)系統(tǒng)狀態(tài)。
[0025]虛擬機(jī)管理器120可以用來(lái)在由處理器核108實(shí)現(xiàn)的虛擬機(jī)請(qǐng)求訪問(wèn)低級(jí)系統(tǒng)狀態(tài)的情形下實(shí)現(xiàn)世界切換。在世界切換中,處理狀態(tài)可以被俘獲和保存,然后用保存的另一虛擬機(jī)或“世界”的狀態(tài)來(lái)替換。
[0026]如下文更詳細(xì)論述的,虛擬機(jī)管理器120可以配置為將切換命令142發(fā)送到處理器核108。切換命令142可以是處理器核108從第一虛擬機(jī)切換到第二虛擬機(jī)的命令。切換命令142可以是例如世界切換命令或上下文切換命令。例如,處理器核108的寄存器和隊(duì)列中的信息以及關(guān)于狀態(tài)的信息和其他處理器核信息可以由虛擬機(jī)管理器120保存且存儲(chǔ)在VMM存儲(chǔ)器118中。關(guān)于第二虛擬機(jī)的在先信息可以通過(guò)虛擬機(jī)管理器120從VMM存儲(chǔ)器118傳輸?shù)教幚砥骱?08。加速器重構(gòu)設(shè)備116可配置為檢測(cè)切換命令142。加速器重構(gòu)設(shè)備116可以進(jìn)一步配置為響應(yīng)于檢測(cè)到切換命令142而重構(gòu)可重構(gòu)加速器102、104中的一個(gè)或多個(gè)。
[0027]圖2示出了依照本文所描述的至少一些實(shí)施例布置的能夠用來(lái)實(shí)現(xiàn)通過(guò)虛擬機(jī)切換實(shí)現(xiàn)重構(gòu)的示例的系統(tǒng)。為簡(jiǎn)要的目的,圖2中那些標(biāo)記與圖1的部件相同的部件不再進(jìn)行描述。
[0028]在一些示例中,響應(yīng)于諸如來(lái)自處理器核108的請(qǐng)求,加速器編程器112可以將映射224裝載到可重構(gòu)加速器102中。加速器編程器112還可以將映射226裝載到可重構(gòu)加速器104中。當(dāng)加速器編程器112將映射224、226裝載到可重構(gòu)加速器102、104時(shí),包括映射224和/或226的副本的映射副本228可以發(fā)送到加速器重構(gòu)設(shè)備116。在虛擬機(jī)管理器120將切換命令142發(fā)送到處理器核108的示例中,虛擬機(jī)管理器120還可以將觸發(fā)信號(hào)222發(fā)送到加速器重構(gòu)設(shè)備116。觸發(fā)信號(hào)222可以指示虛擬機(jī)管理器12