02325 「コンピュータ システム アーキテクチャ」の自習問題: 第 6 章、第 7 章、および第 8 章

総合カタログを確認する

  02325 「コンピュータシステムアーキテクチャ」自己検討検討要点リスト

6. アレイプロセッサ

1. 単段相互接続ネットワーク

歴史試験問題:2020.10(PM2I)、2017.04(PM2I)

タイトル説明: 1階層相互接続ネットワークの相互接続機能、ユニット接続。
  

放課後演習 6-4 6-5

  16 個の処理ユニットからなる単一レベルのキューブ相互接続ネットワークを実装します。
(1) あらゆる種類の単一レベルキューブ相互接続ネットワーク関数の一般式を書き留めてください;
(2) 第 3 処理装置が単一レベルキューブ相互接続ネットワークを使用して直接データを転送できる処理装置はどれですか?
(3) シングルレベルのキューブ相互接続ネットワークがシングルレベルの PM2I ネットワークに置き換えられた場合の最初の 2 つの質問の結果。

解:
(1)関数数一般式:
Cube 0 ( b 3 b 2 b 1 b 0 ) = b 3 b 2 b 1 b ‾ 0 Cube 1 ( b 3 b 2 b 1 b 0 ) = b 3 b 2 b ‾ 1 b 0 立方体 2 ( b 3 b 2 b 1 b 0 ) = b 3 b ‾ 2 b 1 b 0 立方体 3 ( b 3 b 2 b 1 b 0 ) = b ‾ 3 b 2 b 1 b 0 \begin{array}{l} \mathrm{Cube_0(b_3b_2b_1b_0)=b_3b_2b_1\overline{b}_0} \\ \mathrm{Cube_1(b_3b_2b_1b_0)=b_3b_2\overline{b}_1b_0} \\ \mathrm{Cube_2( b_3b_2b_1b_0)=b_3\overline{b}_2b_1b_0} \\ \mathrm{Cube_3(b_3b_2b_1b_0)=\overline{b}_3b_2b_1b_0} \end{array}キューブ_ _ _0( b3b2b1b0)=b3b2b1b0キューブ_ _ _1( b3b2b1b0)=b3b2b1b0キューブ_ _ _2( b3b2b1b0)=b3b2b1b0キューブ_ _ _3( b3b2b1b0)=b3b2b1b0

(2) 1番、2番、7番、11番。

(3)関数一般:
PM 2 + 0 ( j ) = j + 1 mod 16 PM 2 − 0 ( j ) = j − 1 mod 16 PM 2 + 1 ( j ) = j + 2 mod 16 PM 2 − 1 ( j ) = j − 2 mod 16 PM 2 + 2 ( j ) = j + 4 mod 16 PM 2 − 2 ( j ) = j − 4 mod 16 PM 2 ± 3 ( j ) = j ± 8 mod 16 \begin {配列}{l} \mathrm{PM2_{+0}}(j)=j+1\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{-0}}(j)=j-1\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{+1}}(j)=j+2\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{-1}}(j)= j -2\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{+2}}(j)=j+4\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{-2}} ( j)=j-4\quad \mathrm{mod\ 16}\\ \mathrm{PM2_{\pm3}}(j)=j\pm8\quad \mathrm{mod\ 16} \end{array}午後2 _+0 _( j )=j+1モード1 6 _ _ 午後2 _ 0( j )=j1モード1 6 _ _ 午後2 _+1 _( j )=j+2モード1 6 _ _ 午後2 _ 1( j )=j2モード1 6 _ _ 午後2 _+2 _( j )=j+4モード1 6 _ _ 午後2 _ 2( j )=j4モード1 6 _ _ 午後2 _± 3( j )=j±8モード1  6 _ _
 1、2、4、5、7、11、15位。

相互接続ネットワークの概念:
  処理装置間でデータを送信する必要があるが、処理装置の数が多い場合、各装置をペアで直接接続することは不可能であり、コストが高すぎるため、相互接続を使用する必要がある異なる相互接続ネットワーク 異なる相互接続機能に対応して、異なる接続モードを表します。さまざまなネットワークの相互接続機能を次の表に示します。
