全部博文(436)
分类: LINUX
2012-12-17 16:07:44
这周阅读的内容是Execution Migration in a Heterogeneous-ISA Chip Multiprocessor这篇文章。我们采取分工阅读的方式,下面是对我与卫其江合作阅读部分要点的归纳以及对一些不懂得问题的总结。
1 heterogeneous chip multiprocessor(异构单芯片多处理器)
这种处理器在上周读到的论文中就有过提及,具体说来,它有多个核心,但是核心彼 此是不一致的,它在执行性能和能源效率上的优势要远远高于同构的单芯片多处理器。为了充分利用这种处理器,就必须要在各个核心之间迁移执行的程序。
由于程序的状态保持在具体的体系结构中,因此迁移的时候,程序的状态势必会发生变化,而这也势必会引起能源的损耗。因此,编译程序被优化来产生一些将他们的大多数状态都保存在中立的体系结构中的程序,这样的话,不偏向于某个核,在迁移的时候会减少耗能。
2 单指令集的异构单芯片多处理器并不能适应所有的要求。因此,需要将指令集进一步扩大,不同的指令来做不同的工作,因此扩展指令集,使不同的指令来做不同的工作。
3 线程发生迁移的可能的原因
(1)计算机的能源状态的改变,比如当计算机变为低电操作状态时,程序会从高性能核心迁移到能源高效率核心。
(2)当一个有极高优先权和极强性能的程序运行时,其他的程序可能会迁移到远离高性能核心的其他核心。
(3)如果一个进入了一个有不同计算需求的新阶段,进程可能会迁移到一个强烈支持新计算类型的核心。
(4)如果一个芯片变得太热,那么在核心上的那片发热区上正在执行的程序可能会迁移到远离此核心。
4 为了最小化迁移时间,那么尽可能地减小迁移时状态的改变是很必要的,那么为了做到这一点,我们必须确保在不同的体系结构下,在整个执行过程中,程序的内存状态几乎是一致的,这样的话,在迁移中,大多数的数据对象不会发生位置的变动,指针也无需改动。
注:这里有不懂的问题:We cannot maintain points of equivalence (where memory state is consistent between the executables) at all instructions in the program without serious performance consequence 这句话应当怎么理解?
5关于迁移的概述。
在有迁移发生时,系统必须做出反映,通常要执行四个操作。
1. 改变页表映射核心
2. 换页表映射代码,以方便迁移核心。
3. 执行迁移,翻译到程序转换点。
4. 在新构架上执行转换程序状态。
迁移的过程通常是在C-free上完成。
在文章中提到了ARM未处理器,同时关于国际审计准则是目前迁移技术要面对的问题。在迁移时,用非常小的状态转换成机器相关形式是迁移的核心。在文章中提到了国际变压器和二进制翻译。二进制表示的编译程序在相同的虚拟地址可以大大的降低延迟,而保持转型的开销是良好性能的关键。
6.关于内存映像的一致性。
为了实现内存映像的一致性,它的每节对象的顺序,大小,数量都是相同的,以便它们的虚拟地址是与国际审计准则是一致的。
体现在四个方面:
1. 全球数据一致性 国际检索单元可以更快的访问数据对象。
2. 代码段的一致性 迁移过程中函数指针是重要的,另一个程序段必须修改,以减少迁移代码部分的成本
3. 堆的一致性
(1.不必要 :堆对象地址在共享空间是动态创建的,不是硬编码到二进制文件的
2.必要:确保迁移程序后,有一个关于内存保留和什么是免费的准确的记录)
4.堆栈的一致性
很多指令是有硬变美的堆栈编码
栈对象的指针会需要固定在迁移过程中
存在问题
1. 翻译问题:
very little state must be transformed to a machine-dependent form during migration
after migration the program has an accurate record of what heap memory is allocated and what is free指的什么?
2.关于专用矢量或密码指令 浮点密集代码或加密代码是什么。
3. 静态数据段是什么数据段。