一种支持多数据流的TLB装置和TLB模块的更新方法与流程

文档序号:13890367阅读:342来源:国知局

本发明涉及人工智能领域,更具体地涉及一种支持多数据流的tlb装置和tlb模块的更新方法。



背景技术:

内存管理单元(memorymanagementunit,mmu)的出现,通过逻辑地址向物理地址的映射,使得程序的数据、堆栈的总的大小可以超过物理存储器的大小,mmu的页表,即逻辑地址与物理地址的转换表,存储在内存中。由于逻辑地址到物理地址的转换需要多次访问内存,大大降低数据访问的性能,于是出现了传输后备缓存(translationlookasidebuffer,tlb)模块。tlb模块存储页表中的一部分页项,当数据处理装置发出一个逻辑地址时,mmu首先访问tlb模块,如果tlb模块中含有能转换这个逻辑地址的页,即tlb命中(tlbhit),直接利用此页进行地址转换,否则称为tlb失败(tlbmiss),mmu访问内存中的页表找到相关地址转换的页进行地址转换,同时,将这个页更新到tlb模块里。tlb模块的出现减少访问内存的频率,极大提高数据访问的性能,特别是在某些数据需要经常访问的情况下。

对于类似于人工神经网络的流式应用,其特点是存在多个逻辑地址连续的数据流,并且对每个数据只访问一次。对于传统的tlb模块,由于流式应用数据通常只访问一次,因此经常会出现tlbmiss的情况,每次tlbmiss都要从内存中寻找相关地址转换的页并更新tlb模块,因此,对于流式应用,传统的tlb模块并不能很好的提高数据访问的性能。



技术实现要素:

有鉴于此,本发明的一个目的在于提供一种支持多数据流的tlb装置,本发明的另一个目的在于提供一种tlb模块的更新方法,以解决传统tlb模块在流式应用上的不足。

为了实现上述目的,作为本发明的一个方面,本发明提供了一种支持多数据流的tlb的装置,包括:

控制单元,对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数。

作为本发明的另一个方面,本发明还提供了一种tlb模块的更新方法,包括以下步骤:

对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数;

当发生tlbmiss的情况时,控制单元防问内存中的页表找到相关地址转换的页进行地址转换,同时,将所述页更新到对应tlb模块里,替换掉所述tlb页中一个页项。

作为本发明的再一个方面,本发明还提供了一种tlb页的更新方法,包括以下步骤:

对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数;

每次发生tlbmiss时,控制单元访问内存中的页表找到相关地址转换的页进行地址转换,同时,将所述页及所述页之后连续的页项替换tlb模块中原有的所有页项。

作为本发明的还一个方面,本发明还提供了一种tlb页的更新方法,包括以下步骤:

对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数,且所述k个tlb模块中tlb存放的页项为连续页项,即所存页项表示的逻辑地址连续,设当前tlb存放页项为<p1,f1>,<p2,f2>,<p3,f3>,...,<pn,fn>,其中<p,f>表示页号与页框号的映射关系,p表示页号,f表示页框号,页号p1,p2,p3,...,pn所对应的逻辑地址范围连续;

在每次发生tlbhit后,完成地址转换的页被替换,即<p1,f1>被替换,替换的页为当前tlb存放的连续页项的下一个连续页项,即<pn+1,fn+1>,替换后tlb存放的页项为<pn+1,fn+1>,<p2,f2>,<p3,f3>,...,<pn,fn>,仍为连续页项。

基于上述技术方案可知,本发明的装置和方法具有如下有益效果:由于采用不同的tlb模块对应不同的数据流,使得每个tlb模块中可以存放逻辑地址连续的页项,有利于后续的更新操作;针对于流式应用的特性,采用逻辑地址连续的tlb模块,如此的tlb模块更新方法可以极大的减小tlbmiss的发生,也就是可以减少mmu搜索内存中的页表,极大的提高数据访问的性能。

附图说明