(1) キューブシングルレベルネットワーク (Cube)
  接続構造は立方体に似ています: 4 つの処理ユニットが 2 次元の立方体 (正方形) に接続され、各ユニットは他の 2 つのユニットに接続され、8 つの処理ユニットが接続されます。 3 次元の立方体 (キューブ) を使用し、各ユニットが他の 3 つのユニットに接続されているなど。
  この質問のように、16 個のユニットは 4 つの 2 進数ビットで表され、各ユニットは他の 4 つのユニットに接続されます。3番(0011)に接続されているユニットは2(0010)、1(0001)、7(0111)、11(1011)です。
(2) PM2I 単段ネットワーク
  PM2Iの意味は P lus − Minus 2 i \mathrm{Plus-Minus}\ 2^iプラス_ _ _マイナス2 _ _ _ _ i(加减 2 i 2^i 2i ) は相互接続関数に対応し、jj処理ユニットjに直接接続できるユニット番号はどれですか
  この質問のように、iii の値の範囲は 0 ~ 3 で、4 ビット、NNは処理単位の数に相当する16であり、modは余りを表す。iが 3 の場合、2 つの結果は同じであるため、相互接続関数を記述すると、2 log 2 N − 1 \mathrm{2log_2}N-12ログ_ _2N1 . サイズ 3 の場合:
3 ± 1 = 2 , 4 3\pm1=2,43±1=2 4
3 ± 2 = 1、5 3\pm2=1,53±2=1 5
3 ± 4 = − 1 , 7 → 15 , 7 3\pm4=-1,7\to15,73±4=1 71 5 7
3 ± 8 = − 5 , 11 → 11 , 11 3\pm8=-5,11\to11,113±8=5 1 11 1 1 1
(3) シャッフル スワップとバタフライは基本的に無視され、単純に相互接続関数を書き留めます。

