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

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

Info

Publication number
CN104391676A
CN104391676A CN201410627660.2A CN201410627660A CN104391676A CN 104391676 A CN104391676 A CN 104391676A CN 201410627660 A CN201410627660 A CN 201410627660A CN 104391676 A CN104391676 A CN 104391676A
Authority
CN
China
Prior art keywords
sub
memory bank
fetching
instruction
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410627660.2A
Other languages
English (en)
Other versions
CN104391676B (zh
Inventor
肖建青
李红桥
张洵颖
裴茹霞
娄冕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
771 Research Institute of 9th Academy of CASC
Original Assignee
771 Research Institute of 9th Academy of CASC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 771 Research Institute of 9th Academy of CASC filed Critical 771 Research Institute of 9th Academy of CASC
Priority to CN201410627660.2A priority Critical patent/CN104391676B/zh
Publication of CN104391676A publication Critical patent/CN104391676A/zh
Application granted granted Critical
Publication of CN104391676B publication Critical patent/CN104391676B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

一种低成本高带宽的微处理器取指方法及其取指结构
技术领域
本发明涉及微处理器的取指方法及其取指结构,具体涉及一种低成本高带宽的微处理器取指方法及其取指结构。
背景技术
现代微处理器通过在一个时钟周期里同时发射和执行多条指令,从而可以获得更高的性能,但其基本前提是需要有较高的取指带宽作为支持,即单周期内能从指令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 + 1 N × M + 1 N × ( M - 1 ) + 1 N × ( M - 2 ) + . . . . . . + 1 N × 1 = M ( 1 - M - 1 2 N ) .
本发明取指结构通过以下技术方案来实现:包括由统一的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 + 1 N × M + 1 N × ( M - 1 ) + 1 N × ( M - 2 ) + . . . . . . + 1 N × 1 = M ( 1 - M - 1 2 N ) .
第四,为了实现跨存储行的取指访问,我们针对除末尾子存储体外的其它存储体设置专门的地址自增逻辑,它根据当前取指包的地址自动加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行中实现跨越子存储体存储行的取指访问。这种结构很好的保证了处理器的取指带宽和执行性能,相对于其它的高带宽设计方法而言,极大的降低了设计复杂度以及在面积和功耗方面的成本开销,也减少了由于存储体数目较多而导致的互连和布线问题,实施性更强。

Claims (6)

1.一种低成本高带宽的微处理器取指方法,其特征在于:
首先,将统一的cache存储器划分成多个子存储体并行的存储结构;
然后,将位于相同cache行中的所有指令分别依次缓存在子存储体中,相邻上下两行首尾相接,使得连续取指的指令分布在不同的子存储体中;
其次,若取指包的起始地址不对应cache行中首个子存储体时,则采取跨越子存储体的存储行方式进行取指,使有限的子存储体在可变的取指地址条件下能够获得所需的访问带宽;
再次,针对除末尾子存储体外的其它子存储体,设置专门的地址自增逻辑,根据当前取指包的地址自动加0或者加1来决定是访问该子存储体的当前行还是下一行;
最后,设置指令序列调整逻辑,对于除末尾子存储体外的子存储体,将跨行访问造成顺序与原始指令序列颠倒的指令依次向后调整,并按序将最终的指令序列发送给处理器。
2.根据权利要求1所述的低成本高带宽的微处理器取指方法,其特征在于:若微处理器的取指和执行宽度均为M,则将cache存储器划分成M个子存储体,每个子存储体具有一个读端口并且能独立的进行取指访问。
3.根据权利要求2所述的低成本高带宽的微处理器取指方法,其特征在于:若一个cache行中包含N个指令字,且N≥M,假设每次取指包的起始地址对应于cache行中任意一个指令字的概率是完全相等的,则平均取指带宽为 N - M + 1 N × M + 1 N × ( M - 1 ) + 1 N × ( M - 2 ) + . . . . . . + 1 N × 1 = M 1 ( 1 - M - 1 2 N ) .
4.一种低成本高带宽的微处理器取指结构,其特征在于:包括由统一的cache存储器划分成多个并行存储结构的子存储体,相同cache行的子存储体中分别依次缓存有指令,且相邻上下两行首尾相接,对于起始地址不对应cache行中首个子存储体的取指包跨越存储行进行取指;所述的取指包起始地址通过地址自增逻辑连接除末尾子存储体外的其它子存储体,子存储体经过指令序列调整逻辑将指令顺序调整之后发送给处理器。
5.根据权利要求4所述的低成本高带宽的微处理器取指结构,其特征在于:所述的子存储体个数等于最大取指带宽。
6.根据权利要求4所述的低成本高带宽的微处理器取指结构,其特征在于:所述的子存储体仅有一个读端口并且能独立的进行取指访问。
CN201410627660.2A 2014-11-10 2014-11-10 一种低成本高带宽的微处理器取指方法及其取指结构 Active CN104391676B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410627660.2A CN104391676B (zh) 2014-11-10 2014-11-10 一种低成本高带宽的微处理器取指方法及其取指结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410627660.2A CN104391676B (zh) 2014-11-10 2014-11-10 一种低成本高带宽的微处理器取指方法及其取指结构

Publications (2)

Publication Number Publication Date
CN104391676A true CN104391676A (zh) 2015-03-04
CN104391676B CN104391676B (zh) 2017-11-10

Family

ID=52609585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410627660.2A Active CN104391676B (zh) 2014-11-10 2014-11-10 一种低成本高带宽的微处理器取指方法及其取指结构

Country Status (1)

Country Link
CN (1) CN104391676B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572928A (zh) * 2018-03-13 2018-09-25 福建新大陆电脑股份有限公司 一种人工智能设备及存取方法
CN109697084A (zh) * 2017-10-22 2019-04-30 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN111857831A (zh) * 2020-06-11 2020-10-30 海光信息技术有限公司 一种存储体冲突优化方法、并行处理器及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US6564285B1 (en) * 1994-06-03 2003-05-13 Intel Corporation Synchronous interface for a nonvolatile memory
CN1746865A (zh) * 2005-10-13 2006-03-15 上海交通大学 数字信号处理器可重构指令高速缓存部分的实现方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US6564285B1 (en) * 1994-06-03 2003-05-13 Intel Corporation Synchronous interface for a nonvolatile memory
CN1746865A (zh) * 2005-10-13 2006-03-15 上海交通大学 数字信号处理器可重构指令高速缓存部分的实现方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109697084A (zh) * 2017-10-22 2019-04-30 刘欣 一个用于时分复用流水线处理器的快速访问存储器结构
CN108572928A (zh) * 2018-03-13 2018-09-25 福建新大陆电脑股份有限公司 一种人工智能设备及存取方法
CN108572928B (zh) * 2018-03-13 2024-02-02 新大陆数字技术股份有限公司 一种人工智能设备及存取方法
CN111857831A (zh) * 2020-06-11 2020-10-30 海光信息技术有限公司 一种存储体冲突优化方法、并行处理器及电子设备
CN111857831B (zh) * 2020-06-11 2021-07-20 成都海光微电子技术有限公司 一种存储体冲突优化方法、并行处理器及电子设备

Also Published As

Publication number Publication date
CN104391676B (zh) 2017-11-10

Similar Documents

Publication Publication Date Title
JP5635521B2 (ja) シリアルポートメモリ通信の待ち時間および信頼性を改善するための方法およびシステム
EP3368989B1 (en) Intelligent coded memory architecture with enhanced access scheduler
CN107657581A (zh) 一种卷积神经网络cnn硬件加速器及加速方法
EP0248906A1 (en) Multi-port memory system
CN103246625B (zh) 一种数据与地址共用引脚自适应调整访存粒度的方法
JPS6126712B2 (zh)
CN103744644A (zh) 采用四核结构搭建的四核处理器系统及数据交换方法
CN102508803A (zh) 一种矩阵转置存储控制器
CN102541749B (zh) 多粒度并行存储系统
CN104317770A (zh) 用于众核处理系统的数据存储结构及数据访问方法
WO2010108371A1 (zh) 一种实现fft/ifft变换的电路及方法
US9176929B2 (en) Multi-granularity parallel FFT computation device
TW202024922A (zh) 存取張量資料的方法和裝置
CN104391676A (zh) 一种低成本高带宽的微处理器取指方法及其取指结构
WO2013097223A1 (zh) 多粒度并行存储系统与存储器
CN1892528A (zh) 产生数字信号处理器和存储器的时钟信号的电路和方法
CN103853522A (zh) 折叠式fifo存储器生成器
CN107408076B (zh) 数据处理装置
WO2013097228A1 (zh) 多粒度并行存储系统
WO2012079436A1 (zh) 一种存储器接口访问控制方法及装置
US9268744B2 (en) Parallel bit reversal devices and methods
US10452356B2 (en) Arithmetic processing apparatus and control method for arithmetic processing apparatus
CN105373497A (zh) 基于dsp芯片的矩阵转置装置
CN112632465B (zh) 基于fpga的实对称矩阵特征值分解的数据存储方法
CN113159302B (zh) 一种用于可重构神经网络处理器的路由结构

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant