終於找到了這篇!通俗講解計算機工作原理

2021-01-18 21ic電子網


為解決各種問題,人們發明了不計其數的機器。計算機種類繁多,從嵌入火星漫遊機器人的計算機到為操縱核潛艇導航系統的計算機,不一而足。馮• 諾伊曼在1945 年提出第一種計算模型,無論筆記本電腦還是電話,幾乎所有計算機都遵循與這種模型相同的工作原理。那麼你們了解計算機是如何工作的嗎?本文將討論這些內容:畢竟,在非程式設計師看來,編程要像魔法一樣神奇,我們程式設計師不會這麼看。計算機是一種根據指令操作數據的機器,主要由處理器與存儲器兩部分組成。存儲器又稱RAM(隨機存取存儲器),用於存儲指令以及需要操作的數據。處理器又稱CPU(中央處理器),它從存儲器獲取指令與數據,並執行相應的計算。接下來,我們將討論這兩部分的工作原理。存儲器被劃分為許多單元,每個單元存儲少量數據,通過一個數字地址加以標識。在存儲器中讀取或寫入數據時,每次對一個單元進行操作。由於存儲器是一種電氣元件,單元地址作為二進位數通過信號線傳輸。每條信號線傳輸一個比特,以高電壓表示信號「1」,低電壓表示信號「0」,如圖7-1 所示。對於某個給定的單元地址,存儲器可以進行兩種操作:獲取其值或存儲新值,如圖7-2 所示。存儲器包括一條用於設置操作模式的特殊信號線。


每個存儲單元通常存儲一個 8 位二進位數,它稱為字節。設置為「讀」模式時,存儲器檢索保存在單元中的字節,並通過8 條數據傳輸線輸出,如圖7-3 所示。設置為「寫」模式時,存儲器從數據傳輸線獲取一個字節,並將其寫入相應的單元,如圖7-4 所示。傳輸相同數據的一組信號線稱為總線。用於傳輸地址的8 條信號線構成地址總線,用於在存儲單元之間傳輸數據的另外8 條信號線構成數據總線。地址總線是單向的(僅用於接收數據),而數據總線是雙向的(用於發送和接收數據)。
在所有計算機中,CPU 與RAM 無時無刻不在交換數據:CPU 不斷從RAM 獲取指令與數據,偶爾也會將輸出與部分計算存儲在RAM 中,如圖7-5 所示。


CPU 包括若干稱為寄存器的內部存儲單元,它能對存儲在這些寄存器中的數字執行簡單的數學運算,也能在RAM 與寄存器之間傳輸數據。可以指示CPU 執行以下典型的操作:CPU 可以執行的所有操作的集合稱為指令集,指令集中的每項操作被分配一個數字。計算機代碼本質上是表示CPU 操作的數字序列,這些操作以數字的形式存儲在RAM 中。輸入/ 輸出數據、部分計算以及計算機代碼都存儲在RAM 中。通過在RAM 中包含重寫部分代碼的指令,代碼甚至可以對自身修改,這是計算機病毒逃避反病毒軟體檢測的慣用手法。與之類似,生物病毒通過改變自身的DNA以躲避宿主免疫系統的打擊。圖7-6 取自Intel 4004 操作手冊,顯示了部分CPU 指令映射為數字的方法。隨著製造工藝的發展,CPU 支持的操作越來越多。現代CPU 的指令集極為龐大,但最重要的指令在幾十年前就已存在。CPU 的運行永無休止,它不斷從存儲器獲取並執行指令。這個周期的核心是PC 寄存器,PC (program counter)是「程序計數器」的簡稱。PC 是一種特殊的寄存器,用於保存下一條待執行指令的存儲地址。CPU 的工作流程如下:
PC 在CPU 上電時復位為默認值,它是計算機中第一條待執行指令的地址。這條指令通常是一種不可變的內置程序,用於加載計算機的基本功能。在許多個人計算機中,這種程序稱為BIOS(基本輸入輸出系統)。CPU 上電後將繼續執行這種「獲取- 執行」周期直至關機。然而,如果CPU 只能遵循有序、順序的操作列表,那麼它與一個花哨的計算器並無二致。CPU 的神奇之處在於可以指示它向PC 中寫入新值,從而實現執行過程的分支,或「跳轉」到存儲器的其他位置。這種分支可以是有條件的。以下面這條CPU 指令為例:「如果寄存器1 等於0,將PC設置為地址200」。該指令相當於:

if x = 0
compute_this()
else
compute_that()

