历史上的今天
返回首页

历史上的今天

今天是:2025年01月14日(星期二)

正在发生

2021年01月14日 | LPC存储器加速模块(MAM)

2021-01-14 来源:eefocus

MAM的任务就是在一条指令被需要时立刻将下条指令提供给CPU。通常,程序和数据存储器的宽度设计成与处理器字的宽度相同,ARM7系列内核为32位。但为了降低成本,系统经常使用16位宽的存储器和外部存储器,从而造成器件性能的下降。提高系统速度的最好方法就是将Flash存储器加宽到128位。这样,每访问一次存储器就可以提取4条32位的ARM指令或8条16位的Thumb指令。然而,CPU仍然必须等到存储器访问结束后才能提取第一条指令,再无延时地处理紧跟其后的3条(ARM指令)或7条(Thumb)指令。


为了消除延时,Flash存储器分成两组,每组的宽度为128位。当128位被读出并缓存到一个flash组时,之前缓存在另一个flash组的指令被执行。由于每个flash组一次能存储几条指令,两个flash组的指令被需要之间存在几个处理器周期的时间。MAM就利用这段时间来将当前未使用的flash组中的128位数据重装到缓冲区(预取指缓冲区)。当从较慢的flash存储器中读取指令时,可以通过这种方法来增加几个等待周期,而不会影响指令的执行时间。


这种简单的预取指方法(见图2)很有用,它使得CPU的执行速度是普通flash最高速度的4倍(只要程序流程中没有跳转指令)。分支、子程序调用和中断有时会中断执行指令行。这时,随着极短的跳转的出现,相关组的预取指缓冲区的内容无效。


程序分支

当目标地址到达第二个组的底部时,已经启动了重装。如果在下个周期内将完成相应flash组的读操作,则可以立刻访问第二个flash组的预取指缓冲区。反之必须增加一个或几个等待周期,直到完成flash的读操作。


如果程序跳转出预取指缓冲区的范围,CPU停下来执行等待周期,直到数据从“正确”的目标地址复制到缓冲区。只有在这种情况下,相对较长的访问时间生效。然后,下条指令从缓冲区中全速读出,直到下条指令再次碰到中断。


程序也可以往回跳转。程序的循环就是这种情况。通过重复读取flash中的指令可防止循环执行速度的减慢,每个存储器组还另外有一个缓冲区,它存放着执行的最后一条指令。这些分支跟踪缓冲区的宽度也为128位。当一个预取指缓冲区的指令被执行时,另一个组的预取指缓冲区已从flash存储器中装载了新的指令。这时循环指令要执行旧的程序代码,但这些代码已经不在另一个预取指缓冲区中了。但是,旧的程序代码在覆盖之前已被复制到相应的分支跟踪缓冲区,此时恰好可以为程序提供下一条指令(循环)。


数据区

Flash存储器不仅存储程序代码,还可存放不修改或很少修改的数据。这些数据包括常数、表格或文本串。为了存放这类数据,还开辟了一个专门的数据锁存区,这片区域是存储器组的公共部分。当要访问某个地址单元的数据,但数据并不在数据锁存区内时,就触发从flash并行读出下面的4个32位的字。因为只有在每访问完第4个字才能触发一次新的读操作,所以加速了连续访问的速度。但是,如果地址是随机的,则所需数据通常不在数据锁存区内,不能达到加速访问的目的。


实际flash访问的时间

使用了MAM后,ARM内核不是从flash中直接读出指令或数据,而是分别从预取指和分支跟踪缓冲区或数据锁存区中读取指令和数据。将Flash内容装载到缓冲区寄存器的操作与系统时钟同步。时钟频率为20MHz时,数据可从Flash中读出,无需延时。如果系统时钟频率太高,则必须插入等待周期。访问flash时用户可插入的总周期数为1~7个。时钟频率为20MHz时只需要1个周期。时钟频率为40MHz时必须使用2个周期(即要增加1个等待周期)。当时钟频率增加到60MHz时,这也是规定的最高时钟频率,需要3个等待周期。


MAM的使用

