質問

取っている ピーター・ノーヴィグのアドバイス, 、私は質問について熟考しています:

キャッシュミスの有無にかかわらず、メモリから1つの単語を取得するのにどれくらい時間がかかりますか?

(標準のハードウェアとアーキテクチャを仮定します。計算を簡素化するには、1GHzクロックを想定しています)

役に立ちましたか?

解決

Norvigのようです これに答えます:

execute typical instruction         1/1,000,000,000 sec = 1 nanosec
fetch from L1 cache memory          0.5 nanosec
branch misprediction                5 nanosec
fetch from L2 cache memory          7 nanosec
Mutex lock/unlock                   25 nanosec
fetch from main memory              100 nanosec
send 2K bytes over 1Gbps network    20,000 nanosec
read 1MB sequentially from memory   250,000 nanosec
fetch from new disk location (seek) 8,000,000 nanosec
read 1MB sequentially from disk     20,000,000 nanosec
send packet US to Europe and back   150 milliseconds = 150,000,000 nanosec 

「典型的な命令を実行する」= 1 nsと書かれている部分は、1 GHz CPUを意味します(もちろん、効率的なパイプラインを仮定)。

彼がこの情報をどこで受け取っているのかわかりませんが、ピーター・ノーヴィグが信頼できると信じています:-)

他のヒント

公正な要約 ここ, 、ある程度の不正確さで。書かれている場合(2年以上前)、当時のミッドレンジPCの場合、それは次のように推定されました:メモリアクセス、60ns; L1キャッシュ、10ns; L2キャッシュ、20-30NS(L3キャッシュアクセス時間の推定値はありません)。それはすべて異なります 多く もちろん、競合パターンとアクセスパターンに応じて(キャッシュ層は通常、メモリの遅いメモリから「線で」充填されるため、アドレスXにアクセスすると、アドレスX+1は、キャッシュラインの詰め物が開始されたため、2番目のアクセスが少し高速になる場合があります。最初のアクセス)。

そして、もちろん、ハイエンドのよく調整されたサーバーははるかに高速になります(メモリアクセスレイテンシのこのようなマシン間の相対的な違いは、通常、「生」CPU速度のものよりもはるかに大きくなります)。

があります 素敵な視覚化 github.orgで公開されたその表のデータのうち、それらはまた、そこの時間値の「人間の規模」の再解釈も持っています。

enter image description here

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