補充說明關於計算機組成原理與底層的東西

今天看了肖老師的回答。其實我對硬件的瞭解也不多。做一點點的補充。有的瞭解。有的畫出範圍。去相應的繫了解情況。

肖老師您好,有一些問題想請教您.我對組成計算機最底層的元器件的工作原理一無所知,爲人類製作出如此複雜的計算機而折服,同時也很疑惑,總結了以下一些問題:
1.組成計算機的元器件除了晶體管,繼電器等還有哪些?他們都是起什麼作用的?
2.爲什麼一通電計算機就可以工作了呢?電流對哪些元器件起作用才使計算機工作的?
3.計算機識別0和1,在計算機中0和1是通過什麼元器件表示的?
4.爲什麼計算機能處理圖像和聲音,cpu內部運算器好像只是完成加減乘除吧,怎麼處理這些東西的?
5.計算機剛出現時,沒有鍵盤,用機器語言編程,怎樣把0和1輸入計算機,用的什麼器件?
6.內存爲什麼可以存儲呢?
    問的問題可能比較幼稚,但我真的想搞明白。這些東西老困擾着我,我是軟件工程專業的學生,在學組成原理,數據結構,接口之類的課時老覺得心裏沒底,糊里糊塗的,我始終覺得自己根本不瞭解計算機。希望老師能指點一下。謝謝您老師。

===========================

我的回答:

哇哦,這些問題,貌似有點難。

這位同學,這些其實都是《計算機組成原理》裏面的知識,應該由你們老師講的,我覺得首先,你應該去問問你的老師,他收了你的學費的,應該給你講解清楚。

嗯,感謝你這麼看得起我,我試着回答一下,先說明,我的不是書本上的標準答案,考試可別用我的答案啊。另外,估計你是大一的新生,學了計算機的專業,但是還沒有基礎,建議你這學期好好看看教科書,有些基礎知識,教科書是正解。

1、組成計算機的元器件除了晶體管,繼電器等還有哪些?他們都是起什麼作用的?

嗯,應該說,這個問題過時了,倒退50年,你這麼說是正確的,因爲那會的計算機剛剛從電子管進步到晶體管,不過,目前都是超大規模集成電路計算,計 算機裏面都是集成電路塊,CPU,內存,甚至聲音處理模塊,圖形卡上的GPU,都是超大規模集成電路,沒有晶體管了。繼電器則是第一臺真正意義的計算機出 現前的東東,早就不用了。

                                                                        物理層之物理

簡單來說電路就是電路板上的東西。線。電阻。電容。電感。加上各種二極管。三極管。具體怎麼用的這個去看電路的東西。微電子,電路專業重點研究這些。我們從來不關注。超出了計算機的研究範圍。就是專門搞硬件的人對這個研究的也不多。
 

2.爲什麼一通電計算機就可以工作了呢?電流對哪些元器件起作用才使計算機工作的?

通電計算機並不能工作,通電通常是給計算機CPU的某根引腳加上一個高電平,這樣從軟件讀入,這個端口從0變成1,由此引發一箇中斷信號,而中斷跳 轉的地址,是BIOS裏面寫好了的,CPU於是跳到這裏開始執行機器碼程序,並隨之開始啓動磁盤,從磁盤上讀入OS操作系統,一步步BOOT,最終把整個 操作系統調入內存開始運行,這些是軟件的工作。硬件就是保證加電後給出一路中斷信號即可。

                                                                       物理層之編碼(表示)

計算機通電不能工作。而是設計計算機的時候賦予了編碼的信息而讓他工作的。比如第123根線有 000,001,010,011,100,101,110,111八種狀態。假設第一個是開機。第二個是重啓。第三個是關機。大概就是這樣設計實現的。這 個是最基本的。是固定的。還有的是不固定的。可以修改的而組成了諸如ROM和RAM。這個東西計算機組成原理和微機原理裏面有。具體的設計實現組成原理裏 面有。

宏觀來說那個元件都起作用。至於讓那個,不讓那個CPU裏面由門陣列和微處理器完成。


3.計算機識別0和1,在計算機中0和1是通過什麼元器件表示的?

0和1都是由電路表示的,這個電路可能是集成塊的一根引腳,也可能是一段導線,在計算機裏面,大家通常把+5V作爲1,0V作爲0,這樣,一個電 路,要麼是1,要麼是0,可以表示兩種狀態,由此引發了二進制的使用,我們在現代計算機裏面使用的所有數字,最終在計算機內部都表示爲二進制數值,連帶 着,16進制也比較流行,因爲它是2的整倍數,轉換方便。

                                                                          物理層之應用

