首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在prolog中从直接映射缓存中获取数据

在prolog中从直接映射缓存中获取数据
EN

Stack Overflow用户
提问于 2021-06-04 05:01:24
回答 1查看 136关注 0票数 0

当从高速缓存(高速缓存命中)成功检索数据时,谓词getDataFromCache(StringAddress、高速缓存、数据、HopsNum、directMap、BitsNum)应该成功,并且HopsNum表示从高速缓存访问数据所需的跳数,该跳数可以根据直接映射高速缓存映射技术而有所不同,例如:·StringAddress是表示需要寻址的数据的地址的二进制数的字符串,它是六个二进制位。·缓存是使用前面讨论的表示法的缓存。·数据是发生缓存命中时从缓存中检索到的数据。·HopsNum从缓存访问数据所需的跳数。·BitsNum BitsNum是索引所需的位数。

getDataFromCache总是给我错误的信息,尽管一切似乎都很正常,所以我需要有人来修复它

代码语言:javascript
运行
复制
convertAddress(Binary,N,Tag,Idx,directMap):-
                                            Idx is mod(Binary,10**N),                                            
                                            Tag is Binary // 10**N.

getDataFromCache(SA,[item(tag(T),data(D),V,_)|T],Data,HopsNum,directMap,BitsNum):-
                                         convertAddress(SA,BitsNum,Tag,Idx,directMap),
                                         number_string(Tag,Z),
                                         Z==T,
                                         V==1,
                                         Data is D.

getDataFromCache(SA,[item(tag(T),data(D),V,_)|T],Data,HopsNum,directMap,BitsNum):-
                                         convertAddress(SA,BitsNum,Tag,Idx,directMap),
                                         number_string(Tag,Z),
                                         (Z\=T;V==0),
                                         getDataFromCache(SA,T,Data,HopsNum,directMap,BitsNum).
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-13 03:01:43

简单地说,hopsNumber始终为零,您不必遍历它,因为它是直接的,您可以使用nth0 perdicate访问它,还可以使用T变量两次

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67828632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档