【CHI】(一)基础概念

基于CHI issueF

本章介绍了CHI体系结构和术语。它包含以下部分:

  • 体系结构概述
  • 拓扑结构
  • 术语
  • 事务分类
  • 一致性概述
  • 组件命名
  • 读数据来源

一、CHI架构

        CHI架构是一个可扩展的、支持一致性的集线器接口和由多个组件使用的片上互连。根据系统要求的PPA(performance, power, and area),CHI体系结构允许组件连接的灵活拓扑结构。

1.1组件

基于CHI的系统组件可以包括:

  • 独立处理器
  • 处理器
  • 图形处理器
  • 内存控制器
  • I/O桥
  • PCIe子系统
  • CHI互连线

1.2 Key features

该体系结构的主要特性是:

  • 可扩展的体系结构,支持从小型系统扩展到大型系统的模块化设计。
  • 独立的分层方法,包括协议层、网络层和链路层,具有不同的功能。
  • 基于数据包的通信。
  • 所有的事务都由一个基于互连的Home节点处理,它可以协调所需的窥探snoop、缓存cache和内存memory访问。
  • CHI一致性协议支持:

                ——cache line大小为64byte

                ——使用Snoop filter和基于directory的系统,用于减少不必要的snoop事务。

                ——MESI和MOESI缓存模型,并从任何缓存状态转发数据。

                ——增加了 partial 和empty的cache line状态。

  • CHI事务集包括:

                ——丰富的事务类型以支持PPA高效的系统缓存实现。

                ——支持互连中的原子操作和同步。

                ——支持高效执行独占访问的功能。

                ——将数据移动到更接近预期的使用点来实现高效的数据移动和替换。

                ——通过分布式虚拟内存(DVM)操作进行虚拟内存管理

  • 支持Retry机制来管理协议层资源;
  • 支持端到端的Qos(Quality of Service);
  • 可配置的数据宽度来满足系统需求;
  • 支持ARM TrustZone;
  • 低功耗信号,可以使能flit级别门控、组件之间的建断链来支持时钟门控和电源门控、协议层的活动信号来控制电源和时钟;

1.3 CHI层次

CHI层次按功能可以划分为:

  • 协议层(Protocol)
  • 网络层(Network)
  • 链路层(Link)

Layer

Communication granularity

Primary function

Protocal

transaction

协议层是CHI架构里的最顶层,其功能有:

  • 在协议节点产生并处理请求与响应;
  • 定义协议节点允许的cache状态和状态转换;
  • 定义每个请求类型的传输流程;
  • 管理协议层的流控;

Network

packet

网络层功能有:

  • 打包协议层信息;
  • 确定并增加源节点和目的节点的ID到packet中,确保这些packets能正确在互联线上路由;

Link

flit

链路层功能:

  • 提供网络设备之间的流控;
  • 管理链路通道以提供跨网络的无死锁切换

二、拓扑结构

        CHI架构主要是与拓扑无关的。然而,本规范中包含了某些与拓扑相关的优化,以使实现更高效。图1-1显示了三个拓扑示例,以显示可用的互连带宽和可扩展性选项的范围。

Crossbar

        这个拓扑构建起来很简单,并且自然地提供了一个具有低延迟的有序网络。它适用于连线相对较小的地方。该拓扑结构适用于与少量节点的互连。

Ring

        这种拓扑提供了在互连布线效率和延迟之间的权衡。延迟随环上节点的数量呈线性增加。这种拓扑结构适用于中等大小的互连。

Mesh

        这种拓扑以牺牲更多的连线为代价提供了更大的带宽。它是非常模块化的,并且可以通过添加更多的行和列的交换机来很容易地扩展到更大的系统。这种拓扑结构适用于更大规模的互连。

三、术语

术语

描述

Transaction

一个transaction执行一个单独的操作,如一个transaction可以是读memory或写memory

Message

