1 / 24 · 概念
式をデータパスの契約に変える
算術とともにビット幅、受け入れイベント、有効な結果を定義します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
回路が保証する内容を定義する
データパスは値を保持し、選択し、計算します。コントローラは、どの値をいつ移動するかを決めます。この2つは別々の設計責任ですが、独立して実行されるソフトウェアタスクではありません。クロックエッジでは制御信号がレジスタの更新を決め、そのレジスタ値が次のサイクル中の組み合わせ論理への入力になります。このタイミングの契約を欠いた式は、別のトランザクションに対して正しい数値を生成してしまう可能性があります。
小さな計算器を考えます。符号なし8ビットのオペランドaとb、および2ビットの演算指定を受け取ります。演算0は加算、1は減算、2はAND、3はXORです。算術演算では下位8ビットを返し、加算キャリーまたは減算ボローを別に返します。後の課題ではタグも運びます。タグは計算自体を変えませんが、どの入力から結果が生じたかを識別するため、結果と一緒に移動する必要があります。
| 契約の項目 | このコースでの選択 |
|---|---|
| オペランドの意味 | 0から255までの符号なし整数 |
| ビット幅の縮小 | 下位8ビット、256を法とする剰余 |
| 境界の情報 | ADDキャリーとSUBボロー |
| 受け入れ | validとreadyがともにアサートされた立ち上がりエッジ |
| 順序 | 結果は受け入れた入力の順序で出力 |
| リセット | 未完了の処理を破棄し、valid状態をクリア |
a=250、b=10、ADDの場合、数学的な和は260です。出力は4でcarry=1になります。符号付きとしての解釈や飽和処理なら、異なる契約になります。偶発的な言語の型変換に方針を決めさせてはいけません。折り返す算術はアドレスカウンタに適していることがありますが、明るさの計算では飽和が必要な場合があります。
- 受け入れ: オペランド、演算、タグを取り込む
- 計算: 指定した数値の契約を適用する
- 引き渡し: 結果と対応するタグを転送する
無効なALU出力も電気的には変化する場合がありますが、トランザクションを表すわけではありません。有効な結果でもタグが古ければ誤りです。データ、タグ、validを一緒に確認してください。各出力について、ビットの意味と、消費側がいつそれを信頼できるかの両方を説明できるようにします。ここでのサイクルモデルは機能と順序を検査するもので、物理的なゲート遅延は検査しません。レイテンシやスループットの目標に合わせてレジスタの境界を選ぶ前に、契約を参照モデルに変換します。
自分で考えてみましょう
a=250、b=10の8ビットADDの結果とキャリーを記録してください。値が4になる理由と、タグを結果とともに保持する必要がある理由を説明してください。
解説を見る
260=1×256+4なので、data=4、carry=1です。下位8ビットという契約では、和を256を法として縮小します。結果と入力の対応を保つには、データと同じ受け入れ、ストール、引き渡しの条件でタグを保持します。