芯片设计中的”经济学“

序言:
数字电路的核心是时间的概念。
时间可以是时钟的周期,可以是sequence,可以是保持时间,建立时间。时间还可以是时变的,这就是OCV的概念。我们为什么要做STA,因为STA建立了一套完整的时间理论,能在时钟周期级别确保功能模块的正确性。但是它的确无法保证功能本身是正确的。就像我们保证这个电脑是正常的,但是上面跑的程序可是人写的,它如果出错了,是写的程序的错误,而不是电脑自己的错误,是让我执行错的!
对于芯片来讲,也是一样的,STA确保每个cycle,每个element都能正确地接收和传输信息,但是信息是对的,是多余的,还是必要的,这些并不由这些element决定,它是由其他element决定的。而这两种element就是所谓的时序以及组合的区分。
首先我们来看看一个时序element是怎么传递信息的。信息的传递是基于时钟,就是说在时钟的调度下进行数据的接收以及发送。

图-时序逻辑器件结构图

时序逻辑要存储数据,对数据的输入情况是有要求的。如果不满足要求,我这里称之为“相撞”,就是输入的情况和时序element自身的状态不符。为了定义这种符或者不符,一个成为建立时间和保持时间的概念被引入。简单来讲,输入的数据在建立时间之前变化,以及在保持时间之后变化,就可以和时序element自身的状态相符。任一情况不满足则是不符的。

静态时序分析即是系统中所有的时序element的输入和其自身状态是否相符的一道芯片设计程序。

在时钟沿以外的时刻,寄存器的数据是保持不变的。但是组合逻辑却在时钟沿以外的时间对信号进行加工。如此说来,组合逻辑在一个时钟将数据取出,进行运算,然后将运算结果在另一个时钟沿被存入。

图-组合逻辑和时序逻辑的行为方式

既然是这样,那所有的电路实际上都可以利用这些基本的时序element和组合element实现的。因为所有的逻辑无外乎就是存储,以及组合逻辑(运算)。那为什么我们发现电路中还有很多一整块的专门用来存储数据的电路呢?比如只读存储器(ROM),我们买手机时时常听到的ROM大小就是指这种存储器能储存多少数据。还有RAM,FLASH,DRAM等等。

为什么这么麻烦?我想如果有替代,那么在经济学里就是需求!因为它能提供更多的价值,或者说相同的价值下,可以付出更小的代价。
这里ROM替代的需求因为它可以提供免装载的价值,相当于创造了额外的时间,对产品的用户来讲,可以让程序更快的启动起来。
而RAM替代的需求因为它可以提供更省的面积。
FLASH替代的需求则是它可以提供扩展性。
DRAM的需求则是它可以提供更低的制造成本,对于需要大量存储空间的应用这是不二的选择。

再细细看一个时序逻辑,它实际上是和一个时钟相关联的,所有的时序逻辑可以和同一个时钟关联,这是最直观的实现方式。可是为什么大部分的产品中却有多个时钟呢?这实际是一种对更低能耗的需求。试想,如果所有的逻辑都按统一的步调进行信息的读取/写入,但是因为部分逻辑只需要在更低频次的步调下行动,而却因为要和大家都统一节拍,而需要做很多的无用功。这就是一种能量的浪费。为了进行低能耗的替代,引入了多个时钟域的概念,每一部分按各自的步调进行行动。以让各部分的能耗尽量贴合自身的任务需求。

图-各自按自己步调行动的系统

这时候可能有人要问了,如此说来,不同区域之间如何进行数据的接收和传递呢?一种简单的理解是,依然按照之前所说的以时钟沿为基准进行。但是这就有个问题了,不同时钟的前提下,如果发送端发来的数据,刚好撞到接收端的时钟边沿,那就没法工作了。不过这种情况要发生,也是要有一些条件要满足的,就是两个时钟之间毫不协调,完全的各自为政,那么沿撞沿就不能确定的避免。假设两个时钟之间还有那么一些关系,比如同源,那这时是有相位关系的,代表它们之间的沿和沿的关系是会周期性地重复的。