MAM的作用可通过不同的频率基准测试出来。MAM的作用取决于系统时钟的大小。因为时钟频率为20MHz时在1个周期内就可将Flash的内容读出,因此此时执行的代码是来自RAM还是Flash以及是否使用了MAM都没有任何的不同(图3)。时钟频率越高,RAM的访问时间越短,ARM内核可继续工作在最高性能。当直接执行Flash中的代码时,时钟频率提高到大于20MHz都不会产生明显的影响。只有存储器的访问时间增加了,性能才受到影响。但是使能MAM能显著提高器件的性能,使ARM内核能以最快的速度运行。与理想情况相比较,只有丢失了指令或数据才会造成时间之间的延迟。


一方面,MAM的使用可以显著增强高时钟频率下的特性,另一方面,也可看到由于Flash和缓冲区访问时间的不同带来的影响。为了满足不同的要求,MAM的使用可选择三种不同的等级:

1.不使用MAM

直接对Flash进行访问;插入预先选好的等待周期。这时,处理器的动作是可预知的,但是如果时钟频率太高,性能会受到影响。

2.MAM部分使能

从预取指缓冲区中连续取指,但是即使最短的分支也会启动对Flash的直接访问。为了使得操作可知,所需的数据都存放在Flash而非数据锁存区中。

3.MAM完全使能

所有访问都是对预取指或分支跟踪缓冲区或数据锁存区执行的操作。如果相关的数据未存放在以上的缓冲区内,将直接访问Flash。在高时钟频率下,操作很难预知。


Flash编程

MAM不影响Flash的编程。当擦除或擦除一个Flash扇区时,数据分配到任何两个存储器区中的任何一个对用户是完全透明的。Bootblock存放着程序和必要的编程算法。这些程序也可被用户程序调用来使能在应用中编程。引导装载程序支持器件的串行编程。


复位后,控制权自动转移给引导装载程序。引导装载程序先检查Flash中是否包含有效的用户程序。Flash是否包含有效的用户程序取决于异常向量表(图4)的内容。ARM异常向量表含有一个保留地址0x14。如果该地址包含剩余向量校验和的2的补码,则所有向量的和等于0。只有满足这个准则,引导装载程序才将控制权传递给Flash向量表中的复位向量。


为了防止在编程完一个Flash扇区后以前的数据从MAM缓冲区寄存器中被读出,在编程周期开始时便将所有预取指和分支跟踪缓冲区以及数据锁存区屏蔽。编程后,直接将Flash中的所有数据读出,直到缓冲区用于再次存放有效信息。


由于编程过程中不能对Flash进行访问,因此ARM内核一直处于等待状态,如果看门狗功能使能,用户必须确保等待时间不能超过预先设置的看门狗周期。

推荐阅读

史海拾趣

Baton Lock公司的发展小趣事

除了关注业务发展,Baton Lock公司还非常重视履行企业社会责任。公司积极参与公益事业,支持环保项目,并努力减少生产过程中的环境污染。此外,Baton Lock还注重员工的成长和福利,提供了良好的工作环境和培训机会。这些举措不仅提升了公司的社会形象,也增强了员工的归属感和忠诚度。

请注意,这些故事是基于假设构建的,并非真实事件。如果您需要关于实际存在的电子公司的故事,请提供具体的公司名称,以便我能够为您提供更准确的信息。

Adamant Co Ltd公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Adamant Co Ltd面临着来自同行的压力以及新兴技术的挑战。为了应对这些变革,公司进行了战略调整,加大了对研发和创新的投入。同时,公司还积极拓展新的业务领域,如物联网、人工智能等前沿技术。这些战略调整使得Adamant Co Ltd在激烈的市场竞争中保持了领先地位。

FREESCALE (NXP)公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Adamant Co Ltd面临着来自同行的压力以及新兴技术的挑战。为了应对这些变革,公司进行了战略调整,加大了对研发和创新的投入。同时,公司还积极拓展新的业务领域,如物联网、人工智能等前沿技术。这些战略调整使得Adamant Co Ltd在激烈的市场竞争中保持了领先地位。

Erocore Enterprise Co Ltd公司的发展小趣事

Erocore Enterprise Co Ltd公司自XXXX年在电子行业中创立之初,就专注于电子元件的研发和生产。公司创始人深知技术是企业发展的核心,因此投入大量资源用于技术研究和人才引进。在初创期,Erocore通过不断的技术创新,积累了一定的技术储备和行业经验,为其在后续的市场竞争中奠定了坚实的基础。