协议层术语,用于定义两个组件之间交换信息的粒度,如:

  • Request
  • Data response
  • Snoop request

一个数据响应message可能由多个packets组成

Packet

端到端跨越interconnect的传输粒度,一个message可能由一个或多个packets组成,每个packet包含有源和目的节点的ID来保证在interconnect上独立路由

Flit

最小流控单位,一个packet可以由一个或多个flits组成,对于同一个packet的所有flits在interconnect上传输必须遵循同样的路径,对于CHI,所有的packets都是由一个flit组成

Phit

物理层传输单位,一个flit可以由一个或多个phits组成,phit定义为两相邻网络设备之间的一个传输,对于CHI,所有的flits都是由一个phit组成

PoS

Point of Serialization,位于ICN内,用于Requests之间的保序(HNF同时具有PoS和PoC的功能)

PoC

Point of Coherence,一致性节点,用于保证所有访问同一个memory地址的请求都可以得到同一份数据

PoP

Point of Persistence(PoP)是内存系统中的一个点,当系统电源断开时,会保持对内存的写入,当电源恢复时,会可靠的恢复对内存的写入。

PoPA

Point of Physical Aliasing (PoPA),在一个物理地址空间(PAS)中的位置更新对所有其他物理地址空间可见。

Downstream cache

downstream cache是以RN的视角定义的,RN的downstream cache可以通过CHI请求访问

Requester

Requester可以指独立产生原始transactions的组件(master),也可以指ICN

Completer

Completer可以指ICN,也可以是SN

Master

通常是一个系统中最上游的agent

Slave

通常是一个系统中最下游的agent

Endpoint

slave的另一个名字,指的是一个transaction的最终目的地

Protocol Credit

一个P-credit用于保证completer有能力接收一个transaction

Link layer Credit

一个L-credit用于保证另一边的link可以接受不了一个flit

ICN

interconnect的简称,用于协议节点之间的通讯的CHI传输机构,ICN可能也包含协议节点,如HN和MN

IPA

intermediate Physical Address,中间物理地址,在两级地址系统中,第一级产生IPA,第二级产生物理地址

RN

请求节点,产生协议transaction,包含读和写

HN

Home节点,位于ICN,用于接收来自RN的协议transaction,完成相应的一致性操作并返回一个响应

SN

从属节点,用于接收来自HN的请求,完成相应的操作并返回一个响应

MN

其他节点,位于ICN,用于接收来自RN的DVM操作,完成相应的操作并返回一个响应

IO Coherent node

IO一致性节点产生的snoop请求不会导致数据被cache,因此IO一致性节点也不会接收到任何snoop请求

snoopee

正在接收snoop的RN。

Write-Invalidate protocol

该协议是指当RN往一个共享地址写数据时,必须先把所有共享的数据备份都无效掉,然后再进行写操作,CHI采用的就是该协议

In a timely manner

协议中没有定义在某个绝对的时间后,某件事必须发生,但是及时发生可以使系统效率更高

Don’t Care

表示该域段可以设置为任何值,包括非法值和保留值,任何组件收到的包中如果包含设为Don’t care的域段,都必须忽略该域段

Inapplicable

表示该域段值不会用于信息处理

四、事务类型

本规范(CHI issueF)所支持的协议事务及其主要分类:

后续会再开一篇专门描述各种事务及其使用场景

 

下表显示了事务的表现形式:

 

五、一致性概述

        硬件一致性使系统组件能够共享内存,而不需要软件缓存维护来保持一致性。

        如果两个组件往相同地址的memory发起写操作,这些操作可以被所有的组件以相同的顺序观察到,那么这个memory区域就是一致性的。

