365bet体育童话故事 — CPU的贴身护卫ITCM和ICache童话故事 — CPU的贴身护卫ITCM和ICache

 

 

“叮铃铃… 叮铃铃…”

“叮铃铃… 叮铃铃…”

“谁呀?”黛丝博士打开了户,”哇,高飞,你怎么来了?”

“谁呀?”黛丝博士打开了户,”哇,高飞,你怎么来了?”

高飞狗:”好久不见,想来探望你,还置了你不过欢喜吃的纯黑巧克力。”

高飞狗:”好久不见,想来瞧你,还购置了卿无与伦比欢喜吃的纯黑巧克力。”

黛丝:”以往且是布鲁托领在你来之,今天而独自上门,必定不怀好意。买了如此多巧克力,必是别来客图吧?”

黛丝:”以往犹是布鲁托领在公来之,今天公独自上门,必定不怀好意。买了这么多巧克力,必是别发生外图吧?”

高飞狗:”你立即说之呀话,咱俩一片长大的,怎么会无怀好意? 别有客图也真的。”

高飞狗:”你这说的哟话,咱俩一块长大的,怎么会不怀好意? 别有异图也真的。”

黛丝:”我不怕掌握您无从业非登出八宝殿! 说吧,又碰到什么疑难的难题了。”

黛丝:”我就是知道乃管从业不发表八宝殿! 说吧,又撞什么疑难的难题了。”

高飞狗:”是如此的,这片年因Cortex-M7(以下简称CM7)为核心的MCU越来越多,CPU周围新增了几种部件,例如ITCM和ICache,最新的STM32H743,ITCM容量高及64KB,ICache容量高臻16KB,我本着那力量一知半解,对那用法一头雾水,你会免可知让详细讲解一番?”

高飞狗:”是这样的,这半年因为Cortex-M7(以下简称CM7)为骨干之MCU越来越多,CPU周围新增了几种部件,例如ITCM和ICache,最新的STM32H743,ITCM容量高及64KB,ICache容量高及16KB,我对那个功能一知半解,对那用法一头雾水,你能免可知吃详细讲解一番?”

黛丝:”高飞,你什么时候换得起早贪黑了,居然研究由高大上的科技来了。”

黛丝:”高飞,你啊时换得起早贪黑了,居然研究起高大上的科技来了。”

高飞狗心想:”只要会将您顿时白富美将到手,再宏伟上之困顿啊使不惜一切代价克服。”

高飞狗心想:”只要能管你马上白富美来到手,再伟大上的困难啊使不惜一切代价克服。”

黛丝:”ITCM和ICache还当真是死时尚之东西,毕竟是新物,我研究之日子呢未添加,谈不达到教,说错的地方还伸手马上指正。”

黛丝:”ITCM和ICache还确确实实是老大时尚的物,毕竟是初物,我研究的日啊未长,谈不齐上课,说错的地方还求即指正。”

高飞狗:”你无限谦虚了!”

高飞狗:”你无与伦比谦虚了!”

黛丝:”咱们要由骨子里问题出发吧。”

黛丝:”咱们要于实际问题出发吧。”

黛丝:”以堆仓库空间吗条例。堆栈空间及其存储的各种数码(含应用程序中的有所片变量),只有CPU才会看,而且是频繁造访。但是,在CM7出现以前,堆栈空间只能在SRAM中,而SRAM是共享资源,DMA可以看,其它总线Master也还可以拜。导致了以下问题:”

黛丝:”以堆库房空间为条例。堆栈空间及其存储的各种数据(含应用程序中之持有片段变量),只有CPU才会访问,而且是累造访。但是,在CM7出现以前,堆栈空间只能放在SRAM中,而SRAM是共享资源,DMA可以拜,其它总线Master也都得以拜。导致了以下问题:”

黛丝:”Q1:CPU要同另总线Master争夺SRAM访问控制权,最惨痛的上,CPU只来50%之年华可以拜SRAM,极大地降低了次性能。”

黛丝:”Q1:CPU要和另总线Master争夺SRAM访问控制权,最凄美的早晚,CPU只出50%底时空得拜SRAM,极大地下降了先后性能。”

黛丝:”Q2:其它总线Master有或篡改堆栈空间达到的数码,严重威胁应用程序的安康。”

黛丝:”Q2:其它总线Master有或篡改堆栈空间上的多寡,严重威胁应用程序的安康。”

高飞狗:”对对对,我就产生了这么的经验。”

