【從零開始學習計算機科學】計算機體系結構(一)計算機體系結構、指令、指令集(ISA)與量化評估

【從零開始學習計算機科學】計算機體系結構(一)計算機體系結構、指令、指令集(ISA)與量化評估

    • 概論
    • 計算機體系結構簡介
    • 計算機的分類
    • 并行體系結構
    • 指令集體系結構(ISA)
      • 分類
      • 存儲器尋址
        • 尋址模式
        • 操作數大小
        • 指令
        • ISA的編碼
        • 程序的優化
    • 計算機體系結構
    • 量化評估
    • 存儲器體系結構

概論

計算機體系結構與計算機組成原理之間的聯系非常緊密,其研究范疇基本一致,計算機體系結構與計算機組成原理兩者是相輔相成的。但是,計算機體系結構更加注重從理論和整體上把握計算機設計的思想,即如何設計一種計算機,而計算機組成原理更加注重如何具體實現一臺計算機,其更加偏向于實踐層面。

計算機體系結構簡介

自第一代通用計算機出現至今,計算機的計算能力已得到大大的提升。在1978到1986年之間,計算機的性能每年平均增長25%,在1986年到2003年,計算機的性能平均增長52%,在2003年至2010年,性能平均增長22%。

計算機性能的提升,受到多方面的影響。但是,其本質上的提升在于其物理設備的制造技術的進步以及體系結構的發展。對于第一代到第四代計算機的劃分,就是從其物理基礎上劃分的,即電子管,晶體管,集成電路。基本上,整個計算機體系中的飛躍式的進步,絕大多數都是由計算機的物理基礎和體系結構的發展所造成的。比如,基于硅的集成電路的發展,使得計算機體積越來越小,單位面積的邏輯門電路越來越大。

我們知道,一個計算機程序,可以看作是一組計算機指令組成的集合,程序的執行過程,可以看作是一條條的計算機指令的執行。對于一條指令,其本質上只是一種特殊的二進制串,這種二進制串可以控制物理機器去進行一系列特定的操作。因此,對于計算機體系結構在整個計算機體系中的地位和功能,可以看作是向上提供一組指令集,人們可方便的應用指令集去控制底層物理設備實現相應的功能。計算機體系結構也是處于發展之中的。

舊有的計算機體系結構主要關注于指令集體系結構(ISA)設計,即關于寄存器、內存尋址、尋址模式、指令操作數、可用操作、控制流指令、指令編碼。而如今的計算機體系結構更多關注于目標機器的具體要求,設計可在約束因素下實現性能最大化:成本、功耗和可用性。不僅包括ISA,更包含微體系結構、硬件等等與計算機性能存在聯系的多個方面。

計算機體系結構的發展,并不僅僅是由自身產生的,其也受到上層應用以及下層物理設備的影響,也就是說,計算機體系結構的發展是受到與計算機存在聯系的方方面面所影響的,我們不能只看體系結構的發展,而忽略體系結構為什么這樣發展。盡管技術是不斷進步的,但是只有當技術發展到一定程定的時候才能引起質變,導致新的體系結構出現,而一個體系結構也要有其技術支持,在技術發展到一定程度之前,這種體系結構是無法實現的。

在計算機的發展歷程中,存在著兩個重大的變化,第一,高級編程語言的開發,人們越來越少的去直接使用匯編語言去編寫計算機程序,人們使用高級編譯語言,可以更高效的開發復雜的計算機程序,可以實現更加復雜的算法,比如動態規劃,插值法,以及各種AI算法。對于由高級語言編寫的程序,一般是由編譯器將其編譯成匯編語言組成的匯編程序,然后通過匯編器將匯編語言轉變為0和1組成的二進制機器指令流。第二,是獨立的操作系統的應用。對于操作系統,其可以屏蔽具體的體系結構細節,僅僅向上提供用戶友好的接口,方便各種人群快捷,便利的使用計算機。操作系統的應用降低的體積結構商業化應用的風險。

