CPU與存儲器

上文說到計算機的組成。

計算機誕生初期的功能就是代替人工進行大數據量的運算。人們善於思考,但是不善於複雜重複的計算,因而這些任務就都交給計算機來做。如果一開始就做高級編程語言的開發工作,而對計算機底層的知識瞭解甚少,那麼很容易產生知識盲點,而且當知識進步,編程語言變化的時候,會產生"技術變化的太快,跟不上腳步"的感覺,因此從從業生涯的角度來說,學習計算機基本知識是十分有必要的。

瞭解計算機是如何處理指令,CPU如何與內存交互,計算機底層的安全操作是怎麼進行的,瞭解了它們,再回過頭來看高級編程語言,其實一直都是在圍繞着計算機指令的執行來演化的。

CPU是微機的核心,負責邏輯運算與數據處理。CPU處理的數據從哪裏來呢?答案是內存。CPU中的數據由內存讀取過來,內存中的數據則是通過輸入單元傳入,CPU執行得到的數據需要傳回內存,然後通過輸出單元輸出給接收者。


CPU與內存通過總線連接。

CPU的組成:CPU是由寄存器,控制器,運算器,時鐘組成。

寄存器有通用寄存器和專用寄存器之分。如AX,BX等,這些寄存器如程序計數器,指針寄存器等包含了邏輯運算及程序執行命令控制等功能,具體哪些寄存器有哪些功能,日後再說。

那麼CPU是如何與存儲器交互的呢?

首先要知道內存中的數據都是有地址的,這也是爲什麼cpu不能與其他外部存儲空間直接交互的原因。存儲器被劃分爲若干個單元,存儲單元從零開始編號,這些編號可以被看做內存單元的地址,有了這些地址,cpu指令才知道取得的數據是自己想要的。在cpu內部,可以用基址寄存器和變址寄存器來爲內存單元設置內存地址。

CPU進行運算,首先要知道內存中的數據的地址值,就像是找人,首先要知道住在哪一棟,再確定戶室,這種地址值尋值的方式確保了獲取的內存中的數據的正確性麼這是十分重要的。

CPU是通過什麼來與內存器交互的呢?計算機是靠電信號控制的,因此能處理和傳輸的也都是電信號,電信號是靠導線傳輸的。在計算機中連接各個IC的導線,統稱爲總線。而總線根據用途又分爲:數據總線,控制總線,地址總線。

上圖中內存中的值是用16進製表示的。

一般來說cpu與內存交互都需要這三種總線:發送地址信息(地址線),選中存儲器(控制線),寫入/讀出信息(數據線)。

現在我們知道了cpu是如何進行數據讀寫的,那麼如何命令計算機進行讀寫呢?這就是我們上文所說的高低電平了。

要讓一個計算機能夠表示數據,就要按照固定的格式來控制電信號,產生高低電平,也就是二進制數據或機器碼0101.....

舉個栗子:

機器碼:101000010000001100000000

含義:從三號單元讀取數據送入寄存器AX

CPU處理這段機器碼然後進行上述的運算。

看到上述這段機器碼是不是感覺無從下手,很難看懂?這也是爲什麼高級語言這麼受歡迎的原因。

機器語言是給機器看的,這是因爲機器語言符合計算機的"邏輯",通過電信號來模擬0101進行計算,然而我們人類的思維往往與計算機的思維不一樣。因此在很長一段時間,彙編語言大行其道,在如今很多地方依然要用到它,因爲它直接操作的是計算機的硬件,性能是那些解釋型(需要解釋器)的語言無法比擬的。

例如上面的機器碼用彙編語言來表示的話是:MOV AX,[3],是不是很簡單呢?

在下篇文章我們講介紹三種總線是如何工作的,敬請期待。



發佈了104 篇原創文章 · 獲贊 16 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章