CN100478918C - 微处理器中分段高速缓存的设计方法及分段高速缓存 - Google Patents
微处理器中分段高速缓存的设计方法及分段高速缓存 Download PDFInfo
- Publication number
- CN100478918C CN100478918C CNB2007100360079A CN200710036007A CN100478918C CN 100478918 C CN100478918 C CN 100478918C CN B2007100360079 A CNB2007100360079 A CN B2007100360079A CN 200710036007 A CN200710036007 A CN 200710036007A CN 100478918 C CN100478918 C CN 100478918C
- Authority
- CN
- China
- Prior art keywords
- section
- data
- address
- speed cache
- segment
- 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.)
- Active
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种微处理器中分段高速缓存的设计方法及分段高速缓存,在传统数据高速缓存上增加段表以及相应的控制逻辑等段机制,增加用于在段机制基础上实现预取的预取智能体,同时在指令集中增加维护段的创建段、删除段指令,在传统的存数、取数指令上增加段号,并增加特殊的存数、取数指令,用于启动预取智能体;当数据高速缓存在使用时,查找段表与有效地址计算并行执行,地址映射在有效地址计算和查找段表之后执行,最后根据地址映射得到的高速缓存行的地址对高速缓存进行访问。本发明使得高速缓存能够在较小的软件管理开销下,充分利用程序中数据的局部性,提升计算机中存储系统的访问性能,进而改善存储墙问题。
Description
技术领域
本发明主要涉及到微处理器中数据高速缓存的设计领域,特指一种微处理器中分段高速缓存的设计方法及分段高速缓存。
背景技术
当前的计算机系统中,处理器的性能平均每年增长751%,而存储器的性能平均每年仅增长7%。由于存储器的速度限制,处理器无法及时得到数据,致使其性能远不能有效发挥,这就是著名的“存储墙问题”。当前,存储墙问题已成为计算机系统性能提升的瓶颈之一,改善和解决存储墙问题至关重要。
高速缓存技术是人们为解决存储墙问题提出的重要的存储层次技术之一,它通过利用程序中数据访问的局部性原理来提高存储系统的访问性能。由于处于影响系统性能的关键路径——存储墙问题上,高速缓存的性能发挥变得异常重要。经典的高速缓存技术大都由硬件直接支持,对软件完全透明。而硬件受其本身复杂、开销大等局限性制约,往往导致高速缓存的利用率很低。为此,越来越多的研究人员开始研究软件可管理的高速缓存技术。当前的软件可管理高速缓存技术中,管理粒度大都面向高速缓存行一级,这种粒度的管理对高速缓存使用性能的提升有限,而且管理开销很大。如何把握系统中软件对高速缓存的管理粒度,有效发挥软件管理高速缓存的优势,提高高速缓存的利用率,进而改善存储墙问题,是微处理器高速缓存设计中亟待解决的重要问题。
发明内容
本发明要解决的问题就在于:针对现有技术存在的技术问题,本发明提供一种软件可管理的高性能分段高速缓存的设计方法及分段高速缓存,使得高速缓存能够在较小的软件管理开销下,充分利用程序中数据的局部性,提升计算机中存储系统的访问性能,进而改善存储墙问题。
为解决上述技术问题,本发明提出的解决方案为:一种微处理器中分段高速缓存的设计方法,其特征在于:在传统数据高速缓存上增加段表以及相应的控制逻辑等段机制,增加用于在段机制基础上实现预取的预取智能体,同时在指令集中增加维护段的创建段、删除段指令,在传统的存数、取数指令上增加段号,并增加特殊的存储、取数指令,用于启动预取智能体;当数据高速缓存在使用时,查找段表与有效地址计算并行执行,地址映射在有效地址计算和查找段表之后执行,最后根据地址映射得到的高速缓存行的地址对高速缓存进行访问,如果在高速缓存中找到对应的项,就在对应的数据存储器中进行数据访问,否则启动失效处理过程。
在指令集中修改如下2种指令:
(1)、为传统的LD指令(取数指令)增加段号:LD RD,RA,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符;
(2)、为传统的ST指令(存储指令)增加段号:ST RA,RS,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符。
在指令集中增加如下4条指令:
(1)、OSEG RDHA,RDS,RSHI,RSS,SID[Open SEGment]功能是将数据首地址(寄存器RDHA中的值)、数据大小(寄存器RDS中的值)、段首地址(寄存器RSHI中的值)、段大小(寄存器RSS中的值)填入段表中地址为SID的对应项,并把该项中的段有效位置1;
(2)、CSEG SID[Close SEGment]功能是根据段号(SID的值)查找段表,删除段表中的对应项(置该项对应的段有效位为0);
(3)、FLD RD,RA,SID[Foresighted LoaD]功能是将寄存器RA给出的地址ADDR对应的数据写入RD寄存器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号(SID的值)在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据;
(4)、FST RA,RS,SID[Foresighted STore]功能是将寄存器RS中的数据写入寄存器RA给出的地址ADDR对应的存储器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号(SID的值)在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。
一种微处理器中的分段高速缓存,其特征在于它包括:
标识和标志位阵列,其中的项为标识、有效位和修改位,若标识和标志位阵列中某一项标识与地址ADDR的高位部分相同,且对应的有效位为1,则地址ADDR对应的数据在高速缓存中;修改位指示对应的高速缓存行是否被修改过,如果高速缓存行的大小为2LS字节,存储器地址总宽度为MW位,存储空间使用字节编址,则标识和标志位阵列中每一项的标识共包含MW-LS位;
数据阵列,其中存储的是高速缓存中的数据,当读写操作查找标识和标志位阵列发生命中时,对应数据阵列中的项即为所要访问的数据,数据阵列占用的存储器数目与高速缓存设计的相联度一一对应;
段表,其用于记录程序运行过程中的段设置,它的每一项包含数据首地址域、数据大小域、段首地址域、段大小域,以及段有效位,前面四项分别表示分配在该段的数据首地址、数据大小,以及该段在高速缓存中的首地址和段大小,段有效位标志该段是否有效;
预取智能体,是用来完成FLD和FST指令的重要部件,预取智能体能够在系统执行FLD或FST指令时,智能地根据段表中的段设置,将程序未来可能用到的处于相同段的数据预取进高速缓存;
控制逻辑,是整个高速缓存的核心控制部件,用于控制高速缓存中其他各部分模块的协同工作,完成LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令访问高速缓存时的各种功能;控制逻辑中包含段机制使能标志寄存器,当此标志寄存器的值为0时,LD、ST指令访问高速缓存时屏蔽段表,段机制将不起作用。
与现有技术相比,本发明的优点就在于:
1、本发明在传统高速缓存的基础上增加了段机制,使得软件能够灵活地以段为单位控制数据集在高速缓存中的存放,提高高速缓存的利用率,改善存储墙问题。
2、本发明中,软件对高速缓存管理的粒度是以段为单位,与其他的软件可管理高速缓存(其他的软件可管理高速缓存的管理粒度大都以高速缓存行为单位)相比,软件管理的层次较高,软件管理所引入的代价小的多,简洁高效。
3、本发明中的预取智能体能够根据预先设置的段信息决定预取的数据位置和数据大小,这是普通的预取机制所无法完成的,因此预取智能体能够在段机制的基础上更进一步地减少高速缓存上访存操作引起的失效次数,提高存储系统的访问性能。
4、本发明在为高速缓存增加新功能的同时,对于完成原有功能,没有引入新的硬件时间开销,硬件结构简单,代价小,扩展性好。
5、本发明中,将段机制使能标志寄存器的值置为0时,即可完全兼容传统程序,兼容性好,可移植性好。
附图说明
图1a是在传统高速缓存上执行访存指令时的一种流程示意图;
图1b是在传统高速缓存上执行访存指令时的另一种流程示意图;
图2a是在分段高速缓存上执行访存指令时的一种流程示意图;
图2b是在分段高速缓存上执行访存指令时的另一种流程示意图;
图3是一种分段高速缓存的实现逻辑结构示意图;
图4是LD/ST指令在二路组相联的分段高速缓存上的执行结构示意图;
图5是控制逻辑的逻辑结构示意图;
图6是控制逻辑的状态机模块为实现LD/ST/FLD/FST指令的状态转换示意图;
图7是预取智能体的工作原理示意图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明。
传统处理器中数据高速缓存的设计分为两种,图1a和图1b中分别给出两种设计方法执行访存指令的流程图,第一种先计算所需要访存的有效地址,再根据计算出的有效地址在高速缓存中执行查找过程,如果在高速缓存中找到对应的项,就在对应的数据存储器中进行数据访问,否则启动失效处理过程。第二种方法与第一种方法的不同在于,对数据存储器的访问与查找过程同时进行,由于在查找结束之前,并不能确定所访问数据的具体位置,所以第二种方法在读数据时会同时访问同一组中的多个高速缓存行,再在查找过程结束后根据查找的结果选择使用哪个高速缓存行。
本发明是将软件对高速缓存的管理粒度提升至程序中的数据集一级,同时保留硬件对高速缓存行一级粒度的管理。本发明的一种微处理器中分段高速缓存的设计方法,在传统数据高速缓存上增加段表以及相应的控制逻辑等段机制,增加用于在段机制基础上实现预取的预取智能体,同时在指令集中增加维护段的创建段、删除段指令,在传统的存数、取数指令上增加段号,并增加特殊的存数、取数指令,用于启动预取智能体;当数据高速缓存在使用时,先查找段表与有效地址计算并行执行,地址映射在有效地址计算和查找段表之后执行,最后根据地址映射得到的高速缓存行的地址对高速缓存进行访问,如果在高速缓存中找到对应的项,就在对应的数据存储器中进行数据访问,否则启动失效处理过程。这种改变使得高速缓存能够很容易地处理数据集与数据集之间(比如向量数据之间、向量数据和标量数据之间)的关系,有效地提升高速缓存的利用率。由此可见,本发明在传统的高速缓存设计中增加了段机制,其中每个段包含高速缓存中的若干个组(对于直接映像高速缓存来说,每个段包含若干个高速缓存行),软件在段一级进行管理,硬件在段内的高速缓存行一级进行管理。程序员或编译器根据程序中数据访问的特点对高速缓存进行分段,并决定数据集在哪个段中存放。从数据的角度看,任何一个段都是分在该段数据的一个独立的高速缓存。
图2a和图2b给出了在分段高速缓存上执行访存指令的两种流程图,相对于传统数据高速缓存,灰色方框中的查找段表和地址映射操作是增加的部分。其中,查找段表与有效地址计算并行执行,地址映射在有效地址计算和查找段表之后执行,最后根据地址映射得到的高速缓存行的地址对高速缓存进行访问,后续的执行过程与传统高速缓存相同。传统处理器中,计算有效地址的过程往往在流水线的执行站进行;使用分段高速缓存的处理器中,查找段表操作和原先计算有效地址操作一起在执行站完成,地址映射操作也在执行站中进行。通常,处理器流水线中最长延时的组合逻辑路径在存储站(对高速缓存的访问),因此,分段高速缓存并不会增加额外的硬件时间开销。
为了实现分段高速缓存,需要在传统高速缓存中增加段表存储器和相应的控制机制,用于存放程序中数据的段设置。在传统处理器指令集上,增加“创建段”和“删除段”的指令,“创建段”指令在高速缓存中划分出一段空间作为新段,并指示程序中的哪一部分数据集分配在该段上,创建好的段信息存储在段表中,段号是该段的标识,也是段表存储器中存储对应段信息项的地址。为了加速查找段表的操作,对存数、取数指令增加段号域,在执行存数、取数指令时根据段号查找段表。在使用分段高速缓存的处理器上,数据访问前,“创建段”指令首先明确了数据在高速缓存的位置,因此,带来的另一个优点是可以方便地实现数据预取,很自然地解决了传统预取机制不知道取什么数据,取多少数据,取到什么位置等一系列难题。为此,可以在指令集中再增加两条特殊的存储、取数指令。在完成这两条特殊的存数、取数指令的同时,硬件启动预取机制,根据创建段时指示的段信息,在对应段中预取事先分配在该段的数据集。
分段高速缓存有很多种不同的实现方案,下面给出其中的一种。
在本实施例中,本发明在指令集中修改如下2种指令:
(1)、为传统的LD指令(取数指令)增加段号:LD RD,RA,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符。
(2)、为传统的ST指令(存储指令)增加段号:ST RA,RS,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符。
在本实施例中,本发明在指令集中增加如下4条指令:
(1)、OSEG RDHA,RDS,RSHI,RSS,SID[Open SEGment]功能是将数据首地址(寄存器RDHA中的值)、数据大小(寄存器RDS中的值)、段首地址(寄存器RSHI中的值)、段大小(寄存器RSS中的值)填入段表中地址为SID的对应项,并把该项中的段有效位置1。
(2)、CSEG SID[Close SEGment]功能是根据段号(SID的值)查找段表,删除段表中的对应项(置该项对应的段有效位为0)。
(3)、FLD RD,RA,SID[Foresighted LoaD]功能是将寄存器RA给出的地址ADDR对应的数据写入RD寄存器中,SID是分配给地址ADDR的段的段号。同时启动高速缓存中的预取智能体,根据段号(SID的值)在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。本条指令在启动预取智能体后就返回,对本指令而言,预取智能体的行为是非阻塞的。
(4)、FST RA,RS,SID[Foresighted STore]功能是将寄存器RS中的数据写入寄存器RA给出的地址ADDR对应的存储器中,SID是分配给地址ADDR的段的段号。同时启动高速缓存中的预取智能体,根据段号(SID的值)在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。本条指令在启动预取智能体后就返回,对本指令而言,预取智能体的行为是非阻塞的。
分段高速缓存由标识和标志位阵列、数据阵列、段表、预取智能体和控制逻辑组成。标识和标志位阵列、数据阵列的设计方法与传统高速缓存相同,段表、预取智能体和相应的控制逻辑配合软件完成对高速缓存的分段管理。图3是一种分段高速缓存的实现逻辑结构图。和传统高速缓存一样,本发明中的高速缓存在处理器中分别与中央处理器的存储取数单元部件,以及下一级存储器部件相连。本发明的高速缓存共由五部分逻辑结构组成,它们分别是数据阵列(Data Array)、标识和标志位阵列(Tag and FlagArray)、段表(Segment Table)、预取智能体(Prefetch Agent)和控制逻辑(ControlLogic)。控制逻辑是高速缓存的核心控制部件,其他部件均与它相连。标识和标志位阵列、数据阵列与传统高速缓存中的完全相同,它们使用SRAM实现。段表使用SRAM实现。预取智能体的实现类似DMA部件,当中央处理器执行FLD/FST指令时,预取智能体根据段的信息自动地访问高速缓存以预取数据。
其中,标识和标志位阵列中的项为标识、有效位和修改位(写直达高速缓存不包含修改位)。若标识和标志位阵列中某一项标识与地址ADDR的高位部分相同(比较的哪几位由段设置确定),且对应的有效位为1,则地址ADDR对应的数据在高速缓存中。修改位指示对应的高速缓存行是否被修改过。如果高速缓存行的大小为2LS字节,存储器地址总宽度为MW位,存储空间使用字节编址,则标识和标志位阵列中每一项的标识共包含MW-LS位。
数据阵列中存储的是高速缓存中的数据,当读写操作查找标识和标志位阵列发生命中时,对应数据阵列中的项即为所要访问的数据。数据阵列占用的存储器数目与高速缓存设计的相联度一一对应,比如四路组相联高速缓存就需要设置四个存储器存放数据阵列(为了实现四路数据的并行访问)。
段表用于记录程序运行过程中的段设置,它的每一项包含数据首地址域、数据大小域、段首地址域、段大小域,以及段有效位。前面四项分别表示分配在该段的数据首地址、数据大小,以及该段在高速缓存中的首地址和段大小。段有效位标志该段是否有效。这里,为了后面操作的简单,段大小域中存储的是段大小减1的值。预取智能体是完成FLD和FST指令的重要部件。预取智能体能够在系统执行FLD或FST指令时,智能地根据段表中的段设置,将程序未来可能用到的处于相同段的数据预取进高速缓存,从而避免这些数据在未来访问时失效,最大程度地减少高速缓存的失效率,提升存储系统的访问性能。如图7所示,是预取智能体(Prefetch Agent)的工作原理图。仲裁器同时连接中央处理器和预取智能体,当二者都有访问请求时,仲裁器优先满足中央处理器的请求。如果在预取智能体工作时发生中央处理器的访问请求,仲裁器剥夺预取智能体的访问权,满足中央处理器的访问请求。预取智能体被启动时先向仲裁器发送取数请求,一旦获得对高速缓存的访问权,预取智能体以突发流水的方式对高速缓存进行预取。
控制逻辑是整个高速缓存的核心控制部件,用于控制高速缓存中其他各部分模块的协同工作,完成LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令访问高速缓存时的各种功能。控制逻辑中包含段机制使能标志寄存器,当此标志寄存器的值为0时,LD、ST指令访问高速缓存时屏蔽段表,段机制将不起作用,分段高速缓存的行为变得和传统高速缓存一样。如图5所示,是控制逻辑(Control Logic)的逻辑结构图。控制逻辑是高速缓存的核心控制部件,它由状态机模块、接口模块、段表查询模块、标识和标志位访问模块、数据访问模块、访存模块和仲裁模块组成。其中,状态机模块又是控制逻辑的核心部件,完成高速缓存各个功能的状态控制。段表查询模块完成对段表的查询,标识和标志位访问模块完成对标识和标志位阵列的访问,数据访问模块完成对数据阵列的访问,访存模块完成对下一级存储层次的数据访问,仲裁模块配合预取智能体完成预取操作。如图6所示,是控制逻辑的状态机模块为实现LD/ST/FLD/FST指令的状态转换图。这里是状态转换简图,每个状态中的动作并非都是在1个时钟周期内完成,其中,失效处理的处理时间和实际机器的设计实现密切相关。执行LD/ST/FLD/FST指令时,先查找段表,进行地址映射,再根据映射出的地址查标识和标志位阵列,若命中,则直接访问对应数据存储器中的数据,否则发生高速缓存失效,进入失效处理过程。如果是FLD/FST指令,在查询段表后启动预取智能体,最后状态返回,返回的同时预取智能体开始工作进行数据预取。其中,查段表和地址映射状态在处理器流水线的执行站完成,其余状态在处理器流水线的访存站完成。图4是LD/ST指令在二路组相联的分段高速缓存上的执行结构图。其中,灰色圆角多边形里的部分是新增段机制引入的操作,这些操作在处理器流水线的执行站完成,其余部分在处理器流水线的访存站完成。具体过程与图2中的流程图对应:根据指令中的段号查找段表得到对应的段表项,一方面,根据段表中记录的数据首地址和数据大小信息对访存地址进行检查,如果越界,报异常;另一方面,根据段大小信息对主存地址进行地址映射,映射得到对应的标识和索引index,最后将段首地址与索引相加,使用相加的结果对高速缓存的两路标识和标志位阵列、数据阵列同时进行访问,访问得到的标识域和有效位送入比较逻辑进行比较,如果命中,在对应的高速缓存数据域中访问数据,否则,发生高速缓存失效,启动高速缓存失效处理机制。
地址映射逻辑的算法为:
offset=address mod line_size
index=(address/line_size)mod seg_size
tag=address /line_size
特别地,设line_size=2j字节,seg_size=2i×set_size,则:
当i=0时,没有index域;否则,
index=address[n-1:j]&(seg_size-1),
offset=address[j-1:0],
tag=address[n-1:j],
比较逻辑的算法是:
result=valid &&(cache_tag==tag)
注:address——主存地址,二进制长度为n(address[n-1:0]);
line_size——高速缓存块大小;
seg_size——段大小,由于这里用到的是seg_size-1的值,因此段表中直接存
放段大小减1的值;
set_size——高速缓存组的大小(相联度,一个组包含的行数);
offset——高速缓存行内偏移地址;
index——高速缓存中组的索引;
tag——地址映射后的标识;
valid——高速缓存里标志位阵列中的有效位;
cache_tag——高速缓存里标识和标志位阵列中的标识;
result——比较逻辑的结果;
高速缓存里标识和标志位阵列中的标识(cache_tag)的二进制长度为n-j;
&&——关系与;
==——关系等;
&——位与。
表1中给出了本发明在段机制开启时所影响的指令执行过程。其中,对于LD/ST指令和FLD/FST指令,增加的查段表操作和地址映射操作在处理器流水线的执行站完成,指令总的执行时间与不加段机制的传统处理器相同。
表1
过程 | 硬件行为 | 备注 |
OSEG指令的执行过程 | 将数据首地址、数据大小、段首地址、段大小减1的值填入段表中的对应项,并置段有效位为1。当前段表项在段表中的地址即为该段的段号。 | |
CSEG指令的执行过程 | 根据段号查找段表,删除段表中的对应项(置该项对应的段有效位为0)。 | |
LD/ST指令的查找过程 | 先根据段号查找段表,得到对应的段首信息,根据首地址和段信息对访存地址进行映射,最后使用映射后的地址查找标识和标志位阵列(先使用索引查找到对应的组,再匹配标识域,检查有效位),若满足命中条件,则发生命中,否则发生高速缓存失效。在高速缓存中查找标识和标志位阵列的同时,检查当前访存的数据地址是否与段号给出的段对应,如果数据地址与段号不符,硬件产生异常。 | 查段表和地址映射操作在流水线的执行站完成,指令的执行延迟与传统高速缓存相同。 |
LD/ST指令的失效处理过程 | 一方面,根据数据地址从下一级存储器请求对应的高速缓存行数据;另一方面,在高速缓存里对应的组中计算出被替换的高速缓存行,填入数据。 | 与传统高速缓存的失效处理过程相同。 |
FLD/FST指令的执行过程 | 完成普通LD/ST指令的执行过程后,启动预取智能体,在与LD/ST指令指定的段中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。 | FLD/FST启动预取智能体后就返回,对FLD/FST指令而言,预取智能体的行为是非阻塞的。 |
使用本发明后,程序的运行过程如下:
1、当控制逻辑中的段机制使能标志寄存器的值为1时,系统启用段机制,程序先使用OSEG指令为即将使用的数据开辟新段,然后和传统程序一样执行,当执行到LD/ST指令时,高速缓存按照事先设置好的段和LD/ST指令中的段号完成所需的操作(详细过程见表1),当某段数据不再会被访问时,程序使用CSEG指令删除该段,将高速缓存的空间留给其他数据使用。为了提高性能,对于将来会被连续访问的某段数据,程序员或编译器可以将访问该段数据的第一条LD/ST指令更改为对应的FLD/FST指令,这样,硬件在完成取数/存数操作的同时会启动预取智能体,预取智能体将分配在该段的其他数据提前预取进高速缓存,从而减少程序后续执行时访存指令的失效次数,提高程序的运行性能。
2、当控制逻辑中的段机制使能标志寄存器的值为0时,本发明中高速缓存就和传统高速缓存的行为相同,可以直接运行未作任何修改的传统程序。
Claims (2)
1、一种微处理器中分段高速缓存的设计方法,其特征在于:在传统数据高速缓存上增加段表以及相应的控制逻辑段机制,增加用于在段机制基础上实现预取的预取智能体,同时在指令集中增加维护段的创建段、删除段指令,在传统的存数、取数指令上增加段号,并增加特殊的存数、取数指令,用于启动预取智能体;当数据高速缓存在使用时,查找段表与有效地址计算并行执行,地址映射在有效地址计算和查找段表之后执行,最后根据地址映射得到的高速缓存行的地址对高速缓存进行访问,如果在高速缓存中找到对应的项,就在对应的数据存储器中进行数据访问,否则启动失效处理过程;
在指令集中修改如下2种指令:
(1)、为传统的取数指令,即LD指令增加段号:LD RD,RA,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符;
(2)、为传统的存数指令,即ST指令增加段号:ST RA,RS,SID其中,SID是新增的段号域,指示当前访存的数据在高速缓存中存放在哪个段,这里的值必须与先前的段设置相符;
在指令集中增加如下4条指令:
(1)、OSEG RDHA,RDS,RSHI,RSS,SID[Open SEGment]功能是将寄存器RDHA中的数据首地址、寄存器RDS中的数据大小、寄存器RSHI中的段首地址、寄存器RSS中的段大小填入段表中地址为SID的对应项,并把该项中的段有效位置1;
(2)、CSEG SID[Close SEGment]功能是根据段号SID的值查找段表,删除段表中的对应项,即置该项对应的段有效位为0;
(3)、FLD RD,RA,SID[Foresighted LoaD]功能是将寄存器RA给出的地址ADDR对应的数据写入RD寄存器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据;
(4)、FST RA,RS,SID[Foresighted STore]功能是将寄存器RS中的数据写入寄存器RA给出的地址ADDR对应的存储器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。
2、一种微处理器中分段高速缓存,其特征在于分段高速缓存包括:
标识和标志位阵列,其中的项为标识、有效位和修改位,若标识和标志位阵列中某一项标识与地址ADDR的高位部分相同,且对应的有效位为1,则地址ADDR对应的数据在高速缓存中;修改位指示对应的高速缓存行是否被修改过,如果高速缓存行的大小为2LS字节,存储器地址总宽度为MW位,存储空间使用字节编址,则标识和标志位阵列中每一项的标识共包含MW-LS位;
数据阵列,其中存储的是高速缓存中的数据,当读写操作查找标识和标志位阵列发生命中时,对应数据阵列中的项即为所要访问的数据,数据阵列占用的存储器数目与高速缓存设计的相联度一一对应;
段表,其用于记录程序运行过程中的段设置,它的每一项包含数据首地址域、数据大小域、段首地址域、段大小域,以及段有效位,前面四项分别表示分配在该段的数据首地址、数据大小,以及该段在高速缓存中的首地址和段大小,段有效位标志该段是否有效;
预取智能体,是用来完成FLD和FST指令的重要部件,预取智能体能够在系统执行FLD或FST指令时,智能地根据段表中的段设置,将程序未来可能用到的处于相同段的数据预取进高速缓存;其中,指令FLD RD,RA,SID[Foresighted LoaD]功能是将寄存器RA给出的地址ADDR对应的数据写入RD寄存器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据;指令FST RA,RS,SID[Foresighted STore]功能是将寄存器RS中的数据写入寄存器RA给出的地址ADDR对应的存储器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据;
控制逻辑,是整个高速缓存的核心控制部件,用于控制高速缓存中其他各部分模块的协同工作,完成取数指令、存数指令,即LD、ST指令,以及新增的OSEG、CSEG、FLD、FST指令访问高速缓存时的各种功能;控制逻辑中包含段机制使能标志寄存器,当此标志寄存器的值为0时,取数指令LD、存数指令ST指令访问高速缓存时屏蔽段表,段机制将不起作用;其中,指令OSEG RDHA,RDS,RSHI,RSS,SID[Open SEGment]功能是将寄存器RDHA中的数据首地址、寄存器RDS中的数据大小、寄存器RSHI中的段首地址、寄存器RSS中的段大小填入段表中地址为SID的对应项,并把该项中的段有效位置1;指令CSEGSID[Close SEGment]功能是根据段号SID的值查找段表,删除段表中的对应项,即置该项对应的段有效位为0;指令FLD RD,RA,SID[Foresighted LoaD]功能是将寄存器RA给出的地址ADDR对应的数据写入RD寄存器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据;指令FST RA,RS,SID[Foresighted STore]功能是将寄存器RS中的数据写入寄存器RA给出的地址ADDR对应的存储器中,SID是分配给地址ADDR的段的段号,同时启动高速缓存中的预取智能体,根据段号SID的值在段表中查找对应的数据首地址DHA、数据大小DS、段首地址SHA和段大小SS,在高速缓存里对应段的高速缓存行中填写首地址为ADDR,大小为min{DHA+DS-ADDR,SS}的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100360079A CN100478918C (zh) | 2007-10-31 | 2007-10-31 | 微处理器中分段高速缓存的设计方法及分段高速缓存 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100360079A CN100478918C (zh) | 2007-10-31 | 2007-10-31 | 微处理器中分段高速缓存的设计方法及分段高速缓存 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101149704A CN101149704A (zh) | 2008-03-26 |
CN100478918C true CN100478918C (zh) | 2009-04-15 |
Family
ID=39250246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100360079A Active CN100478918C (zh) | 2007-10-31 | 2007-10-31 | 微处理器中分段高速缓存的设计方法及分段高速缓存 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100478918C (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620526B (zh) * | 2009-07-03 | 2011-06-15 | 中国人民解放军国防科学技术大学 | 一种减少流处理器片上指令存储器资源消耗的方法 |
CN101887360A (zh) * | 2009-07-10 | 2010-11-17 | 威盛电子股份有限公司 | 微处理器的数据预先撷取器及方法 |
CN101872299B (zh) * | 2010-07-06 | 2013-05-01 | 浙江大学 | 冲突预测实现方法及所用冲突预测处理装置事务存储器 |
US9842005B2 (en) * | 2011-03-25 | 2017-12-12 | Intel Corporation | Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines |
CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
EP2972836B1 (en) | 2013-03-15 | 2022-11-09 | Intel Corporation | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
CN103608768B (zh) * | 2013-04-01 | 2017-03-01 | 华为技术有限公司 | 一种数据预取方法、相关装置及系统 |
GB2516092A (en) * | 2013-07-11 | 2015-01-14 | Ibm | Method and system for implementing a bit array in a cache line |
CN103473095A (zh) * | 2013-09-10 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | Cpu二级缓存的加速初始化方法 |
KR20170014496A (ko) * | 2015-07-30 | 2017-02-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작방법 |
CN106557433A (zh) * | 2015-09-28 | 2017-04-05 | 深圳市博巨兴实业发展有限公司 | 一种微控制器高速缓存的方法和装置 |
US10298716B2 (en) * | 2016-04-28 | 2019-05-21 | Telefonaktiebolaget Lm Ericsson (Publ) | Server, client device and methods therein for handling cached content resources |
CN108111560B (zh) * | 2016-11-24 | 2020-09-11 | 中国科学院声学研究所 | 一种线速存储网络分组的系统及方法 |
WO2019029793A1 (en) * | 2017-08-08 | 2019-02-14 | Continental Automotive Gmbh | METHOD FOR OPERATING A CACHE MEMORY |
CN111124951B (zh) * | 2018-10-31 | 2023-09-15 | 伊姆西Ip控股有限责任公司 | 管理数据访问的方法、设备和计算机程序产品 |
CN112699063B (zh) * | 2021-03-25 | 2021-06-22 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
CN116701246B (zh) * | 2023-05-23 | 2024-05-07 | 合芯科技有限公司 | 一种提升缓存带宽的方法、装置、设备及存储介质 |
-
2007
- 2007-10-31 CN CNB2007100360079A patent/CN100478918C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101149704A (zh) | 2008-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100478918C (zh) | 微处理器中分段高速缓存的设计方法及分段高速缓存 | |
US9684601B2 (en) | Data processing apparatus having cache and translation lookaside buffer | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
CN102841865B (zh) | 高性能缓存系统和方法 | |
JP3618385B2 (ja) | データをバッファリングする方法およびそのシステム | |
KR101533564B1 (ko) | 메모리 내 cpu 캐시 아키텍처 | |
US20150106567A1 (en) | Computer Processor Employing Cache Memory With Per-Byte Valid Bits | |
US6427188B1 (en) | Method and system for early tag accesses for lower-level caches in parallel with first-level cache | |
US20130179633A1 (en) | Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems | |
US5715427A (en) | Semi-associative cache with MRU/LRU replacement | |
US6175898B1 (en) | Method for prefetching data using a micro-TLB | |
CN104487953A (zh) | 用于层次型存储器系统的存储器管理 | |
CN103198026A (zh) | 指令高速缓存功耗降低 | |
JP2016511887A (ja) | 命令処理システムと方法 | |
Wang et al. | Stream floating: Enabling proactive and decentralized cache optimizations | |
JPH04270431A (ja) | データ 処理装置のメモリ システム | |
CN108959125A (zh) | 一种支持数据快速获取的存储访问方法和装置 | |
Lee et al. | A new cache architecture based on temporal and spatial locality | |
US20150193348A1 (en) | High-performance data cache system and method | |
US10198260B2 (en) | Processing instruction control transfer instructions | |
Lee et al. | A selective temporal and aggressive spatial cache system based on time interval | |
Sustran et al. | Dual Data Cache Systems: Architecture and Analysis | |
Chaturvedi et al. | An adaptive coherence protocol with adaptive cache for multi-core architectures | |
Khan | Brief overview of cache memory | |
Chtioui et al. | A dynamic hybrid cache coherency protocol for shared-memory MPSoC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |