多模低位交叉编址

首先要明白什么是多体并行存储器:就是采用多个模块组成的存储器,每个模块有着相同的容量和存储速度,各模块都有独立的地址寄存器,数据寄存器,地址译码器和读写电路。每个模块都可以被看做一个独立的存储器。

低位交叉编址是与多模高位交叉编址相对而言的,高位实际上还是相当于串行工作的,存储器的带宽受到了限制。而低位交叉编址用用低位表示体号,高位表示地址,结合流水线de 使用,性能非常的好。

定性分析:此时假设有4个有连续四个地址0-4的字,存放在该存储体中,则相当于一字存储在一个体中,这样由于每个体都有自己独立的处理电路,就可以进行流水线操作了。

假设模块存储周期是T,总线传输周期是r,那么现在的目标就是在T内,多个模块全都可以被存取,但是总线不能这么快,总线上一次只能给一个模块使用,一次一次传输,每次传输一个字。

所以这里就牵涉出一个存储体的个数问题,设存储体个数为m,则m>=T/r

这样也就是说没经过r的时间,启动一个新的体工作。假设现在T=100ms,而r为20ms,如果现在只有4个体,每20ms启动一个新的体,当经过80ms又回到第一个体的时候,人家的数据传输还没有结束呢,所以流水线被迫中止。如果有6个体,则经过120ms才能回到第一个体,妥妥的。

这里的话,考题一般都是直接令等号,也就是m=T/r这这也是为了简便我们计算吧。

此段乱入:在写这里的时候,发现自己陷入了一个怪圈,模块存储周期是T,总线周期是r,为什么T就是大于r呢?模块存取一个字的存储周期为T,总线传送周期为r,那字没准备好,我在总线上传的是什么????我现在的问题就是既然总线一个周期传输一个字,一个模块的存储周期也是传输一个字,天,我这到底是怎么了????????

回归正题:纠结的时候换换脑子,现在想来,发现是我一个问题没有想明白,就是存储周期的概念。

存储周期的定义:连续启动两次读或写操作所需间隔的最小时间

问题就出在这个图里,当经过了时间tA以后实际上有效数据已经输出到了数据线上,需要这些数据的部件可以得到数据了,然而度操作并没有结束,因为各种实际因素的需要,这些数据信号要在线路上停留一段时间,地址线上的地址失效时刻才是读周期真正完成它使命的时刻。所以基本观点:读时间远小于读周期。

现在就可以理解了吗,没错,我内容是给你了,是一个字,但这并不妨碍我的周期没有结束。

每经过r启动一个体,现在T=4r,所以,当经过第一个T的时候,完成了第一个体的存储周期,之后,每经过r有一个存储周期完成。

这里讨论的仅仅是交叉存储器连续读出4个字所需的时间,若再加上总线传输的时间,之前体工作与数据传输是并行的,只有在最后的一块,还需要加上总线传输的时间。

不对,这样的话又错了!

再订正:

考虑流水线的情况,实际上在前4r的时间,总线上是没有信息传送的,当经历过这段时间之后,每隔时间r有一个存储体准备好了,把字送到了总线上,当然这个时间与后者准备的时间是并行的,只有当最后一次操作时,总线传输时间是另外加的!(我想这两句话是我说了这么多的核心)

下面来分析一道真题

例1:source:2013年43题

分析:(1)第一问是送分题,cpu主频为800MHZ,所以时钟周期为1.25ns

                                       总线时钟频率为200MHZ,所以总线时钟周期为5ns

总线的带宽即一个总线周期内存储字长4B,所以总线带宽为800MB/s

(2)cache缺失的时候,也就是需要32B的数据,一次突发传送32B,所以一个读突发传送就好了。

(3)首先传送地址 5ns

存储器准备数据+传送数据,这是一个并行操作,相当于对一个体的一个字而言,需要经过45ns的时间,才能从主存传送至cache。

这部分的时间为 45+(8-1)*5=80ns

总的时间为85ns。

(4)对于程序的执行过程而言,一定是访问cache的,如果现在访问cache没有访问到,访问主存,依然要把内容送入cache中,所以所有的指令都需要访问cache,再加上没访问到额外处理的时间

100条指令

100*4*1.25+ 100*1.2*0.05*85=500+510=1010ns

总结:本题考的也是蛮细的

猜你喜欢

转载自blog.csdn.net/weixin_42682806/article/details/84779867