专利名称:用于降低指令缓存功耗的分支序列缓冲器的制作方法
技术领域:
本发明涉及嵌入式处理器领域,尤其是一种用于降低指令缓存功耗的分支序列缓
冲器。
背景技术:
现代微处理器对存储器容量和速度提出了较高的要求。为了获取更优秀的性能 与经济性,基于时间与空间局部性原理,存储系统被设计为具有不同的层次。高速缓存 (Cache)是介于处理器和主存储器之间的一个存储层次,提供在一定程序执行时间和空间 内,集中访问的一部分代码。缓存的目标是尽量减少处理器因为访问主存储器而造成的CPU 周期的浪费。然而,在提高性能的同时,缓存因其特性,成为处理器中主要的耗电单元。为 了降低处理器整体功耗,设计人员常采用降低缓存性能的折中方案,从而导致处理器整体 性能降低。 指令缓存用于缓存处理器从主存储器中取得的指令代码,一般分为索引标志存储 器和数据存储器。索引标志存储器存储的标志信息用于校验缓存块是否与来自于处理器的 块地址匹配。数据存储器存放被缓存的指令代码信息。 以一个32位处理器的指令缓存来说明其工作原理,如图l所示。该处理器采用了 一个16324字节(16KB)大小、4路组相联的指令缓存,每一个块(Block)的大小是16字节。 处理器取指令的地址一共32位,被分为28为块地址和4位块内偏移,其中块地址又由20 位标志字段(Tag)和8位索引字段(Index)构成。向指令缓存的一次取指令请求如图1所 示,其流程为根据8位索引字段同时访问4路中的4个缓存块,在有效位置位的情况下取 得缓存块标志和数据信息。将标志与指令块地址中的标志字段进行比较,选取4个块中结 果一致的块数据作为指令代码发送给处理器取指令单元,否则上报指令缓存缺失。因为替 换算法保证,在上述的4个块中至多只有1块比较结果匹配。 由上述指令缓存取指令过程可知, 一次取指令需要开启所有4路的索引标志存储 器和数据存储器,是指令缓存功耗的主要消耗点。
发明内容
为了克服已有的嵌入式处理器的指令缓存取指令过程中存在较大的缓存功耗的 不足,本发明提供一种能有效降低缓存功耗的用于降低指令缓存功耗的分支序列缓冲器。
本发明解决其技术问题所采用的技术方案是 —种用于降低指令缓存功耗的分支序列缓冲器,所述分支序列缓冲器包括指令 缓存单元,用于临时存储预取的指令,采用多路组相连结构,每个路包括标志位存储器和数 据存储器;指令片段信息包括分支指令目标地址、顺序指令路选信息和分支指令,所述分支 序列缓冲器还包括 访问控制单元,用于根据分支序列缓冲单元中的路选信息,控制指令缓存单元中 目标路的访问;
分支序列缓冲单元,用于缓存分支指令的目标地址以及其后续顺序指令路选信 息; 访问控制单元获得当前指令片段信息,当所述当前指令片段信息中的分支指令目 标地址与缓存的分支指令的目标地址匹配时,访问控制单元读取分支序列缓冲单元缓存的 顺序指令路选信息,从分支序列缓冲单元中获得当前访问的路选信息,并根据路选信息选 择开启指令缓存单元中相应的路,直接获得所需的顺序指令,此时无关的路被关闭访问;不 匹配时,访问控制单元记录顺序指令路选信息,分支序列缓冲单元存储来自于访问控制单 元的顺序指令路选信息。 进一步,所述的分支序列缓冲单元为一个循环表,所述循环表包括至少两个表项, 每个表项中存储分支指令的目标地址或顺序指令路选信息。 再进一步,存储分支指令的目标地址的目标表项后跟随存储顺序指令路选信息的 路选表项,各个路选表项无间隔地存放于目标表项之后。 更进一步,所述表项中包含用以区分存储内容为分支指令的目标地址或顺序指令 路选信息的标识位。 访问控制单元读取分支序列缓冲单元缓存的顺序指令路选信息的过程以路指针 作为索引,访问控制单元记录顺序指令路选信息的过程以路指针和项指针作为索引。
利用访问控制单元从分支序列缓冲单元获取到的顺序指令路选信息,直接向指令 缓存单元相应路的数据存储器读取指令。 本发明的技术构思为分支指令是处理器的一类指令,它引起处理器执行指令顺 序的变化,这一行为称为跳转。处理器执行至分支指令时,通过判断条件,决定下一条执行 的指令,该指令即为目标指令,其地址为分支指令的目标地址。 处理器所执行的指令序列,可看成是被分支指令打散的若干个顺序指令片段。每 一个片段的首条指令是某个分支指令的目标指令,末条指令是分支指令,其间的指令顺序 执行。如果在处理器首次执行到某指令片段时,顺序记录其后顺序指令路选信息,那么当再 次执行到该片段时,就可根据记录的信息进行指令缓存路选。这样只需访问一路中的一个 数据块即可取得指令代码,避免对该路标志字段的访问和比较,以及对其它路数据存储器 的读取。 由前述,完整的指令片段信息,包含分支指令目标地址和顺序指令路选信息。该片 段信息以分支指令的目标地址为标识,若干个顺序指令路选信息为数据。其中,目标地址所 对应的分支指令的行为,可以是直接跳转或条件跳转,且不限定跳转的方向(向前或者向 后跳转)。 分支序列缓冲器包括指令缓存单元,临时存储预取的指令,采用多路组相连结 构,每个路包括标志位存储器和数据存储器;访问控制单元,根据分支序列缓冲单元中的路 选信息,控制指令缓存单元中目标路的访问;分支序列缓冲单元,缓存分支指令的目标地址 以及其后续顺序指令路选信息。 访问控制单元从分支序列缓冲单元中获得当前访问的路选信息,并根据路信息选 择开启指令缓存单元中相应的路,直接获得所需的顺序指令,此时无关的路被关闭访问。
本发明的有益效果主要表现在能有效降低缓存功耗。
图1为现有技术中的典型指令缓存示意图。
图2为基于图1指令缓存的分支序列缓冲器的结构示意图(读取模式)。
图3为基于图1指令缓存的分支序列缓冲器的结构示意图(记录模式)。
图4为具有典型表项数的分支序列缓冲单元示意图。
图5为在图4基础上,循环记录数据的分支序列缓冲单元示意图。
具体实施例方式
下面结合附图对本发明作进一步描述。 参照图2 图5,一种用于降低指令缓存功耗的分支序列缓冲器,所述分支序列缓 冲器包括指令缓存单元,用于临时存储预取的指令,采用多路组相连结构,每个路包括标 志位存储器和数据存储器;指令片段信息包括分支指令目标地址、顺序指令路选信息的数 据片段和分支指令,所述分支序列缓冲器还包括 访问控制单元,用于根据分支序列缓冲单元中的路选信息,控制指令缓存单元中 目标路的访问; 分支序列缓冲单元,用于缓存分支指令的目标地址以及其后续顺序指令路选信 息; 访问控制单元获得当前指令片段信息,当所述当前指令片段信息中的分支指令目 标地址与缓存的分支指令的目标地址匹配时,访问控制单元读取分支序列缓冲单元缓存的 顺序指令路选信息,从分支序列缓冲单元中获得当前访问的路信息,并根据路选信息选择 开启指令缓存单元中相应的路,直接获得所需的顺序指令,此时无关的路被关闭访问;不匹 配时,访问控制单元记录顺序指令路选信息,分支序列缓冲单元存储来自于访问控制单元 的顺序指令路选信息。 参照图2所示,本发明的分支序列缓冲器分为三个单元指令缓存单元、访问控制 单元和分支序列缓冲单元。指令缓存单元采用多路组相连结构,在同一地址索引下可在多 路数据存储器中临时存储取得的指令,并由相应的标志位存储器进行标识。访问控制单元 根据分支序列缓冲单元中的顺序指令路选信息,控制指令缓存单元从目标路数据存储器中 取指令(图2),以及向分支序列缓冲单元记录顺序指令路选信息(图3)。分支序列缓冲单 元用于缓存分支指令的目标地址以及其后续顺序指令路选信息。 访问控制单元根据分支指令的目标地址,从分支序列缓冲单元获得当前访问的顺 序指令路选信息,开启指令缓存单元中,该信息所指路的数据存储器,获取所需指令,此时 关闭该路标志位存储器和无关路的访问。 分支序列缓冲单元组织为一个循环表,由若干表项构成。表项数可依据性能与资 源需求任意选取。每个表项由一个标识位和一个数据字段构成。其中,数据字段有两种类 型,可为分支指令的目标地址,或若干顺序指令路选信息。数据字段的长度由分支指令跳转 的目标地址决定。 分支序列缓冲单元每个表项的首位为标识位,用于区分数据字段的类型,长度为1 位。其中"0"表示存放的是顺序指令路选信息,"1"表示该表项的数据字段存放分支指令 的目标地址。
5
分支序列缓冲单元中,一个指令片段信息包含一个目标地址和若干顺序指令路选信息,存放于连续的数个表项。其中第一个表项为目标地址表项,顺序指令路选信息表项无间隔地存放在对应的目标地址表项之后。 当目标地址匹配时,分支序列缓冲单元向访问控制单元提供缓存的顺序指令路选信息,该读取过程以路指针作为索引;不匹配时,存储来自于访问控制单元的顺序指令路选信息,该记录过程同时以路指针和项指针索引。 例如,对于背景技术所述指令缓存,分支指令的目标地址(块地址)的长度为28位,分支序列缓冲单元表项的数据字段宽度即为28位,该表项可存放一个目标地址。在上述情况下,若表项的数据字段存放顺序指令路选信息,则包含14条顺序指令路选信息(4路组相连,每个顺序指令路选信息占用2位,数据字段中不包含任何有效位)。如图4所示的分支序列缓冲单元,有12个表项。第1、4、8、10表项存放分支指令的目标地址,在首位以"1"标识,数据字段各存放一条目标地址。第12项为无效项,无效字段"X"以任意数据填充。其它表项存放顺序指令路选信息,首位以"O"标识。图4表明,以目标地址1开始的指令片段,包含16条顺序指令,每一条指令的顺序指令路选信息被组织为3个顺序指令路选信息表项,无间隔地存放在第4个目标地址表项之后。若当前操作为记录,表示正在记录"目标地址3"片段中第6条指令的顺序指令路选信息;若当前操作为读取,表示正在读取"目标地址2"片段中第6条或第13条指令的顺序指令路选信息,或其它片段中指令的顺序指令路选信息。 初始化时,访问控制单元将分支序列缓冲单元所有表项的标识位置零。当取得分支指令的目标地址后,访问控制单元将该目标地址与分支序列缓冲单元中标识位为"l"的表项的数据字段进行比较。如某表项匹配,访问控制单元进入读取模式,如图2,读取分支序列缓冲单元中,紧随匹配项的下一表项,数据字段前两位为目标指令的顺序指令路选信息。数据字段的接下来两位为目标指令下一条指令的顺序指令路选信息。依上述,访问控制单元依次取得目标指令及其后指令的顺序指令路选信息。访问控制单元的读取过程以指令缓存单元取到分支指令作为结束。若读取到数据字段末两位顺序指令路选信息仍未结束,则继续读取下一表项的数据字段。 如所有表项均不匹配,访问控制单元进入记录模式,如图3。首先,访问控制单元从指令缓存单元取得分支指令的目标地址,将该地址存放在分支序列缓冲单元中项指针所指表项的数据字段上,并置该表项的标识位为"1",项指针指向下一表项。然后,指令缓存单元执行正常的取指令流程。其间,访问控制单元把来自于指令缓存单元的顺序指令路选信息,存放在分支序列缓冲单元项指针所指表项的数据字段的前两位,置该表项标识位为"O"。指令缓存单元继续馈入目标指令下一条指令的顺序指令路选信息。访问控制单元将其存放在项指针所指数据字段的后两位。若记录至该表项数据字段末两位后,记录仍未结束,则将项指针指向下一表项,置该表项标识位为"O"。当项指针需指向最后一个表项的下一表项时,其将指向分支序列缓冲单元的第一个表项。如图5所示,访问控制单元记录分支指令的"目标地址4"及其后3条指令(包含该目标指令)的顺序指令路选信息将目标地址存放在第12表项,置标志位为"1";顺序指令路选信息存放在第1表项,置标志位为"O";项指针指向第2表项。 利用从分支序列缓冲单元获取的顺序指令路选信息,访问控制单元直接从指令缓
6存单元中相应路的数据存储器读取指令,无需访问该路的标志字段,以及其它路标志字段和数据字段的访问。
权利要求
一种用于降低指令缓存功耗的分支序列缓冲器,所述分支序列缓冲器包括指令缓存单元,用于临时存储预取的指令,采用多路组相连结构,每个路包括标志位存储器和数据存储器;其特征在于指令片段信息包括分支指令目标地址、顺序指令路选信息和分支指令,所述分支序列缓冲器还包括访问控制单元,用于根据分支序列缓冲单元中的路选信息,控制指令缓存单元中目标路的访问;分支序列缓冲单元,用于缓存分支指令的目标地址以及其后续顺序指令路选信息;访问控制单元获得当前指令片段信息,当所述当前指令片段信息中的分支指令目标地址与缓存的分支指令的目标地址匹配时,访问控制单元读取分支序列缓冲单元缓存的顺序指令路选信息,从分支序列缓冲单元中获得当前访问的路选信息,并根据路选信息选择开启指令缓存单元中相应的路,直接获得所需的顺序指令,此时无关的路被关闭访问;不匹配时,访问控制单元记录顺序指令路选信息,分支序列缓冲单元存储来自于访问控制单元的顺序指令路选信息。
2. 如权利要求1所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于所述 的分支序列缓冲单元为一个循环表,所述循环表包括至少两个表项,每个表项中存储分支 指令的目标地址或顺序指令路选信息。
3. 如权利要求2所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于存储 分支指令的目标地址的目标表项后跟随存储顺序指令路选信息的路选表项,各个路选表项 无间隔地存放于目标表项之后。
4. 如权利要求2所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于所述 表项中包含用以区分存储内容为分支指令的目标地址或顺序指令路选信息的标识位。
5. 如权利要求3所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于所述 表项中包含用以区分存储内容为分支指令的目标地址或顺序指令路选信息的标识位。
6. 如权利要求l-5之一所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在 于访问控制单元读取分支序列缓冲单元缓存的顺序指令路选信息的过程以路指针作为索 引,访问控制单元记录顺序指令路选信息的过程以路指针和项指针作为索引。
7. 如权利要求l-5之一所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于利用访问控制单元从分支序列缓冲单元获取到的顺序指令路选信息,直接向指令缓存 单元相应路的数据存储器读取顺序指令。
8. 如权利要求6所述的用于降低指令缓存功耗的分支序列缓冲器,其特征在于利用 访问控制单元从分支序列缓冲单元获取到的顺序指令路选信息,直接向指令缓存单元相应 路的数据存储器读取顺序指令。
全文摘要
一种用于降低指令缓存功耗的分支序列缓冲器,包括指令缓存单元,用于临时存储预取的指令,采用多路组相连结构,每个路包括标志位存储器和数据存储器;访问控制单元,用于根据分支序列缓冲单元中的路选信息,控制指令缓存单元中目标路的访问;分支序列缓冲单元,用于缓存分支指令的目标地址以及其后续顺序指令路选信息;访问控制单元从分支序列缓冲单元中获得当前访问的路选信息,并根据路选信息选择开启指令缓存单元中相应的路,直接获得所需的顺序指令,此时无关的路被关闭访问。本发明能有效降低缓存功耗。
文档编号G06F9/38GK101727311SQ20091015514
公开日2010年6月9日 申请日期2009年12月3日 优先权日2009年12月3日
发明者严晓浪, 刘畅, 孟建熠, 徐鸿明, 葛海通 申请人:浙江大学