架構
架構(Architecture),在計算機領域,是指對計算機系統、軟件系統或處理器等計算實體的整體結構設計,包括其組成部分、相互之間的關係以及設計原則與演化指導。架構是連接需求與實現的橋樑,它定義了系統的頂層結構、關鍵組件及其交互方式,為系統的構建、維護和擴展提供了藍圖[1]。在計算機科學中,「架構」一詞涵蓋從指令集(ISA)、微架構到作業系統、分布式系統等多個抽象層級,通常可分為計算機體系結構(Computer Architecture)和軟件架構(Software Architecture)兩大範疇[2]。計算機體系結構側重於硬件層面的設計與組織,關注處理器、存儲器、輸入輸出等物理組件的構成與協同;軟件架構則聚焦於軟件系統的高層結構,描述系統的組件劃分、接口定義和交互模式。架構設計直接影響系統的性能、可擴展性、可靠性、安全性及成本等多個關鍵質量屬性,是計算機工程中的核心環節。
| 架構(計算機) | |
|---|---|
| 中文名 | 架構 |
| 外文名 | Architecture |
| 所屬學科 | 計算機科學、計算機工程 |
| 細分領域 | 計算機體系結構、軟件架構 |
| 核心概念 | 指令集架構、微架構、系統設計、組件、接口、模式 |
在計算機語境中,「架構」一詞具有多重含義。從最廣義的角度看,計算機系統結構(Computer Architecture)是指軟、硬件的系統結構,有兩方面含義:一是從程序設計者的角度所見的系統結構,是研究計算機體系的概念性結構和功能特性,關係到軟件設計的特性;二是從硬件設計者的角度所見的系統結構,實際上是計算機體系的組成或實現,主要着眼於性能價格比的合理性[3]。
經典的計算機系統結構定義是指程序設計者(主要指低級語言程式設計師或系統軟件設計者)所看到的計算機系統的屬性,即計算機的功能特性和概念性結構,也稱指令集體系結構(Instruction Set Architecture,ISA)[4]。ISA是計算機系統中硬件與軟件之間的一個關鍵接口,定義了處理器能夠理解和執行的一系列基本操作(指令),以及這些指令如何與硬件資源(如寄存器、內存、I/O設備等)進行交互[5]。
在計算機工程領域,「計算機體系結構」(Computer Architecture)與「計算機組織」(Computer Organization)是兩個相關但不同的概念。計算機組成(Computer Organization)是指計算機主要功能部件的組成結構、邏輯設計及功能部件之間的相互連接關係;計算機系統結構(Computer Architecture)的經典定義是指程序設計者所看到的計算機系統的屬性,即計算機的功能特性和概念性結構[4]。簡而言之,體系結構回答「做什麼」,而計算機組織回答「如何做」。例如,指令集體系結構(ISA)是體系結構的範疇,而微架構則是計算機組織的體現。
計算機系統可以看作是一個按功能劃分的多級層次結構。從底層到應用層,典型的層次包括[6][5][2]:
- 第0層:數字邏輯層(電晶體、門電路、集成電路) - 第1層:微架構層(微程序控制、數據通路等硬件實現)
- 定義CPU能執行的指令、寄存器、尋址模式等,是硬件與軟件的正式邊界[5]
- 管理硬件資源(內存分配、進程調度、文件系統等)
- 匯編語言和高級語言(C、C++、Java等)程序的表示與編譯
- 用戶應用程式和系統服務
這種層次化的結構使得每一層都可以獨立設計、優化和演進,而不必深入了解下層的具體實現細節,是計算機系統設計的重要原則。
計算機體系結構(Computer Architecture)指計算機系統的設計與組織,它包括計算機系統的各個組成部分及其相互之間的關係。這個概念既涵蓋了硬件的物理結構,也包括了軟件的邏輯框架,是計算機能夠執行任務的基礎。計算機體系結構的設計決定了系統的性能、能效、成本以及編程複雜性等多個方面[2]。
馮·諾依曼體系結構(Von Neumann Architecture),也稱普林斯頓結構,是由數學家馮·諾依曼提出的一種計算機體系結構。1946年6月,馮·諾依曼在「EDVAC方案」中正式提出了以二進制、程序存儲和程序控制為核心的思想,奠定了馮·諾依曼計算機的結構基礎[7]。該結構的主要特點是將程序指令存儲和數據存儲合併在一起,採用單一的地址空間進行訪問,取指令和取操作數都經由同一個總線進行串行傳輸[7]。計算機由五大基本部件組成:運算器、控制器、存儲器、輸入設備和輸出設備。該體系結構具有以下特點:採用二進制邏輯、程序存儲執行、計算機由五個部分組成。從EDVAC到當前最先進的計算機都採用了馮·諾依曼體系結構的基本原理[8]。
哈佛體系結構(Harvard Architecture)是一種並行體系結構,它將程序指令存儲和數據存儲分開,採用兩個獨立的存儲器進行訪問。程序存儲器和數據存儲器各自獨立編址、獨立訪問,從而實現了指令和數據的並行處理[9]。哈佛結構的優點在於提高了指令的執行速度,同時降低了存儲器的訪問衝突,特別適合於數碼訊號處理(DSP)、圖形處理等需要進行大量數據處理的領域[9]。兩種結構的主要區別在於:馮·諾依曼結構採用統一的存儲器空間存儲程序指令和數據,指令和數據串行傳輸;哈佛結構則採用分離的存儲器空間,可以並行訪問指令和數據。
指令集架構(Instruction Set Architecture,ISA)是計算機體系結構中最重要的概念之一。ISA是處理器支持的所有指令的語義,包括指令本身及其操作數的語義,以及與外圍設備的接口[10]。指令集架構是軟件感知硬件的方式,被視為CPU的「靈魂」[10]。
- 複雜指令集計算機(CISC)
- 採用複雜指令集架構,如Intel的x86架構。CISC的特點是指令數量多、指令功能強大,單條指令可以完成多個操作,但硬件設計複雜,指令執行周期不固定。CISC的優勢在於代碼密度高,相同功能的程序佔用更少的內存空間。
- 精簡指令集計算機(RISC)
- 採用精簡指令集架構,如ARM、MIPS、RISC-V等。RISC的特點是指令數量少、指令格式規整(通常為定長指令)、硬件設計相對簡單,指令在一個時鐘周期內完成。RISC的優勢在於設計簡潔、功耗低、易於實現流水線和高頻率運行[10]。
歷史上曾發生過「RISC與CISC之戰」,最終兩種理念在各自的領域找到了定位:x86(CISC)在桌面和伺服器市場佔據主導,ARM(RISC)則憑藉其低功耗優勢主導了流動裝置市場。近年來,兩種架構也在相互借鑑、相互融合[10]。
微架構(Microarchitecture),又稱微體系結構或微處理器體系結構,是在計算機工程中實現指令集架構的處理器執行方法。微架構決定了指令在處理器內部如何被解碼、執行和退休,包括數據通路、控制單元、流水線級數、緩存層級、分支預測等具體實現細節。一種給定的指令集架構可以在不同的微架構中執行,針對不同的設計目標(性能、功耗、成本)和技術水平進行優化[11]。
Flynn分類法(Flynn's Taxonomy)是計算機體系結構領域一種經典的分類方法,由Michael J. Flynn於1966年提出。該分類法基於兩個維度——指令流(Instruction Stream)和數據流(Data Stream)——將計算機體系結構分為四個基本類型[2][12]:
| 類型 | 指令流 | 數據流 | 說明 | 典型代表 |
|---|---|---|---|---|
| SISD | 單 | 單 | 單指令流單數據流,傳統的馮·諾依曼架構 | 早期個人計算機 |
| SIMD | 單 | 多 | 單指令流多數據流,同一指令處理多個數據 | GPU、向量處理器 |
| MISD | 多 | 單 | 多指令流單數據流,理論上存在但實際罕見 | 某些容錯系統 |
| MIMD | 多 | 多 | 多指令流多數據流,最靈活的並行架構 | 多核處理器、多處理器系統 |
隨着技術的發展,計算機體系結構不斷演進。現代體系結構的主要發展方向包括[2]:
軟件架構(Software Architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的「草圖」,描述了直接構成系統的抽象組件,以及各個組件之間的連接和通信方式[1]。軟件架構為軟件系統提供了一個結構、行為和屬性的高級抽象,由構件的描述、構件的相互作用、指導構件集成的模式以及這些模式的約束組成[15]。
- 構件(Component)
- 系統的功能模塊或單元,是構成軟件系統的基本元素。
- 連接器(Connector)
- 構件之間的交互機制,定義了通信方式和協議。
- 接口(Interface)
- 構件對外提供服務的聲明,定義了其他構件可以如何使用該構件。
- 配置(Configuration)
- 構件和連接器的拓撲結構,即系統的整體布局。
- 質量屬性(Quality Attribute)
- 系統應滿足的非功能需求,如性能、可擴展性、可維護性、安全性等。
軟件架構通常從多個視角(或稱「視圖」)來描述,每個視圖聚焦於系統的不同關注點。常見的架構視圖包括[15]:
- 邏輯架構(Logical Architecture)
- 描述系統的功能分解和模塊劃分,關注組件間的抽象關係。
- 進程視圖(Process View)
- 描述系統的並發和同步結構,包括進程、線程的配置與交互[15]。
- 開發視圖(Development View)
- 描述軟件開發環境中的模塊組織、包結構、版本管理等[15]。
軟件架構領域存在多種經典架構模式和風格,用於解決特定類型的系統設計問題。常見的架構模式包括[1]:
- 分層架構(Layered Architecture)
- 將系統劃分為若干層次,每一層為上層提供服務並依賴下層。
- 客戶端-伺服器架構(Client-Server Architecture)
- 將系統分為服務提供者(伺服器)和服務請求者(客戶端),通過網絡進行交互。
- 事件驅動架構(Event-Driven Architecture)
- 組件之間通過事件進行通信,系統對事件作出響應。
- 微服務架構(Microservices Architecture)
- 將大型應用拆分為一組小型、獨立部署的服務,每個服務圍繞業務能力構建。
- 管道-過濾器架構(Pipe-and-Filter Architecture)
- 數據處理系統的一種常見模式,數據流經一系列處理單元(過濾器),通過管道連接。
- 1980年代—1990年代:微處理器與並行架構
- 微處理器技術迅速發展,個人計算機普及。RISC架構(如ARM、MIPS、SPARC)與CISC架構(如x86)競爭激烈。Flynn分類法奠定了並行架構的分類基礎。分布式計算和集群計算進入實用階段[2][12]。
- ↑ 1.0 1.1 1.2 1.3 1.4 軟件架構(百度百科)
- ↑ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 計算機體系結構概述(阿里雲開發者社區)
- ↑ 3.0 3.1 3.2 計算機體系結構(百度百科)
- ↑ 4.0 4.1 計算機組成與系統結構(第3版),清華大學出版社
- ↑ 5.0 5.1 5.2 5.3 詳解AI加速器(三):架構基礎離不開ISA(阿里雲開發者社區)
- ↑ 計算機系統層次結構(百度百科)
- ↑ 7.0 7.1 7.2 第2章 計算機硬件系統
- ↑ 8.0 8.1 馮·諾依曼結構(百度百科)
- ↑ 9.0 9.1 探索馮諾依曼體系結構和哈佛體系結構(百度開發者中心)
- ↑ 10.0 10.1 10.2 10.3 10.4 10.5 10.6 CPU指令集CISC與RISC對比及並行架構應用場景(阿里雲開發者社區)
- ↑ 微架構(百度百科)
- ↑ 12.0 12.1 分類法(百度百科)
- ↑ 13.0 13.1 13.2 多核處理器(科普中國)
- ↑ 大規模並行處理機(百度百科)
- ↑ 15.0 15.1 15.2 15.3 15.4 15.5 15.6 軟件架構(科普中國)