半岛彩票本篇从芯片设计理念上,将芯片分为通用芯片和专用芯片,详细介绍这二者的异同,这是理解现在CPU、GPU、SoC、ASIC等等让人傻傻分不清的各种芯片专业术语的基础。“
我们可以把芯片分为两个大类,一是通用芯片,包括经常听到的CPU、GPU、DSP等;二是专用芯片,包括FPGA、ASIC等。这个大类划分很重要,两者有本质上的不同。需要说明下,芯片的分类有很多种,我们这样的分类是基于芯片的设计理念,这是后续理解一切的基础。
这里“通用”与“专用”的区别是指该芯片是否是仅为执行某一种特定运算而设计,用银行来做个简单的比喻,通用芯片就是“银行柜员”,可以处理各种复杂的业务;而专用芯片就是“ATM机”,将某些流程标准化并固化在硬件中,做一台没有感情的处理机器。“通用”与“专用”并不是指该芯片是否仅用于某一种产品或使用场景,比如intel所研发的用于PC的CPU,这颗芯片仅用在PC上,但它不是我们这里说的“专用”芯片。
这意味着它必须具备处理各式各样千奇百怪的指令要求,并且经常同时存在多个外部设备的请求,它必须拥有随时中止目前的运算转而进行其他运算,完成后再从中断点继续当前运算的能力。就好比银行柜员,客户要办的业务千奇百怪,时常还来个插队或者站着位置不走撩你的人存在,柜员都要应对。为了做到这一点通用芯片有复杂的控制取指和译码流程,Cache内存分级机制(缓和高速CPU与低速内存的临时指令存储器),真正的计算单元ALU只占了通用芯片不大的一部分,更多设计是为了灵活性存在,在计算效率和通用性上的权衡上牺牲前者选择后者。
在讲通用芯片的时候,我们更多的是讨论采用“什么样的结构或设计”能够满足客户的变化需求,哪种“人员组织形式和沟通方式”是最高效的。而专用芯片就是完全另一个概念,虽然它也有结构思想在里面,但是在这种芯片里根本就没有时序中断,取指译码这些为了灵活性而设计的概念。相比通用芯片,专用芯片是没有“人性”的,就是一个ATM机,其给客户定义了清晰的操作流程,省去了中断等大量灵活性设计,撩小姐姐的一套对机器人是不成立。
打个比方,比如一个比大小的逻辑用通用的CPU至少需要几条指令完成,但用FPGA就根本不用考虑时序周期,只要串联几个逻辑单元,在一个周期就搞定了。但如果再增加几个逻辑,CPU还是在相同逻辑资源下用几个指令完成,但是FPGA就需要额外占用另一部分逻辑资源完成计算。再比如FPGA和GPU(GPU是通用芯片)在并行化上有类似的思想,但两者实际没有多少可比性,你不会把三个柜员的办理通道和ATM存在三个恰好并行的流程做比较一样。还有人在信号处理效率上把DSP和FPGA拿出来对比,这些零零种种的比较都没有太大意义。为灵活性存在的“人”(通用芯片),和为效率存在的“机器”(专用芯片)是两个维度的事情,不要从性能上去强行比较。
从上述分析可以大致看出两者的重要差异:专用芯片是对已经固化的业务进行降本增效,就像银行用ATM机,代替成本更高的柜员处理一些常规银行业务;而通用芯片是为了对一些无法或者暂时没有固化的业务作出的灵活设计。两者没有优劣之分。
(四)常见芯片归类从芯片结构、设计理念上了解芯片的分类后,我们可以把经常听说的一大堆芯片概念来归归类。
一是随着智能手机崛起,SoC概念逐渐普及,这又是什么?和CPU、GPU有什么区别?本质上SoC不是一种芯片类型而是一种集成方式,它是将不同的芯片做了进一步的集成,将不同的功能实现设计在同一个Die上,物理上看是一颗芯片,但是却具备CPU、GPU等各种芯片设计的功能,所以说是一种更高维度上的集成。MCU、SiP类似,也是一种集成方式,只是使用的场景、集成度不同。
二是随着AI的普及,涌现出AI芯片的概念,以及各种各样的”X”PU(包括APU、BPU、DPU、NPU、TPU、VPU、XPU等等),这些到底是通用芯片还是专用芯片呢?AI芯片其实是按照功能分类得名的芯片,和CPU、GPU等一样都用于计算,所有可实现AI功能的芯片都可统称为AI芯片,但实现AI功能的具体芯片设计可以采用CPU、GPU、FPGA、ASIC等;至于各类”X”PU,就是不同公司基于不同芯片类型设计的AI芯片,有基于GPU这种通用芯片类型的,也有基于FPGA这种专用芯片类型的,当然都要针对AI的运算特点进行专门的优化。
最后简单总结一张芯片分类图如下,后续针对半导体产品和芯片分类单独再做一次介绍。