rdtscl函数的指令周期为什么不一样

朽木可雕 2015-10-14 08:52:48

驱动中的代码
preempt_disable();
rdtscl(start);
rdtscl(end);
preempt_enable();

printk("big end - start %lu\n",end - start);

输入命令:echo "123" > /dev/scull_char0

没有加入非抢占的preempt_disable的代码
[53611.182403] big end - start 48
[53611.548697] big end - start 120
[53611.842520] big end - start 140
[53612.226049] big end - start 120
[53612.552272] big end - start 120
[53612.888664] big end - start 140
[53613.247085] big end - start 120


加入非抢占的preempt_disable的代码
[53688.269852] big end - start 120
[53689.148889] big end - start 120
[53710.049073] big end - start 96
[53710.359387] big end - start 120
[53710.670128] big end - start 120
[53710.981119] big end - start 140


为什么open指定的两个rdtscl指定的时间会有不一致的情况呢?
理论上rdtscl的时钟周期应该是固定的啊
...全文
314 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2015-10-21
  • 打赏
  • 举报
回复
The RDTSC instruction is not a serializing instruction. It does not necessarily wait until all previous instructions have been executed before reading the counter. Similarly, subsequent instructions may begin execution before the read operation is performed. If software requires RDTSC to be executed only after all previous instructions have completed locally, it can either use RDTSCP (if the processor supports that instruction) or execute the sequence LFENCE;RDTSC. 从intel手册上抄的,不知道not serializing是不是关键
朽木可雕 2015-10-21
  • 打赏
  • 举报
回复
引用 5 楼 nswcfd 的回复:
http://blog.csdn.net/solstice/article/details/5196544 3. 测不准
太感谢了正是我想找的资料。
nswcfd 2015-10-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/solstice/article/details/5196544 3. 测不准
朽木可雕 2015-10-20
  • 打赏
  • 举报
回复
引用 2 楼 nswcfd 的回复:
可能跟cpu流水线的工作方式有关吧。 为了让结果更可靠,建议多次循环取平均值。
流水线为什么什么会对时间影响这么大呢 ,应该只有几个指令周期的才对啊。为什么最小的才48最大的都140了这个不符合逻辑啊。
nswcfd 2015-10-19
  • 打赏
  • 举报
回复
可能跟cpu流水线的工作方式有关吧。 为了让结果更可靠,建议多次循环取平均值。
朽木可雕 2015-10-15
  • 打赏
  • 举报
回复
各位大神求解答,小菜在此感激不尽。
内容概要:本文围绕城市场景下的无人机三维路径规划问题,提出了一种新颖的多目标粒子群优化算法(NMOPSO),旨在解决高维复杂环境中路径规划面临的多重挑战。研究聚焦于导航变量的多目标优化,构建了一个包含路径长度、飞行安全性、能量消耗等多个相互冲突目标的优化模型,并采用改进的粒子群算法进行高效搜索,最终获得一组Pareto最优解集,为实际决策提供多样化路径选择方案。该方法结合Matlab代码实现,详细阐述了算法的设计机制、数学建模流程及仿真验证过程,充分展示了其在密集城市建筑环境中有效规避障碍物、满足飞行动力学约束并实现多目标权衡的能力,具有较强的工程应用价值。; 适合人群:具备一定优化算法理论基础和Matlab编程能力,从事无人机路径规划、智能交通系统、自动化控制、人工智能应用等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市环境中的无人机物流配送、巡检监控、应急救援等实际任务的三维路径规划;②为高维、非线性、多约束的多目标优化问题提供有效的算法设计思路与改进参考;③通过Matlab仿真平台复现算法,进一步开展性能测试、参数调优与算法对比研究,推动相关领域的技术创新。; 阅读建议:此资源强调算法原理与工程实践的深度融合,建议读者重点研读目标函数的构建方式、约束条件的处理策略以及NMOPSO算法的核心改进机制,并务必动手运行和调试所提供的Matlab代码,以深入理解算法在三维空间路径优化中的具体实现细节与实际表现。
内容概要:本文档围绕基于10机39节点的电力系统仿真展开,依托Matlab/Simulink平台构建标准电力系统模型,系统性地实现了电力系统稳态与暂态过程的仿真分析。内容涵盖潮流计算、短路故障、暂态稳定性、N-k故障分析、蓄意攻击与级联故障模拟等核心问题,并引入混合整数线性规划(MILP)等优化方法进行电网脆弱性评估与关键故障筛选。文档突出科研复现导向,整合了状态估计、虚假数据注入攻击、优化算法等前沿技术的交叉应用,具有较强的理论深度与工程实践价值。; 适合人群:具备电力系统基本理论知识和Matlab/Simulink仿真能力的研究生、科研人员及电力工程技术人员,特别适用于从事电力系统稳定性分析、安全防护、故障演化机制与优化调度等领域研究的专业人士。; 使用场景及目标:① 掌握10机39节点系统的建模方法与仿真流程;② 学习并复现电力系统典型故障(如短路、N-k故障、级联故障)的建模与动态响应分析;③ 理解基于MILP的电网脆弱性评估、攻击策略建模与故障传播机制;④ 结合优化算法开展电力系统安全防御、恢复策略与韧性提升研究。; 阅读建议:建议结合文档中标注的“顶级EI复现”“核心论文复现”等标签,重点关注模型构建逻辑与代码实现细节,优先运行仿真案例以理解其物理背景与数学建模原理,同时深入分析故障场景设定、目标函数设计及优化求解策略的工程意义与学术价值。

4,469

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