僅此而已。無論是打開網站、玩計算機遊戲抑或編輯電子表格,所涉及的計算並無區別,都是一系列只能對存儲器中的數據求和、比較或移動的簡單操作。大量簡單的操作組合在一起,就能表達複雜的過程。以經典的《太空侵略者》遊戲為例,其代碼包括大約3000 條機器指令。CPU 時鐘 早在20 世紀80 年代,《太空侵略者》就已風靡一時。這個遊戲在配備2 MHz CPU 的街機上運行。「2 MHz」表示CPU 的時鐘,即CPU 每秒可以執行的基本操作數。時鐘頻率為200 萬赫茲(2 MHz)的CPU 每秒大約可以執行200 萬次基本操作。完成一條機器指令需要5到10 次基本操作,因此老式街機每秒能運行數十萬條機器指令。
隨著現代科技的進步,普通的臺式計算機與智慧型手機通常配備2 GHzCPU,每秒可以執行數億條機器指令。時至今日,多核CPU 已投入大規模應用,如四核2 GHz CPU 每秒能執行近10 億條機器指令。展望未來,CPU 配備的核心數量或許會越來越多。CPU 體系結構 讀者是否思考過,PlayStation 的遊戲CD 為何無法在臺式計算機中運行?iPhone 應用為何無法在Mac 中運行?原因很簡單,因為它們的CPU 體系結構不同。x86 體系結構如今已成為行業標準,因此相同的代碼可以在大部分個人計算機中執行。但考慮到節電的要求,手機採用的CPU 體系結構有所不同。不同的CPU 體系結構意味著不同的CPU 指令集,也意味著將指令編碼為數字的方式各不相同。臺式計算機CPU 的指令並非手機CPU的有效指令,反之亦然。32 位與64 位體系結構 第一種CPU 是Intel 4004,它採用4 位體系架構。換言之,這種CPU 在一條機器指令中可以對最多4 位二進位數執行求和、比較與移動操作。Intel 4004 的數據總線與地址總線均只有4 條。不久之後,8 位CPU 開始廣為流行,這種CPU 用於運行DOS 的早期個人計算機。20 世紀八九十年代,著名的可攜式遊戲機Game Boy 就採用8 位處理器。這種CPU 可以在一條指令中對8 位二進位數進行操作。技術的快速發展使16 位以及之後的32 位體系結構成為主導。CPU 寄存器隨之增大,以容納32 位數字。更大的寄存器自然催生出更大的數據總線與地址總線:具有32 條信號線的地址總線可以對232 字節(4 GB)的內存進行尋址。人們對計算能力的渴求從未停止。電腦程式越來越複雜,消耗的內存越來越多,4 GB 內存已無法滿足需要。使用適合32 位寄存器的數字地址對超過4 GB 內存進行尋址頗為棘手,這成為64 位體系結構興起的動因,這種體系結構如今佔據主導地位。64 位CPU 可以在一條指令中對極大的數字進行操作,而64 位寄存器將地址存儲在海量的存儲空間中:264 字節相當於超過170 億吉字節(GB)。大端序與小端序 一些計算機設計師認為,應按從左至右的順序在RAM 與CPU 中存儲數字,這種模式稱為小端序。另一些計算機設計師則傾向於按從右至左的順序在存儲器中寫入數據,這種模式稱為大端序。因此,根據「字節序」的不同,二進位序列1-0-0-0-0-0-1-1 表示的數字也有所不同。目前的大部分CPU 採用小端序模式,但同樣存在許多採用大端序模式的計算機。如果大端序CPU 需要解釋由小端序CPU 產生的數據,則必須採取措施以免出現字節序不匹配。程式設計師直接對二進位數進行操作,在解析來自網絡交換機的數據時尤其需要注意這個問題。雖然目前多數計算機採用小端序模式,但由於大部分早期的網絡路由器使用大端序CPU,所以網際網路流量仍然以大端序為基礎進行標準化。以小端序模式讀取大端序數據時將出現亂碼,反之亦然。模擬器 某些情況下,需要在計算機上運行某些為不同CPU 設計的代碼,以便在沒有iPhone 的情況下測試iPhone 應用,或玩膾炙人口的老式超級任天堂遊戲。這是通過稱為模擬器的軟體來實現的。模擬器用於模仿目標機器,它假定與其擁有相同的CPU、RAM 以及其他硬體。模擬器程序對指令進行解碼,並在模擬機器中執行。可以想見,如果兩臺機器的體系結構不同,那麼在一臺機器內部模擬另一臺機器絕非易事。好在現代計算機的速度遠遠超過之前的機器,因此模擬並非無法實現。我們可以利用Game Boy 模擬器在計算機中創建一個虛擬的Game Boy,然後就能像使用實際的Game Boy 那樣玩遊戲。通過對計算機進行編程,可以完成核磁共振成像、聲音識別、行星探索以及其他許多複雜的任務。值得注意的是,計算機執行的所有操作最終都要通過簡單的CPU 指令完成,即歸結為對數字的求和與比較。而Web 瀏覽器等複雜的電腦程式需要數百萬乃至數十億條這樣的機器指令。但我們很少會直接使用CPU 指令來編寫程序,也無法採用這種方式開發一個逼真的三維計算機遊戲。為了以一種更「自然」且更緊湊的方式表達命令,人們創造了程式語言。我們使用這些語言編寫代碼,然後通過一種稱為編譯器的程序將命令轉換為CPU 可以執行的機器指令。我們用一個簡單的數學類比來解釋編譯器的用途。假設我們向某人提問,要求他計算5 的階乘。但如果回答者不了解什麼是階乘,則這樣提問並無意義。我們必須採用更簡單的操作來重新表述問題。不過,如果回答者只會做加法怎麼辦?我們必須進一步簡化問題的表述。5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 +5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 = ?可以看到,表達計算的形式越簡單,所需的操作數量越多。計算機代碼同樣如此。編譯器將程式語言中的複雜指令轉換為等效的CPU 指令。結合功能強大的外部庫,就能通過相對較少的幾行代碼表示包含數十億條CPU 指令的複雜程序,而這些代碼易於理解和修改。計算機之父艾倫• 圖靈發現,簡單的機器有能力計算任何可計算的事物。如果機器具有通用的計算能力,那麼它必須能遵循包含指令的程序,以便:◎ 執行條件分支:如果存儲地址具有給定的值,則跳轉到程序的另一個點。我們稱具有這種通用計算能力的機器是圖靈完備的。無論計算的複雜性或難度如何,都可以採用簡單的讀取/ 寫入/ 分支指令來表達。只要分配足夠的時間與存儲空間,這些指令就能計算任何事物。人們最近發現,一種稱為MOV(數據傳送)的CPU 指令是圖靈完備的。這意味著僅能執行MOV 指令的CPU 與完整的CPU 在功能上並無不同:換言之,通過MOV 指令可以嚴格地表達任何類型的代碼。
這個重要概念在於,無論簡單與否,如果程序能採用程式語言進行編碼,就可以重寫後在任何圖靈完備的機器中運行。編譯器是一種神奇的程序,能自動將代碼從複雜的語言轉換為簡單的語言。從本質上講,編譯後的電腦程式是CPU 指令的序列。如前所述,為臺式計算機編譯的代碼無法在智慧型手機中運行,因為二者採用不同的CPU體系結構。不過,由於程序必須與計算機的作業系統通信才能運行,編譯後的程序也可能無法在共享相同CPU 架構的兩臺計算機中使用。為實現與外界的通信,程序必須進行輸入與輸出操作,如打開文件、在屏幕上顯示消息、打開網絡連接等。但不同的計算機採用不同的硬體,因此程序不可能直接支持所有不同類型的屏幕、音效卡或網卡。這就是程序依賴於作業系統執行的原因所在。藉助作業系統的幫助,程序可以毫不費力地使用不同的硬體。程序創建特殊的系統調用,請求作業系統執行所需的輸入/ 輸出操作。編譯器負責將輸入/ 輸出命令轉換為合適的系統調用。然而,不同的作業系統往往使用互不兼容的系統調用。例如,與macOS或Linux 相比,Windows 在屏幕上列印信息所用的系統調用有所不同。因此,在使用x86 處理器的Windows 中編譯的程序,無法在使用x86處理器的Mac 中運行。除針對特定的CPU 體系結構外,編譯後的代碼還會針對特定的作業系統。優秀的編譯器致力於優化它們生成的機器碼。如果編譯器認為可以通過修改部分代碼來提高執行效率,則會處理。在生成二進位輸出之前,編譯器可能嘗試應用數百條優化規則。因此,應使代碼易於閱讀以利於進行微優化。編譯器最終將完成所有細微的優化。例如,一些人對以下代碼頗有微詞。
function factorial(n)if n > 1return factorial(n - 1) * nelsereturn 1

