首页> 中国专利> 一种低成本高带宽的微处理器取指方法及其取指结构

一种低成本高带宽的微处理器取指方法及其取指结构

摘要

一种低成本高带宽的微处理器取指方法及其取指结构,取指方法包括首先将cache存储器划分成多个子存储体并行的存储结构;然后将连续取指的指令分布在不同的子存储体中;若取指包的起始地址不对应cache行中首个子存储体,则采取跨越子存储体的存储行方式进行取指;针对除末尾子存储体外的其它子存储体,设置地址自增逻辑,根据当前取指包的地址自动决定访问该子存储体的当前行还是下一行;最后设置指令序列调整逻辑,对除末尾子存储体外的子存储体,将跨行访问造成顺序与原始指令序列颠倒的指令依次调整,并按序将最终指令序列发送给处理器。本发明还公开了应用该取指方法的取指结构,通过较少的存储体满足了单周期读取多条指令的需求。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-10

    授权

    授权

  • 2015-04-01

    实质审查的生效 IPC(主分类):G06F9/30 申请日:20141110

    实质审查的生效

  • 2015-03-04

    公开

    公开

说明书

技术领域

本发明涉及微处理器的取指方法及其取指结构,具体涉及一种低成本高 带宽的微处理器取指方法及其取指结构。

背景技术

现代微处理器通过在一个时钟周期里同时发射和执行多条指令,从而可 以获得更高的性能,但其基本前提是需要有较高的取指带宽作为支持,即单 周期内能从指令cache中读取多条指令并送回流水线执行。基于这样的带宽 需求,指令cache存储器理论上就应该提供多个访问端口。在具体的处理器 设计中,已有四种多端口cache的实现技术:(1)多端口SRAM的全定制设 计。由于SRAM存储器每增加一个端口都必须相应增加每个存储单元的字 线和位线数量,从而使得该方法的设计复杂度高、周期长、成本大,尤其是 它在功耗和面积上的开销会以端口数的平方趋势显著增长,因此这种方法对 于商业应用有点不切实际。(2)时分复用技术。这是一种虚拟的多端口设计 方法,已经应用于IBM Power2和DEC Alpha 21264处理器中,它们通过使 cache SRAM运行在两倍处理器时钟频率之上,从而获得双端口功能。但 是,该方法需要维持两个时钟,这就为后端时钟树的分布、时钟歪斜的控制 增加了复杂度;更重要的一点是,在cache存储器时钟频率一定时,处理器 的最大时钟频率与它的取指带宽成反比关系,这严格限制了处理器整体性能 的提升。(3)cache复制技术。DEC Alpha 21164就是通过复制多个完全相同 的cache副本来实现多端口访问的一个例子。为了保证多个副本内容的一致 性,每次cache更新操作都必须被同时送到每个cache副本的端口上,于是 增加了对副本数据进行维护的控制复杂度;而且当cache容量较大、所需副 本数较多时,该方法同样会带来功耗和面积的巨大开销。(4)独立寻址的多 体并行cache结构。例如,在MIPS R10000中就采用了这种技术。它将原来 统一的cache结构平分到多个存储体中,每个存储体只具有较少的容量和访 问端口数,因此它相比于传统的多端口结构而言更加经济实用。但是在访问 cache期间,需要通过译码逻辑选择相应的存储体,这会带来额外的访问延 迟;并且存储体数目越多译码选择逻辑就越复杂,使得访问延迟更大从而影 响处理器的时钟频率。

如何有效的提高取指带宽是现代高性能微处理器开发指令级并行的关键 所在,然而,以上几种实现多端口功能的取指技术在不同层面上都反映出相 应的弊端,经检索相关文献,目前也没有能很好解决该问题的方法。

发明内容

针对现有技术中存在的问题,本发明提供一种通过较少的cache存储体 并配合相应的存储体地址自增逻辑来实现并行化,控制简单并且成本低廉, 能够有效解决现有技术设计复杂度高,功耗和面积开销大以及时钟频率受限 等诸多方面问题,满足高性能处理器中单周期读取多条指令需求的低成本高 带宽的微处理器取指方法及其取指结构。

本发明取指方法通过以下技术方案来实现:

首先,将统一的cache存储器划分成多个子存储体并行的存储结构;

然后,将位于相同cache行中的所有指令分别依次缓存在子存储体中, 相邻上下两行首尾相接,使得连续取指的指令分布在不同的子存储体中;

