《支持数据预取与重用的可重构系统.pdf》由会员分享,可在线阅读,更多相关《支持数据预取与重用的可重构系统.pdf(12页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103019657 A(43)申请公布日 2013.04.03CN103019657A*CN103019657A*(21)申请号 201210584470.8(22)申请日 2012.12.31G06F 9/38(2006.01)(71)申请人东南大学地址 211189 江苏省南京市江宁开发区东南大学路2号(72)发明人刘波 齐志 葛伟 杜越 曹鹏杨军(74)专利代理机构南京苏高专利商标事务所(普通合伙) 32204代理人夏雪(54) 发明名称支持数据预取与重用的可重构系统(57) 摘要本发明公开了一种支持数据预取与重用的可重构系统,包括可重构阵列、数据预取与重用模块。
2、和数据流控制模块。数据预取与重用模块可以记录数据流访问行为,采用动态自启发的预取方法,同时结合传统的数据重用方法,能够实现如下两种访存管理方式:比较最近两次访存地址,动态计算得到预取地址,在数据传输的空隙,实现数据预取操作;缓存现有数据和预取数据,并判断最新的访存数据是否在重用数据空间,直接反馈缓存的数据。本发明可以达到良好的访存效率,同时可以避免复杂的硬件实现和对编译器的复杂要求。(51)Int.Cl.权利要求书2页 说明书5页 附图4页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书 2 页 说明书 5 页 附图 4 页1/2页21.一种支持数据预取与重用的可重构系统,其。
3、特征在于,该可重构系统包括可重构阵列(1)、数据预取与重用模块(2)和数据流控制模块(3);所述可重构阵列(1):通过其内部的可重构单元(4)执行的数据访问指令,向所述数据预取与重用模块(2)发出数据访问请求,并接收数据预取与重用模块(2)返回的数据;所述数据预取与重用模块(2):用于接收并记录可重构阵列(1)发出的数据访问请求,根据所记录的数据访问请求动态生成预取地址;同时,接收并缓存预取到的数据和上一次被可重构阵列(1)访问过的地址和对应的数据,判断可重构阵列(1)当前所要访问的数据是否已被缓存,若已被缓存,则直接将该数据发送给可重构阵列(1),若没有被缓存,则把当前的数据访问请求发送给数。
4、据流控制模块(3); 所述数据流控制模块(3):用于接收所述数据预取与重用模块(2)发出的数据访问请求,对片上存储器进行实际的数据访问,然后将所取到的数据发送至数据预取与重用模块(2)。2.根据权利要求1所述的支持数据预取与重用的可重构系统,其特征在于,所述数据预取与重用模块(2)包括:地址生成子模块(5),用于地址比较并产生预取地址;数据预取子模块(6),用于产生预取控制信号;数据重用子模块(7),用于寄存当前数据和预取数据,判断访问地址反馈重用数据;以及逻辑控制子模块(8),用于监视和控制预取和重用的工作过程;其中,所述地址生成子模块(5)与数据预取子模块(6)、数据重用子模块(7)和逻辑。
5、控制子模块(8)通信联接;数据预取子模块(6)与地址生成子模块(5)和逻辑控制子模块(8)通信联接;数据重用子模块(7)与地址生成子模块(5)和逻辑控制子模块(8)通信联接。3.根据权利要求2所述的支持数据预取与重用的可重构系统,其特征在于,所述地址生成子模块(5)根据逻辑控制子模块(8)发出的使能信号,连续记录可重构阵列(1)最近两次发起的数据访问地址,根据记录的地址进行一次减法和一次加法计算,动态生成预取地址,并将最近一次数据访问地址和预取地址输出给数据预取子模块(6)和数据重用子模块(7)。4.根据权利要求2所述的支持数据预取与重用的可重构系统,其特征在于,所述数据预取子模块(6)根据逻。
6、辑控制子模块(8)发出的使能信号,在数据流控制模块(3)的传输空闲阶段,根据地址生成子模块(5)产生的预取地址向数据流控制模块(3)发出数据访问请求。5.根据权利要求2所述的支持数据预取与重用的可重构系统,其特征在于,所述数据重用子模块(7)根据逻辑控制子模块(8)发出的使能信号,寄存当前数据和预取数据;同时,接收可重构阵列(4)下一次发出的数据访问地址并判断该地址所对应的数据是否已经被数据重用子模块(7)寄存,若已被寄存,则直接将该数据发送给可重构阵列(1),若没有被寄存,则把该数据访问请求发送给数据流控制模块(3)。6.根据权利要求5所述的支持数据预取与重用的可重构系统,其特征在于,所述寄。
7、存当前数据为更新可重构阵列(1)最近一次发起的数据访问请求所取到的数据;所述寄存预取数据为更新数据预取子模块(6)最近一次发起的数据访问请求所取到的数据。7.根据权利要求5所述的支持数据预取与重用的可重构系统,其特征在于,所述判断该地址所对应的数据是否已经被数据重用子模块(7)寄存,其判断方法为分别对两对地址权 利 要 求 书CN 103019657 A2/2页3输入进行比较,这两对地址输入如下:第一对地址输入为当前可重构阵列(1)发起的数据访问地址和最近一次数据访问地址;第二对地址输入为当前可重构阵列(1)发起的数据访问地址和预取地址;若所述两对地址中有任何一对地址相同,则判断该地址所对应的。
8、数据已经被数据重用子模块(7)寄存,满足数据重用要求,若所述两对地址均不同,则判断该地址所对应的数据未被数据重用子模块(7)寄存。8.根据权利要求2所述的支持数据预取与重用的可重构系统,其特征在于,所述逻辑控制子模块(8)用于监视当前的数据访问行为,并控制地址生成子模块(5)、数据预取子模块(6)和数据重用子模块(7)工作过程,实现数据预取与重用模块(2)在可重构系统中的协同工作。9.根据权利要求2所述的支持数据预取与重用的可重构系统,其特征在于,所述逻辑控制子模块(8)按照如下规则设置数据预取与重用模块(2)的状态:在可重构阵列(1)尚未发起过数据访问请求的情况下,数据预取与重用模块(2)处。
9、于IDLE态,此时若可重构阵列(1)发起数据访问请求,则数据预取与重用模块(2)的状态被设置为MISS态;在MISS态下,联接地址生成子模块(5)和数据重用子模块(7)的使能信号被设为有效,当可重构阵列(1)再一次执行数据访问请求时,数据重用子模块(7)进行判断,若满足数据重用要求则保持MISS态,否则数据预取与重用模块(2)的状态被设置为PREFETCH态;在PREFETCH态下,数据预取子模块(6)的使能信号被设为有效,并把地址生成子模块(5)产生的预取地址发送给数据流控制流模块(3),等待数据流控制模块(3)完成访存行为,数据预取与重用模块(2)进入WAIT态;在WAIT态下,当可重构阵。
10、列(1)执行数据访问请求时,有如下三种结果:第一种,当前的数据访问地址不能满足数据重用要求,这种情况下数据预取与重用模块(2)被设置为IDLE态;第二种,当前的数据访问地址与数据重用子模块(7)中的最近一次数据访问地址相等,这种情况下数据预取与重用模块(2)保持WAIT态;第三种,当前的数据访问地址与数据重用子模块(7)中的预取地址相等,这种情况下数据预取与重用模块(2)被设为PREFETCH态。权 利 要 求 书CN 103019657 A1/5页4支持数据预取与重用的可重构系统技术领域0001 本发明属于嵌入式可重构技术领域,具体涉及一种支持数据预取与重用的可重构系统。背景技术0002 可。
11、重构系统因兼具硬件的高效率和软件的灵活性,是嵌入式媒体处理、无线通信等应用领域的理想架构选择。可重构阵列是可重构系统的主要运算部件,拥有海量的计算资源和充足的路由资源,通过对其运算单元的功能和路由进行合理配置,可以充分的发掘应用的数据并行性和指令并行性来提高性能。相对于通用处理器,可重构阵列在处理计算密集型应用方面的优势明显。0003 媒体处理等计算密集型应用对数据通量的需求很大,在可重构阵列具有丰富计算资源的条件下,数据访存往往是制约其性能提高的瓶颈,因此能否提供足够大的有效带宽来匹配阵列的计算能力成为决定可重构阵列性能的关键因素。0004 可重构系统通常拥有多种片上存储器,用于存储全局输入。
12、输出数据以及多个计算任务间的中间数据,并可以被阵列中具有访存功能的可重构单元访问。在用可重构系统进行计算密集型应用的加速时,阵列中的可重构单元会通过执行加载/存储操作对片上存储器进行大量的并行读写,而由于片上存储器的端口数限制会导致频繁的访存冲突,访存请求往往无法及时被处理,阵列在相当多的时间处于停顿状态。这导致可重构系统的计算性能严重受制于片上存储器的访问效率。0005 针对提高访问可重构系统的片上存储器的效率的问题,当前的主要解决方法有以下两种:1)使用存储队列机制来提高访问片上存储器的效率。这种方案使用一种“访存队列”来实现多个访存行为的流水化,并把访存延时作为编译器可见的参数,依赖编译。
13、器来合理调度访存操作。这种方法的主要不足是硬件实现较复杂,硬件开销较大,且对编译器的调度能力提出了较高要求。0006 2)在阵列实际使用所需数据前,提前通过其他模块把数据从存储器中取出并搬运至数据输入FIFO(First In First Out,先入先出队列)或帧缓冲中。这种方案采用了预取的机制来重叠数据的搬运与阵列的计算,以此隐藏访存延时。这种方法的不足是,当前的编译技术难以对这种预取机制进行有效的调度,因而往往依赖编程人员分析算法的数据流特点,并由编程人员在程序中显式指定数据的预取操作,加重了编程人员的负担。0007 因此,当前的提高可重构系统片上存储器访问效率的方法存在硬件实现复杂,编。
14、译支持不足等问题。发明内容0008 发明目的:针对上述现有技术存在的问题和不足,本发明的目的是提供一种支持数据预取与重用的可重构系统,通过采用动态自启发的预取方法,同时结合传统的数据重说 明 书CN 103019657 A2/5页5用方法,可以用较少的资源实现可重构阵列对片上存储器中数据的自发的预取和重用,有效的提高了可重构阵列访问片上存储器的效率,避免了当前的可重构阵列对片上存储器的访问优化技术中存在的缺乏编译器支持的问题。0009 技术方案:为实现上述发明目的,本发明采用的技术方案为一种支持数据预取与重用的可重构系统,该可重构系统包括可重构阵列、数据预取与重用模块和数据流控制模块;所述可重。
15、构阵列:通过其内部的可重构单元执行的数据访问指令,向所述数据预取与重用模块发出数据访问请求,并接收数据预取与重用模块返回的数据;所述数据预取与重用模块:用于接收并记录可重构阵列发出的数据访问请求,根据所记录的数据访问请求动态生成预取地址;同时,接收并缓存预取到的数据和上一次被可重构阵列访问过的地址和对应的数据,判断可重构阵列当前所要访问的数据是否已被缓存,若已被缓存,则直接将该数据发送给可重构阵列,若没有被缓存,则把当前的数据访问请求发送给数据流控制模块; 所述数据流控制模块:用于接收所述数据预取与重用模块发出的数据访问请求,对片上存储器进行实际的数据访问,然后将所取到的数据发送至数据预取与重。
16、用模块。0010 进一步的,所述数据预取与重用模块包括:地址生成子模块,用于地址比较并产生预取地址;数据预取子模块,用于产生预取控制信号;数据重用子模块,用于寄存当前数据和预取数据,判断访问地址反馈重用数据;以及逻辑控制子模块,用于监视和控制预取和重用的工作过程;其中,所述地址生成子模块与数据预取子模块、数据重用子模块和逻辑控制子模块通信联接;数据预取子模块与地址生成子模块和逻辑控制子模块通信联接;数据重用子模块与地址生成子模块和逻辑控制子模块通信联接。0011 进一步的,所述地址生成子模块根据逻辑控制子模块发出的使能信号,连续记录可重构阵列最近两次发起的数据访问地址,根据记录的地址进行一次减。
17、法和一次加法计算,动态生成预取地址,并将最近一次数据访问地址和预取地址输出给数据预取子模块和数据重用子模块。预取地址具体计算方法如下:设最近两次访存地址分别为current_addr、previous_addr,则通过如下计算,得到预取地址prefetch_addr:prefetch_addr = current_addr + (current_addr - previous_addr)进一步的,所述数据预取子模块根据逻辑控制子模块发出的使能信号,在数据流控制模块的传输空闲阶段,根据地址生成子模块产生的预取地址向数据流控制模块发出数据访问请求。0012 进一步的,所述数据重用子模块根据逻辑控制。
18、子模块发出的使能信号,寄存当前数据和预取数据;同时,接收可重构阵列下一次发出的数据访问地址并判断该地址所对应的数据是否已经被数据重用子模块寄存,若已被寄存,则直接将该数据发送给可重构阵列,若没有被寄存,则把该数据访问请求发送给数据流控制模块。0013 进一步的,所述寄存当前数据为更新可重构阵列最近一次发起的数据访问请求所取到的数据;所述寄存预取数据为更新数据预取子模块最近一次发起的数据访问请求所取到的数据。说 明 书CN 103019657 A3/5页60014 进一步的,所述判断该地址所对应的数据是否已经被数据重用子模块寄存,其判断方法为分别对两对地址输入进行比较,这两对地址输入如下:第一对。
19、地址输入为当前可重构阵列发起的数据访问地址和最近一次数据访问地址;第二对地址输入为当前可重构阵列发起的数据访问地址和预取地址;若所述两对地址中有任何一对地址相同,则判断该地址所对应的数据已经被数据重用子模块寄存,满足数据重用要求,若所述两对地址均不同,则判断该地址所对应的数据未被数据重用子模块寄存。0015 进一步的,所述逻辑控制子模块用于监视当前的数据访问行为,并控制地址生成子模块、数据预取子模块和数据重用子模块工作过程,实现数据预取与重用模块在可重构系统中的协同工作。0016 进一步的,所述逻辑控制子模块按照如下规则设置数据预取与重用模块的状态:在可重构阵列尚未发起过数据访问请求的情况下,。
20、数据预取与重用模块处于IDLE(空闲)态,此时若可重构阵列发起数据访问请求,则数据预取与重用模块的状态被设置为MISS(不命中)态;在MISS态下,联接地址生成子模块和数据重用子模块的使能信号被设为有效,当可重构阵列再一次执行数据访问请求时,数据重用子模块进行判断,若满足数据重用要求则保持MISS态,否则数据预取与重用模块的状态被设置为PREFETCH(预取)态;在PREFETCH态下,数据预取子模块的使能信号被设为有效,并把地址生成子模块产生的预取地址发送给数据流控制流模块,等待数据流控制模块完成访存行为,数据预取与重用模块进入WAIT(等待)态;在WAIT态下,当可重构阵列执行数据访问请求。
21、时,有如下三种结果:第一种,当前的数据访问地址不能满足数据重用要求,这种情况下数据预取与重用模块被设置为IDLE态;第二种,当前的数据访问地址与数据重用子模块中的最近一次数据访问地址相等,这种情况下数据预取与重用模块保持WAIT态;第三种,当前的数据访问地址与数据重用子模块中的预取地址相等,这种情况下数据预取与重用模块被设为PREFETCH态。0017 有益效果:本发明提出的支持数据预取与重用的可重构系统,用较少的资源实现了对可重构系统的片上存储器中数据的预取和重用功能,可以有效的提高可重构阵列访问片上存储器的效率。0018 本发明所提出的支持数据预取与重用的可重构系统,其对片上存储器中数据的。
22、预取和重用是硬件自发的行为,对编译器来说是不可见的,这就避免了当前可重构阵列对片上存储器的访问优化技术中存在的缺乏编译器支持的问题。0019 本发明实现的预取功能有助于实现访存与运算的重叠进行,提高资源利用率。0020 本发明实现的重用功能有助于减少不必要的存储器访问,缓解访存瓶颈。附图说明0021 图1是本发明支持数据预取与重用的可重构系统的结构示意图;图2是本发明的数据预取与重用模块的工作流程图;图3是本发明的数据预取与重用模块的结构示意图;图4是本发明的数据预取与重用模块的状态转换示意图。说 明 书CN 103019657 A4/5页70022 图中有:可重构阵列1、数据预取与重用模块2。
23、、数据流控制模块3、可重构单元4、地址生成子模块5、数据预取子模块6、数据重用子模块7、逻辑控制子模块8。具体实施方式0023 下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。0024 本发明所提出的支持数据预取与重用的可重构系统如图1所示,该可重构系统包括可重构阵列1、数据预取与重用模块2和数据流控制模块3。0025 可重构阵列1是可重构系统的主要运算模块,其由若干可重构单元4组成。可重构阵列通过其内部的可重构单元4执行的数据访问指令,向数。
24、据预取与重用模块2发出数据访问请求,并接收数据预取与重用模块2返回的数据。0026 数据流控制模块3用于接收数据预取与重用模块2发出的数据访问请求,对片上存储器进行实际的访问,然后将所取到的数据发送至数据预取与重用模块2。0027 数据预取与重用模块2负责进行数据预取与重用的管理,其工作流程如图2所示,其接收并记录可重构阵列1发出的数据访问请求,根据所记录的信息动态生成数据预取地址,并根据预取地址向数据流控制模块发出数据访问请求;同时,接收并缓存预取到的数据和上一次被可重构阵列1访问过的数据,判断可重构阵列1当前所要访问的数据是否已被缓存,若已被缓存,则直接将该数据发送给可重构阵列1,若没有被。
25、缓存,则把当前的数据访问请求发送给数据流控制模块3。0028 如图3所示,数据预取与重用模块2包括四个子模块:地址生成子模块5用于地址比较并产生预取地址,数据预取子模块6用于产生预取控制信号,数据重用子模块7用于寄存当前数据和预取数据,判断访问地址反馈重用数据,逻辑控制子模块8用于监视和控制预取和重用的工作过程;其中,地址生成子模块5与数据预取子模块6、数据重用子模块7和逻辑控制子模块8通信联接;数据预取子模块6与地址生成子模块5和逻辑控制子模块8通信联接;数据重用子模块7与地址生成子模块5和逻辑控制子模块8通信联接;逻辑控制子模块8分别与数据预取与重用模块2的所有其他子模块联接。0029 以。
26、下举例说明数据预取与重用模块2的工作方式。假设可重构阵列1发起的数据加载操作的地址依次为0x00,0x00,0x04,0x08,0x10。数据预取与重用模块2的状态转换规则如图4所示,在可重构阵列1尚未发起过数据加载操作的情况下,数据预取与重用模块2的状态为IDLE态。0030 当可重构阵列1发起首次数据加载操作时,数据预取与重用模块2的状态被逻辑控制子模块8设置为MISS态,在MISS态下,地址生成子模块5和数据重用子模块7的使能信号被设为有效,同时,本次访存地址0x00和所取到的数据分别被数据重用子模块7寄存。0031 可重构阵列1第二次发起数据加载操作,访存地址为0x00,数据重用子模块。
27、7对当前访存地址0x00和上一次访存地址0x00进行判断比较,判断结果为当前访存地址0x00满足数据重用要求,因此寄存在数据重用子模块7中的上次访存所取数据被立刻返回给可重构阵列1,数据预取与重用模块2的状态保持MISS态。本次访存地址0x00被数据重用子模块7寄存。说 明 书CN 103019657 A5/5页80032 可重构阵列1第三次发起数据加载操作,访存地址为0x04,数据重用子模块7对当前访存地址0x04和上一次的访存地址0x00进行判断比较,判断结果为当前访存地址0x04不满足数据重用的要求,数据预取与重用模块2的状态被设置为PREFETCH态。当前访存地址0x04以及所取到的数。
28、据被数据重用子模块7寄存,地址生成子模块5生成预取地址0x08。在PREFETCH态下,数据预取子模块6的使能信号被设为有效,根据地址生成子模块5生成的预取地址0x08向数据流控制模块3发起数据访存请求,并把所预取到的数据寄存在数据重用子模块7中,发起预取后,数据预取与重用模块2进入WAIT态。0033 可重构阵列1第四次发起数据加载操作,访存地址为0x08,数据重用子模块7对当前访存地址0x08和上一次的访存地址0x04以及预取地址0x08进行判断比较,判断结果为当前访存地址与预取地址相等,这表明数据预取命中,寄存在数据重用子模块7中的预取数据被立刻返回给可重构阵列1。因为预取命中,数据预取。
29、与重用模块2被设为PREFETCH态。同时当前访存地址0x08以及本次访存数据被数据重用子模块7寄存,地址生成子模块5生成预取地址0x0C。在PREFETCH态下,数据预取子模块6利用地址生成子模块5产生的预取地址0x0C向数据流控制模块3发起数据访问请求并把所预取到的数据寄存在数据重用子模块7中,发起预取后,数据预取与重用模块2进入WAIT态。0034 可重构阵列1第五次发起数据加载操作,访存地址为0x10,数据重用子模块7对当前访存地址0x10和上一次的访存地址0x08以及预取地址0x0C进行判断比较,判断结果为预取和重用都失效,数据预取与重用模块2被设置为IDLE态。0035 作为对比实验,设置了对比验证系统A、对比验证系统B。其中,对比验证系统A,即传统的不支持数据预取与重用的可重构系统。对比验证系统B,即本发明所提出的支持数据预取与重用的可重构系统。实验结果表明,采用同样的数字信号处理核心DSPStone作为测试矢量,对比验证系统B可以获得对比验证系统A的平均1.73倍的性能提升,即可重构系统计算效率平均提高了1.73倍。说 明 书CN 103019657 A1/4页9图 1说 明 书 附 图CN 103019657 A2/4页10图 2说 明 书 附 图CN 103019657 A10。