综述:

  ARM CPU的架构都基于big.LITTLE大小核技术。而再big.LITTLE的基础上,又添加了DynamIQ。单一Cluster中可以又8个core,且支持不同架构的core,以及支持不同的clk。从而提升了工作效率和配置弹性。

以下利用网上的图片来说明DynamIQ的工作原理:

(上图解释为:DynamIQ支持多颗不同架构的处理器,也能让处理器各自在不同的clk下工作)

1、DynamIQ是ARM一个新的底层solution,用于连接在一个芯片上的不同core。

有了DynamIQ,我们可以将不同类型的core放到一个cluster中。比如,将性能高的core,和功耗低的core放进一个cluster。如果没有DynamIQ,我们是将其放在2个不同cluster中的。

最常见 4个Cortex-A72 核与4个Cortex-A53核,或者4个Cortex-A53与另外的4个Cortex-A53核配对。

把核心放在同一个cluster中能保证核与核之间更好的通信。

2、DynamIQ的cluster也可以与其他不同的DynamIQ cluster配对。DynamIQ cluster还可以应用了ARMv8.2架构和DynamIQ Share Unit hardware,目前支持的平台有:Cortex-A76, Cortex-A75, Cortex-A55

比如:QCOM Krait385 Gold配合三星M3核集成至SDM845中;而三星Exynos9810则使用Cortex-A75作为base结构。海思麒麟98和SDM855使用Cortex-A76作为base结构。

DynamIQ 的Key Feature

1、Single cluster Design

就是大小核可以放在同一个簇里。每个核可以按照各自需求工作在不同的频率,也可以单独的控制每个核开关。

虽然可以有8个不同频率的核,但是实现起来,会带来更多的cost。

2、Power Saving Featues

把所有核到放到同一个簇里,可以降低memory latency,并且简化了核与核之间的tasks sharing。LITTLE核是对memory latency非常敏感的。换句话说,就是在不增加功耗的前提下,提升性能。ARM也让核能更快的下电,进一步省电了。

3、Advance compute capablities

基于DynamIQ技术的Cortex A系列CPU能带来在AI和机器学习上更强大的计算能力。基于DynamIQ的系统能在AI的性能上提供50倍boost。

Meet the DynamIQ Shared Unit

所有弹性的设计架构都仰仗着DynamIQ Shared Unit(DSU)。它构建了CPU、L3 cache、Snoop Filter、外围设备总线buses、power management features之间Asynchronous (异步)通信的桥梁。DSU的设计同时也起到了节省功耗和时间的作用。

1、DynamIQ中首次允许设计带有L3 cache的ARM SOC。这块memeory pool被簇中的所有核共享,它最大的好处是在于能简化big核与LITTLE核之间的task sharing,同时减少memory latency。

2、 L3 cache是16路相联的缓存,可以配置0KB~4MB大小。memory setup是高度专用的,仅有一小部分被L1、L2、L3共享。L3 cache最多可以分成4块partition,这样可以避免cache chrashing、不同进程使用同一块内存等。并且partition可以通过软件进行动态分配。

ARM也实现了对不用的partition进行下电,以此来省电。当一个boot up 单个CPU时,也不会需要所有内存系统为了短暂的过程,都上电起来。L3 cache的power control是Energy Aware Scheduling。

L3 cache的引入也促进了L2 cache的速度。这是考虑到使用高latency的异步bridges的使用,ARM也优化了L2的memory latency。

为了提高performance和充分利用新的memory子系统,ARM也在DSU中使用了cache stashing。它允许相近的coupled accelerators和I/O agents 对部分CPU memory进行direct access(direct读写每一个核的shared L3/L2 caches)。

思路是这样的:peripherals和accelerator的需要CPU进行快速处理的信息,可以以最小的latency,直接inject到CPU的memory中;而不是通过高latency的RAM读写或者prefetch。包括network系统的包处理,与DSP、虚拟加速器的通信,或者是VR应用所使用的视觉捕捉芯片的数据。这钟就是基于特定应用的new feature,但能给SOC和designers更灵活、更强大的潜在性能提升。

回到功耗部分,不同CPU集成到一个cluster,这需要重新考虑一套通过DynamIQ来管理功耗和频率的方法。可选的异步bridges的使用,就可以在单个core的基础上配置的CPU clk domains;而之前只能基于单个cluster控制。Designer也可以选择core的频率与DSU的速度同步。

换句话说,通过DynamIQ,每个CPU理论上都可以跑在自己所需的频率上。而事实上,相同类型的core更多地是绑定到同一个domain group组,同步控制频率和电压,因此功耗是是按group组控制的,而非以单个core。ARM表示:big.LITTLE需要big cores和LITTLE cores分别动态的进行分频和分压。

这会对thermal limited的use case非常有帮助,比如手机,因为它能保证big和LITTILE cores能根据work loading持续地进行power scaled,即使仍然占用了同一个cluster。理论上,SOC designer能针对不同的CPU power points使用多个domains,类似MTK那样使用3个cluster的设计,当然这回增加设计复杂度和成本。