图1为根据本发明一实施例的装置的总体流程的示例框图;

图2为根据本发明一实施例的内存管理单元(mmu)的页表结构的示例框图;

图3为根据本发明一实施例的逻辑地址的表示方法;

图4至图6为根据本发明一实施例的tlb模块的更新方法的示例框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。通过以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。

本发明公开了一种支持多数据流的tlb装置,包括:

控制单元,对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数。

其中,在数据处理装置传给所述控制单元的逻辑地址中,除了页号和偏移两个字段之外,还包括一个流id字段,该流id字段占用的比特数为k表示tlb的个数,表示取向上取整数操作。

作为优选,对于人工神经网络,该控制单元设置4个tlb模块,分别对应权值、输入、输出、部分和等四个数据流。

本发明还公开了几种tlb模块的更新方法,其中:

对应待处理的流式应用的k个数据流,设置k个tlb模块,每一个tlb模块具有一一对应的页与页框两部分,通过页与页框的映射关系完成逻辑地址向物理地址的转换;其中k为自然数;

方法一还包括以下步骤:

当发生tlbmiss的情况时,控制单元访问内存中的页表找到相关地址转换的页进行地址转换,同时,将所述页更新到对应tlb模块里,替换掉所述tlb页中一个页项。

作为优选,替换页项的步骤采用随机替换算法或lru算法。

方法二还包括以下步骤:

每次发生tlbmiss时,控制单元访问内存中的页表找到相关地址转换的页进行地址转换,同时,将所述页及所述页之后连续的页项替换tlb模块中原有的所有页项。

方法三还包括以下步骤:

将k个tlb模块中tlb存放的页项设为连续页项,即所存页项表示的逻辑地址连续,设当前tlb存放页项为<p1,f1>,<p2,f2>,<p3,f3>,...,<pn,fn>,其中<p,f>表示页号与页框号的映射关系,p表示页号,f表示页框号,页号p1,p2,p3,...,pn所对应的逻辑地址范围连续;

在每次发生tlbhit后,完成地址转换的页被替换,即<p1,f1>被替换,替换的页为当前tlb存放的连续页项的下一个连续页项,即<pn+1,fn+1>,替换后tlb存放的页项为<pn+1,fn+1>,<p2,f2>,<p3,f3>,...,<pn,fn>,仍为连续页项。

下面通过具体实施例对本发明的技术方案进行进一步阐述说明。

具体实施例一

根据本发明一实施例的支持多数据流的tlb的装置,可用于人工神经网络的相关应用,对于人工神经网络,一般存在权值、输入、输出和部分和等四个数据流,根据实际应用需要也可以设置其他不同的数据流。

图1为根据本发明一实施例的装置的总体流程的示例框图。对于人工神经网络,存在权值、输入、输出和部分和四种数据流,因此,示例框图中tlb模块可以设置为4个,每个tlb模块对应一个数据流。当数据处理装置传入一个逻辑地址时,根据逻辑地址中的流id部分,选择对应tlb查找是否有该逻辑地址对应的页项,若有对应页项,则为tlbhit,完成地址转换,若需要更新该tlb,则执行更新操作,若没有对应页项,则为tlbmiss,从内存的页表总查找对应页项,同时对该tlb执行更新操作。

图2为根据本发明一实施例的内存管理单元(mmu)的页表结构(tlb模块结构)的示例框图。通过分页存储管理将逻辑地址划分成一系列同等大小的部分,称为页(page),并依次对每个页做编号,示例框图中页面的大小为4kb,也可以是其他大小,根据具体的需求而定,每个页用一个编号代表4kb的页面大小,并非该页需占用4kb大小空间,例如页号0代表0-4kb大小的逻辑地址范围。对于物理内存也划分成同样大小的连续的部分,称为页框(frame),并对每个页框做编号。页表存储的为页号与页框号的一个映射关系,例如,逻辑地址8640对应的范围为[8k,16k],则对应的页号为2,按照示例框图中的映射关系,映射为页框号为6所对应的物理地址范围,再根据偏移地址确定最终该逻辑地址转换后的物理地址。图1中的每个tlb存储的页项为页表中的部分页项,tlb存储页项的数目由tlb存储空间大小决定。

