web-dev-qa-db-ja.com

バイトが8ビットである理由の歴史は何ですか?

8ビットのグループを基本単位として使用することを決定する際に、歴史的な力が働く場所、トレードオフは何ですか?

かつては他のWordサイズを使用するマシンがありましたが、今日では8ビット以外の場合は、美術館の作品、組み込みアプリケーション用の専用チップ、DSPを検討する必要があります。コンピューター設計の初期の混乱と創造性からバイトはどのように進化しましたか?

ビットが少なすぎると、コンピューティングを実行可能にするのに十分なデータを処理するには効果がなく、多すぎると高価なハードウェアにつながると想像できます。他の影響が出ていましたか?なぜこれらの力は8ビットにバランスをとったのですか?

(ちなみに、タイムトラベルができたら、「バイト」が8ビットであると宣言されたときに戻り、すべての人に12ビットにするように説得して、21世紀初頭の装身具に賄賂を渡します。)

88
DarenW

本当に初期の多くの作業は5ビットのバウドコードで行われましたが、それらはすぐに非常に制限されました(可能な文字は32文字のみなので、基本的に大文字のみ、およびfew句読点のみですが、数字のための十分な「スペース」)。

そこからかなりの数のマシンが6ビット文字に変換されました。これはまだかなり不十分でした-大文字と小文字(英語)の文字と数字が必要な場合は、句読点用にあと2文字しか残っていなかったため、ほとんどの場合、文字セット内の文字は1ケースしかありませんでした。

ASCIIは7ビットの文字セットを定義しました。これは、長い間多くの用途で「十分」であり、ほとんどの新しい文字セット(ISO 646、ISO 8859、Unicode、ISO 10646など)の基礎も形成しています。

バイナリコンピュータは、2の累乗のサイズを作成するように設計者を動機付けます。とにかく「標準」の文字セットは7ビットを必要としたため、1を追加して2の累乗を取得するのはそれほど難しくありませんでした(それまでに、ストレージは、ほとんどの文字を少し「無駄にする」ほど安価になりました)も受け入れられました)。

それ以来、文字セットは16ビットおよび32ビットに移行しました。しかしほとんどの主流コンピューターは、大部分が元のIBM PCに基づいています。繰り返しになりますが、PCが現在の主流のレベルに達していなくても、とにかくすべての人が大きな文字ですべてを行うとは思えません。

また、市場はかなり変化していることも付け加えておきます。現在の市場では、文字サイズはソフトウェアよりもハードウェアで定義されています。 Windows、Javaなどはずっと前に16ビット文字に移行しました。

現在、16ビットまたは32ビットの文字をサポートする際の障害は、16ビットまたは32ビットの文字自体に固有の問題によるものであり、i18nの一般的なサポートの難しさによるものです。 ASCII(たとえば)で文字が大文字か小文字かを検出したり、2つの文字の間で変換したりすることは、信じられないほど簡単です。完全なUnicode/ISO 10646では、それは基本的に何と言っても複雑です。標準では試していません-それらは表ではなく説明を与えます。次に、一部の言語/文字セットについては、基本的なideaの大文字/小文字だけでなく、次に、それらの一部で文字を表示する場合でも、はるかに複雑であるという事実を追加します。

これは非常に複雑なため、ソフトウェアの大部分は試みさえしません。状況は緩やかに改善していますが、ゆっくりが効果的な言葉です。

77
Jerry Coffin

ASCII情報用の7ビットと、エラー検出パリティ用の1ビット。

11
DeadMG

8ビットアーキテクチャのWikipediaページ をご覧ください。文字セットは5、6、7ビットでしたが、基礎となるCPU /メモリバスアーキテクチャは常に2の累乗を使用していました。非常に最初のマイクロプロセッサ(1970年代頃)には4ビットバスがあり、1つの命令で4外部メモリとCPU間のデータのビット。

その後、8080プロセッサのリリースにより、8ビットアーキテクチャが一般的になり、それが今日でも使用されているx86アセンブリ命令セットの始まりをもたらしました。推測しなければならないのですが、バイトはこれらの初期のプロセッサから来たもので、主流の公衆がPCを受け入れてプレイし始め、8ビットはデータの単一ユニットの標準サイズと見なされていました。

それ以来、バスサイズは2倍になっていますが、常に2の累乗(つまり、16、32、および64ビット)のままでした。実際、今日のバスの内部は、単純な64本のパラレルワイヤーよりもはるかに複雑だと思いますが、現在の主流のCPUアーキテクチャは64ビットです。