シングルステージネットワーク インターコネクト機能 NNN 为处理单元个数
n = l o g 2 N n=\mathrm{log_2}N n=log2N
立方体 C u b e i ( P n − 1 ⋯ P i ⋯ P 1 P 0 ) = P n − 1 ⋯ P ‾ i ⋯ P 1 P 0 \mathrm{Cube_i(P_{n-1} \cdots P_i \cdots P_1P_0)=P_{n-1} \cdots \overline{P}_i \cdots P_1P_0} Cubei(Pn1PiP1P0)=Pn1PiP1P0 对应位取反 1 对 n n n
PM2I { P M 2 + i ( j ) = j + 2 i m o d   N P M 2 − i ( j ) = j − 2 i m o d   N \left\{\begin{matrix}\mathrm{PM2}_{+i}(j)=j+2^i\quad \mathrm{mod\ }N\\\mathrm{PM2}_{-i}(j)=j-2^i\quad \mathrm{mod\ }N\end{matrix}\right. { PM2+i(j)=j+2imod NPM2i(j)=j2imod N 加减 2 i 2^i 2i 1 对 2 n − 1 2n-1 2n1
混洗交换 S h u f f l e ( P n − 1 P n − 2 ⋯ P 1 P 0 ) = P n − 2 ⋯ P 1 P 0 P n − 1 \mathrm{Shuffle(P_{n-1} P_{n-2} \cdots P_1P_0)= P_{n-2} \cdots P_1P_0P_{n-1}} Shuffle(Pn1Pn2P1P0)=Pn2P1P0Pn1 最左位挪到最右边 1 对 1
蝶形 B u t t e r f l y ( P n − 1 P n − 2 ⋯ P 1 P 0 ) = P 0 P n − 2 ⋯ P 1 P n − 1 \mathrm{Butterfly(P_{n-1} P_{n-2} \cdots P_1P_0)= P_0P_{n-2} \cdots P_1P_{n-1} } Butterfly(Pn1Pn2P1P0)=P0Pn2P1Pn1 最高位最低位互换 1 对 1

2. 多级立方体网络

历史考题:2021.04、2018.04、2017.10、2016.10

题目描述:互连函数、网络拓扑结构图、控制开关状态。
  

课后习题 6-6

  阵列有 0~7 共 8 个处理单元互连,要求按 (0,5)、(1,4)、(2,7)、(3,6) 配对通信。
(1)写出实现此功能的互连函数的一般式;
(2)画出用三级立方体网络实现互连函数的互连网络拓扑结构图,并标出各控制开关的状态。

解:
(1) C u b e ( b 2 b 1 b 0 ) = b ‾ 2 b 1 b ‾ 0 \mathrm{Cube(b_2b_1b_0)=\overline{b}_2b_1\overline{b}_0} Cube(b2b1b0)=b2b1b0
  把配对通信的二进制位表示写出来就能看出来(只要算一对就行,保险起见都算一算):
( 0 , 5 ) → ( 000 , 101 ) (0,5) \to (000,101) (0,5)(000,101)
( 1 , 4 ) → ( 001 , 100 ) (1,4) \to (001,100) (1,4)(001,100)
( 2 , 7 ) → ( 010 , 111 ) (2,7) \to (010,111) (2,7)(010,111)
( 3 , 6 ) → ( 011 , 110 ) (3,6) \to (011,110) (3,6)(011,110)

(2)
在这里插入图片描述
拓扑结构图画法:
  此图分为两个部分,底部的交换、直连、交换是各控制开关的状态,需要根据题目来确定,其余部分为多级立方体互连网络的结构,这部分是固定的。
在这里插入图片描述
  图中 A~L 的矩形框为控制单元,每个控制单元 2 个输入 2 个输出,可以实现的控制方式有 4 种,上播下播通常不考:
(1)直连:输入 (x,y) 输出 (x,y);
(2)交换:输入 (x,y) 输出 (y,x);
(3)上播:输入 (x,y) 输出 (x,x);
(4)下播:输入 (x,y) 输出 (y,y);
在这里插入图片描述
  对于多级立方体网络,每一列控制单元都是二功能交换单元,对应一个等级 i i i,并对应 C u b e i \mathrm{Cube}_i Cubei 互连函数。
  以第 1 列,第 0 级为例,控制单元利用 C u b e 0 \mathrm{Cube}_0 Cube0 实现直连或交换两个功能,对于 C u b e 0 \mathrm{Cube}_0 Cube0 来说 0(000) 对应 1(001)、2(010) 对应 3(011)、4(100) 对应 5(101)、6(110) 对应 7(111)。
  以第 2 列,第 1 级为例,对于 C u b e 1 \mathrm{Cube}_1 Cube1 来说 0(000) 对应 2(010)、1(001) 对应 3(011)、4(100) 对应 6(110)、5(101) 对应 7(111)。
  图中每个控制单元输入输出的数字是一样的,而每一对数字都是可以用对应等级的互连函数实现连接的,如此一来图中每个单元上的数字都可以先写出,然后把相同的数字连接起来就行了。
  这里的多级立方体网络是采用的级控制,即每一级(列)所有的控制开关只能处于一种状态,要么直连要么交换。题目中控制开关的状态可以由两种方法确定:
(1)根据第一问的互连函数,0、2 位要取反,对应 0、2 级交换,1 级直连;
(2)根据网络拓扑结构图,要想让 0 输入和 5 相连:0 从 A0 输入交换从 A1 输出,从 F1 输入直连从 F1 输出,从 J1 输入交换从 J5 输出,最终连接 5。


课后习题 6-10

  并行处理机有 16 个处理单元,要实现相当于先 8 组 2 元交换,然后是 1 组 16 元交换,再次是 4 组 4 元交换的交换函数功能。
(1)写出实现此函数最终等效的功能,各处理器间所实现的互连函数的一般式;
(2)画出实现此互连函数的四级立方体互连网络拓扑结构图,标出各级交换开关的状态。

解:
  这里主要搞懂几组几元交换的意思,得到如 6-6 中的配对通信,就很容易了。如 8 组 2 元交换代表 16 个处理单元分成 8 组,每组 2 个单元,每组的单元反向排列。

| 0  1 |  2  3 |  4  5 |  6  7 |  8  9 | 10 11 | 12 13 | 14 15 |		输入
| 1  0 |  3  2 |  5  4 |  7  6 |  9  8 | 11 10 | 13 12 | 15 14 |		82 元交换
|14 15   12 13   10 11    8  9    6  7    4  5    2  3    0  1 |		116 元交换
|13 12   15 14 |  9  8   11 10 |  5  4    7  6 |  1  0    3  2 |		44 元交换

  0(0000) 对应 13(1101),可得到互连函数 C u b e ( b 3 b 2 b 1 b 0 ) = b ‾ 3 b ‾ 2 b 1 b ‾ 0 \mathrm{Cube(b_3b_2b_1b_0)=\overline{b}_3\overline{b}_2b_1\overline{b}_0} Cube(b3b2b1b0)=b3b2b1b0,拓扑结构图按同样的画法,先确定每一级的数字对,标上数字后对应连接。交换开关状态直接安装互连函数确定,0、2、3 级为交换,1 级为直连。

在这里插入图片描述


3. 并行存储器无冲突访问

历史考题:2019.10

题目描述:无冲突访问数组元素分布、并行存储器分体数。
  

课后习题 6-14

  在集中式主存的阵列机中,处理单元数为 4,为了使 4 × 4 4\times 4 4×4 的二维数组 A 的各元素 a i j ( i = 0 ∼ 3 , j = 0 ∼ 3 ) a_{ij}(i=0\sim3,j=0\sim 3) aij(i=03,j=03) 在行、列、主 / 次对角线上均能实现无冲突访问,请填出数组各元素在存储器分体(分体号从 0 开始)中的分布情况。假设 a 00 a_{00} a00 已放在分体号为 3。体内地址(从 i + 0 i+0 i+0 开始)为 i + 0 i+0 i+0 的位置。

解:
分体数 M = 5 = 2 2 P + 1 M=5=2^{2P}+1 M=5=22P+1
P = 1 P=1 P=1
数组中同一列上两个相邻行的元素其地址错开的体号距离 δ 1 = 2 P = 2 \delta_1=2^P=2 δ1=2P=2
数组中同一行中两个相邻列的元素其地址错开的体号距离 δ 2 = 1 \delta_2=1 δ2=1
数组各元素在存储器分体中的分布情况如下表:

图6-14
解释:
  无冲突访问就是在访问数组的行、列、主 / 次对角线的元素时没有冲突。需要访问的数据存放在不同的分体中时访问没有冲突,但是多个数据在同一分体中就会产生冲突。假设如下表存储数据,可以看出访问数组每一行、主 / 次对角线的元素没有冲突,但是访问列时每个元素都在一个分体中就会产生冲突,无法并行。

0 1 2 3
a 00 a_{00} a00 a 01 a_{01} a01 a 02 a_{02} a02 a 03 a_{03} a03
a 10 a_{10} a10 a 11 a_{11} a11 a 12 a_{12} a12 a 13 a_{13} a13
a 20 a_{20} a20 a 21 a_{21} a21 a 22 a_{22} a22 a 23 a_{23} a23
a 30 a_{30} a30 a 31 a_{31} a31 a 32 a_{32} a32 a 33 a_{33} a33

  题目的目的就是要设计分体的数量和数组元素的存放方式,使得实现无冲突访问。解题步骤为:
(1)确定分体数,分体数为大于 4(数组的行列数、处理单元数) 的质数,也就是 5;
(2)将分体数改写为 2 2 P + δ 2 = 2 2 × 1 + 1 2^{2P}+\delta_2 = 2^{2\times1}+1 22P+δ2=22×1+1 的形式;
(3) δ 1 = 2 P = 2 \delta_1=2^P=2 δ1=2P=2,代表同一列元素的间隔,如 a 00 a_{00} a00 存在 3, a 10 a_{10} a10 要存在 5,因为分体号是 0 ∼ 4 0\sim 4 04,5 就对应到 0;
(4) δ 2 = 1 \delta_2=1 δ2=1,代表同一行元素的间隔,如 a 00 a_{00} a00 存在 3, a 01 a_{01} a01 要存在 4。


7. 多处理机

1. 霍纳法则

历史考题:2019.10、2019.04、2018.10、2017.04、2015.04

题目描述:画树形流程图,计算级数 T P T_P TP、机数 P P P、加速比 S P S_P SP、效率 E P E_P EP
  

课后习题 7-6

  由霍纳法则给定的表达式如下: E = a ( b + c ( d + e ( f + g h ) ) ) E=a(b+c(d+e(f+gh))) E=a(b+c(d+e(f+gh))),利用减少树高的办法来加速运算,要求:
(1)画出树形流程图;
(2)确定 T P T_P TP P P P S P S_P SP E P E_P EP 的值。

解:
(1)
在这里插入图片描述
(2) T P = 4 ,   P = 3 ,   S P = 7 / 4 ,   E P = 7 / 12 T_P=4,\ P=3,\ S_P=7/4,\ E_P=7/12 TP=4, P=3, SP=7/4, EP=7/12

解释:
  原式 E = a ( b + c ( d + e ( f + g h ) ) ) E=a(b+c(d+e(f+gh))) E=a(b+c(d+e(f+gh))) 只能从内向外依次计算,一共 7 步,不能并行,也就是只能单处理机处理,此时的树高(级数)为 T 1 = 7 T_1=7 T1=7
  将式子改写,通用方法是先完全展开,然后尽可能两两成一对并且提公因式

E = a ( b + c ( d + e ( f + g h ) ) ) = a b + a c d + a c e f + a c e g h = ( a b + a c d ) + ( a c e f + a c e g h ) = a ( b + c d ) + a c e ( f + g h ) = [ a ( b + c d ) ] + [ ( a c e ) ( f + g h ) ] \begin{aligned} E&=a(b+c(d+e(f+gh))) \\ &=ab + acd+acef+acegh \\ &=(ab+acd)+(acef+acegh) \\ &=a(b+cd)+ace(f+gh) \\ &=[a(b+cd)]+[(ace)(f+gh)] \end{aligned} E=a(b+c(d+e(f+gh)))=ab+acd+acef+acegh=(ab+acd)+(acef+acegh)=a(b+cd)+ace(f+gh)=[a(b+cd)]+[(ace)(f+gh)]

  然后按公式画树形图即可,个人感觉从上往下画比较好,顶部为加法,展开两个分支,然后在逐步画各个子项的计算,这样比较容易对齐树的层级。
  注意点:有些情况画法是不唯一的,例如某一项为 a b ( c + d ) ab(c+d) ab(c+d),此时可以 a b ab ab c + d c+d c+d 并行再相乘分两步,也可以先算 c + d c+d c+d 再依次乘上 a a a b b b 分三步。此时需要根据题目的情况来决定,有时按并行的两步来计算并不能减少树高,反而会增加机数(因为只一个分支不一定影响整个树高)。
  级数 T P T_P TP :树高,树含有运算符的层级数量;
  机数 P P P:有多少台处理机在进行并行运算,看每一层有多少个运算符,取最大值;
  加速比 S P = T 1 / T P S_P=T_1/T_P SP=T1/TP:单处理机的级数和当前并行加速后的级数的比值;
  效率 E P = S P / P E_P=S_P/P EP=SP/P:加速比除以机数。

2. FORK、JOIN 语句

历史考题:2021.10、2020.10、2020.04、2016.04、2015.10

题目描述:程序用 FORK、JOIN 语句改写,画资源时间图。
  

课后习题 7-8

  若有下述程序:
   U = A + B \mathrm{U=A+B} U=A+B
   V = U / B \mathrm{V=U/B} V=U/B
   W = A ∗ U \mathrm{W=A*U} W=AU
   X = W − V \mathrm{X=W-V} X=WV
   Y = W ∗ U \mathrm{Y=W*U} Y=WU
   Z = X / Y \mathrm{Z=X/Y} Z=X/Y
  试用 FORK、JOIN 语句将其改写成可在多处理机上并行执行的程序。假设现有两台处理机,且除法速度最慢,加、减法速度最快,请画出该程序运行时的资源时间图。

解:
(1)改写后的程序为:

							| 语法解释:
10	U = A + B				| 执行语句左边的编号通常就按 10 20 30... 依次增大, 没有严格的要求
	FORK	30				| FORK	30 就代表下面一条语句和 30 号语句并行
20	V = U / B				|
	JOIN 	2				| JOIN	2 就代表有 2 条语句并行
	GOTO	40				| GOTO	40 是因为 20 运行完接下来要运行 40
30	W = A * U				|
	JOIN	2				| 30 下面不用写 GOTO	 40 是因为按顺序它运行完本来就是运行 40
40	FORK	60				| 这里的 FORK 编号是因为前面有 GOTO 要跳到这里来, 而第一条按顺序运行
50	X = W - V				| 没有别的语句要用到它的编号, 就省略了。
	JOIN	2				|
	GOTO	70				| 如果有 2 条以上的语句要并行就是多写几行 FORK, 同时 JOIN 改成对应的数量
60	Y = W * U				| 例如 20 30 40 都并行:
	JOIN	2				| FORK	30
70	Z = X / Y				| FORK	40

  题目给出的程序每一行就是一条指令,通过观察可以分析程序的并行性,得到程序的运行步骤:
(1)① U = A + B \mathrm{U=A+B} U=A+B 执行
(2)② V = U / B \mathrm{V=U/B} V=U/B 和 ③ W = A ∗ U \mathrm{W=A*U} W=AU 可并行
(3)④ X = W − V \mathrm{X=W-V} X=WV 和 ⑤ Y = W ∗ U \mathrm{Y=W*U} Y=WU 可并行
(4)⑥ Z = X / Y \mathrm{Z=X/Y} Z=X/Y 执行

(2)资源时间图
在这里插入图片描述

  优化了一下答案的图,很多题目中只说加减法最快,除法最慢,这里直接自己规定加减法为 4,乘法 5,除法 6,FORK、JOIN、GOTO 都是 1。部分题目也会这样规定,定量画出来更直观。
  画图流程和注意事项:
(1)10 号语句,加法占 4 个时间
(2)紧接着 FORK 30,后面按顺序运行 20,并且上面并行 30;
(3)20 和 30 运行完都是接上 JOIN 2 ,JOIN 2 是个关键,它会判断 2 条并行指令是否都运行完,如果没有当前的指令就断开了要等全都运行完,如果已经都运行完了就按当前指令往下运行,如果还有指令没开始运行,就会运行未运行指令。
  有点绕,下面举几个例子:
  这道题里面,30 是乘法,20 是除法,所以 30 后面的 JOIN 2 会发现 20 还没运行完就停住了不会往下运行 40,而 20 的 JOIN 2 发现都运行完了就会进入 GOTO 40;假如是 20 先运行完那么就不会进入 GOTO,而是 30 运行完后自然按顺序运行 40。后面也是如此,因为 50 结束的比 60 快,所以 50 后面的 GOTO 70 就被截断了不运行,等 60 运行完接上 70。
  有的情况是 JOIN 4 是 4 条语句并发,假设是 (10,20,30,40),但是只有 2 个处理机,那么就是先并行 10 和 20,谁先运行完后面紧跟 30,以此类推。
(4)还有个注意点是 FORK 相关的,假设现在是 3 条语句并发 (10,20,30),在 3 个处理机上运行,那么运行 10 之前就有 2 个 FORK 语句:FORK 20 和 FORK 30,画图的时候当 FORK 20 一运行完,CPU2 就可以开始执行 20 了,然后 FORK 30 运行完再执行 30 和 10,参考本题的虚线。


8. 数据流机和归约机

  不考大题。

おすすめ

転載: blog.csdn.net/weixin_43605641/article/details/124525916
おすすめ