ライブレポ!コーネリアス独自の世界観をお届け!

質問させてください。

CPUの高速化の技術として、マルチコアとスーパースカラというものがあります。
どちらも並列処理を実現するもので、

マルチコアはCPUのコアを複数配置する方法。
スーパースカラは1つのコアの中に処理系統を複数配置する方法。

というのはわかるのですが、それって結局同じことではないかと混乱しています。

CPUのコアの中には、演算装置、制御装置、レジスタなどがあると認識していますが、例えばスーパースカラの場合、その中のどれか一つが共有されているとか、そういうことでしょうか?
ただその場合、共有するところは並列作業が実現できなくなると思うのですが・・・。

どなたかご存知でしたらお教えください。

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

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

A 回答 (5件)

スーパースカラは並列処理を実現する技術ではなく、内部的な並列実行によってシングルスレッドの処理速度を上げる技術である。

命令列が潜在的に持つ並列性を越えることはできないので、幾ら演算装置を用意しても性能の向上には限界がある。
スーパースカラでは、(内部的には複数化される場合もあるが)アプリケーションから見えるレジスタセットはCPU一つ分だけ。内部的には並列実行しても最終的には直列実行したように振る舞うため、整合性を取るために制御装置が非常に複雑化する。
アウトオブオーダー実行はこの延長線上の技術になる。アウトオブオーダー実行ではメモリへの書き込み順序が変わってしまうような場合もあるが、基本的にはCPU外部からはCPU命令列をその順番に実行したように見えるように調整する。
なお、ハイパースレッディングはシングルコアの中にレジスタセットを複数配置することでスーパースカラで使いきれない演算装置を有効活用しようとする技術になる。

マルチコアは、一つのCPUチップの中にCPUを複数配置して並列性能を高める技術で、並行して実行したい処理が多数あれば性能が上がるが、シングルスレッド用プログラムしかないとマルチコアにしても性能は上がらない。多くの場合、それぞれのCPUコアの中ではスーパースカラ技術も使われている。
    • good
    • 0

>単体のスーパースカラ以上の性能を出そうとして出てきたのがマルチコアです。


それインテルのハイパースレッティングに代表されるようなハードウェアマルチスレッディングの方。
マルチコアはマルチプロセッサの延長線の方の技術。
    • good
    • 0

>スーパースカラは1つのコアの中に処理系統を複数配置する方法。



よくこういう解釈を見かけますが、これは正しくありません。スーパースカラの定義は、複数命令を同時発行できるというものです。ですから、スーパースカラでありながら処理系統が一つしかないというCPUも理屈の上ではあり得ますが、複数命令を同時発行しておいてその先の演算器やレジスタのポート数が一系統しかないというのでは、リザーベーションステーションに命令がどんどんたまっていくばかりで性能がでません。それでは複数命令発行にする意味がないため、結果的に複数の演算器をもちパイプラインも複数持たせて、並列処理をできるようにしているわけです。

> 例えばスーパースカラの場合、その中のどれか一つが共有されているとか、そういうことでしょうか?
ふつうは、複数のパイプラインがそれぞれ異なるリソース(演算器、レジスタのポート、バスなど)を使うように制御しますから、それをできるだけの演算器の数やバスの本数が必要になります。場合によってはリソースを共有する必要があったりしますが、基本的にはできるだけ共有しないように制御します。

マルチコアとスーパースカラで同じくらいの並列性を持たせようとすると、理屈の上ではチップ上の演算器の全数は同じくらいになりますから、たしかにあなたのいうとおりマルチコアでもスーパースカラでも大局的には同じじゃないのというのは、その通りです。しかしスーパースカラでマルチコアと同じくらいの並列性を持たせようとするのは現実的には不可能でしょう。
たとえばコアが16個載っているチップがあって、それぞれのコアのパイプラインは一本だけとします。これと似たようなことをスーパースカラーでやろうとすると、16命令同時発行にすることになります。16命令同時発行となるとパイプラインも16本ということになりますが、スーパスカラでは命令間の依存はすべてハードウェアで解消することになりますから、これをやるにはとんでもない物量の論理が必要で(巨大なリザーベーションステーション、大量のレジスタポート、効率の良い命令ディスパッチのアルゴリズムなど)、また物量が増えれば制御も複雑になり、クロック周波数を上げることが難しくなります。スーパースカラでは、性能とトランジスタの物量を天秤にかけると、4命令から6命令同時発行くらいが落としどころでそれ以上になるとかける物量に対する性能向上の割があいません。そこで、単体のスーパースカラ以上の性能を出そうとして出てきたのがマルチコアです。
    • good
    • 1

 検索でマルチコアとスーパースカラを調べれば詳しく書かれているはずです。