0和1在不同的系統中是不同的表示。有的是有和沒有表示0和1。有的是通過相位表示。這個需要有個時鐘來找出正弦和餘弦波。有的是 方波。有的是正波。有的是高電平。有的是低電平。有的是通過頻率。有的是幅度。也就是高低電平。這個東西電路和數字邏輯,計算機組成原理,計算機網絡裏面 都用。


4.爲什麼計算機能處理圖像和聲音,cpu內部運算器好像只是完成加減乘除吧,怎麼處理這些東西的?

所有的圖像和聲音,都是“數據”,這和我們做個數組,裏面填些數字沒有差別,僅僅是我們用戶對其使用的定義不同而已,一段數據,我們說,它是音頻, 它就是音頻,說它是視頻,它就是視頻,其實數據本身是無屬性的,看使用者用什麼方式理解它。當然,如果我們把視頻數據用音頻放,放出來可能是雜音而已,數 據主要看來源,看用途,中間存儲和傳輸,是無屬性的。

既然是數據,CPU當然能加減乘除,其實大多數時候,我們的CPU只有一種計算,就是加法,所有的四則運算,都是最終轉換成加法運算執行的,當然, 這種轉換有時候是硬件執行,Intel系列的CPU是CISC複雜指令集結構,它提供乘法指令,但是,內部轉換成加法執行,而諸如PowerPC、Sun 的一些RISC精簡指令集CPU,則只提供加法,要求應用程序自己完成這種轉換。

當然,有了計算法則,就可以套用公式了,一段數據,如何還原成聲音或者圖像,是有公式的,這是數學家的事情,不是程序員的事情。而現代計算機,都有音頻和視頻設備,公式逆運算出來的數據,直接推送到聲卡或顯卡,即可獲得圖形顯示和聲音。

                                                                           CPU的構成

簡單來說CPU是由運算器,控制器和存儲組織構成的。第三個書上沒說。其實現代計算機的爲了加快速度越來越多的內存裏面的東西放到了CPU裏面。這樣速度 可以加快。舉個簡單的例子。一個市面的CPU頻率是2.0GHz而內存的我們用的是DDR2 800的東西。裏面的速度不一樣。我簡單換一下。把內存換爲DDR2 1G的條子。如果CPU要運算。從內存的取數據那麼過去一個要1/1GHz 的時間*2的次數。而CPU這個時候完成了4次指令了。而實際上在數據通路的過程中數組通路是由總線來完成的。如果總線仲裁不通過。那麼CPU需要等待更 多的時間。這樣很不好。我們還發展那麼快的CPU幹什麼。對吧。

                                                                           CPU的功能

CPU裏面的算術運算是運算器搞定的。有的是不需要大規模運算的。比如你把一個文件從C盤複製到了E盤。這個就不通過CPU。但是 要通過CPU的控制。CPU使用通道或者DMA來完成從硬盤到內存的讀寫工作。CPU去幹它自己的事情。不然你一個複製粘貼後電腦定住了。完了電腦纔好。 呵呵。估計你以爲電腦壞了吧~~

說完了CPU的功能。接下來說方式。無論是音頻還是視頻或者圖像交給相應的硬件設備完成。CPU最多通過指令瞭解到“哦,你原來要這樣。去吧!”下面的硬件就開始工作了。這個工作的過程是不經過CPU的直到1.出錯了。像CPU報告:“錯誤解決不了。請指示。”2.“任務完成了。”


5.計算機剛出現時,沒有鍵盤,用機器語言編程,怎樣把0和1輸入計算機,用的什麼器件?

用按鈕,一排8個按鈕,按下表示1,不按表示0,把一個字節的數據,以8位二進制表示出來,按好按鈕,然後有個確定按鈕,一按,一個字節的數據就輸入到計算機裏面去了。最古老的機器碼程序都是這麼寫的。

當然,這樣太慢,後來出現穿孔紙帶,一排算一個字節,打孔算1,不打孔算0,一排8個位置,表示8位二進制數字,這樣效率高一些,可以一次把幾十上 百個Bytes打好,然後一次輸入到計算機裏面。有個掃描儀類似的東東,把紙帶從一端插入,一按按鈕,紙帶過一遍,這些數據就都進去了。

後來慢慢有了行編輯,有了電傳打字機,慢慢又進化到顯示器+鍵盤,然後又進化到圖形界面,你現在看到的,是進化了60年的計算機。

                                                                               存儲器/輸入輸出

                                                                                   輸入輸出

