news 2026/6/10 7:21:18

calibrating delay

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
calibrating delay

这是 Linux 内核启动阶段非常经典的一行:

calibrating delay loop(skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)

你问的是它的原理,下面我把它拆成三步讲清楚:

① BogoMIPS 是什么 → ② 正常情况下怎么算 → ③ 你这里 "skipped / calculated using timer frequency" 是什么原理


一、BogoMIPS 是什么?(一句话)

BogoMIPS = CPU 在一个 jiffy(1/HZ 秒)内能执行多少个“空循环”迭代

  • Bogo​ = bogus(假、无意义)

  • 不是性能基准

  • 用途:为内核里udelay()/mdelay()提供忙等延时校准

void udelay(unsigned long usecs);

内核必须知道:

“我这个 CPU,空转多少次要 ≈ 1μs”

这就是lpj(loops per jiffy)的作用。


二、正常情况:calibrating delay loop ...

正常情况下内核会做运行时校准

步骤概概

  1. 内核知道1 jiffy = 1/HZ 秒(如 HZ=250 → 4ms)

  2. 启动一个固定指令序列的空循环

  3. TSC / arch timer / cycle counter​ 精确测量:

    • 循环多少次 ≈ 1 jiffy

  4. 得到lpj(loops per jiffy)

  5. 计算:

    BogoMIPS = lpj × HZ / 500000

示例:

  • lpj = 4 000 000

  • HZ = 250

  • BogoMIPS = 4 000 000 × 250 / 500 000 =2000


三、你这行的含义:(skipped), value calculated using timer frequency

calibrating delay loop(skipped), value calculated using timer frequency.. 2.00 BogoMIPS (lpj=4000)

✅ 发生了什么?

内核没有做运行时循环校准,而是:

用已知 CPU / timer 频率直接计算 lpj

这是CONFIG_CPU_FREQ / device tree / KVM / QEMU / 模拟器​ 常见行为。


🔧 计算原理(简化)

如果内核知道:

  • CPU/Timer 频率 =FHz

  • 假设每个 delay loop ≈N个 cycles(架构常量)

那么:

lpj ≈ F × (1 / HZ) / N

或从 DT / KVM host 传入:

lpj = (timer_freq / HZ) * loop_cycles_per_tick

你看到:

  • lpj=4000

  • BogoMIPS=2.00

说明:

lpj × HZ / 500000 = 2.00 → HZ=100 → lpj=4000 ✅

这通常出现在:

  • ✅ QEMU / KVM(虚拟 CPU,不跑真实校准)

  • ✅ 设备树给出clock-frequency

  • CONFIG_PRECISE_DELAY_CALIBRATION=n

  • lpj=被 bootargs 指定(或继承自古固件)


四、为什么内核允许“跳过”校准?

因为:

  • 虚拟机 / 模拟器

    • 循环时间不稳定

    • TSC / cycle counter 可能虚拟

  • 固定 SoC

    • CPU 频率已知

    • 算出来的 lpj 足够准 forudelay()

👉 只要udelay()延时大致正确,不需要真跑校准循环


五、什么时候要担心?

不用管,如果:

  • 你是 QEMU / FPGA / 固定频率 SoC

  • lpj与预期同量级

  • 驱动udelay()看起来差不多准

⚠️要注意,如果:

  • 实际 CPU freq 与 DT 中clock-frequency不符

  • udelay(100)明显偏快/偏慢(I2C、SPI 时序怪异)

  • 可强制指定:

    lpj=xxxxxxx

    或开启运行中校准(关闭 skip)


六、一句话总结

calibrating delay loop skipped, value calculated using timer frequency表示:

  • 内核没有跑空循环来测 CPU 速度

  • 而是根据已知 timer/cpu 频率直接计算 lpj

  • 得到的 BogoMIPS 仅供udelay()使用,不是性能指标

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 7:21:17

析气性测定仪:工作原理、技术标准及全行业应用解析

绝缘油是变压器、电容器、电力电缆等电气核心设备的关键介质,其绝缘性能、运行稳定性直接决定了高压电气设备的安全工况。在高压电场的长期作用下,绝缘油会出现吸气、释气现象,该特性是衡量绝缘油品质、判断油品老化程度与使用安全性的核心技…

作者头像 李华
网站建设 2026/6/10 7:14:04

uni-app项目打包成apk

使用 HBuilder X Android Studio 打包 uni-app 为 APK 完整教程 一、所需工具 代码开发工具:HBuilder XAPK 打包工具:Android StudioAPK 打包 SDK:Android 离线 SDK 下载地址:Android 离线 SDK 生成签名证书的工具:…

作者头像 李华
网站建设 2026/6/10 7:09:21

DEBRON 1052 光学关门速度仪设备介绍与基础使用指南

一、前言 在汽车、电梯、自动化生产线等工业场景中,门体开合速度是重要的安全与质检指标。DEBRON 1052 光学关门速度仪是行业内常用的便携式测速设备,区别于传统磁式传感器,凭借光学检测方案实现了免复杂对位、便携易操作等优势。本文结合官方…

作者头像 李华
网站建设 2026/6/10 7:06:59

【课程设计/毕业设计】nodejs基于微信小程序印象台院大学资讯新闻设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 7:04:32

赵小园:深耕昆明市场,企优托AI-GEO优化赋能滇中上市企业全域获客

在AI大模型全面渗透采购与商务咨询的当下,昆明化工、有色冶金、生物医药、装备制造等实体企业普遍面临新流量难题:传统搜索引擎推广成本逐年上涨,客户转向豆包、文心一言等AI平台咨询询价,大量精准客源流失;本地同行同质化推广内卷严重,品牌难以在AI问答场景建立权威占位。作为…

作者头像 李华