27. 什么是MESI协议?MESI这几个字母分别代表什么意思?
在一个处理器系统中,不同CPU内核上的高速缓存和内存可能具有一致性问题,为了维护高速缓存一致性,必须跟踪每个高速缓存行的状态。MESI属于总线监听类协议。
其中M表示修改
E表示独占
S表示共享
I表示无效
28.什么是高速缓存伪共享?请阐述高速缓存伪共享发生时高速缓存行状态的变化情况,以及软件应该如何避免高速缓存伪共享。
高速缓存伪共享是指处理器在访问数组某个成员时,处理器会把相邻的数组成员都加载到高速缓存中,从而加快数据访问,但是,多个处理器同时访问一个高速缓存行中的不同数据会带来性能问题,称为高速缓存伪共享。
29. 请简述TLB的查询过程。
处理器发出的虚拟地址首先发送到TLB,TLB利用虚拟地址中的索引域和标记域来查询TLB,如果命中,那么得到虚拟地址对应PFN,PFN和虚拟地址中的页内偏移组成物理地址。
30. 在RISC-V体系结构中,刷新所有处理器的TLB是如何实现的?
在RISC-V体系中需要使用TLB广播来刷新所有处理器。1)执行SFENCE.VMA本地TLB刷新;2)向其它处理器触发IPI;3)其它处理器执行SFENCE.VMA;4)其它处理器发送信号给本地处理器,告知IPI执行完成。
31. 为什么操作系统在切换页表项时需要刷新对应的TLB项?
TLB类似VIVT类型的高速缓存,会出现多个虚拟地址映射到一个物理地址引发的重名问题,也会出现同名问题,因此,页表项切换时需要刷新对应的TLB项。
32. 什么是LL/SC机制?
连接加载/条件存储指令
第一部分LL表示从指定内存地址读取一个值,处理器会监控这个内存地址,看其他处理器是否修改内存地址
第二部分SC表示如果这段时间内其他处理器没有修改该内存地址,则将新值写入该地址。
因此,一个原子的LL/SC操作就是通过LL读取值,进行一些计算,并通过SC来写回。如果SC失败,那么重新开始整个操作。LL/SC指令实现无锁算法与“读-修改-回写”的原子操作。
33. 如果多个核同时使用LR和SC指令对同一个内存地址进行访问,如何保证数据的一致性?
采用独占监视器或独占监视器与高速缓存一致性协议保证数据一致性。
|