揭開電腦的神秘面紗

來源:互聯網
上載者:User

標籤:

寫在前面的話:從接觸電腦以來,就一直對電腦充滿好奇。當電腦串連上電源,按下開機鍵,我們就可以做所有我們想做的事情,打遊戲、寫文章、看電影、搭建web伺服器、自己寫程式等等。隨著接觸電腦的時間越長,反而對電腦更加的陌生,不斷的問自己,電腦到底是怎麼組成的?為什麼就能夠實現這些功能?如果讓我穿越回多少年前,該如何搭建一台電腦?恰好這幾天讀完這本書《code:the hidden Language of computer hardware and software》,確實一本好書,許多的疑惑得以解開,這篇部落格就寫寫那些深深觸動我的點,我認為,理解了這些點,也就理解了整本書的內容,進而理解了電腦是怎麼回事。

=====本文開始========

1.繼電器

  看下面兩幅圖:

  

  (1)左圖中:一個鐵芯,纏上一些線圈,當沒有通電時,開關A是斷開的,Out端沒有電壓,我們認為輸出為0.

  (2)右圖中:當線圈通電後,鐵芯被磁化,相當於變成了一塊磁鐵,進而可以吸引上面的開關A,Out端有電壓,我們認為輸出為1.

  上面這麼一個小小的簡單的東西,就是繼電器,它的意義非凡,因為我們可以人為的去控制:輸出0和1了。

  雖然在電腦中,繼電器逐漸被真空管、晶體管取代,但是他們要實現的作用是一致的:輸出0和1。

 2.二進位

   我們生活中採用十進位,可是電腦內的計算採用二進位,我認為這是非常重要的改變。請看下面的邏輯:

  (1)二進位只有0和1,進而也導致二進位的加減乘除的結果只有0和1,二進位的與或非的結果也只有0和1

  (2)進而可以將二進位的加減乘除與二進位的與或非進行等價

  (3)而繼電器可以輸出0和1,因此可以通過繼電器的各種”變著花樣的組合“實現各種與或非

  (4)因此可以通過繼電器的各種”變著花樣的組合“實現二進位的加減乘除運算。

  理解了上面的邏輯,接下來要做的僅僅是實現所需功能而已。如何?功能,也只是時間而已,下面貼一些圖,展示一下如何通過繼電器實現複雜的邏輯結構,作為一個實現思路的引子,而實現各種自己想要的邏輯,經過幾個夜晚的苦思冥想,是可以想出來的,如果不想自己去想,那麼可以看看Code一書,算作一個捷徑。

            繼電器實現邏輯與                        繼電器實現邏輯或

 

            繼電器實現半加器                        繼電器實現全加器

 

  不要被上面的圖嚇到,他們僅僅是繼電器的變著花樣的組合而已,如果我們沉下心來,也可以實現這樣的組合,甚至可以實現更多我們所需要的,比如8位加法器、減法器、乘法器、除法器等等。

  於是我們已經能夠實現了電腦中CPU的一個重要功能:邏輯運算。

  然而上面的操作,例如輸入,都需要我們人為的去操作,我們可以去想象一下:一個人坐在那裡,撥著開關,進行著操作,是多麼的枯燥。如果實現自動運行,也就是說無需人為的操作,實現0、1的輸出,是多麼好的一件事清,我們確實也可以做到,接著往下看。

