1. 在组相联cache中,用于替换cache line的算法有哪些?lru(least recently used)算法:该算法会跟踪每个cache line的age(年龄)情况,并在需要时替换掉近期最少使用的cache line。mru(most recently used)算法:这与lru相反,最年轻的cache line会优先被替换掉。plru(pseudo lru)算法:这与lru相似,它没有age跟踪cache line(这样开销较大),只有1个或2个bit来跟踪cache line使用情况。lfu(least frequently used)算法:该算法会跟踪一个cache line访问的频率,并决定替换使用次数最少的cache line。random replacement算法:该算法不存储任何信息,当需要替换时随机选择一个cache line。2. cache coherency的问题是什么?在smp(shared multiprocessor systems)中,多个处理器都有自己的cache,同一数据(同一地址)的多个副本可能同时存在于不同的cache中。如果允许每个处理器自由更新cache,则可能导致数据一致性被破坏了。例如:如果允许两个处理器向相同的地址写入值,那么在不同的处理器上读取相同的地址可能会看到不同的值。
3. 基于snoop的缓存一致性协议和基于directory的缓存一致性协议有什么区别?在基于snoop的一致性协议中,来自处理器的数据请求被发送到共享系统里的所有其它处理器。其它处理器根据这个请求查看自己是否有数据的副本,并做出相应的响应。因此,每个处理器都试图保持内存的一致性视图。
在基于directory的一致性协议中,directory用于跟踪哪些处理器正在访问和缓存哪些地址。任何发出新请求的处理器都将检查该directory,以了解是否有任何其它处理器用于数据副本,然后可以向该处理器发送点到点请求,以获取最新的数据副本。
两者的优缺点为:基于snoop的一致性协议用于较小的系统的话,如果有足够的带宽用于传递请求,它会更快。但对于较大的smp系统不具有可伸缩性,因此需要为每个请求广播消息,可能会使系统过载阻塞。基于directory的一致性协议由于在发送消息之前需要查找记录的表,可能会有较长的延迟。但它没有广播消息,可伸缩性更好,通常用于较大的smp系统中。
4. 什么是mesi协议?mesi协议是具有多个write-back 类型cache的设计中最常用的cache一致性协议。mesi表示在所有cache中跟踪每个cache line并用于响应snoop请求的状态。这些不同的状态可以解释如下:
m(modified):表示cache line数据相对于memory数据被修改过了,为dirty的。e(exclusive):此状态表示cache line数据相对于内存是clean的,且只在该cache中存在。exclusive属性允许该cache所在的处理器对该cache line进行写操作。s(shared):该状态表示cache line被多个cache共享,并且相对memory也是clean的。由于这是在所有cache共享的,因此协议不允许直接对该cache line进行写操作。i(invalid):该状态表示cache line无效,没有任何有效数据。当cache line处于除invalid之外的任何状态时,cache都可以处理读请求。当cache line处于modified或exclusive状态时,才可以处理写请求。5. 什么是mesif和moesif协议?这两个协议都是mesi协议的扩展,引入了两个新的状态”f”和”o”,解释如下:
f(forward):f状态时s状态的一种特殊形式,表明cache应该通过转发数据来充当给定cache line的任何请求的指定反馈者。如果系统中有多个cache具有处于s状态的同一cache line,则将其中一个指定为f状态,以便为来自不同处理器的新请求转发数据。该协议确保,如果任何cache保存的cache line为s状态,那么最多只有一个(其他)cache保存的cache line为f状态。这种状态有助于减少对memory带宽的占用,因为没有f状态,即使一条cache line在多个cache中处于s状态,它们都不能将数据转发给请求读或写的不同处理器。(请注意,cache中的s状态cache line只能服务于相同的处理器读取)o(owned):o状态时一种特殊的状态,它是为了在不需要写回memory的情况下在系统的不同cache中移动修改过的或dirty的数据而引入的。如果cache line还与其它可以使cache line保持s状态的cache共享,则cache line需要从m状态转换到o状态。o状态有助于将修改后的数据推迟写回memory,直到真正需要时再写。6. 什么是rfo?rfo代表read for ownership。这是cache一致性协议中的一种操作。它是由处理器试图写入共享或无效状态的cache line时发出的,这将导致所有其它处理器将该cache line的状态设置为invalid。rfo是意图写入该memory地址的读操作。因此,该操作是排他的,它将数据读到cache中,并使持有该memory地址的所有其它处理器的cache无效掉这个cache line。
零售业迎来数字化变革,新兴技术为新零售赋能
通信行业资讯更新:中兴\联通积极应对5G
iphone8什么时候上市?供应链又爆猛料
全新AirBook:超高性价比的轻薄本,魅力不输苹果、惠普!
自制Wifi路由器V3的UPS图解
在组相联cache中,用于替换cache line的算法有哪些?
对沉浸式浏览体验而言,2018年正准备成为丰收的一年
如何使用柔性电路(优势/封装/可靠性/功能)
SFQ系列三倍频电源发生器
锂电池故障的维修方法
韩国运营商或将在2022年启动面向个人智能设备的mmWave 5G网络
如何将私家车改造为一辆电动车 (EV)
事务级建模使IP加速
电机设计中对于GaN HEMT的使用
冰箱门开限时提醒电路,The door opened reminder
恩智浦推出GreenChip电源IC系列
恒讯科技分析:如何在Linux上使用rm命令删除文件和目录?
铁硅铝磁环电感通电后发热严重如何解决
星形接法为什么是220v 电机星形接法和三角形接法优缺点
微软+骁龙835=新Windows10 台式机来了!就问Intel你怕不怕?