上周一直在忙幾場考試和課程設計,今天發現自己機組基礎實在是太差。。。。。。臨近期末要狂補一下,大概會寫很多機組的博客吧。
轉載自https://blog.csdn.net/qq_39665334/article/details/80946495
我們先從一道簡單的問題說起!
設有一個1MB容量的存儲器,字長32位,問:按字節編址,字編址的尋址范圍以及各自的尋址范圍大小?
如果按字節編址,則
1MB = 2^20B
(ps:1MB=1024kb,1kb=1024btye,1024是2的10次方)
1字節=1B=8bit
2^20B/1B = 2^20
地址范圍為0~(2^20)-1,也就是說需要二十根地址線才能完成對1MB空間的編碼,所以地址寄存器為20位,尋址范圍大小為2^20=1M
(ps:求出該存儲器最多可容納多少字節,從0到最多可容納的字節數就是地址范圍)
如果按字編址,則
1MB=2^20B
1字=32bit=4B
(ps:字長是32位,就是指1字=32bit,該信息只有在按字編址時才有用。這里的字長說的是存儲字長)
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.
問題:
1、某計算機字長為32位,其存儲容量為16MB,若按雙字編址,它的尋址范圍是多少?
2、某機字長為32位,存儲容量為64MB,若按字節編址.它的尋址范圍是多少?
解答:
我的方法是全部換算成1位2進制的基本單元來算。先計算總容量,如第一題中是16mb中,一B為8位,也就是8個一位基本單元組成,16M=2^24位=2^24個一位基本單元。所以總的基本單元是2^24*8。
一個字長是n位,就是說一個字是由n個一位基本單元組成。按照字來編址就是說由一個字所包含的一位基本單元的個數作為一個地址單元,它對應一個地址。同理,雙字編址就是兩個字所包含的的基本單元數作為一個地址單元。由於一個字節(1B)永遠是8位,所以按字節編址永遠是8個一位基本單元作為一個地址單元。尋址范圍就是說總共有多少個這樣的地址。
第一題中一個字長是32位,對於按字編址來說一個地址單元有32個基本單元,按雙字編址則是一個地址單元有64個,按字節是8個,總容量是2^24*8個。所以按字編址的地址數是2^24*8/32個,按雙字是2^24*8/64個,按字節是2^24*8/8個。因此,第一題答案是2^21=2M。
同理,第二題答案是2^26*8/8=2^26=64M。