ARM多核调度器DSU

1. 背景

        从A75开始,ARM提出了一个新的多核心管理系统单元,叫做DSU(DynamIQ Shared Unit)。DSU的核心功能是控制CPU内核,使其成簇Cluster使用,簇内每一个核心可以单独开关、调整频率/电压,能效表现更佳,甚至制造商是可以将不同核心以不对等的数量放到一个簇内,兼顾成本与性能。

        再有就是L3缓存的共享。DSU能够使用CCI、CCN或是CMN不同总线技术,把CPU与SoC里其它单元(GPU、Modem、内存)高速连接起来;假如它拥有4MB三级缓存,能以动态方式分配缓存给每个核心,比如说Cortex-A75×1+ Cortex-A55×7下,可以将3MB缓存分配给A75核心,剩下7个A55核心共享1MB缓存,甚至可将三级缓存交给GPU等单元使用,灵活性非常高;

        在设计DynamIQ之时ARM还考虑到冗余需求,比如相比智能手机,汽车对可靠性、冗余度要求高出不少,DynamIQ允许多个簇通过CCIX连接在一起,这样处理器就可以分布于汽车不同位置,当发生交通意外一个簇受损时,DynamIQ技术可以调用出备用处理器,保证汽车正常运转。

2. DSU结构

DynamIQ cluster顶层由DSU与DebugBlock组成。

DSU:包含L3、ctrl logic & external interface。

DebugBlock:包含3组apb接口、rom、CTM、CTI & PMU。

2.1 组件说明

元件描述
CPU桥接器CPU 网桥,控制内核和 DSU 之间的缓冲和异步处理。
时钟和电源管理群集支持一组由外部电源控制器控制的省电模式。这些模式是通过 P 通道上的电源模式请求来选择的,对于每个内核,以及用于 DSU 的单独 PChannel。
通过从外部时钟控制器向DSU发出的Q通道请求来支持时钟门控。Q 通道允许单独控制 SCLK、PCLK、ATCLK 和 GICCLK 时钟输入。
Snoop 控制单元SCU 保持集群中所有数据缓存之间的一致性,存在私有的缓冲区
L3 缓存

缓存大小实现为 256KB、512KB、1MB、1.5MB、2MB、3MB 或 4MB。

所有缓存的行长均为 64 字节。

可选择实现数据和标签RAM的ECC保护。

主存储器主控主存储器接口最多支持两个ACE或CHI主接口。
加速器一致性端口加速器一致性端口 (ACP) 是可选的从接口。ACP 提供对可缓存内存的直接内存访问。SCU 通过检查 ACP 访问在核心和 L3 缓存中的分配来保持缓存一致性。ACP 实现了ACELite 协议的子集。
外设端口外设端口是可选的主接口,提供对紧密耦合加速器的DEVICE访问。该端口实现 AXI 4 主接口协议。
DSU系统控制寄存器DSU 实现一组系统控制寄存器,这些寄存器对群集中的所有内核都是通用的。您可以从
集群中的任何内核访问这些寄存器。这些寄存器提供:
1.控制群集的电源管理。
2.L3缓存分区控制。
3.CHI QoS总线控制和方案ID分配。
4.有关 DSU硬件配置的信息。
5.L3 缓存命中和未命中计数信息。
调试和跟踪组件每个内核都包括一个嵌入式跟踪宏单元 (ETM),允许在调试时进行程序跟踪。
来自内核的触发事件被合并并输出到调试 APB 主节点。在调试 APB 从机上接收到内核的触发事件和调试寄存器访问。
群集到 DebugBlock APB当 APB 写入时,来自内核的触发事件将传输到 DebugBlock
DebugBlock 群集 APB触发事件在APB 写入 DSU 时传输到内核。来自系统调试APB 的寄存器访问被传输到 DSU
系统调试 APB系统调试 APB 从属接口连接到外部 CoreSight 组件,如调试访问端口(DAP)
CTI 和 CTMDebugBlock 实现嵌入式交叉触发器 (ECT)。交叉触发接口 (CTI) 分配给集群
中的每个 PE,如果存在,则为集群 ELA 分配额外的 CTI。CTI 通过交叉触发矩阵 (CTM) 相互连接。实现单个外部通道接口,允许将交叉触发扩展到 SoC。
调试ROMROM 表包含系统中的组件列表。调试器可以使用 ROM 表来确定实现了哪些CoreSight 组件
电源管理和时钟门控DebugBlock 实现了两个 Q 通道接口,一个用于控制 PCLK 时钟的请求,另一个用于控制调试电源域的请求。

