跳至內容

架構

出自轻之舟百科

架構(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層:微架構層(微程序控制、數據通路等硬件實現)

指令集架構層(ISA)

[編輯 | 編輯原始碼]

- 定義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]

指令集架構的設計主要分為兩大流派[10][5]

複雜指令集計算機(CISC)
採用複雜指令集架構,如Intel的x86架構。CISC的特點是指令數量多、指令功能強大,單條指令可以完成多個操作,但硬件設計複雜,指令執行周期不固定。CISC的優勢在於代碼密度高,相同功能的程序佔用更少的內存空間。
精簡指令集計算機(RISC)
採用精簡指令集架構,如ARMMIPSRISC-V等。RISC的特點是指令數量少、指令格式規整(通常為定長指令)、硬件設計相對簡單,指令在一個時鐘周期內完成。RISC的優勢在於設計簡潔、功耗低、易於實現流水線和高頻率運行[10]

歷史上曾發生過「RISC與CISC之戰」,最終兩種理念在各自的領域找到了定位:x86(CISC)在桌面和伺服器市場佔據主導,ARM(RISC)則憑藉其低功耗優勢主導了流動裝置市場。近年來,兩種架構也在相互借鑑、相互融合[10]

微架構

[編輯 | 編輯原始碼]

微架構(Microarchitecture),又稱微體系結構或微處理器體系結構,是在計算機工程中實現指令集架構的處理器執行方法。微架構決定了指令在處理器內部如何被解碼、執行和退休,包括數據通路、控制單元、流水線級數、緩存層級、分支預測等具體實現細節。一種給定的指令集架構可以在不同的微架構中執行,針對不同的設計目標(性能、功耗、成本)和技術水平進行優化[11]

Flynn分類法

[編輯 | 編輯原始碼]

Flynn分類法(Flynn's Taxonomy)是計算機體系結構領域一種經典的分類方法,由Michael J. Flynn於1966年提出。該分類法基於兩個維度——指令流(Instruction Stream)和數據流(Data Stream)——將計算機體系結構分為四個基本類型[2][12]

類型 指令流 數據流 說明 典型代表
SISD 單指令流單數據流,傳統的馮·諾依曼架構 早期個人計算機
SIMD 單指令流多數據流,同一指令處理多個數據 GPU、向量處理器
MISD 多指令流單數據流,理論上存在但實際罕見 某些容錯系統
MIMD 多指令流多數據流,最靈活的並行架構 多核處理器、多處理器系統

現代體系結構

[編輯 | 編輯原始碼]

隨着技術的發展,計算機體系結構不斷演進。現代體系結構的主要發展方向包括[2]

多核處理器(Multi-core Processor)
在一個晶片上集成兩個或多個獨立的計算核心(內核),在特定的時鐘周期內執行更多任務,利用並行計算提升性能並降低功耗[13]
對稱多處理(Symmetric Multiprocessing,SMP)
多個處理器核心地位平等,共享同一內存空間和I/O資源[13]
大規模並行處理(Massively Parallel Processing,MPP)
由大量節點組成,每個節點有獨立的處理器和存儲器,通過高速網絡互聯,適用於大數據和高性能計算場景[14]
GPU架構
單指令流多數據流(SIMD)架構的典型代表,包含大量計算核心,專為圖形渲染和並行計算優化[2]

軟件架構

[編輯 | 編輯原始碼]

軟件架構(Software Architecture)是一系列相關的抽象模式,用於指導大型軟件系統各個方面的設計。軟件架構是一個系統的「草圖」,描述了直接構成系統的抽象組件,以及各個組件之間的連接和通信方式[1]。軟件架構為軟件系統提供了一個結構、行為和屬性的高級抽象,由構件的描述、構件的相互作用、指導構件集成的模式以及這些模式的約束組成[15]

架構要素

[編輯 | 編輯原始碼]

軟件架構通常包含以下幾個關鍵要素[1][15]

構件(Component)
系統的功能模塊或單元,是構成軟件系統的基本元素。
連接器(Connector)
構件之間的交互機制,定義了通信方式和協議。
接口(Interface)
構件對外提供服務的聲明,定義了其他構件可以如何使用該構件。
配置(Configuration)
構件和連接器的拓撲結構,即系統的整體布局。
質量屬性(Quality Attribute)
系統應滿足的非功能需求,如性能、可擴展性、可維護性、安全性等。

架構視圖

[編輯 | 編輯原始碼]

軟件架構通常從多個視角(或稱「視圖」)來描述,每個視圖聚焦於系統的不同關注點。常見的架構視圖包括[15]

邏輯架構(Logical Architecture)
描述系統的功能分解和模塊劃分,關注組件間的抽象關係。
物理架構(Physical Architecture)
描述軟件構件在硬件上的部署方式,涉及伺服器、網絡設備等物理資源[15]
系統架構(System Architecture)
關注系統的非功能性特徵,如性能、強壯性、可擴展性、靈活性、可靠性等[15]
進程視圖(Process View)
描述系統的並發和同步結構,包括進程、線程的配置與交互[15]
開發視圖(Development View)
描述軟件開發環境中的模塊組織、包結構、版本管理等[15]

常見架構模式

[編輯 | 編輯原始碼]

軟件架構領域存在多種經典架構模式和風格,用於解決特定類型的系統設計問題。常見的架構模式包括[1]

分層架構(Layered Architecture)
將系統劃分為若干層次,每一層為上層提供服務並依賴下層。
客戶端-伺服器架構(Client-Server Architecture)
將系統分為服務提供者(伺服器)和服務請求者(客戶端),通過網絡進行交互。
事件驅動架構(Event-Driven Architecture)
組件之間通過事件進行通信,系統對事件作出響應。
微服務架構(Microservices Architecture)
將大型應用拆分為一組小型、獨立部署的服務,每個服務圍繞業務能力構建。
管道-過濾器架構(Pipe-and-Filter Architecture)
數據處理系統的一種常見模式,數據流經一系列處理單元(過濾器),通過管道連接。
模型-視圖-控制器(Model-View-Controller,MVC)
將交互式應用劃分為模型(數據)、視圖(界面)和控制器(邏輯)三個部分[1]

發展歷程

[編輯 | 編輯原始碼]

計算機架構的發展經歷了多個重要階段[3][10]

1940年代—1950年代:奠基時期
ENIAC(1946年)和EDVAC(1949年)的研製標誌着電子計算機的誕生。馮·諾依曼提出存儲程序概念,奠定了現代計算機體系結構的基礎[7][8]
1960年代—1970年代:指令集時代
IBM 360系列計算機引入指令集體系結構的概念,實現了同一指令集在不同機型間的軟件兼容。CISCRISC設計理念開始分化[3][10]
1980年代—1990年代:微處理器與並行架構
微處理器技術迅速發展,個人計算機普及。RISC架構(如ARMMIPSSPARC)與CISC架構(如x86)競爭激烈。Flynn分類法奠定了並行架構的分類基礎。分布式計算集群計算進入實用階段[2][12]
2000年代—2010年代:多核與移動時代
單核處理器頻率提升遭遇功耗瓶頸,多核處理器成為主流。智能手機普及推動ARM架構崛起。GPU成為高性能計算的加速器。[2][13]
2010年代至今:雲計算與領域專用架構
雲計算普及,數據中心成為新的計算平台。領域專用架構(如TPUNPU)針對AI等特定應用優化。開源指令集RISC-V興起。異構計算存內計算等新範式不斷湧現。

參考文獻

[編輯 | 編輯原始碼]