PC_多模块存储器
创始人
2024-04-12 06:48:31

文章目录

    • 多模块存储器🎈
      • 单体多字存储器
      • 多体并行存储器
        • 高位交叉编址(顺序存储)
        • 低位交叉编址(交叉存储)
          • 地址结构
          • 流水方式存取
      • 例题

多模块存储器🎈

  • 多模块存储器是一种空间并行技术
    • cpu的速度比存储器快,如果同时从存储器中读取n条指令,可以更充分利用cpu资源
    • 利用多个结构完全相同的存储模块的并行工作来提高存储器的吞吐率
    • 常用的方式有2种
  • 将地址分为两部分低地址
    • 高地址
    • 低地址

单体多字存储器

  • 一个存储体的每个存储单元包含m个字(总线宽度也为m字)
  • 一次并行读出m个字
    • 前提: 地址必须顺序排列并且处于同一个存储单元
    • 在一个存取周期内,从同一地址取出m条指令,然后逐送至cpu
      • 相当于,1m\frac{1}{m}m1​个存取周期cpu就可以取得一条指令

多体并行存储器

  • 此处将存储体芯片也称为模块
    • 每个模块具有相同的容量和速度
    • 假设存储器有m个模块,分别记为M0∼Mn−1M_0\sim{M_{n-1}}M0​∼Mn−1​
    • 每个模块具有k个存储单元

高位交叉编址(顺序存储)

  • 程序按照体内地址顺序存放(一个存储体放满后再存入下一个存储体也叫顺序存储)

  • 地址结构

    • 高位地址表示体号
    • 低位地址表示体内地址
  • 这种方式通过合理调动,使不用的请求原同时访问不同的存储体,可以实现并行工作

    • 例如
      • 当一个存储体正在和cpu交换信息时,另一个存储体在通过DMA方式直接和外部设备进行直接存储器访问
      • 实现两个体并行工作
      • 由于体内地址连续,有利于存储器扩充
  • 这种方式依然是串行存取,不能提高存储器的吞吐率

低位交叉编址(交叉存储)

  • 多体并行系统:
    • 采用多体模块组成的存储器
    • 每个模块具有相同的容量存取速度
    • 各模块各自都有独立的
      • 地址寄存器MAR
      • 数据寄存器MDR
      • 地址译码器
      • 驱动电路
      • 读写电路
      • 可以并行工作/交叉工作
    • 并行工作:
      • 同时访问N个模块,同时启动,同时读出
      • 完全并行地工作
      • 但是传送的时候,受到数据总线的限制,是串行的传送的(分时传送)