3. DSU AE结构

        DSU AE主要是添加了比较器,再有就是亮色部分都复制一份,包括执行逻辑、时钟、功率状态,各个界面,当然缓存不能复制,那样成本太高,也意义不大。

3.1 Split模式

3.2 lockstep模式

3.3 Hybrid模式

3.4 CMN

        ARM发展了一种介于总线和NoC之间的连接系统,称之为CMN,主要用于连接CPU内核,也可以CPU内核和加速器之间的连接。采用MESH网格结构,但没有路由功能,本质上还是总线,但MESH网格支持的单元很多,远比一般总线要多,最高可支持512核,支持512MB的L3缓存,目标市场主要是HPC领域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea 开发环境不断切换git代码分支导致冲掉别人代码

问题分析 使用git reflog查看执行命令,以下是发生事故的切换和提交动作 46f72622e1 HEAD{41}: commit: feat: 【Sales - 6.3】小程序端不登录也可以录入客户线索 c5e7d9f6e1 HEAD{42}: fetch origin feature/20240102_Sales6.3_xingang:feature/20240102_Sales6.3…

node.js(expree.js )模拟手机验证码功能及登录功能

dbconfig.js const mysql require(mysql) module.exports {// 数据库配置config: {host: localhost, // 连接地址port: 3306, //端口号user: root, //用户名password: wei630229, //密码database: exapp2, //数据库名}, // 连接数据库,使用mysql的连接池连接方式…

JMeter实操入门之登录

JMeter实操入门之登录 前言初级-无变量的登录线程组取样器-HTTP请求 进阶-定义变量的登录用户定义的变量获取JSON返回的数据-tokentoken设置全局变量 前言 安装及环境配置教程可移步:JMeter安装与配置环境 本篇文章针对小白进一步的认识及运用JMeter,围绕…

Linux编写简易shell

思路:​ ​ ​ 所以要写一个shell,需要循环以下过程:​ 获取命令行解析命令行建立一个子进程(fork)替换子进程(execvp)父进程等待子进程退出(wait) 实现代码:​ #inc…

力扣hot100 最长有效括号 动态规划

Problem: 32. 最长有效括号 文章目录 思路Code 思路 👨‍🏫 参考题解 Code ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( n ) O(n) O(n) class Solution {public int longestValidParentheses(String s){int n s.length();…

顺序表(C/C++)

本篇将讲解一些关于顺序表的内容,顺序表分为静态顺序表和动态顺序表,其中经常用到的为动态顺序表,所以本篇将以动态顺序表为重点给出一些关于动态顺序表的操作。 因为顺序表的实现逻辑较为简单,对于代码的讲解大多以注释给出。 1…

IaC基础设施即代码:Terraform 使用 provider 自定义提供者

目录 一、实验 1.环境 2.Terraform 使用 provider 自定义提供者 (Resource) 3.Terraform 使用 provider 自定义提供者 (Module) 一、实验 1.环境 (1)主机 表1-1 主机 主机系统软件工具备注jia Windo…

深入数仓离线数据同步:问题分析与优化措施

一、前言 在数据仓库领域,离线数仓和实时数仓是常见的两种架构类型。离线数仓一般通过定时任务在特定时间点(通常是凌晨)将业务数据同步到数据仓库中。这种方式适用于对数据实时性要求不高,更侧重于历史数据分析和报告生成的场景…

2024.1.20每日一题

LeetCode 2788.按分隔符拆分字符串 2788. 按分隔符拆分字符串 - 力扣(LeetCode) 题目描述 给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组…

【Python】人工智能-机器学习——不调库手撕演化算法解决函数最小值问题

1 作业内容描述 1.1 背景 现在有一个函数 3 − s i n 2 ( j x 1 ) − s i n 2 ( j x 2 ) 3-sin^2(jx_1)-sin^2(jx_2) 3−sin2(jx1​)−sin2(jx2​),有两个变量 x 1 x_1 x1​ 和 x 2 x_2 x2​,它们的定义域为 x 1 , x 2 ∈ [ 0 , 6 ] x_1,x_2\in[0,6] …

Linux 【C编程】 引入线程,线程相关函数

1.线程的引入 1.1使用线程同时读取键盘和鼠标 代码演示&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <termios.h> #include <fcntl.h> #include <string.h> // 读取…

爬取的数据可以入表吗?怎样入表?

合规是数据入表的前提。当前爬虫数据是非常敏感的&#xff0c;因为爬虫极容易造成两大不合规的问题&#xff1a;一是没有经过个人同意获取数据&#xff0c;二是爬取的数据里可能含有个人敏感信息也是一个问题。现在法律对于这部分非常严苛&#xff0c;如果企业里有50条未获得授…