嵌入式系统之系统分区(system partition)

2019-07-12 14:58发布

系统分区

映射

Y-chart

概念

从上图我们可以看到一共有三种方法去提高系统的性能:架构提高,重写应用,使用不同的策略。
映射(mapping)就是把行为级转换为结构和执行。
最后综合的时候,是包括分区和映射两个部分。其中分区就是分配(选择模块)和绑定(把一些函数给部件);映射就是包括绑定和调度(执行顺序)。最后综合的结果就会被执行。其实就是我们选择什么器件,它要执行什么函数,执行顺序是什么。就这样的过程。

抽象层次

  • 低层次:RTL或者网表。将数字电路映射到具体设备上(FPGA,ASIC);系统参数(比如面积,延时)相对容易去决定。
  • 高层次:系统层次。选择最优设计(比如空间大小);难以了解或者决定的系统参数(通过一些模型,分析,模拟,原型来实现)。
就比如我们遇到下面一个题目:我们是把所有的task放在一个CPU上还是均衡负载呢?最后发现均衡负载是最节约功耗并能实现较好的并行化的。但是,当然不能说这样均衡之后效果会大大提高n倍,还有很多问题。比如数据一致性,所以在task分配的时候得十分注意这个问题。 这里写图片描述 就上图其实就是表现了映射关系:N对一和一对一。
在这里我们要考虑的问题有:成本:用多少处理器呢?延时:就是频率,当然是越快越好。能以最短的时间解决问题。但是这两个东西是矛盾的,我们要使得成本提高,延时就降低;反之亦然。我们设计的时候就需要提出一些约束才能使得设计求出最优解。 用下图展示一下: 这里写图片描述 假设任务都是一样长的,那么我们发现若只用一个cpu,延时已经超过了我们的要求,使用四核得话可以很好地满足我们的要求。

成本函数

对于cost function,我们先定义一些变量。system cost C [$],latency L[sec],power consumption P[W]。接着我们对这三个都有一个估计函数,然后我们可以得到的是: 这里写图片描述 在这里,我们可以看到对于这个函数我们对于不同的变量已经做了加权,我们需要的是进行最优化问题。 所以就有了一个问题: 这里写图片描述

分区方法

确定的方法(exat method)

枚举法

枚举法就是一个一个列出来,然后找出最好的那个。这就是枚举,这样的枚举对于很大数据的时候就很让人心塞啊!

ILP(integer linear programs)

ILP是进行多目标优化的算法,这个算法非常重要。接下来会详细介绍这个算法。 这里写图片描述 在这里说到ILP的组成:开销函数和约束函数。我们的目标就是在满足约束的条件下最小化开销函数。 接下来我们来说一下0/1 IP问题,就是加权系数为0或者1。 举一个例子比什么都好: 这里写图片描述 我们再把这个问题转化为一般问题: 这里写图片描述 下面在举一个例子: 这里写图片描述 使用ILP的好处是可以增加约束,现在很多都在用这种方法。 就上面那个实际问题,那么我们怎么列出代码呢? syms x1 x2 x3 x4; a = [5 15 10 30 10 20 10 10]; x = [x1;x2;x3;x4;(1-x1);(1-x2);(1-x3);(1-x4)]; f = a*x; lb = zeros(4,1); ub = ones(4,1); fx = [-5;-5;0;20]; A = [1 1 1 1]; b = 2; Aeq = [1 1 1 1]; beq = 2; intcon = 3; schedule = intlinprog(fx,intcon,A,b,Aeq,beq,lb,ub) disp('最后可以得到最短时间为'); subs(f, [x1 x2 x3 x4] ,[ schedule(1) schedule(2) schedule(3) schedule(4)]) 这里写图片描述 采用这种方法还可以进行最大化问题: 这里写图片描述 整数规划是一个完全NP问题。在实践中,运行时间可能指数增长,但是几千个变量也可以被解决。IP模型可以作为heuristic optimization method的起点。 接下来举一个例子你就对于ILP更加了解了。 这里写图片描述 matlab代码如下: f = [10 5 8 4 2]; intcon = 1:5; A = [-3,2,-4,1,-1;2,-1,4,-1,1]; b = [-4;5]; Aeq = []; beq = []; lb = zeros(5,1); ub = ones(5,1); disp('第一题求得最优解为'); x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub) disp('求得最小值为'); f*x 运行结果为: 这里写图片描述

启发式方法(heuristic method)

constructive methods

random mapping
hierarchical clustering

iterative methods

Kernighan-Lin algorithm
simulated annealing
evolutionary algorithms
未完,待续。。。