プリフェッチで行こう!!
宴会にて「飲み物が足りなくなりそう」になったとき、いちいち無くなってから頼むのが面倒くさいときに私はいつも「プリフェッチしとこうよ!」といいますが、これがなかなか非エンジニアの人には伝わらなくて毎回説明するハメになりますので、プリフェッチについて簡単に説明します。
プリフェッチとは?
プリフェッチとは、あらかじめ必要そうなデータをメモリからキャッシュに持ってきておくことです。
そうなということはデータが今後すぐに必要かもしれないし、必要じゃ無いかもしれないし、ある種のギャンブルに近い事もあります。必要な時はどういう時かというと、処理が分岐無く続いているときじゃないでしょうか、そして必要じゃ無いと時はどういう時かというと分岐でデータを読む必要が無くなったとき等です。
メモリからキャッシュにデータが来ると言うことは「データがまもなく消費される」位置に来るわけです。
高等テクニック「たこわさプリフェッチ」
たこわさとは「蛸」と「山葵」が混ざっている宴会では欠かせない比較的低料金(私がお酒を飲んでいた20年前くらいは、の話ですが今は蛸が高いと聞いております)のおつまみの一種で、飲み物がすすみます。
しかし、大衆居酒屋等で提供されるたこわさはその量が少なく、5~6人以上で食べ始めるとあっという間におわってしまいます。
そこで出るのが「たこわさプリフェッチ」です。方法は簡単、「たこわさ」が来たときにすぐにそのまま店員さんに「たこわさ」を頼むのです。そうするとこちらでたこわさ(データ)を消費している間に新たなたこわさ(データ)が準備され食べ終わる頃には次のたこわさが店員さんによって運ばれてくるという好循環が生まれます。
つまり、データ(たこわさ)が消費され尽くされる前に次のデータ(たこわさ)がフェッチされるのです。
こうすれば処理(食べること)がストールする事無く進むので処理(飲み)がスムーズにすすみます。
応用テクニック「ビアプリフェッチ」
これに似た方法が「ビアプリフェッチ」です。つまりビールがくると次のビールを頼んでおく。これだけです。
しかしこれには罠があります。それは「グラス交換制」の飲食店の飲み放題などの場合にはこれは適用できません。残念。
皆さんは、積極的にIT用語を生活に取り入れていますか?
皆さんはこのように「プリフェッチ」とか単純に「フェッチ」、「投機的実行」など、日常生活で使って親しみを感じたりしていますでしょうか?
また、エンジニアと非エンジニアが混ざる、例えば同窓会などの場所で「プリフェッチ」を使ったときにきちんと説明できる準備はできていますでしょうか?
エンジニアは、生活もエンジニアリングするのです。
・・・というポエムでした。
おしまい。