アプリ版:「スタンプのみでお礼する」機能のリリースについて

タイトルに書いた質問自体がナンセンスなのかもしれません。

そもそも、ハードとしては16ビットも、32ビットも、64ビットも、もしかして128ビットも無く、単に1ビットものなのではないかと思うようになりました。
要するにCPUは単に1ビットずつ処理するだけで、それを、どの単位(32ビット単位とか、64ビット単位とか)にまとめて運ぶか(何処にって、良くは分かりませんが、演算するところとか、周辺装置とのインターフェイスとか、との間で行ったり来たりするのではないのかな)は、OSが決めることなんでしょうか?

そのように考えると、アプリはOSのビット数以下でないとうまく動作しないのだろうと思います。
いや、OSが何回かに分けてやれば、32ビットのOSても、16ビットのOSても、64ビットのアプリを処理できるのかな。

質問がそれてしまいましたが、要するにハードウエアには、たとえば16ビットCPUとか、32ビットCPUなどというものは無く、したがってOSを換えればどんなハードでも64ビットマシンにも、あるいは128ビットマシンにもなるということなのかです。

だから、最新のパソコンを8ビットマシンとして使うこともできるということなのかです。

CPUが1ビットずつ処理すると言ったのは仮の話で、4ビット、8ビット、16ビットなど、いろいろあるのかもしれません。
そもそも、CPUのその辺からして良く分からないのです。

よろしくお願いします。

A 回答 (9件)

繰り返しますが、32bit とか 64bit とかいう数字は CPU にとっては余り大きな意味は無いです。


それよりも、32bit CPU と 64bit CPU の設計年代の違いから、64bit CPUのほうが、32bit にない機能を持っていると言うことです。

ですから、(データサイズでは無く)64bit CPU にしかない機能を前提とした 64bit OS を 32bit CPU で動かすことはできないということです。

おおむね、64bit CPU は 32bit CPUの時代のアプリケーションを動かさないとプログラムが足りないので、現時点では32bit CPU を包含していますから、32bit OS を 64bit CPU で動かすことはあります。(今は)

前回の回答にも書きましたが、今の 64bit Windows で、32bit アプリケーションを動かす場合、エミュレータのようなしかけ(そこまではひどくないが)を介在させています。
このために、遅くなる(事がある)わけです。
    • good
    • 0

 現在、広く使われているインテル86系のCPUでは、8~64ビット単位で処理する命令が使われていますが、たとえば、ビット処理命令を使えば、1ビットをオンにしたり、オフにしたり出来ますから、事実上はビット単位の命令でも実行出来るCPUです。



 レジスタとしては、8ビット単位ではAH,AL,BH,BL,CH,CL,DH,DLの8つのレジスタが使用出来ます。16ビット単位ではAX,BX,CX,DX,SI,DI,BP,SPの8つのレジスタが使用出来ます。32ビット単位ではEAX,EBX,ECX,EDX,ESI,EDI,EBP,ESPの8つのレジスタが使用出来ます。64ビット単位ではRAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,R8,R9,R10,R11,R12,R13,R14,R15の16のレジスタが使用出来ます。

 128ビットレジスタとしてはコプロセッサに128ビットレジスタが32ビットモードで8本、64ビットモードで16本が使用出来ます。

 ところで、これらのレジスタは全て自由自在に使えるのですが、実際にはOSによる制限があり、32ビットOSでは64ビットレジスタが使えず、64ビットOSでは32ビットCPUエミュレーションでしか32ビットレジスタは使えません。

 他にも、OSによって画面モードに制限があったり、文字フォントが表示出来ないなど、使いにくい一面があります。古いソフトが最新OSで動かないという話が良くあるのは、その為です。

 一般にOSはCPU資源を最大限に有効利用できるように設計されていなければならないはずですが、制約が多いのが実態です。
    • good
    • 0

電気的なことを言えば、CPUには「バス」というデータをやり取りする電気的接点(ピン)が存在します。



バスにはデータバスとアドレスバスがあります。
データバスはメモリなどからデータをもらったり渡したりするI/F。

もう一つがアドレスバス。
データバスを介してメモリとやり取りする時に、メモリのどの場所とやり取りするかを指定するI/F。

このバスの幅(ピン数)が16本とか32本となるのが外見的違い。

内部的にはレジスターというメモリのデータサイズ。
レジスターサイズはバス幅とほぼ一致。


