Mercurial > hg > Members > kono > Cerium
changeset 363:a8fcb4431c76
See Changelog
author | tkaito@localhost.localdomain |
---|---|
date | Fri, 24 Jul 2009 17:08:08 +0900 |
parents | a64a6c34868f |
children | 87462f8d3761 |
files | TaskManager/ChangeLog TaskManager/Test/test_render/Tapestry.h include/TaskManager/Task.h |
diffstat | 3 files changed, 44 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/TaskManager/ChangeLog Fri Jul 17 23:02:07 2009 +0900 +++ b/TaskManager/ChangeLog Fri Jul 24 17:08:08 2009 +0900 @@ -1,10 +1,46 @@ +2009-07-24 Kaito TAGANO <tkaito@cr.ie.u-ryukyu.ac.jp> + 長さ別の freeList と単一の HashTable で管理する + TileList を廃止 + class MemorySegment { + MemorySegment *next; + MemorySegment *prev; + uint64 size; + uint64 address; + uint64 dummy; + // uint32 data[0]; + } + + class MemList { + MemorySegment* first; + MemorySegment* last; + + MemList* createMemList(uint32 size, uint32 count); + void addFirst(MemorySegment* e); + void addLast(MemorySegment* e); + MemorySegment* getFirst(); + MemorySegment* getLast(); + boolean remove(MemorySegment* e); + void moveToFirst(MemorySegment* e); // or use(); + } + + サイズ毎に freelist と activelist を持って、これを malloc free + として使う。 + これのテストルーチンを書き終わったら、Tapestry をこれで書き直す + LRU は使うたびに以下を呼び出す + + void use(MemorySegment* e, MemList* active) { + active.remove(e); + active.addFirst(e); + } + + 2009-07-15 Yusuke KOBAYASHI <koba@cr.ie.u-ryukyu.ac.jp> PPU からMainMemory にResource を Access する API 長さ別の freeList と単一の HashTable で管理する set_rgb に相当。 - uint32 segment_id = smanager->get_segment(uint32 addr, uint32 size) + uint32 segment_id = smanager->get_segment(uint64 addr, uint64 size) id は hash値に相当。 smanager->put_segment(wait_id);
--- a/TaskManager/Test/test_render/Tapestry.h Fri Jul 17 23:02:07 2009 +0900 +++ b/TaskManager/Test/test_render/Tapestry.h Fri Jul 24 17:08:08 2009 +0900 @@ -84,7 +84,9 @@ /** * TileList 中の Tile の追い出しは、現在 FIFO で実装している - */ + * これは汎用のサイズ別 freelist に置き換える + * freelist は double linked list で、LRU をサポートする +*/ class TileList { public: int curIndex;
--- a/include/TaskManager/Task.h Fri Jul 17 23:02:07 2009 +0900 +++ b/include/TaskManager/Task.h Fri Jul 24 17:08:08 2009 +0900 @@ -13,16 +13,16 @@ BASE_NEW_DELETE(Task); int command; // 4 byte - ListDataPtr inData; // 4 byte - ListDataPtr outData; // 4 byte + ListDataPtr inData; // 4 byte 64bit であるべき + ListDataPtr outData; // 4 byte 64bit であるべき uint32 self; // 4 byte int param_size; // 4 byte int param[MAX_PARAMS]; // 4*MAX_PARAMS byte public: // functions - int add_inData_t(unsigned int addr, int size); - int add_outData_t(unsigned int addr, int size); + int add_inData_t(unsigned int addr, int size); // unsigned int ではなく 64bit + int add_outData_t(unsigned int addr, int size); // unsigned int ではなく 64bit int add_data(ListDataPtr list, unsigned int addr, int size); int add_param(int param);