https://zhuanlan.zhihu.com/p/510768926
目录
1 服务器与CPU技术综述
1.1 服务器综述
1.1.1 服务器的发展历史
1.1.2 服务器的组成
1.1.3 服务器的分类
1.1.4 服务器集群与冗余技术
1.1.5 虚拟化技术
1.2 CPU综述
1.2.1 CPU的组成
1.2.2 CPU与GPU和DPU的分工
1.2.3 CPU指令集
2 服务器CPU架构概况
2.1 服务器CPU的架构分类
2.2 CISC-x86
2.3 RISC- ARM
2.4 RISC-V
2.5 其他
2.5.1 Alpha
2.5.2 MIPS
2.5.3 SPARC
3 服务器软件生态
3.1 操作系统
3.2 LLVM
3.3 (运行)库
3.4 云计算/容器/虚拟化
3.5 数据库/中间件
4 服务器CPU演进趋势
4.1 CPU优化的传统方向
4.1.1 工艺制程提升
4.1.2 并行度(核数)提升
4.1.3 缓存提升
4.1.4 专用指令集
4.2 CPU提升性能的新趋势
4.2.1 HBM与Chiplet
4.2.2 异构集成
4.2.3 存算一体
4.2.4 动态可重构/软件定义芯片
5 服务器CPU市场
5.1 服务器CPU产业链
5.2 服务器CPU市场规模
5.3 竞争格局
5.4 主要国外厂商
5.4.1 Intel
5.4.2 AMD
5.4.3 Amazon
5.4.4 SiFive
6 国产服务器CPU的市场机遇
6.1 国产服务器CPU发展路线
6.2 国内数字化需求
6.2.1 新基建
6.2.2 东数西算
6.2.3 5G与边缘计算
6.3 自主技术替代需求
6.4 互联网大厂的元宇宙布局
6.5 高端CPU与IP核心技术稀缺
7 国产服务器CPU厂商
7.1 x86架构:兆芯、海光
7.2 RISC-V架构:赛昉、平头哥
7.3 ARM架构:飞腾、鲲鹏
7.4 MIPS架构:龙芯
7.5 Alpha架构:申威
软件生态是操作系统和应用软件等在同一环境中开发和共同进化的软件项目的集合。
在过去,软件生态以操作系统为核心,与操作系统架构和指令集深度捆绑。例如,x86和Windows、arm和Android借助生态链中企业的合力,分别成就了桌面计算机和移动设备领域的霸主地位。IBM 则以其超一流的“三高一强”Power处理器搭配高端服务器软件生态,稳固了对应于Power架构的软件生态链,持续称霸高端计算领域。
但随着云计算的发展,LLVM作为底层跨平台技术的流行,虚拟化、容器技术的不断进步,上层应用与指令集架构的关系逐渐被解耦,软件生态的整体可迁移性和通用性得到了极大的增强。
图表 1-服务器软件生态本章将从跨平台与通用云计算的角度阐述LLVM、Runtime、虚拟化、容器、中间件等底层和中层软件生态。
由于有了这些底层和中层软件生态,大量高层应用可以进行跨平台的快速迁移,减小了CPU的指令集架构对软件应用生态的影响。
操作系统( OS ) 是管理计算机硬件、软件资源并为计算机程序提供通用服务的系统软件。操作系统合理的组织计算中工作流程,管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互操作的界面。
图表 2-常见的服务器操作系统操作系统与计算机硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批量模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。
图表 3-Linux操作系统层次结构操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,同时还提供一些基本的服务程序,例如:
1) 文件系统:提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。
2) 设备驱动程序:提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。
3) 用户接口:操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的 Windows 图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的 Android 或 IOS 系统,也是一种操作系统的交互方式。
4) 系统服务程序:当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。
常见的服务器操作系统可以分为三类,分别是Windows、Linux和UNIX。目前在电信、金融、能源、证券等行业的关键性应用上,一般使用UNIX系统来保证运行的稳定性。
在国内服务器市场上,Unix服务器用户相对较为集中,特别是电信与金融两大传统行业,几乎是Unix服务器的天下。(特别是IBM的AIX)这两大行业的应用已习惯于在Unix环境下进行核心业务的开发和部署。虽然近年来x86服务器产品技术得到了成熟发展,甚至某些应用x86服务器已经可以媲美于Unix服务器,但x86服务器在安全性和稳定性方面表现出的不确定性,使得核心领域的用户还没有足够的信心将应用向开放架构迁移。同时,高昂的迁移成本也导致Unix阵营用户不敢轻易尝试。
表格 1-三类服务器操作系统对比LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。
但是LLVM从来没有被用作过虚拟机使用。LLVM其实是一个编译器框架。随着这个项目的不断的发展,LLVM已经无法完全的代表这个项目了,只是这种叫法一直延续下来。
LLVM的主要作用是可以作为多种语言的后端,可以提供可编程语言无关的优化和针对很多种CPU的代码生成功能。
图表 4-LLVM架构LLVM支持与语言无关的指令集架构及计算芯片。这使得很多应用软件与编程语言的快速跨平台迁移成为现实。LLVM可以提供完整编译器系统的中间层,从编译器获取中间表示(IR)代码并发出优化的IR。然后可以将这个新的IR转换并链接到目标平台的依赖于指令集架构的汇编语言代码。在我们的应用场景中,使用LLVM API会生成中间代码IR。存放在内存或外部文件中。在目标平台执行时,针对对应的平台再生成对应的机器码再执行。这意味着在IR层编程,在不同的CPU上执行,会在目标硬件平台生成最优的机器码。包括从x86编译后移植到Power或arm CPU上。
传统静态编译器(与大多数 C 编译器一样)包括三段,其主要组件是前端(front end)、优化器(optimizer)和后端(back end)。
1) Frontend:前端:词法分析、语法分析、语义分析、生成中间代码(IR)。
2) Optimizer优化器:中间代码优化。负责进行各种各样的转换以尝试改善代码的运行时间,例如消除冗余计算。
3) Backend:后端:负责进行各种各样的转换以尝试改善代码的运行时间,例如消除冗余计算。
当编译器需要支持多种源语言或目标架构时,三阶段的设计就体现出来了。
如图所示,基于LLVM,当编译器需要支持一种新的源语言,只需在优化器前端添加新的通用代码;当需要支持一种新的指令集架构,便只需要添加一个新的后端。由此可见,它针对的是统一的LLVM IR,不论是支持新的编程语言,还是支持新的硬件设备,都不需要对优化机器码进行修改,不同的前端后端使用统一的中间代码LLVM IR。所以,各项基于LLVM架构开发的应用软件都可以无缝迁移到LLVM所支持的不同架构的指令集。并且,如果未来出现新的指令集架构,利用专门文档即可逐步添加且LLVM后端的公用部分无需做修改。由此可见,主流操作系统的应用软件基于LLVM架构的运行,服务器应用软件生态实则与CPU或其他芯片的指令集架构无关。
图表 5-通过LLVM实现对于多计算芯片的支持运行时库(Runtime):是在程序运行时用于提供一个或多个本机程序功能或服务的软件程序的集合。运行时库通过提供对主程序至关重要的附加程序资源,使软件程序能够以其完整的功能和范围执行。
图表 6-Runtime的范畴在编程语言中,某些可重用程序或“例程”被构建并打包为“运行时库”。这些例程可以在任何程序运行时链接和使用。
运行时系统在操作系统 ( OS ) 之上创建一个层,其中包含处理使主程序运行所需任务的其他程序。这些程序处理诸如为主程序分配内存和调度它的任务。
当应用程序处于运行时阶段时,程序的可执行文件连同程序引用的文件一起被加载到RAM中。
图表 7-云计算中的Runtime层云计算
云计算是指通过互联网按需访问计算资源——应用、服务器(物理服务器和虚拟服务器)、数据存储、开发工具和网络功能等等,这些资源托管在由云服务提供商(或 CSP)管理的远程数据中心内。CSP 提供这些资源时会按月收取订阅费用,或者按使用量收费。
图表 9-云计算优势对于企业数字化转型来说,应用上云是必经之路。从狭义来说,上云是将运行在物理机上的应用系统搬迁到云上。从广义上看,上云会涉及到跨架构适配、虚拟化、容器化、云原生等一系列的技术升级和重构。
图表 10-主要云计算厂家虚拟化
虚拟化是云计算的基础之一。虚拟化是一种技术,可以利用以往局限于硬件的资源来创建有用的 IT 服务,能够将物理计算机的工作能力分配给多个用户或环境,从而充分利用计算机所有能力。它们共享物理服务器的CPU,内存,硬件网卡等资源。通过虚拟化技术,可将单个硬件服务器分为多个虚拟武器。
物理资源虚拟化的工作Hypervisor来完成。Hypervisor可有效分隔物理资源,并将这些资源分配给不同的物理环境使用。虚拟化与物理硬件边界无关。
典型的Hypervisor软件包括VMware,KVM,Xen,Virtual Box。而为了更好的管理这种虚拟化方案,如OpenStack这样的云管理平台也应运而生。
图表 11-非虚拟化与虚拟化服务器服务器虚拟化的核心技术包括:CPU虚拟化,内存虚拟化,设备与I/O虚拟化
CPU虚拟化:将物理CPU抽象成虚拟CPU。一个物理CPU只能运行一个虚拟CPU的指令,每个用户操作系统可以使用一个或者多个虚拟CPU,在各个操作系统之中,虚拟CPU的运行相互隔离,互不影响。
内存虚拟化:把物理内存统一管理,用虚拟化技术把物理内存虚拟化成多个内存提供给多个虚拟机使用,每个虚拟机拥有各自独立的内存空间。
设备与I/O虚拟化:把物理设备进行统一管理,通过虚拟化技术将多个虚拟设备提供给多个虚拟机使用,响应每个虚拟机的设备访问请求和I/O请求。
图表 12-虚拟化技术与容器技术容器
容器是操作系统计算能力虚拟化的一种实现途径,负责为应用程序的运行提供环境。容器的目的是为进程集合提供一个独立的运行环境,容器包含应用和其所有的依赖包(类/库),不同容器之间共享宿主机的硬件资源及操作系统。
通过使用容器,开发者可以便利地打包应用程序的代码、配置和依赖关系,从而实现应用程序快速、可靠、一致性部署。容器可以快速启动和停止,因此适用于需要快速适应不断变化的需求的应用。 容器的轻型性质也使得它们成为一种有用的工具,可以提高基础结构的密度和利用率。 目前最受欢迎的容器环境是Docker,其他还有Rkt,Apache Mesos,Lxc,Containerd, Hyper-V Containers, and Windows Server Containers。
容器与虚拟机的相同之处在于都是帮助用户创造了隔离环境,但虚拟机与容器的隔离级别不同。虚拟机在操作系统层面实现隔离,而容器是在操作系统内的核心系统层来打造虚拟执行环境,从而进行资源隔离。容器的大小相比虚拟机更小,这也赋予了其更为轻量、灵活的特征。
表格 2-虚拟机vs容器数据库
以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间(Tablespace)构成。
图表 13-基于数据库的服务架构数据库可以为服务器集群上的多应用的数据访问提供统一接口,维护数据的一致性和实时性。
表格 3-五大主流服务器常用数据库中间件
介于操作系统和应用软件之间,为应用软件提供运行支撑平台并负责连接其他底层设施,帮助用户灵活、高效地开发和集成复杂业务应用的计算机软件。因介于操作系统和应用软件之间,所以称为中间件。中间件类型包括:消息中间件,交易中间件,应用服务器等。中间件是一种通用服务,具有标准程序接口和协议,支持标准包括,数据库互联标准ODBC和JDBC,CORBA,COM/DCOM.Enterprise,JavaBeans等。
图表 14-无中间件与有中间件的对比 图表 15-中间件架构中间件的特点:
1) 支持标准协议和接口;
2) 可运行多种软件,支持多种OS平台;
3) 分布式计算,提供跨硬件,网络和OS平台的透明性的应用题和服务的交互功能;
4) 在中间件市场,IBM,Oracle仍然占据主导地位。
图表 16-中间件在不同服务模式下的层级(连载中,未完待续)
谨以此文,祝本文作者生日快乐!
本文作者:Vivian,YOYO,Victor
关于我们
德太资本由腾讯(http://0700.HK) 联合创始人和德迅投资创始人曾李青先生联合创立。德太资本在香港和中国大陆分别设有持牌机构,用于运作咨询及资产管理等受规管业务。德太资本专注消费和科技领域,是一家致力于为境内外创业者提供私募融资咨询服务、企业并购等服务的精品投行。