尊重劳动成果,转载
请注明出处!!!
请注明出处!!!
请注明出处!!!
相关文章:
存储器相关概念
存储扩展(一):字扩展
存储扩展(二):位扩展(从位扩展到奇偶分体)
存储扩展(三):总结
文章目录
存储容量字扩展
介绍
什么是存储容量字扩展?看如下问题:
两片4x8bit的C组成一个8x8bit的整体,存储单元的数目增加了,容量也就增加了。
通过增加存储单元数来扩大容量,称为字扩展。(数据总线的位数与编址单元的位数相等的大前提下,本文都是基于这个大前提)
那么问题来了,
需要几块?
数据总线怎么连接,
地址总线怎么连接,
片选信号怎么连接?
问题分析
需要几块?
数据总线怎么连接
总线怎么连:分配问题、对应问题
数据总线8位,芯片数据引脚也有8个,不存在分配问题。
D7-D0对应存储器的D’7-D’0有8!种一一对应的方法。这些对应方法是等效的,比如说1100 1010b(D7-D0)存在存储器中是0101 0011b(D’7-D’0)那么从这个地址读出的D7-D0依然是1100 1010b。对于总线和CPU来说:在一个地址写进去一个值,从这个地址读出来仍是这个值即可。
(D0接D’7……D7接D’0,如果知道互连网络的话,那么就知道这种对应方法我们称之为互连函数,又叫置换函数或者排列函数。不知道互连网络请参考《计算机系统结构》)
通常采用一致的顺序?(为了方便理解,先暂定这样的顺序)
地址总线怎么连接
知道地址怎么分,才能连接地址线。
地址怎么分?
假设地址总线上的地址为xyz b,x,y,z要么取0,要么取1
如果假定对每个地址的访问时间一致,那么对应关系也和上文数据总线一样。(或许和上面的方法联合起来可大大增加内存物理攻击查找数据的复杂度)
那么就可以将上述6种情况简化为三种情况,xy b, xz b, yz b
(引入了其他的知识点,从存储系统 并行性和访问冲突两方面分析。)
预备知识
流水线技术
计算机的产生就是为了提高数据运算的速度。并行技术是提高运算速度的重要手段。流水线技术是并行技术的一种。
假设一个指令周期分为四个子过程:取指令、指令译码、指令执行、结果写回。那么在流水CPU中,执行第n条指令的第二过程时,同时可以执行第n+1条指令的第一过程,大大提高了效率。
指令预取
8086CPU就使用了流水线技术。在总线接口部件中有一个指令队列缓冲器,有6个字节长,当其中有两个空闲时,会自动把指令从存储系统中取到指令队列。此处把这种指令还未执行时就取出的方法称之为指令预取。
多存储器并行工作
多个存储器同时工作
访问冲突
访问并行工作的存储器时,由于数据的离散性导致并行工作效率降低,这就是访问冲突。
频带平衡
实质上是CPU和存储器工作速度不匹配。如果匹配,则存储器可以满足其他部件工作需要。如果不匹配,尤其是CPU速度快于存储器速度,那么计算机整体速度的瓶颈就落在了存储器上。为了解决频带平衡问题,有多存储器并行工作,缓冲存储器,存储系统这几种。与本文章相关的是多存储器并行工作。
如果CPU工作速度远高于存储器工作速度,那么会有这样的情况,CPU执行某条指令需要读存储器内容,CPU在等待存储器返回结果,而存储器访问速度特别慢,此时如果CPU继续等待就会造成大量的浪费。所以CPU继续执行后面的指令。如果后面的指令也是存储器访问且没有数据相关,而且存储器支持并行工作,那么CPU可以继续发送一个请求访问存储器。典型的例子是取指令。如果可以同时取指令取数据,那么计算机工作效率会大大提高。(不严谨)
3种情况分析
对于xy b,地址线A2 A1 A0,取A2 A1作为片内地址线,那么还剩下A0刚好作为片选信号(log_2 2=1)。A0=0访问M0,A0=1访问M1。https://blog.csdn.net/qq_16056397
假设当前CPU正在读地址为010 b的数据,在流水线中,下一条指令已经到达执行阶段,也是访问存储器,地址011 b,但是当前这个数据还没有读出来。如果不支持并行工作,只能等到010b数据读完,再读011b的数据。如果支持并行工作,可以直接将数据送到数据总线。这样一来,可以认为是几乎同时访问不同的存储器,工作效率就大大提高了。010 b属于M1,011 b属于M0,访问M1的时候可以访问M0,这就是并行工作。
但是,如果上述例子中011 b改为 100 b,情况就大不一样了,由于是同一个存储器,只能等待010b读完再读100b。这就是访问冲突。由于数据离散性和指令跳转等因素,访问冲突往往不可避免。(“往往”就是说还有解决办法,见《计算机系统结构》)
对于yz b,同样的分析思路。在连续地址的数据访问上,速度比较慢,同一时刻只有一个存储器在工作。并行性差但是稳定性高,一个存储器坏掉,另一个仍然可以用,扩展性也更强。
https://blog.csdn.net/qq_16056397
对于xz b,大家自己分析其中的利弊。不过这种情况在微机原理和计组乃至系统结构都没见到,鄙人才疏学浅,不懂其中缘由,欢迎评论区或私信讨论。
一个由若干个模块组成的存储器是线性编址的。——白中英 计组 六版 3.5.2
交叉存储器(interleaved memory)
对于xy b这种情况,称之为低位交叉访问存储器,低位用来区分存储体
对于yz b这种情况,称之为高位交叉访问存储器(High Order Interleaving ),高位用来区分存储体
交叉(interleaving)是什么意思:可以理解为轮流,交错
xy b情况,访问次序···-M0-M1-M0-M1-···,是交错的
yz b情况,访问次序···-M0-M0-M0-M0-···看起来是顺序的,从更广泛的时空范围来看···-M0-M0-M0-M0-M1-M1-M1-M1-···,这种又称顺序访问
xz b情况,如果视野只放在两个连续地址访问,那么有4种情况,···-M0-M0···,···-M1-M1-···,···-M0-M1-···,···-M1-M0-···所有这是算交错呢还是顺序呢?视野放大,···-M0-M0-M1-M1-M0-M0-M1-M1-···,也是交错的,所以这个到底怎么区分?交错的,因为前面出现过的在后面又出现了。这里给出CMU有关interleaved memory的课件。
鄙人才疏学浅,如有不当之处,欢迎私信或评论区讨论 [抱拳]