历史上的今天
返回首页

历史上的今天

今天是:2025年03月31日(星期一)

正在发生

2020年03月31日 | ARM处理器的Cache之cortex a8

2020-03-31 来源:eefocus

    Cache 是位于 CPU与主存储器DRAM(Dynamic RAM,动态存储器)之间的少量超高速静态存储器 SRAM(static RAM),其是为了解决 CPU 与 主存之间速度匹配问题而设置的,不能由用户直接寻址访问。


    具有 Cache 的计算机,当 CPU 需要进行存储器存取时,首先检查所需数据是否在 Cache中。如果存在,则可以直接存取其中的数据而不必插入任何等待状态,这是最佳状态,称为高速命中;当 CPU 所需信息不在 Cache 中时,则需切换存取主存储器,由于速度较慢,需要插入等待,这种情况称为 高速未命中;在CPU存取主存储器的时候,按照最优化原则将存储信息同时写入到 Cache 中以保证下次可能的高速缓存命中。因此,同一数据可能同时存储在主存储器和 Cache 中。


    传统的 Socket 架构通常采用两级缓冲结构,即在 CPU 中集成了 一级缓存(L1 Cache),在主板上装二级缓存(L2 Cache)。

    CPU 首先在 L1 Cache 中查找数据,如找不到,则在 L2 Cache 中查找,如果数据在 L2 Cache 中,控制器在传输数据的同时,修改 L1 Cache;若数据既不在 L1 Cache中,也不在 L2 Cache中,控制器则从主存储器中获取数据,将数据提供给CPU的同时修改两级 Cache。


    在主存储器--Cache存储体系中,所有的指令和数据都存在主存储器中,Cache只是存放主存储器中的一部分程序块和数据块的副本,只是一种以块为单位的存储方式。Cache 和 主存储器被分为块,每块有多个字节组成。


    CPU访问存储器时,送出访问单元的地址,由地址总线传送到 Cache 控制器中的主存储器地址寄存器 MA 中,主存储器 -- Cache 地址转换机从 MA 获取地址并判断该单元内容是否已在 Cache中存在副本,如果副本已存在于Cache 中,即命中。当命中时,立即把访问地址变换成其在Cache 中的地址,然后访问Cache。


    如果CPU要访问的内容不再 Cache 中,即不命中,则CPU转去直接访问主存储器,并将包含此存储单元的整个数据块(包括该块数据的地址信息)传到 Cache 中,使得以后的若干次对内存的访问可转化为对 Cache 的访问。若 Cache 存储器已满,则需在替换控制部件的控制下,根据某种替换算法/策略,用此块信息替换掉 Cache 原有的某块信息。

   

   ARM处理器中的 Cache 和 Write Buffer:


Cache 分类

根据不同的分类标准可以按以下 3 种方法对 Cache 进行分类。

1,数据 cache 和 指令 cache

* 指令 cache :指令预取时使用的 cache。

* 数据 cache :数据读写时使用的 cache。


    如果一个存储系统中指令 cache  和 数据 cache 是同一个 cache,称系统使用了统一的cache。反之,如果是分开的,那么称系统使用了独立的cache;如果系统中只包含指令cache或者数据cache,那么在配制系统时可以作为独立的cache使用。


    使用独立的数据 cache 和指令 cache,可以在同一个时钟周期中读取指令和数据,而不需要双端口的 cache,但这时要注意保证指令和数据的一致性。


2,写通(write-throught)cache 和 写回(write-back)cache

*写回 cache

    CPU在执行写操作时,被写的数据只写入 cache,不写入主存储器中,仅当需要替换时,才把已经修改的cache块写回到主存储器中。

    在使用这种更新算法的cache 块表中,一般有一个修改位,当一块中的任何一个单元被修改,这一块的修改位被设置为 1,否则这一块的修改位仍保持为 0;在需要替换这一块时,如果对应的修改位为 1,则必须先把这一块写到主存储器中去之后,才能调入新的块,否则,只要用新调入的块覆盖该块即可。


*写通 cache

CPU 在执行写操作时,必须把数据同时写入 cache 和主存储器中,这样,在 cache的块表中就不需要“修改位”,当某一块需要替换时,也不必把这一块写回到主存储器中,新调入的块可以立即直接把这一块覆盖掉。



3,读时分配(read-allocate)cache 和 写时分配(write-allocate)cache

* 读时分配 cache

当进行数据写操作时,如果cache没命中,只是简单的将数据写入到主存储器中,主要在数据读取时,才进行 cache 内容预取。


* 写时分配 cache

在进行数据写操作时,如果cache没命中,cache 系统将会进行 cache 内容预取,从主存储器中将相应的块读取到 cache 中相应的位置,并执行写操作,把数据写入到 cache 中。对于写通类型的cache,数据将会同时写入到主存储器中,对于写回类型的 cache,数据将在合适的时候写回到主存储器中。


ARM 处理器中的 Cache 和 Write Buffer 操作是通过 CP15 的 C7 寄存器来实现的。访问 CP15 的 C7 寄存器的指令格式如下:

    mcr p15, 0, , , crm,



以 am335x 为实例:



am335x arm cortex a8 中 Cache :

    Cache

        |------L1 Cache

        |             |------L1 Icache         (32 KB 独立的指令 cache)

        |             |------L1 Dcache        (32 KB 独立的数据 cache )

        |------L2 Cache                         (256KB)

