目录
一:弄清单位换算
二:了解主存
三:弄懂存储容量
四、主存中存储单元地址的分配
1.我们要理解这些高位字节、低位字节、高地址、低地址
2. 大端、大尾和小端、小尾
3.关于字地址的说明
4.寻址范围
搞了两天终于整理出来了,我觉得真的很详细了,不懂得可以问我呀,有错误请指正~整理不易,求个小赞~
bit 比特位/位 一般简写为小写字母b
byte/Byte 字节 一般简写为大写字母B
其中K、M、G、T之类的换算(只是单纯的K/M/G/T,没有加上字节B或者位b),依次按2^10倍增加
1T=2^10G=2^20M=2^30K
1B=2^3b
1KB(Kilobyte 千字节)=2^10B=1024B
IMB(Megabyte 兆字节 简称“兆”)=2^10KB=1024KB
1GB(Gigabyte 吉字节 千兆”)=2^10MB=1024MB
ITB(Terabyte 万亿字节 太字节)=2^10GB=1024GB
还有更大的单位,可以自己去了解,不要与kb,Mb,Gb等小写的b弄混了。还是写一下吧
1Kb=2^10b=1024b
1Mb=2^10Kb=1024Kb
1Gb=2^10Kb=1024Mb
1Tb=2^10Gb=1024Gb
举个例子:
1KB=2^10B=2^13b
1Kb=2^10b
这两个相差2^3倍呢,8倍。
但是通常口头中缩写的1K、1M、1G、1T都是1KB、1MB、1GB、1TB。(比如说流量,说内存的时候什么哒,但是实际不是啦,就是每一个单位单纯的相差1024倍)
主存储器(主存、内存)=存储体M+各种逻辑部件+控制电路等等
存储体---一栋大楼
存储单元---每个房间
存储元(存储元件、存储基元)---每个房间的床位 有人相当于“1”,无人相当于“0”
存储字---这串01代码,也就是这串二进制代码
存储字长---床位数
存储单元的地址号---房间号
为了能实现按地址访问的方式,主存中还必须配置两个寄存器MAR和MDR。
MAR:存储器地址寄存器
MDR:存储器数据寄存器
存储器的容量=主存容量+辅存容量
主存容量:主存中存放二进制代码的二进制的总位数
存储容量=存储单元个数*存储字长
MAR的位数反映了存储单元的个数,MDR的位数反映了存储字长。(课本p17)
地址线的位数与存储单元的个数有关:如地址线为20根,存储单元个数为2^20。(课本p43)
(所以我觉得MAR的位数与地址线的位数是相对应的)
来举一个存储容量的例子:
题目:MAR为16位,MDR为32位,求存储容量
MAR位数16相当于地址线有16根,所以存储单元个数=2^16个。
MDR位数32相当于存储字长。
存储容量=存储单元个数*存储字长
存储容量=2^16*32位=2^21位=2^21b=2^11Kb=2Mb(不懂得看第一块儿的换算)
换成字节为单位的话就是 2^21b=2^18B=2^8KB=256KB
(这个是书上的例子,我给详细的换算了一下,应该可以看懂的,我应该讲明白了吧,不懂得可以留言问我呀~)
这是课本上相关的描述(内心os,我学的时候要疯了,就这一点内容,让我抓耳挠腮的)
字节寻址的主存地址分配,也就是上面图4.6 和慕课上刘老师讲的ppt里的一张图,我按我的想法做一下说明。
先补充一点,H表示的是16进制(我说的是不是有点废话)
例如:12345678H(32位)
一共八位,每两位占一个字节
8位十六进制=32位二进制
(图片来源于网络)
高位字节、低位字节:
一个16位(双字节)的数,比如 FF1AH(H代表啊16进制数)
高位字节就是FF,低位字节就是1A一个32位(四个字节)的数,比如12345678H
高位字(不是字节)是1234
低位字是5678或者来说 12为高位字节 78为低位字节
可参考:https://blog.csdn.net/ALakers/article/details/116225089
总结:左边高位、右边低位(因为换算的时候左边数值大,比如同样为1,左边的大,就像个十百千万一样,也就是人类读写数值的方法)
高地址、低地址:
地址可以对应一个16进制的数,值大的就是高地址,值小的就是低地址
比如地址 :
大端和小端是指数据在内存中的存储模式
对于课本上的16位机器的哪个也是同样道理:
字地址=存储字地址=存储单元地址
这个字地址就相当于把这串01二进制代码的地址表示出来,就相当于房间号一样。
课本上的图4.6a的字地址就是用该字高位字节的地址表示了一下而已(因为左边低地址存储的是高位字节)。
图4.6b的地址从右向左是地址是在变大的,低位字节放在了右边低地址上,字地址就是用该字低位字节的地址表示了一下。(因为右边是低地址)
终于到了最后一点,就是按字节寻址和按字寻址的寻址范围:
其中刘老师右边的B和W,B(Byte)是按字节寻址的意思,并不是容量大小,W(word)是按照字寻址的的意思。
我自己来总结一下就是:
一、
--------------地址线24根---------------
按字节寻址范围为2^24=2^14K=2^4M=16M
若字长32位,则一个字有4个字节,所以要留2根地址线指出该字中的哪个字节[00,01,10,11],即寻址范围为 2^22=2^12K=2^2M=4M
若字长16位,则一个字有2个字节,所以要留1根地址线指出该字中的哪个字节[0,1],即寻址范围为 2^23=2^13K=2^3M=8M
二、
------------地址线24根----------------
按字节寻址:我觉得就是寻址范围寻得就是房间,每个房间放一个字节,就有2^24房间,所以就是2^24,其中容量就是上文中 存储容量=存储单元个数*存储字长 存储容量:2^24*8==2^24*2^3=2^27位(这个8是因为存储字长是一个字节,有8位,相当于有八张床)
按字寻址(16位):我觉得就是把两个字节放进一个房间,但是你还要找出是哪一个字节,腾出来一根线再找放房间里,那就是2^23个房间了,存储容量:2^23*16=2^23*2^4=2^27位
按字寻址(32位):同理,就是把4个字节放进了一个房间,但是你还要找出哪一个字节,腾出来两根线2^2=4找出这四个字节,那就剩2^22个房间了,存储容量:2^22*32=2^22*2^5=2^27位
总结如下图:
(图片源于第二个链接博主)
寻址范围可以参考:
https://blog.csdn.net/weixin_42110638/article/details/103088391
也可以参考:
https://blog.csdn.net/weixin_44465434/article/details/104800198