芯片架构设计及其作用

芯片架构设计是芯片流片前很重要的一个环节,俗称pre-silicon,芯片架构设计的好坏,决定了芯片产品的质量,决定了芯片产品是否易用,决定了芯片产品的性能,决定了芯片产品在市场上是否具有持久性。芯片生产是个大工程,芯片硬件和芯片软件具有非常不同的特性,芯片软件在release后可以持续完善和优化,但芯片硬件一经流片就无从更改(重新流片一次要几千万)。

打个形象的比喻,芯片架构设计就像大楼施工前的图纸设计,各种事情(户型,地基,车位,绿化,布线,监控,采暖,上下水,采暖,空调,通风,电梯,安全,材料选取,成本等)都要考虑好,一经施工,无从更改,要么成为精品小区,要么成为烂尾楼。

芯片架构设计概览

在架构设计前,需要进行市场需求调研,同时进行竞品调研,保障芯片在生产出来的时候,能满足市场需求,能有更大竞争力。

  • 市场需求调研

目前大语言模型和多模态模型蓬勃发展,芯片设计前需要进行尽可能多的市场调研,涉及如下方面:

-大模型的模型规模和计算类型是什么趋势?算力和带宽需求是什么?

-大模型的输入sequence length是否更长?多模态模型和LLM模型的输入sequence length有什么区别?

-芯片是面向大模型的推理,还是训练?市场需要的性能目标是什么?

-是否需要互联?互联带宽多少?

-未来的大模型的技术变化趋势?什么样的attention优化技术是最优的?

-芯片的面向客户对各种low precision的接受度和需求度如何?

-芯片面向客户的编解码需求是什么样的?性能指标是什么?

-客户的部署习惯影响芯片的使用和设计,一定要摸清?客户业务的痛点是什么?

-存储需求是什么样的?

-芯片需要达到的性价比指标是什么?

-客户的软件生态是什么样的?

  • 竞品调研

竞品调研主要考察当前市场上比较top的芯片厂商的软硬件设计情况,同时,预测各厂商的未来技术趋势,目前大模型背景下,市场上比较top的芯片厂商如下:

-英伟达

-AMD

-谷歌

-华为

硬件架构设计

1.top厂商的芯片架构概览

  • nvidia gpu架构

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

最上面图是H100的总体架构,最下面图是一个SM内部的架构图,详细可以看白皮书。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

  • tpu架构

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

  • 昇腾架构

添加图片注释,不超过 140 字(可选)

2.硬件架构设计需要考虑的事情

整个的芯片设计的主要部分是SoC的设计,system on chip,SoC是由许许多多的IP组成的(自己设计或者买第三方的),chip designer的任务就是将这些IO装进SoC这个大箱子,装得要多,性能要好。大概需要考虑如下事情:

-面积

面积太小,放不下那么多资源,面积太大,同比竞品竞争力差(成本高)

-功耗

功耗低,供电不足,处理跟不上,功耗高,费电(大数据中心的电费还是很可观的)

-频率

整个芯片有一定的工作频率,每个IP也有自己的工作频率,高频率干活快,低频率干活慢。

-颗粒

纳米决定能装多少东西,尺寸有多大,目前美国就是在这方面卡我们脖子。台积电已经能做3纳米了。

-存储

用hbm,还是用gddr,这两者存储大小,峰值带宽,价格差距较大,需要根据模型应用需求和性价比考虑。目前芯片其实主要是在卖存储,所以搞存储的闷声发大财(尤其是在当前大模型背景下)。

-cpu core

无论是host端cpu core的数量及并行度,还是device端cpu core(例如,华为昇腾架构内的AI cpu core)的数量及并行度,都影响任务的异构并行处理,因为有些是适合device的AI tensor或vector计算任务,有些是适合cpu的非规则计算任务(例如,图和树的遍历与检索)。

-host和device间的访问延时与访存开销

需要考虑host与device间的通信一次的latency,因为有可能需要多次互通。

需要考虑host memory与device memory的互访互联及带宽,对大模型和推荐系统(embedding table)有益,可以看看nvidia的grace Hopper+grace cpu架构:

添加图片注释,不超过 140 字(可选)

-uvm统一虚拟内存,unified virtual memory

可以带来编程与处理的便捷性,可以很灵活的调度存储flow

-device memory bandwidth

带宽越大,传输越快,利于memory或IO bound的任务,所以,具体要看你的需求和场景,取决于选多大的带宽合适(既便宜,有满足需求)