以下のリンクを参照すればわかると思います。

 マルチコア:http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB% …
 スーパースカラ:http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%BC% …

 簡単に言いますと、マルチコアは複数のCPUを同時に並列実行して処理を高速化する技術です。複数のソフトウェアを同時に実行するなどで威力を発揮します。

 それに対して、スーパースカラはCPUの実行プロセスを細分化して並列処理出来る部分を並列化した高速化手法です。複数のパイプラインを使用して、逐次プロセスで同時並列実行しても問題が生じないプロセスを並列化して実行します。

 つまり、一つの命令を実行中に、次の命令の実行を並行しておこなうのがスーパースカラと考えて良いでしょう。複数の命令を細分化して並列実行して行けば、先の命令で演算している間に、次の命令のデータを読み込めるなど、時間の無駄が省けるからです。スーパースカラでは実行出来るCPUは1つだけで、実行出来るソフトも一つだけです。

 マルチコアは複数の処理を複数のCPUを使用して処理する方法ですが、スーパースカラは1つのCPUでデータの読み込み、演算処理、データの書き込みなどの過程を分割化して、それぞれの処理を並行しておこなうことで、先の命令を実行中に、次の命令の一部を実行出来るというもので、命令実行時間の無駄を省くのが目的です。

 つまり、データ読み込み装置、演算処理装置、データ書き込み装置があるとすれば、以下のように実行するのがスーパースカラです。

 読み込み装置:命令3実行中、命令2休止中、命令1休止中
 演算処理装置:命令3休止中、命令2実行中、命令1休止中
 書き込み装置:命令3休止中、命令2休止中、命令1実行中

 このようにすると、データ読み込み装置。演算処理装置、データ書き込み装置の3つが、どれも実行中になって遊んでいる装置が無くなります。何もしていない装置が無くなるようにしたのが、スーパースカラです。

この回答への補足

詳しい説明ありがとうございます。
ちなみにこれはパプラインにも当てはまると思うのですが、パイプラインと比べるとどう異なっているのでしょうか?
質問ばかりで申し訳ありません・・・。

補足日時:2014/07/30 17:20
    • good
    • 0

どのくらい調べた?

    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qスーパースカラとマルチコアの違い

スーパースカラとマルチコアの違いを教えて下さい。

どうやら違うらしい程度は分かったのですが、何が違うかわかりません。

お願いします。

Aベストアンサー

InetlのCPUで言えば、スーパースカラは「ハイパースレッディング・テクノロジー (Hyper-Threading Technology = HTT)」の事です。マルチコアはCore 2 Duoとかのプロセッサコアが複数あること。
つまり、どっちもアーキテクチャの話なんですが、前者がプロセッサコア内部の技術(だから1コアでも実装できる)であるのに対して、後者はプロセッサコア外部の実装状態(そのものが複数ある状態)を指します。

Qx86とARMの性能の違い

x86とARMの性能の違いについて教えていただきたいです。
それぞれの設計に基いたご説明をいただけるとなおありがたいです。
また、性能の違いの結果として、
それぞれどのような場面でよく使われるのかも知りたいです。

よろしくお願いいたします。

Aベストアンサー

まず違いを知るなら以下を読むべきかと、有志が書いているとはいえ、日本サイトのただの年表とは段違いに情報があるはずです。
http://en.wikipedia.org/wiki/ARM_architecture
http://en.wikipedia.org/wiki/X86

といって、読める人なら、質問しないのでしょうけど。
概略的に説明すると、ARMは reduced instruction set computing(RISC)プロセッサです。 それに対して、x86はベーシックに言えば、complex instruction set computer(CISC)プロセッサとなります。まあ、世間では既に差はあまりないのですけど、思想としてはCISCとRISCでは演算の基点が違います。

