CN114063917B - 快速读取程序数据的方法和微控制器 - Google Patents
快速读取程序数据的方法和微控制器 Download PDFInfo
- Publication number
- CN114063917B CN114063917B CN202111333941.3A CN202111333941A CN114063917B CN 114063917 B CN114063917 B CN 114063917B CN 202111333941 A CN202111333941 A CN 202111333941A CN 114063917 B CN114063917 B CN 114063917B
- Authority
- CN
- China
- Prior art keywords
- address
- program
- area
- lookup table
- program data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 230000003068 static effect Effects 0.000 claims abstract description 58
- 239000000872 buffer Substances 0.000 claims abstract description 55
- 238000013507 mapping Methods 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 3
- 238000002474 experimental method Methods 0.000 description 17
- 238000012360 testing method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 3
- 238000010998 test method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/22—Microcontrol or microprogram arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种快速读取程序数据的方法及微控制器。该方法包括以下步骤:将预定程序作为常用程序,生成查找表,并保存在寄存器中;每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据,其中,查找表中包括常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。本发明在调用程序时直接从缓存区中调取程序数据,可以有效提高程序数据的读取速度。
Description
技术领域
本发明涉及一种快速读取程序数据的方法,同时涉及相应的微控制器,属于计算机技术领域。
背景技术
单片机、FPGA(现场可编程逻辑门阵列)等微控制器的程序一般事先都已通过写入器固化在片内或片外程序存储器中,用于存储程序的存储器为掉电后数据不消失的静态存储器。
静态存储器用于保存数据有稳定的优点,但也有缺点。静态存储器属于低速串行存储器件,读取速度较慢,程序在高速的微控制器(例如高速单片机)中执行速度较快,静态存储器的读取速度跟不上代码运行的速度,总体运行速度的瓶颈主要在静态存储器的读取速度。高频使用的程序与低频使用的程序均需要从静态存储器中读取出来,然后被执行。这样的技术方案导致微控制器的执行效率较为低下。
在申请号为202010587489.2的中国发明申请中,公开了一种数据处理的方法。该方法在缓存中构建了一种共享的块索引数据结构,块索引数据结构在跳表数据结构的基础上生成具有层次结构的结构合并树。根据子镜像应用发出的读请求信息检索缓存中的块索引数据结构,当块索引数据结构的块数据满足读请求信息时,将块数据作为读请求数据返回。同时,将块索引数据结构根据响应速度分层次设置在物理存储模块中。在桌面云大批量并发启动以及并发使用场景,常用软件数据几乎必然被加载,访问热点块数据频繁。利用该方法,可以提高启动和应用程序的加载速度,减少了对物理存储模块的访问流量。但是,该方法并不适合在微控制器中使用。
发明内容
本发明所要解决的技术问题在于提供一种快速读取程序数据的方法。
本发明所要解决的另一技术问题在于提供一种快速读取程序数据的微控制器。
为了实现上述目的,本发明采用以下的技术方案:
根据本发明实施例的第一方面,提供一种快速读取程序数据的方法,包括以下步骤:
将预定程序作为常用程序,生成查找表,并保存在寄存器中;
每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据,
其中,查找表中包括常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。
其中较优地,对缓存区进行分区,为高速区域地址分配对应的缓存区地址,建立映射关系,生成查找表,并将查找表保存到寄存器中;其中,缓存区的起始地址和终止地址是连续的。
其中较优地,各个缓存区与对应的各高速区域的数量、大小分别相同。
其中较优地,每次上电时,利用查找表查找到常用程序的缓存区中的地址,以从动态存储器中快速调取常用程序的程序数据的步骤,包括以下子步骤:
S1:微控制器上电后自动运行启动代码;
S2:读取静态存储器中的查找表;
S3:根据常用程序的高速区域地址,从查找表中获得对应的缓存区地址;
S4:根据高速区域地址和缓存区地址,将常用程序的数据存储到相应的缓存区。
其中较优地,所述方法还包括以下步骤:
S5:接收待调用程序在静态存储器中的地址;
S6:将步骤S5中得到的地址与查找表中的高速区域地址范围进行比较;
若位于高速区域内,则进入步骤S7;否则进入步骤S8;
S7:跳转到缓存区地址读取待调用程序的程序数据;
S8:到静态存储器中读取待调用程序的程序数据;
S9:执行读取待调用程序,然后出栈到原地址;
S10:返回步骤S5,再次读取新指令,直至完成。
其中较优地,步骤S7中待调用程序为常用程序;步骤S8中待调用程序不是常用程序。
其中较优地,将步骤S5中得到的地址与查找表中的高速区域地址范围进行比较,是指将步骤S5中得到的地址与查找表中的各个高速区域的初始地址和终止地址逐一比较,从而判断出是否属于一组初始地址和终止地址之间。
根据本发明实施例的第二方面,提供一种快速读取程序数据的微控制器,该微控制器读取存储器中的程序数据,用于执行上述快速读取程序数据的方法。
与现有技术相比较,本发明将常用程序的程序数据预先存储到动态存储器的缓存区中,在需要调用该常用程序时,直接从该缓存区中调取程序数据,可以有效提高程序数据的读取速度。
附图说明
图1为本发明的实施例中,配置查找表的流程示意图;
图2为本发明的实施例中,动态存储器分区形成的缓存区与静态存储器的高速区域的对应关系示意图;
图3为本发明的实施例中,程序调取流程示意图;
图4A为对比实验1中测试程序所占存储器空间的示意图;
图4B为本发明的第一实施例中,实验2中的测试程序所占存储器空间的示意图;
图4C为本发明的第二实施例中,实验3中的测试程序所占存储器空间的示意图。
具体实施方式
下面结合附图和具体实施例对本发明的技术内容进行详细具体的说明。
本发明提供的快速读取程序数据的方法,主要适用于单片机。该单片机包括微控制器和静态存储器,并且微控制器(例如,ARM公司的高速单片机)内部集成有动态存储器。静态存储器位于微控制器之外,可以是Flash,E2PROM等掉电后数据不丢失的存储器;动态存储器的数据掉电后会丢失,但是读写速度比静态存储器快。
本发明提供的快速读取程序数据的方法的技术原理是:将预定的一个或多个程序作为常用程序,将常用程序的程序数据预先存储到动态存储器的缓存区中,在需要调用常用程序时直接从该缓存区中调取程序数据,从而提高程序数据的读取速度。具体地说,该方法包括查找表配置流程和程序调用流程,具体包括以下步骤:先利用查找表配置流程,用户自定义多个程序作为常用程序,生成查找表,并保存在寄存器中;然后每次上电时,利用预先配置的查找表,微控制器查找到待调用的程序的缓存区中的地址,以从动态存储器中快速调取该程序的程序数据。
查找表的内容如表1所示,至少包括高速区域地址和缓存区地址,其中高速区域地址中包括多对起始地址和终止地址,并且每一对起始地址和终止地址所定义的地址范围内存储有一个程序数据;缓存区地址中包括多对起始地址和终止地址,并且每一对起始地址和终止地址所定义的地址范围的大小与高速区域地址中对应的每一对起始地址和终止地址所定义的地址范围的大小相同,以存储相同的程序。简言之,高速区域地址和缓存区地址中的地址具有映射关系,每一对起始地址和终止地址所定义的地址范围内存储有一个程序。
查找表是用户一次性配置好(或者说,生成查找表),保存在寄存器中,掉电也不丢失。以后每次单片机上电启动时就直接读取该查找表。即,查找表配置流程操作一次,生成查找表并长期保存。
程序调用流程中,直接利用查找表,根据每次要调用的程序的(待调用程序)的地址,从缓存区或静态存储器中调取相应程序。程序调用流程是单片机上电后,重复操作的,直至所有要调用的程序均完成调用。
表1:查找表的内容
高速区域地址 | 缓存区地址 |
高速区域0起始地址 | 地址0(缓存区0的起始地址) |
高速区域0终止地址 | 地址1(缓存区0的终止地址) |
高速区域1起始地址 | 地址2(缓存区1的起始地址) |
高速区域1终止地址 | 地址3(缓存区1的起始地址) |
...... | ...... |
下面介绍查找表配置流程。如图1所示,查找表配置流程包括以下步骤:
S11:接收到用户选择的多个常用程序的静态存储器中的起始地址及终止地址。
用户根据静态存储器中存储的程序数据的使用频率,将一些需要反复使用的程序,自定义为常用程序。每个常用程序在静态存储器的存储地址由一对起始地址和终止地址定义。由于静态存储器中存储有多个程序,常用程序仅是其中一部分,所以通常而言,不同常用程序的起始地址和终止地址并不连续。为后文描述的方便,将静态存储器的存储空间中,存储有常用程序的区域,定义为高速区域;将存储有其他程序(不是常用程序)的区域定义为其他区域。每个高速区域中存有一个完整的程序所对应的程序数据。
如图2中所示,高速区域的起始地址和终止地址是不连续的。各个高速区域的地址不连续,即任一个高速区域的起始地址,与其他高速区域的起始地址或终止地址不连续。需要说明的是,高速区域只是对静态存储器的逻辑区域的划分。
需要说明的是,使用频率不同的程序(不经常使用的程序)也可以采用本发明的方法。但是,这样对硬件的要求会增加,例如需要更大的存储空间。
S12:将各个常用程序的起始地址及终止地址设置为多个高速区域地址A
根据每一个常用程序的静态存储器中的起始地址及终止地址,设置对应的高速区域的起始地址和终止地址(以下简称为高速区域地址A)。
如图2所示,在静态存储器中,高速区域0的高速区域地址A为0x800000~0x800100,存储有第一常用程序;高速区域1的高速区域地址A为0x801100~0x801800,存储有第二常用程序(不同于第一常用程序),以此类推。因此,将高速区域0起始地址赋值为0x800000;将高速区域0终止地址赋值为0x800100。类似的,将高速区域1起始地址赋值为0x801100;将高速区域1终止地址赋值为0x801800。由此,完成对每个高速区域的起始地址和终止地址的赋值。
而且,根据每个高速区域的起始地址和终止地址,计算出每个高速区域的大小。
S13:对缓存区进行分区,为各个高速区域地址A分配对应的缓存区地址B,建立映射关系,生成查找表,并将查找表保存到寄存器中。
在本发明实施例中,所有缓存区占用的存储空间,优选小于动态存储器的存储空间的1/3或1/2,但这并不构成对本发明的限制,这是根据实际应用场景预先设定的值。本发明中动态存储器的缓存区是专门用于缓存高速区域中的程序数据。动态存储器的缓存区以外的区域(执行区)用于运行程序。这样做的好处是:能够防止微控制器向缓存区写入数据,将原来存有的程序数据覆盖,导致缓存的程序数据损坏,无法用于运行程序。
根据S12中得到的每个高速区域的起始地址和终止地址,再结合每个高速区域的大小,从默认地址0x0000开始,对缓存区进行划分,得到各个缓存区的起始地址和终止地址。具体而言,如图2所示,将多个高速区域根据起始地址进行排序,从起始地址最小的高速区域开始,为每一个高速区域划分对应的缓存区。图中,起始地址最小的是高速区域0,其起始地址是0x800000,大小是100字节,缓存区0的起始地址为默认值0x0000,由此将缓存区0的终止地址设置为0x0100。同理,起始地址次小的是高速区域1,其起始地址是0x801100,大小是700字节,由此将缓存区1的起始地址设置为0x0100,缓存区1的终止地址设置为0x0800。可见,各个高速区域在静态存储器中是不连续的,这些多个不连续的初始地址和终止地址构成高速区域地址范围。但是映射到动态存储器中的缓存区地址,是连续的。
如图2所示,缓存区与高速区域的数量、大小分别相同。更优地是,缓存区与高速区域的顺序也相同。具体而言,静态存储器中包括5个高速区域(查找表中包含每个高速区域的起始地址和终止地址)。静态存储器中的第一个高速区域的地址为0x800000~0x800100;对应的动态存储器中的第一个缓存区地址为0x0000~0x0100。可见,第一个高速区域与第一个缓存区的大小是相同的。静态存储器中的第二个高速区域的地址为0x801100~0x801800;对应的动态存储器中的第二个缓存区地址为0x0100~0x0800。可见,第二个高速区域与第二个缓存区的大小也是相同的,而且第一缓存区和第二缓存区是地址连续的。以此类推。各个高速区域与各个缓存区是分别一一对应的,而且对应的一组高速区域与缓存区具有相同大小(即,用于存储相同的程序)并且具有相同的相对顺序(即各个程序在缓存区的存储顺序,与在高速区域的存储顺序是相同的)。
映射关系的信息包括静态存储器的高速区域的起始地址和与之对应的动态存储器内的缓冲区的起始地址;还包括静态存储器的高速区域的终止地址和与之对应的动态存储器内的缓冲区的终止地址,即高速区域的起始地址和终止地址,分别与缓冲区的终止地址一一对应。对动态存储器进行分区,将每个缓存区的起始地址、终止地址与高速区域的起始地址、终止地址之间的映射关系写入寄存器。
例如,将高速区域0的起始地址存入缓存区的地址0,将高速区域0的终止地址存入缓存区的地址1,将高速区域1起始地址存入缓存区的地址2,将高速区域1终止地址存入缓存区的地址3。
利用映射关系,可以实现读取程序的地址的跳转,即微控制器从读取慢速的静态存储器内的高速区域的起始地址,跳转到对应的动态存储器的缓存区的起始地址。
通过以上步骤配置了查找表,并存储在寄存器中,待微控制器上电后查找。
下面介绍微控制器利用该预先配置的查找表,实现快速读取程序数据的方法。如图3所示,该快速读取程序数据的方法包括以下步骤:
S1:微控制器上电后自动运行启动代码。
单片机被设置为上电时,微控制器就会自动运行启动代码,并进入下一步。
S2:微控制器读取静态存储器中的预先配置的查找表。
微控制器向静态存储器的特定地址发出读取命令,读取查找表。如前述,查找表是用户预先设置并保存在寄存器中的。因为查找表的内容包括静态存储器中每个高速区域的起始地址和终止地址,微控制器能够从查找表中读取出一个或多个常用程序的高速区域地址,作为高速区域地址A。高速区域地址A包括一个或多个常用程序的起始地址和终止地址。
S3:根据常用程序的高速区域地址A,从查找表中获得对应的缓存区地址B
微控制器根据读取的常用程序的高速区域地址A,从查找表中获得一一对应的缓存区地址B。
例如,基于表1,根据高速区域0起始地址得到缓存区0的起始地址;根据高速区域0终止地址得到缓存区0的终止地址。缓存区0的起始地址和缓存区0的终止地址,共同构成了与第一常用程序的高速区域地址一一对应的缓存区地址。类似的,缓存区1的起始地址和缓存区1的终止地址,共同构成了与第二常用程序的高速区域地址一一对应的缓存区地址。
S4:根据高速区域地址A和缓存区地址B,将常用程序的数据存储到相应的缓存区。
此时,微控制器根据表1已获得各个常用程序的高速区域地址A和缓存区地址B。基于高速区域地址A和缓存区地址B,微控制器将这些存储在高速区域中的各个常用程序的程序数据,缓存到动态存储器的对应的缓存区中。这样在运行程序时,能够从动态存储器中直接读取这些程序数据,不需要从静态存储器读取。由于动态存储器的读取速度比静态存储器的读取速度快,因而能够提高程序的执行效率。
到此,微控制器在上电后,已将各个常用程序的程序数据存储(或者说是复制)到动态存储器中,然后进入下一步。
上述步骤S1~S4的指令包含在微控制器上电后自动启动的启动代码文件中。下述步骤S5~S10不在启动代码中,由硬件自动判断。
S5:接收待调用程序在静态存储器中的地址C。
微控制器读取新指令,得到待调用程序在静态存储器中的地址C,然后进入下一步。
S6:将地址C与查找表中的高速区域地址范围进行比较。
比较器将地址C与高速区域地址范围进行比较。
如前述,高速区域地址范围包括多个不连续的初始地址和终止地址。比较器将地址C与各个初始地址和终止地址逐一比较,从而判断出是否属于一组初始地址和终止地址之间(即地址C位于高速区域内)。
若待调用程序在静态存储器中的地址C位于高速区域内,则进入步骤S7;否则进入步骤S8。例如,待调用程序在静态存储器中的地址C位于高速区域1内,说明待调用程序是第二常用程序,其已被复制到缓存区1中,所以可以进入步骤S7,直接从缓存区读取该常用程序。如果待调用程序在静态存储器中的地址C不在任何高速区域内,则说明待调用程序不是用户自定义的常用程序,没有被复制到缓存区,所以只能在静态存储器中读取。由此可见,本发明将待调用程序分为两类,一类是自定义的常用程序,跳转到动态存储器的缓存区中读取,以加快指令读取速度;另一类不是常用程序,继续在静态存储器中读取。
S7:跳转到缓存区地址B读取待调用程序的程序数据。
根据查找表,基于待调用程序在静态存储器中的地址C所在高速区域(即高速区域1)微控制器获得与该高速区域对应的缓存区。例如,表1中高速区域1的起始地址对应缓存区1的初始地址(即地址2);高速区域1的终止地址对应缓存区1的终止地址(即地址3)。
S8:到静态存储器中读取待调用程序的程序数据。
微控制器不跳转,继续在静态存储器的相应地址中读取待调用程序。
S9:执行读取待调用程序,然后出栈到原地址。
S10:返回步骤S5,再次读取新指令,直至完成。
为比较本发明实施例提供的快速读取程序数据的方法的实际效果,下面介绍利用CoreMark测试程序的执行效率的对比测试的实验情况。
实验1:采用现有技术的读取程序数据的方法
CoreMark标准的测试方法是在特定配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark/MHz。CoreMark数字越高,意味着性能更高。
测试中,采用广泛应用于各种微控制器(MCU)的ARM公司的Cortex-M0处理器,程序大小为16K,测试项目如下:
core_bench_list | Benchmark function |
cmp_complex | 比较列表单元格中的数据项。 |
cmp_idx | 比较列表单元格中的idx项目,并重新生成数据。 |
core_list_init | 用数据初始化列表。 |
core_list_insert | 将一个项目插入列表 |
core_list_remove | 从列表中删除一个项目。 |
core_list_undo_remove | 撤销删除操作。 |
core_list_find | 在列表中找到一个项目 |
core_list_reverse | 反转一个列表 |
core_list_mergesort | 在不递归的情况下对列表进行排序。 |
实验1中,测试程序所占存储器空间的比例如图4A所示,测试中运行的程序全部使用外部静态存储器来读取(即,现有技术中静态存储器不划分高速区域,动态存储器也不划分缓存区的情况)。实验1的测试结果CoreMark 1.0:2.478315。
实验2:采用本发明实施例提供的快速读取程序数据的方法
作为本发明的第一实施例,将常用程序复制到缓存区,并且该常用程序的大小占静态存储器的空间的50%。
与实验1相同,采用CoreMark标准的测试方法,采用Cortex-M0处理器,程序大小为16K,测试相同的项目。
测试程序所占存储器空间如图4B所示,测试程序中有50%使用静态存储器,有50%使用DRAM读取。换言之,测试程序中的一半存储在高速区域,被复制到DRAM中以供快速读取。
实验2的测试结果为CoreMark 1.0:2.968240。如表2所示,实验2中的程序执行效率比实验1(现有技术)提升了20%。
实验3:采用本发明实施例提供的快速读取程序数据的方法
作为本发明的第二实施例,将常用程序复制到缓存区,并且该常用程序的大小占静态存储器的空间的100%,即将静态存储器中的所有程序数据全部复制到缓存区中。
与实验1相同,采用CoreMark标准的测试方法,采用Cortex-M0处理器,程序大小为16K,测试相同的项目。
测试程序所占存储器空间如图4C所示,测试程序是全部使用DRAM读取,即将所有程序均从静态存储器复制到动态存储器中,测得采用本发明的方法所能达到的最高执行效率。
实验3的测试结果为CoreMark 1.0:41.502602。如表2所示,实验2中的程序执行效率与实验1(现有技术)相比,执行效率为1675%。
表2:对比实验结果汇总表
高速区占比 | 外部存储占比 | 总体结果 | 提升比率 |
0% | 100% | CoreMark 1.0:2.478315 | 100% |
50% | 50% | CoreMark 1.0:2.968240 | 120% |
100% | 0% | CoreMark 1.0:41.502602 | 1675% |
由此可见,将存储在静态存储器中的程序缓存在动态存储器,在运行程序时,调用缓存在动态存储器中程序,可以显著地提高程序运行的效率。而且,随着复制到动态存储器中的程序比例越多,执行效率增加越明显。
上面对本发明提供的快速读取程序数据的方法和微控制器进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质内容的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (9)
1.一种快速读取程序数据的方法,其特征在于包括以下步骤:
将预定程序作为常用程序,将常用程序的程序数据预先存储到动态存储器的缓存区中,生成查找表并保存在寄存器中;其中,所述动态存储器的缓存区专门用于缓存高速区域中的程序数据,所述动态存储器的缓存区以外的区域用于运行程序;
每次上电时,利用所述查找表查找到所述常用程序的缓存区中的地址,以从动态存储器的所述缓存区中快速调取所述常用程序的程序数据,
其中,所述查找表中包括所述常用程序在静态存储器中的高速区域的起始地址和终止地址;以及映射到动态存储器中的缓存区的起始地址和终止地址。
2.如权利要求1所述的快速读取程序数据的方法,其特征在于:
对所述缓存区进行分区,为所述高速区域地址分配对应的缓存区地址,建立映射关系,生成所述查找表,并将所述查找表保存到寄存器中;其中,所述缓存区的起始地址和终止地址是连续的。
3.如权利要求2所述的快速读取程序数据的方法,其特征在于:
各个所述缓存区与对应的各所述高速区域的数量、大小分别相同。
4.如权利要求1~3中任意一项所述的快速读取程序数据的方法,其特征在于:每次上电时,利用所述查找表,查找到所述常用程序的缓存区中的地址,以从动态存储器中快速调取所述常用程序的程序数据的步骤,包括以下子步骤:
S1:微控制器上电后自动运行启动代码;
S2:读取所述静态存储器中的所述查找表;
S3:根据所述常用程序的所述高速区域地址,从所述查找表中获得对应的所述缓存区地址;
S4:根据所述高速区域地址和所述缓存区地址,将所述常用程序的数据存储到相应的缓存区。
5.如权利要求4所述的快速读取程序数据的方法,其特征在于还包括以下步骤:
S5:接收待调用程序在所述静态存储器中的地址;
S6:将步骤S5中得到的地址与所述查找表中的所述高速区域地址范围进行比较;
若位于所述高速区域内,则进入步骤S7;否则进入步骤S8;
S7:跳转到所述缓存区地址读取所述待调用程序的程序数据;
S8:到所述静态存储器中读取所述待调用程序的程序数据;
S9:执行读取待调用程序,然后出栈到原地址;
S10:返回步骤S5,再次读取新指令,直至完成。
6.如权利要求5所述的快速读取程序数据的方法,其特征在于:
所述步骤S7中所述待调用程序为所述常用程序。
7.如权利要求6所述的快速读取程序数据的方法,其特征在于:
所述步骤S8中所述待调用程序不是所述常用程序。
8.如权利要求5所述的快速读取程序数据的方法,其特征在于:
将步骤S5中得到的地址与所述查找表中的所述高速区域地址范围进行比较,是指将步骤S5中得到的地址与所述查找表中的各个高速区域的初始地址和终止地址逐一比较,从而判断出是否属于一组初始地址和终止地址之间。
9.一种快速读取程序数据的微控制器,其特征在于所述微控制器读取存储器中的程序数据,用于执行权利要求1~8中任意一项所述的快速读取程序数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111333941.3A CN114063917B (zh) | 2021-11-11 | 2021-11-11 | 快速读取程序数据的方法和微控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111333941.3A CN114063917B (zh) | 2021-11-11 | 2021-11-11 | 快速读取程序数据的方法和微控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114063917A CN114063917A (zh) | 2022-02-18 |
CN114063917B true CN114063917B (zh) | 2024-01-30 |
Family
ID=80275424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111333941.3A Active CN114063917B (zh) | 2021-11-11 | 2021-11-11 | 快速读取程序数据的方法和微控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114063917B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726947A (en) * | 1995-07-14 | 1998-03-10 | Mitsubishi Denki Kabushiki Kaisha | Synchronous semiconductor memory device suitable for graphic data processing |
EP0927936A2 (en) * | 1997-12-31 | 1999-07-07 | Texas Instruments Inc. | A microprocessor with configurable on-chip memory |
CN1285120A (zh) * | 1997-12-19 | 2001-02-21 | 艾利森公司 | 结构独立应用程序在一个电话网络上的调用 |
US6647503B1 (en) * | 2000-02-29 | 2003-11-11 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer with re-initialization of DRAM or SRAM using non-volatile memory |
CN101495961A (zh) * | 2006-07-25 | 2009-07-29 | 高通股份有限公司 | 用于多个软件程序的瓦片式高速缓存器 |
WO2010000101A1 (zh) * | 2008-07-03 | 2010-01-07 | 深圳市中兴集成电路设计有限责任公司 | 用于嵌入式系统扩展存储空间的装置和方法 |
JP2014106819A (ja) * | 2012-11-28 | 2014-06-09 | Renesas Electronics Corp | メモリ共有システム |
CN104503707A (zh) * | 2014-12-24 | 2015-04-08 | 华为技术有限公司 | 读取数据的方法以及装置 |
CN107274923A (zh) * | 2017-05-24 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中顺序读取流性能的方法及固态硬盘 |
CN108231120A (zh) * | 2017-10-18 | 2018-06-29 | 上海博维逻辑半导体技术有限公司 | 可重新配置的非易失性存储器结构和系统 |
CN110442533A (zh) * | 2019-07-18 | 2019-11-12 | 合肥杰发科技有限公司 | 一种提高访问性能的方法、设备及存储介质 |
CN111984197A (zh) * | 2020-08-24 | 2020-11-24 | 许昌学院 | 计算机缓存分配方法 |
WO2020233046A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 缓存文件的管理方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240944B (zh) * | 2018-08-16 | 2021-02-19 | 上海天数智芯半导体有限公司 | 一种基于可变长缓存行的数据读写方法 |
-
2021
- 2021-11-11 CN CN202111333941.3A patent/CN114063917B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5726947A (en) * | 1995-07-14 | 1998-03-10 | Mitsubishi Denki Kabushiki Kaisha | Synchronous semiconductor memory device suitable for graphic data processing |
CN1285120A (zh) * | 1997-12-19 | 2001-02-21 | 艾利森公司 | 结构独立应用程序在一个电话网络上的调用 |
EP0927936A2 (en) * | 1997-12-31 | 1999-07-07 | Texas Instruments Inc. | A microprocessor with configurable on-chip memory |
US6647503B1 (en) * | 2000-02-29 | 2003-11-11 | Mitsubishi Denki Kabushiki Kaisha | Microcomputer with re-initialization of DRAM or SRAM using non-volatile memory |
CN101495961A (zh) * | 2006-07-25 | 2009-07-29 | 高通股份有限公司 | 用于多个软件程序的瓦片式高速缓存器 |
WO2010000101A1 (zh) * | 2008-07-03 | 2010-01-07 | 深圳市中兴集成电路设计有限责任公司 | 用于嵌入式系统扩展存储空间的装置和方法 |
JP2014106819A (ja) * | 2012-11-28 | 2014-06-09 | Renesas Electronics Corp | メモリ共有システム |
CN104503707A (zh) * | 2014-12-24 | 2015-04-08 | 华为技术有限公司 | 读取数据的方法以及装置 |
CN107274923A (zh) * | 2017-05-24 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘中顺序读取流性能的方法及固态硬盘 |
CN108231120A (zh) * | 2017-10-18 | 2018-06-29 | 上海博维逻辑半导体技术有限公司 | 可重新配置的非易失性存储器结构和系统 |
WO2020233046A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳壹账通智能科技有限公司 | 缓存文件的管理方法、装置、计算机设备及存储介质 |
CN110442533A (zh) * | 2019-07-18 | 2019-11-12 | 合肥杰发科技有限公司 | 一种提高访问性能的方法、设备及存储介质 |
CN111984197A (zh) * | 2020-08-24 | 2020-11-24 | 许昌学院 | 计算机缓存分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114063917A (zh) | 2022-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7930515B2 (en) | Virtual memory management | |
US20180039424A1 (en) | Method for accessing extended memory, device, and system | |
US4400774A (en) | Cache addressing arrangement in a computer system | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US20150113230A1 (en) | Directory storage method and query method, and node controller | |
CN112506823B (zh) | 一种fpga数据读写方法、装置、设备及可读存储介质 | |
CN112650539B (zh) | 面向异构众核处理器的动态链接运行支撑方法 | |
US8028118B2 (en) | Using an index value located on a page table to index page attributes | |
CN115794680A (zh) | 一种基于硬件克隆技术的多核操作系统及其控制方法 | |
US8316210B2 (en) | Dividing a logical memory space into ranges and sets for address translation | |
JP2001075866A (ja) | 記憶装置を動作する方法および記憶装置 | |
CN114063917B (zh) | 快速读取程序数据的方法和微控制器 | |
US8645620B2 (en) | Apparatus and method for accessing a memory device | |
CN116149554B (zh) | 一种基于risc-v及其扩展指令的数据存储处理系统及其方法 | |
CN105373348B (zh) | 一种混合内存的硬件实现系统及方法 | |
CN115826858A (zh) | 一种嵌入式存储芯片的控制方法及系统 | |
CN100351813C (zh) | 数字信号处理系统中访问存储单元的方法及其处理系统 | |
CN112035380B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN113535392A (zh) | 基于cma实现支持大内存连续分配的内存管理方法及系统 | |
JPH06214884A (ja) | キャッシュを使用する繰り返し処理のシステムおよび方法 | |
US7103705B2 (en) | Computing system, and method for enabling a digital signal processor to access parameter tables through a central processing unit | |
US11294821B1 (en) | Write-back cache device | |
US10860491B2 (en) | Cache management method using object-oriented manner and associated microcontroller | |
US11409665B1 (en) | Partial logical-to-physical (L2P) address translation table for multiple namespaces | |
WO2023241655A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |