tft每日頭條

 > 圖文

 > 計算機芯片發展曆程

計算機芯片發展曆程

圖文 更新时间:2025-05-03 14:28:27

計算機芯片發展曆程?在2017年年底的一個周末,來自奧地利格拉茨技術大學的一名研究員寫出了一個程序,成功的從操作系統中最受保護的地方獲取了自己網頁浏覽和私人郵件信息由于這個漏洞源于芯片設計本身,他和他的同事們次日便将這個消息郵件告知了英特爾公司一個星期後他們收到了英特爾公司的回複原來他們已經不是第一個找到這個漏洞的人,而英特爾公司也已經在着手修複為了不給黑客攻擊的機會,雙方答應了延緩這個發現的發表,直到新年伊始,今天小編就來聊一聊關于計算機芯片發展曆程?接下來我們就一起去研究一下吧!

計算機芯片發展曆程(轟動整個計算機領域的芯片問題)1

計算機芯片發展曆程

在2017年年底的一個周末,來自奧地利格拉茨技術大學的一名研究員寫出了一個程序,成功的從操作系統中最受保護的地方獲取了自己網頁浏覽和私人郵件信息。由于這個漏洞源于芯片設計本身,他和他的同事們次日便将這個消息郵件告知了英特爾公司。一個星期後他們收到了英特爾公司的回複。原來他們已經不是第一個找到這個漏洞的人,而英特爾公司也已經在着手修複。為了不給黑客攻擊的機會,雙方答應了延緩這個發現的發表,直到新年伊始。

2018年1月2日,論文發表,英特爾、AMD和ARM的芯片同時被爆出安全問題。總結來說,這個芯片設計漏洞能夠引起兩種網絡黑客攻擊,分别是“崩潰(meltdown)”和“幽靈(spectre)”。

○ 英特爾芯片設計漏洞可能引起兩種網絡黑客攻擊,分别是“崩潰”和“幽靈”。

“崩潰”是一種打破應用程序與操作系統之間隔離的攻擊。在崩潰攻擊下,軟件就可以直接訪問權限外的内存,從而調取其他應用程序和系統資源“幽靈”則是一種打破不同應用程序之間隔離的攻擊。它可以讓黑客進行僞裝,騙過系統的檢測,最終達到調取資源的目的。

這意味着什麼呢?這意味着隻要用電腦,理論上都可能受到安全攻擊而且這個安全問題是根植在芯片的架構裡,除非重新設計操作系統或者芯片,否則這個問題無法從根本上得到解決。而一切的原因,都源自于我們幾十年來過于追求CPU的性能。

自從馮諾依曼在1945年提出了計算機架構至今的70多年的時間裡,計算機的發展一直都基于這種架構。除了在晶體管層面上的發展,計算機架構師們也一直想方設法在架構上做文章,使程序運行更快。其中被沿用至今的包括多級儲存(memory hierarchy)、亂序執行(out-of-order execution)和推測執行(speculative execution)。

多級儲存:

首先來說說多級儲存。如上圖所示,簡單來說儲存從離CPU由遠到近可分為硬盤(Disk)、内存(RAM)、緩存(cache)和寄存器(register)。儲存大小和讀取時間都是硬盤最大,然後依次遞減。現在的計算機一般有512GB或者1TB容量的硬盤,16G或者8G的内存,以及幾到十幾MB左右的緩存。在這三級的儲存中隻有硬盤是非易失性記憶(non-volatile memory)。也就是說隻有硬盤在計算機斷電之後仍能儲存數據。因此,我們平常需要的所有東西(啟動程序除外)都儲存在硬盤裡。開機之後由啟動程序開啟操作系統,由操作系統将需要的數據從硬盤移到内存。而緩存的設計則是為了CPU能夠更快的讀取平時所需要的數據。

試想一下,假如你正在寫一篇論文,需要在圖書館查找資料。你會把所需要的各種書從不同的書架上取下來放在桌上,然後再從中選一兩本寫當下章節需要常看的書放在手邊以便随時翻閱。計算機架構的設計也遵從了這樣一個原則。如果你是一個CPU,那麼圖書館就是硬盤,放書所用的桌子就是内存,而你手邊觸手能即的地方就是緩存。而當你離開圖書館的時候,桌上和你手邊的書也會被管理員清空并放回原本的書架上。由此可見,多級儲存的設計目的就在于能讓CPU能夠盡量頻繁的 “在觸手可及的地方拿到需要的書”

亂序執行:

再來說說亂序執行。所有程序最終都會被拆分成一條條的指令,由CPU逐個執行。然而每條指令所花的時間并不相同,比如你去圖書館書架上取書花的時間肯定比從手邊拿書要長。最初的架構設計是讓CPU按程序順序依次逐個執行指令。然而這就出現了一個新的問題,如果一個指令需要花很長時間來執行(通常因為該指令沒有獲得足夠多的執行資源),那麼後面指令(無論再簡單,需要花的時間再少)也必須等這條指令執行完之後才能開始執行。這就像在一條很窄的路上行車,如果前面有一輛車出了故障走不了,在這輛故障車等拖車來的這段時間裡,後面的車也隻好堵着。當然現實生活中我們基本不會遇到這樣的情景。如果一輛車出了問題,它通常會靠邊停車,在打雙閃等拖車的同時,讓後面的車能夠順利通過。而後來計算機架構的設計也遵從了這一理念。如果一條指令需要花很長時間才能完成執行,那麼這條指令會被放到一個特殊的地方(reservation station),以便讓CPU能夠執行之後的指令。隻有當放在reservation station的指令獲得足夠多資源執行的時候,該指令才會重新被執行。這就是被用在如今幾乎所有芯片裡的技術—亂序執行。