高飞狗:”对对对,我虽生出了这么的更。”

黛丝:”ITCM的出现,彻底解决了上述两只问题。ITCM就是CPU的后宫,归CPU专享、专用、私有、独占。我们把堆库空间布置在ITCM内,CPU就得零等待、单周期、全速访问堆栈空间及反复用到之数据对象,大大提升应用程序性能,且其中的数未会见叫别总线Master篡改,大大提升了应用程序的安全性。”

黛丝:”ITCM的面世,彻底解决了上述两单问题。ITCM就是CPU的后宫,归CPU专享、专用、私有、独占。我们管堆库空间布置在ITCM内,CPU就得零等待、单周期、全速访问堆栈空间与高频用到的多寡对象,大大提升应用程序性能,且其中的数量不见面被其他总线Master篡改,大大升级了应用程序的安全性。”

高飞狗:”茅塞顿开!”

高飞狗:”茅塞顿开!”

高飞狗:”除此之外,ITCM还有啊用?”

高飞狗:”除此之外,ITCM还有呀用?”

黛丝:”在千头万绪应用程序中,常常强频地、随机地起各种中断。发生中断时,就要读取中断向量表(IVT),然后跳反到中断服务程序(ISR)。在CM7出现前,CPU应本着中断存在以下几单头疼的题目:”

黛丝:”在复杂应用程序中,常常强频地、随机地出各种中断。发生中断时,就要读取中断向量表(IVT),然后跳反到中断服务程序(ISR)。在CM7出现前,CPU应本着搁浅存在以下几独头疼的问题:”

黛丝:”Q1:IVT与为中止代码的大体地址去(简称空距)通常比远,需要耗费多单机器周期才能够读取中断向量。”

黛丝:”Q1:IVT与为暂停代码的物理地址去(简称空距)通常较远,需要耗费多只机械周期才能够读取中断向量。”

黛丝:”Q2:而ISR与IVT的空距通常也较远,又欲吃多独机器周期才会过反至ISR。”

黛丝:”Q2:而ISR与IVT的空距通常为较远,又需要消耗多个机械周期才会过反到ISR。”

黛丝:”于是,产生相同潮中断,要耗成千上万机械周期才会超过反执行到ISR。”

黛丝:”于是,产生相同不善中断,要耗多机械周期才会跨越反执行及ISR。”

黛丝:”Q3:ISR返回到被中止代码又使耗多独机器周期。”

黛丝:”Q3:ISR返回到被中断代码又比方消耗成千上万只机械周期。”

黛丝:”执行同样浅ISR,花费在代码跳转上的时日好像不多。但是,高度频繁、随机产生的各种中断,将设CPU在次跳反上淘极其巨大的光阴。在千头万绪、实时性要求较高之应用中,其代价还是挺惊人的。”

黛丝:”执行同一蹩脚ISR,花费在代码跳转上的时相近不多。但是,高度频繁、随机产生的各种中断,将使CPU在程序跳反上淘极其巨大的时刻。在复杂、实时性要求比较高之动中,其代价还是那个惊人的。”

黛丝:”ITCM的产出,完美解决了上述3个问题。程序设计者可以人工地把IVT和ISR安排在同块连续地址空间内,在系统启动时拿其总体装ITCM中,由于CPU访问ITCM总是独自周期的,以上3单问题遭到之程序跳反均好只有周期就,大幅提升了ISR的实时性能。”

黛丝:”ITCM的面世,完美解决了上述3单问题。程序设计者可以人工地将IVT和ISR安排在平等块连续地址空间内,在系统启动时将该全方位装ITCM中,由于CPU访问ITCM总是独自周期的,以上3只问题受到之次序跳反均可以仅周期就,大幅升级了ISR的实时性能。”

 

 

高飞狗:”我记忆MCU内部通常还放起于适应实时加速器 (ART-Accelerator™),为什么还需要ITCM来开这项工作呢?”

高飞狗:”我记忆MCU内部通常还放起起适应实时加速器 (ART-Accelerator™),为什么还待ITCM来举行这项工作吗?”

黛丝:”在一一读取连续存放的通令时,ART- Accelerator有明显的涨潮效果。而上述3只问题之景,基本上是自由读取指令,也就算是代码间的空距较远,ART- Accelerator的力量即使大打折扣,基本没什么提速作用,这正是ART- Accelerator的短板,而ITCM的产出则大大提升了随机读取指令与数码的习性,补上了ART- Accelerator的短板。”

