プロセッサの処理能力を表すものとして
MIPS Million Instruction Per Second
クロック周波数 動作のタイミングをとる信号の周波数のこと。
        1Hzは1秒間に1回

がありますが、両者には何らかの換算方法のようなものはあるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

MIPSは「1クロックあたりの平均処理命令数」 × クロック周波数


という式で求まるはずです。

「1クロックあたりの平均処理命令数」はCPUごとに異なります。
最近のCPUはどれも、複数の命令を同時に処理することが出来ます。また、命令一つを実行する為には、数クロックから数十クロックの処理時間を必要とします。

それから、実行する命令によっては、「命令AとBは同時に実行できない」とか「命令Aの処理結果によっては、現在計算中の命令を破棄して、それらを再計算させなければならない」などといったことが起こります。

ですから、CPUのスペック表に書かれているMIPS値は「典型的な使用状態における平均値」であり、実際のMIPS値は、そのときの使用状況によって異なってくるわけです。
    • good
    • 0
この回答へのお礼

>「1クロックあたりの平均処理命令数」はCPUごとに異なります
なるほど。これでは汎用の換算式は難しいですね。「平均」というところもミソだし……。PenIIIとG4を同一クロックだから処理性能が同じ、といえない理由もここにあるんですね。RISCとCISCでも違うだろうし。

色々調べていたら、「CPU i486(100MHz)=70MIPS相当」という文章が見付かりました。100,000,000Hz=70,000,000IPS なので、「i486」に関しては1Hzに平均0.7回の命令を実行できる、ということになりそうです。
でも、これも使用状況によって変わるということですね。
ありがとうございました。

お礼日時:2001/04/15 22:17

「公式」のような換算方法はありません。



例えばIBMのPowerプロセッサは動作クロック数よりもMIPS値の方が大きい値となります。
類似のアーキテクチャを持つPowerPCとPowerに共通する換算方法は実現可能かもしれませんが、アーキテクチャの違うプロセッサには適用できません。

この回答への補足

回答どうもありがとうございます。
>例えばIBMのPowerプロセッサは動作クロック数よりも
>MIPS値の方が大きい値となります。
の意味がよくわからないのですが……。

クロック周波数=MIPS値×0.xxx

のような公式設定は(別系統のプロセッサでは)不可能ということですか?

補足日時:2001/04/14 19:26
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「MIPS」について

「MIPS」は、
1秒間に実行される命令の回数を100万単位で表した単位です。
つまり、「1MIPS」1マイクロ秒に1回の命令を実行すると言うことです。

では「4MIPS」とは、1秒間に実行される命令の回数と記載されているので、
1マイクロ秒間に4回の命令を実行と解釈しましたが、不安ですので確認させて下さい。

「4MIPS」は、1マイクロ秒間に4回の命令を実行すると言うことですか。
それとも、4マイクロ秒間に1回の命令を実行すると言うことですか。

初歩的な質問で申し訳ありませんが、
ご存知の方おられましたら、ご教授お願いします。

以上、よろしくお願い致します。

Aベストアンサー

MIPS (Million Instructions Per Second) は日本語で 100万命令/秒。
100万という数の大きさは メガ という接頭語で示すことができるので,
"Mega" Instructions Per Second だと言い換えても間違いではないでしょう。
よって,4MIPS = 4M命令/秒。

1秒当たり何命令?(命令/秒)ではなく,
1命令当たり何秒?(秒/命令)を求めたいのなら,
その分子と分母を入れ替えて逆数にすればよい。

4 の逆数は 1/4。
M(10の6乗)の逆数は マイクロ(1/(10の6乗))。
命令/秒 の逆数は,秒/命令。
よって,4M命令/秒 の逆数は,1/4マイクロ秒/命令 = 0.25マイクロ秒/命令。
これは,
「1命令当たり0.25マイクロ秒」と言ってもいいし,
左右の数値をそれぞれ4倍して,
「4命令当たり1マイクロ秒(1マイクロ秒間に4回の命令を実行)」と言っても同じです。

ちなみに。
「4マイクロ秒間に1回の命令を実行(4マイクロ秒/1命令)」だったなら,
4/1 の逆数は 1/4。
マイクロ の逆数は M。
秒/命令 の逆数は 命令/秒。
よって,1/4M命令/秒 = 0.25M命令/秒 = 0.25MIPSとなります。

MIPS (Million Instructions Per Second) は日本語で 100万命令/秒。
100万という数の大きさは メガ という接頭語で示すことができるので,
"Mega" Instructions Per Second だと言い換えても間違いではないでしょう。
よって,4MIPS = 4M命令/秒。

