馮諾依曼體系:將程式指令和資料一起設計的計算機設計概念結構
必須有乙個儲存器、必須有乙個控制器、運算器、輸入裝置、輸出裝置
馮諾伊曼瓶頸:儲存器的速度跟不上cpu的速度,指磁碟、記憶體、暫存器。
程式翻譯與程式解釋
較為高階的計算機語言通過編譯器生成較為低階的計算機語言。
1g->1024mb->10241024kb->10241024kb1024b(位元組)->10241024kb1024b8bit(位元位)
儲存器:cpu快取記憶體、記憶體條、硬碟。
記憶體(ram random access memory)通過電容來儲存資料。
快取記憶體在cpu中,主存即為記憶體,輔存即為磁碟。快取記憶體解決cpu和主存速度不一致的問題。
快取記憶體中儲存cpu需要的資料。如果不存在,則需要去主存中讀取。
快取記憶體替換策略
1 隨機演算法(每次隨機替換快取記憶體中的資料)
2 先進先出(fifo 把快取記憶體看成乙個佇列,cpu執行替換時,將會將隊頭中資料淘汰,重複讀取資料不會改變資料在快取中的位置,)
3 最不經常使用演算法(lfu(last fequently used)優先淘汰不經常使用的資料,有一塊區域會記錄字塊的使用頻率,設計的資料結構可以為乙個map,key為頻率,value為該頻率下的節點,即記憶體中的塊)
4 最近最少使用演算法。(lru (last recently user),同樣使用佇列儲存使用的資料,將使用的資料移動到隊頭,這樣 ,使用次數多的一定在隊頭,執行淘汰策略的時候淘汰隊尾的資料)
lfu強調的是一段時間內的頻率。
lru強調的是一段時間內的使用次數。這兩個演算法不能劃等號,比如某個快取塊之前一段時間的訪問頻率比較高,但是已經好久沒被使用了,按照lfu演算法,是會被淘汰的,同樣,如果乙個快取塊是新加入的,訪問次數比較低,按照lfu是會被淘汰的,但是按照lru演算法是不會被淘汰的。
lru演算法實現
採用鍊錶儲存資料節點,每次將資料新增到資料隊尾,鍊錶中的資料如果被訪問到了那麼將該節點斷開,新增到隊尾,核心方法如下:
public
intget
(int key)
node = node.before;
}return-1
;}/** * 將node節點新增到隊尾
* @param node
*/private
void
movenodetotail
(node node)
//node的前後不要指向node
if(node.before == null)
else
node.after.before = node.before;
this
.tail.after = node;
node.before =
this
.tail;
node.after = null;
this
.tail = node;
}public
void
put(
int key,
int value)
node = node.before;}if
(this
.currnodesize >=
this
.capacity)
node putnode =
newnode
(key, value);if
(this
.currnodesize==0)
else
this
.tail = putnode;
this
.currnodesize++
;return;}
/** * 發生淘汰策略
*/private
void
eliminatenode()
if(node!=null)
}this
.head = node;
this
.currnodesize =
this
.currnodesize - eliminatenum;
}
馮諾依曼體系
1.馮 諾依曼體系結構 也是現代計算機的 硬體 體系結構,它包括五大硬體單元 a 輸入裝置 鍵盤 b 輸出裝置 顯示器 c 儲存器 記憶體 d 運算器 用於完成 算術運算 和 邏輯運算 e 控制器 其中 運算器 和 控制器 組成 處理器,也叫 cpu。2.計算機所具備的功能 a 把需要的程式和資料送...
馮諾依曼體系
馮諾依曼 john von neumann,1903.12.28 1957.02.08 美籍匈牙利數學家 計算機科學家 物理學家,是20世紀最重要的數學家之一。在現代計算機 博弈論 核 和生化 等領域均有貢獻,被後人稱之為 現代計算機之父 博弈論之父 馮諾依曼體系的要點是 數字計算機的數制採用二進位...
馮諾依曼體系結構
cui 馮諾依曼體系機構 說到計算機的發展,就不能不提到德國科學家馮諾依曼。從20世紀初,物理學和電子學科學家們就在爭論製造可以進行數值計算的機器應該採用什麼樣的結構。人們被十進位制這個人類習慣的計數方法所困擾。所以,那時以研製模擬計算機的呼聲更為響亮和有力。20世紀30年代中期,德國科學家馮諾依曼...