• に登録
  • 歴史・時代・伝奇

CPU のビット数の決め方と計算能力

「自然な計算のできるサイズ」らしいんですが、正直定義が曖昧で……という気になります。
『週刊「RSAを作る」』の時代、1985年前後でもZ80なんかはHLレジスタを使えば16ビットでの計算はできたわけで、じゃあZ80は16ビットCPUかというと違うよな、と。
レジスタペアを考えないのなら、まあ、うん……かなあ……?

などと自分のバカにはまり込んでいる私はいったん脇に置くとしましょう。
さて、今回の多倍長整数、一体何をしているのかと言うと、この「自然な計算のできるサイズ」を超えるための処理です。
今作のターゲットは8088/8086/V20/V30あたりのCPUです。いわゆる16ビットCPUですね。
これらのCPUでは四則演算は16ビット幅まで。それ以上の機能の提供はありません。
10進数で言うと4桁までの数字なら確実に、5桁だと符号有り無しによりますが、符号なしなら6割カバー、です。……意外と狭いな。
それ以上の数を扱うにはちょっとした工夫が必要です。

小学生の算数で、最初は一桁の計算を覚えますが、だんだん桁を増やしていきますね。
これと同じことをCPUの計算でもやります。
16ビットCPUでは一回の計算は16ビット幅まで、でした。これを一桁とみなして拡張していきます。
桁上りするのは65536。16進数で書くなら0x10000というキリのいい数値です。
小学生の筆算と同じことをあとはやるだけ。
下から足して桁上り、下から引いて借りる。掛け算も各桁で処理して足していく。

あ、除算だけはそのまま実装しないですね。ビット処理で高速化してます。
ビットシフト処理もある種掛け算でその後大小関係を見ているので割り算の筆算と似たようなもの……か? どうなんだ……?

結局自分のバカに自分ではまる解説回、でした。

8件のコメント

  • CPUのBit数、Z80は混乱の元ですね。:-)
    Intelがi8088を8Bit表記していたり、64Bit級とか、もはやマーケティング用語としてみたほうが良いのかも。

    多倍長レジスタではZ8000もアホで面白いですよ。まっったく普及しなかったので、影響度は皆無ですが。
  • そうなんですよね。
    一般にデータバスサイズとかで見るべきとかも言われるんですが、そうすると8088は8ビットになります。インテルはそういう意味では誠実かも。
    ……でも386SXはデータバス16ビットなんですよ。あれ16ビットっていうのはちょっと……。
    プロセスルールと同じでマーケティング用語扱いでいいのかもしれませんね、本当に。

    で、Z8000知らなかったので軽く調べてみたんですが、ぇぇ……これ今回実装した部分、アセンブラレベルでだいぶサポートされてません……?
    遅くてエラッタも多くて8086に負けたとかいう説が出てきましたが、たしかにこれちゃんと動いていたならそこそこ戦えたような気がしますね。
    速度は、まあ、うん……リッチな分辛そうではありますが。
  • Z8000、速度はそんなに酷くないんですよ。
    問題は当時のZilogのプロセスの制約で、その後の動作速度上昇が難しかったり、Z8001の外部MMUがメモリサイクルにWait入れるのでおそいとか、そういう話で。

    Errataは酷かったらしいですね。
    「わが青春の4004」とか、Byteの業界噂話を突き合わせると、Z8000テープアウト間もなく嶋氏がとんずらしたのが迷走の原因の様な。元々Peutoがマイクロコード前提で構想していたのに、嶋氏はワイヤードロジックで実装して。嶋氏がスーパーマン過ぎて、いなくなった後は相当大変だっただろうなと。

    ……密かにZ8000を大幅改変するZilog無双のプロット練ってますが。何時書けるのやら。
  • |∵)マッテル

    |)彡サッ



    一人の天才に振り回されるプロジェクトって昔は多々ありましたし……それを嫌っての様々なプロジェクト管理が生まれましたが、代わりにプロダクトが薄まった気がしますね。
    でも実際のところ、天才には金と時間を与えて好き勝手やらせるのが一番です。そうすれば逃げられない。たぶん。きっと。

    何人か天才と仕事をする幸運に恵まれましたが、しみじみ思います。
  • やったぜ、読者1名確保かも?

    真面目な話、還暦が想定外に読まれているので、この路線でもう少し作品増やせばジャンルにならないかなぁ、と思っていて。カクヨムコン時期狙いで書けないかと、今は還暦書き溜め増やそうとしているんですよね。

    あわよくばという色気を出して、固有名詞配慮したり、一般読者にも読みやすい配慮とか考えだしたら切りが無いんですよねぇ……


    嶋氏が天才だったのは間違い無いと思うんですが、ビジョナリーではないので。上の人が、才能が一番ハマる所に振らないと行けないんですよね。そのあたり、Z8000作り始めるころのZilogでは迷走していたように見えて。もう少し何とかなっていれば、と。

    ……Zilogを影から操る悪役令嬢とか。:-)
  • 一般読者に着いてきてもらう努力が結果として読者数に出ているのです。
    なんせ一般読者を置き去りにして擬似コードまみれさらにGitHubに実証コードを置いている私の小説のアクセス数がですね。
    ある種実験小説ではあるのですけども……いや、逆にこれでここまで付いてきてもらえているのだから、一般読者に考慮を入れるならばこの路線実はブルーオーシャンなのでは?
    ただ僕の性格的には難しいですorz



    そうそう、天才にも種類がありますね。好き勝手させると「おまえ、それどこで稼ぐ気だ?」になるタイプは放し飼いにするとよくな……。
    ん……? どこかで見たような(社会性フィルターによる介入)


    操るということはZilogの株をたくさんもっている悪役令嬢、ですね。ちょっと調べてみたら、あのあたり関係のお嬢様ということに。うん、これは強い(確信)
  • 何と言うか。私くらいの半可通の方が、専門家にはある程度は笑って許して貰えて、素人さんにはフレーバーテキストで読み流せるという微妙なバランスなのかもですね。

    何で還暦があれだけ伸びたのかは未だに不明ですが。
    あのネタを面白がってもらえるのなら、CPU作るネタも行けそうかなと、もう少し間口を広げる材料無いかと唸っています。

    天才、憧れるんですよねぇ。全包囲で優秀な人より、突出しすぎて歪な方が面白いですし。異能というか、異形の方が近かったりとか。ハイスペック過ぎてピーキーな方がカッコいい、と。

    ……うかつに小ネタ出すと全部バレてしまいそうな。読んだときのお楽しみのためにチャックしときますね。:-)
  • はーい、楽しみに待っております。

    ふと思ったのですが、多少の嘘が混ぜ込まれているくらいがちょうどいいんですよ多分。みんなファンタジーを読みに来ているので論文を読みたいわけでは……あああ、自分に刺さる痛い痛い(じゃあやるなよ)

    天才、いいですよねえ……ただ日常生活はまともに送れてない人が多いイメージがありまして、なので自分がなりたいかというと、難しい気持ちになるのです。
コメントの投稿にはユーザー登録(無料)が必要です。もしくは、ログイン
投稿する