Hasty Briefsbeta

双语

Threaded Code

a year ago
  • #Performance Optimization
  • #Virtual Machine
  • #Threaded Code
  • 线程化代码是一种实现虚拟机解释器的技术,最初由James R. Bell在1973年描述。
  • 子程序线程化代码涉及表示虚拟机指令的代码地址序列,但按原始定义并不属于解释性执行。
  • 直接线程化代码使用指令指针执行指令序列,每条指令通过共享或独立的NEXT例程跳转到下一条指令。
  • 间接线程化代码通过代码字段和参数字段引入间接层,允许相似指令共享代码但使用独立数据。
  • 切换线程化采用switch语句实现线程化代码,可能导致现代CPU分支目标缓冲区的高误预测率。
  • 调用线程化将每条虚拟机指令表示为函数,使用全局变量作为寄存器,其效率可能不如切换线程化中的局部变量。
  • 不同线程化技术性能各异,由于分支预测效率优势,直接和间接线程化通常比切换或调用线程化性能更优。
  • 实现可移植的线程化代码可借助GNU C扩展构建机器无关引擎,或通过堆栈效应符号自动生成代码。
  • 历史背景包括代码字段的早期应用,以及从字符串解释到现代实现的线程化技术演进过程。