x86と呼ばれるプロセッサは、i8086を始まりとして(86を冠した世代が4世代目まで続いたことから)現在のCore i7プロセッサに至るまでの製品を指します。ただし、64bitモードであるx64(AMD64/Intel64)は、このx86を開発したIntelではなく、AMDが先に実装しています。このx86/64系のプロセッサは、高度で複雑な演算を行うために開発されたプロセッサであり、現在においてHPC用のプロセッサを除けば、世界最速を誇るプロセッサとなります。尚、x86/64系は処理速度を高めるために、スカラユニットの採用と分岐予測、パイプラインによる高速動作などを実現しているため、消費電力が大きなパーソナルコンピュータ、ワークステーション、サーバー分野においてこれまでは使われてきました。価格的にも高性能故にそこそこの値段であり、インテルとAMD以外のメーカーでは、VIAなど一部が進出するのみで、Intelの市場での強さもあり、他のメーカーが力をもつことはありませんでした。


ARMは、元々組み込み向けとしての素質を持つプロセッサで、コンパクトで指向性の高い命令を、速やかに処理することに長けたプロセッサとして登場しています。要は、何でも処理するというよりは、命令の方向性をある程度定め、その範囲内で処理をこなすことがARMの特徴となっていました。その代わり、消費電力はミリワット単位から数ワットまでと劇的に小さな電力/パッケージングに収まるものが主流でした。しかも、それ故に製造単価や開発単価も安く、そもそもARM.LTDは製品のライセンスビジネスで利益を出しており、インテルのように開発製造販売などを一手に手がける垂直型ではないことから、多くのメーカーが使ってきたのです。


本来この2つの製品が能力的に接近することはないと思われるほど性能差がありました。しかし、携帯電話の普及によって、ARMプロセッサは急速に進化を遂げ、スマートフォン時代に、市場規模ではインテルとAMDが開発してきたx86/64系のプロセッサに匹敵するか、それを超える市場規模になる可能性が出てきたのです。(金額ベースでは、インテルプロセッサにはまだ及びません)

ARMが急速に性能を伸ばすことになったのは、スマートフォンが登場したことが大きな理由です。当初は搭載していなかったSIMDの実装や、高機能レジスタの搭載によって、たった5年ほどで多くのラインナップが登場し、多くのメーカーがARM.Ltdとライセンス契約し新しい技術の搭載を進めたのです。
結果的に、現在ようやくインテル社が持つx86に迫る程度に性能が向上しました。ただ、性能面で上回るほどになるかというと・・・。今の段階ではまだ難しいでしょう。


尚、性能の違いの結果という点は今の段階では、高性能なx86、安価で省電力なARMです。
ただ、今後もそうである保障はありません。

単価やブランドイメージの違い、販売における製造ラインの確保の問題などもありますからね。
ただ、ARMの場合は、ライセンスさえ取得すれば、製造はある程度できますから、需要があれば数は伸びる傾向があります。ただ、単価が安いため、数が大量に出ているから、売上げが凄いわけではないのです。そのかわり、一定以上の販売が伸びれば、ソフト開発も活況を呈するため、ハードの性能も総じて向上します。
そうすると、性能が上がることで単価があがるというラインに今さしかかっています。

それに対して、x86/64は元々ブランドとして一定の地位を持っている高性能汎用プロセッサです。アプリケーション資産は既にPC市場において過半数を占めており、現在はゲーム機市場でもWiiUを除けば、PS4とX-BOX Oneに採用されています。1つのプロセッサあたりの単価もそこそこ高くなります。
高性能故にダイサイズもARMとは比べものにならないほど大きなものが主流です。最近になって、そこから性能を抑えて、ARMに対抗できる製品や、ARMより少し大きくとも消費電力が低く、性能は高い製品を出すようになりました。

尚、x86とARMでは、処理方法に違いがあり、実行できるマイクロコードの記述方法にも差異があります。そのため、x86の性能が高いからといって、ARMから簡単に移植したり、その逆にARMが普及しているからといってx86の資産を簡単に移せるわけではありません。まあ、アプリケーションはOSさえ対応し、アプリケーションの開発環境に準じた実行APIを備えてくれれば良いですけど、それを支えるAPIやOSは、ハードに最適化したプログラミングをしないと、そのハードが備えるピーク性能を発揮することはできません。