3.另外一種串連方式的繼電器:反饋

  看下面兩幅圖:

  左圖中,繼電器沒有通電的時候,繼電器上面的開關B是閉合的;右圖中,一旦給繼電器通電(也就是開關A閉合),奇妙的事情就發生了:

  (1)繼電器通電,會吸引上面的開關B,進而使電路斷開。

  (2)電路一旦斷開,開關B又恢複原位,使電路接通。(注意開關A一直是閉合的)

  (3)上面兩個過程自動重複進行下去了。

  上面實現了這樣的一種可能:繼電器的輸出可以在0和1之間自動完成,而能夠自動完成的根本原因,在於下面兩點:

  (1)繼電器在斷電的情況下,開關B是閉合的(常閉型繼電器),而前面的講到的繼電器在斷電的情況下,開關B都是斷開的(常開型繼電器),這是一點不同。

  (2)繼電器的輸入和輸出沒有分開,而是組成了一個迴路,確切的說:是有反饋了。

  經過上面兩點小小的改變,我們可以利用這種思想,實現一系列其他所需的功能:

  (1)我們可以實現RS觸發器              (2)我們可以實現D觸發器:實現對1位元據的儲存。

             

  其中D觸發器可以稱為1位鎖存器;通過對D觸發器的各種變著花樣的組合,我們可以實現邊沿電源觸發的觸發器,進而實現多位鎖存器;

  通過將邊沿觸發的D觸發器的輸出反饋至輸入,我們又可以實現分頻器,進而實現計數器,同時計數器可以作為各個部分的時鐘觸發訊號。

  如果忽略上面的細節,我們知道我們已經可以實現鎖存器、計數器、時鐘訊號。

  於是鎖存器構成了CPU中的寄存器和電腦中的記憶體RAM以及顯卡的顯存RAM;

  計數器和時鐘訊號構成了電腦中的時鐘驅動訊號。

4.匯流排

  上面我們可以說已經實現了CPU和RAM(記憶體、顯存),一旦將CPU與RAM串連,在能夠自動啟動並執行時鐘訊號的驅動下,CPU和RAM就能夠協同工作實現所需的功能。CPU與RAM串連後,既可以實現RAM的輸出給CPU進行運算,又可以實現CPU的輸出給RAM進行儲存。

  這些的輸入輸出都是通過實實在在的導線串連的。為了不至於使導線密密麻麻的難以辨識,我們可以對各個電路組件進行”各種變著花樣的組合“,並把線路梳理清楚,總結為三種線路:資料匯流排、控制匯流排、地址匯流排。

  (1)資料匯流排:上面傳輸的是資料,如果能夠傳輸8位,那麼就說資料位元寬為8位。當然這裡8位也是與前面提到的鎖存器的位元是對應的;也可以說是與CPU中的寄存器的位元是對應的,其實都一回事。

  (2)地址匯流排:地址匯流排也一根根的實際的導線,通過這些導線,就可以能夠方便的選取RAM中的特定的鎖存器;地址匯流排的數目決定了能夠定址的最大RAM。

  (3)控制匯流排:傳送控制訊號,實現特定的控制功能,比如確定是讀RAM中的資料,還是往RAM中寫入資料。

  還是要說上一句:這些線都是實實在在的導線。

5.機器語言

  匯流排上面傳輸著0和1訊號,通過0和1訊號的各種變換,表示著傳送不同的資訊;RAM具有儲存的功能,因此我們可以把一下0和1的資訊儲存進RAM,進而就可以讓CPU去執行該命令了,這些命令就可以稱為機器語言。

  機器語言的0和1我們可以通過開關等多種方式寫入RAM中,畢竟RAM是可以儲存資訊的;如果每次都寫01太繁瑣和不方便,於是將這些01的代碼用特定的符號表示,出現了組合語言,組合語言變成01代碼的機器語言,需要通過組譯工具來實現,而組譯工具將彙編來源程式彙編成機器代碼,其實就是去查一下機器代碼和彙編符號的對照表格而已。

  隨著時間的發展,進階語言也相應出現了。

  CPU本質上來說是由繼電器構成的,確切一點是晶體管構成,不同的公司的不同工程師造出來的cpu,相應的構成也會有一些差別,導致機器指令代碼也就不同,於是出現了不同的指令集,如X86指令集,RISC指令集等等。

6.外部儲存介質

  前面提到的RAM,本質上是由繼電器構成的,確切的說是由半導體構成,這都無所謂,他們都有一個共同的特點:當斷電的瞬間,一切都沒有了,為什麼呢?因為電這個東西比較奇怪,說沒就沒了,如果想要長久的儲存資料,得需要其他的方式:例如通過磁性物質來儲存,於是出現了磁帶、磁碟;通過光資訊來儲存i資訊,如光碟片;以及其他的東西:如ROM、Flash等。

 

   電腦的構成越來越複雜,以至於掩蓋我們內心最初的好奇與衝動。

 

原文地址:http://www.cnblogs.com/wuguanglei/p/4297904.html

揭開電腦的神秘面紗

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.