执行长字传输到 CPU 需要多少个周期和大小

2024-02-01

该任务针对架构 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(使用前将#替换为@)

执行长字传输到 CPU 需要多少个周期和大小 的相关文章

  • 考虑到指令具有不同的长度,CPU 如何知道下一条指令应该读取多少字节?

    所以我正在读一篇论文 其中他们说静态反汇编二进制代码是不可判定的 因为一系列字节可以用多种可能的方式表示 如图所示 其 x86 所以我的问题是 那么CPU是如何执行这个的呢 例如 在图中 当我们到达 C3 之后时 它如何知道下一条指令应该读
  • 了解 lfence 对具有两个长依赖链的循环的影响,以增加长度

    我正在玩代码这个答案 https stackoverflow com a 50496379 5801661 稍微修改一下 BITS 64 GLOBAL start SECTION text start mov ecx 1000000 loo
  • intel core i7 处理器使用哪种缓存映射技术?

    我了解了不同的缓存映射技术 例如直接映射和完全关联或集关联映射 以及这些技术之间的权衡 维基百科 https en wikipedia org wiki Cache placement policies 但我很好奇现在Intel core
  • int 变量的大小

    int的大小是如何决定的 int 的大小是否真的取决于处理器 对于 32 位机器 它是 32 位 对于 16 位机器 它是 16 在我的机器上 它显示为 32 位 尽管该机器安装了 64 位处理器和 64 位 Ubuntu 这取决于实施 C
  • 如何在 C# 中获取每个核心的 CPU 负载?

    如何在 C 中获取每个核心 四核 cpu 的 CPU 负载 谢谢 您可以使用 WMI 或 System Diagnostics 命名空间 从那里您可以获取任何您想要的性能计数器 但是需要一秒钟 1 1 5秒 来初始化这些计数器 读取值是可以
  • CPU 和数据对齐

    如果您觉得这个问题已经被回答了很多次 请原谅我 但我需要以下问题的答案 为什么数据必须对齐 在 2 字节 4 字节 8 字节边界上 这里我的疑问是 当CPU有地址线Ax Ax 1 Ax 2 A2 A1 A0时 很有可能按顺序寻址内存位置 那
  • Intel x86 与 AMD x86 CPU 上的访问性能不一致

    我已经实现了一个带有结构内存布局数组的简单线性探测哈希图 该结构包含键 值和指示条目是否有效的标志 默认情况下 该结构体由编译器填充 因为键和值是 64 位整数 但该条目仅占用 8 个布尔值 因此 我也尝试以未对齐访问为代价来打包结构 由于
  • 如何将数据直接写入显存?

    程序员有什么办法可以直接将数据写入显存吗 我知道操作系统对此非常严格 但是某些类型的应用程序 例如视频播放器或电脑游戏 如何将其数据直接写入视频内存 我知道有很多知名的库 例如 OpenGL 但它们毕竟只是普通的库 它们和我和你写的程序没有
  • CPU如何对指令重新排序

    我最近读到了有关 CPU 指令重新排序以提高效率的内容 但我无法理解CPU如何重新排序其指令 我的意思是编译时重新排序是可以想象的 因为编译器可以预见即将到来的代码 但是对于一个接一个地读取指令的CPU 它如何看到即将到来的指令并对它们重新
  • 为什么较长的管道会导致单个延迟槽不够用?

    我在 Patterson Hennessy 的文章中读到了以下声明计算机组织与设计教科书 随着处理器使用更长的管道并在每个时钟周期发出多个指令 分支延迟变得更长 并且单个延迟槽是不够的 我可以理解为什么 每个时钟周期发出多个指令 会使单个延
  • “机器硬件”和“硬件平台”的区别

    我的 Linux 机器报告 uname a 输出如下 root tom i386 uname a Linux tom 2 6 9 89 ELsmp 1 SMP Mon Apr 20 10 34 33 EDT 2009 i686 i686 i
  • MIPS 中的影子寄存器是什么以及它们如何使用?

    当我了解 MIPS 架构时 我遇到了影子寄存器 据说它们是通用寄存器的副本 我无法理解以下内容 何时使用影子寄存器 MIPS 影子寄存器用于减少处理中断时的寄存器加载 存储开销 分配了影子寄存器组的中断不需要保存任何现有上下文来提供空闲寄存
  • Django 开发服务器 CPU 密集型 - 如何分析?

    我注意到本地 windows7 机器上的 django 开发服务器 版本 1 1 1 正在使用大量 CPU 根据任务管理器的 python exe 条目 约为 30 即使处于空闲状态 即没有请求到来进 出 是否有一种既定的方法来分析可能造成
  • (n - 乘法) 与 (n/2 - 乘法 + 2 加法) 哪个更好?

    我有一个具有 n 次乘法 n 次乘法的单次乘法 的 C 程序 并且我发现了另一个具有 n 2 次迭代 1 次乘法 2 次加法 的逻辑 我知道两者的复杂度都是 O n 但就CPU周期而言 哪个更快 在您的计算机上测试 或者 查看您的处理器的规
  • Aarch64 什么是延迟转发?

    中提到了 延迟转发 Arm Neoverse E1核心软件优化指南 https developer arm com documentation swog466751 a 以及其他一些 CPU 型号的优化指南 Instruction Grou
  • Linux:如何对系统内存施加负载?

    我正在开发一个小功能 它可以让我的用户了解 CPU 的占用情况 我在用着cat proc loadavg 它返回众所周知的 3 个数字 我的问题是 当我正在开发时 CPU 目前没有做任何事情 有没有一种好方法可以在CPU上产生一些负载 我在
  • 手臂“版本”之间的差异? (仅限 ARMv7)

    基本上我想知道ARMv7l和ARMv7之间的区别hl 我有一个带有armv7l的arm处理器 并且有很多armv7的rpmhl 我完全不知道我必须搜索什么才能获得相关信息 这个 后缀 叫什么 还有其他类型吗 他们的做法有何不同 我假设它指示
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 增加 C++ 程序 CPU 使用率

    我有一个用 C 编写的程序 每秒运行多个 for 循环 而不使用任何会使其因任何原因等待的东西 它始终使用 2 10 的 CPU 有没有什么方法可以强制它使用更多的CPU并进行更多的计算而不使程序变得更复杂 此外 我在 Windows 计算
  • 为什么在强度降低乘法和循环进位加法之后,这段代码的执行速度会变慢?

    我正在读书阿格纳 雾 https en wikipedia org wiki Agner Fog s 优化手册 https en wikipedia org wiki Agner Fog Optimization 我遇到了这个例子 doub

随机推荐

  • svn 无法打开 ra_local 会话

    我已经在 Linux 服务器上设置了 svn 我使用以下命令创建了一个存储库 svnadmin create var svn REPOSITORY NAME 然后我在此文件中设置用户访问权限 vi var svn REPOSITORY NA
  • 使用 jQuery 将鼠标悬停在一个元素上并将效果应用于另一个元素

    div class views row div h5 class product name a href Dots a h5 div div class views field div class field content a href
  • mysql (5.1) 插入语法 > col_name=value?

    mysql 有没有办法插入一个newrow 的方式更直接地将值与其列关联起来 而不是table col name values value 当一次插入大量值时 将它们内联列出会变得相当混乱并导致错误 错误 我正在寻找更像的东西UPDATE的
  • 构建阶段创建 Plist 并将其复制到资源包中

    我制作了一个 ruby 脚本 可以从其他格式的数据生成 Plist 该脚本位于 xcode 的项目文件夹内 我已经创建了一个调用我的脚本的自定义运行脚本构建阶段 echo Running xls Plister cd PROJECT DIR
  • google.appengine.ext Python 模块导入错误 没有名为 google.appengine.ext 的模块

    Python 2 7 6 用于 Google App Engine 的 Python 的 Google API 客户端库 谷歌开发者指南 https developers google com api client library pyth
  • dart lang 中的自定义注释/元数据

    谁能给我解释一下 Dart 中注释的使用吗 在文档中 我找到了这个例子 library todo class todo final String who final String what const todo this who this
  • 在 android API29+ 中检测来电和去电

    关于在 android 中检测传入和传出呼叫有很多问题 但它们都很旧 而且 android 不推荐使用有用的功能 并且 google play 拒绝我的应用程序 因为我正在使用它们 为了检测拨出电话 我使用了
  • 在聚合管道、MapReduce 或 runCommand 中使用存储的 JavaScript 函数

    有没有办法使用保存为的用户定义函数db system js save 在管道或mapreduce中 您保存到的任何函数system js可供 JavaScript 处理语句使用 例如 where http docs mongodb org
  • 在android自动完成文本视图中覆盖过滤器结果?

    这几天我一直在纠结这个问题 我试图在android中设置一个自动完成文本视图 其中用户输入一个键 自动完成建议是值 但是我现在已经尝试了大约10种不同的方法 扩展BaseAdapter SimpleAdapter 和现在的 ArrayAda
  • 仅从工作副本中删除文件,但不从存储库中删除文件

    由于我在网上找不到上述问题的答案 所以我自己提出了解决方案 这是一个手动过程 但我找不到任何其他标准解决方案 所以这里是 假设你想删除该文件test txt从目录work 现在 如果您通过以下方式强制删除 test txt rm rf 测试
  • 并非所有代码路径都返回“值”

    您好 我正在尝试制作一个主脑游戏 让用户猜测 4 10 之间的数字序列而不是颜色 但由于某种原因 我的 GetRandomNumberCount 和生成随机数给我错误 并非所有代码路径都返回值 任何指导将不胜感激 public static
  • 构建器模式和大量强制参数

    迄今为止我使用的是下列的 http rwhansen blogspot com 2007 07 theres builder pattern that joshua html构建器模式的实现 与描述的实现相反 here http en wi
  • 如何知道哪个应用程序正在读取或写入文件

    Android 或 Android NDK 中是否有任何方法可以知道哪个应用程序正在磁盘或设备内存上读取或写入数据 您可以在输出中查找您的文件 ls l proc fd 为此 您不需要任何特殊工具或根 解释 每个正在运行的进程都有一个条目
  • Lotus Notes 使用 Java api 按日期搜索

    我试图从 Lotus Notes 数据库中按日期选择记录 但在正确设置日期格式方面遇到了麻烦 这是相关代码 public void runNotes Session s try s NotesFactory createSession St
  • 为什么我会得到负值位移的奇怪结果?

    这个问题不是重复的这个问题 https stackoverflow com questions 1857928 right shifting negative numbers in c 我遇到过一种情况 我可能必须将 正 数字左移负值 即
  • 根据查找表替换数据框中的值

    我在替换数据框中的值时遇到一些问题 我想根据单独的表替换值 下面是我正在尝试做的事情的一个例子 我有一张表 其中每一行都是客户 每一列都是他们购买的动物 我们称这个数据框为table gt table P1 P2 P3 1 cat liza
  • 无法将“cv::VideoCapture”转换为“CvCapture*”

    我有一个简单的程序 可以拍摄视频并播放它 尽管它对视频进行了一些图像处理 可以从对话框结果中检索视频 也可以直接通过给出文件路径来检索视频 当我使用CV CvCapture 捕获1 我得到像 capture1 isOpen 这样的属性 ca
  • RequireJS:如何将变量从一个文件传递到另一个文件?

    我将 require 与骨干 骨干形式一起使用 我目前正在使用 RequireJS 将代码分成多个文件 我将模型存储在单独的文件中 并希望单独保留表单验证器 但是 我无法访问一个文件以及依赖于该文件的另一个文件中定义的变量 我得到的是Unc
  • 如何国际化delphi应用程序[重复]

    这个问题在这里已经有答案了 可能的重复 翻译申请 https stackoverflow com questions 12311926 translate application 国际化用 delphi xe2 编写的应用程序的最佳方法是什
  • 执行长字传输到 CPU 需要多少个周期和大小

    该任务针对架构 ColdFire 处理器 MCF5271 我不明白执行到 CPU 的长字传输或字传输需要多少个周期以及什么大小的周期 我正在阅读图表 但不明白其中有何联系 非常感谢任何评论 我附上了两个例子和答案 数据总线大小 https