一个设计好的电路经过调度算法之后可以避免在时间上的一些限制,但是前面说的算法并没有涉及到硬件资源方面的constrains。在这里主要是开始进行资源的分配,这个过程在空间域上进行的资源与操作的绑定和分享。当然实际情况下并不仅仅需要考虑单一的时间域限制或是仅考虑空间域限制。而是需要两者同时考虑。
要充分描述一个电路结构就需要以下一些元素:
1. 资源(resorces):用于在电路中实现各种算法其包括函数资源,存储器资源和接口资源
2. 限制(constrains):在实际应用中设定一些参数限制以保证电路的正常运行,接口限制(interface constrains)是保证系统在环境中能正常运行的前提,而implementation constrains是要反映设计者如何实现特定功能的限制参数。
3. sequencing graph:表征电路中各个元件和函数之间信息传递通路和结构的图。
需要在空间域中描述binding和sharing的问题需要首先设一下已知条件,以及定义一些概念
首先要知道的是在目前我们是有多少种资源,一般用一个集合(set)来表示,下面表示在这个系统中有种不同的资源可以供电路使用
binding问题是指需要实现某一个操作需要哪些资源跟目前的operation进行绑定
而sharing的问题是在同一时刻,硬件资源有限的情况下要怎么让不同的操作最大限度利用同一个资源。
综上所述,资源和操作是多对多的关系。
下图是一个描述操作绑定的table,前提是目前我们有的资源为{mux(1),ALU(2)} ,且mux有6个,ALU 有5个,只有这样才能对应的左边的sequence graph。
如果资源少了显然就不能这么做,很多同样的操作就不能再同一时间内完成。
当然在优化的时候需要同时考虑时间和资源,那么就需要先使用时间调度算法然后再考虑资源如何在area和(最后一个节点的开始时间与第一个节点开始时间差)权衡,根据这两个轴可以得到一个折线图,下面的图为使用list schedule算法进行配置的结果,再下一个图是用HUS算法配置的结果