構成計算機的硬體系統通常有「五大件」組成:輸入裝置、輸出裝置、儲存器、運算器和控制器。
簡單來說,對於計算機,核心的組成就是cpu。從計算機產生到現在,其核心的作用一直都是計算、計算、計算。進行各種的資料運算。
cpu屬於計算機的硬體部分,這裡就涉及到了電子的東西,也就是數位電路,簡單來說就是把電路給資料話。這裡又區分有電,沒電兩種狀態。這就是通常所說的高電阻、低電阻。在計算機中,把有電設為1,沒電設為0。因此可以說,硬體只會識別0和1。個人猜測這大概就是二進位制的由來。
舉個栗子,乙個簡單的cpu,對輸入的資料進行++運算的乙個cpu,假設它四條電路,兩條作為輸入,兩條作為輸出。則根據上文提到的有無電對應1和0,可做出以下推測,當我輸入00(輸入口兩電路均無電)則輸出01,輸入01則輸出10,同理輸入10輸出11。
同時,1和0,可組成00 01 10 11,即可表示4種狀態,當然乙個cpu不可能只有4個角。通常我們說的cpu32位或者64位,說的就是這個cpu的輸入範圍的寬度,在cpu四周,有各種角,這乙個角就叫做cpu的一位,bit。通常我們把8個一位稱之為乙個位元組,也就是byte。
還是上面那個例子,兩個輸入口,都是用來輸入資料的,這個在計算機中的術語叫做databus,資料匯流排。當cpu變的再為複雜點的時候,比如不僅僅是加1操作,我還想做減1操作,這時候我們需要新增乙個輸入口,當這個輸入口為0的時候做+1操作。當輸入口為1的時候做-1操作。這個輸入口則是控制資料運算的,也被稱為控制匯流排。
細說下,總共有三個輸入兩個輸出口,在三個輸入中,又有一條控制匯流排,兩條資料匯流排。我們可以設定控制匯流排的輸入在前,資料匯流排的輸入在後。也就是當輸入000的時候,取第一位,為0則後兩位表示的數字+1,為1則後兩位表示的數字-1.所以當輸入000的時候輸出01.
這裡000,就是一條指令。包涵了需要做的操作和被操作的資料。當我想對乙個數字做+1,+1,-1操作時,需要三條指令,才能完成這個運算。假設對數字1進行以上運算。需要發出以下指令 001 010 111。(真正的cpu做這樣的運算時,並非需要這麼多的資料匯流排,輸出口等。暫存器的存在,可以減少很多匯流排數量)當輸入的寬度足夠大,且控制匯流排擴充套件為加減乘除的時候。此處,大家可以同情下,第一代的碼農,用01寫**的樂趣,簡直不要太幸災樂禍。至於函式呼叫、debug等等,哈哈,我都忍不住笑了。
一坨坨的01指令,被稱之為機器指令。難得讓我掛了四年的英語還有26個英文本母。倘若編碼真的只用01兩個數字進行的話,我絕對二話不說,立刻回家賣肉夾饃。
所以我們需要乙個中間層(請牢記間接,面相物件的爽點),從而不需要直接的去用01編碼。也就是組合語言。
用那個時代來說,易記易用的組合語言來寫**。然後再使用乙個工具(編譯器)把這些彙編**轉化成0和1,這個轉化的過程,稱之為編譯。此時的碼農開始走進幸福時光了。
順便簡述下記憶體和控制器。記憶體儲存的是需要執行的指令,記憶體和硬碟的互動先當不存在。這裡說的是在乙個簡單的運算中。比如上面的例子,共有三條指令,當我們執行這三條指令的時候,通常是把三條指令直接取到記憶體中。然後cpu通過位址匯流排,傳送位址給記憶體,記憶體定址到指令。通過操作匯流排,傳送讀寫操作給記憶體。然後cpu通過資料匯流排,讀寫對應位址中的指令。指令執行完畢後,pc計數器+1,位址改變,重複上面的操作。
這裡只是簡單的描述原理。而計算機硬體真正的執行時的操作,或者說真正的計算機原理介紹的話。建議去買本大學教材入門。本文,最多當簡單了解的參考。
微處理器 微型計算機 微型計算機系統
本人是學習微機的時候寫的筆記,不喜勿噴。是大規模積體電路的cpu,是微型計算機的核心。微處理器包含三個部分 算術邏輯部件 alu 用來執行基本的算術運算和邏輯運算 暫存器 register cpu中有多個暫存器,稱為cpu暫存器。用來存放運算元 中間結果以及儲存運算結果的狀態標誌等。控制器 cu 具...
計算機硬體原理與彙編
cpu與記憶體加io cpu通過匯流排與記憶體及io連線 程式儲存在記憶體中,資料也儲存在記憶體中,兩者可以儲存在同一片記憶體上 程式在儲存是也是資料,不同的是其實可以被cpu識別的機器碼 高低電平來回閃動,程式執行 每條組合語言可以可以翻譯為機器碼。在彙編中,不存在指標及記憶體管理,因為其處於最深...
從計算機視覺角度看處理器效能優化
計算機視覺領域主要研究內容包括 影象分割,目標檢測,目標跟蹤,影象識別。1.影象分割在醫學影象處理,目標跟蹤和影象識別方面有重要應用,經常是影象理解的第一步,在時間的壓縮上有著巨大需求。3.影象識別是計算機視覺方向當前最火的研究內容之一,由於經典的基於統計學習的框架需要處理海量資料,需要大規模的平行...