といったところでしょうか?

最後に、プロセッサには他にもMIPS(MIPS)、SPARC(SPARC/旧Sun Microsystems)、Power(IBM)、SX(NEC)、IA-64(Intel/HP)などなどのアーキテクチャが存在します。性能の違いだけで見るなら、これらの製品の方が、競争する市場が似ているものもありおもしろい製品が多いですけど。MIPSなどは、最近は少し弱いですが、MIPS-III世代では、ソニーのプレイステーション2のCPUであるEmotion EngineがこのMIPSアーキテクチャでした。SPARCはスーパーコンピューター京、Power系は、そのクライアント版(PowerPC)が、Intel Macになる前にMacintoshに使われていました。
SXは、地球シミュレーターです。IA-64は・・・。不運なプロセッサ。

設計で考えるなら、プロセッサ全体を見渡すのも大事です。そして何より、重要なのは開発されるOSやアプリケーションがどういうものかを見るのが妥当です。特にそれを如実に示すのは、SXとその他のプロセッサの違いでしょう。

まず違いを知るなら以下を読むべきかと、有志が書いているとはいえ、日本サイトのただの年表とは段違いに情報があるはずです。
http://en.wikipedia.org/wiki/ARM_architecture
http://en.wikipedia.org/wiki/X86

といって、読める人なら、質問しないのでしょうけど。
概略的に説明すると、ARMは reduced instruction set computing(RISC)プロセッサです。 それに対して、x86はベーシックに言えば、complex instruction set computer(CISC)プロセッサとなります。まあ、世間では既に差はあまりないのですけど、...続きを読む

Qセマフォとmutexの違いは?

排他制御としてセマフォとmutexがありますが、
この二つの違いがよくわかりません。
自分で調べてみたところ、
・セマフォ…プロセス間排他制御。複数ロックがかけられる。
・mutex…スレッド間排他制御。ロックは一つだけ。

と言うような違いがあるようなのですが、これだけの差なんでしょうか?
(これだけの差、と言ってる時点で筋違いだったら申し訳ありません)
また、セマフォをスレッド間排他制御に用いたり、
mutexをプロセス間排他制御に用いることは可能なのでしょうか?
可能だとしたら、これらが2種類存在する理由も教えていただきたいです。

Aベストアンサー

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphoreを使用することができます。(特定の環境での、MutexとSemaphoreの環境依存の動作を除けば、ですが。)

ではなぜ2種類が用意されている(用意されている環境が存在する)のかといえば、リソースの排他的利用は非常によくあることなので、これに特化した機能を用意すればより良いであろう、というシステムデザイナの判断によるものと考えられます。

ここで言う「より良い」は、あるデザイナにとっては「便利性」、また別のデザイナにとっては「消費リソースが少ない」と、これまた考え方はいろいろでしょう。

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphore...続きを読む

Qfloat型とdouble型の変数の違いを教えてほしいです

float型とdouble型の変数の違いを教えてほしいです
2Dゲームを作っててdoubleの変数を使ってたんですが使ってはだめだと先輩に言われたんです。
理由を聞いたら、先生が「doubleは使わないほうがいい」と言われたらしくてちゃんとした理由がわかりませんでした。
それを知って何をするということではないんですが、気になって調べても出てこなかったので質問させてください。
まだゲーム作りを始めたばっかりでぜんぜん詳しくないですが教えてくれたら助かります。

Aベストアンサー

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速にできたり、と様々です。
32bitCPUでは、32bitのfloatの方が扱いやすいでしょうが、64bitCPUでは64bitのdoubleの方が扱いやすいかもしれません。
Cのmath.hで使える標準関数はdouble型のものがほとんどです。三角関数は2Dのゲームでも使う機会が多いのではないでしょうか。sinもcosもdouble型です。内部演算は当然doubleですので、変数にfloatを使ったからと早くはならず、むしろfloat型の変数に入れるときに暗黙の型変換が発生する分遅くなる可能性もあります。

そういった背景を考え検討した結果、floatを使う方がよい、と判断したのならいいのですが、「先生に言われた」では理由になりません。
聞けるのなら、その先生に理由を聞いてください。真意がわからないうちは、鵜呑みしないことです。

