CN106383926A - 一种基于Cortex‑M系列处理器的指令预取方法及电路 - Google Patents

一种基于Cortex‑M系列处理器的指令预取方法及电路 Download PDF

Info

Publication number
CN106383926A
CN106383926A CN201610755305.2A CN201610755305A CN106383926A CN 106383926 A CN106383926 A CN 106383926A CN 201610755305 A CN201610755305 A CN 201610755305A CN 106383926 A CN106383926 A CN 106383926A
Authority
CN
China
Prior art keywords
instruction
address
fetching
processor
data access
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
Application number
CN201610755305.2A
Other languages
English (en)
Inventor
张英杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing CEC Huada Electronic Design Co Ltd
Original Assignee
Beijing CEC Huada Electronic Design Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing CEC Huada Electronic Design Co Ltd filed Critical Beijing CEC Huada Electronic Design Co Ltd
Priority to CN201610755305.2A priority Critical patent/CN106383926A/zh
Publication of CN106383926A publication Critical patent/CN106383926A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level

Abstract

本发明公开了一种基于Cortex‑M系列处理器的指令预取方法及电路,在Cortex‑M系列处理器的指令执行效率受限于NVM访问速度的情况下,本发明所述的方法通过增加少量的硬件控制逻辑,可极大的提高Cortex‑M系列处理器的指令执行效率。

Description

