• CPU架构及并发编程基础(一)


    一、intel cpu发展计划tick-tock

    Tick-Tock是Intel发展微处理器芯片设计制造业务的一种战略模式。Intel指出,每一次处理器微架构的更新和每一次芯片制程的更新遵循“Tick-Tock”规律,名称源于时钟秒针行走时所发出的声响。每一次“Tick”代表着一代微架构的处理器芯片制程的更新,而每一次“Tock”代表着在上一次“Tick”的芯片制程的基础上,更新微处理器架构提升性能。一般一次“Tick-Tock”的周期为两年,“Tick”占一年,“Tock”占一年。

    二、现在CPU微架构

    三、cpu cache

    一个例子,下面loop1和loop2 哪个执行快

    int []arr = new int[64 * 1024 * 1024];
    // Loop 1
    for (int i = 0; i < arr.Length; i++) arr[i] *= 3;
    // Loop 2
    for (int i = 0; i < arr.Length; i += 16) arr[i] *= 3;

    第二个循环只执行了第一个1/16的计算量,但是两个循环在计算机上的耗时是差不多的70-80ms;造成这个问题的原因在于cpu cache line是64bytes,每次从内存加载64Bytes数据到cache;

    3.1 Nehalem(三级)结构              

     L1(每核独有) 数据32k 指令32K分开

    L2(每核独有) 256K
    L3(共享) 8M





    四、cache和内存的关联方式(associativity)

    一类是全关联cache(full associative cache),一种是直接关联cache(direct mapped cache),还有一种是N路关联cache(N-ways associative cache)。

    全关联(每个内存块可映射到任意cache line),冲突最低,定位慢;直接关联(每个内存块映射到固定的cache line),定位最快,冲突严重;N路关联折中。

    下图是8路关联 cache line定位,共64个set:

    其中:

    index用于定位set

    tag用于在set中定位cache line

    offet在cache line中定位数据

     五、cache一致性协议MESI

     cache一致性问题描述:

     

    步骤2 update时,根据一致性协议,会先发送Invalid消息到总线,失效core1的cache及RAM;core1读取Bar时,发现Invalid状态后,会向总线请求,core2会发送Bar=2给core1的cache。

     MESI提供cache一致性保证,表示cache对应的四种状态及状态迁移。

     Invalid:无有效数据

    Shared:与memory有一致数据,读

    Modified:更新数据,与memory不一致

    Excusive:与memory有一致数据,单点持有;

     
  • 相关阅读:
    动态规划_leetcode70
    动态规划_leetcode64
    动态规划_leetcode63
    PHP处理base64编码字符串
    PHP解决h5页面跨域
    PHP对象转数组
    jQuery 正则
    mysql重置密码
    yii框架学习(获取插入后的id)
    nginx 之 root和alias
  • 原文地址:https://www.cnblogs.com/happyliu/p/6683927.html
Copyright © 2020-2023  润新知