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的时钟周期应该是固定的啊
...全文
336 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
  • 打赏
  • 举报
回复
各位大神求解答,小菜在此感激不尽。
内容概要:本文提出并实现了一种基于Transform-KAN混合架构的电力负荷预测模型,旨在通过融合Transformer在长序列建模中的注意力机制优势与Kolmogorov-Arnold Network(KAN)在函数逼近方面的高精度非线性拟合能力,显著提升负荷预测的准确性与鲁棒性。研究系统阐述了模型的整体结构设计、输入特征工程、训练流程及关键超参数配置,并利用真实电力系统历史数据进行多步预测实验,验证了该方法在处理非线性、非平稳负荷序列时的优越性能。重点探讨了新型神经网络结构在时间序列预测任务中的创新应用,为复杂电力系统负荷的精准预估提供了有效的技术路径。; 适合人群:具备一定编程基础和机器学习知识,从事电力系统、能源管理或时间序列预测相关研究的研发人员,尤其适合工作1-3年希望深入理解前沿预测模型的技术人员。; 使用场景及目标:①应用于电网调度、能源管理系统中对未来电力负荷的精确预测;②探索Transformer与KAN等新兴神经网络模型在实际工业场景中的融合设计与实现方法;③为学术研究提供可复现的高性能负荷预测基准方案。; 阅读建议:此资源以Python代码实现为核心,强调理论与实践相结合,建议读者在学习过程中仔细研读模型架构细节,动手运行并调试代码,结合实验结果深入理解各模块的作用与优化策略,从而全面掌握该先进预测方法的设计精髓。

4,469

社区成员

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

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