黛丝:”在逐个读取连续存放的命令时,ART- Accelerator有显的提速效果。而上述3个问题之情事,基本上是即兴读取指令,也就是是代码间的空距较远,ART- Accelerator的功效就是大打折扣,基本没什么提速作用,这多亏ART- Accelerator的短板,而ITCM的出现则大大升级了自由读取指令与数码的性能,补上了ART- Accelerator的短板。”

 

 

高飞狗:”我晓得了。”

高飞狗:”我明白了。”

高飞狗:”亲爱的,我意识,STM32H743的ITCM容量高臻64KB,除了缓存IVT、ISR、堆栈空间之外,把整RTOS缓存进去吧未曾问题。如此,CPU就好独占地、单周期看高频度用到的代码和数量,应用程序的性提高幅度将凡不可想像的。”

高飞狗:”亲爱的,我发现,STM32H743的ITCM容量高及64KB,除了缓存IVT、ISR、堆栈空间之外,把整RTOS缓存进去吧绝非问题。如此,CPU就可独占地、单周期看高频度用到之代码和数目,应用程序的性能提高幅度将是不足想像的。”

黛丝:”你或那个懂事的! 比原先聪明多了!”

黛丝:”你要很懂事的! 比以前聪明多矣!”

高飞狗:”我晓得为什么要管ITCM的容量设计得这般可怜了。”

高飞狗:”我懂为什么而将ITCM的容量设计得如此深了。”

高飞狗:”CM7是32员中心,为何ITCM被设计吧64号宽度?”

高飞狗:”CM7是32各类中心,为何ITCM被规划也64各项宽度?”

黛丝:”虽然CM7的平头运算能力多啊32各类,但为发出少量64各类整数运算指令与大气64各项对精度浮点数运算指令,传送64各数据的需求还是众之,而且不少指令需要平等浅传送多个32位数据,如下表所示,与32号总线宽度相比,64各类之总线宽度可以节约50%底数目传送时间,性能提升是老可观之。”

黛丝:”虽然CM7的整数运算能力多吗32各项,但也有微量64各整数运算指令和大气64个对精度浮点数运算指令,传送64员数据的需还是众底,而且不少命需要同差传送多独32各类数据,如下表所示,与32各类总线宽度相比,64各项的总线宽度可以节约50%的数传送时间,性能提升是十分惊人之。”

例子:一次传送64位宽度数据的指令

说明

LDRD R8, R9, [R3];

以R3为地址指针,将一个64位双字载入R8和R9

LDM R8, {R0-R3}

以R8为地址指针,读取4个32位数据到寄存器中

相当于传送2个64位双字

STM R1, {R3-R6,R11,R12}

以R1为地址指针,存储6个32位寄存器数据

相当于传送3个64位双字

PUSH {R4-R7};

将4个32位寄存器推入堆栈,相当于2个64位双字

64位双精度浮点数的读取和存储指令

不再列出具体指令

例子:一次传送64位宽度数据的指令

说明

LDRD R8, R9, [R3];

以R3为地址指针,将一个64位双字载入R8和R9

LDM R8, {R0-R3}

以R8为地址指针,读取4个32位数据到寄存器中

相当于传送2个64位双字

STM R1, {R3-R6,R11,R12}

以R1为地址指针,存储6个32位寄存器数据

相当于传送3个64位双字

PUSH {R4-R7};

将4个32位寄存器推入堆栈,相当于2个64位双字

64位双精度浮点数的读取和存储指令

不再列出具体指令

 

 

高飞狗:”听你提了这么多,胜读多年修。有硌累了吧? 我被您泡杯咖啡,吃块巧克力如何?”

高飞狗:”听你开口了如此多,胜读多年书。有接触累了咔嚓? 我于你泡杯咖啡,吃块巧克力如何?”

黛丝:”你倒反客为主了!还出甚问题,一气问了,我还要出来工作为。”

黛丝:”你倒反客为主了!还产生甚问题,一气问了,我还要出来办事为。”

高飞狗心想:”还这样狠心,一丝咸聊的空子都未深受。”

高飞狗心想:”还如此狠心,一丝咸聊的机会都非让。”

高飞狗:”既然ITCM这么好,为什么还发生了单ICache,又出啊用呢? 总起种植既生高飞,何生黛丝的发!”

高飞狗:”既然ITCM这么好,为什么还闹了个ICache,又生出什么用吗? 总起种植既生高飞,何生黛丝的感觉!”

