@@ -90,7 +90,7 @@ class HeatAwareMigrationPolicy : public MigrationPolicy {
9090};
9191
9292class HugePagePolicy : public PagingPolicy {
93- private :
93+ public :
9494 // 页表遍历延迟基准值(纳秒)
9595 uint64_t ptw_base_latency_local; // 本地内存页表遍历基准延迟
9696 uint64_t ptw_base_latency_remote; // 远程内存页表遍历基准延迟
@@ -145,7 +145,6 @@ class HugePagePolicy : public PagingPolicy {
145145 TLBCache tlb_2m; // 2MB页面的TLB
146146 TLBCache tlb_1g; // 1GB页面的TLB
147147 CXLHugePageEvent stats; // 统计信息
148- public:
149148 explicit HugePagePolicy (uint64_t local_latency = 100 , uint64_t remote_latency = 300 )
150149 : ptw_base_latency_local(local_latency), ptw_base_latency_remote(remote_latency),
151150 tlb_4k(64 ), // 4KB页面TLB容量(较大)
@@ -331,7 +330,7 @@ class HugePagePolicy : public PagingPolicy {
331330};
332331
333332class PageTableAwarePolicy : public PagingPolicy {
334- private :
333+ public :
335334 // 页表缓存,用于追踪已经转换过的虚拟地址
336335 std::unordered_map<uint64_t , uint64_t > va_pa_cache;
337336 // 页表访问延迟(纳秒)
@@ -344,7 +343,6 @@ class PageTableAwarePolicy : public PagingPolicy {
344343 // 清理间隔
345344 uint64_t cleanup_interval;
346345
347- public:
348346 explicit PageTableAwarePolicy (uint64_t local_latency = 100 , uint64_t remote_latency = 300 ,
349347 uint64_t cleanup_interval = 10000000 )
350348 : ptw_latency_local(local_latency), ptw_latency_remote(remote_latency), last_cleanup_timestamp(0 ),
@@ -425,6 +423,19 @@ class FIFOPolicy : public CachingPolicy {
425423public:
426424 FIFOPolicy () = default ;
427425 int compute_once (CXLController *) override ;
426+ std::vector<uint64_t > get_invalidation_list (CXLController *controller) override {
427+ std::vector<uint64_t > to_invalidate;
428+ for (const auto &[timestamp, info] : controller->occupation ) {
429+ to_invalidate.push_back (info.address );
430+ }
431+ return to_invalidate;
432+ };
433+ bool should_cache (uint64_t addr, uint64_t timestamp) override {
434+ return false ;
435+ };
436+ bool should_invalidate (uint64_t addr, uint64_t timestamp) override {
437+ return false ;
438+ };
428439};
429440
430441// 基于访问频率的后向失效策略
@@ -547,12 +558,11 @@ class FrequencyBasedMigrationPolicy : public MigrationPolicy {
547558
548559// 基于负载平衡的迁移策略
549560class LoadBalancingMigrationPolicy : public MigrationPolicy {
550- private :
561+ public :
551562 double imbalance_threshold; // 负载不平衡阈值
552563 uint64_t migration_interval; // 迁移间隔
553564 uint64_t last_migration; // 上次迁移时间
554565
555- public:
556566 LoadBalancingMigrationPolicy (double threshold = 0.2 , uint64_t interval = 5000000 )
557567 : imbalance_threshold(threshold), migration_interval(interval), last_migration(0 ) {}
558568
@@ -706,12 +716,11 @@ class LoadBalancingMigrationPolicy : public MigrationPolicy {
706716
707717// 基于局部性的迁移策略
708718class LocalityBasedMigrationPolicy : public MigrationPolicy {
709- private :
719+ public :
710720 std::unordered_map<uint64_t , std::vector<uint64_t >> page_access_pattern; // 页面访问模式
711721 uint64_t pattern_threshold; // 模式识别阈值
712722 uint64_t page_size; // 页面大小
713723
714- public:
715724 LocalityBasedMigrationPolicy (uint64_t threshold = 5 , uint64_t p_size = 4096 )
716725 : pattern_threshold(threshold), page_size(p_size) {}
717726
@@ -780,10 +789,9 @@ class LocalityBasedMigrationPolicy : public MigrationPolicy {
780789
781790// 基于数据寿命的迁移策略
782791class LifetimeBasedMigrationPolicy : public MigrationPolicy {
783- private :
792+ public :
784793 uint64_t lifetime_threshold; // 数据寿命阈值
785794
786- public:
787795 LifetimeBasedMigrationPolicy (uint64_t threshold = 1000000 ) : lifetime_threshold(threshold) {}
788796
789797 int compute_once (CXLController *controller) override {
@@ -828,10 +836,9 @@ class LifetimeBasedMigrationPolicy : public MigrationPolicy {
828836
829837// 混合多策略迁移
830838class HybridMigrationPolicy : public MigrationPolicy {
831- private :
839+ public :
832840 std::vector<MigrationPolicy *> policies; // 多个迁移策略
833841
834- public:
835842 HybridMigrationPolicy () {}
836843
837844 // 添加策略
0 commit comments