ワードまたはバイトでアドレス指定できますか?正しい用語


9

どうやら、バイトはそれ自体が8ビットであると確立しました(それは正しいですか?)。RAMとNORフラッシュは通常、かなり細かいレベルでアクセスできますが、アドレス可能な最小単位が8ビット、16ビット、またはその他の2ビットの累乗であるかどうかを判断するのはシステムアーキテクチャ次第です。正しい用語は、これをワードアドレス指定可能と呼ぶことでしょうか?または別の言い方をすれば、単語はアドレス可能な最小単位のサイズですか?または、これを説明する他の用語はありますか?

mabye nibble、byte、word、double wordはすべてビット長が可変で、アーキテクチャーによってのみ定義されますか?したがって、1バイトが常に8ビットであるのは単なる偶然でしょうか。たとえば、誰かがいくつかの新しいCPUとメモリタイプを設計し、彼女のバイトを16ビットに定義できますか?

主な質問:最小のアドレス可能なメモリブロックの正確な用語は何ですか?

副問:私が探しているこの単語の反意語は何ですか(たとえば、NANDフラッシュで使用されます)?ページアドレス可能、ブロックアドレス可能?どちらも正しいですか、それとも不正確ですか?

回答:


9

コンピュータアーキテクチャの観点から、そして特に長い間進化してきた関連アーキテクチャのファミリが存在する場合、またはマーケティング部門が通常の用語を別の用語で使用する必要があると判断した場合、用語が異なる場合があることに注意してください。方法(より大きな数を使用して製品をよりよく理解するか、単純な数を使用して関連する製品を区別する)。

ワードは、通常、整数演算のために使用されるサイズ(しばしば整数の大きさや汎用レジスタ、すなわちしないアドレスまたはデータ、内部または外部バス、ないアドレスレジスタではなく、インデックスレジスタとして表現)を有しています。一般的な問題は、アーキテクチャが以前のアーキテクチャの進化である場合、単語の初期サイズを維持することがよくあり、1つは、アーキテクチャを見て、単語を「ダブルワード」または「クワッドワード」に使用することです。隔離。歴史的に、言葉は常に2の累乗であるとは限りませんでした(私はサイズを知っています:12、16、18、24、32、36、60、64、そして私の知識は網羅的ではないと思います)。

ワードアドレス指定可能とは、メモリがワードの配列と見なされることを意味します。したがって、個々のアドレスを持つ小さなユニットはありません。

バイトは様々な定義があります。この用語は、マルチバイトエンコーディングが存在しなかったときに、文字エンコーディングで使用される単位を意味するために導入されました。これは、ワードアドレス指定ができない(1ビットではない限り)マシンの最小アドレス指定単位を意味するためによく使用されます。これらの2つの定義が異なるサイズを与えたことはないと思います。(6または8ビットとは異なるサイズ)。ワードアドレス指定可能なマシンの場合、これは、マシンがサポートしているワードよりも小さいユニットを意味します(たとえば、PDP-10-36ビットワードアドレス指定可能なコンピューター-は、1から35までの任意のサイズを操作できるバイト命令を持っていました。 36ビット)。最近では、多くの場合8ビットです。多くの場合、それらの定義のいくつかは実質的に同等です。

バイトアドレス指定可能は、メモリが上記のいずれかの意味でバイトの配列と見なされるマシンを特徴付けます。

AFAIK ニブルは4ビットの数量にのみ使用されています。

たとえば、誰かがいくつかの新しいCPUとメモリタイプを設計し、彼女のバイトを16ビットに定義できますか?

はい。ただし、CAの使用を維持し、バイトよりも小さいものにバイトを使用する場合、そうすることが意味があるかどうかはわかりません。ワードよりも小さいものをサポートしていない、ワードアドレス指定可能な16ビットプロセッサを使用することは、特別な目的のプロセッサに適しています。

第二に、私が探しているこの単語の反意語は何ですか?ページアドレス可能、ブロックアドレス可能?

ビットアドレス指定可能、バイトアドレス指定可能、およびワードアドレス指定可能であることが、私が使用してきた唯一の用語です。建築レベルで単語よりも大きいユニットのみを扱うことはあまり意味がありません。ワードアドレス指定は現在、DSPなどの特殊目的のプロセッサにのみ使用されています。ビットアドレス指定が、IBM Stretch以外の特別な目的以外には使用されていないと思います。

新しい主な質問について

最小のアドレス可能なメモリブロックの正確な用語は何ですか?

私はコンピューターアーキテクチャーで使用されているものは何もないことを知っていますバイトはアドレス指定可能なマシンでより小さなものに使用されています)が、Cがbyteに使用する定義です。


