轩尼诗 - 帕特森书中对计算机体系结构(定量方法5天)说,在与多个存储体的矢量架构,可如果满足以下条件时发生银行冲突(第279 5天):条件的内存库存的向量处理器的内存访问冲突
(银行数)银行/最小公倍数(数,步幅)<银行忙时
不过,我觉得应该是GreatestCommonFactor代替LCM,因为内存冲突会发生,如果有效银行数量你已经少于繁忙时间。通过有效的银行数量,我的意思是说 - 假设你有8家银行,而且有2家银行。然后有效地你有4家银行,因为存储访问只会排在四家银行(例如,假设你的访问都是偶数,从0开始,那么你的访问将排在银行0,2,4,6)。
事实上,这个公式甚至失败右它下面给出的例子。 假设我们有8个存储体,其中6个时钟周期的忙时间,总存储器延迟时间为12个时钟周期,需要多长时间才能完成64步矢量加载,步长为1? - 这里他们计算时间为12 + 64 = 76个时钟周期。但是,根据给定的条件会发生内存银行冲突,所以我们显然不能在每个周期访问一次(方程式中的64)。
上午我得到它错了,或者有错误的公式设法生存5个版本本书的(不太可能)?
这听起来很正确的,如果它的工作原理是英特尔的Sandy Bridge的L1高速缓存,其中每对缓存线(128B总)在不同线路分为八个16B银行,并发负载从同一家银行是银行的冲突。 (但是同一行中同一个银行的两次读取可能发生在同一个周期内)。 [Agner Fog's microarch pdf](http://agner.org/optimize/)对此进行了描述。 Haswell和后来没有银行冲突,所以这仅适用于SnB和IvB,前两代Intel微架构支持每时钟两次读取。 –