陳凱
當(dāng)人們看到“隨機(jī)存取存儲器”或者是“RAM”這樣的詞語時,頭腦中浮現(xiàn)出來的畫面是怎樣的呢?也許是如圖1所示的樣子。
這當(dāng)然沒有錯,如果要為自己的計(jì)算機(jī)添加內(nèi)存條,那么只要找到和圖片中差不多的物件,安裝到主板相應(yīng)位置即可。然而,若說起“隨機(jī)存取存儲器”,頭腦中所浮現(xiàn)的畫面僅僅像圖1所示的樣子,那又如何解答以下問題:隨機(jī)存取存儲器存儲的究竟是什么?如何讀取或?qū)懭胄畔??“隨機(jī)”一詞又是什么意思?筆者經(jīng)常會考慮,究竟怎樣做,才能讓應(yīng)用背后的技術(shù)更簡單直觀地在教學(xué)過程中呈現(xiàn)出來?
按生產(chǎn)工藝和性能不同,“隨機(jī)存取存儲器”分好幾種,本文選取常用也相對簡單的動態(tài)隨機(jī)存取存儲器(縮寫為DRAM)進(jìn)行說明,用EWB電路模擬軟件來模擬存儲器讀寫過程,EWB軟件既可以繪制電路,也可以實(shí)施電路的模擬運(yùn)行,當(dāng)然大家也可以使用其他的電路模擬軟件來實(shí)施文中的例子。為了盡可能簡單直觀地說明問題,筆者對文中的電路做了極大的簡化,希望能做到形不似卻神似。
考慮以下場景:Alice帶領(lǐng)探險隊(duì)進(jìn)入某大規(guī)模地下迷宮執(zhí)行神秘任務(wù),她要根據(jù)向?qū)ob給自己留下的“指路神器”來辨識方向,每遇見一個岔路,就按下“指路神器”的按鈕,以燈亮表示走左側(cè)岔路,燈不亮表示走右側(cè)岔路。由于害怕隊(duì)伍中有敵人派來的奸細(xì),所以只有到岔路口才能讀取信息。問題是,Bob如何將方向信號保存到“指路神器”中呢?最簡單的“指路神器”可以用一系列電鍵、電容、發(fā)光二極管組裝而成,假設(shè)Alice只會碰到兩次道路分岔的情況,那么Bob可以提供兩套設(shè)備,并預(yù)先作了如圖2所示的操作。
因?yàn)殡娙菘梢源鎯﹄姾桑噪娙葜惺欠翊鎯τ须姾删涂梢杂脕肀硎拘畔?。圖標(biāo)表示的就是用來存儲信息的電容。為了將“左轉(zhuǎn)”信息存儲在一號裝置的電容中,Bob將一號裝置的電鍵閉合一段時間后再斷開;為了將“右轉(zhuǎn)”信息存儲在二號裝置的電容中,Bob將二號裝置的電鍵一直處于斷開狀態(tài)。Alice拿到“指路神器”時的狀態(tài)應(yīng)該是如下頁圖3所示的狀態(tài)。
注意,不到讀取信息的時候,電鍵[0]和[1]都必須是斷開的,因?yàn)橐坏┖蠑n電鍵[0]或[1],就等于把電容中原有的信息覆蓋了。默認(rèn)情況下,發(fā)光二極管都是不亮的,當(dāng)遇到第一個岔路時,Alice合攏電鍵[A](如下頁圖4),這時一號裝置的發(fā)光二極管會亮一段時間,直到電容放電完畢后才重新變暗,于是她就知道要走左側(cè)岔路了。
而合攏電鍵[B],二號裝置的發(fā)光二極管始終都不會亮,于是她就知道要走右側(cè)岔路。然而,現(xiàn)實(shí)總是沒有理想那么豐滿,電容雖然可以臨時存儲進(jìn)電荷來代表信息,但電容的電荷會隨著時間的流逝而逐漸丟失,也就是通俗所說的漏電。EWB軟件中的電容太“完美”了,較難演示漏電,于是筆者就用了一個高阻值的電阻來模擬電容漏電的過程(如圖5)。
在模擬實(shí)驗(yàn)時,可以先用5秒左右時間,閉合電鍵[3]給電容充電,然后斷開。因?yàn)殡娙葜械碾姇趲酌雰?nèi)漏完,所以只有及時合攏[C]才能讀出電容中的信息。這個例子已經(jīng)比較直觀地演示了RAM中最基本的存取信息的過程。
如果用實(shí)際的電容操作實(shí)驗(yàn)就會發(fā)現(xiàn),幾微法的電容在斷電后信息維持時間還是相當(dāng)長的,但在內(nèi)存條中,電容的電容值很小,維持時間非常短,所以使用中要定時實(shí)施“刷新”動作,才能維持住電容中的電荷量,斷電超過一定時間后,RAM中的信息就會丟失。由于定時刷新電路比較復(fù)雜,這里就不作展開了。
想象一個魔幻的場景:假設(shè)Alice還持有一個神奇動物記錄器,她的一項(xiàng)任務(wù)就是在規(guī)定時間里,統(tǒng)計(jì)地下迷宮中某種神奇動物的行為特征,如果遇見該動物在活動,則往電容存儲1,如遇見該動物在睡眠,則往電容存儲0。不過Alice是個十分專注又缺乏時間觀念的探險家,常常不在規(guī)定時間里進(jìn)行記錄。因此,Bob設(shè)計(jì)了一個帶有“允許”開關(guān)的記錄裝置,Alice的助手Carol負(fù)責(zé)打開或關(guān)閉這個“允許”開關(guān),只有在“允許”開關(guān)合攏的情況下,Alice才能完成信息記錄動作。于是整個電路圖變成了如下頁圖6所示的樣子。
圖6中多了許多零件,尤其值得注意的是多了場效應(yīng)晶體管,以來表示。這個電路的作用是通過場效應(yīng)晶體管控制外界是否有往電容存儲信息的權(quán)限。例如,電鍵[P]閉合表示允許寫信息,電鍵[D]閉合表示執(zhí)行寫入數(shù)值1的動作,于是信息1就被存儲到電容中。為了檢驗(yàn)數(shù)值1是否被存入電容,可以先把電鍵[D]和[P]斷開,然后閉合電鍵[R],如發(fā)光二極管短暫點(diǎn)亮,則說明數(shù)據(jù)被寫入。即便不講解電路的原理,也能在比較短的時間里,演示信息存儲和讀取的整個過程,或者可以直接讓學(xué)習(xí)者在模擬軟件中親自操作一下。
當(dāng)然,在RAM電路中,并不是通過電鍵來控制讀寫信息的時間順序,而是依賴一個時序電路來控制整個流程,大家也許注意到了,每次讀取信息時,電容的電荷都會丟失,所以還需要借助一個回寫電路,將讀取的信息重新寫入電容中。
想象一個稍微復(fù)雜點(diǎn)的場景:Alice要借助一套裝置統(tǒng)計(jì)地下迷宮中四種神奇動物的行為特征——或許是因?yàn)榭匆娚衿鎰游锏呐d奮讓她變得比較健忘吧,當(dāng)初究竟為什么要選擇她來執(zhí)行這項(xiàng)任務(wù)呢?
需要探查的四種神奇動物編號從零號到三號。如遇見動物在活動,則往相應(yīng)電容中存儲1,遇見動物在睡眠,則往相應(yīng)電容中存儲0。例如,看見零號動物在活動,則往零號電容存儲1,看見二號動物在睡眠,則往二號電容存儲0。雖然看上去需求并不復(fù)雜,但為了實(shí)現(xiàn)指定存儲元件的地址定位工作,就需要用到邏輯門,若將電路圖完整繪制出來,占用的篇幅也是相當(dāng)可觀的,好在可以將具體的電子元件在邏輯層面進(jìn)行封裝,這樣就可以在基本符合事實(shí)的情況下解釋定位過程了。地址為www.indiabix.com/electronics-circuits/dynamic-ram/的網(wǎng)頁上提供了一個現(xiàn)成的邏輯電路JAVA模擬器,可以直接點(diǎn)擊鼠標(biāo)模擬運(yùn)行。
如圖7所示,兩個帶小圓圈的三角形邏輯元件是非門,四個類似拱門形狀的邏輯元件是與門。這六個元件的連接,實(shí)際上是按照以下四行邏輯表達(dá)式來構(gòu)造的:
F0 = A1 AND A2;
F1 = (NOT A1) AND A2;
F2 = A1 AND (NOT A2);
F3 = (NOT A1) AND (NOT A2)
這四行邏輯表達(dá)式中,初始輸入的A1和A2可以有“0、0”“0、1”“1、0”
“1、1”四種情況,每輸入一對A1和A2的值,四行邏輯表達(dá)式中都只會有一個結(jié)果為1,這樣就能將A1和A2的數(shù)值作為定位地址來使用了。可以清晰地看出,兩個二進(jìn)制符號能夠定位四個地址。如果需要定位更多的地址,就要用到更復(fù)雜一些的邏輯表達(dá)式。根據(jù)二進(jìn)制原理,n個符號就能定位2的n次方數(shù)量的地址。由于可以按地址存儲信息,因此就能實(shí)現(xiàn)隨時在某特定位置存取信息的功能,與通過磁帶或紙帶順序讀寫信息的方式有很大不同,因此稱為隨機(jī)。
筆者一直認(rèn)為應(yīng)該將數(shù)字電路的知識納入到信息技術(shù)課程中,因?yàn)橄嚓P(guān)內(nèi)容與計(jì)算思維的培養(yǎng)有著密切的關(guān)系。當(dāng)前有些地區(qū)的通用技術(shù)課程或勞動技術(shù)課程中,包含有一些基礎(chǔ)的數(shù)字電路的知識和實(shí)驗(yàn),如果能將它們和信息技術(shù)的部分內(nèi)容進(jìn)行整合,可以起到一加一大于二的效果。