CN111381881A - 一种基于ahb总线接口的低功耗指令缓存方法及装置 - Google Patents
一种基于ahb总线接口的低功耗指令缓存方法及装置 Download PDFInfo
- Publication number
- CN111381881A CN111381881A CN202010148175.2A CN202010148175A CN111381881A CN 111381881 A CN111381881 A CN 111381881A CN 202010148175 A CN202010148175 A CN 202010148175A CN 111381881 A CN111381881 A CN 111381881A
- Authority
- CN
- China
- Prior art keywords
- way
- instruction
- data
- cpu
- sram
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种基于AHB总线接口的低功耗指令缓存方法及装置。本申请实施例提供的技术方案通过ICACHE中的多个WAY共用一个SRAM,在CPU发出取指令访问时,先根据上一次访问的WAY预判本次访问的WAY,并从WAY_SRAM中读取对应的WAY中的指令数据,在基于TAG_DATA和CPU访问地址确定对WAY的预判是否正确,若正确则直接返回指令数据,否则再重新读取正确的指令数据。由于指令跳转情况出现的几率较低,对WAY的预判在绝大多数情况下是准确的,在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。
Description
技术领域
本申请实施例涉及缓存技术领域,尤其涉及一种基于AHB总线接口的低功耗指令缓存方法及装置。
背景技术
在MCU芯片中,指令缓存(ICACHE)是使用预取的方式,预判CPU后面将要反复取的指令,提前将其放到SRAM中。由于SRAM的执行速度较快,可以在单个时钟周期内完成,这样在CPU反复取此指令时,整个系统的执行效率将大大增强。
传统ICACHE的设计方法是一个WAY对应一块SRAM,多个WAY将对应多块SRAM,在CPU发起每个取指令操作时,ICACHE同时读取每个WAY对应的SRAM和TAG_SRAM,判断其是否命中和当前指令所处于哪一块WAY_SRAM中,再根据命中结果选择将已经读取出的WAY_SRAM的数据返回给CPU。
此类ICACHE虽能提高系统的执行效率,但是由于每次取指令操作都将同时读取多个WAY_SRAM,将会使MCU芯片的功耗加大。
发明内容
本申请实施例提供一种基于AHB总线接口的低功耗指令缓存方法及装置,以降低MCU芯片的功耗。
在第一方面,本申请实施例提供了一种基于AHB总线接口的低功耗指令缓存方法,包括:
响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;
基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;
若判断正确,直接向CPU返回所述指令数据;
若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
进一步的,所述响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,包括:
响应于CPU的取指令访问,从WAY-REG寄存器中确定上一次访问的WAY信息,所述WAY-REG寄存器记录有上一次CPU取指令访问对应的WAY信息;
基于所述WAY信息,从所述WAY_SRAM中读取对应WAY中的指令数据。
进一步的,所述若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据之后,还包括:
对所述WAY-REG寄存器中记录的WAY信息进行更新。
进一步的,所述对所述WAY-REG寄存器中记录的WAY信息进行更新,包括:
基于WAY_Change_Logic,确定TAG_SRAM中读取出的TAG_DATA所对应的WAY;
基于所述WAY,对所述WAY-REG寄存器中记录的WAY信息进行更新。
进一步的,所述若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据,包括:
若判断错误,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据;
向CPU返回所述指令数据。
进一步的,所述若判断错误,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据,包括:
若判断错误,将HREADY_Logic对AHB总线端的HREADY信号赋值为错判值;
响应于HREADY信号的错判值,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据。
进一步的,所述重新从WAY_SRAM读取对应WAY中的指令数据之后,还包括:
将HREADY_Logic对AHB总线端的HREADY信号恢复为正确值。
在第二方面,本申请实施例提供了一种基于AHB总线接口的低功耗指令缓存装置,包括预判模块、验证模块、第一执行模块和第二执行模块,其中:
预判模块,用于响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;
验证模块,用于基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;
第一执行模块,用于在判断正确时,直接向CPU返回所述指令数据;
第二执行模块,用于在判断错误时,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
在第三方面,本申请实施例提供了一种微控制单元,其特征在于,包括应用于如权利要求1-7任一所述的基于AHB总线接口的低功耗指令缓存方法的CACHE。
在第四方面,本申请实施例提供了一种包含微控制单元可执行指令的存储介质,所述微控制单元可执行指令在由微控制单元处理器执行时用于执行如第一方面所述的基于AHB总线接口的低功耗指令缓存方法。
本申请实施例通过ICACHE中的多个WAY共用一个SRAM,在CPU发出取指令访问时,先根据上一次访问的WAY预判本次访问的WAY,并从WAY_SRAM中读取对应的WAY中的指令数据,在基于TAG_DATA和CPU访问地址确定对WAY的预判是否正确,若正确则直接返回指令数据,否则再重新读取正确的指令数据。由于指令跳转情况出现的几率较低,对WAY的预判在绝大多数情况下是准确的,在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。
附图说明
图1是本申请实施例提供的现有技术中ICACHE的结构简图;
图2是现本申请实施例提供的现有技术中ICACHE的时序图;
图3是本申请实施例提供的一种基于AHB总线接口的低功耗指令缓存方法的流程图;
图4是本申请实施例提供的另一种基于AHB总线接口的低功耗指令缓存方法的流程图;
图5是本申请实施例提供的一种ICACHE的结构示意图;
图6是本申请实施例提供的在WAY_REG预判正确时的时序图;
图7是本申请实施例提供的在WAY_REG预判不正确时的时序图;
图8是本申请实施例提供的一种基于AHB总线接口的低功耗指令缓存装置的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1给出了现有技术中ICACHE的结构简图,其中数据选择器MUX连接有TAG_SRAM以及多个WAY_SRAM,每个WAY_SRAM各与一个WAY对应。现有AHB总线接口的ICACHE设计中含有一个TAG_SRAM和多个WAY_SRAM。TAG_SRAM中存储着各个WAY_SRAM中指令的高位地址,其用来判断当前CPU访问的程序存储器中的地址是否存在于WAY_SRAM中(命中)。在命中情况下,TAG_SRAM中的数据也会指示出当前要访问的地址位于哪个WAY_SRAM中。每个WAY_SRAM中均存储着当前CPU访问低位地址对应的指令。WAY的数量是影响ICACHE命中率的重要指标,通常ICACHE中需要含有多个WAY来存储多段软件程序。现有缓存设计方法中,ICACHE有多少个WAY,则需要相同数量的SRAM与之对应。
当CPU发起取指令操作时,在AHB的地址相位时钟周期内,其同时读取TAG_SRAM和各个WAY_SRAM,由TAG_SRAM读取出的数据来判断当前要取的指令是否存在于WAY_SRAM中。当TAG_DATA指示当前CPU读取地址的指令不在任何一块WAY_SRAM中时,则此次访问未命中,ICACHE发起预取操作,将此次CPU访问的指令数据预存到WAY_SRAM中。当TAG_DATA指示当前CPU读取地址的指令在WAY_SRAM中时,则此次访问命中,由TAG_DATA对每个WAY_SRAM读出的指令数据做MUX选择,将命中的WAY的指令数据返回给CPU。
图2为现有技术中ICACHE的时序图,当CPU通过AHB总线在时钟周期1发起取指令操作,ICACHE在时钟周期1根据CPU访问的地址的低位ADDRL,同时读取TAG_SRAM和各个WAY_SRAM。在时钟周期2,TAG_SRAM读出数据TAG_DATA,WAY0_SRAM读出DATA0,WAY1_SRAM读出DATA1。ICACHE根据TAG_DATA,判断出当前ICACHE是否命中和将要访问的指令位于哪一块WAY_SRAM中,如命中,ICACHE将其返回给CPU,图2中的信号DATA。
通常ICACHE为了能提升其命中率,需要设置多个WAY对多段软件程序进行缓存,所以现有缓存设计方法在每次CPU取指令操作时,ICACHE均要读取多块SRAM。此类ICACHE虽能提高系统的执行效率,但是由于每次取指令操作都将同时读取多个WAY_SRAM,将会使MCU芯片的功耗加大。
图3给出了本申请实施例提供的一种基于AHB总线接口的低功耗指令缓存方法的流程图,本申请实施例提供的基于AHB总线接口的低功耗指令缓存方法可以由基于AHB总线接口的低功耗指令缓存装置来执行,该基于AHB总线接口的低功耗指令缓存装置可以通过硬件和/或软件的方式实现,并集成在微控制单元中。
下述以基于AHB总线接口的低功耗指令缓存装置执行基于AHB总线接口的低功耗指令缓存方法为例进行描述。参考图3,该基于AHB总线接口的低功耗指令缓存方法包括:
S101:响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据。
示例性的,在本实施例中,其中多个所述WAY存储于同一所述WAY_SRAM中,使得多个WAY共享一个WAY_SRAM,即将存储有不同指令数据的多个WAY设置在同一个WAY_SRAM中。
进一步的,在CPU发出取指令访问时,向ICACHE发出带有访问地址的取指令访问。此时,ICACHE响应于CPU的取指令访问预判本次CPU访问地址所对应的WAY,并在WAY_SRAM中读取出储存在该WAY中的指令数据。
示例性的,对CPU取指令访问所对应的WAY的预判可基于上一次CPU取指令访问所对应的WAY进行,即认为本次取指令访问与上一次的取指令访问所对应的WAY一致。由于软件程序在大多数情况下是顺序执行的,指令跳转情况出现的几率较低,一般情况下两次访问的WAY是一样的。
S102:基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确。若预判正确,则跳转至步骤S103,否则,跳转至步骤S104。
具体的,在TAG_SRAM中的数据TAG_DATA存储着各个保存在WAY_SRAM中的指令数据的高位地址以及对应的WAY,其用来判断当前CPU访问的程序存储器中的地址是否存在于WAY_SRAM中。
进一步的,在读取出TAG_SRAM中的TAG_DATA后,在TAG_DATA中查找是否存在与CPU访问地址对应的WAY的信息(指令数据对应的地址),在存在与CPU访问地址对应的WAY的信息时(CPU访问地址命中WAY),认为在步骤S101中对WAY的预判正确,并跳转至步骤S103,否则认为对WAY的预判有误,并跳转至步骤S104。
S103:直接向CPU返回所述指令数据。
具体的,在确定对WAY的预判正确后,认为在步骤S101中从WAY_SRAM中对应WAY读取出的指令数据即为本次CPU取指令访问所要求的指令数据,并将该指令数据返回给CPU。
S104:根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
示例性的,若对WAY的预判错误,即在步骤S101中读取出的指令数据并非本次CPU取指令访问所要求的指令数据,则需要重新读取正确的指令数据。
具体的,根据CPU取指令访问所对应的访问地址,在TAG_DATA中确定与访问地址所对应的WAY(WAY中指令数据的地址与访问地址对应),并在WAY_SRAM中读取对应WAY中的指令数据,并将该指令数据返回给CPU。
上述,通过ICACHE中的多个WAY共用一个SRAM,在CPU发出取指令访问时,先根据上一次访问的WAY预判本次访问的WAY,并从WAY_SRAM中读取对应的WAY中的指令数据,在基于TAG_DATA和CPU访问地址确定对WAY的预判是否正确,若正确则直接返回指令数据,否则再重新读取正确的指令数据。由于指令跳转情况出现的几率较低,对WAY的预判在绝大多数情况下是准确的,在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。
图4为本申请实施例提供的另一种基于AHB总线接口的低功耗指令缓存方法的流程图,该基于AHB总线接口的低功耗指令缓存方法是对上述基于AHB总线接口的低功耗指令缓存方法的具体化。参考图4,该基于AHB总线接口的低功耗指令缓存方法包括:
S201:响应于CPU的取指令访问,从WAY-REG寄存器中确定上一次访问的WAY信息。
其中,所述WAY-REG寄存器记录有上一次CPU取指令访问对应的WAY信息。
具体的,WAY-REG寄存器记录有上一次CPU取指令访问对应的WAY信息,并由WAY_Change_Logic根据每次CPU的取指令访问进行动态更新。示例性的,WAY-REG寄存器中记录的WAY信息可通过上次CPU的取指令访问对应的WAY的编号进行记录。
进一步的,多个WAY存储于同一WAY_SRAM中,使得多个WAY共享一个WAY_SRAM,在读取WAY中的指令数据时,只读取一个WAY_SRAM即可,减少现有技术中读取多个WAY_SRAM而导致芯片功耗过大的情况。
在CPU发出取指令访问后,ICAHCE从WAY_REG寄存器中读取WAY信息,从而根据WAY信息中记录的WAY编号确定上一次CPU取指令访问对应的WAY。
S202:基于所述WAY信息,从所述WAY_SRAM中读取对应WAY中的指令数据。
具体的,根据从WAY_REG中读取出的WAY信息,确定上一次CPU取指令访问对应的WAY的编号,并预判本次CPU需要获取的指令数据与上一次获取的指令数据一致。由于软件程序在大多数情况下是顺序执行的,指令跳转情况出现的几率较低,一般情况下两次访问的WAY是一样的。
进一步的,在预判出需要获取的指令数据对应的WAY后,根据WAY的编号或在WAY_SRAM中的存储地址,从WAY_SRAM中读取保存在该WAY中的指令数据。
S203:基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确。若正确,则跳转至步骤S204,否则,跳转至步骤S205。
具体的,在TAG_SRAM中的数据TAG_DATA存储着各个保存在WAY_SRAM中的指令数据的高位地址以及对应的WAY,其用来判断当前CPU访问的程序存储器中的地址是否存在于WAY_SRAM中。
进一步的,在读取出TAG_SRAM中的TAG_DATA后,在TAG_DATA中查找是否存在与CPU访问地址对应的WAY的信息(指令数据对应的地址),在存在与CPU访问地址对应的WAY的信息时(CPU访问地址命中WAY),认为在步骤S101中对WAY的预判正确,并跳转至步骤S204,否则认为对WAY的预判有误,并跳转至步骤S205。
S204:直接向CPU返回所述指令数据。
具体的,在确定对WAY的预判正确后,认为在步骤S201中从WAY_SRAM中对应WAY读取出的指令数据即为本次CPU取指令访问所要求的指令数据,并将该指令数据返回给CPU,并完成本次取指令访问的操作。
S205:将HREADY_Logic对AHB总线端的HREADY信号赋值为错判值。
示例性的,HREADY_Logic用于设置向AHB总线端输出HREADY信号的信号值,用于指示当前对WAY的预判是否正确。ICACHE根据AHB总线端的HREADY信号可识别当前对WAY的预判是否正确。
例如,可将正确值和错判值分别设置为1和0,即在对WAY的预判正确时,将HREADY信号赋值为1,而在对WAY的预判不正确时,将HREADY信号赋值为0。
S206:响应于HREADY信号的错判值,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据,并向CPU返回所述指令数据。
具体的,在HREADY_Logic将HREADY信号设置为错判值后,ICACHE响应于HREADY信号的错判值,根据本次CPU取指令访问对应的访问地址,在TAG_SRAM中读取出的TGA_DATA中确定CPU所需的指令数据对应的WAY(访问地址与WAY信息对应),并重新从WAY_SRAM读取对应WAY中的指令数据,将该指令数据返回给CPU。
进一步的,在完成指令数据的重新读取后,将HREADY_Logic对AHB总线端的HREADY信号恢复为正确值。
S207:对所述WAY-REG寄存器中记录的WAY信息进行更新。
示例性的,对WAY-REG寄存器中记录的WAY信息进行更新具体包括步骤S2071-S2072:
S2071:基于WAY_Change_Logic,确定TAG_SRAM中读取出的TAG_DATA所对应的WAY。
S2072:基于所述WAY,对所述WAY-REG寄存器中记录的WAY信息进行更新。
具体的,WAY_Change_Logic在ICACHE响应于HREADY信号的错判值重新读取WAY_SRAM中正确的WAY时,根据TAG_SRAM中读取出的TAG_DATA确定所对应的WAY,并对WAY-REG寄存器中记录的WAY信息进行更新,即将WAY信息中记录的WAY编号更新为本次CPU取指令访问所对应的WAY的编号,并完成本次取指令访问的操作。
示例性的,图5为本申请实施例提供的一种ICACHE的结构示意图,其包括TAG_SRAM、HREADY_Logic、WAY_Change_Logic、WAY_REG和WAY_SRAM,HREADY_Logic和WAY_Change_Logic信号连接于TAG_SRAM,HREADY_Logic用于设置向AHB总线端输出HREADY信号的信号值,用于指示当前对WAY的预判是否正确,WAY_Change_Logic经WAY_REG连接于WAY_SRAM,其中WAY_SRAM中设置有多个WAY,每一个WAY储存有不同的指令数据。
如图5所示,在ICACHE中引入了一个WAY_REG寄存器和WAY_Change_Logic。WAY_REG中记录着上次CPU取指令访问的WAY的编号,即记录着上次访问的是哪一个WAY。WAY_Change_Logic在每次CPU取指令时,根据TAG_SRAM中的数据TAG_DATA,动态更新WAY_REG的内容。另外本申请实施例提供的ICACHE中还有HREADY_Logic,其在CPU访问的地址没有存储在上次访问的WAY中时,对AHB总线上的HREADY信号赋值为0,并持续一个CLK。本发明中所有的电路均在CLK的上升沿工作。
本申请实施例提供的ICACHE是使用WAY_REG寄存器对CPU当前访问地址指令所在的WAY进行预判。因为CPU执行指令往往都是顺序执行,指令跳转出现的情况相对顺序执行情况少很多。这样,在ICACHE中,使用WAY_REG保存上次取到的指令所在的WAY的信息,在当前CPU进行取指令访问时,对上次访问同样的WAY进行读取。在WAY_REG预判有误的情况下,即当前访问地址的指令不在上次访问的WAY中时,HREADY_Logic对AHB总线端的HREADY信号赋值为0,并且持续一个CLK,CPU停止一个周期。同时,ICACHE在HREADY为0的时钟周期内,根据已经读取的TAG_DATA再对WAY_SRAM读取一次,读取出正确WAY中的指令数据,并返回给CPU。在WAY_REG预判准确的情况下,本发明的ICACHE和现有技术的ICACHE的效率相同。由于指令跳转情况出现的几率相对较少,则使用WAY_REG进行预判在绝大多数情况下是准确的。这样在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。
进一步的,图6为本申请实施例提供的在WAY_REG预判正确时的时序图。如图6所示,在WAY_REG预判正确时,在CLK时钟周期1,ICACHE同时读取TAG_SRAM和WAY_SRAM。WAY_SRAM读取的WAY是根据WAY_REG中的数据WAY_DATA读取的上次访问的WAY。在时钟周期2,TAG_DATA从TAG_SRAM中读取出来,通过比较图中的ADDR和TAG_DATA,ICACHE判断出WAY_REG预判正确,则将WAY_SRAM中读出的数据DATA直接返回给CPU。
进一步的,图7为本申请实施例提供的在WAY_REG预判不正确时的时序图。如图7所示,在WAY_REG预判不正确时,在时钟周期1,ICACHE同时读取TAG_SRAM和WAY_SRAM。WAY_SRAM读取的WAY是根据WAY_REG中的数据WAY_DATA读取的上次访问的WAY。在时钟周期2,TAG_DATA从TAG_SRAM中读取出来,通过比较图中的ADDR和TAG_DATA,ICACHE判断出WAY_REG预判不正确,则在时钟周期2,HREADY被赋值为0,ICACHE根据TAG_DATA的指示读取正确的WAY中的数据DATA1,并在时钟周期3返回给CPU。在各种应用场景中,CPU取指令大多为顺序操作,故TAG_REG预判在绝大多数的情况下都是准确的,所以本发明所提出的ICACHE较现有技术的ICACHE在效率上大致相同,但是多个WAY共享一块SRAM,有效降低了ICACHE运行时的功耗。
上述,通过ICACHE中的多个WAY共用一个SRAM,在CPU发出取指令访问时,先根据上一次访问的WAY预判本次访问的WAY,并从WAY_SRAM中读取对应的WAY中的指令数据,在基于TAG_DATA和CPU访问地址确定对WAY的预判是否正确,若正确则直接返回指令数据,否则再重新读取正确的指令数据。由于指令跳转情况出现的几率较低,对WAY的预判在绝大多数情况下是准确的,在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。同时,引入WAY_REG寄存器和WAY_Change_Logic,WAY_REG寄存器存储着上次ICACHE命中时访问WAY的信息,其内容可以指示出上次CPU访问时命中的是ICACHE中的哪一个WAY,WAY_Change_Logic在每次CPU取指令时,根据TAG_SRAM中的数据TAG_DATA,动态更新WAY_REG的内容。另外本发明中还有HREADY_Logic,其在CPU访问的地址没有存储在上次访问的WAY中时,对AHB总线上的HREADY信号赋值为0,指导ICACHE重新读取正确的指令数据。
图8是本申请实施例提供的一种基于AHB总线接口的低功耗指令缓存装置的示意图。参考图8,该基于AHB总线接口的低功耗指令缓存装置包括预判模块81、验证模块82、第一执行模块83和第二执行模块84。
其中,预判模块81,用于响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;验证模块82,用于基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;第一执行模块83,用于在判断正确时,直接向CPU返回所述指令数据;第二执行模块84,用于在判断错误时,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
上述,通过ICACHE中的多个WAY共用一个SRAM,在CPU发出取指令访问时,先根据上一次访问的WAY预判本次访问的WAY,并从WAY_SRAM中读取对应的WAY中的指令数据,在基于TAG_DATA和CPU访问地址确定对WAY的预判是否正确,若正确则直接返回指令数据,否则再重新读取正确的指令数据。由于指令跳转情况出现的几率较低,对WAY的预判在绝大多数情况下是准确的,在不影响ICACHE效率的情况下,ICACHE仅仅使用一块WAY_SRAM即可实现多个WAY的功能,有效降低了ICACHE运行时芯片的功耗。
本申请实施例还提供了一种微控制单元,其特征在于,包括应用于上述实施例提供的基于AHB总线接口的低功耗指令缓存方法的CACHE,具备相应的功能和有益效果。
本申请实施例还提供一种包含微控制单元可执行指令的存储介质,所述微控制单元可执行指令在由微控制单元处理器执行时用于执行如上述实施例提供的基于AHB总线接口的低功耗指令缓存方法,该基于AHB总线接口的低功耗指令缓存方法包括:响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;若判断正确,直接向CPU返回所述指令数据;若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;微控制单元系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一微控制单元系统中,或者可以位于不同的第二微控制单元系统中,第二微控制单元系统通过网络(诸如因特网)连接到第一微控制单元系统。第二微控制单元系统可以提供程序指令给第一微控制单元用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同微控制单元系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为微控制单元程序)。
当然,本申请实施例所提供的一种包含微控制单元可执行指令的存储介质,其微控制单元可执行指令不限于如上所述的基于AHB总线接口的低功耗指令缓存方法,还可以执行本申请任意实施例所提供的基于AHB总线接口的低功耗指令缓存方法中的相关操作。
上述实施例中提供的基于AHB总线接口的低功耗指令缓存装置、设备及存储介质可执行本申请任意实施例所提供的基于AHB总线接口的低功耗指令缓存方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于AHB总线接口的低功耗指令缓存方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (10)
1.一种基于AHB总线接口的低功耗指令缓存方法,其特征在于,包括:
响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;
基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;
若判断正确,直接向CPU返回所述指令数据;
若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
2.根据权利要求1所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,包括:
响应于CPU的取指令访问,从WAY-REG寄存器中确定上一次访问的WAY信息,所述WAY-REG寄存器记录有上一次CPU取指令访问对应的WAY信息;
基于所述WAY信息,从所述WAY_SRAM中读取对应WAY中的指令数据。
3.根据权利要求2所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据之后,还包括:
对所述WAY-REG寄存器中记录的WAY信息进行更新。
4.根据权利要求3所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述对所述WAY-REG寄存器中记录的WAY信息进行更新,包括:
基于WAY_Change_Logic,确定TAG_SRAM中读取出的TAG_DATA所对应的WAY;
基于所述WAY,对所述WAY-REG寄存器中记录的WAY信息进行更新。
5.根据权利要求1所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述若判断错误,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据,包括:
若判断错误,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据;
向CPU返回所述指令数据。
6.根据权利要求5所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述若判断错误,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据,包括:
若判断错误,将HREADY_Logic对AHB总线端的HREADY信号赋值为错判值;
响应于HREADY信号的错判值,根据所述TAG_DATA指示的WAY,重新从WAY_SRAM读取对应WAY中的指令数据。
7.根据权利要求6所述的基于AHB总线接口的低功耗指令缓存方法,其特征在于,所述重新从WAY_SRAM读取对应WAY中的指令数据之后,还包括:
将HREADY_Logic对AHB总线端的HREADY信号恢复为正确值。
8.一种基于AHB总线接口的低功耗指令缓存装置,其特征在于,包括预判模块、验证模块、第一执行模块和第二执行模块,其中:
预判模块,用于响应于CPU的取指令访问,对CPU访问地址指令对应的WAY进行预判,并从WAY_SRAM读取对应WAY中的指令数据,其中多个所述WAY存储于同一所述WAY_SRAM中;
验证模块,用于基于TAG_SRAM中读取出的TAG_DATA与CPU访问地址确定对WAY的预判是否正确;
第一执行模块,用于在判断正确时,直接向CPU返回所述指令数据;
第二执行模块,用于在判断错误时,根据TAG_DATA读取对应WAY中的指令数据,并向CPU返回所述指令数据。
9.一种微控制单元,其特征在于,包括应用于如权利要求1-7任一所述的基于AHB总线接口的低功耗指令缓存方法的CACHE。
10.一种包含微控制单元可执行指令的存储介质,其特征在于,所述微控制单元可执行指令在由微控制单元处理器执行时用于执行如权利要求1-7任一所述的基于AHB总线接口的低功耗指令缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010148175.2A CN111381881A (zh) | 2020-03-05 | 2020-03-05 | 一种基于ahb总线接口的低功耗指令缓存方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010148175.2A CN111381881A (zh) | 2020-03-05 | 2020-03-05 | 一种基于ahb总线接口的低功耗指令缓存方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111381881A true CN111381881A (zh) | 2020-07-07 |
Family
ID=71215303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010148175.2A Withdrawn CN111381881A (zh) | 2020-03-05 | 2020-03-05 | 一种基于ahb总线接口的低功耗指令缓存方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381881A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190174A (zh) * | 2021-04-25 | 2021-07-30 | 广芯微电子(广州)股份有限公司 | 一种零等待周期sram的控制方法及装置 |
CN116661695A (zh) * | 2023-06-02 | 2023-08-29 | 灵动微电子(苏州)有限公司 | 一种总线加速方法和装置 |
-
2020
- 2020-03-05 CN CN202010148175.2A patent/CN111381881A/zh not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190174A (zh) * | 2021-04-25 | 2021-07-30 | 广芯微电子(广州)股份有限公司 | 一种零等待周期sram的控制方法及装置 |
CN116661695A (zh) * | 2023-06-02 | 2023-08-29 | 灵动微电子(苏州)有限公司 | 一种总线加速方法和装置 |
CN116661695B (zh) * | 2023-06-02 | 2024-03-15 | 灵动微电子(苏州)有限公司 | 一种总线加速方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9880937B2 (en) | Dynamic set associative cache apparatus for processor and access method thereof | |
CN101111819B (zh) | 用于页内程序计数器相对或绝对地址转移指令的转换后备缓冲器(tlb)访问抑制 | |
US11720365B2 (en) | Path prediction method used for instruction cache, access control unit, and instruction processing apparatus | |
US20080208555A1 (en) | Simulation method and simulation apparatus | |
US8332590B1 (en) | Multi-stage command processing pipeline and method for shared cache access | |
KR102268601B1 (ko) | 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템 | |
US20100011169A1 (en) | Cache memory | |
US20160231935A1 (en) | Memory Configuration Operations for a Computing Device | |
CN104978284A (zh) | 处理器子程序高速缓冲存储器 | |
CN111381881A (zh) | 一种基于ahb总线接口的低功耗指令缓存方法及装置 | |
US20040268045A1 (en) | Cache residency test instruction | |
CN107122128B (zh) | 数据存储 | |
KR20220017403A (ko) | 프로세서의 추론적 예측 실패 복구에서 로드 기반 제어 독립적 (ci) 명령어의 재생 제한 | |
US9817763B2 (en) | Method of establishing pre-fetch control information from an executable code and an associated NVM controller, a device, a processor system and computer program products | |
US9058277B2 (en) | Dynamic evaluation and reconfiguration of a data prefetcher | |
US8667325B2 (en) | Method, apparatus and system for providing memory sparing information | |
US9305614B2 (en) | Memory device with internal combination logic | |
CN106649143B (zh) | 一种访问缓存的方法、装置及电子设备 | |
US10866892B2 (en) | Establishing dependency in a resource retry queue | |
CN115269199A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US20080282029A1 (en) | Structure for dynamic optimization of dynamic random access memory (dram) controller page policy | |
CN111639042B (zh) | 一种预取buffer数据一致性的处理方法及装置 | |
CN109669722B (zh) | 执行内核的指令的方法、调试内核系统的方法和内核系统 | |
US11188406B1 (en) | Detecting execution hazards in offloaded operations | |
CN117270972B (zh) | 指令处理方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200707 |