一种微控制器高速缓存的方法和装置
技术领域
本发明属于微控制器技术领域,尤其涉及一种微控制器高速缓存的方法和装置。
背景技术
随着工艺水平的不断进步,芯片的集成度越来越高,微控制器的处理速度也越来越快。在设计基于flash存储器的微控制器时,由于flash存储器的工作频率只能达到20~30MHZ,其运行速度制约了微控制器读取指令数据的速度。现有技术通过在微控制器与flash存储器之间增加高速缓存器,可提高微控制器读取指令数据的速度。然而,现有技术中高速缓存器不具有灵活使用性,微控制器从高速缓存器中读取指令数据命中率低。
故,有必要提出一种新的技术方案,以解决上述技术问题。
发明内容
鉴于此,本发明实施例提供一种微控制器高速缓存的方法和装置,旨在解决现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
本发明实施例的第一方面,提供一种微控制器高速缓存的方法,所述方法包括:
获取指令数据的地址信息;
检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
当SRAM中不存在所述指令数据的地址信息时,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
本发明实施例的第二方面,提供一种微控制器高速缓存的装置,所述装置包括:
获取模块,用于获取指令数据的地址信息;
检测模块,用于检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
处理模块,用于当SRAM中不存在所述指令数据的地址信息时,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例获取指令数据的地址信息,检测静态随机存取存储器(Static Random Access Memory,SRAM)中是否存在所述指令数据的地址信息,当SRAM中不存在所述指令数据的地址信息时,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,当微控制器再次读取相同的指令数据时,就不再需要从flash存储器中读取所述指令数据,而是直接从高速缓存器中高速读取所述指令数据,从而有效解决了现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的微控制器高速缓存的方法的实现流程图;
图2是本发明实施例二提供的微控制器高速缓存的方法的实现流程图;
图3是本发明实施例三提供的微控制器高速缓存的装置的组成示意图;
图4是本发明实施例四提供的微控制器高速缓存的装置的组成示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
图1示出了本发明实施例一提供的微控制器高速缓存的方法的实现流程,所述实现流程详述如下:
在步骤S101中,获取指令数据的地址信息;
在本发明实施例中,微控制器在读取指令数据时,向高速缓存器发送所述指令数据的地址信息,以判断高速缓存器中是否已缓存所述指令数据。
在步骤S102中,检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
在本发明实施例中,SRAM用于存储已缓存在高速缓存器中的指令数据的地址信息。
示例性的,采用4K字节的高速缓存器,4K字节即1K字,若高速缓存器一次缓存4个字,即需要存储256个地址信息,一个地址信息是24bit,则需要128*48大小的带有bit位写操作的SRAM用于存储地址信息。在清除地址信息时可以采用软件程序进行全清除,也可以进行单个地址的清除操作。
在步骤S103中,当SRAM中不存在所述指令数据的地址信息时,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
优选的是,N为4。
示例性的,高速缓存器与flash存储器的频率比是6:1,则在高速缓存器的第六个周期,flash将hready信号拉高,表示完成从flash存储器中读取4个字的数据的操作。在一次高速缓存操作中,会将连续的4个字的数据存储到高速缓存器中,其中向所述微控制器返回一个字的所述指令数据,另外3个字的数据提前存储到高速缓存器中。
进一步的,所述从flash存储器中读取N个字的数据之前,还包括:
当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号。
进一步的,本发明实施例还包括:
当SRAM中存在所述指令数据的地址信息时,根据该地址信息,从高速缓存器中读取对应的指令数据。
其中,微控制器和高速缓存器都运行在高频上,flash存储器工作在较低的工艺频率上,微控制器从高速缓存器中读取所述指令数据,提高了读取指令数据的速度。
进一步的,高速缓存器的总容量是可配置的,根据不同的应用,flash存储器的大小,可计算出需要高速缓存器的大小。
示例性的,在电机驱动中,所有的程序大小为16K字节,从所有的程序中调用的算法程序大小为3K字节,若要将大小为3K字节的调用的算法程序全部存储到高速缓存器中,可采用大小为4K字节的高速缓存器。
本发明实施例通过获取指令数据的地址信息,检测SRAM中是否存在所述指令数据的地址信息,当SRAM中不存在所述指令数据的地址信息时,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,当微控制器再次读取相同的指令数据时,就不再需要从flash存储器中读取所述指令数据,而是直接从高速缓存器中高速读取所述指令数据,从而有效解决了现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
实施例二:
图2示出了本发明实施例二提供的微控制器高速缓存的方法的实现流程,所述实现流程详述如下
在步骤S201中,设置多个用于配置所述高速缓存器的地址空间的地址控制寄存器;
本发明实施例中,多个地址控制寄存器用于配置所述高速缓存器的地址空间,将flash存储器中的指令数据的地址信息分配在高速缓存器的地址空间,用于判断所述指令数据是否需要缓存,例如其中一个地址控制寄存器将高速缓存器的地址空间配置为100~4ff,则任何属于这个地址区间的地址信息的指令数据都可以进行缓存。
在步骤S202中,控制使能寄存器将高速缓存器的使能位配置为1,以开启高速缓存器的高速缓存功能;
在本发明实施例中,当高速缓存器的使能位配置为0时,微控制器直接从flash存储器中读取指令数据。
在步骤S203中,获取指令数据的地址信息;
在本发明实施例中,微控制器在读取指令数据时,向高速缓存器发送所述指令数据的地址信息,以判断所述指令数据是否需要缓存。
在步骤S204中,判断所述地址控制寄存器中是否存在所述指令数据的地址信息,若是,则检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
在本发明实施例中,判断所述地址控制寄存器中是否存在所述指令数据的地址信息,是判断所述指令数据是否需要进行缓存。
在步骤S205中,检测SRAM中是否存在所述指令数据的地址信息;
进一步的,检测SRAM中是否存在所述指令数据的地址信息,是判断所述指令数据是否已缓存在高速缓存器中,SRAM用于存储已缓存在高速缓存器中的指令数据的地址信息。
示例性的,采用4K字节的高速缓存器,4K字节即1K字,若高速缓存器一次缓存4个字,即需要存储256个地址信息,一个地址信息是24bit,则需要128*48大小的带有bit位写操作的SRAM用于存储地址信息。在清楚地址信息时可以采用软件程序进行全清除,也可以进行单个地址的清除操作。
在步骤S206中,当SRAM中不存在所述指令数据的地址信息时,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
优选的是,N为4。
示例性的,高速缓存器与flash存储器的频率比是6:1,则在高速缓存器的第六个周期,flash将hready信号拉高,表示完成从flash存储器中读取4个字的数据的操作。在一次高速缓存操作中,会将连续的4个字的数据存储到高速缓存器中,其中向所述微控制器返回一个字的所述指令数据,另外3个字的数据提前存储到高速缓存器中。
进一步的,所述从flash存储器中读取N个字的数据之前,还包括:
当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号。
进一步的,本发明实施例还包括:
当SRAM中存在所述指令数据的地址信息时,根据该地址信息,从高速缓存器中读取对应的指令数据。
其中,微控制器和高速缓存器都运行在高频上,flash存储器工作在较低的工艺频率上,微控制器从高速缓存器中读取所述指令数据,提高了读取指令数据的速度。
进一步的,高速缓存器的总容量是可配置的,根据不同的应用,flash存储器的大小,可计算出需要高速缓存器的大小。
示例性的,在电机驱动中,所有的程序大小为16K字节,从所有的程序中调用的算法程序大小为3K字节,若要将大小为3K字节的调用的算法程序全部存储到高速缓存器中,可采用大小为4K字节的高速缓存器。
本发明实施例通过设置多个用于配置所述高速缓存器的地址空间的地址控制寄存器,控制使能寄存器将高速缓存器的使能位配置为1,以开启高速缓存器的高速缓存功能,获取指令数据的地址信息,判断所述地址控制寄存器中是否存在所述指令数据的地址信息,若是,则检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息,当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,当微控制器再次读取相同的指令数据时,就不再需要从flash存储器中读取所述指令数据,而是直接从高速缓存器中高速读取所述指令数据,从而有效解决了现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
实施例三:
图3示出了本发明实施例三提供的微控制器高速缓存的装置的组成示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
获取模块301,用于获取指令数据的地址信息;
检测模块302,用于检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
处理模块303,用于当SRAM中不存在所述指令数据的地址信息时,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
优选的是,N为4。
进一步的,处理模块303还用于:
当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号。
进一步的,处理模块303还用于:
当SRAM中存在所述指令数据的地址信息时,根据该地址信息,从高速缓存器中读取对应的指令数据。
本发明实施例提供的微控制器高速缓存的装置可以使用在前述对应的方法实施例一中,详情参见上述实施例一的描述,在此不再赘述。
通过本发明实施例,有效解决了现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
实施例四:
图4示出了本发明实施例四提供的微控制器高速缓存的装置的组成示意图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
设置模块401,用于在所述获取指令数据的地址信息之前,设置多个用于配置所述高速缓存器的地址空间的地址控制寄存器;
控制模块402,用于在设置多个用于配置所述高速缓存器的地址空间的地址控制寄存器之后,控制使能寄存器将高速缓存器的使能位配置为1,以开启高速缓存器的高速缓存功能;
获取模块403,用于获取指令数据的地址信息;
判断模块404,用于判断所述地址控制寄存器中是否存在所述指令数据的地址信息,若是,则检测SRAM中是否存在所述指令数据的地址信息;
检测模块405,用于检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息;
处理模块406,用于当SRAM中不存在所述指令数据的地址信息时,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,其中,N为大于零的整数。
优选的是,N为4。
进一步的,处理模块406还用于:
当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号。
进一步的,处理模块406还用于:
当SRAM中存在所述指令数据的地址信息时,根据该地址信息,从高速缓存器中读取对应的指令数据。
本发明实施例提供的微控制器高速缓存的装置可以使用在前述对应的方法实施例二中,详情参见上述实施例二的描述,在此不再赘述。
所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即所述装置的内部结构划分成不同的功能模块,上述功能模块既可以采用硬件的形式实现,也可以采用软件的形式实现。另外,各功能模块的具体名称也只是为了便于相互区别,并不用于限制本申请的保护范围。
综上所述,本发明实施例通过设置多个用于配置所述高速缓存器的地址空间的地址控制寄存器,控制使能寄存器将高速缓存器的使能位配置为1,以开启高速缓存器的高速缓存功能,获取指令数据的地址信息,判断所述地址控制寄存器中是否存在所述指令数据的地址信息,若是,则检测静态随机存取存储器SRAM中是否存在所述指令数据的地址信息,当SRAM中不存在所述指令数据的地址信息时,生成高速缓存有效信号,并向flash存储器发送有效请求信号,,从flash存储器中读取N个字的数据,并将读取的所述N个字的数据存储到高速缓存器中,所述N个字的数据的地址信息存储到SRAM中,并向所述微控制器返回一个字的所述指令数据,当微控制器再次读取相同的指令数据时,就不再需要从flash存储器中读取所述指令数据,而是直接从高速缓存器中高速读取所述指令数据,从而有效解决了现有技术中高速缓存器不具有灵活使用性,导致微控制器从高速缓存器中读取指令数据命中率低的问题。
本领域普通技术人员还可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以在存储于一计算机可读取存储介质中,所述的存储介质,包括ROM/RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。