并且,受到計算機物理設備(比如晶體管)的制約,我們現今可以從物理設備得到的性能提升已到達一個瓶頸,因此,由于上層軟件和下層硬件的多重影響,人們在20世紀80年代開發出了一種新式的體系結構——精簡指令集計算機(RISC)體系結構。對于RISC體系結構,其主要關注于指令級并行(ILP)去實現性能的提升(主要是流水線(pipeline),多發射和緩存的使用)。對于RISC體系結構,可以實現更大的指令級的性能提升。并且,由于微處理器和具體物理設備的發展,越來越多的使用復雜指令集的計算機體系結構逐漸向RISC體系結構發展,比如intel的x86體系結構,其內部的80x86指令可以以很低的消耗轉換成RISC指令。在當下,應用廣泛的一種RISC體系結構便是ARM。

半導體技術的改進(集成電路邏輯、DRAM、閃存、磁盤),晶體管的縮放(特征尺寸、時鐘速度),計算機體系結構的改進,HLL編譯器啟用,UNIX, RISC 架構共同促進了輕量級計算機的發展和用戶友好的編譯/解釋編程語言的使用。

然而,由于受到最大功耗的限制(散熱技術)和指令級并行技術的開發瓶頸的制約,使得ILP的發展緩慢。如今,人們更多的將關注重點轉變為數據級并行(DLP)和線程級并行(TLP),以及對于一些應用場景下的請求級并行(RLP)。
對于ILP,其對開發人員是屏蔽的,是隱式實現的,而對于DLP,ILP以及RLP,是顯式實現的,需要開發人員的關注。

計算機的分類

由于計算機的應用場景不同,我們可以將計算機分為以下幾類,個人移動設備(PMD),桌面計算,服務器,集群倉庫級計算機,嵌入式計算機。

對于不同類型的計算機,其關注的主要性能是存在差異的。對于PMD,其主要關注于響應速度和實時性能,即應用程序的一個程序段必須有一個確定的最大執行時間。對于桌面計算,主要關注于性價比,即性能和成本的比例。對于服務器,主要關注于可用性,吞吐量和可擴展性。對于集群倉庫級計算機(WSC(倉庫級計算機)和超級計算機),主要關注于性價比和功耗,對于超級計算機,還關注于浮點計算能力。對于嵌入式計算機(我們可以按照能否運行第三方軟件劃分嵌入式和非嵌入式計算機),其主要關注于價格。

不同的應用場景對于計算機的要求也是不同的,因此,要結合具體的應用場景選擇最合適的計算機。

并行體系結構

并行是對于提高計算能力的一種有力的手段。并行主要有ILP,DLP,TLP,RLP。以下幾章將詳細介紹。

對于一個計算機,我們可以按照并行關系將其劃分為以下四類,單指令流、單數據流(SISD),此類計算機包含使用ILP的單處理器順序計算機;單指令流、多數據流(SIMD),此類計算機包含應用DLP技術(向量體系結構,多媒體擴展,GPU等等)的多數據流計算機,;多指令流、單數據流(MISD);多指令流、多數據流(MIMD),此類計算機主要包含使用任務級并行的計算機。這種劃分標準僅僅是按照并行關系,因此是一種粗粒度的劃分。

指令集體系結構(ISA)

ISA通常包含以下幾個部分:寄存器,操作訪問,操作數的類型和大小,指令集,尋址模式,指令編碼。一個ISA應該設計為與微處理器的硬件實現分離,與具體的應用程序分離。計算機體系結構的重大進步通常與地標性指令集設計相關。

分類

ISA可以看作是軟件和硬件的界限,其將編程語言抽象于機器,是高級語言最終通過編譯器/解釋器的最終可執行的目標。對于計算機體系結構,ISA其重要的一部分。目前,常用的ISA主要有兩大類,一是通用寄存器體系結構,其指令存在兩個顯式操作數,通用寄存器體系結構主要有兩種,一種是寄存器-儲存器ISA,比如80x86,其指令可以直接訪問存儲器;另一種是載入-存儲ISA,比如MIPS和ARM,其只能通過載入和存儲指令訪問存儲器。二是堆棧體系結構,比如JVM(java虛擬機),堆棧結構采用兩個隱藏操作數。三是AC(累加器)架構,比如EDSAC,IAS。AC架構的指令采用1個顯示操作數,1個隱藏操作數。

