1. 程式人生 > >按位元組定址和按字定址

按位元組定址和按字定址

百度知道上有這麼一個問題:

組成原理唐書上73頁: 對24位地址線的主存,字長為32位,按位元組定址的範圍是16M,按字定址的範圍為4M。
但書前面講的是暫存器mar的位數反映了儲存單元的個數 那樣的話:按字定址的範圍是16M=2^24
按位元組定址的範圍是16M*4=64M。
這是怎麼回事呀 怎麼解釋 書前後怎麼矛盾呀?

其中一個人的回答我很贊同:

你沒有注意的是:書上還說了一句,IBM 32 位儲存器 地址線的低兩位用作為一個字中四個位元組的定址地址(如果沒有這兩位的犧牲的話,如何按位元組定址呢?),即:真正用於按字定址的地址線只有24-2=22根,也即4M;
按位元組定址是指(我的理解):將所有的位元組看為一個獨立的整體,重新計算它們的個數,即:總容量 / 單位字中位元組的位數 <=> 64MB /4B=16M。
plus:
我又請教了一些懂它的人,她的答案是:當按字定址時,它的字長就不可能是32位;當按字長定址時,它的地址線就不可能是24條。最直白的做法就是:按字長定址時,計算它有多少個B,按字定址時,根據給的地址線條數計算。

分割線-------------------------------------------------------------------

我有看了另外一個人的部落格,內容如下:

我們先從一道簡單的問題說起!

     設有一個1MB容量的儲存器,字長32位,問:按位元組編址,字編址的定址範圍以及各自的定址範圍大小? 

     如果按位元組編址,則 

                     1MB = 2^20B 

                     1位元組=1B=8bit 

                     2^20B/1B = 2^20 

     地址範圍為0~(2^20)-1,也就是說需要二十根地址線才能完成對1MB空間的編碼,所以地址暫存器為20位,定址範圍大小為2^20=1M

     如果按字編址,則

                      1MB=2^20B

                      1字=32bit=4B

                     2^20B/4B = 2^18   

      地址範圍為0~2^18-1,也就是說我們至少要用18根地址線才能完成對1MB空間的編碼。因此按字編址的定址範圍是2^18

以上題目注意幾點:

1.區分定址空間與定址範圍兩個不同的概念,定址範圍僅僅是一個數字範圍,不帶有單位

而定址範圍的大小很明顯是一個數,指定址區間的大小

  而定址空間指能夠定址最大容量,單位一般用MB、B來表示;本題中定址範圍為0~(2^20)-1,定址空間為1MB。

2.按位元組定址,指的是儲存空間的最小編址單位是位元組,按字編址,是指儲存空間的最小編址單位是字,以上題為例,總的儲存器容量是一定的,按字編址和按位元組編址所需要的編碼數量是不同的,按字編址由於編址單位比較大(1字=32bit=4B),從而編碼較少,而按位元組編址由於編碼單位較小(1位元組=1B=8bit),從而編碼較多。

3.區別M和MB。

                        M為數量單位。1024=1K,1024K=1M

                        MB指容量大小。1024B=1KB,1024KB=1MB.

分割線-------------------------------------------------------------

總結:如果只要求按字定址,那麼第二個人的部落格是正確的,因為不要求按字長定址;如果既能按字定址,還能按字長定址,那麼第一個人的說法是正確的。