2021.03.08
总结:ARM/MIPS核间迁移,平均切换时间ARM->MIPS 272ms、MIPS->ARM 344ms
我猜之所以叫CMP(Chip Multi-Processor)是为了和服务器群里的Nodes Multi-Processor区分。CMP简写的定义出现W.2018.process_migration.venkat.thesis.5.pdf。
(1/12) Introduction
~~提到有“机器间的进程迁移”,期待它给出引用,但是没有,~~Related Work有详细展开说明,有引用!
Prior work on migration among heterogeneous systems has only considered migration among heterogeneous machines (e.g., among nodes in a grid), not among heterogeneous cores in a CMP.
原理简述:
- 在检查点做迁移,
- 若要在非检查点做迁移,则二进制翻译执行到检查点,然后检查点做迁移。
(0.7/12) Related Work
2类可借用的技术:
- 机器间的进程迁移,指cluster、grid、distributed system
- 检查点保存&恢复(CPR,Check-Pointing and Recovery)
(0.5/12) Overview of Migration
(1.5/12) Memory Image Consistency
代码段一致:保证2个ISA的函数的起始虚拟地址相同(ELF的物理地址不一样,但可以保证加载的虚拟地址一样)。但是调用函数的指令的虚拟地址空间没法做到相同,这个需要翻译时解决(应该是要去解决调用栈的问题)。
(果然)栈很棘手:说了参数数量、变量保存问题,~~但是没有说调整函数返回指针的问题。~~第5节在说调整函数返回指针。
(1.5/12) Migration Process
一个独立的软件Stack Transformer、ELF中包含编译器导出的辅助信息,于是可以
- 产生目的ISA的寄存器状态
- 调整函数返回指针
- 调整栈中局部变量
文章没有说明调整函数返回指针的方法。这一节大段内容在讲局部变量和寄存器的调整。
(1.5/12) Binary Translation
(0.5/12) Experimental Methodology
使用M5(GEM5)模拟2个核。
(3.5/12) Results
- 新的ELF在单核执行效率(不切换核):ARM降低3.1%,MIPS降低1.6%。
- 换核的开销
- 二进制翻译
- 操作系统,文章没有运行异ISA操作系统!!!因此没有统计
- 转换(比如栈)
- 两次函数调用之间的平均指令间隔:可以通过添加dummy函数降低
- 二进制翻译的开销
- 指令膨胀率:小于3
- 算上翻译代码的指令膨胀率:小于350你
- 时间开销