跳转到内容

架构

来自轻之舟百科

架构(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兴起。异构计算存内计算等新范式不断涌现。

参考文献

[编辑 | 编辑源代码]