深入浅出处理器(续)

一、一个工艺的问题

  • 处理器和内存所使用的半导体期间工艺不同

    V(处理器)>>>远大于>>>V(内存)

  • 工艺的差异导致了处理器与内存的速度差异

  • 数据处理时,处理器总是需要等待内存

二、程序访问的局部性

  • 在短时间内,处理器访问的存储空间是一个很小的范围
    1. 时间局部性
      • 某个存储单元在短时间内很可能被再次访问
    2. 空间局部性
      • 某个存储单元的邻近单元在短时间内也被访问

三、高速缓冲存储器的引入(cache)

  • cache是一种小容量高速存储器
  • cache的存取速度与处理器的运算速度几乎同量级
  • cache在现代计算机系统中直接内置于处理芯片中

四、cache解决方案

  • 在处理器和内存之间设置cache

  • 把内存中被频繁访问的指令和数据复制到cache中

  • 大多数情况下,处理器能直接从cache中取得指令和数据

在这里插入图片描述

五、问题

内存和cache之间如何映射?

六、直接映射法

  • 将cache和内存分成固定大小的块(如:512Byte/块)

  • 内存中的每一块在cache中有固定的映射位置

  • 映射公式为:

    Pos(cache) = 内存块号 % cache总块数

在这里插入图片描述

地址划分:

标记块内地址cache块号
t位b位c位

映射原理:

  • 根据访问地址的中间c位找到cache中的对应块
  • 比较地址的高t位是否和flag相同
    • 相同:直接读取数据
    • 不同:从内存中固执块内容

例:当前处理器需要访问内存地址:0X0240CH

  1. 地址划分:

    0000 00100100 0000 1100
    标记位块号:块内起始地址块内地址
  2. 根据0010直接访问cache中的第0010块

  3. 匹配第0010块的flag是否等于0000001

    • 相等——访问0010块中1100处的数据
    • 不等——从内存中读取块数据,更新cache

七、直接映射法的特点

  • 优点
    • 映射过程简单,所需耗时短
  • 缺点
    • 当短时间内访问的地址有同余冲突时,会造成缓存失效

八、cache原理的软件应用

  • 项目背景:日志调试工具(Log Dog)

    • 解决的问题:
      • 日志对系统效率影响巨大,且不容易分析查看
      • 现有的日志无法高效的打印二进制数据
      • 自定义日志内容的解析方式
      • 对日志进行分类,并控制日志是否输出
  • 出现的性能问题

    • 当短时间内有大量日志需要打印时,性能无法满足调试需要
  • 最终的解决方案

    • 根据cache原理,设置二级缓存机制,尽量避开查找
message ==> type ==> int
    每个工程师都可以自定义日志类型
    自定义解析方式  ==> Lua Script
message ==> Lua Script(parser)
Script ==> id ==> int

void process(Message* msg)
{
    static Parse* cache1 = NULL;
    //二级缓存机制
    static Parse* cache2 = NULL;
    
    if((cache != NULL) && (cahe->id == message->type))
    {
        cache->handle(msg);
    }
    else
    {
        Parser* p = find_parser(msg->type);

        if(p != NULL)
        {
            p->handle(msg);
            cache = p;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值