-多级存储及shared memory(例如,nvidia)

需要考虑要几级memory?要不要dma?每级memory多少存储空间?这个其实和你的任务需求也是有关的,和你调度任务流水的方式也有关。

-多级cache(例如,nvidia的L1/L2)

你的cache有多少级?每级cache多大?指令cache和数据cache如何划分?cache的一致性和maintenance如何保障?硬件预取和软件预取是否完善?预取latency是多大?

-算力

算力,和带宽一样,其实是一个重要的指标?和场景与客户需求有关。需要什么精度的计算?每种精度的TOPS或TFLOPS是多少(取决于你的任务的TFLOPs或 TOPs)?需要稀疏计算(结构化稀疏,还是非结构化稀疏)吗?

-执行与调度模型

你的runtime的调度机制是什么样的?能支持最大outstanding是多少?

采用simd还是simt架构?simt架构的线程数及资源分配如何?simt的多线程调度开销如何?多线程间是否能隐藏指令流开销?

如果你只处理向量或matrix计算,那么,simd可能是最高效的,不需要simt的灵活性。如果你处理标量任务,那么,simt(如,nvidia implicit simd)可能更好。详细的simd与simt的机制最好熟练掌握。

-总线宽度

总线宽度和处理数据位宽,其实对调度很有影响取决于你的任务或需求粒度。

-互联拓扑和带宽

对大模型训练影响很大。

软件架构设计

芯片设计,讲究一个软硬协同设计,如果不考虑软件或客户的使用方式,不从top down是看架构设计,那么,设计出来的芯片硬件大概率是烂尾楼,兼容性差,迁移性差,软件编程难用,过分注重单一计算或单一模型(性能泛化差),等等一系列问题和痛点。

具体关注哪些?

-pytorch等框架或客户框架的eager mode和图模式分别如何执行的?

-框架或客户需要什么样的算子或api?

-模型的变种如何的?输入输出形状如何变化的?如何做通用支持?不要受限于具体形状或固定pattern。

-软件栈如何兼容c++语法?如何用最直接的方式编程?这些映射到硬件需要满足什么需求?例如,cuda

-软件的编码方式和生成的code size多大?例如,cuda

-模型部署方式?都线程?多进程?多模型并行?

-不同计算类型?每种类型的利用率分析?模型内的多分支结构?框架的多operator并行调度?

-你是否让用户关注了太多软件细节和调度细节?资源分配细节?这个导致软件不好用,软件可能本身也不是这样用的。

-算子的数据流编写方式需要反馈硬件,协同设计。

总之,希望以客户需求和习惯为目标,以技术发展趋势为原则指导芯片设计,坚持top->down,而不是down->top。

性能评估与建模

一个好的建模平台,对架构设计至关重要,因为架构设计之前,没有实实在在的东西,都是虚的,需要验证的内容太多,建模平台完备主要体现:

-灵活配置资源,验证各种数据流和计算流

-底层cost model健全,仿真器更趋向于真实硬件

-benchmark健全,测试无死角

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公众号怎么转移主体

公众号迁移有什么作用?只能变更主体吗?长期以来,由于部分公众号在注册时,主体不准确的历史原因,或者公众号主体发生合并、分立或业务调整等现实状况,在公众号登记主体不能对应实际运营人的情况下&#xff0…

阿里云服务器ECS--安全,稳定,购买灵活,低成本

阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如ECS经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云服务器网al…

基于Spring Boot的疗养院管理系统的设计与实现

传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用,可以…

Verovio简介及在Windows10和Ubuntu 22.04上编译过程

Verovio是一个快速、便携、轻量级的开源库,用于将音乐编码倡议(Music Encoding Initiative(MEI))数字乐谱雕刻到SVG图像中。Verovio还包含即时转换器(on-the-fly converters)用于渲染Plaine & Easie Code、Humdrum、Musedata、MusicXML、EsAC和ABC数字乐谱。源代…

零知识玩转AVH(4)—— 怎么玩(3)

