汎用Cacheシステムの開発

汎用Cacheシステムを作ってみます。Cash(現金)システムではないのが残念かもしれませんが、ご了承を。Cacheはハードウェアでもしばしば取り入れられている機構で、要するにデータの入出力を効率的に行い、高速化を行うためのものです。例えばCPUとRAMの関係では、CPUの方が圧倒的に高速であるため、CPUとRAMを直接バスで繋いでしまうと、システムの速度がRAMのI/Oの速度に制限されてしまい、CPUは殆どの時間をRAM待ちに費やしてしまいます。このために間に高速なキャッシュメモリを置くことで、CPUを効率的に動かせるようになります。

Cacheシステムを取り入れることで効率的になるのは、2つの局所性が仮定される場合です。時間的局所性と空間的局所性と言われます。時間的局所性とは、ある領域へのアクセスがあった直後には、その領域に再びアクセスされる可能性が高い、というものです。空間的局所性とは、ある領域へのアクセスがあった場合、その周辺にアクセスされる可能性が高いというものです。システムの動作をある短い時間で切り取ってくると、同じ領域やその周辺に集中的にアクセスされる可能性が高い場合には、Cacheシステムによって動作の高速化をさせることが期待できます。逆にばらばらの領域に常に満遍なくアクセスされるようなシステムの場合、キャッシュによる高速化はあまり期待できません。

ここではJava言語を使って汎用のCacheシステムを開発してみます。Javaの場合、すべてのインスタンスはjava.lang.Objectを継承しているので、比較的容易に一般化できそうです。

Contents


システム開発室  PoisonSoft