ARM11处理器中的流水线级数增加研究

2024-06-04 09:38

本文主要是介绍ARM11处理器中的流水线级数增加研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:在嵌入式技术中,流水线结构提高了数据处理能力,但流水线级数的增加会消弱指令的执行效率。为了研究如何更好地解决这种影响,通过对流水线结构性能和级数影响的的分析,结合ARM11处理器所使用的技术管理,特别是预测技术和管理机制的运用,阐述了系统性能在保证高效率的同时,还能保持相当好的有效性。这也开拓了在嵌入式开发中合理利用资源的思路。

流水线是RISC执行指令时采用的一种重要机制。在流水线既要能达到更高的性能,还要让客户更加方便的实现流程。ARM11系列处理器是世界上最流行的嵌入式处理器,广泛的应用于个人通讯等嵌入式领域。ARM11处理器正是采用了易于综合的流水线技术,保证了数据流程高效,迅速地时序收敛。随着流水线级数的增加,系统性能越来越高,进一步提高了执行效率。

一, 流水线结构的性能

系统处理数据时,1个指令周期含有4~6个时钟脉冲,每个脉冲周期有不同的部件完成不同的操作。流水线结构,是指每个时钟脉冲都接收吓一跳处理数据的指令只是不同部件做不同的事情,流水线处理器一般把一条指令的执行分成几个级(stages),每一级在一个时钟周期内完成。如果处理器的流水线有k级,则同时可执行的指令条数为k,每条指令处于不同的执行阶段。

设Tk为流水线所用的时间,Ts为不同流水线所用的时间,流水线各段时间相等为△t,当一条流水线完成n个连续任务时,实际加速比S=Tk/Ts=nk/k+n-1,在理想情况下加速比为Smax = limS = k  (n>>k).

那么,得出的结果是加速比等于k(级数)。从中可以看出,性能和级数成正比,随着级数的增加,处理器性能也不断提高。

二,流水线级数的影响

ARM7采用的是三级流水线,ARM9采用的是5级流水线,ARM10采用的是6级流水线,ARM11处理器的流水线和由8级组成,比以前ARM内核减少了40%的吞吐量。8级流水线可以同时执行8条指令。

从通常的角度说,随着流水线深度的增加处理器性能得到提高,而使处理指令的吞吐量也提高了。但当出现多周期指令时,跳转分支指令和中断发生时,流水线都会发生阻塞,而且相邻指令之间也可能应为寄存器冲突导致流水线阻塞,降低流水线效率。同时随着系统时钟频率的增加,指令执行周期也相应减少,对硬件设计要求很高,而且在内核执行1条指令前,需要更多地周期来填充流水线。

ARM流水线的一条指令只有在完全通过“执行”阶段才被处理。若果随后的指令需要用到前面指令的执行结果作为输入,它就要等到前面的指令执行完,即暂时停止相关指令的执行(跳转指令),等到相关数据能从寄存器读出在恢复执行。这样,系统演示(latency)也增加了。流水线级数的增加往往会消弱指令的执行效率,容易造成数据冲突。

三,ARM11处理器中流水线管理

为了解决这种延迟,避免流水线中的这种数据冲突,让前面的指令执行的结果能够快速进入到后面指令的流水线中,ARM11处理器采用了预测技术,存储管理,并行机制等技术来保持最佳的流水线效率。ARM11 mpcore的机构示意图如下图所示。


1,对跳转做出预测与管理

对跳转的预测分为2种:动态预测和静态预测。

动态预测,在ARM11处理器中包含了64个4状态(采用2b转移预测)跳转地址缓存器来保存最近使用过的转换地址。通过这些转换地址记录的查询,处理器就可以预测当前的跳转指令是否会被执行。

静态预测,当采用动态转换预测机制而无法在寻址缓冲内找到正确的地址时,ARM11处理器就会从跳转的方式来判断是否执行。静态预测检查分支是向前跳转还是向后跳转如果是向前跳转,处理器会假设这条指令不被执行。如果是向回跳转,处理器会假设这条指令被执行。

在实际测试中,单纯采用动态预测的准确率为88%,单纯采用静态预测机制的准确率只有77%,而ARM11采用的静态和动态预测组合机制可实现92%的高准确率。对于每一个正确的预测,给指令执行到来的是减少6个时钟周期的等待时间。

从动态到静态的预测,ARM11通过对跳转的方式的分析,进行逻辑判断,对未来做出预测,使有限资源得到优化配置和利用。

2,存储管理

在ARM11处理器中,指令和数据可以更长时间的被保存在CACHE中。由于物理地址CACHE本身的存在,使数据交换避免了反复重载CACHE。而且,当数据的访问引起了CACHEmiss时,CACHE将进行预取,到存储器相应的快中读取需要的数据。只要后面的指令没有用到CACHE Miss将读回来的数据,ARM11处理器流水线会继续执行下去。即使下一条指令还在存储器访问指令,只要数据放在CACHE中,ARM11也会允许这条指令被执行。

3,流水线的并行机制

在流水线的后端使用了三个并行部件结构,ALU,MAC(乘加),LS(存取)。LS流水线是专门用于处理存取操作指令把数据的存取操作与数据的算术操作的耦合性分隔开来可以更有效地执行指令。

一旦指令被解码,将根据操作类型发射到不同的执行单元中。考虑到不同的指令需要不同的执行时间,当3类指令先后被发射到流水线中,ALU或者MAC指令不会由于LS指令的等待而停下来,他们可以同时被执行,即取址,译码和执行等操作可以重叠执行。而且ARM11处理器指令的乱序完成,如果在指令之间没有数据的相关性,所有指令都可以不必等待前面的指令完成而结束自己的执行。

四,结束语

通过技术和机制上的进一步改进,ARM11处理器改善了因为级数的增加带来的影响,使系统能在保证优化到更高的流水线吞吐量的同时,还能保持与以前版本处理器中的流水线一样的有效性。

在进行嵌入式开发中,运用技术预测,确定研发重点,合理利用资源,有助于找出新的思路和方法。

这篇关于ARM11处理器中的流水线级数增加研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029720

相关文章

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

研究人员在RSA大会上演示利用恶意JPEG图片入侵企业内网

安全研究人员Marcus Murray在正在旧金山举行的RSA大会上公布了一种利用恶意JPEG图片入侵企业网络内部Windows服务器的新方法。  攻击流程及漏洞分析 最近,安全专家兼渗透测试员Marcus Murray发现了一种利用恶意JPEG图片来攻击Windows服务器的新方法,利用该方法还可以在目标网络中进行特权提升。几天前,在旧金山举行的RSA大会上,该Marcus现场展示了攻击流程,

Go并发模型:流水线模型

Go作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,Go并发模型有多种模式,通过流水线模型系列文章,你会更好的使用Go的并发特性,提高的程序性能。 这篇文章主要介绍流水线模型的流水线概念,后面文章介绍流水线模型的FAN-IN和FAN-OUT,最后介绍下如何合理的关闭流水线的协程。 Golang的并发核心思路 Golang并发核心思路是关注数据流动。数据流动的过程交给cha

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

代码随想录训练营day37|52. 携带研究材料,518.零钱兑换II,377. 组合总和 Ⅳ,70. 爬楼梯

52. 携带研究材料 这是一个完全背包问题,就是每个物品可以无限放。 在一维滚动数组的时候规定了遍历顺序是要从后往前的,就是因为不能多次放物体。 所以这里能多次放物体只需要把遍历顺序改改就好了 # include<iostream># include<vector>using namespace std;int main(){int n,m;cin>>n>>m;std::vector<i