程序員心中的一道坎:主存的編址與計算和串並聯繫統!

寫在前面

很多小夥伴認為程序員就是寫寫代碼,不需要了解計算機底層的知識和原理。其實,這種觀點是錯誤的。如果你想突破程序員的職業發展瓶頸,計算機硬件、操作系統原理、編譯原理等是一定要掌握的知識。而【冰河技術】微信公眾號的【程序員進階系列】專題就是要系統的向大家分享程序員進階需要掌握的各項知識技能。今天,我們來聊聊一個讓程序員很頭疼的話題:計算機中的主存是如何進行編址和計算的?

文章已收錄到:

//github.com/sunshinelyz/technology-binghe

//gitee.com/binghe001/technology-binghe

主存編址與計算

這裡,小夥伴們首先要區分兩個概念,一個是編址,一個是尋址。

編址: 存儲器是由一個個存儲單元構成的,為了對存儲器進行有效的管理,就需要對各個存儲單元編上號,即給每個單元賦予一個地址碼,這叫編址。經編址後,存儲器在邏輯上便形成一個線性地址空間。

尋址: 存取數據時,必須先給出地址碼,再由硬件電路譯碼找到數據所在地址,這叫尋址。

編址可以分為兩種:按字編址和按位元組編址

  • 按字編址:存儲體的存儲單元是字存儲單元,即最小尋址單位是一個字。
  • 按位元組編址:存儲體的存儲單元是位元組存儲單元,即最小尋址單位是一個位元組。

對於主存編址中最常見的計算形式為:根據存儲器所要求的容量和選定的存儲芯片的容量,就可以計算出所需要的芯片的數量。公式如下所示。

總片數 = 總容量 / 每片的容量

這裡,給小夥伴們舉一個例子:若內存地址區間為4000H ~ 43FFH,每個存儲單元可存儲16位二進制數,該內存區域使用4片存儲器芯片構成,則構成該內存所用的存儲器芯片的容量是多少?

解題思路也比較簡單,我們一起來看看如何解題:

(1)首先,我們來求解4000H ~ 43FFH地址空間的總容量,使用終止地址-起始地址+1即可得到總容量,也就是43FFH – 4000H + 1 = 43FFH + 1 – 4000H = 4400H – 4000H = 400H。

注意:在計算機中,以H結尾的數字是十六進制,逢16進1,而F在十六進制中表示15,所以,43FFH + 1 = 4400H。

所以,4000H ~ 43FFH地址空間的總容量為400H。

(2)接下來,我們要把400H轉換成二進制,對於十六進制數轉換成二進制數來說,每一位十六進制數對應着四位的二進制數,我們可以把400H拆分成4、0、0三部分,4轉換成二進制數就表示0100,十六進制的0轉換成二進制為0000。所以,400H轉換成二進制的結果為:0100 0000 0000。

0100 0000 0000也就是2的10次方,即為210

(3)題目中說的每個存儲單元可存儲16位二進制數,所有總共可以存儲的二進制數就是:210 * 16。

(4)該區域使用4片存儲器芯片構成,所以,存儲芯片的容量為:210 * 16 / 4 = 210 * 4 = 212,最終的結果單位為bit。

總線

一條總線同一時刻只允許一個設備發送數據,但允許多個設備接收數據。

總線的分類

總線可以分為數據總線、地址總線和控制總線。

  • 數據總線(Data Bus):在CPU和RAM之間來回傳送需要處理或是需要存儲的數據。
  • 地址總線(Address Bus):用來指定在RAM(Random Access Memory)之中存儲的數據的地址。
  • 控制總線(Control Bus):將微處理器控制單元(Control Unit)的信號傳送到周邊設備,一般常見的為USB Bus和1394 Bus。

串聯繫統與並聯繫統

這裡,先給小夥伴們簡單介紹下什麼是串聯繫統,什麼是並聯繫統。

串聯繫統

串聯繫統是組成系統的所有單元中任一單元失效就會導致整個系統失效的系統。把用電器各元件逐個順次連接起來,接入電路就組成了串聯電路。我們常見的裝飾用的”滿天星”小彩燈,常常就是串聯的。串聯電路有以下一些特點:⑴電路連接特點:串聯的整個電路是一個迴路,各用電器依次相連,沒有”分支點”。⑵用電器工作特點:各用電器相互影響,電路中一個用電器不工作,其餘的用電器就無法工作。⑶開關控制特點:串聯電路中的開關控制整個電路,開關位置變了,對電路的控制作用沒有影響。即串聯電路中開關的控制作用與其在電路中的位置無關。

註:以上對於串聯繫統的描述來源於網絡。

接下來,我們來看一個關於串聯繫統的圖形表示,這裡我們假設串聯繫統中每個部分的可靠度依次為R1,R2,…Rn,如下所示。

則整個系統的可靠度為:R = R1 * R2 * … * Rn。

並聯繫統

並聯繫統指的是組成系統的所有單元都失效時才失效的系統。把電路中的元件並列地接到電路中的兩點間,電路中的電流分為幾個分支,分別流經幾個元件的連接方式叫並聯。並聯電路是使在構成並聯的電路元件間電流有一條以上的相互獨立通路,為電路組成二種基本的方式之一。例如,一個包含兩個電燈泡和一個9 V電池的簡單電路。若兩個電燈泡分別由兩組導線分開地連接到電池,則兩燈泡為並聯。

即若干二端電路元件共同跨接在一對節點之間的連接方式。這樣連成的總體稱為並聯組合。其特點是:①組合中的元件具有相同的電壓;②流入組合端點的電流等於流過幾個元件的電流之和;③線性時不變電阻元件並聯時,並聯組合等效於一個電阻元件,其電導等於各並聯電阻的電導之和,稱為並聯組合的等效電導,其倒數稱為等效電阻

註:以上對於並聯繫統的描述來源於網絡。

接下來,我們來看一個關於並聯繫統的圖形表示,這裡我們假設並聯繫統中每個部分的可靠度依次為R1,R2,…Rn,如下所示。

則整個並聯繫統的可靠度R = 1 – (1 – R1) * (1 – R2) * … * (1-Rn)。

混合型系統

混合型系統就是既有串聯繫統,又有並聯繫統的系統,這裡,我們也使用一個圖形進行表示,如下所示。

所以,上圖並聯繫統的可靠度為:R * (1 – (1 – R) 3) * (1 – (1 – R) 2)

好了,今天就到這兒吧,我是冰河,大家有啥問題可以在下方留言,也可以加我微信:sun_shine_lyz,我拉你進群,一起交流技術,一起進階,一起牛逼~~