精巧な答えをありがとう。私の質問をもう一度読んだとき、私は少しあいまいであることに気付いたので、まだ答えに追加できる明確な答えを探しています。アドレス可能な最小のメモリブロックの正確な用語は何ですか?または何もありませんか?さらに、あなたが引用した文章を変更しました。本当にありがとう。
Franz Kafka、

1
いくつかのマイクロコントローラのISAのビットバンディング領域がありますビットアドレッシングとしてカウントされます。アドレス空間の一部は、ワードアドレス(少なくともARM Cortex-Mでは)をビットアドレスに変換します。明らかに、これはアドレス空間全体のごく一部のビットアドレス指定のみをサポートします(Cortex-M3の4GiBのうち2MiBのみ)。また、命令セットのアドレス指定は、ハードウェアアドレス指定とは異なる(例えば、NANDフラッシュは、ページアドレス指定可能であり、DRAMは多くの場合、キャッシュブロックの粒度でアドレス指定可能であり、L1キャッシュは、典型的には最大負荷サイズのアドレス可能である[小さいとは、ECCは、RMWが必要書き込む])
ポールA.クレイトン

@ PaulA.Clayton私はビットバンディングという用語を知りませんでしたが、それを提供する8051も知っていました。PDP-10をバイトアドレス指定可能と見なすのと同じくらいビットアドレス指定可能として提供するISAは考慮しません。通常のデータパスとは明確に区別されているようです。
AProgrammer 2014年

@AProgrammer ISAのアドレス指定可能性をどのように定義するかわかりません。単一の命令でサポートされる外部アドレッシングの最小単位に従ってこれを定義すると、「通常のアドレス/ポインター」のアドレス可能度の単位に従って定義するのとは異なる答えが得られます(ビットバンディングとアドレス/ポインターとファインダーを除外します) -grained-offsetメカニズム)。後者(ユーザーが選択したもの)は、一部のコンテキストではより自然に見えますが、前者は他のコンテキストでは意味があるかもしれません。原子性(書き込み割り込みまたはwrtキャッシュコヒーレンス)も考慮される場合があります(命令が非原子的である場合があります)。
Paul A. Clayton、

1
@ PaulA.Clayton、私はフィールドで確立された慣習に固執しようと努力しましたが、それは中間州を愛するフィールドであり、私はAndy Glewの才能も文化も網羅的でありながら理解できる説明を与えることができません。
AProgrammer 2014年

1

バローズB1700はビットアドレス指定が可能でした(実際のアドレスは、任意の数のビットを前方または後方に読み取ることができるビット間のスペースを指していました)。(つまり、失敗したのはIBMのStretchだけではありませんでした。)

B1700は、最も柔軟なマシンになるように設計されています。アプリケーションはビットレベルで作成するためのものではなく、さまざまなアプリケーションスタイル用に構築されたさまざまな環境です。これらの環境は、仮想マシンエンジンを提供するマイクロコードでプログラムされています。各言語(システムのSDL for OS、COBOL for business、FORTRAN for COBOL)ランタイムは、個別のマイクロコード環境として作成されました。したがって、アーキテクチャは将来のアプリケーションスタイルに合わせて調整できます。

デザイナーの一人であるウェイン・ウィルナーは、当時の他のマシンがプログラマーを固定サイズのバイトとワードのプロクルステスのベッドに置くことを強いたと主張しました。実際、各ランタイム環境に必要なのは、アプリケーションに適したデータ構造でした。残念ながら、現在のほとんどのマシンアーキテクチャはまだプロクルステア語です(したがって、問題指向の構造をサポートするのではなく、このマシン構造を公開するCなどの言語でプログラムされています)。

この魅力的なマシンとその哲学に関する詳細は、次のサイトで入手できます。

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.590.2624&rep=rep1&type=pdf

さらに詳しく:

http://ianjoyner.name/Files/Wilner.pdf

では、なぜB1700は製造されなくなったのですか?

バロウズには、大規模システムB5000-B7000(ALGOLアーキテクチャー)、中規模システムB2000-B4000(COBOLアーキテクチャー)、および小規模システムB1000(なんでも好きなアーキテクチャー)の3つの主要なコンピューター範囲がありました。

ALGOLスタックマシンを提供するために安価なプロセッサでマイクロコード化されたB5900まで、大規模なシステムは本当に高価でした。B5900の設計者であるJack Allweisは、このように大規模なシステムアーキテクチャは小規模なコンピューターに縮小されると指摘しましたが、B1700は安価に設計されており、拡大されませんでした。

したがって、B1700からB1900は、当時は非常に成功していましたが、商業上の理由で亡くなりました。

バローズの大規模システムは、Unisys ClearPath MCPとして引き続き利用でき、PC上でエミュレーションとして実行することもできます。