CPUには特有の命令があり命令の数はビット数に依存します。
つまり、16ビットOSでも分割すれば64ビットのアプリが動くという訳ではありません。
64ビットCPUには16ビットCPUに存在しない命令が沢山あります。
その為、各CPUに対応したコンパイラが存在し、CPUに依存したライブラリからリンクして実行ファイルを生成するのです。
この辺はアセンブラをやったことがある人とかCPUのデータシートを見たことある人には簡単に理解できると想います。
8ビット全盛の時はパソコンの回路図が雑誌に載っていたりしましたからね。
それを元に改造したり独自拡張ボードを作成する強者も結構いました。


それに、CPUと一言で言ってもメーカーが違えば互換性はありません。
CPUの有名メーカーはインテルですが、他にモトローラやザイログが昔からあります。
この3社のCPUは同じ8ビットでも互換性が全くありません。だからOSもそれ専用になってしまうんです。
CPUとOSの関係と言えば、IntelはMS-DOS、MotorolaはOS/9、ZiLOGはCP/Mなんてイメージが私にはありますね。
    • good
    • 0

多少混乱があるようですが。



CPUのいわゆるビット数は、転送幅だけの事ではありません。
実際、初期の Pentium (32bit CPU ですね)のデータバス幅は64bit でした。
CPUの「データ処理サイズ」のことですね。

それと、CPUのビット数と、その時代(32bit の時代だとか、64bit の時代だとか)のテクノロジは本来は別々のことです。
だから、64bit CPU が一般論として 32bit CPU より優秀なのは、単に、2倍のbit幅を一度に処理できるからではなく、その他の、仮想メモリのサイズだとか、コアの数だとか、仮想マシンの機能だとか、そういうその時代の機能を含めてのことです。

さて、32bit の CPU を積んだマシンに、64bit 用のOSを乗せているメーカーは存在しません。
その逆はあります。
現実のCPUは現実のものだけにいろいろな制約があります。
初期の 64bit CPU は、32bit CPU としての機能を併せ持っていました(今でもかな?)また、当時、32bit のOS用のプログラムの方が主流でした。

なので、64bit CPU に 32bit の OS を乗せたマシンはあります。
また、初期の 64bit CPU は、64bit のモードでも動くというレベルで、32bit 対応のソフトの方が処理速度が速かったらしいです。

それと、32bit OS では快適に動くソフトが、64bit OS ではもたつくというのは、これも、よくあることです。
実は、Windows の 64bit OS では、32bit 用のソフトは、それこそエミュレータで動かしているようなものなのです(本当はちょっと違う)

ですから、32bit 対応のアプリケーションであれば、64bit OS で動かしたときに遅くなると言うこともあるわけです。
    • good
    • 0
この回答へのお礼

 私が何を分かっていないのか、少し分かってきました。ありがとうございます。

 OSと、CPUのデータ処理、の独立性について勉強したいと思います。
 データ転送の幅と、データ処理サイズの関連、というか、関連が無いことが分かるような気がします。

 また、同じパソコンに32ビットのOSか、64ビットのOSか、どちらか選んで乗せられることが分かるような気がします。

 データ転送は、データバスの幅を超えることはできないから「32bit の CPU を積んだマシンに、64bit 用のOSを乗せているメーカーは存在しません。」ということになるのだと思います。
 論理的にはエミュレータという方法があっても、至る所にゲートウエーが必要で、スピードの問題が出てきそうです。
 
 データ処理サイズはアドレッシングのキャパシティで、CPUのビット数に左右され、多いほど大きくなり処理スピードが上がるのでしょうか。だとすれば64ビットのほうが速いことになります。

 これに32ビットのアプリを乗せると極端に遅くなる理由は何なんでしょうか?


 いろいろと、滅茶苦茶な事を言ったのかも知れません。

 何が間違いで、何が間違っていないのか、それぞれの理由と合わせて確認するための勉強をしたいと思います。


 何度もお手数を掛けました。
 これを契機に、一歩でも間抜けな消費者から脱したいと思います。

 お付き合い頂いたことに心から感謝申し上げます。

 ありがとうございました。

お礼日時:2011/05/10 22:33

No.4 です。



> CPUに限って言えば、どんなパソコンにも16ビットOS、32ビットOS、64ビットOS、
> 更には128ビットOSでも、何でも(10ビットでも、20ビットでも)載せられるのでしょうか?

