為內(nèi)存控制器分配硬件加速指令的方法和裝置的制造方法
【專利摘要】本發(fā)明實施例提供一種為內(nèi)存控制器分配硬件加速指令的方法和裝置。該方法包括:按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合;按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系;根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系;按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器。實現(xiàn)由計算機系統(tǒng)中的多個內(nèi)存控制器執(zhí)行硬件加速指令時,各個內(nèi)存控制器的負載均衡。
【專利說明】
為內(nèi)存控制器分配硬件加速指令的方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明實施例涉及計算機技術(shù)領(lǐng)域,尤其涉及一種為內(nèi)存控制器分配硬件加速指令的方法和裝置。
【背景技術(shù)】
[0002]計算機系統(tǒng)由計算機硬件和軟件兩部分組成。其中,硬件包括處理器、寄存器、高速緩沖存儲器、內(nèi)存儲器和外部存儲器等;軟件是計算機的運行程序和相應的文檔。在運行程序時,計算機操作系統(tǒng)將運行程序時程序中的指令涉及到的數(shù)據(jù)從內(nèi)存儲器通過內(nèi)存總線傳輸?shù)礁咚倬彌_存儲器或寄存器內(nèi),再由處理器獲取到數(shù)據(jù)進行指令的運行,進而完成程序的運行。所以,運行程序時,程序中的指令涉及到的數(shù)據(jù)的傳輸是制約程序運行速度的關(guān)鍵因素。目前,為了提高程序的運行速度,主要采用的方法有:通過提高物理帶寬來提高程序的運行速度的方法,例如:通過提高單個針腳的傳輸速率來提高內(nèi)存總線頻率、通過增加管腳數(shù)量的方法增加內(nèi)存訪問通道等。但是,由于現(xiàn)有封裝技術(shù)的限制,芯片的管腳數(shù)量難以實現(xiàn)規(guī)模擴展,且單個針腳的傳輸速率也很難再進行大的提升。
[0003]考慮到現(xiàn)有封裝技術(shù)的限制,以及為了通過提高軟件程序的執(zhí)行速度以適應云計算和大數(shù)據(jù)的應用,現(xiàn)有技術(shù)中提高軟件程序的執(zhí)行速度的方法還可以具體為:在內(nèi)存儲器和高速緩沖存儲器之間設置內(nèi)存控制器,并將程序中的一些大規(guī)模操作的指令,以一條或幾條變粒度的硬件加速指令來代替,從而通過該內(nèi)存控制器對這些硬件加速指令進行運行,從而有效地減少了數(shù)據(jù)在內(nèi)存儲器和處理器之間的傳輸,間接提高內(nèi)存帶寬的利用,同時減少了程序中的大規(guī)模操作的指令對處理器的占用。
[0004]但是,通過內(nèi)存控制器來對硬件加速指令進行運行時,可能會導致多個內(nèi)存控制器負載不均衡的問題,進而影響計算機操作系統(tǒng)的性能,不能很好的適應云計算和大數(shù)據(jù)的應用。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種為內(nèi)存控制器分配硬件加速指令的方法和裝置,實現(xiàn)由計算機系統(tǒng)中的多個內(nèi)存控制器執(zhí)行硬件加速指令時,各個內(nèi)存控制器的負載均衡,進而提高了計算機系統(tǒng)的性能,更好地滿足了云計算和大數(shù)據(jù)的應用。
[0006]第一方面,本發(fā)明實施例提供一種為內(nèi)存控制器分配硬件加速指令的方法,所述方法應用于計算機系統(tǒng),所述計算機系統(tǒng)包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器,所述方法包括:
[0007]按照多個硬件加速指令之間的依賴關(guān)系將所述多個硬件加速指令劃分為不同的指令集合,其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,所述單依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令單依賴于所述另外一個硬件加速指令;
[0008]按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,其中,所述依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令依賴于所述另外一個或多個硬件加速指令,所述第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合;
[0009]根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,其中,所述第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,所述第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,所述負載信息包括已分配給所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間;
[0010]按照所述第二映射關(guān)系將所述各指令集合中的硬件加速指令分配給所述第二內(nèi)存控制器集合中的內(nèi)存控制器,其中,同一個指令集合中的硬件加速指令被分配給同一個內(nèi)存控制器執(zhí)行。
[0011]結(jié)合第一方面,在第一方面的第一種實施方式中,
[0012]所述根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系具體包括:
[0013]當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,將所述第一映射關(guān)系中分配給所述負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給所述計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0014]結(jié)合第一方面,在第一方面的第二種實施方式中,
[0015]所述根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系具體包括:
[0016]當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,獲取所述計算機系統(tǒng)中的第三內(nèi)存控制器集合,所述第三內(nèi)存控制器集合中的內(nèi)存控制器的負載信息均不大于所述第一預設閾值;
[0017]按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取所述各指令集合與所述第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。
[0018]結(jié)合第一方面或第一方面的第一種實施方式或第一方面的第二種實施方式,在第一方面的第三種實施方式中,
[0019]所述獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系具體包括:
[0020]若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將所述指令集合分配給與所述指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。
[0021]結(jié)合第一方面或第一方面的第一種實施方式或第一方面的第二種實施方式,在第一方面的第四種實施方式中,
[0022]所述硬件加速指令的執(zhí)行時間latency; (Fixed;, Variable;)= Fixedi+Variablei ( a jdatai/base+granularityi),其中,F(xiàn)ixedi為所述硬件加速指令的固定執(zhí)行時間,Variable;為所述硬件加速指令的可變執(zhí)行時間,a ;為所述硬件加速指令的數(shù)據(jù)執(zhí)行比率,data;為所述硬件加速指令的數(shù)據(jù)量,base_granularity ;為所述硬件加速指令的最小數(shù)據(jù)粒度。
[0023]第二方面,本發(fā)明實施例提供一種為內(nèi)存控制器分配硬件加速指令的裝置,所述裝置應用于計算機系統(tǒng),所述計算機系統(tǒng)包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器,所述裝置包括:
[0024]劃分模塊,用于按照多個硬件加速指令之間的依賴關(guān)系將所述多個硬件加速指令劃分為不同的指令集合,其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,所述單依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令單依賴于所述另外一個硬件加速指令;
[0025]獲取模塊,用于按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,其中,所述依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令依賴于所述另外一個或多個硬件加速指令,所述第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合;
[0026]調(diào)整模塊,用于根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,其中,所述第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,所述第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,所述負載信息包括已分配給所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間;
[0027]分配模塊,用于按照所述第二映射關(guān)系將所述各指令集合中的硬件加速指令分配給所述第二內(nèi)存控制器集合中的內(nèi)存控制器,其中,同一個指令集合中的硬件加速指令被分配給同一個內(nèi)存控制器執(zhí)行。
[0028]結(jié)合第二方面,在第二方面的第一種實施方式中,
[0029]所述調(diào)整模塊具體用于:
[0030]當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,將所述第一映射關(guān)系中分配給所述負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給所述計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0031]結(jié)合第二方面,在第二方面的第二種實施方式中,
[0032]所述調(diào)整模塊具體用于:
[0033]當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,獲取所述計算機系統(tǒng)中的第三內(nèi)存控制器集合,所述第三內(nèi)存控制器集合中的內(nèi)存控制器的負載信息均不大于所述第一預設閾值;按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取所述各指令集合與所述第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。
[0034]結(jié)合第二方面或第二方面的第一種實施方式或第二方面的第二種實施方式,在第二方面的第三種實施方式中,
[0035]所述獲取模塊具體用于:
[0036]若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將所述指令集合分配給與所述指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。
[0037]結(jié)合第二方面或第二方面的第一種實施方式或第二方面的第二種實施方式,在第二方面的第四種實施方式中,
[0038]所述硬件加速指令的執(zhí)行時間latency; (Fixed;, Variable;)= Fixedi+Variablei ( a jdatai/base+granularityi),其中,F(xiàn)ixedi為所述硬件加速指令的固定執(zhí)行時間,Variable;為所述硬件加速指令的可變執(zhí)行時間,a ;為所述硬件加速指令的數(shù)據(jù)執(zhí)行比率,data;為所述硬件加速指令的數(shù)據(jù)量,base_granularity ;為所述硬件加速指令的最小數(shù)據(jù)粒度。
[0039]本發(fā)明實施例提供的一種硬件加速指令的分配方法和裝置,通過按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合,其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,單依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令單依賴于另外一個硬件加速指令;按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,其中,依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令依賴于另外一個或多個硬件加速指令,第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合;根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,其中,第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合, 第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,負載信息包括已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間;按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器,其中,同一個指令集合中的硬件加速指令被分配給同一個內(nèi)存控制器執(zhí)行。實現(xiàn)由計算機系統(tǒng)中的多個內(nèi)存控制器執(zhí)行硬件加速指令時,各個內(nèi)存控制器的負載均衡,進而提高了計算機系統(tǒng)的性能,更好地滿足了云計算和大數(shù)據(jù)的應用?!靖綀D說明】
[0040]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例的附圖。
[0041]圖1為本發(fā)明實施例提供的一種為內(nèi)存控制器分配硬件加速指令的方法流程圖;
[0042]圖2為本發(fā)明實施例提供的一種多個硬件加速指令之間的依賴關(guān)系示意圖;
[0043]圖3為本發(fā)明實施例提供的又一種為內(nèi)存控制器分配硬件加速指令的方法流程圖;
[0044]圖4為本發(fā)明實施例提供的一種為內(nèi)存控制器分配硬件加速指令的裝置結(jié)構(gòu)示意圖?!揪唧w實施方式】
[0045]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。
[0046]圖1為本發(fā)明實施例提供的一種為內(nèi)存控制器分配硬件加速指令的方法流程圖, 如圖1所示,本實施例的執(zhí)行主體為計算機。該方法應用于計算機系統(tǒng),該計算機系統(tǒng)中包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器。具體可通過硬件或軟件和硬件相結(jié)合的方式實現(xiàn),則該方法包括:
[0047]步驟101,按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合。
[0048]本實施例中,硬件加速指令是指程序中的能夠在內(nèi)存控制器上獨立執(zhí)行的指令。 硬件加速指令一般為程序中需要大規(guī)模操作并計算量少的指令。如矩陣轉(zhuǎn)置指令,矩陣清零指令,以消息包的形式變粒度的讀寫指令等。
[0049]本實施例中,在執(zhí)行程序中的指令前,編譯器對程序進行靜態(tài)編譯時使用傳統(tǒng)的編譯識別方法,識別出程序中的多個硬件加速指令。
[0050]在編譯器識別出程序中多個硬件加速指令的指令后,按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合。
[0051]其中,依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令依賴于另外一個或多個硬件加速指令。
[0052]其中,依賴關(guān)系包括單依賴關(guān)系和多依賴關(guān)系。若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令單依賴于另外一個硬件加速指令,這種依賴關(guān)系為單依賴關(guān)系。若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外多個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令多依賴于另外多個硬件加速指令,這種依賴關(guān)系為多依賴關(guān)系。
[0053]若硬件加速指令之間存在依賴關(guān)系,則被依賴的一個或多個硬件加速指令為父硬件加速指令,依賴的硬件加速指令為子硬件加速指令。由于在執(zhí)行程序時,首先執(zhí)行父硬件加速指令后執(zhí)行子硬件加速指令,所以在將程序中的多個硬件加速指令分配給計算機系統(tǒng)中的內(nèi)存控制器時,首先將父硬件加速指令進行分配,再將子硬件加速指令進行分配。
[0054]本實施例中,由于內(nèi)存控制器執(zhí)行硬件加速指令時,具有先執(zhí)行父硬件加速指令后執(zhí)行子硬件加速指令的時序關(guān)系特征,所以在將多個硬件加速指令分配給內(nèi)存控制器時,可將具有單依賴關(guān)系的硬件加速指令分配給同一內(nèi)存控制器執(zhí)行。所以,本實施例中, 將多個硬件加速指令按照多個硬件加速指令之間的依賴關(guān)系劃分為不同的指令集合。
[0055]其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系。那么在不同的指令集合中的硬件加速指令之間具有兩種關(guān)系,第一種關(guān)系為不同指令集合中的硬件加速指令之間無依賴關(guān)系,另一種關(guān)系為不同指令集合中的硬件加速指令之間具有多依賴關(guān)系。
[0056]圖2為本發(fā)明實施例提供的一種多個硬件加速指令之間的依賴關(guān)系示意圖。如圖 2所示,該程序中共有7個硬件加速指令。硬件加速指令之間具有一個箭頭表示硬件加速指令之間具有單依賴關(guān)系。硬件加速指令之間具有多個箭頭,表示硬件加速指令之間具有多依賴關(guān)系。延伸出箭頭的硬件加速指令為父硬件加速指令,箭頭所指向的硬件加速指令為子硬件加速指令。圖2中的硬件加速指令1、2、3之間具有單依賴關(guān)系,構(gòu)成指令集合a,硬件加速指令4、5之間具有單依賴關(guān)系,構(gòu)成指令集合b,硬件加速指令6、7之間具有單依賴關(guān)系,構(gòu)成指令集合c。那么在指令集合a和指令集合b中的硬件加速指令之間無依賴關(guān)系,在指令集合c中的硬件加速指令6與指令集合a中的硬件加速指令3、指令集合b中的硬件加速指令5之間具有多依賴關(guān)系。
[0057]步驟102,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系。
[0058]本實施例中,將多個硬件加速指令劃分為不同的指令集合后,對多個指令集合進行分配時,若不同的指令集合中的硬件加速指令之間無依賴關(guān)系,則說明不同指令集合中的硬件加速指令之間無時序關(guān)系,可在計算機系統(tǒng)中的內(nèi)存控制器中并行執(zhí)行。所以為了減少程序中硬件加速指令在計算機系統(tǒng)中的內(nèi)存控制器的執(zhí)行時間,在將不同的指令集合分配給計算機系統(tǒng)中的內(nèi)存控制器時,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則進行分配,以獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系。
[0059]如在上述舉例中,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系時,將指令集合a和指令集合b分配給不同的內(nèi)存控制器。而對于指令集合c,可將指令集合c分配到和指令集合a或指令集合b同一內(nèi)存控制器中,也可將指令集合c分配到與指令集合a和指令集合b都不相同的內(nèi)存控制器中。
[0060]其中,獲取的各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合。第一內(nèi)存控制器集合可以為計算機系統(tǒng)中的部分或全部內(nèi)存控制器。若指令集合的個數(shù)小于內(nèi)存控制器的個數(shù),則第一內(nèi)存控制器為計算機系統(tǒng)的部分內(nèi)存控制器,若指令集合的個數(shù)不小于內(nèi)存控制器的個數(shù),則按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系中的第一內(nèi)存控制器集合為計算系統(tǒng)中的部分或全部的內(nèi)存控制器。
[0061]步驟103,根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0062]本實施例中,在獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系時,遵循的原則為使已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間更短,并沒有充分考慮到已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間是否均衡,所以在獲取到第一映射關(guān)系后,根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息來調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0063]在對第一映射關(guān)系調(diào)整后,在第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合。其中,第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值。
[0064]本實施例中,第一預設閾值可在執(zhí)行程序中的硬件加速指令前根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息預先設定。
[0065]其中,負載信息包括已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間。
[0066]步驟104,按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器。
[0067]本實施例中,由于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,即同一指令集合中的硬件加速指令間具有先執(zhí)行父硬件加速指令后執(zhí)行子硬件加速指令的時序關(guān)系,所以將同一個指令集合中的硬件加速指令配分配到同一個內(nèi)存控制器執(zhí)行。
[0068]本實施例中,按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器,由第二內(nèi)存控制器集合中的內(nèi)存控制器按照分配的先后順序執(zhí)行硬件加速指令。
[0069]本實施例中,通過按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,使第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,并按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器。由于調(diào)整了第一映射關(guān)系,獲得的第二映射關(guān)系中內(nèi)存控制器的負載信息均不大于第一預設閾值,所以按照第二映射關(guān)系執(zhí)行各指令集合中的硬件加速指令時,實現(xiàn)由計算機系統(tǒng)中各個內(nèi)存控制器的負載均衡,進而提高了計算機操作系統(tǒng)的性能,更好地滿足了云計算和大數(shù)據(jù)的應用。
[0070]圖3為本發(fā)明實施例提供的又一種為內(nèi)存控制器分配硬件加速指令的方法流程圖,如圖3所示,本實施例的執(zhí)行主體為計算機。該方法應用于計算機系統(tǒng),該計算機系統(tǒng)中包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器。具體可通過硬件或軟件和硬件相結(jié)合的方式實現(xiàn),則該方法包括:
[0071]步驟301,按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合。
[0072]其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系。單依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令單依賴于另外一個硬件加速指令。
[0073]本實施例中,步驟301和本發(fā)明為內(nèi)存控制器分配硬件加速指令的方法實施例一中的步驟101相同,在此不再一一贅述。
[0074]步驟302,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系。其中,第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合。
[0075]本實施例中,第一內(nèi)存控制器集合可以為計算機系統(tǒng)中的部分或全部內(nèi)存控制器。若指令集合的個數(shù)小于內(nèi)存控制器的個數(shù),則第一內(nèi)存控制器為計算機系統(tǒng)的部分內(nèi)存控制器,若指令集合的個數(shù)不小于內(nèi)存控制器的個數(shù),則按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系中的第一內(nèi)存控制器集合為計算系統(tǒng)中的部分或全部的內(nèi)存控制器。
[0076]進一步地,本實施例中,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系時,若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。
[0077]本實施例中,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系時,若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。能在減小第一內(nèi)存控制器集合中的各內(nèi)存控制器負載信息的同時,使第一內(nèi)存控制器集合中的內(nèi)存控制器的負載盡量均衡。
[0078]其中,負載信息包括已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間。
[0079]進一步地,本實施例中,由于程序中的多個硬件加速指令具體的操作和計算的數(shù)據(jù)不同,所以針對每一個硬件加速指令,其執(zhí)行的時間也不相同。
[0080]具體地,硬件加速指令的執(zhí)行時間latency; (Fixed;, Variable;)可表示為式(1) 所示:
[0081]latency; (Fixedi, Var iab 1 e;) = Fixedi+Var iab 1 e; ( a i*datai/base_ granularity^ (1)
[0082]其中,F(xiàn)ixedi為第i個硬件加速指令的固定執(zhí)行時間,其表示解析和調(diào)度硬件加速指令所需要的時間。由于每個硬件加速指令解析和調(diào)度的時間近似相等,所以每個硬件加速指令的固定執(zhí)行時間近似相等,本實施例中可將每個硬件加速指令的固定執(zhí)行時間設置為同一數(shù)值。
[0083]Variably為硬件加速指令的可變執(zhí)行時間。針對每個硬件加速指令,可變執(zhí)行時間不相同,如若硬件加速指令為讀取指令,則該硬件加速指令的可變執(zhí)行時間更多受讀取指令的數(shù)據(jù)量以及讀取指令的最小數(shù)據(jù)粒度影響。又如若硬件加速指令為矩陣轉(zhuǎn)置指令, 則其可變執(zhí)行時間中除受矩陣的數(shù)據(jù)量以及矩陣轉(zhuǎn)置時的最小數(shù)據(jù)粒度影響外,也會受數(shù)據(jù)執(zhí)行比率影響。所以針對不同的硬件加速指令,根據(jù)硬件加速指令的數(shù)據(jù)執(zhí)行比率a ^ 硬件加速指令的數(shù)據(jù)量data;,硬件加速指令的最小數(shù)據(jù)粒度base+granularity;,計算硬件加速指令的可變執(zhí)行時間。
[0084]本實施例中,每個硬件加速指令的執(zhí)行時間為該硬件加速指令的固定執(zhí)行時間和可變執(zhí)行時間之和。
[0085]本實施例中,根據(jù)每個硬件加速指令的執(zhí)行時間可準確計算出已分配給計算機系統(tǒng)中的各內(nèi)存控制器的負載信息,進而在將各指令集合中的硬件加速指令分配給計算機系統(tǒng)中的內(nèi)存控制器,由內(nèi)存控制器執(zhí)行各硬件加速指令時,進一步提高了各內(nèi)存控制器的負載均衡程度。
[0086]步驟303,判斷第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例是否小于第二預設閾值,若是,則執(zhí)行步驟304,若否,則執(zhí)行步驟305。
[0087]本實施例中,第一預設閾值可在執(zhí)行程序中的硬件加速指令前根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息預先設定。第二預設閾值可預先設定,如為2/5,也可以為其他閾值,本實施例中不做限定。
[0088]步驟304,將第一映射關(guān)系中分配給負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0089]本實施例中,當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,表明在按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,并若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器,所獲取的各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系中,第一內(nèi)存控制器集合中的內(nèi)存控制器的負載比較均衡,為了使負載信息大于第一預設閾值的內(nèi)存控制器不再分配指令集合,則將第一映射關(guān)系中分配給負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器, 以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0090]步驟305,獲取計算機系統(tǒng)中的第三內(nèi)存控制器集合,第三內(nèi)存控制器集合中的內(nèi)存控制器的負載信息均不大于第一預設閾值;按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。
[0091]本實施例中,當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,表明在按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,并若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器,所獲取的各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系中,第一內(nèi)存控制器集合中的內(nèi)存控制器的負載均衡效果不是很理想,為了使計算機系統(tǒng)中各內(nèi)存控制器的負載均衡,則獲取計算機系統(tǒng)中負載信息均不大于第一預設閾值的內(nèi)存控制器,由計算機系統(tǒng)中負載信息均不大于第一預設閾值的內(nèi)存控制器組成第三內(nèi)存控制器集合。
[0092]在獲取到計算機系統(tǒng)中的第三內(nèi)存控制器集合后,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。
[0093]進一步地,本實施例中,在獲取各指令集合與第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系時,若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。
[0094]步驟306,按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器。
[0095]本實施例中,由于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,即同一指令集合中的硬件加速指令間具有先執(zhí)行父硬件加速指令后執(zhí)行子硬件加速至零的時序關(guān)系,所以將同一個指令集合中的硬件加速指令配分配到同一個內(nèi)存控制器執(zhí)行。
[0096]本實施例中,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系時, 若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器,提高了獲取的第一次映射關(guān)系中第一內(nèi)存控制器集合中的內(nèi)存控制器的負載均衡程度,并且當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,將第一映射關(guān)系中分配給負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系,使第二映射關(guān)系中的內(nèi)存控制器的負載信息均不大于第一預設閾值,所以本實施例中,在將多個硬件加速指令分配給計算機系統(tǒng)中的內(nèi)存控制器時先后進行了兩次負載均衡的處理,使由計算機系統(tǒng)中的多個內(nèi)存控制器執(zhí)行硬件加速指令時,各個內(nèi)存控制器的負載更加均衡。
[0097]圖4為本發(fā)明實施例提供的一種為內(nèi)存控制器分配硬件加速指令的裝置結(jié)構(gòu)示意圖。該裝置應用于計算機系統(tǒng),計算機系統(tǒng)包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器。如圖4所示,該為內(nèi)存控制器分配硬件加速指令的裝置包括:劃分模塊401,獲取模塊402,調(diào)整模塊403和分配模塊404。
[0098]其中,劃分模塊401,用于按照多個硬件加速指令之間的依賴關(guān)系將多個硬件加速指令劃分為不同的指令集合。
[0099]其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系。單依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令單依賴于另外一個硬件加速指令。
[0100]獲取模塊402,用于按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系O
[0101]其中,依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令依賴于另外一個或多個硬件加速指令,第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合。
[0102]本實施例中,依賴關(guān)系包括單依賴關(guān)系和多依賴關(guān)系。多依賴關(guān)系是指若多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外多個硬件加速指令的輸出數(shù)據(jù),則一個硬件加速指令多依賴于另外多個硬件加速指令。
[0103]調(diào)整模塊403,用于根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整第一映射關(guān)系,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0104]其中,第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,負載信息包括已分配給第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間。
[0105]本實施例中,第一預設閾值可在執(zhí)行程序中的硬件加速指令前根據(jù)第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息預先設定。
[0106]分配模塊404,用于按照第二映射關(guān)系將各指令集合中的硬件加速指令分配給第二內(nèi)存控制器集合中的內(nèi)存控制器。
[0107]其中,同一個指令集合中的硬件加速指令被分配給同一個內(nèi)存控制器執(zhí)行。
[0108]本實施例的為內(nèi)存控制器分配硬件加速指令的裝置,可以用于執(zhí)行圖1所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0109]進一步地,調(diào)整模塊403,具體用于當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,將第一映射關(guān)系中分配給負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,以獲得各指令集合與計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。
[0110]或者,調(diào)整模塊403,具體用于當?shù)谝粌?nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,獲取計算機系統(tǒng)中的第三內(nèi)存控制器集合,第三內(nèi)存控制器集合中的內(nèi)存控制器的負載信息均不大于第一預設閾值;按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取各指令集合與第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。
[0111]進一步地,獲取模塊402,具體用于若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將指令集合分配給與指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。
[0112]進一步地,本實施例中的硬件加速指令的執(zhí)行時間latency; (Fixed;, Variable;)=Fixedi+Variablei ( a i^datai/base+granularityi),其中,F(xiàn)ixediS硬件加速指令的固定執(zhí)行時間,Variablei為硬件加速指令的可變執(zhí)行時間,a硬件加速指令的數(shù)據(jù)執(zhí)行比率,data;為硬件加速指令的數(shù)據(jù)量,base_granularity ;為硬件加速指令的最小數(shù)據(jù)粒度。
[0113]具體地,F(xiàn)ixed;為第i個硬件加速指令的固定執(zhí)行時間,其表示解析和調(diào)度硬件加速指令所需要的時間。由于每個硬件加速指令解析和調(diào)度的時間近似相等,所以每個硬件加速指令的固定執(zhí)行時間近似相等,本實施例中可將每個硬件加速指令的固定執(zhí)行時間設置為同一數(shù)值。針對每個硬件加速指令,可變執(zhí)行時間不相同,本實施例中,根據(jù)硬件加速指令的數(shù)據(jù)執(zhí)行比率a i,硬件加速指令的數(shù)據(jù)量datai,硬件加速指令的最小數(shù)據(jù)粒度 base+granularity;,計算硬件加速指令的可變執(zhí)行時間Variable;。
[0114]進一步地,本實施例的為內(nèi)存控制器分配硬件加速指令的裝置,可以用于執(zhí)行圖3 所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0115]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁盤或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0116]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制。本申請所提供的實施例僅僅是示意性的。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。在本發(fā)明實施例、權(quán)利要求以及附圖中揭示的特征可以獨立存在也可以組合存在。在本發(fā)明實施例中以硬件形式描述的特征可以通過軟件來執(zhí)行,反之亦然。在此不做限定。
【主權(quán)項】
1.一種為內(nèi)存控制器分配硬件加速指令的方法,其特征在于,所述方法應用于計算機系統(tǒng),所述計算機系統(tǒng)包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器,所述方法包括: 按照多個硬件加速指令之間的依賴關(guān)系將所述多個硬件加速指令劃分為不同的指令集合,其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,所述單依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令單依賴于所述另外一個硬件加速指令; 按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原貝1J,獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,其中,所述依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一個或多個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令依賴于所述另外一個或多個硬件加速指令,所述第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合; 根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,其中,所述第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,所述第二內(nèi)存控制器集合的內(nèi)存控制器的負載信息均不大于第一預設閾值,所述負載信息包括已分配給所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間; 按照所述第二映射關(guān)系將所述各指令集合中的硬件加速指令分配給所述第二內(nèi)存控制器集合中的內(nèi)存控制器,其中,同一個指令集合中的硬件加速指令被分配給同一個內(nèi)存控制器執(zhí)行。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系具體包括: 當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例小于第二預設閾值時,將所述第一映射關(guān)系中分配給所述負載信息大于第一預設閾值的內(nèi)存控制器的指令集合隨機分配給所述計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi)存控制器,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系具體包括: 當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例不小于第二預設閾值時,獲取所述計算機系統(tǒng)中的第三內(nèi)存控制器集合,所述第三內(nèi)存控制器集合中的內(nèi)存控制器的負載信息均不大于所述第一預設閾值; 按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原貝1J,獲取所述各指令集合與所述第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。4.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系具體包括: 若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將所述指令集合分配給與所述指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。5.根據(jù)權(quán)利要求1-3任一項所述的方法,其特征在于,所述硬件加速指令的執(zhí)行時間 latencyi (Fixedi,Variable^ = Fixedi+Variablei ( a i*datai/base_granularityi),其 中,F(xiàn)ixed;為所述硬件加速指令的固定執(zhí)行時間,Variable ;為所述硬件加速指令的可變執(zhí) 行時間,a ,為所述硬件加速指令的數(shù)據(jù)執(zhí)行比率,data i為所述硬件加速指令的數(shù)據(jù)量, base+granularityi為所述硬件加速指令的最小數(shù)據(jù)粒度。6.—種為內(nèi)存控制器分配硬件加速指令的裝置,其特征在于,所述裝置應用于計算機 系統(tǒng),所述計算機系統(tǒng)包括多個能夠執(zhí)行硬件加速指令的內(nèi)存控制器,所述裝置包括:劃分模塊,用于按照多個硬件加速指令之間的依賴關(guān)系將所述多個硬件加速指令劃分 為不同的指令集合,其中,屬于同一個指令集合中的硬件加速指令之間具有單依賴關(guān)系,所 述單依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外一 個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令單依賴于所述另外一個硬件加速指 令;獲取模塊,用于按照將硬件加速指令之間無依賴關(guān)系的不同指令集合分配給不同的內(nèi) 存控制器的原則,獲取各指令集合與所述計算機系統(tǒng)中的內(nèi)存控制器的第一映射關(guān)系,其 中,所述依賴關(guān)系是指若所述多個硬件加速指令中的一個硬件加速指令的輸入數(shù)據(jù)為另外 一個或多個硬件加速指令的輸出數(shù)據(jù),則所述一個硬件加速指令依賴于所述另外一個或多 個硬件加速指令,所述第一映射關(guān)系中的內(nèi)存控制器構(gòu)成第一內(nèi)存控制器集合;調(diào)整模塊,用于根據(jù)所述第一內(nèi)存控制器集合中的各內(nèi)存控制器的負載信息調(diào)整所述 第一映射關(guān)系,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系,其中, 所述第二映射關(guān)系中的內(nèi)存控制器構(gòu)成第二內(nèi)存控制器集合,所述第二內(nèi)存控制器集合的 內(nèi)存控制器的負載信息均不大于第一預設閾值,所述負載信息包括已分配給所述第一內(nèi)存 控制器集合中的各內(nèi)存控制器的硬件加速指令的執(zhí)行時間;分配模塊,用于按照所述第二映射關(guān)系將所述各指令集合中的硬件加速指令分配給所 述第二內(nèi)存控制器集合中的內(nèi)存控制器,其中,同一個指令集合中的硬件加速指令被分配 給同一個內(nèi)存控制器執(zhí)行。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述調(diào)整模塊具體用于:當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例 小于第二預設閾值時,將所述第一映射關(guān)系中分配給所述負載信息大于第一預設閾值的內(nèi) 存控制器的指令集合隨機分配給所述計算機系統(tǒng)中負載信息小于第一預設閾值的其他內(nèi) 存控制器,以獲得各指令集合與所述計算機系統(tǒng)的內(nèi)存控制器的第二映射關(guān)系。8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述調(diào)整模塊具體用于:當所述第一內(nèi)存控制器集合中負載信息大于第一預設閾值的內(nèi)存控制器所占的比例 不小于第二預設閾值時,獲取所述計算機系統(tǒng)中的第三內(nèi)存控制器集合,所述第三內(nèi)存控 制器集合中的內(nèi)存控制器的負載信息均不大于所述第一預設閾值;按照將硬件加速指令之 間無依賴關(guān)系的不同指令集合分配給不同的內(nèi)存控制器的原則,獲取所述各指令集合與所 述第三內(nèi)存控制器集合中的內(nèi)存控制器的第二映射關(guān)系。9.根據(jù)權(quán)利要求6-8任一項所述的裝置,其特征在于,所述獲取模塊具體用于:若與某個指令集合相匹配的內(nèi)存控制器至少有兩個,則將所述指令集合分配給與所述 指令集合相匹配的至少兩個內(nèi)存控制器中負載信息最小的內(nèi)存控制器。10.根據(jù)權(quán)利要求6-8任一項所述的裝置,其特征在于,所述硬件加速指令的執(zhí)行時間 latency; (Fixedi, Variable;) = Fixed^Variablei ( a i*datai/base_granularityi),其中,F(xiàn)ixedi為所述硬件加速指令的固定執(zhí)行時間,Variable ;為所述硬件加速指令的可變執(zhí)行時間,Ct1為所述硬件加速指令的數(shù)據(jù)執(zhí)行比率,Clata1為所述硬件加速指令的數(shù)據(jù)量,base+granularityi為所述硬件加速指令的最小數(shù)據(jù)粒度。
【文檔編號】G06F9/38GK105988952SQ201510092224
【公開日】2016年10月5日
【申請日】2015年2月28日
【發(fā)明人】王晨曦, 呂方, 馮曉兵, 劉穎
【申請人】華為技術(shù)有限公司, 中國科學院計算技術(shù)研究所