【问题标题】:Does 8086 initiate a 1-byte code fetch when there's only 1 byte left in the prefetch queue?当预取队列中只剩下 1 个字节时,8086 是否会启动 1 个字节的代码提取?
【发布时间】:2021-04-14 05:35:25
【问题描述】:

我知道8086架构有一个6字节的预取队列。

我的问题是,一旦一条指令移至执行单元并且队列中有空闲空间,总线接口单元是否会获取另一条字节大小的指令?或者它是否等待某些特定数量的字节被释放后才再次开始获取?

【问题讨论】:

  • 做了一些研究并找到了答案。在 SO 上找不到与我的问题相关的任何内容,因此请回答我自己的问题。

标签: x86 cpu-architecture x86-16


【解决方案1】:

BIU 被编程为在队列有空间容纳一个(8088)或两个(8086)额外字节时获取一条新指令。

来源:http://ee.sharif.edu/~sakhtar3/articles/8086/8086%20Architecture.htm

【讨论】:

  • 这是有道理的。大多数 8086 指令都是 4 字节或更短,因此让它减小到该大小不太可能立即停止下一次解码。积极地开始一个 1 字节的提取是不好的,因为内存本身没有流水线化,并且在提取完成之前可能还有超过 1 个字节的空间,浪费了提取带宽(这是 8086 的瓶颈,尽管几乎没有那么多显然是8088)。也增加了与数据访问的竞争,并且 push/pop/ret 是常见的 1 字节指令。
猜你喜欢
  • 2015-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 2016-10-29
  • 2012-12-25
  • 2010-11-22
  • 2018-04-10
相关资源
最近更新 更多