存儲器尋址

尋址的過程是通過地址從存儲器中獲取操作數(數據)的過程。大多數的體系結構的存儲器尋址采用字節尋址,但是有些體系結構采用的是對齊的方式,比如ARM和MIPS,而有些則不要求強制對齊。對于一個大小為s的對象,其字節地址為A,若A mod s

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

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

相關文章

Electron使用WebAssembly實現CRC-32 常用標準校驗

Electron使用WebAssembly實現CRC-32 常用標準校驗 將C/C語言代碼,經由WebAssembly編譯為庫函數,可以在JS語言環境進行調用。這里介紹在Electron工具環境使用WebAssembly調用CRC-32 常用標準格式校驗的方式。 CRC-32 常用標準校驗函數WebAssembly源文件…

Docker基礎篇——Ubuntu下Docker安裝

大家好我是木木,在當今快速發展的云計算與云原生時代,容器化技術蓬勃興起,Docker 作為實現容器化的主流工具之一,為開發者和運維人員帶來了極大的便捷 。下面我們一起進行Docker安裝。 Docker的官方Ubuntu安裝文檔,如…

第五課:Express框架與RESTful API設計:技術實踐與探索

在使用Node.js進行企業應用開發,常用的開發框架Express,其中的中間件、路由配置與參數解析、RESTful API核心技術尤為重要,本文將深入探討它們在應用開發中的具體使用方法,最后通過Postman來對開發的接口進行測試。 一、Express中…

mitmproxy配合Wireshark 抓包分析

Mitmproxy 是一款非常強大的 交互式 HTTP 代理 工具,它被廣泛應用于 Web 開發、API 調試、安全測試 等領域。與 Wireshark 側重于被動監聽網絡流量不同,Mitmproxy 更像一個 主動的中間人,可以攔截、檢查、修改和重放 HTTP/HTTPS 流量&#xf…

Varlens(手機上的單反)Ver.1.9.3 高級版.apk

Varlens 是一款專業級手機攝影軟件,旨在通過豐富的功能和高自由度參數調節,讓手機拍攝效果媲美微單相機。以下是核心功能總結: 一、核心功能 專業拍攝模式 支持手動/自動/程序模式,可調節ISO、快門速度、EV、白平衡等參數27 提供…

Scala 中的訪問修飾符

在Scala中,面向對象的權限控制主要通過訪問修飾符來實現。Scala提供了以下幾種訪問修飾符來控制類、對象、成員變量和方法的訪問權限: 1. 默認訪問權限(無修飾符) 如果沒有指定任何訪問修飾符,成員默認是public的&…

第十五屆藍橋杯省賽電子類單片機學習過程記錄(客觀題)

客觀試題: 01.典型的BUCK電源電路包含哪些關鍵器件(ABCD) A. 電容 B. 二極管 C. 電感 D. MOSFET 解析: 典型的 BUCK 電源電路是一種降壓型的直流-直流轉換電路,它包含以下關鍵器件: A.電容:電容在電路中起到濾波的作用。輸入電容用于平滑輸入電壓的波動,減少電源噪聲對…

Dify使用日常:我是如何按標題級別將word中的內容轉存到excel中的

先上效果圖 word中的內容 轉存到excel之后 實現步驟: 1、在dify中創建一個工作流,如上圖 2、在開始節點增加一個支持文件上傳的變量 3、添加文檔提取器,提取上傳的文件中的內容 4、添加大模型節點,將文檔提取器提取出來的內容&…

Vue 框架深度解析:源碼分析與實現原理詳解

文章目錄 一、Vue 核心架構設計1.1 整體架構流程圖1.2 模塊職責劃分 二、響應式系統源碼解析2.1 核心類關系圖2.2 核心源碼分析2.2.1 數據劫持實現2.2.2 依賴收集過程 三、虛擬DOM與Diff算法實現3.1 Diff算法流程圖3.2 核心Diff源碼 四、模板編譯全流程剖析4.1 編譯流程圖4.2 編…