function factorial(n)result ← 1while n > 1result ← result * nn ← n - 1return result

誠然,在不使用遞歸的情況下執行factorial 函數將消耗較少的計算資源,但仍然沒有理由因此而改變代碼。現代編譯器將自動重寫簡單的遞歸函數,舉例如下。

為避免進行兩次x+y 計算,編譯器將上述代碼重寫為:
t1 ← x + yi ← t1 + 1j ← t1

應專注於編寫清晰且自解釋的代碼。如果性能出現問題,可以利用分析工具尋找代碼中的瓶頸,並嘗試改用更好的方法計算存在問題的代碼。此外,避免在不必要的微操作上浪費太多時間。但在某些情況下,我們希望跳過編譯,接下來將對此進行討論。某些語言在執行時並未被直接編譯為機器碼,這些語言稱為腳本語言,包括JavaScript、Python 以及Ruby。在腳本語言中,代碼由解釋器而非CPU 執行,解釋器必須安裝在運行代碼的機器中。解釋器實時轉譯並執行代碼,因此其運行速度通常比編譯後的代碼慢得多。但另一方面,程式設計師隨時都能立即運行代碼而無須等待編譯過程。Google 工程師必須不斷編譯大量代碼,導致程式設計師「損失」了很多時間(圖7-9)。由於需要保證編譯後的二進位文件有更好的性能,Google 無法切換到腳本語言。公司為此開發了Go 語言,它的編譯速度極快,同時仍然保持很高的性能。給定一個已編譯的電腦程式,無法在編譯之前恢復其原始碼。但我們可以對二進位程序解碼,將用於編碼CPU 指令的數字轉換為人類可讀的指令序列。這個過程稱為反彙編。接下來,可以查看這些CPU 指令,並嘗試分析它們的用途,這就是所謂的逆向工程。某些反彙編程序對這一過程大有裨益,它們能自動檢測並注釋系統調用與常用函數。藉由反彙編工具,黑客對二進位代碼的各個環節了如指掌。我相信,許多頂尖的IT 公司都設有秘密的逆向工程實驗室,以便研究競爭對手的軟體。地下黑客經常分析Windows、Photoshop、《俠盜獵車手》等授權程序中的二進位代碼,以確定哪部分代碼負責驗證軟體許可證。黑客將二進位代碼修改,在其中加入一條指令,直接跳轉到驗證許可證後執行的代碼部分。運行修改後的二進位代碼時,它在檢查許可證前獲取注入的JUMP 命令,從而可以在沒有付費的情況下運行非法的盜版副本。在秘密的政府情報機構中,同樣設有供安全研究人員與工程師研究iOS、Windows、IE 瀏覽器等流行消費者軟體的實驗室。他們尋找這些程序中可能存在的安全漏洞,以防禦網絡攻擊或對高價值目標的入侵。在這類攻擊中,最知名的當屬「震網」病毒,它是美國與以色列情報機構研製的一種網絡武器。通過感染控制地下聚變反應堆的計算機,「震網」延緩了伊朗核計劃。如前所述,我們可以根據二進位可執行文件分析有關程序的原始指令,但無法恢復用於生成二進位文件的原始原始碼。在沒有原始原始碼的情況下,即使可以稍許修改二進位文件以便以較小的方式破解,實際上也無法對程序進行任何重大更改(如添加新功能)。一些人推崇協作構建代碼的方式,因此將自己的原始碼開放供他人修改。「開源」的主要概念就在於此:所有人都能自由使用與修改的軟體。基於Linux 的作業系統(如Ubuntu、Fedora 與Debian)是開源的,而Windows 與macOS 是閉源的。開源作業系統的一個有趣之處在於,任何人都可以檢查原始碼以尋找安全漏洞。現已證實,政府機構通過日常消費者軟體中未修補的安全漏洞,對數百萬平民進行利用和監視。但對開源軟體而言,代碼受到的關注度更高,因此惡意的第三方與政府機構很難植入監控後門程序。使用macOS 或Windows 時,用戶必須相信Apple 或Microsoft 對自己的安全不會構成危害,並盡最大努力防止任何嚴重的安全漏洞。而開源系統置於公眾的監督之下,因此安全漏洞被忽視的可能性大為降低。我們知道,計算機的操作可以歸結為使CPU 執行簡單的指令,這些指令只能對存儲在CPU 寄存器中的數據操作。但寄存器的存儲空間通常被限制在1000 字節以內,這意味著CPU 寄存器與RAM 之間必須不斷進行數據傳輸。如果存儲器訪問速度過慢,CPU 將被迫處於空閒狀態,以等待RAM 完成數據傳輸。CPU 讀寫存儲器中數據所需的時間與計算機性能直接相關。提高存儲器速度有助於加快計算機運行,也可以提高CPU 訪問數據的速度。CPU 能以近乎實時的速度(一個周期以內)訪問存儲在寄存器中的數據,但訪問RAM 則慢得多。對於時鐘頻率為1 GHz 的CPU,一個周期的持續時間約為十億分之一秒,這是光線從本書進入讀者眼中所需的時間。近年來的技術發展使得CPU 速度成倍增長。雖然存儲器速度同樣有所提高,但卻慢得多。CPU 與RAM 之間的這種性能差距稱為「處理器與存儲器之間的鴻溝」。我們可以執行大量CPU 指令,因此它們很「廉價」;而從RAM 獲取數據所需的時間較長,因此它們很「昂貴」。隨著兩者之間的差距逐漸增大,提高存儲器訪問效率的重要性越發明顯。現代計算機需要大約1000 個CPU 周期(1 微秒左右) 從RAM 獲取數據。這種速度已很驚人,但與訪問CPU 寄存器的時間相比仍然較慢。減少計算所需的RAM 操作次數,是計算機科學家追求的目標。
在兩個面對面的人之間,聲波傳播需要大約10 微秒。在嘗試儘量減少對RAM 的訪問時,計算機科學家開始注意到兩個事實。◎ 時間局部性:訪問某個存儲地址時,可能很快會再次訪問該地址。◎ 空間局部性:訪問某個存儲地址時,可能很快會訪問與之相鄰的地址。因此,將這些存儲地址保存在CPU 寄存器中,有助於避免大部分對RAM的「昂貴」操作。不過在設計CPU 晶片時,工業工程師並未找到可行的方法來容納足夠多的內部寄存器,但他們仍然發現了如何有效地利用時間局部性與空間局部性。接下來將對此進行討論。可以構建一種集成在CPU 內部且速度極快的輔助存儲器,這就是一級緩存。將數據從一級緩存讀入寄存器,僅比直接從寄存器獲取數據稍慢。利用一級緩存,我們將可能訪問的存儲地址中的內容複製到CPU 寄存器附近,藉此以極快的速度將數據載入CPU 寄存器。將數據從一級緩存讀入寄存器僅需大約10 個CPU 周期,速度是從RAM 獲取數據的近百倍。藉由10 KB 左右的一級緩存,併合理利用時間局部性與空間局部性,超過一半的RAM 訪問調用僅通過緩存就能實現。這一創新使計算技術發生了翻天覆地的變化。一級緩存可以極大縮短CPU 的等待時間,使CPU 將更多時間用於實際計算而非處於空閒狀態。提高一級緩存的容量有助於減少從RAM 獲取數據的操作,進而縮短CPU 的等待時間。但是,增大一級緩存的同時也會降低它的速度。在一級緩存達到50 KB 左右時,繼續增加其容量就要付出極高的成本。更好的方案是構建一種稱為二級緩存的緩存。二級緩存的速度稍慢,但容量比一級緩存大得多。現代CPU 配備的二級緩存約為200 KB,將數據從二級緩存讀入CPU 寄存器需要大約100 個CPU 周期。我們將最有可能訪問的地址複製到一級緩存,較有可能訪問的地址複製到二級緩存。如果CPU 沒有在一級緩存中找到某個存儲地址,仍然可以嘗試在二級緩存中搜索。僅當該地址既不在一級緩存、也不在二級緩存中時,CPU 才需要訪問RAM。目前,不少製造商推出了配備三級緩存的處理器。三級緩存的容量比二級緩存大,雖然速度不及二級緩存,但仍然比RAM 快得多。一級/ 二級/ 三級緩存非常重要,它們佔據了CPU 晶片內部的大部分矽片空間。見圖7-11。使用一級/ 二級/ 三級緩存能顯著提高計算機的性能。在配備200 KB的二級緩存後,CPU 發出的存儲請求中僅有不到10% 必須直接從RAM獲取。
讀者今後購買計算機時,對於所挑選的CPU,請記住比較一級/ 二級/三級緩存的容量。CPU 越好,緩存越大。一般來說,建議選擇一款時鐘頻率稍低但緩存容量較大的CPU。如前所述,計算機配有不同類型的存儲器,它們按層次結構排列。性能最好的存儲器容量有限且成本極高。沿層次結構向下,可用的存儲空間越來越多,但訪問速度越來越慢。在存儲器層次結構中,位於CPU 寄存器與緩存之下的是RAM,它負責存儲當前運行的所有進程的數據與代碼。截至2017 年,計算機配備的RAM 容量通常為1 GB 到10 GB。但在許多情況下,RAM 可能無法滿足作業系統以及所有運行程序的需要。
因此,我們必須深入探究存儲器層次結構,使用位於RAM 之下的硬碟。截至2017 年,計算機配備的硬碟容量通常為數百吉字節,足以容納當前運行的所有程序數據。如果RAM 已滿,當前的空閒數據將被移至硬碟以釋放部分內存空間。問題在於,硬碟的速度非常慢,它一般需要100 萬個CPU 周期(1 毫秒)a 在磁碟與RAM 之間傳輸數據。從磁碟訪問數據看似很快,但不要忘記,訪問RAM 僅需1000 個周期,而訪問磁碟需要100 萬個周期。RAM 通常稱為第一級存儲器,而存儲程序與數據的磁碟稱為第二級存儲器。CPU 無法直接訪問第二級存儲器。執行保存在第二級存儲器中的程序之前,必須將其複製到第一級存儲器。實際上,每次啟動計算機時,即便是作業系統也要從磁碟複製到RAM,否則CPU 無法運行。確保RAM 永不枯竭 在典型活動期間,確保計算機處理的所有數據與程序都能載入RAM 至關重要,否則計算機將不斷在磁碟與RAM 之間交換數據。由於這項操作的速度極慢,計算機性能將嚴重下降,甚至無法使用。這種情況下,計算機不得不花費更多時間等待數據傳輸,而無法進行實際的計算。當計算機不斷將數據從磁碟讀入RAM 時,則稱計算機處於抖動模式。必須對伺服器進行持續監控,如果伺服器開始處理無法載入RAM 的數據,那麼抖動可能會導致整個伺服器崩潰。銀行或收銀機前將因此排起長隊,而服務員除了責怪發生抖動的計算機系統之外別無他法。內存不足或許是導致伺服器故障的主要原因之一。我們繼續沿存儲器層次結構向下分析。在連接到網絡之後,計算機就能訪問由其他計算機管理的存儲器。它們要麼位於本地網絡,要麼位於網際網路(即雲端)。但訪問這些數據所需的時間更長:讀取本地磁碟需要1 毫秒,而獲取網絡中的數據可能耗時數百毫秒。網絡包從一臺計算機傳輸到另一臺計算機大約需要10 毫秒,如果經由網際網路傳輸則需要200 毫秒到300 毫秒,與眨眼的時間相仿。位於存儲器層次結構底部的是第三級存儲器,這種存儲設備並非總是在線與可用的。在盒式磁帶或CD 中存儲數百萬吉字節的數據成本較低,但訪問這類介質中的數據時,需要將介質插入某種讀取設備,這可能需要數分鐘甚至數天之久(不妨嘗試讓IT 部門在周五晚上備份磁帶中的數據……)。有鑑於此,第三級存儲器僅適合歸檔很少訪問的數據。一方面,很難顯著改進「快速」存儲器(位於存儲器層次結構頂端)所用的技術;另一方面,「慢速」存儲器的速度越來越快,價格也越來越低。幾十年來,硬碟存儲的成本一直在下降,這種趨勢似乎還將持續下去。新技術也使磁碟的速度得以提高。人們正從旋轉磁碟轉向固態硬碟(SSD),它沒有動件,因而更快、更可靠且更省電。採用SSD 技術的磁碟正變得越來越便宜且越來越快,但其價格仍然不菲。有鑑於此,一些製造商推出了同時採用SSD 與磁技術的混合磁碟。後者將訪問頻率較高的數據存儲在SSD 中,訪問頻率較低的數據存儲在速度較慢的磁碟中。當需要頻繁訪問原先不經常訪問的數據時,則將其複製到混合驅動器中速度較快的SSD。這與CPU 利用內部緩存提高RAM 訪問速度的技巧頗為類似。本文介紹了一些基本的計算機工作原理。任何可計算的事物都能採用簡單的指令來表示。為將複雜的計算命令轉換為CPU 可以執行的簡單指令,需要使用一種稱為編譯器的程序。計算機之所以能進行複雜計算,僅僅是因為CPU 可以執行大量基本操作。計算機的處理器速度很快,但存儲器相對較慢。CPU 並非以隨機方式訪問存儲器,而是遵循空間局部性與時間局部性原理。因此,可以將訪問頻率較高的數據緩存在速度更快的存儲器中。這一原則在多個級別的緩存中得到了應用:從一級緩存直到第三級存儲器,不一而足。本文討論的緩存原則可以應用於多種場景。確定應用程式頻繁使用的數據,並設法提高這部分數據的訪問速度,是縮短電腦程式運行時間的最常用策略之一。




