To prevent false sharing, I want to align each element of an array to a cache line. So first I need to know the size of a cache line, so I assign each element that amount of bytes. Secondly I want the start of the array to be aligned to a cache line. I am using Linux and 8-core x86 platform...
ジャスティファイ
レジスタの単位はバイトではなくビットです。そのため、この行は残りのコードで間違って使用されています。
レジスタの単位はバイトではなくビットです。そのため、この行は残りのコードで間違って使用されています。
いや、なんか変なこと言ってますね。証明するつもりはない。プロセッサのドキュメントを見てください、ここを読んでくださいhttps://stackoverflow.com/questions/7281699/aligning-to-cache-line-and-knowing-the-cache-line-size/7284876
レジスターは必要ない、全く話にならない。
いや、なんか変なこと言ってますね。証明するつもりはない。プロセッサのドキュメントをご覧ください、こちらをお読みくださいhttps://stackoverflow.com/questions/7281699/aligning-to-cache-line-and-knowing-the-cache-line-size/7284876
レジスターは必要ない、全く話にならない。
うーん...そうか(咳払い)とにかく、キャッシュはモデルによって違うんです。ソフトからその大きさを知る術はない。だから、それを目安にするのは愚かなことなのです。しかし、どのプロセッサも2種類のレジスタを持っており、熟練したプログラマが注目するのはレジスタの大きさである。また、このレジスタ指向も、プログラムとプロセッサの間にコンパイラとオペレーティングシステムが位置するため、必ずしも成功するわけではありません。
また、このラインはレジスターを使用せず、不正に計算されています。
うーん...なるほど。とにかく、キャッシュはプロセッサーによって異なるのです。しかも、そのサイズをソフトから知る術はない。だから、それに誘導されるのは愚かなことなのです。しかし、どのプロセッサも2種類のレジスタを持っており、熟練したプログラマが注目するのはレジスタの大きさである。また、コンパイラやオペレーティングシステムは、プログラムとプロセッサの間に位置するため、レジスタサイズ・ターゲティングでも必ずしも救われるとは限りません。
繰り返しになりますが、物事は進化しており、マルチスレッドにますます重点が置かれるようになってきています。
https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
マルチスレッドにますます重きが置かれるようになり、進化しているのです。
https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_size
そうかもしれませんが、今のところ私を納得させることはできません。教えてくれない、教えてくれる。仕様書をよくお読みください。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
そうかもしれませんが、今のところ私を納得させることはできません。
どのようなシフトを希望されたのかよくわかりませんが、わかりやすく言うと、絶対番地は計算上まったく役に立ちません。メモリの基準点が構造体のアドレスであることを忘れていませんか?そして、構造体メモリブロック内の配列のオフセットを取得したかったのではないでしょうか?そして、構造体のアドレスと配列のヌル要素の差分が取得されるわけです。
バー上のバッファに値がない場合、明示的にバッファに書き込む必要があります。つまり、計算された値がバッファに出力されるべきものであればバッファに書き出し、そうでなければ空の値を書き込むのです。
アルテムさん、ありがとうございます。
どのようなオフセットが欲しかったのかよくわかりませんが、絶対アドレスは計算上まったく役に立たないというバグは簡単に理解できます。 メモリの基準点が構造体アドレスであることを忘れていませんか?また、構造体メモリブロック内の配列のオフセットを取得したい場合もあるのではないでしょうか?そしてそれは、構造体のアドレスと配列の0番地の要素の違いです。
順番に行動する。
1 - 現在のデータ構造で最初のar[]要素のアドレスを取得します。
2. キャッシュラインの先頭からのオフセットを調べる。
3. そこからキャッシュラインの終わりまで何バイトか調べる。
4.キャッシュラインの終わりまで、このスペースに何バイト収まるかを調べる。
パソコンで実行したのでしょうか?スピードに差はありますか?それとも私だけでしょうか?
2. キャッシュラインの開始位置からのオフセットを求める。
どうしてそれでオフセットが分かると思うんだ?
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
バグ、バグ、質問
fxsaber, 2019.07.09 11:13
Data data[]; ArrayResize(data, 32768);
6倍速の減速が起きている!
このブレーキは何のためにあるのですか?