IDEA與Maven使用-學習記錄(持續補充...)

1. 下載與安裝 以ideaIU-2021.3.1為例,安裝步驟: 以管理員身份啟動ideaIU-2021.3.1修改安裝路徑為:D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1勾選【創建桌面快捷方式】(可選)、【打開文件夾作為項目】&…

認識vue2腳手架

1.認識腳手架結構 使用VSCode將vue項目打開: package.json:包的說明書(包的名字,包的版本,依賴哪些庫)。該文件里有webpack的短命令: serve(啟動內置服務器) build命令…

SQL經典查詢

查詢不在表里的數據,一張學生表,一張學生的選課表,要求查出沒有選課的學生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…

《機器學習數學基礎》補充資料:過渡矩陣和坐標變換推導

盡管《機器學習數學基礎》這本書,耗費了比較長的時間和精力,怎奈學識有限,錯誤難免。因此,除了在專門的網頁( 勘誤和修訂 )中發布勘誤和修訂內容之外,對于重大錯誤,我還會以專題的形…

解鎖DeepSpeek-R1大模型微調:從訓練到部署,打造定制化AI會話系統

目錄 1. 前言 2.大模型微調概念簡述 2.1. 按學習范式分類 2.2. 按參數更新范圍分類 2.3. 大模型微調框架簡介 3. DeepSpeek R1大模型微調實戰 3.1.LLaMA-Factory基礎環境安裝 3.1大模型下載 3.2. 大模型訓練 3.3. 大模型部署 3.4. 微調大模型融合基于SpirngBootVue2…

第七課:Python反爬攻防戰:Headers/IP代理與驗證碼

在爬蟲開發過程中,反爬蟲機制成為了我們必須面對的挑戰。本文將深入探討Python爬蟲中常見的反爬機制,并詳細解析如何通過隨機User-Agent生成、代理IP池搭建以及驗證碼識別來應對這些反爬策略。文章將包含完整的示例代碼,幫助讀者更好地理解和…

Vue3——Fragment

文章目錄 一、Fragment的核心意義1. 解決Vue2的單根限制問題2. 減少不必要的 DOM 嵌套3. 語義化和結構化 二、Fragment 的實現原理三、Fragment 使用方式1. 基本用法2. 結合條件渲染3. 動態組件 四、實際應用場景1. 列表/表格組件2. 布局組件3. 語義化標簽 五、注意事項1. 屬性…

字節跳動C++客戶端開發實習生內推-抖音基礎技術

智能手機愛好者和使用者,追求良好的用戶體驗; 具有良好的編程習慣,代碼結構清晰,命名規范; 熟練掌握數據結構與算法、計算機網絡、操作系統、編譯原理等課程; 熟練掌握C/C/OC/Swift一種或多種語言&#xff…

【Linux學習筆記】Linux基本指令分析和權限的概念

【Linux學習筆記】Linux基本指令分析和權限的概念 🔥個人主頁:大白的編程日記 🔥專欄:Linux學習筆記 文章目錄 【Linux學習筆記】Linux基本指令分析和權限的概念前言一. 指令的分析1.1 alias 指令1.2 grep 指令1.3 zip/unzip 指…

數據庫索引的作用:提升數據檢索效率的關鍵

在數據庫管理系統中,數據如同浩瀚海洋中的寶藏,如何快速準確地找到所需信息,成為了一個關鍵問題。這時候,數據庫索引就如同一張精確的航海圖,指引著我們高效地定位數據。那么,數據庫索引究竟是什么&#xf…

Lab18_ SQL injection with filter bypass via XML encoding

文章目錄 前言:進入實驗室構造 payload 前言: 實驗室標題為: 通關 XML 編碼繞過過濾器的 SQL 注入 簡介: 此實驗室的庫存檢查功能中存在 SQL 注入漏洞。查詢結果在應用程序的響應中返回,因此您可以使用 UNION 攻擊…