1秒当たり何命令?(命令/秒)ではなく,
1命令当たり何秒?(秒/命令)を求めたいのなら,
その分子と分母を入れ替えて逆数にすればよい。

4 の逆数は 1/4。
M(10の6乗)の逆数は マイクロ(1/(10の6乗))。
命令/秒 の逆数は,秒/命令。
よって,4...続きを読む

QCL=2のように使うcas latencyと、メモリのベースクロック(100MHz)の関係

CL=2のように使うcas latencyと、メモリのベースクロック(100MHz)の関係についてです。一般にcas latencyが小さいほど、メモリの動作は速いようですが、例えばPC133でCL=3のメモリと、PC=100でCL=2のメモリを前にしたとき、自分のハード環境を無視した場合、どちらを選べば早いのでしょう。PC133でcas latencyが2のものを選べばいいっちゃあいいんですが。。。

Aベストアンサー

PC133でCL=3の方が速いです。

PC=100 CL=2の場合だと、最初の1コのデータが届くのに、データ要求が1/100M 秒、出てくるまでの待ち時間に 2/100M 秒、合計3/100M 秒かかります。

PC133でCL=3の場合は、1/133M 秒 + 3/133M 秒 = 4/133M 秒ですね。

計算してみると、データの取り出しにかかる時間は、両者ともにほとんど差が無いです。(ほんの僅かPC133の方が遅い)
最初の1コのデータを取り出したあとは、両者とも1クロックに付き1コのデータを取り出すことが出来るので、クロックが高速なPC133の方が有利なわけです。

QX86/MIPSクロス環境での開発

X86/MIPSクロス環境でソフトを開発している者です。
ネットで検索したところ、

#ifdef __mips__
~MIPS環境での処理~
#else
~X86環境での処理~
#endif

とすれば切替えられそうなことが分かりました。
でも、このプリプロはどこで定義されているのでしょうか。
未定義の環境があると他の手段を考える必要がありますよね?
御存じの方、ご教授よろしくお願い致します。

Aベストアンサー

■マクロの定義位置について

処理系は通常「組込マクロ」を暗黙に定義します。
定義されるのはただのマクロですが、通常ヘッダ等には定義がありません。何が定義されるかは、処理系のマニュアルに書いてあります。
提示のマクロは、処理系の組込マクロと思われます。

■マクロの標準定義について

_ で始まる識別子は、言語仕様で処理系等のために予約されています。
このうち、いくつかのマクロは、言語仕様で定義が保証されます。(例:__FILE__, __LINE__, ...)
逆に、それ以外は処理系や環境の独自定義です。
(例:_WIN32, _MSC_VER, __BORLANDC__, __WATCOMC__,_M_IX86, ...)

■__mips__ について

提示の __mips__ は、何からの MIPS 用処理系で組込マクロとして定義されているものと思われます。
大抵のコンパイラは何らかの名前で類するマクロを定義していますが、その名前に標準はありません。
同名のマクロを定義しているかもしれませんし、ある処理系では _MIPS_ とかかもしれません。

■__mips__ 未定義の MIPS 環境における回避策について

仮に __mips__ が定義されていない場合、既に提示のあるように、コンパイルオプションで強制的に定義することもできます。
また、限定的なパターンが推測できるなら、予め対応を取っておくことも有効かと思います。
#if !defined(__mips__) && (defined(_mips_) || defined(_mips) || defined(_MIPS_)) // ... その他、ありそうなパターン列挙
#define __mips__
#endif

■ X86 環境について

__mips__ でないから X86 というのは少々乱暴かと思います。
CPU の種類はもっとあります。(例:ARM, PPC, SPARC,...)
おそらく、各環境で __mips__ に相当する __x86__ 等が定義されていると思いますので、X86依存部はそれを参照することをお勧めします。
「~X86環境での処理~」と書かれている部分が、実は環境非依存部なら提示のifdefで問題ありません。

■参考

多くのオープンソースプロジェクトは、共通ヘッダで環境を切り替えるためのマクロ定義をやっています。
そのヘッダを見れば、主要な処理系/環境で組込マクロの判定をしていますので、どんな環境では何が定義されるかの参考になると思います。

■マクロの定義位置について

処理系は通常「組込マクロ」を暗黙に定義します。
定義されるのはただのマクロですが、通常ヘッダ等には定義がありません。何が定義されるかは、処理系のマニュアルに書いてあります。
提示のマクロは、処理系の組込マクロと思われます。

