我需要在C中模拟一个n路缓存。我有固定数量的块,根据用户想要的任何关联性级别,我想根据输入将缓存划分为多个集。例如,如果我总共有16个块,它们想要双向关联性,我想创建8个不同的数组,每个数组有2个元素。这在C中可能吗?或者我需要找到另一种方法来实现它吗?
您正试图操作固定内存,因此最好使用指针。
如果可接受的用户输入是有限的,例如2,4,8和16,则可以用2,4、8和16块来定义4个结构。
typedef struct{
int block;// replace type with appropriate block size
}Block;
typedef struct {
Block b[2];
}TwoWay;
typedef struct {
Block b[4];
}FourWay;
FourWay* p=&memory;
// Set0 - p
// Set1 - p+1
// Set2 - p+2 ...
您可以根据用户输入操作指针数或增量数。
或者,只需使用指针手动跳转到所需的内存位置。编写一个地址解析函数,根据用户输入指向不同的位置。