【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围

目录

一:弄清单位换算

二:了解主存

三:弄懂存储容量

四、主存中存储单元地址的分配

        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

(这个是书上的例子,我给详细的换算了一下,应该可以看懂的,我应该讲明白了吧,不懂得可以留言问我呀~)

四、主存中存储单元地址的分配

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第1张图片这是课本上相关的描述(内心os,我学的时候要疯了,就这一点内容,让我抓耳挠腮的) 

字节寻址的主存地址分配,也就是上面图4.6 和慕课上刘老师讲的ppt里的一张图,我按我的想法做一下说明。

先补充一点,H表示的是16进制(我说的是不是有点废话)

例如:12345678H(32位)

一共八位,每两位占一个字节

8位十六进制=32位二进制

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第2张图片

(图片来源于网络) 

        1.我们要理解这些高位字节、低位字节、高地址、低地址

高位字节、低位字节:

一个16位(双字节)的数,比如 FF1AH(H代表啊16进制数)
高位字节就是FF,低位字节就是1A

一个32位(四个字节)的数,比如12345678H

高位字(不是字节)是1234 
低位字是5678

或者来说 12为高位字节 78为低位字节

可参考:https://blog.csdn.net/ALakers/article/details/116225089

总结:左边高位、右边低位(因为换算的时候左边数值大,比如同样为1,左边的大,就像个十百千万一样,也就是人类读写数值的方法)

高地址、低地址:

地址可以对应一个16进制的数,值大的就是高地址,值小的就是低地址

比如地址 :

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第3张图片

        2. 大端、大尾和小端、小尾

大端和小端是指数据在内存中的存储模式

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第4张图片

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第5张图片

对于课本上的16位机器的哪个也是同样道理:

 

        3.关于字地址的说明

字地址=存储字地址=存储单元地址

这个字地址就相当于把这串01二进制代码的地址表示出来,就相当于房间号一样。

课本上的图4.6a的字地址就是用该字高位字节的地址表示了一下而已(因为左边低地址存储的是高位字节)。

图4.6b的地址从右向左是地址是在变大的,低位字节放在了右边低地址上,字地址就是用该字低位字节的地址表示了一下。(因为右边是低地址)

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第6张图片

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第7张图片

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第8张图片(这三张图片源于网络) 

        4.寻址范围

终于到了最后一点,就是按字节寻址和按字寻址的寻址范围:

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第9张图片

 其中刘老师右边的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位

总结如下图:

【主存中存储单元地址的分配】超级详细的相关知识总结,字节比特相关单位换算,主存,存储容量,高位字节,低位字节,高地址,低地址,大端序,小端序,字地址,寻址范围_第10张图片

 (图片源于第二个链接博主) 

寻址范围可以参考:

https://blog.csdn.net/weixin_42110638/article/details/103088391

也可以参考:

https://blog.csdn.net/weixin_44465434/article/details/104800198

 

你可能感兴趣的:(计算机组成原理,经验分享)