■マクロの標準定義について

_ で始まる識別子は、言語仕様で処理系等のために予約されています。
このうち、いくつかのマクロは、言語仕様で定義が保証されます。(例:__FILE__, __LINE__, ...)
逆に、それ以外は処理系や環境の独自定...続きを読む

Qクロック周波数について

CPU性能のMHz。すなわちクロック周波数とは何なのかを調べたら、
「動作の同期をとるために出しているクロック信号の1秒間の振幅数」でした。
動作の同期をとるって何だろうって、考えたらとりあえずタイミングを図ることと考えれば良いかな、と思いました。ところで、なぜタイミングを図る必要があるのでしょうか。どういう時にタイミングを図ることの必要性が生じるのでしょうか。その具体的なイメージみたいなことを誰か教えていただけませんか。

Aベストアンサー

イメージっていってもね。難しい。

各回路の間でデータをやりとりするのに動作ごとに全く違ったテンポ(タイミング)では、処理にロスや欠損がでるでしょう。
そのタイミングを一定にして、データの転送や処理を統一することで、データ処理の各回路間でのムラをなくし、効率的に処理できるようにすることですよ。

まあ、簡単にはムカデ競争みたいな物かな?
誰か一人の足があわなければ、どんなに進もうと思っても思うように前には進めないでしょう。
みんなが同じように動作することで(タイミングを計り同期・同調する)やっと前に進める。
それを当てはめると、同期も同じこと。
各ステップで確実に処理するために、同期することは大事って事です。

極簡単な説明のつもりです。これでいかがでしょうか?
何か分からない点があれば、補足要求をお願いします。
わかるまでできる限りつき合いますよ。(たぶん?)

QMIPS値の計算

MIPS値の計算で、教えてください。

MIPS値=1÷(3.0マイクロ秒 × 10のマイナス6乗)…(1)
≒0.3×10の6乗…(2)
=0.3MIPS


上記の式で、(1)の式からなぜ(2)の式になるのかがわかりません。
ついでに、≒という記号はどういう意味でしたっけ…

Aベストアンサー

10の12乗 = T(テラ)
10の9乗 = G(ギガ)
10の6乗 = M(メガ)
10の3乗 = k(キロ)
10の0乗 = 1
10の-3乗 = 1/(10の3乗) = m(ミリ)
10の-6乗 = 1/(10の6乗) = μ(マイクロ)
10の-9乗 = 1/(10の9乗) = n(ナノ)
10の-12乗 = 1/(10の12乗) = p(ピコ)

よって「10Mバイト=10の7乗バイト」は正しいです。
勘違いしているのはANo.1の回答者で,10の6乗バイト=1Mバイトです。
http://oshiete.goo.ne.jp/qa/7715443.html

さらに,
10の3乗=k(キロ)をあえて分数表記すると分母は1で,(10の3乗)/1。
これは,1/(10の3乗)=m(ミリ)とは
★分子分母が逆になった数★なので,
「k(キロ)とm(ミリ)は逆数の関係にある」といいます。
同様に,
「M(メガ)とμ(マイクロ)は逆数の関係にある」
「G(ギガ)とn(ナノ)は逆数の関係にある」
「T(テラ)とp(ピコ)は逆数の関係にある」と言えます。

----------------
MIPSは日本語で 100万命令/秒。
100万という数の大きさは メガ という接頭語で示すことができるので,
MIPSという単位は「M命令/秒」だと言えます。

次に,1命令当たりの平均命令実行時間というものを検討します。
その単位は「μ秒/命令」です。

Mの逆数がμ,命令/秒 の逆数が 秒/命令 ですから,
「MIPS と 1命令当たりの平均命令実行時間 は逆数の関係にある」わけです。

----------------
以上でお膳立てがそろいました。

1命令当たりの平均命令実行時間=3.0マイクロ秒/命令
の場合のMIPSを求めます。両者は逆数の関係にありますから,

3.0 →分子分母を逆→ 1/3.0
マイクロ →分子分母を逆→ M(メガ)
秒/命令 →分子分母を逆→ 命令/秒

すなわち,1/3メガ命令/秒 =0.333...メガ命令/秒 =0.333...MIPS ≒0.3MIPS です。
「≒」は「正確に=ではなく,およそ等しい」という記号です。

----------------
> 1÷(3.0マイクロ秒 × 10のマイナス6乗)…(1)
> ≒0.3×10の6乗…(2)

