【问题标题】:how many instructions can be stored in instruction queue of 8086 microprocessor?8086微处理器的指令队列中可以存储多少条指令?
【发布时间】:2018-01-25 07:42:59
【问题描述】:

我认为,由于英特尔微处理器的内存是按字节组织的,指令队列的大小是 4 个字节,答案应该是 4 条指令?

【问题讨论】:

    标签: x86 intel cpu-architecture instructions microprocessors


    【解决方案1】:

    8086 和 8088 芯片具有预取队列。这些存储了从指令指针(和代码段)“前面”的内存中预取的一些字节。这允许处理器在原本空闲的总线周期中做一些“有用的”事情。

    8088 预取队列有四个字节深。 8086 队列有六个字节深。

    同样,这些不对应于指令数量,而是对应于字节数。

    因此,您的问题的答案是多达四(或六)条(单字节)指令,甚至不是一条完整的指令(对于较长的指令)。

    顺便说一句:8088 的队列更小,因为它的 8 位总线很小,这意味着可用的空闲周期更少,而更大的队列会减慢处理速度。 8086 可以在 3 个总线周期内填充其队列,8088 需要四个周期来填充其较小的队列。

    【讨论】:

    • 为什么更大的预取队列会使 8088 变慢?在解码指令之前不必等待缓冲区填满,是吗?即一个字节的xchg ax, cx 可以在获取它后立即解码和执行,即使它是缓冲区中唯一的字节,对吧?我猜想 8088 并没有从更大的队列中受益,因此将其与总线宽度一起减少是有意义的,只是为了减少晶体管数量。
    • 不,指令可以在获取后立即解码。这个问题是总线使用。如果进行过多的预取,它们可能会干扰数据提取。 8086 可以在短短 12 个时钟周期内填充一个 6 字节队列。 8088 需要 24 个时钟来填充一个 6 字节队列,而一个 4 字节队列只需要 16 个时钟。
    • 好的,对,但是数据加载/存储的优先级不高于指令(预)获取吗?我猜即使这样,如果指令字节加载正在进行中,下一次数据访问仍然需要等待下一个非完全流水线内存访问的插槽。所以缓冲区实际上经常填充,足以对 8088 产生影响?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多