数据访问方法及装置的制造方法

文档序号:9375342阅读:191来源:国知局
数据访问方法及装置的制造方法
【技术领域】
[0001 ] 本发明实施例涉及计算机技术,尤其涉及一种数据访问方法及装置。
【背景技术】
[0002] 现有的计算机系统中,利用旁路转换缓冲(Translation Lookaside Buffer,TLB) 将虚拟地址(Virtual Address,VA)翻译为物理地址(Physical Address, PA),使用PA对缓 存(cache)和内存进行访问。TLB中保存至少一个VA的虚拟页号(Virtual Page Number, VPN)和PA的物理页号(Physical Page Number,PPN)的对应关系,该对应关系称之为页表 项,TLB根据VPN查找PPN,若查找到PPN,则输出对应的PPN从而确定出PA ;否则,发生TLB 缺失。一般米用全虚 cache (Virtually Indexed,Virtually Tagged Cache,V/V cache)来 减少TLB缺失造成的影响。V/V cache无需进行虚实地址翻译,而是直接使用VA进行cache set与cache tag的比较。然而,V/V cache中存在同义词(Synonym)问题,即不同的VA可 能指向同一个PA的问题,使得同一份数据可能存在于cache中的多个位置。如何确保进程 访问到cache中最新的数据副本极为重要。
[0003] 现有技术中,通过粗粒度共享方式确保进程访问到最新数据。具体的,将进程的 逻辑地址空间分为若干个段(Segment),每个段通过SegNo标识。操作系统将进程的逻辑 地址空间翻译为全局的虚地址空间,即将〈PID,SegNo>翻译为全局的Segment ID,建立映 射关系。对于共享的数据,使其处于不同的Segment中相同偏移的位置,经过翻译后,映射 到同一个Segment ID,这样不同进程间的共享数据就有了同样的VA(同样的Segment ID, Segment Offset, Page Offset),从源头上解决了同义问题的出现。
[0004] 然而,上述粗粒度共享方式中,仍然需要一次地址翻译才能进行数据访问,访问效 率低。

【发明内容】