其次,若取指包的起始地址不对应cache行中首个子存储体时,则采取 跨越子存储体的存储行方式进行取指,使有限的子存储体在可变的取指地址 条件下能够获得所需的访问带宽;

再次,针对除末尾子存储体外的其它子存储体,设置专门的地址自增逻 辑,根据当前取指包的地址自动加0或者加1来决定是访问该子存储体的当 前行还是下一行;

最后,设置指令序列调整逻辑,对于除末尾子存储体外的子存储体,将 跨行访问造成顺序与原始指令序列颠倒的指令依次向后调整,并按序将最终 的指令序列发送给处理器。

若微处理器的取指和执行宽度均为M,则将cache存储器划分成M个 子存储体,每个子存储体具有一个读端口并且能独立的进行取指访问。

若一个cache行中包含N个指令字,且N≥M,假设每次取指包的起始 地址对应于cache行中任意一个指令字的概率是完全相等的,则平均取指带 宽为N-M+1N×M+1N×(M-1)+1N×(M-2)+......+1N×1=M(1-M-12N).

本发明取指结构通过以下技术方案来实现:包括由统一的cache存储器 划分成多个并行存储结构的子存储体,相同cache行的子存储体中分别依次 缓存有指令,且相邻上下两行首尾相接,对于起始地址不对应cache行中首 个子存储体的取指包跨越存储行进行取指;所述的取指包起始地址通过地址 自增逻辑连接除末尾子存储体外的其它子存储体,子存储体经过指令序列调 整逻辑将指令顺序调整之后发送给处理器。

所述的子存储体个数等于最大取指带宽。

所述的子存储体仅有一个读端口并且能独立的进行取指访问。

与现有技术相比,本发明采用多体并行的cache存储结构,针对除末尾 子存储体外的其它存储体设置专门的地址自增逻辑从而能够实现跨越存储行 的cache访问,有效提高了处理器的取指带宽,具有以下有益的技术效果:

(1)每个存储体都只有一个端口,无需进行复杂的多端口SRAM全定 制设计,设计周期短、成本低,并且消除了多端口结构在功耗和面积方面的 巨大开销。

(2)所有存储体可以并行工作,因此相比于时分复用技术而言,有效 避免了对处理器主频的上限约束或者在同等主频条件下避免对cache存储器 访问频率提出苛刻的要求,而这种要求是对制造工艺的一种挑战。

(3)本发明将统一的cache存储结构划分成多个独立的子存储结构, 消除了cache复制技术中的结构冗余,因此对于大容量的cache设计,可以 避免由于多个cache副本所导致的面积和功耗的极大浪费。

(4)相对于传统的多体并行结构而言,本发明采用的存储体个数只需 要满足最大的取指带宽,而无需等于cache行中的指令字数,于是简化了存 储体间的选择和译码逻辑,减小了访问延迟。

(5)本发明的取指结构所获得的平均取指带宽会随着cache行大小的 增加而增大;根据得出的带宽公式,在最大取指带宽M为4的条件下,当 cache行大小N从4增加到16时,其平均取指带宽则从2.5提高到3.625。

(6)本发明结构简单,易于实施,针对M个独立的存储体,只需要设 置M-1个地址自增逻辑和一个指令序列调整逻辑,无需其它硬件开销。

附图说明

图1为传统多端口全定制设计的cache结构框图;

图2为传统采用时分复用技术的cache结构框图;

图3为传统采用复制技术的cache结构框图;

图4为传统的多体并行cache结构框图;

图5为本发明的cache结构框图;

具体实施方式

下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明 的解释而不是限定。

本发明在取指过程中主要包括如下方面:

首先,将原来统一的cache存储器划分成多个子存储体并行的存储结 构,例如对于取指和执行宽度均为M的处理器而言则是将cache分成M个 存储体,每个存储体只需要一个读端口并且能独立的进行取指访问,于是整 体上可以支持处理器的最大取指带宽。

第二,将位于一个cache行中的所有指令以“之”字型的编址方式,即 相邻上下两行首尾相接,分别缓存在这M个cache存储体中,从而使得连 续取指的M条指令分别分布在不同的存储体中,有效避免多体结构可能引 发的访问冲突,基于这样的编址方式,一个大的cache行则被映射到这些子 存储体的多个连续的存储行中。

