Chapter19 Allocation of
Principles and Practices of Interconnection Networks by William James Dally, Brian Patrick Towles
当仲裁器将单个资源分配给一组请求者中的一个时,分配器执行一组资源和一组请求者之间的匹配,而对于每个请求者,其可能同时请求一个或多个资源。例如,考虑一组router的输入单元,每个输入单元都有一些flit,这些flit的目的地分别为switch的不同输出端口。我们已经在第 17.2.2 节中介绍了分配器,在那里我们讨论了它们用于分配crossbar switch。在每个时钟周期,分配器必须在输入单元和输出端口之间进行匹配,以便从每个输入端口选择最多一个flit,在每个输出端口也最多选择一个flit。
19.1 Representations
对于一个n × m 分配器,其接受 n个 m-bit向量作为输入,并生成 n个 m-bit向量作为输出的单元,如图 19.1 所示为一个4x3 (n = 4 , m = 3) 分配器。如果请求输入 rij 被置1 (常称之为 被asserted),表明请求者 i 想要访问资源 j 。每个请求者可以同时请求资源的任何子集。对于router设计中使用的分配器,请求者通常对应于switch输入,资源对应于switch输出。因此,我们通常将请求者和资源分别称为输入和输出。
分配器针对请求情况,根据三个规则生成授权向量:
- 必须有request请求
- 对于每一个input (requester),每拍最多只能有一个request被grant
- 对于每一个output (resource),每拍最多只能有一个request被grant
图19.1 n × m分配器,接受n个m-bit请求向量,并生成n个m-bit授予向量。(a) 分配器的符号,其中显示了单独的请求和grant信号。(b) 分配器的信号简化表示。
分配器可以被认为是接受一个n × m 请求矩阵 R,然后产生一个授权矩阵 G,其中,R包含所有的单个请求rij,是一个任意的二进制值矩阵。G包含所有的授权 gij,也是一个二进制值矩阵 [注1];并且G只包含与 R 中的非零条目一致的 1(规则 1),每行最多有一个 1(规则 2),并且 每列最多一个(规则 3)。
对于如下的请求矩阵R,有两种可能的grant矩阵G1和G2.
G1 和 G2 都是请求矩阵 R 的有效授权矩阵,因为它们都符合上面列出的三个规则。然而,G2 通常是更理想的授权矩阵,因为它将所有三个资源分配给输入(可以看到G2中有三个1) [注2]。像G2这样包含最大匹配数量的分配方法,称为maximum matching,以下称之为最大匹配。而G1,在不移除现有授权之一的情况下无法处理额外的请求,称为maximal matching。
从矩阵 G1可以看出良好匹配的难度:一旦在矩阵的第一行中设置了 grant g00,就不再可能进行最大匹配。由于输入 2 仅请求资源 0,因此将此资源(output 0)分配给任何其他输入就会导致输入 2 空闲。将资源 1 分配给输入 0 也会阻止最大匹配,因为资源 0不能同时分配给输入 1 和 2。对于像R这样比较难的请求矩阵,进行一次错误分配可能会导致次优匹配。
分配问题也可以表示为二部图 (bipartite graph) [注3]。例如,图19.2(a) 给出了请求矩阵 R 的二部图表示。采用这种形式,分配问题可以转化为二部匹配问题:找到图边 (graph edges)的最大子集,使每个顶点最多关联到子集中的一条边上。图 19.2(b) 显示了授权矩阵 G2 的二部图匹配。
图19.2 分配问题的二部图表示。(a)请求矩阵r对应的二部图 (b)授权矩阵G2对应的二部图匹配。
对于一个有P个端口的switch,计算其最大匹配的时间复杂度为 O(P2.5) [83]。一般来说,计算最大匹配需要回溯——因为可能会临时添加授权,但稍后却又要删除。不幸的是,switch分配器或虚拟通道分配器无法承受这种精确解决方案的复杂性,并且必须要做的回溯动作使得获取最大匹配的算法难以流水线化。由于实际硬件中,通常只有一个或少量周期可用于执行分配,因此maximal-size matches成为更现实的目标。然而,正如我们将看到的,maximal matches也可能非常昂贵,因此在实践中,硬件分配器通常会引入更加简单的启发式方法 (heuristics)来提供快速但近似的解决方案。
注:
- 在某些应用程序中,R可以是整数值,也就是可以为相同的输出发出多个请求。然而,我们在这里不考虑这些应用。
- 实际上,对于非均匀流量(non-uniform traffic )的测试场景来说,maximum-size并不总是最好的[124]。
- 在二部图中,顶点可以被划分为两个集合A和B,所有的边连接A中的一个顶点和B中的一个顶点。