硬件级别可见性问题与MESI协议.pdfVIP

  • 0
  • 0
  • 约1.94千字
  • 约 2页
  • 2026-08-18 发布于北京
  • 举报

从硬件的级别来考虑一下可见性的问题

每个处理器都有自己的寄存器(register),所以多个处理器各自运行一个线程的时候,可能

导致某个变量给放到寄存器里去,接着就会导致各个线程没法看到其他处理器寄存器里的变

量的值修改了

可见性的第一个问题,首先,就有可能在寄存器的级别,导致变量副本的更新,无法让其他

处理器看到

然后一个处理器运行的线程对变量的写操作都是针对写缓冲来的(storebuffer)并不是直接

更新主内存,所以很可能导致一个线程更新了变量,但是仅仅是在写缓冲区里罢了,没有更

新到主内存里去

这个时候,其他处理器的线程是没法读到他的写缓冲区的变量值的,所以此时就是会有可见

性的问题,这是第二个可见性发生的场景

然后即使这个时候一个处理器的线程更新了写缓冲区,将更新同步到了自己的高速缓存

里(cache,或者是主内存),然后还把这个更新给了其他的处理器,但是其他处理器可

能就是把这个更新放到无效队列里去,没有更新他的高速缓存

此时其他处理器的线程从高速缓存里读数据的时候,读到的还是过时的旧值

可见性发生的问题

如果要实现可见性的话,其中一个方法就是通过MESI协议,这个MESI协议实际上有很多

种不同的时间,因为他不过就是一个协议罢了,具体的实现机制要靠具体底层的系统

文档评论(0)

1亿VIP精品文档

相关文档