当前位置: 首页 > 知识库问答 >
问题:

解码指令模式

卞嘉许
2023-03-14

我正在分析Agner Fog的《优化汇编语言中的子例程:x86平台的优化指南》。尤其是我正在努力理解第12.7章。还有一个问题我无法理解。作者写道:

PM处理器中的指令解码遵循4-1-1模式。示例12.6b中循环中每条指令的(融合)μops模式为2-2-2-2-2-1-1-1。这不是最优的,解码需要6个时钟周期。这超过了失效时间,因此我们可以得出结论,在示例12.6b中,指令解码是瓶颈。总执行时间为每次迭代6个时钟周期或每次计算的Y[i]值3个时钟周期。

  1. 指令解码遵循4-1-1模式是什么意思,怎么知道?
  2. 循环模式2-2-2-2-2-1-1-1。好吧,但是为什么需要6个周期来解码我不知道。为什么?

共有1个答案

邴俊民
2023-03-14

>

  • CPU的前端可以在一个时钟周期内解码多个(宏)指令。每个宏指令解码为1个或多个微操作(μops)。4-1-1模式的意思是第一个并行解码器可以处理解码高达4μops的复杂指令。但第二个和第三个并行解码器只能处理每个解码为1μop的指令(如果不满足,它们不会消耗指令)。

    解码为2μops的5条指令必须由第一个解码器使用,然后尾部允许一些并行性。

    2 2 2 2 2 1 1 1 (Macro-instruction stream, μops per instruction)
    ^ x x
    4 1 1  (Decode cycle 0)
    
    . 2 2 2 2 1 1 1
      ^ x x
      4 1 1  (Decode cycle 1)
    
    . . 2 2 2 1 1 1
        ^ x x
        4 1 1  (Decode cycle 2)
    
    . . . 2 2 1 1 1
          ^ x x
          4 1 1  (Decode cycle 3)
    
    . . . . 2 1 1 1
            ^ ^ ^
            4 1 1  (Decode cycle 4)
    
    . . . . . . . 1
                  ^ x x
                  4 1 1  (Decode cycle 5)
    
    . . . . . . . . (Instruction stream fully consumed)
    

  •  类似资料:
    • 在此我先讲指令解码,然后再讲取指令。 因为要理解取指令时发生的延迟,你必须先知道解码器的工作原理。 只有在一些条件满足的情况下,解码器才能在一个时钟周期内解码3条指令。 解码器D0能够处理所有的在一个时钟周期内最多产生4条微码的指令。 解码器D1和D2只能处理那些只产生1条微码的指令,而且那些指令长度不能超过8字节。 概述同一个时钟周期内解码2或3条指令的规则如下: 第一条指令(由D0解码)产生的

    • wx:if 预期: any 用法: 根据表达式的值的 truthiness 来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。 注意:如果元素是 <block/>, 注意它并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。 WARNING 当和 wx:if 一起使用时,wx:for 的优先级比 wx:if 更高。详见列表渲染教程 参考: 条件渲染 -

    • 本文向大家介绍AngularJS指令详解及示例代码,包括了AngularJS指令详解及示例代码的使用技巧和注意事项,需要的朋友参考一下 AngularJS指令用于扩展HTML。这些都是先从ng- 前缀的特殊属性。我们将讨论以下指令: ng-app - 该指令启动一个AngularJS应用。 ng-init - 该指令初始化应用程序数据。 ng-model - 此指令定义的模型,该模型是变量在Ang

    • 本文向大家介绍Dockerfile指令详解,包括了Dockerfile指令详解的使用技巧和注意事项,需要的朋友参考一下 什么是Dockerfile Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器

    • Dockerfile 指令详解 我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,其实 Dockerfile 功能很强大,它提供了十多个指令。下面我们继续讲解其他的指令。

    • blue-highlight.directive.ts yellow-highlight.directive.ts app.module.ts 让我们看看我们如何在模块的唯一组件中使用它。 app.component.ts 我们允许将多个指令用在同一模块中的相同元素上。Angular将按顺序进行每个转换每个指令。 因为我们已经在数组中定义了两个指令,并且数组是有序集合的项,当编译器找到具有属性的元