doubleとfloatでは、精度が違い、そのためメモリに占める大きさも違います。
また、一般的には、桁が多いとその分計算時間がかかります。
ですから、精度が必要ない場面では、floatを使う、というのも一つの考えかたです。

ですが、実際には「一概に言えない、処理系依存」です。

以前は全てCPUで計算していたので、精度=計算量でした。
しかし、最近では浮動小数点演算専用の回路が付いているケースが多く、計算時間は同じだったり、doubleに変換が必要でその分floatの方が遅かったり、floatでの演算はより高速...続きを読む

Qアセンブリ言語を学ぶことは意味がありますでしょうか。

アセンブリ言語を学ぶことは意味がありますでしょうか。

プログラミングの上達や理解を深めるためにアセンブリ言語を学ぶ意味はありますでしょうか。
C++を学ぶとプログラミングの上達や理解は確かに深まりましたが、アセンブリ言語はどうでしょうか。

アセンブリ言語でポインタの意味が分かったと言う人もいますし・・・。

また、アセンブリ言語で役立つことがあれば何でも教えてください。

Aベストアンサー

意味はあると思いますよ。
アセンブリ言語ではポインタ(アドレス)を扱うことは必須ですから、確実にポインタへの理解は深まります。
また、1つ1つの命令を突き詰めていくと、コンピュータ(CPU)がどのようにして動いているかわかるようになります。
最終的にはメモリダンプ(16進数の羅列)でプログラムが追えるようになれます。

C++を知っているのでしたら、1度、プログラムを混合モードで表示してみてください。
C言語の1行1行の命令が、アセンブリ言語でどのように展開されているかを見ることができます。


ただ…
質問者さんがどれくらいのレベルの方かわかりませんが、僕はプログラミングの上達は単にたくさんの言語を知っていることとは決してイコールではないと思っています。
人がコンピュータで行いたいこと(自然言語で表現したソフトウェアの仕様)を、論理的思考を経て、プログラミング言語に置き換えていく「翻訳作業」がプログラミングだと思ってます。

論理的思考さえできれば、未経験の言語でも(最初のうちはマニュアルとにらめっこになりますが)プログラムは作れます。
逆に論理的思考ができなければ、できあがったプログラムは、読みづらい・異様に処理時間がかかる・ちょっとした例外ですぐにエラー停止する…など「できの悪いプログラム」になります。

もし、C++を学んであまり時間が経ってないのでしたら、もっと深くC++を勉強して、まずは論理的思考ができるようになってください。
別の言語に手を出すのはそれからで遅くありません。

意味はあると思いますよ。
アセンブリ言語ではポインタ(アドレス)を扱うことは必須ですから、確実にポインタへの理解は深まります。
また、1つ1つの命令を突き詰めていくと、コンピュータ(CPU)がどのようにして動いているかわかるようになります。
最終的にはメモリダンプ(16進数の羅列)でプログラムが追えるようになれます。

C++を知っているのでしたら、1度、プログラムを混合モードで表示してみてください。
C言語の1行1行の命令が、アセンブリ言語でどのように展開されているかを見ることができ...続きを読む

Qミドルウエアの具体例を教えてください。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システム(DBMS)
多分、OracleやSQL-SeaverやMySQLのようなものだと思うのですが。
この推測はあってますか?

(2) 通信管理システム(LAN制御を含む)
プラットホームや使用アプリが違う場合のデータのやり取りを行うようなもの・・・というイメージがあります。使用アプリの場合はODBCドライバみたいなものの様な(全然自信ない)、プラットホームとなると実例が浮かんできません。

(3) ソフトウエア開発支援ツール
なんでしょう?プログラミングジェネレータのことでしょうか。
EXCELマクロの自動記録機能なんてのもこれに入るのでしょうか。ひょっとするとEXCELマクロは、次のEUCツールでしょうか?

(4) EUCツール
AccessとかEXCELとかでしょうか。イメージ沸きません。

(5) 運用管理ツール
う~ん・・・なんでしょう?

補足:IMEとかもミドルウエアと考えてよいのだろうか? WEBで調べるとワープロや表計算もミドルウエアと定義しているものもあります。それは少し拡張解釈なような気がします。

