CN104714777A - 微控制器取指令方法及其实现电路 - Google Patents
微控制器取指令方法及其实现电路 Download PDFInfo
- Publication number
- CN104714777A CN104714777A CN201310673975.6A CN201310673975A CN104714777A CN 104714777 A CN104714777 A CN 104714777A CN 201310673975 A CN201310673975 A CN 201310673975A CN 104714777 A CN104714777 A CN 104714777A
- Authority
- CN
- China
- Prior art keywords
- bit
- instruction
- cpu core
- program storage
- microcontroller
- 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.)
- Pending
Links
Landscapes
- Microcomputers (AREA)
Abstract
本发明公开了一种微控制器取指令方法,使用16比特位宽的闪存作为程序存储器,每次读取16位指令码,其中8位指令码立即由CPU核读取进行译码操作,另外8位指令码由指令寄存器暂存。下一个读取周期时,CPU核可以直接从指令寄存器读取8比特指令码,而不需要从程序存储器中读取。本发明还公开了一种实现所述方法的微控制器取指令电路,包括:一CPU核,为8比特位宽;一程序存储器,由16比特位宽的嵌入式闪存构成;一指令读取电路,一指令寄存器,为16比特位宽,一选择器,为8比特位宽。本发明能有效降低程序存储器的读取次数,降低微控制器的取指令功耗。
Description
技术领域
本发明涉及微控制器(Micro Controller Unit MCU)领域,特别是涉及一种微控制器取指令方法。本发明还涉及一种能实现所述方法的微控制器取指令电路。
背景技术
微控制器产品的最主要任务就是执行程序代码,因此程序读取占据了微控制器操作的绝大部分。
在微控制器设计中,一般CPU核的位宽与程序存储器的位宽相一致。CPU核位宽为8比特,所采用程序存储器的位宽同样为8比特。这样的话CPU核读取一条24比特指令码就需要读取三次程序存储器。
目前微控制器的程序存储器一般采用嵌入式闪存,根据产品规格书,台积电的0.18微米工艺下的低功耗嵌入式闪存,其读取功耗如表1所示。
存储器位宽(比特) | 8 | 16 |
读取功耗(微安/兆赫兹) | 105 | 130 |
表1
根据表1中数据,该嵌入式闪存读取一个16比特数据需要功耗130微安/兆赫兹,而读取两个8比特数据需要功耗105*2=210微安/兆赫兹。可见,一次读取16比特数据功耗远远小于两次读取8比特数据。如果可以把相邻地址的两个8比特数据拼成一个16比特数据进行读取,就可以降低210-130=80微安/兆赫兹的功耗。
随着低功耗微控制器的发展,产品在实现更多功能的同时,功耗也必须降得更低。
发明内容
本发明要解决的技术问题是提供一种微控制器取指令方法,能有效降低程序存储器的读取次数,降低微控制器的取指令功耗;为此,本发明还要提供一种实现所述方法的微控制器取指令电路。
为解决上述技术问题,本发明的微控制器取指令方法是采用如下技术方案实现的:
采用位宽为两个字节(16比特)的程序存储器,来搭配位宽为一个字节(8比特)的CPU核;当CPU核取指令时,指令读取电路根据指令地址一次从指令存储器取出两个字节的指令码;其中一个字节的指令码直接送入CPU核进行译码,另外一个字节的指令码则由一个指令寄存器暂存;在下一个读取周期,当CPU核读取下一条指令时,则直接从所述指令寄存器中读取该条指令。
本发明的实现所述方法的微控制器取指令电路,包括:
一8比特位宽的CPU核,其每次可以译码8比特指令码,地址线为14比特,可寻址16384字节的地址范围;
一16比特位宽的嵌入式闪存作为程序存储器,其每次可以读取16比特指令码,总容量为16384个字节;
一指令读取电路,将所述CPU核给出的14比特地址[13:0]转换为13比特地址[13:1],用13比特地址寻址所述程序存储器;
一16比特的指令寄存器,用于暂存由所述程序存储器给出的16比特指令码;
一8比特指令选择器,其输入为所述指令寄存器中的16比特指令码,输出为奇地址指令码或者偶地址指令码,选择信号是所述CPU核给出的14比特地址的最低位[0]。
本发明在保持CPU核的位宽不变的前提下,加大程序存储器的位宽,采用16比特位宽的程序存储器。把两次8比特的闪存读取操作,合并为一次16比特的闪存读取操作;由于指令寄存器的读取功耗远远小于程序存储器的读取功耗,大大降低了系统功耗。这样的话读取一条24比特的指令码就只需要读取两次程序存储器。从而有效地减少了程序存储器的读取次数,降低了微控制器取指令的功耗。
本发明以较少的硬件开销作为代价,降低了微控制器读取程序存储器的次数,降低了产品的整体功耗,提高了产品的市场竞争力。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是所述微控制器取指令电路原理框图。
图2是8比特存储器与16比特存储器指令码存储结构示意图。
具体实施方式
所述微控制器取指令方法是,使用16比特位宽的闪存作为程序存储器,每次读取16位指令码,其中8位指令码立即由CPU核读取进行译码操作,另外8位指令码由指令寄存器暂存。下一个读取周期时,当CPU核读取下一条指令时,因为下条指令已经暂存在指令寄存器中,CPU核可以直接从指令寄存器读取8比特指令码,而不需要从程序存储器中读取。这样,就把两次8比特的闪存读取操作,合并为一次16比特的闪存读取操作,大大降低了系统功耗。
结合图1所示,实现所述方法的微控制器取指令电路,包括:一CPU核,为8比特位宽;一程序存储器,由16比特位宽的嵌入式闪存构成;一指令读取电路,一指令寄存器,为16比特位宽,一选择器,为8比特位宽。
使用16比特位宽的嵌入式闪存存储程序,每个地址可以存储16比特指令码。CPU核的位宽为8比特,寻指地址有14比特,可以访问的地址空间为16384个字节,每个地址存储8比特指令。
根据图1所示,CPU核给出14比特读指令地址[13:0],指令读取电路把该地址的最低位去掉,转换为指令地址[13:1]送到程序存储器进行寻址读取指令。程序存储器根据指令地址[13:1]寻址到相应的16比特指令码,并给出该指令码到指令寄存器。16比特指令寄存器立即把该16比特指令码进行暂存,并送给指令选择器。指令选择器根据CPU核的14比特指令地址[13:0]的最低位地址[0]来选择高低位字节。如果地址[0]是0,则选择高位字节;如果地址[0]是1,则选择低位字节。这样CPU核读取了16比特指令码,但是只读取了一次程序存储器。
由于微控制代码并非总是顺序执行,存在跳转、循环等可能,因此在高字节指令码读取之后并不一定就是读取低字节指令码。假设微控制代码大小为16384个字节,下面分几种情况分析采用本发明后读取全部16384字节指令的实际功耗:
第一种情况:微控制器代码非常理想化的顺序执行,如图2所示,代码依次按照0-1-2-3-…-16383的顺序执行,实际读取指令功耗为130*16384*0.5=1040mA/MHz。
第二种情况,微控制代码顺序执行指令占80%,跳转指令占20%,实际读取指令功耗为130*16384*(80%*0.5+20%)=1248mA/MHz。
第三种情况:微控制代码中顺序执行指令和跳转执行指令各占一半,实际读取指令功耗为130*16384*(50%*0.5+50%)=1560mA/MHz。
第四种情况:微控制器代码中顺序执行指令占40%,跳转指令占60%,实际读取指令功耗为130*16384*(40%*0.5+60%)=1664mA/MHz。
第五种情况:微控制代码中全部为跳转执行,实际读取功耗为130*16384=2080mA/MHz。
作为对比,采用原先8比特位宽的程序存储器读取全部16384个字节指令码的功耗为:105*16384=1680mA/MHz。
本发明 | 4 | 16 | 60% | 40% | 1664 |
本发明 | 5 | 16 | 100% | 0% | 2080 |
8比特方案 | 8 | N/A | N/A | 1680 |
表2各种情况功耗分析对比
根据上述数据,只要顺序执行指令占全部指令的40%,采用本发明的功耗就小于采用8比特位宽程序存储器的功耗,顺序执行指令所占比例越多,功耗降低的也越多。
由于微控制程序的读取顺序与程序本身密切相关,合理的程序编程可以有效地提高顺序执行的比例,从而降低取指令功耗。本发明仅仅是从电路角度给出了一个降低功耗的方案,只有在程序代码的密切配合下,才能达到最佳的效果。
以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。
Claims (2)
1.一种微控制器取指令方法,其特征在于:采用位宽为两个字节的程序存储器,来搭配位宽为一个字节的CPU核;当CPU核取指令时,指令读取电路根据指令地址一次从指令存储器取出两个字节的指令码;其中一个字节的指令码直接送入CPU核进行译码,另外一个字节的指令码则由一个指令寄存器暂存;在下一个读取周期,当CPU核读取下一条指令时,则直接从所述指令寄存器中读取该条指令。
2.一种实现权利要求1所述方法的微控制器取指令电路,其特征在于,包括:
一CPU核,8比特位宽,其每次能译码8比特指令码,地址线为14比特,可寻址16384字节的地址范围;
一程序存储器,由16比特位宽的嵌入式闪存构成,每次可以读取16比特指令码,总容量为16384个字节;
一指令读取电路,将所述CPU核给出的14比特地址[13:0]转换为13比特地址[13:1],用13比特地址寻址所述程序存储器;
一指令寄存器,16比特位宽,用于暂存由所述程序存储器给出的16比特指令码;
一8比特指令选择器,8比特位宽,其输入为所述指令寄存器中的16比特指令码,输出为高8比特或者低8比特指令码,选择信号是所述CPU核给出的14比特地址的最低位[0]。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310673975.6A CN104714777A (zh) | 2013-12-11 | 2013-12-11 | 微控制器取指令方法及其实现电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310673975.6A CN104714777A (zh) | 2013-12-11 | 2013-12-11 | 微控制器取指令方法及其实现电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104714777A true CN104714777A (zh) | 2015-06-17 |
Family
ID=53414157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310673975.6A Pending CN104714777A (zh) | 2013-12-11 | 2013-12-11 | 微控制器取指令方法及其实现电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104714777A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112947841A (zh) * | 2019-11-26 | 2021-06-11 | 珠海零边界集成电路有限公司 | 一种读取嵌入式闪存数据的方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962509A (ja) * | 1995-08-23 | 1997-03-07 | Oki Electric Ind Co Ltd | 命令読み出し装置 |
CN101699391A (zh) * | 2009-09-30 | 2010-04-28 | 江南大学 | 用于提高Java处理器取指令带宽的字节码缓冲装置及其使用方法 |
CN103425498A (zh) * | 2013-08-20 | 2013-12-04 | 复旦大学 | 一种低功耗的长指令字指令存储器及其优化功耗的方法 |
-
2013
- 2013-12-11 CN CN201310673975.6A patent/CN104714777A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0962509A (ja) * | 1995-08-23 | 1997-03-07 | Oki Electric Ind Co Ltd | 命令読み出し装置 |
CN101699391A (zh) * | 2009-09-30 | 2010-04-28 | 江南大学 | 用于提高Java处理器取指令带宽的字节码缓冲装置及其使用方法 |
CN103425498A (zh) * | 2013-08-20 | 2013-12-04 | 复旦大学 | 一种低功耗的长指令字指令存储器及其优化功耗的方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112947841A (zh) * | 2019-11-26 | 2021-06-11 | 珠海零边界集成电路有限公司 | 一种读取嵌入式闪存数据的方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8094157B1 (en) | Performing an occurence count of radices | |
US20140359225A1 (en) | Multi-core processor and multi-core processor system | |
US9639503B2 (en) | Vector indirect element vertical addressing mode with horizontal permute | |
TWI604726B (zh) | 用於數位信號處理之以瓦狀塊為基礎的交插及解交插技術 | |
CN103999061B (zh) | 存储器件存取系统 | |
US6915413B2 (en) | Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein | |
CN102681946A (zh) | 内存访问方法和装置 | |
CN102591783A (zh) | 可编程存储器控制器 | |
US7624107B1 (en) | Radix sort algorithm for graphics processing units | |
CN104662520A (zh) | 用于管理具有不同高速缓存能力的跨页指令的方法和设备 | |
CN104102586A (zh) | 一种地址映射处理的方法、装置 | |
CN107111461A (zh) | 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 | |
CN106776104B (zh) | 一种Nand Flash控制器和终端以及控制Nand Flash的方法 | |
CN108632624B (zh) | 图像数据处理方法、装置、终端设备及可读存储介质 | |
CN104714777A (zh) | 微控制器取指令方法及其实现电路 | |
CN104715102B (zh) | 基于二分法的智能电能表负荷曲线的设计方法 | |
CN102541745B (zh) | 微控制器数据存储器的寻址方法和微控制器 | |
CN105590648B (zh) | 存储器读取方法以及数字存储器装置 | |
CN101201805A (zh) | 串行传输控制器与串行传输解码器及其串行传输方法 | |
CN102201817A (zh) | 基于存储器折叠架构优化的低功耗ldpc译码器 | |
CN106796505A (zh) | 指令执行的方法及处理器 | |
CN104391563B (zh) | 一种寄存器堆的循环缓冲电路及其方法,处理器装置 | |
CN201060485Y (zh) | 一种实现片上影子堆栈存储器的电路 | |
CN102841774A (zh) | 使用铁电随机存取存储器的堆栈处理器 | |
US9519599B2 (en) | Memory location determining device and method for determining locations of compressed data in a memory by using first and second arithmetic operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150617 |