黛丝:”巧言令色,看自己未踩大而!”

黛丝:”巧言令色,看我莫蹈大而!”

黛丝:”这尚得看一个稍例子,才能够说得明白。如下表所示。”

黛丝:”这尚得看一个粗例子,才能够说得亮。如下表所示。”

 

 

// 循环1亿次

while (…) {

function1(); // 函数地址在0x10000

function2(); // 函数地址在0x20000

function3(); // 函数地址在0x30000

}

// 循环1亿次

while (…) {

function1(); // 函数地址在0x10000

function2(); // 函数地址在0x20000

function3(); // 函数地址在0x30000

}

 

 

黛丝:”这段小程序来2只特点:

黛丝:”这段小程序来2个特色:

F1:3单函数顺序得到执行,在实践时间上是邻的,简称时距相邻。

F1:3单函数顺序得到实施,在推行时达是邻近的,简称时距相邻。

F2:3个函数的大体地址去非常远,简称空距很远。

F2:3独函数的物理地址去好远,简称空距很远。

 

 

为空距很远,前一个函数执行了后,跳反执行到下一个函数,至少需花3只机器周期,循环的1次等实施费在跳转上之辰至少9单机器周期,循环的1亿坏实行相应的支出至少9亿独机器周期!

因空距很远,前一个函数执行完毕后,跳反执行及下一个函数,至少要花费3单机器周期,循环的1潮实施费在跳转上的年月至少9独机器周期,循环的1亿不良实行相应的开支至少9亿单机器周期!

 

 

来矣ICache之后,情况大不相同。

发矣ICache之后,情况大不相同。

ICache的风味是电动地管常去相邻之代码尽可能集中存放于团结体内,而不管这些代码的空距有多远,且CPU以仅周期看ICache。”

ICache的表征是电动地管常去相邻之代码尽可能集中存放于友好体内,而随便这些代码的空距有多远,且CPU以只周期看ICache。”

 

 

黛丝:”以上述小循环也条例,在执行function1()期间,ICache会把function1()尽可能缓存在祥和体内,在尽了一不好巡回后,如果3独函数的总容量不超越ICache的容量,那么3单函数的整套代码都都缓存在ICache体内。从循环的第2次等实践起来,CPU只需要访问ICache就可以履总体循环,不必再度看FLASH,所有指令的取都是仅周期365bet体育的。前一个函数执行了后,跳反执行到下一个函数,只待1只机械周期,循环的1亿浅执行费在函数跳反上之时日只需要3亿单机器周期!”

黛丝:”以上述小循环为例,在实行function1()期间,ICache会把function1()尽可能缓存在投机体内,在推行完毕一次等巡回后,如果3个函数的总容量不跳ICache的容量,那么3单函数的全体代码都已缓存在ICache体内。从循环的第2差施行起来,CPU只待访问ICache就可履总体循环,不必还看FLASH,所有指令的得都是只有周期的。前一个函数执行了后,跳反执行到下一个函数,只需要1只机械周期,循环的1亿潮实行费在函数跳反上之日只是待3亿个机械周期!”

黛丝:”通常,函数function1/2/3()还见面调用其它众多函数,函数之间的跳转切换数量而远远多于如齐所说。只要容量足够好,ICache还会见拿让function1/2/3()调用的其他函数通通缓存到体内,由此而省的推行时远远高于如上所述。”

黛丝:”通常,函数function1/2/3()还会调用其它众多函数,函数之间的跳转切换数量而远多于如达到所说。只要容量足够大,ICache还会管被function1/2/3()调用的其他函数通通缓存到体内,由此而省的履行时间远远大于如上所述。”

黛丝:”所以,ICache的优势是智能地、自动地以经常离相邻而空距很远之代码段放置在体内,CPU以单纯周期看这些代码,大大升级了程序性能。”

黛丝:”所以,ICache的优势是智能地、自动地以经常距离相邻而空距很远之代码段放置于体内,CPU为单周期看这些代码,大大升级了先后性能。”

黛丝:”而ITCM的优势是大大升级了时距不相邻而空距相邻的代码段的执行性,且需人工地管代码组织成为空距相邻。”

黛丝:”而ITCM的优势是大大提升了时距不相邻而空距相邻之代码段的实行性,且需人工地将代码组织成空距相邻。”

高飞狗:”ICache会不会见缓存ITCM中之代码?”

