跳到主要内容

九州大学 システム情報科学府 情報理工学専攻 2021年8月実施 計算機アーキテクチャ

Author

Yu

Description

【問 1】

下図の論理回路の出力 X,YX, Y および内部回路 G1,G2G_1, G_2 の論理関数が以下の様な真理値表で表されるとき、部分回路 FF の論理関数 F(a,b,c,d)F(a, b, c, d) の最簡積和形を示せ。 ただし、論理関数の最簡積和形とは、その論理関数を表す積和形論理式のうち、積項数が最小のものを指す。 積項数が等しい積和形論理式が複数ある場合には、そのなかでリテラル数が最小のものを指す。

【問 2】

5つのステージからなるパイプライン型データパスを有するインオーダ・マイクロプロセッサについて考える。 実装されたパイプラインステージは、IF(命令取得)、ID(命令デコード)、EX(実行)、MEM(メモリアクセス)、ならびに、WB(ライトバック)である。 加算命令の実行における各ステージの処理内容は以下の表に従う。 ここで、各パイプラインステージの実行は常に 11 クロックサイクルで完了できると仮定する。 また、WBステージでレジスタに書き込まれた値は、同一クロックサイクルにて、後続命令のIDステージで読み出し可能である。 さらに、全てのRAW(Read-After-Write)ハザードはパイプラインストールにより解決する。以下の各問に答えよ。

パイプライン式データパスの動作

ステージ加算命令(add x,x, y, $z)実行における各ステージの処理内容
IFメモリより実行すべき命令を取得し、次命令取得のためにプログラム・カウンタを更新
ID命令の解読。レジスタファイルからレジスタ yならびにy ならびに z を読み出し。
EXレジスタファイルから読み出した yy と z の内容を加算。
MEM特に無し(加算結果をWBステージへ転送)。
WB加算結果をレジスタファイル内のレジスタ $x に書き込み。

(1) 以下に示すアセンブリプログラムについて考える。各行において # 記号から右はコメントである。プログラム中に存在するフロー依存関係について、どの命令が、どの命令のどのレジスタに関して依存しているかをすべて列挙せよ。

add $1 ,$3, $5   # <1>
add $9 ,$2, $3 # <2>
add $6 ,$3, $3 # <3>
add $3 ,$4, $3 # <4>
add $4 ,$7, $1 # <5>
add $5 ,$7, $4 # <6>
add $9 ,$3, $6 # <7>
add $2 ,$7, $6 # <8>

(2) 命令発行幅は 11 と仮定する。このアセンブリプログラムの実行に要するクロックサイクル数を答えよ。

(3) 命令パイプラインの命令発行幅を 22 へ増加し、インオーダ・スーパスカラ方式へと拡張する(依存関係のない命令を最大で 22 個同時に実行できる)。拡張後の命令パイプラインにて、このアセンブリプログラムの実行に要するクロックサイクル数を答えよ。

(4) 上記 (3) の拡張によりクロック周波数が 5%5\% 低下した。この拡張による性能向上率を答えよ。

【問 3】

キャッシュメモリにおける「初期参照ミス」「競合性ミス」「容量性ミス」とは何かそれぞれ説明せよ。

题目描述

【问题 1】原题给出了一个组合逻辑电路,以及输出 X,YX,Y 和内部子电路 G1,G2G_1,G_2 的逻辑函数真值表,详见电路图真值表。求子电路 FF 的逻辑函数 F(a,b,c,d)F(a,b,c,d) 的最简积和式。“最简”首先要求积项数最少;若有多个积项数相同的式子,则取文字总数最少者。

【问题 2】考虑具有 IF(取指)、ID(译码)、EX(执行)、MEM(访存)和 WB(写回)五级流水数据通路的顺序执行微处理器。每一级总在 11 个时钟周期内完成,WB 阶段写入寄存器的值可在同一周期被后续指令的 ID 阶段读出,所有 RAW(写后读)冒险均通过流水线停顿解决。加法指令各阶段的操作为:

阶段add $x, $y, $z 的处理
IF从存储器取出待执行指令,并更新程序计数器以取下一条指令。
ID译码,从寄存器堆读出 $y$z
EX将读出的 $y$z 内容相加。
MEM无特殊操作,将加法结果传给 WB。
WB将加法结果写入寄存器堆中的 $x

对以下程序(# 右侧为注释)回答:

add $1 ,$3, $5   # <1>
add $9 ,$2, $3 # <2>
add $6 ,$3, $3 # <3>
add $3 ,$4, $3 # <4>
add $4 ,$7, $1 # <5>
add $5 ,$7, $4 # <6>
add $9 ,$3, $6 # <7>
add $2 ,$7, $6 # <8>
  1. 枚举全部流依赖,逐一指出哪条指令依赖哪条指令产生的哪个寄存器。
  2. 假设发射宽度为 11,求程序执行所需的时钟周期数。
  3. 将发射宽度增至 22,扩展为顺序发射超标量流水线,即最多可同时执行两条互不依赖的指令;求扩展后程序执行所需的时钟周期数。
  4. 若上述扩展使时钟频率降低 5%5\%,求扩展带来的性能提升率。

【问题 3】分别解释缓存中的首次访问缺失(强制缺失)、冲突缺失和容量缺失。

考点

  • 布尔函数最简积和式:结合多级组合电路关系和各子电路真值表反求未知子函数并化简。
  • 五级流水线写后读冒险:识别具体指令序列中的流依赖,并按“写回级同周期可供译码级读取”的规则安排停顿。
  • 顺序发射超标量执行:在保持程序顺序和依赖约束下进行双发射调度,计算周期数及考虑降频后的加速比。
  • 缓存缺失分类:从首次装入、映射冲突和工作集超过容量三个成因区分三类缺失。

Kai

【問 1】

abcdf
0000x
00010
0010x
0011x
0100x
01011
01101
0111x
10001
10010
1010x
1011x
11000
11010
11100
11111
F=ab+cd+bdF = \overline{a}b + cd + \overline{b}\overline{d}

【問 2】

(1)

15($1),37($6),38($6),47($3),56($4)1 \Rightarrow 5(\$1),3 \Rightarrow 7(\$6),3 \Rightarrow 8(\$6),4 \Rightarrow 7(\$3),5 \Rightarrow 6(\$4)

(2)

14

(3)

12

(4)

1.11

【問 3】

初期参照ミス:キャッシュラインを最初にアクセスするときに起こるミス

競合性ミス:同じインデクスをもつ異なるキャッシュラインにアクセスすることで起こるミス

容量性ミス:キャッシュしたいライン数がキャッシュ容量を上回ることで起こるミス