有了DynamIQ,ARM就可以在使用硬件控制时简化下电流程,意思是不在使用的cores可以更快地关闭。通过memory的进步及整合coherency management到硬件中,ARM已经移除通过了对下电的方式来disable和flush memory caches的耗时步骤。

最后

DynamIQ体现了对移动端多核处理技术的一个重要的进步。对移动设备,它不仅对多核系统提供了一些潜在的性能提升,而且也使SOC developer能实现新的big.LITTLE的设计,以及多样的计算方案。

翻译自:https://www.androidauthority.com/arm-dynamiq-need-to-know-770349/

DynamIQ扫盲文的更多相关文章

  1. 【黑金原创教程】【TimeQuest】【第三章】TimeQuest 扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  2. 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  3. 用大白话谈谈XSS与CSRF

    这两个关键词也是老生常谈了,但是还总是容易让人忘记与搞混~.XSS与CSRF这两个关键词时常被拉出来一起比较(尤其是面试),我在这里也在写一篇扫盲文,也帮自己整理一下知识脉络. 这篇文章会用尽量“人话 ...

  4. C 共享内存封装

    引言 - 背景 2016 年写过一篇关于 linux 共享内存 shm api 扫盲文. C扩展 从共享内存shm到memcache外部内存 比较简单. 没有深入分析(能力有限, 也深入分析不了). ...

  5. 《FPGA那些事儿》原创教程总结

    经过我们黑金工程师多年的不断努力,黑金原创教程已经达到了14部,包括: 第一部:[黑金原创教程]NIOSII那些事儿 http://www.heijin.org/forum.php?mod=viewt ...

  6. 安全漏洞 : XSS CSRF

    https://my.oschina.net/hc24/blog/527099 XSS成因概括 : XSS其实就是Html的注入问题,攻击者A的输入没有经过严格的控制进入了数据库,最终显示给来访的用户 ...

  7. ehcache常用API整理

    鉴于csdn的blog的不稳定, 及混乱的编辑器, 和无上传功能, 遂决定彻底投诚javaeye的blog. 数月前整理的一个东西, 作为cache的扫盲文档.参考了它的官方文档. 对ehcache感 ...

  8. Spring Boot2 系列教程(二十七)Nginx 极简扫盲入门

    上篇文章和大家聊了 Spring Session 实现 Session 共享的问题,有的小伙伴看了后表示对 Nginx 还是很懵,因此有了这篇文章,算是一个 Nginx 扫盲入门吧! 基本介绍 Ngi ...

  9. Nginx 极简入门教程!

    上篇文章和大家聊了 Spring Session 实现 Session 共享的问题,有的小伙伴看了后表示对 Nginx 还是很懵,因此有了这篇文章,算是一个 Nginx 扫盲入门吧! 基本介绍 Ngi ...

随机推荐

  1. uniapp自定义简单省市区联动组件

    又双叒一个uniapp组件 最近有一个选择地址的需求,就写了一个省市区联动选择器. 选择日期使用的picker,就照着它简单的整了一个,使用网络请求城市数据,还用到了vuex组件数据共享. 本来自己整 ...

  2. 05_CSS入门和高级技巧(3)

    上节课复习 !important不能影响就近原则,远的标签如果加上!important也干不过近的标签! !important不能影响继承权重是0,通过继承的标签加上!important也干不过直接选 ...

  3. 【Flink】使用之前,先简单了解一下Flink吧!

    目录 Flink简单介绍 概述 无边界数据流和有边界数据流 技术栈核心组成 架构体系 重要角色 Flink与Spark架构概念转换 Flink简单介绍 概述    在使用Flink之前,我们需要大概知 ...

  4. JDBC10 Blob二进制对象

    //将图片输入到数据库中 // String sql="insert into t_user2 (username,headImg) values (?,?)"; // ps=co ...

  5. [hdu5199]统计数据的水题

    题意:统计一个数出现了多少次,统计后删去它所有的出现.思路:乱搞..自己没事写的hash,不过赶脚效率有点低. #pragma comment(linker, "/STACK:1024000 ...

  6. 2018-06-17 js数组

    数组的定义:① var arr=new Array(xx,xx,xx); ②var arr=[yy,yy,,yy]; 数组的查看:arr[x]; 数组的修改:arr[x]=xx; 数组的遍历:①for ...

  7. React实践:自定义html特性不显示

    发现React中自定义的html特性在render后是不现实,而且getAttribute方法也只能获取到undefined. 后来去stackoverflow提问,网友回答说: It depends ...

  8. 汉语拼音转换工具包pypinyin

    #pip install pypinyin汉字转换汉语拼音 from pypinyin import lazy_pinyin,TONE,TONE2,TONE3 str="你知道我是谁吗?&q ...

  9. mysql操作之二:fetchone与获取lastrowid

    import mySQLdb conn = mySQLdb.connect(host='127.0.0.1',user='root',passwd='123456')cur = conn.cursor ...

  10. MyCat基本知识

    一.Mycat基本元素 1.逻辑库,mycat中存在,对应用来说相当于mysql数据库,后端可能对应了多个物理数据库,逻辑库中不保存数据 2.逻辑表,逻辑库中的表,对应用来说相当于mysql的数据表, ...