一种基于Cortex-M系列处理器的指令预取方法及电路
技术领域
本发明属于集成电路芯片的安全性设计领域,具体涉及与芯片安全功能相关的关键数据信息的安全传输方法与电路。
背景技术
智能卡技术的不断发展,使其成为许多行业解决传统问题的理想方案,在移动通信、社保医疗、金融支付等诸多领域发挥着日益重要的作用。智能卡芯片的广泛应用,使用户对智能卡芯片的性能提出了更高的要求。
智能卡芯片基于成本方面的考虑,所选用的非易失性存储器(NVM)的性能通常不佳。对于以Cortex-M系列处理器作为CPU内核的智能卡芯片,为了提高其指令执行效率,通常采用的方法是使CPU内核与NVM存储器工作在不同的时钟频率下,使CPU内核的工作时钟频率为NVM存储器工作时钟频率的N倍频(N为整数)。对于采用上述方式的芯片,当CPU内核执行取指操作时,受限于NVM访问速度,取指操作无法在一个高频时钟周期内完成,因此CPU内核在接收到取指响应前,需要插入一个或多个等待周期。
图2所示为芯片CPU时钟为NVM时钟的两倍频,插入一个等待周期的指令执行情况。通过分析,对应的指令平均执行周期数CPI=9/6=1.5。
图3所示为芯片CPU时钟为NVM时钟的四倍频,插入三个等待周期的指令执行情况。通过分析,对应的指令平均执行周期数CPI=(6+9)/6=2.5,与图1相比,折算到相同的时钟频率下,其CPI为2.5/2=1.25。由上述分析可知,通过提高CPU的工作时钟频率,可使CPI由1.5降为1.25,但显著增加了CPU的动态平均功耗。因此,需要寻找一种更好的方法,既可提高处理器的指令执行效率,又能使芯片功耗控制在一个合理的范围内。
由于Cortex-M系列处理器支持的Thumb2指令集的大部分指令为16位指令,一次取指操作可取回两条16位指令,因此,Cortex-M系列处理器取指操作的特点是一次取指操作完成后,需要空一个时钟周期再启动下一次的取指操作(只有一个例外,即当分支指令的目标地址是半字对齐的情况,一次取指操作只能取回一条有效的16位指令,此时将发生back-to-back取指)。
本发明在CPU内核时钟为NVM时钟两倍频的条件下,充分利用Cortex-M系列处理器指令流水线的上述特点,提前一拍启动指令预取操作,当硬件收到处理器的取指请求后,在下一时钟周期即可将预取的指令码返回处理器,从而实现了单周期取指返回。如图4所示,可计算出其CPI=1。
发明内容
本发明的目的,在于解决目前因智能卡芯片集成的NVM存储器的性能不佳,导致的Cortex-M系列处理器的指令执行效率不高的问题。
本发明公开了一种基于Cortex-M系列处理器的指令预取方法及电路,采用全硬件的实现方案,详细的技术方案描述如下:
本发明的硬件电路包括::一个预取指令地址寄存器、两组32Bit的指令Buffer寄存器、一个数据访问地址寄存器、一个地址通路选择器、一个数据通路选择器以及相关的控制逻辑单元等。
本发明的工作流程图参见图5,其工作原理如下:当处理器发出取指请求后,硬件首先判断当前执行指令是否为分支指令,若为分支指令则使用分支指令目标地址更新预取指令地址寄存器,并将此地址直接作为NVM访问地址启动读操作,同时清空指令Buffer寄存器;若当前指令为非分支指令,则判断指令Buffer是否为空,若非空则立即响应取指请求,否则需要等待指令预取完成(指令Buffer为空仅发生在分支指令目标地址为半字对齐,出现back-to-back取指操作的情况下)。当处理器发出数据访问请求后,硬件首先判断当前是否存在尚未完成的指令预取操作(即NVM正被访问,访问不能立即进行),若存在则要将此数据访问的目标地址保存到数据访问地址寄存器;待指令预取操作完成后,再依据数据访问地址寄存器对NVM进行数据访问(注:执行数据访问期间,预取指令地址寄存器、两组指令Buffer寄存器及相关的指令预取控制逻辑的状态保持不变,不受数据访问的影响)。当处理器既无取指请求也无数据访问请求时,硬件判断指令Buffer是否为满,若未满则依据指令预取地址寄存器进行指令预取操作,直至指令Buffer被装满后暂停指令预取。
本发明所述的基于Cortex-M系列处理器的指令预取方法,通过增加少量的硬件控制逻辑,在处理器时钟为NVM时钟两倍频的条件下,与插等待周期的方式相比,使Cortex-M系列处理器的指令执行效率得到显著的提升。
附图说明
图1硬件电路原理图
图2插入一级等待的指令流分析
图3插入三级等待的指令流分析
图4采用指令预取方式的指令流分析
图5指令预取方案控制流程图
具体实施方式
以下结合说明书附图对本发明的具体实施方式进行详细说明。
如图1的硬件电路原理图所示,100代表指令预取地址寄存器,200代表数据访问地址寄存器,300代表两组32Bit的指令Buffer(IBUF0与IBUF1),400代表地址通路选择器,500代表数据通路选择器。
图1中的100代表指令预取地址寄存器,在芯片上电时其被复位为全零,寄存器处于无效状态。当处理器的取指地址与上一取指操作的地址不连续时,要使用新地址对指令预取地址寄存器进行更新,同时将300对应的指令Buffer清空。
图1中的200代表数据访问地址寄存器,若处理器对NVM进行数据访问时预取指电路正在访问NVM,则要将数据访问目标地址锁存到数据访问地址寄存器内,待预取指操作完成后,将此地址寄存器的输出端通过地址通路选择器选通并输出到NVM地址端口,同时启动对该地址的数据访问;若处理器对NVM进行数据访问时NVM空闲,则数据访问立即执行,此时的数据访问地址不再进行锁存。
图1中的300代表两组32Bit的指令Buffer(IBUF0与IBUF1),针对IBUF0、IBUF1的读、写分别通过读指针、写指针进行控制。对于地址连续的顺序取指,当NVM返回指令操作码后,要依据写指针将其写入对应的指令Buffer;对于地址不连续的取指操作(当前执行指令为分支指令),指令码直接返回处理器而不写入指令Buffer,写指针保持不变。
图1中的400代表地址通路选择器,其输出直接连到NVM存储器的地址端口,其输入来源有三个:指令预取地址寄存器输出、数据访问地址寄存器输出和处理器输出的HADRR/4。对于指令预取操作,选通指令预取地址寄存器输出;对于地址不连续的取指操作,选通处理器输出的HADDR/4;对于处理器发起的数据访问,若NVM正在执行指令预取操作,则在预取操作完成后选通数据访问地址将此运气的输出,否则选择处理器输出的HADDR/4。
图1中的500代表数据通路选择器,其输出直接连到处理器的HRDATA端口,其输入来源有两个:对于地址连续的顺序取指,根据IBUF读指针选通对应的指令Buffer(IBUF0或IBUF1);其它情况下,直接选通NVM输出。

Claims (7)

