计算机组成原理随笔(一)
1 計算機體系結構
計算機革命發展得非??焖?#xff0c;以至于使用老式計算機的很多電影現在看起來十分有年代感,有的電影甚至無法預料后來的計算機是什么樣的。
計算機各個組成部分的技術發展非常不均衡,各部分性能差異非常大。在計算機的發展前期,幾乎沒有人敢想以后居然能用上便捷式計算機。對于計算機來說,老式計算機一般都要接上電源,而現在的筆記本電腦、ipad,基本上都可以利用外部電源來解決電源問題。
除了電源問題外,功耗問題也存在。一個狹小的計算機空間如何解決處理器產生的熱量,是非常重要的課題,盡管后來出現了多核處理器,但是計算機的性能依舊上不去,絕大部分原因來源于散熱。
1.1 計算機系統體系結構
1.1.1 簡單的計算機結構
媒體一直把一個微處理器(microprocessor)或者一塊芯片(chip)叫做計算機系統。這實際上是不對的,計算機系統應該包括中央處理單元(cemtral processing unit,CPU),保存程序和數據的存儲器,以及將芯片轉換為實用系統的其他子系統。這些子系統會使得CPU和其他外部設備的通信變得更加容易。
計算機執行程序的部分叫做CPU,也叫處理器,微處理器則是在單個硅片上實現的CPU。圍繞著微處理器構建的計算機被稱作微機。
CPU盡管是核心,但是計算機性能可不僅僅取決于此,如果處理的數據來源慢,處理再快又有什么用,還不是等人送數據進來才能處理。在過去的幾十年,處理器性能持續高速增長,而硬盤的性能幾乎不變,等到固態硬盤誕生后,這種矛盾才趨于緩和。
下圖描述了一個簡單的計算機系統的結構:
其中信息保存在存儲器,而存儲器一般分為多種,如主存、緩存、輔存、寄存器等等。這里圖中出現了Cache。Cache一般指的是高速緩存,在以前Cache一般位于CPU之外,而在現在大多數Cache都在CPU內部。
Cache存儲器,電腦中為高速緩沖存儲器),是位于CPU和主存儲器DRAM(Dynamic Random Access Memory)之間,規模較小,但速度很高的存儲器,通常由SRAM(Static Random Access Memory 靜態存儲器組成。它是位于CPU與內存間的一種容量較小但速度很高的存儲器。CPU的速度遠高于內存,當CPU直接從內存中存取數據時要等待一定時間周期,而Cache則可以保存CPU剛用過或循環使用的一部分數據,如果CPU需要再次使用該部分數據時可從Cache中直接調用,這樣就避免了重復存取數據,減少了CPU的等待時間,因而提高了系統的效率。Cache又分為L1Cache(一級緩存)和L2Cache(二級緩存),L1Cache主要是集成在CPU內部,而L2Cache集成在主板上或是CPU上。
需要注意的是,對應的信息在適當的時刻存放在適當的存儲器,這點十分重要,如果存放不當,即使CPU再快也只能干等。
圖中主存一般指的是內存、寄存器,而輔存一般指外存(如磁盤、CD-ROM等)。而總線一般是用來傳輸各個子系統之間的通信,確保數據能夠從計算機的一個位置傳輸到另外一個位置。
寄存器一般處于CPU內部,用來存放數據。對于常用的數據,一般先放在存儲器,放不下了就放到高速緩沖去,再放不下就轉移到磁盤。
1.1.2 計算機
定義計算機時必須指明計算機的類型。馮諾依曼是最早界定計算機結構的人之一。計算機有很多種,常見的有個人計算機、手機、模擬計算機、神經計算機、量子計算機等。
通用的數字計算機一般分為兩部分:CPU和存儲器系統。CPU讀程序來完成程序指定的操作。存儲器系統保存兩類信息:程序和程序產生的數據。
程序和程序產生的數據不一定要放在同一個存儲器系統內,但是現在大多數計算機系統都是放在同一個存儲器系統。這種計算機叫做存儲程序計算機。
計算機可以看做是一個黑盒子,它將信息從一個位置轉移到另外一個位置并且處理,這個轉移的過程通常是由總線來完成,CPU通過總線傳來的信息讀取出其中的指令,然后進行處理。需要注意的是,處理數據完成后,可能要把數據傳回存儲器。
一個簡單的處理數據的過程如下所示:
對兩個數X和Y做加法。最開始CPU會從存儲器讀取一條指令,這條指令通過CPU的分析和解碼后,就獲得了這條指令所需的數據。此時X和Y會從存儲器中取出,然后分別放于不同寄存器中,當讀取相加指令的時候,就把兩個寄存器內部的內容相加,并把結果保存在第三個寄存器中,最后再根據指令把數據寫回存儲單元。
一般來說,傳數據和傳指令的總線只有一條,數據和指令輪流使用;當然也有個例,比如哈佛體系結構計算機。
1.2 體系結構的構成
1.2.1 概述
在上面我們曾經提到寄存器。一般來說寄存器用來存放一個單位的數據或字數據。由于其處于CPU內部,在計算機內,它的訪問速度遠遠快于CPU外的存儲器。
對于體系結構的構成來說,有時候體系結構和組成兩個術語會交差使用,但是實際上體系結構和構成是有區別的,舉個例子,時鐘的體系結構是定義在有刻度的表盤上轉動指針,而它的組成可以是機械鐘,石英鐘,電子鐘。
上述的例子說明了組成是體系結構的子集,給定的體系結構可以有不同的組成方式。
對于程序員來說,計算機底層原理實際上都被屏蔽掉了,我們并不關心X+Y是什么底層邏輯在相加,而在意其結果。計算機體系結構的這個抽象視圖現在通常被叫做指令集體系結構。
計算機是由二進制的0和1組成的串,這串也被叫做機器碼。人類可讀的機器碼叫做匯編語言。而能夠在類型完全不同的計算機上運行,和底層計算機體系結構沒有關系的代碼叫做高級語言。任何代碼寫完之后,運行前都需要先通過編譯器的編譯,轉換為本地機器碼之后才能運行。
指令集體系結構包括了數據類型、保存臨時結果的寄存器、指令的類型和格式以及尋址方式。術語微代碼是定義在芯片上的一組執行基本操作(微指令)的代碼,執行這些操作可以解釋機器碼。
在這門知識結構體系中,我們用體系結構來代表計算機的抽象指令集體系結構,而用組成來代表計算機的硬件實現。而后會用術語微體系結構來描述CPU的實現。
1.2.2 計算機系統和技術
下圖的分類表明了設計計算機所要考慮的要素。
1.2.2.1 技術
20世紀70年代以來,半導體技術一直遵循著摩爾定律的預測而發展。摩爾定律表明了芯片的集成度每18個月翻一番。有時候意味著處理器的性能每18月翻一番。
1.2.2.2 應用
有些計算機用于嵌入式、有些計算機用于個人工作、有些計算機用于電視、游戲機,對于不同的應用場景計算機的設計也會有所不同。
1.2.2.3 工具
計算機硬件的設計軟件也會影響計算機的設計,你要用什么樣的軟件去設計硬件,這取決于軟件產品做的好不好,精度高不高。
1.2.3 計算機體系結構在計算機科學的地位
工欲善其事必先利其器,對于想要學習計算機的人,不知道計算機組成原理怎么行;對于想優化代碼的,在了解了計算機體系結構后就會思考到對應的優化方案,進而付出實踐。
時鐘
也許你聽到這個術語,你第一個想到的是我們現實的時鐘;實際上在計算機操作系統、計算機組成原理、數字電路設計都會涉及到這個術語。在絕大多數數字電路中都帶有一個時鐘,用來生成連續的間隔固定的電脈沖流。之所以叫做時鐘,無非是因為可以利用它來確定計算機的一些事件的順序。
事件由時鐘信號觸發的數字電路被稱作同步。有些事件則是異步的,比如移動鼠標,移動了他才會向計算機發送信號,這是個先動后發的過程,屬于異步事件。然而,計算機在每個時鐘脈沖都會去檢查一下鼠標在干嘛,這是一個同步事件。
例如我們說的時鐘中斷,在所有外部中斷中,時鐘中斷起著特殊的作用。因為計算機是以精確的時間進行數值運算的數據處理的,最基本的時間單元是時鐘周期。例如取指令,執行指令,存取內存等都依靠時鐘進行時間的確定。
總結
以上是生活随笔為你收集整理的计算机组成原理随笔(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机如何取消自动关机,怎么解除电脑自动
- 下一篇: 六款小巧的HTTP Server[C语言