【解決方法】アセンブリ コードのコード密度とメモリ トラフィックを計算する


変数 A、B、C、D、F の値はコンピューターの中央メモリにあると仮定します。 すべての変数は 4 バイトの整数です。 オペコードは 1 バイトですが、プッシュ/ポップ操作は 2 ビットです。 メモリのアドレス指定は 16 ビット、レジスタのアドレス指定は 5 ビットです。 次のコードのコード密度とメモリ トラフィックを計算します。

a)

プッシュD
Bを押す
Aを押す
追加
プッシュC
MUL
ディビジョン
ポップエフ
b)

ロードA
Bを追加
ストアT
ロードC
ディビジョンD
マルチ
ストアF
場合については、いくつかの計算をしました

私が試したこと:

A) のコード密度 = プッシュ/ポップの数 * 2 ビット + .ALU 命令の数 * 8 ビット + プッシュ/ポップの数 * 16 ビット = 5*2+ 3*8 + 5 *16 = 10+24+80=114少し

B) のコード密度 = 命令の総数 * 8 ビット + ロード/ストアの数 * 16 ビット = 7*8 + 4*16 =56+64 =120 ビット

メモリ トラフィック ケース A = ?????
メモリ トラフィック ケース B = ????

これらの計算が正しいかどうかはわかりませんが、メモリ トラフィックはどうなるのでしょうか?

解決策 1

私たちは行き詰まっている人々を喜んで助けますが、それは私たちがあなたのためにすべてを行うためにここにいるという意味ではありません。 私たちがすべての仕事を行うことはできません。あなたはこれに対してお金をもらっているか、成績の一部であり、私たちがあなたのためにすべてを行うのはまったく公平ではありません。

したがって、私たちはあなたに仕事をしてもらう必要があります。あなたが行き詰まったときは、私たちがお手伝いします。 それは、あなたが提出できる段階的な解決策を提供するという意味ではありません。
まず、自分が現在どこにいるのか、そしてプロセスの次のステップは何なのかを説明します。 次に、次のステップを実行するために何を試みたか、また実行したときに何が起こったかを教えてください。

そして、これまでに行った小さな計算が非常に疑わしいように思えます。または、実際の数値を計算し始めるには、仮想マシンの定義が必要です(これも他の質問の両方で言及しました)。レジスタがすべてであるかのどちらかです。サイズが違う、あるいは数字をでっち上げた…
あなたの質問履歴を見ると、あなたは、雑な仕事をして、完全な結果を自分の仕事として提出することを期待して、他人に宿題をさせようとしているように見えます…

開始する際に問題が発生する場合は、次のことが役立つかもしれません。 問題を解決するコードの書き方、初心者ガイド[^]

コメント

タイトルとURLをコピーしました