Computer Organization
【introduction】
【case1】 就計算組成而言,在當下的計算機體系中通常采用的是馮諾伊曼體系的計算機——也就是標準的五大組成部分:控制器,存盤器,運算器,Io(輸入設備和輸出設備),在當下的計算機往往都是采用的這種模式進行設計,當然還有其他的計算機體系結構,例如哈佛體系,這種體系下的計算機的指令存盤器控制存盤器是分開進行裝置的,不像是馮諾伊曼體系中的那樣,存盤器是一個固定的封裝好的元件,設想一下,假如你有一臺采用了哈佛體系的計算機,其中的資料存盤器和指令存盤器是分開進行的,那么假設你要進行這樣一個操作:1+1=?
1. 從輸入設備鍵入1,這個時候計算機接收來自鍵盤的外部中斷(保護現場,中斷回應,中斷服務程式,回傳斷點),保存當前的執行狀態,然后cpu回應當前中斷,讀入1到存盤器中類似的鍵入1+1,
2. 當鍵入“=”的時候相當對計算機下達了一條指令(有操作碼),指令的組成在后面進行復習,但是指令是存盤在指令存盤器之中的,要對資料存盤器的資料進行操作,并且回傳到資料存盤器的存盤單元當中,要讓cpu的ALU進行“+”的運算,這就需要總線將(指令)-----CPU-----(資料存盤器)進行連接起來,自然而然回顧總線的概念
【DEF】總線
總線是進行計算機各功能部件之間資料傳輸的功能部件,(參考baidu的定義)加入把計算機整體比作是一個城市而言,那么總線就是在這個城市中的公路,而各個部件之間的資料就相當于是car.
自然采用哈佛體系之后的計算機,指令存盤器和功能存盤器還有cpu之間的ALU是通過總線進行連接,在這里強調一下指令的構成,指令的字長取決于指令編碼的不同形式,但毫無疑問的是前面都有op(指令操作碼)------局限于馮諾伊曼體系的討論
回到上面的討論來:
當cpu通過總線,將指令和資料都存盤到cpu內部的暫存器的時候,根據OP所暗含的操作(由于不了解哈佛體系指令系統的編碼,但是在指令編碼的程序中一定會有類似于OP的代表作用的編碼的部分,在這里假設是OP)進行運算后,然后通過總線又存盤回去資料存盤器中(也就是存2)
通過輸出設備進行顯示,
以上就討論的計算機體系和計算組成之間的關系,二者之間微妙的設計,計算機體系決定著計算機硬體層次之間的分布情況,而計算機組成硬體之間的限制又反過來決定了你所設計上的計算機體系能否實作的現實問題,
【case2】
就當下計算機的發展而言,速度越來越加快的影響下使得摩爾定理即將失效,這個時候之后考慮量子領域的硬體進行突破,或者從數學的角度設計演算法繞過硬體進行突破,(就比如說量子編碼,量子bit.因為這個bit的處理關系不是線性的處理,是進行指數形式的處理,自然而然要速度快于一般的位元)
而考慮整體的計算機環境而言,主要是由兩大部件——硬體和軟體組成的,軟體部分又可以分為網路軟體和非網路軟體(個人的劃分和教材無關),軟體(app),也叫應用程式,網路程式在因特網上進行運行,而就因特網的本質而言,因特網是用戶主機和服務器之間還有各個用戶之間的資料收發和共享的網路,那么圍繞這個主題,網路程式就是網路行程之間的資料溝通(就最簡單的socket套接字之間的溝通),打一個最簡單的比方:
假如你在玩一個GAME,虛擬現實的游戲,你和全世界的用戶都在一個場景,而這個場景又由服務器傳輸到你的設備顯示在你的視野中,這個傳輸是持續性的(因為你可能在這個游戲中操作一些動作),那么一個好的快的傳輸網路就可以提供給你更好的游戲體驗,比如說你的網路傳輸速度不好的話,那么你的視野中的人物或許會卡頓,掉幀,這就是因為資料收發沒有及時性的緣故,而牽扯到了傳輸速度的概念,那就不僅僅是軟體本身的關系,這就回到了硬體的處理上來,軟體和硬體之間或許存在這樣的關系:
硬體決定了軟體的可運行性(計算機),而一個好的軟體如果在演算法層次優化的比較好,那么也會降低硬體的負擔,
【case3】最后討論一下編程語言的關系?(高級語言,匯編語言,機器語言)
先舉出幾個實際的例子:
1. 高級語言:c,C++,Python,java.......都是
2. 匯編語言:一群字母,類似LOAD 這樣的指令,個人覺得有種玩弄邏輯的感覺
3. 機器語言:由于最早期的計算機編碼的問題,人們在設計計算機的時候都是采用的0,1的數字進行編碼,這樣是很不好的,比如你寫的代碼別人就看不懂,但由于最底層的這樣的設計,保證了計算機的機械化的實作出錯率會降低,
發展歷程來說就是:機器——匯編——高級的發展程序,\
就概論的復習大概就是這樣,,,,,,,,,
上面關于哈佛體系的討論或許有問題,感謝有大佬指出,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3797.html
標籤:其他
上一篇:05.位元幣區塊鏈的資料結構