剛纔說了內存和CPU速度不匹配的問題。其實硬盤的速度更慢。那個都是多少轉一分鐘。如果你讓CPU去等硬盤的速度還不如去讓 CPU去適應你敲鍵盤。還要幾GHz的CPU幹什麼。早期的5000次加法一秒的綽綽有餘。在最早的時候。計算機的鼻祖我始終認爲是英國軍情處的電子計算 機而不是那個什麼美國貨。那個時代的計算機是破譯德軍密碼用的。用到了大量運算。爲了保密。才使得美國佬說他們是計算機的發明人。說遠了。那個時代的電器 工程師撥各個開關。再後來是計算機就是穿孔。一個紙條分割爲若干個區域。1表示打孔。沒孔表示0.然後計算機讀。這樣一次輸入一個。太慢了。再後來有了衛 星機。衛星機負責輸入和輸出到運算機。大家的紙條的內容都到了衛星機裏面。再後來的後來的後來的後來到了現在。裏面的過程你去看操作系統。

                                                                                 存儲器

到了衛星機後漸漸的也就演變了。我們的計算機也不叫馮諾依曼機(系統)了。叫存儲機(哈佛系統)①。你人輸入的再快也趕不上CPU的 速度快。也就解放出來。存儲系統有了內存。有了硬盤,磁帶,光盤,優盤乃至你的PDA,手機。這個速度是一個比一個慢。但是可以通過多個數據通路的方法來電子的完成。而不是機械的完成。如果是機械的完成飛機到了今天發動機也就是那麼快。而計算機的早就到了GHz。存儲系統你看計算機系統結構(體系結構)的 書和計算機組成原理。

6.內存爲什麼可以存儲呢?
 

內存是一種特殊的集成電路塊,有三種引腳,一種是地址線,表示下個動作要碰觸內部哪個單元,一般是8、16、32根,根據這個集成塊內部能存儲的數 據多少來說。一種是數據線,一般是8根,也有16根,32根,分表表示不同位寬的數據,還有一種是觸發器,表示下面進行哪個動作。

內存有兩種狀態,一種是寫狀態,就是你在數據線用高低電平放好一個數據(8位二進制),地址線用高低電平放好一個地址,然後電路以一個高電平或者低 電平,觸發其寫腳,數字就被拷貝到內部指定單元。讀呢反過來,地址線放好地址,觸發一個讀腳,數據線上就可以讀到高低電平,就是內部該單元的數據。

內存其實就是可以保存狀態的一個電路,如果我們把那個單元設置爲高電平,一般說來只要不改它,下次無論什麼時候讀,都是高電平。磁盤,光盤其實都很類似,就是我們在某個點設置某個信號,這種材料能保證我們下次來讀的時候,還能讀到這個信號。

內存種類很多,不過大體意思是這個意思。

內存是通過電容實現的。不過不是普通的電容。具體的你看組成原理的書。

                                                                                           內存的工作方式

內存有單元有四個大線。地址總線,數據總線,讀寫線和控制線。宏觀內存只有三個線好比你的寢室樓。地址總線表示你房間在哪裏。數據就是你和你室友,到底是誰?讀寫線表示開門後是進來還是出去。控制線是讓不讓開門。這個組成原理的存儲結構那章有。後兩個就是一根線。

微觀來說你們一層樓一次走廊只能走一個人。不然就不知道誰是誰了。宏觀來說寢室樓可以各個樓層都走一個人。這樣就是一個字一個字的傳送而不是一位一位的。你問如果讓我們樓層的每間單獨傳送怎麼辦。沒辦法。一次一位。但是計算機組成原理和體系結構裏面相鄰的地址在物理上是縱向設計的。

1234

5678


1357

2468

實際的是下面的。一次也就是12 兩個。一起。

計算機硬件的還有很多東西。如果有疑問大概過了年我就會有很多時間上線了。到時候慢慢交流。

先回答道這裏吧,建議你應該多看看專業書。

涉及的書:電路,數字邏輯,計算機組成原理,微機原理與彙編,單片機與嵌入式系統,操作系統,計算機系統結構,計算機網絡。

這個也就是CS專業的硬件的和理論的全部了。

除了人工智能基本上剩下的都是軟件了。其實人工智能也是軟件的一種思想。

GL

注①哈佛結構和普林斯頓結構(馮諾依曼結構)其實並不是文中那樣。只是在程序和代碼的內存方面的分歧。不過早期的轉變帶來了計算機巨大的發展。詳細請看http://student.csdn.net/space.php?uid=39017&do=blog&id=17610

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章