0

假设我们有一个简单的处理器,可以是一个嵌入式系统,有一个系统总线,为了论证,一个 32 位总线。

现在,如果我们有几个外设,例如一个名为 PER0 的外设连接到总线,我们可以做两件事:

  1. 允许它以固定宽度访问主总线,例如 8 位,这样 PER0 将始终以 8 位封装与总线通信。这我们可以称之为静态宽度访问

  2. 允许它通过使用告诉处理器它想要使用的访问模式的信号来选择如何根据数据大小与总线通信。例如,我们在处理器和 PER0 之间创建两个信号 A1 和 A0,其值将显示:

    00 - 等待
    01 - 8 位
    10 - 16 位
    11 - 32 位

    因此处理器将根据 A1、A0 的值知道是向其总线发送 8 位数据还是 32 位数据。这我们可以称之为 总线的动态宽度访问。

问题: 根据您的经验,这两种方法中的哪一种更受欢迎,为什么?另外,在哪些情况下应该实施?最后,考虑到嵌入式系统,哪种方法传播得更广?

编辑:我想扩展这个话题,所以我不是在询问个人喜好,而是关于这两种方法的更多信息,以及它们在计算机系统中的应用。因此,我认为这有资格作为一个合法的 stackoverflow 问题。

谢谢!

4

1 回答 1

1

有多种考虑。自然,动态宽度将允许更好地利用带宽,以防您的事务中有多种大小。另一方面,如果您传输大约 8 个字节,然后再传输 8 个字节,则与基线相比,您的开销增加了一倍(一次性传输完整块,假设您可以缓存它直到它完全消耗)。所以基本上你需要知道你能提前知道你需要哪些块。

关于在 CPU 和 DRAM 之间使用这种动态大小的事务的可能性有一篇有趣的论文:

自适应粒度内存系统:存储效率和吞吐量之间的权衡

在那里您可以看到冲突,因为很难判断您将来需要哪些事务以及仅带来部分数据是否会导致降级。他们努力实施预测器来尝试推测这一点。请注意,这仅适用于您处理连贯记忆的情况。

于 2013-11-08T12:05:50.550 回答