TONG YUANMAN (CN)
LI RENGANG (CN)
CN105912477A | 2016-08-31 | |||
CN101354682A | 2009-01-28 | |||
CN104899160A | 2015-09-09 | |||
CN103544269A | 2014-01-29 |
权利要求书 [权利要求 1] 一种目录读取的方法, 其特征在于, 包括: 接收对目录缓存进行读取的第一请求信息; 确定所述第一请求信息所要读取的第一目录; 判断是否存在至少一个正在执行的第二请求信息, 其中所述第二请求 信息所要读取的第二目录与所述第一目录位于同一个缓存块上; 如果是, 将所述第一请求信息缓存到预设的缓存区内, 执行所述第二 请求信息获取到包括所述第一目录及所述第二目录的第二缓存块后, 根据所述第二缓存块及所述缓存区内的请求信息, 将包括所述第一目 录及所述第二目录在内的至少两个目录发送给对应的请求信息发送端 [权利要求 2] 根据权利要求 1所述的方法, 其特征在于, 所述根据所述第二缓存块及所述缓存区内的请求信息, 将包括所述第 一目录及所述第二目录在内的至少两个目录发送给对应的请求信息发 送端包括: 从所述第二缓存块中获取所述第二目录, 将所述第二目录发送给所述 第二请求信息对应的请求信息发送端; 针对于所述缓存区内的每一个请求信息, 判断该请求信息所要读取的 目录是否在所述第二缓存块内, 如果是, 将该请求信息所要读取的目 录发送给该请求信息对应的请求信息发送端。 [权利要求 3] 根据权利要求 1所述的方法, 其特征在于, 如果不存在正在执行的所述第二请求信息, 则直接执行所述第一请求 信息, 从所述目录缓存中获取包括所述第一目录的第一缓存块, 根据 所述第一缓存块及所述缓存区内的请求信息, 将包括所述第一目录在 内的至少一个目录发送给对应的请求信息发送端。 [权利要求 4] 根据权利要求 3所述的方法, 其特征在于, 所述根据所述第一缓存块及所述缓存区内的请求信息, 将包括所述第 一目录在内的至少一个目录发送给对应的请求信息发送端包括: 从所述第一缓存块中获取所述第一目录, 将所述第一目录发送给所述 第一请求信息对应的请求信息发送端; 针对于所述缓存区内的每一个请求信息, 判断该请求信息所要读取的 目录是否在所述第一缓存块内, 如果是, 将该请求信息所要读取的目 录发送给该请求信息对应的请求信息发送端。 [权利要求 5] 根据权利要求 1至 4中任一所述的方法, 其特征在于, 针对于所述缓存区内的每一个请求信息, 将该请求信息所要读取的目 录发送给该请求信息对应的请求信息发送端后, 将该请求信息从所述 缓存区中刪除。 [权利要求 6] —种目录读取的装置, 其特征在于, 包括: 接收单元、 确定单元、 判 断单元及执行单元; 所述接收单元, 用于接收对目录缓存进行读取的第一请求信息; 所述确定单元, 用于确定所述接收单元接收到的第一请求信息所要读 取的第一目录; 所述判断单元, 用于判断是否存在至少一个正在执行的第二请求信息 , 其中所述第二请求信息所要读取的第二目录与所述确定单元确定出 的第一目录位于同一个缓存块上; 所述执行单元, 用于根据所述判断单元的判断结果, 如果是, 将所述 第一请求信息缓存到预设的缓存区内, 执行所述第二请求信息获取到 包括所述第一目录及所述第二目录的第二缓存块后, 根据所述第二缓 存块及所述缓存区内的请求信息, 将包括所述第一目录及所述第二目 录在内的至少两个目录发送给对应的请求信息发送端。 [权利要求 7] 根据权利要求 6所述的装置, 其特征在于, 所述执行单元包括: 发送 子单元及判断子单元; 所述发送子单元, 用于从所述第二缓存块中获取所述第二目录, 将所 述第二目录发送给所述第二请求信息对应的请求信息发送端; 所述判断子单元, 用于针对于所述缓存区内的每一个请求信息, 判断 该请求信息所要读取的目录是否在所述第二缓存块内; 所述发送子单元, 进一步用于根据所述判断子单元的判断结果, 如果 是, 将该请求信息所要读取的目录发送给该请求信息对应的请求信息 发送端。 根据权利要求 6所述的装置, 其特征在于, 所述执行单元, 进一步用于根据所述判断单元的判断结果, 如果否, 直接执行所述第一请求信息, 从所述目录缓存中获取包括所述第一目 录的第一缓存块, 根据所述第一缓存块及所述缓存区内的请求信息, 将包括所述第一目录在内的至少一个目录发送给对应的请求信息发送 山 根据权利要求 8所述的装置, 其特征在于, 所述执行单元包括: 发送 子单元及判断子单元; 所述发送子单元, 用于从所述第一缓存块中获取所述第一目录, 将所 述第一目录发送给所述第一请求信息对应的请求信息发送端; 所述判断子单元, 用于针对于所述缓存区内的每一个请求信息, 判断 该请求信息所要读取的目录是否在所述第一缓存块内; 所述发送子单元, 进一步用于根据所述判断子单元的判断结果, 如果 是, 将该请求信息所要读取的目录发送给该请求信息对应的请求信息 发送端。 一种目录读取的系统, 其特征在于, 包括: 请求信息响应端、 至少一 个请求信息发送端及权利要求 6至 9中任一所述的目录读取的装置; 所述请求信息响应端, 用于存储所述目录缓存; 所述请求信息发送端, 用于向所述目录读取的装置中的接收单元发送 请求信息, 并接收所述目录读取的装置中的执行单元发送的目录。 |
[0001] 本发明涉及通信技术领域, 特别涉及一种目录读取的方法、 装置及系统。
背景技术
[0002] 随着业务量及业务复杂程度的增加, 用户对服务器性能的要求也越来越高, 为 了保证用户的业务得到正常的运行, 一些服务器包括有多个处理器节点。 在包 括多个处理器节点的服务器中, 每个处理器节点包括至少一个 CPU, 每个 CPU配 备有一定的内存, 每个处理器节点还包括至少一个节点控制器 NC, 不同处理器 节点中的 CPU通过节点控制器 NC相互连接, 实现相互访问对方内存的目的。 为 了提高读取内存中数据的速度, 每一个内存中缓存有对应于该内存中各个数据 的至少两个目录缓存, 在对内存中的数据进行读取吋, 通过读取目录缓存获取 所需数据的存储位置, 每次对内存中的目录缓存进行读取吋读取至少 两条目录
[0003] 目前, 针对于任意一个处理器节点, 当其他处理器节点中的 CPU对该处理器节 点内存中的目录缓存进行读取吋, 每一次读目录请求对应一次目录缓存的读取
[0004] 针对于现有技术对内存中目录缓存进行读取的 方法, 每一次读目录请求都需要 对内存中的目录缓存进行一次读取, 当多个处理器节点中的多个 CPU对同一个内 存同吋发送读目录请求吋, 增加对内存总线带宽的占用, 造成读目录操作的延 迟较大。
技术问题
[0005] 本发明实施例提供了一种目录读取的方法、 装置及系统, 能够减小读目录操作 的延迟。
问题的解决方案
技术解决方案
[0006] 本发明实施例提供了一种目录读取的方法, 包括: [0007] 接收对目录缓存进行读取的第一请求信息;
[0008] 确定所述第一请求信息所要读取的第一目录;
[0009] 判断是否存在至少一个正在执行的第二请求信 息, 其中所述第二请求信息所要 读取的第二目录与所述第一目录位于同一个缓 存块上;
[0010] 如果是, 将所述第一请求信息缓存到预设的缓存区内, 执行所述第二请求信息 获取到包括所述第一目录及所述第二目录的第 二缓存块后, 根据所述第二缓存 块及所述缓存区内的请求信息, 将包括所述第一目录及所述第二目录在内的至 少两个目录发送给对应的请求信息发送端。
[0011] 优选地, 所述根据所述第二缓存块及所述缓存区内的请 求信息, 将包括所述第 一目录及所述第二目录在内的至少两个目录发 送给对应的请求信息发送端包括
[0012] 从所述第二缓存块中获取所述第二目录, 将所述第二目录发送给所述第二请求 信息对应的请求信息发送端;
[0013] 针对于所述缓存区内的每一个请求信息, 判断该请求信息所要读取的目录是否 在所述第二缓存块内, 如果是, 将该请求信息所要读取的目录发送给该请求信 息对应的请求信息发送端。
[0014] 优选地, 如果不存在正在执行的所述第二请求信息, 则直接执行所述第一请求 信息, 从所述目录缓存中获取包括所述第一目录的第 一缓存块, 根据所述第一 缓存块及所述缓存区内的请求信息, 将包括所述第一目录在内的至少一个目录 发送给对应的请求信息发送端。
[0015] 优选地, 所述根据所述第一缓存块及所述缓存区内的请 求信息, 将包括所述第 一目录在内的至少一个目录发送给对应的请求 信息发送端包括:
[0016] 从所述第一缓存块中获取所述第一目录, 将所述第一目录发送给所述第一请求 信息对应的请求信息发送端;
[0017] 针对于所述缓存区内的每一个请求信息, 判断该请求信息所要读取的目录是否 在所述第一缓存块内, 如果是, 将该请求信息所要读取的目录发送给该请求信 息对应的请求信息发送端。
[0018] 优选地, 针对于所述缓存区内的每一个请求信息, 将该请求信息所要读取的目 录发送给该请求信息对应的请求信息发送端后 , 将该请求信息从所述缓存区中 刪除。
[0019] 本发明实施例还提供了一种目录读取的装置, 包括: 接收单元、 确定单元、 判 断单元及执行单元;
[0020] 所述接收单元, 用于接收对目录缓存进行读取的第一请求信息 ;
[0021] 所述确定单元, 用于确定所述接收单元接收到的第一请求信息 所要读取的第一 目录;
[0022] 所述判断单元, 用于判断是否存在至少一个正在执行的第二请 求信息, 其中所 述第二请求信息所要读取的第二目录与所述确 定单元确定出的第一目录位于同 一个缓存块上;
[0023] 所述执行单元, 用于根据所述判断单元的判断结果, 如果是, 将所述第一请求 信息缓存到预设的缓存区内, 执行所述第二请求信息获取到包括所述第一目 录 及所述第二目录的第二缓存块后, 根据所述第二缓存块及所述缓存区内的请求 信息, 将包括所述第一目录及所述第二目录在内的至 少两个目录发送给对应的 请求信息发送端。
[0024] 优选地, 所述执行单元包括: 发送子单元及判断子单元;
[0025] 所述发送子单元, 用于从所述第二缓存块中获取所述第二目录, 将所述第二目 录发送给所述第二请求信息对应的请求信息发 送端;
[0026] 所述判断子单元, 用于针对于所述缓存区内的每一个请求信息, 判断该请求信 息所要读取的目录是否在所述第二缓存块内;
[0027] 所述发送子单元, 进一步用于根据所述判断子单元的判断结果, 如果是, 将该 请求信息所要读取的目录发送给该请求信息对 应的请求信息发送端。
[0028] 优选地, 所述执行单元, 进一步用于根据所述判断单元的判断结果, 如果否, 直接执行所述第一请求信息, 从所述目录缓存中获取包括所述第一目录的第 一 缓存块, 根据所述第一缓存块及所述缓存区内的请求信 息, 将包括所述第一目 录在内的至少一个目录发送给对应的请求信息 发送端。
[0029] 优选地, 所述执行单元包括: 发送子单元及判断子单元;
[0030] 所述发送子单元, 用于从所述第一缓存块中获取所述第一目录, 将所述第一目 录发送给所述第一请求信息对应的请求信息发 送端;
[0031] 所述判断子单元, 用于针对于所述缓存区内的每一个请求信息, 判断该请求信 息所要读取的目录是否在所述第一缓存块内;
[0032] 所述发送子单元, 进一步用于根据所述判断子单元的判断结果, 如果是, 将该 请求信息所要读取的目录发送给该请求信息对 应的请求信息发送端。
[0033] 本发明实施例还提供了一种目录读取的系统, 包括: 请求信息响应端、 至少一 个请求信息发送端及本发明实施例提供的任意 一种目录读取的装置;
[0034] 所述请求信息响应端, 用于存储所述目录缓存;
[0035] 所述请求信息发送端, 用于向所述目录读取的装置中的接收单元发送 请求信息 , 并接收所述目录读取的装置中的执行单元发送 的目录。
发明的有益效果
有益效果
[0036] 本发明实施例提供了一种目录读取的方法、 装置及系统, 由于以缓存块的形式 从目录缓存读取目录, 每个缓存块包括至少两条目录, 如果新接收到的第一请 求信息所要读取的第一目录与当前正在执行的 第二请求信息所要获取的第二目 录在同一个缓存块上, 执行第二请求信息读取到的第二缓存块上已经 包括了第 一目录, 无需再次执行第一请求信息以读取第一目录, 通过一次对目录缓存进 行读取获取多个请求信息所要读取的目录, 减小了对目录缓存进行读取吋的带 宽占用, 从而减小读目录操作的延迟。
对附图的简要说明
附图说明
[0037] 为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下面将对实施例或 现有技术描述中所需要使用的附图作简单地介 绍, 显而易见地, 下面描述中的 附图是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性 劳动的前提下, 还可以根据这些附图获得其他的附图。
[0038] 图 1是本发明一个实施例提供的一种目录读取的 法流程图;
[0039] 图 2是本发明一个实施例提供的一种对请求信息 行处理的方法流程图;
[0040] 图 3是本发明一个实施例提供的一种对缓存块进 处理的方法流程图; [0041] 图 4是本发明一个实施例提供的一种目录读取的 置示意图;
[0042] 图 5是本发明另一个实施例提供的一种目录读取 装置示意图;
[0043] 图 6是本发明一个实施例提供的一种目录读取的 统示意图。
本发明的实施方式
[0044] 为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施 例中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所 描述的实施例是本发明一部分实施例, 而不是全部的实施例, 基于本发明中的 实施例, 本领域普通技术人员在没有做出创造性劳动的 前提下所获得的所有其 他实施例, 都属于本发明保护的范围。
[0045] 如图 1所示, 本发明实施例提供了一种目录读取的方法, 该方法可以包括以下 步骤:
[0046] 步骤 101 : 接收对目录缓存进行读取的第一请求信息;
[0047] 步骤 102: 确定所述第一请求信息所要读取的第一目录;
[0048] 步骤 103: 判断是否存在至少一个正在执行的第二请求信 息, 其中所述第二请 求信息所要读取的第二目录与所述第一目录位 于同一个缓存块上, 如果是, 执 行步骤 104;
[0049] 步骤 104: 将所述第一请求信息缓存到预设的缓存区内, 执行所述第二请求信 息获取到包括所述第一目录及所述第二目录的 第二缓存块后, 根据所述第二缓 存块及所述缓存区内的请求信息, 将包括所述第一目录及所述第二目录在内的 至少两个目录发送给对应的请求信息发送端。
[0050] 本发明实施例提供了一种目录读取的方法, 由于以缓存块的形式从目录缓存读 取目录, 每个缓存块包括至少两条目录, 如果新接收到的第一请求信息所要读 取的第一目录与当前正在执行的第二请求信息 所要获取的第二目录在同一个缓 存块上, 执行第二请求信息读取到的第二缓存块上已经 包括了第一目录, 无需 再次执行第一请求信息以读取第一目录, 通过一次对目录缓存进行读取获取多 个请求信息所要读取的目录, 减小了对目录缓存进行读取吋的带宽占用, 从而 减小读目录操作的延迟。 [0051] 在本发明一个实施例中, 在执行第二请求信息读取到包括第一目录及第 二目录 的第二缓存块后, 一方面从第二缓存块中获取第二目录, 将第二目录发送给第 二请求信息对应的请求信息发送端, 另一方面, 依次判断缓存区内各个请求信 息所要读取的目录是否在第二缓存块上, 如果在, 将所要读取的目录发送给对 应的请求信息发送端。 这样, 执行每一次请求信息吋, 在保证完成该请求信息 的前提下, 确定该请求信息的执行能够替代的其他请求信 息, 实现执行每一次 请求信息利用率的最大化, 将多个请求信息合并执行, 减小对目录缓存访问的 带宽占用, 提高读取的速度, 从而减小读目录操作的延迟。
[0052] 在本发明一个实施例中, 如果正在执行的各个请求信息所要读取的目录 与第一 目录均不在同一个缓存块上, 则直接执行第一请求信息, 从目录缓存中读取包 括第一目录的第一缓存块, 将第一目录发送给第一请求信息对应的请求信 息发 送端, 并将第一缓存块中包括的且为缓冲区内各个请 求信息所要读取的目录发 送给对应的请求信息发送端。 这样, 在新接收到的请求信息所要读取的目录与 正在执行的各个请求信息所要读取的目录均不 在同一个缓存块上吋, 直接执行 该新接收到的请求信息, 保证各个请求信息都能够得到及吋执行, 保证该目录 读取方法的可行性。
[0053] 在本发明一个实施例中, 在对第一请求信息直接之后吋, 获取到包括第一目录 的第一缓存块后, 处理将第一目录发送给第一请求信息对应的请 求信息发送端 夕卜, 还依次判断缓存区内的各个请求信息所要读取 的目录是否在第一缓存块内 , 如果在, 则将所要读取的目录发送给对应的请求信息发 送端。 这样, 每一次 对目录缓存进行读取, 获取到的缓存块都将与缓存区内的请求信息进 行匹配, 保证每一次对目录缓存进行读取读得到最大化 的利用, 进一步减小对目录缓存 进行读取吋的带宽占用, 从而进一步减小读目录操作的延吋, 提高对目录进行 读取的效率。
[0054] 在本发明一个实施例中, 针对于缓存区内的每一个请求信息, 当该请求信息与 读取到的缓存块匹配成功, 将该请求信息所要读取的目录发送给该请求信 息对 应的请求信息发送端后, 将该请求信息从缓存区内刪除, 以避免对同一个请求 信息进行多次匹配及重复发送其所要读取的目 录, 造成系统资源浪费的情况发 生, 提高了该目录读取方法的合理性。
[0055] 为使本发明的目的、 技术方案和优点更加清楚, 下面结合附图及具体实施例对 本发明作进一步地详细描述。
[0056] 本发明实施例提供的目录读取的方法, 包括两方面的内容, 一方面为对请求信 息进行处理的方法, 另一方面为对缓存块进行处理的方法, 为了使本发明实施 例的技术方案更加清楚, 下面分别对以上两个方面的内存进行消息说明 。
[0057] 如图 2所示, 本发明一个实施例提供了一种对请求信息进行 处理的方法, 包括
[0058] 步骤 201 : 接收对目录缓存进行读取的请求信息。
[0059] 在本发明一个实施例中, 在包括多个处理器节点的服务器中, 当一个处理器节 点中的一个 CPU需要读取其他处理器节点管理的内存中的数 据吋, 首先需要读取 内存中数据对应的目录缓存, 实吋接收各个 CPU发送的对目录缓存进行读取的请 求信息。
[0060] 例如, 一个服务器包括 3个处理器节点, 分别为处理器节点 1至处理器节点 4, 当处理器节点 1中的 CPU1要读取处理器节点 2上内存 1中的数据 1吋, CPU1首先需 要对内存 1的目录缓存进行读取, 以获取数据 1的地址, 从而 CPU1发送对内存 1中 存储的目录缓存进行读取的请求信息 1。
[0061] 步骤 202: 确定该请求信息所要读取的目标目录。
[0062] 在本发明一个实施例中, 接收到 CPU发送的请求信息后, 对该请求信息进行解 析, 确定该请求信息所要读取的目标目录。
[0063] 例如, 在接收到 CPU1发送的请求信息 1后, 对请求信息 1进行解析, 确定出请 求信息 1所要读取的目标目录为对应于数据 1的目录 1。
[0064] 步骤 203: 判断是否存在至少一个正在执行的请求信息所 要读取的目录与目标 目录位于同一缓存块, 如果是, 执行步骤 206, 否则执行步骤 204。
[0065] 在本发明一个实施例中, 在获取到新接收到的请求信息所要读取的目标 目录后 , 将新接收到的请求信息与当前正在执行的各个 请求信息进行匹配, 判断是否 存在至少一个正在执行的请求信息所要读取的 目录与目标目录位于同一个缓存 块上, 如果是, 说明其中一个正在执行的请求信息读取的缓存 块上包括目标目 录, 无需再次执行该新接收到的请求信息, 相应地执行步骤 206; 如果否, 说明 当前正在执行的各个请求信息读取到的缓存块 中均不包括目标目录, 需要单独 对目标目录进行读取, 相应的执行步骤 204。
[0066] 例如, 在确定出请求信息 1所要读取的目录为目录 1后, 获取正在执行的各个请 求信息, 供获取到 3条正在执行的请求信息, 分别为请求信息 2、 请求信息 3及请 求信息 4, 依次判断请求信息 2、 请求信息 3及请求信息 4所要读取的目录与目录 1 是否位于同一个缓存块上, 如果 3条请求信息所要读取的目录与目录 1均不在同 一个缓存块上, 针对于请求信息 1执行步骤 204; 如果请求信息 2所要读取的目录 2与目录 1位于同一个缓存块上, 则针对于请求信息 1执行步骤 206。
[0067] 步骤 204: 直接对该请求信息进行执行。
[0068] 在本发明一个实施例中, 当判断正在执行的各个请求信息所要读取的目 录与目 标目录均不在同一个缓存块上后, 直接对该请求信息进行执行, 对目录缓存进 行读取。
[0069] 例如, 在判断请求信息 2、 请求信息 3及请求信息 4所要读取的目录与目录 1均不 在同一个缓存块上后, 执行请求信息 1, 对内存 1中存储的目录缓存进行读取。
[0070] 步骤 205: 获取包括目标目录的缓存块, 并结束当前流程。
[0071] 在本发明一个实施例中, 在执行新接收到的请求信息吋, 从目录缓存中读取包 括该请求信息所要读取的目录的缓存块。
[0072] 例如, 从内存 1中存储的目录缓存中读取包括目录 1的缓存块 1, 其中缓存块 1上 除了目录 1外, 还包括目录 2至目录 32。
[0073] 步骤 206: 将该请求信息缓存到缓存区中。
[0074] 在本发明一个实施例中, 当判断初正在执行的一个请求信息所要读取的 目录与 目标目录位于同一个缓存块上之后, 将目标目录对应的请求信息缓存到缓存区 中。
[0075] 例如, 在判断出正在执行的请求信息 2所要读取的目录 2与目录 1位于同一个缓 存块上之后, 将请求信息 1缓存到缓存区中。
[0076] 如图 3所示, 本发明一个实施例提供了一种对缓存块进行处 理的方法, 包括: [0077] 步骤 301 : 对缓存块进行解析, 获取包括的各个目录。 [0078] 在本发明一个实施例中, 在执行一个请求信息, 从目录缓存中读取到包括该请 求信息所要读取目录的缓存块后, 对读取到的缓存块进行解析, 获取到该缓存 块包括的各个目录。
[0079] 例如, 如图 2所示实施例中, 执行请求信息 1吋, 从内存 1中的目录缓存中读取 到缓存块 1, 对缓存块 1进行解析, 获得缓存块 1包括的 32个目录, 分别为目录 1 至目录 32。
[0080] 步骤 302: 将读取该缓存块对应的请求信息所要读取的目 录发送给该请求信息 对应的请求信息发送端。
[0081] 在本发明一个实施例中, 在获取到缓存块包括的各个目录后, 将获取该缓存块 吋执行的请求信息所要读取的目录发送给该请 求信息对应的请求信息发送端, 完成该请求信息对目录缓存进行读取的任务。
[0082] 例如, 在获取缓存块 1包括的 32个目录后, 将获取缓存块 1吋对应执行的请求信 息 1所要读取的目录 1发送给请求信息 1的发送端, 即发送给处理器节点 1中的 CPU
1, CPU1获取到数据 1的存储地址。
[0083] 步骤 303: 依次判断缓存区中的各个请求信息所要读取的 目录是否在该缓存块 上, 如果是, 执行步骤 304, 否则结束当前流程。
[0084] 在本发明一个实施例中, 针对于与缓存区中的每一个请求信息, 判断该请求信 息所要读取的目录是否在步骤 301中获取的各个目录中, 如果是, 相应地执行步 骤 303, 如果否, 则结束当前流程。
[0085] 例如, 如图 2所示的实施例, 当请求信息 1被缓存到缓存区中后, 执行请求信息
2获得缓存块 2, 从缓存块 2中获取到目录 1至目录 32共 32个目录, 缓存区共包括 2 个请求信息, 分别为请求信息 1和请求信息 5, 依次判断请求信息 1及请求信息 5 所要读取的目录是否在目录 1至目录 32这 32个目录内, 其中请求信息 1所要读取 的目录为目录 1, 与缓存块 2中的目录 1相同, 针对于请求信息 1执行步骤 304, 而 请求信息 5所要读取的目录为目录 50, 缓存块 2包括的 32个目录中不包括目录 50
, 针对于请求信息 5结束当前流程。
[0086] 步骤 304: 将所要读取的目录发送给对应的请求信息发送 端。
[0087] 在本发明一个实施例中, 针对于缓存区中的任意一个请求信息, 当步骤 301中 获得的各个目录中包括该请求信息所要读取的 目录吋, 将该请求信息所要读取 的目录发送给该请求信息对应的请求信息发送 端。
[0088] 例如, 当判断缓存块 2中包括的 32个目录中包括缓存区中的请求信息 1所要读取 的目录 1后, 将目录 1发送给请求信息 1对应的请求信息发送端, 即将目录 1发送 给处理器节点 1中的 CPU 1。
[0089] 步骤 305: 将已发目录对应的请求信息从缓存区中刪除。
[0090] 在本发明一个实施例中, 针对于缓存区中的任意一个请求信息, 将该请求信息 所要读取的目录发送给该请求信息对应的请求 信息发送端后, 将该请求信息从 缓存区中刪除。
[0091] 例如, 当将缓存区中的请求信息 1所要读取的目录 1发送给处理器节点 1中的 CP U1后, 将请求信息 1从缓存区中刪除。
[0092] 需要说明的是, 在图 3所示的实施例中, 仅对图 2所示实施例中请求信息 1被缓 存到缓存区中的情况进行了说明, 针对于请求信息 1被直接执行的情况, 与对请 求信息 2的处理过程相似, 执行请求信息 1获得缓存块 1, 从缓存块 1中获得各个 目录, 将请求信息 1所要读取的目录 1发送给处理器 1中的 CPU1后, 判断缓存区中 的各个请求信息所要读取的目录是否在缓存块 1包括的各个目录中, 如果是, 将 所要读取的目录发送给对应的请求信息发送端 后, 将已发目录对应的请求信息 从缓存区中刪除。
[0093] 进一步需要说明的是, 本发明实施例是为了更加清楚的说明目录读取 的过程, 将整个目录读取的过程划分为对请求信息处理 的方法和对缓存块处理的方法, 在实际业务实现过程中, 图 2及图 3所示的实施例中执行步骤上没有严格的先后
[0094] 本发明一个实施例提供了一种目录读取的装置 , 可以通过软件实现, 如图 4所 示, 作为一个逻辑意义上的装置, 是通过其所在设备的 CPU将非易失性存储器中 对应的计算机程序指令读取到内存中运行形成 的。 该装置包括: 接收单元 401、 确定单元 402、 判断单元 403及执行单元 404;
[0095] 所述接收单元 401, 用于接收对目录缓存进行读取的第一请求信息 ;
[0096] 所述确定单元 402, 用于确定所述接收单元 401接收到的第一请求信息所要读取 的第一目录;
[0097] 所述判断单元 403, 用于判断是否存在至少一个正在执行的第二请 求信息, 其 中所述第二请求信息所要读取的第二目录与所 述确定单元 402确定出的第一目录 位于同一个缓存块上;
[0098] 所述执行单元 404, 用于根据所述判断单元 403的判断结果, 如果是, 将所述第 一请求信息缓存到预设的缓存区内, 执行所述第二请求信息获取到包括所述第 一目录及所述第二目录的第二缓存块后, 根据所述第二缓存块及所述缓存区内 的请求信息, 将包括所述第一目录及所述第二目录在内的至 少两个目录发送给 对应的请求信息发送端。
[0099] 在本发明一个实施例中, 如图 5所示, 执行单元 404包括: 发送子单元 4041及判 断子单元 4042;
[0100] 所述发送子单元 4041, 用于从所述第二缓存块中获取所述第二目录, 将所述第 二目录发送给所述第二请求信息对应的请求信 息发送端;
[0101] 所述判断子单元 4042, 用于针对于所述缓存区内的每一个请求信息, 判断该请 求信息所要读取的目录是否在所述第二缓存块 内;
[0102] 所述发送子单元 4041, 进一步用于根据所述判断子单元 4041的判断结果, 如果 是, 将该请求信息所要读取的目录发送给该请求信 息对应的请求信息发送端。
[0103] 在本发明一个实施例中, 所述执行单元 404, 进一步用于根据所述判断单元 403 的判断结果, 如果否, 直接执行所述第一请求信息, 从所述目录缓存中获取包 括所述第一目录的第一缓存块, 根据所述第一缓存块及所述缓存区内的请求信 息, 将包括所述第一目录在内的至少一个目录发送 给对应的请求信息发送端。
[0104] 在本发明一个实施例中, 如图 5所示, 当执行单元 404包括发送子单元 4041及判 断子单元 4042吋;
[0105] 所述发送子单元 4041, 进一步用于从所述第一缓存块中获取所述第一 目录, 将 所述第一目录发送给所述第一请求信息对应的 请求信息发送端;
[0106] 所述判断子单元 4042, 进一步用于针对于所述缓存区内的每一个请求 信息, 判 断该请求信息所要读取的目录是否在所述第一 缓存块内;
[0107] 所述发送子单元 4041, 进一步用于根据所述判断子单元 4042的判断结果, 如果 是, 将该请求信息所要读取的目录发送给该请求信 息对应的请求信息发送端。
[0108] 上述装置内的各单元之间的信息交互、 执行过程等内容, 由于与本发明方法实 施例基于同一构思, 具体内容可参见本发明方法实施例中的叙述, 此处不再赘 述。
[0109] 如图 6所示, 本发明一个实施例提供了一种目录读取的系统 , 包括: 请求信息 响应端 601、 至少一个请求信息发送端 603及上述实施例提供的任意一种目录读 取的装置 602;
[0110] 所述请求信息响应端 601, 用于存储所述目录缓存;
[0111] 所述请求信息发送端 603, 用于向所述目录读取的装置 602中的接收单元发送请 求信息, 并接收所述目录读取的装置 602中的执行单元发送的目录。
[0112] 在本发明实施例中, 目录读取的装置 602可以设置于连接不同处理器节点的节 点控制芯片上, 以实现不同处理器节点之间进行高效的目录缓 存读取, 也可以 设置于 CPU内, 以实现 CPU对内存中目录缓存进行高效的读取。
[0113] 本发明实施例提供的目录读取的方法、 装置及系统, 至少具有如下有益效果:
[0114] 1、 在本发明实施例中, 由于以缓存块的形式从目录缓存读取目录, 每个缓存 块包括至少两条目录, 如果新接收到的第一请求信息所要读取的第一 目录与当 前正在执行的第二请求信息所要获取的第二目 录在同一个缓存块上, 执行第二 请求信息读取到的第二缓存块上已经包括了第 一目录, 无需再次执行第一请求 信息以读取第一目录, 通过一次对目录缓存进行读取获取多个请求信 息所要读 取的目录, 减小了对目录缓存进行读取吋的带宽占用, 从而减小读目录操作的 延迟。
[0115] 2、 本发明实施例中, 如果正在执行的各个请求信息所要读取的目录 与新接收 到的请求信息所要读取的目录均不在同一个缓 存块上, 则直接对新接收到的请 求信息进行执行, 从目录缓存中获取新接收到的请求信息所要读 取的目录, 保 证各个请求信息发送端发送的请求信息都能够 得到执行, 保证该目录读取方法 的可行性。
[0116] 3、 本发明实施例中, 针对于直接执行的请求信息, 在该请求信息读取到缓存 块后, 同样判断缓存区内的各个请求消息所要读取的 目录是否在该缓存块中, 将匹配成功的请求消息所要读取的目录发送给 对应的请求消息发送端, 这样保 证每一个缓存块都得到最大程度的利用, 从而进一步降低对目录缓存进行读取 的带宽, 提高了对目录缓存进行读取的速率。
[0117] 4、 在本发明实施例中, 针对于缓存区中的任意一个请求信息, 在将该请求信 息所要读取的目录发送给该请求信息对应的请 求信息发送端后, 将该请求信息 从缓存区中刪除, 这样可以避免重复对已完成的请求信息进行匹 配及发送其所 要读取的目录, 造成系统资源浪费的情况发生, 提高了该目录读取方法的合理 性。
[0118] 需要说明的是, 在本文中, 诸如第一和第二之类的关系术语仅仅用来将一 个实 体或者操作与另一个实体或操作区分幵来, 而不一定要求或者暗示这些实体或 操作之间存在任何这种实际的关系或者顺序。 而且, 术语"包括"、 "包含"或者其 任何其他变体意在涵盖非排他性的包含, 从而使得包括一系列要素的过程、 方 法、 物品或者设备不仅包括那些要素, 而且还包括没有明确列出的其他要素, 或者是还包括为这种过程、 方法、 物品或者设备所固有的要素。 在没有更多限 制的情况下, 由语句 "包括一个…… "限定的要素, 并不排除在包括所述要素的过 程、 方法、 物品或者设备中还存在另外的相同因素。
[0119] 本领域普通技术人员可以理解: 实现上述方法实施例的全部或部分步骤可以通 过程序指令相关的硬件来完成, 前述的程序可以存储在计算机可读取的存储介 质中, 该程序在执行吋, 执行包括上述方法实施例的步骤; 而前述的存储介质 包括: ROM、 RAM. 磁碟或者光盘等各种可以存储程序代码的介质 中。
[0120] 最后需要说明的是: 以上所述仅为本发明的较佳实施例, 仅用于说明本发明的 技术方案, 并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内所 做的任何修改、 等同替换、 改进等, 均包含在本发明的保护范围内。