軟件開發搞定計算機組成原理:概述篇

1. 發展史

計算機的發展一共有四個階段:

  • 第一階段:電子管(下圖)計算機。第一臺電子管計算機是:埃尼阿克(ENIAC)(下下圖)。
    在這裏插入圖片描述
    在這裏插入圖片描述

  • 第二階段:晶體管(下圖)計算機。比較出名的計算機:TX-0(全世界第一臺)和PDP-1(帶有屏幕)。

在這裏插入圖片描述
在這裏插入圖片描述

  • 第三階段:集成電路計算機。操作系統在此誕生(IBM開發)。

在這裏插入圖片描述
(當時的電腦,跟我們以前的大頭計算機很像了)
在這裏插入圖片描述

  • 第四階段:超大規模集成電路計算機。一個芯片集成上百萬個晶體管,比如CPU。

在這裏插入圖片描述

未來可能還有生物計算機、光子計算機、量子計算機等。騰訊和阿里巴巴(達摩院)有量子計算機實驗室。

在這裏插入圖片描述

微型計算機的發展:微型計算機就是我們現在使用的個人計算機。是從計算機的第三個階段開始的,早期是從單核CPU開始的,但發展到現代性能不夠,所以出現了多核CPU(開始於2005,Intel奔騰系列)。

2. 計算機的分類

  1. 超級計算機

    • 功能最強,運算速度最快,存儲容量最大的計算機。
    • 用應用於高科技領域,比如天氣預報,加密解密,核聚變等。
    • 運算速度單位:TFlop/s = 每秒一萬億次浮點計算。
    • 就比如:Intel® Core™ i7-6700K CPU @ 4.00GHz ,它的算力是(百度):44.87 GFlop/s,轉換:44.87 GFlop/s = 0.04487TFlop/s。也就是該CPU的算力比起超級計算機的CPU的算力十分之一都不到。
    • 2019/6/17的記錄:美國的兩臺超級計算機“頂點”(Summit)和“山脊”(Sierra)仍佔據世界排名前兩位,中國超算“神威·太湖之光”和“天河二號”在世界排名第三和第四名。
  2. 大型計算機

    • 又稱大型機、大型主機、主機等。
    • 具有高性能,可處理大量數據與複雜的運算。比如金融交易的數據,證券交易所的數據等。
    • 在大型機市場領域,IBM佔據着很大的份額,IBM比較出名的大型計算機:IBM Z9。造價很貴,所以市場越來越小。
  3. 迷你計算機(服務器)

    • 也稱爲小型機,普通服務器。
    • 具備不錯的算力,可以完成較複雜的運算。
    • 常見的普通服務器製造商:聯想,華爲,浪潮。雲服務是建立在這基礎上的。
    • 現在很多都是使用迷你計算機。
  4. 工作站

    • 高端的通用微型計算機,提供比個人計算機更強大的性能。

    • 類似於普通臺式電腦,體積較大,但性能強勁

在這裏插入圖片描述

  1. 微型計算機

    • 又稱爲個人計算機,是最普通的一類計算機,我們現在用的。

3. 計算機的體系和結構

3.1 馮諾依曼體系

  • 定義:將程序指令和數據一起存儲的計算機設計概念結構。

在這裏插入圖片描述

百度百科

現代計算機都是馮諾依曼計算機,具有如下功能:

  1. 把需要的程序和數據送至計算機中。
  2. 必須具有長期記憶程序、數據、中間結果及最終運算結果的能力。
  3. 能夠完成各種算術運算、邏輯運算和數據傳送等數據加工處理的能力。
  4. 能夠根據需要控制程序走向,並能根據指令控制機器的各部件協調操作。
  5. 能夠按照要求將處理結果輸出給用戶。

爲了實現該功能,計算機必須具備五大基本組成部件

  1. 運算器用於完成各種算術運算、邏輯運算和數據傳送等數據加工處理
  2. 控制器用於控制程序的執行,是計算機的大腦。運算器和控制器組成計算機的中央處理器(CPU)。控制器根據存放在存儲器中的指令序列(程序)進行工作,並由一個程序計數器(簡稱PC)控制指令的執行。控制器具有判斷能力,能根據計算結果選擇不同的工作流程。
  3. 存儲器用於記憶程序和數據,例如:內存。程序和數據以二進制代碼形式不加區別地存放在存儲器中,存放位置由地址確定。
  4. 輸入設備用於將數據或程序輸入到計算機中,例如:鼠標、鍵盤。
  5. 輸出設備將數據或程序的處理結果展示給用戶,例如:顯示器、打印機。

