日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

现代计算机理论模型与工作原理

發(fā)布時(shí)間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代计算机理论模型与工作原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、現(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ī)五大核心組成部分

  • 控制器(Control): 是整個(gè)計(jì)算機(jī)的中樞神經(jīng),其功能是對(duì)程序規(guī)定的控制信息進(jìn)行解 釋,根據(jù)其要求進(jìn)行控制,調(diào)度程序、數(shù)據(jù)、地址,協(xié)調(diào)計(jì)算機(jī)各部分工作及內(nèi)存與外設(shè)的訪 問(wèn)等。
  • 運(yùn)算器(Datapath): 運(yùn)算器的功能是對(duì)數(shù)據(jù)進(jìn)行各種算術(shù)運(yùn)算和邏輯運(yùn)算,即對(duì)數(shù)據(jù)進(jìn) 行加工處理
  • 存儲(chǔ)器(Memory): 存儲(chǔ)器的功能是存儲(chǔ)程序、數(shù)據(jù)和各種信號(hào)、命令等信息,并在需 要時(shí)提供這些信息。
  • 輸入(Input system): 輸入設(shè)備是計(jì)算機(jī)的重要組成部分,輸入設(shè)備與輸出設(shè)備合你為 外部設(shè)備,簡(jiǎn)稱外設(shè),輸入設(shè)備的作用是將程序、原始數(shù)據(jù)、文字、字符、控制命令或現(xiàn)場(chǎng)采 集的數(shù)據(jù)等信息輸入到計(jì)算機(jī)。常見(jiàn)的輸入設(shè)備有鍵盤(pán)、鼠標(biāo)器、光電輸入機(jī)、磁帶機(jī)、磁盤(pán) 機(jī)、光盤(pán)機(jī)等。
  • 輸出(Output system): 輸出設(shè)備與輸入設(shè)備同樣是計(jì)算機(jī)的重要組成部分,它把外算 機(jī)的中間結(jié)果或最后結(jié)果、機(jī)內(nèi)的各種數(shù)據(jù)符號(hào)及文字或各種控制信號(hào)等信息輸出出來(lái)。微機(jī) 常用的輸出設(shè)備有顯示終端CRT、打印機(jī)、激光印字機(jī)、繪圖儀及磁帶、光盤(pán)機(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ò)程

  • CPU要取寄存器XX的值,只需要一步:直接讀取。
  • CPU要取L1 cache的某個(gè)值,需要1-3步(或者更多):把cache行鎖住,把某個(gè)數(shù)據(jù)拿 來(lái),解鎖,如果沒(méi)鎖住就慢了。
  • CPU要取L2 cache的某個(gè)值,先要到L1 cache里取,L1當(dāng)中不存在,在L2里,L2開(kāi)始加 鎖,加鎖以后,把L2里的數(shù)據(jù)復(fù)制到L1,再執(zhí)行讀L1的過(guò)程,上面的3步,再解鎖。
  • CPU取L3 cache的也是一樣,只不過(guò)先由L3復(fù)制到L2,從L2復(fù)制到L1,從L1到CPU。
  • CPU取內(nèi)存則最復(fù)雜:通知內(nèi)存控制器占用總線帶寬,通知內(nèi)存加鎖,發(fā)起內(nèi)存讀請(qǐng)求, 等待回應(yīng),回應(yīng)數(shù)據(jù)保存到L3(如果沒(méi)有就到L2),再?gòu)腖3/2到L1,再?gòu)腖1到CPU,之后解 除總線鎖定
  • 二.多線程環(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。