高飞狗:”ICache会不会见缓存ITCM中之代码?”

黛丝:”由于CPU能够为单纯周期看ITCM中之全部内容,所以ITCM中的情无自然缓存到ICache。在CPU硬件设计达到就保险完成就或多或少。所以,ICache中缓存的代码一定是ITCM之外的始末。”

黛丝:”由于CPU能够为单独周期看ITCM中的全部内容,所以ITCM中之始末无肯定缓存到ICache。在CPU硬件设计达到即保证形成即一点。所以,ICache中缓存的代码一定是ITCM之外的内容。”

高飞狗:”ITCM和ICache还当真各有所长。”

高飞狗:”ITCM和ICache还真各有所长。”

高飞狗:”你讲讲了这么多,我来总结一下,你看对非对准。”

高飞狗:”你开口了这么多,我来总结一下,你看对未对准。”

高飞狗:”结论1:ITCM既会缓存代码也克缓存数据,但用人工地把频繁执行的代码、IVT、ISR和库房空间连通(空距相邻),人为地装入其中。从而使CPU以单独周期、独占方式访这些代码和数据,大幅升级应用程序的属性和安全性。”

高飞狗:”结论1:ITCM既能缓存代码也会缓存数据,但要人工地拿频繁执行之代码、IVT、ISR和仓库空间连通(空距相邻),人为地装入其中。从而使CPU以单纯周期、独占方式访这些代码和数量,大幅升级应用程序的特性及安全性。”

高飞狗:”结论2:ICache只能缓存代码,但智能地、自动地以经常距离相邻而空距很远之代码段放置在体内,CPU以仅周期看这些代码,大幅升级程序性能。”

高飞狗:”结论2:ICache只能缓存代码,但智能地、自动地将经常距离相邻而空距很远之代码段放置于体内,CPU因只周期看这些代码,大幅提升程序性能。”

高飞狗:”简而言之,ITCM和ICache是CPU的贴身护卫。”

高飞狗:”简而言之,ITCM和ICache是CPU的贴身护卫。”

黛丝:”概括得非常好。”

黛丝:”概括得异常好。”

黛丝:”对于STM32H743,ITCM和ICache的总容量已达成80KB,如果程序设计者精心安排,使得80%之年华CPU是以及时两者间尽顺序,应用程序的性质提升以见面尽巨大。”

黛丝:”对于STM32H743,ITCM和ICache的总容量已达到80KB,如果程序设计者精心安排,使得80%底时空CPU是当及时二者中实施顺序,应用程序的习性提升将会晤无限巨大。”

 

 

高飞狗:”ITCM是Instruction Tightly Coupled
Memory的缩写,似乎其中只能存放代码?”

高飞狗:”ITCM是Instruction Tightly Coupled
Memory的缩写,似乎其中只能存放代码?”

黛丝:”你还生仔细之!ITCM也得存放数据,例如堆栈空间。所以,这个名词的确有点词不达意。”

黛丝:”你还非常仔细之!ITCM也足以存放数据,例如堆栈空间。所以,这个名词的确有些词不平易。”

 

 

高飞狗:”对了,CM7核心还新增了DCache部件。最近召开了有的试验,涉及DMA传送,好像一启用DCache,数据读写及传递就生题目;只要禁用DCache,一切都例行。你能免可知给我详细讲解一番?”

高飞狗:”对了,CM7核心还新增了DCache部件。最近开了片试,涉及DMA传送,好像一启用DCache,数据读写及传递就产生问题;只要禁用DCache,一切还例行。你会免可知被本人详细讲解一番?”

黛丝:”今天时光未早了,我还得出来工作,下次再说吧。”

黛丝:”今天时未早了,我还得出去办事,下次加以吧。”

高飞狗:”那我请求吃晚饭,聊表谢意!”

高飞狗:”那我伸手吃晚饭,聊表谢意!”

黛丝:”饭和萎缩就不了,你又未走我就是打跑了你!”

黛丝:”饭和谢就不了,你再次未移动自己便由跑了卿!”

高飞狗:”这么厉害呀!那自己就是不谦虚了,先走一步了。”

高飞狗:”这么狠心呀!那自己就未谦虚了,先走一步了。”

“高飞的白鹭,黛丝的鹅,唐诗里出描绘,唐诗里发唱,唐诗是自家本着你的表白…”

“高飞的白鹭,黛丝的鹅,唐诗里发出打,唐诗里生歌,唐诗是本人对你的剖白…”

相关文章