首页 / 专利库 / 信号处理 / 时钟树 / 一种低功耗片上系统的多级指令缓存

一种低功耗片上系统的多级指令缓存

阅读:955发布:2020-05-08

专利汇可以提供一种低功耗片上系统的多级指令缓存专利检索,专利查询,专利分析的服务。并且本 发明 实施例 提供一种低功耗SOC的多级I-Cache,包括一级指令缓存,其中的程序地址空间按页划分;零级指令缓存,其从一级指令缓存取得数据。处理器从多级I-Cache中读取数据,依次从零级指令缓存、一级指令缓存中进行查找,直至找到后读取,若零级指令缓存、一级指令缓存中均无所述数据,处理器从外部 存储器 中查找所述数据,并将外部存储器中找到的数据所属的程序页已经存在的其他程序页。如上的片内存储器两级缓存,其一级指令缓存实现程序分页在片内运行,其零级指令缓存用小容量,功耗开销相对较低的存储器构成,通过这样的两级MMU缓存结构满足SOC速度与功耗的需求。,下面是一种低功耗片上系统的多级指令缓存专利的具体信息内容。

1.一种片上系统的多级指令缓存,其特征在于,包括:
一级指令缓存,其内的存储空间以页为单位划分,所述一级指令缓存的单位页的容量等于程序地址空间的单位页的容量;
零级指令缓存;
查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据,若查找结果为是,则从所述一级指令缓存中读取所述目标地址的数据,并将所述目标地址的数据存入所述零级指令缓存,若查找结果为否,则将程序地址空间的所述目标地址所在页的数据整体存入所述一级指令缓存的一个页中以将所述一级指令缓存内的这个页作为对应的所述程序地址空间的所述目标地址所在页的映射页,并将所述目标地址的数据返给所述微处理器。
2.根据权利要求1所述的多级指令缓存,其特征在于,在所述查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据之前,先查找所述零级指令缓存中是否存储有微处理器访问的目标地址的数据,若查找结果为是,则从所述零级指令缓存中读取所述目标地址的数据,若查找结果是否,再查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据。
3.根据权利要求1所述的多级指令缓存,其特征在于,所述一级指令缓存中包括程序地址空间页表,
所述程序地址空间页表记录有所述程序地址空间的各个页是否被存入所述一级指令缓存的标记,基于这些标记,查找所述一级指令缓存内是否存储有所述目标地址的数据,所述程序地址空间页表还存储有标记为有效的所述程序地址空间的页对应的一级指令缓存内的映射页的地址,基于一级指令缓存内的映射页的地址以及所述目标地址,从所述一级指令缓存的映射页中读取所述目标地址的数据。
4.根据权利要求3所述的多级指令缓存,其特征在于,所述一级指令缓存中包括缓存页地址映射表,
所述缓存页地址映射表记录所述一级指令缓存的各个映射页的地址与所述程序地址空间的对应页的地址之间的映射关系,所述一级指令缓存将所述缓存页地址映射表中记录的映射关系更新至所述程序地址空间页表中。
5.根据权利要求4所述的多级指令缓存,其特征在于,
如果所述一级指令缓存内没有存储有微处理器访问的目标地址的数据,则利用算法从所述一级指令缓存的页中选中一个页,并将所述程序地址空间内的所述目标地址所在页的数据整体存入所述一级指令缓存的这个选中页中,并更新所述缓存页地址映射表中的所述一级指令缓存的选中页的地址与所述程序地址空间的对应页的地址之间的映射关系,将程序地址空间页表中的所述一级指令缓存的这个选中页对应的程序地址空间的原来页的标记置为无效,将程序地址空间页表中的所述一级指令缓存的这个选中页对应的外部存储器的新页的标记置为有效,同时将所述缓存页地址映射表中记录的映射关系更新至所述程序地址空间页表中。
6.根据权利要求1所述的多级指令缓存,其特征在于,一级指令缓存和零级指令缓存的速度性能相同,一级指令缓存和零级指令缓存均为静态随机存取存储器,所述外部存储器为闪存存储器。
7.根据权利要求1所述的多级指令缓存,其特征在于,存储程序地址空间的所述目标地址所在页的数据的所述一级指令缓存的页的地址由TREE-PLRU算法产生,所述TREE-PLRU算法中的搜索使用M个电路工作时钟执行,M为所述TREE-PLRU算法中树的层次。
8.根据权利要求4所述的多级指令缓存,其特征在于,所述缓存页地址映射表存储在一单独的存储器中,所述存储器的地址范围等于一级指令缓存的地址范围。
9.根据权利要求1所述的多级指令缓存,其特征在于,
所述一级指令缓存的地址空间容量和所述程序地址空间的容量的比例满足1:2n,n为自n
然数;所述零级指令缓存的存储容量和一级指令缓存的存储容量的比例满足1:2 ,n为自然数。
10.根据权利要求9所述的多级指令缓存,其特征在于,
所述一级指令缓存的地址空间容量和所述程序地址空间的容量的比例为1:4。
11.根据权利要求9所述的多级指令缓存,其特征在于,
所述零级指令缓存的存储容量和一级指令缓存的存储容量的比例为1:8。

