計算機系統結構——概述

????????計算機的實現包括兩個方面:組成和硬件。組成一詞包含了計算機設計的高階內容,例如存儲器系統,存儲器互連,設計內部處理器 CPU (中央處理器——算術、邏輯、分支和數據傳送功能都在內部實現)。有時也用微體系結構一詞來代替“組成”。例如AMD Operon和Intel Core I7是兩個指令集體系結構相同但組成不同的處理器。這兩種處理器都實現X86指令集,但它們的流水線和緩存組成有很大的不同。硬件指的是一個計算機的具體實現,包括計算機的詳盡邏輯設計和封裝技術。

  • 計算機體系結構是指計算機的概念性結構和功能屬性。
  • 計算機組織是指計算機體系結構的邏輯實現,包括機器內的數據流和控制流的組成以及邏輯設計等(常稱為計算機組成原理)。
  • 計算機實現是指計算機組織的物理實現。

一、定義

????????真正的體系結構涵蓋了計算機設計的所有三個方面:指令集體系結構、組成或微體系結構、硬件。計算機架構師設計的計算機必須滿足功能需求,并達到價格、功耗、性能和可用性指標。在涉及到計算機系統結構的知識時,主要按以下金字塔進行學習:

Acceleration,Amdahl

  • ? ? ? ? 整個計算機系統結構的總設計目標是為了“快”
  • ? ? ? ? 總的設計原理是:加快經常性事件
  • ? ? ? ??如何量化加速這一指標:Amdahl 原理
  • ? ? ? ??如何衡量CPU性能:CPU性能公式
  • ? ? ? ? 程序的局部性原理

Instruction,Interface

? ? ? ? 指令集架構(Instruction Set Architecture, ISA),對于匯編語言程序員或編譯器編寫者可見。ISA包括:1)編程寄存器 2)操作數訪問 3)操作數的類型和大小 4)指令集 5)尋址模式 6)指令編碼

????????ISA 是硬件與軟件之間的連接點。任何在內存里執行的程序都將通過 ISA 進行解耦從而能在底層架構上執行。整個計算機體系機構和抽象層如下:

Processing,Parallel

? ? ? ? 按指令流與數據流進行分類則可以把結構分為:

  1. SISD:單指令流、單數據流;
  2. SIMD:單指令流、多數據流;
  3. MISD:多指令流、單數據流;
  4. MIMD:多指令流、多數據流;

Storage,System

? ? ? ? 程序局部性原理的存在,以及“在給定實現技術和功率預算的情況下,硬件越小,速度可以越快”的準則,存儲器體系結構便運營而生。

時間局部性(temporal locality):被引用過一次的存儲器位置在未來會被多次引用(通常在循環中)。
空間局部性(spatial locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。

????????

????????有人可能會問,為什么需要多層次的存儲結構,使用一個理論上無限大的存儲器去完成一些工作不就可以了么?這樣表面上是可以的,但是我們沒有辦法立刻馬上從這樣一個十分龐大的存儲器中得到我們想要的機器字。我們不得不去構建分層的結構存儲器,每一層的容量都要大于前一層,但訪問速度也要慢一些。當前的一大趨勢:存儲器性能和處理器性能之間的差距越來越大。

Network,conNection

? ? ? ? 通過互聯函數來描述設備間的互相連接,既包括計算機內部的連接,也包括計算機之間的連接。主要通過帶寬和延遲兩個指標進行衡量。? ? ? ??

二、基本結構

????????馮·諾依曼在研究EDVAC機時提出了“存儲程序”的概念,“存儲程序”的思想奠定了現代計算機的基本結構,以此概念為基礎的各類計算機通稱為馮·諾依曼機,其特點如下:

  1. 計算機硬件系統由運算器、存儲器、控制器、輸入設備和輸出設備5大部件組成。
  2. 指令和數據以同等地位存儲在存儲器中,并可按地址尋訪。
  3. 指令和數據均用二進制代碼表示。
  4. 指令由操作碼和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作數在存
  5. 儲器中的位置。
  6. 指令在存儲器內按順序存放。通常,指令是順序執行的,在特定條件下可根據運算結果或根據設定的條件改變執行順序。
  7. 早期的馮·諾依曼機以運算器為中心,輸入/輸出設備通過運算器與存儲器傳送數據。

????????典型的馮·諾依曼計算機結構如圖所示。

????????面隨著微電子技術的進步,同時計算機需要處理、加工的信息量也與日俱增,大量I/O設備的速度和CPU的速度籌距懸殊,因此以運算器為中心的結構不能夠滿足計算機發展的要求。現代計算機已發展為以存儲器為中心,使I/O操作盡可能地繞過CPU,直接在I/O設備和存儲器之間完成,以提高系統的整體運行效率,其結構如圖所示。

三、性能指標

1、Amdahl定律

? ? ? ? 對一個計算機架構進行優化后,我們如何衡量其性能的提升呢?首先定義加速比:對于同一個程序的執行,其加速比為:

S_{n}=\frac{T_{old}}{T_{new}}

? ? ? ? 而Amdahl定律為:

S_{n}=\frac{1}{(1-F_{e})+\frac{F_{e}}{S_{e}}}

? ? ? ? 其中,S_{n}代表系統加速比,S_{e}表示改進部分的加速比,F_{e}表示被改進部分原來的執行時間占原來總執行時間的百分比。

? ? ? ? 當F_{e}趨近于0時,S_{n}趨近于1。說明如果僅對計算機的一部分做出改變,那么對整體性能的提升非常有限。

? ? ? ? ?為了使系統獲得較高的加速比,優化的部分必須占有較大的比例。

?2、CPU性能公式

? ? ? ? 執行一個程序所需要的CPU時間為:執行程序所需要的時鐘周期*時鐘周期時間。

? ? ? ? 我們定義CPI(Cycles Per Instruction)為平均每條指令耗費的時鐘周期數。則CPU時間可表示為:

T_{cpu}=IC*CPI*T

? ? ? ? 其中,IC為執行的指令條數,T為時鐘周期時間。

? ? ? ? 基于此公式,提升處理器性能的三個思路為:1)減少IC,即較少執行指令的條數,如RISC;2)減少CPI,如CISC;3)較少時鐘周期時間,如提升主頻。