[0005] 本发明实施例提供一种数据访问方法及装置,实现不同进程之间共享数据时,高 效的访问到正确的数据。
[0006] 第一个方面,本发明实施例提供一种数据访问方法,包括:
[0007] 判断请求是否为潜在命中请求,所述请求为潜在命中请求时,所述请求访问的数 据为所述请求对应的进程的虚拟地址空间中的共享数据区数据,且被访问的高速缓冲存储 器Cache中存在与所述请求的进程号不同、标签相同的缓存项;
[0008] 若所述请求为潜在命中请求,则判断所述请求所属的进程是否具有对所述共享数 据区数据的访问权限;
[0009] 若所述请求所属的进程具有所述访问权限,则返回所述请求访问的数据。
[0010] 在第一个方面的第一种可能的实现方式中,若所述请求为潜在命中请求,则判断 所述请求所属的进程是否具有对所述共享数据区数据的访问权限之前,还包括:
[0011] 若所述请求为潜在命中请求,则查找所述共享数据区数据的保护位信息;
[0012] 所述若所述请求为潜在命中请求,则判断所述请求是否具有对所述共享数据区数 据的访问权限,包括:
[0013] 若所述请求为潜在命中请求,则根据所述保护位信息判断所述请求所属进程是否 具有对所述共享数据区数据的访问权限。
[0014] 结合第一个方面的第一种可能的实现方式,在第一个方面的第二种可能的实现方 式中,所述若所述请求为潜在命中请求,则查找所述共享数据区数据的保护位信息之前,包 括:
[0015] 若所述请求为潜在命中请求,则判断共享区保护位查找缓存SPLB中是否存在所 述保护位信息;
[0016] 若所述SPLB中不存在所述保护位信息,则获取所述保护位信息并填充在所述 SPLB 中;
[0017] 所述若所述请求为潜在命中请求,则查找所述共享数据区数据的保护位信息,包 括:
[0018] 若所述请求为潜在命中请求,则从所述SPLB中查找所述保护位信息。
[0019] 结合第一个方面、第一个方面的第一种或第二种可能的实现方式,在第一个方面 的第三种可能的实现方式中,所述判断请求是否为潜在命中请求之前,还包括:
[0020] 判断所述请求是否为命中请求,所述请求为命中请求时,所述Cache中存在与所 述请求的进程号相同、标签相同的缓存项;
[0021] 所述判断请求是否为潜在命中请求,包括:
[0022] 若判断出所述请求不为命中请求,则判断请求是否为潜在命中请求。
[0023] 结合第一个方面的第三种可能的实现方式,在第一个方面的第四种可能的实现方 式中,该方法还包括:
[0024] 若判断出所述请求不是潜在命中请求、且所述请求访问的数据为所述请求对应的 进程的虚拟地址空间中的共享数据区数据时,则将所述请求发送至当前所查找Cache之外 的其他cache,由当前所查找Cache之外的其他cache判断所述请求是否为命中请求;
[0025] 若所述请求为命中请求,则返回所述请求访问的数据;否则,若所述请求不为命中 请求,则由当前所查找Cache之外的其他cache判断所述请求是否潜在命中请求。
[0026] 结合第一个方面的第三种可能的实现方式,在第一个方面的第五种可能的实现方 式中,该方法还包括:
[0027] 若所述请求不是潜在命中请求、且所述请求访问的数据为所述请求对应的进程的 虚拟地址空间中的共享数据区数据时,则查找所述共享数据区数据的保护位信息;
[0028] 根据所述保护位信息判断所述请求是否具有对所述共享数据区数据的访问权 限;
[0029] 若所述请求具有所述访问权限,则将所述请求发送至当前所查找Cache之外的其 他cache,由当前所查找Cache之外的其他cache判断所述请求是否为命中请求;
[0030] 若所述请求为命中请求,则返回所述请求访问的数据;否则,若所述请求不为命中 请求,则由当前所查找Cache之外的其他cache判断所述请求是否潜在命中请求。
[0031] 结合第一个方面、第一个方面的第一种至第五种中任一种可能的实现方式,在第 一个方面的第六种可能的实现方式中,若所述请求为潜在命中请求,则判断所述请求是否 具有对所述共享数据区数据的访问权限之前,还包括:
[0032] 判断所述请求是否来自于本地核;
[0033] 所述若所述请求为潜在命中请求,则判断所述请求是否具有对所述共享数据区数 据的访问权限,包括:
[0034] 若所述请求来自于本地核,则由所述本地核判断所述请求是否具有对所述共享数 据区数据的访问权限;否则,若所述请求来自于本地核之外的核,则将由所述请求所在的核 判断所述请求是否具有对所述共享数据区数据的访问权限。
[0035] 结合第一个方面、第一个方面的第一种至第六种中任一种可能的实现方式,在第 一个方面的第七种可能的实现方式中,所述判断请求是否为潜在命中请求之前,还包括:
[0036] 从所述请求的对应的虚拟地址空间中划分出共享数据区,所述共享数据区中存储 所述共享数据区数据;
[0037] 若所述请求所在的进程需要共享数据,则向所述共享数据区申请虚拟地址空间。
[0038] 结合第一个方面、第一个方面的第一种至第七种中任一种可能的实现方式,在第 一个方面的第八种可能的实现方式中,若所述请求具有所述访问权限,则返回所述请求访 问的数据之前,还包括:
[0039] 将所述Cache中与所述请求所属的进程的进程号不同、标签相同的缓存项的进程 号修改为所述请求的进程号。
[0040] 第二个方面,本发明实施例提供一种数据访问装置,包括:
[0041] 潜在命中请求判断模块,用于判断请求是否为潜在命中请求,所述请求为潜在命 中请求时,所述请求访问的数据为所述请求对应的进程的虚拟地址空间中的共享数据区数 据,且被访问的高速缓冲存储器Cache中存在与所述请求的进程号不同、标签相同的缓存 项;
[0042] 访问权限判断模块,用于若所述潜在命中请求判断模块判断出所述请求为潜在命 中请求,则判断所述请求所属的进程是否具有对所述共享数据区数据的访问权限;
[0043] 返回模块,用于若所述访问权限判断模块判断出所述请求所属的进程具有所述访 问权限,则返回所述请求访问的数据。
[0044] 在第二个方面的第一种可能的实现方式中,该装置还包括:
[0045] 查找模块,用于若所述请求为潜在命中请求,在所述访问权限判断模块判断所述 请求所属的进程是否具有对所述共享数据区数据的访问权限之前,查找所述共享数据区数 据的保护位信息;
[0046] 所述访问权限判断模块,用于若所述请求为潜在命中请求,则根据所述查找模块 查找到的所述保护位信息判断所述请求所属进程是否具有对所述共享数据区数据的访问 权限。
[0047] 结合第二个方面的第一种可能的实现方式,在第二个方面的第二种可能的实现方 式中,保护位信息判断模块,用于若所述请求为潜在命中请求,则在所述查找模块查找所述 共享数据区数据的保护位信息之前,判断共享区保护位查找缓存SPLB中是否存在所述保 护位信息;
[0048] 获取模块,用于若所述保护位信息判断模块判断出所述SPLB中不存在所述保护 位信息,则获取所述保护位信息并填充在所述SPLB中;
[0049] 所述查找模块,具体用于若所述请求为潜在命中请求,则从所述SPLB中查找所述 保护位信息。
[0050] 结合第二个方面、第二个方面的第一种或第二种可能的实现方式,在第二个方面 的第三种可能的实现方式中,该装置还包括:
[0051] 命中请求判断模块,用于在所述潜在命中请求判断模块判断所述请求是否为潜在 命中请求之前,判断所述请求是否为命中请求,所述请求为命中请求时,所述Cache中存在 与所述请求的进程号相同、标签相同的缓存项;
[0052] 所述潜在命中请求判断模块,具体用于若所述命中请求判断模块判断出所述请求 不为命中请求,贝Il判断请求是否为潜在命中请求。
[0053] 结合第二个方面的第三种可能的实现方式,在
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1