<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 從4004到core i7:處理器的進(jìn)化史 (3)-3-真正的CPU

從4004到core i7:處理器的進(jìn)化史 (3)-3-真正的CPU

作者: 時(shí)間:2014-02-19 來(lái)源:摘自《果殼小組》網(wǎng) 收藏

  上一個(gè)帖子中我把4004作為所有后續的性能越來(lái)越高的的鼻祖。在這個(gè)貼之中我們來(lái)討論進(jìn)化史中的第一個(gè)里程碑:80286。

本文引用地址:http://dyxdggzs.com/article/233546.htm

  從4004到8008再到8080甚至是8086,的進(jìn)化在逐漸進(jìn)行著(zhù)。數量翻了幾番,主頻翻了幾番,但是內部的結構的變化還不足以引起我們的興趣為之單獨寫(xiě)一個(gè)帖子。

  這一切在80286都發(fā)生了徹底的改變。

  當的功能變得越來(lái)越強大,速度變得越來(lái)越快的時(shí)候,人們漸漸地不滿(mǎn)足于讓它只做一件事情,比如說(shuō)IBM Displaywriter,而想要讓它具有完成多個(gè)任務(wù)的能力。

  多個(gè)任務(wù)意味著(zhù)不同功能的多段程序,這樣多的程序不大可能由一家或者末端用戶(hù)自己全部寫(xiě)出來(lái)。也就是說(shuō),我們的CPU可能出現很多不同的程序提供者。

  一個(gè)很自然的想法就是,這么多程序員中間必然有很多不靠譜的(別忘了,當時(shí)匯編都是個(gè)新鮮玩意呢),以及很多靠譜但心懷不軌的。要想讓CPU正常有序地運行多段程序,沒(méi)有某種管理機制看來(lái)是行不通的。

  于是乎思路就很明顯了,程序要按照受信任的程度分成三六九等。不靠譜的、心懷叵測的程序不受信任,雖然可以在占據CPU的這一小段時(shí)間里肆虐,卻不應該危害到其他程序,更不應該危害到監察者的安全。

  對于一段程序來(lái)說(shuō),能干的壞事無(wú)非就是更改一下其他程序的狀態(tài),也就是內存里的數據,或者是執行一段來(lái)路不明的代碼。如果能禁止這兩者的發(fā)生那么基本上就不會(huì )鬧出什么大亂子出來(lái)。

  有了上面這個(gè)思路,再看一看下面的實(shí)現就顯得很自然了:

  在上圖中,連續的物理內存被分成了很多個(gè)段(segment),內存單元的邏輯地址采用段基址+偏移的方式描述。,每個(gè)段有自己的訪(fǎng)問(wèn)權限,每個(gè)程序都有一個(gè)從3~0的權限界別(這4個(gè)級別一直被沿用至今天)。如果當前這段程序想要訪(fǎng)問(wèn)某一個(gè)內存,或者想執行某一段代碼,就必須經(jīng)受硬件完成的權限檢查,只有當權限高于等于想要訪(fǎng)問(wèn)內存的權限時(shí)才允許訪(fǎng)問(wèn),否則就會(huì )拋出錯誤。關(guān)于硬件錯誤的拋出、處理后面還要再提,這里我就不講了。

  由于這種權限制度保護了內存免受其惡意或不靠譜程序的侵害,因此這種狀態(tài)被稱(chēng)為CPU的保護模式。今天的幾乎所有桌面級別和以上的都運行在保護模式下。上面提到的3~0的權限級別的劃分也為后來(lái)的操作系統(operating system)奠定了基礎。

  80286的另一個(gè)進(jìn)步(實(shí)際上是8086相對于之前的進(jìn)步)可以在下面這張圖中看出來(lái)

  左上方的 unit就是上面講到的分段機制對應的硬件。它的工作就是查映射表由邏輯地址得到實(shí)際的物理地址,并且進(jìn)行權限檢查。右上方的bus unit中我們感興趣的部分是最下面的8 byteprefetch queue和下方的instruction unit。

  在左下方的execution unit以及左上方的 unit在執行某一個(gè)指令的同時(shí),右下方的instruction unit在解碼后面的若干條指令。

  對比前面的4004,我們發(fā)現286并不是等待一條指令完全執行完畢之后才開(kāi)始執行下一條的。相反地,在286內部可能有若干條指令處于不同的狀態(tài):一條正在被ALU等部件實(shí)際執行,其余的可能已經(jīng)完成了取指正在等待譯碼,或者譯碼都完成了就是等著(zhù)執行了。毫無(wú)疑問(wèn),比起4004的執行效率提高了不少。

  這種將整個(gè)CPU劃分為2個(gè)模塊,每個(gè)模塊在同一時(shí)間執行不同任務(wù)的思想正是流水線(xiàn)(pipeline)(想想汽車(chē)裝配的流水線(xiàn)吧)。盡管286時(shí)可能還沒(méi)有這個(gè)概念,但無(wú)疑已經(jīng)實(shí)現了最初的雛形。后面我們將要看到,流水線(xiàn)是我們?yōu)閿挡欢嗟膬?yōu)化處理器性能的主流方法之一。

晶體管相關(guān)文章:晶體管工作原理


晶體管相關(guān)文章:晶體管原理


關(guān)鍵詞: CPU 處理器 晶體管 intel address

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>