说明书全文

一种低功耗片上系统的多级指令缓存

技术领域

[0001] 本发明涉及片上系统领域,更具体地,涉及一种低功耗片上系统的多级指令缓存。

背景技术

[0002] 高速缓冲存储器(Cache)-简称缓存,在微处理器及片上系统(SOC)中已经成为至关重要的一部分,特别是在对功耗及成本敏感的嵌入式应用场景中。SOC需要采用存储容量大,速度较慢的片外存储器作为主存,缓存的使用能够解决CPU与外部存储器的速度匹配问题。
[0003] 现在一般的低功耗SOC设计中都会设计一级容量较小的SRAM(16KB or 32KB)作为I-Cache,这样的设计通过优化可以将访问Cache的未命中率(Miss Rate)降低到0.5%,但是由于外部存取器读取时在IO PAD(芯片管脚处理模)及存取器单元产生的功耗较大,这样的设计还是难以满足蓝牙音频类SOC的功耗设计要求。

发明内容

[0004] 本发明为解决上述技术问题采用的技术方案为,一种片上系统的多级指令缓存,包括:
[0005] 一级指令缓存,其内的存储空间以页为单位划分,所述一级指令缓存的单位页的容量等于程序地址空间的单位页的容量;
[0006] 零级指令缓存;
[0007] 查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据,若查找结果为是,则从所述一级指令缓存中读取所述目标地址的数据,并将所述目标地址的数据存入所述零级指令缓存,若查找结果为否,则将程序地址空间的所述目标地址所在页的数据整体存入所述一级指令缓存的一个页中以将所述一级指令缓存内的这个页作为对应的所述程序地址空间页的映射页,并将所述目标地址的数据返给所述微处理器。
[0008] 优选地,在所述查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据之前,先查找所述零级指令缓存中是否存储有微处理器访问的目标地址的数据,若查找结果为是,则从所述零级指令缓存中读取所述目标地址的数据,若查找结果是否,再查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据。
[0009] 优选地,所述一级指令缓存中包括程序地址空间页表,
[0010] 所述程序地址空间页表记录有所述程序地址空间的各个页是否被存入所述一级指令缓存的标记,基于这些标记,查找所述一级指令缓存内是否存储有所述目标地址的数据,
[0011] 所述程序地址空间页表还存储有标记为有效的所述程序地址空间的页对应的一级指令缓存内的映射页的地址,基于一级指令缓存内的映射页的地址以及所述目标地址,从所述一级指令缓存的映射页中读取所述目标地址的数据。
[0012] 具体地,所述一级指令缓存中包括缓存页地址映射表,
[0013] 所述缓存页地址映射表记录所述一级指令缓存的各个映射页的地址与所述程序地址空间的对应页的地址之间的映射关系,所述一级指令缓存将所述缓存页地址映射表中记录的映射关系更新至所述程序地址空间页表中。
[0014] 更具体地,所述缓存页地址映射表存储在一块单独的存储器中,所述存储器的地址范围等于一级指令缓存的地址范围。
[0015] 更具体地,如果所述一级指令缓存内没有存储有微处理器访问的目标地址的数据,则利用算法从所述一级指令缓存的页中选中一个页,并将所述程序地址空间内的所述目标地址所在页的数据整体存入所述一级指令缓存的这个选中页中,并更新所述缓存页地址映射表中的所述一级指令缓存的选中页的地址与所述程序地址空间的对应页的地址之间的映射关系,
[0016] 将程序地址空间页表中的所述一级指令缓存的这个选中页对应的程序地址空间的原来页的标记置为无效,将程序地址空间页表中的所述一级指令缓存的这个选中页对应的外部存储器的新页的标记置为有效,同时将所述缓存页地址映射表中记录的映射关系更新至所述程序地址空间页表中。
[0017] 优选地,一级指令缓存和零级指令缓存的速度性能相同,一级指令缓存和零级指令缓存均为静态随机存取存储器,所述外部存储器为闪存存储器。
[0018] 优选地,被替换的页地址由TREE-PLRU算法产生,所述TREE-PLRU算法中的搜索使用M个电路工作时钟执行,M为所述TREE-PLRU算法中树的层次。
[0019] 优选地,所述一级指令缓存的地址空间容量和所述程序地址空间的容量的比例满足1:2n,n为自然数;所述零级指令缓存的存储容量和一级指令缓存的存储容量的比例满足1:2n,n为自然数。
[0020] 具体地,所述一级指令缓存的地址空间容量和所述程序地址空间的容量的比例为1:4。
[0021] 具体地,所述零级指令缓存的存储容量和一级指令缓存的存储容量的比例为1:8。
[0022] 本发明实施例提供的一种低功耗SOC的多级I-Cache,通过片内存储器(memory)构成两级缓存(Cache),同时一级指令缓存(Level-1 I-Cache)采用MMU(Memory Management Unit)的思想实现程序分页在片内运行,而零级指令缓存(Level-0 I-Cache)以小容量、功耗开销相对较低的存储器构成,用这样的两级MMU Cache结构可以满足SOC速度与功耗的需求。附图说明
[0023] 图1为本发明实施例提供的一种低功耗SOC的多级I-Cache的结构图;
[0024] 图2为本发明实施例提供的一种低功耗SOC的多级I-Cache的一级指令缓存的结构图;
[0025] 图3为本发明实施例提供的一种低功耗SOC的多层TREE-PLRU结构图;
[0026] 图4本发明实施例提供的一种低功耗SOC的M Cycle分时tree搜索时序图;
[0027] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

