KPN(Kahn Process Networks),即卡恩进程网络,是一种应用于数据流建模的模型,描述了进程间网络图,直观的显示进程之间的交互。
一、KPN模型特性
1、一种并行程序设计语言
2、进程通过一个拥有无限容量的单向First-In-First-Out(FIFO)通道,以点对点的方式进行通信
3、阻塞式读取:当通道为空时,写操作将会被阻塞直到有数据被写入通道
4、非阻塞式写入:进程往通道中写入数据的操作,永远不会被阻止
5、图形化表示如下,如图所示,节点表示进程,边表示单向通道,对于一个节点来说,入边表示输入,出边表示输出
二、KPN的假设条件及约束
1、进程之间只能通过FIFO通道进行通信
2、通道中传输信息的时间应当是不可预测但有限的
3、在任何时刻,进程总在计算或等待一个输入通道的信息
注意:没有两个进程可以往同一个通道中发送信息
4、每个进程都跟随着一个连续的程序
三、KPN性质
1、单调性(monotonicity)
如图所示,不管输入X是什么,它都是之前的输出Y‘的子集。(每次输入的信息实际上是通过输出得到的)
解析如下:
? 一个进程接收到的输入越多会导致其输出也越多
? 一个进程不需要接收到所有的输入才开始计算:未来的输入只与未来的输出相关
2、确定性(determinacy)
一个进程网络是确定的:当进程的所有通道的历史读写序列只与输入的历史序列相关
在一个确定的进程网络中函数的行为与时间无关
一个由单调进程组成的KPN是确定的
? 增加不确定性(非单调行为)
① 允许进程非阻塞式读取
② 允许两个甚至更多进程在同一个通道中进行读写操作
③ 允许进程共享变量
3、同步数据流(SDF,Synchronous Data Flow)
? KPNs的约束
① 允许编译时调度
② 每个进程在每次触发时进行固定数目的读/写(事先确定)
? 调度两步走
① 为进程建立相应的执行率(求解线性方程组)
② 确定周期性的调度
这种调度可以在缓存中没有数据的时候进行。
? 有n个进程的SDF的拓扑矩阵
① 连通的SDF有周期性的调度,当且仅当M满足r = n-1(Mq = 0有一个唯一最小整数解)
② 对一个不相容的SDF,M满足r = n(Mq = 0 只有全零解)
③ 对一个不连通的SDF,M满足r < n-1(Mq = 0有两个或者更高维度的解)
? 示例
n =3, rank(M)=3,不相容SDF:此时不存在可能的策略去运行,因为不允许无限累积
四、参考
? 嵌入式系统之KPN网络图(Kahn Process Networks) http://blog.csdn.net/c602273091/article/details/40871903
? MPSoC平台KPNs(Kahn Process Networks)建模