5.1 coherency model

        图1-2所示为包含三个master组件的一致性系统,每个master组件包含一份loacl cache和一致性协议节点。CHI协议允许memory数据存放在一处或多处master cache当中。

 

         一致性协议强制要求,当需要存数据时,先把所有其它masters的数据备份失效掉,这样一致性协议可以使得所有的masters获取到任何地址的正确的数据值。在存储完成后,其它masters可以获取到新的数据到自己local cache;

        CHI协议允许(不强求)主存的数据不是实时更新,只有在所有master的cache都不需要该数据备份时,才把数据刷新到主存中;

        协议使得master可以确定一份cacheline是否是唯一的或者存在多份拷贝。如果是唯一的,master可以直接改变它的值不需要知会系统中其它masters,如果不是唯一的,master必须使用恰当的transaction知会其它masters;

        所有的一致性是以cacheline粒度对齐,cacheline在64bytes对齐存储系统中大小为64bytes;

5.2 Cache state model

        为了使得一个组件在访问cache line时,可以确定是否该执行某操作,CHI协议定义了cache state。每个cache state基于如下的cache line特性:

cache state

cache line characteristics

Valid,Invalid

Valid表示该cache line存在于cache中,Invalid表示该cache line没有放在cache中

Unique,Shared

Unique表示cache line单独存放于该cache中,Shared表示其它cache中也可能存在该cache line,但不保证一定有

Clean,Dirty

Clean表示该cache没有责任更新主存数据,Dirty表示该cache line数据相对于主存已经发生了改变,该cache必须确保最终主存的数据被更新

Full,Partial,Empty

Full表示cacheline全部byte有效,Partial表示可能只有部分byte有效,不是全部有效;Empty表示没有byte有效;

        如下图1-3所示为7种cache state model,注意一个valid的cache state不是Partial或Empty,而是Full。UC、UD、SC和SD全都是Full cache line状态。

具体的状态含义和状态转换将在后文详细介绍。

六、组件名称

根据CHI协议节点类型,可以将组件分类命名如下:

类别

组件名

功能

RN

请求节点。生成到互连的协议事务,包括读取和写操作。请求节点被进一步分类为:

RN-F

完全一致性请求节点:

  • 包含硬件一致性cache
  • 允许产生所有协议定义的transactions;
  • 支持所有的snoop transactions

RN-D

IO一致性请求节点,支持DVM操作:

  • 不包含硬件一致性cache;
  • 可以接收DVM操作;
  • 可以产生协议定义的一部分transactions

RN-I

IO一致性请求节点:

  • 不包含硬件一致性cache;
  • 不能接受DVM操作;
  • 可以产生一部分协议定义的transactions;
  • 不要求具有snoop功能

HN

Home Node,位于从请求节点接收协议事务的互连器内的节点。

主节点被进一步归类为:

HN-F

用于接收所有的请求操作,除了DVM操作:

  • PoC点,通过监听RN-Fs,管理各Master一致性,完成所有的snoop响应后,发送一个响应给发出请求的RN;
  • PoS点,用于管理多个memory请求的顺序;
  • 可能包含目录或监听过滤,以此来减少大量的snoop request

HN-I

处理有限的一部分协议定义的Request请求:

  • PoS点,管理访问IO subsystem的顺序;
  • 不包含PoC点,也不具备处理snoop请求

MN

用于接收来自RN发送的DVM操作,完成相应的操作,并返回一个响应

SN

Slave Node,用于接收来自HN的请求,完成相应的操作并返回一个响应;

SN-F

指的是Normal memory,可以处理Non-snoop读写请求、atomic请求、以及这些命令的其它形式、CMO请求

SN-I

指的是Peripheral或Normal Memory,可以处理Non-snoop读写、atomic操作、以及这些命令的其它形式、CMO请求

下图1-4显示了通过互连连接的各种协议节点类型:

、读数据来源

在基于CHI的系统中,读请求的数据可以来自不同的地方,如下图1-5所示,这些源有:

  • Cache within ICN
  • Slave Node
  • Peer RN-F

        对于RN-F或SN返回的读数据,可以发送给HN,HN再转发数据给原始的Requester;也可以直接跳过HN,返回数据给原始Requester,这样可以减少读数据的latency。这些技术可分类为:

