1.2.1 計算機系統的組成 文稿

下面一起來分析一下計算機系統須要有哪些部分組成。首先思考一下計算機它的任務,最開始我們是希望計算機能夠幫我們處理一些繁雜的計算的,也就是我們給它提供原始的數據,告訴它運算的規則,然後它要給出我們計算結果,那麼第一個問題出現了,我們平時交流喜歡用語言動作,特別是眼神,但是計算機它只能理解電信號,所以在跟計算機交流的時候,給它輸入的時候,我們需要有一個輸入設備,把我們想表達的這些東西轉化成電信號,相對應的計算機得出的結果首先是一個電信號,它需要經過輸出設備轉化成我們所能理解的形式

那麼交互的問題我們就解決了,通過輸入和輸出設備,接下來是計算機內部要解決的核心問題,也就是輸入的這些信號如何自動的轉化成輸出呢?這需要藉助一個功能部件叫做運算器。它實現的原理就是我們把輸入到輸出的規律總結下來,給它做成一個電路,然後當這個電路接收到輸入信號的時候,根據電路內部的電流流動規律,會自動的對應到輸出設備所需要的電信號,這就是運算器的功能。

那麼看起來已經能工作,但是實際上還有一個問題運算器它並不知道什麼時候可以去接收這些輸入信號,輸出設備它也不知道什麼時候運算器是已經算好了的,可以去取它的輸出。所以我們增加一個功能部件叫作控制器,它就是解決計算機系統內部各個部件之間的協調交流的問題。那麼它到各個部件之間通過一條控制線來連接,這裏我們用虛線跟剛剛傳遞數據的這些數據線相關區分,這裏可以發現它是一個雙向的,這是因爲控制器一方面需要給這些物件提供控制信號,另一方面它控制信號的提出是基於每一個部件當前的工作狀態以及每個部件的需求的,所以這是一個雙向的信號反饋的過程。有了控制我們就可以開始工作了。

但是現在的工作模式是給出一個數據,給一個結果,然後等待下一個數據,等下一個數據到了之後再給出一個結果。這樣對於人來說,我們必須等再這邊看到結果出來了之後再輸入下一個數據。而對於計算機來說,它也在等待我們輸入下一個數據是一個相互等待的狀態,那麼這樣是很浪費計算資源的。所以我們再增加一個功能部件叫做存儲器,有了存儲器之後,我們可以把要處理的數據批量的提前放到存儲器當中,這樣運算器到存儲器當中去取,要用的數據,並且它也可以把計算產生的一些中間結果存回存儲器,這樣它就能進行更復雜的運算,然後等整個運算結束了,再把結果通過輸出設備輸出出來

那麼系統當中增加了一個部件,是不是要告知控制器,控制器是需要控制所有的部件的,而現在看起來比較完善了,但是依然有一個問題,比如說我們現在買了一塊運算器,他是處理的是4位數據的運算,可能過不久我們的運算需求增加的很快,要算8位的16位的32位的,這樣的話解決的方法有兩種,一種就是再買一塊運算器,想算幾位的就買幾位的,這顯然很不科學對吧?因爲需求變化是相當的快的。

冷靜下來想一想,我們會發現實際上我們只要把長的數據切斷,切成4位4位送過來,運算器就能工作,但是切的過程如果不增加新的部件的話,可能是要手工控制的。根據我們增加存儲器的原理考慮一下,就會發現如果我們把控制的流程抽象成某種控制器能夠理解的形式,這個東西我們叫做指令,然後是先存到存儲器當中,就能讓計算機自動的完成這個工作了

所以這個需求之後,我們的存儲器還需要給控制器提供數據,這個數據對於控制控制器來說就是一條一條的指令,這樣的話我們提前要輸入的除了數據還有計算步驟,也就是指令或者更高層次的叫做程序。整個系統基本上就搭建完成了,但是依然有一個小小的問題,可以看到我們最開始設計運算器的時候,是希望他來做計算這樣的功能的,但是現在由於需要事先輸入一些數據和步驟,那麼當這些數據和步驟流過來的時候,運算器需要稍微暫停一下,幫助存儲器把這些數據和步驟搬過去,那是不是就佔用了運算器他的計算資源呀?

那麼我們在此改進一下結構,把存儲器放到中間來,這樣數據和步驟直接就輸入到存儲器當中,運算器可以更專心的做自己的運算。當然由於運算器和存儲器都是要有控制器來指揮的,有可能某些時候控制器他在指揮存儲器的時候沒空去指揮運算器,那麼預算基依然是沒有再認真工作的,但是跟之前需要大量的通過它來搬運數據,這種情況相比,現在已經優化了很多。並且換成這樣的結構之後,我們可以用更寬的數據通路,這是因爲運算器在設計的時候,本身它要處理的數據可能就是一兩個或者最多就幾個,它在它的數據通路是比較窄的,而如果把存儲器搬到中間來,傳輸的數據是可以以快爲單位的,那麼這樣整個計算機的傳輸速率會大大的提升,這個大家到後面數據通路的時候可以再去體會。

