全部博文(436)
分类: LINUX
2012-12-16 23:58:26
1、 PIE怎么定义
在异构多核处理器中一个直接的方法以确定最佳的调度策略是基于采样的调度,采样调度将不同的样本的数据收集之后选出最好的进行映射(?)尽管这个方法很好执行,它统计的开销是取决于不同类型的核心的周期变化的工作量,除此之外,这些开销是随着核心的类型和数量的增加而增加的,为了解决这个弊端,我们建议使用PIE
PIE的思想是评估(而不是采样)不同核心上的工作性能。PIE用CPI堆栈段来实现评估。我的理解是:PIE就是对一些任务的指标进行评估之后为其选择更为合适的核心类型来执行,从而达到了合理分配的效果,能够更加合理的使用资源,从而提高性能。
比如,如果较小的任务用大核就可能浪费空间,而较大的任务用小核又不能完成。所以任务的分配很重要。将不同的任务进行合理的分配,能够提高系统的性能。
2、 操作系统在执行过程中怎么获取这个信息?操作系统如何利用获取的信息进行调度?
在CPI堆栈段上我们着重于两个主要的部分:基本段和寄存器段
即:CPI = CPIbase+ CPImem.
图2表明:MLP和ILP是提供大核和小核之间的性能差异的很好的指标,因此我们用MLP,ILP和CPI的信息来建立我们的PIE模型。
我们用以下的方式在大核上对小核心进行性能评估
CPIsmall=CPIbase-small+CPImem-small=CPIbase-small+ CPImem-big× MLPratio.
类似的,我们在小核上对大核心进行性能评估
CPIbig=CPIbase-big+CPImem-big=CPIbase-big+CPImem-small/MLPratio.
在上面的公式中CPIbase-big是指在小核心上测得的大核心的基础段的内容。其他的是类似的
3、 动态调度
到目前为止,PIE调度在一个静态的设置,即,评估
的工作量被安排在一个给定的核心,它的整个执行将延迟
从图8中观察到的一个关键是,虽然相对于大核来说小核的延迟率很高,但是小核在一些执行阶段是优于大核的。
PIE是适合任何数量和任何类型的核心的评估方法。
PIE需要一些硬件支持来收集CPI堆栈段的信息,以及漏掉信息的数量和动态执行的信息。
PIE用硬件的支持在当前的核心类型上来计算CPI栈,MLP和ILP,然后预测在其他的核心类型上的MLP和ILP。这些预测数据被送入PIE模型去评估另一种类型的核心的性能。对于一个给定的性能评估表来说,PIE利用这些估计,并与给定的性能表上的数据进行比较以确定是否有其他的调度决策有可能提高系统整体的性能。如果可以,将工作任务送入预测好的核心里重新调度,如果不行就继续进行下一项。
问题:就如PIE的动态调度所说,如果使用PIE的话,这样便评估边修改的策略,会不会反而降低操作系统执行任务时的效率呢?