求主存地址的位数
我看到有一道题这样分析:
--------------------------------------------------------------------------------
例二、一个具有4KB直接相联cache的32位微处理器,主存的容量为16MB,假定该cache的块为4个32位的字。
(1)指出主存地址中区号、块号和块内地址的位数;
(2)求主存地址为ABCDEF(16进制)的单元在cache中的什么位置?
分析:
Cache容量:4KB
主存 容量 :16MB
映像方式 :直接映像;
把主存分成若干区,每区与Cache大小相同。区内分块,主存每个区中块的大小和Cache中块的大小相等,主存中每个区包含的块的个数与Cache中块的个数相等。任意一个主存块只能映像到Cache中唯一指定的块中,即相同块号的位置。主存地址分为三部分:区号、块号和块内地址,Cache地址分为:块号和块内地址。
主存地址位数=区号+区内分块号+块内地址;
Cache地址位数=块号+块内地址。
主存的区号:16M/4KB=2^12=12位;
主存块号 :4KB/(4*32bit)=2^8=8位;
块内地址 :4*32bit =16Byte=4个字(因为一个字为32bit)=2^2字=2位;
-------------------------------------------------------------------------------------
我不明白这个位数是怎样计算出来的,按我的理解
bit意为"位"或"比特",即1bit=1位
1M=1024KB=1024*8bit=1024*8位
那主存的区号位数应该就是:16M/4KB=4*4*1024KB/4KB=4*1024KB=4*1024*1024bit=4*1024*1024位
块内地址:4*32bit那就应该是4*32位
-------------------------------------------------------------------------------------
哪位兄弟能指点一下