質問

データメモリを変更することなく、単一サイクルのデータパスに負荷バイトを実装について尋ね、その溶液は以下のものでしたされています。

この問題が発生しました

altテキストhttp://img214.imageshack.us/img214/7107/99897101。 JPG

  

これは実際には非常に現実的です   質問;ほとんどのメモリシステムは、   完全に単語ベース、および個々の   バイトは通常のみを取り扱っています   プロセッサの内部。あなたが表示されたら   多くのコンピュータ上の「バスエラー」、この   多くの場合、プロセッサが試みたことを意味   したメモリアドレスにアクセスするには   ない適切ワード境界で整列し、   メモリシステムは、例外を上げました。   とにかく、バイトアドレスの可能性があるため、   4の倍数ではない、我々は通過できません   それらを直接メモリへ。しかし、我々   それでもので、任意のバイトで取得することができます   各バイトは、いくつかの中に見つけることができます   単語、およびすべてのワードアドレスです   最初の我々だから、4の倍数   やる必ず私たちが権利を取得することです   語。私たちは、高い30ビットを取る場合   アドレス(すなわち、ALUresult [31-2])   そして2つの0ビットと組み合わせます   ローエンド(これは何を「左です   シフト2” 単位は本当にやっている)、我々   言葉のバイトアドレスを持っています   希望のバイトが含まれています。これは   ちょうどバイト自身のアドレス、丸みを帯びました   4.この変更の倍数にダウン   手段LWは今もラウンドすること   アドレスは4の倍数にダウンしたが、   その非整列アドレスからのOK   これでとにかくLWのために動作しないでしょう   メモリユニット。 OK、今はデータを取得します   バックメモリからの言葉。私たちはどのように入手できますか   我々はそれから出たいバイト?まあ、   バイトのバイト・オフセットことに注意してください   ワード内だけで与えられます   バイトのの下位2ビット   住所。そこで、我々は、単にそれらを使用する2   適切なバイトを選択するためのビット   マルチプレクサを使用した単語のうち。注意   ビッグエンディアンのバイトの番号の使用、   MIPSに適しています。次に、我々   有する32バイトをゼロ拡張   ビット(すなわち、わずか24と組み合わせます   その高い端でゼロ)、なぜなら   問題は、そうすることを指定します。実際には、   これは、のわずかな間違いでした   質問:実際には、LBU   命令バイトをゼロ拡張しますが、   ポンド、それを符号拡張します。しかたがない。   最後に、我々は拡張する必要が   1を受け入れるためにマルチプレクサMemtoReg制御   新しい入力:のためのゼロ拡張バイト   ポンドのケース。 MemtoReg制御   信号は2ビットに拡大されなければなりません。ザ・   00元の0と1のケース変化   および01は、それぞれ、我々は新しいを追加します   ケース10のみの場合に使用されています   ポンドのます。

私はかなり実際に、これは特に2によるALU結果はバイトアドレスを与えるだろう左シフトについて、説明を読んだ後も、どのように機能するかについて理解していない...どのようにこれは可能です??私は半分のワードをロードしたいそうならば、私は1つの左シフトを行うだろうと私は半分のワードのアドレスを得るでしょう?データメモリを変更することで、負荷バイト、負荷のハーフワードを行うには良い方法何でしょうか? (私たちは、データメモリを変更することができないことプットの制約上記の質問)

役に立ちましたか?

解決

原作者は、単にメモリから読み出される32ビットのデータにバイト・マルチプレクサを追加しているように見えます。このメモリは、完全な32ビット自然に整列負荷(LW命令)を可能にし、追加のバイトマルチプレクサ及びゼロ拡張は、(LBU命令)もロードバイト命令を可能にする。

ALU結果の左シフトはワードアドレスを生成する、のないのバイトアドレス、および信号ルーティングにおける2によって暗黙の右シフトを占めています。最終結果は、単にメモリに送られる前に(ゼロ)マスクさALU結果の下位2ビットです。 ALU値の2つのLSBは、ワードメモリは、任意のバイトを読み取ることができるように、ダウンストリームバイトマルチプレクサにメモリの供給されます。

ロードハーフワード(16ビット)のために示される論理には直接サポートされず、単にバイト、完全な32ビットワード。あなたは、しかし、簡単に同様のアプローチを用いて支持言葉の代わりに、バイト(あるいはその両方)にロジックをバイトアドレッシングを変更することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top