バイアスの解説 ホスト序、ネットワーク序、デバッガで直接観察 コンピュータ分野の歴史的経緯から生まれた特定の設計習慣は、お尻の幅がロケットエンジンの幅を決定するように、内部の「利点」や「欠点」を分析する必要はありません。単なる歴史的な習慣です。
元文章リンク
著: 北極 リンク: https://www.zhihu.com/question/637413724/answer/3346032134 出典: 知乎 著作権は著作者に帰属します。商業的な転載をご希望の場合は、著者に連絡して許可を得てください。非営利の転載の場合は、出所を明記してください。
正文转载
現代の様々なデバイスの状態は、歴史的な慣習と商業化の結果であり、技術そのものとは関係がありません。ARMはビッグエンディアン(大端)でも、リトルエンディアン(小端)でも設定できます。TCP/IPヘッダも現在もビッグエンディアン(ネットワークバイト順序)です。ストレージ分野にも、大端方式でデータを保存する多くのストレージプロトコルや仕様があります。
したがって、質問者の3つの問題は、今日から見ると次のようになります。
- コンピュータが一般的に小端形式で保存するのはなぜ? → 間違い。
- 低バイトを低アドレスに配置した小端形式の方が、大端形式よりも効率的である理由は何ですか? → 効率は高くなりません。
現在の技術を用いてこれらの問題を論証するものは、すべて矢を射てから的を描くような行為です。
しかし、大端または小端の選択が、コンピュータの開発史において、確かに一定の客観的な要因があったことは事実です。ホストバイト順序(小端)の利点は、小端形式の加算器は比較的簡単に作れることです。8ビット×4の加算器を作成するには、単一の8ビット加算器で、低アドレスから高アドレスまで順番に各バイトを加算するだけで済みます。桁上がり回路は非常にシンプルであり、大端形式では32ビットを一度ロードする必要があるため、計算できません。現在では、8ビットと32ビットのロードの違いはほとんどありませんが、数十年前にはメモリ価格が高価であったため、より単純な方が有利でした。そのため、ホストバイト順序を選択したのはコストを考慮した結果です。ネットワークバイト順序(大端)の利点は、初期のデバイスのキャッシュが非常に小さかったことです。最初に高バイトを受信することで、パケットの長さ(どの程度のキャッシュが必要か)やアドレス範囲(IPアドレスは前から後ろにマッチングする)を迅速に判断できます。当時のネットワークデバイスのキャッシュはバイト単位であり、先頭のバイトを取得することがより速い場合がありました。そのため、ネットワークデバイスが大端を使用したのはコストを考慮した結果です。
したがって、バイト順序の選択は、歴史的に見て、多くの場合、アプリケーションシナリオとコストを重視したもの(例えば、PPC/MIPSはネットワークデバイスに適している)であり、その後の技術発展において、互換性のために大端小端の設定が引き継がれているものです。
今日から見れば、これらの利点はすべて存在せず、単なる歴史的な慣習に過ぎません。