[发明专利]在本地存储器中支持数据的不连续访问的方法和设备无效
申请号: | 200910136971.8 | 申请日: | 2009-04-30 |
公开(公告)号: | CN101876948A | 公开(公告)日: | 2010-11-03 |
发明(设计)人: | 刘弢;林海波;陈彤;张涛 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F12/10 | 分类号: | G06F12/10 |
代理公司: | 北京市中咨律师事务所 11247 | 代理人: | 于静;刘薇 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 本地 存储器 支持 数据 连续 访问 方法 设备 | ||
技术领域
本发明涉及多核处理器中的本地存储器,具体地,涉及在本地存储器中支持数据的不连续访问(discontinuous references)的方法和设备。
背景技术
通常,在具备多个处理器的多核处理器中,除了多个处理器共享的主存储器外,每个处理器还可以具有各自的本地存储器。一般地,本地存储器的尺寸较小,并且没有硬件缓存控制器,因此,本地存储器可用作软件控制的缓存或者直接缓冲器。主存储器与本地存储器之间的数据传送采用直接存储器存取(DMA)。
当前,在应用程序中经常出现数据的不连续访问的情形,所谓不连续访问是指将要访问的数据在主存储器中是不连续地存储的。例如,在下面的例子中,数组a是双精度浮点型数组,其中每个元素的数据长度为8字节,被访问的数组a的元素是a[0]、a[13]、a[26]...,因此,对数组a的访问是不连续的。
例子:
double a [MAX]
for(k=0;k<NP;++k)
{ for(j=0;j<n_ffts;j+=2)
{ real[k]=a[13*j+k];
imag[k]=a[13*j+k+13];
}
}
对于数据的不连续访问,可以通过将本地存储器用作软件控制的缓存来实现。在该方法中,对本地存储器中存储的数据建立索引表,例如,基于数据在主存储器中的地址。然后,当需要访问某个数据时,首先,根据该数据的地址查找索引表,如果在索引表中找到,则从本地存储器中获取该数据;如果在索引表中没有找到,则通过DMA将该数据从主存储器传送到本地存储器。该方法存在以下缺点:1)由于包含索引表查找,因此,需要增加关于索引表查找的代码,这将减少可用的本地存储器空间;2)由于未在索引表中找到所访问数据的地址,因此,需要通过DMA从主存储器传输数据,产生额外的时间开销,同时由于查找索引表而不命中的几率很大,因此,时间开销也很大。
对于数据的不连续访问,还可以通过将本地存储器用作直接缓冲器来实现。在该方法中,首先通过DMA将主存储器中的所有数据传送到本地存储器中,然后,在本地存储器中进行数据访问,并在访问结束后,通过DMA将数据传送回主存储器。由于本地存储器的空间有限,采用该方法,可能不能容纳所有的将被访问的有用数据,并且浪费了大量的空间。
另外,可以使用多个DMA指令来实现数据的不连续访问。在该方法中,通过多个DMA指令将多个将要访问的数据段从主存储器传送到本地存储器中,其中,每个DMA指令对应一个数据段,然后,将这些数据段放在一起。该方法虽然降低了所需的本地存储器的空间,但是带来了多个DMA指令的时间开销。
为了加速多个DMA传送,可以使用硬件DMA列表,即在一个DMA列表中包含多个DMA条目,这样,只需执行一次DMA列表,就可以实现多个DMA传送。在DMA列表中,需要规定与各个将要访问的有用数据段相对应的条目,其规定所传送的有用数据段的起始地址和数据长度。考虑到硬件的复杂性,DMA列表中的每个条目必须是对齐的,即,每个条目所规定的数据段的起始地址和数据长度是对齐的。假设每个条目是16字节对齐的,那么每个数据段的起始地址是16的整数倍,并且数据段的数据长度也是16的整数倍。然而,有用数据段的起始地址和数据长度可能不是对齐的,因此,需要对每个条目进行对齐操作,以使根据该条目所传送的目标数据段是包括该有用数据段的最小尺寸的对齐的目标数据段。因此,该方法需要在编译应用程序时获得准确的对齐信息,并且当目标数据段从主存储器传送到本地存储器后,其中的有用数据段在本地存储器中的地址变得复杂,这样,应用程序的代码中访问数据的地址表达式,例如数组元素的下标,也变得复杂,从而阻碍其它进一步的编译优化。
综上所述,需要一种新的实现数据的不连续访问的方法,其既能够不浪费本地存储器的空间,也可以提高数据的访问效率。
发明内容
本发明正是基于上述技术问题而提出的,其目的在于提供一种在本地存储器中支持数据的不连续访问的方法及设备,以充分利用本地存储器的空间,并提高访问效率。
根据本发明的一个方面,提供了一种在本地存储器中支持数据的不连续访问的方法,包括:从外部存储器向所述本地存储器传送至少一个目标数据段,其中,所述至少一个目标数据段的每一个包括所要访问的有用数据段和无用数据段;以及在所述本地存储器中重排所述至少一个目标数据段中的所述有用数据段,以使所述有用数据段在所述本地存储器中是连续存储的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910136971.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种总线外扩抗干扰加密的方法
- 下一篇:虚拟硬盘的容量扩展方法
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置