具体实施方式

[0028] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它的实施例,都属于本发明保护的范围。
[0029] 一、多级I-Cache的结构及其运行方式:
[0030] 本发明实施例提供的设计和方法应用于指令缓存(I-Cache,全称Instruction Cache),高速缓存常分为指令缓存和数据缓存,其中指令缓存是存储处理器指令的缓存,本说明书中所述的缓存除了特别说明之外,均为指令缓存。
[0031] 图1为本发明实施例提供的一种低功耗SOC的多级I-Cache的结构图,如图所示,其中包含,
[0032] 一级指令缓存(level-1I cache),其内的存储空间以页为单位划分,所述一级指令缓存的单位页的容量等于程序地址空间的单位页的容量;
[0033] 零级指令缓存(level-0I cache);
[0034] 查找所述零级指令缓存中是否存储有微处理器(MCU)访问的目标地址的数据,若查找结果为是,则从所述零级指令缓存中读取所述目标地址的数据。
[0035] 若上述查找结果是否,再查找所述一级指令缓存内是否存储有微处理器访问的目标地址的数据。若查找结果为是,则从所述一级指令缓存中读取所述目标地址的数据,并将所述目标地址的数据存入所述零级指令缓存,若查找结果为否,则将程序地址空间的所述目标地址所在页的数据整体存入所述一级指令缓存的一个页中以将所述一级指令缓存内的这个页作为对应的所述程序地址空间页的映射页,并将所述目标地址的数据返给所述微处理器(MCU)。
[0036] 由于是从指令缓存中读取,这里的访问目标数据是程序指令(处理器执行指令)。
[0037] 本发明提供的多级I-Cache的运作原理为,用速度性能相同的片内存储器(memory)构成两级指令缓存,一方面,其中的一级指令缓存(Level-1I-Cache)采用MMU的设计思想使得程序分页在片内运行,如此将处理器访问缓存的未命中率(Miss Rate)降低到0.002%左右,这样极大地减少对片外FLASH读取的频次,从而大量减少功耗;另一方面,其中的零级指令缓存(Level-0 I-Cache)以小容量、功耗开销相对较低的存储器构成,通过将
85%~90%的一级指令缓存访问转移到零级指令缓存中,进一步减少了功耗,整体上,使用这样的两级MMU(Memory Management Unit)Cache结构以满足SOC速度与功耗的需求。
[0038] 具体的,一级指令缓存中使用程序分页式的存储可显著降低访问的未命中率的原因在于,一般CPU中执行的指令很大概率与其同属一个程序的其他指令有关,即下一个执行的指令很大概率的处于与上一个指令同一个程序中,所以将包含执行指令的程序分页存入缓存中,很大概率上后续执行指令也存储于所述程序分页中,既被保存在了缓存中,这样处理器可以在缓存中直接访问到下一个指令(数据)的机率很大,其访问缓存总的未命中率就显著降低了。
[0039] 进一步的,SOC运行的理想情况是所有的软件全部在片内存储器(一般为SRAM,Static RAM)-即缓存上运行,但是大容量的SRAM会增加SOC的面积及功耗,所以SOC实际不适合采用过大的片内SRAM,而需要配置大容量的片外FLASH存储器。然而与此同时,SOC的嵌入式软件又具有按照应用场景来区分软件模块的特点,针对该特点,利用前述Cache分页存储技术可以很好地降低总的访问未命中率。
[0040] 在一个实施例中,SOC中运行的嵌入式程序的地址空间(即外部存储器的物理地址),按照4:1的比例与片内的一级指令缓存(SRAM构成)地址映射,SRAM中的程序地址空间按照页(Page)划分。
[0041] 具体的,在上述实施例中,一级指令缓存的地址空间与外部存储器地址空间维持1:4的比例是基于对存储芯片面积和存储芯片功耗的综合考虑,芯片面积越大则数据容量越大,一方面,其对应的访问命中率(处理器从缓存中直接找到所需数据的可能性)就越高,另一方面,其带来的功耗也越大。为了在符合芯片的功耗要求的同时满足效率需要,通过仿真取得以上比例以在两者中取得合理的平衡。若基于不同取舍标准(对功耗和效率)的而采用其它的比例,由于缓存存储器位宽和处理器的数据位宽需要保持一致,所以该比例需要按照2的幂次数值选取。
[0042] 二、一级指令缓存(Level-1 I-Cache)的结构及其运行方式:
[0043] 图2为本发明实施例提供的一种低功耗SOC的多级I-Cache的一级指令缓存的结构图。根据前述思路,本发明方案在一级指令缓存中运用了MMU的设计结构,如图所示,[0044] 一级指令缓存中建立程序地址空间页表(Page Table)和缓存页地址映射表(Page Table Address Mapping),程序地址空间页表记录一级指令缓存中所存储的程序地址空间页(通常为外部存储器页),缓存页地址映射表记录一级指令缓存页地址和其对应的程序地址空间页(通常为外部存储器页)的映射关系。当有外部读取访问时,通过程序地址空间页表查询一级指令缓存中是否保存有该页数据,然后寻址到一级指令缓存的对应页进行读取。如果判断程序页不在缓存中(Page Miss),此时需要从外部存储器(FLASH)中读取一个页,并替换一级指令缓存中的一个页,即一级指令缓存的更新是按照整页(Page)进行的。
[0045] 在一个实施例中,所述程序地址空间页表(Page table)记录有所述程序地址空间的各个页是否被存入所述一级指令缓存的标记(图2中的V),基于这些标记,查找所述一级指令缓存内是否存储有所述目标地址的数据,
[0046] 所述程序地址空间页表还存储有标记为有效的所述程序地址空间的页对应的一级指令缓存内的映射页的地址(图2中的page addr),基于一级指令缓存内的映射页的地址以及所述目标地址,从所述一级指令缓存的映射页中读取所述目标地址的数据。
[0047] 在另一个实施例中,一级指令缓存将缓存页地址映射表中记录的映射关系更新至程序地址空间页表中。
[0048] 在又一个实施例中,如果一级指令缓存内没有存储有微处理器访问的目标地址的数据,则利用算法从所述一级指令缓存的页中选中一个页,并将所述程序地址空间内的所述目标地址所在页的数据整体存入所述一级指令缓存的这个选中页中,并更新所述缓存页地址映射表中的所述一级指令缓存的选中页的地址与所述程序地址空间的对应页的地址之间的映射关系,
[0049] 将程序地址空间页表中的所述一级指令缓存的这个选中页对应的程序地址空间的原来页的标记置为无效(表明该地址的数据从片内存储器移出),将程序地址空间页表中的所述一级指令缓存的这个选中页对应的外部存储器的新页的标记置为有效,同时将所述缓存页地址映射表中记录的映射关系更新至所述程序地址空间页表中。通常实现这个功能需要遍历程序地址空间页表找出与目标页对应的程序空间地址页,而要在一个电路工作时钟(Cycle)内完成这个操作需要用到特殊的内容可寻址存储器(CAM,Content Addressable Memory)。在又一个实施例中,将缓存页地址映射表单独保存于一块增加的、与一级指令缓存存储器深度(存储地址空间)相匹配的小容量存储器(PTAM存储器:Page Table Address Mapping memory)中,因此只需额外增加一次存储器读取与比较就可以在一个电路工作时钟(Cycle)内完成上述查找功能,该实施例中无须使用内容可寻址存储器。
[0050] 在另一个实施例中,当发生页替换时,在缓存页地址映射表中,将一级指令缓存页地址对应的外置存储器(FLASH)页地址,由被替换页的地址改为替换页的地址。
[0051] 在本发明提供的方案中,当发生从外部存储器(FLASH)读取并替换一级指令缓存中的一个页时,具体要替换的页地址(一级指令缓存页地址)由TREE-PLRU算法确定。TREE-PLRU算法是一种本领域通用技术,常用于集合关联(Set-Association)结构的缓存(Cache)中,这里不再赘述。需要注意的是,将TREE-PLRU应用到本发明基于MMU的Cache结构中时,需要计算的树(Tree)的层次共有M层(M=log2(N-1)),页地址的每一个位(bit)由对应的TREE-PLRU的一层的所有节点(leaf)的值决定。随着层次的增加,每层的leaf数也呈指数级增加。因此,如果在单一电路工作时钟(Cycle)完成计算则会造成相当大的关键路径延时,影响缓存电路最终的工作频率,如图3所示。为解决这个问题,
[0052] 在本发明的一个实施例中,用分时技术进行TREE-PLRU的搜索,即将所述搜索分在M个电路工作时钟中执行,每个电路工作时钟中完成树(Tree)的单一层逻辑的计算,生成目标替换地址的一个位(bit),如图4所示。
[0053] 三、零级指令缓存和一级指令缓存之间的比例关系:
[0054] 利用基于MMU的缓存,在解决大量访问外置FLASH带来的功耗问题的同时,也产生如下的问题,一级指令缓存需要容量较大的片内SRAM,大容量的SRAM虽然带来高命中率,但同时也带来高功耗的问题,根据统计显示,缓存功耗的70%都来自存储器。为解决这个问题,
[0055] 在本发明一个实施例中,采用一块面积为1/8一级指令缓存存储器面积的小尺寸的存储器(SRAM)作为零级指令缓存。采用这种方案,可以将85%~90%的存储器访问转移到小块存储器,即零级指令缓存上,其优点是将访问大面积的存储器的开销转化为访问小面积存储器的开销,减小了整体的功耗的同时而保持了原有的高命中率。
[0056] 具体的,基于使访问命中率和功耗达到平衡的原则,对I-Cache的存储器的结构进行仿真优化,得到如下的结论。如果仅采用一块存储器(SRAM)构成的一级存储器(即一级指令缓存,无零级指令缓存),则该存储器的被访问频次非常高,而面积大的存储器每次访问的动态功耗及不做访问时的静态功耗都越大,所以单位访问的功耗很大;如果若将大容量的存储器划分为若干个小尺寸的存储器,即将全部的读取分摊到每个小尺寸的存储器中,有利于降低整体的功耗,但若存储器划分的过小,则会增加额外的多路选择器(MUX)等组合逻辑开销;而设定另一级零级存储器(Level-0memory)是较好的方案,其中也存在功耗与面积及速度折中的问题,通过仿真及基于RTL的功耗评估流程,最终得出两级存储器容量划分比例的优选方案。
[0057] 在一个实施例中,零级指令缓存以程序地址空间直接映射(与一级指令缓存不同,一级指令缓存中以页为单位映射),即每次访问直接判断所需访问的地址的数据是否在零级指令缓存中,如果在则直接从零级指令缓存中读取,不在则继续访问一级指令缓存,并在获得数据后更新零级指令缓存的对应地址的内容。
[0058] 从以上实施例可以看出,采用本发明公开的一种低功耗SOC的多级I-Cache,可通过片内存储器构成两级缓存,其一级指令缓存实现程序分页在片内运行,其零级指令缓存以小容量存储器构成,将多数对缓存的访问转移到零级指令缓存,进一步降低Cache的功耗开销,使用这样的两级MMU Cache结构可以满足SOC速度与功耗的需求。
[0059] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0060] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0061] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0062] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