KR101325888B1 - 정보 처리 장치 및 메모리 액세스 방법 - Google Patents

정보 처리 장치 및 메모리 액세스 방법 Download PDF

Info

Publication number
KR101325888B1
KR101325888B1 KR1020120120722A KR20120120722A KR101325888B1 KR 101325888 B1 KR101325888 B1 KR 101325888B1 KR 1020120120722 A KR1020120120722 A KR 1020120120722A KR 20120120722 A KR20120120722 A KR 20120120722A KR 101325888 B1 KR101325888 B1 KR 101325888B1
Authority
KR
South Korea
Prior art keywords
cpu
physical address
node
address
memory
Prior art date
Application number
KR1020120120722A
Other languages
English (en)
Other versions
KR20130071349A (ko
Inventor
히데유키 고이누마
세이시 오카다
고 스기자키
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20130071349A publication Critical patent/KR20130071349A/ko
Application granted granted Critical
Publication of KR101325888B1 publication Critical patent/KR101325888B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1441Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1072Decentralised address translation, e.g. in distributed shared memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-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

본 발명은 효율적인 메모리 액세스를 행하는 것을 과제로 한다.
정보 처리 시스템이 갖는 복수의 CPU(21∼21c)는 논리 어드레스와 물리 어드레스와의 변환을 행하는 어드레스 변환부(35)를 갖는다. 또한, 각 CPU(21∼21c)는 물리 어드레스와 각 노드의 CPU(21∼21c)를 식별하는 CPUID와의 변환을 행하는 노드맵(34)을 갖는다. 또한, 각 CPU(21∼21c)는 논리 어드레스로부터 변환된 물리 어드레스와, 물리 어드레스로부터 변환된 CPUID를 포함하는 전송 데이터를 XB(2)를 통해 송신한다. 또한, 각 CPU(21∼21c)는 XB(2)를 통해 전송 데이터를 수신하면, 전송 데이터에 포함되는 물리 어드레스에 기초하여, 자신이 액세스하는 메모리(22∼22c)의 로컬 영역과 공유 영역 중 어느 영역으로의 액세스인지 판정한다.

Description

정보 처리 장치 및 메모리 액세스 방법{INFORMATION PROCESSING APPARATUS AND MEMORY ACCESS METHOD}
본 발명은 정보 처리 장치 및 메모리 액세스 방법에 관한 것이다.
종래, 복수의 연산 처리 장치가 주기억 장치를 공유하는 SMP(Symmetric MultiProcessor) 기술이 알려져 있다. 이러한 SMP 기술이 적용된 정보 처리 시스템의 일례로서, 연산 처리 장치와 주기억 장치를 갖는 복수의 노드를 동일한 버스로 접속하여, 버스를 통해 각 연산 처리 장치가 각 주기억 장치를 공유하는 정보 처리 시스템이 알려져 있다.
이러한 정보 처리 시스템에서는, 예컨대 스누프 방식을 이용하여 각 노드의 연산 처리 장치가 캐쉬한 데이터의 코히런시를 유지한다. 그러나, 스누프 방식에서는, 각 연산 처리 장치가 캐쉬한 데이터의 갱신 상황을 버스를 통해 주고 받기 때문에, 노드의 수가 증가함에 따라서, 버스에 병목 현상이 발생 되어 메모리 액세스의 성능이 악화된다.
이러한 버스의 병목 현상을 피하기 위해서, 인터커넥터를 이용하여 복수의 노드를 접속하고, 각 노드의 연산 처리 장치가 각 노드의 주기억 장치를 공유하는 NUMA(Non Uniform Memory Access) 기술이 알려져 있다.
이러한 NUMA 기술이 적용된 정보 처리 시스템에서는, 각 노드의 주기억 장치의 기억 영역이 공통의 물리 어드레스 공간에 대하여 일의적으로 맵핑된다. 그리고, 각 노드의 연산 장치는 액세스 대상의 물리 어드레스가 나타내는 기억 영역이 존재하는 노드를 식별하고, 인터커넥터를 통해 식별한 노드의 주기억 장치에 액세스한다.
특허문헌 1 : 일본 특허 공개 제2000-235558호 공보
비특허문헌 1 : Computer Architecture : A Quantitative Approach, Second Edition, John L. Hennessy, David A. Patterson, §8.4
여기서, 전술한 NUMA의 기술에서는, 각 노드의 연산 처리 장치가 캐쉬한 데이터의 코히런시를 유지할 수 없다. 그래서, 각 노드의 연산 처리 장치가 캐쉬한 데이터의 코히런시를 유지하는 기구를 갖춘 ccNUMA(Cache Coherent NUMA)를 채용하는 것이 생각된다.
그러나, ccNUMA를 적용한 정보 처리 시스템에서는, 각 노드가 액세스 대상으로 되는 기억 영역이 존재하는 노드를 식별하기 때문에, 어드레스 변환을 효율적으로 행할 필요가 있다. 또한, 각 노드는, 주기억 장치를 자(自)노드만이 이용하는 기억 영역과, 타(他)노드와 공용하는 기억 영역으로 분할하는 경우가 있다. 이러한 경우에, 각 노드는 액세스 대상 기억 영역이 다른 노드와 공용하는 기억 영역인지를 효율적으로 행할 필요가 있다.
본 발명은, 하나의 측면에서는, 각 연산 처리 장치에 의한 메모리 액세스를 효율적으로 행할 수 있다.
하나의 측면에서는, 각각이 프로세서 및 기억 장치를 갖추는 복수의 노드와, 각 노드 사이를 접속하는 인터커넥터를 갖는 정보 처리 장치이다. 이러한 정보 처리 장치가 갖는 각 노드는 논리 어드레스와 물리 어드레스와의 변환을 행한다. 또한, 각 노드는 물리 어드레스와 각 노드에 구비된 프로세서를 식별하는 프로세서 식별 정보와의 변환을 행하는 제2 변환부를 갖는다. 또한, 각 노드는, 제1 변환부에 의해서 논리 어드레스로부터 변환된 물리 어드레스와, 상기 제2 변환부에 의해서 물리 어드레스로부터 변환된 프로세서 식별 정보를 포함하는 전송 데이터를 송신한다. 또한, 각 노드는 다른 노드로부터 인터커넥터를 통해 송신한 전송 데이터를 수신하면, 전송 데이터에 포함되는 물리 어드레스에 기초하여, 자(自)노드 내의 액세스에 이용되는 로컬 영역과, 타노드로부터도 액세스 가능한 공유 영역의 어느 영역으로의 액세스인지를 판정한다.
일 실시형태에 따르면, 각 연산 처리 장치에 의한 메모리 액세스를 효율적으로 행할 수 있다.
도 1은 실시예 1에 따른 정보 처리 시스템의 일례를 설명하기 위한 도면이다.
도 2는 실시예 1에 따른 빌딩 블록의 기능 구성을 설명하기 위한 도면이다.
도 3은 실시예 1에 따른 빌딩 블록의 메모리로 분류되는 물리 어드레스의 범위를 설명하기 위한 도면이다.
도 4는 실시예 1에 따른 정보 처리 시스템이 각 메모리로 분류하는 물리 어드레스를 설명하기 위한 도면이다.
도 5는 물리 어드레스 분류의 바리에이션을 설명하기 위한 제1 도면이다.
도 6은 물리 어드레스 분류의 바리에이션을 설명하기 위한 제2 도면이다.
도 7은 실시예 1에 따른 CPU의 기능 구성을 설명하기 위한 도면이다.
도 8은 실시예 1에 따른 노드맵이 기억하는 정보의 일례를 설명하기 위한 도면이다.
도 9는 노드맵이 기억하는 정보의 바리에이션의 일례를 설명하기 위한 제1 도면이다.
도 10은 노드맵이 기억하는 정보의 바리에이션의 일례를 설명하기 위한 제2 도면이다.
도 11a는 캐쉬 태그의 일례를 설명하기 위한 도면이다.
도 11b는 실시예 1에 따른 CPU가 송신하는 패킷을 설명하기 위한 도면이다.
도 12는 실시예 1에 따른 CPU가 요청을 송신하는 처리의 일례를 설명하기 위한 도면이다.
도 13은 실시예 1에 따른 CPU가 패킷을 수신했을 때에 실행하는 처리의 일례를 설명하기 위한 도면이다.
도 14는 노드맵을 설정하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 15는 공유 영역을 제어하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 16은 공유 메모리의 할당 처리를 설명하기 위한 흐름도이다.
도 17은 공유 메모리 어태치 처리를 설명하기 위한 흐름도이다.
도 18은 애플리케이션이 공유 메모리를 사용하는 처리를 설명하기 위한 흐름도이다.
도 19는 노드 사이 공유 메모리의 디태치 처리를 설명하기 위한 흐름도이다.
도 20은 노드 사이 공유 메모리의 해방 처리를 설명하기 위한 흐름도이다.
도 21은 요청을 발행하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 22는 요청을 수신했을 때에 실행하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 23은 CPU가 응답을 수신했을 때에 실행하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 24는 실시예 2에 따른 정보 처리 시스템을 설명하기 위한 도면이다.
도 25는 파티션의 일례를 설명하기 위한 도면이다.
도 26a는 파티션 #A의 CPU가 기억하는 노드맵의 일례를 설명하기 위한 도면이다.
도 26b는 파티션 #A를 나타내는 노드맵의 일례를 설명하기 위한 도면이다.
도 26c는 파티션 #B를 나타내는 노드맵의 일례를 설명하기 위한 도면이다.
이하에 첨부 도면을 참조하여 본원에 따른 정보 처리 장치 및 메모리 액세스 방법에 관해서 설명한다.
[실시예 1]
우선, 본원에 따른 실시예의 설명에 앞서서, 종래의 정보 처리 시스템이 갖는 문제의 구체적인 예에 관해서 설명한다. 예컨대, 종래의 정보 처리 시스템은 CPU(Central Processing Unit)가 공유 메모리 영역에 액세스하기 위해서 출력한 논리 어드레스를 공유 메모리 공간 어드레스로 변환한다. 그리고, 정보 처리 시스템은 공유 메모리 공간을 어드레스를 물리 어드레스로 변환함으로써, CPU의 액세스 대상이 되는 기억 영역을 식별한다.
그러나, 이와 같이 논리 어드레스를 공유 메모리 공간 어드레스로 변환하고, 변환 후의 공유 메모리 공간 어드레스를 물리 어드레스로 변환하는 수법에서는, 어드레스 변환에 드는 하드웨어의 물량이 많아져 버린다. 또한, 논리 어드레스를 공유 메모리 공간 어드레스로 변환하고, 변환 후의 공유 메모리 공간 어드레스를 물리 어드레스로 변환하는 수법에서는 어드레스 변환에 드는 시간이 증가해 버린다.
또한, 종래의 정보 처리 시스템은, CPU가 공유 메모리 공간의 데이터를 캐쉬할 때에, 모든 CPU에 대하여 캐쉬 정보를 송신함으로써 코히런시를 유지한다. 그러나, 이와 같이 모든 CPU에 대하여 캐쉬 정보를 송신하는 수법에서는 병목 현상이 발생하여, 메모리 액세스의 성능이 악화되어 버린다. 또한, 종래의 정보 처리 시스템은, CPU를 증설한 경우에, CPU의 개수 증가에 비례하여 버스 트래픽이 증가하기 때문에 병목 현상이 발생하여 메모리 액세스의 성능이 악화되어 버린다.
또한, 예컨대 노드는 자(自)노드만이 액세스하는 로컬 영역에 커널 데이터나 유저 데이터를 저장한다. 이 때문에, 각 노드는 로컬 영역에 저장한 데이터의 시큐리티를 확보하여 소프트웨어 버그에 대한 내성을 높이기 때문에, 액세스 대상이 되는 기억 영역이 타노드로부터 액세스 가능한 공유 메모리 영역인지 액세스 불가능한 로컬 메모리 영역인지의 판단이 필요하다.
이 때문에, 종래의 정보 처리 시스템에 있어서는, 로컬 영역에 기억된 데이터는 캐쉬 가능하게 하고, 공유 영역에 기억된 데이터는 캐쉬 불능으로 한다. 그러나, 이와 같이 공유 영역에 기억된 데이터를 캐쉬 불능으로 하는 수법에서는, 메모리 액세스에 있어서의 레이턴시가 증대되어 버린다. 한편, 다른 노드로부터 메모리 액세스가 이루어질 때마다 액세스 대상이 공유 영역인지 로컬 영역인지를 판단하는 경우에는, 판단을 하기 위한 회로 규모가 증대되며, 액세스에 있어서의 레이턴시가 증대되어 버린다.
또한, 종래의 정보 처리 시스템에 있어서는, 노드는 다른 노드가 갖는 메모리에 액세스할 때마다, 특수한 채널 장치나 DMA(Direct Memory Access) 엔진의 프로그램 실행이 필요하기 때문에, 메모리 액세스의 성능이 열화되어 버린다. 또한, 종래의 정보 처리 시스템에서는, 메모리가 갖는 기억 영역 중 어느 영역을 공유 영역으로 하는지를 고정적으로 설정한다. 이 때문에, 예컨대 종래의 정보 처리 시스템에서는 시스템을 정지시키는 일없이 노드를 추가함으로써 공유 영역을 추가할 수 없다.
또한, 종래의 정보 처리 시스템에서는, 채널이나 DMA 경로를 통한 메모리 액세스를 행하기 위한 하드웨어가 추가된다. 이 때문에, 종래의 정보 처리 시스템에서는, 노드 사이에서 메모리를 공유하지 않는 시스템과 비교하여, 설치되는 하드웨어가 크게 다르다. 이 결과, 종래의 정보 처리 시스템에서는, 노드 사이에서 메모리를 공유하는 경우에, OS(Operating System) 등의 프로그램을 대폭 변경해야만 한다.
이하의 설명에서는, 실시예 1로서, 전술한 문제를 해결하는 정보 처리 시스템의 일례에 관해서 설명한다. 우선, 도 1을 이용하여 정보 처리 시스템의 구성예에 관해서 설명한다. 도 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, 21b) 및 메모리(22b, 22c)에 관해서는 기재를 생략했다.
XB(2)는 각 빌딩 블록(10∼10e)을 서로 접속하는 크로스바 스위치이다. 또한, XB(2)가 갖는 서비스 프로세서(2b)는 각 빌딩 블록(10∼10e)이 갖는 서비스 프로세서를 관리하는 서비스 프로세서, 즉 마스터가 되는 서비스 프로세서이다. 또한, 관리 단말(3)은 관리용 네트워크를 통해 각 빌딩 블록(10∼10e)이 갖는 서비스 프로세서의 설정이나 제어를 행하는 단말이다. 한편, 소수의 노드가 접속되는 소규모 구성의 경우, XB(2)를 통하지 않고서 빌딩 블록끼리를 직접 접속하더라도 좋다.
각 빌딩 블록(10∼10e)은 각각 독립적으로 OS를 동작시킨다. 즉, 각 빌딩 블록(10∼10e)이 실행하는 OS는 빌딩 블록마다 다른 파티션으로 동작한다. 여기서, 파티션이란, 동일한 OS가 동작하고, 동작하고 있는 OS로부터 보아 하나의 시스템으로서 동작하는 빌딩 블록의 군(群)을 나타낸다.
예컨대, 빌딩 블록(10∼10a)이 파티션 #A로서 동작하고, 빌딩 블록(10b∼10d)이 파티션 #B로서 동작한다. 이러한 경우에는, 빌딩 블록(10)이 동작시키는 OS는 빌딩 블록(10, 10a)이 하나의 시스템으로서 동작하고 있다고 식별하고, 빌딩 블록(10b)이 동작시키는 OS는 빌딩 블록(10b∼10d)이 하나의 시스템으로서 동작하고 있다고 식별한다.
이어서, 도 2를 이용하여, 빌딩 블록의 구성예에 관해서 설명한다. 도 2는 실시예 1에 따른 빌딩 블록의 기능 구성을 설명하기 위한 도면이다. 도 2에 도시하는 예에서, 빌딩 블록(10)은 노드(20), 서비스 프로세서(24), XB 접속부(27, 27a), PCIe(Peripheral Component Interconnect Express) 접속부(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), 각 CPU(21∼21c)는, 예컨대 JTAG(Joint Test Action Group)나 I2C(Inter-Integrated Circuit)로 접속되어 있다.
예컨대, 도 2에 도시하는 예에서, CPU(21∼21c)는 연산 처리를 실행하는 연산 처리 장치이다. 또한, 각 CPU(21∼21c)에는 각각 독립된 메모리(22∼22c)가 접속되어 있다. 또한, 각 CPU(21∼21c)는 메모리(22∼22c)나 다른 빌딩 블록(10a∼10e)이 갖는 메모리를 공유 메모리로서 이용한다. 또한, 각 CPU(21∼21c)는 후술하는 바와 같이, 물리 어드레스와, 물리 어드레스가 할당된 메모리와 접속된 CPU의 식별자인 CPUID(identification)를 대응시킨 노드맵을 갖는다.
그리고, 예컨대, CPU(21)는 액세스 대상이 되는 물리 어드레스와 대응된 CPUID가 노드(20)와는 다른 노드가 갖는 CPU를 나타내는 경우에는, XB 접속부(27) 및 XB(2)를 통해 다른 노드에 메모리 액세스의 요청을 송신한다. 또한, CPU(21)는 액세스 대상이 되는 물리 어드레스와 대응된 CPUID가 CPU(21a∼21c)를 나타내는 경우에는, CPU 사이의 직접 접속을 통해 메모리 액세스의 요청을 송신한다. 즉, CPU(21)는 액세스 대상이 되는 물리 어드레스와 대응된 CPUID가 CPU(21) 이외의 CPU이며, 자신과 동일한 노드(20)에 존재하는 CPU를 나타내는 경우에는, CPU 사이의 직접 접속을 통해 메모리 액세스의 요청을 송신한다.
또한, CPU(21)는 자신과 접속된 메모리에 대한 요청을 다른 노드로부터 수신한 경우에는, 요청 대상이 되는 데이터를 자신과 접속된 메모리(22)로부터 판독하여 요청원에게 송신한다.
한편, 각 CPU(21∼21c)는 실행 중인 애플리케이션이 공유 메모리의 할당을 요구한 경우에는, 서로 통신을 하여, 애플리케이션이 사용하는 공유 메모리의 할당을 행하는 기능을 갖는다. 또한, 각 CPU(21∼21c)는 TLB를 이용한 어드레스 변환을 행하며, TLB 미스가 발생했을 때에, 트랩 처리를 실행하는 등, 종래의 CPU와 같은 처리를 실행하는 기능을 갖는 것으로 한다.
메모리(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」로 되는 물리 어드레스가 공유 영역으로 분류된다. 상세한 예를 들면, 메모리(22∼22c)의 로컬 영역에 대해서는, 물리 어드레스 공간 중, 「0」∼「0x63ff ffff ffff」에 포함되는 물리 어드레스가 분류된다. 또한, 메모리(22∼22c)의 공유 영역에 대해서는, 물리 어드레스 공간 중, 「0x6400 000 0000」∼「0x1 27ff ffff ffff」에 포함되는 물리 어드레스가 분류된다.
한편, 정보 처리 시스템(1)에 있어서는, 각 빌딩 블록(10∼10g)마다, 다른 범위에 포함되는 물리 어드레스를 메모리로 분류한다. 이하, 도면을 이용하여 정보 처리 시스템(1)에 있어서 각 빌딩 블록(10∼10e)마다 메모리로 분류하는 물리 어드레스의 범위를 설명한다.
도 3은 실시예 1에 따른 빌딩 블록의 메모리로 분류되는 물리 어드레스의 범위를 설명하기 위한 도면이다. 한편, 도 3에 도시하는 예에서는, 각 빌딩 블록을 BB(Building Block)로 기재했다. 또한, BB #0이란, 빌딩 블록(10)을 나타내고, BB #1이란, 빌딩 블록(10a)을 나타내고, BB #15란, 빌딩 블록(10e)을 나타낸다. 즉, 도 3에 도시하는 예에서, 정보 처리 시스템(1)은 16개의 빌딩 블록을 갖는 것으로 한다.
또한, 도 3에 도시하는 예에서, 각 빌딩 블록에는, 최대 4 TB(Terabyte)의 메모리를 탑재할 수 있는 것으로 한다. 또한, 이하의 설명에서는, 메모리 어드레스의 표기를 간이화하기 위해서, 예컨대 「242」가 되는 어드레스 번지를 「4 TB」로 기재한다.
도 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」까지의 범위에 포함되는 물리 어드레스가 로컬 영역으로 분류된다. 또한, 빌딩 블록(10e)이 갖는 메모리에 있어서는, 물리 어드레스 공간 중, 「124TB」∼「128TB-1」까지의 범위에 포함되는 물리 어드레스가 공유 영역으로 분류된다.
이 결과, 정보 처리 시스템(1)은, 도 4에 도시하는 바와 같이, 물리 어드레스 공간을 각 빌딩 블록(10∼10e)이 갖는 모든 메모리에 대하여 분류하게 된다. 도 4는 실시예 1에 따른 정보 처리 시스템이 각 메모리로 분류하는 물리 어드레스를 설명하기 위한 도면이다.
구체적으로는, 도 4에 도시하는 예에서, 정보 처리 시스템(1)은 「0」∼「256TB-1」까지의 물리 어드레스 중, 「0」∼「64TB-1」까지의 범위를 로컬 영역으로 분류하는 물리 어드레스로 한다. 또한, 정보 처리 시스템(1)은 「64TB」∼「128TB-1」까지의 범위를 공유 영역으로 분류하는 물리 어드레스로 한다.
즉, 정보 처리 시스템(1)은, 최하위의 비트를 0비트째로 하여 46비트째의 비트가 「0」인 범위를 로컬 영역으로 분류하고, 「1」인 범위를 공유 영역으로 분류한다. 한편, 정보 처리 시스템(1)은 「128TB」∼「256TB-1」까지의 범위를 I/O 공간으로서 이용한다.
한편, 도 3, 도 4에 도시하는 예는 어디까지나 일례이며, 정보 처리 시스템(1)은 다른 분류 방법을 채용하더라도 좋다. 이하, 정보 처리 시스템(1)이 물리 어드레스를 분류하는 바리에이션의 예에 관해서 도면을 이용하여 설명한다.
도 5는 물리 어드레스 분류의 바리에이션을 설명하기 위한 제1 도면이다. 도 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」인 범위를 로컬 영역으로 분류하고, 「1」인 범위를 공유 영역으로 분류한다.
또한 도 6은 물리 어드레스 분류의 바리에이션을 설명하기 위한 제2 도면이다. 도 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」인 범위를 로컬 영역으로 분류하고, 「1」인 범위를 공유 영역으로 분류한다.
도 2로 되돌아가면, 제어부(25)는 빌딩 블록(10)을 제어한다. 예컨대, 제어부(25)는 빌딩 블록(10)의 전원 관리나 빌딩 블록(10) 내의 이상 감시나 제어 등을 실행한다. 또한, 제어부(25)는 관리용 네트워크를 통해 관리 단말(3)이나 다른 빌딩 블록(10∼10e)이 갖는 서비스 프로세서의 제어부와도 접속되어 있어, 관리 단말(3)에 의해서 지시된 제어나 각 빌딩 블록(10∼10e) 사이에서 연계한 제어를 실행할 수 있다. 또한, 제어부(25)는 각 CPU(21∼21c)가 실행하는 OS와 통신을 할 수 있다.
한편, 실시예 1에서는, 각 빌딩 블록(10∼10e)이 갖는 서비스 프로세서는 관리용 네트워크를 통해 접속되어 있지만, 실시예는 이것으로 한정되지 않는다. 예를 들면, 각 빌딩 블록(10∼10e)을 접속하는 XB를 통해 서로 통신하더라도 좋다.
또한, 제어부(25)는 통신부(26)와 통신부(23)를 통해 각 CPU(21∼21c)에 액세스한다. 그리고, 제어부(25)는, 후술하는 바와 같이, 각 빌딩 블록(10∼10e)이 갖는 노드맵의 갱신이나 제어 등을 실행한다.
한편, 통신부(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(Input Output) 장치에의 액세스를 중계한다.
이어서, 도 7을 이용하여, 각 CPU(21∼21c)가 갖는 기능 구성에 관해서 설명한다. 도 7은 실시예 1에 따른 CPU의 기능 구성을 설명하기 위한 도면이다. 한편, CPU(21a∼21c)는 CPU(21)와 같은 기능을 발휘하는 것으로 하고 설명을 생략한다. 또한, 도 7에 도시하는 예에서, 서비스 프로세서(24)와 CPU(21)를 접속하는 접속부(23, 26)에 관해서는 기재를 생략했다.
도 7에 도시하는 예에서, CPU(21)는 연산 처리부(30), 라우터(40), 메모리 액세스부(41), PCIe 제어부(42)를 갖는다. 또한, 연산 처리부(30)는 연산부(31), L1(Level 1) 캐쉬(32), L2 캐쉬(33), 노드맵(34), 어드레스 변환부(35), 캐쉬 디렉토리 관리부(36), 패킷 제어부(37)를 갖는다. 또한, 패킷 제어부(37)는 요청 생성부(38), 요청 수신부(39)를 갖는다. 또한, PCIe 제어부(42)는 요청 생성부(43), PCIe 버스 제어부(44)를 갖는다.
우선, 연산 처리부(30)가 갖는 노드맵(34)에 관해서 설명한다. 노드맵(34)은, 물리 어드레스와, 물리 어드레스가 나타내는 기억 영역을 갖는 메모리와 접속된 CPU의 CPUID를 대응시켜 기억한다. 이하, 노드맵(34)이 기억하는 정보의 예를 도면을 이용하여 설명한다.
도 8은 실시예 1에 따른 노드맵이 기억하는 정보의 일례를 설명하기 위한 도면이다. 도 8에 도시하는 예에서, 노드맵(34)은, 어드레스, 밸리드, 노드 ID, CPUID를 대응시킨 엔트리를 기억한다. 여기서, 각 엔트리의 어드레스에는, 연속되는 복수의 물리 어드레스를 포함하는 어드레스 영역을 나타내는 정보가 저장된다.
예컨대, 정보 처리 시스템(1)은, 모든 메모리에 대하여 분류한 물리 어드레스 공간을 균등한 크기의 어드레스 영역으로 분할하여, 각 어드레스 영역에 #0, #1, #2 등의 식별자를 부여한다. 그리고, 정보 처리 시스템(1)은, 각 어드레스 영역을 나타내는 식별자를 노드맵(34)이 갖는 각 엔트리의 어드레스에 저장한다.
또한, 각 엔트리의 밸리드에는, 물리 어드레스가 나타내는 기억 영역에 액세스할 수 있는지 여부를 나타내는 밸리드 비트가 저장된다. 예컨대, 물리 어드레스가 나타내는 기억 영역이 각 CPU에서 공유되는 공유 영역인 경우에는, 액세스를 행할 수 있다는 취지의 밸리드 비트(예컨대 「1」)가 저장된다.
또한, 노드 ID란, 물리 어드레스가 분류된 메모리가 존재하는 노드를 나타내는 식별자이다. 또한, CPUID란, 물리 어드레스가 분류된 메모리와 접속된 CPU를 나타내는 식별자이다. 즉, 노드맵(34)은, 액세스 대상이 되는 물리 어드레스가 어떤 CPU와 접속된 메모리의 물리 어드레스인지를 나타내는 정보를 기억한다.
예컨대, 도 8에 도시하는 예에서, 노드맵(34)은, 식별자가 「#0」인 어드레스 영역이 노드 ID 「0」으로 나타내어지는 노드에 존재하고, CPUID가 「0」인 CPU가 액세스를 행한다는 취지를 나타낸다. 또한, 노드맵(34)은, 식별자가 「#1」인 어드레스 영역이 노드 ID 「0」으로 나타내어지는 노드에 존재하고, CPUID가 「1」인 CPU가 액세스를 행한다는 취지를 나타낸다. 또한, 노드맵(34)은, 식별자가 「#2」인 어드레스 영역이 CPU(21)가 액세스를 행하지 않거나 또는 맵핑되어 있지 않은 어드레스 영역이기 때문에, 노드 ID와 CPUID가 설정되어 있지 않다는 취지를 나타낸다.
한편, 노드맵(34)은, 액세스 대상이 되는 물리 어드레스가 어떤 CPU와 접속된 물리 어드레스인지를 나타낼 수 있으면, 본 실시예 이외의 임의의 형식으로 정보를 등록하는 것으로 하여도 좋다. 이하, 노드맵(34)의 바리에이션의 예에 관해서 도 9 및 도 10을 이용하여 설명한다.
도 9는 노드맵이 기억하는 정보의 바리에이션의 일례를 설명하기 위한 제1 도면이다. 도 9에 도시하는 예에서는, 노드맵(34)은, 밸리드, 스타트 어드레스, 어드레스 마스크, 노드 ID, CPUID를 대응시켜 엔트리를 기억한다. 여기서, 스타트 어드레스란, 어드레스 영역에 포함되는 물리 어드레스 중, 가장 빠른 번호의 물리 어드레스가 저장된다.
또한, 어드레스 마스크에는 CPU가 관리하는 물리 어드레스의 범위를 나타내는 어드레스 마스크가 저장된다. 예컨대, 어떤 엔트리는, 어드레스 마스크가 「0xffff ffff ffff 0000」인 경우에는, 동일 엔트리의 스타트 어드레스와 상위 48 비트가 일치하는 어드레스 영역을, 동일 엔트리의 CPUID가 나타내는 CPU가 관리하는 것을 나타낸다.
예컨대, 도 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가 액세스하는 어드레스 영역이라는 취지를 나타낸다.
한편, 노드맵(34)은, 도 9에 도시하는 바와 같이, 어드레스 영역을 스타트 어드레스와 어드레스 마스크로 표현한 경우에는, 물리 어드레스가 각 어드레스 영역에 포함되는지 여부를 논리합과 논리곱의 조합으로 실행할 수 있으므로, 회로 구성이 용이하게 된다.
또한, 도 10은 노드맵이 기억하는 정보의 바리에이션의 일례를 설명하기 위한 제2 도면이다. 도 10에 도시하는 예에서, 노드맵(34)은, 밸리드, 스타트 어드레스, 렝스, 노드 ID, CPUID를 대응시킨 엔트리를 기억한다. 여기서, 렝스란, 어드레스 영역의 크기를 설정하는 정보이다.
예컨대, 스타트 어드레스가 「0x12 0000」이고, 렝스가 「0x1 ffff」라고 하면, 동일 엔트리의 CPUID가 나타내는 CPU는, 관리하는 메모리에 대하여, 물리 어드레스 「0x12 0000」에서부터 「0x13 ffff」를 할당하게 된다.
예컨대, 도 10에 도시하는 예에서, 노드맵(34)은, 최초의 엔트리로서, 어드레스 「0x00000」에서부터 렝스가 「0x3fff」에 포함되는 범위, 즉 「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가 액세스하는 어드레스 영역이라는 취지를 나타낸다.
한편, 노드맵(34)은, 도 10에 도시하는 바와 같이, 어드레스 영역을 스타트 어드레스와 렝스로 표현한 경우에는, 각 어드레스 영역의 길이를 유연하게 설정할 수 있다. 즉, 노드맵(34)은, 어드레스 영역을 스타트 어드레스와 어드레스 마스크로 표현한 경우는, LSB(Least Significant Bit)에서부터 1이 연속되는 범위의 액세스 영역을 지정하게 된다. 한편, 각 어드레스 영역을 스타트 어드레스와 렝스로 표현한 경우에는, 각 어드레스 영역의 길이를 임의의 길이로 설정할 수 있다.
도 7로 되돌아가면, 연산부(31)는 연산 처리를 실행하고, OS나 애플리케이션을 실행하는 연산 장치의 코어이다. 또한, 연산부(31)는, 데이터 판독을 행하는 경우에, 판독 대상이 되는 데이터가 저장된 기억 영역의 논리 어드레스를 어드레스 변환부(35)에 출력한다.
L1 캐쉬(32)는 데이터나 디렉토리 중 빈번하게 이용되는 데이터를 일시적으로 기억하는 캐쉬 메모리이다. L2 캐쉬(33)는, L1 캐쉬(32)와 마찬가지로, 데이터나 디렉토리 중 빈번하게 이용되는 데이터를 일시적으로 기억하는데, L1 캐쉬(32)보다도 기억 용량이 크고, 데이터를 기록 및 판독하는 속도가 저속인 캐쉬 메모리이다. 한편, 디렉토리란, 메모리(22)의 각 기억 영역에 기억된 데이터를 캐쉬한 CPU나 캐쉬된 데이터의 갱신 상황을 나타내는 정보이다.
어드레스 변환부(35)는, TLB(Translation Lookaside Buffer)를 이용하여 연산부(31)가 출력한 논리 어드레스를 물리 어드레스로 변환한다. 예컨대, 어드레스 변환부(35)는, 논리 어드레스와 물리 어드레스를 대응시킨 엔트리를 기억하는 TLB를 지니며, 연산부(31)로부터 취득한 논리 어드레스와 대응시켜 기억하는 물리 어드레스를 캐쉬 디렉토리 관리부(36)에 출력한다. 한편, 어드레스 변환부(35)는, TLB 미스가 발생한 경우는, 트랩 처리를 실행하여, TLB 미스한 물리 어드레스와 논리 어드레스의 조(組)를 TLB에 등록한다.
또한, 어드레스 변환부(35)는, CPU(21)가 실행하는 애플리케이션으로부터 공유 메모리에의 할당을 요구받은 경우에는 이하의 처리를 실행한다. 즉, 어드레스 변환부(35)는, 각 CPU(21∼21c)가 공용하는 공유 영역에 액세스할 때에 애플리케이션이 이용하는 논리 어드레스와, 공유 영역에 할당되는 범위의 물리 어드레스를 대응시킨 엔트리를 TLB에 설정한다.
또한, 어드레스 변환부(35)는, 애플리케이션이나 OS로부터 로컬 영역의 할당을 요구받은 경우는 이하의 처리를 실행한다. 즉, 어드레스 변환부(35)는, 애플리케이션이나 OS가 CPU(21) 전용의 로컬 영역에 액세스하기 위한 논리 어드레스와, 로컬 영역에 할당되는 범위의 물리 어드레스를 대응시킨 엔트리를 TLB에 설정한다.
캐쉬 디렉토리 관리부(36)는 캐쉬 데이터 및 디렉토리를 관리한다. 구체적으로는, 캐쉬 디렉토리 관리부(36)는 어드레스 변환부(35)로부터, 연산부(31)가 출력한 논리 어드레스를 변환한 물리 어드레스를 취득한다.
그리고, 캐쉬 디렉토리 관리부(36)는, 어드레스 변환부(35)로부터 물리 어드레스를 취득한 경우에, 디렉토리를 체크하여, 물리 어드레스가 나타내는 데이터의 상태가 정상인지를 체크한다. 또한, 물리 어드레스가 나타내는 데이터를 L1 캐쉬(32) 또는 L2 캐쉬(33)가 캐쉬하고 있는 경우에는, 캐쉬하고 있는 데이터를 연산부(31)에 출력한다.
한편, 캐쉬 디렉토리 관리부(36)는, 물리 어드레스가 나타내는 데이터를 L1 캐쉬(32) 또는 L2 캐쉬(33)가 캐쉬하지 않은 경우는 물리 어드레스가 나타내는 기억 영역이 메모리(22)에 존재하는지 여부를 판별한다. 그리고, 캐쉬 디렉토리 관리부(36)는, 물리 어드레스가 나타내는 기억 영역이 메모리(22)에 존재하지 않는 경우에는 노드맵(34)을 참조한다.
또한, 캐쉬 디렉토리 관리부(36)는, 노드맵(34)을 참조하여, 취득한 물리 어드레스를 포함하는 범위의 엔트리를 식별한다. 그리고, 캐쉬 디렉토리 관리부(36)는 식별한 엔트리의 CPUID가 CPU(21)의 CPUID인지 여부를 판별한다. 그 후, 캐쉬 디렉토리 관리부(36)는, 식별한 엔트리의 CPUID가 CPU(21)의 CPUID인 경우는 메모리 액세스부(41)에 물리 어드레스를 출력한다.
또한, 캐쉬 디렉토리 관리부(36)는, 식별한 엔트리의 CPUID가 CPU(21)의 CPUID가 아닌 경우에는 이하의 처리를 실행한다. 즉, 캐쉬 디렉토리 관리부(36)는 식별한 엔트리의 CPUID와 노드 ID를 취득한다. 그리고, 캐쉬 디렉토리 관리부(36)는 패킷 제어부(37)에 대하여 취득한 CPUID와 물리 어드레스를 출력한다.
한편, 캐쉬 디렉토리 관리부(36)는, 출력한 물리 어드레스가 나타내는 기억 영역에 저장되어 있는 데이터를 메모리 액세스부(41)나 패킷 제어부(37)로부터 취득한 경우에는, 취득한 데이터를 L1 캐쉬(32) 및 L2 캐쉬(33)에 저장한다. 그리고, 캐쉬 디렉토리 관리부(36)는 L1 캐쉬(32)에 캐쉬시킨 데이터를 연산부(31)에 출력한다.
또한, 캐쉬 디렉토리 관리부(36)는, 패킷 제어부(37)로부터 물리 어드레스를 취득한 경우, 즉, 다른 CPU로부터의 메모리 액세스의 요청 대상이 되는 물리 어드레스를 취득한 경우에는 이하의 처리를 실행한다. 즉, 캐쉬 디렉토리 관리부(36)는, 취득한 물리 어드레스 중, 정해진 위치의 비트가 「0」인지 「1」인지에 따라서, 취득한 물리 어드레스가 로컬 영역으로 분류된 물리 어드레스인지 여부를 판별한다.
예컨대, 캐쉬 디렉토리 관리부(36)는, 정보 처리 시스템(1)의 각 메모리에 대하여, 도 3, 도 4에 예시한 범위의 물리 어드레스가 분류되어 있는 경우에는, 최하위의 비트를 0비트째로 하여 46비트째가 「0」인지 「1」인지를 판별한다. 그리고, 캐쉬 디렉토리 관리부(36)는, 46비트째가 「0」인 경우에는, 취득한 물리 어드레스가 로컬 영역으로 분류된 물리 어드레스라고 판별한다. 이러한 경우에는, 캐쉬 디렉토리 관리부(36)는, 패킷 제어부(37)에 대하여, 요청원에 부정 응답(액세스 에러)을 송신하도록 지시한다.
또한, 캐쉬 디렉토리 관리부(36)는, 46비트째가 「1」인 경우에는, 취득한 물리 어드레스가 공유 영역으로 분류된 물리 어드레스라고 판별한다. 이러한 경우에는, 캐쉬 디렉토리 관리부(36)는, 취득한 물리 어드레스가 나타내는 기억 영역에 기억된 데이터를 취득하고, 취득한 데이터를 패킷 제어부(37)에 출력하여, 요청원에 송신하도록 지시한다.
한편, 캐쉬 디렉토리 관리부(36)는, 메모리(22)에 저장된 데이터에 액세스하는 경우에, 물리 어드레스가 나타내는 기억 영역의 데이터와, 캐쉬된 데이터와의 코히런스를 유지하는 처리를 한다. 예컨대, 캐쉬 디렉토리 관리부(36)는, 캐쉬 엔트리마다 캐쉬 데이터의 상태를 나타내는 캐쉬 태그와 디렉토리를 참조한다. 그리고, 캐쉬 디렉토리 관리부(36)는, 캐쉬 태그와 디렉토리에 기초하여 캐쉬 코히런스를 유지하는 처리 및 메모리 액세스 처리를 실행한다.
여기서, 도 11a는 캐쉬 태그의 일례를 설명하기 위한 도면이다. 도 11a에 도시하는 예에서, 캐쉬 태그는 축퇴(縮退) 플래그, ECC(Error Check and Correct) 체크 비트, IF(Instruction Fetch)/옵코드, L1 캐쉬 스테이트, L2 캐쉬 스테이트, AA를 갖는다.
여기서, 축퇴 플래그란, 축퇴하는지 여부를 나타내는 캐쉬 라인 축퇴 정보이다. 또한, ECC 체크 비트란, 용장화를 위해 부가되는 체크 비트이다. IF/옵코드란, 데이터가 인스트럭션인지 데이터인지를 나타내는 정보이다.
또한, AA란, 어드레스 정보이며, 상세하게는, 물리 어드레스의 프레임 어드레스가 저장된다. 또한, L1 캐쉬 스테이트 및 L2 캐쉬 스테이트란, L1 캐쉬(32) 및 L2 캐쉬(33)에 저장된 데이터의 상태를 나타내는 정보이다.
예컨대, L1 캐쉬 스테이트나 L2 캐쉬 스테이트에는 「M(Modified)」, 「E(Exclusive)」, 「S(Shared)」, 「I(Invalid)」중 어느 것을 나타내는 비트가 저장된다. 여기서, Modified란, 어느 하나의 CPU가 데이터를 캐쉬하고 있고, 캐쉬된 데이터가 갱신되어 있는 상태를 나타낸다. 한편, 캐쉬된 데이터의 상태가 Modigied인 경우에는, 라이트백을 실행할 필요가 있다.
또한, Exclusive란, 어느 하나의 CPU가 데이터를 캐쉬하고 있고, 또한, 캐쉬된 데이터가 갱신되어 있지 않은 상태를 나타낸다. 또한, Shared란, 복수의 CPU가 데이터를 캐쉬하고 있고, 또한, 캐쉬된 데이터가 갱신되어 있지 않음을 나타낸다. 한편, Invalid란, 캐쉬의 스테이터스가 등록되어 있지 않음을 나타낸다.
한편, 디렉토리는 2 비트의 CK 비트, 63 비트의 PRC, 4 비트의 UE를 관리한다. 여기서, CK 비트란, 캐쉬된 데이터의 상태를 코드화한 정보이다. 또한, PRC란, 상기 캐쉬 라인의 데이터를 캐쉬한 CPU의 위치를 비트맵으로 나타내는 정보이다. 또한, UE란, 디렉토리의 이상과 요인을 나타내는 정보이다.
캐쉬 디렉토리 관리부(36)는, 취득한 물리 어드레스에 저장된 데이터를 캐쉬하는 CPU나 캐쉬된 데이터의 상태 등을 식별한다. 그리고, 캐쉬 디렉토리 관리부(36)는, 캐쉬된 데이터의 상태에 기초하여, 플래시 요청 등을 발행하여 메모리의 데이터를 갱신하는 등의 처리를 행하여, 캐쉬된 데이터와 메모리의 데이터와의 코히런스를 유지한다. 그 후, 캐쉬 디렉토리 관리부(36)는 데이터를 요구원에 출력한다.
여기서, 캐쉬 디렉토리 관리부(36)가 캐쉬 코히런스를 유지하는 처리의 일례에 관해서 설명한다. 예컨대, 캐쉬 디렉토리 관리부(36)는, 스테이터스가 M(Modified)인 데이터를 캐쉬한 CPU에 대하여 라이트백을 지시하는 명령을 송신하도록 요청 생성부(38)에 지시한다. 그리고, 캐쉬 디렉토리 관리부(36)는 데이터의 스테이터스를 갱신하여, 갱신 후의 스테이터스에 따른 처리를 실행한다. 한편, 캐쉬 디렉토리 관리부(36)가 송수신하는 요청이나 명령의 종별에 대해서는 후술한다.
요청 생성부(38)는, 캐쉬 디렉토리 관리부(36)로부터 물리 어드레스와 CPUID를 취득한 경우에는, 취득한 물리 어드레스와 CPUID를 저장한 패킷, 즉 메모리 액세스의 요청이 되는 패킷을 생성한다. 그리고, 요청 생성부(38)는 생성한 패킷을 라우터(40)에 송신한다.
여기서, 도 11b는 실시예 1에 따른 CPU가 송신하는 패킷을 설명하기 위한 도면이다. 한편, 도 11b에 도시하는 예에서는, 물리 어드레스를 PA(Physical Address)로 기재했다. 도 11b에 도시하는 예에서, 요청 생성부(38)는, CPUID와 물리 어드레스와, 요청의 내용을 나타내는 데이터가 저장된 요청을 생성하고, 생성된 요청을 라우터(40)에 출력한다. 이러한 경우에, 라우터(40)는 요청 생성부(38)가 생성한 요청을 XB 접속부(27)를 통해 XB(2)에 출력한다. 그러면, XB(2)는 요청에 저장된 CPUID가 나타내는 CPU에 요청을 전송한다.
한편, 요청 생성부(38)는, 캐쉬 디렉토리 관리부(36)로부터 코히런시를 유지하기 위한 요청이나 명령의 발행 지시를 접수한 경우에는, 지시된 요청이나 명령을 생성한다. 그리고, 요청 생성부(38)는, 생성된 요청이나 명령을 라우터(40), XB 접속부(27), XB(2)를 통해, 지시된 CPU에 송신한다. 한편, 요청 생성부(38)는, I/O 장치로부터 데이터를 취득하는 경우에는, I/O에 대한 액세스 요구를 라우터(40)에 출력한다.
도 7로 되돌아가면, 요청 수신부(39)는, XB(2), XB 접속부(27), 라우터(40)를 통해 다른 CPU가 출력한 패킷을 수신하면, 수신한 패킷에 포함되는 물리 어드레스를 취득한다. 그리고, 요청 수신부(39)는 취득한 물리 어드레스를 캐쉬 디렉토리 관리부(36)에 출력한다. 또한, 요청 수신부(39)는, 다른 CPU가 송신한 데이터를 수신한 경우에는, 수신한 데이터를 캐쉬 디렉토리 관리부(36)에 출력한다.
한편, 요청 수신부(39)는, 코히런시를 유지하기 위한 요청이나 명령을 수신한 경우에는, 수신한 요청이나 명령을 캐쉬 디렉토리 관리부(36)에 출력한다. 또한, 요청 수신부(39)는, I/O에 대한 액세스 요구의 응답이나 데이터를 라우터(40)로부터 수신한 경우에는, 수신한 응답이나 데이터를 캐쉬 디렉토리 관리부(36)에 출력한다. 이러한 경우에, 캐쉬 디렉토리 관리부(36)는 예컨대 취득한 데이터를 메모리 액세스부(41)에 출력하여, 메모리(22)에 저장하는 처리를 한다.
라우터(40)는, 패킷 제어부(37)가 가지며 요청 생성부(38)가 출력한 패킷을 수신한 경우에는, 수신한 요청을 XB 접속부(27)에 출력한다. 또한, 라우터(40)는 XB 접속부(27)를 통해 다른 CPU가 송신한 패킷이나 데이터를 요청 수신부(39)에 출력한다. 또한, 라우터(40)는 패킷 제어부(37)가 I/O 등에 대하여 출력한 패킷을 PCIe 제어부(42)에 출력한다. 또한, 라우터(40)는, I/O로부터의 응답 등을 PCIe 제어부(42)로부터 수신한 경우에는, 수신한 응답 등을 패킷 제어부(37)에 출력한다.
메모리 액세스부(41)는 소위 MAC(Memory Access Controller)이며, 메모리(22)에 대한 액세스를 제어한다. 예컨대, 메모리 액세스부(41)는, 캐쉬 디렉토리 관리부(36)로부터 물리 어드레스를 수신한 경우에는, 수신한 물리 어드레스에 저장된 데이터를 메모리(22)로부터 취득하여, 취득한 데이터를 캐쉬 디렉토리 관리부(36)에 출력한다. 한편, 메모리 액세스부(41)는 메모리 미러 기능을 이용하여 공유 영역을 용장화하더라도 좋다.
PCIe 제어부(42)가 갖는 요청 생성부(43)는, 라우터(40)를 통해 I/O에 대한 액세스 요구를 취득한 경우에는, 액세스 요구 대상이 되는 I/O 장치에 송신하는 요청을 생성하여, 생성한 요청을 PCIe 버스 제어부(44)에 출력한다. PCIe 버스 제어부(44)는, 요청 생성부(43)가 생성한 요청을 취득한 경우에는, PCIe 접속부(28)를 통해 I/O 장치에 요청을 송신한다.
이어서, 도 12를 이용하여 CPU(21)가 다른 CPU에 대하여 요청을 송신하는 처리의 일례에 관해서 설명한다. 도 12는 실시예 1에 따른 CPU가 요청을 송신하는 처리의 일례를 설명하기 위한 도면이다. 예컨대, 도 12의 (A)에 도시하는 바와 같이, 서비스 프로세서(24)로부터 노드맵(34)에 대하여, 물리 어드레스가 분류되는 메모리에 액세스하는 CPU의 CPUID와 물리 어드레스를 대응시킨 엔트리의 설정이 이루어진다.
또한, 연산부(31)는 연산 처리를 실행하여, 도 12의 (B)에 도시하는 바와 같이, 액세스 대상이 되는 논리 어드레스를 어드레스 변환부(35)에 출력한다. 그러면, 어드레스 변환부(35)는 논리 어드레스를 물리 어드레스로 변환하고, 변환된 물리 어드레스를 도 12의 (C)에 도시하는 바와 같이 캐쉬 디렉토리 관리부(36)에 출력한다.
여기서, 캐쉬 디렉토리 관리부(36)는, 어드레스 변환부(35)로부터 물리 어드레스를 취득하면, 도 12의 (D)에 도시하는 바와 같이, 노드맵(34)을 참조하여, 취득한 물리 어드레스와 대응된 CPUID를 취득한다. 그리고, 캐쉬 디렉토리 관리부(36)는, 취득한 CPUID가 CPU(21)의 CPUID가 아닌 경우에는, 도 12의 (E)에 도시하는 바와 같이, 취득한 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은 실시예 1에 따른 CPU가 패킷을 수신했을 때에 실행하는 처리의 일례를 설명하기 위한 도면이다. 예컨대, 도 13의 (I)에 도시하는 바와 같이 요청 수신부(39)는 다른 CPU로부터 CPU(21)의 CPUID와 메모리(22)로 분류된 물리 어드레스가 저장된 패킷을 수신한다.
이러한 경우에, 요청 수신부(39)는, 수신한 패킷으로부터 물리 어드레스를 취득하여, 도 13의 (J)에 도시하는 바와 같이, 취득한 물리 어드레스를 캐쉬 디렉토리 관리부(36)에 출력한다. 그러면, 캐쉬 디렉토리 관리부(36)는 취득한 물리 어드레스의 46비트째가 「0」인지 「1」인지를 판별한다.
즉, 캐쉬 디렉토리 관리부(36)는, 정보 처리 시스템(1)이 도 3, 도 4에 도시하는 바와 같이, 공유 영역과 로컬 영역으로 분류하는 물리 어드레스를 설정하고 있는 경우에는, 물리 어드레스의 전체 비트를 식별하지 않아도 된다. 즉, 캐쉬 디렉토리 관리부(36)는, 46비트째가 「0」인지 「1」인지를 판별하는 것만으로, 물리 어드레스가 나타내는 기억 영역이 공유 영역인지 로컬 영역인지를 정확하게 판별할 수 있다.
그리고, 캐쉬 디렉토리 관리부(36)는, 수신한 물리 어드레스의 46비트째가 「1」인 경우에는, 공유 영역에 대한 액세스라고 판별한다. 이러한 경우에는, 캐쉬 디렉토리 관리부(36)는, 도 13의 (K)에 도시하는 바와 같이, 물리 어드레스가 나타내는 기억 영역의 데이터가 L1 캐쉬(32) 및 L2 캐쉬(33)에 캐쉬되어 있는지 판별한다.
또한, 캐쉬 디렉토리 관리부(36)는, 데이터가 캐쉬되어 있지 않다고 판별한 경우에는, 도 13의 (L)에 도시하는 바와 같이, 물리 어드레스를 메모리 액세스부(41)에 출력한다. 그러면, 도 13의 (M)에 도시하는 바와 같이, 메모리 액세스부(41)는 메모리(22)로부터 물리 어드레스가 나타내는 기억 영역의 데이터를 취득하여, 캐쉬 디렉토리 관리부(36)에 출력한다.
그리고, 캐쉬 디렉토리 관리부(36)는, L1 캐쉬(32), L2 캐쉬(33) 또는 메모리 액세스부(41)로부터 데이터를 취득한 경우에는, 취득한 데이터를 패킷 제어부(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(Application Specific Integrated Circuit)나 FPGA(Field Programmable Gate Array) 등의 집적 회로 또는 CPU(Central Processing Unit)나 MPU(Micro Processing Unit) 등을 적용한다.
또한, 메모리(22∼22a)는 RAM(Random Access Memory), ROM(Read Only Memory), 플래시 메모리(flash memory) 등의 반도체 메모리 소자이다. 또한, L1 캐쉬(32), L2 캐쉬(33)는 SRAM(Static Random Access Memory) 등의 고속의 반도체 메모리 소자이다.
이어서, 각 CPU(21∼21c)가 캐쉬 코히런스를 유지하는 처리에 관해서 간단히 설명한다. 한편, 이하의 설명에서, 정보 처리 시스템(1)의 각 CPU는 일리노이스 프로토콜을 이용하여 캐쉬 코히런스를 유지하는 것으로 한다.
한편, 이하의 설명에서, 정보 처리 시스템(1)이 갖는 각 메모리는 모든 CPU로부터 캐쉬 가능한 공간을 갖는 메모리로서 식별되는 것으로 한다. 또한, 이하의 설명에서는, 액세스 대상이 되는 데이터를 기억하는 메모리에, 그 CPU 내의 MAC를 통해 물리적으로 직접 접속되어 있는 CPU를 홈 CPU로 하고, 액세스를 요구한 CPU를 로컬 CPU라 기재한다.
또한, 홈 CPU에 대하여 이미 요청을 송신하여, 데이터 캐쉬가 끝난 CPU를 리모트 CPU라 기재한다. 한편, 로컬 CPU와 홈 CPU가 동일한 CPU가 되는 경우나, 로컬 CPU와 리모트 CPU는 동일한 CPU가 되는 경우도 존재한다.
예컨대, 로컬 CPU는 자신의 노드맵을 참조하여 액세스 대상이 되는 물리 어드레스가 홈 CPU가 액세스하는 메모리로 분류되어 있다고 판별한다. 그리고, 로컬 CPU는 물리 어드레스를 저장한 요청을 홈 CPU에 대하여 발행한다. 한편, 로컬 CPU가 발행하는 요청에는 복수 종별의 요청이 존재한다. 이 때문에, 홈 CPU가 갖는 캐쉬 디렉토리 관리부는 취득한 요청의 종별에 따른 캐쉬 코히런스 제어를 실행하게 된다.
예컨대, 로컬 CPU가 발행하는 요청의 종별로서는, 공유형 페치 액세스, 배타형 페치 액세스, 캐쉬 무효화 요구, 캐쉬 리플레스 요구 등이 존재한다. 공유형 페치 액세스란, MoveIn to Share의 실행 요구이며, 홈 CPU가 액세스하는 메모리로부터 데이터를 판독할 때에 발행되는 요청이다.
또한, 배타형 페치 액세스란, 예컨대 MoveIn Exclusively의 실행 요구이며, 홈 CPU가 액세스하는 메모리에 데이터 스토어를 행할 때의, 캐쉬에의 데이터 로드를 행할 때에 발행된다. 또한, 캐쉬 무효화 요구란, 예컨대 MoveOut의 실행 요구이며, 캐쉬 라인의 무효화를 홈 CPU에 대하여 요구할 때에 발행된다. 한편, 홈 CPU는, 캐쉬 무효화 요구를 수신하면, 리모트 CPU에 대하여 캐쉬 무효화 요구를 발행하는 경우나, 캐쉬를 Invalidation으로 하는 명령을 발행하는 경우가 있다.
캐쉬 리플레이스 요구란, 예컨대 WriteBack의 실행 요구이며, 갱신된 캐쉬 데이터, 즉 Modified 상태의 캐쉬 데이터를 홈 CPU가 액세스하는 메모리에 재기록할 때에 발행된다. 한편, 캐쉬 리플레이스 요구란, 예컨대 FlushBack의 실행 요구이며, 갱신되어 있지 않은 캐쉬 데이터, 즉, Shared 또는 Exclusive 상태의 캐쉬를 파기할 때에 발행된다.
홈 CPU는, 전술한 요청을 로컬 CPU로부터 수신한 경우에는, 요청을 처리하기 위해서 로컬 CPU나 리모트 CPU에 대하여 명령을 발행한다. 여기서, 홈 CPU는 취득한 요청의 종별에 따라서 캐쉬 코히런스 제어를 실행하기 때문에, 복수 종별의 명령을 발행하게 된다. 예컨대, 홈 CPU는 리모트 CPU가 캐쉬하고 있는 데이터를 로컬 CPU에 로드시키는 MoveOut and Bypass to Share을 발행한다.
또한, 예컨대 홈 CPU는 로컬 CPU 이외의 모든 리모트 CPU의 캐쉬를 무효화하고, 그 후, 홈 CPU가 로컬 CPU에 데이터를 송신하기 위한 MoveOut and Bypass Exclusively를 발행한다. 또한, 홈 CPU는, 리모트 CPU에 캐쉬의 무효화를 요구하는 MoveOut WITH Invalidation을 발행한다. 한편, 홈 CPU가 MoveOut WITH Invalidation을 발행한 경우에는, 모든 CPU의 캐쉬가 대상이 되는 어드레스에 관해서 Invalidate 상태가 된다.
또한, 홈 CPU는 리모트 CPU에 캐쉬 라인의 무효화를 요구하는 MoveOut for Flush를 발행한다. 한편, 홈 CPU가 MoveOut for Flush를 발행한 경우에는, 대상이 되는 데이터를 홈 CPU만이 캐쉬한 상태가 된다. 또한, 홈 CPU는 대상이 되는 데이터의 상태가 Shared일 때에, 리모트 CPU에 캐쉬의 파기를 요구하는 Buffer Invalidation을 발행한다.
홈 CPU는 요청의 종별에 따라서 전술한 명령을 발행하여, 각 CPU가 캐쉬한 데이터의 스테이트를 천이시킨다. 또한, 로컬 CPU나 리모트 CPU는 명령을 수신한 경우에는, 명령이 나타내는 처리를 실행하여, 자신이 캐쉬한 데이터의 스테이트를 천이시킨다.
그 후, 로컬 CPU나 리모트 CPU는 명령에 대한 완료 응답이나 데이터를 지닌 완료 응답을 홈 CPU에 송신한다. 또한, 홈 CPU나 리모트 CPU는 명령 처리를 실행한 후에, 로컬 CPU에 대하여 데이터가 첨부된 요청 응답을 송신하게 된다.
[CPU 처리의 흐름]
이어서, 도 14를 이용하여 정보 처리 시스템(1)에 있어서 각 CPU가 갖는 노드맵(34)을 설정하는 처리의 흐름에 관해서 설명한다, 도 14는 노드맵을 설정하는 처리의 흐름을 설명하기 위한 흐름도이다. 한편, 이하의 설명에서는, 하나의 CPU와 CPU가 액세스하는 메모리의 조(組)를 노드로서 기재한다. 또한, 이하의 설명에서는, 새로운 노드를 정보 처리 시스템(1)에 추가하는 예에 관해서 설명한다.
우선, 정보 처리 시스템(1)의 오퍼레이터는 노드를 신규 증설한다(단계 S101). 이어서, 각 빌딩 블록(10∼10e)의 서비스 프로세서가 추가된 노드의 하드웨어 구성을 판독한다(단계 S102). 이어서, 정보 처리 시스템(1)의 오퍼레이터는 새로운 노드가 갖는 메모리의 공유 영역의 할당을 서비스 프로세서에게 지시한다(단계 S103).
이어서, 정보 처리 시스템(1)의 오퍼레이터는 새로운 노드의 서비스 프로세서에 전원 투입을 지시한다(단계 S104). 그러면, 각 빌딩 블록(10∼10e)의 서비스 프로세서는, 판독한 구성 정보를 바탕으로, 각 빌딩 블록(10∼10e)이 갖는 CPU의 노드맵(34)을 I2C를 이용하여 설정한다(단계 S105). 그 후, 정보 처리 시스템(1)은 각 빌딩 블록(10∼10e)의 전원을 투입하고(단계 S106), 처리를 종료한다.
이어서, 도 15를 이용하여 정보 처리 시스템(1)이 공유 영역을 제어하는 처리의 흐름에 관해서 설명한다. 도 15는 공유 영역을 제어하는 처리의 흐름을 설명하기 위한 흐름도이다. 우선, 정보 처리 시스템(1)은 애플리케이션의 요구에 따라서 노드 사이의 공유 메모리의 할당 처리를 실행한다(단계 S201). 이어서, 정보 처리 시스템(1)은 노드 사이에서 공유하는 공유 메모리의 어태치 처리를 실행한다(단계 S202).
그 후, 정보 처리 시스템(1)이 갖는 각 CPU에 의해서 실행되는 애플리케이션이 각 메모리를 사용한다(단계 S203). 이어서, 정보 처리 시스템(1)은 공유 메모리의 디태치 처리를 실행한다(단계 S204). 그 후, 정보 처리 시스템(1)은 공유 메모리의 해방 처리를 실행하고(단계 S205), 처리를 종료한다. 한편, 단계 S201 및 단계 S205는 그 공유 메모리의 홈 노드 상의 애플리케이션만이 실시되더라도 좋으며, 실제의 처리는 nop이 되지만, 그 공유 메모리의 홈 노드 이외의 노드 상의 애플리케이션도 실시하는 것으로 하더라도 좋다.
이어서, 도 16을 이용하여 도 15 중 단계 S201에서 나타낸 공유 메모리의 할당 처리를 실행하는 처리의 흐름에 관해서 설명한다. 도 16은 공유 메모리의 할당 처리를 설명하기 위한 흐름도이다. 도 16에 도시하는 예에서는, 예컨대, CPU(21)가 실행하는 애플리케이션이 OS에 대하여 노드 사이의 공유 메모리 할당 처리의 실행을 요구한다(단계 S301).
그러면, CPU(21)가 실행하는 OS가 공유 영역용의 물리 어드레스의 영역으로부터 요구된 사이즈의 메모리 할당을 한다(단계 S302). 이어서, OS가 할당한 공유 메모리의 관리용 ID를 애플리케이션에 인도하고(단계 S303), 공유 메모리의 할당 처리를 종료한다.
이어서, 도 17을 이용하여 도 15 중 단계 S202에서 나타낸 노드 사이의 공유 메모리 어태치 처리의 흐름에 관해서 설명한다. 도 17은 공유 메모리 어태치 처리를 설명하기 위한 흐름도이다. 우선, 애플리케이션은 OS에 대하여 관리용 ID를 인도하고, 노드 사이의 공유 메모리의 어태치 처리를 요구한다(단계 S401). 이러한 경우에, OS는 다른 노드에서 실행되고 있는 OS와 통신을 하여, 관리용 ID에 대응하는 물리 어드레스를 획득한다(단계 S402).
여기서, OS가 다른 노드에서 실행되고 있는 OS와 통신을 하는 경우에는, LAN(Local Area Network) 등에 의한 통신, 서비스 프로세서(24)를 통한 각 노드 사이의 통신 등을 이용한다. 또한, 예컨대, 각 노드에서 실행되는 OS는 특정한 공유 영역을 노드 사이 통신에 이용하는 영역으로서 설정하고, 설정한 영역에 대한 정보를 저장하거나 판독함으로써 통신을 행하는 것으로 하여도 좋다.
이어서, OS는 물리 어드레스에 대응하는 논리 어드레스(Virtual Address)를 결정하여 할당을 행한다(단계 S403). 예컨대, CPU(21)에서 실행되는 OS는 물리 어드레스와 논리 어드레스와의 TLB를 어드레스 변환부(35)에 설정한다.
한편, 각 CPU(21∼21c)가 이용하는 논리 어드레스는 중복되는 범위라도 좋고, CPU마다 다른 범위라도 좋다. 또한, 각 CPU(21∼21c)가 이용하는 논리 어드레스는 애플리케이션이 OS에 지정할 수 있도록 하더라도 좋다. 그 후, OS는 논리 어드레스의 값을 애플리케이션에 인도하고(단계 S404), 처리를 종료한다.
이어서, 도 18을 이용하여 도 15 중 단계 S203에서 나타낸 애플리케이션이 노드 사이의 공유 메모리를 사용하는 처리의 흐름에 관해서 설명한다. 도 18은 애플리케이션이 공유 메모리를 사용하는 처리를 설명하기 위한 흐름도이다. 예컨대, CPU(21)가 실행하는 애플리케이션은 논리 어드레스를 발행하고, 논리 어드레스가 나타내는 기억 영역에의 액세스를 행한다(단계 S501).
그러면, CPU(21)는 TLB 미스가 발생했는지 여부를 판별한다(단계 S502). 그리고, CPU(21)는 TLB 미스가 발생한 경우는(단계 S502 긍정), 트랩 처리를 실행하여 TLB에 논리 어드레스와 물리 어드레스의 조의 엔트리를 설정한다(단계 S503).
이어서, 애플리케이션은 재차 논리 어드레스를 발행하고, TLB에 의한 물리 어드레스로의 변환을 거쳐, 정상적으로 공유 메모리에 대한 액세스를 실행한다(단계 S504). 한편, TLB 미스가 발생하지 않은 경우는(단계 S502 부정), 정상적으로 공유 메모리에 대한 액세스가 실행되고(단계 S505), 처리가 종료된다.
이어서, 도 19를 이용하여 도 15 중 단계 S204에서 도시한 노드 사이의 공유 메모리 디태치 처리의 흐름에 관해서 설명한다. 도 19는 노드 사이의 공유 메모리 디태치 처리를 설명하기 위한 흐름도이다. 예컨대, CPU(21)가 실행하는 애플리케이션은 OS에 대하여 노드 사이 공유 메모리의 논리 어드레스 또는 관리용 ID를 지정하여, 디태치 처리를 요구한다(단계 S601).
그러면, CPU(21)가 실행하는 OS는 캐쉬의 플래시를 행한다(단계 S602). 즉, OS는 공유 메모리의 할당 해제 후, 재차 공유 메모리로서 할당을 행한 경우에, 공유 메모리로서 할당이 이루어지지 않았을 때에 그 공유 메모리의 홈 노드의 CPU가 재부팅되면, 캐쉬와 실제 메모리의 상태가 엇갈릴 우려가 있다. 이 때문에, OS는 캐쉬의 플래시를 행하여, 캐쉬와 실제 메모리의 상태가 엇갈리는 상태를 방지한다.
그리고, OS는, 노드 사이 공유 메모리, 즉, 애플리케이션이 이용하고 있었던 범위의 논리 어드레스의 할당을 해제하고, 해제한 논리 어드레스에 관련된 TLB의 엔트리를 삭제한다(단계 S603). 또한, OS는 노드 사이에서 통신을 행하여 본 애플리케이션이 대상 PA의 사용을 완료했음을 통지한다(단계 S604). 그리고, OS는 노드 사이 통신에 의해, 해방이 끝난 공유 메모리에 대해서, 최후의 이용자가 디태치를 행했음을 홈 노드가 인식한 경우, 지정된 공유 메모리용의 메모리 할당을 해제한다(단계 S605). 한편, 단계 S605의 처리는 도 20에 도시하는 단계 S702의 처리와 관련된다.
한편, 단계 S603 이후에는, OS는 본 노드 상에서, 디태치가 완료된 메모리 어드레스에 대해서 TLB 미스(단계 S502 긍정)가 발생하더라도, 디태치가 완료된 논리 어드레스에 대응하는 물리 어드레스를 TLB에 설정하지 않는다. 이러한 경우에, 단계 S504의 처리는 정상적으로 종료되지 않고, 액세스 에러가 된다. 또한, 디태치 완료 후, 단계 S402와 반대로, OS가 노드 사이에서 통신하여, 본 애플리케이션이 이 공유 메모리의 PA에 대하여 액세스를 완료했음을 통지한다. 만일 이 공유 메모리가 홈 노드 상에서 해방이 끝나고, 또한, 이 애플리케이션이 이 공유 메모리의 최후의 이용자였던 경우는, 홈 노드에 해방 처리를 의뢰한다.
이어서, 도 20을 이용하여 도 15 중 단계 S205에서 도시한 노드 사이 공유 메모리의 해방 처리의 흐름에 관해서 설명한다. 도 20은 노드 사이 공유 메모리의 해방 처리를 설명하기 위한 흐름도이다. 예컨대, CPU(21)가 실행하는 애플리케이션은 OS에 대하여 노드 사이 공유 메모리의 해방 처리를 요구한다(단계 S701). 그러면, OS는 지정된 공유 영역의 사용자가 전부 디태치하고 있었던 경우는, 할당을 해방하고(단계 S702), 처리를 종료한다. 만약에 디태치가 완료되지 않았으면, 할당의 해방 처리는 하지 않고, 처리를 종료한다. 한편, 실제의 할당 완료 처리는 단계 S605에서 행해진다.
이어서, 도 21을 이용하여 CPU(21)가 다른 CPU에 대하여, 메모리 액세스의 요청을 송신하는 처리의 흐름에 관해서 설명한다. 도 21은 요청을 발행하는 처리의 흐름을 설명하기 위한 흐름도이다. 예컨대, CPU(21)의 연산부는 논리 어드레스를 발행한다(단계 S801).
그러면, 어드레스 변환부(35)에 있어서, 논리 어드레스에서 물리 어드레스로의 변환이 행해진다(단계 S802). 이어서, 캐쉬 디렉토리 관리부(36)가 물리 어드레스를 취득하여 캐쉬 디렉토리 관리를 실행한다(단계 S803). 즉, 캐쉬 디렉토리 관리부(36)는 취득한 물리 어드레스가 나타내는 기억 영역에 관한 캐쉬 스테이트를 천이시킨다.
이어서, 캐쉬 디렉토리 관리부(36)는, 노드맵(34)을 참조하여, 취득한 물리 어드레스가 타노드의 메모리로 분류된 물리 어드레스인지 여부를 판별한다(단계 S804). 그리고, 캐쉬 디렉토리 관리부(36)는, 취득한 물리 어드레스가 타노드의 메모리로 분류된 물리 어드레스가 아니라고 판별한 경우에는(단계 S804 부정), 취득한 물리 어드레스를 이용하여 메모리 액세스를 실행한다(단계 S805).
한편, 캐쉬 디렉토리 관리부(36)는, 취득한 물리 어드레스가 타노드의 메모리로 분류된 물리 어드레스인 경우에는(단계 S804 긍정), 노드맵(34)으로부터 물리 어드레스와 대응된 CPUID를 취득한다(단계 S806). 그리고, 패킷 송신부가 CPUID와 물리 어드레스를 저장한 패킷, 즉 메모리 액세스의 요청을 생성하여 XB(2)에 송출하고(단계 S807), 처리가 종료된다.
이어서, 도 22를 이용하여 CPU(21)가 다른 CPU로부터 메모리 액세스의 요청을 수신했을 때에 실행하는 처리의 흐름에 관해서 설명한다. 도 22는 요청을 수신했을 때에 실행하는 처리의 흐름을 설명하기 위한 흐름도이다. 한편, 도 22에 도시하는 예에서는, CPU(21)가 다른 CPU로부터 MoveIn to Share나 MoveIn Exclusively를 수신했을 때에 실행하는 처리의 흐름에 관해서 설명한다. 예컨대 CPU(21)는 다른 CPU로부터 XB(2)를 통해 요청을 수신한다(단계 S901).
이러한 경우에는, CPU(21)는 요청 대상이 되는 물리 어드레스의 정해진 비트가 「1」인지 여부를 판별함으로써, 요청의 대상이 되는 물리 어드레스가 로컬 영역인지 여부를 판별한다(단계 S902). 그리고, CPU(21)는 요청의 대상이 되는 물리 어드레스가 로컬 영역이라고 판별한 경우에는(단계 S902 긍정), 요청원의 CPU에 부정 응답을 회신하고(단계 S903), 처리를 종료한다.
또한, CPU(21)는 요청의 대상이 되는 물리 어드레스가 로컬 영역이 아닌 경우에는(단계 S902 부정), 코히런스를 유지하는 캐쉬 디렉토리 관리를 실행한다(단계 S904). 또한, CPU(21)는 물리 어드레스가 나타내는 기억 영역의 스테이터스를 판정한다(단계 S905).
그리고, CPU(21)는 판정한 스테이터스에 따른 명령을 다른 CPU에 대하여 발행하고(단계 S906), 스테이터스를 천이시킨다(단계 S907). 그 후, CPU(21)는 물리 어드레스가 나타내는 기억 영역의 데이터를 요청원의 CPU에 송신하는 응답을 하고(단계 S908), 처리를 종료한다.
이어서, 도 23을 이용하여 CPU(21)가 응답을 수신했을 때에 실행하는 처리의 흐름에 관해서 설명한다. 도 23은 CPU가 응답을 수신했을 때에 실행하는 처리의 흐름을 설명하기 위한 흐름도이다. 예컨대, CPU(21)는 응답을 수신한다(단계 S1001). 이러한 경우에는, CPU(21)는 응답의 내용이 정상적인 응답인지 여부를 판별한다(단계 S1002).
그리고, CPU(21)는, 응답의 내용이 정상인 경우, 즉 요청 대상이 되는 데이터를 수신한 경우에는(단계 S1002 긍정), 데이터를 이용한 정상적인 처리를 실행하고(단계 S1003), 처리를 종료한다. 한편, CPU(21)는 부정 응답을 수신한 경우는(단계 S1002 부정), 부정 응답의 이유가 액세스 에러인지 여부를 판별한다(단계 S1004).
그리고, CPU(21)는 부정 응답의 이유가 액세스 에러가 아닌 경우에는(단계 S1004 부정), 통상의 에러 처리를 실행하고(단계 S1005), 처리를 종료한다. 한편, CPU(21)는 부정 응답의 이유가 액세스 에러인 경우에는(단계 S1004 긍정), 에러가 발생한 물리 어드레스를 에러 레지스터에 설정하여, 트랩 처리를 실행하고(단계 S1006), 처리를 종료한다.
[실시예 1의 효과]
전술한 바와 같이, 정보 처리 시스템(1)은 CPU(21∼21c)와 메모리(22∼22c)와, 각 CPU(21∼21c)를 접속하는 XB(2)를 갖는다. 또한, CPU(21)는 논리 어드레스와 물리 어드레스와의 변환을 행하는 어드레스 변환부와, 물리 어드레스와 CPUID를 변환하는 노드맵(34)을 갖는다.
그리고, CPU(21)는 물리 어드레스와 CPUID를 갖는 요청의 패킷을 송신한다. 또한, CPU(21)는 다른 CPU로부터 요청의 패킷을 수신한 경우에는, 수신한 패킷에 저장된 물리 어드레스에 기초하여 액세스 대상이 되는 기억 영역이 공유 영역인지 로컬 영역인지를 판별한다.
이와 같이 함으로써, 정보 처리 시스템(1)은 효율적으로 또한 작은 하드웨어 물량으로 노드 사이 공유 메모리에 대한 메모리 액세스를 행할 수 있다. 즉, 정보 처리 시스템(1)은, CPU(21)가 물리 어드레스와 CPUID를 변환하는 노드맵(34)을 이용하여 어드레스 변환을 하기 때문에, 효율적인 메모리 액세스를 행할 수 있다.
또한, CPU(21)는, 다른 CPU가 액세스하는 메모리의 공유 영역에 액세스하는 경우에는, 물리 어드레스와 CPUID를 저장한 패킷을 XB(2)에 송출하기만 하면 된다. 이 때문에, 정보 처리 시스템(1)은 효율적인 메모리 액세스를 행할 수 있다.
또한, 정보 처리 시스템(1)은, CPU(21)가 다른 CPU로부터 요청의 패킷을 수신한 경우에는, 수신한 패킷에 저장된 물리 어드레스에 기초하여, 액세스 대상이 되는 기억 영역이 공유 영역인지 로컬 영역인지를 판별한다. 이 때문에, 정보 처리 시스템(1)은 로컬 영역에 저장하는 커널 데이터나 유저 데이터의 시큐리티 레벨을 높게 유지할 수 있다. 또한, 정보 처리 시스템(1)은 모든 메모리를 캐쉬 가능하게 하기 때문에, 메모리 액세스에 있어서의 레이턴시를 용이하게 은폐할 수 있다.
또한, CPU(21)는 다른 CPU가 액세스하는 메모리의 공유 영역에 대하여 메모리(22)에 액세스하는 경우와 같은 방법으로 액세스한다. 즉, CPU(21)가 갖는 연산부(31)는, 액세스 대상이 되는 기억 영역이 메모리(22) 상에 존재하는 경우에도, 다른 메모리 상에 존재하는 경우에도, 논리 어드레스를 출력하기만 하면 된다.
이 때문에, 정보 처리 시스템(1)은, I/O의 배타 제어 등의 처리나 프로그래밍 등을 실행하지 않아도 용이하게 공유 영역에 액세스할 수 있기 때문에, 메모리 액세스 성능을 향상시킬 수 있다. 또한, CPU(21)는 실행하는 프로그램이나 OS에 개변을 행하지 않더라도 공유 메모리를 적절하게 이용할 수 있는 결과, 프리페치 처리의 실행을 종래와 같이 행할 수 있기 때문에, 메모리 액세스의 성능을 향상시킬 수 있다.
또한, 정보 처리 시스템(1)은, 정해진 비트가 「1」이 되는 물리 어드레스를 공유 영역에 할당하고, 정해진 비트가 「0」이 되는 물리 어드레스를 로컬 영역에 할당한다. 이 때문에, CPU(21)는, 물리 어드레스 중, 정해진 1 비트가 「1」인지 여부를 판별하는 것만으로, 액세스 대상의 물리 어드레스가 공유 영역의 물리 어드레스인지 여부를 용이하게 판별할 수 있다. 이 결과, 정보 처리 시스템(1)은 효율적인 메모리 액세스를 행할 수 있다.
또한, CPU(21)는 다른 CPU로부터의 메모리 액세스의 대상이 로컬 영역에의 액세스라고 판정한 경우에는 부정 응답을 회신한다. 이 때문에, 정보 처리 시스템(1)은 공유 영역 이외로의 액세스를 방지하는 결과, 에러를 막을 수 있다.
또한, 캐쉬 디렉토리 관리부(36)는 노드맵(34)을 이용하여 물리 어드레스를 노드맵(34)에 대응시켜 기억된 CPUID로 변환한다. 이 때문에, CPU(21)는 액세스 대상이 되는 물리 어드레스가 분류된 메모리에 액세스하는 CPU를 식별할 수 있다.
또한, 각 빌딩 블록(10∼10e)은 노드맵(34)의 재기록을 행하는 서비스 프로세서를 갖는다. 이 때문에, 정보 처리 시스템(1)은 메모리(22∼22c)마다 로컬 영역과 공유 영역을 자유롭게 할당할 수 있다. 예컨대, 정보 처리 시스템(1)은 메모리(22)가 4 TB의 용량을 갖는 경우에, 로컬 영역에 1 TB를 할당하고, 공유 영역에 3 TB를 할당한다고 하는 바와 같이, 임의 용량의 기억 영역을 노드 사이에서 공유할 수 있다.
또한, 정보 처리 시스템(1)은, 새로운 CPU와 메모리를 추가한 경우나 CPU나 메모리의 삭제를 한 경우에도, 서비스 프로세서를 통해 용이하게 로컬 영역과 공유 영역을 할당할 수 있다.
또한, CPU(21)는 메모리(22)에 기억된 데이터를 캐쉬한 CPU를 관리하는 디렉토리를 이용하여 캐쉬 코히런스를 제어한다. 이 때문에, 정보 처리 시스템(1)은 정보 처리 시스템(1)이 갖는 CPU의 수가 증가한 경우에도, XB(2)의 트래픽을 증가시키는 일없이 효율적으로 캐쉬 코히런스를 유지할 수 있다.
구체적으로는, 정보 처리 시스템(1)에 있어서는, 각 CPU 사이의 통신이, 리모트 CPU와 홈 CPU 사이, 또는 리모트 CPU와 홈 CPU와 갱신한 데이터를 캐쉬하는 로컬 CPU 사이로 한정된다. 이 때문에, 정보 처리 시스템(1)은 효율적으로 캐쉬 코히런스를 유지할 수 있다.
또한, CPU(21)는, 캐쉬 미스가 발생한 경우에, 캐쉬 미스한 물리 어드레스가 다른 CPU가 액세스하는 메모리에 할당된 물리 어드레스인지 여부를 판별한다. 그리고, CPU(21)는 캐쉬 미스한 물리 어드레스가 다른 CPU가 액세스하는 메모리에 할당된 물리 어드레스라고 판별한 경우에는, 물리 어드레스를 CPUID로 변환하여 물리 어드레스와 CPUID를 저장한 패킷을 생성 및 송출한다. 이 때문에, CPU(21)는 쓸데없는 어드레스 변환 처리를 하는 일없이 메모리 액세스를 행할 수 있다.
또한, CPU(21)는, 실행하는 애플리케이션이 공유 영역의 획득을 요구한 경우에, 애플리케이션이 이용하는 논리 어드레스와 공유 영역에 할당되는 물리 어드레스를 변환하는 TLB를 설정한다. 이 때문에, CPU(21)는 실행하는 애플리케이션이나 OS에 공유 영역이나 로컬 영역에의 액세스를 의식한 개변을 가하지 않더라도, 메모리 액세스를 행할 수 있다.
[실시예 2]
지금까지 본 발명의 실시예에 관해서 설명했지만 실시예는 전술한 실시예 이외에도 여러 가지 다른 형태로 실시되더라도 좋다. 그래서 이하에서는 실시예 2로서 본 발명에 포함되는 다른 실시예를 설명한다.
(1) 빌딩 블록에 관해서
전술한 정보 처리 시스템(1)은 4개의 CPU를 갖는 빌딩 블록(10∼10e)를 갖고 있었다. 그러나, 실시예는 이것으로 한정되지 않고, 빌딩 블록(10∼10e)은 임의 수의 CPU 및 각 CPU가 액세스하는 메모리를 가질 수 있다. 또한, CPU와 메모리는 1대1로 대응하고 있을 필요는 없으며, 메모리에 직접 액세스하는 CPU는 전체의 일부라도 좋다.
(2) 공유 영역과 로컬 영역의 할당에 관해서
전술한 공유 영역과 로컬 영역에 대한 물리 어드레스의 할당은 어디까지나 일례이며, 정보 처리 시스템(1)은 임의의 물리 어드레스를 각 영역에 할당할 수 있다.
예컨대, 정보 처리 시스템(1)은, 물리 어드레스의 최하위 1 비트가 「0」이 되는 물리 어드레스를 공유 영역에 할당하고, 물리 어드레스의 최하위 1 비트가 「1」이 되는 물리 어드레스를 로컬 영역에 할당하는 것으로 하여도 좋다. 이러한 경우에는, 각 CPU는 물리 어드레스의 최하위 1 비트가 「0」인지 「1」인지를 판별함으로써 액세스 대상이 공유 영역인지를 용이하게 판별할 수 있다.
또한, 정보 처리 시스템(1)은, 물리 어드레스 공간의 전반(前半)에 포함되는 임의의 물리 어드레스를 공유 영역에 할당하고, 물리 어드레스 공간의 후반에 포함되는 임의의 물리 어드레스를 로컬 영역에 할당하더라도 좋다. 이러한 경우에는, 각 CPU는 물리 어드레스의 최상위 1 비트가 「0」인지 「1」인지를 판별함으로써, 액세스 대상이 공유 영역인지를 용이하게 판별할 수 있다. 한편, 정보 처리 시스템(1)은 물리 어드레스 공간의 전반에 포함되는 임의의 물리 어드레스를 로컬 영역에 할당하고, 후반에 포함되는 임의의 물리 어드레스를 공유 영역에 할당하더라도 좋다.
즉, 정보 처리 시스템(1)은, 임의의 물리 어드레스를 공유 영역과 로컬 영역에 할당할 수 있지만, 정해진 비트가 동일한 값으로 되는 물리 어드레스를 공유 영역에 할당하고, 정해진 비트가 공유 영역과는 다른 값의 물리 어드레스를 로컬 영역에 할당함으로써, 액세스 대상이 공유 영역인지 로컬 영역인지를 용이하게 판별할 수 있다.
(3) CPU가 송신하는 패킷에 관해서
전술한 CPU(21)는 CPUID와 PA를 갖는 패킷을 메모리 액세스의 요청으로서 송신했다. 그러나, 실시예는 이것으로 한정되지 않는다. 즉, CPU(21)는 액세스 대상이 되는 메모리에 액세스하는 CPU를 일의적으로 식별할 수 있는 것이라면, 임의의 정보를 저장한 패킷을 출력하여도 좋다.
또한 예컨대, CPU(21)는 CPUID에서 VC(Virtual Connection) ID로 변환하여, VCID를 저장하는 것으로 하여도 좋다. 또한, CPU(21)는 패킷에 데이터 길이를 나타내는 렝스 등의 정보를 저장하는 것으로 하여도 좋다.
(4) CPU가 발행하는 명령에 관해서
전술한 바와 같이, 각 CPU(21∼21c)는 요청이나 명령을 발행하여 캐쉬의 코히런스를 유지했다. 그러나, 전술한 요청이나 명령은 어디까지나 일례이며, 예컨대 CPU(21∼21c)는 CAS(Compare And Swap) 명령을 발행하더라도 좋다.
이와 같이, CPU(21∼21c)가 CAS 명령을 발행한 경우에는, 배타 제어의 컨텐션이 복수의 CPU 사이에서 빈발하더라도 각 CPU의 캐쉬 상에서 처리가 행해진다. 이 결과, CPU(21∼21c)는 메모리 액세스의 발생에 의한 지연을 방지하고, 각 CPU 사이의 트랜잭션이 혼잡해지는 것을 막을 수 있다.
(5) 하이퍼바이저를 경유한 제어에 관해서
전술한 정보 처리 시스템(1)에서는, OS에 의해서 하드웨어인 어드레스 변환부(35)에 액세스하는 예에 관해서 설명했다. 그러나, 실시예는 이것으로 한정되지 않고, 예컨대 가상 머신을 동작시키는 하이퍼바이저(HPV : Hypervisor)가 어드레스 변환부(35)에 액세스를 행하더라도 좋다.
즉, 하이퍼바이저가 동작하는 노드에 있어서, OS는 캐쉬나 MMU 등의 CPU(21∼21c)의 하드웨어 자원에 대하여 직접적인 조작을 하지 않고, 조작을 하이퍼바이저에 의뢰하게 된다. 이와 같이, 각 CPU(21∼21c)는 하이퍼바이저를 통한 제어를 접수하는 경우에, 가상 어드레스를 실제 어드레스(RA : Real Address)로 변환하고, 그 후 실제 어드레스를 물리 어드레스로 변환하게 된다.
또한, 하이퍼바이저가 동작하는 노드에 있어서, 인터럽트 처리는, OS에는 직접 인터럽트하지 않고, HPV에 대하여 인터럽트를 행한다. 이러한 경우에는, 하이퍼바이저가 OS의 인터럽트 처리 핸들러를 판독함으로써 인터럽트를 행한다. 한편, 전술한 하이퍼바이저가 실행하는 처리는 가상 머신을 동작시키기 위해서 실행되는 공지된 처리이다.
(6) 파티션을 이용한 처리에 관해서
전술한 정보 처리 시스템(1)에서는, 각 CPU(21∼21c)는 하나의 노드맵을 이용하여 메모리 액세스를 송신하고 있었다. 그러나, 실시예는 이것으로 한정되지 않는다. 예컨대, 각 빌딩 블록(10∼10e)은 복수의 노드군으로서 동작하고, 각 노드군마다 동일한 펌웨어(하이퍼바이저)를 동작시키는 하나의 논리 파티션을 구성하더라도 좋다.
이러한 경우에, 각 CPU(21∼21c)는 액세스할 곳의 CPU를 나타내는 노드맵과, 동일 논리 파티션 내의 CPU를 나타내는 노드맵을 갖는다. 이와 같이, 각 CPU(21∼21c)는 동일 논리 파티션 내에 포함되는 CPU를 나타내는 노드맵을 가짐으로써, 에러 발생 통지, 다운 요구, 리셋 요구 패킷 등의 논리 파티션을 넘어 전송하면 안 되는 특수 패킷의 전송 범위를 식별할 수 있다.
이하, 동일 논리 파티션 내에 포함되는 CPU를 나타내는 노드맵을 갖는 CPU 에 관해서 설명한다. 도 24는 실시예 2에 따른 정보 처리 시스템을 설명하기 위한 도면이다. 도 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에 대하여 전술한 특수 패킷을 송신하더라도 좋지만, 파티션 #B에 포함되는 각 CPU에 대해서는 특수 패킷을 송신하면 안 된다.
이 때문에, 각 빌딩 블록(10∼10d)의 CPU는 동일한 논리 파티션에 포함되는 CPU의 CPUID를 나타내는 노드맵을 갖는다. 예컨대, CPU(21)는 물리 어드레스와, 물리 어드레스가 나타내는 기억 영역을 갖는 메모리와 접속된 CPU의 CPUID를 대응시켜 기억하는 노드맵(34)을 갖는다. 또한, CPU(21)는 CPU(21)와 동일한 파티션, 즉 파티션 #A에 포함되는 CPU의 CPUID를 기억하는 노드맵(34a)을 갖는다. 한편, 노드맵(34a)은 노드맵(34)과 마찬가지로 서비스 프로세서(24)에 의해서 설정되는 것으로 한다.
이하, 도면을 이용하여 동일 논리 파티션에 포함되는 CPU의 CPUID를 나타내는 노드맵의 일례에 관해서 설명한다. 도 25는 파티션의 일례를 설명하기 위한 도면이다. 예컨대 도 25에 도시하는 예에서는, 파티션 #A는 빌딩 블록 #0을 갖는다. 또한, 빌딩 블록 #0은 CPU #0과 어드레스 영역「#0」이 할당된 메모리를 갖는다.
또한, 파티션 #B는 빌딩 블록 #1과 빌딩 블록 #2를 갖는다. 또한, 빌딩 블록 #1은 CPU #4, CPU #5, 어드레스 영역 「#1」이 할당된 메모리, 어드레스 영역 「#2」가 할당된 메모리를 갖는다. 한편, 어드레스 영역 「#1」이 할당된 메모리에는 CPU #4가 액세스하고, 어드레스 영역 「#2」가 할당된 메모리에는 CPU #5가 액세스한다. 또한, 빌딩 블록 #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 #0은 동일 파티션 내의 CPU에만 특수 패킷을 송신하는 경우에는, 도 26b에 도시하는 노드맵을 이용하여 송신처의 CPU를 식별한다. 즉, CPU #0은 도 26b에 예시하는 노드맵이 나타내는 파티션 #A 내의 CPU에 대하여 특수 패킷을 송신한다.
한편, CPU #4는 메모리 액세스를 행하기 위해서, 도 26a에 도시하는 노드맵과 도 26c에 도시하는 노드맵을 갖는다. 여기서, 도 26c는 파티션 #B를 나타내는 노드맵의 일례를 설명하기 위한 도면이다. 도 26c에 도시하는 예에서는, 파티션 #B를 나타내는 노드맵은, 파티션 #B에, 빌딩 블록 #1의 CPU #4 및 CPU #5, 빌딩 블록 #2의 CPU #8이 존재하는 것을 나타낸다. CPU #4는 도 26c에 예시하는 노드맵이 나타내는 파티션 #B 내의 CPU에 대하여 특수 패킷을 송신한다.
이와 같이, CPU #1 및 CPU #4는 어드레스 영역과 CPUID를 대응시킨 노드맵과, 파티션을 나타내는 노드맵을 기억한다. 그리고, CPU #1 및 CPU #4는 어드레스 영역과 CPUID를 대응시킨 노드맵을 이용하여, 다른 노드가 갖는 메모리에 대하여 직접 메모리 액세스를 행한다. 또한, CPU #1은 파티션 #A를 나타내는 노드맵을 이용하여 특수 패킷의 송신을 행한다. 또한, CPU #4는 파티션 #B를 나타내는 노드맵을 이용하여 특수 패킷을 송신한다.
이와 같이, 각 CPU는 자신을 포함하는 파티션마다 다른 값을 갖는 노드맵을 갖더라도 좋다. 또한, 각 CPU는 자신을 포함하는 파티션마다 다른 값을 갖는 노드맵을 갖는 경우는, 특수 패킷을 파티션을 넘은 송신을 하는 것을 막을 수 있다.
한편, 각 CPU는 실시예 1과 마찬가지로, 스타트 어드레스와 어드레스 마스크, 또는 스타트 어드레스와 렝스로 액세스 대상이 되는 어드레스 영역을 나타내더라도 좋다. 즉, CPU #1과 CPU #4는, 스타트 어드레스와 어드레스 마스크, 또는 스타트 어드레스와 렝스를 이용하여, 액세스 대상이 되는 어드레스 영역을 나타내는 노드맵을 이용하여, 액세스 대상이 되는 노드를 식별한다. 또한, CPU #1과 CPU #4는 각각 다른 파티션을 나타내는 노드맵을 이용하여 특수 패킷을 송신한다.
1 : 정보 처리 시스템 2 : XB
10∼10e : 빌딩 블록 20 : 노드
21∼21c : CPU 22∼22c : 메모리
23, 26 : 통신부 24 : 서비스 프로세서
25 : 제어부 27, 27a : XB 접속부
28 : PCIe 접속부 30 : 연산 처리부
31 : 연산부 32 : L1 캐쉬
33 : L2 캐쉬 34 : 노드맵
35 : 어드레스 변환부 36 : 캐쉬 디렉토리 관리부
37 : 패킷 제어부 38 : 요청 생성부
39 : 요청 수신부 40 : 라우터
41 : 메모리 액세스부 42 : PCIe 제어부
43 : 요청 생성부 44 : PCIe 버스 제어부

Claims (10)

  1. 각각이 프로세서 및 기억 장치를 구비하는 복수의 노드와, 상기 복수의 노드 사이를 접속하는 인터커넥트를 갖는 정보 처리 장치로서,
    상기 노드의 각각은,
    논리 어드레스와 물리 어드레스와의 변환을 행하는 제1 변환부와,
    물리 어드레스와 각 노드에 구비된 프로세서를 식별하는 프로세서 식별 정보와의 변환을 행하는 제2 변환부와,
    상기 물리 어드레스 및 상기 프로세서 식별 정보를 포함하는 전송 데이터를 송신하는 송신부와,
    다른 노드로부터 상기 인터커넥트를 통해 송신된 전송 데이터를 수신하는 수신부와,
    상기 수신부에 의해 수신된 전송 데이터에 포함되는 물리 어드레스에 기초하여, 자(自)노드의 기억 장치의 데이터 저장 영역 중, 자노드 내의 액세스에 이용되는 로컬 영역과, 타노드로부터도 액세스 가능한 공유 영역 중 어느 영역으로의 액세스인지를 판정하는 로컬 판정부를 갖는 것을 특징으로 하는 정보 처리 장치.
  2. 제1항에 있어서, 상기 노드의 각각은,
    상기 노드의 각각이 구비하는 기억 장치의 물리 어드레스 중, 정해진 위치의 비트가 동일한 값인 물리 어드레스를 상기 공유 영역에 할당하고, 상기 정해진 위치의 비트를 상기 공유 영역에 할당한 물리 어드레스와는 다른 값인 물리 어드레스를 상기 로컬 영역에 할당하고,
    상기 로컬 판정부는, 상기 전송 데이터에 포함되는 물리 어드레스 중, 상기 정해진 위치의 비트의 값에 따라서, 상기 로컬 영역과 상기 공유 영역 중 어느 영역으로의 액세스인지를 판정하는 것을 특징으로 하는 정보 처리 장치.
  3. 제1항에 있어서, 상기 노드의 각각은,
    상기 노드의 각각이 구비하는 기억 장치의 전체 물리 어드레스를 상기 로컬 영역과 상기 공유 영역으로 나눠 할당하고,
    상기 로컬 판정부는, 상기 전송 데이터에 포함되는 물리 어드레스 중, 최상위 비트의 값에 따라서, 상기 로컬 영역과 상기 공유 영역 중 어느 영역으로의 액세스인지를 판정하는 것을 특징으로 하는 정보 처리 장치.
  4. 제1항에 있어서, 상기 노드의 각각은,
    상기 로컬 판정부가 상기 로컬 영역으로의 액세스라고 판정한 경우에는, 상기 전송 데이터의 송신원이 되는 노드에 대하여 액세스를 허가하지 않는다는 취지의 부정 응답을 송신하는 것을 특징으로 하는 정보 처리 장치.
  5. 제1항에 있어서, 상기 프로세서 식별 정보와, 상기 프로세서 식별 정보가 나타내는 프로세서를 구비한 노드의 기억 장치에 할당된 물리 어드레스를 대응시켜 기억하는 기억부를 더 가지며,
    상기 제2 변환부는, 상기 물리 어드레스를, 상기 기억부에 상기 물리 어드레스와 대응시켜 기억된 프로세서 식별 정보로 변환하는 것을 특징으로 하는 정보 처리 장치.
  6. 제5항에 있어서, 상기 정보 처리 장치는, 상기 노드의 각각이 구비하는 상기 기억부에 기억된 프로세서 식별 정보와 물리 어드레스를 대응시킨 재기록을 행하는 제어 장치를 더 구비하는 것을 특징으로 하는 정보 처리 장치.
  7. 제1항에 있어서, 상기 노드의 각각은, 자노드가 구비하는 기억 장치의 데이터를 캐쉬한 노드를 나타내는 디렉토리를 이용하여, 각 노드가 캐쉬한 데이터의 동일성을 유지하는 디렉토리 제어부를 갖는 것을 특징으로 하는 정보 처리 장치.
  8. 제1항에 있어서, 상기 노드의 각각은,
    상기 기억 장치로부터 데이터를 캐쉬하는 캐쉬 메모리와,
    캐쉬 미스가 발생한 경우는, 캐쉬 미스된 물리 어드레스가 다른 노드가 갖는 기억 장치의 물리 어드레스인지 여부를 판별하는 판별부를 더 가지며,
    상기 제2 변환부는, 상기 캐쉬 미스된 물리 어드레스가 다른 노드가 갖는 기억 장치의 물리 어드레스라고 상기 판별부가 판별한 경우는, 그 물리 어드레스를 프로세서 식별 정보로 변환하는 것을 특징으로 하는 정보 처리 장치.
  9. 제2항에 있어서, 상기 노드의 각각이 구비하는 프로세서에 의해 실행되는 각 OS는, 애플리케이션으로부터 상기 공유 영역의 획득이 요구된 경우에는, 상기 애플리케이션이 사용하는 논리 어드레스와, 상기 공유 영역에 할당되는 물리 어드레스와의 변환을 행하도록 상기 제1 변환부를 설정하는 것을 특징으로 하는 정보 처리 장치.
  10. 각각이 프로세서 및 기억 장치를 구비하는 복수의 노드와 상기 복수의 노드 사이를 접속하는 인터커넥트를 갖는 정보 처리 장치의 각 노드가 실행하는 메모리 액세스 방법으로서,
    액세스 대상의 논리 어드레스와 물리 어드레스와의 변환을 행하고,
    상기 물리 어드레스와 각 노드에 구비된 프로세서를 식별하는 프로세서 식별 정보와의 변환을 행하고,
    상기 물리 어드레스 및 상기 프로세서 식별 정보를 포함하는 전송 데이터를 송신하고,
    다른 노드로부터 상기 인터커넥트를 통해 송신된 전송 데이터를 수신한 경우는, 상기 전송 데이터에 포함되는 물리 어드레스에 기초하여, 자노드의 기억 장치의 데이터 저장 영역 중, 자노드 내의 액세스에 이용되는 로컬 영역과, 타노드로부터도 액세스 가능한 공유 영역 중 어느 영역으로의 액세스인지를 판정하는 처리를 실행하는 것을 특징으로 하는 메모리 액세스 방법.
KR1020120120722A 2011-12-20 2012-10-29 정보 처리 장치 및 메모리 액세스 방법 KR101325888B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2011-279022 2011-12-20
JP2011279022A JP5573829B2 (ja) 2011-12-20 2011-12-20 情報処理装置およびメモリアクセス方法

Publications (2)

Publication Number Publication Date
KR20130071349A KR20130071349A (ko) 2013-06-28
KR101325888B1 true KR101325888B1 (ko) 2013-11-07

Family

ID=47044865

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120120722A KR101325888B1 (ko) 2011-12-20 2012-10-29 정보 처리 장치 및 메모리 액세스 방법

Country Status (6)

Country Link
US (1) US20130159638A1 (ko)
EP (1) EP2608044B1 (ko)
JP (1) JP5573829B2 (ko)
KR (1) KR101325888B1 (ko)
CN (1) CN103198022B (ko)
TW (1) TW201327402A (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
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
JP6102632B2 (ja) * 2013-08-14 2017-03-29 ソニー株式会社 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
KR20150055933A (ko) * 2013-11-14 2015-05-22 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그것의 동작 방법
JP2015152949A (ja) 2014-02-10 2015-08-24 株式会社東芝 ストレージシステム
WO2015162745A1 (ja) * 2014-04-24 2015-10-29 株式会社日立製作所 ストレージシステム
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 日本電気株式会社 アクセス制御装置、アクセス制御システム、アクセス制御方法、及び、アクセス制御プログラムが格納された記録媒体
US10241706B2 (en) * 2016-05-20 2019-03-26 Renesas Electronics Corporation Semiconductor device and its memory access control method
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
CN109891908A (zh) 2016-11-29 2019-06-14 英特尔公司 用于毫米波机架互连的技术
US10445249B2 (en) * 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
JP6922879B2 (ja) * 2018-11-30 2021-08-18 日本電気株式会社 通信装置、情報処理システム、および通信方法
JP6700564B1 (ja) * 2018-12-28 2020-05-27 富士通クライアントコンピューティング株式会社 情報処理システム
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0603994A2 (en) 1992-12-18 1994-06-29 Fujitsu Limited Method and apparatus for transferring and processing data
US20090089537A1 (en) 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes

Family Cites Families (17)

* Cited by examiner, † Cited by third party
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
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
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
JP3849951B2 (ja) * 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
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
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0603994A2 (en) 1992-12-18 1994-06-29 Fujitsu Limited Method and apparatus for transferring and processing data
US20090089537A1 (en) 2007-09-28 2009-04-02 Sun Microsystems, Inc. Apparatus and method for memory address translation across multiple nodes

Also Published As

Publication number Publication date
EP2608044A1 (en) 2013-06-26
EP2608044B1 (en) 2014-11-26
CN103198022A (zh) 2013-07-10
US20130159638A1 (en) 2013-06-20
CN103198022B (zh) 2016-08-03
JP5573829B2 (ja) 2014-08-20
JP2013130976A (ja) 2013-07-04
TW201327402A (zh) 2013-07-01
KR20130071349A (ko) 2013-06-28

Similar Documents

Publication Publication Date Title
KR101325888B1 (ko) 정보 처리 장치 및 메모리 액세스 방법
CN110869913B (zh) 用于数据处理网络的存储器系统
CN110209601B (zh) 存储器接口
US9065706B2 (en) Information processing apparatus, computer-readable recording medium, and control method
US9665486B2 (en) Hierarchical cache structure and handling thereof
JP6434168B2 (ja) スイッチへのアドレスキャッシュ
KR101593107B1 (ko) 메모리 요청들을 처리하기 위한 시스템들 및 방법들
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
JP3924206B2 (ja) 不均一メモリ・アクセス(numa)データ処理システム
US8250254B2 (en) Offloading input/output (I/O) virtualization operations to a processor
KR101476001B1 (ko) 정보 처리 장치, 제어 방법 및 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
US8990513B2 (en) Accelerated recovery for snooped addresses in a coherent attached processor proxy
US20130227219A1 (en) Processor, information processing apparatus, and arithmetic method
JP2014160502A (ja) 情報処理装置およびメモリアクセス方法
TW201339836A (zh) 資訊處理設備、算術裝置及資訊傳送方法
US8938587B2 (en) Data recovery for coherent attached processor proxy
US10437725B2 (en) Master requesting missing segments of a cache line for which the master has coherence ownership
JP5800058B2 (ja) 情報処理装置、制御方法および制御プログラム
CN113841124A (zh) 微处理器中的地址转换高速缓存无效

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee