[发明专利]一种减少流处理器片上指令存储器资源消耗的方法无效
申请号: | 200910043828.4 | 申请日: | 2009-07-03 |
公开(公告)号: | CN101620526A | 公开(公告)日: | 2010-01-06 |
发明(设计)人: | 何义;张春元;文梅;伍楠;杨乾明;任巨;管茂林;荀长庆;吴伟;柴俊;李京旭 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F12/08 |
代理公司: | 国防科技大学专利服务中心 | 代理人: | 郭 敏 |
地址: | 410073湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公布了一种减少流处理器片上指令存储器资源消耗的方法,要解决的技术问题基于现有成熟的硬件存储器结构,不增加复杂的编译算法,有效减少指令存储器的资源消耗。技术方案是将流处理器中纯软件管理的指令存储器修改为软硬件混合指令存储器;在编译器中增加kernel热代码查找模块,根据判定热代码的定理查找流应用中的kernel热代码;且在流级编译时,在各个kernel热代码之前添加指令流加载指令;采用软件管理静态存储器存储kernel热代码以保证其高命中率,采用硬件管理的cache存储其他指令,通过缩短指令占用指令存储器的时间来减少指令存储器对存储器容量的需求,从而可以减少指令存储器的容量。采用本发明能减少指令存储器在芯片中的资源消耗。 | ||
搜索关键词: | 一种 减少 处理器 指令 存储器 资源 消耗 方法 | ||
【主权项】:
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)、P 2 = L 2 L 1 - L 2 * C 2 ]]> 、h = L 3 ( C 3 - 1 ) ( L 2 - L 3 ) + L 3 C 3 , ]]> 若P1>4且P 2 > 1 h - 1 1.25 - 1 h , ]]> 则将第三层循环标记为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.查询第i个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。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910043828.4/,转载请声明来源钻瓜专利网。