計算機系統之硬件層--實機器

前段時間剛學習了組成原理,對計算機硬件層熟悉了一下,現在作一下總結:
      計算機硬件層,工作於計算機系統的最底層,其上層爲操作系統層.它有着實實在在的樣子,看得着也摸得着.,它是真正的執行層,它接受上層發送來的指令,並通過電信號在數字邏輯電路里的流動來執行指令,處理數據.當然,它下面也有一層抽象,就是數字邏輯電路,它們組成了計算機中的各個組件,如ALU,觸發器,,譯碼器,選擇器,分配器,寄存器,移位寄存器等.這裏我們不需要了解這些邏輯電路是怎麼工作的.
      學習計算機,就不得不瞭解計算機的發展歷史,從20世紀40年代出現的電子計算機,後來出現的晶體管計算機,集成電路計算機,到現在的超大規模計算機,運算數度和存儲容量成數量級的變化.但是計算機的思想和體系結構始終都沒有發生變化,一直沿用最初的"馮.諾依曼計算機"思想.馮.諾依曼當初也是受織布機的影響發明了"馮諾依曼存儲計算機"思想,馮.諾依曼思想有以下特點:
1.計算機中只要改變程序就可以改變機器的作用,用於解決不同的問題.
2.計算機中代碼和數據都用二進制表示.
3.計算機由輸入設備,輸出設備,運算器,控制器,存儲器五大設備組成.
4.採用存儲程序思想,在計算機運行之前,事先編制好程序,放入存儲器中,運行過程中,控制器按照事先編制好的程序自動,連續地運行.
     計算機的最終目的是處理數據,所以首先它要解決數據在計算機中怎麼表示的問題?因爲計算機中的部件都是邏輯電路,電路就像是開關一樣,它只有兩種狀態,所以必須找到一種能用兩種狀態(1和0)來表示現實世界中各種各樣的數據的方法,比如學費4800,名字"高強",還有其它的多媒體數據,如聲音,圖像,視頻等.現實世界裏數字上億個,那麼怎麼用(1和0)來表示這麼多的數據呢?所以必須要好多位一起來表示各種狀態,比如:用8位(0或1)可以表示256種狀態,那麼就可以表示256個數字.那麼位數更多的話,就能表示更大的數據.這就是所謂的二進制.即"逢二進一",我們習慣"逢十進一".當然還有字符的表示,比如"高強"怎麼表示呢?字符最開始是英文字符,因爲英文中組成單詞和字符是26個,加上數字字符,還有一些其它的符號,總共一百多個,所以至少需要7位的二進制來表示,由此導出了ASCII編碼,它就是由8(1位爲空)位二進制代碼來表示各個字符.但是,前提是表示英文,如果要表示中文字符呢?漢語裏字符有6000多個,還有日語呢,阿拉伯語呢,顯然用8位的二進制就不足以表示這麼多的字符,所以國際標準化組織就用16位來表示世界上所以的字符,包括中文,日語,法語等.這就是所謂的unicode編碼.當然聲音,視頻這些模擬數據也可以用多位二進制來表示模擬信號.現在數據表示的問題解決了,接下來就是怎麼處理數據的問題:假如我要計算452433+3235333333339=?,學校今年的總開支是多少?或者還有其它算術運算.計算機中的加法器可以直接執行加法運算,還有移位器可以移位,那麼減法能不能用減法器呢?因爲計算機中沒有減法器,所以需要將減法轉換爲加法來進行運算.怎麼將加法轉換爲減法呢?這時候機器中數的碼製表示就出來了,計算機中是用補碼來將減法轉換爲加法的,因爲補碼用到了"模"的概念.乘法和除法呢?計算機中也沒有乘法器和除法器啊,所以必須將乘法和除法轉換爲加法或者移位運算.事實上,乘法和除法的運算就是通過加法和移位運算來實現的.當然,計算機還可以執行邏輯運算,比如判斷,與,或,非.計算機中還有移碼,反碼,它們的出現都是爲了滿足不同的需要,比如:移碼是爲了表示浮點數據中的階碼.定點數和浮點數是計算機中的兩大數據表示.

     上面講過計算機用運算器來運算數據,而且只提供了二種基本的運算:算術運算和邏輯運算.要解決一個問題,有時需要輸入數據,以供運算器處理,將處理完的數據輸出讓人看到或獲得.那麼計算機系統就需要有輸入設備和輸出設備.計算機中還有用來存儲代碼和數據的存儲器.不管輸入設備是獲得外界的數據,還是輸出設備輸出數據,這些實現都必須依靠電信號的流通來實現.那麼計算機就必須有一個用來控制各個部件之間的協作,它就是控制器.還有就是怎樣把各個部件連接起來,當然可以將各個部件直接用導線交叉連接,但是很明顯這樣會帶來一系列的問題,因爲如果要增加新的設備,不得不將新設備與當前的各個設備都連起來.所以計算機採用了總線的方式,有利於擴展.
     數據的運算是在CPU中實現的,CPU包括運算器和控制器.運算器的邏輯結構又包括ALU(算術邏輯部件),通用寄存器,移位電路.控制器包括MAR,MDR,指令寄存器(IR),指令譯碼器,程序計數器(PC),微指令發生器,時序控制電路,時鐘控制電路.
