栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

On-Chip Networks第二版第二章阅读笔记(与系统架构的接口)

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

On-Chip Networks第二版第二章阅读笔记(与系统架构的接口)

时间:2021年10月30日

作者:一只想要上天的猪

原书:[On-Chip-Network](…on-chip networks & booksimOnChip Networks Second Edition.pdf) [第一版](…on-chip networks & booksimOn-Chip Networks (Synthesis Lectures on Computer Architecture) by Li-Shiuan Peh, Natalie Enright Jerger (z-lib.org).pdf)

第二章:与系统体系的接口

体系架构的变化:

单处理器核心计算机芯片逐渐转为多核芯片。对于一个计算机系统而言:**多核(mutli-core)与众核(many-core)**结构已经是计算机系统的主要构建块,这一个重要的变化。

***性能上的增益将主要依靠***:

  • 消除处理机与存储器件之间的通信瓶颈
  • 执行单元(core)之间的高效通信越来越成为关键因素

本章讨论了几个主要的计算机系统类型,其中片上网络都发挥了关键作用(form a critical backbone)

  • shared-memory chip multiprocessors(CMP)【高端服务器、嵌入式产品】
  • message passing system
  • multiprocessor System on Chip(Mp-socs)【移动设备】

必须要说一句,章节前开始说要讨论三个

但是只说了第一个,后面两个要不没提到,要不就带过

这本书还是不行啊

多处理器芯片上的共享主存网络(CMP)

并行编程很难,但是越来越重要。

维持一个全局共享地址空间能够缓解并行程序编程人员的工作负担(这个是相较于PGAS而言的,但是并没有详细解释)。

分割全局地址空间(PGAS)在现代对称多处理机(SMP)中很常见,高位地址用于选择内存地址关联的socket(这个socket可能就是一个物理上与其他存储器分离的存储器)

这里还提到了,SMP和CMP的异同

  • 同:二者都是共享主存
  • 异:CMP不像SMP的UMA性质,而显示出了NUMA(非均匀存储器访问)

关于PGAS, 可以查看链接:PGAS.pdf

PGAS是一种并行编程模型,它假定一个全局地址空间逻辑上被分割,分割出来的每一份都作为某个进程、线程或者是处理元素(指的就是一个处理核心)局部所有。这种情况可以充分利用局部性原理(locality of reference)

PGAS还有一个变种:异步PGAS(APGAS)

共享存储模型下,通信隐含地发生在数据存取以及取指令过程中

  • 逻辑上讲,所有的处理器都存取同一个主存,每个都能看到最新的数据

  • 但是实际上,存储层次结构要使用cache改善性能

使用cache要考虑一个很重要的事情,cache一致性,在CMP中(通常每个core都至少有一个私有的L1Cache)cache尤其多。在这里就出现了cache一致性协议来保证所有cache之间数据的一致性,以及要求它是最新的。

这里有一句很有意思的话:

With the shared-memory model, communication occurs implicitly through the loading and storing of data and the accessing of instructions. As a result, the shared-memory model is an intuitive way to realize this sharing.

很奇怪啊,what is “this sharing”??

要不就是这句话不完整;要不就是完整的,share-memory model既做了条件,又做了结果,这句话有什么意思呢;再或者this sharing其实代指前文提到的某个玩意,但是找不到呀

然后这里的communication到底指的是什么?node与node之间,node与memory之间的通信

**Cache一致性协议 ** [主存与cache](…A Primer on Memory Consistency and Cache Coherence.pdf)

  • 单写多读
  • 保证每次只有一个处理器写cache行
  • 多个处理器可以同时读一个cache行

是cache一致性协议决定了shared memory CMP中哪些信息交流是必要的

shared-memory CMP中的两个关键特征就是:

  • cache一致性协议
  • cache层次结构
一致性协议对网络性能的影响

memory consistency 和 cache coherence是不一样的,cache coherence是要求多个cache中保存的主存副本是最新的,而memory consistency是定义的存储器存取的规则以及如何应用

如果一个结点想要往某个cache行中写,那么必须确保其他节点没有缓存这个地址