第三,由于每次取指操作不能跨越整个cache行,但是在本发明的设计 结构下,当取指包的起始地址并不对应cache行中的首条指令时,即它不对 应第一个存储体时,则采取跨越部分子存储体的存储行方式进行取指,因此 这仅有的M个存储体在灵活可变的取指地址条件下同样可以获得较高的访 问带宽。在这种结构下,如果一个cache行包含N个指令字(N≥M),并 且假设每次取指包的起始地址对应于cache行中任意一个指令字的概率是完 全相等的,那么显然可知当取指包起始地址对应于cache行中的第0个指令 字以及一直到第N-M个指令字时,每次都可以正常取出M条指令;由于不 能跨越cache行取指,当取指起始地址分别对应于后续指令字位置时,依次 取出的指令数则分别是M-1、M-2…,直到它对应于cache行中的最后一个 指令字即第N-1个指令字时,此时只能取出这一个指令字,因此这种结构 的平均取指带宽等于N-M+1N×M+1N×(M-1)+1N×(M-2)+......+1N×1=M(1-M-12N).

第四,为了实现跨存储行的取指访问,我们针对除末尾子存储体外的其 它存储体设置专门的地址自增逻辑,它根据当前取指包的地址自动加0或者 加1来决定是访问该存储体的当前行还是它的下一行,由于最后一个存储体 的特殊位置,它每次访问的都是取指地址所对应的当前存储行而无需实现跨 行访问,因此它不需要设置地址自增逻辑。

第五,对于前M-1个存储体而言,如果它们进行了跨行访问就有可能 导致所读出指令的顺序与原始指令序列存在颠倒关系,因此设置一个指令序 列调整逻辑,将跨行访问得到的指令依次向后调整,并将最终的指令序列发 送给处理器。

参见图1,传统的采用多端口全定制设计的cache结构,一个统一的 SRAM存储器在每个周期都可以被四个读端口同时访问,从而读出四条指 令。这种方法将设计难度全部转移到了存储器的微观结构中,缺点是它的功 耗和面积开销较大,而且设计周期也很长。

参见图2,采用时分复用技术的cache结构,此时SRAM存储器只有一 个访问端口,为了支持处理器同时发出的四个取指操作,cache的时钟频率 必须是处理器时钟频率的四倍。在每个处理器时钟周期里,四个取指操作首 先都被锁存起来;cache时钟通过一个模4计数器,然后分四个周期依次处 理被锁存的取指操作,即每个cache访问周期都从SRAM中读出一条指 令。这种方法最终等效于在一个处理器时钟周期里读取了四条指令,它通过 用时间冗余来换取多端口的访问功能。

参见图3,采用复制技术的cache结构,此时SRAM存储器也只具有一 个读端口,但为了支持四条指令的访问带宽,需要对它进行整体复制从而得 到四个完全一样的副本,每个副本都可以单独的读出一条指令。这种方法等 效于用空间冗余来换取多端口功能。

参见图4,传统的多体并行cache结构,它将原来的SRAM存储器分成 许多小的并行存储体,每个存储体都只有一个读端口,存储体的个数则等于 cache行中所包含的指令数,这里假设是16。在每个取指周期,控制器都从 这些存储体中译码选择所需的4个存储体进行访问,从而读出所需的四条指 令。这种方法通过存储体间的译码和选择逻辑来满足高带宽要求。

参见图5,本发明所采用的多体并行cache结构,四个并行的存储体可 以支持最大四条指令的取指带宽,为了实现跨存储行访问,对前三个存储体 设置了专门的地址自增逻辑;同时还安排了一个指令序列调整逻辑来矫正由 于跨存储行访问所导致的指令顺序问题。图中显示了取指包起始地址对应于 cache行中word1时的取指情况,此时word4在存储体0中并需要实现跨行 访问,于是该存储体的地址自增逻辑有效;从存储体0到存储体3分别读出 word4、word1、word2、word3,然后通过指令序列调整逻辑得到最终的四 条指令分别为word1、word2、word3、word4,保证了原始指令顺序的正确 性。这种方法通过各存储体内的地址自增逻辑来满足高带宽要求。

本发明已经应用于一款兼容SPARC V8架构的高性能RISC处理器中, 它通过将统一的cache存储结构组织成以独立的多个存储体并行的存储方式 来实现,并且采用“之”字型的编址方式将整个cache行中的指令字分别映 射到各个子存储体中,从而能够在一个cache行中实现跨越子存储体存储行 的取指访问。这种结构很好的保证了处理器的取指带宽和执行性能,相对于 其它的高带宽设计方法而言,极大的降低了设计复杂度以及在面积和功耗方 面的成本开销,也减少了由于存储体数目较多而导致的互连和布线问题,实 施性更强。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号