別の脚注として、B1700のIPCは異なる仮想マシン間の苦痛でしたが、非常に安全です(今日のマイクロカーネルのように)。大規模なシステムはすべて、データを安全な方法で共有できる同じ環境でプロセスを実行しましたが、IPCは直接的なものでした。これは、マイクロカーネルアーキテクチャ(Mach)と非カーネル(Linux)の間で多少異なります。ただし、B5000は非常に安全なマシンですが、パフォーマンスも良好です。

現在、セキュリティは業界で最大の問題であり、実際にこれらのマシンを復活させて研究し、今後の方向性を示す必要があります。


1

主な質問:最小のアドレス可能なメモリブロックの正確な用語は何ですか?

別の方法でそれを扱うために別の答えを追加します。電子ハードウェアでは、これをビット(2進数)と呼びます。これは、任意の2つの値を表すことができるエンティティです。私たちは通常0と1の観点から考えますが、3または4、365または266、-3または-4、さらには25または37の場合もあります。

これらの値を表すために任意の信号システムを使用できます-フラグアップ、フラグダウン、アイオープン、アイクローズ、+ 5v、-5v。それは重要ではありません。

重要なことは、哲学的に私たちは最小の区別できる量の情報を表しているということです。これは、オン、オフ、またはtrue、false、またはup、down、または0、1(2つの別個の状態を区別するもの)です。これらの値を上記の信号システムや他の多くの信号システムにマッピングできます。

さて、問題は、どのようにしてこのような少量の情報を個別にテストおよび設定できるかということです。以前の回答で述べたように、B1700はその最小量の情報に直接対処することを選択しました。

ただし、ほとんどのマシンは、より大量の情報のみを扱うことにしました。単一のアドレスを持つ4ビットのグループを考えてみましょう。したがって、ロケーションで1011の値を取得した場合、左から2番目のビットをテストするにはどうすればよいでしょうか。マスクを使用します。1011と0100は2番目のビットだけをテストします。では、2番目のビットを1に設定するにはどうすればよいでしょうか。わずかなCPU演算では、値は15または1111になると言われているため、実際には1ビットしか設定していなくても、4ビット全体がメモリに書き戻されます。

現在、これはほとんどのアプリケーションに役立ちません。ほとんどのアプリケーションは、データ、情報、アップ、ダウン、true、false、open、shutを表します。

私たちは次のようなことを言いたいです:

開いている場合...その他...終了

または、より大きなエンティティに適用する可能性が高くなります。

ドアが開いている場合-おそらく 'door.open' ...そうでなければ... end

「ドアが開いている」は、階層型アドレス指定を示しています。メインシステムのアドレス指定はエンティティドアを提供し、ドアには、オープン(およびその他の属性)へのアクセスを提供する独自のアドレス指定があります。

ほとんどのセットには、3つ以上の可能な値もあります(1つの値を持つセットは変更されないため、表現すら必要ないため、ビットはゼロです)。これらについては、(黄、緑、青、紫のもや、赤)のようなセットを列挙しています。これらはセットとタイプを定義し、必要なビットの正確な数は値の数(log2(値の数))によって与えられます。

したがって、最適なアドレス指定は、アプリケーションで使用されるエンティティのサイズ(おそらく、可変サイズのエンティティであっても)に依存します。しかし、ほとんどのハードウェアでは、そのようなアドレスはハードウェアが定義する固定サイズに変換する必要があります。もちろん、これは時間の面でコストがかかる可能性があります。このようなシステムが上記のようにビットをテストおよび設定するコードを生成するのと同じように(ビットが直接アドレス指定できない場合)、これはプログラマではなく、自動トランスレータ(コンパイラまたはインタプリタ)が行うことでもあります。

ここでの重要なポイントは、電子工学の観点から考えることではありません。電子計算には、他の方法では実行できなかった計算を実行できる魔法はありません。魔法はスピードだけです。そのため、ビット、バイト、ワード、ハードウェアアドレス指定メカニズム(ポインタ)などの低レベルの抽象化は、実際にはそれほど役に立ちません。


-2

私たちのコンピュータシステムは、デフォルトでバイトアドレス指定可能メモリを使用します。その1つのセルは8ビットの情報を指しています。また、セルサイズはプロセッサの長さに依存しません。ワードアドレス指定可能なメモリでは、1つのセルが1つのワード情報を指していますが、ワード長はプロセッサの長さに依存します。ワードアドレス指定可能なメモリを使用すると、あいまいさが生じます。したがって、私たちのコンピュータはデフォルトでバイトアドレス指定可能なメモリを使用します。


サイトへようこそ。しかし、これが質問にどのように答えるかはわかりません。
David Richerby、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.