可是这句话真的对吗?凭啥,那不是耽误事儿吗,可能是想说,其他node必须要有权限给它。反正就是讨论嘛,这个里面关于cache一致性的描述不一定正确

需要通信的数据有

  • 数据请求
  • 数据响应
  • 一致性权限/请求、响应

一致性权限要在一个node读/写cache块之前获取

多处理器系统的一致性协议有以下两种:

  • 广播协议
  • 目录协议

对于广播协议,一致性请求需要发送到芯片上的所有结点,因此产生了**高带宽要求;**数据响应是点对点传输的,不需要排序

广播系统依赖两个物理网络:

  • 需要排序的内联网络,高带宽,用于一致性请求、响应
  • 不需要排序的内联网络,用于数据传送

可以选用多个虚拟链路保证一致性流量(即一致性请求、响应等)传输过程中的顺序,请求和响应可以使用不同的虚拟链路。

目录协议,不需要依靠任何隐式网络排序,并且能够映射到任意拓扑结构

依靠点对点传输而不是广播,这种情况下的扩展性显然是更好的,可以添加更多的结点。对带宽的要求没有广播协议高

目录包含了信息:哪些core(node)拥有某个cache block,以及一致性状态信息(like MESI protocol的4个状态)

可以想象一下这个目录是一个什么样的结构:

  • 是不是要包含一个cache block的信息,能够唯一索引的
  • 还得缓存了这个块的结点信息,内联系统或许将这些结点也编址了

目录保存在主存中,所以也可以使用cache对它的访问进行加速。

对目录的cache同样的可以分散到各个node中去,也可以共享的,可以是任意数量的,当要查某个块的目录信息时,需要根据地址做正确的映射。

home node:每个地址与一个home node相互关联,这个home node用于处理所有对该地址的一致性请求,等一下,home node实际上还是一个core所在的tile,home node还是一个node啊

这个地方对于home node的说明不清晰,可以参考另一本书

总结一下,两种协议最大的区别可能只是通信量方面了,至少在这本书里是这样的。

一致性协议对OCN提出的要求

其实前面已经讲了一部分了

缓存一致性协议需要几种信息:

  • 单播(点对点)
  • 多播(one-to-many,比如目录协议中cache行的不合法信息传播到所有的共享者)
  • 广播(one-to-all)

目录一致性协议大部分情况下是单播,带宽要求低,不能避免多播

广播协议存在大量的广播,需要高带宽,数据响应是单播的

对于信息大小尺寸的要求:

  • 一种是一致性请求及响应(不带数据的响应)
    • 包括主存地址、一致性命令等
    • 信息量小
  • 一种是数据信息,数据响应,完整的cache block以及地址(一致性协议主要是用于保证所有的cache数据都是up-to-date的)这种情况可以避免大量的访存,比如一个cache miss,可以直接去其他缓存了的cache中读取。
协议级网络死锁

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ceO0mLQh-1635601969408)(On-ChipNetwork第二章.assets/image-20211030213112001.png)]

除了要考虑信息大小以及种类,共享主存系统还要考虑网络免受协议级死锁。

by the way,这个图可能画的不好哦,两边的cache发出不同名字的请求可能更好一点

协议可以请求几个不同的信息类,每个类包含一组互相独立的一致性动作,也就是说:某类队列中的一个请求信息不会导致同一类另一个请求信息的产生,但是可能触发另一个类的信息

只有当不同类的信息发生了资源依赖才可能产生死锁。

三种典型的类:

  • 请求:load store 更新,写回等
  • intervention(中转):就是把请求转发到最新数据缓存部分
  • 响应:包括invalidation acknowledgements,negative acknowledgements(请求失败),数据(指的是cache block)

可以用大量虚拟链路避免出现死锁。不同的类使用不同的虚链路,循环占有就不会产生了。

虚链路部分还没有开始看,这个问题也是待复现的那篇论文要讨论的事情(死锁避免)


上面一部分基本介绍了关于一致性协议的各种问题

下面一部分开始讨论与cache一致性相关的硬件层次排布带来的影响


cache层次实现对网络性能的影响
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/912452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号