10秒目をつむったら…

教えてください!

クロックサイクルが60nsのプロセッサAとクロックサイクルが30nsのBがあり、各プロセッサが命令を実行するのに、必要なクロックサイクルおよび、プログラム中での各命令の出現頻度(使用確率)が下表に従うとする。ここで、システムのプロセッサをAからBに置き換えた場合の平均的な性能向上率を求めよ。

プロセッサA
     クロックサイクル数 命令の出現頻度
加減算命令    8        60%
乗除算命令    3        10%
無条件分岐    2        30%

プロセッサB
     クロックサイクル数 命令の出現頻度
加減算命令    2        50%
乗除算命令    6        20%
無条件分岐    4        30%

A 回答 (3件)

プロセッサによって命令頻度が異なるということはないので、異なるコードをA、Bそれぞれで実行したものだと解釈します。



仮に、プログラム中に命令が全部でXあるとします。

プロセッサAでは、それぞれの命令の出現数は、
加減算 X*0.6
乗除算 X*0.1
分岐  X*0.3
それぞれが必要とするサイクル数は、
加減算 X*0.6*8
乗除算 X*0.1*3
分岐 X*0.3*2
でサイクルタイムが60nsなので、この全命令Xを実行するのに必要な時間は
(X*0.6*8 + X*0.1*3 + X*0.3*2) * 60(ns)

同様にして、プロセッサBでは全命令Xを実行するのに必要な時間は、
(X*0.5*2 + X*0.2*6 + X*0.3*4) * 30(ns)

これらの比率をとればXは消えます。A,Bの性能差は比率でいうと、
(0.6*8+0.1*3+0.3*2)*60 / (0.5*2+0.2*6+0.3*4)*30 = ???
    • good
    • 0

その設問ではプロセッサAのシステムで動いていたプログラムをブロセッサBのシステムで動かした場合の性能向上率を求める内容になっていますね。


(ブロセッサBのシステム下で動かしていたプログラムは関係ない)

そんなですので、
プロセッサAで動かすプログラムの中で使われる命令の出現頻度を使い
全体のプログラムを実行した場合、何クロックサイクル必要になるのかを求めてみましょう。
(100ある命令の中の60%が加減算命令・・・のように考えればOK)
でもって1クロックあたりの時間を掛ければ比較できる数値になります。
    • good
    • 0

ヒント。




プロセッサA
(命令のサイクル数*出現頻度)の総和=平均必要サイクル数
必要サイクル数*60ns=平均命令実行時間


プロセッサB
(各命令のサイクル数*出現頻度)の総和=平均必要サイクル数
必要サイクル数*30ns=平均命令実行時間
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!