L1 C ac h e
一级高速缓存,其容量一般为几十~ 几百K B ,频率与C P U 相同。 L 1 C ac h e 可以提
高C P U 的运行效率,它的容量和结构对C P U 的性能影响较大。 L 1 C ac h e 越大,系统性
能提高越明显。

L2 C ac h e
二级高速缓存,其容量一般相当于L 1 C ac h e 的4 ~ 8 倍。 L 2 C ac h e 的容量和频率对
C P U 的性能影响也较大,L 2 C a c h e 的时钟频率一般为C P U 主频的1 /2 、2 /5 和1 /3 

推荐阅读

史海拾趣

DCCOM [ DC COMPONENTS ]公司的发展小趣事

为了进一步扩大市场份额,DCCOM公司积极寻求与国内外知名企业的合作。通过与这些企业的合作,DCCOM不仅获得了更多的客户资源,还学习到了先进的管理经验和技术知识。这种合作模式使得DCCOM在激烈的市场竞争中保持了强劲的增长势头。

Dongguan City Niuhang Electronics Co.LTD公司的发展小趣事

在技术创新的基础上,Dongguan City Niuhang Electronics Co.LTD开始积极拓展市场。公司先后在安徽省池州市、江苏省扬州市和宿迁市等地设立生产基地,形成了覆盖全国的销售网络。同时,公司还加强品牌建设,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。随着市场的不断扩大,公司的销售业绩也实现了快速增长。

Elekon Industries公司的发展小趣事

随着业务的不断发展,Elekon开始寻求更广阔的市场空间。公司制定了全球化战略,积极开拓国际市场。通过参加国际展会、建立海外销售网络等方式,Elekon成功将产品打入国际市场,并赢得了众多客户的青睐。同时,Elekon还与国际知名电子企业建立了合作关系,共同研发新产品、开拓新市场。

Codeco Corporation Of Vermont公司的发展小趣事

随着电子行业的快速发展和变革,Codeco面临着新的挑战和机遇。为了应对这些变革,公司及时调整战略,加大在人工智能、物联网等领域的投入。通过与高校、研究机构的合作,Codeco不断吸收新的技术和理念,推出了一系列符合市场需求的创新产品。这些举措使得Codeco在行业中保持了领先地位。

GTE Microcircuits公司的发展小趣事
实现高频性能需要关注放大器的带宽和转换速率(Slew Rate)等参数。选择具有宽带宽和高转换速率的放大器是基础。此外,优化电路布局,减少寄生电容和电感的影响,以及采用适当的频率补偿技术也是提高高频性能的关键。
Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

问答坊 | AI 解惑

USB驱动请教各位

我用DDK做了一个USB驱动,已经能正常通讯了,但是在循环写Pipe1端口,写几次驱动就不响应了,调试发现停在status = KeWaitForSingleObject( &event, Executive, KernelMode, FALSE, NULL );,以下时通讯程序,这会是什么原因呢????   & ...…

查看全部问答>

高分求51单片机的程序一份

硬件电路图已有,求程序,汇编、C语言编写均无不可。求善人帮忙,有意联系 QQ:226600569 甚急!QQ在线等…

查看全部问答>

AMD风扇测速测温方法(兴趣)

AMD那根测速线是怎么测速测温的(没有资料可寻),就像DS18B20那样one—wire输出?输出格式是?先温度还是湿度,数据是怎么的格式…

查看全部问答>

EVC++下不支持GetRunningObjectTable( )函数?

在移植陆老师的SAMPLEPLAYER到WINCE下,但编译报不支持GetRunningObjectTable( )和CreateItemMoniker( )这两个函数,请问为什么?我自己导出的SDK包不全面?还是跟.NET组件加没加有关?我的SDK包没加.NET组件 ...…

查看全部问答>

急,程序不运行

我写好的程序,以前运行好好的,现在突然不运行了,在线调试发现经常执行到P2OUT=0xff;不确定,有时候是P4OUT = 0xff;就弹出"could not get target status";屏蔽这些出问题的语句后,程序能运行,下次可能变别的语句了.接上无线发射模块等外电路后,立 ...…

查看全部问答>

无线遥控

我是个点子初学者   我想做一个无线发送和接受的装置并且用遥控实现输入发送装置发送出去??请问我该用些什么芯片,电路如何设计??希望成本不要太高!!!!…

查看全部问答>

【MSP430共享】基于模糊自适应PID的污水处理PH值控制系统

针对污水处理中pH值对象的非线性 、 时变性以及不确定性等特点, 设计的污水处理pH值控制系统采用模糊自适应PID控制方法, 以MSP430单片机作为处理器核心实现。介绍了系统的工作原理、 控制器设计 、 硬件和软件实现方案, 并给出了测试和实验结果 ...…

查看全部问答>

STM32 v3.5固件库systick ms延时

《如何从STM32F10xxx固件库V2.0.3升级为STM32F10xxx标准外设库V3.0.0》一文中的“3.3.2 SysTick”讲到:在标准外设库中移除了SysTick的驱动,因此用户必须调用CMSIS定义的函数。CMSIS只提供了一个SysTick设置的函数,替代了STM32原有SysTick驱动的 ...…

查看全部问答>

如何从DSP和M4转到FPGA

以前我玩过DSP和M4,不知道怎么转到FPGA才好,原理图都看不懂... 怎么一个FPGA非要分成这么多个模块...…

查看全部问答>