那麼到了這裏整個計算機系統就搭建完畢了,它主要是由我們的數據和步驟,也就是軟件系統這個部分大家可以理解爲計算機的靈魂。另一個部分就是剛剛我們所設計的這些功能部件,它們組成了計算機的硬件系統,這兩個系統加起來就是計算機系統。

接下來大家還會聽到一句話叫做軟件和硬件在邏輯上是等效的,我們剛剛證明過了對吧?剛剛爲了實現更多的位數的計算,我們可以通過買新的運算器來實現,也可以通過設計計算步驟,然後放到存儲器當中來實現,前面說的就是通過硬件來實現這個任務,後面說的就是通過軟件來實驗這個任務,他們最終都實現了這個任務,所以叫做他們兩個在邏輯上是等效的。但如果換一個說法就不對了,不能說她們是等價的,這其實還是比較明顯的。可以這樣考慮。

同樣是計算8位數據,如果我們用8位的運算器去計算的話,他整個任務所需要的時間就是從這些數據輸入到驗算器的入口,到這些數據從出口出來,這段流動所需要的時間,它是電流流動的時間,如果用軟件的方法來實現的話,它是切成兩段在4位的運算器當中去運算的,總共需要花兩段的這樣的流動的時間,也就是用了兩次預算期數據,從預算期的一段流到一段流了兩次,時間上的花費是明顯不同的。同時對於其他部件其他功能部件的佔用情況也是不同的,所以這個不能說是等價的,只能說是都完成了這個任務叫做等效的。

那麼到了這裏整個系統的搭建就結束了。

對於軟件系統來說,我們主要簡單的理解一下他的一些概念就行。這門課的主要任務是解析硬件系統當中這5大功能部件,它們的內部結構以及它們之間相互聯繫的這些方式,所以接下來我們先補償幾個關於硬件系統的概念。可以看到這兩幅圖就是剛剛我們所設計的計算機的硬件系統的兩個種結構,一個事運算器爲中心,一個是存儲器爲中心,那麼他們的特點剛剛已經介紹過了。接下來要說的就是藉助數據結構的一個概念,叫做這兩幅圖它們都是一個邏輯上的設計,也就是說其實他們只是規定了整個系統需要有哪些部分,每個部分又需要有哪些功能,以及這些部分之間是怎麼聯繫起來的,但是他並沒有介紹這些部分內部需要具體的買哪些東西,要焊哪些板子來實現,而我們這門課的任務就是要介紹這些內容。

那麼在此之前需要先補充幾個概念,首先運算器和控制器它們的結構是比較類似的,並且他們兩個得聯繫也非常的緊密,所以再實際設計的時候會把他們做成一塊芯片。這款芯片我們叫做CPU,有了運算功能和控制功能之後,再加上一定的存儲功能,計算機內部的核心功能就實現了吧。只不過這個時候可能輸入和輸出並不是我們喜聞樂見的形式,但是他已經能夠工作。那麼所以加上這塊存儲器之後,這一整個部件我們就叫做主機或者叫做部件,其實不太合適這一整塊結構我們就叫做主機。

我們要跟平時所稱的主機去問下,平時我們是把整個雞香都叫做主機得,但是拆開之後我們會發現裏面其實有很多並不屬於這三個共同部件的東西,所以這是組成原理上的主機,我們要跟平時的概念做一下區分。

那麼接下來就是剛剛最開始提到的輸入和輸出設備,可以感受到這兩個東西他們的地位是差不多的,都是完成數據的轉化,只不過一個是從我們喜歡的信號轉化到計算機喜歡的信號,一個是反過來的,從計算機的信號轉化成我們喜歡的信號,那麼這兩塊一般是放到一起來介紹的,我們統稱io設備,而還有一款,它也叫做存儲器,這時候我們可以跟剛剛存儲器區分一下,剛剛存儲器主要是提供運算器和控制器,他們的一些中間處理的結果的沒有了,它運算器和控制器就是一條之內一個一個任務的實現,有了它之後是批量的去做任務的。

所以這個主存儲器是屬於主機當中的結構,他是主機不可或缺的一部分。而外面的這部分輔助存儲器沒有得他整個主機也還是能工作得,只不過可能就不能做一些比較豐富多彩的操作。那麼輔助傳輸器和 I/O 放到一起,我們統稱爲外設。

可以看到這個“外”是相對於剛剛我們所定義的主機所說的“外”,也就是除了主存、運算器和控制器,其他的所有東西都叫做外設。可以看到這個“外”它的含義不是剛剛的這三個部件,而並不是指它是在整個機箱的內部還是外部。因爲機箱內部可以明顯地看到還有一個風扇,如果熟悉輔存的同學還知道里面還有硬盤,對吧?而在我們剛剛所定義的結構當中,它們是屬於外設的,那麼有了這些概念之後,我們就可以去探索每一個部件了,具體的每個部件有哪些設計要求,我們下次繼續聊。

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