§ Cache oblivious B trees


Central idea: assume a memory model where computation is free, only cost is pulling data from cache into memory. Cache has total size MM, can hold blocks of size BB. So it can hold M/BM/B blocks of main memory. Memory memory has infinite size. Cost is number of transfers.
We assume that the algorithm does not know M or B . We assume that the cache replacement strategy is optimal (kick out block that is going to be used farthest in the future). This is an OK assumption to make since an LRU cache using twice the memory of a "oracular" cache performs equally well (citation?)
These data structures are cool since they essentially "Adapt" to varying cache hierarchies and even multiple level cache hierarchies.
We study how to build cache-oblivious B-trees.

§ Building optimal cache-oblivious B trees to solve search



§ Analysis Claim: we need to pull O(logBN)O(\log_B N) blocks for any BB for any search query


NN is the number of nodes in the BST. Note that in the analysis, we know what B is , even though the algorithm does not .

1 2 3 4 5 6 7 8 <- index
|     |       | <- boundary
|-xxxxxxx-----| <-  data


§ Black box: ordered file maintainince


We need a black box: ordered file maintainance (linked list for arrays)

§ Next: dynamic BST (inserts and deletes): layout


we take a VEB static tree on top of an ordered file. Tree is a segtree that has max of nodes. Leaves are the members of the ordered file.

§ Updates



§ Updates: analysis.



§ References