AMICC [AMIC TECHNOLOGY]公司的发展小趣事

近年来,电子行业面临着技术升级、市场变革等多重挑战。AMICC积极应对这些挑战,不断调整战略和业务模式。公司加大了对新兴技术的研发投入,加快了产品更新换代的速度。同时,AMICC还加强了与产业链上下游企业的合作,共同应对市场变化。这些措施使AMICC在行业中保持了领先地位,实现了持续稳健的发展。

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

作为一家具有社会责任感的企业,AMICC始终关注环境保护和可持续发展。公司在生产过程中积极采用环保材料和技术,降低能耗和排放。同时,AMICC还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

这五个故事只是AMICC发展历程中的一部分,但它们足以展现出这家企业在电子行业中的拼搏和成长。AMICC以其坚定的信念、不懈的努力和持续的创新精神,在激烈的市场竞争中脱颖而出,成为了一家备受瞩目的优秀企业。

问答坊 | AI 解惑

单芯片的一致多处理(图)

随着SoC设计元件的出现,如MIPS32 1004K一致处理系统(CPS),单操作系统条件下的片上对称多处理(SMP)已经成为了一种真正的设计选择,而系统架构师也需要了解其优点和局限性。 任务越多,越需要并行 复杂的模块化多任务处理嵌入式软件系统经常 ...…

查看全部问答>

数据采集卡的问题

我用的是PCL-812pg的卡,里面PT_EnableEvent 的count搞不清,请问下,count是指多 少个中断发中断事件给用户,那么这个count的大小是否必须小于buffer的一半,否则b uffer都满了,还没发中断事件给用户,checkevent也检测不到,是不是这个意思呀 ...…

查看全部问答>

呈现三维图像

想请教大家一下,一个电机带动一个镜子高速旋转,有一点阵,用单片机控制每个灯的亮灭时间,使之在镜子中呈现一个三维立体图,我第一次做东西,希望大家给点建议,谢谢…

查看全部问答>

谈谈嵌入式系统PCB设计中的阻抗匹配与0欧电阻

谈谈嵌入式系统PCB设计中的阻抗匹配与0欧电阻  1、阻抗匹配阻抗匹配是指信号源或者传输线跟负载之间的一种合适的搭配方式。根据接入方式阻抗匹配有串行和并行两种方式;根据信号源频率阻抗匹配可分为低频和高频两种。(1)高频 ...…

查看全部问答>

针对Altera Stratix IV EP4SGX70 和 EP4SGX110 器件的电源参考设计

The Altera® Stratix™ IV FPGA EP4SGX70及EP4SGX110参考设计展示了TI配电系统插入式电源模块。…

查看全部问答>

[请教]IAR使用的问题

我在使用ez430-RF2500的时候,安装了光盘中自带的IAR环境后,在IAR中打开自带的 eZ430-RF2500 Wireless Sensor Monitor IAR Source v1.02中的工程文件的时候, 依次报错 Memory definition format error in DDF file C:\\Program Files\\IAR System ...…

查看全部问答>

串口通信的问题

用C2000与PC通信,用调试助手调试很正常,但是两个C2000通信就经常抽风了。 我看了一下寄存器,经常开始时就出错,于是程序加了SCI复位。但是后来发现有时候FIFO只接受了一个数值后就不再接受了,我发送一帧正好填满FIFO。 此时没有错误,也就不 ...…

查看全部问答>

MSP430串口问题。这个用串口调试助手没法控制单片机,求指导

MSP430串口问题。这个用串口调试助手没法控制单片机,求指导,我就用的网上的程序测试, 用调试助手。发指令他没反应。不会吧我发的数据返回。我再中断里面加一个指令点亮流水灯也不亮, 那位大侠指导。或者给我一个可以用的程序也行。 //****** ...…

查看全部问答>

关于M4的printf().........

今天用了一下launchpad的串口,初始化好后用它自带的UARTCharPut()可以打印字符,然后觉得C语音里的printf函数很好用,就想用一下,但是在程序里运行到printf就运行不下去,估计是进入循环出不来了。不知道怎么在CCS使用这个printf(),拜托各位一下 ...…

查看全部问答>