知识卡片

把复杂指令拆成标准化的四阶段微操作以平衡译码与执行速度

普通读书笔记卡 · 1811.g

内容

x86一条指令可能同时涉及复杂寻址、运算和标志位更新,按原样解释执行代码复杂度和效率都不理想。JPC把每条运算指令统一拆成取输入操作数、做运算、写输出操数、更新标志位四个标准阶段,再把寻址模式拆成更小微操作。这需在两者间平衡:指令集切得越细译码越快但代码越冗长,切得越粗越紧凑但译码更复杂,最终约750行代码规模是那次优化的实际平衡点而非理论最优。

参考来源

- 位置:《架构之美》第9章《JPC:一个纯Java的x86 PC模拟程序》9.7节《从事一项毫无成功希望的斗争》"微码:少即是多或多即是少"(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0203.xhtml) - 结论依据:原文明确"初始最高级别的分解把每个运算分为4个阶段:输入操作数……运算……输出操作数……标记运算",并说明"我们必须平衡指令集的大小和'编译后'代码的长度……在几次试验后,我们推断……750行左右的代码集表现出很好的平衡效果"。 - 原始内容:初始最高级别的分解把每个运算分为4个阶段:输入操作数……运算……输出操作数……标记运算……在几次试验后,我们推断对于全部整数或浮点的模拟程序而言,750行左右的代码集表现出很好的平衡效果。