在這裏插入圖片描述

但是,馮諾依曼有一個瓶頸:CPU和存儲器速率之間的問題無法調和。CPU的速率一定是快於存儲器的速率。

在這裏插入圖片描述

所以就有了現代計算機的結構。

3.2 現代計算機的結構

現代計算機在馮諾依曼體系結構基礎上進行修改,但是主要來解決CPU與存儲設備之間的性能差異問題。

在這裏插入圖片描述

但是存儲器廣義上是指磁帶和硬盤,這裏指的是內存和CPU的寄存器。

4. 計算機的層次

4.1 編譯程序和解釋程序

計算機不能理解我們的自然語言(比如:hello world),只能識別二進制。開發人員需要做的就是把自然語言轉成高級語言,然而高級語言還需要自行轉行,需要翻譯程序轉換成計算機可識別的語言。

翻譯程序:把高級語言翻譯成機器語言(目標程序),可分爲編譯程序和解釋程序。

  1. 編譯程序:也稱爲編譯器,以高級編程語言的源程序作爲輸入,一次性翻譯成以彙編語言或機器語言表示的目標程序作爲輸出。不過目標程序還需要經過鏈接纔可以運行。鏈接就是目標程序和依賴庫等串聯起來。

    編譯程序需要經歷:詞法分析、 語法分析、中間代碼生成、代碼優化、目標代碼生成。

  2. 解釋程序:也可以稱爲解釋器(直譯器),把高級編程語言的源程序一行一行直接轉譯執行。而不是一次性把整個程序都轉譯,像一位“中間人”,每次運行程序時都要先轉成另一種語言再作運行。比如JS寫好了就直接運行。

C、C++、Pascal、GO、最近火起來的swift等屬於編譯程序的語言,Python、PHP、JavaScript、Ruby等屬於解釋程序的語言。Java、C#屬於編譯+解釋程序的語言。

在這裏插入圖片描述

彙編程序:把彙編語言翻譯成機器語言。

編譯程序:

  • 優點:編譯一次就行,執行多少次都不會再編譯了,除非修改了原代碼。

  • 缺點:像我們平常在使用java時,每次改動源程序就要重新編譯一下,當然現在我們用idea,eclipse等編輯器是把javac和java命令封裝在一起的,每次按下run其實就是在重新編譯然後執行。

解釋程序:

  • 優點:不停機維護,有良好的兼容性。

  • 缺點:每次運行又得一行一行的轉譯。

4.2 計算機的層次與編程語言

目前的計算機分層:以後可能會變。

在這裏插入圖片描述

從底往頂:對於硬件的瞭解就行。

  1. 硬件邏輯層(瞭解):門、觸發器等邏輯電路組成,屬於電子工程的領域。
  2. 微程序機器層(瞭解):編程語言是微指令集。微指令所組成的微程序直接交由硬件執行
  3. 傳統機器層(瞭解):編程語言是CPU指令集(機器指令)。編程語言和硬件是直接相關,不同架構的CPU使用不同的CPU指令集,比如intel生產的CPU所使用的CPU指令集不適合於AMD生產的CPU,不兼容。

到此:一條機器指令對應一個微程序,一個微程序對應一組微指令(微指令集)

  1. 操作系統層:向上提供了簡易的操作界面,向下對接了指令系統,管理硬件資源。操作系統層是在軟件和硬件之間的適配層
  2. 彙編語言層:編程語言是彙編語言彙編語言可以翻譯成可直接執行的機器語言,完成翻譯的過程的程序就是彙編器。
  3. 高級語言層:編程語言爲廣大程序員所接受的高級語言,高級語言的類別非常多,常見的高級語言有:Python、Java、C/C++、Go等。
  4. 應用層:滿足計算機針對某種用途而專門設計,像我們的office辦公軟件等。

5. 計算機的計算單位

5.1 容量單位

計算機物理層面用高低電平記錄信息,高電平使用1,低電平使用0。0/1稱爲bit(比特位),但是0/1能夠表示的內容太少了,所以推出更大容量的表示方法——字節:1Byte = 8bits。