計算機可以輸入數據,處理數據,輸出數據了,那麼它是怎麼自動,連續地運行的呢?
計算機啓動時,將一條指令載入內存,然後CPU從內存中取得這條指令,並執行它,PC指向下一條指令的地址,然後取下一條指令,再執行.如此反覆,直到計算機停止.事實上,計算機啓動時,往往是運行CMOS裏的程序,它的目的是加載操作系統到內存,然後啓動操作系統,運行操作系統指令,只有啓動了操作系統,我們纔可以運行其它的應用程序.這就是所謂的存儲程序思想.說到這裏,不得不提一下指令的概念,指令就是控制計算機執行某種操作的命令,很明顯它也是一個抽象的概念,只要將指令寄存器中的指令進行譯碼就可以執行各種各樣的操作,指令層已經包括了數據傳送指令,算術運算指令,移位操作指令,堆棧操作指令,字符串處理指令,程序控制指令,輸入輸出指令,控制指令等,這就是所謂的機器指令.
    下面接着說數據的存儲,計算機中數據是用存儲器來存儲的,不管是代碼還是數據.只是計算機中的存儲器不只一個,而是一個存儲器系統,它分成幾個層次,第一層:寄存器,第二層:Cache高級緩存.第三層:主存.第四層:輔存.不同的存儲器是爲了滿足不同的需要.寄存器位於CPU中,它是用來存放CPU即將處理或處理完後的數據.Cache是用來解決cpu和主存的速度不匹配的問題.主存是用來存放即將運行或者正在運行的代碼和數據.輔存是用來存放永久的數據.其中主存是作爲程序運行最重要的部分.運行中的程序代碼和數據都存儲在主存中,CPU是靠獲取主存的地址來取得指令和數據的.
然後就是I/O系統,I/O系統是提供人機交互的重要接口.I/O系統由二部分組成,一是設備,二是設備控制器.設備控制器負責將CPU的指令和數據轉換爲設備命令,控制設備工作.cpu速度快,數據爲二進制編碼,而設備速度慢,一般爲ASCII編碼,所以必須要有相應的邏輯部件來協調兩者之間的同步和工作.這就是設備控制器的功能.或者稱爲I/O接口.I/O接口一般包含以下幾個部分:1.數據寄存器組.2.狀態寄存器組.3.狀態字生成邏輯 4.控制寄存器 5.控制信號生成邏輯.
  CPU控制I/O的方式,cpu經常需要控制I/O來完成相應的任務,比如打印,就必須控制打印機.那麼CPU怎麼控制I/O的呢?
有兩種方式:
1.直接程序控制方式 這種方式需要不段地循環監測I/O的狀態,消耗CPU時間多
2.程序中段控制方式 這種方式不需要CPU主動地監測I/O狀態,而是I/O設備主動地彙報當前的工作狀態.
    計算機仍在高速地發展,變化的只是運行速度,其體系仍然沒有改變.
    以上只是個人的大概總結,忽略了很多細節,希望大家大膽提出錯誤,謝謝!




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