3、性能指標

4、可靠性

????????

? ? ? ? ?我們用MTTF這一指標來衡量可靠性。

? ? ? ? 可用性定義為:

Availability=\frac{MTTF}{MTTF+MTTR}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253510.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253510.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253510.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BestCoder Round #91 1001 Lotus and Characters

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid6011 題意: Lotus有nn種字母,給出每種字母的價值以及每種字母的個數限制,她想構造一個任意長度的串。 定義串的價值為:第1位字母的價值*1第2位字母的價值*2第3位字…

Calendar的那些神坑

參考我的博客:http://www.isedwardtang.com/2017/08/31/java-calendar-bug/轉載于:https://www.cnblogs.com/EdwardTang/p/7476781.html

mkyaffs2image的用法

在Ubuntu中第一次使用mkyaffs2image命令時,會提示 mkyaffs2image:找不到命令 還需要安裝mkyaffs2image http://code.google.com/p/fatplus/downloads/detail?nameyaffs2-source.tar&can2&q 下載yaffs2-source.tar 解壓后,進入util…

全景圖像拼接——基本流程

圖像拼接技術是數字圖像處理技術一個重要的研究方向,它即是將兩幅或多幅相互有部分重疊的場景照片拼接成具有超寬視角、與原始圖像接近且失真小、沒有明顯縫合線的高分辨率圖像。可以很好地解決廣角鏡、魚眼鏡頭等全景圖獲取設備的不足。如下圖: 圖像拼接產生的圖像不…

SmartRaiden 和 Lighting Network 進行去中心化跨鏈原子資產交換

SmartRaiden 和 Lighting Network 進行去中心化跨鏈原子資產交換 前言 如果能夠進行以太坊和比特幣跨鏈原子資產交換,是不是一件很酷的事情? 目前鏈下的擴容方式有很多,最廣為人知的就是比特幣的閃電網絡和以太坊的雷電網絡,今天我…

WPF 帶CheckBox、圖標的TreeView

WPF 帶CheckBox、圖標的TreeView 在WPF實際項目開發的時候,經常會用到帶CheckBox的TreeView,雖然微軟在WPF的TreeView中沒有提供該功能,但是微軟在WPF中提供強大的ItemTemplate模板功能和自定義樣式,那我們可以自己寫一個這樣的控…

win32框架,GDI圖形編程寫一個HelloWorld游戲_c語言

1.如圖,實現功能: Hello World!字符串跟隨鼠標移動鼠標左擊Hello World!顏色為紅色鼠標右擊Hello World!顏色為藍色鼠標滾輪滾動改變Hello World!顏色的RGB中的G值 2.實現工具: vs20133.實現步驟: 新建一個win32項目 如圖,看到HelloWorldGame.cpp中 _tWinMain()的函…

全景圖像拼接——圖像融合

