レジスタを直結するしかありません。セグメントに分割されるわけです。メモリを要求したので、セグメントを一つ割り当てたとします。そのアプリはセグメントの半分しか使いません。同じセグメントを他のアプリに割り当てるわけにはいかないので、残りの半分は無駄になってしまいます。数キロバイトしか使わないアプリもたくさんあったわけですが、そうなるとメモリの、ほとんどは無駄になる可能性もあります。フルに積んでいるコンピュータは、かなりの高級機でした。メモリを積んでいませんでした。セグメントレジスタだったら、セグメント二つ分です。全メモリ空間を二つにしか分けられなければ、メモリ管理の役には全く立ちません。個のセグメントを割り当てることができます。これにより、無駄なくメモリ管理ができるわけです。|0Wikipediaの資料を見たなら、引用されている文の直後の文も良く読んでみると良いでしょう。簡単に言えば、貴方が疑問に思った点と、設計者が重視した点が違うから、と言うことでしょう。以下で太字にしたのは私(引用者)ですが、その部分が重要だと思われます。日本語のページでは以下の記述が続いています。8086のアーキテクチャでは、プログラム内で通常表現されるアドレスの値は16ビット幅で64KBのメモリ空間である。当時、64KBのメモリ空間は1つのプログラムにとっては十分に広大であり[3]、セグメント機構はマルチタスクのために用意された。(8086には保護がないので、アプリケーションがセグメントレジスタを操作できるが、本来はOSが操作するものである。内蔵する4本のセグメントレジスタの値を全て同一にすると、8ビットの8080と同等の環境となり、8080用ソースを8086へ移植するのが容易であるほか、実行バイナリのリロケータブル化が容易であるといったメリットもあった。後に批判の的となってしまったセグメント方式だが、互換性を重視しつつ開発が短期間で完了でき、かつコストパフォーマンスに優れた選択肢であった。これは、当時モトローラと激しいシェア争いを演じていたintelにとって極めて重大な要素だった。メモリ空間を1MBとしたのは、当時使われていた40DIPパッケージにアドレス・データバスを割り当てる際に、アドレスピンを効率良く増やして割り当てられる値であったとも言われる。英語版のページもGoogleで簡単に翻訳出来るので、見てみるとより詳しい内容が記述されています。いくつか該当するだろう記述を抜粋します。Wikipedia多くのプログラマーによって複雑で扱いにくいと考えられていますが、このスキームには利点もあります。KB未満)を独自のセグメントの固定オフセット(0000など)からロードして、再配置の必要性を回避し、最大15バイトのアライメントの無駄を省くことができます。MBの物理アドレス空間を作成するために、実際には(4ビットではなく)8ビットシフトを使用することを考えました。MBがマイクロプロセッサーにとって非常に大きいと見なされたため、この考えは却下されました。追加の4つのアドレスバスピンに対して、低コストの40ピンパッケージで使用可能なピンが十分ではありませんでした。簡単に言えば、これはトレードオフです。メモリが16ビット単位でのみアクセスされるようにメモリアドレス指定が簡素化されると、メモリの使用効率が低下します。Intelはロジックをより複雑にすることを決定しましたが、メモリの使用はより効率的です。これは、ユーザーが今日使用しているメモリサイズよりもメモリサイズが大幅に小さく、かつ貴重であった時代でした。小さなプログラムでは、セグメンテーションを無視して、単純な16ビットアドレス指定を使用できます。これにより、8ビットソフトウェアを8086に非常に簡単に移植できます。ほとんどのDOS実装の作成者は、CP/Mに非常によく似たアプリケーションプログラミングインターフェイスを提供するだけでなく、シンプルな.com実行可能ファイル形式CP/Mへ。8086とMS-DOSが新しい場合、これは重要でした。多くの既存のCP/M(およびその他の)アプリケーションを迅速に利用可能にし、新しいプラットフォームの受け入れを大幅に容易にするためです。他に以下のページもありますが、上記の繰り返しに近いのでリンクだけ紹介。Wikipediaちなみに日本語Wikipediaの脚注に以下の記述があります。標準で1MB(実際は640KB程度)の範囲を安価に用意出来るようになるまでには結構時間がかかったと思います。本当に詳しくは、英語版Wikipediaの下の方にリンクのあるIEEE論文誌の記事をワード文書にした以下を見れば書いてあるかもしれません。読んでいないので何がどうとかは言えませんが。@774RRさんが書いたように16bitではないレジスタは検討の土台にも登っていなかったように思われますね。セグメント境界は、256バイトでさえメモリの分断化が懸念されて採用されなかった訳です。64KB境界は言わずもがな。以下に関連しそうな記述を抜粋します。太字は引用者によるものです。configurations.8086アーキテクチャ設計の目標は、既存の8080機能の対称的な拡張機能を提供し、8080にはない処理機能を追加することでした。コードを提供するメカニズム、位置に依存しないコード、動的に再配置可能なプログラム、が含まれています。今ではメモリが非常に安価になり、大量のコードやデータを必要とするアプリケーションでマイクロプロセッサが使用されていました。したがって、別の設計目標は、64kバイト以上を直接アドレス指定し、マルチプロセッサ構成をサポートできるようにすることでした。structure.8086プロセッサは16ビット演算を実行するため、それが操作するアドレスオブジェクトの長さは16ビットです。16ビットの量は64Kバイトしかアドレスできないため、メガバイトのメモリ空間にアドレスを構築するには追加のメカニズムが必要です。8086メモリは、それぞれ最大64Kバイトのサイズの任意の数のセグメントとして考えられます。各セグメントは、16で割り切れるアドレスで始まります(つまり、セグメントのアドレスの下位4ビットはゼロです)。いつでも、これらのセグメントの4つの内容はすぐにアドレス指定可能です。これらの4つのセグメントは、現在のコードセグメント、現在のデータセグメント、現在のスタックセグメント、および現在の追加セグメントと呼ばれ、一意である必要はなく、重複してもかまいません。各現在のセグメントのアドレスの上位16ビットは、専用の16ビットセグメントレジスタに保持されます。4つのセグメントすべてが同じアドレス、つまりアドレス0で始まる縮退したケースでは、8080メモリ構造になります。sufficient.8080アドレス空間を拡張するためのさまざまな選択肢が検討されました。そのような代替案の1つは、セグメントレジスタの内容に下位4ビットではなく8ビットを追加することで、最大16メガバイトのメモリをアドレス指定できる24ビットの物理アドレスを提供します。これは、次の理由で拒否されました。セグメントは256バイトの境界で強制的に開始されるため、メモリが過度に断片化されます。彼がチップ上で必要とする4つの追加ピンは利用できませんでした。1メガバイトのアドレス空間で十分であると感じられました。file.8086プロセッサには、4つの16ビットレジスタの3つのファイルと、9つの1ビットフラグのファイルが含まれています。レジスタの3つのファイルは、汎用レジスタファイル、ポインタおよびインデックスレジスタファイル、およびセグメントレジスタファイルです。values.セグメントレジスタをロードまたは操作しないプログラムは、動的に再配置可能と呼ばれます。そのようなプログラムは中断され、メモリ内で新しい場所に移動され、新しいセグメントレジスタ値で再起動されます。ちなみに貴方と同様のアドレス拡張の考え方を採用した別のメーカーのCPUも存在していますが、それでも16ビットレジスタであり、使わないビットは0固定という方法でした。実際にはCPUとMMU(MemoryManagementUnit)というチップの組み合わせで、結局は実メモリ上では64KB境界にとらわれず自由に配置出来るようになっていました。Wikipedia基本的には16ビットアーキテクチャだが、組込みシステム向けのZ8002を除いてZ8001では7ビットのセグメントレジスタによるアドレス拡張を行いZ8010(MMU)で実アドレスに変換し、アドレス空間を8Mバイトまで拡張している。Manual.どちらにも以下番号の説明図あり。Translationさらにちなみにスーパーファミコンとかで有名だけど今のWeb上にはあまり簡単にアクセス出来そうな資料が乏しい65816が8ビットのセグメントレジスタを使っているようですね。馴染みのある人はいっぱい居ると思われるのですが、Web上には図解とかで分かりやすい資料が乏しいようです。8ビットの6502が256個あるようでもあり、あるいは68000の親戚のようなリニアなアドレッシングもある不思議なCPUですね。個の銅バッジそうですね、少し違和感はありましたが、16ビット単位というのが2つ上の段落の説明から続くセグメントの配置単位の話と考えました。素直に読めばワードかバイトかの差ですね。太字の範囲は変えておきます。22:50以前のコメントは、不要になったので削除しました。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。