コンピューティングにおいて、ワードは特定のプロセッサ設計で使用されるデータの自然な単位です。ワードは、プロセッサの命令セットまたはハードウェアによって単位として処理される固定サイズのデータです。ワード内のビット数または桁数[a] (ワード サイズ、ワード幅、またはワード長) は、特定のプロセッサ設計またはコンピュータ アーキテクチャの重要な特性です。
ワードのサイズは、コンピュータの構造と動作の多くの側面に反映されます。プロセッサ内のレジスタの大部分は通常ワード サイズであり、1 回の操作で作業メモリとの間で転送できる最大のデータは、多くの (すべてではない) アーキテクチャではワードです。メモリ内の場所を指定するために使用される最大アドレスサイズは、通常、ハードウェア ワードです (ここでの「ハードウェア ワード」は、プロセッサのフルサイズの自然ワードを意味し、他の定義とは対照的です)。
固定ワードサイズの古いコンピュータのドキュメントでは、メモリ サイズがバイトや文字ではなくワードで記述されているのが一般的です。ドキュメントでは、メトリック プレフィックスが適切に使用されている場合もあれば、たとえば65 キロワード(kW) が 65536 ワードを意味するなど丸められている場合もありますが、キロワード(kW) が 1024 ワード (2 10 )、メガワード (MW) が 1,048,576 ワード (2 20 ) を意味するなど、誤って使用されている場合もあります。8 ビット バイトとバイト アドレス指定の標準化により、メモリ サイズを 1000 の累乗ではなく 1024 の累乗でバイト、キロバイト、メガバイトで記述することが標準になりましたが、 IEC バイナリ プレフィックスが使用される場合もあります。
初期のコンピュータのいくつか(および現代のコンピュータのいくつか)は、単純な2進数ではなく2進化10進数を使用しており、通常、ワードサイズは10桁または12桁で、初期の10進コンピュータの中には固定ワード長を持たないものもあった。初期の2進システムでは、6ビットの倍数のワード長を使用する傾向があり、メインフレームコンピュータでは36ビットワードが特に一般的だった。ASCIIの導入により、ワード長が8ビットの倍数のシステムへの移行が進み、1970年代には16ビットマシンが普及し、その後、32ビットまたは64ビットの現代のプロセッサに移行した。[1]デジタル信号プロセッサなどの特殊用途の設計では、4ビットから80ビットまでの任意のワード長を持つことができる。[1]
以前のコンピュータとの下位互換性のため、ワード サイズは予想と異なる場合があります。複数の互換性のあるバリエーションまたはプロセッサ ファミリが共通のアーキテクチャと命令セットを共有しているが、ワード サイズが異なる場合、その違いに対応するためにドキュメントとソフトウェアの表記が複雑になることがあります (以下のサイズ ファミリを参照)。
言葉の用途
コンピュータの構成に応じて、ワードサイズの単位は次のような用途に使用されます。
- 固定小数点数
- 固定小数点(通常は整数) の数値のホルダーは、1 つまたは複数の異なるサイズで使用できますが、使用可能なサイズの 1 つはほぼ常にワード サイズです。他のサイズがある場合は、ワード サイズの倍数または分数になる可能性が高くなります。小さいサイズは通常、メモリを効率的に使用する場合にのみ使用されます。プロセッサにロードされると、その値は通常、より大きなワード サイズのホルダーに格納されます。
- 浮動小数点数
- 浮動小数点数値のホルダーは、通常、ワードまたはワードの倍数のいずれかです。
- 住所
- メモリ アドレスのホルダーは、必要な値の範囲を表現できるサイズである必要がありますが、大きすぎてはなりません。そのため、使用されるサイズはワードであることが多いですが、ワード サイズの倍数または分数にすることもできます。
- レジスター
- プロセッサ レジスタは、整数、浮動小数点数、アドレスなど、保持するデータのタイプに適したサイズで設計されています。多くのコンピュータ アーキテクチャでは、複数の表現でデータを格納できる汎用レジスタを使用しています。
- メモリ-プロセッサ転送
- プロセッサがメモリサブシステムからレジスタに読み込んだり、レジスタの値をメモリに書き込んだりする場合、転送されるデータの量は多くの場合ワードです。歴史的には、1サイクルで転送できるこのビット数は、一部の環境( Bull GAMMA 60 など)ではカテナとも呼ばれていました。 [2] [3]単純なメモリサブシステムでは、ワードはメモリデータバスを介して転送され、その幅は通常ワードまたはハーフワードです。キャッシュを使用するメモリサブシステムでは、ワードサイズの転送はプロセッサと最初のレベルのキャッシュの間で行われ、メモリ階層の下位レベルでは、通常、より大きな転送(ワードサイズの倍数)が使用されます。
- アドレス解決の単位
- 特定のアーキテクチャでは、連続するアドレス値はほぼ常に連続するメモリ単位を示します。この単位はアドレス解決の単位です。ほとんどのコンピュータでは、単位は文字 (バイトなど) またはワードです (ビット解決を使用しているコンピュータもいくつかあります)。単位がワードの場合、特定のサイズのアドレスを使用して、個々の文字にアクセスするための複雑さが増すという犠牲を払って、より大きなメモリ容量にアクセスできます。一方、単位がバイトの場合、個々の文字をアドレス指定できます (つまり、メモリ操作中に選択できます)。
- 説明書
- マシン命令は通常、 RISC アーキテクチャなどのアーキテクチャのワードのサイズ、またはその一部である「char」サイズの倍数です。命令とデータは通常同じメモリ サブシステムを共有するため、これは自然な選択です。ハーバード アーキテクチャでは、命令とデータは異なるメモリに格納されるため、命令とデータのワード サイズは関連している必要はありません。たとえば、1ESS 電子電話交換機のプロセッサには、 37 ビットの命令と 23 ビットのデータ ワードがあります。
単語サイズの選択
コンピュータ アーキテクチャを設計する場合、ワード サイズの選択は非常に重要です。特定の用途 (アドレスなど) に対して特定のビット グループ サイズを推奨する設計上の考慮事項があり、これらの考慮事項は、異なる用途に対して異なるサイズを示しています。ただし、設計の経済性を考慮すると、1 つのサイズ、または基本サイズの倍数または分数 (約数) で関連付けられた非常に少数のサイズが強く推奨されます。その推奨サイズがアーキテクチャのワード サイズになります。
文字サイズは、過去(可変サイズの文字エンコーディング以前)では、アドレス解決の単位とワード サイズの選択に影響を与える要因の 1 つでした。1960 年代半ばより前は、文字はほとんどの場合 6 ビットで格納されていました。このため、64 文字を超える文字は格納できず、アルファベットは大文字のみでした。ワード サイズを文字サイズの倍数にすると時間と空間の効率がよいため、この時期のワード サイズは通常 6 ビットの倍数でした(バイナリ マシンの場合)。当時は36 ビット ワードが一般的に選択されていましたが、これは浮動小数点形式の数値特性にも適したサイズでした。
8 ビット文字を使用し、小文字をサポートするIBM System/360設計が導入されて以降、文字 (より正確には、バイト) の標準サイズは 8 ビットになりました。それ以降のワード サイズは当然 8 ビットの倍数となり、16 ビット、32 ビット、64 ビットが一般的に使用されます。
可変ワードアーキテクチャ
初期のマシン設計には、可変ワード長と呼ばれるものを使用するものもありました。このタイプの構成では、オペランドの長さは固定されていません。マシンと命令に応じて、長さはカウント フィールド、区切り文字、またはフラグやワード マークなどと呼ばれる追加のビットで示されます。このようなマシンでは、数値に 4 ビットの数字または 6 ビットの文字の2 進化 10 進数を使用することがよくあります。このクラスのマシンには、 IBM 702、IBM 705、IBM 7080、IBM 7010、UNIVAC 1050、IBM 1401、IBM 1620、およびRCA 301 が含まれます。
これらのマシンのほとんどは、一度に 1 ユニットのメモリで動作し、各命令またはデータは数ユニットの長さであるため、各命令はメモリにアクセスするだけで数サイクルかかります。このため、これらのマシンは多くの場合非常に低速です。たとえば、IBM 1620 モデル Iでの命令フェッチでは、命令の 12 桁を読み取るだけで 8 サイクル (160 μs) かかります (モデル II ではこれが 6 サイクルに短縮され、命令が両方のアドレス フィールドを必要としない場合は 4 サイクルになりました)。命令の実行には、オペランドのサイズに応じてさまざまなサイクル数がかかります。
ワード、ビット、バイトのアドレス指定
アーキテクチャのメモリ モデルは、ワード サイズに大きく影響されます。特に、メモリ アドレスの解像度、つまりアドレスで指定できる最小単位は、ワードに選択されることがよくあります。このアプローチ (ワードアドレス指定可能なマシン アプローチ) では、1 だけ異なるアドレス値は、隣接するメモリ ワードを指定します。これは、ほとんど常にワード (または複数ワード) 単位で処理するマシンでは自然なことであり、命令がアドレスを格納するために最小サイズのフィールドを使用できるという利点があります。これにより、命令のサイズを小さくしたり、命令の種類を増やしたりすることができます。
バイト処理がワークロードの重要な部分を占める場合、アドレス解決の単位としてワードではなくバイトを使用する方が通常は有利です。1 だけ異なるアドレス値は、メモリ内の隣接するバイトを指定します。これにより、文字列内の任意の文字を直接アドレス指定できます。ワードもアドレス指定できますが、使用するアドレスには、ワード解決の代替方法よりも数ビット多く必要です。この構成では、ワード サイズは文字サイズの整数倍である必要があります。このアドレス指定方法は IBM 360 で使用され、それ以降に設計されたマシンでは最も一般的な方法となっています。
ワークロードに異なるサイズのフィールドの処理が含まれる場合、ビットにアドレス指定すると有利になることがあります。ビット アドレス指定を備えたマシンには、プログラマが定義したバイト サイズを使用する命令と、固定データ サイズで動作する命令があります。たとえば、IBM 7030 [4] (「Stretch」) では、浮動小数点命令はワードのみをアドレス指定できますが、整数演算命令は 1 ~ 64 ビットのフィールド長、1 ~ 8 ビットのバイト サイズ、および 0 ~ 127 ビットのアキュムレータ オフセットを指定できます。
ストレージ間 (SS) 命令を備えたバイト アドレス指定可能なマシンでは、通常、1 つまたは複数のバイトを任意の場所から別の場所にコピーする移動命令があります。SS 命令のないバイト指向 (バイト アドレス指定可能) マシンでは、1 つのバイトを任意の場所から別の場所に移動するには、通常、次の操作を実行します。
- ソースバイトをロードする
- 結果をターゲットバイトに格納します
ワード指向マシンでは、2 つの方法のいずれかで個々のバイトにアクセスできます。バイトは、レジスタ内のシフト操作とマスク操作の組み合わせによって操作できます。1 つのバイトを任意の場所から別の場所に移動するには、次の操作と同等の操作が必要になる場合があります。
- ソースバイトを含むワードをロードする
- ソースワードをシフトして、目的のバイトをターゲットワードの正しい位置に揃えます。
- ソースワードとマスクのAND演算を行い、必要なビット以外をゼロにする
- 対象バイトを含むワードをロードする
- ターゲットワードとマスクのAND演算を行い、ターゲットバイトをゼロにする
- ソースワードとターゲットワードを含むレジスタをORしてソースバイトを挿入する
- 結果をターゲットの場所に保存します
あるいは、多くのワード指向マシンは、レジスタまたはメモリ内の特殊なバイト ポインタを使用する命令でバイト操作を実装します。たとえば、 PDP-10バイト ポインタには、バイトのサイズ (ビット単位) (異なるサイズのバイトにアクセスできるようにする)、ワード内のバイトのビット位置、およびデータのワード アドレスが含まれていました。たとえば、ロード操作やデポジット (ストア) 操作では、命令によってポインタを次のバイトに自動的に調整できます。
2の累乗
異なる精度のデータ値を格納するために、異なる量のメモリが使用されます。一般的に使用されるサイズは、通常、アドレス解決の単位 (バイトまたはワード)の 2乗倍数です。配列内の項目のインデックスを項目のメモリ アドレス オフセットに変換するには、乗算ではなくシフト操作のみが必要です。場合によっては、この関係により除算操作の使用を回避できることもあります。その結果、ほとんどの最新のコンピューター設計では、ワード サイズ (およびその他のオペランド サイズ) はバイト サイズの 2 乗倍になります。
サイズファミリー
コンピュータの設計が複雑になるにつれ、アーキテクチャに対する単一のワード サイズの重要性は低下しました。より高性能なハードウェアはより多様なサイズのデータを使用できますが、市場の力により、プロセッサの機能を拡張しながら下位互換性を維持するよう圧力がかかっています。その結果、新しい設計で中心的なワード サイズであったものが、下位互換性のある設計では元のワード サイズの代替サイズとして共存する必要があります。元のワード サイズは将来の設計でも使用可能であり、サイズ ファミリの基礎となります。
1970 年代半ば、DEC は16 ビットのPDP-11の 32 ビット後継機としてVAX を設計しました。16ビットの量にはワードを使用し、32 ビットの量にはロングワードを使用しました。この用語は PDP-11 で使用した用語と同じです。これは、メモリのアドレス指定の自然単位がワードと呼ばれ、ワードの半分の量がハーフワードと呼ばれていた初期のマシンとは対照的です。この方式に合わせて、VAX のクワッドワードは 64 ビットです。この 16 ビット ワード/32 ビット ロングワード/64 ビット クワッドワードという用語が、64 ビットAlphaでも継続されました。
もう 1 つの例はx86ファミリです。このファミリでは、3 つの異なるワード長 (16 ビット、後に 32 ビットと 64 ビット) のプロセッサがリリースされていますが、word は引き続き 16 ビットの量を示します。ソフトウェアは定期的に1 つのワード長から次のワード長に移植されるため、一部のAPIとドキュメントでは、ソフトウェアがコンパイルされる可能性のある CPU の完全なワード長よりも古い (したがって短い) ワード長を定義または参照しています。また、多くのプログラムで小さな数値にバイトが使用されるのと同様に、より広いワードの範囲が必要ない場合 (特に、これによりスタック領域またはキャッシュ メモリ領域を大幅に節約できる場合) には、より短いワード (16 ビットまたは 32 ビット) が使用されることがあります。たとえば、Microsoft のWindows APIでは、APIが 32 ビットまたは 64 ビットの x86 プロセッサで使用される可能性があり、標準のワード サイズがそれぞれ 32 ビットまたは 64 ビットであるにもかかわらず、WORD のプログラミング言語定義は 16 ビットのままです。このような異なるサイズのワードを含むデータ構造は、次のように呼ばれます。
- WORD (16ビット/2バイト)
- DWORD (32 ビット/4 バイト)
- QWORD (64 ビット/8 バイト)
同様の現象がIntel のx86アセンブリ言語でも発生しています。命令セットでさまざまなサイズ (および下位互換性) がサポートされているため、一部の命令ニーモニックには、アーキテクチャの元の 16 ビット ワード サイズに基づく「double-」、「quad-」、または「double-quad-」を表す「d」または「q」識別子が付いています。
異なるワード サイズの例としては、IBM System/360ファミリーがあります。System /360 アーキテクチャ、System/370 アーキテクチャ、およびSystem/390アーキテクチャには、8 ビットのバイト、16 ビットのハーフワード、32 ビットのワード、および 64 ビットのダブルワードがあります。そのアーキテクチャファミリーの64ビットメンバーであるz/Architecture は、引き続き 16 ビットのハーフワード、32 ビットのワード、および 64 ビットのダブルワードを参照し、さらに 128 ビットのクワッドワードを備えています。
一般に、新しいプロセッサは、古いプロセッサとのバイナリ互換性を保つために、古いプロセッサと同じデータ ワード長と仮想アドレス幅を使用する必要があります。
多くの場合、ソース コードの互換性とソフトウェアの移植性を考慮して慎重に記述されたソース コードは、データ ワード長やアドレス幅が異なるプロセッサ、あるいはその両方が異なるプロセッサでも実行できるように再コンパイルできます。
単語サイズ表
[8] [9]
参照
注記
- ^ 初期のコンピュータの多くは10進数だったが、少数は3進数だった。
- ^ UNIVAC 1005 は、行と列に5 ビットのグレイ コードを使用してコアをアドレス指定します。
- ^ ビット相当量は、トリットによって提供される情報エントロピーの量、つまり を取ることによって計算されます。これは、6 トリットの場合、約 9.51 ビットに相当します。
- ^ 3 状態標識
- ^ z/Architecture は本質的に 64 ビット アーキテクチャですが、ワードという用語は依然として 32 ビットの量を指します。ただし、この表では、サイズはワードが 64 ビットであるかのように扱われます。
参考文献
- ^ ab Beebe, Nelson HF (2017-08-22). 「第 1 章 整数演算」。数学関数計算ハンドブック - MathCW ポータブル ソフトウェア ライブラリを使用したプログラミング(第 1 版)。ソルトレイクシティ、ユタ州、米国: Springer International Publishing AG。p. 970。doi : 10.1007 / 978-3-319-64110-2。ISBN 978-3-319-64109-6. LCCN 2017947446. S2CID 30244721.
- ^ Dreyfus, Phillippe (1958-05-08) [1958-05-06]。米国カリフォルニア州ロサンゼルスで執筆。Gamma 60 のシステム設計(PDF)。Western Joint Computer Conference : Contrasts in Computers。ACM、米国ニューヨーク州ニューヨーク。pp. 130–133。IRE-ACM-AIEE '58 (Western) 。2017-04-03 にオリジナルからアーカイブ(PDF) 。2017-04-03に取得。
[...] 内部データ コードが使用されます。定量的 (数値) データは 4 ビットの 10 進コードでコード化され、定性的 (英数字) データは 6 ビットの英数字コードでコード化されます。内部
命令コード
とは、命令がストレート バイナリ コードでコード化されていることを意味します。
内部情報長については、情報量子は「
カテナ
」と呼ばれ、6 桁の 10 進数または 4 つの英数字を表す 24 ビットで構成されています。この量子には、整数の 10 進数または英数字を表すために 4 ビットと 6 ビットの倍数が含まれている必要があります。24 ビットは、並列読み出しコア メモリからの転送フローが低すぎる最小 12 ビットと、情報量子が大きすぎると判断される 36 ビット以上との間の適切な妥協点であることがわかりました。カテナは、可変ワード長マシンの
文字
と同等であると考えられますが、複数の文字を含む可能性があるため、そのように呼ぶことはできません。メイン メモリとの間で直列に転送されます。
「量子」をワードと呼んだり、文字のセットを文字と呼んだりしたくないため (ワードはワードであり、量子は別のものです)、新しいワードが作成され、「カテナ」と呼ばれました。これは英語の単語で、
ウェブスター辞典
にはありますが、フランス語には存在しません。ウェブスター辞典の catena の定義は、「連結された連続」です。したがって、24 ビットの情報項目です。これ以降は catena という単語を使用します。
したがって、内部コードは定義されています。では、外部データ コードとは何でしょうか。これらは、主に関連する情報処理デバイスに依存します。Gamma
60
は、バイナリ コード構造に関連する情報を処理するように設計されています。したがって、80 列のパンチ カードは 960 ビットの情報項目と見なされます。12 行に 80 列を掛けると、960 回のパンチが可能になります。これは、メイン メモリの 960 個の磁気コアに正確なイメージとして保存され、2 列のカードが 1 つの catena を占めます。[...]
- ^ Blaauw, Gerrit Anne ; Brooks, Jr., Frederick Phillips ; Buchholz, Werner (1962). "4: Natural Data Units" (PDF) . In Buchholz, Werner (ed.). Planning a Computer System – Project Stretch . McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA. pp. 39–40. LCCN 61-10466. Archived (PDF) from the original on 2017-04-03 . Retrieved 2017-04-03 . [...] ここで、
ビット
に加えて
、マシン設計によって課せられる構造を説明するために使用する用語を以下に挙げます。
バイトは、
文字をエンコードするために使用されるビットのグループ、または入出力ユニット間で並行して送信されるビットの数を示します。ここで
文字
以外の用語
が使用されているのは、特定の文字が異なるアプリケーションで複数のコードによって表される場合があり、異なるコードでは異なる数のビット (つまり、異なるバイト サイズ) が使用される場合があるためです。入出力伝送では、ビットのグループ化は完全に任意で、実際の文字とは関係がありません。(この用語は bite から造られたものです
が、誤って bit に変わるのを避けるために綴りが変えられています。) ワードは、
1
回
の
メモリ
サイクル
でメモリからまたはメモリに並列に送信されるデータ ビットの数で構成されます。したがって、
ワード サイズは
メモリの構造的プロパティとして定義されます。(
この目的のために、
catena
という用語はBull
GAMMA 60
コンピュータの設計者によって造られました。)
ブロックは、
単一の入出力命令に応答して入出力ユニットにまたは入出力ユニットから送信されるワードの数を指します。ブロック サイズは入出力ユニットの構造的プロパティです。設計によって固定されている場合もあれば、プログラムによって変更される場合もあります。[...]
- ^ 「フォーマット」(PDF) . リファレンスマニュアル 7030 データ処理システム(PDF) . IBM. 1961 年 8 月. pp. 50–57 . 2021 年 12 月 15 日閲覧。
- ^ Clippinger, Richard F. [ドイツ語] (1948-09-29). 「ENIAC (Electronic Numerical Integrator and Computer) に適用された論理コーディングシステム」。アバディーン試験場、メリーランド州、米国:弾道研究所。報告書番号 673; 兵器省研究開発部門プロジェクト番号 TB3-0007。2017-04-05に閲覧。
- ^ Clippinger, Richard F. [ドイツ語] (1948-09-29). 「ENIAC に適用された論理コーディングシステム」。アバディーン試験場、メリーランド州、米国:弾道研究研究所。セクション VIII: 改良 ENIAC。2017-04-05に取得。
- ^ 「4. 命令フォーマット」(PDF)。Intel Itanium アーキテクチャ ソフトウェア デベロッパーズ マニュアル。 第 3 巻: Intel Itanium 命令セット リファレンス。 p. 3:293 。 2022 年 4 月 25 日閲覧。 3 つの命令が、
バンドル
と呼ばれる 128 ビット サイズでアラインされたコンテナーにグループ化されます
。各バンドルには、3 つの 41 ビット
命令スロット
と 5 ビットのテンプレート フィールドが含まれます。
- ^ Blaauw, Gerrit Anne ; Brooks, Jr., Frederick Phillips (1997).コンピュータアーキテクチャ: 概念と進化(第 1 版). Addison-Wesley . ISBN 0-201-10557-8。(1213ページ) (注:これは単巻版です。この作品は2巻版でも出版されていました。)
- ^ ラルストン、アンソニー、ライリー、エドウィン D. (1993)。コンピュータサイエンス百科事典(第 3 版)。ヴァン・ノストランド・ラインホールド。ISBN 0-442-27679-6。