地址结构
  • 高地址为存储体的体内地址

  • 低地址为存储体的体号

  • 通常体内地址位数远远多于体号(地址)(好几个数量级)

  • 程序连续地存放在相邻xianglin的模块中(因此,采用此方式编址的存储器也叫交叉存储器)

  • 每个模块按照modm\mod{m}modm交叉编址(也称低位交叉编址为模m编址)

    • m是参与编址的存储体模块数

    • 通常m是2的方幂,可以使得电路简单

    • m也可以是质数,有利于减少存储器冲突

    • 模块号i=单元地址/m模块号i=单元地址/m模块号i=单元地址/m

      • KaTeX parse error: Undefined control sequence: \set at position 5: i\in\̲s̲e̲t̲{0,1,\cdots{m-1…
    • 地址为0,m,⋯(k−1)m0,m,\cdots{(k-1)m}0,m,⋯(k−1)m(等差数列)的存储单元位于同一个模块M0M_0M0​

      • 假设每个模块有k个存储字(存储单元)
      • Mj[i]=j+i⋅mM_j[i]=j+i\cdot{m}Mj​[i]=j+i⋅m
        • j∈{1,2,⋯,m}j\in\{1,2,\cdots,m\}j∈{1,2,⋯,m}
          • jjj表示存储体编号(从0号开始)
        • i∈{0,⋯,k−1}i\in\{0,\cdots,k-1\}i∈{0,⋯,k−1}
          • iii表示存储体内的存储单元编号,从0号开始
        • 例如:
          • 0号存储体的各个单元的地址分配:M0[i]=0+mM_0[i]=0+mM0​[i]=0+m
    • index of Storage UnitM0M_0M0​M1M_1M1​M2M_2M2​M3M_3M3​
      00123
      14567
      2891011
      312131415
      k−1k-1k−14(k−1)4(k-1)4(k−1)1+4(k−1)1+4(k-1)1+4(k−1)2+4(k−1)2+4(k-1)2+4(k−1)3+4(k−1)3+4(k-1)3+4(k−1)

  • 采用低位交叉编址方式,可以在不改变每个模块的存取周期的前提下,采用流水线的方式并行存取
流水方式存取
  • 模块字长等于数据总线宽度

  • 模块存取周期为T

    • cpu每次访问一个存储体(多模块中的一个)

    • 存取周期:从开始访问到结束对某个模块的访问需要的时间为存取周期Tc,简记为TT_c,简记为TTc​,简记为T

  • 传输周期为Tr,简称为rT_r,简称为rTr​,简称为r

    • 将访问到的数据通过数据总线从存储器传输到cpu(MDR)中需要的时间,
  • 假设

    • T=200ns;
      • 每个存储体的存取周期
    • r=50ns
      • cpu经过时间r的延迟后,启动下个模块的访问

        • 之所以把延迟定为r,是因为

        • 如果启动2个存储模块的时间间隔小于总线传输周期,那么会造成总线冲突

        • 它们间隔不能够比总线传输周期r小(总线的分时特性)

      • 同时由于每个存储体的性能一样(存取周期一样)

        • 所以对应于它们的启动时间,间隔也是至少为r
      • 又考虑到cpu可能对同一个模块的多次访问,那么第二次访问到来之前必须保证前一次的访问任务结束

      • 也就是说,第二次访问同一个模块MiM_iMi​的时间距离第一次的时间间隔至少为存取周期TcT_cTc​

      • 基于上述分析,可以得出使得流水访问达到最高效率的条件:

        • 存储器交叉模块的存储体数量至少为m=⌈T/r⌉⩾T/rm=\lceil T/r\rceil\geqslant{T/r}m=⌈T/r⌉⩾T/r,这个值称为交叉存储器的交叉存取度
        • 满足上面的约束条件下,对于同一个模块MiM_iMi​的连续两次访问间隔将不低于存取周期T
          • 启动同一个模块的间隔为Δt=mr=⌈T/r⌉r⩾(T/r)r=T\Delta{t}=mr=\lceil T/r\rceil{r}\geqslant{(T/r)r}=TΔt=mr=⌈T/r⌉r⩾(T/r)r=T
        • 也就不要造成冲突,可以做到流水线不间断
          • 否则上一次访问的数据还没有传送出来,就开始新的访存操作,会导致错误
          • cpu中的中断机构也不允许这种情况发生(取值指令执行阶段尚未结束就被新的访存请求打断)
        • 理想情况下,交叉存储器存取m个字的时间为:
          • t=(m−1)r+Tt=(m-1)r+Tt=(m−1)r+T
          • 设访问第一个字的存取周期的时间段为[s,e][s,e][s,e]
          • 访问第m个字的存取时间段为[sm,em][s_m,e_m][sm​,em​]
            • sm⩽es_m\leqslant{e}sm​⩽e
          • 满足关系:时间片段sme∈[0,r)时间片段s_{m}e\in[0,r)时间片段sm​e∈[0,r)
    • 模块字长等于数据总线的宽度,则每个存储字可以一次性传送完毕
    • cpu对m=4体交叉存储器的访问采用流水的方式访问
    • 那么连续访存的大致过程
      • 访问第一个存储体的时间点是0
      • cpu将它要读取的单元告诉给存储器后,有存储器的控制电路将数据传输给CPU
        • 花费的主要时间在于存储器内部的工作电路上,这部分时间cpu无法为其加速
        • 多体交叉存储器的每个芯片模块都具有独立的控制电路
      • 时间过了200+50ns,cpu取得第一个数据(包括数据总线上的传输时间)
      • 但是如果仅仅计算存储器取出数据(而不包括传输到cpu的MDR寄存器中的这段传输时间)
        • 那么这种经常用来计算存储器带宽
        • 🎈对于交叉存储器流水线存取时间的计算,是要考虑到访问同一个存储体的时间间隔,要考虑传送周期要区别开来.
        • 访问存储器的存取周期一般都明显大于总线传输周期
      • 如果考虑传送到MDR的这段时间:
        • 对于顺序串行访问存储器,在启动第二次访存前,总线已经将上次读取的数据通过数据总线,传输到MDR完毕,不需要而外加上传输周期(除了访问最后一个字的时候)

例题

  • 假设存取器容量为32字(字长为64bit=8Byte)
    • 模块数为m=4
    • 分别采用顺序方式和交叉方式进行组织
    • 存取周期T=200ns
    • 总线传输周期r=50ns
    • 在连续读出m个字的情况下,求顺序存储器和交叉存储器各自的带宽
  • 分析:
    • 读出m=4个字的总数据量为q=4×64=256bitq=4\times{64}=256bitq=4×64=256bit
    • 顺序存储器读取时间为t1=mT=4×200=800nst_1=mT=4\times{200}=800nst1​=mT=4×200=800ns
    • 交叉存储器读取时间:
      • 交叉存取度mD=⌈T/r⌉=4m_D=\lceil T/r\rceil=4mD​=⌈T/r⌉=4
      • 恰好等于给定的模块数m=4
      • t2=T+(m−1)r=200+3×50=350nst_2=T+(m-1)r=200+3\times{50=350}nst2​=T+(m−1)r=200+3×50=350ns
    • 各自的带宽
      • W1=q/t1=32×10b/sW_1=q/t_1=32\times{10b/s}W1​=q/t1​=32×10b/s
      • W2=q/t2=73×107b/sW_2=q/t_2=73\times{10^7}b/sW2​=q/t2​=73×107b/s

相关内容

热门资讯

新华时评:霸权行径只会让全球陷... 新年伊始,美国接连采取单边行动,将世界搅得不得安宁:突袭委内瑞拉,强行控制委总统马杜罗夫妇并将他们带...
浙江永强实控人谢建强拟减持24... 1月13日,浙江永强公告,实际控制人谢建强计划在2026年2月4日至2026年5月3日期间,通过大宗...
红墙股份实控人刘连军拟减持21... 1月13日,红墙股份公告,实际控制人刘连军计划在2026年2月5日至2026年5月4日期间,通过竞价...
柏诚股份高管朱晨光拟减持2.4... 1月13日,柏诚股份公告,副总经理朱晨光计划在2026年2月4日至2026年5月3日期间,通过竞价交...
美国海上风电项目冻结引发溢出效...   风电企业高管警告美国冻结海上风电项目将产生全球影响,多家风电开发商已提起诉讼;挪威国家石油公司(...