本技術(shù)實施例涉及計算機(jī)領(lǐng)域,具體而言,涉及一種基于仿真系統(tǒng)的工作負(fù)載加載方法及裝置。
背景技術(shù):
1、在集成電路設(shè)計及芯片設(shè)計的仿真建模過程中,處理器系統(tǒng)仿真模型的通常是對稱多處理模式以及非對稱多處理模式。在基于gem5(一個用于計算機(jī)系統(tǒng)架構(gòu)研究的模塊化平臺,簡稱為gem5)搭建固件程序仿真環(huán)境時,當(dāng)一份固件程序以對稱多處理加載方式運(yùn)行,多份固件程序以非對稱多處理方式運(yùn)行時,存在無法靈活指定在哪個仿真處理器加載對應(yīng)的工作負(fù)載的問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)實施例提供了一種基于仿真系統(tǒng)的工作負(fù)載加載方法及裝置,以至少解決相關(guān)技術(shù)中無法靈活加載工作負(fù)載的問題。
2、根據(jù)本技術(shù)的一個實施例,提供了一種基于仿真系統(tǒng)的工作負(fù)載加載方法,應(yīng)用于負(fù)載控制裝置,上述負(fù)載控制裝置部署在目標(biāo)仿真系統(tǒng)中,上述負(fù)載控制裝置包括連接的負(fù)載加載設(shè)備和負(fù)載映射設(shè)備,上述負(fù)載加載設(shè)備與上述目標(biāo)仿真系統(tǒng)中包括的多個仿真處理器連接,上述負(fù)載映射設(shè)備與上述目標(biāo)仿真系統(tǒng)中包括的多個固件程序連接,上述方法還包括:通過上述負(fù)載加載設(shè)備接收目標(biāo)仿真處理器發(fā)送的目標(biāo)請求,并將上述目標(biāo)請求發(fā)送至上述負(fù)載映射設(shè)備,其中,上述目標(biāo)請求中包括上述目標(biāo)仿真處理器的目標(biāo)仿真處理器信息,上述目標(biāo)仿真處理器是多個上述仿真處理器中的一個或多個處理器;通過上述負(fù)載映射設(shè)備從確定的配置文件中查找與上述目標(biāo)仿真處理器信息匹配的目標(biāo)配置信息,并將上述目標(biāo)配置信息發(fā)送至上述負(fù)載加載設(shè)備,其中,上述目標(biāo)配置信息中包括上述目標(biāo)仿真處理器對應(yīng)的目標(biāo)固件程序的配置信息,上述目標(biāo)固件程序是多個上述固件程序中的一個或多個程序;通過上述負(fù)載加載設(shè)備按照上述目標(biāo)配置信息加載上述目標(biāo)仿真處理器,以指示上述目標(biāo)仿真處理器處理上述目標(biāo)固件程序?qū)?yīng)的目標(biāo)工作負(fù)載。
3、在一個示例性實施例中,通過上述負(fù)載映射設(shè)備從確定的配置文件中查找與上述目標(biāo)仿真處理器信息匹配的目標(biāo)配置信息,并將上述目標(biāo)配置信息發(fā)送至上述負(fù)載加載設(shè)備之前,上述方法還包括:通過上述負(fù)載映射設(shè)備生成上述配置文件,其中,上述配置文件中包括多個上述固件程序的配置信息,上述配置信息中包括以下至少之一:上述固件程序?qū)?yīng)的工作負(fù)載的負(fù)載編號,上述固件程序?qū)?yīng)的工作負(fù)載的數(shù)量;固件程序文件的位置,上述固件程序文件中包括上述固件程序的加載位置;用于加載上述固件程序?qū)?yīng)的工作負(fù)載的仿真處理器的編號。
4、在一個示例性實施例中,上述負(fù)載映射設(shè)備包括配置初始化服務(wù)、配置解析服務(wù)以及配置映射服務(wù),通過上述負(fù)載映射設(shè)備生成上述配置文件,包括:上述配置初始化服務(wù)向上述配置解析服務(wù)發(fā)送解析指令;上述配置解析服務(wù)響應(yīng)上述解析指令,從上述目標(biāo)仿真系統(tǒng)中的配置腳本文件中解析出配置參數(shù),并從上述配置參數(shù)提取每個上述固件程序的配置信息,得到多個上述固件程序的配置信息;上述配置初始化服務(wù)從上述配置解析服務(wù)中獲取多個上述固件程序的配置信息,并將多個上述固件程序的配置信息緩存至目標(biāo)對象中,其中,上述目標(biāo)對象是上述配置初始化服務(wù)創(chuàng)建的用于緩存上述配置信息的對象;上述配置映射服務(wù)從上述目標(biāo)對象中獲取多個上述固件程序的配置信息,并利用多個上述固件程序的配置信息生成上述配置文件。
5、在一個示例性實施例中,上述負(fù)載加載設(shè)備包括負(fù)載處理服務(wù)和加載服務(wù),其中,通過上述負(fù)載加載設(shè)備接收目標(biāo)仿真處理器發(fā)送的目標(biāo)請求,并將上述目標(biāo)請求發(fā)送至上述負(fù)載映射設(shè)備,包括:上述負(fù)載處理服務(wù)接收上述目標(biāo)仿真處理器發(fā)送的上述目標(biāo)請求,并將上述目標(biāo)請求發(fā)送至上述負(fù)載映射設(shè)備;通過上述負(fù)載加載設(shè)備按照上述目標(biāo)配置信息加載上述目標(biāo)仿真處理器,以指示上述目標(biāo)仿真處理器處理上述目標(biāo)固件程序?qū)?yīng)的目標(biāo)工作負(fù)載,包括:上述負(fù)載處理服務(wù)接收上述負(fù)載映射設(shè)備發(fā)送的上述目標(biāo)配置信息;上述負(fù)載處理服務(wù)從上述目標(biāo)配置信息中提取目標(biāo)固件程序文件的位置,并基于上述目標(biāo)固件程序文件的位置查找上述目標(biāo)固件程序文件;上述負(fù)載處理服務(wù)從上述目標(biāo)固件程序文件中讀取上述目標(biāo)固件程序的加載符號表,其中,上述加載符號表中包括上述目標(biāo)固件程序的加載位置;上述負(fù)載處理服務(wù)從上述目標(biāo)配置信息中獲取上述目標(biāo)仿真處理器的編號,并基于上述目標(biāo)仿真處理器的編號和上述目標(biāo)固件程序的加載位置,將上述目標(biāo)仿真處理器的初始啟動地址設(shè)置為加載上述目標(biāo)工作負(fù)載的加載地址,得到上述目標(biāo)仿真處理器的目標(biāo)啟動地址,其中,上述加載地址與上述目標(biāo)固件程序的加載位置相同;上述加載服務(wù)基于上述目標(biāo)啟動地址啟動上述目標(biāo)仿真處理器,以通過上述目標(biāo)仿真處理器處理上述目標(biāo)工作負(fù)載。
6、在一個示例性實施例中,利用上述負(fù)載處理服務(wù),上述加載服務(wù)基于上述目標(biāo)啟動地址啟動上述目標(biāo)仿真處理器,以通過上述目標(biāo)仿真處理器處理上述目標(biāo)工作負(fù)載,包括:上述加載服務(wù)接收上述目標(biāo)仿真處理器發(fā)送的目標(biāo)請求中的目標(biāo)仿真處理器信息;上述加載服務(wù)從上述目標(biāo)仿真處理器信息中獲取上述目標(biāo)仿真處理器的指針信息,并從上述指針信息提取上述目標(biāo)仿真處理器的編號,其中,上述指針信息指向保存上述目標(biāo)仿真處理器的編號的結(jié)構(gòu)體;上述加載服務(wù)基于上述目標(biāo)仿真處理器的編號向上述負(fù)載處理服務(wù)發(fā)送讀取請求;上述負(fù)載處理服務(wù)響應(yīng)上述讀取請求,將上述目標(biāo)啟動地址發(fā)送至上述加載服務(wù);上述加載服務(wù)加載上述目標(biāo)啟動地址,以啟動上述目標(biāo)仿真處理器,并通過上述目標(biāo)仿真處理器處理上述目標(biāo)工作負(fù)載。
7、在一個示例性實施例中,上述負(fù)載處理服務(wù)從上述目標(biāo)固件程序文件中讀取上述目標(biāo)固件程序的加載符號表之后,上述方法還包括:上述負(fù)載處理服務(wù)構(gòu)建內(nèi)存鏡像;上述負(fù)載處理服務(wù)將上述目標(biāo)固件程序文件寫入至上述內(nèi)存鏡像中,其中,內(nèi)存鏡像用于緩存上述目標(biāo)固件程序文件。
8、在一個示例性實施例中,利用上述負(fù)載處理服務(wù),將上述目標(biāo)仿真處理器的初始啟動地址設(shè)置為加載上述目標(biāo)工作負(fù)載的加載地址,得到上述目標(biāo)仿真處理器的目標(biāo)啟動地址之后,上述方法還包括:上述負(fù)載處理服務(wù)基于上述目標(biāo)仿真處理器的編號或者多個上述目標(biāo)仿真處理器的多個編號組成的編號列表,將上述加載符號表寫入上述目標(biāo)仿真處理器的調(diào)試符號表中,其中,上述調(diào)試符號表用于調(diào)試上述目標(biāo)固件程序。
9、根據(jù)本技術(shù)的另一個實施例,提供了一種基于仿真系統(tǒng)的工作負(fù)載加載裝置,應(yīng)用于負(fù)載控制裝置,上述負(fù)載控制裝置部署在目標(biāo)仿真系統(tǒng)中,上述負(fù)載控制裝置包括連接的負(fù)載加載設(shè)備和負(fù)載映射設(shè)備,上述負(fù)載加載設(shè)備與上述目標(biāo)仿真系統(tǒng)中包括的多個仿真處理器連接,上述負(fù)載映射設(shè)備與上述目標(biāo)仿真系統(tǒng)中包括的多個固件程序連接,上述裝置包括:第一接收模塊,用于通過上述負(fù)載加載設(shè)備接收目標(biāo)仿真處理器發(fā)送的目標(biāo)請求,并將上述目標(biāo)請求發(fā)送至上述負(fù)載映射設(shè)備,其中,上述目標(biāo)請求中包括上述目標(biāo)仿真處理器的目標(biāo)仿真處理器信息,上述目標(biāo)仿真處理器是多個上述仿真處理器中的一個或多個處理器;第一查找模塊,用于通過上述負(fù)載映射設(shè)備從確定的配置文件中查找與上述目標(biāo)仿真處理器信息匹配的目標(biāo)配置信息,并將上述目標(biāo)配置信息發(fā)送至上述負(fù)載加載設(shè)備,其中,上述目標(biāo)配置信息中包括上述目標(biāo)仿真處理器對應(yīng)的目標(biāo)固件程序的配置信息,上述目標(biāo)固件程序是多個上述固件程序中的一個或多個程序;第一加載模塊,用于通過上述負(fù)載加載設(shè)備按照上述目標(biāo)配置信息加載上述目標(biāo)仿真處理器,以指示上述目標(biāo)仿真處理器處理上述目標(biāo)固件程序?qū)?yīng)的目標(biāo)工作負(fù)載。
10、在一個示例性實施例中,上述裝置還包括:第一生成模塊,用于通過上述負(fù)載映射設(shè)備從確定的配置文件中查找與上述目標(biāo)仿真處理器信息匹配的目標(biāo)配置信息,并將上述目標(biāo)配置信息發(fā)送至上述負(fù)載加載設(shè)備之前,通過上述負(fù)載映射設(shè)備生成上述配置文件,其中,上述配置文件中包括多個上述固件程序的配置信息,上述配置信息中包括以下至少之一:上述固件程序?qū)?yīng)的工作負(fù)載的負(fù)載編號,上述固件程序?qū)?yīng)的工作負(fù)載的數(shù)量;固件程序文件的位置,上述固件程序文件中包括上述固件程序的加載位置;用于加載上述固件程序?qū)?yīng)的工作負(fù)載的仿真處理器的編號。
11、在一個示例性實施例中,上述負(fù)載映射設(shè)備包括配置初始化服務(wù)、配置解析服務(wù)以及配置映射服務(wù),上述第一生成模塊,包括:第一發(fā)送子模塊,用于上述配置初始化服務(wù)向上述配置解析服務(wù)發(fā)送解析指令;第一響應(yīng)子模塊,用于上述配置解析服務(wù)響應(yīng)上述解析指令,從上述目標(biāo)仿真系統(tǒng)中的配置腳本文件中解析出配置參數(shù),并從上述配置參數(shù)提取每個上述固件程序的配置信息,得到多個上述固件程序的配置信息;第一緩存子模塊,用于上述配置初始化服務(wù)從上述配置解析服務(wù)中獲取多個上述固件程序的配置信息,并將多個上述固件程序的配置信息緩存至目標(biāo)對象中,其中,上述目標(biāo)對象是上述配置初始化服務(wù)創(chuàng)建的用于緩存上述配置信息的對象;第一生成子模塊,用于上述配置映射服務(wù)從上述目標(biāo)對象中獲取多個上述固件程序的配置信息,并利用多個上述固件程序的配置信息生成上述配置文件。
12、在一個示例性實施例中,上述負(fù)載加載設(shè)備包括負(fù)載處理服務(wù)和加載服務(wù),其中,上述第一接收模塊,包括:第二發(fā)送子模塊,用于上述負(fù)載處理服務(wù)接收上述目標(biāo)仿真處理器發(fā)送的上述目標(biāo)請求,并將上述目標(biāo)請求發(fā)送至上述負(fù)載映射設(shè)備;上述第一加載模塊,包括:第一接收子模塊,用于上述負(fù)載處理服務(wù)接收上述負(fù)載映射設(shè)備發(fā)送的上述目標(biāo)配置信息;第一提取子模塊,用于上述負(fù)載處理服務(wù)從上述目標(biāo)配置信息中提取目標(biāo)固件程序文件的位置,并基于上述目標(biāo)固件程序文件的位置查找上述目標(biāo)固件程序文件;第一讀取子模塊,用于上述負(fù)載處理服務(wù)從上述目標(biāo)固件程序文件中讀取上述目標(biāo)固件程序的加載符號表,其中,上述加載符號表中包括上述目標(biāo)固件程序的加載位置;第一獲取子模塊,用于上述負(fù)載處理服務(wù)從上述目標(biāo)配置信息中獲取上述目標(biāo)仿真處理器的編號,并基于上述目標(biāo)仿真處理器的編號和上述目標(biāo)固件程序的加載位置,將上述目標(biāo)仿真處理器的初始啟動地址設(shè)置為加載上述目標(biāo)工作負(fù)載的加載地址,得到上述目標(biāo)仿真處理器的目標(biāo)啟動地址,其中,上述加載地址與上述目標(biāo)固件程序的加載位置相同;第一處理子模塊,用于上述加載服務(wù)基于上述目標(biāo)啟動地址啟動上述目標(biāo)仿真處理器,以通過上述目標(biāo)仿真處理器處理上述目標(biāo)工作負(fù)載。
13、在一個示例性實施例中,利用上述負(fù)載處理服務(wù),上述第一處理子模塊,包括:第一接收單元,用于上述加載服務(wù)接收上述目標(biāo)仿真處理器發(fā)送的目標(biāo)請求中的目標(biāo)仿真處理器信息;第一獲取單元,用于上述加載服務(wù)從上述目標(biāo)仿真處理器信息中獲取上述目標(biāo)仿真處理器的指針信息,并從上述指針信息提取上述目標(biāo)仿真處理器的編號,其中,上述指針信息指向保存上述目標(biāo)仿真處理器的編號的結(jié)構(gòu)體;第一發(fā)送單元,用于上述加載服務(wù)基于上述目標(biāo)仿真處理器的編號向上述負(fù)載處理服務(wù)發(fā)送讀取請求;第一響應(yīng)單元,用于上述負(fù)載處理服務(wù)響應(yīng)上述讀取請求,將上述目標(biāo)啟動地址發(fā)送至上述加載服務(wù);第一加載單元,用于上述加載服務(wù)加載上述目標(biāo)啟動地址,以啟動上述目標(biāo)仿真處理器,并通過上述目標(biāo)仿真處理器處理上述目標(biāo)工作負(fù)載。
14、在一個示例性實施例中,上述第一加載模塊還包括:第一構(gòu)建子模塊,用于上述負(fù)載處理服務(wù)從上述目標(biāo)固件程序文件中讀取上述目標(biāo)固件程序的加載符號表之后,上述負(fù)載處理服務(wù)構(gòu)建內(nèi)存鏡像;第一寫入子模塊,用于上述負(fù)載處理服務(wù)將上述目標(biāo)固件程序文件寫入至上述內(nèi)存鏡像中,其中,內(nèi)存鏡像用于緩存上述目標(biāo)固件程序文件。
15、在一個示例性實施例中,上述第一加載模塊還包括:第一組成子模塊,用于利用上述負(fù)載處理服務(wù),將上述目標(biāo)仿真處理器的初始啟動地址設(shè)置為加載上述目標(biāo)工作負(fù)載的加載地址,得到上述目標(biāo)仿真處理器的目標(biāo)啟動地址之后,上述負(fù)載處理服務(wù)基于上述目標(biāo)仿真處理器的編號或者多個上述目標(biāo)仿真處理器的多個編號組成的編號列表,將上述加載符號表寫入上述目標(biāo)仿真處理器的調(diào)試符號表中,其中,上述調(diào)試符號表用于調(diào)試上述目標(biāo)固件程序。
16、根據(jù)本技術(shù)的又一個實施例,還提供了一種計算機(jī)可讀存儲介質(zhì),上述計算機(jī)可讀存儲介質(zhì)中存儲有計算機(jī)程序,其中,上述計算機(jī)程序被設(shè)置為運(yùn)行時執(zhí)行上述任一項方法實施例中的步驟。
17、根據(jù)本技術(shù)的又一個實施例,還提供了一種電子設(shè)備,包括存儲器和處理器,上述存儲器中存儲有計算機(jī)程序,上述處理器被設(shè)置為運(yùn)行上述計算機(jī)程序以執(zhí)行上述任一項方法實施例中的步驟。
18、根據(jù)本技術(shù)的又一個實施例,還提供了一種計算機(jī)程序產(chǎn)品,包括計算機(jī)程序,上述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)上述任一項方法實施例中的步驟。
19、通過本技術(shù),首先負(fù)載加載設(shè)備接收目標(biāo)仿真處理器發(fā)送的目標(biāo)請求,基于目標(biāo)請求中目標(biāo)仿真處理器的目標(biāo)仿真處理器信息,負(fù)載映射設(shè)備從確定的配置文件中查找與目標(biāo)仿真處理器信息匹配的目標(biāo)配置信息,并將目標(biāo)配置信息發(fā)送至負(fù)載加載設(shè)備;然后負(fù)載加載設(shè)備按照目標(biāo)配置信息加載目標(biāo)仿真處理器,以指示目標(biāo)仿真處理器處理目標(biāo)固件程序?qū)?yīng)的目標(biāo)工作負(fù)載。由于目標(biāo)配置信息中包括目標(biāo)仿真處理器對應(yīng)的目標(biāo)固件程序的配置信息,基于固件程序映射工作負(fù)載,仿真處理器加載工作負(fù)載,因此,可以解決相關(guān)技術(shù)中無法靈活加載工作負(fù)載的問題,實現(xiàn)了靈活加載工作負(fù)載的效果。