DMT

Direct Memory Transfer

SN直接返回数据给原始的Requester

DCT

Direct Cache Transfer

Peer RN-F字节返回数据给原始Requester;

在DCT中,数据提供者需要通知HN它已经将数据发给原始Request了,在某些情况下,数据提供者也必须发送一份拷贝数据给HN。

DWT

Direct Write-data Transfer

定义允许请求的请求节点直接向下级节点发送写入数据的特性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HR专家:未来零代码开发将成求职热门,你准备好了吗?

一名五十五岁的农民,毫无程式设计经验,靠著自己自学零码开发,竟为他的家乡建起了六个数位资讯系统,其中一个更是带动了乡村“厕所革命”。阿里云说,“也许10-15年以前,公司的招聘会要求员工能够使用 WORD, …

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑

Jmeter学习和一个关于jmeter获取X-XSRF-TOKEN时的坑 现在想对一个接口做性能测试,需要测试它多个线程并发下的调用 1.新建测试计划和线程组 略 2.新建http接口 一个完整的http接口包含请求头和请求,这里就需要两个组件:HTTP request、HT…

Java 代码重试实现方式

Java 代码重试实现方式 一.方法内直接自动重试二.静态代理方式1.启动类2.接口3.实现4.静态代理5.单元测试类 三.JDK 动态代理1.代理类2.单元测试 四.CGLIB 动态代理1.动态代理类2.单元测试 五.手动 AOP1.自定义注解2.重试注解切面3.测试类4.单元测试方法 六.Spring Retry1.测试…

虚拟机centos7配置网络

虚拟机centos7配置网络 centos7克隆之后需要配置网络才能联网。 实验环境: VMware Workstation Pro 16CentOS 7系统虚拟机主机Windows 11系统 1.VMware网络模式设置为NAT模式 虚拟机–设置–网络适配器– ​​ ‍ 2.查看虚拟机 子网IP和网关IP 编辑–虚拟网…

pytorch Stream 多流处理

CUD Stream https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions 中指出在kenel的调用函数中最后一个可选参数表示该核函数处在哪个流之中。 - 参数Dg用于定义整个grid的维度和尺寸,即一个grid有多少个block。为dim3类型。…

Openlayers实战:利用turf获取两个多边形的交集、差集、并集

在数据统计方面,通常会涉及到图形间的交集、并集、差集等。在Openlayers的实战中,我们显示两个多边形的交集、并集、差集的表现。通过turf的方式,可以快速的实现我们的数据处理,具体的请参考源代码。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师…

MySQL 事务原理:事务概述、隔离级别、MVCC

文章目录 一、事务1.1 事务概述1.2 事务控制语句1.3 ACID特性 二、隔离级别2.1 隔离级别的分类2.1.1 读未提交(RU)2.1.2 读已提交(RC)2.1.3 可重复读(RR)2.1.4 串行化 2.2 命令2.3 并发读异常2.3.1 脏读2.3…

Redis实战案例25-附近商铺功能

1. GEO数据结构 Redis中Geohash功能应用 添加地理坐标 求两点之间距离 搜索天安门附近10km的火车站,按升序 2. 导入店铺数据到GEO Redis中存储店铺的信息,将店铺的id和经纬度坐标存到GEO数据类型中去,其中member存id,经纬度对应…

Docker实战-操作Docker容器实战(二)

导语   上篇分享中,我们介绍了关于如何创建容器、如何启动容器、如何停止容器。这篇我们来分享一下如何操作容器。 如何进入容器 可以通过使用-d参数启动容器后会进入后台运行,用户无法查看容器中的信息,无法对容器中的信息进行操作。 这个时候如果我们需要进入容器对容器…

C语言经典小游戏之扫雷(超详解释+源码)