那么在某个周期内,所有的沿和沿的情形都是可以历数的,对于每一种情形,实际上可以确切的判断是否有沿和沿的相撞的情况。如果没有相撞的情况,那么就可以安全的发送和接收了。

图-同源的多时钟系统

下面我们来看看不同源的多时钟系统

图-非同源的多时钟系统

在这种系统中,无法确定具体的关系。因此,为了避免相撞,引入了“同步机制”,这实际上是以时间为代价来获取稳定的数据。这个代价至少是一个时钟周期(目标时钟)。它是怎么做的呢?

图-两个时序element构成的同步系统

那这样就可以了吗?我们来看看这种同步系统有什么问题,问题在于数据真正被接收到的时间是不确定的!

图-同步系统的不确定到达

假设两个信号都是用这种方式从一个起始的时钟系统发送到目的时钟系统,那么信号可能不是同时到达的,这就有问题了。为了解决这种问题。有两个解决方向。一个是从信号源出发,既然可能到达时间不一致,那么能不能让信号不要在邻近的时间变化呢,这样的话就可以规避目的系统到达时间不一致的问题了。这种方式的一种实现方式就是格雷码。

图-格雷码

还有一种方式是在目的系统中,确保信号都已经达到,然后才去“使用”数据。这种方式就是握手机制。

图-握手机制

从怎么做的角度来讲,我们说时间,时间卡对,那么系统就在按统一/各自的步调做自己的事情。这还是非常讲究一些逻辑的。而如果从“怎么是好的”的角度来讲,我们会提到成本和能源。而时间往往体现在性能上。因此,这三个点构成了一个总体的目标。PPA-Performance(性能),Power(低能耗表现),Area(成本的一部分)。成本还有测试封装,以及BOM。而Area代表了先进工艺下最大的一块成本-工艺开发体现在每块芯片上的成本。

图-芯片的PPA

芯片的能耗是能量与时间的比值。在电路中,信号翻转会消耗能量,而为什么信号会翻转呢?当然如果系统工作,那么肯定是要信号翻转的,否则就没有所谓的状态的变化,信息的传递,就无论工作了。但是是否信号翻转就一定表示在工作呢?我们可以做一个设定,如果信号翻转产生了“效果”,那么认为翻转是必要的。所谓的效果比如人从摄像头前走过,系统判别出有人走过,并且做出提示。而没有没有效果就是没有人在摄像头前走过,但是系统一直在判断,还给出没有人走过的提示。对于这种情况,我们认为这是在做无用功,因为如果没人走过,那么就应该不会有任何提示,因此是不需要内部进行运作(信号翻转)的。从这个观点出发,只要我们知道什么时候可以应该出结果,然后开始运作,否则,不运作,那么,能耗一定是能得到降低的。

如果将以此种方式实现的低能耗看作一种需求的话,那么它的成本是什么呢?显然,我们需要判断何时让系统运作,将此系统称为一个监测系统。那么监测系统本身就是成本。如果这种成本不足以抵消能量消耗的降低,那么就是有益的。

在电路中就有很多这样的系统。小的比如一个CG element(clock-gating),它监测的是时序element的输入输入是否有变化,只有当有变化的时候,它才会打开这个时序element,也就是激活它的时钟,因为时序单元需要时钟进行运作。

图-clock-gating element
那么这个CG element显然就是一个额外的一个成本了,增加了电路中element的数量,而且还会增加它所在路径上的延迟,也会引入功耗。为了获取成本和收益的平衡点。我们从如下的收益-成本曲线中,可以知道,如果一个clock-gating element能够“管”多个时序elements超过一个阈值,那么收益收益是大于成本的,否则是不值得的。

图clock-gating成本收益曲线。

