Textbook:
《计算机组成与设计——硬件/软件接口》 HI
《计算机体系结构——量化研究方法》 QR
最后一节来看看如何实现parallelism
在多处理器系统中,每个处理器(core)可能有自己专属的cache,然后多处理器共享memory。在这种情况下,当多个线程(核心)对同一个变量进行读写时,就会出现不同cache中该变量的值不一样的情况(取决于cache是write back还是write through,以及相关cacheline被evict的时间等等),这样就会导致程序运行结果出错了。
因此我们需要保证reading an address should return the last value written to that address。
这里涉及到两个问题:
假设一个机器有两个Processor P和Q。一个coherent memory system需要保证以下三个性质:
Thread(1){ P.write(X,3) P.read(X) //这里只有单线程,Return 3 }
Thread(1){ | Thread(2){ Q.write(X,5) | P.read(X) //若P的read发生在Q的write之后,就要保证Return 5 } | }
Thread(1){ | Thread(2){ Q.write(X,4) | P.read(X) Q.write(X,8) | P.read(X) } | } //要保证read出来X的顺序也是4和8
其实和分布式系统的一致性很像....
原文:https://www.cnblogs.com/pdev/p/12004697.html