問題背景:
新人在考研的路上奔走,當在學習哈工大劉宏偉老師教授的計算機組成原理課程的時候,學到4.1節的時候提到的關於按字尋址和按字節尋址時,我就比較懵了,於是開始查詢資料,然后總結理解,希望前輩們看見的時候能夠給出自己的看法,不足的地方請各位前輩們多多指教。
自己的理解:
字長度為8的整數倍,如32位包含4個字節、16位包含兩個字節。
字長=字節地址*8,如上圖(大端、大尾方式):字長=4*8=32位(bit)
地址線需留出2根來區分四個字節的位置(幾根需要看字節地址的個數,這個地方是4)。按字節尋址的話,則不需要留出地址線來分區了,因為就一個字節。
什么是位、字節、字、KB、MB?
1、位(bit) 來自英文bit,音譯為“比特”,表示二進制位。位是計算機內部數據儲存的最小單位,11010100是一個8位二進制數。
2、字節 (byte) 字節來自英文Byte,音譯為“拜特”,習慣上用大寫的“B”表示。 字節是計算機中數據處理的基本單位。計算機中以字節為單位存儲和解釋信息,規定一個字節由八個二進制位構成,即1個字節等於8個比特(1Byte=8bit)。八位二進制數最小為00000000,最大為11111111;通常1個字節可以存入一個ASCII碼,2個字節可以存放一個漢字國標碼。
3、字 計算機進行數據處理時,一次存取、加工和傳送的數據長度稱為字(word)。一個字通常由一個或多個(一般是字節的整數位)字節構成。例如286微機的字由2個字節組成,它的字長為16;486微機的字由4個字節組成,它的字長為32位機。 計算機的字長決定了其CPU一次操作處理實際位數的多少,由此可見計算機的字長越大,其性能越優越。
4、KB:在一般的計量單位中,通常K表示1000。例如:1公里= 1000米,經常被寫為1km;1公斤=1000克,寫為1kg。同樣K在二進制中也有類似的含義。只是這時K表示1024,也就是2的10次 方。1KB表示1K個Byte,也就是1024個字節。
5、MB:計量單位中的M(兆)是10的6次方,見到M自然想起要在該數值的后邊續上六個0,即擴大一百萬倍。在二進制中,MB也表示到了百萬級的數量級,但1MB不正好等於1000000字節,而是1048576字節,即 1MB = 2E+20 Bytes = 1048576Bytes。
MB就是通常說的兆
KB 1KB=1024B
MB 1MB=1024KB
-
地址線和數據線
地址線:用於傳輸地址信息,就像網線一樣,內部的線纜有很多但是都封裝起來了所以我們看不到,一根地址線可以通過高電平(1)或低電平(0)的電流,根據電流的不同來傳輸地址數據,這樣就很清楚了,每1根地址線有2個狀態,那么N根地址線就可以表示2N2N個不同狀態,這些不同的狀態即可以用來表示不同的地址。
數據線:用於傳輸數據,可以簡單的理解為字長為16位的計算機的數據線有16根,因為單位時間內最多傳輸16位二進制數,所以16根數據線每根都要變換高低電平來輸出0或1。
例:一個16K×32位的主,其地址線和數據線的總和是?
答:首先看后面的32位,這個說明該的字長為32個字節即有32根數據線。然后看到前面16K,這個是什么意思呢?這里的16K就是尋址范圍(即尋址空間),簡單說這里的尋址范圍就是我上面提到的地址線表示的狀態,那么根據題意一共有16K個不同狀態,那么需要多少根地址線呢? 16K=16*210=24∗210=214,上面說了有N根地址線就有2N210=24∗210=214,上面說了有N根地址線就有2N個狀態,所以地址線為14根。那么總和為32+14=46根。怎么樣?是不是感覺簡單了很多呢?
GB 1GB=1024MB
按字節尋址和按字尋址
終於回到正題上了,首先我們講講什么叫尋址,尋址就是尋找地址,當CPU請求數據的時候就會對進行讀數據的請求。假設我們有一塊硬盤,那么硬盤在接收到請求之后就開始查找這個CPU需求的數據具體是放在哪呢?實際上,硬盤上儲存的所有數據都有一個自己的地址,在物理上實現是通過磁頭在盤片上定位數據的一個過程。不同存儲器計算機這兩個有什么區別呢?下面我們從三個例題來入手:
- 例1:設有一台機器有24根地址線,按字節尋址,求其尋址范圍。
解:如果按照字節尋址,就是一個地址線表示的數(即狀態)對應一個字節的地址。由此可以得到地址的范圍(即狀態總和)就是224224,即2^24Bit=16M。那么尋址的范圍就是16MB,注意單位是MB,地址的范圍表示的僅僅是數量值,而按字節尋址的范圍其單位則為容量單位,自然要帶上字節B。 - 例2:設有一台機器有24根地址線,其字長為16位,按字尋址,求其尋址范圍。
解:字里面封裝了字節,為了確保每個字節或者說每個數據都有自己的一個編號,那么需要犧牲一部分地址線來實現。16位字長的機器,每個字表示2個字節,用1位地址線就能區分出來,這邊可以類比成“每個袋子裝了兩個包子,而我現在只給袋子編號,那么你想要找到袋子里面的包子到底是第一個還是第二個就必須在拿出一位的0和1來表示第一個還是第二個包子”。由此表示字地址的數據線位數就只剩下了24-1=23位了。所以尋址的范圍就變成了2^23MW,即4MW了。 - 例3:設有一台機器有24根地址線,其字長為32位,按字尋址,求其尋址范圍。
這個問題就留給后來的讀者思考吧,想通了的話其實也很簡單!