1. 程式人生 > >程式設計師心中的一道坎:主存的編址與計算和串並聯系統!

程式設計師心中的一道坎:主存的編址與計算和串並聯系統!

## 寫在前面 很多小夥伴認為程式設計師就是寫寫程式碼,不需要了解計算機底層的知識和原理。其實,這種觀點是錯誤的。如果你想突破程式設計師的職業發展瓶頸,計算機硬體、作業系統原理、編譯原理等是一定要掌握的知識。而【冰河技術】微信公眾號的【程式設計師進階系列】專題就是要系統的向大家分享程式設計師進階需要掌握的各項知識技能。今天,我們來聊聊一個讓程式設計師很頭疼的話題:計算機中的主存是如何進行編址和計算的? 文章已收錄到: [https://github.com/sunshinelyz/technology-binghe](https://github.com/sunshinelyz/technology-binghe) [https://gitee.com/binghe001/technology-binghe](https://gitee.com/binghe001/technology-binghe) ## 主存編址與計算 這裡,小夥伴們首先要區分兩個概念,**一個是編址,一個是定址。** **編址:** 儲存器是由一個個儲存單元構成的,為了對儲存器進行有效的管理,就需要對各個儲存單元編上號,即給每個單元賦予一個地址碼,這叫編址。經編址後,儲存器在邏輯上便形成一個線性地址空間。 **定址:** 存取資料時,必須先給出地址碼,再由硬體電路譯碼找到資料所在地址,這叫定址。 編址可以分為兩種:**按字編址和按位元組編址**。 ![](https://img-blog.csdnimg.cn/20210203234917109.jpg) * 按字編址:儲存體的儲存單元是字儲存單元,即最小定址單位是一個字。 * 按位元組編址:儲存體的儲存單元是位元組儲存單元,即最小定址單位是一個位元組。 對於主存編址中最常見的計算形式為:根據儲存器所要求的容量和選定的儲存晶片的容量,就可以計算出所需要的晶片的數量。公式如下所示。 ```bash 總片數 = 總容量 / 每片的容量 ``` 這裡,給小夥伴們舉一個例子:若記憶體地址區間為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次方,即為2^10^。 (3)題目中說的每個儲存單元可儲存16位二進位制數,所有總共可以儲存的二進位制數就是:2^10^ * 16。 (4)該區域使用4片儲存器晶片構成,所以,儲存晶片的容量為:2^10^ * 16 / 4 = 2^10^ * 4 = 2^12^,最終的結果單位為bit。 ## 匯流排 一條匯流排同一時刻只允許一個裝置傳送資料,但允許多個裝置接收資料。 ### 匯流排的分類 匯流排可以分為資料匯流排、地址匯流排和控制匯流排。 ![](https://img-blog.csdnimg.cn/20210203234938260.jpg) * 資料匯流排(Data Bus):在CPU和RAM之間來回傳送需要處理或是需要儲存的資料。 * 地址匯流排(Address Bus):用來指定在RAM(Random Access Memory)之中儲存的資料的地址。 * 控制匯流排(Control Bus):將微處理器控制單元(Control Unit)的訊號傳送到周邊裝置,一般常見的為USB Bus和1394 Bus。 ## 串聯絡統與並聯系統 這裡,先給小夥伴們簡單介紹下什麼是串聯絡統,什麼是並聯系統。 ### 串聯絡統 串聯絡統是組成系統的所有單元中任一單元失效就會導致整個系統失效的系統。把用電器各元件逐個順次連線起來,接入電路就組成了串聯電路。我們常見的裝飾用的"滿天星"小彩燈,常常就是串聯的。串聯電路有以下一些特點:⑴電路連線特點:串聯的整個電路是一個迴路,各用電器依次相連,沒有"分支點"。⑵用電器工作特點:各用電器相互影響,電路中一個用電器不工作,其餘的用電器就無法工作。⑶開關控制特點:串聯電路中的開關控制整個電路,開關位置變了,對電路的控制作用沒有影響。即串聯電路中開關的控制作用與其在電路中的位置無關。 注:以上對於串聯絡統的描述來源於網路。 接下來,我們來看一個關於串聯絡統的圖形表示,這裡我們假設串聯絡統中每個部分的可靠度依次為R1,R2,...Rn,如下所示。 ![](https://img-blog.csdnimg.cn/20210203234951152.jpg#pic_center) 則整個系統的可靠度為:R = R1 * R2 * ... * Rn。 ### 並聯系統 並聯系統指的是組成系統的所有單元都失效時才失效的系統。把電路中的元件並列地接到電路中的兩點間,電路中的電流分為幾個分支,分別流經幾個元件的連線方式叫並聯。並聯電路是使在構成並聯的電路元件間電流有一條以上的相互獨立通路,為電路組成二種基本的方式之一。例如,一個包含兩個電燈泡和一個9 V電池的簡單電路。若兩個電燈泡分別由兩組導線分開地連線到電池,則兩燈泡為並聯。 即若干二端電路元件共同跨接在一對節點之間的連線方式。這樣連成的總體稱為並聯組合。其特點是:①組合中的元件具有相同的電壓;②流入組合端點的電流等於流過幾個元件的電流之和;③線性時不變電阻元件並聯時,並聯組合等效於一個電阻元件,其電導等於各並聯電阻的電導之和,稱為並聯組合的等效電導,其倒數稱為等效電阻 注:以上對於並聯系統的描述來源於網路。 接下來,我們來看一個關於並聯系統的圖形表示,這裡我們假設並聯系統中每個部分的可靠度依次為R1,R2,...Rn,如下所示。 ![](https://img-blog.csdnimg.cn/20210203235001308.jpg) 則整個並聯系統的可靠度R = 1 - (1 - R1) * (1 - R2) * ... * (1-Rn)。 ### 混合型系統 混合型系統就是既有串聯絡統,又有並聯系統的系統,這裡,我們也使用一個圖形進行表示,如下所示。 ![](https://img-blog.csdnimg.cn/20210203235015599.jpg) 所以,上圖並聯系統的可靠度為:R * (1 - (1 - R) ^3^) * (1 - (1 - R) ^2^) **好了,今天就到這兒吧,我是冰河,大家有啥問題可以在下方留言,也可以加我微信:sun_shine_lyz,我拉你進群,一起交流技術,一起進階,一起