- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
这几天在B站、油管上刷了一些国产芯片真实上手视频,顺便自己也梳理一下芯片的一些基本概念,以及在美国科技制裁和围堵的情况下,国产CPU的发展情况。文末有我整理的一张思维导图,hope u find it informative.
。
0 1 缩写表/术语表
IC :Integrated Circuit 集成电路 。
IP :Intellectual Property 知识产权 。
ISA :Instruction Set Architecture 指令集架构 。
SoC :System on a Chip 片上系统 。
RISC :Reduced Instruction Set Computing 精简指令集 。
CISC :Complex Instruction Set Computing 复杂指令集 。
。
。
0 2 芯片 。
「芯片」这个词太火了现在,美国的「芯片禁令」,美国组建的「芯片联盟」(CHIP4,即美、日、韩、台),这些大家都耳熟能详了。「芯片」这个名称,早期一般指CPU芯片,随着手机等移动设备产业的发展,现在一般指SoC(System on a Chip 片上系统),如华为麒麟、高通骁龙等等,都属于SoC。SoC不是单纯的CPU,它集成了CPU、GPU、基带芯片(Baseband)、内存等多种不同的功能组件。芯片产业是一条长的产业链,里面有很多我们耳熟能详的公司,这里举一些简单的例子.
ARM :持有ARM架构,其商业模式是向下游提供ARM架构授权、IP核授权,本身不进行芯片生产.
AMD :持有x86架构,设计芯片,但不生产芯片.
Intel :持有x86架构,自行设计、生产芯片.
三星 :从ARM公司购买ARM架构授权,自行设计、生产芯片.
华为、苹果 :从ARM公司购买ARM架构授权,设计芯片,但不生产芯片.
台积电、中芯国际 :通常不设计芯片,帮助其他芯片设计公司生产芯片.
为什么感觉这些年的「芯片设计」公司多了?我觉得主要是由于芯片设计的难度相对下降了,人们不需要从零开始设计芯片,不需要重新发明轮子,而是直接从IP供应商获得 指令集架构、IP核 的授权,然后进行组装或者进行一定的定制化.
。
。
0 3 指令集架构授权 。
一个CPU芯片在设计之初,需要确定自己采用什么架构,这里的架构指的是指令集架构。指令集架构相当于一种规范,如果A、B两个公司设计的都采用同一指令集,那么在A上运行的软件不需要修改就能运行在B上。想要使用现有的指令集架构,通常需要购买授权.
设计一套指令集并不太困难,难的是指令集之上的生态。你可以设计出一套自己的指令集,但是目前运行在x86或者ARM上的操作系统、各种软件,都无法在你的指令集上运行,那么你的产品就没有市场。 。
目前指令集架构的两大霸主分别是PC及服务器领域的x86、移动领域的ARM.
x86架构目前基本上就是Intel和AMD在使用(AMD通过交叉授权的方式从Intel获得了x86架构的授权),还有两家中国公司,兆芯、海光。海光是与AMD合作,于2016年获得了AMD的x86授权,兆芯的授权是从威盛那获得,二者都是永久授权,不过x86的后续更新,由于美国的科技制裁,这两家中国公司很难拿到了.
而在移动设备领域,90%以上都使用ARM指令集架构,许多芯片设计公司从ARM公司购买指令集授权,例如华为购买的就是ARM V8指令集架构,其他的包括Broadcom、苹果、华为、Nvidia、AMD、三星、高通、微软等等.
除了x86和ARM,还有少量其他指令集架构,比如近几年国内比较火的RISC-V(发音同「risk-five」),还有基本已经凉凉的MIPS、Alpha指令集等等.
指令集架构相当于一种「规范」,同一个架构,不同的公司有不同的实现方法。技术能力较强的公司可以购买指令集架构之后自行设计芯片,这样做到好处是可以进行完全的定制化来实现高性能,例如苹果自己实现的ARM架构芯片比其他厂家领先至少2年,而坏处就是研发成本高。如果不想完全自己设计,可以购买现成的「IP核」,例如ARM Cortex系列的CPU IP.
。
0 4 IP核授权
IP核可以简单理解为一些经过严格验证的、可重复使用的模块,如DDR接口IP核、USB接口IP核、CPU IP核、GPU IP核等等。IC产业中的一些公司专门从事某一些模块的设计,并把自己设计出来的模块以知识产权的方式授权给下游的芯片设计厂商,这样下游厂商就可以通过组合、定制模块来完成自己的芯片设计,避免重复造轮子。IP核供应商可以帮助降低芯片的开发难度、缩短开发周期,是IC产业链上的关键环节.
IP核授权分为三类:软核、固核、硬核。(实际上各个IP提供商对客户如何使用这些IP拥有非常大的控制权,尤其像ARM这样拥有垄断地位的供应商来说,因此这只是一个泛泛的分类,而不是精确的) 。
软核, 是芯片结构的代码表示(芯片设计使用的一种特殊的编程语言,可以用这种语言描述一个芯片的结构) 。
固核, 是芯片结构的设计图纸 。
硬核, 是芯片结构的生产掩膜(交给台积电,台积电就能直接生产出芯片了) 。
软核、固核、硬核的授权费用是依次降低,使用难度是依次降低,但灵活性是依次降低。购买软核的公司,可以进行定制化,图省事的公司会直接购买硬核.
ARM公司在IP核领域同样具有垄断地位,它提供广泛的处理器和系统IP核,包括Cortex-A、Cortex-M和Cortex-R系列CPU IP核,以及Mali系列GPU IP核,ARM在IP核领域的全球占比超过40%,排名第一。第2、三名IP供应商是Synopsys(新思科技,美国)、Cadence,这两家同时是最大的EDA公司。国内最大的IP公司是芯原,排名全球第七,另外Imagination Technologies是中国控股,这个排名全球第四.
。
。
0 5 国产CPU 。
目前国产CPU主要就是6家:海光、兆芯、飞腾、华为鲲鹏、申威、龙芯。 目前这几家的CPU主要还是集中在政府、事业单位的采购,以及一些特殊领域(如国安、超算等),消费级的桌面CPU还很少,这是基本的现状。我觉得并不是说国产CPU无法满足日常办公和影音(实际上完全可用,这个网上有许多实测视频,包括SPEC评分等等),主要还是消费者对生态方面的顾虑.
海光, 使用x86架构,占据着国产x86服务器处理器绝大部分的市场份额。以中国移动为例,其电信运营商服务器CPU国产化率超50%,其中有一半是海光信息贡献的。海光CPU应该是国产CPU中性能最好的,海光3号CPU接近AMD ZEN3水平。海光近几年发展不错,2022年营收51.25亿元,同比增长121.83%。不过,由于依赖海外企业授权,自主可控方面仍有风险.
兆芯, 同样使用x86架构,目前最新的PC处理器为开先KX-6000G,16纳米工艺;服务器处理器为开胜KH-40000,也是16纳米工艺。和海光一样,兆芯同样依赖海外企业授权.
华为鲲鹏、飞腾都获得了ARM V8永久授权,可自行研发设计CPU内核和芯片,也可以扩充指令集。但已经无法获得更新的ARM V9的授权,因此采用ARM架构仍存长期隐患.
华为鲲鹏, 主要面向服务器领域,2014年发布鲲鹏912,2016年发布鲲鹏916,2019年华为发布鲲鹏920,是业界第一颗采用7nm工艺的数据中心级的ARM架构处理器。随着美国对华为的打压,虽然华为还可以设计芯片,但找不到代工厂来生产,因此华为鲲鹏系列目前处于停滞状态.
飞腾, 目前主要在政府事业单位,同时,也被用于天河等超级计算机。2020年,飞腾推出服务器CPU腾云S2500(16纳米制程,台积电代工),桌面CPU腾锐D2000(14纳米制程,由中芯代工)。由于飞腾目前已被列入美国的所谓「实体清单」,后续包括架构授权、先进制程的生产都有风险,计划中的更先进的服务器芯片如S5000,也因此处于停滞状态.
申威, 使用完全自主的SW64指令集架构(传言是基于已经凉凉的Alpha指令集架构研发的),不过申威的CPU主要用于超算领域,例如「神威·太湖之光」,使用的就是申威的SW26010。申威的CPU目前还比较小众.
龙芯, 早前基于MIPS指令集架构,2020年发布了自研的指令集架构LoongArch,龙芯是国内唯一一家能够对外授权指令集和IP核的通用CPU企业,自主可控程度是国内同类企业中最高的。生态方面,目前国内主流的办公软件都完成了LoongArch的适配,同时LoongArch通过软硬件结合的二进制翻译方式实现了部分兼容x86、ARM(性能有损失),可以在一定程度上缓解龙芯的生态问题。龙芯年内将要发布3A6000,采用12纳米工艺,据称性能可以对标7纳米的ARM Zen2。目前基于龙芯+统信/麒麟的纯国产桌面电脑对于常规办公、常规影音娱乐没有问题,大型游戏有困难,当然,这不仅仅是CPU的问题,也需要国内GPU厂商在硬件和驱动上继续努力.
多说一句龙芯,我常常在国产硬件的实测视频中,看到一些人拿着来源不明的消息甚至臆测来贬低龙芯,油管视频下面有这些评论我能理解,但很奇怪B站上也是一大堆这类评论。对于这些人,我觉得你可以不看好龙芯,但说任何话最好还是从事实出发,否则就很难让人不怀疑你的动机了。龙芯的自主化道路,面临的困难可想而知,这里向胡伟武博士等龙芯人致敬,道阻且长,行则将至.
RISC-V, 最后再说一下RISC-V指令集架构,这个架构和x86和ARM最大的不同是指令集架构本身是免费的,大家都可以用,因此在x86和ARM日趋垄断的情况下,很多巨头都投入到RISC-V的阵营,包括谷歌、英伟达、华为、阿里、腾讯等等。RISC-V基金会目前25家最高级别的Premier Menmbers会员中,中国厂商的数量达到14家。阿里平头哥的玄铁CPU就是使用RISC-V架构,根据平头哥官网统计数据,玄铁处理器IP累计授权芯片出货量超过30亿颗。在5月28中关村举行的「RISC-V 开源处理器芯片生态发展论坛」上,第二代「香山」(南湖架构)开源高性能RISC-V核心(即IP核)正式发布,计划2023年6月流片(即「试生产」),性能预计超过2018年ARM发布的Cortex-A76 IP核。除了龙芯这种自主路线之外,个人感觉RISC-V也是另外一种不错的选择.
总之,革命尚未成功,同志仍需努力.
( 欢迎扫描上图二维码关注公众号, 可自动获得ChatGPT访问地址(本人自己搭建的跳板,可免费使用) ) 。
。
最后此篇关于简单了解一下国产CPU的文章就讲到这里了,如果你想了解更多关于简单了解一下国产CPU的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在努力实现以下目标, 假设我有字符串: ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ( z ) ( A ) ) ) ) ) 我想编写一个正则
给定: 1 2 3 4 5 6
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
大家好,我卡颂。 Svelte问世很久了,一直想写一篇好懂的原理分析文章,拖了这么久终于写了。 本文会围绕一张流程图和两个Demo讲解,正确的食用方式是用电脑打开本文,跟着流程图、Demo一
身份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后一位为数字或者大写字母”X“。 与之匹配的正则表达式: ?
我们先来最简单的,网页的登录窗口; 不过开始之前,大家先下载jquery的插件 本人习惯用了vs2008来做网页了,先添加一个空白页 这是最简单的的做法。。。先在body里面插入 <
1、MySQL自带的压力测试工具 Mysqlslap mysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、简单、实用的数据库文档(字典)生成工具,该工具支持CHM、Word、Excel、PDF、Html、XML、Markdown等
Go语言语法类似于C语言,因此熟悉C语言及其派生语言( C++、 C#、Objective-C 等)的人都会迅速熟悉这门语言。 C语言的有些语法会让代码可读性降低甚至发生歧义。Go语言在C语言的
我正在使用快速将 mkv 转换为 mp4 ffmpeg 命令 ffmpeg -i test.mkv -vcodec copy -acodec copy new.mp4 但不适用于任何 mkv 文件,当
我想计算我的工作簿中的工作表数量,然后从总数中减去特定的工作表。我错过了什么?这给了我一个对象错误: wsCount = ThisWorkbook.Sheets.Count - ThisWorkboo
我有一个 perl 文件,用于查看文件夹中是否存在 ini。如果是,它会从中读取,如果不是,它会根据我为它制作的模板创建一个。 我在 ini 部分使用 Config::Simple。 我的问题是,如果
尝试让一个 ViewController 通过标准 Cocoa 通知与另一个 ViewController 进行通信。 编写了一个简单的测试用例。在我最初的 VC 中,我将以下内容添加到 viewDi
我正在绘制高程剖面图,显示沿路径的高程增益/损失,类似于下面的: Sample Elevation Profile with hand-placed labels http://img38.image
嗨,所以我需要做的是最终让 regStart 和 regPage 根据点击事件交替可见性,我不太担心编写 JavaScript 函数,但我根本无法让我的 regPage 首先隐藏。这是我的代码。请简单
我有一个非常简单的程序来测量一个函数花费了多少时间。 #include #include #include struct Foo { void addSample(uint64_t s)
我需要为 JavaScript 制作简单的 C# BitConverter。我做了一个简单的BitConverter class BitConverter{ constructor(){} GetBy
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我是 Simple.Data 的新手。但我很难找到如何进行“分组依据”。 我想要的是非常基本的。 表格看起来像: +________+ | cards | +________+ | id |
我现在正在开发一个 JS UDF,它看起来遵循编码。 通常情况下,由于循环计数为 2,Alert Msg 会出现两次。我想要的是即使循环计数为 3,Alert Msg 也只会出现一次。任何想法都
我是一名优秀的程序员,十分优秀!