圖像融合技術就是將配準過后的圖像融合成一幅寬視角、大場景的圖像。但由于圖像采集過程中各種因素的影響,例如光照、角度、距離等,從而導致圖像間的光照不均勻、顏色上不連續。 經過配準以后,參考圖像和輸入圖像已經在同一個坐標系下,如果只是取某一幅圖像的信息或者簡單地…

極詳細的ECC講解 -OOB與ECC

http://blog.csdn.net/dongzhichen/article/details/8249228 詳細的ECC講解 -OOB與ECC 在網絡編程中 OOB(out of band)帶外數據 在MTD設備中 OOB 如下所示: http://www.cnblogs.com/bcxx_qin/archive/2009/06/11/1501271.html 極詳細的ECC…

前端進階(8) - 前端開發需要了解的工具集合:webpack, eslint, prettier, ...

前端開發需要了解的工具集合:webpack, eslint, prettier, ... 前端開發需要了解的一些工具,這些工具能夠幫助你在項目開發中事半功倍。 1. nrm: npm registry 管理器 registry: npm 遠程倉庫的地址。 由于眾所周知的原因,npm 官方倉庫在國內特…

CMOS圖像傳感器——TOF 圖像傳感器

一、3D成像技術概述 圖像傳感器一直以來都是人類研究的熱點。但隨著當代科學技術發展, 人類對于傳統的 2D 圖像傳感器的要求越來高,不僅期望著更高分辨率,更快速度,更大的動態范圍,人類加希望能夠獲得物體深信息,但是 2D 成 像技術現在已經不能滿足人類的需求,所以應運…

AndroidStudio創建jinLibs文件夾

在文件中的buildTypes節點下添加 sourceSets.main { jniLibs.srcDir libs } 如圖 轉載于:https://www.cnblogs.com/kim-liu/p/7479360.html

內嵌Tomcat的Connector對象的靜態代碼塊

在排查問題的過程中發現Connector對象有一個靜態代碼塊: static {replacements.put("acceptCount", "backlog");replacements.put("connectionLinger", "soLinger");replacements.put("connectionTimeout", &quo…

????YAFFS2文件系統在嵌入式LINUX系統中的應用

YAFFS2文件系統在嵌入式LINUX系統中的應用 2011-03-31 19:59 181人閱讀 評論(0) 收藏 舉報 1.文件系統簡述 隨著32位CPU價格不斷下跌,片上存儲設備的容量相比越來越大,越來越多的嵌入式系統開始應用各種嵌入式操作系統。一般在嵌入式領域&am…

【Python爬蟲學習筆記1】網絡協議及請求基礎

http協議與https協議 HTTP協議(全稱為HyperText Transfer Protocol,超文本傳輸協議),是發布和接收HTML頁面的方法,其服務端口號為80。 HTTPS協議為HTTP協議的加密版本,其在HTTP下加入了SSL層,服務端口號為443。 URL結構…

快速上手SpyGlass——基本流程

SpyGlass,這是一個很強大的RTL驗證級工具。它不僅僅能檢查sdc的錯誤,還能做以下各種檢查:Low Power, DFT,CDC(Cross Domain Check)。 一、基本概念 1、方法學相關 Rule: 是SpyGlass 進行RTL分析的最小單…

NAND FLASH ECC

NAND需要ECC以確保數據完整性。NAND閃存的每一個頁面上都包括額外的存儲空間,它就是64個字節的空閑區(每512字節的扇區有16字節)。該區能存儲ECC代碼及其它像磨損評級或邏輯到物理塊映射之類的信息。ECC能在硬件或軟件中執行,但是,硬件執行有…

快速上手SpyGlass——CDC檢查

隨著技術的發展,數字電路的集成度越來越高,設計也越來越復雜。很少有系統會只工作在同一個時鐘頻率。一個系統中往往會存在多個時鐘,這些時鐘之間有可能是同步的,也有可能是異步的。如果一個系統中,異步時鐘之間存在信…

laravel session redis 設置

Laravel 在使用 Redis 作為 Session 驅動之前, 需要通過 Composer 安裝 predis/predis 擴展包 (~1.0)。 當然也可以用原生自帶的,具體使用見 https://laravel-china.org/docs/laravel/5.6/redis/1402#phpredis 操作即可。 然后在database 配置文件中配置…

數字后端——低功耗單元庫

在之前的文章中,介紹了低功耗設計物理實施的方案: 數字后端——低功耗設計物理實施_滄海一升的博客-CSDN博客_低功耗設計低功耗設計方案所涉及到的物理實施相關內容https://blog.csdn.net/qq_21842097/article/details/119918312 為了實現例如門…