现代计算机理论模型与工作原理
文章目錄
- 一、現代計算機理論模型與工作方式
- 1.1計算機五大核心組成部分
- 1.1.1CPU內部結構劃分
- 1.1.2多CPU
- 1.1.3CPU多核
- 二.多線程環境下存的問題
- 1.緩存一致性問題
- 2.指令重排序問題
一、現代計算機理論模型與工作方式
現代計算機模型是基于-馮諾依曼計算機模型
計算機在運行時,先從內存中取出第一條指令,通過控制器的譯碼,按指令的要求,從存 儲器中取出數據進行指定的運算和邏輯操作等加工,然后再按地址把結果送到內存中去。接下 來,再取出第二條指令,在控制器的指揮下完成規定操作。依此進行下去。直至遇到停止指 令。
程序與數據一樣存貯,按程序編排的順序,一步一步地取出指令,自動地完成指令規定的 操作是計算機最基本的工作模型。這一原理最初是由美籍匈牙利數學家馮.諾依曼于1945年提 出來的,故稱為馮.諾依曼計算機模型。
1.1計算機五大核心組成部分
現代計算機硬件結構
1.1.1CPU內部結構劃分
控制單元
控制單元是整個CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令 譯碼器ID(Instruction Decoder)和 操作控制器OC(Operation Controller) 等組成, 對協調整個電腦有序工作極為重要。它根據用戶預先編好的程序,依次從存儲器中取出各條指 令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制 器OC,按確定的時序,向相應的部件發出微操作控制信號。操作控制器OC中主要包括:節拍 脈沖發生器、控制矩陣、時鐘脈沖發生器、復位電路和啟停電路等控制邏輯。
運算單元
運算單元是運算器的核心。可以執行算術運算(包括加減乘數等基本運算及其附加運算) 和邏輯運算(包括移位、邏輯測試或兩個值比較)。相對控制單元而言,運算器接受控制單元 的命令而進行動作,即運算單元所進行的全部操作都是由控制單元發出的控制信號來指揮的, 所以它是執行部件
存儲單元
存儲單元包括 CPU 片內緩存Cache和寄存器組,是 CPU 中暫時存放數據的地方,里面 保存著那些等待處理的數據,或已經處理過的數據,CPU 訪問寄存器所用的時間要比訪問內 存的時間短。 寄存器是CPU內部的元件,寄存器擁有非常高的讀寫速度,所以在寄存器之間 的數據傳送非常快。采用寄存器,可以減少 CPU 訪問內存的次數,從而提高了 CPU 的工作 速度。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應 的數據;而通用寄存器用途廣泛并可由程序員規定其用途。
1.1.2多CPU
一個現代計算機通常由兩個或者多個CPU,如果要運行多個程序(進程)的話,假如只有 一個CPU的話,就意味著要經常進行進程上下文切換,因為單CPU即便是多核的,也只是多個 處理器核心,其他設備都是共用的,所以 多個進程就必然要經常進行進程上下文切換,這個代 價是很高的。
1.1.3CPU多核
一個現代CPU除了處理器核心之外還包括寄存器、L1、L2、L3緩存這些存儲設備、浮點運算 單元、整數運算單元等一些輔助運算設備以及內部總線等。一個多核的CPU也就是一個CPU上 有多個處理器核心,這樣有什么好處呢?比如說現在我們要在一臺計算機上跑一個多線程的程 序,因為是一個進程里的線程,所以需要一些共享一些存儲變量,如果這臺計算機都是單核單 線程CPU的話,就意味著這個程序的不同線程需要經常在CPU之間的外部總線上通信,同時還 要處理不同CPU之間不同緩存導致數據不一致的問題,所以在這種場景下多核單CPU的架構就 能發揮很大的優勢,通信都在內部總線,共用同一個緩存。
CPU寄存器
每個CPU都包含一系列的寄存器,它們是CPU內內存的基礎。CPU在寄存器上執行操作的 速度遠大于在主存上執行的速度。這是因為CPU訪問寄存器的速度遠大于主存。
CPU緩存
即高速緩沖存儲器,是位于CPU與主內存間的一種容量較小但速度很高的存儲器。由于 CPU的速度遠高于主內存,CPU直接從內存中存取數據要等待一定時間周期,Cache中保存著
CPU剛用過或循環使用的一部分數據,當CPU再次使用該部分數據時可從Cache中直接調用, 減少CPU的等待時間,提高了系統的效率。
內存
一個計算機還包含一個主存。所有的CPU都可以訪問主存。主存通常比CPU中的緩存大得 多
CPU讀取存儲器數據過程
二.多線程環境下存的問題
1.緩存一致性問題
在多處理器系統中,每個處理器都有自己的高速緩存,而它們又共享同一主內存 (MainMemory)。基于高速緩存的存儲交互很好地解決了處理器與內存的速度矛盾,但是 也引入了新的問題:緩存一致性(CacheCoherence)。當多個處理器的運算任務都涉及同一 塊主內存區域時,將可能導致各自的緩存數據不一致的情況,如果真的發生這種情況,那同步 回到主內存時以誰的緩存數據為準呢?為了解決一致性的問題,需要各個處理器訪問緩存時都 遵循一些協議,在讀寫時要根據協議來進行操作,這類協議有MSI、 MESI(IllinoisProtocol)、MOSI、Synapse、Firefly及DragonProtocol,等等
2.指令重排序問題
為了使得處理器內部的運算單元能盡量被充分利用,處理器可能會對輸入代碼進行亂序執 行(Out-Of-Order Execution)優化,處理器會在計算之后將亂序執行的結果重組,保證該 結果與順序執行的結果是一致的,但并不保證程序中各個語句計算的先后順序與輸入代碼中的 順序一致。因此,如果存在一個計算任務依賴另一個計算任務的中間結果,那么其順序性并不 能靠代碼的先后順序來保證。與處理器的亂序執行優化類似,Java虛擬機的即時編譯器中也有 類似的指令重排序(Instruction Reorder)優化
總結
以上是生活随笔為你收集整理的现代计算机理论模型与工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从eoeandroid换到CSDN-[回
- 下一篇: HTML滚动字幕