OS X用GigE Visionカメラドライバ - その21 [OS X用GigE Vision]
抄訳の続き。退屈な話が続く。もういい加減片付けたいけど、まだ半分も来てない。今日はキャッシュの無効化のための具体的なメカニズムについて。
キャッシングの問題に戻ると、Left機能を設定するたびにHeightRegの値を読みにいこうとは思わないだろうし、TopMaxノードも同じである。これはもちろんGenApi自身が新しい値を書き込むときにだけHeightRegレジスタが変化することを知っていればこの動作は不要である。このような場合にはHeightRegとTopMaxの値をキャッシュできる。
もしユーザがHeightRegに新しい値を書いたら、HeightRegキャッシュはすぐにアップデートされてTopMaxのキャッシュは無効化される必要がある。つぎに誰かがLeftノードをアクセスしたときTopMaxが読み込まれて、新しいキャッシュエントリが作られる。
ルールとして、あるノードのすべてのクライアントはその内容が変わったときにその情報を受けてキャッシュをの値を無効化する。
普通はカメラ設定ファイルのノード間のリンクは必要とされる情報をすべて保持して、ユーザが心配しなくてもいいようにキャッシュを扱うようにする。しかし、ノードに直接記述された依存関係以上の情報をカメラが保持するような場合もある。
あるカメラはビニング(Binning)という機能を持っている。ビニングがオンになったとき、隣り合うピクセルの電荷は一緒にされて、低い解像度にはなるが大きな電荷容量を得ることができる。VGA解像度のイメージャだとすると典型的な設計は次のようになる。
カメラがレジスタを通して現在の論理的イメージャサイズに関する情報を提供すると仮定する。図-11に示すようにこのために二つの新しいノードImagerHeightRegとImageerWidthRegを導入する。TopMaxのためのXMLコードは次のようになる。
キャッシングの問題に戻ると、Left機能を設定するたびにHeightRegの値を読みにいこうとは思わないだろうし、TopMaxノードも同じである。これはもちろんGenApi自身が新しい値を書き込むときにだけHeightRegレジスタが変化することを知っていればこの動作は不要である。このような場合にはHeightRegとTopMaxの値をキャッシュできる。
もしユーザがHeightRegに新しい値を書いたら、HeightRegキャッシュはすぐにアップデートされてTopMaxのキャッシュは無効化される必要がある。つぎに誰かがLeftノードをアクセスしたときTopMaxが読み込まれて、新しいキャッシュエントリが作られる。
ルールとして、あるノードのすべてのクライアントはその内容が変わったときにその情報を受けてキャッシュをの値を無効化する。
普通はカメラ設定ファイルのノード間のリンクは必要とされる情報をすべて保持して、ユーザが心配しなくてもいいようにキャッシュを扱うようにする。しかし、ノードに直接記述された依存関係以上の情報をカメラが保持するような場合もある。
あるカメラはビニング(Binning)という機能を持っている。ビニングがオンになったとき、隣り合うピクセルの電荷は一緒にされて、低い解像度にはなるが大きな電荷容量を得ることができる。VGA解像度のイメージャだとすると典型的な設計は次のようになる。
- ビニングなしNo Binning(640x480)
- 横方向ビニングHorizontal Binning(320x480)
- 縦方向ビニングVertical Binning(640x240)
- 全ビニングFull Binning(320x240)
カメラがレジスタを通して現在の論理的イメージャサイズに関する情報を提供すると仮定する。図-11に示すようにこのために二つの新しいノードImagerHeightRegとImageerWidthRegを導入する。TopMaxのためのXMLコードは次のようになる。
<IntSwissKnife Name="TopMax"> <pVariable Name="CURHEIGHT">HeightReg</pVariable> <pVariable Name="IMAGERHEIGHT">ImagerHeightReg</pVariable> <Formula>IMAGERHEIGHT-CURHEIGHT</Formula> </IntSwissKnife>ユーザがビニングを変えたときにImagerHeightRegの値は変わることになる。しかしここでこの二つのノードの間ではデータのやり取りはない。BinningRegノードの内容が変化したときにImagerHeightRegのキャッシュは無効化されることを確実にするには、<pInvalidator>リンクを二つの間に設けなければならない。このリンクのただひとつの目的は、二つの機能の間の隠された依存関係を明示的にすることと、キャッシュのコヒーレンシを確保することである。
2015-01-27 20:46
nice!(0)
コメント(1)
トラックバック(0)
沒有醫生的處方
fast cialis online http://kawanboni.com/ Tadalafil 5mg
by Cialis alternative (2018-04-14 11:29)