推測執行:

最後再來看看推測執行。假設你每晚放學必須要和你的朋友一起去吃個宵夜。你們通常都會去城東的燒烤店吃燒烤。當然,如果燒烤店人滿為患,你們也會選擇城北邊的炸雞店。那麼問題來了,放學的時候你怎麼知道燒烤店是否還有位子呢?當然你可以打電話去問,但是老闆通常很忙,打個電話得等個20分鐘才有回複。那麼放學後的你現在應該何去何從呢?現在你之前的經驗起了作用。如果你之前百分之八十的時候去燒烤店都是有座位的,那麼你在放學打電話的這20分鐘時間裡,你完全可以在接到答複之前先往燒烤店走着,反正有百分之八十的機會你不用折返去城北。而整套機制放在計算機裡就是推測執行。在CPU執行指令的時候通常都會遇到判定,如果判定為真則執行一部分代碼,如果判定為僞,則執行另一段代碼。而通常判定是需要等待很長時間。而現在的CPU都會根據之前的控制流預測判定的結果,在結果确定之前,CPU會執行預測結果指向的指令。如果預測對了,那麼CPU則節省了等待判定結果的時間。如果預測錯了,則CPU會從開始判定的位置重新接受新的,正确的指令。雖然倒回原點重新執行新的指令會比較耗時,但是如果之前預測的準确性很高,比如90%,那麼這個結果還是可以接受的,畢竟總體上來說CPU執行指令還是省了不少時間。

上述三個架構上的技巧大大提高了CPU執行指令的效率。究其原理,主要就是使CPU能一直有事可做,不至于在那裡空轉浪費時間。然而,正是這三個幾乎現在所有CPU都有的特性,導緻了這次芯片安全性能的滑鐵盧。在了解具體情況之前,我們還要了解一個操作系統的重要特性。

無論是什麼操作系統都會在兩個級别下運行,一個是用戶級别(user mode),一個是系統級别(kernel mode)。而用戶級别的優先級會低于系統級别。也就是說系統級别的資源在用戶級别下是不能使用讀取的。這樣設置的原因是防止用戶讀取他不應該讀取的信息,比如其他用戶的密碼。例如在程序的某個地方用戶試圖讀取其權限外的數據,系統會自動從用戶級别跳到系統級别,然後阻止用戶讀取該數據。這就像你要進别人家的門,但是密碼輸入錯誤,門是會自動鎖住,不讓你進。

然而亂序執行和推測執行改變了這一切。從根本上說,亂序執行可以暫時跳過一些指令直接執行後面的指令。而推測執行時,錯誤的推測可能讓CPU直接執行一些權限外的指令。這就像你能在輸入的門禁密碼得到判定前先進别人家逛一圈,等密碼判定為錯,再請你出去,然後鎖門。

從計算機架構上來看,如之前所述,計算機需要的數據都會提前存儲在内存中以供讀取。如果我們故意制造一個非法的數據訪問,因為該操作訪問了超過權限的内存,操作理應會被拒絕。然而因為亂序執行和推測執行的存在,這些非法操作可以在還沒有被拒絕前執行。雖然最後這些非法操作最終會被系統拒絕并忽略(不對系統狀态造成影響),但這些已執行過的非法訪問的數據會因為多級儲存的架構而留在緩存上面。通過簡單的技術手段就可以反複推出真實的敏感數據。也就是說你輸入的密碼因為芯片的内部設計,可以被其他用戶級别的程序直接獲取。這就好比在圖書館有一列書架上的書是不允許學生借閱的,但因為圖書管理員允許在身份确認前進入借閱,作為學生的你可以先進去把需要的書拿出來放到你的桌上。即使管理員最後确認了你的學生身份,禁止了你的權限,但這個時候你需要的書已經被拿了出來放在了你的桌上。即便你不主動去讀,我們也不能阻止其他人偷偷去翻閱這本書。

所幸的是各大芯片公司對此早就在内部有了未公開的研究,爆出該問題的論文也是在各大公司有了更新和應對措施之後才被公之于衆。各個公司都發布了自己的系統更新用于緩解該問題的嚴重性。但是值得注意的是,目前的補救辦法隻能通過操作系統的補丁來修複。而這些補丁會對芯片的性能帶來從5%到30%不等的下降。而操作系統級别的修複隻能緩解卻不能被徹底解決這個安全問題,除非重新設計芯片結構或者操作系統。

從馮諾依曼架構确定至今的幾十年時間裡,我們似乎因為太在意芯片的性能而開發出了很多諸如上述的提高芯片運行效率的技術。然而被我們忽略的硬件級别的安全性卻是隐藏在這下面更重要的特性。正所謂企者不立,跨者不行, 一味注重芯片性能的開發方式似乎走到了盡頭。而更加根本的馮諾依曼架構是否還能按照之前的腳步繼續發展,似乎也值得芯片架構師們深思。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved