nmg 发表于 2024-8-12 11:45

《嵌入式软件的时间分析》书友问答接龙 第八集:软件运行时间优化

<p><img height="63" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/victory.gif" width="61" />读到了这里,小伙伴们是不是已经get如何优化软件运行时间?</p>

<p>&nbsp;</p>

<p><strong>《嵌入式软件的时间分析》的书友们(<a href="home.php?mod=space&amp;uid=1401067" target="_blank">@luyism </a> 、<a href="home.php?mod=space&amp;uid=108278" target="_blank">@常见泽1 </a> 、<a href="home.php?mod=space&amp;uid=427606" target="_blank">@数码小叶 </a> 、<a href="home.php?mod=space&amp;uid=782751" target="_blank">@hehung </a> 、<a href="home.php?mod=space&amp;uid=323615" target="_blank">@qinyunti </a> ):</strong></p>

<p><span style="color:#2ecc71;">需在本周内阅读完书籍的第八章&nbsp; 软件运行时间优化,跟帖参与问答接龙互动:</span></p>

<p>(1)第一位跟帖发起本章问题,第二位解答第一位发起的问题,第三、四位继续问答接龙;</p>

<p>(2)最后一位是章节总结角色,以文字或者思维导图的形式,对本章进行总结。至此章节互动结束。</p>

<p>&nbsp;</p>

<p><span style="color:#e74c3c;">注意:发起的问题,对解题者理解、学习本章内容有切实意义;发起的问题不可重复。</span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<div style="overflow-wrap: break-word; color: rgb(51, 51, 51);Microsoft yahei&quot; letter-spacing: normal; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; background-color: rgb(255, 255, 255)">
<p style="overflow-wrap: break-word"><strong style="overflow-wrap: break-word">活动交流群</strong></p>

<p style="overflow-wrap: break-word">论坛有开设汽车电子交流群,欢迎感兴趣的小伙伴,微信添加&ldquo;helloeeworld&rdquo;为好友,对话:加入汽车电子交流群,入群交流。</p>

<p style="overflow-wrap: break-word"><img _height="416" file="" initialized="true" inpost="1" lazyloaded="true" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" src="https://6.eewimg.cn/news/statics/qrcode/helloeeworld.png" style="overflow-wrap: break-word; border: 0px solid; max-width: 600px; width: 150px;" zoomfile="" /></p>

<p style="overflow-wrap: break-word">扫码,对话:加入汽车电子交流群。</p>
</div>

hehung 发表于 2024-8-12 13:24

<p>如何针对存储器的使用做时间上的优化?</p>

luyism 发表于 2024-8-12 15:47

hehung 发表于 2024-8-12 13:24
如何针对存储器的使用做时间上的优化?

<h3 data-spm-anchor-id="5176.28103460.0.i6.297c572cXr88Fs">1. 快速存储器的利用</h3>

<p><strong>定义</strong>:嵌入式系统中通常存在多种类型的存储器,包括高速缓存(Cache)、SRAM(静态随机存取存储器)和DRAM(动态随机存取存储器)等。高速缓存和SRAM的访问速度远高于DRAM。</p>

<p data-spm-anchor-id="5176.28103460.0.i7.297c572cXr88Fs">实时控制系统若需要频繁访问一个小型的数据表。为了提高性能,可以将这个数据表放在高速缓存或SRAM中,而不是DRAM中。这样,每次访问数据表时,都不需要经过较慢的DRAM,从而显著减少了访问时间。</p>

<h3>2. 数据对齐</h3>

<p data-spm-anchor-id="5176.28103460.0.i5.297c572cXr88Fs"><strong>定义</strong>:数据对齐是指确保数据在内存中的地址能够与处理器的字边界对齐。这对处理器来说很重要,因为不对齐的访问会导致额外的内存读取操作,从而降低性能。</p>

<p>处理器支持32位的内存访问,但在一个不对齐的地址处存储了一个32位整数。这可能会导致处理器需要进行两次16位的内存访问来读取这个整数,而不是一次32位的访问。为了避免这种情况,应该确保所有32位整数都位于32位边界上。</p>

<p>&nbsp;</p>

<p></p>

<h3>3. 代码对齐和缓存优化</h3>

<p><strong>定义</strong>:除了数据对齐之外,代码也需要对齐,以充分利用处理器的缓存行。代码对齐可以确保函数入口点和其他关键位置对齐到缓存行的边界。</p>

<p data-spm-anchor-id="5176.28103460.0.i8.297c572cXr88Fs">若系统中有一个经常被调用的函数,它位于内存中的一个不对齐的位置。这可能会导致每次调用该函数时,处理器需要从缓存中获取多个缓存行,而不是只获取一个。通过将函数的入口点对齐到缓存行的边界,可以减少缓存缺失,从而提高性能。</p>

数码小叶 发表于 2024-8-12 21:15

<p>为获得最佳负载分配,有哪些优化方式?</p>

常见泽1 发表于 2024-8-14 14:40

<div class='shownolgin' data-isdigest='no'><p>书不在身边,大概猜测下应该是</p>

<p>调度层级优化</p>

<p>代码层级优化</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

qinyunti 发表于 2024-8-15 22:30

<div class='shownolgin' data-isdigest='no'><p>一点小总结:书中总结了很多时间优化的方法和示例,比如memcpy的优化剖析。</p>

<p>个人有点感受,书中提到的数据对齐,在嵌入式开发中其实是很容易获得比较好的优化效果的一个小的编程技巧,平常编程时就可以尽量考虑使用数据对齐。</p>

<p>另外减少存储的拷贝,也是一个优化时间的比较简单有效的方法。</p>

<p>还有就是减少循环体内的执行时间等,也是比较有用的方法,</p>

<p>总之一点,优化时间要先找出花费时间比较大头的地方去优化,首先从算法架构,实现方式去优化,其次才是去利用某些特定特性,比如cache去优化,因为后者往往有副作用需要注意,前者才是通用且成本低效果好的方式。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>
</div><script>showreplylogin();</script>
页: [1]
查看完整版本: 《嵌入式软件的时间分析》书友问答接龙 第八集:软件运行时间优化