图3为根据本发明一实施例的逻辑地址的表示方法,本发明的逻辑地址的表示方法相对于传统的逻辑地址表示方法,添加了一些比特位表示流id,用于数据流与对应tlb模块的映射,示例图中只画出需要关心的部分。对于人工神经网络存在4个数据流,而因此流id只需要2bit就可以区分四个数据流。由于图2中设定的页面大小为4kb,因此32位的逻辑地址中,有20位对应为页号,12位对应为偏置地址,根据页号与页框号的对应关系,可以获得对应物理地址的前20位,对应物理地址的后12位与逻辑地址后12位一致。

图4-6为根据本发明一实施例的tlb页的更新方法的示例框图。示例框图只示出一个tlb的一种更新方法,对装置任何tlb都可以使用任何其中一种或混用多种更新方法。

图4为根据本发明一实施例的tlb页的第一更新方法。第一更新方法1与传统的tlb页的更新方法一样,当发生tlbmiss的情况时,mmu访问内存中的页表找到相关地址转换的页进行地址转换,同时,将这个页更新到tlb里,替换掉tlb中一个页项。此处替换页项可以采用不用的替换算法,例如,随机替换算法、lru算法等。随机替换算法根据数据处理装置生成的随机数决定要替换的tlb页项;lru算法选择替换的页项根据访问时间离当前时间的长短决定,上一次访问时间距当前最长的页项作为被替换的页项。

图5为根据本发明一实施例的tlb页的第二更新方法。第二更新方法利用流式应用的特点,即数据流逻辑地址连续且每个数据只访问一次。其更新方法为,每次发生tlbmiss时,mmu访问内存中的页表找到相关地址转换的页进行地址转换,同时,将这个页及该页之后连续的页项替换tlb原有的所有页项。其中,图中p、p1、p2、p3...为页号连续的页项。

图6为根据本发明一实施例的tlb页的第三更新方法。第三更新方法同样利用了流式应用的特点。其更新前提是tlb存放的页项为连续页项,即所存页项表示的逻辑地址连续,设当前tlb存放页项为<p1,f1>,<p2,f2>,<p3,f3>,...,<pn,fn>,其中<p,f>表示页号与页框号的映射关系,p表示页号,f表示页框号,页号p1,p2,p3,...,pn所对应的逻辑地址范围连续。在每次发生tlbhit后,完成地址转换的页被替换,即<p1,f1>被替换,替换的页为当前tlb存放的连续页项的下一个连续页项,即<pn+1,fn+1>,替换后tlb存放的页项为<pn+1,fn+1>,<p2,f2>,<p3,f3>,...,<pn,fn>,仍为连续页项,该更新方式类似于滑动窗口的滑动机制。

具体实施例二

根据本发明一实施例的支持多数据流的tlb的装置,可用于机器学习的相关流式应用,例如自然语音处理、手写识别、人脸识别等相关应用,设本实施例中存在k个数据流,k的大小根据不同应用的需求而定。

图1为根据本发明一实施例的装置的总体流程的示例框图。对于存在k个数据流的流式应用,因此,示例框图中tlb模块可以设置为k个,每个tlb模块对应一个数据流。当数据处理装置传入一个逻辑地址时,根据逻辑地址中的流id部分,选择对应tlb查找是否有该逻辑地址对应的页项,若有对应页项,则为tlbhit,完成地址转换,若需要更新该tlb,则执行更新操作,若没有对应页项,则为tlbmiss,从内存的页表总查找对应页项,同时对该tlb执行更新操作。

