人類為什麼要發明計算機?一直以來,人類都有愛偷懶的習慣,而正是由於這個原因,促使了人類發明了計算機,從而提高生產力,那麼人類有了更多空閒時間去娛樂了~~
馮諾依曼結構的計算機由五大組成部分,分別是計算器、控制器、儲存器(記憶體)、輸入裝置和輸出裝置,而計算機和控制器組成cpu(center process unit,**處理單元)。馮.諾依曼結構的特點就是資料和指令以二進位制形式,不加區別的存放在儲存器中。以計算兩個數相加為例,首先將相關**和資料讀入到記憶體中,編譯器將相關**編譯成彙編**。資料200和資料400分別存放在位址為1000、1004的地方,move [1000] eax
表示將位址是1000的內容放到暫存器eax中,move [1004] ebx
表示將位址是1004的內容放到暫存器ebx中,add eax ebx
表示將eax和ebx的內容相加,並將結果存放到ebx暫存器中。我們發現,簡單的資料相加在彙編層面卻對應著3條指令,如果更加複雜的資料運算就需要更加複雜的指令了。
cpu通過i/o橋和記憶體相連,i/o橋和io匯流排相連,io匯流排掛載著usb控制器、圖形控制器和磁碟控制器。 匯流排結構(不是所有的裝置都是兩兩相連,而是通過匯流排結構)
i/o橋是對南橋和北橋的抽象
常見的指令格式有三位址指令、二位址指令、一位址指令和零位址指令,如下圖所示,其中,二位址指令所占用的空間比三位址指令要少,x86系列的處理器就是採用二位址形式的;一位址指令通常被用作累加器;零位址指令位址比較緊湊,但是要完成一件事情,一般會比二位址或三位址指令需要更多的指令,例如
iconst_1
iconst_2
iadd
istore_0
複製**
iadd(表示整形加法)指令並沒有任何引數。連源位址都沒有指定,零位址指令有什麼作用?零位址意味著源和目標都是隱含引數,其實現依賴於一種常見的資料結構--棧。
指令的執行是分步驟的(取指、解碼、執行等),也正是這個原因,它對應著不同的部件,這些部件我們要充分的利用起來,所以才有了流水線這個概念。如果不採用流水線,那麼cpu的速度會變得很慢,譬如:當取值部件正在取值時,解碼、執行部件是空閒的。所以,當一條指令在解碼的時候,另一條指令從記憶體中取指令,這樣做,取值部件和解碼部件都可以利用起來了。
下面這張圖描述的是cpu、記憶體、硬碟和網路之間的速度差異,其中,cpu的速度是1s,主存速度是6min,硬碟速度是1~12個月,而網路速度則達到19年,我們發現這些裝置的速度差別巨大,記憶體比cpu慢幾百倍,硬碟比cpu慢幾十萬倍,網路比cpu慢千萬倍,這樣一來,cpu能坐等記憶體或硬碟慢吞吞的幹活嗎?或者說,有什麼方法解決這種局面嗎?
1. 提公升硬碟等裝置的速度,和cpu匹配(現階段不可能)
2. 承認侷限,但充分壓榨cpu的能力,讓cpu"忙死"
計算機體系雜談
關於我所了解的計算機,表面的東西就不說了 體系主要包括五個部分 運算器控制器 儲存器,記憶體,編址 輸出裝置 輸入裝置 至於他們是什麼需要你自己去深入了解,這裡我只提出重要的部分 說說cpu cpu 是和 記憶體做互動用的 判斷cpu效能的好壞 看一級快取 二級快取 暫存器 其實啊 我們的程式就是有...
計算機體系結構
計算機體系結構 計算機體系機構指計算機中部件和部件之間的聯絡 一 馮 諾依曼體系 1 計算機處理的資料和指令用二進位制數表示 2 採用儲存程式方式,指令和資料儲存在同乙個儲存器中。3 指令由操作碼和位址組成。操作碼指明指令的操作型別,位址指明運算元和位址。4 以運算器為中心,i o裝置與儲存器間的資...
計算機體系結構
2.計算機體系結構 經典計算機體系結構概念的實質是計算機系統中軟硬體介面的確定,其介面之上的是軟體的功能,介面之下的是硬體和韌體的功能。廣義 現代 的計算機體系結的構概念,它除了包括經典的計算機體系結構的概念範疇 指令集結構 還包括計算機組成和計算機實現的內容。計算機體系結構是程式設計師所看到的計算...