阅读文章:Dubois M . Memory Access Buffering in Multiprocessors[C]// International Symposium on Computer Architecture, 1986. ACM, 1986.
摘要
在高度流水的机器中,指令和数据在处理器和高速缓存中将被预取和缓存。这样做是为了减少平均访存延迟并且可以利用内存的交错性。无锁的高速缓存被设计为了避免处理器由于cache miss而阻塞。写缓存经常被包括在流水线机器中为了防止处理器因为写操作而等待。在一个共享内存的多处理器中,缓存访存请求有很多好处,因为每一个访存请求不得不通过内存到处理器的互连并且每一个访存都需要与其他处理器发出的访存请求竞争。同时,缓存访存请求会造成逻辑问题对于多处理器来说。这些问题将会被加剧当每一个处理器有一个私有内存且存储共享可写的数据,例如在一个基于高速缓存的系统又或是在一个拥有分布式全局内存的系统中。在这篇文章中,分析了在共享内存多处理器中缓存访存请求的好处和问题。文中表明缓存的逻辑问题与同步问题直接相关。文章也提出了一个简单的模型来评估由于缓存带来的性能提升。
1.Introduction
- 为了满足数据处理的需求,共享内存的多处理器系统成为趋势;
- 在多处理器中处理器连接到共享内存的互连比单处理器要复杂很多,因此多处理器中处理器到共享内存的传递会更慢,访存冲突和访问延迟问题能够通过分别连接一个本地内存到每个处理器解决。本地内存被作为高速缓存,在多处理器运行的时候动态分配并且关联的分配地址,如果本地内存是一个处理器物理地址看见的一部分,则它将在编译或者装载的时候分配并且随机的分配地址。本地内存可能包含共享数据,存在多个相同数据的副本不一致的问题,这个问题通常由硬件解决。一个处理器写入本地高速缓存的时候发送无效信号给所有拥有一个包含对应改变了的字的块的处理器的本地高速缓存,这样在随机访问到该块的时候,就不会出现多副本不一致问题了,但是本地内存必须被所有处理器编址。(?要所有处理器分别知道别的处理器的本地高速缓存地址)
- 三种不同的多处理器系统被研究,他们代表了共享内存多处理器系统:
- 1.共享全局内存系统,一个多处理器带有共享全局内存和私有的本地内存,共享内存可以被所有的处理器访问,本地内存与具体的处理器关联且不包含任何共享数据;
- 2.分布式全局内存系统,一个多处理器带有由本地内存组成的分布式全局内存。本地内存包含全局和私有数据,且可以被随机访问;图2a与2b的区别在于,对于2a来说远程访问的buffer就是处理器预取的buffer,而2b中处理器远程访问缓存用的buffer独立于处理器预取存储用的buffer;
- 3.基于高速缓存的系统,一个多处理器带有共享内存和私有高速缓存。共享内存包含代码和数据,高速缓存被关联访问。高速缓存可以包含或不包含共享数据,文中仅考虑写透和写会高速缓存;其中根据无效信号存储的位置是在处理器预取和存储用的缓存中还是用独立的缓存存储而分为两中结构。