“少年气,是历尽千帆举重若轻的沉淀,也是乐观淡然笑对生活的豁达!” 今天我们学习一下扫雷游戏怎么用C语言来实现! 扫雷小游戏 1.游戏介绍2.游戏准备3.游戏实现3.1生成菜单3.2游戏的具体实现3.2.1初始化棋盘3.2打印棋盘3.3布置雷…

黑马头条项目学习--Day1: 环境搭建、SpringCloud微服务(注册发现、网关)

Nacos注册发现、网关 a. 项目介绍b. app登录1) 需求分析2) 表结构分析3) 手动加密(md5随机字符串)4) 用户端微服务搭建5) 功能实现6) app网关7) 网关校验jwt8) 前端集成, 配置nginx a. 项目介绍 业务说明 技术栈说明 [外链图片转存失败,源站可能有防盗…

Spring Boot多级缓存实现方案

1.背景 缓存,就是让数据更接近使用者,让访问速度加快,从而提升系统性能。工作机制大概是先从缓存中加载数据,如果没有,再从慢速设备(eg:数据库)中加载数据并同步到缓存中。 所谓多级缓存,是指在整个系统架…

SpringBoot之logback-spring.xml详细配置

《logback官网》 各种指导文件&#xff0c;有空自己去看&#xff0c;比如&#xff1a;我们需要调整的是布局&#xff0c;直接看Layouts。 pom.xml <!-- 环境配置 --><profiles><profile><id>dev</id><properties><spring.profiles.a…

前端例程20230806:彩色灯珠装饰

演示 这里页面四周的彩色灯珠是会随着页面调整自动调整位置的。 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta na…

【数据结构与算法——TypeScript】哈希表

【数据结构与算法——TypeScript】 哈希表(HashTable) 哈希表介绍和特性 哈希表是一种非常重要的数据结构&#xff0c;但是很多学习编程的人一直搞不懂哈希表到底是如何实现的。 在这一章节中&#xff0c;我门就一点点来实现一个自己的哈希表。通过实现来理解哈希表背后的原理…

2022年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 已知a“161”&#xff0c;b“16”&#xff0c;c“8”,执行语句da>b and a>c&#xff0c;变量d的值为是&#xff1f; A&#xff1a;0 B&#xff1a;1 C&#xff1a;True D&am…

探究使用HTTP爬虫ip后无法访问网站的原因与解决方案

在今天的文章中&#xff0c;我们要一起来解决一个常见问题&#xff1a;使用HTTP爬虫ip后无法访问网站的原因是什么&#xff0c;以及如何解决这个问题。我们将提供一些实际的例子和操作经验&#xff0c;帮助大家解决HTTP爬虫ip无法访问网站的困扰。 1、代理服务器不可用 使用HT…

【SpringBoot笔记】定时任务(cron)

定时任务就是在固定的时间执行某个程序&#xff0c;闹钟的作用。 1.在启动类上添加注解 EnableScheduling 2.创建定时任务类 在这个类里面使用表达式设置什么时候执行 cron 表达式&#xff08;也叫七子表达式&#xff09;&#xff0c;设置执行规则 package com.Lijibai.s…

面试常问:tcp的三次握手和四次挥手你了解吗?

三次握手和四次挥手是各个公司常见的考点&#xff0c;一个简单的问题&#xff0c;却能看出面试者对网络协议的掌握程度&#xff0c;对问题分析与解决能力&#xff0c;以及数据流管理理解和异常情况应对能力。所以回答好一个tcp的三次握手和四次挥手的问题对于我们的面试成功与否…

(vue)获取对象的键遍历,同时循环el-tab页展示key及内容

(vue)获取对象的键遍历&#xff0c;同时循环el-tab页展示key及内容 效果&#xff1a; 数据结构&#xff1a; "statusData": {"订购广度": [ {"id": 11, "ztName": "广", …