配置,crossbar
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多核处理器的片上互联网络可以基于多种方式实现。
布局的复杂度、路由器数目以及线的密度和长度决定了不同的实现代价;而不同实现
方法的性能则由延迟、带宽和路径多样性所决定。
当前方法的性能则由延迟、带宽和路径多样性所决定。
当前
GPGPU-Sim 的互联网络可以被配置为使用多种方式实现,包括包括
Mesh ,交叉开关,蝶形网络等。
Ali Bakhoda 对这些不同互联方式的性能进行了实验,得出的结论是由于互联方式的不同所导致的不同延迟对测试程序的性能影响很小,也就是说,性能影响很小,也就是说,不同互联方式对模拟结果影响很小。
而当不同互联方式对模拟结果影响很小。
而当
前NVIDIA GPU 产品中所使用的互联技术也为产品中所使用的互联技术也为
crossbar 技术,因此本文仅对GPGPU-Sim 中的中的 crossbar 实现方法进行介绍。
实现方法进行介绍。
GPGPU-Sim 中的中的 Crossbar 是基于是基于
Dally 和 Towles 提出的方法来实现的。
GPU 中一般存在有多个计算核和多个存储控制器,互联网络中往往存在多个从不同计算核到不同存储控制器的访存请求以及反方向的数据传递。
GPGPU-Sim 对这两个方向上的消息进行分开处
理,分别使用两个理,分别使用两个 crossbar 实现,一个从实现,一个从
Shader Core 转播消息到存储控制器,另一个做相反工作。
这样使得每一个交叉开关只需处理
一个方向上的消息,降低系统实现的复杂度。
类似的技术在一个方向上的消息,降低系统实现的复杂度。
类似的技术在
SUN 公司的司的
Niagara 处理器中也被用到,它采用了两个交叉开关来实现处理器核与存储子系统之间的双向通信。
交叉开关分配符创建节点来满足多个来自不同输入的请求,并寻找节点到一些需要的输出。
当这些请求有冲突时,只有一个可以满足,其
他的将会延迟到下一周期。
从他的将会延迟到下一周期。
从 N 个源到个源到
M 个目的地的请求可以被归纳为一个归纳为一个 N by M 的 0、1 矩阵,从编号为矩阵,从编号为 i 的源到编号为的源到编号为
j 的
目的地的请求用矩阵目的地的请求用矩阵 R 第 i 行 j 列位置的元素为列位置的元素为 1 来表示。
由来表示。
由
crossbar 产生一个产生一个 N by M 的矩阵的矩阵
G 来表示哪些请求被完成。
一个针对针对 4 个源与4 个目的地的个目的地的 R 矩阵和可能的矩阵和可能的 G 矩阵为:矩阵为:
在同一请求矩阵下,分配符常常能生成许多不同的矩阵分配符常常能生成许多不同的矩阵(如上面所示(如上面所示的两个),这些矩阵常常都是尚未优化的。
这表明交叉开关分配符对交叉开关带宽利用是至关重要的。
交叉开关带宽利用是至关重要的。
为了完成所有的请求,GPGPU-Sim 使用使用
Parallel Iterative Matching (PIM ,并行迭代匹配)分配符来产生,并行迭代匹配)分配符来产生
G 矩阵,它是一个简单的可分离的分配符。
首先对每一个发出请求的源随机的选择一个所请求的目的地,在完成该步操作后,若仍然存在有空闲的目的地存在,则随机的从对该目的地的剩余请求中选择一个输入加以满足。
对于上面的对于上面的 R 矩阵,PIM 可能的完成序列为:第一步中随机选择的中间矩阵可能的完成序列为:第一步中随机选择的中间矩阵 Y 可能为:可能为:
Y 中最合适的输出有一个以上的剩余请求,无论输出选中了哪一个
请求,整个带宽利用是在优化之下的。
最合适的两个矩阵可以从
Y 中推导的准许矩阵(Permission Matrix )G 来图示说明。
两个准许矩阵都没有途经第二个输出的请求,这就没有充分利用交叉开关带宽。
未优化的的未优化的的
PIM 分配符可以通过多个传递来减轻每个传递的负担,它的实现方式是允许空闲的输出从上一次的传递中被忽略的请求中选择,担这要花费更长的分配延迟的代价。
担这要花费更长的分配延迟的代价。
提高利用率的另一个方法提高利用率的另一个方法就是使用输入加速,简单地说,就是把输入缓冲分割为多个部分,每部分包含将被发送给输出子集的消息。
部分包含将被发送给输出子集的消息。
比如说,比如说,考虑使用一个带两倍的输入加速的交叉开关配置,每个输入有两个输入缓冲,一个专门连接奇数输出,另一个连接偶数输出。
两倍的输入缓冲减少了请求在 PIM 分配的第一步被忽略的几率,增加了输出在每个周期得到一个争
夺请求的机会。
Dally 和
Towles 研究了在一个随机通信模式下,对于一个于一个 16×16 的交叉开关,两倍的输入加速可以增加的交叉开关,两倍的输入加速可以增加
PIM 分配符的带宽利用,它可以从的带宽利用,它可以从 64%增加到增加到
87%。
为了最小化互联网络到为了最小化互联网络到
Shader Core 或者存储控制器的争夺的影响,当输入消息被压入互联网络中当输入消息被压入互联网络中(使用(使用(使用 icnt_push()抽象接口)抽象接口)时,时,首先
要存储在输入缓冲内。
输入缓冲中,消息被分解为片元(即要存储在输入缓冲内。
输入缓冲中,消息被分解为片元(即
flit ,一个片元就是在一个周期之内,一个可以通过交叉开关结构传递的小的数据包)。
这允许分配符在细粒度方式下工作来调度不同消息的传输,以获得更高的效率。
在输出缓冲上,这些片元被整合到它们原始的消
息,等待被目标系统弹出(icnt_pop )。
在本模拟器实现的交叉开关中,主要模拟了使用令牌(credit )的输入缓冲和输出缓冲的有限大小。
每个缓冲开始使用的令牌数量等于它的最大容量的片元数。
当一个输入消息压入到输入缓冲时,当一个输入消息压入到输入缓冲时,就扣除与就扣除与消息占有的片元数量等同的令牌。
消息占有的片元数量等同的令牌。
当片元从输入缓冲传出时,当片元从输入缓冲传出时,令牌返还到缓冲。
对于输出缓冲也是同样的应用,对于输出缓冲也是同样的应用,在那里当片元从交叉开关在那里当片元从交叉开关到达时就扣除令牌,弹出时再返还。
对于这两种情况,当令牌溢出时,就代表着缓冲已满。
可以使用互联接口函数强迫输入端口用icnt_has_buffer()查询来检查输入缓冲空间的可用性,这个函数在将消息压入互联网络之前检查输入缓冲可用的令牌数。
息压入互联网络之前检查输入缓冲可用的令牌数。
另一方面,另一方面,一个充满了输出的缓冲可以作废片元到某个输出的传输,即使分配符同意该请求,也不进行分配,直到输出缓冲空间再次可用。
这种行为允许输出目标上的阻塞传回到输入。
这种传播特性保证了数据传递的可靠性,在模拟互联系统中十分重要。
性,在模拟互联系统中十分重要。
模拟的互联网络的理论峰值带宽和片元尺寸一样,都是由交叉开关的时钟速率定义的。
交叉开关的时钟速率本质上是模拟器中 icnt_transfer()的调用速率,通常和的调用速率,通常和
Shader Core 的时钟速率相同。
下一步的工作可以实现一种机制来模拟不同模块之间的相关时钟域,这也是低功耗技术的潜在要求。
也是低功耗技术的潜在要求。