それは無理です。

先の回答にも、「同じ機能」と書いたのは、理論的には同じ事ができると言うだけで、現存の(具体的な)OSが乗せられるわけではありません。

※といいつつ、「エミュレーション」という技法を遣えば、理論的には(ただし、実行時間と記憶容量の制約があるので実用上は無理)8bit のパソコンで、Windows 7 の 64bit 版を動かすのは可能です。

また、そもそも、64bit OS という概念自体が、具体的にある 64bit CPU のアーキテクチャに最適化したOSという意味で、そもそも、こういう条件(なり機能なり)を備えたものを 64bit OSという訳ではないのです。

たまたま、今主流の64bit CPU の機能というのがあって、それに対応したものが、たまたま 64bit OS と呼ばれているだけです。
    • good
    • 0
この回答へのお礼

 
 早速のご返事に感謝申し上げます。更に続けたいと思います。よろしくお願いします。

 「具体的にある 64bit CPU のアーキテクチャに最適化したOS」の表現から、CPUには64ビットのタイプが現実にあるということですね。
 嘗ては4ビット・マイコンから始まったと聞きましたが、転送の単位だろうと思っていました。OS、ソフトなどの概念はあったとしても、8ビット・エミュレータなどは実用化されておらず、隅から隅まで(CPUもレジスタも、I/Oまでもが)4ビットで遣り取りしていたのだと思います。

 コンピューターには、スピードという概念しか無いのだと思っています。消費電力は別の要求事項で、スピードに対して犠牲を強いるものだと思います。
 その高速化のためには、できるだけまとめて転送することが効果的で、8ビット化、16ビット化、と、歴史を重ねてきたのだと思います。

 ボード内では、通信回線と違ってパラレル転送が簡単にできると思います。
 CPUの種類も、このパラレルの一転送で何ビット運ぶかで64ビットCPU、32ビットCPUがあっても不思議では無いと、私は思います。
 でも、エミュレータを乗っければ、ソフトを通した世界ですが、8ビットCPUのパソコンで64ビットの(OSを含む)ソフトを使えるし、その逆もできそうです。
 もっとも、64ビットCPUのパソコンで8ビットのソフトを使うことは、単純には差の56ビット分が空の荷物ですから実に非効率です。
 実際やるとすれば8倍の(64)ビット数分が溜まるのを待って転送するんでしょうか?
 また、話が逸れてしまいましたが、全くありそうも無い事なのか教えて下さい。

 現実の話ですが、あるソフトをwindows7の64ビット・パソコンで使うと反応が遅くて使い物になりません。
 別のパソコン(32ビットのXP)では何の問題も無いのです。32ビットのwindows7でも問題ありません。
 
 お話にありました「CPUには64ビットのタイプが現実にある。」ということから、「CPUには32ビットのタイプが現実にある。」と解釈できそうです。
 その、32ビットCPUのパソコンに、64ビットのwindowsを載せている(販売している)商品もあるのでしょうか?
 その場合でも、エミュレータ次第で、どんなアプリも動作するとしても、スピードが問題です。

 お話の中の、「そもそも、64bit OS という概念自体が、具体的にある 64bit CPU のアーキテクチャに最適化したOSという意味」と、「「エミュレーション」という技法を遣えば、理論的には(ただし、実行時間と記憶容量の制約があるので実用上は無理)8bit のパソコンで、Windows 7 の 64bit 版を動かすのは可能」から、64bit OS は、64bit cpu のハードに乗っけないと、私のような酷い目に遭うのでしょうか?

 これからパソコンを買う際は、CPUのビット数と、OSのビット数が一致しているか確認が必要ですね。

 ソニーにパソコンの型式名称で搭載しているCPUの種類が分かるか問い合わせたら、「型式名称では分からない。一つ一つ仕様を確認するしかない。」とのこと。

 消費者の立場とのギャップを感じました。


 勝手で申し訳ありません。アドバイスをお願いします。

お礼日時:2011/05/10 15:55

なかなかいい視点だと思います。



というか、「プロセッサ」というものを、基礎から勉強するとこういう考え方は出てくると思います。
ただ、正確を期すなら、「CPU は1bit」というよりは、「CPU は(仮想的に)無限長のビット列を処理する」ということになります。