图2为根据本发明一实施例的内存管理单元(mmu)的页表结构的示例框图。通过分页存储管即将逻辑地址划分成一系列同等大小的部分,称为页(page),并依次对每个页做编号,示例框图中页面的大小为4kb,也可以是其他大小,根据具体的需求而定,每个页用一个编号代表4kb的页面大小,并非该页需占用4kb大小空间,例如页号0代表0-4kb大小的逻辑地址范围。对于物理内存也划分成同样大小的连续的部分,称为页框(frame),并对每个页框做编号。页表存储的为页号与页框号的一个映射关系,例如,逻辑地址8640对应的范围为[8k,16k],则对应的页号为2,按照示例框图中的映射关系,映射为页框号为6所对应的物理地址范围,再根据偏移地址确定最终该逻辑地址转换后的物理地址。图1中的每个tlb存储的页项为页表中的部分页项,tlb存储页项的数目由tlb存储空间大小决定。

图3为根据本发明一实施例的逻辑地址的表示方法,本发明的逻辑地址的表示方法相对于传统的逻辑地址表示方法,添加了一些比特位表示流id,用于数据流与对应tlb模块的映射,示例图中只画出需要关心的部分。对于人工神经网络存在k个数据流,因此流id只需要就可以区分k个数据流。由于图2中设定的页面大小为4kb,因此32位的逻辑地址中,有20位对应为页号,12位对应为偏置地址,根据页号与页框号的对应关系,可以获得对应物理地址的前20位,对应物理地址的后12位与逻辑地址后12位一致。

图4-6为根据本发明一实施例的tlb页的更新方法的示例框图。示例框图只示出一个tlb的一种更新方法,对装置任何tlb都可以使用任何其中一种或混用多种更新方法。

图4为根据本发明一实施例的tlb页的第一更新方法。第一更新方法与传统的tlb页的更新方法一样,当发生tlbmiss的情况是,mmu访问内存中的页表找到相关地址转换的页进行地址转换,同时,将这个页更新到tlb里,替换掉tlb中一个页项。此处替换页项可以采用不用的替换算法,例如,随机替换算法、lru算法等。随机替换算法根据数据处理装置生成的随机数决定要替换的tlb页项;lru算法选择替换的页项根据访问时间离当前时间的长短决定,上一次访问时间距当前最长的页项作为被替换的页项。

图5为根据本发明一实施例的tlb页的第二更新方法。第二更新方法利用流式应用的特点,即数据流逻辑地址连续且每个数据只访问一次。其更新方法为,每次发生tlbmiss时,mmu访问内存中的页表找到相关地址转换的页进行地址转换,同时,将这个页及该页之后连续的页项替换tlb原有的所有页项。其中,图中p、p1、p2、p3...为页号连续的页项。

图6为根据本发明一实施例的tlb页的第三更新方法。第三更新方法同样利用了流式应用的特点。其更新前提是tlb存放的页项为连续页项,即所存页项表示的逻辑地址连续,设当前tlb存放页项为<p1,f1>,<p2,f2>,<p3,f3>,...,<pn,fn>,其中<p,f>表示页号与页框号的映射关系,p表示页号,f表示页框号,页号p1,p2,p3,...,pn所对应的逻辑地址范围连续。在每次发生tlbhit后,完成地址转换的页被替换,即<p1,f1>被替换,替换的页为当前tlb存放的连续页项的下一个连续页项,即<pn+1,fn+1>,替换后tlb存放的页项为<pn+1,fn+1>,<p2,f2>,<p3,f3>,...,<pn,fn>,仍为连续页项,该更新方式类似于滑动窗口的滑动机制。

对于类似于人工神经网络的流式应用,由于其具有多个逻辑地址连续的数据流的特点,通过采用多个tlb模块,使得每个tlb可以存放逻辑地址连续的页项,对于页项逻辑连续的tlb,采用本发明所述的tlb页的更新方法,可以极大减小tlbmiss的发生,即可以极大减少从页表中查找的次数,极大提高数据访问的性能。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1