自從第一台計算機誕生到現在,計算機在計算,通訊,交通,娛樂等方面展現出了強大的生產力,那麼是什麼賦予它的能力呢?下面是我對計算機的個人理解。
在計算機領域兩個偉大的先驅不得不提,乙個圖靈,乙個馮諾依曼。圖靈解決了如何完成任務的方法。他將任務分成資料流和控制流,資料流在控制流的指引下得到最後的結果。這個在今天方案解決工程中依然適用,資料流就是我們常用的資料結構,而控制流就是演算法。馮諾依曼提出了由運算器,暫存器,高速匯流排的計算機結構影響深遠,至今的計算機逃脫不了這種架構。而gpu,cpu、dsp以及其他智慧型硬體都是對其中某項或者某幾項的改進和優化。
隨著半導體相關技術的發展,計算機計算速度和儲存速度容量都發生了巨大變化。神奇的摩爾定律(當**不變時,積體電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,效能也將提公升一倍)指引了在半導體行業發展中的規律。如今,運算處理器已經可以實現多核ghz的運算速度,理論上來講**處理器每秒可以執行
計算機若想體現自身的價值,必須開發出相應的軟體。那麼正常的軟體程式是如何在計算機上執行的呢?
計算機底層是只識別0和1數字的。而**運算單元根據需求編碼出一套指令,作業系統根據指令提供了api,編譯環境開發者對這些api封裝得到sdk,那麼軟體開發人員就可以根據sdk進行軟體開發。從計算機向上看是一層層的封裝。而計算機的執行過程正好是這些過程反過來。
所以,首先軟體開發人員需要將任務翻譯成**也就是編輯過程,這個就涉及到資料結構的合理設計(類的高內聚低耦合),演算法的選取(空間和時間複雜度)等等。
其次,編輯好的軟體需要開發環境的編譯。在這其中還要涉及到程式的預編譯(c語言中是將巨集進行替代),開發環境需要按照檔案為基本單位對**進行翻譯,翻譯成組合語言,每個檔案編譯後得到對應的目標檔案。
再次,鏈結。編譯是以檔案為基本單位進行的,編譯好的目標檔案可能包含其他檔案命名的變數或者函式,在這個過程中需要將各個檔案進行鏈結(在linux系統中是通過make檔案來完成)最終鏈結形成可執行檔案。靜態載入動態庫時,將動態庫的**拷入到可執行檔案中,最終形成的可執行檔案比較大;動態載入時,這裡只記錄函式位址,形成的可執行檔案較小,這樣占用記憶體少,是目前比較流行的方式。但是動態載入需要進入動態庫載入函式,可能會增加呼叫時間。經過這一步我們就完成了乙個程式了。
剩下的是執行部分。以下就具體解釋下執行過程。
那麼程式是如何變成程序的呢?
首先,通過雙擊圖示或者其他方式(開機啟動登錄檔或者其他程序載入)將程式進行載入。此時作業系統為程序建立乙個程序控制塊,放入到cpu任務佇列中,此時程式就進入了就緒態,等待cpu來執行,程序的執行順序可參考我的另一篇文章任務排程。是否將程式載入到記憶體中根據作業系統不同而不同。這裡載入是根據虛擬記憶體4g空間位置(該位置固定) 進行位址對映到實際實體地址,具體可參考我的另一篇部落格記憶體管理。
其次,程序條件滿足時,cpu將執行該程序,程序進入執行狀態。此時,控制暫存器將根據位址尋找到對應的**和資料放入到指定的暫存器或者其他等級的高階快取中。運算器將從這些暫存器中執行運算,並將結果放在另外指定的暫存器中。如此迴圈執行。
再次,當程序條件不滿足時或者有更高階的程序搶占cpu時,當前程序將被儲存進入阻塞態,直至下次條件滿足時cpu執行。此時記憶體中該程序的資料有可能被作業系統中放入到磁碟的swap區(windows系統常常叫虛擬記憶體,實際是不準確的)。
最後,當程序執行完畢或者遇到強行終止的狀態時,程序就進入終止態。此時將從記憶體中將程序的相關資料移除。整個程序結束。
此時,就完成了人類語言到機器碼的過程,再到實現過程。具體到具體應用上,計算機能夠按照這個結構實現對複雜模型的快速運算,對大型系統的實時控制。然而這些模型和系統都是人類按照一定規則計算好的,計算機做的不錯的是在資料傳輸這塊。現在的人工智慧想讓計算機完成自我指定規則(大資料)或者想讓計算機按照某種特定規則泛化(深度學習)來完成任務。那麼在現有框架下是否能夠完成呢?語音識別,影象識別在深度學習的訓練下已經提高了很多精度,能否在其他方面也有所拓展呢?
計算機系統結構 計算機 計算機系統的基本結構
乙個完整的計算機系統是由計算機硬體系統和計算機軟體系統兩部分組成。硬體是計算機的實體,又稱為硬裝置,是所有固定裝置的總稱。它是計算機實現其功能的物質基礎,其基本配置可分為 主機 鍵盤 顯示器 光碟機 硬碟 軟盤驅動器 印表機 滑鼠等。軟體是指揮計算機執行的程式集,按功能分系統軟體和應用軟體。1 由運...
計算機基本結構
馮 諾依曼機具有一下特點 1 計算機由運算器 控制器 儲存器 輸入裝置和輸出裝置五部分組成。2 採用儲存程式的方式,程式和資料放在同乙個儲存器中,指令和資料一樣可以送到運算器運算,即由指令組成的程式是可以修改的。3 資料以二進位制 表示。4 指令由操作碼和位址碼組成。5 指令在儲存器中按執行順序存放...
計算機基本結構
微處理器包括運算器 控制器 暫存器組三大部分,具有計算 控制 資料傳送 指令解碼及執行等重要功能,它直接決定了計算機的主要效能.alu 運算器的核心部件是算邏單元alu,所有的算術運算,邏輯運算和移位操作都是由alu完成的.控制器 cpu的指揮機關,完成指令的讀入 寄存 解碼和執行。程式計數器 pc...