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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

文章目錄

  • 一、現代計算機理論模型與工作方式
    • 1.1計算機五大核心組成部分
      • 1.1.1CPU內部結構劃分
      • 1.1.2多CPU
      • 1.1.3CPU多核
  • 二.多線程環境下存的問題
    • 1.緩存一致性問題
    • 2.指令重排序問題


一、現代計算機理論模型與工作方式

現代計算機模型是基于-馮諾依曼計算機模型

計算機在運行時,先從內存中取出第一條指令,通過控制器的譯碼,按指令的要求,從存 儲器中取出數據進行指定的運算和邏輯操作等加工,然后再按地址把結果送到內存中去。接下 來,再取出第二條指令,在控制器的指揮下完成規定操作。依此進行下去。直至遇到停止指 令。

程序與數據一樣存貯,按程序編排的順序,一步一步地取出指令,自動地完成指令規定的 操作是計算機最基本的工作模型。這一原理最初是由美籍匈牙利數學家馮.諾依曼于1945年提 出來的,故稱為馮.諾依曼計算機模型。

1.1計算機五大核心組成部分

  • 控制器(Control): 是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解 釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪 問等。
  • 運算器(Datapath): 運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進 行加工處理
  • 存儲器(Memory): 存儲器的功能是存儲程序、數據和各種信號、命令等信息,并在需 要時提供這些信息。
  • 輸入(Input system): 輸入設備是計算機的重要組成部分,輸入設備與輸出設備合你為 外部設備,簡稱外設,輸入設備的作用是將程序、原始數據、文字、字符、控制命令或現場采 集的數據等信息輸入到計算機。常見的輸入設備有鍵盤、鼠標器、光電輸入機、磁帶機、磁盤 機、光盤機等。
  • 輸出(Output system): 輸出設備與輸入設備同樣是計算機的重要組成部分,它把外算 機的中間結果或最后結果、機內的各種數據符號及文字或各種控制信號等信息輸出出來。微機 常用的輸出設備有顯示終端CRT、打印機、激光印字機、繪圖儀及磁帶、光盤機等
  • 現代計算機硬件結構

    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讀取存儲器數據過程

  • CPU要取寄存器XX的值,只需要一步:直接讀取。
  • CPU要取L1 cache的某個值,需要1-3步(或者更多):把cache行鎖住,把某個數據拿 來,解鎖,如果沒鎖住就慢了。
  • CPU要取L2 cache的某個值,先要到L1 cache里取,L1當中不存在,在L2里,L2開始加 鎖,加鎖以后,把L2里的數據復制到L1,再執行讀L1的過程,上面的3步,再解鎖。
  • CPU取L3 cache的也是一樣,只不過先由L3復制到L2,從L2復制到L1,從L1到CPU。
  • CPU取內存則最復雜:通知內存控制器占用總線帶寬,通知內存加鎖,發起內存讀請求, 等待回應,回應數據保存到L3(如果沒有就到L2),再從L3/2到L1,再從L1到CPU,之后解 除總線鎖定
  • 二.多線程環境下存的問題

    1.緩存一致性問題

    在多處理器系統中,每個處理器都有自己的高速緩存,而它們又共享同一主內存 (MainMemory)。基于高速緩存的存儲交互很好地解決了處理器與內存的速度矛盾,但是 也引入了新的問題:緩存一致性(CacheCoherence)。當多個處理器的運算任務都涉及同一 塊主內存區域時,將可能導致各自的緩存數據不一致的情況,如果真的發生這種情況,那同步 回到主內存時以誰的緩存數據為準呢?為了解決一致性的問題,需要各個處理器訪問緩存時都 遵循一些協議,在讀寫時要根據協議來進行操作,這類協議有MSI、 MESI(IllinoisProtocol)、MOSI、Synapse、Firefly及DragonProtocol,等等


    2.指令重排序問題

    為了使得處理器內部的運算單元能盡量被充分利用,處理器可能會對輸入代碼進行亂序執 行(Out-Of-Order Execution)優化,處理器會在計算之后將亂序執行的結果重組,保證該 結果與順序執行的結果是一致的,但并不保證程序中各個語句計算的先后順序與輸入代碼中的 順序一致。因此,如果存在一個計算任務依賴另一個計算任務的中間結果,那么其順序性并不 能靠代碼的先后順序來保證。與處理器的亂序執行優化類似,Java虛擬機的即時編譯器中也有 類似的指令重排序(Instruction Reorder)優化

    總結

    以上是生活随笔為你收集整理的现代计算机理论模型与工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。