【1】英特爾發布全球最大容量FPGA,問題來了:FPGA和ASIC孰優孰劣?

【2】挑戰收入規模30億元,這家連接器企業的底氣在哪兒?

【3】為什麼ST也要做MPU?入場雖晚但卻仍被看好?

【4】射頻廠商老大Qorvo進軍新業務,推出可編程電源SoC

【5】半導體行業的人都在關注這幾個公眾號

你和大牛工程師之間到底差了啥?

加入技術交流群,與高手面對面 

添加管理員微信


相關焦點

  • 關於Bootstrap的通俗講解
    RA F ish e r 在1920 年提出了似然 (likelood) 的概念, 一直被認為 是 高 效 的 統 計 推 斷 思 維 方 法, P ea r s o n ,Fish e r , N ey m an , W a l d 等人在這方面的卓越成就, 使統計推斷進入了新的紀元。
  • 量子計算機原理與退火算法的通俗解釋
    本文的目的是盡力用基礎易懂的語言來解釋自己所理解的量子物理的基礎理論並著重介紹量子計算機的實現原理、量子計算機所使用的量子退火算法以及量子計算機的應用。通俗的說:量子是能表現物質或物理量特性的最小單元。[3]量子與分子、原子等概念的區別在於原子可以理解為構成物質的最小單位,而量子則是一個物理量的最小單位,例如光子(光的量子)是指一定頻率的光的基本能力單位。那麼光就是可量子化的。1.2.3  量子態量子態又稱為機率幅或波函數。海森堡提出不確定性原理,即我們無法同時知道一個粒子的位置和動量。
  • 終於,科學家們找到了只有量子計算機才能解決的問題
    早在量子計算研究剛剛興起時,科學家們就知道這種未來主義的機器蘊含著某種無限的潛能。而自 BQP 概念問世以來,計算機科學家們就一直在尋找夠格的 BQP 問題,他們將可能的 BQP 問題與那些傳統計算能解決的問題(也稱 PH 問題)進行對比,以此來判定某一特定問題是否屬於 BQP 問題。而在於 5 月發表的這篇論文中,Raz 和 Tal 已經成功的找到了第一個合格的 BQP 問題。
  • 量子計算機基本原理
    第1章 量子計算機的基本原理現在的電子計算機基本原理叫馮諾伊曼體系結構,是把計算機分為兩個主要的單元,第一個是計算單元,第二個是存儲單元。計算單元就是CPU,存儲單元分為三種,一種是CPU裡的高速緩存、內存和硬碟。計算機把靜態的數據存在存儲單元裡,如果需要改變數據,則調入到CPU裡計算,然後將結果再存進存儲單元。
  • 循環水冷凍機工作原理講解
    循環水冷凍機工作原理講解   無錫冠亞恆溫製冷技術有限公司致力於致力於製冷加熱控溫系統、超低溫冷凍機、新能源汽車部件測試系統、VOCs冷凝回收裝置、加熱循環系統、防爆電氣設備、試驗設備等生產和銷售,循環水冷凍機,運行穩定可靠,自動化程度高,如有需要,歡迎選購!
  • 終於悟到了!計算機原理!
    作為計算機相關專業學生,當我進入大學計算機課堂之後,卻發現所學的東西並非我憧憬的那樣豐富多彩,當計算機原理教材發到手中,曾經作為學霸的我照例提前預習,結果是,非常枯燥乏味。
  • 量子計算機工作原理的簡單解釋
    ,簡要的量子算法,幾種具體的物理實現方法(如光量子,核磁共振),以及D-wave的構造及工作方式。有些童鞋認為量子計算機不一定比經典計算機快,只適用於特殊情況,需要特殊的算法。這當然沒有錯,但是這個是很片面的。量子計算的優勢主要來自於硬體與經典計算機的完全不同。量子計算的能力主要來自於量子的相干性(疊加態)。這是經典計算機永遠不可能達到的。所以量子計算機的計算速度是一定要大於經典計算機的。 當然就跟經典計算機一樣,需要優秀的算法,才能使計算能力儘量使用。
  • 螺杆低溫冷凍機工作原理講解
    螺杆低溫冷凍機工作原理講解 ,「k1udj」   無錫冠亞恆溫製冷技術有限公司致力於致力於製冷加熱控溫系統、超低溫冷凍機、新能源汽車部件測試系統、VOCs冷凝回收裝置、加熱循環系統、防爆電氣設備、試驗設備等生產和銷售,螺杆低溫冷凍機,運行穩定可靠,自動化程度高,如有需要,歡迎選購!
  • 商用量子計算機是什麼 有多快具體工作原理是什麼
    近日,IBM公司發布全球首款商用量子計算機引發關注。那麼,什麼是量子計算機?相比傳統計算機有多快?原理又是什麼呢?一起來看看。日前,IBM公司在CES大會上發布了全球首款商用量子計算機IBM Q。
  • 一體化冷凍機組工作原理講解
    一體化冷凍機組工作原理講解   無錫冠亞恆溫製冷技術有限公司致力於致力於製冷加熱控溫系統、超低溫冷凍機、新能源汽車部件測試系統、VOCs冷凝回收裝置、加熱循環系統、防爆電氣設備、試驗設備等生產和銷售,一體化冷凍機組,運行穩定可靠,自動化程度高,如有需要,歡迎選購!
  • 耳目一新的三極體工作原理講解
    割裂二極體與三極體在原理上的自然聯繫,不能實現內容上的自然過渡。甚至使人產生矛盾觀念,二極體原理強調PN結單向導電反向截止,而三極體原理則又要求PN結能夠反嚮導通。同時,也不能體現晶體三極體與電子三極體之間在電流放大原理上的歷史聯繫。
  • 量子計算機的工作原理
    量子計算機是目前網上當紅的概念,它是一種超級計算機,不但能依靠量子計算和存儲數據,還能非常充分地利用量子的不確定性原理,它比傳統的計算機表現得好得多。你現在正在用的矽基微型計算機(電腦或者手機)依賴於將數據編碼成0或1的晶片。
  • 簡明易懂 圖解電源工作原理
    電源的定義和分類  同學們,今天我們來學習一堂關於電源工作原理因為是針對新手的知識普及課,所以在下會用樸實的語言儘量的把這堂課講得通俗、簡單、易懂一些。如果有專業大師級別的看客路過的話,還望多多交流。  我們先來講講什麼是電源?顧名思義,就是提供電能的裝置。而我們所說的直流電源,主要是指線性電源和開關電源兩種類型的電源。
  • 交流電機工作原理講解
    這是本部視頻最大亮點。 亮點二:本部視頻通過硬體波形的整形、儲存,以及根據 時序 來分配並動作,根據時序進行多路信號的切換,以及不同波形在不同時刻發生不同的動作。鍛鍊學員綜合協調處理波形根據時間來鎖存信號與釋放信號的能力。如果以前是二元化,現在就是三元化。
  • 為您講解擺線減速機工作原理
    擺線減速機在各行各業中都有使用它的身影,但是它的工作原理是怎樣的呢?今天就來為大家講解一下擺線減速機工作原理。    擺線減速機工作原理講解,因為他們生產的大型設備需要使用減速器,如果沒有減速器,大型機械設備會以超高速運行,並且會陷入瘋狂狀態,讓人難以控制。
  • 「數字世界」基本的工作原理
    「數字世界」基本的工作原理。 本篇文章是該系列評述性文章的第三篇。但別忘了ENIAC是基於「圖靈機」這一理論模型,而圖靈機是一種有限狀態自動機,只要定義好一個待求解問題的初始狀態,求解問題的工作步驟以及狀態改變規則,這種有限狀態自動機就會自動地推演出問題的最終狀態,也就是問題的解,進而完成問題求解工作。或許使用過最原始的計算機機器語言編程的人能更深刻地體會到圖靈機的精髓。
  • 揭秘「量子計算機」工作原理
    D-Wave量子計算機  量子計算機是一種遵循量子力學規律,進行高速運算、存儲及處理量子信息的物理裝置,其運行的是量子算法,處理速度驚人,比傳統計算機快數十億倍。阿里已經和中科院共同成立了一個量子計算機研究室,其中中國科學院在量子信息技術方面處於國際先進水平。該實驗室計劃,到2025年,量子模擬將達到當今世界最快的超級計算機的水平。
  • 礦用乳化液泵各部件名稱講解工作原理解析
    礦用乳化液泵各部件名稱講解工作原理解析 ,「10tog」   無錫一煤煤礦機械有限公司專業生產礦用乳化液泵各部件名稱講解,型號齊全,低損耗,使用壽命長,耐腐蝕,歡迎來電諮詢!
  • 看完這篇 終於可以和別人聊量子計算機了!
    什麼是量子計算機?量子計算機為什麼厲害?量子霸權又是什麼?你都能在這裡找到看得懂的答案。量子計算機是計算機嗎?是,但和我們現在所理解的「電腦」差別很大—— 兩者的計算形式不一樣,電腦通過電路的開和關進行計算,而量子計算機則是以量子的狀態作為計算形式。
  • 看完這篇,終於可以和別人聊量子計算機了!
    什麼是量子計算機?量子計算機為什麼厲害?量子霸權又是什麼?你都能在這裡找到看得懂的答案。是,但和我們現在所理解的「電腦」差別很大——兩者的計算形式不一樣,電腦通過電路的開和關進行計算,而量子計算機則是以量子的狀態作為計算形式。