[发明专利]支持SIMD体系结构的分布式堆栈数据存储方法有效
申请号: | 201410173672.2 | 申请日: | 2014-04-28 |
公开(公告)号: | CN103942152B | 公开(公告)日: | 2017-01-04 |
发明(设计)人: | 孙海燕;阳柳;王霁;张雪萌;陈书明;郭阳;陈跃跃;龚国辉;刘衡竹;彭元喜;李灿;陈伟业 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 湖南兆弘专利事务所(普通合伙)43008 | 代理人: | 周长清 |
地址: | 410073 湖南省长沙市砚瓦池正街47号中国*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 支持 simd 体系结构 分布式 堆栈 数据 存储 方法 | ||
技术领域
本发明涉及SIMD处理器领域,尤其涉及一种支持SIMD体系结构的分布式堆栈数据存储方法。
背景技术
随着问题规模的增大和对实时性要求的提高,只有标量单元的微处理器的处理能力已难以满足应用需求,SIMD(Single Instruction Data,单指令多数据流)向量处理器尤其是带有向量单元的微处理器在业界得到了广泛应用。
程序的运行状态一般由编译器通过堆栈进行管理,即运行时在内存中分配一块内存作为堆栈,对函数运行过程的上下文、局部变量以及动态分配的数据区等进行管理从而可以支持函数调用、中断处理以及动态数据区的分配等。目前,已有编译器中堆栈的构建一般是在内存中分配一块物理上连续的空间,堆栈存储的内容包括局部变量、临时变量、上层函数栈底、通用寄存器、条件寄存器、函数返回地址、上层函数栈顶以及动态分配区等内容。
在SIMD微处理器的应用程序中,局部变量包括标量局部变量和向量局部变量,保存现场需要保存的寄存器包括标量寄存器和向量寄存器,调用参数包括标量参数和向量参数,同时分配动态内存区所存储的数据也包括标量数据和向量数据。而在SIMD微处理器体系结构中,一方面通常由标量单元负责执行程序的流控,另一方面向量存储器对所要存储的数据长度以及存储边界要求更为严格,因此一般的堆栈结构直接存储于向量存储器效率较低,故目前业界一般SIMD微处理器体系结构的堆栈都分配在标量存储器中。将堆栈放置于标量存储器中在功能上虽然能够达到程序的正确性要求,然而对SIMD微处理器体系结构性能支持方面存在以下缺陷:
(1)由于SIMD微处理器的向量处理单元通常比较多,因此向量参数和向量寄存器的位也比较宽。假设SIMD微处理器含有P个向量单元,则一个32位整数类型的向量参数,其长度为32*P位,因此从放置于标量存储器的堆栈中读取向量数据要花费较长的访问时间并占用较大带宽;
(2)由于向量数据位宽很大,因此在存储、访问堆栈时需要较长时间占用标量存储器的访问端口,从而阻塞了标量单元的存储器访问;
(3)由于标量存储器并不直接连接向量单元,因此需要通过向量存储器进行中转。如从堆栈中读取向量数据时需要将堆栈数据通过DMA(Direct Memory Access,直接存储访问)从标量存储器传输到向量存储器,然后再通过向量的访存操作将数据从向量存储器读取到向量寄存器中,因此访问向量数据需要进行两步操作,更进一步降低了系统性能。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的问题,本发明提供一种实现方法简单、堆栈数据存储和访问速度快、带宽需求小、系统性能高且功耗低的支持SIMD体系结构的分布式堆栈数据存储方法。
为解决上述技术问题,本发明提出的技术方案为:
一种支持SIMD体系结构的分布式堆栈数据存储方法,在内存中分布式分配堆栈空间,分别在标量存储器中分配用于存储标量信息的标量栈,在向量存储器中分配用于存储向量信息的向量栈;程序编译时,将标量单元需要访问的局部变量分配于标量栈中,向量单元需要访问的局部变量分配于向量栈中;程序运行时,将程序现场切换时需要保存的标量信息保存在标量栈中、需要保存的向量信息保存在向量栈中,程序现场返回时,直接从标量栈中读取标量信息到标量单元、从向量栈中读取向量信息到向量单元。
作为本发明的进一步改进,所述标量栈中存储的标量信息包括:标量局部变量、标量临时变量、上层标量帧指针、上层向量帧指针、标量通用寄存器、标量条件寄存器、标量参数、函数返回地址、上层标量栈指针、上层向量栈指针和标量动态数据。
作为本发明的进一步改进,所述向量栈中存储的向量信息包括:向量局部变量、向量临时变量、向量通用寄存器、向量参数和向量动态数据。
作为本发明的进一步改进,所述程序编译后还包括链接程序时,在链接脚本文件中配置标量栈和向量栈的大小、起始地址。
作为本发明的进一步改进,所述程序运行时的具体步骤为:
(3.1)判断程序执行的状态;
(3.2)当步骤(3.1)判断为调用函数时,将标量单元的标量局部变量、标量临时变量、上层标量函数的栈底指针、函数返回地址、标量调用参数、需要保存的标量寄存器信息保存到标量栈中,将向量单元的向量局部变量、向量调用参数、需要保存的向量寄存器信息保存到向量栈中;调用完函数返回时,将标量栈中信息读取到标量单元的相应寄存器中,将向量栈中信息读取到向量单元的相应寄存器中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410173672.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种防治白内障的药物组合物
- 下一篇:一种用于奶牛乳房炎的中药组合物