接前一篇文章:零知识玩转AVH(3)—— 怎么玩(2) 上一回讲解了“arm-avh-best-practice-project-product-subscription-guide-cn.pdf”即“Arm虚拟硬件实践专题一:产品订阅指南(百度智能云版&…

python爬虫(9)之requests模块

1、获取动态加载的数据 1、在开发者工具中查看动态数据 找到csdn的门户的开发者工具后到这一页面。 2、加载代码 import requests headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36…

2024阿里技术官重磅推出“Java进阶必备宝典” 5大专题 6000字解析

5.JVM实战 CPU占用过高案例实战 内存占用过高案例实战 15种方式编写高效优雅Java程序实战 6.JVM底层技术 亿级流量高井发下GC预估与调优 JHSDB工具透视L ambda底层实现 JVM(HotSpot)核心源码解读 JVM核心模块(GC算法)手写实战 核心三:网络编程与高效IO 1.网络…

C#制作软件时窗体的弹出与嵌入

文章目录 一、窗体的弹出二、窗体的嵌入 一、窗体的弹出 这里面我们以Windows窗体应用程序为例,这里面达到的效果如下: 点击指定按钮,弹出目标窗口。接下来我们看具体操作: 这是我们的主窗体: 接下来我们需要在这个…

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型,并且具有幻想和创意色彩。 作者述:我选取了…

RabbitMQ备份交换机与优先级队列

1. 备份交换机 备份交换机可以理解为 RabbitMQ 中交换机的“备胎”,当我们为某一个交换机声明一个对应的备份交换机时,就是为它创建一个备胎,当交换机接收到一条不可路由消息时,将会把这条消息转发到备份交换机中,由备…

1. 用两种方式在springboot项目中实现适配器模式

文章目录 用两种方式在springboot项目中实现适配器模式1. 场景2. 方式1,通过实现类定义类型字段实现2.1 创建接口2.2 创建mysql实现类2.3 创建oracle实现类2.4 创建接口,在接口中注入service集合,根据每个实现类中定义的dbType进行匹配后进行调用2.5 测试…

幼猫咬不动猫粮该怎么办?

亲爱的猫友们,遇到幼猫咬不动猫粮的情况,是不是很让人着急呢?别担心,让我们一起来探讨一下解决这个问题的方法。🐱🍚 首先,我们得理解幼猫的牙齿和消化系统发育还不够成熟,所以咬不动…

Arduino ESP8266 SSD1306 硬件I2C+LittleFS存储GBK字库实现中文显示

Arduino ESP8266 SSD1306 硬件I2C+LittleFS存储GBK字库实现中文显示 📍相关篇《Arduino esp8266 软件I2C SSD1306 +LittleFS存储GBK字库实现中文显示》 🌼显示效果: ✨将部分函数重构,和上面相关篇的软件I2C通讯相关接口函数移植过来,除了汉字显示采用自己写的API函数外…

使用 ReclaiMe Pro 恢复任意文件系统(Win/Linux/MacOS)

天津鸿萌科贸发展有限公司是 ReclaiMe Pro 数据恢复软件授权代理商。 ReclaiMe Pro 是一个通用工具包,几乎可以用于从所有文件系统(从 Windows 系列文件系统、Linux 和 MacOS)中恢复数据。此外,考虑到数据恢复工作的具体情况&…

如何实现Git Push之后自动部署到服务器?

在平时个人开发的过程中是不是有这样的烦恼: 项目开发完成,Push之后 登录服务器,手动git pull,然后运行部署命令 这真的很烦诶! 那么能不能Git push之后,远端服务器自动 Git pull 然后运行部署命令呢&a…

ctf杂项总结

1.文件无法打开 1.1.文件拓展名损坏/错误导致 方法: 1.使用kali当中的file命令查看,之后修改为正确的后缀即可 2.通过16进制编辑器打开查看文件头 3.文件头残缺/错误,可以先使用kail当中的file命令查看它的类型,之后再通过 16…

C# EPPlus导出dataset----Excel2绘制图像

一、生成折线图方法 /// <summary> ///生成折线图 /// </summary> /// <param name="worksheet">sheet页数据 </param> /// <param name="colcount">总列数</param> /// &l…

(每日持续更新)jdk api之StreamCorruptedException基础、应用、实战

博主18年的互联网软件开发经验&#xff0c;从一名程序员小白逐步成为了一名架构师&#xff0c;我想通过平台将经验分享给大家&#xff0c;因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验&#xff0c;晚上进行用心精简、整理、总结、定稿&…

vue-vben-admin的编译运行

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统RuoYi-Nbcio亿事达企业管理平台 gitee源代码地址 后端代码&#xff1a;…

变量的本质和命名规则

变量的本质 内存:计算机中存储数据的地方&#xff0c;相当于一个空间变量本质:是程序在内存中申请的一块用来存放数据的小空间 变量命名规则与规范 规则: 不能用关键字 关键字:有特殊含义的字符&#xff0c;JavaScript 内置的一些英语词汇。例如:let、var、if、for等>只…