(1)から(2)への変換は,次のことを表しているわけです。
3.0 →分子分母を逆→ 1/3.0 ≒ 0.3
10の-6乗 →分子分母を逆→ 10の6乗

10の12乗 = T(テラ)
10の9乗 = G(ギガ)
10の6乗 = M(メガ)
10の3乗 = k(キロ)
10の0乗 = 1
10の-3乗 = 1/(10の3乗) = m(ミリ)
10の-6乗 = 1/(10の6乗) = μ(マイクロ)
10の-9乗 = 1/(10の9乗) = n(ナノ)
10の-12乗 = 1/(10の12乗) = p(ピコ)

よって「10Mバイト=10の7乗バイト」は正しいです。
勘違いしているのはANo.1の回答者で,10の6乗バイト=1Mバイトです。
http://oshiete.goo.ne.jp/qa/7715443.html

さらに,
10の3乗=k(キロ)をあえて分数表記すると分母は1で,(10の3...続きを読む

QCPUのクロック周波数

使用していたpentium4 2.4GHzのPCをメーカー修理に出して戻って以来、システムのプロパティで確認すると1800GHzとなっていました。
BIOSで認識されてないだけかと思ってたんですが、ベンチマークソフトで測定したところ1800GHzでの動作になっていました。
どうすれば2.4GHzで動作されられますか?
よろしくお願いします。

Aベストアンサー

BIOSの設定方法については、http://www.tsukumo.co.jp/original/troubleshooting2.jpgの
CPUのクロック表記が違う、起動するたびにCMOS CHECKSUM ERRORの箇所を参考にしてください。
クリックすると画像が拡大されて、見やすくなります。

QWindows+Cygwin上でのmipsのクロスコンパイル環境構築

Windows7 64-bitにて、Cygwin上で、mipsによるクロスコンパイル環境の構築を試みてますが、うまくいきません。Cygwin環境は、Cygwinのホームページから最新版(バージョン2.3.0、64-bit版)をフルインストールすることで構築しました。

ネットを見る限り、Cygwinにはデフォルトではgccにmipsのバイナリを出力するオプションが用意されていないようで、外部からmipsのコンパイラを取得する必要があるようです。

詳しい方がいらっしゃったら、方法を教えて頂けると幸いです。
よろしくお願いします。

Aベストアンサー

環境の構築は、以下が参考になると思います。

【クロスコンパイル環境構築】
http://www.cqpub.co.jp/interface/TechI/Vol39/cygwin/setgcc/setgcc.htm

必要なコンパイラは、以下でダウンロードできます。

【MIPS用Cコンパイラgcc】
http://www.cqpub.co.jp/interface/TechI/Vol39/cygwin/mips-tools.tar.gz

実際に環境を構築したわけではないので、参考までに。

QCPUのクロック周波数の表記について

ソフトウェアなどには動作環境というものがありますが、CPUの欄にはよく「Pentium 4」や「Pentium III」を基準に書かれています。
しかし、私はPentium Mを使っているので見ても全く意味がありません。
そこで「Pentium 4」で例えるとどのくらいの周波数になるのか教えていただけないでしょうか?お願いします。
※使っているCPUは「Pentium M 780」です。

Aベストアンサー

Pentium M 780となると最上位である2.26GHzですか・・・最高峰ですね。

Pentium4で例えればPentium4-660(3,6GHz)に匹敵する性能を発揮するケースがあるでしょう。ただ、平均すれば640~650ぐらいの性能に落ち着くかと・・・(3,2GHz~3,4GHz)

ちなみに、Pentium4より圧倒的に優れた性能を発揮するのは、x86の純粋な命令処理です。特にALU(整数演算器を使う処理)に強くオフィス処理、オフィスマクロなどは高速に処理できます。データ処理ですね。まあ、パソコンが元々こなしていた得意分野が強いのです。
また、3Dゲームなども主にALUを使うため速くなります。

逆に苦手なのはマルチタスク処理やマルチメディア命令となるSSE命令セットを用いる処理になります。具体的には動画像処理、音声処理など近年になって需要が増加し現在家庭用のパソコンで主に行われる作業は上記のPentium4のクロックに劣るでしょう。ただし、同じ周波数のPentium4-2,2GHzに比べれば例えHyperThreadingがPen4にあったとしても高速になります。


ちなみに、動画のエンコードはクロックに比例するわけではありませんのでご注意を・・・(以下は暇なら読んでください)

Pentium4はそもそもマルチタスクを重視して設計されています。その中にSSE(Streaming SIMD Extensions)命令セットを改良しPentium4に最適化したSSE2を搭載したのです。これをNetBurst Micro-Architectureといいます。
動画などのエンコードは負荷が高く、演算も複雑なものが多いのが特徴で、これらの処理にはSIMDを使うことが多いのです。また、マルチタスク処理も多用されます。Pentium4が登場した当時こういう使い方が増えるということからそれらを意識して開発したのがこれで、それ故に最もPentium4が得意とする分野を簡単に他のプロセッサが抜くこと出来ないのですよ。

それが今でも動画の高速化に繋がります。ソフトの大半がマルチタスクである映像処理ソフトではPentium4に軍配が上がるのです。ただ、ノート用時期主力となるYonahプラットフォームでは、DualコアとSSE3命令セットの搭載によってマルチタスクへの対応も一気に進みますので、これらの欠点もほとんどPentium Mの後継が克服することになるでしょう。

Pentium M 780となると最上位である2.26GHzですか・・・最高峰ですね。

Pentium4で例えればPentium4-660(3,6GHz)に匹敵する性能を発揮するケースがあるでしょう。ただ、平均すれば640~650ぐらいの性能に落ち着くかと・・・(3,2GHz~3,4GHz)

ちなみに、Pentium4より圧倒的に優れた性能を発揮するのは、x86の純粋な命令処理です。特にALU(整数演算器を使う処理)に強くオフィス処理、オフィスマクロなどは高速に処理できます。データ処理ですね。まあ、パソコンが元々こなしていた得意分野が強いのです。
...続きを読む

QMIPSアセンブリ言語で配列を宣言するには?

現在MIPSアセンブリ言語を学習していますが、配列に相当するものの宣言の仕方を詳しく知りません。

int items[5] ={0,0,0,0,0};
(C言語の場合)

のような配列をMIPSで用意するなら、

items: .word 0,0,0,0,0

としてやるなどすればよいことまではわかっていますが、もし配列の要素数が500だった場合、上で0を500個も書かなければならないのでしょうか。短く書ける方法はありませんか。

Aベストアンサー

items: .space 2000
で2000バイト(1wordが4バイトなら500word分)が確保される。

但し、中身は初期化されないので注意。

QFSB CPU クロック 動作周波数

FSB CPU クロック 動作周波数
これらはどういう意味ですか?
用語検索してみたのですが、解説文の意味が
いまいち理解できません・・。

Aベストアンサー

前回答者の回答で大体は合っていると思います。
ご質問の中で、まずCPUですが、これは日本語で一般的に”中央処理演算装置”と呼ばれているはずで、パソコンの心臓部にあたります。(例えば、ペンティアム4、Athlon等)

FSB,クロック(CLOCK),動作周波数に関してはチョッとややこしいです。(何を対象に考えるかで)

このなかで基本はクロックで、全ての基本になります。
従来(もはや以前)はシステムのそのほとんど(I/O関係の一部を除いて) が同一クロックで動いていたのですが、今日では高速化のため、部分的にクロックを何倍かにして動作させています。
動作クロックというのは、多分実際に動いているクロック(基本クロック×動作倍率)になります。
FSBについては対象となるシステムにより異なると思いますので一般的な回答は困難だと思います。よってインテルプロセッサを例に取るとCPUとノースブリッジ間のシステムバスのバスクロックです。バスとは、2つ以上のユニットを結ぶ通路のようなものです。また、バスクロックは基本クロック×倍率になります。バスについてはFSBの他にAGPバス、メモリバス、PCIバス等があり、それぞれ異なったバスクロックになっています。

ところで、倍率ですがCPU内部では実際にクロックを分周してクロックを上げているはずですが、バスクロック等ではクロックの立ち上がり・立下りを共に利用する(通常はどちらかのみ使用)とか少し位相をズラした別のクロックを併用するとかでデータの転送速度を上げています。
(例:メモリーバス:SDRAM(×1)→DDR RAM(×2)→DDR2(×4))

前回答者の回答で大体は合っていると思います。
ご質問の中で、まずCPUですが、これは日本語で一般的に”中央処理演算装置”と呼ばれているはずで、パソコンの心臓部にあたります。(例えば、ペンティアム4、Athlon等)

FSB,クロック(CLOCK),動作周波数に関してはチョッとややこしいです。(何を対象に考えるかで)

このなかで基本はクロックで、全ての基本になります。
従来(もはや以前)はシステムのそのほとんど(I/O関係の一部を除いて) が同一クロックで動いていたのですが、今日では高速化...続きを読む


人気Q&Aランキング

おすすめ情報