zoukankan      html  css  js  c++  java
  • Cache


    title: Cache
    tags: ARM
    date: 2018-11-04 12:52:02

    Cache与写缓冲

    引入

    Cache实际上也是一块存储空间,最大的优点就是速度快.CPU和SDRAM通信速度慢,取指令,读写数据都需要等待,所以中间出现了一个Cache用来解决这个问题.计算机一般有多级Cache, 查看下自己的电脑如下:

    mark

    关于速度的对比,寄存器>1级缓存>n级缓存>sdram

    参考文档 https://blog.csdn.net/qq_21125183/article/details/80590934

    概述

    程序具有局部性的特性,cache就是利用这种局部多次访问的特性,将指令或者数据暂存一份到Cache中,下次访问速度上就会提高很多.

    • 时间局部性:在同一段时间里,有极大的概率访问同一地址的指令或数据
    • 空间局部性: 有极大概率访问到相邻空间的指令/数据

    当使用Cache的时候,CPU假设需要读取A的内容,实际上回缓存大于A地址的内容,会缓存A到Cache Line大小的内容到Cache中.Cache Line可以简单的理解为CPU Cache中的最小缓存单位。2440中这个单位是32字节.

    填充与丢弃

    1. 当cache为空时,总是能读取进来并存储
    2. 当cache满的时候,会有一定的算法丢弃某些存储,填充新的,具体的算法不做研究

    工作种类

    2440中cache与写缓冲器(write buffer) 一同工作,凡是从Cache中向内存中写数据,都需要经过写缓冲器..有以下几种组合:

    1. 不使用cache与writebuff
    2. 只使用Write bufer,这个时候cpu直接写数据到writebuf,然后write buf 同步到实际内存
    3. 使用cache和buffer,使用写通的方式,其实就是写writer buf 后马上写到实际内存
    4. 写回的方式,写到 write buf后并不马上更新到实际内存,而是等待一定的时机后写入内存

    mark

    1541309325078

    启用

    指令cache是可以在不开mmu的情况下打开,修改协处理器即可

    enable_icache:
    	/* 设置协处理器使能icache */
    	mrc p15, 0, r0, c1, c0, 0
    	orr r0, r0, #(1<<12)  /* r0 = r0 or (1<<12) */
    	mcr p15, 0, r0, c1, c0, 0	//吧修改好的r0写给cp15的c1寄存器
    	mov pc, lr
    
  • 相关阅读:
    再谈 Devstack(Rocky)
    记一次性能测试与优化经历
    Nova rebuild for boot from volume issue
    OpenStack RPM Sample 解析
    [Cinder] 存储 Qos
    Octavia Rocky UDP 负载均衡功能试验
    Keepalived + LVS-NAT 实现高可用四层 TCP/UDP 负载均衡器
    LVS 四层 TCP/UDP 负载均衡器
    集群的定义以及类别定义
    对程序员又了解了一些
  • 原文地址:https://www.cnblogs.com/zongzi10010/p/10023644.html
Copyright © 2011-2022 走看看