如何解决不同方式之间的缓存块交换
我正在尝试在缓存中实现一种功能,该功能将交换同一组中的块,但方式不同。例如,存储在方式 0 中的数据将被移动到方式 1,而存储在方式 1 中的数据将被移动到方式 0。在此交换期间不应从缓存中逐出该块。
缓存模型是经典的集合关联缓存(不是 Ruby)。
我注意到 cache_blk.hh
会告诉缓存块中存储了什么样的数据,所以我在 base_tag 中写了一些如下内容来执行内容交换。
blkA->tag=blkB->tag;
blkA->srcMasterId=blkB->srcMasterId
blkA->task_id=blkB->task_id
blkA->tickInserted=blkB->tickInserted
blkA->refCount=blkB->refCount
blkA->whenReady=blkB->whenReady
blkA->status=blkB->status
for (int i=0;i<blk_size;i++)
{
*(blkA->data + i)=*(blkB->data + i);
}
此修改导致数据损坏,因此无法正常工作。有人可以就此给我一些建议吗?
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。