嵌入式实验EX1:Kahn Process Networks and Synchronous Data Flows

来源:互联网 发布:href javascript void 编辑:程序博客网 时间:2024/05/21 10:01
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是否相容的三条法则

        ① 连通的SDF有周期性的调度,当且仅当M满足r = n-1(Mq = 0有一个唯一最小整数解)

        ② 对一个不相容的SDF,M满足r = n(Mq = 0 只有全零解)

        ③ 对一个不连通的SDF,M满足r < n-1(Mq = 0有两个或者更高维度的解)

    ▶  示例1

        

       上假如有数字,代表初始化的记号(token)/延迟的数量,没有默认为1

        n =3, rank(M)=3,有r=n

        不相容SDF:此时不存在可能的策略去运行,因为不允许无限累积

        注:

        ① r为矩阵的秩,也就是列空间的维数,将方程进行初等行变换,最终剩下的主元数目即为矩阵的秩

        ② 求最小正整数解:将方程进行初等行变换后用一个一个变量,然后令最小的那个为1,最后再看看有没有非整数的,将所有变量扩大K倍变成整数,最后得到的最小正整数解就是相对运行率。

    ▶  示例2

       

 

      

 

 四、参考

      • 嵌入式系统之KPN网络图(Kahn Process Networks) http://blog.csdn.net/c602273091/article/details/40871903

      • MPSoC平台KPNs(Kahn Process Networks)建模

 

 

                

0 0