今、主流のマイコンは、「チューリングマシン」を具体的に表現したものというとらえ方もできます。
この理論からすれば、「処理時間と記憶容量の制限を無視すれば」8bit の CPU で、64bit Windows と同じ機能を実現できるというのは、知られています。

ただ、ここで、「処理時間と記憶容量の制限を無視すれば」という条件がつくことに注意してください。
現在のCPUは、仮想的には「チューリングマシンを具現化したもの」ですが、それをどのように、どのような機能をもって具現化するかは、それぞれのCPUにより異なります。
そして、具体的なCPUで、たとえば、処理時間の制約を最小限にしようとすれば、そのCPUの「アーキテクチャに沿った」ソフトウエアが、最も有利であると言うことになります。

だから、
・チューリングマシンというレベルの「仮想的な」プロセッサには、8bit とか 16bit とかいう区別はない
・しかし、具体的な製品としてのプロセッサには、8bit や 16bit などが存在する。
・したがって、実用効率を問題にするなら、それぞれのCPUにマッチしたソフト(OSも)が望ましい
・ただ、「処理時間と記憶容量」の制約を無視すれば、8bit マイコンで、64bit OS と同じ機能を持たせることはできる
ということになります。

そういう話では、たとえば、Crusoe とか、Efficeon とかいうプロセッサがかつて(今でも?)ありました。
前者は、128bit の 後者は 256bit の VLIW と呼ばれるタイプのプロセッサですが、x86 の 32bit 互換のCPUとして流通していました。
    • good
    • 0
この回答へのお礼

 少し、もやもやが晴れてきたような気がします。大変、ありがとうございます。

 質問を重ねて申し訳ありません。

 CPUに限って言えば、どんなパソコンにも16ビットOS、32ビットOS、64ビットOS、更には128ビットOSでも、何でも(10ビットでも、20ビットでも)載せられるのでしょうか?
 「CPU は(仮想的に)無限長のビット列を処理する」とのご説明から浮かび上がった質問です。

 もしそうだとして、逆にそれを受け入れない他の条件(例えばボード内の転送ビット数とか)は何でしょうか?

 よろしくお願いします。

お礼日時:2011/05/10 11:06

まぁ、極論言ってしまうと0と1の塊でしか有りませんからね。



ただ、実際にはそれでは、何も出来ないので、ある一定の長さの塊を決め、それに意味を持たせる。
その一定の長さが貴方の言う○○ビットというものになるのかな。
ハードが機械語として解釈できる長さというか。

ハードウェア自体は機械語しか解釈できません。逆に大半の人は機械語を解釈できません。
その仲介役をするのがOSの本来の役目。

また、ハードウェアの方も、OSから降りてくる塊を解釈するためのルールを決めておく必要があります。
(雑誌等ではアーキテクチャとか記述されているものが該当すると思いますが)

これらの双方の一致が無ければ、そのビットでは動かないわけで。
機械は人間と違って、ルールに忠実ですから。

方向性は全然違いますが、たとえば携帯で入力した絵文字などのメールをPCで受信すると、ワケの判らない文字列になったりしますが。
アレは携帯とPCでの文字の解釈の仕方が違うから。
でも一般的な文字はどちらも正常に表示される。

同様に32ビットOSと64ビットOSでは解釈の仕方が違う。
とは言え、全く違うわけではないので、その部分に関しては互換がある。という感じ。

自分はそういう感じで認識してますかね。
まぁ、突き詰めていけば、全然違ってくるのでしょうけど。
    • good
    • 0

たとえば足し算ですが


http://ja.wikipedia.org/wiki/%E5%8A%A0%E7%AE%97% …

CPUの中には必要な分だけ演算装置が並んでいて、一度に計算を行えます
    • good
    • 0

>そもそも、ハードとしては16ビットも、32ビットも、64ビットも、もしかして128ビットも無く、単に1ビットものなのではないかと思うようになりました。


意味不明で理解できません。
16ビットも、32ビット・・・はCPUが使用するレジスタやアドレスの長さを表しています。 性能や消費電力を考えればハードウェアで簡単に演算できるビット長を選択しますが、特別なニーズがあるとソフトウェアで任意精度演を行います。


「固定精度演算はハードウェア(演算論理装置)で実装できるのに対して、任意精度演算はソフトウェアで実装しなければならない。」


任意精度演算の参照URL
http://ja.wikipedia.org/wiki/%E4%BB%BB%E6%84%8F% …
    • good
    • 0

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