CN103218205A - 一种循环缓冲装置以及循环缓冲方法 - Google Patents
一种循环缓冲装置以及循环缓冲方法 Download PDFInfo
- Publication number
- CN103218205A CN103218205A CN201310100176XA CN201310100176A CN103218205A CN 103218205 A CN103218205 A CN 103218205A CN 201310100176X A CN201310100176X A CN 201310100176XA CN 201310100176 A CN201310100176 A CN 201310100176A CN 103218205 A CN103218205 A CN 103218205A
- Authority
- CN
- China
- Prior art keywords
- address
- effective
- register
- instruction
- branch
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
本发明实施例公开一种循环缓冲装置以及循环缓冲方法。本发明实施例记录已执行有效循环分支指令地址,并利用当前分支指令地址与已执行有效循环分支指令地址之间的关系实现了应用程序中循环的检测与装载。通过对取指通道的精确控制,本发明实施例能够过滤大部分不必要的指令高速缓冲存储器访问,有效降低了指令高速缓冲存储器的功耗。
Description
技术领域
本发明涉及指令获取领域,具体涉及一种循环缓冲装置以及循环缓冲方法。
背景技术
随着集成电路工艺的飞速发展,嵌入式处理器芯片的速度和集成度都得到了很大的提升,由此带来的功耗问题也越来越突出。大量的能量消耗会降低便携式设备中电池的使用寿命,而且会给处理器的散热和可靠性带来很多问题。作为提高处理器内核取指速度的关键部件,指令高速缓冲存储器(Cache)由于具有很高的访问频率而功耗显著。因此,有效降低指令Cache的功耗对于低功耗嵌入式处理器的设计有着重要意义。
在嵌入式应用程序中,其核心往往是些循环代码,通常不到10%的核心代码占用了90%以上的执行时间。如果将这10%的循环代码放入一个小的缓冲区中供取指之用,而不必频繁访问指令Cache,则可以有效降低指令Cache的功耗。
在1999年8月的低功耗电子学与设计(ISLPED)会议上Lea HwangLee等人发表的文章《Instruction Fetch Energy Reduction Using LoopCaches for Embedded Applications with Small Tight Loops》中提出了一种Loop Cache结构。它的容量比指令Cache小,位于处理器内核和指令Cache之间,其控制器根据一类特殊的短后向跳转指令来检测和装载应用程序中的循环。若处理器内核需要读取的指令处于Loop Cache中,则Loop Cache控制器会关闭指令Cache,并将处理器内核取指通道切换到从Loop Cache中取指。
Loop Cache结构有如下缺点:
(1)不能高效处理循环体内包含分支的情况;
(2)对于嵌套循环,如果Loop Cache控制器决定将最内层循环装载到Loop Cache中,则会出现同一段循环代码重复装载到Loop Cache中的情况。
发明内容
针对现有技术中的上述问题,本发明实施例提供一种循环缓冲装置以及循环缓冲方法。
根据本发明实施例的一个方面,提供了一种循环缓冲装置,所述循环缓冲装置包括循环检测与装载控制模块、状态控制器和数据存储器,所述循环检测与装载控制模块和所述状态控制器相连,所述状态控制器与所述数据存储器相连,其中:所述循环检测与装载控制模块,用于接收输入信号,所述输入信号包括分支偏移高位、分支指令地址、分支目标地址和取指地址,以及用于在有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令时将装载控制信号置为有效,以及在有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令时将装载完成信号置为有效,以及在所述取指地址处于所述数据存储器中循环体地址范围内时将跳入循环信号置为有效,以及在所述取指地址不处于所述数据存储器中循环体地址范围内时将跳出循环信号置为有效;所述状态控制器,用于:在空闲状态下,控制处理器内核从指令高速缓冲存储器中读取指令,以及在检测到所述循环检测与装载控制模块输出的装载控制信号有效时,将状态转换到装载状态,在检测到所述循环检测与装载控制模块输出的跳入循环信号有效时,将状态转换到工作状态;在装载状态下,控制处理器内核从指令高速缓冲存储器中读取指令,将从指令高速缓冲存储器中返回的指令发送给处理器内核的同时写入所述数据存储器中,以及在检测到所述循环检测与装载控制模块输出的装载完成信号有效时,将状态转换到工作状态;在工作状态下,控制处理器内核从所述数据存储器中读取指令,在检测到所述循环检测与装载控制模块输出的跳出循环信号有效时,将状态转换到空闲状态。
根据本发明实施例的又一方面,还提供了一种循环缓冲方法,所述循环缓冲方法用于如第一方面所述的循环缓冲装置,所述循环缓冲方法包括:所述循环检测与装载控制模块接收输入信号,在有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令时将装载控制信号置为有效,以及在有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令时将装载完成信号置为有效,以及在所述取指地址处于所述数据存储器中循环体地址范围内时将跳入循环信号置为有效,以及在所述取指地址不处于所述数据存储器中循环体地址范围内时将跳出循环信号置为有效,所述输入信号包括分支偏移高位、分支指令地址、分支目标地址和取指地址;所述状态控制器,在空闲状态下,控制处理器内核从指令高速缓冲存储器中读取指令,以及在检测到所述循环检测与装载控制模块输出的装载控制信号有效时,将状态转换到装载状态,在检测到所述循环检测与装载控制模块输出的跳入循环信号有效时,将状态转换到工作状态;在装载状态下,控制处理器内核从指令高速缓冲存储器中读取指令,将从指令高速缓冲存储器中返回的指令发送给处理器内核的同时写入所述数据存储器中,以及在检测到所述循环检测与装载控制模块输出的装载完成信号有效时,将状态转换到工作状态;在工作状态下,控制处理器内核从所述数据存储器中读取指令,在检测到所述循环检测与装载控制模块输出的跳出循环信号有效时,将状态转换到空闲状态。
本发明实施例记录已执行有效循环分支指令地址,并利用当前分支指令地址与已执行有效循环分支指令地址之间的关系实现了应用程序中循环的检测与装载。通过对取指通道的精确控制,本发明实施例能够过滤大部分不必要的指令高速缓冲存储器访问,有效降低了指令高速缓冲存储器的功耗。
附图说明
下面将参照附图对本发明的具体实施方案进行更详细的说明,在附图中:
图1是本发明实施例的循环缓冲应用场景示意图;
图2是本发明实施例的循环缓冲工作流程示意图;
图3是本发明实施例涉及的指令代码结构示意图。
具体实施方式
鉴于现有技术存在的问题,本发明实施例记录已执行有效循环分支指令地址,并利用当前分支指令地址与已执行有效循环分支指令地址之间的关系实现了应用程序中循环的检测与装载。通过对取指通道的精确控制,本发明实施例能够过滤大部分不必要的指令高速缓冲存储器访问,有效降低了指令高速缓冲存储器的功耗。
下面结合附图和具体实施例对本发明进行详细、清楚、完整的说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明的原理图如图1所示。它主要由循环检测与装载控制模块、状态控制器和数据存储器组成。循环检测与装载控制模块主要包括控制寄存器、五个比较单元和分支计数器。循环检测与装载控制模块的输入有分支偏移高位、分支指令地址、分支目标地址、取指地址。
下面介绍一下循环检测与装载控制模块中各个部分的基本功能:
控制寄存器包括第一寄存器、第二寄存器以及第三寄存器,具体地:
第一寄存器:用于存储有效循环分支指令地址;
第二寄存器:用于存储循环缓冲中(数据存储器中)循环首地址;
第三寄存器:用于存储循环缓冲中(数据存储器中)循环尾地址。
五个比较单元包括第一至第五比较单元,具体地:
第一比较单元:用于判断输入的分支偏移高位是否全为1;
第二比较单元:用于判断输入的分支指令地址是否与第一寄存器的值相等;
第三比较单元:用于判断分支计数器输出是否为1,若是,则输出的装载控制信号有效;
第四比较单元:用于判断分支计数器输出是否为2,若是,则输出的装载完成信号有效;
第五比较单元:用于判断输入的取指地址是否处于第二寄存器的值与第三寄存器的值之间,若是,则输出的跳入循环信号有效;若不是,则输出的跳出循环信号有效。
分支计数器
用于记录输入的分支指令地址连续命中第一寄存器的次数。若输入的分支指令地址与第一寄存器的值相等,则表示该分支指令地址命中。
下面介绍一下本发明的工作原理:
循环缓冲中数据存储器深度为2w,能够容纳2w条指令;分支指令中分支偏移量位宽为K,则分支偏移高位为分支偏移量高(K-W)位。当分支偏移高位全为1时,可以保证分支偏移量小于或等于2w,若该分支指令被确定为循环分支指令,则该循环体内包含的指令数一定小于或等于2w,即小于或等于循环缓冲的容量。这样可以确保装载到循环缓冲的循环大小不会超过循环缓冲的容量。
循环检测与装载控制模块的工作原理:若有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令,则开始装载循环;若有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令,则循环装载完成。
具体地,在应用程序执行过程中,遇到分支指令时,如果检测到分支偏移高位为-1,即它的每一位都为1,则将该分支指令作为有效循环分支指令,此时第一比较单元输出的有效循环分支信号有效。如果该分支指令地址与第一寄存器中的值相等,则第二比较单元输出的命中信号有效,分支计数器加1;否则将该分支指令地址存储到第一寄存器中,并将分支计数器清零。如果检测到分支偏移高位不为-1,即该分支指令不为有效循环分支指令,则分支计数器清零,第一寄存器清零。若分支计数器的值为1,即有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令,则开始装载循环,此时第三比较单元输出的装载控制信号有效;若分支计数器的值为2,即有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令,则循环装载完成,此时第四比较单元输出的装载完成信号有效。循环装载完成后,循环检测与装载控制模块会将分支目标地址(循环首地址)和分支指令地址(循环尾地址)分别存储到第二寄存器和第三寄存器中。
如果检测到取指地址处于循环缓冲中循环体的地址范围内,则第五比较单元输出的跳入循环信号有效;如果检测到取指地址不处于循环缓冲中循环体的地址范围内,则第五比较单元输出的跳出循环信号有效。
状态控制器的工作过程:当循环缓冲不工作时,状态控制器处于空闲状态,此时处理器内核从指令Cache中读取指令。当循环检测与装载控制模块输出的装载控制信号有效时,状态机从空闲状态转换到装载状态开始装载循环;在装载状态,处理器内核从指令Cache中读取指令,从指令Cache中返回的指令发送给处理器内核的同时写入循环缓冲中。当循环检测与装载控制模块输出的装载完成信号有效时,循环装载完成,状态机从装载状态装换到工作状态,此时状态控制器会发送禁能信号关闭指令Cache,处理器内核直接从循环缓冲中读取指令。当循环检测与装载控制模块输出的跳出循环信号有效时,状态机从工作状态装换到空闲状态,处理器内核开始从指令Cache中读取指令。
在装载状态,如果执行了其他的分支指令,此时循环检测与控制模块输出的装载信号无效,则状态机从装载状态转换到空闲状态。
在工作状态,如果满足下列条件之一:
执行了其他的分支指令且分支目标地址不处于循环缓冲中循环体的地址范围内;
循环缓冲中循环执行完成;
则状态机从工作状态装换到空闲状态。
在空闲状态,如果检测到分支指令的分支目标地址处于循环缓冲中循环体的地址范围内,则状态机从空闲状态装换到工作状态。
对于嵌套循环的情况,如果循环检测与装载控制模块决定将最内层循环装载到循环缓冲中,则本发明不会出现重复装载的情况。因为在第一次装载完成后,第二寄存器和第三寄存器已经分别存储了该嵌套循环中最内层循环的首地址和尾地址,所以在后面执行该嵌套循环中最内层循环时,循环检测与装载控制模块会检测到该循环分支指令的分支目标地址处于循环缓冲中循环体的地址范围内,处理器内核直接从循环缓冲中读取指令。
图2简洁地展示了本发明的工作流程。参见图2,本发明的工作流程包括:
开始步骤,程序执行过程中,遇到分支指令;
步骤200,判断分支指令是否为有效循环分支指令,在判断结果为否时,进入步骤202,在判断结果为是时,进入步骤204;
步骤202,将分支计数器清零,将第一寄存器的数值清零,停止装载循环;
步骤204,判断分支目标地址是否处于循环体地址范围内,在判断结果为否时进入步骤206,在判断结果为是时进入步骤218;
步骤206,判断分支指令地址是否命中,在判断结果为否时进入步骤208,否则进入步骤210;
步骤208,将分支指令地址存储到第一寄存器,将分支计数器清零,停止装载循环;
步骤210,将分支计数器的值增1;
步骤212,判断分支计数器的值是否为1,在判断结果为是时进入步骤214,否则进入步骤216;
步骤214,开始装载循环;
步骤216,完成循环装载;
步骤218,从循环缓冲中读取指令,进入步骤220;
步骤220,判断取指地址是否不处于循环体地址范围内,在判断结果为是时,进入步骤222,否则返回步骤218;
步骤222,循环缓冲停止工作。
下面通过一个简单的例子来说明本发明的具体应用。假设处理器内核一次取一条指令,循环缓冲中数据存储器深度为25=32(w=5),能够容纳32条指令;分支指令中分支偏移量位宽为21bits,跳转范围大致为-4MB~+4MB;分支偏移高位为分支偏移量高(21-5=16)位。指令代码结构如图3所示。
在图3a中,当程序执行到BRANCH1时,由于循环LOOP1的循环体大于32,因此分支指令J的分支偏移高位不为-1,即该分支指令不为有效循环分支指令,分支计数器清零,第一寄存器清零。此时状态控制器处理空闲状态,处理器内核从指令Cache中读取指令。
在图3b中,当程序执行到BRANCH2时,由于循环LOOP2的循环体小于32,因此分支指令J的分支偏移高位为-1,即该分支指令为有效循环分支指令,第一比较单元输出的有效循环分支信号有效。由于程序是第一次执行到BRANCH2,因此该分支指令地址与第一寄存器的值不相等。循环检测与装载控制模块会将该分支指令地址存储到第一寄存器中,并将分支计数器清零。当程序第二次执行到BRANCH2时,第一比较单元输出的有效循环分支信号有效,第二比较单元输出的命中信号有效,分支计数器加1。此时分支计数器的值为1,第三比较单元输出的装载控制信号有效,状态机从空闲状态转换到装载状态开始装载循环,处理器内核从指令Cache中读取指令,从指令Cache中返回的指令发送给处理器内核的同时存入循环缓冲中。当程序第三次执行到BRANCH2时,第一比较单元输出的有效循环分支信号有效,第二比较单元输出的命中信号有效,分支计数器加1。此时分支计数器的值为2,第四比较单元输出的装载完成信号有效,循环检测与装载控制模块将循环首地址和循环尾地址分别存储在第二寄存器和第三寄存器中;状态机从装载状态装换到工作状态,此时状态控制器会发送禁能信号关闭指令Cache,处理器内核直接从循环缓冲中读取指令。当LOOP2执行完成时,第五比较单元输出的跳出循环信号有效,状态机从工作状态装换到空闲状态,处理器内核开始从指令Cache中读取指令。
在图3c中,当程序执行到BRANCH4时,由于循环LOOP3的循环体小于32,因此LOOP3的检测与装载过程与图3b中的过程相同,只是可能会出现装载过程中执行BRANCH3的情况。如果在装载过程中执行了BRANCH3,则停止装载循环,分支计数器清零,第一寄存器清零,状态机从装载状态转换到空闲状态,重新开始检测有效循环分支指令。当循环缓冲处于工作状态,如果执行了BRANCH3,由于分支目标地址LABEL1不处于LOOP3的地址范围内,因此第五比较单元输出的跳出循环信号有效,状态机从工作状态装换到空闲状态,循环缓冲停止工作,处理器内核开始从指令Cache中读取指令。在空闲状态,当程序执行到BRANCH5,由于分支目标地址LABEL2处于循环缓冲中循环体的地址范围内,因此第五比较单元输出的跳入循环信号有效,状态机从空闲状态装换到工作状态,处理器内核直接从循环缓冲中读取指令。当LOOP3执行完成时,第五比较单元输出的跳出循环信号有效,状态机从工作状态转换到空闲状态,处理器内核开始从指令Cache中读取指令。
在图3d中,当程序执行到BRANCH7时,由于循环LOOP7的循环体小于32,因此LOOP7的检测与装载过程与图3b中的过程相同。在第一次装载完成后,LOOP7的首地址和尾地址已经分别存储在第二寄存器和第三寄存器中。当LOOP7第一次执行完成时,状态机从工作状态转换到空闲状态,处理器内核从指令Cache中读取指令。在LOOP7第二次执行过程中,当程序执行到BRANCH7时,由于分支目标地址处于LOOP7的地址范围内,因此第五比较单元输出的跳入循环信号有效,状态机从空闲状态装换到工作状态,处理器内核直接从循环缓冲中读取指令。
通过上面的例子可以发现本发明实施例能够减少指令Cache的访问次数,从而可以有效降低指令Cache的功耗。
在本申请所提供的几个实施例中,本领域技术人员应该理解到,所揭露的装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块、器件可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个集成模块中。上述模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
显而易见,在不偏离本发明的真实精神和范围的前提下,在此描述的本发明可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本发明权利要求书所涵盖的范围之内。本发明所要求保护的范围由所述的权利要求书进行限定。
Claims (10)
1.一种循环缓冲装置,所述循环缓冲装置包括循环检测与装载控制模块、状态控制器和数据存储器,所述循环检测与装载控制模块和所述状态控制器相连,所述状态控制器与所述数据存储器相连,其特征在于:
所述循环检测与装载控制模块,用于接收输入信号,所述输入信号包括分支偏移高位、分支指令地址、分支目标地址和取指地址,以及用于在有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令时将装载控制信号置为有效,以及在有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令时将装载完成信号置为有效,以及在所述取指地址处于所述数据存储器中循环体地址范围内时将跳入循环信号置为有效,以及在所述取指地址不处于所述数据存储器中循环体地址范围内时将跳出循环信号置为有效;
所述状态控制器,用于:
在空闲状态下,控制处理器内核从指令高速缓冲存储器中读取指令,以及在检测到所述循环检测与装载控制模块输出的装载控制信号有效时,将状态转换到装载状态,在检测到所述循环检测与装载控制模块输出的跳入循环信号有效时,将状态转换到工作状态;
在装载状态下,控制处理器内核从指令高速缓冲存储器中读取指令,将从指令高速缓冲存储器中返回的指令发送给处理器内核的同时写入所述数据存储器中,以及在检测到所述循环检测与装载控制模块输出的装载完成信号有效时,将状态转换到工作状态;
在工作状态下,控制处理器内核从所述数据存储器中读取指令,在检测到所述循环检测与装载控制模块输出的跳出循环信号有效时,将状态转换到空闲状态。
2.根据权利要求1所述的循环缓冲装置,其特征在于,所述循环检测与装载控制模块包括第一寄存器、第二寄存器、第三寄存器、第一比较单元、第二比较单元、第三比较单元、第四比较单元、第五比较单元和分支计数器,其中:
所述第一寄存器,用于存储有效循环分支指令地址;
所述第二寄存器,用于存储所述数据存储器中循环首地址;
所述第三寄存器,用于存储所述数据存储器中循环尾地址;
所述第一比较单元,用于判断所述分支偏移高位是否全为1,并将判断结果发送给所述第二比较单元;
所述第二比较单元,用于判断所述分支指令地址是否与所述第一寄存器的值相等,并将判断结果发送给所述分支计数器;
所述第三比较单元,用于判断所述分支计数器输出是否为1,若是,则输出的装载控制信号有效;
所述第四比较单元,用于判断所述分支计数器输出是否为2,若是,则输出的装载完成信号有效;
所述第五比较单元,用于判断所述取指地址是否处于所述第二寄存器的值与所述第三寄存器的值之间,若是,则输出的跳入循环信号有效;若不是,则输出的跳出循环信号有效;
所述分支计数器,用于记录所述分支指令地址连续命中所述第一寄存器的次数,所述命中是指所述分支指令地址与所述第一寄存器的值相等。
3.根据权利要求1或2所述的循环缓冲装置,其特征在于,所述循环检测与装载控制模块在装载完成信号有效时将所述分支目标地址作为所述数据存储器中循环首地址写入所述第二寄存器中,将所述分支指令地址作为所述数据存储器中循环尾地址写入所述第三寄存器中。
4.根据权利要求1或2所述的循环缓冲装置,其特征在于,所述有效循环分支指令是指所述分支偏移高位全为1的分支指令。
5.根据权利要求1或2所述的循环缓冲装置,其特征在于,所述分支偏移高位的位宽根据分支偏移量的位宽和指令高速缓冲存储器的容量来确定。
6.一种循环缓冲方法,所述循环缓冲方法用于如权利要求1至5之一所述的循环缓冲装置,其特征在于,所述循环缓冲方法包括:
所述循环检测与装载控制模块接收输入信号,在有效循环分支指令第二次执行且第一次执行与第二次执行期间没有执行其他的分支指令时将装载控制信号置为有效,以及在有效循环分支指令第三次执行且第二次执行与第三次执行期间没有执行其他的分支指令时将装载完成信号置为有效,以及在所述取指地址处于所述数据存储器中循环体地址范围内时将跳入循环信号置为有效,以及在所述取指地址不处于所述数据存储器中循环体地址范围内时将跳出循环信号置为有效,所述输入信号包括分支偏移高位、分支指令地址、分支目标地址和取指地址;
所述状态控制器,在空闲状态下,控制处理器内核从指令高速缓冲存储器中读取指令,以及在检测到所述循环检测与装载控制模块输出的装载控制信号有效时,将状态转换到装载状态,在检测到所述循环检测与装载控制模块输出的跳入循环信号有效时,将状态转换到工作状态;
在装载状态下,控制处理器内核从指令高速缓冲存储器中读取指令,将从指令高速缓冲存储器中返回的指令发送给处理器内核的同时写入所述数据存储器中,以及在检测到所述循环检测与装载控制模块输出的装载完成信号有效时,将状态转换到工作状态;
在工作状态下,控制处理器内核从所述数据存储器中读取指令,在检测到所述循环检测与装载控制模块输出的跳出循环信号有效时,将状态转换到空闲状态。
7.根据权利要求6所述的循环缓冲方法,其特征在于,所述循环检测与装载控制模块包括第一寄存器、第二寄存器、第三寄存器、第一比较单元、第二比较单元、第三比较单元、第四比较单元、第五比较单元和分支计数器,其中:
所述第一寄存器,用于存储有效循环分支指令地址;
所述第二寄存器,用于存储所述数据存储器中循环首地址;
所述第三寄存器,用于存储所述数据存储器中循环尾地址;
所述第一比较单元,用于判断所述分支偏移高位是否全为1,并将判断结果发送给所述第二比较单元;
所述第二比较单元,用于判断所述分支指令地址是否与所述第一寄存器的值相等,并将判断结果发送给所述分支计数器;
所述第三比较单元,用于判断所述分支计数器输出是否为1,若是,则输出的装载控制信号有效;
所述第四比较单元,用于判断所述分支计数器输出是否为2,若是,则输出的装载完成信号有效;
所述第五比较单元,用于判断所述取指地址是否处于所述第二寄存器的值与所述第三寄存器的值之间,若是,则输出的跳入循环信号有效;若不是,则输出的跳出循环信号有效;
所述分支计数器,用于记录所述分支指令地址连续命中所述第一寄存器的次数,所述命中是指所述分支指令地址与所述第一寄存器的值相等。
8.根据权利要求6或7所述的循环缓冲方法,其特征在于,所述循环检测与装载控制模块在装载完成信号有效时将所述分支目标地址作为所述数据存储器中循环首地址写入所述第二寄存器中,将所述分支指令地址作为所述数据存储器中循环尾地址写入所述第三寄存器中。
9.根据权利要求6或7所述的循环缓冲方法,其特征在于,所述有效循环分支指令是指所述分支偏移高位全为1的分支指令。
10.根据权利要求6或7所述的循环缓冲方法,其特征在于,所述分支偏移高位的位宽根据分支偏移量的位宽和指令高速缓冲存储器的容量来确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310100176.XA CN103218205B (zh) | 2013-03-26 | 2013-03-26 | 一种循环缓冲装置以及循环缓冲方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310100176.XA CN103218205B (zh) | 2013-03-26 | 2013-03-26 | 一种循环缓冲装置以及循环缓冲方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218205A true CN103218205A (zh) | 2013-07-24 |
CN103218205B CN103218205B (zh) | 2015-09-09 |
Family
ID=48816045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310100176.XA Expired - Fee Related CN103218205B (zh) | 2013-03-26 | 2013-03-26 | 一种循环缓冲装置以及循环缓冲方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103218205B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105242904A (zh) * | 2015-09-21 | 2016-01-13 | 中国科学院自动化研究所 | 用于处理器指令缓冲与循环缓冲的装置及其操作方法 |
CN107368287A (zh) * | 2017-06-12 | 2017-11-21 | 北京中科睿芯科技有限公司 | 一种数据流结构循环依赖的加速系统、加速装置及其加速方法 |
CN109656838A (zh) * | 2015-12-18 | 2019-04-19 | 杭州士兰微电子股份有限公司 | 处理器系统及其存储器控制方法 |
CN112698715A (zh) * | 2020-12-17 | 2021-04-23 | 北京科银京成技术有限公司 | 一种执行控制方法、装置、嵌入式系统、设备及介质 |
CN113407240A (zh) * | 2021-07-07 | 2021-09-17 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
CN113900974A (zh) * | 2021-12-07 | 2022-01-07 | 睿思芯科(深圳)技术有限公司 | 一种存储装置、数据存储方法及相关设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012006046A1 (en) * | 2010-06-28 | 2012-01-12 | Qualcomm Incorporated | Methods and apparatus for changing a sequential flow of a program using advance notice techniques |
CN102799529A (zh) * | 2012-07-13 | 2012-11-28 | 北京航空航天大学 | 一种动态的二进制代码测试用例生成方法 |
-
2013
- 2013-03-26 CN CN201310100176.XA patent/CN103218205B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012006046A1 (en) * | 2010-06-28 | 2012-01-12 | Qualcomm Incorporated | Methods and apparatus for changing a sequential flow of a program using advance notice techniques |
CN102799529A (zh) * | 2012-07-13 | 2012-11-28 | 北京航空航天大学 | 一种动态的二进制代码测试用例生成方法 |
Non-Patent Citations (1)
Title |
---|
王琪等: "可复用微处理器片上调试功能的设计与实现", 《计算机辅助设计与图形学学报》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105242904A (zh) * | 2015-09-21 | 2016-01-13 | 中国科学院自动化研究所 | 用于处理器指令缓冲与循环缓冲的装置及其操作方法 |
CN105242904B (zh) * | 2015-09-21 | 2018-05-18 | 中国科学院自动化研究所 | 用于处理器指令缓冲与循环缓冲的装置及其操作方法 |
CN109656838A (zh) * | 2015-12-18 | 2019-04-19 | 杭州士兰微电子股份有限公司 | 处理器系统及其存储器控制方法 |
CN107368287A (zh) * | 2017-06-12 | 2017-11-21 | 北京中科睿芯科技有限公司 | 一种数据流结构循环依赖的加速系统、加速装置及其加速方法 |
CN107368287B (zh) * | 2017-06-12 | 2020-11-13 | 北京中科睿芯科技有限公司 | 一种数据流结构循环依赖的加速系统、加速装置及其加速方法 |
CN112698715A (zh) * | 2020-12-17 | 2021-04-23 | 北京科银京成技术有限公司 | 一种执行控制方法、装置、嵌入式系统、设备及介质 |
CN112698715B (zh) * | 2020-12-17 | 2023-07-04 | 北京科银京成技术有限公司 | 一种执行控制方法、装置、嵌入式系统、设备及介质 |
CN113407240A (zh) * | 2021-07-07 | 2021-09-17 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
CN113407240B (zh) * | 2021-07-07 | 2022-09-09 | 浙江大学 | 一种C64x+ DSP软件流水循环缓冲机制的模拟方法 |
CN113900974A (zh) * | 2021-12-07 | 2022-01-07 | 睿思芯科(深圳)技术有限公司 | 一种存储装置、数据存储方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103218205B (zh) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218205A (zh) | 一种循环缓冲装置以及循环缓冲方法 | |
KR101975288B1 (ko) | 멀티 클러스터 프로세싱 시스템 및 그 구동 방법 | |
US12050536B2 (en) | Apparatuses and methods for compute enabled cache | |
US10157019B2 (en) | Apparatuses and methods for data transfer from sensing circuitry to a controller | |
US10915263B2 (en) | Apparatuses and methods for partitioned parallel data movement | |
KR102447788B1 (ko) | 신경망을 동작시키기 위한 장치 및 방법 | |
WO2018156410A1 (en) | Apparatuses and methods for in-memory operations | |
JP6047196B2 (ja) | メモリを制御するためのシステム、装置、メモリコントローラ、および方法 | |
JP5669951B2 (ja) | コピーバック動作 | |
WO2017165273A1 (en) | Apparatuses and methods for cache operations | |
WO2017222870A1 (en) | Bank to bank data transfer | |
WO2016126478A1 (en) | Apparatuses and methods for memory device as a store for program instructions | |
CN110021314B (zh) | 用于执行存储器操作的设备和操作存储器装置的方法 | |
Matsunaga et al. | Fabrication of a 99%-energy-less nonvolatile multi-functional CAM chip using hierarchical power gating for a massively-parallel full-text-search engine | |
CN105389269A (zh) | 数据存储装置、包括其的数据处理系统及其操作方法 | |
CN104991736A (zh) | 写数据方法、装置以及存储设备 | |
CN104834483A (zh) | 一种提升嵌入式mcu性能的实现方法 | |
CN103412848A (zh) | 一种四核处理器系统共享单一程序存储器的方法 | |
CN104035898A (zh) | 一种基于vliw类型处理器的访存系统 | |
JP2008077625A (ja) | ユーザ定義の拡張演算を処理する演算システムおよび方法 | |
CN204270293U (zh) | 多通道Flash控制器 | |
CN101866213B (zh) | Spm-dma结构的嵌入式系统的节能方法 | |
CN104391563A (zh) | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 | |
CN102591793B (zh) | 辅助上位机检索页映射单元块中空闲块的装置 | |
CN105843360A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150909 Termination date: 20200326 |
|
CF01 | Termination of patent right due to non-payment of annual fee |