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);