1.一种基于Cortex-M系列处理器的指令预取方法,其特征在于:
(1)当处理器发出存储器访问请求,硬件电路首先对请求的类型进行判断:即数据访问请求或取指请求;
(2)对于数据访问请求,硬件电路直接对存储器进行访问;
(3)对于CPU取指请求,硬件电路首先判断CPU当前执行指令是否为分支指令,对于分支指令,预取到的指令将被丢弃,并根据新的取指地址重新进行指令预取;对于非分支指令且指令预取Buffer非空的情况,则立即响应该取指请求;
(4)当处理器即为取指请求,业务数据访问请求时,硬件电路将自动启动指令预取操作,直到指令预取Buffer被填满为止。
2.一种基于Cortex-M系列处理器的指令预取方法及电路,其特征在于,在处理器执行不包含分支指令的程序段时,芯片硬件自动根据顺序取指操作的特点,提前从NVM读出后续的指令操作码,其硬件包括:一个预取指令地址寄存器、两组32Bit的指令Buffer寄存器、一个数据访问地址寄存器、一个地址通路选择器、一个数据通路选择器以及相关的控制逻辑单元等,其中:
预取指令地址寄存器在处理器执行分支指令时,用于保存分支指令的目标地址;在程序顺序执行时,用于产生指令预取操作的目标地址;
指令Buffer寄存器包括两组32Bit寄存器,用于暂存指令预取操作的返回结果;
数据访问地址寄存器用于保存NVM数据访问的目标地址;
地址通路选择器用于对送给NVM的访问地址来源进行选择,送给NVM的地址来源包括三类,分别是预取指令地址寄存器、数据访问地址寄存器或处理器输出的即时访问地址;
数据通路选择器用于对返回处理器的数据源进行选择,即来自指令Buffer的两组32Bit寄存器之一或者NVM存储器的输出数据。
3.根据权利要求1所述的电路,其特征在于,所述预取指令地址寄存器在芯片硬件完成一次取指操作后,其自动根据顺序取指操作的特点,实现地址自增的操作;当处理器执行分支指令时,指令预取地址寄存器将被更新为分支指令的目标地址。
4.根据权利要求1所述的电路,其特征在于,所述指令Buffer寄存器包含两组32Bit的指令寄存器IBUF0与IBUF1,在处理器发出取指请求后(当前执行指令为非分支指令),若指令Buffer非空,则将读指针对应的寄存器内的指令码返回给处理器;若处理器当前执行的指令为分支指令,指令Buffer将被清空,并针对分支指令的目标地址重新取指,取指结果经过数据通路选择器直接返回处理器(不写入指令Buffer);对于地址连续的指令预取操作,其结果将依据写指针被写入IBUF0或IBUF1,直到指令Buffer被写满。
5.根据权利要求1所述的电路,其特征在于,所述数据访问地址寄存器在处理器对NVM执行数据访问时,若当前存在尚未完成的指令预取操作(即NVM正被访问),数据访问不能立即执行,需要将此数据访问的目标地址保存到数据访问地址寄存器;当指令预取操作完成后,再依据数据访问地址寄存器的值对NVM进行数据访问。
6.根据权利要求1所述的电路,其特征在于,所述地址通路选择器在处理器发出取指请求且当前执行指令为分支指令时,其用于选通处理器产生的分支指令的目标地址,将其作为取指操作的地址;在处理器发出数据访问请求时,其用于选通处理器产生的数据访问地址,将其作为取数操作的地址;在处理器既无“分支指令”的取指请求,也无数据访问请求时,其用于选通指令预取地址寄存器,作为指令预取操作的地址。
7.根据权利要求1所述的电路,其特征在于,所述数据通路选择器在处理器发出“分支指令”的取指请求后,其用于将NVM输出直接返回处理器;在处理器发出数据访问请求后,其用于将NVM输出直接返回处理器;在上述情况均未发生时,其用于选通指令Buffer寄存器。
CN201610755305.2A 2016-08-29 2016-08-29 一种基于Cortex‑M系列处理器的指令预取方法及电路 Pending CN106383926A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610755305.2A CN106383926A (zh) 2016-08-29 2016-08-29 一种基于Cortex‑M系列处理器的指令预取方法及电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610755305.2A CN106383926A (zh) 2016-08-29 2016-08-29 一种基于Cortex‑M系列处理器的指令预取方法及电路

Publications (1)

Publication Number Publication Date
CN106383926A true CN106383926A (zh) 2017-02-08

Family

ID=57916030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610755305.2A Pending CN106383926A (zh) 2016-08-29 2016-08-29 一种基于Cortex‑M系列处理器的指令预取方法及电路

Country Status (1)