いずれにせよ、すっきりした定義と具体例を書いてあるものを見つけられないのです。

宜しくお願いします。

初級シスアドで、OSとアプリケーションソフトの中間に位置するものとしてミドルウエアがあり
 ・データベース管理システム(DBMS)
 ・通信管理システム(LAN制御を含む)
 ・ソフトウエア開発支援ツール
 ・EUCツール
 ・運用管理ツール
説明されています。なんとなく具体例が推測できるものもありますし、ぜんぜんイメージできないものもあります。
そこで、推測が間違っていないか確認したいのと、イメージできないものの場合具体例をあげていただければ助かります。

(1) データベース管理システ...続きを読む

Aベストアンサー

(1) データベース管理システム(DBMS):お書きになられた通りです。
(2) 通信管理システム(LAN制御を含む:TCP/IPドライバー等通信制御を行うアプリケーションです。ファームウェアも該当するでしょう。通常ユーザが操作する類のアプリケーションではありません。
(3) ソフトウエア開発支援ツール:VisualBASIC、C言語、Perl等、亜ぷロケーションを開発するツール、プログラミング言語と言えば分かり易いでしょうか。
(4)EUCツール:エンドユーザが使用するアプリケーションです。
(5)運用管理ツール:クライアントPCの管理ツール、DBシステムの管理ツール、WEB/メールのサーバ管理等、運用機器を管理するツールです。最近では情報漏えいを防止する目的のツールが多数出ています。

Qべき乗

べき乗とは一体なんですか?
ウィキを見ても理解できませんでした。
2の2乗は2×2ですが、
2のマイナス2乗は一体どのような式なのですか?

Aベストアンサー

算数の延長線上だけの概念だけだといまいち理解出来ないですよね。
べき乗って要は指数なんですけど、
そういう難しい話を出来るだけ捨てて、算数の世界で説明出来る位まで掘り下げて説明します。

例えば 10の2乗は100、10の3乗は1000となります。
これを数字の動きに目を合わせてもう一度、書いてみます。
00010.00000 ←これを2乗すると↓
00100.00000 //10という値が左に1つずれた結果が答え

00010.00000 ←これを3乗すると↓
01000.00000 //10という値が左に2つずれた結果が答え

こういう風に表す事が出来ます。
じゃあ、10のマイナス2乗ってなった場合はどうなるのかというと、
00010.00000 ←これを-2乗する↓
00000.01000 //10という値が右に3つずれた結果が答え

という答えになります。
1を基準点として、右や左にいくつずれるか。
これがべき乗なのです。


で、2のべき乗を考えた時は、
全部2進数で考える必要があります。
00010.00000 ←2進数で表した数値の2
00100.00000 ←2乗した結果。数値で言うと4
00010.01000 //-2乗した結果。数値で言うと0.25


これで何となく分かっていただけたでしょうか?
ちなみに37のx乗を計算するみたいな時があったとしたら、
それは37進数で考えるという計算が必要になるのです。

算数の延長線上だけの概念だけだといまいち理解出来ないですよね。
べき乗って要は指数なんですけど、
そういう難しい話を出来るだけ捨てて、算数の世界で説明出来る位まで掘り下げて説明します。

例えば 10の2乗は100、10の3乗は1000となります。
これを数字の動きに目を合わせてもう一度、書いてみます。
00010.00000 ←これを2乗すると↓
00100.00000 //10という値が左に1つずれた結果が答え

00010.00000 ←これを3乗すると↓
01000.00000 //10という値が左に2つずれた結果が答え

こういう風...続きを読む

Qメモリキャッシュとディスクキャッシュの違い

よろしくお願いいたします。
キャッシュのことですが、
メモリキャッシュとディスクキャッシュについてなのですが、
これらの違いはなんでしょうか?
例えば、TemporaryInternetFilesに保存されるのは、
ディスクキャッシュで、クリアするとハードディスクの
空き容量が空く。
そして、あるホームページを表示した状態で
TemproraryInternetFilesをクリアしてもまだブラウザに
残っているのはメモリキャッシュに保存されているからである。
と解釈しておりますが、これでよろしいのでしょうか?
用語集など調べたのですが、いまいち自信が持てませんので
アドバイスお願いいたします。

Aベストアンサー

こんばんは。

gaia5 さんは、どうやら、ブラウザ固有の用語について、
ご質問されているように思います。
私は Windows ユーザーなので、知りませんが、
マックの IE や NN にはそういう設定があるんでしょうか。

だから、用語集などで調べられても、
一般的な意味について書かれていますから、
よけいに意味を、混同されていらっしゃるんだと思います。
私からは、本来の意味を説明させていただきます。


「ディスクキャッシュ」
ハードディスク等からファイルを読み込むとき、
読み込んだデータを、一時的にメモリに貯めておき、
次に使うときは、そのメモリから読み込むことによって、
表面的に読み込みを早くすることです。
書き込み時にも利用します。

「メモリキャッシュ」
メモリからデータを読み込むとき、
読み込んだデータを、一時的に非常に高速なメモリに貯めておき、
次に使うときは、その高速なメモリから読み込むことによって、
表面的に読み込みを早くすることです。
書き込み時にも利用します。

「キャッシュメモリ」
メモリキャッシュを行うときに使う、
普通のメモリに比べて、高価で高速なメモリ。
CPU に内蔵されている物や、マザーボードに付ける物があります。


だから、質問の内容を答えさせていただくと、

> 例えば、TemporaryInternetFilesに保存されるのは、
> ディスクキャッシュで、クリアするとハードディスクの
> 空き容量が空く。

一般的には、これをディスクキャッシュとは言いません。
「TemporaryInternetFiles」に保存されるファイルは、
「インターネット一時ファイル」や「Webキャッシュ」
といいます。

> そして、あるホームページを表示した状態で
> TemproraryInternetFilesをクリアしてもまだブラウザに
> 残っているのはメモリキャッシュに保存されているからである。

これも、一般的には、メモリキャッシュとは言いません。
(キャッシュメモリに保存されている可能性はありますが。)
単純に、メモリに保存されていると考えていいです。

しかし、ブラウザのWebキャッシュの設定上の、
メモリキャッシュ、ディスクキャッシュの説明としては、
terra5 さんのおっしゃる内容が正解なんだろうと思います。

それから、sesame さんのおっしゃる、
メモリキャッシュの説明は、間違っていると思います。
仮想メモリやスワッピングの説明に近いと思います。

こんばんは。

gaia5 さんは、どうやら、ブラウザ固有の用語について、
ご質問されているように思います。
私は Windows ユーザーなので、知りませんが、
マックの IE や NN にはそういう設定があるんでしょうか。

だから、用語集などで調べられても、
一般的な意味について書かれていますから、
よけいに意味を、混同されていらっしゃるんだと思います。
私からは、本来の意味を説明させていただきます。


「ディスクキャッシュ」
ハードディスク等からファイルを読み込むとき、
読み込んだデー...続きを読む

Q「いずれか」と「いづれか」どっちが正しい!?

教えて下さいっ!
”どちらか”と言う意味の「いずれか」のかな表記として
「いずれか」と「いづれか」のどちらが正しいのでしょう???

私は「いずれか」だと思うんですが、辞書に「いずれか・いづ--。」と書いてあり、???になってしまいました。
どちらでもいいってことでしょうか?

Aベストアンサー

「いずれか」が正しいです.
「いづれ」は「いずれ」の歴史的かな遣いですので,昔は「いづれ」が使われていましたが,現代では「いずれ」で統一することになっていますので,「いずれ」が正しいです.

Q1文字って1バイトだったっけ?

タイトルの通りなんですが
私の記憶では1文字1バイトで漢字が2バイトだったような・・・。
アルファベットは?数字は?わかんないので教えてください。
それと、1バイト=8ビットですよね?
ちょっと興味があるので暇のある方がおられましたら詳しく教えてほしいです。

よろしくおねがいいたします。

Aベストアンサー

全角文字(英語・漢字・数字問わず):2バイト
半角文字:1バイト
では無いでしょうか?

>1バイト=8ビット
その通りです

http://www.pc-view.net/Help/manual/0082.html
などもありますので参考までに

参考URL:http://www.pc-view.net/Help/manual/0082.html


人気Q&Aランキング