Ceriumの再設計

Yuhi TOMARI

研究目的

Code/Data Segment Systemの構造

全体図。

Temporary/Persistent Space

全てはDSとして扱われる。CSもDSの一種。

Temporary Space, Persistent Space
  • DSはTemporary SpaceかPersistent Spaceに属する
  • Temporary Spaceはポインタでアクセス。
  • Persistent SpaceはURLでアクセス。つまり、名前を持つ。
    (Persistent Space に書き込む = DBに登録する)
  • Task
  • TaskもDSで、CSとDSの組になっている。
  • Input DS, Output DS
  • Input DSが全て揃った時点で実行される。そろったかどうかはTaskが持つ。
  • DSには持ってるTaskへのポインタが必要(Cerium、Aliceと同じ)
  • 接続って具体的にどうやる?Ceriumで言うcreateTaskに相当する?
  • Persistent DS

    Persitent DSはkey(URL)を持つ。keyを持ってるので、書き込みは

                goto write(ds);
    でよい。DS自体がURLを持っているので、goto write(ds, key);とかしなくて良い。

    ? ds->nextは即座に実行される。ds->nextがなければ、そこで計算は終了。

    読み込みは、

              goto read(ds);
    すれば良いだけだが、ds->nextに次に行う演算が入っている。

    Meta Space, Core Space

    Meta SpeceにはTaskのScheduleを行うScheduler、 DSの管理を行うDS Manager、Taskの生成を行うTaskManager(Ceriumと同等の機能)がある。

    CoreSpaceにはCS間の遷移を行うDispatcher、同期制御を行うsynchronizer、 Memory Spaceの制御を行うSegment Manager(OSやOpenCLにもある)がある。 Segment ManagerはMemory間のコピーも行う

    このDispatcher、Segment Manager辺りを担当することになる?

    Memory Manager

    DataSegmentは2^n allocatorで配分される。それらは

    • Physical Memory
    • Cache Memory
    • Parsistent Memory(Disk or Flash)

    にMappingされる。

    Persistent Space はDSの非破壊なBlanced Binary Treeにより構成される(jungle)

    とりあえず取り掛かれること

    ここらへん?

    これからやること

    CbCの練習がてら、FreeList(memory allocatorの例題)を簡単に書いてみる。

    • mallocで要求されたsizeを8で割れば自分が使用するindexとなる
    • Chunkヘッダー(自分のサイズや前のchunkへのポインタ等を持つ構造体)のリスト
    • CbCである程度の大きさのプログラムってどう書くんだろう…