CN103198022A - 信息处理设备和存储器访问方法 - Google Patents
信息处理设备和存储器访问方法 Download PDFInfo
- Publication number
- CN103198022A CN103198022A CN2012104244612A CN201210424461A CN103198022A CN 103198022 A CN103198022 A CN 103198022A CN 2012104244612 A CN2012104244612 A CN 2012104244612A CN 201210424461 A CN201210424461 A CN 201210424461A CN 103198022 A CN103198022 A CN 103198022A
- Authority
- CN
- China
- Prior art keywords
- physical address
- node
- cpu
- address
- visit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
提供一种信息处理设备和存储器访问方法。节点包括执行逻辑地址和物理地址之间的转换的第一转换单元。该节点包括执行物理地址和用于标识在多个节点中的每个节点中包括的处理器的处理器标识信息之间的转换的第二转换单元。节点包括发送单元,其发送包括物理地址和处理器标识信息、用于访问由物理地址指示的存储区的发送数据。节点包括本地确定单元,其基于在由接收单元接收的发送数据中包括的物理地址,确定由从另一节点接收的发送数据指示的访问为对本地区域的访问还是对共享区域的访问。
Description
技术领域
本文中讨论的实施例针对信息处理设备以及访问存储器的方法。
背景技术
相关地,多个算法处理单元共享主存储装置的对称式多处理器(SMP)技术为公知的。作为应用SMP技术的信息处理系统的示例,这样的信息处理系统是公知的:其中各自包括算法处理单元和主存储装置的多个节点经由相同的总线彼此连接,并且算法处理单元经由总线共享每个主存储装置。
在这种信息处理系统中,例如使用侦听系统维持由每个节点的算法处理单元缓存的数据的一致性。然而,根据侦听系统,经由总线交换由每个算法处理单元缓存的数据的更新状态,并且相应地,随着节点数增加,总线变成瓶颈,从而存储器访问的性能劣化。
为了避免这种总线瓶颈,非均匀存储器访问(NUMA)技术是公知的,其中使用互联部(interconnect)对多个节点进行互联,并且节点的算法处理单元共享节点的主存储装置。
在应用了这种NUMA技术的信息处理系统中,每个节点的主存储装置的存储区被唯一地映射到共同的物理地址空间中。因而,每个节点的算法单元识别由访问目标的物理地址表示的存储区存在处的节点并通过互联部访问识别的节点的主存储装置。
专利文献1:日本公开特许公报第2000-235558号
非专利文献1:Computer Architecture:A Quantitative Approach,Second Edition,John L.Hennessy,David A.Patterson,§8.4
此处,根据上述NUMA技术,不维持由每个节点的算法处理单元缓存的数据一致性。因此,可以考虑采用缓存一致的NUMA(ccNUMA),其中包括维持由每个节点的算法处理单元缓存的数据的一致性的机制。
然而,在应用了ccNUMA的信息处理系统中,每个节点识别作为访问目标的存储区存在的节点,并且相应地,需要高效地执行地址转换。此外,存在每个节点将主存储装置分成仅由该节点使用的存储区和与另外的节点共同使用的存储区的情况。在这种情况下,每个节点需要高效地确定作为访问目标的存储区是否为与其它节点一起共同使用的存储区。
根据本发明的方面,能够高效地执行由每个算法处理单元进行的存储器访问。
发明内容
根据实施例的方面,信息处理设备包括多个节点以及将多个节点彼此连接的互联部。多个节点中的每个节点包括处理器、存储单元和执行逻辑地址和物理地址之间的转换的第一转换单元。多个节点中的每个节点包括执行物理地址和用于标识包括在多个节点的每个节点中的处理器的处理器标识信息之间的转换的第二转换单元。多个节点中的每个节点包括发送单元,该发送单元发送包括物理地址和处理器标识信息的发送数据,以访问由物理地址指示的存储区。多个节点中的每个节点包括接收单元,该接收单元接收从另一节点经由互联部发送的发送数据。多个节点中的每个节点包括本地确定单元,该本地确定单元基于包括在由接收单元接收的发送数据中的物理地址确定:访问是对可从包括存储单元的节点访问的存储单元的本地区域的访问,还是对可从多个节点访问的存储单元的共享区域域的访问。
附图说明
图1为例示根据第一实施例的信息处理系统的示例的图;
图2为例示根据第一实施例的构建块(building block)的功能配置的图;
图3为例示根据第一实施例的被分配到构建块的存储器的物理地址的范围的图;
图4为例示根据第一实施例的由信息处理系统分配到每个存储器的物理地址的图;
图5为例示在分配物理地址中的变化的第一图;
图6为在分配物理地址中的变化的第二图;
图7为例示根据第一实施例的CPU的功能配置的图;
图8为例示根据第一实施例的存储在节点映射中的信息的示例的图;
图9为例示存储在节点映射中的信息的变化的示例的第一图;
图10为例示存储在节点映射中的信息的变化的示例的第二图;
图11A为例示缓存标签的示例的图;
图11B为例示根据第一实施例的由CPU发送的包的图;
图12为例示根据第一实施例的使用CPU发送请求的处理的示例的图;
图13为例示当CPU根据第一实施例接收包时执行的处理的示例的图;
图14为例示节点映射设置处理的流程的流程图;
图15为例示共享区域控制处理的流程的流程图;
图16为例示共享存储器分配处理的流程图;
图17为例示共享存储器附接处理的流程图;
图18为例示用于使用共享存储器的应用程序的处理的流程图;
图19为例示使节点之间的共享存储器分离的处理的流程图;
图20为例示释放节点之间的共享存储器的处理的流程图;
图21为例示请求发出处理的流程的流程图;
图22为例示当接收到请求时执行的处理的流程的流程图;
图23为例示当CPU接收响应时执行的处理的流程的流程图;
图24为例示根据第二实施例的信息处理系统的图;
图25为例示分区的示例的图;
图26A为例示由分区#A的CPU存储的节点映射的示例的图;
图26B为例示表示分区#A的节点映射的示例的图;以及
图26C为例示表示分区#B的节点映射的示例的图。
具体实施方式
将参考附图说明优选实施例。
[a]第一实施例
首先,在描述根据本申请的实施例之前,将描述相关信息处理系统中的问题的特定示例。例如,相关信息处理系统将由中央处理单元(CPU)输出的用于访问共享存储器区的逻辑地址转换成共享存储器空间地址。然后,信息处理系统通过将共享存储器空间地址转换成物理地址标识作为CPU的访问目标的存储区。
然而,根据如上所述的将逻辑地址转换成共享存储器空间地址,并且将转换后的共享存储器空间地址转换成物理地址的技术,转换地址所需要的硬件资源的量较大。另外,根据将逻辑地址转换成共享存储器空间地址,并且将转换后的共享存储器空间地址转换成物理地址的技术,用于转换地址的时间增加。
另外,当CPU缓存共享存储器空间的数据时,相关信息处理系统通过将缓存信息发送至所有CPU维持一致性。然而,根据如上所述将缓存信息发送至所有CPU的技术,存在瓶颈,并且存储器访问的性能劣化。此外,在相关信息处理系统中,在安装的CPU的数量增大的情况下,总线吞吐量与CPU数量的增大成比例地增大,相应地,存在瓶颈,从而存储器访问的性能劣化。
此外,例如,节点存储仅由节点访问的本地区域中的内核数据和用户数据。相应地,为了确保存储在本地区域中的数据的安全性并且增大对软件缺陷的抵抗,每个节点需要确定作为访问目标的存储区为可由其它节点访问的共享存储器区,还是不能由其它节点访问的本地存储器区。
相应地,在相关信息处理系统中,存储在本地区域中的数据被配置为可缓存,而存储在共享区域中的数据被配置为不可缓存。然而,根据如上所述的将存储在共享区域中的数据配置为不可缓存的技术,用来访问存储器的延迟时间增大。另外,在确定访问目标为共享区域还是本地区域的情况下,每当从任意其它的节点访问存储器时,用于确定处理的电路的规模增大,并且用于访问的延迟时间增大。
另外,在相关信息处理系统中,每当节点访问在任意其它节点中包括的存储器时,节点需要特定的通道装置或者直接存储器访问(DMA)引擎程序的执行,因此,存储器访问的性能劣化。此外,在相关信息处理系统中,在存储器中包括的被配置为共享区域的存储区的区域被固定地设置。因此,例如,在相关信息处理系统中,不能在不停止系统的情况下通过增加节点来增加共享区域。
此外,在相关信息处理系统中,增加了用于执行经由通道或DMA路径的存储器访问的硬件。相应地,在相关信息处理系统中,安装的硬件明显不同于在节点之间不共享存储器的系统的硬件。于是,在相关信息处理系统中,在在节点之间共享存储器的情况下,需要明显地改变诸如操作系统(OS)的程序。
在下面呈现的描述中,将解决上述问题的信息处理系统的示例描述为第一实施例。首先,将参考图1描述信息处理系统的配置的示例。图1为例示根据第一实施例的信息处理系统的示例的图。在图1例示的示例中,信息处理系统1包括交叉开关(XB)2和多个构建块10至10e。构建块10至10e经由管理网络连接到管理终端3。此外,XB 2包括服务处理器2b。
构建块10包括多个CPU 21至21c、多个存储器22至22c,以及服务处理器24。此处,其它的构建块10至10e具有与构建块10相同的配置,并且不再呈现其描述。此外,在图1例示的示例中,将不示出CPU 21b和21c以及存储器22b和22c。
XB 2为将构建块10至10e互相连接的交叉开关。另外,在XB 2中包括的服务处理器2b为管理在构建块10至10e中包括的服务处理器的服务处理器,也即是说,充当主机的服务处理器。另外,管理终端3为经由管理网络设置或控制在构建块10至10e中包括的服务处理器的终端。此外,在少量节点互联的小规模配置的情况下,构建块可以在不经过XB 2的情况下直接彼此连接。
构建块10至10e独立地操作操作系统。换言之,由构建块10至10e操作的操作系统在对于构建块彼此不同的分区中被操作。此处,当从操作的OS观察时,分区表示当相同的OS操作时作为一个系统操作的构建块组。
例如,构建块10至10a作为分区#A操作,并且构建块10b至10d作为分区#B操作。在这种情况下,由构建块10操作的OS识别构建块10和10a作为一个系统操作,由构建块10b操作的OS识别构建块10b至10d作为一个系统操作。
接下来,将参考图2描述构建块的配置。图2为例示根据第一实施例的构建块的功能配置的图。在图2图示的示例中,构建块10包括节点20、服务处理器24、XB连接单元27和27a以及快速外围组件互联(PCIe)连接单元28。
节点20包括多个CPU 21至21c、多个存储器22至22c以及通信单元23。此外,服务处理器24包括控制单元25和通信单元26。在图2图示的示例中,CPU 21至21c直接彼此连接并连接到通信单元23。存储器22至22c连接到CPU 21至21c。
CPU 21至21c连接到XB连接单元27或XB连接单元27a。XB连接单元27和27a可以为相同的XB连接单元。另外,CPU 21至21c连接到PCIe连接单元28。此外,通信单元23连接到在服务处理器24中包括的通信单元26。例如,控制单元25、通信单元26、通信单元23以及CPU21至21c通过联合测试行动小组(JTAG)或内部集成电路(I2C)互联。
例如,在图2例示的示例中,CPU 21至21c为执行算法处理的算法处理单元。此外,独立的存储器22至22c连接到CPU 21至21c。此外,CPU 21至21c使用存储器22至22c和在其它构建块10a至10e中包括的存储器作为共享存储器。另外,如下面将描述的,CPU 21至21c具有物理地址和标识(CPUID)彼此关联的节点映射,所述标识(CPUID)为连接到连接有物理地址的存储器的CPU的标识符。
例如,在与作为访问目标的物理地址关联的CPUID表示在除了节点20之外的节点中包括的CPU的情况下,CPU 21通过XB连接单元27和XB 2向其它节点发送存储器访问请求。另一方面,在与作为访问目标的物理地址关联的CPUID表示CPU 21a至21c之一的情况下,CPU 21通过CPU之间的直接连接发送存储器访问请求。换言之,在与作为访问目标的物理地址关联的CPUID为除了CPU 21之外的CPU并且表示在与CPU 21的节点相同的节点20处存在的CPU的情况下,CPU 21通过CPU之间的直接连接发送存储器访问请求。
另外,在CPU 21从另一节点接收到连接到其上的存储器的请求的情况下,CPU 21从连接到其上的存储器22读取作为请求目标的数据,并且将数据发送到请求源。
此外,在执行的应用程序请求分配共享存储器的情况下,CPU 21至21c具有通过彼此通信分配由应用程序使用的共享存储器的功能。另外,假设CPU 21至21c中的每一个具有使用TLB执行与诸如执行地址转换的相关的CPU相同的处理和当发生TLB失误异常(TLB miss exception)时执行陷入处理(trap process)的功能。
存储器22至22c为由在信息处理系统1中包括的所有CPU共享的存储器。另外,在信息处理系统1中,构建块10至10e的服务处理器被映射到相同的物理地址空间的物理地址被分配到在所有构建块10至10e中包括的存储器。换言之,具有不彼此重叠的值的物理地址被分配到在信息处理系统1中包括的所有存储器。
另外,存储器22和22c中的每一个将存储区的一部分配置为由信息处理系统1的所有CPU使用的共享区域,并且将另一部分配置为本地区域,在该本地区域中,访问该本地区域的CPU 21至21c存储内核数据或用户数据。另外,在存储器22至22c中,在由信息处理系统1使用的物理地址空间中,在位于特定位置的位具有相同值的范围内的物理地址被分配到共享区域。另外,在存储器22至22c中,在位于特定位置的位具有与被分配到共享区域的物理地址不同的值的范围内的物理地址被分配到本地区域。
例如,在存储器22至22c中,第46位为“0”的每个物理地址被分配到本地区域。另外,第46位为“1”的每个物理地址被分配到共享区域。作为更详细的示例,包括在“0”至“0x63ff ffff ffff”中的物理地址被分配到存储器22至22c的物理地址空间中的本地区域。另外,包括在“0x64000000000”至“0x127ff ffff ffff”内的物理地址被分配到存储器22至22c的物理地址空间中的共享区域。
另外,在信息处理系统1中,包括在相互不同的范围内的物理地址被分配到构建块10至10e的存储器。下文中,将参考图来描述在信息处理系统1中被分配到构建块10至10e的存储器的物理地址的范围。
图3为例示根据第一实施例的被分配到构建块的存储器的物理地址的范围的图。在图3例示的示例中,每个构建块被表示为构建块(BB)。此处,BB#0表示构建块10,BB#1表示构建块10a,BB#15表示构建块10e。换言之,在图3例示的示例中,假设信息处理系统1具有16个构建块。
另外,图3例示的示例中,假设高达4兆兆字节(TB)的存储器可安装在每个构建块上。在下面呈现的描述中,为了简化存储器地址的表示,例如,将“242”的地址表示为“4TB”的地址。
在图3例示的示例中,在构建块10中包括的存储器22至22c中,在物理地址空间中从“0”至“4TB–1”的地址范围内包括的物理地址被分配到本地区域。另外,在构建块10中包括的存储器22至22c中,在物理地址空间中从“64TB”至“68TB-1”的地址范围内包括的物理地址被分配到共享区域。
另外,在包括在构建块10a存储器中,在物理地址空间中从“4TB”至“8TB–1”的地址的范围内包括的物理地址被分配到本地区域。另外,在构建块10a中包括的存储器中,在物理地址空间中从“68TB”至“72TB-1”的地址的范围内包括的物理地址被分配到共享区域。
此外,在包括在构建块10e中的存储器中,在物理地址空间中从“60TB”至“64TB–1”的地址的范围内包括的物理地址被分配到本地区域。另外,在包括在构建块10a中的存储器中,在物理地址空间中从“124TB”至“128TB-1”的地址的范围内包括的物理地址被分配到共享区域。
于是,在信息处理系统1中,如图4所例示的,物理地址空间被分配到包括在构建块10至10e中的所有存储器。图4为例示根据第一实施例的由信息处理系统100分配到存储器的物理地址的图。
更具体地,在图4例示的示例中,信息处理系统1将“0”至“256TB-1”的物理地址中的从“0”至“64TB-1”的范围配置为被分配到本地区域的物理地址。另外,信息处理系统1将从“64TB”至“128TB–1”的范围配置为被分配到共享区域的物理地址。
换言之,信息处理系统1将在最低有效位被配置为位0时位46为“0”的范围分配到本地区域,并且将位46为“1”的范围分配到共享区域。另外,信息处理系统1利用从“128TB”到“256TB-1”的地址范围作为I/O空间。
另外,图3和图4所例示的示例仅为示例,信息处理系统1可以使用另外的分配方法。下文中,将参考图描述由信息处理系统1执行的分配物理地址的变化的示例。
图5为例示分配物理地址的变化的第一图。在图5例示的示例中,在包括在构建块10至10e中的存储器中,在从“0”到“4TB-1”的范围内包括的物理地址被分配到本地区域。另外,在图5例示的示例中,在包括在构建块10中的存储器22中,包括在从“4TB”到“8TB-1”的范围内的物理地址被分配到共享区域。
此外,在图5例示的示例中,在包括在构建块10a中的存储器中,在包括从“8TB”至“12TB-1”的范围内的物理地址被分配到共享区域。另外,在图5例示的示例中,在包括构建块10e中的存储器中,包括在从“64TB”至“68TB-1”的范围内的物理地址被分配到共享区域。
于是,在图5例示的示例中,信息处理系统1将物理地址空间中的从“0”至“4TB-1”的范围内的物理地址分配到本地区域,并且将从“4TB”到“128TB-1”的范围内的物理地址分配到共享区域。另外,在图5例示的示例中,信息处理系统1使用从“128TB”到“256TB-1”的范围作为I/O空间。换言之,信息处理系统1将在最低有效位被配置为位0时位42为“0”的范围分配到本地区域并且将位42为“1”的范围分配到共享区域。
图6为例示分配物理地址的变化的第二图。在图6图示的示例中,在包括在构建块10至10e中的存储器中,将在包括从“0”到“4TB-1”的范围内的物理地址保留为I/O空间。另外,在图6图示的示例中,在包括在构建块10至10e中的存储器中,包括在从“4TB”到“8TB-1”的范围内的物理地址被分配到本地区域。
另外,在图6例示的示例中,在包括在构建块10中的存储器22至22c中,包括在从“8TB”到“12TB-1”的范围内的物理地址被分配到共享区域。此外,在图6例示的示例中,在包括在构建块10a的存储器中,包括在从“12TB”到“16TB-1”的范围内的物理地址被分配到共享区域。另外,在图6例示的示例中,在包括在构建块10e的存储器中,包括在从“68TB”到“72TB-1”的范围内的物理地址被分配到共享区域。
于是,在图6例示的示例中,信息处理系统1将在物理地址空间中从“0”至“4TB-1”范围内的物理地址配置为I/O空间,并且将从“4TB”至“8TB-1”范围内的物理地址分配到本地区域。另外,在图5例示的示例中,信息处理系统1将从“8TB”到“256TB-1”范围内的物理地址分配到共享区域。换言之,信息处理系统1将在最低有效位被配置为位0时位43为“0”的范围分配到本地区域,并且将在位43为“1”的范围内的物理地址分配到共享区域。
回过来参考图2,控制单元25控制构建块10。例如,控制单元25执行构建块10的电源的管理,监视和控制构建块10内发生的异常等。另外,控制单元25经由管理网络连接到管理终端3和包括在其它构建块10至10e中的服务处理器的控制单元,并且能够执行由管理终端3指示的控制,并执行与构建块10至10e关联的控制。此外,控制单元25能够与在CPU 21至21c上运行的一个或多个操作系统进行通信。
另外,在第一实施例中,尽管包括在构建块10至10e中的服务处理器经由管理网彼此连接,但是实施例不局限于此。例如,服务处理器可以经由将构建块10至10e彼此连接的XB彼此进行通信。
此外,控制单元25通过通信单元26和通信单元23访问CPU 21至21c。然后,如下面所述的,控制单元25通过更新比如在构建块10至10e上存在的节点映射来执行对构建块中的CPU的控制。
另外,通信单元23通过包括在服务处理器24中的通信单元26将从控制单元25发送的控制信号传送到CPU 21至21c。通信单元26将从控制单元25发送的控制信号传送到包括在节点20中的通信单元23。XB连接单元27和27a将CPU 21至21c连接到XB 2,并且中继包括在构建块10至10e中的CPU之间的通信。PCIe连接单元28将CPU 21至21c的访问中继到输入/输出(I/O)装置。
接下来,将参考图7描述CPU 21至21c的功能配置。图7为例示根据第一实施例的CPU的功能配置的图。此处,由于CPU 21a至21c具有与CPU 21的相同的功能,因此不再进行描述。在图7例示的示例中,未例示将服务处理器24和CPU 21彼此连接的通信单元23和26。
在图7例示的示例中,CPU 21包括算法处理单元30、路由器40、存储器访问单元41和PCIe控制单元42。算法处理单元30包括算法单元31,一级(L1)缓存32、L2缓存33、节点映射34、地址转换单元35、缓存目录管理单元36以及包控制单元37。包控制单元37包括请求产生单元38和请求接收单元39。PCIe控制单元42包括请求产生单元43和PCIe总线控制单元44。
首先,将描述包括在算法处理单元30中的节点映射34。在节点映射34中,物理地址和连接到具有由物理地址表示的存储区的存储器的CPU的CPUID彼此关联地存储。下文中,将参考图描述在节点映射34中存储的信息的示例。
图8为例示根据第一实施例的存储在节点映射中的信息的示例的图。在图8例示的示例中,在节点映射34中,地址、有效性、节点ID、CPUID彼此关联地存储。此处,在每个入口的地址处存储信息,该信息表示包括连续的多个地址的地址区。
例如,信息处理系统1将被分配到所有存储器的物理地址空间划分成具有相同大小的地址区,并且向地址区分配诸如#0、#1、#2等的标识符。然后,信息处理系统1存储表示节点映射34中包括的每个入口的地址处的地址区的标识符。
此外,在每个入口的有效性内,存储指示由物理地址表示的存储区是否可访问的有效位。例如,在由物理地址表示的存储区为由CPU共享的共享区域的情况下,存储指示能够访问的有效位(例如,“1”)。
节点ID为表示被分配有物理地址的存储器存在处的节点的标识符。CPUID为表示连接到被分配物理地址的存储器的CPU的标识符。换言之,在节点映射34中存储信息,该信息表示连接到物理地址为作为访问目标的物理地址的存储器上的CPU。
例如,在图8例示的示例中,在节点映射34中,表示出在节点ID为“0”的节点处存在标识符为“#0”的地址区,并且CPUID为“0”的CPU访问该地址区。另外,在节点映射34中,表示出在节点ID为“0”的节点处存在标识符为“#1”的地址区,并且CPUID为“1”的CPU访问该地址区。此外,在节点映射34中,由于标识符为“#2”的地址区为CPU 21不会执行访问的地址区或者还没有被映射的地址区,所以表示了节点ID和CPUID还未设置到其上。
在节点映射34可表示连接有作为访问目标的物理地址的CPU的情况下,可以以除了该实施例的形式之外的任意形式注册信息。下文中,将参考图9和图10描述节点映射34的变化的示例。
图9为例示存储在节点映射中的信息的变化的示例的第一图。在图9例示的示例中,节点映射34存储彼此关联的具有有效性的每个入口、起始地址,地址掩码、节点ID以及CPUID。此处,在起始地址中,存储包括在地址区中的所有物理地址中的最小的物理地址。
在地址掩码中,存储表示由CPU管理的物理地址的范围的地址掩码。例如,入口的地址掩码为“0xffff ffff ffff 0000”的情况表示由相同入口的CPUID表示的CPU管理与上面的48个位中的相同入口的起始地址一致的地址区。
例如,在图9例示的示例中,节点映射34表示,作为第一入口,从地址“0x00000”到通过使用地址掩码“0x3fff”掩码地址获得的地址的范围,也即是说,直到“0x03fff”的范围为一个地址区。另外,节点映射34表示从“0x00000”到“0x03fff”的地址区存在于由节点ID“0”表示的节点处,并且通过CPUID为“0”的CPU访问该地址区。
相似地,节点映射34表示从“0x10000”到“0x13fff”的地址区存在由节点ID“1”表示的节点处,并且由CPUID为“4”的CPU访问该地址区。另外,节点映射34表示从“0x14000”到“0x17fff”的地址范围存在于由节点ID“1”表示的节点处,并且由CPUID为“5”的CPU访问该地址区。此外,节点映射34表示从“0x20000”到“0x21fff”的地址区存在于由节点ID“2”表示的节点处,并且通过CPUID为“8”的CPU访问该地址区。
在由如图9例示的节点映射34中的起始地址和地址掩码表示地址区的情况下,能够基于逻辑和及逻辑积的组合确定物理地址是否包括在每个地址区中,相应地,能够容易地配置电路。
图10为例示存储在节点映射中的信息的变化的示例的第二图。在图10例示的示例中,入口存储在节点映射34中,其中有效性、起始地址、长度、节点ID以及CPUID彼此关联。此处,长度为用于设置地址区的大小的信息。
例如,在起始地址为“0x120000”、长度为“0x1ffff”的情况下,由相同入口的CPUID表示的CPU将从“0x120000”到“0x13ffff”的物理地址分配到被管理的存储器。
例如,在图10例示的示例中,节点映射34表示,作为第一入口,从长度包括在“0x3fff”中的“0x00000”的地址的范围,也即是说,直到“0x03fff”的范围为一个地址区。另外,节点映射34表示从“0x00000”到“0x03fff”的地址区存在于由节点ID“0”表示的节点处,并且由CPUID为“0”的CPU访问该地址区。
相似地,节点映射34表示从“0x10000”到“0x13fff”的地址区存在于由节点ID“1”表示的节点处,并且由CPUID为“4”的CPU访问该地址区。另外,节点映射34表示从“0x14000”到“0x17ff”的地址区存在于由节点ID“1”表示的节点处,并且由CPUID为“5”的CPU访问该地址区。此外,节点映射34表示从“0x20000”到“0x202ef”的地址区存在于由节点ID“2”表示的节点处,并且由CPUID为“8”的CPU访问该地址区。
在如图10所例示由节点映射34中的起始地址和长度表示地址区的情况下,能够以灵活的方式设置每个地址区的长度。换言之,在由节点映射34中的起始地址和地址掩码表示地址区的情况下,指定1从最低有效位(LSB)连续的范围中的访问区。另一方面,在由起始地址和长度表示每个地址区的情况下,能够任意地设置每个地址区的长度。
回过来参考图7,算法单元31为通过执行算法处理执行OS或应用程序的算法装置的核。另外,在执行数据读取的情况下,算法单元31将存储作为读取目标的数据的存储区的逻辑地址输出到地址转换单元35。
L1缓存32为临时存储数据或目录中频繁使用的数据的缓存存储装置。然而,类似于临时存储数据或目录中频繁使用的数据的L1缓存32,L2缓存33具有大于L1缓存32的存储容量和低于L1缓存32的读/写速度。此处,目录为表示已经将缓存的数据存储在存储器22的每个存储区中的CPU或者缓存的数据的更新状态的信息。
地址转换单元35使用转换后备缓冲区(translation lookaside buffer,TLB)将由算法单元31输出的逻辑地址转换成物理地址。例如,地址转换单元35包括TLB,TLB存储逻辑地址和物理地址彼此关联的入口,并且将从算法单元31获取的与逻辑地址关联地存储的物理地址输出到缓存目录管理单元36。另外,在发生TLB失误的情况下,地址转换单元35引起陷入处理,于是,注册在TLB中发生TLB失误处的物理地址和逻辑地址的关系。
另外,在从由CPU 21执行的应用程序请求共享存储器的分配的情况下,地址转换单元35执行下面的处理。地址转换单元35在TLB中设置入口,在该入口中,访问由CPU 21至21c共享的共享区域时由应用程序使用的逻辑地址和被分配到共享区域的范围的物理地址彼此关联。
另一方面,在从应用程序或OS请求本地区域的分配的情况下,地址转换单元35执行下面的处理。地址转换单元35在TLB中设置入口,在该入口中,在访问由CPU 21或者由CPU 21上运行的操作系统专用的本地区域时应用程序使用的逻辑地址和被分配到本地区域的物理地址彼此关联。
缓存目录管理单元36管理缓存数据和目录。更具体地,缓存目录管理单元36从地址转换单元35获取物理地址,该物理地址是通过转换由算法单元31输出的逻辑地址获取的。
在从地址转换单元35获取物理地址的情况下,缓存目录管理单元36检查目录以便检查由物理地址表示的数据状态是否正常。在由物理地址表示的数据缓存在L1缓存32或L2缓存33中的情况下,缓存数据被输出到算法单元31。
另一方面,在由物理地址表示的数据没有缓存在L1缓存32或L2缓存33的情况下,缓存目录管理单元36确定由物理地址表示的存储区是否存在于存储器22中。在存储器22中不存在由物理地址表示的存储区的情况下,缓存目录管理单元36参照节点映射34。
另外,缓存目录管理单元36识别包括通过参考节点映射34获取的物理地址的范围的入口。然后,缓存目录管理单元36确定识别的入口的CPUID是否为CPU 21的CPUID。之后,在识别的入口的CPUID为CPU21的CPUID的情况下,缓存目录管理单元36将物理地址输出到存储器访问单元41。
另一方面,在识别的入口CPUID不是CPU 21的CPUID的情况下,缓存目录管理单元36执行下面的处理。缓存目录管理单元36获取识别的入口的CPUID和节点ID。然后,缓存目录管理单元36将获取的CPUID和物理地址输出到包控制单元37。
在从存储器访问单元41或包控制单元37获取在由输出物理地址表示的存储区中存储的数据的情况下,缓存目录管理单元36存储在L1缓存32和L2缓存33中的获取数据。然后,缓存目录管理单元36将缓存在L1缓存32中的数据输出到算法单元31。
另外,在从包控制单元37获取物理地址的情况下,换言之,在获取作为来自另外的CPU的存储器访问请求的目标的物理地址的情况下,缓存目录管理单元36执行下面的处理。缓存目录管理单元36基于位于预定位置的获取物理地址的位是“0”还是“1”,来确定获取的物理地址是否为被分配到本地区域的物理地址。
例如,在图3和图4例示的范围的物理地址被分配到信息处理系统1的存储器的情况下,缓存目录管理单元36确定在最低有效位为位0时的位46是“0”还是“1”。在位46为“0”的情况下,缓存目录管理单元36确定获取的物理地址为被分配到本地区域的物理地址。在这种情况下,缓存目录管理单元36指示包控制单元37向请求源发送否定响应(访问错误)。
另一方面,在位46为“1”的情况下,缓存目录管理单元36确定获取的物理地址为被分配到共享区域的物理地址。在这种情况下,缓存目录管理单元36获取由获取物理地址表示的存储区中存储的数据,并且将获取的数据输出到包控制单元37,并指示向请求源发送数据。
另外,在将访问存储在存储器22中的数据的情况下,缓存目录管理单元36执行维持在由物理地址表示的存储区中存储的数据和缓存数据之间的一致性的处理。例如,缓存目录管理单元36参照表示缓存数据的状态的缓存标签和用于每个缓存入口的目录。另外,缓存目录管理单元36基于缓存标签和目录执行维持缓存一致性和存储器访问处理的处理。
此处,图11A为例示缓存标签的示例的图。在图11A例示的示例中,缓存标签包括变差标志、错误检查和校正(ECC)检查位、取指(IF)/操作码、L1缓存状态、L2缓存状态以及地址信息(AA)。
此处,变差标志为表示变差与否的缓存行变差信息。ECC检查位为为冗余添加的检查位。IF/操作码(opcode)为例示数据为指令还是数据的信息。
另外,AA为地址信息,更详细地说为存储在其中的物理地址的帧地址。L1缓存状态和L2缓存状态为表示存储在L1缓存32和L2缓存33中的数据的状态的信息。
例如,表示“修改(M)”、“排它(E)”、“共享(S)”和“无效(I)”之一的位存储在L1缓存状态和L2缓存状态中。此处,“修改”表示任意一个CPU缓存数据并且缓存的数据已经被更新的状态。另外,在缓存数据的状态被“修改”的情况下,需要执行回写。
“排它”表示任意并且仅一个CPU拥有并且缓存数据,并且缓存的数据还没有被更新的状态。“共享”表示多个CPU缓存数据并且缓存的数据还没有被更新的状态。另外,“无效”表示缓存的状态还没有被注册的状态。
目录管理两个位的CK位,63个位的PRC,以及4个位的UE。此处,CK位表示缓存的数据的状态被编码的信息。PRC为表示使对应的缓存行的缓存数据作为位图的CPU的位置的信息。UE为表示目录的异常和其因素的信息。
缓存目录管理单元36识别具有在获取物理地址处存储的缓存数据的CPU、缓存数据的状态等。然后,缓存目录管理单元36基于缓存数据的状态通过发出刷新请求等执行更新存储在存储器中的数据的处理,以维持缓存数据和存储在存储器中的数据之间的一致性。之后,缓存目录管理单元36向请求源输出数据。
此处,将描述使用缓存目录管理单元36维持缓存一致性的处理的示例。例如,缓存目录管理单元36指示请求产生单元38发送指示已经缓存了状态被修改(M)的数据的CPU执行回写的命令。然后,缓存目录管理单元36更新数据的状态并且根据更新之后的状态执行处理。下面将描述由缓存目录管理单元36发送或接收的请求和命令的类型。
在从缓存目录管理单元36获取物理地址和CPUID的情况下,请求产生单元38产生存储已经获取了物理地址和CPUID的包,换言之,作为存储器访问请求的包。然后,请求产生单元38将产生的包发送至路由器40。
此处,图11B为例示根据第一实施例由CPU发送的包的图。在图11B例示的示例中,用PA表示物理地址。在图11B例示的示例中,请求产生单元38产生存储有CPUID、物理地址和表示请求的内容的数据的请求,并将产生的请求输出到路由器40。在这种情况下,路由器40将由请求产生单元38产生的请求通过XB连接单元27输出到XB 2。然后,XB 2将请求发送到由请求中存储的CPUID表示的CPU。
在从缓存目录管理单元36接收到用于发出用来维持一致性的请求或命令的指令的情况下,请求产生单元38根据指令产生请求或命令。然后,请求产生单元38根据指令通过路由器40、XB连接单元27和XB 2将已经产生的请求或命令发送到CPU。另外,在从I/O装置获取数据的情况下,请求产生单元38将对于I/O的访问请求输出到路由器40。
回过来参考图7,当通过XB 2、XB连接单元27和路由器40接收由另外的CPU输出的包时,请求接收单元39获取包括在接收的包中的物理地址。然后,请求接收单元39将获取的物理地址输出到缓存目录管理单元36。另外,在接收到从另外的CPU发送的数据的情况下,请求接收单元39将接收的数据输出到缓存目录管理单元36。
另外,在接收到用于维持一致性的请求或命令的况下,请求接收单元39输出已经被接收到缓存目录管理单元36中的请求或命令。此外,在从路由器40接收到I/O访问请求的响应或数据的情况下,请求接收单元39输出已经被接收到缓存目录管理单元36中的响应或数据。在这种情况下,缓存目录管理单元36例如执行将获取的数据输出到存储器访问单元41以存储在存储器22中的处理。
在接收到由包括在包控制单元37中的请求产生单元38输出的包的情况下,路由器40将接收的请求输出到XB连接单元27。另外,路由器40通过XB连接单元27将由另外的CPU发送的包或数据输出到请求接收单元39。此外,路由器40将由包控制单元37输出到I/O等的包输出到PCIe控制单元42。另外,在从PCIe控制单元42接收到从I/O发送的响应等的情况下,路由器40输出已经接收到包控制单元37中的响应等。
存储器访问单元41为所谓的存储器访问控制器(MAC)并且控制对存储器22的访问。例如,在从缓存目录管理单元36接收到物理地址的情况下,存储器访问单元41从存储器22获取在接收的物理地址处存储的数据,并且将获取的数据输出到缓存目录管理单元36。存储器访问单元41可以通过使用存储器监控功能形成冗余的共享区域。
在通过路由器40获取I/O访问请求的情况下,包括在PCIe控制单元42中的请求产生单元43产生将被发送到I/O装置的作为访问请求目标的请求,并将产生的请求输出到PCIe总线控制单元44。在获取了由请求产生单元43产生的请求的情况下,PCIe总线控制单元44通过PCIe连接单元28将请求发送到I/O装置。
接下来,将参考图12描述CPU 21将请求发送到另外的CPU的处理的示例。图12为例示根据第一实施例的CPU发送请求的处理的示例的图。例如,如图12的(A)表示,将入口从服务处理器24设置到节点映射34,其中访问被分配了物理地址的存储器的CPU的CPUID和该物理地址彼此关联。
另外,算法单元31执行算法处理,并且,如由图12中的(B)表示的,将作为访问目标的逻辑地址输出到地址转换单元35。然后,地址转换单元35将逻辑地址转换成物理地址,并且将转换的物理地址输出到缓存目录管理单元36,如由图12中的(C)表示的。
此处,当从地址转换单元35获取了物理地址时,如由图12中的(D)表示的,缓存目录管理单元36通过参考节点映射34获取与获取的物理地址关联的CPUID。然后,在获取的CPUID不是CPU 21的CPUID的情况下,如由图12中的(E)表示的,缓存目录管理单元36将获取的CPUID和物理地址输出到包控制单元37。
即使在这种情况下,请求产生单元38产生存储有从缓存目录管理单元36获取的物理地址和CPUID的包,并且如由图12中的(F)表示的,将产生的包输出到路由器40。然后,如图12中的(G)表示的,路由器40将从请求产生单元38获取的包输出到XB连接单元27。之后,如由图12中的(H)所表示的,XB连接单元27将获取的包输出到XB 2。然后,XB 2将包传送到由包中存储的CPUID表示的CPU。
接下来,将参考图13描述当CPU 21从另外的CPU接收包时执行的处理的示例。图13为例示根据第一实施例的CPU接收包时执行的处理的示例的图。例如,如由图13中的(I)表示的,请求接收单元39从另外的CPU接收存储有CPU 21的CPUID和被分配到存储器22的物理地址的包。
在这种情况下,请求接收单元39从接收的包获取物理地址,并且如由图13中的(J)表示的,将获取的物理地址输出到缓存目录管理单元36。然后,缓存目录管理单元36确定获取的物理地的位46为“0”还是“1”。
换言之,在如图3和图4例示的信息处理系统1设置被分配到共享区域和本地区域的物理地址的情况下,缓存目录管理单元36不需要识别物理地址的所有位。换言之,通过使用缓存目录管理单元36确定位46为“0”还是“1”,能够准确地确定由物理地址表示的存储区为共享区域还是本地区域。
在接收的物理地址的位46为“1”的情况下,缓存目录管理单元36确定访问共享区域。在这种情况下,如由图13中的(K)表示的,缓存目录管理单元36确定存储在由物理地址表示的存储区中的数据是否被缓存在L1缓存32和L2缓存33中。
另外,在确定数据还没有被缓存的情况下,如由图13中的(L)表示的,缓存目录管理单元36将物理地址输出到存储器访问单元41。然后,如由图13中的(M)表示的,存储器访问单元41从存储器22获取存储在由物理地址表示的存储区中的数据,并将获取数据输出到缓存目录管理单元36。
然后,在从L1缓存32、L2缓存33或存储器访问单元41获取数据的情况下,缓存目录管理单元36将获取的数据输出到包控制单元37,并且指示包控制单元37将获取的数据发送到作为请求源的CPU。
例如,CPU 21至21c、通信单元23、服务处理器24、控制单元25、通信单元26、XB连接单元27以及PCIe连接单元28为电子电路。另外,算法单元31、地址转换单元35、缓存目录管理单元36、包控制单元37、请求产生单元38以及请求接收单元39为电子电路。
此外,路由器40、存储器访问单元41、PCIe控制单元42、请求产生单元43以及PCIe总线控制单元44为电子电路。此处,使用诸如专用集成电路(ASIC)或现场可编程门阵列(FPGA)、中央处理单元(CPU)或微处理单元(MPU)等的集成电路作为电子电路的示例。
另外,存储器22至22a为诸如随机访问存储器(RAM)、只读存储器(ROM),快擦写存储器等的半导体存储器装置。此外,L1缓存32和L2缓存33为诸如静态随机访问存储器(SRAM)的高速半导体存储器装置。
接下来,将简要描述使用CPU 21至21c维持缓存一致性的处理。在下面呈现的描述中,假设信息处理系统1的每个CPU通过使用Illinois协议维持缓存一致性。
另外,在下面呈现的描述中,假设包括在信息处理系统1中的每个存储器可被所有CPU识别为具有可缓存空间的存储器。此外,在下面呈现的描述中,通过设置在CPU内部的MAC物理地直接连接到存储作为访问的目标的数据的存储器的CPU称作主CPU,而请求访问的CPU称作本地CPU。
此外,已经向主CPU发送了请求并且已经完成了的缓存数据的CPU称作远程CPU。另外,存在本地CPU和主CPU为同一CPU的情况,并且存在本地CPU和远程CPU为同一CPU的情况。
例如,本地CPU通过参考其节点映射确定作为访问目标的物理地址被分配到主CPU访问的存储器。然后,本地CPU发出将物理地址存储到主CPU的请求。另外,存在多个类型的请求作为由本地CPU发出的请求。相应地,包括在主CPU中的缓存目录管理单元根据获取的请求类型执行缓存一致性控制处理。
例如,作为由本地CPU发出的请求的类型,存在共享类型的取出访问、排它类型取出访问、缓存无效请求、缓存替换请求等。共享类型取出访问为用于执行“移入共享”的请求,并且为从由主CPU访问的存储器读取出数据时发出的请求。
另外,排它类型取出访问例如为用于执行“排它地移入”的请求,并且在由主CPU访问的存储器中存储数据时将数据加载到缓存时发出。缓存无效请求例如为用于执行“移出”的请求,并且在对主CPU作出无效缓存行的请求时发出。当接收到缓存无效请求时,存在主CPU向远程CPU发出缓存无效请求的情况,或主CPU发出用于无效缓存的命令的情况。
缓存替换请求例如为用于执行“回写”的请求,并且在更新缓存数据时发出,换言之,处于修改状态的缓存数据被重写回由主CPU访问的存储器。另外,缓存替换请求例如为用于执行“回刷(FlushBack)”的请求并且在缓存还没有更新的数据时,换言之,在丢弃了处于共享或排它状态的缓存时发出。
在从本地CPU接收到上述请求的情况下,为了处理请求,主CPU向本地CPU或远程CPU发出命令。此处,为了根据获取请求的类型执行缓存一致性控制处理,主CPU发出多个类型的命令。例如,主CPU发出“移出和旁通至共享(MoveOut and Bypass to Share)”,以将通过远程CPU缓存的数据加载至本地CPU。
另外,例如,主CPU无效除了本地CPU之外的所有远程CPU的缓存,并且之后主CPU发出“排它地移出和旁通(MoveOutand BypassExclusively)”,以将数据发送至本地CPU。此外,主CPU发出请求远程CPU无效缓存的“无效移出(MoveOut WITH Invalidation)”。在主CPU发出“无效移出”的情况下,所有CPU的缓存对于目标地址处于无效状态。
另外,主CPU发出请求远程CPU无效缓存行的“刷新移出(MoveOutfor Flush)”。在主CPU发出“刷新移出”的情况下,形成仅由主CPU缓存目标数据的状态。此外,在目标数据的状态为“共享”的情况下,主CPU发出请求远程CPU丢弃缓存的“缓冲无效(Buffer Invalidation)”。
主CPU通过根据请求的类型发出上述命令来发送由每个CPU缓存的数据的状态。另外,在接收到命令的情况下,本地CPU或远程CPU执行由命令表示的处理并且发送由此缓存的数据的状态。
之后,本地CPU或远程CPU向主CPU发送命令完成的响应或者数据的增加完成的响应。另外,在执行命令处理之后,主CPU或远程CPU向本地CPU发送请求数据的增加的响应。
CPU的处理流程
接下来,将参考图14描述用于设置包括在信息处理系统1中的每个CPU中的节点映射34的处理的流程。图14为例示节点映射设置处理的流程的流程图。在下面呈现的描述中,将一个CPU和由CPU访问的存储器的组称作节点。另外,在下面呈现的描述中,将描述新节点增加到信息处理系统1中的示例。
第一,在步骤S101中,信息处理系统1的操作器增加新的节点。接下来,在S102中,构建块10至10e的服务处理器读取增加的节点的硬件配置。接下来,在步骤S103中,信息处理系统1的操作器指示服务处理器分配包括在新节点的存储器中的共享区域。
接下来,在步骤S104中,信息处理系统1的操作器指示新节点的服务处理器输入电源。然后,在步骤S105中,构建块10至10e的服务处理器基于读取的配置的信息使用I2C设置包括在构建块10至10e中的CPU的节点映射34。之后,在步骤S106中,信息处理系统1向构建块10至10e输入电源并且结束处理。
接下来,将参考图15描述使用信息处理系统1控制共享区域的处理的流程。图15为例示共享区域控制处理的流程的流程图。首先,在步骤S201中,信息处理系统1根据来自应用程序的请求执行分配节点之间的共享存储器的处理。接下来,在步骤S202中,信息处理系统1执行附接共享节点之间共享的共享存储器的处理。
之后,在步骤S203中,由包括在信息处理系统1中的CPU执行的应用程序使用存储器。接下来,在步骤S204中,信息处理系统1执行共享存储器的分开处理。之后,在步骤S205中,信息处理系统1执行共享存储器释放处理并结束处理。另外,可以仅由共享存储器的主节点上运行的应用程序执行步骤S201和S205的处理,或者,当实际上什么也没有执行时,也可以执行在除了共享存储器的主节点之外的其它节点上运行的应用程序。
接下来,将参考图16描述在图15的步骤S201中表示的共享存储器分配处理的流程。图16为例示共享存储器分配处理的流程图。在图16例示的示例中,例如,在步骤S301中,由CPU 21执行的应用程序请求OS执行在节点之间分配共享存储器的处理。
然后,在步骤S302中,由CPU 21执行的OS从用于共享区域的物理地址区中分配具有请求的大小的存储器。接下来,在步骤S303中,OS将由OS分配的共享存储器的管理ID传送至应用程序并且结束共享存储器的分配处理。
接下来,将参考图17描述在图15中的步骤S202例示的在节点之间附接共享存储器的处理的流程。图17为例示共享存储器附接处理的流程图。首先,在步骤S401中,应用程序将管理ID传送至OS并请求在节点之间附接共享存储器的处理。在这种情况下,在步骤S402中,OS与在其它节点处执行的操作系统进行通信,并且获取对应于管理ID的物理地址。
此处,在OS与在其它节点处执行的操作系统通信的情况下,使用通过局域网(LAN)等的通信、通过服务处理器24在节点之间的通信等。例如,可以被配置为使得在每个节点执行的OS将特定共享区域设置为用于节点之间进行通信的区域,并且通过在或从设置区域中存储或读取信息执行通信。
接下来,在步骤S403中,OS确定对应于物理地址的逻辑地址(虚拟地址)并执行其分配。例如,由CPU 21执行的OS通过使用地址转换单元35设置物理地址和逻辑地址的TLB。
另外,由CPU 21至21c使用的逻辑地址可以对于每个CPU处于交叠的范围内或者可以处于相互的不同范围。此外,可以由OS中的应用程序指定由CPU 21至21c使用的逻辑地址。之后,在步骤S404中,OS将逻辑地址的值传送给应用程序并结束处理。
接下来,将参考图18描述在图15的步骤S203中例示的用于在节点之间使用共享存储器的应用程序的处理的流程。图18为例示使用共享存储器的应用程序的处理的流程图。例如,在步骤S501中,由CPU 21执行的应用程序发出逻辑地址并且访问由该逻辑地址表示的存储区。
然后,在步骤S502中,CPU 21确定是否发生了TLB失误。在发生TLB失误的情况下(在步骤S502中为是),在步骤S503中,CPU 21执行陷入处置(trap handling)处理并且设置TLB中的一组逻辑地址和物理地址的入口。
接下来,在步骤S504中,应用程序再次发出逻辑地址,并且通过使用TLB将逻辑地址转换成物理地址而正常地访问共享存储器。另一方面,在没有发生TLB失误的情况下(在步骤S502中为否),在步骤S505中正常地执行对共享存储器的访问,并且处理结束。
接下来,将参考图19描述在图15的步骤S204中例示的分开节点之间的共享存储器的处理的流程。图19为例示分开节点之间的共享存储器的处理的流程图。例如,在步骤S601中,由CPU 21执行的应用程序请求OS利用节点之间的共享存储器的逻辑地址或指定的管理ID执行分开处理。
然后,在步骤S602中,由CPU 21执行的OS刷新缓存。换言之,在释放共享存储器的分配之后再次分配为共享存储器的情况下,在共享存储器的主节点上的CPU重新启动而不进行共享存储器的分配的情况下,关系到缓存和实际的存储器状态彼此不相匹配的问题。相应地,OS刷新缓存,从而防止缓存和实际的存储器状态彼此不相匹配的状态。
然后,在步骤S603中,OS释放节点之间的共享存储器的分配,换言之,由应用程序使用的范围内的逻辑地址的分配并且去除与释放的逻辑地址相关的TLB的入口。另外,在步骤S604中,OS执行节点之间的通信,从而通知应用程序已经完成了目标PA的使用。然后,在步骤S605中,在主节点识别出最后的用户分开已经通过节点之间的通信释放共享存储器的情况下,OS释放用于指定的共享存储器的存储器分配。另外,步骤S605的处理涉及图20中例示的步骤S702的处理。
在步骤S603之后,即使对于在节点处已经分开的存储器地址发生TLB失误的情况下(在步骤S502中为是),OS也不会设置对应于在TLB中已经释放的逻辑地址的物理地址。在这种情况下,步骤S504的处理不会正常结束,而是发生访问错误。另外,在完成分开之后,与步骤S402相反,OS执行节点之间的通信,从而通知应用程序已经完成了对共享存储器的PA的访问。在主节点处已经释放了共享存储器的状态下应用程序对应于共享存储器的最后用户的情况下,请求主节点执行释放处理。
接下来,将参考图20描述图15中的步骤S205中表示的释放节点之间的共享存储器的处理的流程。图20为例示释放节点之间的共享存储器的处理的流程图。例如,在步骤S701中,由CPU 21执行的应用程序请求OS执行释放节点之间的共享存储器的处理。然后,在分开指定共享区域的所有用户的情况下,在步骤S702中,OS释放分配并结束处理。在还没有完成分开的情况下,在不执行分配释放处理的情况下处理结束。在步骤S605中,执行完成分配的实际处理。
接下来,将参考图21描述CPU 21向其它CPU发送存储器访问请求的处理的流程。图21为例示请求发出处理的流程的流程图。例如,在步骤S801中,CPU 21的算法单元发出逻辑地址。
然后,在步骤S802中,地址转换单元35将逻辑地址转换成物理地址。接下来,步骤S803中,缓存目录管理单元36获取物理地址并且管理缓存目录。换言之,缓存目录管理单元36发送由获取的物理地址表示的存储区的缓存状态。
接下来,在步骤S804中,缓存目录管理单元36通过参考节点映射34确定获取的物理地址是否为被分配到任何其它节点的物理地址。在步骤S805中,在确定获取物理地址不是被分配到位于任何其它节点处的存储器的物理地址的情况下(在步骤S804中为否),缓存目录管理单元36利用获取物理地址执行存储器访问。
另一方面,在步骤S806中,在获取的物理地址为被分配到位于任意其它节点的存储器的物理地址的情况下(在步骤S804中为是),缓存目录管理单元36从节点映射34获取与物理地址关联的CPUID。然后,在步骤S807中,包发送单元产生存储有CPUID和物理地址的包(换言之,存储器访问请求),将存储器访问请求发送至XB 2并结束处理。
接下来,将参考图22描述当CPU 21从任意其它CPU的接收存储器访问请求时执行的处理的流程。图22为例示当接收到请求时执行的处理的流程的流程图。在图22例示的示例中,将描述当CPU 21从任意其它CPU接收到“移入共享”或“排它移入”时执行的处理的流程。例如,在步骤S901中,CPU 21通过XB 2从任意其它CPU接收请求。
在这种情况下,在步骤S902中,CPU 21确定作为请求的目标的物理地址的预定位是否为“1”,从而确定作为请求的目标的物理地址是否对应于本地区域。在确定作为请求的目标的物理地址对应于本地区域的情况下(在步骤902中为是),在步骤S903中,CPU 21向作为请求源的CPU发回否定响应并结束处理。
另一方面,在作为请求的目标的物理地址不对应于本地区域的情况下(在步骤S902中为否),在步骤S904中,CPU 21管理缓存目录以维持一致性。另外,在步骤S905中,CPU 21确定由物理地址表示的存储区的状态。
然后,在步骤S906中,CPU 21根据确定的状态向其它的CPU发出命令并且在步骤S907中发送该状态。之后,在步骤S908中,CPU 21向请求源的CPU发送存储在由物理地址表示的存储区中的数据作为响应,并结束处理。
接下来,将参考图23描述当CPU 21接收响应时执行的处理的流程。图23为例示当CPU接收响应时执行的处理的流程的流程图。例如,在步骤S1001中,CPU 21接收响应。在这种情况下,在步骤S1002中,CPU21确定响应的内容是否正常。
在响应内容正常的情况下,换言之,在接收到作为请求的目标的数据的情况下(在步骤S1002中为是),在步骤S1003中,CPU 21使用数据执行正常的处理并结束处理。另一方面,在接收到否定响应的情况下(在步骤S1002中为否),在步骤S1004重,CPU 21确定否定响应的原因是否为访问错误。
在否定响应的原因不是访问错误的情况下(在步骤S1004中为否),在步骤S1005中,CPU 21执行正常的错误处置并结束处理。另一方面,在否定响应的原因是访问错误的情况下(在步骤S1004为是),在步骤S1006中,CPU 21在错误注册器中设置发生错误处的物理地址,执行陷入处理并结束处理。
第一实施例的优点
如上所述,信息处理系统1包括CPU 21至21c、存储器22至22c,以及将CPU 21至21c彼此连接的XB 2。另外,CPU 21包括用于逻辑地址和物理地址之间的转换的地址转换单元,以及用于物理地址和CPUID之间的转换的节点映射34。
CPU 21发送包括物理地址和CPUID的请求包。另外,在从另外的CPU接收到请求包的情况下,CPU 21基于存储在接收包中的物理地址确定作为访问目标的存储区为共享区域还是本地区域。
这样,信息处理系统1能够使用少量的硬件有效地访问节点之间的共享存储器。换言之,在信息处理系统1中,由于CPU 21利用用于执行物理地址和CPUID之间的转换的节点映射34执行地址转换,因此能够有效地执行存储器的访问。
另外,在CPU 21访问由另外的CPU访问的存储器的共享区域的情况下,CPU 21可以向XB 2发送仅存储物理地址和CPUID的包。相应地,信息处理系统1能够有效地执行存储器访问。
此外,在CPU 21从另外的CPU接收到请求包的情况下,信息处理系统1基于存储在接收包中的物理地址确定作为访问目标的存储区为共享区域还是本地区域。相应地,信息处理系统1能够维持存储在本地区域中的内核数据和用户数据的安全级别较高。另外,由于信息处理系统1将所有的存储器配置为可缓存,能够容易地掩盖存储器访问的延迟时间。
CPU 21使用类似于用来访问存储器22的方法访问由另外的CPU访问的存储器的共享区域。换言之,即使在作为访问目标的存储区存在于存储器22或另外的存储器中的情况下,包括在CPU 21中的算法单元31也可以仅输出逻辑地址。
相应地,即使在不执行排它地控制I/O等的处理和程序等的情况下,信息处理系统1也能够容易地访问共享区域,相应地,能够改进存储器访问的执行。另外,即使在不修改所执行的程序或OS的情况下,CPU 21也能够适当地使用共享存储器,于是,能够类似于通常的情况执行预取处理,从而能够改进存储器访问的性能。
另外,信息处理系统1向共享区域分配预定位为“1”的物理地址,并且向本地区域分配预定位为“0”的物理地址。相应地,仅通过确定物理地址的预定的一个位是否为“1”,CPU 21能够容易地确定作为访问目标的物理地址是否为共享区域的物理地址。于是,信息处理系统1能够执行有效的存储器访问。
另一方面,在来自另外的CPU的存储器访问目标被确定为对本地区域的访问的情况下,CPU 21发回否定响应。相应地,信息处理系统1防止对除了共享区域之外的区域的访问,从而能够防止错误。
另外,缓存目录管理单元36使用节点映射34将物理地址转换成与物理地址关联地存储在节点映射34中的CPUID。因此,CPU 21能够识别访问分配有作为访问目标的物理地址的存储器的CPU。
此外,构建块10至10e中的每一个包括重写节点映射34的服务处理器。相应地,信息处理系统1能够自由地向存储器22至22c中的每个存储器分配本地区域和共享区域。例如,在存储器22具有4TB容量的情况下,信息处理系统1能够将具有任意容量的存储区配置为在节点之间共享,比如将1TB分配到本地区域,将3TB分配到共享区域的情况。
此外,即使在增加新的CPU和新的存储器的情况下,或者去除CPU或存储器的情况下,信息处理系统1也能够通过服务处理器以容易的方式分配本地区域和共享区域。
此外,CPU 21通过使用目录控制缓存一致性,所述目录管理对存储在存储器22中的数据进行缓存的CPU。因此,即使在包括在信息处理系统1中的CPU的数量增加的情况下,信息处理系统1能够在不增加XB 2的吞吐量的情况下高效地维持缓存一致性。
更具体地,在信息处理系统1中,CPU之间的通信被限定为远程CPU和主CPU之间的通信,或者远程CPU、主CPU以及缓存更新的数据的本地CPU之间的通信。因此,信息处理系统1能够高效地维持缓存一致性。
另外,在发生缓存失误的情况下,CPU 21确定发生缓存失误处的物理地址是否为被分配到由另外的CPU访问的存储器的物理地址。在确定发生缓存失误处的物理地址为被分配到由另外的CPU访问的存储器的物理地址的情况下,CPU 21将物理地址转换成CPUID,产生存储有物理地址和CPUID的包,并发送产生的包。因此,CPU 21能够在不执行多余的地址转换处理的情况下访问存储器。
此外,在执行的应用程序请求获取共享区域的情况下,CPU 21设置用来执行由应用程序使用的逻辑地址和被分配到共享区域的物理地址之间的转换的TLB。因此,考虑对共享区域或者本地区域的访问,CPU 21能够在不修改执行的应用程序或OS的情况下访问存储器。
[b]第二实施例
直到目前,尽管已经描述了本发明的实施例,但是可以以多种形式执行除了上述实施例之外的实施例。因此,下文中,将属于本发明的另外的实施例描述为第二实施例。
(1)构建块
上述信息处理系统1包括各自具有4个CPU的构建块10至10e。然而,实施例不限于此,构建块10至10e中的每个构建块可以具有任意数量的CPU和由每个CPU访问的存储器。另外,CPU和存储器不需要一一对应,直接访问存储器的CPU可以为所有CPU的一部分。
(2)共享区域和本地区域的分配
上面描述的向共享区域和本地区域的物理地址的分配仅为示例,信息处理系统1可以向每个区域分配任意的物理地址。
例如,信息处理系统1可以将最低有效位为“0”的物理地址分配到共享区域,并且将最低有效位为“1”的物理地址分配到本地区域。在这种情况下,通过确定物理地址的最低有效位为“0”还是“1”,每个CPU能够容易地确定访问目标是否为共享区域。
另外,信息处理系统1可以将包括在第一半物理地址空间中的任意物理地址分配到共享区域,并且将包括在第二半物理地址空间中的任意物理地址分配到本地区域。在这种情况下,每个CPU能够通过确定物理地址的最高的一位为“0”还是“1”容易地确定访问目标是否为共享区域。此外,信息处理系统1可以将包括在第一半物理地址空间中的任意物理地址分配到本地区域,并且将包括在第二半物理地址空间中的任意物理地址分配到共享区域。
换言之,尽管信息处理系统1可以向共享区域和本地区域分配任意物理地址,通过将预定位具有相同的值的物理地址分配到共享区域,而将预定位具有不同于共享区域的值的物理地址分配到本地区域,仍能够容易地确定访问目标为共享区域还是本地区域。
(3)由CPU发送的包
上述CPU 21发送作为存储器访问请求的包括CPUID和PA的包。然而,实施例不限于此。换言之,CPU 21可以输出存储任意信息的包,只要能够唯一地识别访问作为访问目标的存储器的CPU即可。
另外,例如,CPU 21能够将CPUID转换成虚拟连接(VC)ID并存储VCID。此外,CPU 21可以存储诸如表示包中的数据长度的长度的信息。
(4)由CPU发出的命令
如上所述,CPU 21至21c中的每个CPU通过发出请求或命令维持缓存一致性。然而,上述请求或命令仅为示例,例如,CPU 21至21c可以发出比较并交换(CAS)命令。
如上所述,在CPU 21至21c发出CAS命令的情况下,即使当在多个CPU之间频繁发生排它控制竞争时,仍能在每个CPU的缓存中执行每个处理。于是,CPU 21至21c能够防止由于发生存储器访问造成的延迟,并且能够防止CPU之间的业务拥塞。
(5)通过管理程序的控制
在上述信息处理系统1中,已经描述了由OS进行对作为硬件的地址转换单元35的访问的示例。然而,实施例不局限于此,例如,操作虚拟机的管理程序(HPV)也可访问地址转换单元35。
换言之,在HPV操作的节点处,OS不会直接操作CPU 21至21c的诸如缓存或MMU的硬件资源,而是请求管理程序来操作。如上所述,在通过管理程序接受控制的情况下,CPU 21至21c中的每个CPU将虚拟地址转换成实际地址(RA),之后,再将实际地址转换成物理地址。
另外,在HPV操作的节点处,中断处理不会直接中断OS而是中断HPV。在这种情况下,HPV读取OS的中断处理处置器(hander)并执行中断。另外,由上述HPV执行的处理为用于操作虚拟机执行的公知处理。
(6)使用分区的处理
在上述信息处理系统1中,CPU 21至21c中的每个CPU通过使用一个节点映射发送存储器访问。然而,实施例不局限于此。例如,可以配置为使得构建块10至10e作为多个节点组操作,并且为每个节点组配置一个操作相同固件(管理程序)的逻辑分区。
在这种情况下,CPU 21至21c中的每个CPU具有表示访问目的地的CPU的节点映射和表示相同逻辑分区内的CPU的节点映射。如上所述,由于CPU 21至21c中的每个CPU具有表示包括在相同的逻辑分区内的CPU的节点映射,因此CPUs能够识别不会超出逻辑分区发送的特定包的发送范围,诸如发生错误的通知,停机请求,以及重置请求包。
下文中,将描述具有表示包括在相同的逻辑分区中的CPU的节点映射的CPU。图24为例示根据第二实施例的信息处理系统的图。如图24例示的,构建块10和10a操作逻辑分区#A,构建块10b至10d操作逻辑分区#B。
此处,在逻辑分区#A中,多个域#A至#C以及固件#A操作。另外,在逻辑分区#B中,多个域#D至#G以及固件#B操作。此处,固件#A和固件#B例如为管理程序。另外,在域#A中,应用程序和OS操作,并且,在其它域#B至#G中的每个域中,类似于域#A,应用程序和OS操作。
换言之,域#A至#G为其中应用程序和OS分别独立操作的虚拟机。此处,在包括在构建块10中的CPU 21至21c可以向包括在分区#A中的CPU发送上述特定包的同时,CPU 21至21c不会向包括在分区#B中的CPU发送特定包。
相应地,构建块10至10d中的每个的CPU具有表示包括在相同的逻辑分区中的CPU的CPUID的节点映射。例如,CPU 21具有这样的节点映射34,其中物理地址和连接到包括由物理地址表示的存储区的存储器的CPU的CPUID彼此关联地存储。另外,CPU 21具有这样的节点映射34,其中存储有包括在与CPU 21的分区相同的分区(也即是说,分区#A)中的CPU的CPUID。类似于节点映射34,假设由服务处理器24设置节点映射34a。
下文中,将参考附图描述表示包括在相同的逻辑分区中的CPU的CPUID的节点映射的示例。图25为例示分区的示例的图。例如,在图25例示的示例中,分区#A包括构建块#0。另外,在构建块#0中,CPU#0和地址区“#0”具有分配的存储器。
另外,分区#B包括构建块#1和#2。此处,在构建块#1中,CPU#4、CPU#5和地址区“#1”具有多个分配的存储器,且地址区“#2”具有一个被分配的存储器。另外,由CPU#4访问地址区“#1”的分配的存储器,并且由CPU#5访问地址区“#2”的分配的存储器。此外,在构建块#2中,CPU#8和地址区“#3”具有多个被分配的存储器。
接下来,将参考图26A至图26C描述图25中例示的包括在CPU#0中的节点映射和包括在CPU#4中的节点映射。首先,将参考图26A和图26B描述由分区#A的CPU存储的节点映射。图26A为例示由分区#A的CPU存储的节点映射的示例的图。图26B为例示表示分区#A的节点映射的示例的图。
在下面呈现的描述中,节点ID“0”表示构建块#0,节点ID“1”表示构建块#1,节点ID“2”表示构建块#2。另外,CPUID“0”为CPU#0的CPUID,CPUID“4”为CPU#4的CPUID,CPUID“5”为CPU#5的CPUID,且CPUID“8”为CPU#8的CPUID。
例如,在图26A例示的示例中,节点映射34例示地址区“0”存在于构建块#0中并且由CPU#0访问。另外,节点映射34例示地址区“1”存在于构建块#1中并且由CPU#4访问。此外,节点映射34例示地址区“2”存在于构建块#1并且由CPU#5访问。另外,节点映射34例示地址区”3”存在于构建块#2中并且由CPU#8访问。
图26B为例示表示分区#A的节点映射的示例的图。如图26B中所例示的,表示分区#A的节点映射包括每个入口的有效性、节点ID以及CPUID。例如,在图26B例示的示例中,节点映射表示在分区#A中包括构建块#0的CPU#0。
例如,在图25例示的示例中,CPU#0包括图26A和图26B例示的节点映射。在作出存储器访问的情况下,CPU#0通过使用图26A中表示的节点映射识别访问目的地的CPU。另一方面,在仅将特定的包发送到布置在相同分区内的CPU的情况下,CPU#0通过使用图26B中表示的节点映射识别发送目的地的CPU。换言之,作为示例,CPU#0将特定包发送到布置在由图26B中例示的节点映射表示的分区#A内的各CPU。
另一方面,为了进行存储器访问,CPU#4包括图26A和26C中例示的节点映射。此处,图26C为例示表示分区#B的节点映射的示例的图。在图26C例示的示例中,表示分区#B的节点映射表示构建块#1的CPU#4和#5和构建块#2的CPU#8存在于分区#B中。作为示例,CPU#4将特定包发送到布置在由图26C中例示的节点映射表示的分区#B内的CPU。
如上所述,CPU#1和#4存储其中地址区和CPUID彼此关联的节点映射以及表示分区的节点映射。然后,CPU#1和#4通过使用地址区和CPUID彼此关联的节点映射直接访问包括在其它节点中的存储器。另外,CPU#1通过使用表示分区#A的节点映射发送特定包。此外,CPU#4通过使用表示分区#B的节点映射发送特定包。
如上所述,每个CPU可包括对于包括CPU的每个分区具有不同值的节点映射。在每个CPU具有对于包括CPU的每个分区具有不同值的节点映射的情况下,能够防止将特定包发送出分区。
另外,类似于第一实施例,每个CPU可以通过起始地址和地址掩码或者起始地址和长度表示作为访问目标的地址区。换言之,通过使用起始地址和地址掩码或者起始地址和长度,CPU#1和CPU#4使用表示作为访问目标的地址区的节点映射识别作为访问目标的节点。另外,CPU#1和CPU#4通过使用表示相互不同分区的节点映射发送特定的包。
根据实施例,能够有效地执行由每个算法处理单元作出的存储器访问。
Claims (10)
1.一种信息处理设备,包括:
多个节点;以及
将所述多个节点彼此连接的互联部,
其中,所述多个节点中的每个节点包括:
处理器,
存储单元,
第一转换单元,执行逻辑地址和物理地址之间的转换,
第二转换单元,执行所述物理地址和用于标识包括在所述多个节点的每个节点中的处理器的处理器标识信息之间的转换,
发送单元,发送包括所述物理地址和所述处理器标识信息的发送数据,以访问由所述物理地址指示的存储区,
接收单元,接收从另一节点通过所述互联部发送的所述发送数据,以及
本地确定单元,基于包括在由所述接收单元接收的所述发送数据中的所述物理地址,确定访问是对能够从包括所述存储单元的节点访问的所述存储单元的本地区域的访问,还是对能够从所述多个节点访问的所述存储单元的共享区域的访问。
2.根据权利要求1所述的信息处理设备,其中
存储单元的所述共享区域被分配到位于预定位置的位具有相同的值的物理地址,
所述存储单元的所述本地区域被分配到位于所述预定位置的位具有与位于被分配到所述共享区域的所述物理地址的所述预定位置的所述位的值不同的值的物理地址,以及
所述本地确定单元根据位于包括在所述发送数据中的所述物理地址的所述预定位置的所述位的值,确定访问是对所述本地区域的所访问还是对所述共享区域的访问。
3.根据权利要求1所述的信息处理设备,其中
所述本地区域和所述共享区域被分配到包括在所述多个节点的每个节点中的存储单元的所有物理地址,以及
所述本地确定单元根据包括在所述发送数据中的所述物理地址的最高有效位的值,确定访问为对所述本地区域的访问还是对所述共享区域的访问。
4.根据权利要求1所述的信息处理设备,其中
所述发送单元在所述本地确定单元确定所述访问是对所述本地区域的访问的情况下,向所述发送数据的发送源的节点发送指示不准许访问的否定响应。
5.根据权利要求1所述的信息处理设备,还包括:
存储装置,彼此关联地存储所述处理器标识信息和被分配到包括由所述处理器标识信息表示的所述处理器的所述节点的所述存储单元的物理地址,其中
所述第二转换单元将所述物理地址转换为与所述物理地址关联地存储在所述存储装置中的所述处理器标识信息。
6.根据权利要求5所述的信息处理设备,还包括:
控制装置,重写存储在所述存储装置中的所述处理器标识信息和所述物理地址。
7.根据权利要求1所述的信息处理设备,其中,所述多个节点的每个节点包括目录控制单元,所述目录控制单元通过使用表示对来自包括在所述节点中的所述存储单元的数据进行缓存的节点的目录,维持对由所述节点中的任一个缓存的数据的标识。
8.根据权利要求1所述的信息处理设备,其中,所述多个节点的每个节点还包括:
缓存存储单元,对来自包括在所述多个节点中的所述存储单元的数据进行缓存;以及
确定单元,在发生缓存错误的情况下,确定发生所述缓存错误的物理地址是否为包括在任意其它节点中的存储单元的物理地址,其中
所述第二转换单元在所述确定单元已经确定发生所述缓存错误的所述物理地址为包括在任意其它节点中的存储单元的物理地址的情况下,将所述物理地址转换成处理器标识信息。
9.根据权利要求2所述的信息处理设备,其中,所述处理器执行设置所述第一转换单元的操作系统,以在应用程序请求获取所述共享区域的情况下,执行由所述应用程序使用的所述逻辑地址和被分配到所述共享区域的所述物理地址之间的转换。
10.一种由多个节点的每个节点执行的存储器访问方法,所述方法包括:
在逻辑地址和物理地址之间以及在所述物理地址和用于标识包括在所述多个节点的每个节点中的处理器的处理器标识信息之间进行转换;
发送包括所述物理地址和所述处理器标识信息的发送数据,以访问由所述物理地址指示的存储区;
通过互联部接收从另一节点发送的所述发送数据;以及
基于包括在所接收的所述发送数据中的所述物理地址,确定访问是对能够从包括存储单元的所述节点访问的所述存储单元的本地区域的访问,还是对能够从所述多个节点访问的所述存储单元的共享区域的访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-279022 | 2011-12-20 | ||
JP2011279022A JP5573829B2 (ja) | 2011-12-20 | 2011-12-20 | 情報処理装置およびメモリアクセス方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103198022A true CN103198022A (zh) | 2013-07-10 |
CN103198022B CN103198022B (zh) | 2016-08-03 |
Family
ID=47044865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210424461.2A Expired - Fee Related CN103198022B (zh) | 2011-12-20 | 2012-10-30 | 信息处理设备和存储器访问方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20130159638A1 (zh) |
EP (1) | EP2608044B1 (zh) |
JP (1) | JP5573829B2 (zh) |
KR (1) | KR101325888B1 (zh) |
CN (1) | CN103198022B (zh) |
TW (1) | TW201327402A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375951A (zh) * | 2013-08-14 | 2015-02-25 | 索尼公司 | 存储器控制装置及其控制方法、主计算机、信息处理系统 |
CN104637534A (zh) * | 2013-11-14 | 2015-05-20 | 爱思开海力士有限公司 | 半导体存储器件及操作其的方法 |
CN107402892A (zh) * | 2016-05-20 | 2017-11-28 | 瑞萨电子株式会社 | 半导体器件及其存储器访问控制方法 |
CN111382098A (zh) * | 2018-12-28 | 2020-07-07 | 富士通个人电脑株式会社 | 信息处理系统 |
CN113168384A (zh) * | 2018-11-30 | 2021-07-23 | 日本电气株式会社 | 通信设备、信息处理系统和通信方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5590022B2 (ja) * | 2011-12-28 | 2014-09-17 | 富士通株式会社 | 情報処理装置、制御方法および制御プログラム |
US9697047B2 (en) * | 2012-09-25 | 2017-07-04 | International Business Machines Corporation | Cooperation of hoarding memory allocators in a multi-process system |
JP2015152949A (ja) | 2014-02-10 | 2015-08-24 | 株式会社東芝 | ストレージシステム |
US20170075816A1 (en) * | 2014-04-24 | 2017-03-16 | Hitachi, Ltd. | Storage system |
JP5800058B2 (ja) * | 2014-05-26 | 2015-10-28 | 富士通株式会社 | 情報処理装置、制御方法および制御プログラム |
JP2016004461A (ja) | 2014-06-18 | 2016-01-12 | 富士通株式会社 | 情報処理装置、入出力制御装置および情報処理装置の制御方法 |
JP6551024B2 (ja) | 2015-08-04 | 2019-07-31 | 富士通株式会社 | 情報処理システム、情報処理方法、情報処理プログラムおよび情報処理装置 |
JP6515779B2 (ja) * | 2015-10-19 | 2019-05-22 | 富士通株式会社 | キャッシュ方法、キャッシュプログラム及び情報処理装置 |
WO2017188036A1 (ja) | 2016-04-27 | 2017-11-02 | 日本電気株式会社 | アクセス制御装置、アクセス制御システム、アクセス制御方法、及び、アクセス制御プログラムが格納された記録媒体 |
US10034407B2 (en) | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
US20180150256A1 (en) | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
EP3549350A4 (en) | 2016-11-29 | 2021-03-24 | Intel Corporation | MILLIMETRIC WAVE CHASSIS INTERCONNECTION TECHNOLOGIES |
US10445249B2 (en) * | 2017-11-09 | 2019-10-15 | International Business Machines Corporation | Facilitating access to memory locality domain information |
US11436342B2 (en) | 2019-12-26 | 2022-09-06 | Intel Corporation | TDX islands with self-contained scope enabling TDX KeyID scaling |
US20220206951A1 (en) * | 2020-12-24 | 2022-06-30 | Intel Corporation | Method and apparatus for run-time memory isolation across different execution realms |
US12111775B2 (en) | 2020-12-26 | 2024-10-08 | Intel Corporation | Memory hub providing cache coherency protocol system method for multiple processor sockets comprising multiple XPUs |
US20230089812A1 (en) * | 2021-09-23 | 2023-03-23 | Samsung Electronics Co., Ltd. | Systems and methods for workload distribution across processing units |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835950A (en) * | 1996-07-12 | 1998-11-10 | Samsung Electronics Co., Ltd. | Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus |
US6088770A (en) * | 1997-02-27 | 2000-07-11 | Hitachi, Ltd. | Shared memory multiprocessor performing cache coherency |
US20090089537A1 (en) * | 2007-09-28 | 2009-04-02 | Sun Microsystems, Inc. | Apparatus and method for memory address translation across multiple nodes |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5117350A (en) * | 1988-12-15 | 1992-05-26 | Flashpoint Computer Corporation | Memory address mechanism in a distributed memory architecture |
JP2846888B2 (ja) * | 1989-03-17 | 1999-01-13 | 株式会社日立製作所 | 分散共有メモリを持つマルチプロセッサシステム |
US5991866A (en) * | 1992-03-25 | 1999-11-23 | Tm Patents, Lp | Method and system for generating a program to facilitate rearrangement of address bits among addresses in a massively parallel processor system |
JP3098344B2 (ja) * | 1992-12-18 | 2000-10-16 | 富士通株式会社 | データ転送処理方法及びデータ転送処理装置 |
JPH0830568A (ja) * | 1994-07-20 | 1996-02-02 | Fujitsu Ltd | 分散メモリ型並列計算機のキャッシュ制御方式 |
US5897664A (en) * | 1996-07-01 | 1999-04-27 | Sun Microsystems, Inc. | Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies |
US6295584B1 (en) * | 1997-08-29 | 2001-09-25 | International Business Machines Corporation | Multiprocessor computer system with memory map translation |
US6647508B2 (en) * | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6633958B1 (en) * | 1997-11-17 | 2003-10-14 | Silicon Graphics, Inc. | Multiprocessor computer system and method for maintaining cache coherence utilizing a multi-dimensional cache coherence directory structure |
JP2000067009A (ja) * | 1998-08-20 | 2000-03-03 | Hitachi Ltd | 主記憶共有型マルチプロセッサ |
JP4123621B2 (ja) * | 1999-02-16 | 2008-07-23 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法 |
US6457100B1 (en) * | 1999-09-15 | 2002-09-24 | International Business Machines Corporation | Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls |
US6922766B2 (en) * | 2002-09-04 | 2005-07-26 | Cray Inc. | Remote translation mechanism for a multi-node system |
JP4572169B2 (ja) * | 2006-01-26 | 2010-10-27 | エヌイーシーコンピュータテクノ株式会社 | マルチプロセッサシステム及びその動作方法 |
US8028128B2 (en) * | 2007-10-10 | 2011-09-27 | International Business Machines Corporation | Method for increasing cache directory associativity classes in a system with a register space memory |
-
2011
- 2011-12-20 JP JP2011279022A patent/JP5573829B2/ja not_active Expired - Fee Related
-
2012
- 2012-09-10 US US13/608,681 patent/US20130159638A1/en not_active Abandoned
- 2012-09-12 TW TW101133283A patent/TW201327402A/zh unknown
- 2012-10-09 EP EP12187771.6A patent/EP2608044B1/en not_active Not-in-force
- 2012-10-29 KR KR1020120120722A patent/KR101325888B1/ko not_active IP Right Cessation
- 2012-10-30 CN CN201210424461.2A patent/CN103198022B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835950A (en) * | 1996-07-12 | 1998-11-10 | Samsung Electronics Co., Ltd. | Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus |
US6088770A (en) * | 1997-02-27 | 2000-07-11 | Hitachi, Ltd. | Shared memory multiprocessor performing cache coherency |
US20090089537A1 (en) * | 2007-09-28 | 2009-04-02 | Sun Microsystems, Inc. | Apparatus and method for memory address translation across multiple nodes |
CN102023932A (zh) * | 2009-09-18 | 2011-04-20 | 英特尔公司 | 为本地与远程物理存储器之间的共享虚拟存储器提供硬件支持 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104375951A (zh) * | 2013-08-14 | 2015-02-25 | 索尼公司 | 存储器控制装置及其控制方法、主计算机、信息处理系统 |
CN104375951B (zh) * | 2013-08-14 | 2019-04-16 | 索尼公司 | 存储器控制装置及其控制方法、主计算机、信息处理系统 |
CN104637534A (zh) * | 2013-11-14 | 2015-05-20 | 爱思开海力士有限公司 | 半导体存储器件及操作其的方法 |
CN104637534B (zh) * | 2013-11-14 | 2020-01-17 | 爱思开海力士有限公司 | 半导体存储器件及操作其的方法 |
CN107402892A (zh) * | 2016-05-20 | 2017-11-28 | 瑞萨电子株式会社 | 半导体器件及其存储器访问控制方法 |
CN107402892B (zh) * | 2016-05-20 | 2023-06-27 | 瑞萨电子株式会社 | 半导体器件及其存储器访问控制方法 |
CN113168384A (zh) * | 2018-11-30 | 2021-07-23 | 日本电气株式会社 | 通信设备、信息处理系统和通信方法 |
CN113168384B (zh) * | 2018-11-30 | 2024-06-21 | 日本电气株式会社 | 通信设备、信息处理系统和通信方法 |
CN111382098A (zh) * | 2018-12-28 | 2020-07-07 | 富士通个人电脑株式会社 | 信息处理系统 |
CN111382098B (zh) * | 2018-12-28 | 2024-02-23 | 富士通个人电脑株式会社 | 信息处理系统 |
Also Published As
Publication number | Publication date |
---|---|
KR101325888B1 (ko) | 2013-11-07 |
US20130159638A1 (en) | 2013-06-20 |
EP2608044B1 (en) | 2014-11-26 |
EP2608044A1 (en) | 2013-06-26 |
JP5573829B2 (ja) | 2014-08-20 |
JP2013130976A (ja) | 2013-07-04 |
KR20130071349A (ko) | 2013-06-28 |
TW201327402A (zh) | 2013-07-01 |
CN103198022B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103198022A (zh) | 信息处理设备和存储器访问方法 | |
CN103294616B (zh) | 信息处理设备和控制方法 | |
US6243794B1 (en) | Data-processing system with CC-NUMA (cache-coherent, non-uniform memory access) architecture and remote cache incorporated in local memory | |
CN101206623B (zh) | 迁移虚拟端点的系统和方法 | |
CN101206621B (zh) | 迁移无状态虚拟功能的系统和方法 | |
CN103198046B (zh) | 信息处理装置和控制方法 | |
CN100444134C (zh) | 数据处理系统和方法 | |
US20180349292A1 (en) | Caching Policy In A Multicore System On A Chip (SOC) | |
US20040230750A1 (en) | Memory management for a symmetric multiprocessor computer system | |
JP2016509700A (ja) | クラスタ化されたコンピュータ・システムで通信チャネルのフェイルオーバを実行する方法、装置、およびプログラム製品(ハイ・パフォーマンス・コンピューティング(hpc)ネットワークにおける通信チャネルのフェイルオーバ) | |
US8145870B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation | |
US20140201468A1 (en) | Accelerated recovery for snooped addresses in a coherent attached processor proxy | |
KR20140069079A (ko) | 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템 | |
US20200050547A1 (en) | Programmable cache coherent node controller | |
JP2000250883A (ja) | 不均等メモリ・アクセス・システムにおいてトランザクションのキャンセルによるデータ損失を避けるための方法およびシステム | |
JP2014160502A (ja) | 情報処理装置およびメモリアクセス方法 | |
US20090182893A1 (en) | Cache coherence in a virtual machine managed system | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership | |
US20060123196A1 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US11449489B2 (en) | Split transaction coherency protocol in a data processing system | |
US10394636B2 (en) | Techniques for managing a hang condition in a data processing system with shared memory | |
US11947459B2 (en) | Multipath memory with static or dynamic mapping to coherent or MMIO space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20171030 |