<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/233546.htm

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();