还有一种在语音互动产品中常常可见的监测单元。它负责监测当前是否有人说话,如果没有人说话,那么信号处理系统就不会被激活,也就不会有无谓的能耗。那么它的本身的成本是什么呢?它的监测逻辑有多大,往往越是精准的监测,逻辑逻辑越复杂,成本就会变高。从一个较长时间的使用周期来评估的话,比如一整天。往往是存在一个成本-收益平衡点的。而且对于不同的使用场合,这个平衡点还是不一样的。
比如当一直在室内非常安静的场合,那么可以使用非常简单的监测逻辑,这是因为要监测的环境本身非常纯粹,要门有人说话,要不没有人说话,而不存在机器轰鸣,宠物尖叫的干扰。因此只要判断声场的能量就可以了。它引入的成本很低,而且效果可以,如果使用更复杂的监测,那么并不会提升效果。此大概就是边际成本。此成本和环境复杂度直接相关。

而对于嘈杂的场合,边际成本提高了,因此使用更复杂的监测方式变得可行。

如何提升系统的性能呢?系统的性能要提高,无疑是要消耗更多的资源的,是否有存在不消耗更多资源,却提高性能的情况呢?我们看看摩尔定律是怎么发生的,在同样的硅片面积内,可以容纳更多的晶体管,性能无疑是提高的。不过其实这也是有成本的,那就是技术开发成本,也就是金钱的成本。为了降低这种成本,芯片厂商选择不选用先进工艺,而是选择成熟工艺。这就是用低性能换低成本。

可是在经济学里面,我们似乎看到人类的生产力在近代以后飞速发展,但是资源消耗增加了吗?肯定是增加了,至少已经用上了以前不用的资源,比如煤炭,石油,天然气。也许有人要说,还有核能,风能,水力资源,太阳能这些怎么算?

我们不会认为核是一种消耗品,至少在人类的范畴里面,核能,风能,水力,太阳能这些来自大自然的资源几乎是取之不尽的,因此也就无所谓的成本了。是什么让这一切发生的?核能因为有了E=MC^2公式,风能,水力,太阳能,因为有了发电机(能量转换和传输),当然还有电池,它让能量可以存储,所以让能源变得随处可用,而不用每个用户都自带一个发电机了。

说到底,有一套完整的将大自然“馈赠”的资源转换,传输,存储为可利用形式的能源。因此人类的生产力大大提高了。

芯片的生产力还可以来自于什么地方呢?如果不是使用更多的硅面积,不开更大的马力(能量),怎么实现生产力的提升?这是我们经常听到美国人说的结构性这个词。它反映的是对事物的一个重构,事物还是原来的,但又不是原来的样子了。另外还经常听说贸易可以增加生产力,所以那些商人虽然只是赚差价,但是却促进了社会大分工,提升了整体的生产力。所以,贸易带来的货物,服务的流动,也可以称得上是一种结构化的对社会的改造吧。毕竟社会还是那个社会,但又不是那个社会了。

芯片的architecture就是提升生产力的一种重构。比如哪些交给硬件做,哪些交给软件做。比如系统互联结构。前者讲的是分工,后者讲的就是贸易,各取所需。分工讲究的是发挥各自的比较优势。软件要发挥其迭代容易,适配性强的有点,硬件要发挥其专用,专用往往代表低成本,高性能。
比如一个WIFI系统,怎么定义这个系统呢?我们发现,各WIFI世代产品,最根本的更新还是在于物理层的变化,比如调制解调,编解码,时域/频域变换,所以如果物理层能够使用软件的方式来实现,那么就可以易于迭代开发。

另外还涉及到RF的频带的变化,所以RFE一定不能和PHY绑定在一起的。

除此之外即是MAC的efficiency的提升。MAC的efficiency同样可以通过软件和硬件的重构来提升,比如软件负责所有的协议相关的部分,硬件负责数据通路的构建,以及微时间级别的协议支持。换句话说,硬件是除了微时间级别的支持需要解析数据,都是不需要解析数据的,确保硬件的专用性,和不随着协议的更新而变得不再可用。另外硬件在提升数据吞吐率方面是在行的,比如数据搬移,数据存储的管理等等。以及加解密等等。软件做什么呢?负责基于数据维持链接,改善链接质量。

猜你喜欢

转载自blog.csdn.net/reekyli/article/details/118544886