程序員心中的一道坎:主存的編址與計(jì)算和串并聯(lián)系統(tǒng)!
作者個(gè)人研發(fā)的在高并發(fā)場景下,提供的簡單、穩(wěn)定、可擴(kuò)展的延遲消息隊(duì)列框架,具有精準(zhǔn)的定時(shí)任務(wù)和延遲隊(duì)列處理功能。自開源半年多以來,已成功為十幾家中小型企業(yè)提供了精準(zhǔn)定時(shí)調(diào)度方案,經(jīng)受住了生產(chǎn)環(huán)境的考驗(yàn)。為使更多童鞋受益,現(xiàn)給出開源框架地址:https://github.com/sunshinelyz/mykit-delay
文章已收錄到:
https://github.com/sunshinelyz/technology-binghe
https://gitee.com/binghe001/technology-binghe
主存編址與計(jì)算
這里,小伙伴們首先要區(qū)分兩個(gè)概念,一個(gè)是編址,一個(gè)是尋址。
編址: 存儲器是由一個(gè)個(gè)存儲單元構(gòu)成的,為了對存儲器進(jìn)行有效的管理,就需要對各個(gè)存儲單元編上號,即給每個(gè)單元賦予一個(gè)地址碼,這叫編址。經(jīng)編址后,存儲器在邏輯上便形成一個(gè)線性地址空間。
尋址: 存取數(shù)據(jù)時(shí),必須先給出地址碼,再由硬件電路譯碼找到數(shù)據(jù)所在地址,這叫尋址。
編址可以分為兩種:按字編址和按字節(jié)編址。
- 按字編址:存儲體的存儲單元是字存儲單元,即最小尋址單位是一個(gè)字。
- 按字節(jié)編址:存儲體的存儲單元是字節(jié)存儲單元,即最小尋址單位是一個(gè)字節(jié)。
對于主存編址中最常見的計(jì)算形式為:根據(jù)存儲器所要求的容量和選定的存儲芯片的容量,就可以計(jì)算出所需要的芯片的數(shù)量。公式如下所示。
- 總片數(shù) = 總?cè)萘?nbsp;/ 每片的容量
這里,給小伙伴們舉一個(gè)例子:若內(nèi)存地址區(qū)間為4000H ~ 43FFH,每個(gè)存儲單元可存儲16位二進(jìn)制數(shù),該內(nèi)存區(qū)域使用4片存儲器芯片構(gòu)成,則構(gòu)成該內(nèi)存所用的存儲器芯片的容量是多少?
解題思路也比較簡單,我們一起來看看如何解題:
(1)首先,我們來求解4000H ~ 43FFH地址空間的總?cè)萘?,使用終止地址-起始地址+1即可得到總?cè)萘?,也就?3FFH - 4000H + 1 = 43FFH + 1 - 4000H = 4400H - 4000H = 400H。
注意:在計(jì)算機(jī)中,以H結(jié)尾的數(shù)字是十六進(jìn)制,逢16進(jìn)1,而F在十六進(jìn)制中表示15,所以,43FFH + 1 = 4400H。
所以,4000H ~ 43FFH地址空間的總?cè)萘繛?00H。
(2)接下來,我們要把400H轉(zhuǎn)換成二進(jìn)制,對于十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)來說,每一位十六進(jìn)制數(shù)對應(yīng)著四位的二進(jìn)制數(shù),我們可以把400H拆分成4、0、0三部分,4轉(zhuǎn)換成二進(jìn)制數(shù)就表示0100,十六進(jìn)制的0轉(zhuǎn)換成二進(jìn)制為0000。所以,400H轉(zhuǎn)換成二進(jìn)制的結(jié)果為:0100 0000 0000。
0100 0000 0000也就是2的10次方,即為2^10^。
(3)題目中說的每個(gè)存儲單元可存儲16位二進(jìn)制數(shù),所有總共可以存儲的二進(jìn)制數(shù)就是:2^10^ * 16。
(4)該區(qū)域使用4片存儲器芯片構(gòu)成,所以,存儲芯片的容量為:2^10^ * 16 / 4 = 2^10^ * 4 = 2^12^,最終的結(jié)果單位為bit。
總線
一條總線同一時(shí)刻只允許一個(gè)設(shè)備發(fā)送數(shù)據(jù),但允許多個(gè)設(shè)備接收數(shù)據(jù)。
總線的分類
總線可以分為數(shù)據(jù)總線、地址總線和控制總線。
數(shù)據(jù)總線(Data Bus):在CPU和RAM之間來回傳送需要處理或是需要存儲的數(shù)據(jù)。
地址總線(Address Bus):用來指定在RAM(Random Access Memory)之中存儲的數(shù)據(jù)的地址。
控制總線(Control Bus):將微處理器控制單元(Control Unit)的信號傳送到周邊設(shè)備,一般常見的為USB Bus和1394 Bus。
串聯(lián)系統(tǒng)與并聯(lián)系統(tǒng)
這里,先給小伙伴們簡單介紹下什么是串聯(lián)系統(tǒng),什么是并聯(lián)系統(tǒng)。
串聯(lián)系統(tǒng)
串聯(lián)系統(tǒng)是組成系統(tǒng)的所有單元中任一單元失效就會導(dǎo)致整個(gè)系統(tǒng)失效的系統(tǒng)。把用電器各元件逐個(gè)順次連接起來,接入電路就組成了串聯(lián)電路。我們常見的裝飾用的"滿天星"小彩燈,常常就是串聯(lián)的。串聯(lián)電路有以下一些特點(diǎn):⑴電路連接特點(diǎn):串聯(lián)的整個(gè)電路是一個(gè)回路,各用電器依次相連,沒有"分支點(diǎn)"。⑵用電器工作特點(diǎn):各用電器相互影響,電路中一個(gè)用電器不工作,其余的用電器就無法工作。⑶開關(guān)控制特點(diǎn):串聯(lián)電路中的開關(guān)控制整個(gè)電路,開關(guān)位置變了,對電路的控制作用沒有影響。即串聯(lián)電路中開關(guān)的控制作用與其在電路中的位置無關(guān)。
注:以上對于串聯(lián)系統(tǒng)的描述來源于網(wǎng)絡(luò)。
接下來,我們來看一個(gè)關(guān)于串聯(lián)系統(tǒng)的圖形表示,這里我們假設(shè)串聯(lián)系統(tǒng)中每個(gè)部分的可靠度依次為R1,R2,...Rn,如下所示。
則整個(gè)系統(tǒng)的可靠度為:R = R1 * R2 * ... * Rn。
并聯(lián)系統(tǒng)
并聯(lián)系統(tǒng)指的是組成系統(tǒng)的所有單元都失效時(shí)才失效的系統(tǒng)。把電路中的元件并列地接到電路中的兩點(diǎn)間,電路中的電流分為幾個(gè)分支,分別流經(jīng)幾個(gè)元件的連接方式叫并聯(lián)。并聯(lián)電路是使在構(gòu)成并聯(lián)的電路元件間電流有一條以上的相互獨(dú)立通路,為電路組成二種基本的方式之一。例如,一個(gè)包含兩個(gè)電燈泡和一個(gè)9 V電池的簡單電路。若兩個(gè)電燈泡分別由兩組導(dǎo)線分開地連接到電池,則兩燈泡為并聯(lián)。
即若干二端電路元件共同跨接在一對節(jié)點(diǎn)之間的連接方式。這樣連成的總體稱為并聯(lián)組合。其特點(diǎn)是:①組合中的元件具有相同的電壓;②流入組合端點(diǎn)的電流等于流過幾個(gè)元件的電流之和;③線性時(shí)不變電阻元件并聯(lián)時(shí),并聯(lián)組合等效于一個(gè)電阻元件,其電導(dǎo)等于各并聯(lián)電阻的電導(dǎo)之和,稱為并聯(lián)組合的等效電導(dǎo),其倒數(shù)稱為等效電阻
注:以上對于并聯(lián)系統(tǒng)的描述來源于網(wǎng)絡(luò)。
接下來,我們來看一個(gè)關(guān)于并聯(lián)系統(tǒng)的圖形表示,這里我們假設(shè)并聯(lián)系統(tǒng)中每個(gè)部分的可靠度依次為R1,R2,...Rn,如下所示。
則整個(gè)并聯(lián)系統(tǒng)的可靠度R = 1 - (1 - R1) * (1 - R2) * ... * (1-Rn)。
混合型系統(tǒng)
混合型系統(tǒng)就是既有串聯(lián)系統(tǒng),又有并聯(lián)系統(tǒng)的系統(tǒng),這里,我們也使用一個(gè)圖形進(jìn)行表示,如下所示。
所以,上圖并聯(lián)系統(tǒng)的可靠度為:R * (1 - (1 - R) ^3^) * (1 - (1 - R) ^2^)
本文轉(zhuǎn)載自微信公眾號「冰河技術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系冰河技術(shù)公眾號。