Country Link
CN (1) CN106383926A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109145397A (zh) * 2018-07-30 2019-01-04 长沙景美集成电路设计有限公司 一种支持并行流水访问的外存仲裁结构
CN112224192A (zh) * 2020-10-28 2021-01-15 广州小鹏自动驾驶科技有限公司 一种电子驻车控制方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184010A1 (en) * 2007-01-30 2008-07-31 Kabushiki Kaisha Toshiba Method and apparatus for controlling instruction cache prefetch
CN102144232A (zh) * 2008-09-04 2011-08-03 爱立信电话股份有限公司 使用分支取代的仿真处理器执行
CN202133998U (zh) * 2011-04-18 2012-02-01 江苏中科芯核电子科技有限公司 一种分支预测装置
CN103034476A (zh) * 2004-08-27 2013-04-10 高通股份有限公司 用于在总线上发送存储器预取命令的方法和设备
CN104220980A (zh) * 2011-12-29 2014-12-17 英特尔公司 经管理的指令缓存预取

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034476A (zh) * 2004-08-27 2013-04-10 高通股份有限公司 用于在总线上发送存储器预取命令的方法和设备
US20080184010A1 (en) * 2007-01-30 2008-07-31 Kabushiki Kaisha Toshiba Method and apparatus for controlling instruction cache prefetch
CN102144232A (zh) * 2008-09-04 2011-08-03 爱立信电话股份有限公司 使用分支取代的仿真处理器执行
CN202133998U (zh) * 2011-04-18 2012-02-01 江苏中科芯核电子科技有限公司 一种分支预测装置
CN104220980A (zh) * 2011-12-29 2014-12-17 英特尔公司 经管理的指令缓存预取
EP2798470A4 (en) * 2011-12-29 2015-07-15 Intel Corp PRE-ACQUISITION OF ANTEMOTE BY MANAGED INSTRUCTION

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIONEL RIVIERE等: "High Precision Fault Injections on the Instruction Cache of ARMv7-M Architecture", 《2015 IEEE INTERNATIONAL SYMPOSIUM ON HARDWARE ORIENTED SECURITY AND TRUST(HOST)》 *
陈跃跃等: "一种精确的分支预测微处理器模型", 《计算机研究与发展》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109145397A (zh) * 2018-07-30 2019-01-04 长沙景美集成电路设计有限公司 一种支持并行流水访问的外存仲裁结构
CN109145397B (zh) * 2018-07-30 2023-04-28 长沙景美集成电路设计有限公司 一种支持并行流水访问的外存仲裁系统
CN112224192A (zh) * 2020-10-28 2021-01-15 广州小鹏自动驾驶科技有限公司 一种电子驻车控制方法和装置

Similar Documents

Publication Publication Date Title
KR101847857B1 (ko) 스레드 일시중지 프로세서들, 방법들, 시스템들 및 명령어들
US11243768B2 (en) Mechanism for saving and retrieving micro-architecture context
US9015422B2 (en) Access map-pattern match based prefetch unit for a processor
US9069671B2 (en) Gather and scatter operations in multi-level memory hierarchy
CN109144573A (zh) 基于risc-v指令集的二级流水线架构
US11720365B2 (en) Path prediction method used for instruction cache, access control unit, and instruction processing apparatus
CN104813278B (zh) 对二进制转换的自修改代码以及交叉修改代码的处理
Qureshi et al. Gem5-x: A gem5-based system level simulation framework to optimize many-core platforms
CN105453030B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
TWI712952B (zh) 持續確定處理器、方法、系統及指令
US9052910B2 (en) Efficiency of short loop instruction fetch
KR102268601B1 (ko) 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템
US20210374848A1 (en) Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement
CN104823172A (zh) 实时指令跟踪处理器、方法以及系统
CN104461758B (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
WO2017172240A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
CN104834483A (zh) 一种提升嵌入式mcu性能的实现方法
CN106445472B (zh) 一种字符操作加速方法、装置、芯片、处理器
US9058277B2 (en) Dynamic evaluation and reconfiguration of a data prefetcher
CN106383926A (zh) 一种基于Cortex‑M系列处理器的指令预取方法及电路
CN108228241A (zh) 用于在处理器中进行动态概况分析的系统、装置和方法
CN100428200C (zh) 一种片上指令cache的实现方法
CN105786758B (zh) 一种具有数据缓存功能的处理器装置
CN111158753A (zh) 具有数据预取功能的Flash控制器结构及其实现方法
Saxena et al. The survey of concepts of architecture in RISC and CISC computers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170208