[發明專利]一種減少流處理器片上指令存儲器資源消耗的方法無效
| 申請號: | 200910043828.4 | 申請日: | 2009-07-03 |
| 公開(公告)號: | CN101620526A | 公開(公告)日: | 2010-01-06 |
| 發明(設計)人: | 何義;張春元;文梅;伍楠;楊乾明;任巨;管茂林;荀長慶;吳偉;柴俊;李京旭 | 申請(專利權)人: | 中國人民解放軍國防科學技術大學 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38;G06F12/08 |
| 代理公司: | 國防科技大學專利服務中心 | 代理人: | 郭 敏 |
| 地址: | 410073湖*** | 國省代碼: | 湖南;43 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 減少 處理器 指令 存儲器 資源 消耗 方法 | ||
1.一種減少流處理器片上指令存儲器資源消耗的方法,其特征在于包括以下步驟:
第一步,將流處理器中純軟件管理的指令存儲器修改為軟硬件混合指令存儲器,軟硬件混合指令存儲器由軟件管理靜態存儲器和硬件管理的cache兩部分組成,設計方法如下:
1.1.軟件管理靜態存儲器與地址產生控制器、片外存儲器和計算簇相連,它從片外存儲器獲得程序中的kernel熱代碼,并在程序執行時給計算簇提供數據;
1.2.硬件管理的cache包括存儲體、Tag存儲器和cache控制器三個部分,它從片外存儲器獲得程序中的kernel涼代碼;
第二步,在編譯器中增加kernel熱代碼查找模塊,kernel熱代碼查找模塊的流程是:
2.1.令i的初始值為1;
2.2.由編譯器通過解析循環指令的循環跳轉的范圍得到第i個kernel中由外到內三個循環的長度L1、L2、L3,根據應用的特征確定第二、第三層的循環次數C2、C3:當kernel的輸入流的大小預知時,C2、C3的值通過輸入流的長度除以每次循環處理數據的個數來確定;當kernel的輸入流不定長時C2或C3不可預知;
2.3.若C2不可預知,標記第一層循環為kernel熱代碼,轉步驟2.5;若C2可預知但C3不可預知,轉步驟2.4;若C2和C3都可預知,判斷第三層循環是否為kernel熱代碼,方法是計算P1=(C3-1)*(L3/L2)、?若P1>4且?則將第三層循環標記為kernel熱代碼,轉步驟2.5,否則轉步驟2.4;
2.4.查找kernel熱代碼,方法是計算P=(C2-1)*(L2/L1),若P>4,則將第二層循環標記為kernel熱代碼,轉步驟2.5;否則標記第一層循環為kernel熱代碼,轉步驟2.5;
2.5.i=i+1,若i>n,n為應用程序中含有的kernel個數,轉第三步;否則轉?步驟2.2;
第三步,在流級編譯時,在各個kernel熱代碼之前添加指令流加載指令,該指令格式為:
StreamLoad<啟動標志位?完成標志位?起始地址?流長度?指令相關性>
啟動標志位表示該指令是否已經啟動,完成標志位表示該指令是否已經完成,起始地址和流長度信息指定了kernel熱代碼在軟件管理靜態存儲器中的空間分配,指令相關性包含了本條指令與它之前其他指令的相關性信息,當所有相關性都得到滿足,本條指令流加載指令才能被啟動執行;
第四步,將應用程序裝載到軟硬件混合指令存儲器,啟動程序運行,程序運行過程和軟硬件混合指令存儲器讀/寫操作的流程如下:
4.1.令j的初始值等于1;
4.2.查詢第j個kernel的kernel熱代碼對應的指令流加載指令的狀態,若未啟動則轉步驟4.3,若未完成則轉步驟4.5,若已完成則轉步驟4.6;
4.3.判斷kernel?j的kernel熱代碼對應的指令流加載指令的相關性是否滿足,若滿足則轉步驟4.4,否則程序執行終止,輸出“系統異常”;
4.4.啟動第j個kernel的指令流加載指令,修改該指令的啟動標志位為已啟動,由地址產生控制器執行該指令流加載指令,獲取軟件管理靜態存儲器起始地址和指令流的長度,將第j個kernel的kernel熱代碼從外部存儲器寫入軟件管理靜態存儲器;
4.5.等待第j個kernel的kernel熱代碼寫入軟件管理靜態存儲器,當第j個kernel的kernel熱代碼全部寫入軟件管理靜態存儲器,將第j個kernel的指令流加載指令的完成標志位修改為已完成;
4.6.令k=j+1,啟動第j個kernel運行,即執行步驟4.7~4.8;同時導入后續kernel的kernel熱代碼,即執行步驟4.9~4.11;
4.7.若k>n,轉步驟4.12;若k≤n,判斷第k個kernel的kernel熱代碼對應的指令流加載指令的指令相關性是否滿足,若滿足則啟動第k個kernel的指令流加載指令,修改該指令的啟動標志位為已啟動,轉步驟4.8;若不滿足則直接轉步驟4.8;
4.8.k=k+1;轉步驟4.7;?
4.9.若第j個kernel執行完畢,轉步驟4.12;否則執行步驟4.10;
4.10.若地址產生控制器中的地址是軟件管理靜態存儲器的地址,則計算簇從軟件管理靜態存儲器中讀取對應的指令;若是硬件管理的cache地址,則轉步驟4.11;
4.11.若cache失效,則硬件預取部件請求從片外存儲器中加載涼代碼,寫入硬件管理的cache;若cache命中,計算簇從硬件管理的cache存儲體中讀取對應的指令,轉步驟4.9;
4.12.k>n且第j個kernel執行完畢,轉步驟4.13,否則轉步驟4.12;
4.13.j=j+1;若j>n,則程序執行結束;否則轉步驟4.2。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國人民解放軍國防科學技術大學,未經中國人民解放軍國防科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910043828.4/1.html,轉載請聲明來源鉆瓜專利網。