常に2倍にすることで(50%成長するのではなく)、既存のアプリケーションや他のレガシーコンポーネントと共存する新しいハードウェアを作成する方が簡単だったと思います。したがって、たとえば、8ビットから16に変更された場合、各命令は1バイトではなく2バイト移動できるようになるため、1クロックサイクルを節約できますが、最終結果は同じになります。ただし、8ビットから12ビットアーキテクチャに移行すると、元のデータを半分に分割して管理するのが面倒になる可能性があります。これらは推測に過ぎず、私はハードウェアの専門家ではありません。

6
DXM

1バイトはさまざまな(少なくとも)1、4、6、7、8、9、12、18、20、そして場合によっては36ビットであり、どのコンピューターを使用しているかによって異なります。ここでは「バイト」を、テキスト中心の解釈を使用するのではなく、「メモリのアドレス可能な最小単位」という意味で使用しています。 (たとえば、Saturn CPUは、人気のあるHP48SX/GX電卓ラインで使用される64ビットCPUで、ニブルでメモリをアドレス指定します-4ビット)。

20ビットバイトは、50年代の「IASマシン」では非常に一般的でした。 6、12、18(そしておそらく36)は、60年代、70年代、そしてある程度は80年代のさまざまなアーキテクチャで非常に人気がありました。

結局のところ、「2の累乗」と「アドレス可能なユニットのビット」との対応がうまくいっていたようです。

4
Vatine

まず、少し明確にしておきます。オクテット(8ビット単位)は、現代のコンピューターアーキテクチャでは実際には基本単位ではありません。少なくとも他の2の累乗(2、4、16、32、64、128など)よりも基本的ではありません。オクテットは8ビットプロセッサの基本単位です(そのため、名前です!)。しかし、現代のアーキテクチャは通常、より大きなビットで動作します-内部で設定します。例えば。 x86_64には、64ビット整数レジスタと80ビット浮動小数点レジスタがあります。 RAMは64ビットチャンクで読み書きされ、プロセッサは少しの魔法を使用して、個々の8ビットバイトをアドレス指定できるように見せます。

古いアーキテクチャの場合、「バイト」はデータバスのサイズを示し、元の質問のとおり、さまざまなバスサイズ(4、5、6、8、12など)が存在しました。しかし、1993年以降、データサイズの標準化されたSI単位を持つために、バイトは8ビットとして定義になっています。したがって、「バイト」の意味は、アーキテクチャに依存するユニットから、アーキテクチャに依存しない標準化されたユニットに変更されました。

したがって、最近では、バイトはデータのアドレス指定と数量化の標準単位ですが、それ以外の場合は基本的なものではありません。

オクテットユニットは、主にテキストの格納に関する懸念から、ストレージの事実上の標準になりました。テキストを格納するには、1バイトで1文字を格納するのが理想的です。 2つの要因が重要でした。

  • 2の累乗(2、4、8、16、32など)の単位を持つことは、デジタルシステムを設計する場合により便利です。
  • 8ビットは、ASCII文字セットに文字を格納するのに十分です(たとえば、キリル文字をサポートするために文字セットを拡張するための余裕があります)。

もちろん、8ビットはすべてのスクリプトをサポートするのに十分ではありません-日本語のようなものは少なくとも16ビットを必要とします(そして、その価値のために、Unicodeは21ビットです)。 ASCIIとにかく範囲。

最近では、テキストは通常​​UTF-8のような可変幅エンコーディングで格納され、Unicode結合文字のようなものでは、「1バイトは1文字に等しい」というのは長い間過去のものでした。今日のバイトは、歴史的な理由から本当に標準にすぎません。

2
JacquesB

私の情報によると、Wordバイト自体は、8ビットの語句であるフレーズバイエイトから派生したものです。値00000000 = 00&11111111 = FF(符号なしの場合はDec 255、符号付きの場合は-127)であるため、8ビットワードで便利なのは16進値への変換です。オペレーション。

私はバイト(8ビットワード)を、壊滅的に小さい3ビットから途方もなく大きい60ビットワードまでのワードサイズの自然な進化と考えています。

1
A.Rashad

バイトは8ビットである必要はありません ですが、CおよびC++は1バイトを少なくとも8ビットとして定義しているようです(ただし、それ以上の場合もあります)。この Stack Overflowに関する質問 は、1バイトが8ビットではないいくつかのシステムについて言及しています。

0
Thomas Owens