7.3 编址与存储相关计算
兩個方面的內容:一方面是內存的編址方法,另外一方面就是磁帶、光盤它的容量以及其它方面的一些計算.內存編址方法這一塊有兩個方面的內容是需要大家掌握的:第一方面是編址,
編址的概念:在計算機的系統當中,它的存儲器有很多個存儲空間,就如同我們去一個澡堂,它可能有儲物柜,然后排列了很多很多的儲物柜,它會對這個儲物柜進行編號,從1號開始編一直編到100號或者是200號,如果說你不對這些儲物柜進行編號,那么這些儲物柜就無法利用起來.因為客人來了之后他不清楚自己是哪一個儲物柜,所以不方便把東西放進來也不方便把東西取出去.編址就起了這樣的一個作用:就是標明每一個空間它的一個地址,或者說是一個名稱,能夠找得到這一個空間的名稱.內存當中的具體編址的方法:
?
例如這是一塊內存芯片,要對這一塊芯片進行編址,我們首先要了解的就是這每一個空格代表一個位,就是一個bit.每一個方格就是一個bit,然后這一塊芯片總共呢它有8行4列,所以有32位,32個bit.這4條線是數據線,用于取出當中的數據.然后我們的編址是按4位4位的編址,每4位編一個地址.每4位編一個地址之后我們就可以一次性每一次取出4個位.其實這一個概念就和我們以前講到的多少位的計算機能夠聯系起來,比如說16位的計算機,那么它的數據位,數據總線的寬度它就是16位,這樣的一個計算機系統它一次可以取出來的數據量就為16位.這樣的計算機它的一個字,注意不是字節,是一個字,就是16位.當然對于32位的計算機,那么它的一個字就是32位.64位的計算機,它的一個字,就是64位.注意這個64位也就是我們所說的這個數據總線的寬度.數據總線的寬度就表示了計算機一次它可以取出多少個數據,或者說是一次處理多少數據.扯遠了,回到正題.
這里是每4位編成一個地址,那么我們的32個空間要編多少個地址呢?我們就發現按4位4位的編址這一塊芯片要編8個地址,要編8個地址是不是就意味著要8條地址線呢?是不是需要8條地址線?其實不需要的.因為我們所用的地址是3位的地址,用不著8位.只需要用3位的10就能夠表示8個地址了.
我們可以把這8位連到一個譯碼芯片上面.這邊接3個位,這邊的才是地址線.這邊輸入的比如是000,譯碼信號就會指示出我們現在要存儲的數據是000號數據.而如果譯碼信號進入的是001,那么譯碼信號它就會指示需要存取的空間是001號空間.所以說我們平時所講到的地址的位數或者說編這一些地址需要的地址線的數量,是講的這個地址它的位數,并不是指的它能夠指示的空間的一個數量.其實從這一個例題我們也能夠看出一個規律,多少位的2進制數,能夠表示出來的數值,就是它的編址空間的大小.我們剛才說了3位的空間,3位的2進制數,用2^3就可以計算出它能夠給多少個空間進行編址.2^3=8,所以3位的地址能夠編8個地址出來.可以指示出8個空間.而2^4=16,所以用4位的地址可以表示16個空間.同樣的道理,地址線的條數,比如說是14,那么它可以編址的內存空間的個數就是2^14個.
主要要理解的就是地址的位數和它表達的值的數量的一個關系.3位的地址可以表示出8個實際的地址出來.4位的可以表示16個地址.這個就像我們平常的儲物柜編號一樣的,這是2進制的,然后如果我們是10進制的,1位10進制的就可以編0-9個地址,就可以表示給10個存儲空間進行編址.而兩位的地址是00-99就可以給100個數、100個空間進行編址,這是10進制.而我們現在用的2進制,2進制的話就是2^n,2的n次方,得到的數就是這么多位地址,能夠表示給多少個存儲空間進行編址.
下面我們還需要了解的一個問題就是芯片的拼接.芯片的拼接也比較常用.這一個芯片它是8*4位的芯片,也就是有8行,每一行有4個位,4個bit,然后我們如果說要把這一個芯片拼接成容量更大的芯片.我們通常有兩種方式進行拼接,我們可以縱向的拼接,也可以橫向的拼接.這樣子拼接出來的存儲空間,我們知道都是64個位,也就是8個字節的空間.但是大家需要注意一點,這樣子拼接出來的兩塊芯片,它就是完全不同的兩種芯片了.這一塊芯片稱為16*4的芯片,而這種芯片被稱為8*8的芯片.它們的特性也由它們的結構所決定,所以它們也存在著不同的特性.
這個16*4拼合起來的大芯片,它的地址位數是4位,就是不再是我們以前所說的3位了,因為3位已經編不完這些地址了,3位只能夠編8個地址,因為2^4=16,剛好夠用4位地址,那么我們這一種芯片它的地址線的位數就是4位,而數據線的位數它沒有變化.這種芯片它一次只能取4個位,而這種8*8的芯片情況就不同了,8*8的芯片由于它的行數仍然只有8行,所以對它進行編址仍然用3位的地址就可以了.它不同的是它這個數據線的位數增多了,它數據線的位數由4位增至了8位數據線,這樣子它就一次性能夠取出8個數據來,就是8個位的數據.
所以這兩種芯片雖然都是用同樣的芯片組合起來的,拼接起來的,但是它們的特性是完全不同的.我們再把這個意思把它拓廣,因為我們平常8*4位芯片不可能會出現到這種這么小的芯片,那么我們可以認為是8KB*4位的芯片.讓你兩塊芯片組成一個16KB*4位的芯片,那么你組合就應該是這種組合方式.而這個8KB我們也可以計算出它的編址需要多少位地址,我們就把8KB寫成2^n次方的形式,求出這個n來就行了.因為1KB它是等于2^10,而8=2^3,所以8KB=2^13,所以若這個存儲芯片是8KB的大小,那么它的地址線應該有13根,也就是說它的地址的位數有13位之多.好,下面我們講清楚這一些基本的一些的概念,一些思想之后,我們來從實際的問題當中來看待.
來看看這些問題應當要如何應用我們剛剛所學到的知識,來解決.
如果主存的容量為:
它其實就是一個16MB*8位的芯片,主存我們可以看做是16MB*8位的芯片,它是按字節來編址,所以每一次能夠取出8個位因為8位就是一個字節,所以我們就只要把這一個16MB化成2的n次方,就能夠求出,求出這個n之后,就知道主存的地址至少應該需要多少個位,那么16MB是等于2的,1MB=2^20,因為1KB=2^10,16MB=2^(4+20)=2^24.那么我們就求出來了,求出這個主存的地址,應該是24位.
如果這個題目不按字節來編址,我按4位來編址,換成4位編址情況確實有所不同,我們就把這個16MB*8位就得變化了,就是16MB*2*4位,就等于把一個字節拆成兩個部分,兩個4位,然后這個2要并入前面一部分,就變成了32MB*4位,然后就是把這一個32MB的地址空間化為2的n次方形式,我們就發現如果按4位來編址,那么地址的位數就需要25位了.
同樣再把這個題目改一改, 我們改成按字編址,而不按字節編址.按字編址而我們同時又知道這個計算機系統是64位的系統,64位代表是8個字節,因為每8位是一個字節,所以64位應該是8個字節,那么也就是說現在要對16MB字節的這個空間每8個字節來進行這個編址.那么我們這邊就得寫成另外一種形式了,就寫成2MB*8字節,注意哦我們再怎么變換形式它的總容量大小一直沒有發生變化的,都是16MB.這個乘以8位就相當于乘了一個字節.而這里乘了2后面乘了4位,4位是0.5個字節,也就是半個字節,1/2個字節,這里就是2MB*8字節,我們只要把這個2MB寫成2的n次方形式,求出n,那么這個地址的數也就求出來了.求出來應該是21.就是按字編址,而每個字有64位的話那么我們的地址的位數就只需要21位了.
接下來再來看一個問題,這一個問題就牽涉到了也是內存編址,它是內存地址容量的一個計算.題目是這樣子的:內存按字節編址,地址從A4000H-CBFFFH,這個計算還是比較容易的.它的原則是什么一個原則呢?一個什么原理來計算呢?
開始起始地址是A4000這一條線,這一條線就是CBFFF,我們就只要求出這一段的大小就可以了.因為它是一個連續的地址空間,當然這個計算就比較好計算了,而且又是字節編址,那么我們就直接把這個地址減去這一個地址,用它尾數-開始數+1那么我們就能夠得到字節數,這里有一個單位的換算我們就直接用CBFFF-A4000+1,加1是為了,很容易理解如果我的起始地址是從1開始,到9,我們很容易可以知道123456789是9個空間,然后如果說我們用尾數9減去1還缺了1個所以要補1個加1.那么我們就直接用CBFFF減A4000再加1就行了.我們可以先給這個CBFFF+1-A4000,這樣子就得到了2進制的28000H.我們把這個16進制的數轉成10進制,轉成10進制之后然后我們就發現它的大小剛好是160KB.我們也可以現在用計算機、計算器算一下,
轉載于:https://www.cnblogs.com/ZHONGZHENHUA/p/7252436.html
總結
以上是生活随笔為你收集整理的7.3 编址与存储相关计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交通运输线(LCA)
- 下一篇: 滨州回阿克苏默拉纳额什丁麻扎省钱路线推荐