|
|
51CTO旗下网站
|
|
移动端

1.10 检测存储器带宽

《ARM嵌入式系统编程与优化》第1章Linux/ARM嵌入式平台,本章介绍如何使用GCC编译器、汇编器和连接器来编写和执行独立的汇编语言程序,以及如何将一个C语言代码和汇编语言代码合起来,以验证汇编代码子程序的正确性。本节为大家介绍检测存储器带宽。

作者:梁元宇 译来源:机械工业出版社|2017-09-26 19:22

1.10 检测存储器带宽

使用perf_event之前,先用它来检测处理器读写一个连续块数据所需的时间。这个测试也将允许检测处理器的存储器带宽——对于读和写操作来说,该值往往是不同的。程序员可以使用这些值来计算性能上限。

编写一个打印程序,用以打印性能结果和计算存储器带宽:

接着添加要指定要复制的存储块大小以及处理器时钟频率的定义。

要想验证时钟频率设置和perf_event报告正确的循环计数,应检查使用性能计数器和gettimeofday()的Linux系统时钟的代码段。系统时钟测量系统时间,而perf_event只统计处理器运行过程中的周期。因此,由于当处理被操作系统挂起时,它可能在临时段累积时间,所以程序员可以从系统时钟中观察到更高的值。

为了使用gettimeofday(),声明两个返回变量来保存时间值:

timeval结构包含一个用来测量秒的32位tv_sec值和一个测量每一秒中微秒的32位tv_usec值。

此外,还需要声明和分配一个测试数组:

下面的代码用于独立测试存储读写吞吐量。

当测试读取时,请确保打印最终值总和,以防编译器优化该值。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

PHP和MySQL Web开发(原书第3版)

本书将介绍如何创建可交互的Web站点,包括从最简单的订单表单到复杂的安全电子商务站点。而且,读者还将了解如何使用开放源代码技术来实现...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