该任务针对架构 ColdFire 处理器 MCF5271:
我不明白执行到 CPU 的长字传输或字传输需要多少个周期以及什么大小的周期。我正在阅读图表,但不明白其中有何联系?非常感谢任何评论。我附上了两个例子和答案。
数据总线大小 https://i.stack.imgur.com/lUmjK.png
The MCF5271说明书 https://www.nxp.com/docs/en/reference-manual/MCF5271RM.pdf第 17 章讨论了处理器的外部接口。处理器通过 32 位外部数据总线实现了字节可寻址地址空间。 D[31:0]信号代表数据总线,A[23:0]信号代表地址总线,BS[3:0](低电平有效)信号代表字节使能信号。尽管数据总线是32位宽,但与其连接的存储器模块可以是32位、16位或8位宽。这称为内存端口大小。该章的图 17-2 显示了所有这些信号如何相互关联。
同一章的表 17-2 显示了支持的传输大小(由称为 TSIZ[1:0] 的信号指定)。
A[0] 和 A1 https://www.nxp.com/docs/en/reference-manual/MCF5271RM.pdf地址信号指定传输的对齐方式。内存对齐在同一章的 17.7 节中定义。
因为操作数可以驻留在任何字节边界,这与
操作码,它们允许不对齐。字节操作数是
在任何地址正确对齐,字操作数在某个地址未对齐
奇地址,并且长字在非奇地址处未对齐
四的倍数。尽管MCF5271强制不对齐
数据操作数的限制(包括程序计数器(PC)
相对数据寻址),需要额外的总线周期
未对齐的操作数。
将所有这些信息放在一起,我们可以轻松确定通过大小为 1 字节的内存端口将 1 字节、2 字节、4 字节数据传输到任何内存位置(对齐或未对齐)需要多少个周期, 2 字节或 4 字节。
让我们考虑一下您所附图像中的示例。如何通过32位内存端口在地址0x0000003处存储长字?重点关注端口大小为 32 位的行。我们有 A[1:0] = 11。因此,首先必须使用 BS[3:0] = 1110 执行单字节传输。其他三个字节需要传输到位置 0x0000004 (A[1:0] = 00)、0x0000005 (A[1:0] = 01) 和 0x0000006 (A[1:0] = 10)。这可以使用三个单字节传输(这将需要三个周期)或使用单个两字节传输后跟单个一字节传输(这将需要两个周期)来完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)