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.

原理简述:

  • 在检查点做迁移,
  • 若要在非检查点做迁移,则二进制翻译执行到检查点,然后检查点做迁移。

2类可借用的技术:

  1. 机器间的进程迁移,指cluster、grid、distributed system
  2. 检查点保存&恢复(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你
    • 时间开销

(0.25/12) Conclusion