上文說到計算機的組成。
計算機誕生初期的功能就是代替人工進行大資料量的運算。人們善於思考,但是不善於複雜重複的計算,因而這些任務就都交給計算機來做。如果一開始就做高階程式語言的開發工作,而對計算機底層的知識了解甚少,那麼很容易產生知識盲點,而且當知識進步,程式語言變化的時候,會產生"技術變化的太快,跟不上腳步"的感覺,因此從從業生涯的角度來說,學習計算機基本知識是十分有必要的。
了解計算機是如何處理指令,cpu如何與記憶體互動,計算機底層的安全操作是怎麼進行的,了解了它們,再回過頭來看高階程式語言,其實一直都是在圍繞著計算機指令的執行來演化的。
cpu是微機的核心,負責邏輯運算與資料處理。cpu處理的資料從**來呢?答案是記憶體。cpu中的資料由記憶體讀取過來,記憶體中的資料則是通過輸入單元傳入,cpu執行得到的資料需要傳回記憶體,然後通過輸出單元輸出給接收者。
cpu與記憶體通過匯流排連線。
cpu的組成:cpu是由暫存器,控制器,運算器,時鐘組成。
暫存器有通用暫存器和專用暫存器之分。如ax,bx等,這些暫存器如程式計數器,指標暫存器等包含了邏輯運算及程式執行命令控制等功能,具體哪些暫存器有哪些功能,日後再說。
那麼cpu是如何與儲存器互動的呢?
首先要知道記憶體中的資料都是有位址的,這也是為什麼cpu不能與其他外部儲存空間直接互動的原因。儲存器被劃分為若干個單元,儲存單元從零開始編號,這些編號可以被看做記憶體單元的位址,有了這些位址,cpu指令才知道取得的資料是自己想要的。在cpu內部,可以用基址暫存器和變址暫存器來為記憶體單元設定記憶體位址。
cpu進行運算,首先要知道記憶體中的資料的位址值,就像是找人,首先要知道住在哪一棟,再確定戶室,這種位址值尋值的方式確保了獲取的記憶體中的資料的正確性麼這是十分重要的。
cpu是通過什麼來與記憶體器互動的呢?計算機是靠電訊號控制的,因此能處理和傳輸的也都是電訊號,電訊號是靠導線傳輸的。在計算機中連線各個ic的導線,統稱為匯流排。而匯流排根據用途又分為:資料匯流排,控制匯流排,位址匯流排。
上圖中記憶體中的值是用16進製表示的。
現在我們知道了cpu是如何進行資料讀寫的,那麼如何命令計算機進行讀寫呢?這就是我們上文所說的高低電平了。
要讓乙個計算機能夠表示資料,就要按照固定的格式來控制電訊號,產生高低電平,也就是二進位制資料或機器碼0101.....
舉個栗子:
機器碼:101000010000001100000000
含義:從三號單元讀取資料送入暫存器ax
cpu處理這段機器碼然後進行上述的運算。
看到上述這段機器碼是不是感覺無從下手,很難看懂?這也是為什麼高階語言這麼受歡迎的原因。
機器語言是給機器看的,這是因為機器語言符合計算機的"邏輯",通過電訊號來模擬0101進行計算,然而我們人類的思維往往與計算機的思維不一樣。因此在很長一段時間,組合語言大行其道,在如今很多地方依然要用到它,因為它直接操作的是計算機的硬體,效能是那些解釋型(需要直譯器)的語言無法比擬的。
例如上面的機器碼用組合語言來表示的話是:mov ax,[3],是不是很簡單呢?
在下篇文章我們講介紹三種匯流排是如何工作的,敬請期待。
儲存器與CPU的連線
din和 dout 引腳連起來,再和cpu的一根資料線相連。6 位址線的連線及儲存晶元片選訊號的產生 乙個儲存器系統通常需要若干個儲存晶元。為了能正確實現定址,一般的做法是,將cpu或系統的一部分位址線 通常是低位位址線,位數取決於儲存晶元的容量 連到所有儲存晶元,以進行片內定址 儲存晶元內均設有位...
26儲存器與CPU連線原理
儲存器與cpu的連線 1 選擇合適儲存晶元 主要指儲存晶元的型別 ram或rom 和數量選擇。通常採用rom存放系統程式 標準子程式和各類常數,ram則是為使用者程式設計而設定的 2 位址線的連線 儲存晶元容量不同,其位址線數也不同,而cpu的位址數往往比儲存晶元的位址數要多。通常將cpu位址線的地...
主儲存器與CPU的連線
半導體儲存器的讀寫時間一般在十幾至幾百毫微秒之間,其晶元整合度高,體積小,片內含有解碼器和暫存器等電路。常用的半導體儲存器晶元有多字一位片和多字多位片,如16m位容量的晶元可以有16m 1位和4m 4位等種類。一 儲存容量的擴充套件 目前單片儲存晶元的容量總是有限的,它在字數或字長方面與實際儲存器的...