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