軟件與硬件之間的交互流程

昨天晚上在思考“計算機軟件和硬件是如何交互的”這一問題,也就是“電腦的軟件如何將指令傳達給硬件”。這個問題是我在2010年2月份開始思考的。前期無果,中間擱置了幾個月的時間,這一次因爲一個偶然的機會又激發了我對這一問題的思考。

電腦硬件:有CPU(中央處理器)、RAM(內存)、Hard Disk(硬盤)、BIOS(基本輸入輸出系統)等;

電腦軟件:有操作系統,編譯器,應用軟件等;

其中最關鍵的是CPU和操作系統的交互。CPU擁有ISA(指令集),操作系統通過將高級語言編寫的程序轉化爲彙編語言(能被CPU翻譯成機器語言的特定彙編語言)後,再進一步轉化爲CPU能夠識別的機器語言,CPU利用自身的指令集將二進制代碼翻譯爲相應的指令。

這裏面涉及到信息的傳輸,數字信號作爲一種信息以電磁波或者電信號的形式傳輸的。以電信號爲例,數字信號依靠電流的有無或電壓的高低分別代表1或0,只要電流或電壓不高於某上限值,都會被認爲代表0;只要電流或電壓不低於某下限值,都會被認爲代表1,當然同一電路中下限值一定大幅度高於上限值,電流或電壓略高或略低寫並不影響其含義。

說到這裏,回到計算機的硬件與軟件的交互問題。軟件是以硬件爲載體的,在計算機中就是存儲器,其中包括有硬盤、CMOS芯片、BIOS芯片、內存條、軟盤、光盤等。構成存儲器的存儲介質,目前主要採用半導體器件和磁性材料。存儲器中最小的存儲單位就是一個雙穩態半導體電路或一個CMOS晶體管磁性材料的存儲元,它可存儲一個二進制代碼。由若干個存儲元組成一個存儲單元,然後再由許多存儲單元組成一個存儲器。 所以,與其說軟件與硬件的交互,不如說,從一開始軟件就是硬件的一部分,它是以二進制代碼的形式通過硬件的半導體器件和磁性材料存儲於硬件存儲器中。如此,下面就好理解了。

在電腦上電後,根據電路、模電、數電原理,該通電的都通上電了,存儲在硬件存儲器中的信息由於有了“動力”,便開始工作了,信息以電壓或電流的形式傳輸起來,實際上由簡單的二進制的高低信號構成了複雜的物理動作,這些物理動作可以被叫做指令集(ISA)的東西所解釋。可以理解爲,物理動作就是0,1組成的機器語言,而指令集能夠“翻譯”機器語言,也許用“理解”更恰當,因爲一般認爲機器語言是機器能夠直接聽懂的語言,就像漢語是中國人能夠直接理解的語言一樣。我們也不是天生就懂漢語的,大腦在環境中不斷適應過程中,形成了記憶,也可以說形成了“指令集”,對於傳輸過來的信息——漢語,我們可以很快的明白什麼意思,並作出反應。指令集可以根據二進制信號明白對方的意思,作出加減乘除運算,然後進行存儲或者傳輸等動作。完整的描述爲:CPU從存儲器或高速緩衝存儲器中取出指令,放入指令寄存器,並對指令譯碼。它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。 例如,要求一個加法運算,算數邏輯單元(ALU,Arithmetic Logic Unit)將會連接到一組輸入和一組輸出。輸入提供了要相加的數值,而且在輸出將含有總和結果。ALU內含電路系統,以於輸出端完成簡單的普通運算和邏輯運算(比如加法和位元運算)。如果加法運算產生一個對該CPU處理而言過大的結果,在標誌暫存器裏,運算溢出(Arithmetic Overflow)標誌可能會被設置(參見以下的數值精度探討)。信息的傳輸和指令的執行都是以晶振週期爲最小單位時間動作的。

每一個有思想的硬件都是有類似於CPU這樣的芯片的。它們其中集成了一些指令集,可以聽懂“別人的話”。如硬盤有硬盤控制器,處理器本身有控制器;CMOS芯片只有存儲功能,對於硬件參數比對的工作還需要交給CPU來做。

操作系統之所以重要,是因爲它是硬件與應用軟件的中間人,它將通過自己的平臺開發出來的應用程序解析爲彙編語言和機器語言與硬件交互。

總結:計算機的發明是二十世紀最重要的事件之一。人類能夠設計出這樣的一個如此精密的機器足以體現出人類的智慧。再複雜的事物也是由最基本的東西所組成,計算機的複雜之處在於它的高速性與準確性,而這一切的實現是由最基本的電子管、晶體管、集成電路完成的,這些都是硬件。人類歷史的又一大發明是第三代信息載體,它是在信息傳播中攜帶信息的媒介,是信息賴以附載的物質基礎,也是用於記錄、傳輸、積累和保存信息的實體。包括以能源和介質爲特徵,運用聲波、光波、電波傳遞信息的無形載體和以實物形態記錄爲特徵,運用紙張、膠捲、膠片、磁帶、磁盤傳遞和貯存信息的有形載體。 信息和計算機相依爲命,沒有信息,計算機便是一堆廢鐵;沒有計算機,我們現在的時代因爲信息處理的緩慢,定不會如此高速的發展。

簡而言之:二進制信號(軟件)在載體(硬件)中傳輸,經由固體電子元件(硬件)得以執行,然後又可以以二進制信號(軟件)的形式存儲在載體(硬件)中。

參考資料:

http://baike.baidu.com/view/955838.htm

http://baike.baidu.com/view/50088.html?wtp=tt

http://baike.baidu.com/view/22318.html?wtp=tt#3

http://baike.baidu.com/view/2089.htm?fr=ala0_1_1

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