但是隨着時代進步,字節也還是太少了,所以有了以下更高的容量單位:

在這裏插入圖片描述

注意:

  • 只有bit和Byte的轉換比較特殊,永遠記住:1Byte = 8bits
  • 然後從Byte到EB,相鄰的轉換都是1024倍(或2^10倍)

問題1:1GB內存,可以存儲多少字節的數據?可以存儲多少比特數據?

答:1GB = 1024 * 1024 * 1024 B = 1024 * 3 * 8 bits

問題2:爲什麼網上買的移動硬盤500GB,格式化之後就只剩465GB了?

答:硬盤商一般按1GB = 1000MB 這樣的換算標記容量的,500GB在電腦真實容量的運算:

  • 先把500GB轉成字節:500 000 000 000 Byte
  • 再除以3次1024,即把字節重新在計算機轉換單位,得到465GB

5001000310243=465GB \frac{500 * 1000^3}{1024^3}= 465GB

這並不是廠商或經銷商以次充好欺騙消費者,而是硬盤廠商對容量的計算方法和操作系統的計算方法有不同而造成的,不同的單位轉換關係造成的。所以不要被營銷號帶節奏了,動腦!

5.3 速度單位

  1. 網絡速度
    • 在計算機網絡也有說了,網絡常用單位爲Mbps或者M/s或Mbit/s
    • 像家裏搞了聯通100M的寬帶,但是實際自己測試時不是100M,你可以注意一下電腦顯示網速的單位,是MB/s或者KB/s。注意大寫B(Byte)和小寫b(bit)。所以聯通的100M寬帶在計算機上顯示爲:100Mbps / 8 = 12.5 MB/s,並且是指理論上可以到達的最高網速。
  2. CPU頻率
    • CPU的速度一般體現爲CPU的時鐘頻率。主流CPU的時鐘頻率都在2GHz以上。
    • CPU的時鐘頻率的單位一般是赫茲(Hz)
    • 赫茲(Hz):指的是每秒中的週期性變動重複次數的計量。假設蝴蝶的翅膀揮動的頻率是15Hz,則表示每秒能揮動15次。像CPU的時鐘頻率爲2GHz,表示每秒20億次運算。

6. 計算機的字符集與編碼

字符集(編碼字符集):一組字符。

字符編碼:把字符集中的字符編碼爲特定的二進制數,以便在計算機中存儲。

6.1 字符編碼集的歷史

  1. ASCII碼:使用7個bits就可以完全表示ASCII碼,包含95個可打印字符,33個不可打印字符(包括控制字符)。ASCII即是字符集也是字符編碼。ASCII碼錶相信在各大教材書都有,需要記住小寫字母a和大寫字母a的ASCII碼,以十進制來記:小寫字母a爲97,大寫字母A爲65。因爲字母有26個,那麼B和b的ASCII通過A和a就可以知道了。

  2. Extended ASCII碼:很多應用或者國家中的符號都無法表示,比如數學符號:“÷ ≠ ≥ ≈ π”,所以擴展ASCII碼錶。

  3. 字符編碼集的國際化(ISO):世界上不同國家有不同語言,不以有限字符組合的語言,所以需要一個統一的標準。比如英文就26個字母組合,而中文的字符就更加複雜而且多。

瞭解我們國家的就行:

6.2 中文編碼集

  1. GB2312:我國最先出現的字符集,全稱爲《信息交換用漢字編碼字符集——基本集》,一共收錄了 7445 個字符,包括 6763 個漢字和 682 個其它符號。
  2. GBK:GB2312不滿足國際化標準,所以推出GBK。全稱爲《漢字內碼擴展規範》,向下兼容GB2312,向上支持國際ISO標準,收錄了21003個漢字,支持全部中日韓漢字。不論是GB2312還是GBK都是本地化編碼,也就是在中國使用是沒問題的,但是跨國使用就有問題,外國人要訪問中國網站會亂碼,除非他們手動在本地安裝GB2312或GBK編碼。所以推出了Unicode。
  3. Unicode:兼容全球的字符集,中文稱爲:統一碼、萬國碼、單一碼。Unicode定義了世界通用的符號集,UTF-*實現了字符編碼。UTF-8以字節爲單位對Unicode進行編碼。

windows系統默認使用GBK編碼。在安裝IDEA後最好設置下字符編碼:

在這裏插入圖片描述

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