KR20130099805A - 연산 장치, 정보 처리 장치 및 연산 방법 - Google Patents

연산 장치, 정보 처리 장치 및 연산 방법 Download PDF

Info

Publication number
KR20130099805A
KR20130099805A KR1020120137109A KR20120137109A KR20130099805A KR 20130099805 A KR20130099805 A KR 20130099805A KR 1020120137109 A KR1020120137109 A KR 1020120137109A KR 20120137109 A KR20120137109 A KR 20120137109A KR 20130099805 A KR20130099805 A KR 20130099805A
Authority
KR
South Korea
Prior art keywords
cache
data
sector
memory
cpu
Prior art date
Application number
KR1020120137109A
Other languages
English (en)
Other versions
KR101414384B1 (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 KR20130099805A publication Critical patent/KR20130099805A/ko
Application granted granted Critical
Publication of KR101414384B1 publication Critical patent/KR101414384B1/ko

Links

Images

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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
    • 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/12Replacement control
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1012Design facilitation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1056Simplification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

프로그램에 플래시 요구를 발행시키기 위한 수정량을 삭감한다.
CPU(12)는, 캐시 메모리(12a)가 유지하는 데이터 중, CPU(12)가 실행하는 애플리케이션이 지정한 기간 내에 갱신한 데이터를 나타내는 섹터 정보를 기억한다. 그리고, CPU(12)는, 애플리케이션이 지정한 기간이 종료된 경우, 캐시 메모리(12a)가 유지하는 데이터 중, 섹터 정보가 나타내는 데이터를 캐시 메모리(12a)로부터 메모리(17∼24)에 재기록한다.

Description

연산 장치, 정보 처리 장치 및 연산 방법{PROCESSOR, INFORMATION PROCESSING APPARATUS, AND ARITHMETIC METHOD}
본 발명은 연산 장치, 정보 처리 장치 및 연산 방법에 관한 것이다.
종래, 복수의 연산 장치가 메모리를 공유하는 정보 처리 시스템이 알려져 있다. 이러한 정보 처리 시스템의 일례로서, 메모리가 기억하는 데이터를 각 연산 장치가 캐시하는 공유 메모리 방식의 정보 처리 시스템이 알려져 있다.
이러한 정보 처리 시스템에서는, 어느 연산 장치가 다운되었을 때에 리커버리를 쉽게 하기 위해서, 공유 메모리상에 데이터의 백업을 작성한다. 그러나, 캐시 기능을 갖는 연산 장치는, 백업 데이터의 갱신을 할 때에 백업 대상이 되는 데이터와 오래된 백업 데이터를 캐시하고, 캐시한 백업 데이터의 갱신을 행한다. 이 때문에, 연산 장치는 갱신한 백업 데이터를 메모리에 재기록하기 전에 고장이 생기면, 갱신한 백업 데이터를 메모리에 재기록할 수 없는 경우가 있다.
그래서, 캐시 메모리의 데이터를 메모리에 재기록하는 플래시 요구를 발행하도록 프로그램을 수정하여, 연산 장치가 캐시하는 백업 데이터를 메모리에 재기록하는 기술이 알려져 있다. 이하, 도 37∼39를 이용하여, 연산 장치가 캐시한 데이터를 메모리에 재기록하는 캐시 플래시 처리에 관해서 설명한다.
도 37은, 백업 처리를 설명하기 위한 도이다. 또한, 도 38은, 플래시 처리에 관해서 설명하기 위한 도이다. 또한, 도 39는, 연산 장치가 다운되었을 때의 처리를 설명하기 위한 도이다. 또, 도 37에 도시하는 예에서는, 연산 장치가 공유 메모리에 데이터를 재기록하는 처리에 관해서, 소프트웨어측에서 본 처리의 내용을 기재하고, 도 38, 도 39에는, 하드웨어측에서 본 처리의 내용을 기재하고 있다.
도 37에 도시하는 예에서, 연산 장치(70)와 연산 장치(71)는, 각각 코어와 캐시 메모리를 가지며, 연산 장치(71)에 접속된 메모리(72)를 공유한다. 우선, 도 37 중 (A)에 도시한 바와 같이, 연산 장치(70)가 실행하는 프로그램은, 메모리(72)에 저장되어 있는 데이터인 커런트 데이터의 백업을 행하는 경우에, 커런트 데이터의 로드 요구를 발행한다. 그리고, 연산 장치(70)가 실행하는 프로그램은, 도 37 중 (B)에 도시한 바와 같이, 판독한 커런트 데이터의 백업 데이터를 메모리(72)에 저장시키기 위해서, 스토어 요구의 발행과 함께, 플래시 요구를 발행한다.
한편, 프로그램으로부터 로드 요구의 발행을 받은 연산 장치(70)는, 도 38 중 (C), (D)에 도시한 바와 같이, 공유 메모리가 기억하는 커런트 데이터와 백업 데이터를 캐시한다. 또한, 연산 장치(70)는, 프로그램으로부터 스토어 요구의 발행을 받으면, 도 38 중 (E)에 도시한 바와 같이, 백업 데이터의 갱신을 캐시 메모리상에서 행한다. 그리고, 연산 장치(70)는, 프로그램이 플래시 요구를 발행하면, 도 38 중 (F)에 도시한 바와 같이, 캐시 메모리상의 백업 데이터를 공유 메모리에 재기록한다.
그렇게 하면, 메모리(72)에는, 플래시 요구에 의해서 재기록된 최신의 백업 데이터가 존재한다. 이 때문에, 정보 처리 시스템은, 도 39 중 (G)에 도시한 바와 같이, 연산 장치(70)가 다운된 경우에도, 도 39 중 (H)에 도시하는 최신의 백업 데이터를 이용하여 리커버리를 행한다.
특허 문헌 1 : 일본국 특허 공개 제2009-163450호 공보 특허 문헌 2 : 일본국 특허 공개 제2011-018196호 공보 특허 문헌 3 : 일본국 특허 공개 평성11-259362호 공보 특허 문헌 4 : 일본국 특허 공개 평성06-19797호 공보 특허 문헌 5 : 일본국 특허 공개 평성04-175946호 공보 특허 문헌 6 : 일본국 특허 공개 평성08-44626호 공보
그러나, 플래시 요구를 발행하도록 프로그램을 수정하는 기술에서는, 메모리에 재기록하고자 하는 데이터가 캐시될 때마다 플래시 요구를 발행하도록 프로그램을 수정하기 때문에, 프로그램이 번잡하게 된다고 하는 문제가 있다.
도 40은, 플래시 요구를 추가한 프로그램을 설명하기 위한 도이다. 또, 도 40에 도시하는 예에서는, 공유 메모리를 갖는 클러스터 구성의 시스템이 실행하는 프로그램을 도시했다. 예컨대, 도 40 중 (I)에 도시한 바와 같이, 클러스터 구성의 시스템이 실행하는 프로그램에서는, 메인 프로그램이 복수의 서브 프로그램을 호출하고, 각 서브 프로그램에 스토어 요구를 하드웨어에 발행시킨다.
이 때문에, 도 40 중 (J)에 도시한 바와 같이, 어드레스 A 및 어드레스 B의 플래시 요구를 프로그램에 추가하는 경우에는, 플래시 요구를 각 서브 프로그램이 발행하도록 프로그램을 수정한다. 또한, 클러스터 구성의 시스템으로 프로그램을 공용하는 경우에는, 프로그램을 실행하는 클러스터의 구성에 따라서 플래시 요구를 실행하는지 여부를 판별하도록 프로그램을 수정한다. 이 때문에, 프로그램이 번잡하게 되어 버린다.
또, 프로그램이 번잡하게 되는 것을 회피하기 위해서, 캐시상의 데이터가 갱신될 때마다 메모리에 재기록하는 라이트 스루 방식을 채용하는 수법도 생각할 수 있다. 도 41은, 라이트 스루 방식을 설명하기 위한 도이다. 예컨대, 도 41 중 (K)에 도시한 바와 같이, 연산 장치(70)는, 공유 메모리로부터 데이터를 캐시하고, 도 41 중 (L)에 도시한 바와 같이, 캐시한 데이터를 갱신한다.
그리고, 연산 장치(70)는, 도 41 중 (M)에 도시한 바와 같이, 캐시한 데이터의 갱신을 행할 때마다, 캐시의 데이터를 공용 메모리에 재기록한다. 그러나, 라이트 스루 방식에서는, 연산 장치(70)가 캐시한 데이터를 갱신할 때마다 캐시 메모리상의 데이터를 공용 메모리에 재기록하는 처리가 발생하기 때문에, 보틀넥이 되어 버린다.
또한, 캐시 메모리의 리플레이스가 발생했을 때에 데이터의 재기록을 행하는 라이트 백 방식과 라이트 스루 방식을 그때 마다 잘 가려서 쓰는 방식도 생각할 수 있다. 그러나, 라이트 백 방식과 라이트 스루 방식을 잘 가려서 사용한 경우에는, 스토어 요구의 대상을 메모리에 재기록해야 되는 데이터인지 여부를 프로그램상에서 구별하기 때문에, 프로그램의 작성이 곤란해진다. 또한, 라이트 백 방식과 라이트 스루 방식의 양방을 실행하는 하드웨어는, 회로가 번잡해진다.
또한, 모든 캐시 라인에 대해서 플래시 처리를 행하는 수법도 생각할 수 있지만, 모든 캐시 라인에 대해서 플래시 처리를 행한 경우는, 플래시 처리에 요하는 시간이 많아져 버린다. 또한, 캐시 메모리에는, 연산 처리에 이용되는 데이터 등 메모리에 재기록하여서는 안 되는 데이터도 존재하기 때문에, 처리 성능이 열화되어 버린다.
본원은, 일 측면에서는, 프로그램에 플래시 요구를 발행시키기 위한 수정량을 삭감하는 것을 목적으로 한다.
일 측면에서는, 주기억 장치가 기억하는 데이터를 일시적으로 유지하는 캐시 메모리를 갖는 연산 장치이다. 또한, 연산 장치는, 캐시 메모리가 유지하는 데이터를 이용하여, 애플리케이션을 실행하는 연산부를 갖는다. 또한, 연산 장치는, 캐시 메모리가 유지하는 데이터 중, 연산부가 실행하는 애플리케이션이 지정한 기간 내에 연산부가 갱신한 데이터를 나타내는 섹터 정보를 기억하는 기억부를 갖는다. 그리고, 연산 장치는, 애플리케이션이 지정한 기간이 종료한 경우, 캐시 메모리가 유지하는 데이터 중, 기억부가 기억하는 섹터 정보가 나타내는 데이터를 캐시 메모리로부터 주기억 장치에 재기록하는 재기록부를 갖는다.
일 측면에서는, 프로그램에 플래시 요구를 발행시키기 위한 수정량을 삭감시킬 수 있다.
도 1은 실시예 1에 따른 정보 처리 시스템을 설명하기 위한 도이다.
도 2는 실시예 1에 따른 노드의 기능 구성을 설명하기 위한 도이다.
도 3은 실시예 1에 따른 메모리의 할당을 설명하기 위한 도이다.
도 4는 실시예 1에 따른 정보 처리 시스템이 각 메모리에 맵핑하는 메모리 맵을 설명하기 위한 도이다.
도 5는 실시예 1에 따른 정보 처리 시스템이 할당하는 공유 메모리 영역을 설명하기 위한 도이다.
도 6은 실시예 1에 따른 정보 처리 시스템에 있어서의 하드웨어와 소프트웨어와의 관계를 설명하기 위한 도이다.
도 7은 실시예 1에 따른 애플리케이션과 미들웨어와의 동작을 설명하기 위한 도이다.
도 8은 실시예 1에 따른 CPU가 실행하는 처리를 설명하기 위한 도이다.
도 9는 실시예 1에 따른 CPU의 캐시 플래시의 효과를 설명하기 위한 도이다.
도 10은 실시예 1에 따른 CPU의 효과를 설명하기 위한 도이다.
도 11은 실시예 2에 따른 노드의 기능 구성을 설명하기 위한 도이다.
도 12는 개요 섹터 플래그를 이용한 캐시 플래시를 설명하기 위한 도이다.
도 13은 실시예 3에 따른 노드의 기능 구성을 설명하기 위한 도이다.
도 14는 멀티코어 대응의 개요 섹터 플래그를 설명하기 위한 도이다.
도 15는 실시예 4에 따른 노드의 기능 구성을 설명하기 위한 도이다.
도 16은 플래시의 대상을 특정 웨이(way)로 한정하는 처리의 일례를 설명하기 위한 도이다.
도 17은 실시예 5에 따른 CPU의 기능 구성을 설명하기 위한 도이다.
도 18은 L1 캐시 태그를 설명하기 위한 도이다.
도 19는 L1 캐시를 설명하기 위한 도이다.
도 20은 실시예 5에 따른 섹터 ID 생성부가 실행하는 처리를 설명하기 위한 도이다.
도 21은 L2 캐시 태그와 L2 캐시와 L2 캐시 개요 섹터 플래그를 설명하기 위한 도이다.
도 22는 실시예 5에 따른 L2 캐시 액세스 컨트롤러가 송수신하는 신호를 설명하기 위한 도이다.
도 23은 L1 캐시 태그에 저장하는 섹터 ID를 생성하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 24는 L1 캐시의 섹터 ID를 등록/갱신하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 25는 L1 캐시 태그에 등록한 섹터 ID의 천이를 설명하기 위한 도이다.
도 26은 L2 캐시에 있어서의 섹터 ID를 등록하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 27은 공유 메모리 영역만을 플래시 대상으로 하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 28은 플래시 대상의 웨이에 상한이 있을 때에 섹터 ID를 등록하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 29는 플래시 대상의 웨이에 상한이 있을 때의 처리의 바리에이션을 설명하기 위한 흐름도이다.
도 30은 L2 캐시의 섹터 ID의 천이를 설명하기 위한 제1 도이다.
도 31은 L2 캐시의 섹터 ID의 천이를 설명하기 위한 제2 도이다.
도 32는 L2 캐시 개요 섹터 플래그를 설정하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 33은 플래시를 실행하는 처리의 흐름을 설명하기 위한 흐름도이다.
도 34는 스토어 시에 캐시 미스가 발생했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다.
도 35는 스토어 시에 캐시 히트했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다.
도 36은 문맥 전환(context switch)이 발생했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다.
도 37은 백업 처리를 설명하기 위한 도이다.
도 38은 플래시 처리에 관해서 설명하기 위한 도이다.
도 39는 연산 장치가 다운되었을 때의 처리를 설명하기 위한 도이다.
도 40은 플래시 요구를 추가한 프로그램을 설명하기 위한 도이다.
도 41은 라이트 스루 방식을 설명하기 위한 도이다.
이하에 첨부 도면을 참조하여 본원에 관한 연산 장치, 정보 처리 장치 및 연산 방법에 관해서 설명한다.
[실시예 1]
이하의 실시예 1에서는, 도 1을 이용하여, 정보 처리 시스템의 일례를 설명한다. 도 1은, 실시예 1에 따른 정보 처리 시스템을 설명하기 위한 도이다. 도 1에 도시하는 예에서는, 정보 처리 시스템(1)은, 클라이언트 단말(2), 클라이언트 단말(2a), LAN(Local Area Network) 스위치(3), 관리 단말(4), LAN 스위치(5), 2중의 글로벌 크로스바(6), 복수의 노드(10∼10m)를 갖는다. 또한, 글로벌 크로스바(6)는, 서비스 프로세서(7)를 갖는다.
본 실시예에 있어서, 노드는 하나의 독립된 OS(Operating System)가 주행하는 단위이며, OS가 주행하기 위하여 최저한으로 필요한 장치를 포함한다. 뒤에서 상세히 설명하지만, 이들은 하나 이상의 CPU, 메모리, HDD(Hard Disk Drive) 또는 HDD를 대신하는 외부 기억 장치를 갖는다. 노드는 물리적으로 단일의 장치이더라도 좋고, 케이블 등의 장치간 접속 기능에 의해서 접속되어 물리적으로 복수의 장치로 구성되어 있더라도 좋다.
각 노드(10∼10m)는, 서비스용 LAN에 의해서 LAN 스위치(3) 및 각 클라이언트 단말(2, 2a)과 접속되어 있다. 또한, 각 노드(10∼10m)는, 내부 LAN에 의해서 LAN 스위치(5)와 접속되어 있다. 또한, 각 노드(10∼10m)는, 관리 LAN을 통해 관리 단말(4)과 접속되어 있다. 또한, 각 노드(10∼10m)는, 2중의 글로벌 크로스바(6)와 접속되어 있고, 인터커넥트를 통해 서로 접속되어 있다.
각 클라이언트 단말(2, 2a)은, 서비스용 LAN을 통해 각 노드(10∼10m)로부터 서비스를 취득한다. 또, 도 1에서는 도시를 생략했지만, 정보 처리 시스템(1)은, 임의의 수의 클라이언트 단말을 그 외에도 갖더라도 좋다.
노드(10)는, 서비스 프로세서(11), CPU(12), 로컬 XB(크로스바)(16)를 갖는다. 또한, 다른 노드(10a∼10m)는, 노드(10)와 같이, 서비스 프로세서, CPU, 로컬 XB를 갖는다. 또, 이하의 설명에서는, 각 노드(10a∼10m)는, 노드(10)와 같은 기능을 발휘하는 것으로 하여, 설명을 생략한다.
서비스 프로세서(11)는, 관리 LAN을 통해 관리 단말(4)과 접속되어 있고, 각 노드(10)의 전원 관리 등의 관리 제어를 실행한다. 또, 글로벌 크로스바(6)가 갖는 서비스 프로세서(7)는, 서비스 프로세서(11)의 마스터로서 동작하여, 전체의 관리 제어를 행한다. 여기서, 각 서비스 프로세서(7, 11)가 실행하는 관리 제어의 예로서는, 전원 관리, 리셋, 동작 모드의 변경, 노드의 추가나 삭제의 설정, 에러 로그의 수집, 축퇴 동작 제어 등이다.
또한, 노드(10∼10m)는, 각각 독립적으로 OS(Operating System)를 실행한다. 또한, 도 1에서는 생략했지만, 노드(10)는, CPU(12) 이외에도 복수의 CPU를 가지고, 각 CPU는, 로컬 XB(16)를 통해, 글로벌 크로스바(6)와 접속되어 있다.
또한, 노드(10)의 CPU는, 메모리 액세스의 요청인 메모리 액세스 요구를 로컬 XB(16)에 출력하는 것으로, 다른 노드에 메모리 액세스 요구를 전송한다. 그리고, 노드(10)의 CPU는, 메모리 액세스 요구를 취득하면, 자신이 자신과 접속된 메모리에 대하여 액세스를 행할 때와 같이 메모리 액세스를 실행한다. 즉, 정보 처리 시스템(1)에는, NUMA(Non-Uniform Memory Access)의 기술이 적용되어 있고, 각 노드(10∼10m)가, 각각의 메모리를 공용하여 처리를 실행한다.
다음에, 도 2를 이용하여, 노드(10)의 기능 구성에 관해서 설명한다. 도 2는, 실시예 1에 따른 노드의 기능 구성을 설명하기 위한 도이다. 도 2에 도시하는 예에서는, 노드(10)는, 서비스 프로세서(11), 복수의 CPU(12∼15), 로컬 XB(16), 복수의 메모리(17∼24), PCIe(Peripheral Component Interconnect Express) 스위치(25)를 갖는다. 또한, 노드(10)는, 서비스용 LAN과 접속하기 위한 LAN 어댑터(26), 관리용 LAN과 접속하기 위한 LAN 어댑터(27), SAS(Serial Attached SCSI)(28), HDD(Hard Disk Drive)(29)를 갖는다.
또한, 메모리(17) 및 메모리(18)는, CPU(13)와 접속되어 있고, CPU(13)에 의한 메모리 액세스를 접수하는 기억 장치이다. 또한, 메모리(19) 및 메모리(20)는, CPU(12)와 접속되어 있고, CPU(12)에 의한 메모리 액세스를 접수하는 기억 장치이다. 또한, 메모리(21) 및 메모리(22)는, CPU(14)와 접속되어 있고, CPU(14)에 의한 메모리 액세스를 접수하는 기억 장치이다.
또한, 메모리(23) 및 메모리(24)는, CPU(15)와 접속되어 있고, CPU(15)에 의한 메모리 액세스를 접수하는 기억 장치이다. 또, 도 2에 도시하는 예에서, 노드(10)는, HDD(29)를 갖고 있지만, 실시예는 이것으로 한정되지 않으며, SAN(Storage Area Network) 등의 기술을 적용하여, 노드(10)의 외부에 설치하더라도 좋다.
서비스 프로세서(11)는, 노드(10)의 관리 제어를 실행한다. 구체적으로는, 서비스 프로세서(11)는, 처리를 실행하는 프로세서와 FPGA(Field-Programmable Gate Array)를 가지고, 관리 단말(4)로부터 관리용 LAN을 통해, 관리 제어의 실행 명령을 접수한다. 그리고, 서비스 프로세서(11)는, 관리 단말(4)로부터 접수한 실행 명령에 따라서, 각종 관리 제어를 실행한다.
PCIe 스위치(25)는, 각 CPU(12∼15)로부터 PCIe 슬롯을 통해 접속되는 I/O 장치 등으로의 액세스를 제어하는 스위치이다. 또한, LAN 어댑터(26)는, 서비스용 LAN과 노드(10)를 접속하는 LAN 어댑터이다. 또한, LAN 어댑터(27)는, 관리용 LAN과 노드(10)를 접속하는 LAN 어댑터이다. 또한, SAS(28)는, PCIe 슬롯에 탑재된 LAN이나 SAS용의 어댑터이며, HDD(29)와 각 CPU(12∼15)와의 접속을 중계한다.
다음에, 각 CPU(12∼15)에 관해서 설명한다. 각 CPU(12∼15)는, 각각 캐시 메모리(12a∼15a)를 갖는다. 또한, 각 CPU(12∼15)는 서로 접속되어 있고, 메모리 액세스 요구나 응답을 서로 송수신할 수 있다. 이하, CPU(12)에 관해서 설명한다. 또, CPU(12)는, 다른 CPU(13∼15)와 서로 접속되어 있다. 또, CPU(13∼15)는, CPU(12)와 같은 기능을 발휘하는 것으로 하고 설명을 생략한다.
CPU(12)는, 메모리(19) 또는 메모리(20)가 기억하는 데이터를 캐시하는 캐시 메모리(12a)를 가지고, 캐시한 데이터를 이용하여 연산 처리를 실행한다. 또한, CPU(12)는, 메모리(19) 및 메모리(20)에 대하여 메모리 액세스를 행하는 메모리 인터페이스의 기능을 갖는다. 또한, CPU(12)는, PCIe 스위치(25)를 통해, HDD(29)나 내부 LAN, 관리용 LAN 등을 이용한 액세스를 제어하는 PCIe 인터페이스 기능을 갖는다.
여기서, CPU(12)가 갖는 캐시 메모리(12a)는, 복수의 캐시 라인을 갖는다. 그리고, CPU(12)는, 애플리케이션(35)이 지정한 기간 내에 데이터의 갱신을 행한 경우에, 갱신한 데이터가 기억된 캐시 라인에, 데이터를 갱신한 취지를 나타내는 섹터 플래그를 저장한다. 그리고, CPU(12)는, 애플리케이션(35)이 지정한 기간이 종료한 경우에, 캐시 메모리(12a)의 각 캐시 라인 중, 섹터 플래그가 저장된 캐시 라인의 데이터를 메모리(17∼24)에 기록하는 플래시 처리를 실행한다.
또한, CPU(12)는, 로컬 XB(16), 글로벌 크로스바(6)를 통해, 다른 노드(10a∼10m)가 갖는 CPU와 인터커넥트로 접속되어, 서로 메모리 액세스의 요구 등을 송수신하는 인터커넥트 라우터 기능을 갖는다. 이러한 CPU(12)는, 예컨대 실행하는 프로세스에 의해, 메모리(19) 또는 메모리(20)에 대한 메모리 액세스 요구가 발행된 경우에, 이하의 처리를 실행한다. 즉, CPU(12)는, 메모리(19) 또는 메모리(20)에 액세스하여, 액세스 대상이 되는 데이터를 캐시한다.
또한, CPU(12)는, 실행하는 프로세스에 의해, 메모리(19), 메모리(20) 이외의 메모리에 대한 메모리 액세스 요구가 발행된 경우에, 메모리 액세스 대상이 되는 메모리와 접속된 CPU를 식별하고, 식별한 CPU에 대하여 메모리 액세스 요구를 송신한다. 상세하게는, CPU(12)는, 액세스 대상이 되는 메모리 어드레스와, 메모리 어드레스가 나타내는 기억 영역에 액세스하는 CPU를 유일하게 나타내는 정보를 대응시킨 노드맵을 갖는다.
그리고, CPU(12)는 프로세스가 메모리 액세스 요구를 발행한 경우에, 노드맵을 참조하여, 메모리 액세스의 대상이 되는 메모리 어드레스에 대응시켜진 CPU를 식별한다. 그 후, CPU(12)는 식별한 CPU를 수신처로 하는 패킷을 생성하고, 생성한 패킷에 메모리 액세스 요구를 저장하여, CPU(12∼15)의 상호 접속 또는 로컬 XB(16)에 출력한다. 로컬 XB(16)에 출력된 경우에, 로컬 XB(16)는, 글로벌 크로스바(6)를 통해, 패킷을 수신처가 되는 CPU에 송신한다.
여기서, CPU(12)는, 전술한 처리에 더하여, 이하의 처리를 실행한다. 우선, CPU(12)는, 메모리(19) 및 메모리(20)의 각 기억 영역 중, 다른 노드와 공유하는 기억 영역에, 메모리 토큰이라고 불리는 값을 미리 설정한다. 그리고, CPU(12)는, 메모리(19) 또는 메모리(20)에 대하여 메모리 액세스 요구를 발행하는 CPU에 대하여, 액세스를 허가하는 기억 영역을 통지하며, 통지한 기억 영역에 대응하는 메모리 토큰을 액세스 토큰으로서 통지한다.
또한, CPU(12)는 자신이 메모리 액세스 요구를 송신하는 노드로부터, 액세스 토큰을 미리 취득하고, 취득한 액세스 토큰을 유지한다. 그리고, CPU(12)는, 메모리 액세스 요구를 발행하는 경우에, 메모리 액세스 요구와 함께, 유지한 액세스 토큰을 패킷에 저장하여 송신한다.
또한, CPU(12)는 다른 노드의 CPU에서 메모리 액세스 요구를 수신한 경우, 메모리 액세스 요구와 함께 수신한 액세스 토큰이, 액세스 대상이 되는 기억 영역에 대응하는 메모리 토큰과 일치하는지 여부를 판별한다. 그리고, CPU(12)는 액세스 토큰과 메모리 토큰이 일치하는 경우에, 메모리 액세스를 실행하고, 액세스 토큰과 메모리 토큰이 일치하지 않는 경우에, 메모리 액세스의 실행을 거부한다.
또, CPU(12)는 메모리(19) 및 메모리(20)에 대한 메모리 액세스를 실행하는 경우에, 메모리(19) 또는 메모리(20)로부터 캐시된 데이터의 일관성을 유지하는 처리를 실행한다. 예컨대, CPU(12)는 메모리(19) 또는 메모리(20)로부터 데이터를 캐시한 CPU에 대하여 스누프를 송신하고, 캐시된 데이터의 라이트 백을 실행한다.
로컬 XB(16)는, 노드(10)가 갖는 CPU(12∼15)와, 다른 노드(10a∼10m)가 갖는 CPU 사이에서 교환되는 패킷을, 지정 상대처에 전송하기 위한 스위치이다. 예컨대, 로컬 XB(16)는 노드(10a)가 갖는 CPU를 수신처로 하여 CPU(12)가 발행한 패킷을, 글로벌 크로스바(6)를 통해, 노드(10a)가 갖는 CPU에 송신한다.
메모리(17)∼메모리(24)는, OS나 애플리케이션이 이용하는 데이터를 기억하는 메모리이며, 예컨대, DIMM(Dual In-Line Memory Module)이다. 또한, 메모리(17∼24)는, 동일한 메모리 어드레스 공간에 맵핑되어 있다.
또한, 메모리(17∼24)는, 동일 노드내의 CPU(12∼15)만이 액세스 가능한 영역, 즉 자신을 갖는 노드 전용의 영역인 로컬 영역을 갖는다. 또한, 메모리(17∼24)는, 정보 처리 시스템(1)이 갖는 임의의 CPU가 액세스 가능한 영역, 즉 모든 노드가 이용 가능한 공유 메모리 영역을 갖는다. 또한, 메모리(17)∼메모리(24)의 공유 메모리 영역은, 복수의 세그먼트로 분할된다. 그리고, 각 세그먼트는 메모리 토큰에 의한 액세스 제어가 행하여지는 프로텍트 영역, 또는 메모리 토큰에 의한 액세스 제어를 행하지 않는 논프로텍트 영역이 된다.
여기서, 도 3, 도 4를 이용하여, 각 메모리(17∼24)에 맵핑되는 메모리 어드레스에 관해서 설명한다. 도 3은, 실시예 1에 따른 메모리의 할당을 설명하기 위한 도이다. 예컨대, 정보 처리 시스템(1)은, 각 노드가 갖는 2개의 메모리 중, 한쪽 메모리를 로컬 영역만의 메모리로 하고, 다른 쪽 메모리를 공용 메모리 영역만의 메모리로 한다. 즉, 도 3 중 (a)에 도시한 바와 같이, 메모리(17), 메모리(19), 메모리(21), 메모리(23)를 노드 전용의 메모리로 하고, 도 3 중 (b)에 도시한 바와 같이, 메모리(18), 메모리(20), 메모리(22), 메모리(24)를 공용하는 메모리로 한다.
도 4는, 실시예 1에 따른 정보 처리 시스템이 각 메모리에 맵핑하는 메모리 맵을 설명하기 위한 도이다. 또, 도 4에는, 총 128 테라바이트의 메모리 어드레스 공간이 준비되어, 그 중 로컬 영역에 64 테라바이트가 할당되고, 공유 메모리 영역에 64 테라바이트가 할당되는 예에 관해서 도시한다.
예컨대, 정보 처리 시스템(1)은 노드(10∼10m)가 갖는 메모리 중, 로컬 영역으로서 이용하는 범위로 「0」에서「246-1」까지의 메모리 어드레스를 할당한다. 또한, 정보 처리 시스템(1)은, 노드(10∼10m)가 갖는 메모리 중, 공유 메모리 영역으로서 이용하는 범위로, 「246」에서「247-1」까지의 메모리 어드레스를 할당한다.
즉, 도 3 및 도 4에 도시하는 예에서는, 정보 처리 시스템(1)은, 도 3 중 (a)에 도시하는 메모리(17), 메모리(19), 메모리(21), 메모리(23)에 대하여, 도 4 중 (c)에 도시하는 범위의 메모리 어드레스를 맵핑한다. 또한, 정보 처리 시스템(1)은, 도 3 중 (b)에 도시하는 메모리(18), 메모리(20), 메모리(22), 메모리(24)에 대하여, 도 4 중 (d)에 도시하는 범위의 메모리 어드레스를 맵핑한다. 또, 도 4중 「247」에서「248-1」까지의 어드레스는, UC(Uncacheable) 영역으로서 이용되는 어드레스의 범위이며, 예컨대 HDD(29) 등의 I/O 장치가 이용하는 I/O 공간으로서 이용되는 어드레스의 범위이다.
이와 같이, 정보 처리 시스템(1)은, 각 노드(10∼10m)가 갖는 메모리에 대하여, 단일의 메모리 어드레스 공간을 맵핑한다. 이 때문에, 임의의 CPU가 임의의 노드의 공유 메모리 영역에 대하여 직접 액세스할 수 있다. 또, 도 4에 도시하는 메모리 맵은 어디까지나 일례이며, 임의의 할당을 행하는 것으로 해도 좋다.
즉, 메모리 맵상의 메모리 어드레스의 모두가 메모리에 할당되어 있을 필요는 없고, 메모리 홀이 존재하더라도 좋다. 또한, 정보 처리 시스템(1)이 갖는 각 노드에 OS가 이용하는 로컬 영역이 존재하고, 또한 하나 이상의 노드에 공유 메모리 영역이 존재하도록, 메모리 맵을 설정하면 좋다.
또, 정보 처리 시스템(1)은, 하나의 노드내에 포함되는 메모리(예컨대, 메모리(17)와 메모리(18))에 대하여 연속하는 메모리 어드레스를 맵한 경우는, 제어 자원을 삭감할 수 있다. 또한, 정보 처리 시스템(1)은, 적어도 세그먼트 영역의 얼라이먼트를 갖출 수 있도록 메모리 어드레스의 할당을 행한다.
다음에, 도 5를 이용하여, 각 노드의 메모리에 대하여 할당되는 공유 메모리영역에 관해서 설명한다. 도 5는, 실시예 1에 따른 정보 처리 시스템이 할당하는 공유 메모리 영역을 설명하기 위한 도이다. 또, 도 5에 도시하는 예에서는, 정보 처리 시스템(1)이 노드 #0∼#n을 가지고, 각 노드 #0∼#n에 대하여 공유 메모리 영역을 분배하는 예에 관해서 설명한다.
예컨대, 도 5 중 (e)에 도시한 바와 같이, 정보 처리 시스템(1)은, 64 테라바이트의 로컬 영역과, 64 테라바이트의 공유 메모리 영역을, 각 노드 #0∼#n에 대하여 할당한다. 상세하게는, 정보 처리 시스템(1)은, 도 5 중 (f)에 도시한 바와 같이, 64 테라바이트의 공유 메모리 영역을, 각 노드 #0∼#n에 대하여 균등하게 분배한다.
여기서, 각 노드 #0∼#n은, 분배된 공유 메모리 영역을, 프로텍트 영역과 논프로텍트 영역으로 나눈다. 여기서, 프로텍트 영역이란, 다른 노드로부터 메모리 액세스 요구를 수신했을 때에, 액세스 토큰과 메모리 토큰이 일치하는지 여부를 판별하는 것으로, 액세스 보호를 행하는 영역이다. 또한, 논프로텍트 영역이란, 다른 노드로부터 자유롭게 메모리 액세스를 행할 수 있는 영역이다.
예컨대, 도 5 중 (g)에 도시한 바와 같이, 노드 #1은, 자신에게 할당된 공유 메모리 영역 중, 최대로 4 테라바이트를 프로텍트 영역, 또는 논프로텍트 영역으로 할 수 있다. 또한, 도 5 중 (h)에 도시한 바와 같이, 노드 #1은, 공유 메모리 영역을 세그먼트 #0∼#2047까지의 2 기가바이트의 세그먼트로 분할한다. 그리고, 노드 #1은, 도 5 중 (i)에 도시한 바와 같이, 세그먼트마다 메모리 토큰을 설정한다.
또한, 도 5에 도시하는 예에서는, 노드 #1은, 세그먼트 #0∼#2를 프로텍트 영역으로 하여, 메모리 토큰을 설정한다. 또, 메모리 토큰은, 예컨대 13 비트의 값이다. 또한, 도 5에 도시하는 예에서는, 노드 #1은, 세그먼트 #3∼#2047를 논프로텍트 영역으로 하여, 메모리 토큰으로서, 「all0」을 설정한다. 즉, 각 노드 #0∼#n은, 논프로텍트 영역에 대하여 액세스를 행하는 경우에, 도 5 중 (j)에 도시한 바와 같이, 「all0」의 액세스 토큰을 이용함으로써, 액세스를 행할 수 있다.
또한, 노드 #m도, 자신의 공유 메모리 영역을 세그먼트 #0∼#2047로 분할하여, 각 세그먼트 #0∼#2047에 메모리 토큰을 설정한다. 또, 노드 #m이 자신의 각 세그먼트 #0∼#2047에 대하여 설정한 메모리 토큰은, 도 5 중 (j)에 도시한 바와 같이, 노드 #1이 액세스 토큰으로서 이용하게 된다. 이 때문에, 노드 #1은, 노드 #m의 공유 메모리 영역에 액세스하는 경우에, 노드 #m이 설정한 메모리 토큰을 취득하고, 취득한 메모리 토큰을 액세스 토큰으로서 이용함으로써, 노드 #m의 공유 메모리 영역에 액세스를 행한다.
다음에, 도 6을 이용하여, 각 CPU(12∼15)의 하드웨어와 각 CPU(12∼15)가 실행하는 소프트 웨어와의 관계에 관해서 설명한다. 도 6은, 실시예 1에 따른 정보 처리 시스템에 있어서의 하드웨어와 소프트웨어와의 관계를 설명하기 위한 도이다. 또, 도 6에 도시하는 예에서는, CPU(12)가 갖는 하드웨어를 하드웨어(30)로 하고, CPU(13)가 갖는 하드웨어를 하드웨어(30a)로 했다. 또한, 도 6에 도시하는 예에서는, CPU(14)가 갖는 하드웨어를 하드웨어(30b)로 하고, CPU(15)가 갖는 하드웨어를 하드웨어(30c)로 했다.
예컨대, CPU(12)는, 하드웨어(30)를 가지고, CPU(12) 전용의 로컬 메모리(17) 및 공유 메모리(18, 20, 22, 24)에 액세스한다. 또한, CPU(12)는, 하드웨어(30)상에서, 하이퍼 바이저(31), 오퍼레이팅 시스템(32), 드라이버(33), 미들웨어(34)를 동작시킨다. 또한, CPU(12)는, 미들웨어(34)상에, 각 CPU(12∼15)가 협조하여 동작시키는 애플리케이션(35)을 실행한다.
또한, 다른 CPU(13∼15)는, CPU(12)와 같이, 하드웨어(30a∼30c)를 가지고, 하이퍼 바이저(31a∼31c), 오퍼레이팅 시스템(32a∼32c), 드라이버(33a∼33c), 미들웨어(34a∼34c)를 동작시킨다.
다음에, 도 7을 이용하여, CPU(12)가 실행하는 애플리케이션과 미들웨어와의 동작에 관해서 설명한다. 도 7은, 실시예 1에 따른 애플리케이션과 미들웨어와의 동작을 설명하기 위한 도이다. 예컨대, 애플리케이션(35)은, 도 7 중 구간 A에서, 어드레스(1)에 저장된 데이터를 판독하는 로드 요구(LD:Lord)를 발행하며, 로드한 데이터를 어드레스(2)에 저장하는 세트 요구(ST:Set)를 발행한다. 그렇게 하면, 도 7에서는 생략했지만, 미들웨어(34)는, 애플리케이션(35)이 발행한 로드 요구와 세트 요구를 하드웨어(30)에 전달하여, 처리를 실행시킨다.
다음에, 애플리케이션(35)은, 기록 개시를 미들웨어(34)에 통지하고, 구간 A에서 구간 B로의 이행을 미들웨어(34)에 통지한다. 그렇게 하면, 미들웨어(34)는, 구간 B로 이행한 것을 나타내는 섹터 모드의 설정을 행한다. 즉, 미들웨어(34)는, 애플리케이션(35)이 지정한 기간내인 취지를 나타내는 설정을 행한다.
다음에, 애플리케이션(35)은, 데이터의 백업을 하기 위해서, 어드레스(3)에 저장된 데이터의 로드 요구와, 어드레스(4)에 저장된 데이터의 스토어 요구를 발행한다. 이러한 경우에, 미들웨어(34)는, 발행된 로드 요구와 스토어 요구를 하드웨어(30)에 실행시키며, 스토어 요구의 대상이 되는 어드레스(4)의 캐시 라인에 섹터 플래그를 설정한다.
그 후, 애플리케이션(35)은, 기록 종료를 나타내는 SYNC를 미들웨어(34)에 발행한다. 그렇게 하면, 미들웨어(34)는, 구간 B가 종료한 것으로 하고, 섹터 모드를 해제한다. 그리고, 미들웨어(34)는, 섹터 플래시 요구를 하드웨어(30)에 발행한다. 여기서, 섹터 플래시 요구란, 섹터 플래그가 설정된 캐시 라인의 재기록 요구이다. 즉, 미들웨어(34)는, 구간 B에서 스토어 요구의 대상이 된 어드레스(4)의 데이터만을 메모리(17∼24)에 재기록하도록, 하드웨어(30)에 요구한다. 그 후, 미들웨어(34)는, 통상의 처리를 행한다.
또, 구간 A와 구간 B는, 예컨대, ASI(Address Space Identifier) 레지스터 라이트 등을 이용하여, 스태틱 모드로 전환하는 것이 가능하다. 또한, 모드의 전환은, 애플리케이션(35)으로부터의 지정으로 행하는 것이 가능하고, 문맥 전환(context switch)이 발생했을 때에는, 상태의 보존이나 리스토어가 행해지는 대상이 된다.
예컨대, CPU(12)가 실행중인 애플리케이션 A가 섹터 모드를 구간 B로 변경한 뒤에, 애플리케이션 B로의 문맥 전환이 발생하면, 애플리케이션 A의 섹터 모드가 구간 A인 것이 유지된다. 그리고, CPU(12)가 실행하는 애플리케이션이 애플리케이션 B에서 애플리케이션 A로 변하는 경우에는, 문맥 전환이 발생하여, 재차 구간이 B로 이행한다.
또, 섹터 플래시가 실행시키면 섹터 플래그가 설정된 캐시 라인의 스테이트는, 무효(Invalid)가 된다. 이 때문에, 도 7에 도시하는 예에서는, 미들웨어(34)가 섹터 플래시 요구를 발행한 뒤에, 어드레스(4)에 대한 로드 요구 등이 발행되면, 캐시 미스가 발생하는 것이 된다.
다음에, 도 8을 이용하여, 실시예 1에 따른 CPU(12)가 실행하는 애플리케이션(35)과, CPU(12)의 하드웨어(30)가 실행하는 처리에 관해서 설명한다. 도 8은, 실시예 1에 따른 CPU가 실행하는 처리를 설명하기 위한 도이다. 또, 도 8에 도시하는 예에서는, 캐시 메모리(12a)가 메모리(17)에 저장된 데이터를 캐시하는 예에 관해서 기재했다.
도 8에 도시하는 예에서는, 하드웨어(30)는, 현재의 처리가 구간 A의 처리인지 구간 B의 처리인지를 구별하기 위해서, 섹터 모드 레지스터를 갖는다. 예컨대, 섹터 모드 레지스터는, CPU(12)가 갖는 ASI 레지스터의 하나이며, 값이 「0」인 경우에는, 현재의 처리가 구간 A의 처리인 것을 나타내고, 값이 「1」인 경우에는, 현재의 처리가 구간 B의 처리인 것을 나타낸다.
또한, 도 8에 도시하는 예에서는, 캐시 메모리(12a)에는, 복수의 캐시 라인이 존재하여, 각 캐시 라인에는, 엔트리, 섹터, 스테이트, 어드레스, 데이터가 저장된다. 여기서, 엔트리란, 각 캐시 라인을 식별하기 위한 정보이며, 섹터란, 애플리케이션(35)이 지시하는 기간 내에 갱신이 행하여졌는지 여부를 나타내는 섹터 플래그이다.
또한, 스테이트란, 데이터의 상태를 나타내는 정보이며, 예컨대, MESI 프로토콜(일리노이 프로토콜)에 기초하는 캐시 라인의 상태를 나타내는 정보를 저장한다. 상세하게는, 상태 데이터에 「M:Modify」가 저장되어 있는 경우에는, 동일한 캐시 라인에 저장된 데이터를 배타적으로 캐시하고 있고, 또한 캐시한 데이터가 프로세서 코어에 의해서 최신의 상태로 갱신되어 있는 것을 나타내다.
또한, 상태 데이터에 「E:Exclusive」가 저장되어 있는 경우에는, 동일한 캐시 라인에 저장된 데이터를 배타적으로 캐시하고 있고, 또한 캐시한 데이터가 프로세서 코어에 의해서 갱신되어 있지 않은 상태를 나타낸다. 또한, 상태 데이터에 「S:Shared」가 저장되어 있는 경우에는, 다른 캐시 메모리(15b, 15c)가 동일한 공유 데이터를 캐시하고 있는 것을 나타낸다. 또한, 상태 데이터에 「I:Invalid」가 저장되어 있는 경우에는, 동일 캐시 라인의 데이터가 무효인 것을 나타낸다.
또한, 어드레스란, 캐시원의 데이터가 저장되어 있는 메모리(17)의 메모리 어드레스를 나타낸다. 또한, 데이터란, 캐시 대상이 되는 데이터이다. 또한, 도 8에 도시하는 예에서는, 하드웨어(30)는, 각 캐시 라인의 섹터의 값에 따라서 메모리(17)에의 재기록을 행하는 섹터 플래시 제어 스테이트 머신을 갖는다. 구체적으로는, 섹터 플래시 제어 스테이트 머신이란, 애플리케이션(35)으로부터의 요구에 따라서, 구간 B에서 갱신이 있었던 캐시 라인의 데이터만을 메모리(17)에 재기록한다.
이하, 애플리케이션(35)과 하드웨어(30)의 동작에 관해서 설명한다. 예컨대, 애플리케이션(35)은, 도 8 중 (k)에 도시한 바와 같이, 데이터「xx」를 어드레스「100」에 저장하는 세트 요구를 발행한다. 그렇게 하면, 하드웨어(30)는, 캐시 메모리(12a)가 갖는 엔트리「5」의 캐시 라인에, 어드레스「100」의 데이터「aa」가 저장되어 있다고 판별하고, 엔트리「5」의 캐시 라인의 데이터를 「aa」에서 「xx」로 재기록한다.
또한, 하드웨어(30)는, 데이터의 갱신을 행했기 때문에, 스테이트를 「E」에서「M」으로 변경한다. 여기서, 하드웨어(30)는, 섹터 모드 레지스터의 값이 「0」이기 때문에, 엔트리「5」의 캐시 라인의 데이터에 대해서, 섹터의 값을 「0」인 채로 한다.
다음에, 애플리케이션(35)은, 섹터 모드 레지스터(SctRg:Sector Mode Register)에 「1」을 저장하는 세트 요구를 발행한다. 즉, 애플리케이션(35)은, 구간 A에서 구간 B로의 이행을 요구한다. 그렇게 하면, 하드웨어(30)는, 섹터 모드 레지스터에 「1」을 저장한다.
다음에, 애플리케이션(35)은, 도 8 중 (l)에 도시한 바와 같이, 데이터 「yy」를 어드레스「200」에 저장하는 세트 요구를 발행한다. 그렇게 하면, 하드웨어(30)는, 엔트리「50」의 캐시 라인에, 어드레스「200」의 데이터「bb」가 저장되어 있다고 판별하고, 엔트리「50」의 캐시 라인의 데이터를 「bb」에서「yy」로 재기록하고, 스테이트를 「E」에서「M」으로 변경한다.
또한, 하드웨어(30)는, 섹터 모드 레지스터의 값이 「1」이기 때문에, 엔트리「50」의 캐시 라인에 섹터 플래그 「1」을 저장한다. 즉, 하드웨어(30)는, 애플리케이션(35)이 지정한 구간내에서, 엔트리「50」의 캐시 라인의 데이터가 갱신된 취지를 나타내는 섹터 플래그를 설정한다.
계속해서, 애플리케이션(35)은, 섹터 모드 레지스터에 「0」을 저장하는 세트 요구를 발행한다. 즉, 애플리케이션(35)은, 구간 B에서 구간 A로의 이행을 요구한다. 그렇게 하면, 하드웨어(30)는, 섹터 모드 레지스터에 「0」을 저장한다. 그 후, 애플리케이션(35)은, 도 8 중 (m)에 도시한 바와 같이, 섹터 플래시 제어 스테이트 머신(Sctq)에 「1」을 저장하는 요구를 발행하는 것으로, 캐시 플래시의 실행을 요구한다. 도 8 중 (n)에 도시한 바와 같이, 하드웨어(30)는, 각 캐시 라인을 검사하고, 섹터에 「1」이 저장된 엔트리를 검색한다.
그렇게 하면, 하드웨어(30)는, 도 8 중 (o)에 도시한 바와 같이, 엔트리「50」의 섹터가 「1」이라고 판별한다. 그 결과, 하드웨어(30)는, 도 8 중 (p)에 도시한 바와 같이, 엔트리「50」의 캐시 라인의 데이터「yy」를 메모리(17)에 재기록한다. 즉, 하드웨어(30)는, 구간 B에서 갱신된 데이터만을 메모리(17)에 재기록한다. 그리고, 하드웨어(30)는, 엔트리「50」의 캐시 라인의 섹터를 「0」으로 변경하며, 스테이트를 「I」로 변경한다.
이와 같이, 하드웨어(30)는, 캐시 메모리(12a)가 갖는 복수의 캐시 라인 중, 애플리케이션(35)으로부터 지시된 기간내, 즉 구간 B에서 갱신한 데이터가 저장된 캐시 라인에 섹터 플래그 「1」을 설정한다. 그리고, 하드웨어(30)는, 애플리케이션(35)으로부터 지시된 기간이 종료하여, 애플리케이션(35)으로부터 캐시 플래시의 요구를 접수한 경우에, 섹터 플래그가 「1」인 캐시 라인에 저장된 데이터만을 메모리(17)에 재기록한다.
이 때문에, 애플리케이션(35)은, 메모리(17)에 재기록해야 되는 데이터의 스토어 요구를 발행할 때마다, 어드레스를 지정한 플래시 요구를 발행하지 않더라도 좋다. 즉, 애플리케이션(35)은, 메모리(17)에 재기록해야 되는 데이터의 스토어 요구가 생기는 구간을 지정하고, 그 후 플래시 요구를 발행하는 것만으로 좋다. 이 때문에, 하드웨어(30)를 갖는 CPU(12)는, 애플리케이션(35)의 프로그램에 있어서의 수정량을 억제할 수 있다.
또한, CPU(12)는, 캐시 메모리(12a)가 갖는 각 캐시 라인 중, 섹터 플래그가 「1」인 캐시 라인에 저장된 데이터만을 메모리(17)에 재기록하기 때문에, 캐시 플래시의 처리 시간을 단축할 수 있다. 또한, CPU(12)는, 섹터 플래그가 「1」인 캐시 라인에 저장된 데이터만을 메모리(17)에 재기록하기 때문에, 불필요한 캐시 플래시의 양을 억제하는 결과, 캐시 플래시에 따르는 성능 열화를 최소한으로 억제할 수 있다.
도 9는, 실시예 1에 따른 CPU의 캐시 플래시의 효과를 설명하기 위한 도이다. 도 9 중 (x)에 도시한 바와 같이, 종래의 CPU는, 갱신된 데이터가 캐시한 데이터의 일부만이라도, 전체 캐시 데이터를 메모리에 재기록하기 때문에, 캐시 플래시의 처리 시간을 증대시켜, 시스템 전체의 성능을 열화시켰다.
그러나, 도 9 중 (y)에 도시한 바와 같이, CPU(12)는, 섹터 플래그를 이용하여, 캐시 메모리(12a)에 저장된 데이터 중, 메모리(17∼24)에 재기록해야 되는 데이터만을 검출하고, 검출한 데이터만을 메모리(17∼24)에 재기록한다. 그 결과, CPU(12)는, 캐시 플래시의 처리 시간을 단축하며, 정보 처리 시스템(1)의 성능 열화를 막을 수 있다.
또한, 도 10은, 실시예 1에 따른 CPU의 효과를 설명하기 위한 도이다. 도 10에 도시한 바와 같이, 종래의 정보 처리 시스템이 실행하는 애플리케이션에서는, 메인 프로그램 Sync을 미들웨어에 발행한다. 또, 미들웨어는, 이 Sync에 대하여 NOP(No Operation)이다. 다음에, 메인 프로그램은, 복수의 서브 프로그램을 호출하여, 각 서브 프로그램이 스토어 요구를 미들웨어에 발행한다. 그 후, 메인 프로그램이 플래시 요구를 미들웨어에 발행한다. 그렇게 하면, 미들웨어는, DMA(Direct Memory Access)를 이용한 다른 노드에의 복사를 행한다.
한편, 같은 애플리케이션(35)을 정보 처리 시스템(1)이 실행한 경우에는, 애플리케이션(35)이 Sync를 발행하면, 미들웨어(34)는, CPU(12)에 Sync를 전달한다. 그 결과, CPU(12)는, 애플리케이션이 지정하는 기간, 즉, 플래시 섹터 기간이 시작했다고 판별한다. 다음에, 메인 프로그램은, 서브 프로그램을 호출하고, 서브 프로그램은, 각각 스토어 요구를 발행한다. 다음에, 메인 프로그램은, 플래시 요구를 발행한다. 그렇게 하면, CPU(12)는, 플래시 섹터 기간 중에 스토어 요구에 의해 갱신된 데이터의 플래시를 실행한다.
이 때문에, CPU(12)는, 종래의 정보 처리 시스템이 실행하는 애플리케이션과 공통의 애플리케이션을 이용했을 때에도, 캐시 메모리(12a)에서 각 메모리(17, 18)에 데이터의 재기록을 행할 수 있다. 그 결과, CPU(12)는, 애플리케이션에 대하여, 메모리에의 재기록을 행하기 위한 플래시 요구를 추가하는 수정의 양을 삭감할 수 있다.
[실시예 1의 효과]
전술한 바와 같이, CPU(12)는, 복수의 캐시 라인을 가지고, 데이터를 일시적으로 유지하는 캐시 메모리(12a)를 갖는다. 또한, CPU(12)는, 애플리케이션(35)이 지시한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 섹터 플래그를 캐시 라인마다 갖는다. 그리고, CPU(12)는, 캐시 메모리(12a)가 갖는 캐시 라인 중, 섹터 플래그가, 애플리케이션(35)이 지시한 기간 내에 데이터가 갱신된 취지를 나타내는 캐시 라인의 데이터를 메모리(17∼24)에 재기록한다.
이 때문에, CPU(12)는, 애플리케이션(35)의 프로그램의 수정을 억제할 수 있다. 또한, CPU(12)는, 데이터의 재기록 처리 시간을 단축하며, 정보 처리 시스템(1)의 성능 열화를 방지할 수 있다.
[실시예 2]
실시예 2에서는, CPU(12)가 발휘하는 기능에 더하여, 애플리케이션이 지시한 기간 내에 갱신이 행하여졌는지 여부를 복수의 캐시 라인마다 나타내는 개요 섹터 플래그를 갖는 CPU에 관해서 설명한다.
도 11은, 실시예 2에 따른 노드의 기능 구성을 설명하기 위한 도이다. 또, 도 11에는, 실시예 2에 따른 노드(10n)의 기능 구성을 나타냈지만, 노드(10n)는, 실시예 1과 같은 기능을 갖는 정보 처리 시스템(1a)이 갖는 노드이다. 또한, 도 11에 도시하는 노드(10n) 중, 실시예 1과 동일한 부호를 붙인 것에 대해서는, 실시예 1과 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다. 도 11에 도시하는 예에서는, 노드(10n)는, 복수의 CPU(12b)∼CPU(15b)를 갖는다.
CPU(12b)는, 캐시 메모리(12a)와 개요 섹터 플래그(12c)를 갖는다. 또한, 다른 CPU(13b∼15b)도 마찬가지로, 캐시 메모리(13a∼15a)와 개요 섹터 플래그(13c∼15c)를 갖는다. 또, 이하의 설명에서는, CPU(13b∼15b)는, CPU(12b)와 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다.
CPU(12b)는, 실시예 1에 따른 CPU(12)와 같은 기능을 발휘하며, 이하의 기능을 갖는다. 즉, CPU(12b)는, 애플리케이션이 지시한 기간 내에 갱신이 행하여졌는지 여부를 복수의 캐시 라인마다 나타내는 개요 섹터 플래그(12c)를 갖는다. 여기서, 도 11에서는, 개요 섹터 플래그(12c)를 하나 기재했지만, CPU(12)는, 캐시 라인의 조마다 개요 섹터 플래그(12c)를 갖는다. 즉, CPU(12)는, 도 11에 있어서 도시하지 않는 복수의 개요 섹터 플래그(12c)를 갖는다. 이하의 설명에서는, CPU(12)가, 캐시 라인마다 복수의 개요 섹터 플래그(12c)를 갖는 것으로 한다.
예컨대, CPU(12b)는, 캐시 메모리(12a)가 갖는 복수의 캐시 라인을 복수의 그룹으로 나누고, 각 조와 복수의 개요 섹터 플래그(12c)를 대응시킨다. 그리고, CPU(12b)는, 애플리케이션이 지정한 기간 내에 갱신한 데이터를 기억하는 캐시 라인과 대응시켜진 개요 섹터 플래그(12c)에, 갱신한 데이터가 존재하는 취지를 나타내는 플래그를 설정한다. 예컨대, CPU(12b)는, 애플리케이션이 지정한 기간 내에 데이터를 갱신한 경우에, 갱신한 데이터가 저장되어 있는 캐시 라인의 섹터 플래그를「1」로 변경한다. 또한, CPU(12b)는, 갱신한 데이터가 저장되어 있는 캐시 라인과 대응시켜진 개요 섹터 플래그(12c)를 「1」로 한다.
그 후, CPU(12b)는, 애플리케이션이 지정한 기간이 종료하여, 애플리케이션으로부터 플래시 요구가 발행되면, 값이 「1」인 개요 섹터 플래그(12c)와 대응시켜진 각 캐시 라인을 검사한다. 그리고, CPU(12b)는, 검사한 캐시 라인 중, 섹터 플래그가 「1」인 캐시 라인을 식별하고, 식별한 캐시 라인의 데이터를 메모리(17∼24)에 재기록한다.
이와 같이, CPU(12b)는, 애플리케이션이 지정한 기간 내에 데이터가 갱신되었는지 여부를 복수의 캐시 라인마다 나타내는 개요 섹터 플래그(12c)를 갖는다. 그리고, CPU(12b)는, 플래시 요구가 발행된 경우에, 데이터가 갱신된 취지를 나타내는 개요 섹터 플래그(12c)와 대응하는 캐시 라인을 검사한다. 그 후, CPU(12)는, 섹터 플래그 「1」이 설정된 캐시 라인의 데이터만을 메모리(17∼24)에 재기록한다.
이 때문에, CPU(12b)는, 플래시 요구가 발행되었을 때에, 캐시 메모리(12a)가 갖는 모든 캐시 라인을 검사하지 않더라도, 애플리케이션이 지정한 기간 내에 갱신된 데이터를 저장하는 캐시 라인을 식별할 수 있다. 그 결과, CPU(12b)는, 플래시 요구의 처리 시간을 단축하여, 정보 처리 시스템 전체의 성능을 향상시킬 수 있다.
다음에, 도 12를 이용하여, 실시예 2에 따른 CPU(12)가 실행하는 애플리케이션(35)과, CPU(12b)가 실행하는 처리에 관해서 설명한다. 도 12는, 개요 섹터 플래그를 이용한 캐시 플래시를 설명하기 위한 도이다. 또, 도 12에 도시하는 예에서는, 캐시 메모리(12a)가 갖는 각 캐시 라인은, 복수의 그룹으로 나누어져 있는 것으로 한다. 또한, 도 12에 도시하는 예에서는, CPU(12b)가 갖는 하드웨어(30d)가 실행하는 처리에 관해서 기재했다.
개요 섹터 플래그(12c)는, 그룹을 식별하는 번호와 플래그를 대응시킨 엔트리를 복수개 갖는다. 그룹이란, 캐시 라인의 각 그룹을 식별하는 번호이며, 예컨대 「1」∼「M」까지의 번호이다. 또, 도 12에 도시하는 예에서는, 엔트리 「5」의 캐시 라인은, 그룹「1」로 나누어져 있고, 엔트리 「50」의 캐시 라인은, 그룹「A」로 나누어져 있다.
또한, 플래그란, 대응된 번호의 그룹으로 나누어진 캐시 라인 중, 어느 하나에 저장된 데이터가, 애플리케이션(35)이 지정한 기간 내에 갱신되었는지 여부를 나타내는 플래그이다. 예컨대, 개요 섹터 플래그(12b)는, 그룹「1」의 플래그가「1」인 경우에, 애플리케이션(35)이 지정한 기간 내에, 그룹「1」의 캐시 라인 중 어느 하나에 저장된 데이터가 갱신된 취지를 나타내다. 또한, 개요 섹터 플래그(12b)는, 그룹「1」의 플래그가 「0」인 경우에, 애플리케이션(35)이 지정한 기간 내에, 그룹「1」의 캐시 라인에 저장된 데이터가 갱신되지 않은 취지를 나타내다.
이하, 도 12를 이용하여, CPU(12b)가 실행하는 처리에 관해서 설명한다. 우선, 애플리케이션(35)은, 도 12 중 (q)에 도시한 바와 같이, 데이터「xx」를 어드레스 「100」에 저장하는 세트 요구를 발행한다. 그렇게 하면, 하드웨어(30d)는, 엔트리「5」의 캐시 라인의 데이터를 「aa」에서「xx」로 재기록하고, 스테이트를 「E」에서「M」으로 변경한다. 또한, 하드웨어(30b)는, 섹터 모드 레지스터의 값이 「0」이기 때문에, 엔트리「5」의 캐시 라인의 데이터에 대해서, 섹터의 값을 「0」인 채로 한다. 또한, 하드웨어(30b)는, 섹터 모드 레지스터의 값이 「0」이기 때문에, 개요 섹터 플래그(12c) 중, 그룹 「1」의 플래그를 「0」인 채로 한다.
다음에, 애플리케이션(35)은, 섹터 모드 레지스터에 「1」을 저장하는 세트 요구를 발행하고, 구간 A에서 구간 B로의 이행을 요구한다. 그렇게 하면, 하드웨어(30)는, 섹터 모드 레지스터에 「1」을 저장한다. 다음에, 애플리케이션(35)은, 도 12 중 (r)에 도시한 바와 같이, 데이터「yy」를 어드레스「200」에 저장하는 세트 요구를 발행한다. 그렇게 하면, 하드웨어(30d)는, 엔트리「50」의 캐시 라인의 데이터를 「bb」에서 「yy」로 재기록하고, 스테이트를 「E」에서 「M」으로 변경한다.
또한, 하드웨어(30b)는, 섹터 모드 레지스터의 값이 「1」이기 때문에, 엔트리「50」의 캐시 라인에 섹터 플래그 「1」을 저장한다. 즉, 하드웨어(30)는, 애플리케이션(35)이 지정한 구간내에서, 엔트리「50」의 캐시 라인의 데이터가 갱신된 취지를 나타내는 섹터 플래그를 설정한다. 또한, 하드웨어(30b)는, 개요 섹터 플래그(12c) 중, 엔트리「50」의 캐시 라인이 나누어진 그룹「A」의 플래그를 「1」로 변경한다.
계속해서, 애플리케이션(35)은, 섹터 모드 레지스터에 「0」을 저장하는 세트 요구를 발행하여, 구간 B에서 구간 A로의 이행을 요구한다. 그렇게 하면, 하드웨어(30b)는, 섹터 모드 레지스터에 「0」을 저장한다. 그 후, 애플리케이션(35)은, 도 12 중 (s)에 도시한 바와 같이, 섹터 플래시 제어 스테이트 머신에 「1」을 저장하는 요구를 발행하는 것으로, 캐시 플래시의 실행을 요구한다.
그렇게 하면, 하드웨어(30d)는, 도 12 중 (t)에 도시한 바와 같이, 개요 섹터 플래그(12c)의 각 그룹과 대응시킨 플래그를 검사하고, 플래그에 「1」이 저장된 엔트리를 검색한다. 그리고, 하드웨어(30d)는, 도 12 중 (u)에 도시한 바와 같이, 플래그가 「0」인 그룹「1」의 캐시 라인에 대해서는, 검사를 행하지 않고, 도 12 중 (v)에 도시한 바와 같이, 플래그가 「1」인 그룹「A」의 캐시 라인만을 검사한다. 그리고, 하드웨어(30d)는, 도 12 중 (w)에 도시한 바와 같이, 섹터에 「1」이 저장된 엔트리 「50」에 저장된 데이터만을 메모리(17)에 재기록한다. 이 때문에, CPU(12b)는, 캐시 메모리(12a)가 갖는 모든 캐시 라인을 검사하지 않더라도, 애플리케이션(35)이 지정한 기간 내에 갱신한 데이터를 메모리(17)에 재기록할 수 있다.
[실시예 2의 효과]
전술한 바와 같이, CPU(12b)는, 애플리케이션(35)이 지정한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 개요 섹터 플래그를 복수의 캐시 라인마다 갖는다. 그리고, CPU(12b)는, 플래시 요구가 발행되면, 데이터가 갱신된 취지를 나타내는 개요 섹터 플래그와 대응하는 캐시 라인을 검사한다.
그 후, CPU(12b)는, 검사한 캐시 라인 중, 애플리케이션(35)이 지정한 기간 내에 데이터가 갱신된 취지를 나타내는 섹터 플래그가 저장된 캐시 라인의 데이터를 메모리(17∼24)에 재기록한다. 이 때문에, CPU(12b)는, 캐시 메모리(12a)가 갖는 모든 캐시 라인을 검사하지 않더라도, 애플리케이션(35)이 지정한 기간 내에 갱신된 데이터를 메모리(17∼24)에 재기록할 수 있다.
[실시예 3]
실시예 3에서는, CPU(12) 및 CPU(12b)가 발휘하는 기능에 더하여, 애플리케이션(35)이 지시한 기간 내에 갱신이 행하여졌는지 여부를 복수의 캐시 라인마다 나타내는 개요 섹터 플래그를 코어마다 갖는 멀티 코어의 CPU에 관해서 설명한다.
도 13은, 실시예 3에 따른 노드의 기능 구성을 설명하기 위한 도이다. 또, 도 13에는, 실시예 3에 따른 노드(10o)의 기능 구성을 나타냈지만, 노드(10o)는, 실시예 1과 같은 기능을 갖는 정보 처리 시스템(1b)이 갖는 노드이다. 또한, 도 12에 도시하는 노드(10o) 중, 실시예 1 및 실시예 2와 동일한 부호를 붙인 것에 대해서는, 실시예 1 및 실시예 2와 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다. 도 13에 도시하는 예에서는, 노드(10o)는, 복수의 CPU(12d)∼CPU(15d)를 갖는다.
CPU(12d)는, 캐시 메모리(12a)와 개요 섹터 플래그(12e)를 갖는다. 또한, 다른 CPU(13d∼15d)도 마찬가지로, 캐시 메모리(13a∼15a)와 개요 섹터 플래그(13e∼15e)를 갖는다. 또, 이하의 설명에서는, CPU(13d∼15d)는, CPU(12d)와 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다.
CPU(12d)는, 실시예 1에 따른 CPU(12) 및 실시예 2에 따른 CPU(12b)와 같은 기능을 발휘하며, 이하의 기능을 갖는다. 즉, CPU(12d)는, 연산 처리를 행하는 코어를 복수개 가지며, 각 코어를 이용한 연산 처리를 행한다. 예컨대, CPU(12d)는, 코어 A∼D까지의 4개의 코어를 갖는다.
또한, CPU(12d)는, 애플리케이션(35)이 지시한 기간 내에 갱신이 행하여졌는지 여부를 복수의 캐시 라인마다 나타내는 복수의 플래그를, 각 코어마다 갖는다. 그리고, CPU(12d)는, 어떤 코어가 실행하는 애플리케이션(35)이 캐시 플래시를 요구한 경우에, 이 애플리케이션(35)이 지시한 기간 내에 갱신한 데이터를 메모리(17∼24)에 재기록한다.
구체적으로는, CPU(12d)는, 개요 섹터 플래그(12e)를 갖는다. 개요 섹터 플래그(13e)는, 멀티 코어 대응의 개요 섹터 플래그(12c)이며, 애플리케이션(35)이 지시한 기간 내에 갱신이 행하여졌는지 여부를 복수의 캐시 라인마다 나타내는 플래그를 코어마다 갖는다. 이하, 도 14를 이용하여, 개요 섹터 플래그(12e)의 일례에 관해서 설명한다.
도 14는, 멀티 코어 대응의 개요 섹터 플래그를 설명하기 위한 도이다. 또, 도 14에는, 개요 섹터 플래그(12e)와, 캐시 메모리(12a)에 관해서 기재했다. 또, 도 14에 도시하는 예에서는, 캐시 메모리(12a)는, 하나의 캐시 라인에 복수의 웨이(way)「0」∼「W」를 갖는 캐시 메모리이다. 또한, 도 14에 도시하는 예에서는, CPU(12d)가 4개의 코어 A∼D를 갖는다.
또한, 도 14에 도시하는 예에서는, 캐시 메모리(12a)는, 캐시 태그부와 데이터부를 가지고, 캐시 태그부의 각 웨이「0」∼「W」에는, 각각 섹터, 스테이트, 어드레스가 저장된다. 또한, 캐시 메모리(12a)가 갖는 각 캐시 라인은, 복수의 그룹으로 나누어져 있다. 예컨대, 인덱스「1」∼「32」는, 그룹 「1」, 인덱스「B」∼「B+31」은, 그룹「A」, 인덱스 중 「M-31」∼「M」은, 그룹「M」으로 나누어져 있다.
개요 섹터 플래그(12e)는, 각 코어가 실행하는 애플리케이션(35)이 지정한 기간 내에 갱신한 데이터가 각 그룹의 캐시 라인에 저장되어 있는지 여부를 판별하는 플래그를 코어마다 갖는다. 즉, 개요 섹터 플래그(12e)는, 코어 A가 실행하는 애플리케이션(35)이 지정하는 기간 내에, 코어 A가 실행하는 애플리케이션(35)의 요구에 따라서 갱신한 데이터가 각 그룹의 캐시 라인에 존재하는지 여부를 나타내는 플래그를 갖는다. 마찬가지로, 개요 섹터 플래그(12e)는, 코어 B∼C가 실행하는 애플리케이션(35)이 지정하는 기간 내에, 코어 B∼C가 실행하는 애플리케이션(35)의 요구에 따라서 갱신한 데이터가 각 그룹의 캐시 라인에 존재하는지 여부를 나타내는 플래그를 갖는다.
예컨대, 개요 섹터 플래그(12e)를 갖는 CPU(12d)는, 코어 A가 실행하는 애플리케이션(35)이 지정하는 기간 내에, 코어 A가 실행하는 애플리케이션(35)의 요구에 따라서 그룹 1의 캐시 라인에 저장된 데이터를 갱신한다. 그렇게 하면, CPU(12d)는, 개요 섹터 플래그(12e)가 갖는 코어 A의 각 플래그 중, 그룹 1의 플래그를 「1」로 한다.
계속해서, CPU(12d)는, 코어 D가 실행하는 애플리케이션(35)이 지정하는 기간 내에, 코어 D가 실행하는 애플리케이션(35)의 요구에 따라서 그룹 A의 캐시 라인에 저장된 데이터를 갱신한다. 그렇게 하면, CPU(12d)는, 개요 섹터 플래그(12e)가 갖는 코어 D의 각 플래그 중, 그룹 A의 플래그를 「1」로 한다. 그리고, CPU(12d)는, 코어 A가 실행하는 애플리케이션(35)이 캐시 플래시를 요구한 경우에, 개요 섹터 플래그(12e)의 그룹 A의 플래그를 검사하고, 그룹 1의 플래그가 「1」이라고 판별한다. 그 결과, CPU(12d)는, 그룹 A의 캐시 라인에 대해서는, 검사의 대상으로 하지 않고, 그룹 1의 캐시 라인만을 검사의 대상으로 한다.
[실시예 3의 효과]
전술한 바와 같이, CPU(12d)는, 애플리케이션(35)이 지정한 기간 내에 갱신한 데이터가 각 그룹의 캐시 라인에 저장되어 있는지 여부를 코어 A∼D 마다 나타내는 개요 섹터 플래그(12e)를 갖는다. 그리고, 예컨대, CPU(12d)는, 코어 A가 실행하는 애플리케이션(35)이 지정한 시간내에, 코어 A가 실행하는 애플리케이션(35)의 요구에 따라서, 그룹 1의 캐시 라인에 저장된 데이터를 갱신한 경우에, 이하의 처리를 실행한다. 즉, CPU(12d)는, 그룹 1의 캐시 라인에 갱신한 데이터가 존재하는 취지의 개요 섹터 플래그를 코어 A에 대해서 설정한다.
그리고, CPU(12d)는, 코어 A가 실행하는 애플리케이션(35)이 플래시 요구를 발행한 경우에, 코어 A의 개요 섹터 플래그를 검사하고, 갱신한 데이터가 존재하는 취지의 개요 섹터 플래그가 설정된 캐시 라인을 검사한다. 그 후, CPU(12d)는, 검사한 캐시 라인 중, 갱신된 데이터를 메모리(17∼24)에 재기록한다.
이 때문에, CPU(12d)는, 복수의 코어를 갖는 경우에도, 효율적으로 플래시를 실행할 수 있다. 즉, CPU(12d)는, 각 코어가 공통되게 사용하는 캐시 메모리를 갖는 경우에도, 각 코어마다 독립적으로 캐시 플래시를 행할 수 있다. 그 결과, CPU(12d)는, 복수의 코어를 갖는 경우에도, 불필요한 캐시 플래시를 행하지 않기 때문에, 캐시 플래시를 효율적으로 실행하는 결과, 정보 처리 시스템(1b)의 성능 열화를 방지할 수 있다.
[실시예 4]
실시예 4에서는, CPU(12), CPU(12b), CPU(12d)가 발휘하는 기능에 더하여, 각 캐시 라인이 갖는 복수의 웨이 중, 특정 웨이에 저장된 데이터만을 캐시 플래시의 대상으로 하는 CPU에 관해서 설명한다.
도 15는, 실시예 4에 따른 노드의 기능 구성을 설명하기 위한 도이다. 또, 도 15에는, 실시예 4에 따른 노드(10p)의 기능 구성을 나타냈지만, 노드(10p)는, 실시예 1과 같은 기능을 갖는 정보 처리 시스템(1c)이 갖는 노드이다. 또한, 도 15에 도시하는 노드(10p) 중, 실시예 1∼실시예 3과 동일한 부호를 붙인 것에 대해서는, 실시예 1∼3과 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다. 도 15에 도시하는 예에서, 노드(10p)는, 복수의 CPU(12f)∼CPU(15f)를 갖는다.
CPU(12f)는, 캐시 메모리(12a)와 개요 섹터 플래그(12c)를 갖는다. 또한, 다른 CPU(13d∼15d)도 마찬가지로, 캐시 메모리(13a∼15a)와 개요 섹터 플래그(12c∼15c)를 갖는다. 또, 캐시 메모리(12a∼15a)는, 실시예 3에 따른 캐시 메모리(12a∼15a)와 같이, 복수의 캐시 라인 「0」∼「W」를 가지며, 각 캐시 라인에는, 복수의 웨이가 존재한다.
또한, 각 CPU(12f∼15f)가 갖는 개요 섹터 플래그(12c∼15c)는, 실시예 2에 나타내는 개요 섹터 플래그와 같은 것이지만, 각 CPU(12f∼15f)는, 실시예 3에 나타내는 개요 섹터 플래그(12e∼15e)를 갖는 것으로 해도 좋다. 또, 이하의 설명에서는, CPU(13f∼15f)는, CPU(12f)와 같은 기능을 발휘하는 것으로 하고, 설명을 생략한다.
CPU(12f)는, 실시예 1에 따른 CPU(12), 및 실시예 2에 따른 CPU(12b)와 같은 기능을 발휘하며, 이하의 기능을 갖는다. 즉, CPU(12f)는, 애플리케이션(35)이 지정한 기간 내에 갱신한 데이터를, 특정 웨이에만 저장한다. 그리고, CPU(12f)는, 애플리케이션(35)이 플래시 요구를 발행한 경우에, 각 캐시 라인 중, 특정 웨이만을 검사하여, 섹터 플래그가 설정된 데이터를 식별한다. 그 후, CPU(12f)는, 식별한 데이터를 메모리(17∼24)에 재기록한다.
도 16은, 플래시의 대상을 특정 웨이로 한정하는 처리의 일례를 설명하기 위한 도이다. 예컨대, CPU(12f)는, 애플리케이션(35)이 지정하는 기간 내에 갱신이 행하여진 경우에, 갱신 대상이 되는 데이터를 캐시 메모리(12a)가 갖는 어느 캐시 라인 중, 웨이「0」에 저장한다. 또한, CPU(12f)는, 도 16 중 (z)에 도시한 바와 같이, 웨이「0」의 캐시 태그 중, 데이터를 저장한 캐시 라인의 캐시 태그에 섹터 플래그「1」과 스테이트와 어드레스를 저장한다.
그리고, CPU(12f)는, 애플리케이션이 플래시 요구를 발행한 경우에, 웨이「0」의 캐시 태그만을 검사하여, 섹터 플래그「1」이 저장된 캐시 라인을 식별한다. 그 후, CPU(12f)는, 식별한 캐시 라인 중, 웨이「0」의 데이터를 메모리(17∼24)에 재기록한다.
[실시예 4의 효과]
전술한 바와 같이, 캐시 메모리(12a)는, 복수의 웨이「0」∼「W」를 갖는 복수의 캐시 라인을 갖는다. 그리고, CPU(12f)는, 애플리케이션이 지정한 기간 내에 갱신된 데이터를 어느 캐시 라인의 웨이「0」에 저장하고, 플래시 요구가 발행되면, 각 캐시 라인의 웨이「0」만을 검사한다. 그 후, CPU(12f)는, 검사한 결과, 갱신된 데이터가 저장된 취지를 나타내는 섹터 플래그가 저장된 캐시 라인의 웨이「0」에 저장된 데이터를 메모리(17∼24)에 재기록한다.
이 때문에, CPU(12f)는, 플래시의 대상을 한정할 수 있기 때문에, 플래시의 처리 시간을 삭감하여, 정보 처리 시스템(1c)의 처리 능력을 향상시킬 수 있다. 또한, CPU(12f)는, 특정 웨이의 데이터만을 메모리(17∼24)에 재기록한다. 이 때문에, 예컨대 CPU(12f)는, 연산 처리에 빈번히 사용하는 데이터 등, 메모리(17∼24)에 재기록하여서는 안 되는 데이터 등을 웨이「1」∼「W」에 저장하는 것으로, 캐시 플래시의 대상외로 할 수 있다. 그 결과, CPU(12f)는, 연산 처리의 효율을 향상시켜, 정보 처리 시스템(1c)의 성능을 향상시킬 수 있다.
[실시예 5]
실시예 5에서는, 복수의 코어, L1(Level 1) 캐시, 및 L2(Level 2) 캐시를 가지고, 각 캐시 라인마다의 섹터 플래그와, 각 코어마다 개요 섹터 플래그를 갖는 CPU에 관해서 설명한다.
도 17은, 실시예 5에 따른 CPU의 기능 구성을 설명하기 위한 도이다. CPU(12g)는, 실시예 1의 같은 기능을 갖는 정보 처리 시스템(1c)이 갖는 CPU이며, CPU(12), CPU(12b), CPU(12d), CPU(12f)와 같이, 정보 처리 시스템(1d)이 갖는 노드에 설치된 복수 CPU의 하나이다. 또, 도 17에는, 실시예 5에 따른 CPU(12g)의 기능 구성을 도시했다.
도 17에 도시하는 예에서는, CPU(12g)는, 로컬 XB(16), 메모리(17), 메모리(18), PCIe 스위치(25)와 접속되어 있다. 또한, CPU(12g)는, 복수의 코어(40∼40b), 섹터 ID(Identification) 생성부(41∼41b), L1 캐시 태그(42)∼42b), L1 캐시 (43∼43b), TLB(Translation Lookaside Buffer)(44∼44b)를 갖는다.
또한, CPU(12g)는, L2 캐시 액세스 컨트롤러(45), L2 캐시 태그(46), L2 캐시(47), L2 캐시 개요 섹터 플래그(48), 어드레스 맵(49), 비캐시 요청 스테이트 머신(50)을 갖는다. 또한, CPU(12g)는, 설정 레지스터군(51), 플래시 제어부(52), PCI 제어부(53), 디렉토리 제어부(54), 스누프 제어부(55), 요청 제어부(56)를 갖는다.
또, 코어(40a), 코어(40b)에 대해서는, 코어(40)와 같은 기능을 발휘하고, 섹터 ID 생성부(41a), 섹터 ID 생성부(41b)에 대해서는, 섹터 ID 생성부(41)와 같은 기능을 발휘하는 것으로 하고, 이하의 설명을 생략한다. 또한, L1 캐시 태그(42a), L1 캐시 태그(42b)는, L1 캐시 태그(42))와 같은 기능을 발휘하고, L1 캐시(43a), L1 캐시(43b)는, L1 캐시(43)와 같은 기능을 발휘하는 것으로 하고, 이하의 설명을 생략한다. 또한, TLB(44a), TLB(44b)는, TLB(44)와 같은 기능을 발휘하는 것으로 하고, 이하의 설명을 생략한다.
코어(40)는, L1 캐시(43)에 저장된 데이터를 이용하여, 연산 처리를 실행하는 연산 장치이다. 섹터 ID 생성부(41)는, 코어(40)가 출력하는 명령 코드와 레지스터의 설정 정보에 따라서, 섹터 ID를 생성하고, 생성한 ID를 L1 캐시 태그(42))에 출력한다. 여기서, 섹터 ID란, 코어(40)가 실행하는 애플리케이션이 지시한 기간 내에 갱신이 행하여졌는지 여부를 나타내는 정보이다.
L1 캐시 태그(42))는, L1 캐시(43)의 태그 데이터이며, L1 캐시(43)의 각 캐시 라인에 저장된 데이터의 어드레스, 스테이트, 리플레이스를 요하는 LRU(Least Recently Used) 정보, 섹터 ID를 기억한다.
L1 캐시(43)는, 고속으로 액세스 가능한 캐시 메모리이며, 메모리(17), 메모리(18), L2 캐시(47)에 저장된 데이터의 일부를 캐시한다. 또, L1 캐시(43)는, 코어(40) 전용의 1차 캐시이다. 예컨대, L1 캐시(43)는, 명령용의 영역과 데이터용의 영역에 각각 64 키로바이트의 용량을 갖는다. 또한, TLB(44)는, 변환 테이블을 이용하여, 코어(40)가 출력하는 가상 어드레스를 물리 어드레스로 변환한다.
여기서, 도 18, 도 19를 이용하여, L1 캐시 태그(42) 및 L1 캐시(43)에 관해서 설명한다. 도 18은, L1 캐시 태그를 설명하기 위한 도이다. 도 18에 도시하는 예에서는, L1 캐시 태그(42))는, 가상 어드레스의 인덱스, 즉 「00_0000_0」∼「11_1111_1」까지의 하위 7 비트를 인덱스로 한다. 또한, L1 캐시 태그(42))는, 각 인덱스에 대해서, 명령을 캐시하는 영역의 태그 데이터(IF)와, 데이터를 캐시하는 영역의 태그 데이터(OP:Operand)를 기억한다.
또한, L1 캐시 태그(42))는, 각 인덱스마다 웨이 0∼웨이 3까지의 태그 데이터를 기억한다. 또한, L1 캐시 태그는, 태그 데이터로서, Val, 2 비트의 스테이트[1:0], 2 비트의 섹터 ID[1:0], 논리 어드레스의 상위 33 비트인 LA[46:14], 체크 비트인 CB(Check bit)[7:0]을 기억한다. 또, 이하의 설명에서는, 스테이트「00」은, I(Invalid)를 나타내고, 스테이트「01」은 S(Share)를 나타내고, 스테이트「10」은 E(Exclusive)를 나타내고, 스테이트「11」은 M(Modify)를 나타내는 것으로 한다.
다음에, 도 19를 이용하여, L1 캐시(43)에 관해서 설명한다. 도 19는, L1 캐시를 설명하기 위한 도이다. 도 19에 도시하는 예에서는, L1 캐시(43)는, L1 캐시 태그(42))와 같이, 명령을 캐시하는 영역과, 데이터를 캐시하는 영역을 갖는다. 또한, L1 캐시(43)가 갖는 각 캐시 라인에는, 논리 어드레스의 인덱스와 대응시켜져 있고, 각각 웨이「0」∼「3」까지의 4개의 웨이를 갖는다. 또한, 각 캐시 라인의 각 웨이에는, 128 바이트의 데이터와 16 바이트의 체크 비트가 저장된다.
다음에, 도 20을 이용하여, 코어(40), 섹터 ID 생성부(41), L1 캐시 태그(42)), L1 캐시(43), TLB(44)가 실행하는 처리의 상세한 예를 설명한다. 도 20은, 실시예 5에 따른 섹터 ID 생성부가 실행하는 처리를 설명하기 위한 도이다. 도 20에 도시하는 예에서는, 섹터 ID 생성부(41)는, ASI 레지스터(41c), 섹터 ID 선택 제어부(41d), 섹터 ID 선택부(41e)를 갖는다.
또한, 도 20에 도시하는 예에서는, ASI 레지스터(41c)는, HPV(Hypervisor)의 특권 명령으로 액세스하는 섹터 인에이블과 플래시 인에이블을 기억한다. 또한, ASI 레지스터(41c)는, 코어(40)가 실행하는 애플리케이션이 지정하는 기간의 시작 및 종료를 나타내는 플래시 섹터 모드를 기억한다.
코어(40)는, 섹터 플래그를 설정하는 경우에, 섹터 인에이블에 「1」을 저장하고, 섹터 플래그를 설정하지 않는 경우에, 섹터 인에이블에 「0」을 저장한다. 또한, 코어(40)는, 섹터 플래시의 기능을 유효하게 하는 경우에, 플래시 인에이블에 「1」을 저장하고, 섹터 플래시의 기능을 무효로 하는 경우에, 플래시 인에이블에 「0」을 저장한다. 또한, 코어(40)는, 섹터 플래시를 실행시키는 경우에, 플래시 섹터 모드에 「1」을 저장하고, 다른 경우에는, 플래시 섹터 모드에 「0」을 저장한다.
또, 플래시 섹터 모드는, 코어(40)가 실행하는 애플리케이션이 액세스 가능한 레지스터에 저장된다. 또한, ASI 레지스터(41c)는, 미리 정해진 2 비트의 섹터 ID를 기억한다. 상세하게는, ASI 레지스터(41c)는, 섹터 ID로서 ID0을 나타내는 「00」, ID1을 나타내는 「01」, FL(Flush)를 나타내는 「11」, Def(Default)를 나타내는 「00」을 기억한다.
예컨대, 코어(40)는, ASI 레지스터(41c)에 대하여, ASI 레지스터의 판독, 또는 저장을 요구하는 커맨드를 발행한다(ASI Reg R/W command). 이 커맨드에는, 판독, 또는 저장의 대상이 되는 10 비트의 어드레스(Address[11:2]), 4 비트의 바이트 인에이블(Byte Enable[3:0])이 저장된다.
또한, 코어(40)는, ASI 레지스터(41c)에 대하여 데이터의 저장을 요구하는 경우에, 저장 대상이 되는 32 비트의 데이터를 출력한다(ASI Reg Write Data[31:0]). 한편, ASI 레지스터(41c)는, 코어(40)로부터의 요청 내용이 판독인 경우에는, 판독한 32 비트의 데이터를 코어(40)에 출력한다(ASI Reg Read Data[31:0]).
또한, 코어(40)는, Request val, Request ID, Code, Logic Address, Sector Sel, Store Data를 필드로 하는 L1 캐시 요청을 필드로 하는 L1 캐시 요청을 발행한다. 구체적으로는, 코어(40)는, L1 캐시 요청을 L1 캐시 액세스 컨트롤러(57)와, 섹터 ID 선택 제어부(41d)에 발행한다.
여기서, Request val(Request Value)이란, 요청인 것을 나타내는 정보이며, Request ID란, 요청을 식별하기 위한 8 비트의 식별자이다. 또한, Code란, 요청의 내용을 나타내는 정보이며, 데이터의 저장을 나타내는 Store, 데이터의 판독을 나타내는 Load 등의 정보이다. 또한, Logic Address란, 요청의 대상이 되는 41 비트의 가상 어드레스이다.
또한, Sector Sel이란, 섹터 ID 생성부(41)에 대하여 생성을 요구하는 섹터 ID를 나타내는 정보이며, 예컨대 「ID0」, 또는 「ID1」이 저장된다. 또한, Store Data란, 데이터의 저장을 요구하는 요청에 부가되는 정보이며, L1 캐시(43)에 저장하는 128 바이트의 데이터이다.
또한, 코어(40)는, 비캐시 요청 스테이트 머신(50)에 대하여, NC(Non coherency) 공간으로의 리드 요구, 또는 라이트 요구인 NC 요청을 발행한다. 상세하게는, 코어(40)는, 「Req val」,「Request ID」,「Code」,「Logic Address(LA)」,「Byte Enable(BE)」,「Store Data」를 필드로 하는 NC 요청을 발행한다.
여기서, 「Req val」은, 요청 신호인 것을 나타내는 정보이며, 「Request ID」는, 요청을 식별하는 8 비트의 정보이다. 또한, 「Code」는, 요청의 내용을 나타내는 정보이며, 데이터의 저장을 나타내는 「Store」, 데이터의 판독을 나타내는 「Load」 등이 저장된다.
또한, 「Logic Address」는, 요청의 대상이 되는 48 비트의 가상 어드레스이다. 또한, 「Byte Enable」이란, 인에이블을 나타내는 129 비트의 정보이다. 또한, 「Store Data」란, 요청의 종별이「Store」일 때에 저장하는 128 바이트의 데이터이다.
ASI 레지스터(41c)는, 섹터 인에이블, 플래시 인에이블, 플래시 섹터 모드의 값을 섹터 ID 선택 제어부(41d)에 출력한다. 또한, ASI 레지스터(41c)는, 섹터 ID를 각각 섹터 ID 선택부(41e)에 출력한다. 섹터 ID 선택 제어부(41d)는, 코어(40)가 발행한 L1 캐시 요청을 취득하고, L1 캐시 요청의 Sector Sel의 값을 취득한다. 또한, 섹터 ID 선택 제어부(41d)는, ASI 레지스터(41c)에서, 섹터 인에이블, 플래시 인에이블, 플래시 섹터 모드의 값을 취득한다.
그리고, 섹터 ID 선택 제어부(41d)는, 섹터 인에이블의 값이 「0」인 경우에, 섹터 ID 선택부(41e)에 Def(00)를 선택하도록 지시한다. 또한, 섹터 ID 선택 제어부(41d)는, 섹터 인에이블, 플래시 인에이블, 플래시 섹터 모드의 값이 전부 「1」이며, 또한, L1 캐시 요청의 내용이 데이터의 저장(Store)인 경우에, FL(11)을 출력하도록 지시한다. 즉, 섹터 ID 선택 제어부(41d)는, 애플리케이션이 지정한 기간 내에 갱신한 데이터에 대해서는, 섹터 ID「11」를 출력하도록 지시한다.
또한, 섹터 ID 선택 제어부(41d)는, 섹터 인에이블, 플래시 인에이블, 플래시 섹터 모드가 「1」로 L1 캐시 요청의 내용이 데이터의 저장이 아닌 경우에, 이하의 처리를 행한다. 또한, 섹터 ID 선택 제어부(41d)는, 섹터 인에이블이 「1」로, 플래시 인에이블, 플래시 섹터 모드 중 어느 하나, 또는 양방이 「0」인 경우도 같은 처리를 행한다.
즉, 섹터 ID 선택 제어부(41d)는, L1 캐시 요청의 Sector Sel의 값을 식별한다. 그리고, 섹터 ID 선택 제어부(41d)는, Sector Sel의 값이 「ID1」인 경우는, ID1을 선택하도록 섹터 ID 선택부(41e)에 지시하고, Sector Sel의 값이 「ID0」인 경우는, ID0을 선택하도록 섹터 ID 선택부(41e)에 지시한다.
섹터 ID 선택부(41e)는, ASI 레지스터(41c)에서, 각 섹터 ID를 취득한다. 그리고, 섹터 ID 선택부(41e)는, 섹터 ID 선택 제어부(41d)에서 통지된 섹터 ID를 L1 캐시 액세스 컨트롤러(57)에 출력한다.
L1 캐시 액세스 컨트롤러(57)는, 코어(40)로부터 L1 캐시 요청을 취득한다. 그리고, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 요청이 데이터의 판독을 요구하는 경우, L1 캐시 태그(42))를 이용하여, L1 캐시(43)로부터의 데이터 판독을 행한다.
또한, L1 캐시 액세스 컨트롤러(57)는, 판독의 대상이 되는 데이터가 L1 캐시(43)에 저장되어 있지 않고, 캐시 미스가 발생한 경우에, 이하의 처리를 행한다. 즉, L1 캐시 액세스 컨트롤러(57)는, L1 캐시-L2 캐시 액세스 버스를 통해, L2 캐시 액세스 컨트롤러(45)에 데이터의 요청을 송신한다.
또, L1 캐시 액세스 컨트롤러(57)는, L2 캐시 액세스 컨트롤러(45)에 데이터의 요청을 송신하는 경우, TLB(44)를 이용하여, 논리 어드레스를 물리 어드레스로 변환한다. 그리고, L1 캐시 액세스 컨트롤러(57)는, 변환 후의 물리 어드레스를 L2 캐시 액세스 컨트롤러(45)에 송신한다.
그렇게 하면, L1 캐시 액세스 컨트롤러(57)는, L2 캐시 액세스 컨트롤러(45)로부터 데이터와 함께, 섹터 ID를 취득한다. 그리고, L1 캐시 액세스 컨트롤러(57)는, 취득한 데이터 L1 캐시(43)에 저장하며, 취득한 섹터 ID를 변경하지 않고 L1 캐시 태그(42))에 저장한다.
그 후, L1 캐시 액세스 컨트롤러(57)는, L1 캐시(43)로부터 판독 대상이 되는 데이터를 검색한다. 그렇게 하면, 캐시 히트가 발생하기 때문에, L1 캐시 액세스 컨트롤러(57)는, 데이터를 취득하고, 취득한 데이터를 L1 캐시 응답으로서 코어(40)에 송신한다. 여기서, L1 캐시 응답에는, 응답을 나타내는 「Req val」과, 판독을 요구한 요청의 「Request ID」와, 판독한 128 바이트의 데이터인 「Read Data」가 필드로서 포함된다.
또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 요청이 데이터의 저장을 요구하는 경우, 섹터 ID 생성부(41)로부터 섹터 ID를 취득한다. 그리고, L1 캐시 액세스 컨트롤러(57)는, 데이터를 L1 캐시(43)에 저장하며, L1 캐시 태그(42))에, 섹터 ID 생성부(41)로부터 취득한 섹터 ID를 저장한다.
또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시(43)에 저장된 데이터의 리플레이스를 행하는 경우에, L1 캐시(43)에 저장된 데이터와 함께, 태그 데이터에 포함되는 섹터 ID를 L2 캐시 액세스 컨트롤러(45)에 송신한다. 또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시(43)에 저장된 데이터가 갱신되어, 섹터 ID가 변경이 된 경우, 변경 후의 섹터 ID를 L2 캐시 액세스 컨트롤러(45)에 송신한다.
또한, L1 캐시 액세스 컨트롤러(57)는, 후술하는 플래시 제어부(52)가 플래시를 실행하는 경우도 마찬가지로, L1 캐시(43)에 저장된 데이터와 함께, 태그 데이터에 포함되는 섹터 ID를 L2 캐시 액세스 컨트롤러(45)에 송신한다. 그렇게 하면, L2 캐시 액세스 컨트롤러(45)는, L1 캐시 액세스 컨트롤러(57)로부터 취득한 섹터 ID를 L2 캐시 태그(46)에 저장하고, 데이터를 L2 캐시(47)에 저장한다.
이와 같이, L1 캐시 액세스 컨트롤러(57)는, 애플리케이션이 지정하는 구간내에 갱신된 데이터에 대해서는, 애플리케이션이 지정하는 구간내에 갱신된 것을 나타내는 섹터 ID「11」을 태그 데이터로서 L1 캐시 태그(42))에 저장한다. 그리고, L1 캐시 액세스 컨트롤러(57)는, 리플레이스나 플래시가 실행되는 경우, 애플리케이션이 지정하는 구간내에 갱신된 것을 나타내는 섹터 ID「11」을 데이터와 함께 L2 캐시 액세스 컨트롤러(45)에 송신한다.
또, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 요청이 판독의 요청이라고 판별하면, L1 캐시 태그(42))에, 판독의 요청인 Read Req를 발행한다. 여기서, Read Req에는, 판독의 요청인 취지를 나타내는 Val과, 판독 대상의 논리 어드레스 LA[46:7]가 저장된다.
또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 요청이 저장의 요청이라고 판별하면, 이하의 처리를 실행한다. 즉, L1 캐시 액세스 컨트롤러(57)는, 저장의 요청인 Write를 발행한다. 여기서, Write에는, 기록 대상이 되는 데이터, 섹터 ID 생성부(41)로부터 수신한 섹터 ID, 웨이 ID, 명령 데이터인지 데이터인지의 정보가 저장된다.
또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 - L2 캐시 사이의 요청 및 응답을 발행하는 것으로, L2 캐시 액세스 컨트롤러(45)와 섹터 ID 및 데이터의 요구나 송신을 행한다.
L1 캐시 태그(42))는, L1 캐시 액세스 컨트롤러로부터 Read Req를 수신하면, 취득한 논리 어드레스의 하위 7 비트와 일치하는 인덱스의 태그 데이터에, 취득한 논리 어드레스의 상위 33 비트가 저장되어 있는지 여부를 판별한다. 그리고, L1 캐시 태그(42))는, 취득한 논리 어드레스의 상위 33 비트가 저장되어 있는 태그 데이터가 존재하는 경우, 캐시 히트했다고 판별한다. 한편, L1 캐시 태그(42))는, 취득한 논리 어드레스의 상위 33 비트가 저장되어 있는 태그 데이터가 존재하지 않는 경우, 캐시 미스했다고 판별한다.
그리고, L1 캐시 태그(42))는, L1 캐시 액세스 컨트롤러(57)에 응답인 Read Rep(Read Response)를 발행한다. 여기서, Read Rep에는, 캐시 히트했는지 아닌지의 정보, 명령 데이터인지 데이터인지의 정보, 웨이 ID, 섹터 ID가 포함된다. 또한, L1 캐시 태그(42))는, 캐시 히트한 경우에, L1 캐시(43)에 판독 요구를 발행하고, L1 캐시(43)에 판독 대상이 되는 데이터를 L1 캐시 액세스 컨트롤러(57)에 출력시킨다.
또한, L1 캐시 태그(42))는, L1 캐시 액세스 컨트롤러(57)로부터 기록 요구 인 Write를 수신한다. 그렇게 하면, L1 캐시 태그(42)는, 기록 요구에 저장된 섹터 ID와 기록 요구의 웨이 ID가 나타내는 웨이에 태그 데이터를 저장하며, L1 캐시(43)에 데이터를 저장한다.
또, L1 캐시 태그(42)는, 기록 요구의 대상이 되는 가상 어드레스의 데이터를 기억하고 있는 경우에, 태그 데이터의 스테이트를 변경하며, 태그 데이터의 섹터 ID를 L1 캐시 액세스 컨트롤러(57)로부터 취득하는 섹터 ID로 변경한다. 즉, L1 캐시 태그(42)는, 코어(40)가 실행하는 애플리케이션이 지정한 기간 내에 갱신된 취지를 나타내는 섹터 ID를 태그 데이터에 기억한다.
또한, 비캐시 요청 스테이트 머신(50)은, UC 영역에 대한 액세스를 제어하여, 코어(40)로부터 NC 요청을 수신하면, PCIe 등을 통한 처리 등을 실행한다. 예컨대, 비캐시 요청 스테이트 머신(50)은, 각 코어(40∼40b)가 HDD(29) 등의 I/O 장치에 대한 판독이나 저장의 NC 요청을 취득한 경우에, 취득한 NC 요청을 PCI 제어부(53)에 발행한다. 그리고, 비캐시 요청 스테이트 머신(50)은, PCI 제어부(53)로부터 요청의 응답을 취득한 경우에, 취득한 응답을 NC 응답으로서 코어(40∼40b)에 송신한다.
도 17로 되돌아가서, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 태그(46)나 L2 캐시(47)의 액세스 컨트롤러이며, L2 캐시 태그(46)나 L2 캐시(47)에 액세스하기 위한 파이프 라인이다. 또, L2 캐시 액세스 컨트롤러(45)는, L1 캐시 액세스 컨트롤러(57)와 같은 처리를 행하는 것으로, L2 캐시(47)에 저장된 데이터의 제어를 행한다. 또한, L2 캐시 액세스 컨트롤러(45)는, 동일 어드레스를 연속 처리하는 기능을 갖는다.
L2 캐시 태그(46)는, L1 캐시 태그(42)가 기억하는 태그 데이터와 같은 태그 데이터를 L2 캐시(47)의 태그 데이터로서 기억한다. 또한, L2 캐시(47)는, 각 코어(40∼40b)가 공용하는 2차 캐시 메모리이다. 또한, L2 캐시(47)는, 복수의 캐시 라인을 가지고, 각 캐시 라인은 복수의 그룹으로 나누어져 있다.
L2 캐시 개요 섹터 플래그(48)는, 각 코어(40∼40b)가 실행하는 애플리케이션이 지정한 기간 내에 갱신한 데이터가 각 그룹의 캐시 라인에 저장되어 있는지 여부를 판별하는 플래그를 코어마다 갖는다. 즉, L2 캐시 개요 섹터 플래그(48)는, 실시예 3에 따른 개요 섹터 플래그(12e)와 같은 플래그이다.
여기서, 도 21을 이용하여, L2 캐시 태그(46), L2 캐시(47), L2 캐시 개요 섹터 플래그(48)의 관계에 관해서 설명한다. 도 21은, L2 캐시 태그와 L2 캐시와 L2 캐시 개요 섹터 플래그를 설명하기 위한 도이다. 도 21에 도시한 바와 같이, L2 캐시 개요 섹터 플래그(48)는, 개요 섹터 플래그(12e)와 같이, 애플리케이션이 지정한 기간 내에 갱신한 데이터가 캐시 라인의 각 그룹에 존재하는지 여부를 나타내는 플래그를 각 코어(40∼40b)마다 갖는다.
구체적으로는, L2 캐시 개요 섹터 플래그(48)에는, L2 캐시(47)가 갖는 각 캐시 라인을 「0」∼「63」까지의 그룹으로 나누고, 각 그룹에 대해서, 이하의 플래그가 저장된다. 즉, L2 캐시 개요 섹터 플래그(48)에는, 각 코어(40∼40b)가 실행하는 애플리케이션이 지정하는 기간 내에 갱신한 데이터가, 캐시 라인의 각 그룹에 존재하는지 여부를, 각 코어(40∼40b)마다 나타내는 플래그가 저장된다.
또한, 도 21에 도시하는 예에서는, L2 캐시 태그(46) 및 L2 캐시(47)는, 물리 어드레스의 하위 13 비트인 인덱스와 대응시켜진 복수의 캐시 라인을 갖는다. 또, 도 21에 도시하는 예에서는, 인덱스의 값을 10 진수로 기재했다. 또한, L2 캐시 태그(46) 및 L2 캐시(47)는, 각 캐시 라인마다 웨이 ID「0」∼「15」까지의 웨이를 갖는다.
또한, L2 캐시 태그(46)에는, L1 캐시 태그(42)와 같이, 각 캐시 라인의 각 웨이에, 태그 데이터로서, Val, 스테이트, 어드레스의 상위 27 비트, 섹터 ID, CB가 저장된다. 또한, L2 캐시(47)에는, L1 캐시(43)와 같이, 각 캐시 라인의 각 웨이에 대하여, 128 바이트의 데이터와 16 바이트의 데이터가 저장된다.
도 17로 되돌아가서, 어드레스 맵(49)은, 요청 대상이 되는 물리 어드레스와, 물리 어드레스가 나타내는 기억 영역에 액세스하는 CPU의 식별자를 대응시켜서 기억하고, 물리 어드레스를 CPU의 식별자로 변환한다. 즉, 어드레스 맵(49)은, CPU(12g)가 다른 CPU와 접속된 메모리에 액세스하는 요청을 발행하면, 액세스 대상의 물리 어드레스로부터 요청의 송신처가 되는 CPU의 식별자를 판별한다. 그리고, 어드레스 맵(49)은, 요청 제어부(56)에, 요청의 송신처가 되는 CPU의 식별자를 통지한다.
설정 레지스터군(51)은, CPU(12g)의 각종 설정을 행하는 복수의 레지스터이다. 플래시 제어부(52)는, 코어(40∼40b)로부터의 명령에 의해, L2 캐시(47)에 대한 캐시 플래시를 행한다. 즉, 플래시 제어부(52)는, L2 캐시(47)가 기억하는 데이터를 메모리(17, 18)에 재기록하는 처리를 한다. 또한, 플래시 제어부(52)는, 재기록하는 데이터가 CPU(12g) 이외의 CPU가 액세스하는 메모리로부터 캐시한 데이터인 경우에, 원 메모리에 대하여 재기록을 행한다.
PCI 제어부(53)는, CPU 접속의 PCIexpress에 대한 루트 콤플렉스이다. 디렉토리 제어부(54)는, NUMA의 기술을 이용한 메모리 액세스를 제어한다. 또한, 디렉토리 제어부(54)는, DMA(Direct Memory Access) 등의 메모리 요청을 취득하면, 메모리(17), 메모리(18)에 저장된 디렉토리 정보를 이용하여, 캐시 일관성을 유지하는 처리를 실행한다. 예컨대, 디렉토리 제어부(54)는, 스누프 제어부(55)를 이용하여, 다른 CPU에 스누프를 발행하거나, 다른 CPU가 발행한 스누프에 대한 응답 등을 실행한다.
스누프 제어부(55)는, 로컬 XB(16)를 통해, CPU(12g) 이외의 CPU로부터의 스누프를 접수하면, L2 캐시(47)를 검사하고, 검사 결과를 응답으로서 송신한다. 또한, 스누프 제어부(55)는, 디렉토리 제어부(54)로부터 스누프의 발행이 요구된 경우, 스누프를 CPU(12g) 이외의 CPU에 대하여 송신한다. 예컨대, 스누프 제어부(55)는, L2 캐시(47)에 저장된 스누프 대상의 데이터의 스테이트가 「M」이었던 경우에, 캐시 데이터를 스누프의 응답으로서 송신한다.
요청 제어부(56)는, L2 캐시(47)의 캐시 미스가 발생했을 때에, 다른 CPU에의 요청 발행으로부터, 다른 CPU로부터의 응답 수신까지의 관리를 행한다. 예컨대, 요청 제어부(56)는, 물리 어드레스를 어드레스 맵(49)에 출력하여, 요청의 송신처가 되는 CPU의 식별자를 취득한다. 그리고, 요청 제어부(56)는, 취득한 식별자를 수신처로서, 요청을 로컬 XB(16)에 출력한다.
또한, 요청 제어부(56)는 요청의 대상이 되는 어드레스 등을 유지하는 복수의 엔트리를 갖는다. 그리고, 요청 제어부(56)는 코어(40∼40b)에서, 처리중인 물리 어드레스에 대하여 요청이 발행된 경우에, 후단의 요청을 대기시키기 위해서, 엔트리에 저장한다. 그리고, 요청 제어부(56)는, 엔트리에 저장한 요청을 발행하는 경우에, 요청을 저장한 엔트리의 식별자를 요청에 부가하여 출력한다.
로컬 XB(16)는, 인터커넥트용의 라우터이며, CPU의 식별자에 대응한 수신처로, 요청을 송신한다. 또한, 로컬 XB(16)는, 송신하는 요청의 패킷화나 CRC(Cyclic Redundancy Check)의 부가 등을 행한다.
다음에, 도 22를 이용하여, L2 캐시 액세스 컨트롤러(45)가 송수신하는 신호의 일례에 관해서 설명한다. 도 22는, 실시예 5에 따른 L2 캐시 액세스 컨트롤러가 송수신하는 신호를 설명하기 위한 도이다. 예컨대, 도 22에 도시하는 예에서는, L2 캐시 액세스 컨트롤러(45)는, L1 캐시 액세스 컨트롤러(57)로부터 L1 캐시-L2 캐시 간의 요청을 수신한다.
그렇게 하면, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 리드 요청을 L2 캐시 태그(46)에 발행하여, L2 캐시 태그(46)로부터 L2 캐시 리드 응답을 수신한다. 그리고, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 리드 응답에 캐시 히트한 취지가 포함되는 경우, L2 캐시(47)로부터 리드 데이터를 취득하며, L2 캐시 태그(46)로부터 섹터 ID를 취득한다. 그 후, L2 캐시 액세스 컨트롤러(45)는, 취득한 리드 데이터와 섹터 ID를 L1 캐시 액세스 컨트롤러(57)에 응답으로서 출력한다.
또한, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 리드 응답에 캐시 미스한 취지가 포함되는 경우, 요청 제어부(56)에 요청의 발행을 요구한다. 그렇게 하면, 요청 제어부(56)는, 요청을 발행하고, 요청의 대상이 되는 데이터를 취득한다.
예컨대, 요청 제어부(56)는, 디렉토리 제어부(54)를 통해 메모리(17, 18)로부터 데이터를 취득한다. 또한, 예컨대, 요청 제어부(56)는, 로컬 XB(16)를 통해 CPU(12g) 이외의 CPU에 요청을 발행하고, CPU(12g) 이외의 CPU와 접속된 메모리의 공유 영역에서 데이터를 취득한다. 그리고, 요청 제어부(56)는, 취득한 데이터를 L2 캐시 액세스 컨트롤러(45)에 출력한다.
또한, L2 캐시 액세스 컨트롤러(45)는, 요청 제어부(56)로부터 데이터를 취득하면, L2 캐시 라이트 요청을 L2 캐시 태그(46)에 발행하고, 라이트 데이터를 L2 캐시(47)에 송신한다. 즉, L2 캐시 액세스 컨트롤러(45)는, 새로운 데이터를 L2 캐시(47)에 저장한다.
또, L2 캐시 액세스 컨트롤러(45)는, L1 캐시의 리플레이스가 발생하여, L1 캐시로부터 출력된 데이터를 취득하면, L2 캐시 태그(46)에 L2 캐시 라이트 요청을 발행하여, 출력된 데이터의 갱신을 행한다. 또한, L2 캐시 액세스 컨트롤러(45)는, L1 캐시로부터 출력된 데이터와 함께 섹터 ID를 수신하고, 수신한 섹터 ID를 L2 캐시 태그(46)에 저장한다.
또한, L2 캐시 액세스 컨트롤러(45)는, 데이터를 L2 캐시(47)에 저장하는 경우에, 이하의 처리를 행한다. 즉, L2 캐시 액세스 컨트롤러(45)는, 저장하는 데이터의 섹터 ID에 따라서, 개요 섹터 플래그를 L2 캐시 개요 섹터 플래그(48)에 저장한다.
상세하게는, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 경우에, 데이터를 저장하는 캐시 라인을 포함하는 그룹에 갱신한 데이터가 존재하는 취지를 나타내는 개요 섹터 플래그 「1」을 L2 캐시 개요 섹터 플래그(48)에 저장한다.
또, L2 캐시 액세스 컨트롤러(45)는, 개요 섹터 플래그를 저장할 때에, 임의의 방법으로, 데이터를 갱신한 애플리케이션을 실행하는 코어를 식별하고, 식별한 코어의 개요 섹터 플래그를 저장한다. 예컨대, L2 캐시 액세스 컨트롤러(45)는, 요청 ID를 이용하여, 데이터를 갱신한 애플리케이션을 실행하는 코어를 식별하는 것으로 해도 좋다. 또한, L2 캐시 액세스 컨트롤러(45)는, LRU(59)에 저장된 LRU를 이용하여, 리플레이스의 대상이 되는 캐시 라인을 선택한다.
비캐시 요청 스테이트 머신(50)은, 코어(40∼40b)가 발행한 플래시 요구를 취득하면, 플래시 제어부(52)에 플래시의 실행을 지시한다. 그렇게 하면, 플래시 제어부(52)는, L2 캐시 개요 섹터 플래그(48)로부터 개요 섹터 플래그를 취득하고, 개요 섹터 플래그에 따른 캐시 라인에 대한 플래시 요구를 L2 캐시 액세스 컨트롤러(45)에 발행한다.
즉, 플래시 제어부(52)는, L2 캐시 개요 섹터 플래그(48)가 갖는 각 플래그중, 플래시 요구를 발행한 코어의 개요 섹터 플래그를 검사하고, 플래그 「1」이 저장된 그룹을 검색한다. 그리고, 플래시 제어부(52)는, 플래그 「1」을 검출한 그룹의 캐시 라인에 대한 플래시 요구를 순차 L2 캐시 액세스 컨트롤러(45)에 발행한다. 또, 플래시 제어부(52)는, 플래시 요구의 발행이 종료하면, 플래시 요구의 대상이 되는 캐시 라인의 그룹, 및 플래시 요구를 발행한 코어 등에 따라서, L2 캐시 개요 섹터 플래그(48)의 리셋을 행한다.
한편, L2 캐시 액세스 컨트롤러(45)는, 플래시 제어부(52)로부터의 플래시 요구에 따라서, L2 캐시(47)의 캐시 플래시를 행한다. 구체적으로는, L2 캐시 액세스 컨트롤러(45)는, 플래시 요구의 대상이 되는 캐시 라인의 태그 데이터를 검사하여, 섹터 ID가 「11」이며, 스테이트가 「M」인 엔트리를 각 웨이로부터 검색한다. 그리고, L2 캐시 액세스 컨트롤러는, 섹터 ID가 「11」이며, 스테이트가 「M」인 엔트리를 검출하면, 검출한 엔트리에 대한 플래시를 실행한다.
상세하게는, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」이고 스테이트가 「M」인 엔트리의 데이터를 L2 캐시(47)로부터 취득하고, 스테이트를 「I」로 갱신한다. 그리고, L2 캐시 액세스 컨트롤러(45)는, 취득한 데이터를 디렉토리 제어부(54)에 송신하고, 메모리(17, 18), 또는 다른 CPU와 접속된 메모리에의 재기록을 요구한다.
또, 디렉토리 제어부(54)는, CPU(12g)와 접속하는 메모리(17, 18) 이외의 메모리에 데이터의 재기록을 행하는 경우에, 요청 제어부(56)와 같이 어드레스 맵(49)을 이용하여 데이터의 재기록처의 메모리와 접속된 CPU를 식별한다. 그리고, 디렉토리 제어부(54)는, 로컬 XB(16)를 통해, 식별한 CPU에 데이터를 송신한다.
또, 디렉토리 제어부(54)는, 디렉토리 정보에 기초하여, 스누프의 발행을 스누프 제어부(55)에 요구하고, L2 캐시 액세스 컨트롤러(45)나, 다른 CPU에 스누프를 발행시킨다. L2 캐시 액세스 컨트롤러(45)는, 스누프 제어부(55)가 발행한 스누프, 또는 요청 제어부(56)가 다른 CPU에서 수신한 스누프를 취득하면, L2 캐시(47)에 저장된 데이터의 출력 등을 행한다.
여기서, 비캐시 요청 스테이트 머신(50)은, 코어(40∼40b)로부터의 요구에 따라서, 섹터 최대값 레지스터(58)에, 플래시의 대상이 되는 웨이 수의 최대값을 설정한다. 상세하게는, 비캐시 요청 스테이트 머신(50)은, 섹터 ID의 값마다, 각 캐시 라인의 웨이에 등록 가능한 태그 데이터의 수를 섹터 최대값 레지스터(58)에 설치한다.
그리고, L2 캐시 액세스 컨트롤러(45)는, 등록 가능한 데이터의 수를 넘어서, 새로운 데이터를 저장하는 경우에, 저장하는 데이터의 섹터 ID의 값에 따라서, 리플레이스를 행한다. 예컨대, L2 캐시 액세스 컨트롤러(45)는, 새롭게 저장하는 데이터의 섹터 ID가 「11」인 경우에, 섹터 ID「01」 또는 섹터 ID「10」의 데이터를 리플레이스한다. 또한, L2 캐시 액세스 컨트롤러(45)는, 새롭게 저장하는 데이터의 섹터 ID가 「01」인 경우에, 섹터 ID가 「01」 또는 섹터 ID가 「00」인 데이터를 리플레이스한다.
예컨대, 코어(40∼40b), 섹터 ID 생성부(41∼41b), TLB(44∼44b), L2 캐시 액세스 컨트롤러(45), L2 캐시 개요 섹터 플래그(48), 비캐시 요청 스테이트 머신이란, 전자 회로이다. 또한, 예컨대, 플래시 제어부(52), PCI 제어부(53), 디렉토리 제어부(54), 스누프 제어부(55), 요청 제어부(56), L1 캐시 액세스 컨트롤러(57)란, 전자 회로이다. 여기서, 전자 회로의 예로서, ASIC(Application Specific Integrated Circuit)나 FPGA(Field Programmable Gate Array) 등의 집적 회로, 또는 CPU(Central Processing Unit)나 MPU(Micro Processing Unit) 등을 적용한다.
또한, L1 캐시 태그(42∼42b), L1 캐시(43∼43b), L2 캐시 태그(46), L2 캐시(47), LRU(59)란, RAM(Random Access Memory), 플래시 메모리(flash memory) 등의 반도체 메모리 소자 등의 기억 장치이다. 또한, 설정 레지스터군(51), 섹터 최대값 레지스터(58)란, 레지스터이다.
다음에, 도 23을 이용하여, 섹터 ID 생성부(41)가 L1 캐시 태그(42)에 저장하는 섹터 ID를 생성하는 처리의 흐름에 관해서 설명한다. 도 23은, L1 캐시 태그에 저장하는 섹터 ID를 생성하는 처리의 흐름을 설명하기 위한 흐름도이다.
예컨대, 섹터 ID 생성부(41)는, 섹터 인에이블이 「1」인지 여부를 판별한다(단계 S101). 그리고, 섹터 ID 생성부(41)는, 섹터 인에이블이 「1」이 아닌 경우에(단계 S101 부정), 즉 섹터 플래그를 이용한 플래시를 행하지 않는 경우에, 섹터 ID를 「00」으로 설정하고(단계 S102), 처리를 종료한다. 한편, 섹터 ID 생성부(41)는, 섹터 인에이블이 「1」인 경우에(단계 S101 긍정), 플래시 인에이블이 「1」인지 여부를 판별한다(단계 S103).
그리고, 섹터 ID 생성부(41)는, 플래시 인에이블이 「1」이 아닌 경우에(단계 S103 부정), 섹터 셀렉터가 「1」인지 여부를 판별한다(단계 S104). 그리고, 섹터 ID 생성부(41)는, 섹터 셀렉터가 「1」이 아닌 경우에(단계 S104 부정), 섹터 ID를 「00」으로 설정하고(단계 S105), 처리를 종료한다. 또한, 섹터 ID 생성부(41)는, 섹터 셀렉터가 「1」인 경우에(단계 S104 긍정), 섹터 ID를 「01」로 설정하고(단계 S106), 처리를 종료한다.
또한, 섹터 ID 생성부(41)는, 플래시 인에이블이 「1」이라고 판별한 경우에(단계 S103 긍정), 플래시 섹터 모드가 「1」인지 여부를 판별한다(단계 S107). 그리고, 섹터 ID 생성부(41)는, 플래시 섹터 모드가 「1」인 경우에(단계 S107 긍정), L1 캐시 요청의 Code가 「Store」인지 여부를 판별한다(단계 S108).
또한, 섹터 ID 생성부(41)는, Code가 「Store」인 경우에(단계 S108 긍정), 섹터 ID를 「11」로 설정하고(단계 S109), 처리를 종료한다. 한편, 섹터 ID 생성부(41)는, 플래시 섹터 모드가 「1」이 아닌 경우(단계 S107 부정), 및 Code가 「Store」가 아닌 경우(단계 S108 부정)는, 단계 S104를 실행한다.
다음에, 도 24를 이용하여, L1 캐시 액세스 컨트롤러(57)가 L1 캐시 태그(42)의 섹터 ID를 등록/갱신하는 처리의 흐름을 설명한다. 도 24는, L1 캐시의 섹터 ID를 등록/갱신하는 처리의 흐름을 설명하기 위한 흐름도이다. 예컨대, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 태그(42)를 이용하여 L1 캐시의 검색을 하여, L1 캐시 히트했는지 여부를 판별한다(단계 S201).
그리고, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 히트했다고 판별한 경우(단계 S201 긍정), 히트한 엔트리의 섹터 ID를 판독한다(단계 S202). 다음에, L1 캐시 액세스 컨트롤러(57)는, 판독한 섹터 ID가 「11」인지 여부를 판별한다(단계 S203). 그리고, L1 캐시 액세스 컨트롤러(57)는, 섹터 ID가 「11」인 경우(단계 S203 긍정), 판독한 섹터 ID를 「11」로 갱신하고(단계 S204), 처리를 종료한다.
한편, L1 캐시 액세스 컨트롤러(57)는, 판독한 섹터 ID가 「11」이 아닌 경우(단계 S203 부정), 섹터 ID 생성부(41)가 생성한 생성 섹터 ID가 「11」인지 여부를 판별한다(단계 S205). 그리고, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 「11」인 경우(단계 S205 긍정), L2 캐시 액세스 컨트롤러(45)에 섹터 ID의 변경 요청을 송신한다(단계 S206).
또한, L1 캐시 액세스 컨트롤러(57)는, 변경 요청 완료 통지를 L2 캐시 액세스 컨트롤러(45)로부터 수신하면(단계 S207), 섹터 ID를 「11」로 갱신하고(단계 S204), 처리를 종료한다. 또한, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 「11」이 아닌 경우(단계 S205 부정), 생성 섹터 ID가 「00」인지 여부를 판별한다(단계 S208).
또한, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 「00」인 경우에(단계 S208 긍정), 생성 섹터 ID가 판독한 섹터 ID와 일치하는지 여부를 판별한다(단계 S209). 그리고, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 판독한 섹터 ID와 일치하는 경우(단계 S209 긍정), 섹터 ID를 「00」으로 갱신하고(단계 S210), 처리를 종료한다.
또한, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 판독한 섹터 ID와 일치하지 않는 경우(단계 S209 부정), L2 캐시 액세스 컨트롤러(45)에 섹터 ID의 변경 요청을 송신한다(단계 S211). 또한, L1 캐시 액세스 컨트롤러(57)는, 변경 요청 완료 통지를 L2 캐시 액세스 컨트롤러(45)로부터 수신하면(단계 S212), 섹터 ID를 「00」으로 갱신하고(단계 S210), 처리를 종료한다.
또한, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 「00」이 아닌 경우에(단계 S208 부정), 생성 섹터 ID가 판독한 섹터 ID와 일치하는지 여부를 판별한다(단계 S213). 그리고, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 판독한 섹터 ID와 일치하는 경우(단계 S213 긍정), 섹터 ID를 「01」로 갱신하고(단계 S214), 처리를 종료한다.
또한, L1 캐시 액세스 컨트롤러(57)는, 생성 섹터 ID가 판독한 섹터 ID와 일치하지 않는 경우(단계 S213 부정), L2 캐시 액세스 컨트롤러(45)에 섹터 ID의 변경 요청을 송신한다(단계 S215). 또한, L1 캐시 액세스 컨트롤러(57)는, 변경 요청 완료 통지를 L2 캐시 액세스 컨트롤러(45)로부터 수신하면(단계 S216), 섹터 ID를 「01」로 갱신하고(단계 S214), 처리를 종료한다.
또한, L1 캐시 액세스 컨트롤러(57)는, L1 캐시 히트하지 않은 경우(단계 S201 부정), L2 캐시 액세스 컨트롤러(45)에 보충 요청을 발행한다(단계 S217). 다음에, L1 캐시 액세스 컨트롤러(57)는, 응답에 포함되는 섹터 ID를 취득한다(단계 S218). 그리고, L1 캐시 액세스 컨트롤러(57)는, 응답으로부터 취득한 섹터 ID가 「00」인지 여부를 판별한다(단계 S219).
여기서, L1 캐시 액세스 컨트롤러(57)는, 응답으로부터 취득한 섹터 ID가 「00」인 경우(단계 S219 긍정), 섹터 ID「00」을 등록하고(단계 S220), 처리를 종료한다. 또한, L1 캐시 액세스 컨트롤러(57)는, 응답으로부터 취득한 섹터 ID가「00」이 아닌 경우(단계 S219 부정), 응답으로부터 취득한 섹터 ID가 「01」인지 여부를 판별한다(단계 S221).
그리고, L1 캐시 액세스 컨트롤러(57)는, 응답으로부터 취득한 섹터 ID가 「01」인 경우(단계 S221 긍정), 섹터 ID「01」을 등록하고(단계 S222), 처리를 종료한다. 또한, L1 캐시 액세스 컨트롤러(57)는, 응답으로부터 취득한 섹터 ID가「01」이 아닌 경우(단계 S221 부정), 섹터 ID「11」을 등록하고(단계 S223), 처리를 종료한다. 즉, L1 캐시 액세스 컨트롤러(57)는, L2 캐시 액세스 컨트롤러(45)로부터 수신한 섹터 ID를 그대로 등록한다.
L1 캐시 액세스 컨트롤러(57)는, 도 23에 도시하는 처리를 실행하는 것으로 애플리케이션이 실행하는 기간 내에 갱신된 데이터인지 여부를 나타내는 섹터 ID를 생성하고, 도 24에 도시하는 처리를 실행하는 것으로, 섹터 ID를 등록한다. 그 결과, L1 캐시 액세스 컨트롤러(57)는, 도 25에 도시한 바와 같이, L1 캐시 태그(42)에 등록한 섹터 ID를 천이시킨다.
도 25는, L1 캐시 태그에 등록한 섹터 ID의 천이를 설명하기 위한 도이다. 도 25에 도시하는 예에서는, 부정(empty)이었던 섹터 ID에, 섹터 ID「00」,「01」,「11」중 어느 하나를 등록하는 것으로, 섹터 ID는, 「00」,「01」,「11」로 천이한다. 또한, 캐시의 리플레이스를 행한 경우나 스테이트를 인밸리드로 변경한 경우에는, 각 섹터 ID의 값은 부정이 된다.
또한, 섹터 ID「00」이나 섹터 ID「01」은, 갱신하는 섹터 ID의 값에 따라서, 섹터 ID「00」,「01」,「11」중 어느 하나로 천이한다. 그러나, 섹터 ID의 값이 「11」이 된 경우에는, 리플레이스나 인밸리드 이외로, 섹터 ID의 값이 천이하는 일은 없다. 이 때문에, CPU(12g)는, 한번 섹터 ID가 「11」이 된 데이터를 반드시 플래시할 수 있다.
다음에, 도 26을 이용하여, L2 캐시에 있어서의 섹터 ID의 등록을 행하는 처리의 흐름에 관해서 설명한다. 도 26은, L2 캐시에 있어서의 섹터 ID를 등록하는 처리의 흐름을 설명하기 위한 흐름도이다.
예컨대, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 태그(46)를 이용하여 L2 캐시의 검색을 하여, L2 캐시 히트했는지 여부를 판별한다(단계 S301). 그리고, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 히트했다고 판별한 경우(단계 S301 긍정), 히트한 엔트리의 섹터 ID를 판독한다(단계 S302).
다음에, L2 캐시 액세스 컨트롤러(45)는, 판독한 섹터 ID가 「00」 또는 「01」인지 여부를 판별한다(단계 S303). 그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「00」, 또는 섹터 ID가 「01」인 경우(단계 S304), 섹터 ID가「00」인지 여부를 판별한다(단계 S304).
그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「00」인 경우(단계 S304 긍정), 판독한 섹터 ID를 「00」으로 갱신한다(단계 S305). 한편, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「00」이 아닌 경우(단계 S304 부정), 섹터 ID가「01」인지 여부를 판별한다(단계 S306). 그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「01」인 경우(단계 S306 긍정), 판독한 섹터 ID를 「01」로 갱신한다(단계 S307).
한편, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「01」이 아닌 경우(단계 S306 부정), 판독한 섹터 ID를 「11」로 갱신한다(단계 S308). 또한, L2 캐시 액세스 컨트롤러(45)는, 판독한 섹터 ID가 「00」 또는 「01」이 아닌 경우(단계 S303 부정), 판독한 섹터 ID를 「11」로 갱신한다(단계 S308).
또한, L2 캐시 액세스 컨트롤러(45)는, L2 캐시 히트하지 않은 경우(단계 S301 부정), 검색 대상이 되는 데이터의 홈 어드레스가 CPU(12g)의 어드레스인지 여부를 판별한다(단계 S309). 그리고, L2 캐시 액세스 컨트롤러(45)는, 검색 대상이 되는 데이터의 홈 어드레스가 CPU(12g)의 어드레스인 경우(단계 S309 긍정), 디렉토리 제어부(54)에 데이터 보충 요청을 발행한다(단계 S310).
한편, L2 캐시 액세스 컨트롤러(45)는, 검색 대상이 되는 데이터의 홈 어드레스가 CPU(12g)의 어드레스가 아닌 경우(단계 S309 부정), 다른 CPU에 데이터 보충 요청을 발행한다(단계 S311). 다음에, L2 캐시 액세스 컨트롤러(45)는, 데이터 보충의 응답을 수신하면(단계 S312), 데이터와 함께 수신하는 섹터 ID가 「00」인지 여부를 판별한다(단계 S313).
그리고, L2 캐시 액세스 컨트롤러(45)는, 수신한 섹터 ID가 「00」인 경우(단계 S313 긍정), 섹터 ID를 「00」으로 갱신하고(단계 S314), 처리를 종료한다. 한편, L2 캐시 액세스 컨트롤러(45)는, 수신한 섹터 ID가 「00」이 아닌 경우(단계 S313 부정), 수신한 섹터 ID가 「01」인지 여부를 판별한다(단계 S315).
그리고, L2 캐시 액세스 컨트롤러(45)는, 수신한 섹터 ID가 「01」인 경우(단계 S315 긍정), 섹터 ID를 「01」로 갱신한다(단계 S316). 또한, L2 캐시 액세스 컨트롤러(45)는, 수신한 섹터 ID가 「01」이 아닌 경우(단계 S315 부정), 섹터 ID를 「11」로 갱신한다(단계 S317).
그 후, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID를 갱신한 경우(단계 S305, S307, S308, S314, S316, S317), 이하의 처리를 실행한다. 즉, L2 캐시 액세스 컨트롤러(45)는, 응답으로서 갱신 후의 섹터 ID를 L1 캐시 액세스 컨트롤러(57)에 응답하고(단계 S318), 처리를 종료한다.
또, CPU(12g)는, 실시예 1에 따른 CPU(12)와 같은 기능을 발휘한다. 이 때문에, CPU(12g)는, 자신에게 접속하는 메모리(17, 18)의 일부를 공유 메모리 영역으로 하고, 공유 메모리 영역만을 플래시의 대상으로 하더라도 좋다. 그래서, 도 26에 도시한 L2 캐시 액세스 컨트롤러(45)의 처리의 바리에이션으로서, 공유 메모리 영역만을 플래시의 대상으로 할 때에, L2 캐시 액세스 컨트롤러(45)가 실행하는 처리의 흐름에 관해서 설명한다.
도 27은, 공유 메모리 영역만을 플래시 대상으로 하는 처리의 흐름을 설명하기 위한 흐름도이다. 또, 도 27에 도시하는 각 처리 중, 단계 S301∼단계 S318에 대해서는, 도 26에 도시하는 단계 S301∼단계 S318과 같은 처리를 실행하는 것으로 하고, 설명을 생략한다.
예컨대, L2 캐시 액세스 컨트롤러(45)는, 캐시 히트한 엔트리의 섹터 ID가 「01」이 아닌 경우에(단계 S306 부정), 이하의 처리를 실행한다. 즉, L2 캐시 액세스 컨트롤러(45)는, 캐시 히트한 엔트리의 데이터가, CPU(12g)가 존재하는 노드 이외의 노드로부터 캐시한 데이터인지 여부를 판별한다(단계 S319).
그리고, L2 캐시 액세스 컨트롤러(45)는, 캐시 히트한 데이터가 다른 노드의 데이터가 아닌 경우(단계 S319 부정), 섹터 ID를 「00」으로 갱신한다(단계 S305). 한편, L2 캐시 액세스 컨트롤러(45)는, 캐시 히트한 데이터가 다른 노드의 데이터인 경우에(단계 S319 긍정), 섹터 ID를 「11」로 갱신한다(단계 S308).
또한, L2 캐시 액세스 컨트롤러(45)는, 보충 데이터의 섹터 ID가 「01」이 아닌 경우(단계 S315 부정), 다른 노드로부터 캐시한 데이터인지 여부를 판별한다(단계 S320). 그리고, L2 캐시 액세스 컨트롤러(45)는, 다른 노드로부터 캐시한 데이터가 아니라고 판별한 경우(단계 S320 부정), 섹터 ID를 「00」으로 갱신한다(단계 S314). 또한, L2 캐시 액세스 컨트롤러(45)는, 다른 노드로부터 캐시한 데이터라고 판별한 경우(단계 S320 긍정), 섹터 ID를 「11」로 갱신한다(단계 S317).
이와 같이, L2 캐시 액세스 컨트롤러(45)는, 다른 노드로부터 캐시한 데이터만을 플래시의 대상으로 하고, CPU(12g)가 존재하는 노드(이하, 자체 노드로 한다)로부터 캐시한 데이터에 대해서는 플래시의 대상으로 하지 않는다. 즉, 정보 처리 시스템(1d)이, CPU(12g)가 자체 노드로부터 캐시한 데이터를 플래시했다고 해도, 자체 노드가 고장난 경우는, 플래시한 데이터를 이용한 리커버리를 행할 수 없다. 그래서, CPU(12g)는, 다른 노드로부터 캐시한 데이터만을 플래시의 대상으로 함으로써, 보다 효율적인 플래시 처리를 행할 수 있다.
다음에, 도 28을 이용하여, 플래시 대상의 웨이에 상한이 있을 때에 섹터 ID를 등록하는 처리의 흐름에 관해서 설명한다. 도 28은, 플래시 대상의 웨이에 상한이 있을 때에 섹터 ID를 등록하는 처리의 흐름을 설명하기 위한 흐름도이다.
또, 도 28에 도시하는 예에서는, 섹터 ID가 「00」인 데이터를 등록 가능한 수를 MAX00으로 기재하고, 섹터 ID가 「01」인 데이터를 등록 가능한 수를 MAX01로 기재하고, 섹터 ID가 「11」인 데이터를 등록 가능한 수를 MAX11로 기재했다. 또한, 도 28에 도시하는 예에서는, 현재 등록되어 있는 섹터 ID가 「00」인 데이터의 수를 NUM00으로 기재하고, 현재 등록되어 있는 섹터 ID가 「01」인 데이터의 수를 NUM01로 기재하고, 현재 등록되어 있는 섹터 ID가 「11」인 데이터의 수를 NUM11로 기재했다. 또, MAX01 및 MAX11은, 섹터 최대값 레지스터(58)가 기억하는 값이다.
예컨대, L2 캐시 액세스 컨트롤러(45)는, 저장 대상의 데이터의 섹터 ID가 「11」인지 여부를 판별한다(단계 S401). 그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 경우(단계 S401 긍정), MAX11의 수치가 NUM11과 동일한지 아닌가를 판별한다(단계 S402).
그리고, L2 캐시 액세스 컨트롤러(45)는, MAX11의 수치가 NUM11과 같은 경우에(단계 S402 긍정), 섹터 ID가 「11」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S403), 처리를 종료한다. 또한, L2 캐시 액세스 컨트롤러(45)는, MAX11의 수치가 NUM11과 동일하지 않은 경우(단계 S402 부정), 웨이가 가득 찼는지 여부를 판별한다(단계 S404).
다음에, L2 캐시 액세스 컨트롤러(45)는, 웨이가 가득 찬 경우(단계 S404 긍정), MAX00이 NUM00 이하인지 여부를 판별한다(단계 S405). 그리고, L2 캐시 액세스 컨트롤러(45)는, MAX00이 NUM00 이하인 경우(단계 S405 긍정), 현재의 섹터 ID가 「00」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S406), 처리를 종료한다.
한편, L2 캐시 액세스 컨트롤러(45)는, MAX00이 NUM00 보다 많은 경우(단계 S405 부정), 현재의 섹터 ID가 「01」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S407), 처리를 종료한다. 또한, L2 캐시 액세스 컨트롤러(45)는, 웨이가 가득차지 않은 경우(단계 S404 부정), 비어 있는 웨이에 데이터를 등록하고(단계 S408), 처리를 종료한다.
또한, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」이 아닌 경우(단계 S401 부정), 웨이가 가득찼는지 여부를 판별한다(단계 S409). 그리고, L2 캐시 액세스 컨트롤러(45)는, 웨이가 가득차지 않은 경우(단계 S409 부정), 비어 있는 웨이에 데이터를 등록하고(단계 S408), 처리를 종료한다.
또한, L2 캐시 액세스 컨트롤러(45)는, 웨이가 가득찬 경우(단계 S409 긍정), 섹터 ID가 「01」인지 여부를 판별한다(단계 S410). 그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「01」인 경우(단계 S410 긍정), MAX01이 NUM01 이하인지 여부를 판별한다(단계 S411).
그리고, L2 캐시 액세스 컨트롤러(45)는, MAX01이 NUM01 이하인 경우(단계 S411 긍정), 현재의 섹터 ID가 「01」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S412), 처리를 종료한다. 한편, L2 캐시 액세스 컨트롤러(45)는, MAX01이 NUM01 보다 많은 경우(단계 S411 부정), 현재의 섹터 ID가 「00」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S413), 처리를 종료한다.
또한, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「01」이 아닌 경우(단계 S410 부정), MAX00이 NUM00 이하인지 여부를 판별한다(단계 S414). 그리고, L2 캐시 액세스 컨트롤러(45)는, MAX00이 NUM00 이하인 경우(단계 S414 긍정), 현재의 섹터 ID가 「00」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S413), 처리를 종료한다. 한편, L2 캐시 액세스 컨트롤러(45)는, MAX00이 NUM00 보다 많은 경우(단계 S414 부정), 현재의 섹터 ID가 「01」인 웨이 중 어느 하나에 데이터를 등록하고(단계 S415), 처리를 종료한다.
이와 같이, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 데이터에 관해서, 등록 가능한 웨이의 최대수를 설정하고, 웨이의 최대수를 넘는 경우에, 리플레이스를 실행한다. 또한, L2 캐시 액세스 컨트롤러(45)는, 웨이의 빈공간이 없는 경우, 상한값을 넘는 섹터 ID의 데이터에 대해서 리플레이스를 행한다.
또, L2 캐시 액세스 컨트롤러(45)는, 플래시 대상의 데이터에 대해서는, 적극적으로 리플레이스를 실행하는 것으로, 메모리에 재기록하더라도 좋다. 그래서, 이하의 설명에서는, 도 29를 이용하여, L2 캐시 액세스 컨트롤러(45)가 실행하는 처리의 바리에이션에 관해서 설명한다.
도 29는, 플래시 대상의 웨이에 상한이 있을 때의 처리의 바리에이션을 설명하기 위한 흐름도이다. 또, 도 29에 도시하는 단계 S401∼단계 S415의 처리에 대해서는, 도 28에 도시하는 단계 S401∼단계 S415의 처리와 같은 처리인 것으로 하고, 설명을 생략한다.
예컨대, L2 캐시 액세스 컨트롤러(45)는, 웨이가 가득 찼다고 판별한 경우(단계 S409 긍정), 섹터 ID가 「11」의 등록이 존재하는지 여부를 판별한다(단계 S416). 그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID 「11」의 등록이 존재하는 경우(단계 S416 긍정), 섹터 ID가 「11」인 웨이 중 어느 하나에 데이터를 등록한다(단계 S417).
즉, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 웨이 중 어느 하나를 리플레이스하고, 메모리(17, 18)에의 기록을 행한다. 한편, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 등록이 존재하지 않는 경우(단계 S416 부정), 섹터 ID가 「01」인지를 판별한다(단계 S410).
도 30은, L2 캐시의 섹터 ID의 천이를 설명하기 위한 제1 도이다. 또한, 도 31은, L2 캐시의 섹터 ID의 천이를 설명하기 위한 제2 도이다. L2 캐시 액세스 컨트롤러(45)는, 도 28, 도 29에 도시하는 처리를 실행하는 것으로, 섹터 ID를 등록 하는 것으로, 도 30, 또는 도 31에 도시한 바와 같이, L2 캐시 태그(46)에 등록한 섹터 ID를 천이시킨다. 또, 도 30에 도시하는 예에서는, 라이트 백을 행할 때에 대상 데이터의 태그의 스테이트를 「M」에서 「I」로 나타낼 때의 섹터 ID의 천이에 관해서 기재했다. 또한, 도 31에 도시하는 예에서는, 라이트 백을 행할 때에 대상 데이터의 태그의 스테이트를 「M」에서「E」로 변경할 때의 섹터 ID의 천이에 관해서 기재했다.
도 30에 도시하는 예에서는, L2 캐시 액세스 컨트롤러(45)는, 리플레이스 또는 인밸리드할 때까지 섹터 ID 「11」을 다른 값으로 천이시키지 않는다. 한편, 도 31에 도시하는 예에서는, L2 캐시 액세스 컨트롤러(45)는, 스테이트를 「M」에서「E」로 변경하는 캐시 다운 등급(grade)을 행하는 경우가 있다. 이 때문에, L2 캐시 액세스 컨트롤러(45)는, 캐시 다운 등급을 행하는 경우에, 섹터 ID「11」을 섹터 ID「00」으로 천이시키는 경우가 있다.
즉, 도 30 및 도 31에 도시한 바와 같이 섹터 ID의 값을 천이시킴으로써, L2 캐시 액세스 컨트롤러(45)는, 메모리와 캐시의 일관성의 유지가 보장될 때까지, 섹터 ID「11」을 유지한다. 이 때문에, CPU(12g)는, 플래시를 적절히 행할 수 있다.
다음에, 도 32를 이용하여, L2 캐시 액세스 컨트롤러(45)가 L2 캐시 개요 섹터 플래그(48)를 설정하는 처리의 흐름에 관해서 설명한다. 도 32는, L2 캐시 개요 섹터 플래그를 설정하는 처리의 흐름을 설명하기 위한 흐름도이다. 예컨대, L2 캐시 액세스 컨트롤러(45)는, 저장하는 데이터의 섹터 ID가 「11」인지 여부를 판별한다(단계 S501).
그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」인 경우에(단계 S501 긍정), L2 캐시 개요 섹터 플래그(48)의 판독을 행한다(단계 S502). 상세하게는, L2 캐시 액세스 컨트롤러(45)는, 데이터 저장을 요구한 코어의 L2 캐시 개요 섹터 플래그(48) 중, 데이터를 저장하는 캐시 라인의 그룹 플래그를 판독한다.
그리고, L2 캐시 액세스 컨트롤러(45)는, 판독한 플래그가 「1」인지 여부를 판별한다(단계 S503). 그리고, L2 캐시 액세스 컨트롤러(45)는, 판독한 플래그가 「1」이 아닌 경우(단계 S503 부정), L2 캐시 개요 섹터 플래그(48)에 플래그「1」을 세트하고(단계 S504), 처리를 종료한다.
또, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」이 아닌 경우나(단계 S501 부정), 판독한 플래그가 「1」인 경우(단계 S503 부정), 그대로 처리를 종료한다.
다음에, 도 33을 이용하여, CPU(12g)가 플래시를 실행하는 처리의 흐름에 대해서 설명한다. 도 33은, 플래시를 실행하는 처리의 흐름을 설명하기 위한 플로우 차트이다. 또, 도 33에 도시하는 예에서는, L2 캐시 개요 섹터 플래그(48) 중, CPU(12g)가 참조하는 엔트리를 「i」라고 기재했다. 또한, 도 33에 도시하는 예에서는, 플래시 대상이 되는 캐시 라인의 인덱스를 「j」라고 기재했다. 또한, 도 33에 도시하는 예에서는, L2 캐시(47)의 각 캐시 라인은, 128개마다, 그룹 「0」부터 그룹「63」으로 나누어져 있는 것으로 한다.
예컨대, 도 33에 도시하는 예에서는, 플래시 제어부(52)는, 어느 코어(40∼40b)가 실행하는 애플리케이션이 플래시 요구를 발행한 것을 계기로서(단계 S601), 플래시 처리를 실행한다. 우선, 플래시 제어부(52)는, 「i=0」으로 한다(단계 S602).
다음에, 플래시 제어부(52)는, L2 캐시 개요 섹터 플래그(48) 중, 플래시 요구를 발행한 코어의 개요 섹터 플래그로부터, 「i」번째의 엔트리를 판독한다(단계 S603). 그리고, 플래시 제어부(52)는, 판독한 개요 섹터 플래그가 「1」인지 아닌지 판별하고(단계 S604), 판독한 개요 섹터 플래그가 「1」인 경우(단계 S604 긍정), 판독한 개요 섹터 플래그를 「0」으로 리셋한다(단계 S605).
다음에, 플래시 제어부(52)는,「j=0」으로 하고(단계 S606), L2 캐시의 인덱스(i, j)에 대한 플래시 요구를 발행한다(단계 S607). 즉, 플래시 제어부(52)는, 「i」그룹에 소속하는 「j」번째의 캐시 라인에 대한 플래시 요구를 발행한다. 그렇게 하면, L2 캐시 액세스 컨트롤러(45)는, 인덱스(i, j)의 전체 웨이의 섹터 ID를 검사하고(단계 S608), 섹터 ID가 「11」이고, 스테이트가「M」인 엔트리가 존재하는지 여부를 판별한다(단계 S609).
그리고, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」이고, 스테이트가「M」인 엔트리를 검출하면(단계 S609 긍정), 검출한 엔트리의 가장 빠른 번호의 웨이의 데이터를 L2 캐시(47)로부터 플래시한다(단계 S610). 그 후, L2 캐시 액세스 컨트롤러(45)는, 섹터 ID가 「11」이고, 스테이트가 「M」인 엔트리가 아직 존재하는지 판별한다(단계 S611).
다음에, 플래시 제어부(52)는, L2 캐시 액세스 컨트롤러(45)가 섹터 ID가「11」이고, 스테이트가 「M」인 엔트리가 이미 존재하지 않는다고 판별한 경우(단계 S611 부정),「j」의 값이 「127」인지 여부를 판별한다(단계 S612). 그리고, 플래시 제어부(52)는, 「j」의 값이 「127」이 아닌 경우(단계 S612 부정), j의 값을 1 인크리멘트하고(단계 S613), 단계 S607의 처리를 실행한다.
한편, 플래시 제어부(52)는, j의 값이 「127」인 경우(단계 S612 긍정), i의 값이 「63」인지 여부를 판별한다(단계 S614). 그리고, 플래시 제어부(52)는, i의 값이 「63」인 경우(단계 S614 긍정), 그대로 처리를 종료한다. 또한, 플래시 제어부(52)는, 「i」의 값이 「63」이 아닌 경우(단계 S614 부정),「i」의 값을 1 인크리멘트하고(단계 S615), 단계 S604의 처리를 실행한다. 또한, 플래시 제어부(52)는, 판독한 개요 섹터 플래그가 「1」이 아닌 경우(단계 S604), 단계 S614의 처리를 실행한다.
다음에, 도 34∼36을 이용하여, CPU(12g)가 실행하는 소프트웨어와 하드웨어와의 동작에 관해서 설명한다. 우선, 도 34를 이용하여, 캐시 미스가 발생했을 때의 소프트웨어와 하드웨어의 동작에 관해서 설명한다. 도 34는, 스토어 시에 캐시 미스가 발생했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다.
우선, 애플리케이션(35)은, Sync Start를 발행한다(단계 S701). 그렇게 하면, 애플리케이션이 나타내는 기간인 섹터 플래시 모드가 ON이 된다(단계 S702). 다음에, 애플리케이션(35)은, Store를 발행한다(단계 S703). 그렇게 하면, L1 캐시(43)에는 데이터가 들어가 있지 않기 때문에, 캐시 미스가 발생한다(단계 S704). 이 때문에, L1 캐시 액세스 컨트롤러(57)가 데이터의 보충 요구인 Read Ex를 발행한다(단계 S705). 이 때, L1 캐시 액세스 컨트롤러(57)는, 섹터 ID는 「11」로 지정한다.
그렇게 하면, 메모리(17∼24)로부터의 리드가 행하여져(단계 S706), 리드 데이터가 출력되며(단계 S707), L2 캐시(47)에 데이터가 캐시된다(단계 S708). 또, 리드 데이터는, L1 캐시(43)에 스테이트를 「M」, 섹터 ID를 「11」로 하여 저장된다(단계 S709). 계속해서, 애플리케이션(35)이 Sync end를 발행한다(단계 S710). 그렇게 하면, 섹터 플래시 모드가 OFF가 된다(단계 S711).
계속해서, 플래시 제어부(52)에 의해, 섹터 플래시가 실행되어(단계 S712), 각 캐시 라인에 플래시 요구가 발행된다(단계 S713). 그렇게 하면, 단계 S708에서 캐시한 데이터의 스테이트가 「E」이고 섹터 ID가 「11」이기 때문에, 플래시의 대상으로 하여 히트한다(단계 S714). 그 결과, L2 캐시 액세스 컨트롤러(45)로부터 스테이트 「M」으로 히트한 취지와 라이트 백 요구가 발행된다(단계 S715).
그렇게 하면, L1 캐시(43)의 데이터의 스테이트가 「I」로 변경된다(단계 S716). 계속해서, L2 캐시 액세스 컨트롤러(57)는, 라이트 백을 실행하여(단계 S717), L2 캐시의 스테이트를 「I」로 변경한다(단계 S718). 또한, 플래시 제어부(52)는, 섹터 플래시가 완료하면(단계 S719), 완료 응답을 애플리케이션(35)에 발행한다.
다음에, 도 35를 이용하여, 스토어 시에 캐시 히트했을 때의 소프트웨어와 하드웨어와의 동작의 흐름에 관해서 설명한다. 도 35는, 스토어 시에 캐시 히트했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다. 도 35에 도시하는 예에서는, L1 캐시(43)에는, 스테이트가 「E」이고 섹터 ID가 「00」인 데이터가 캐시되어 있다(단계 S801).
코어(40)가 실행하는 애플리케이션(35)은, Sync Start를 발행한다(단계 S802). 그렇게 하면, 섹터 플래시 모드가 ON이 된다(단계 S803). 계속해서, 애플리케이션(35)은, Store를 발행한다(단계 S804).
그렇게 하면, L1 캐시 액세스 컨트롤러(57)는, Store의 대상이, L1 캐시(43)로써 히트하기 때문에(단계 S805), L2 캐시(47)에 섹터 ID를 「11」로 변경하도록 통지한다(단계 S806). 여기서, L2 캐시(47)에는, L1 캐시(43)와 같이, 스테이트가 「E」이고 섹터 ID가 「00」인 데이터가 캐시되어 있다(단계 S807). 이 때문에, L2 캐시 액세스 컨트롤러(45)는, 스테이트가 「E」인 데이터에 대해서, 섹터 ID를 「11」로 변경하고(단계 S808), 변경 완료 통지를 발행한다(단계 S809).
계속해서, L1 캐시 액세스 컨트롤러(57)는, L1 캐시(43)에 저장된 데이터의 스테이트를 「M」으로 하고, 섹터 ID를 「11」로 한다(단계 S810). 계속해서, 애플리케이션(35)이 Sync end를 발행한다(단계 S811). 그렇게 하면, 섹터 플래시 모드가 OFF가 된다(단계 S812).
그 후, 플래시 제어부(52)는, 섹터 플래시를 실행하고(단계 S813), L2 캐시(47)의 각 캐시 라인에 대해서 플래시를 행한다(단계 S814). 그렇게 하면, 스테이트가 「E」이고 섹터 ID가 「11」인 캐시가 히트한다(단계 S815). 그 결과, L2 캐시 액세스 컨트롤러(45)는, 스테이트 「M」이 히트한 응답과 라이트 백 요구를 발행한다(단계 S816).
그렇게 하면, L1 캐시 액세스 컨트롤러(57)는, 캐시 히트한 데이터의 스테이트를 「M」에서 「I」로 변경한다(단계 S817). 계속해서, L2 캐시 액세스 컨트롤러(45)도, 캐시 히트한 데이터의 스테이트를 「M」에서 「I」로 변경하고(단계 S818), 그 후, 메모리(17∼24)에 라이트 백한다(단계 S819). 또한, 플래시 제어부(52)는, 섹터 플래시 실행 후에, 섹터 플래시가 완료한 취지의 응답을 애플리케이션(35)에 발행한다(단계 S820).
다음에, 도 36을 이용하여, 문맥 전환이 발생했을 때의 소프트웨어와 하드웨어와의 동작의 흐름에 관해서 설명한다. 도 36은, 문맥 전환이 발생했을 때의 소프트웨어와 하드웨어의 동작을 설명하기 위한 시퀀스도이다. 도 36에 도시하는 예에서는, 스테이트가 「E」이고 섹터 ID가 「00」인 데이터가 L1 캐시(43)와 L2 캐시(47)에 저장되어 있다(단계 S901, 단계 S902).
코어(40)가 실행하는 애플리케이션(35)은, Sync Start를 발행한다(단계 S903). 그렇게 하면, 섹터 플래시 모드가 ON이 된다(단계 S904). 계속해서, 애플리케이션(35)은, Store를 발행한다(단계 S905).
그렇게 하면, L1 캐시 액세스 컨트롤러(57)는, Store의 대상이, L1 캐시(43)로써 히트하기 때문에(단계 S906), L2 캐시(47)에 섹터 ID를 「11」로 변경하도록 통지한다. 이 때문에, L2 캐시 액세스 컨트롤러(45)는, 스테이트가 「E」인 데이터에 대해서, 섹터 ID를 「11」로 변경하고(단계 S907), 변경 완료 통지를 발행한다(단계 S908). 또한, L1 캐시 액세스 컨트롤러(57)는, 스테이트「M」인 데이터의 섹터 ID를 「11」로 변경한다(단계 S909).
여기서, 인터럽트 명령이 발행되는(단계 S910), 드라이버(33)는, 문맥 전환을 실행하고, 레지스터의 값을 메모리(17, 19, 21, 23)에 저장하는 문맥 스토어를 실행한다(단계 S911). 또한, 드라이버(33)는, 문맥 스토어가 발생한 경우에는 섹터 플래시 모드의 OFF를 대기하지 않고서, 섹터 플래시를 요구하기 때문에, 플래시 제어부(52)는, 섹터 플래시를 실행한다(단계 S912). 또한, 플래시 제어부(52)는, 섹터 ID가 「11」인 데이터를 포함하는 캐시 라인에 대해서 플래시를 행하고(단계 S913), 섹터 ID가 「11」인 데이터가 히트한다(단계 S914).
그 결과, L2 캐시 액세스 컨트롤러(45)는, 스테이트「M」이 히트한 응답과 라이트 백 요구를 발행한다(단계 S915). 그렇게 하면, L1 캐시 액세스 컨트롤러(57)는, 캐시 히트한 데이터의 스테이트를 「M」에서 「I」로 변경하고(단계 S916), 메모리(17∼24)에 라이트 백을 행한다(단계 S917). 또한, L2 캐시 액세스 컨트롤러(45)는, 캐시 히트한 데이터의 스테이트를 「M」에서 「I」로 변경한다(단계 S918).
또한, 플래시 제어부(52)는, 섹터 플래시 실행 후에, 섹터 플래시가 완료한 취지의 응답을 애플리케이션(35)에 발행한다(단계 S919). 그렇게 하면 오퍼레이팅 시스템(32)은, 애플리케이션 2를 호출하고(단계 S920), 인터럽트가 발생한다(단계 S921). 그렇게 하면, 드라이버(33)는, 문맥 로드를 실행한다(단계 S922).
계속해서, 애플리케이션(35)이 Sync end를 발행하면(단계 S923), 섹터 플래시 모드가 OFF가 된다(단계 S924). 그리고, 플래시 제어부(52)가, 섹터 플래시를 실행하고(단계 S925), 그 후, 플래시를 발행한다(단계 S926). 그 후, 플래시 제어부(52)는, 섹터 플래시 완료 통지를 발행한다(단계 S927).
[실시예 5의 효과]
전술한 바와 같이, CPU(12g)는, 애플리케이션(35)이 지정한 기간 내에 갱신한 데이터에 섹터 ID「11」을 붙여서 기억한다. 그리고, CPU(12g)는, 애플리케이션(35)이 지정한 기간이 종료하면, 섹터 ID가 「11」인 데이터만을 L2 캐시(43)로부터 메모리(17∼24)에 재기록하는 플래시를 실행한다.
이 때문에, CPU(12)는, 애플리케이션(35)의 프로그램의 수정을 억제할 수 있다. 또한, CPU(12)는, 데이터의 재기록의 처리 시간을 단축하며, 정보 처리 시스템(1)의 성능 열화를 방지할 수 있다.
또한, CPU(12g)는, 각 코어(40∼40b)마다, 애플리케이션(35)이 지정한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 L2 캐시 개요 섹터 플래그를 복수의 캐시 라인마다 갖는다. 그리고, CPU(12g)는, 플래시 요구가 발행되면, 플래시 요구를 발행한 코어마다, L2 캐시 개요 섹터 플래그가 「1」인 그룹의 캐시 라인을 검사한다.
그 후, CPU(12g)는, 검사한 캐시 라인 중, 섹터 ID가 「11」인 데이터를 메모리(17∼24)에 재기록한다. 이 때문에, CPU(12g)는, 캐시 메모리(12a)가 갖는 모든 캐시 라인을 검사하지 않더라도, 애플리케이션(35)이 지정한 기간 내에 갱신된 데이터를 메모리(17∼24)에 재기록할 수 있다. 또한, CPU(12g)는, 복수의 코어를 갖는 경우에도, 효율적으로 플래시를 실행할 수 있다.
또한, CPU(12g)는, 문맥 전환이 발생한 경우에, 애플리케이션이 지정한 기간이 종료하기 전에 플래시를 실행하고, 애플리케이션이 지정한 기간이 종료한 뒤에, 재차 플래시를 실행한다. 이 때문에, CPU(12g)는, 문맥 전환 기능을 가지고, 각 코어(40∼40b)가 실행하는 애플리케이션이 그 때마다 변하는 경우에도, 효율적으로 플래시를 실행할 수 있다.
[실시예 6]
지금까지 본 발명의 실시예에 관해서 설명했지만 실시예는, 전술한 실시예 이외에도 여러 가지 다른 형태로서 실시되어도 좋은 것이다. 그래서, 이하에서는 실시예 6으로서 본 발명에 포함되는 다른 실시예를 설명한다.
(1) 각 실시예의 조합에 관해서
전술한 실시예 5는, 실시예 1∼3의 기능을 갖는 CPU(12g)에 관해서 설명했다. 그러나, 실시예는 이것으로 한정되지 않으며, 각 실시예 1∼3에 기재한 기능을 임의의 조합으로 실행할 수 있다. 또한, CPU가 복수의 코어를 갖는 경우이더라도, 실시예 1에 나타내는 섹터 플래그, 또는 실시예 2에 나타내는 개요 섹터 플래그를 이용한 처리를 행하는 것으로 해도 좋다. 또한, CPU(12g)에 실시예 4의 기능을 추가하여, 플래시를 행하는 경우에는, 특정 웨이만을 플래시의 대상으로 하여도 좋다.
(2) 애플리케이션에 관해서
전술한 실시예 1∼5에서는, 애플리케이션이 발행하는 플래시 요구에 따라서, 플래시를 실행하는 예에 관해서 설명했다. 그러나, 실시예는, 이것으로 한정되지 않으며, 애플리케이션 등의 프로그램이 지정한 기간이 종료한 뒤에, 플래시 요구를 발행하는 것이라면, 미들 웨어 등의 임의의 프로그램이 플래시 요구를 발행하는 것으로 해도 좋다.
(3) 캐시의 계층에 관해서
전술한 실시예 5에서는, 각 코어(40∼40b)마다의 L1 캐시(43∼43b)와, 각 코어(40∼40b)에서 공용하는 L2 캐시(47)를 갖는 예에 관해서 설명했다. 그러나, 실시예는 이것으로 한정되지 않으며, 3차 캐시 등을 갖는 CPU에 대해서도 적용할 수 있다.
1∼1d : 정보 처리 시스템 2, 2a : 클라이언트 단말
3, 5 : LAN 스위치 4 : 관리 단말
6 : 글로벌 크로스바 7 : 서비스 프로세서
10∼10m : 노드 11 : 서비스 프로세서
12∼12g, 13∼13f, 14∼14f, 15∼15f : CPU
12a, 13a, 14a, 15a : 캐시 메모리
12c, 12e, 13c, 13e, 14c, 14e, 15c, 15e : 개요 섹터 플래그
16 : 로컬 XB 17∼24, 72 : 메모리
25 : PCIe 스위치 26, 27 : LAN 어댑터
28 : SAS 29 : HDD
30∼30c : 하드웨어 31∼31c : 하이퍼 바이저
32∼32c : 오퍼레이팅 시스템 33∼33c : 드라이버
34∼34c : 미들 웨어 35, 35a : 애플리케이션
40∼40b : 코어 41∼41b : 섹터 ID 생성부
42∼42b : L1 캐시 태그 43∼43b : L1 캐시
44∼44b : TLB 45 : L2 캐시 액세스 컨트롤러
46 : L2 캐시 태그 47 : L2 캐시
48 : L2 캐시 개요 섹터 플래그 49 : 어드레스 맵
50 : 비캐시 요청 스테이트 머신 51 : 설정 레지스터군
52 : 플래시 제어부 53 : PCI 제어부
54 : 디렉토리 제어부 55 : 스누프 제어부
56 : 요청 제어부 57 : L1 캐시 액세스 컨트롤러
58 : 섹터 최대값 레지스터 59 : LRU
70, 71 : 연산 장치

Claims (8)

  1. 주기억 장치가 기억하는 데이터를 일시적으로 유지하는 캐시 메모리와,
    상기 캐시 메모리가 유지하는 데이터를 이용하여, 애플리케이션을 실행하는 연산부와,
    상기 캐시 메모리가 유지하는 데이터 중, 상기 연산부가 실행하는 애플리케이션이 지정한 기간 내에 상기 연산부가 갱신한 데이터를 나타내는 갱신 정보를 기억하는 기억부와,
    상기 애플리케이션이 지정한 기간이 종료된 경우는, 상기 캐시 메모리가 유지하는 데이터 중, 상기 기억부가 기억하는 갱신 정보가 나타내는 데이터를 상기 캐시 메모리로부터 상기 주기억 장치에 재기록하는 재기록부를 갖는 것을 특징으로 하는 연산 장치.
  2. 제1항에 있어서, 상기 캐시 메모리는, 상기 데이터를 저장하는 복수의 캐시 라인을 가지며,
    상기 기억부는, 상기 애플리케이션이 지정한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 섹터 플래그를 상기 갱신 정보로서 상기 캐시 라인마다 기억하고,
    상기 재기록부는, 상기 캐시 메모리가 갖는 복수의 캐시 라인 중, 상기 섹터 플래그가 그 갱신된 취지를 나타내는 캐시 라인의 데이터를 상기 주기억 장치에 재기록하는 것을 특징으로 하는 연산 장치.
  3. 제2항에 있어서, 상기 기억부는, 상기 애플리케이션이 지정한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 개요 섹터 플래그를 복수의 캐시 라인마다 기억하고,
    상기 재기록부는, 상기 개요 섹터 플래그가 갱신된 취지를 나타내는 캐시 라인 중, 상기 섹터 플래그가 상기 갱신된 취지를 나타내는 캐시 라인의 데이터를 상기 주기억 장치에 재기록하는 것을 특징으로 하는 연산 장치.
  4. 제2항에 있어서, 상기 연산 장치는, 상기 연산부를 복수개 가지며,
    상기 기억부는, 각 연산부가 실행하는 애플리케이션이 지정한 기간 내에 데이터가 갱신되었는지 여부를 나타내는 연산 플래그를 복수의 캐시 라인마다 기억하고,
    상기 재기록부는, 어느 하나의 연산부가 실행하는 애플리케이션이 지시한 기간이 종료된 경우에, 상기 연산부가 실행하는 애플리케이션이 지시한 기간 내의 데이터가 갱신된 취지를 상기 연산 플래그가 나타내는 복수의 캐시 라인 중, 상기 섹터 플래그가 상기 갱신된 취지를 나타내는 캐시 라인의 데이터를 상기 주기억 장치에 재기록하는 것을 특징으로 하는 연산 장치.
  5. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 캐시 메모리는, 복수의 웨이를 갖는 복수의 캐시 라인을 가지며,
    상기 재기록부는, 상기 섹터 플래그가 상기 갱신된 취지를 나타내는 캐시 라인 중, 정해진 웨이에 저장된 데이터만을 상기 주기억 장치에 재기록하는 것을 특징으로 하는 연산 장치.
  6. 제2항 내지 제4항 중 어느 한 항에 있어서, 상기 연산부는, 실행하는 애플리케이션을 변경하는 문맥 전환(context switch)을 실행하는 기능을 가지며,
    상기 재기록부는, 상기 애플리케이션이 지정한 기간이 종료된 경우, 또는 상기 연산부가 상기 문맥 전환을 실행한 경우, 상기 섹터 플래그가 상기 갱신된 취지를 나타내는 캐시 라인의 데이터를 상기 주기억 장치에 재기록하는 것을 특징으로 하는 연산 장치.
  7. 데이터를 기억하는 주기억 장치와,
    상기 주기억 장치를 공유하는 복수의 연산 장치를 갖는 정보 처리 장치에 있어서,
    상기 연산 장치는,
    상기 주기억 장치가 기억하는 데이터를 일시적으로 유지하는 캐시 메모리와,
    상기 캐시 메모리가 유지하는 데이터를 이용하여, 애플리케이션을 실행하는 연산부와,
    상기 캐시 메모리가 유지하는 데이터 중, 상기 연산부가 실행하는 애플리케이션이 지정한 기간 내에 상기 연산부가 갱신한 데이터를 나타내는 섹터 정보를 기억하는 기억부와,
    상기 애플리케이션이 지정한 기간이 종료된 경우는, 상기 캐시 메모리가 유지하는 데이터 중, 상기 기억부가 기억하는 섹터 정보가 나타내는 데이터를 상기 캐시 메모리로부터 상기 주기억 장치에 재기록하는 재기록부를 갖는 것을 특징으로 하는 정보 처리 장치.
  8. 주기억 장치에 기억된 데이터를 캐시하는 기능을 갖는 연산 장치가 실행하는 연산 방법에 있어서,
    캐시한 데이터 중, 애플리케이션이 지정한 기간 내에 갱신한 데이터를 나타내는 섹터 정보를 기억하고,
    상기 애플리케이션이 지정한 기간이 종료된 경우는, 상기 캐시한 데이터 중, 상기 섹터 정보가 나타내는 데이터를 상기 주기억 장치에 재기록하는 처리를 실행하는 것을 특징으로 하는 연산 방법.
KR1020120137109A 2012-02-29 2012-11-29 연산 장치, 정보 처리 장치 및 연산 방법 KR101414384B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012044881A JP5565425B2 (ja) 2012-02-29 2012-02-29 演算装置、情報処理装置および演算方法
JPJP-P-2012-044881 2012-02-29

Publications (2)

Publication Number Publication Date
KR20130099805A true KR20130099805A (ko) 2013-09-06
KR101414384B1 KR101414384B1 (ko) 2014-07-01

Family

ID=47522280

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120137109A KR101414384B1 (ko) 2012-02-29 2012-11-29 연산 장치, 정보 처리 장치 및 연산 방법

Country Status (5)

Country Link
US (1) US20130227219A1 (ko)
EP (1) EP2634702B1 (ko)
JP (1) JP5565425B2 (ko)
KR (1) KR101414384B1 (ko)
CN (1) CN103294608A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018221819A1 (ko) * 2017-06-02 2018-12-06 주식회사 애포샤 플래시 캐시에서 트랜잭션 지원 방법 및 장치

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2946296A4 (en) * 2013-01-17 2016-11-16 Xockets Ip Llc DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY
US10684973B2 (en) 2013-08-30 2020-06-16 Intel Corporation NUMA node peripheral switch
KR101996266B1 (ko) 2014-09-18 2019-10-01 삼성전자주식회사 호스트 및 이를 포함하는 컴퓨터 시스템
CN104794069B (zh) * 2015-04-01 2017-12-12 北京创毅视讯科技有限公司 一种cpu中缓存的用户态分配方法和系统
US10635505B2 (en) * 2015-06-30 2020-04-28 Coursera, Inc. Automated batch application programming interfaces
CN107870871B (zh) * 2016-09-23 2021-08-20 华为技术有限公司 分配缓存的方法和装置
DE102017216955A1 (de) * 2017-09-25 2019-03-28 Robert Bosch Gmbh Sensorsystem zum Ausgeben von Sensordaten
US11275692B2 (en) 2019-05-24 2022-03-15 Texas Instruments Incorporated Methods and apparatus for multi-banked victim cache with dual datapath
US11189327B2 (en) * 2019-08-21 2021-11-30 Micron Technology, Inc. Methods for providing device status in response to read commands directed to write-only mode register bits and memory devices and systems employing the same
CN114556314A (zh) * 2019-10-31 2022-05-27 华为技术有限公司 处理非缓存写数据请求的方法、缓存器和节点

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2531538B2 (ja) * 1990-03-14 1996-09-04 富士通株式会社 キャッシュメモリデ―タ書き戻し方法及びディスクキャッシュ制御装置
JPH04175946A (ja) 1990-11-09 1992-06-23 Hitachi Ltd マルチプロセッサ・データ処理システムおよびそれに用いられるキャッシュ装置
US5353425A (en) 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature
JPH05346889A (ja) * 1992-06-15 1993-12-27 Hitachi Ltd キャッシュ制御方法およびキャッシュ制御装置
JPH0844626A (ja) * 1994-07-28 1996-02-16 Nec Niigata Ltd キャッシュシステムのフラッシュサイクル制御方法
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
JPH11259362A (ja) 1998-03-13 1999-09-24 Nec Corp キャッシュメモリ制御方法及び装置
JP2000322202A (ja) * 1999-05-12 2000-11-24 Toshiba Corp 階層型情報記憶システム及び同システムに於ける記憶制御方法
US6810489B1 (en) * 2000-09-06 2004-10-26 Hewlett-Packard Development Company, L.P. Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error
US6983388B2 (en) * 2000-10-25 2006-01-03 Agere Systems Inc. Method and apparatus for reducing leakage power in a cache memory by using a timer control signal that removes power to associated cache lines
GB0207296D0 (en) * 2002-03-28 2002-05-08 Koninkl Philips Electronics Nv Method and appartus for context switching in computer operating systems
US6934810B1 (en) * 2002-09-26 2005-08-23 Unisys Corporation Delayed leaky write system and method for a cache memory
JP2007011580A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 情報処理装置
US7809892B1 (en) * 2006-04-03 2010-10-05 American Megatrends Inc. Asynchronous data replication
JP5101128B2 (ja) * 2007-02-21 2012-12-19 株式会社東芝 メモリ管理システム
CN101689141B (zh) * 2007-06-20 2012-10-17 富士通株式会社 高速缓存装置、运算处理装置及其控制方法
JP5217432B2 (ja) 2007-12-28 2013-06-19 富士通株式会社 セクタ機能付きキャッシュメモリ
JP2009211270A (ja) * 2008-03-03 2009-09-17 Fujitsu Microelectronics Ltd コンピュータシステム
US8380935B2 (en) * 2009-06-12 2013-02-19 Cray Inc. Atomic memory operation cache protocol with opportunistic combining
JP5413001B2 (ja) 2009-07-09 2014-02-12 富士通株式会社 キャッシュメモリ
US20110082983A1 (en) * 2009-10-06 2011-04-07 Alcatel-Lucent Canada, Inc. Cpu instruction and data cache corruption prevention system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018221819A1 (ko) * 2017-06-02 2018-12-06 주식회사 애포샤 플래시 캐시에서 트랜잭션 지원 방법 및 장치
KR20180132314A (ko) * 2017-06-02 2018-12-12 주식회사 애포샤 플래시 캐시에서 트랜잭션 지원 방법 및 장치

Also Published As

Publication number Publication date
CN103294608A (zh) 2013-09-11
EP2634702B1 (en) 2014-10-29
US20130227219A1 (en) 2013-08-29
JP5565425B2 (ja) 2014-08-06
JP2013182356A (ja) 2013-09-12
EP2634702A1 (en) 2013-09-04
KR101414384B1 (ko) 2014-07-01

Similar Documents

Publication Publication Date Title
KR101414384B1 (ko) 연산 장치, 정보 처리 장치 및 연산 방법
KR101403233B1 (ko) 정보 처리 장치 및 부정 액세스 방지 방법
EP2608044B1 (en) Information processing apparatus and memory access method
US6920521B2 (en) Method and system of managing virtualized physical memory in a data processing system
EP3433742B1 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
KR101558427B1 (ko) 가상화된 입/출력을 위한 프로세서 로컬 코히어런시를 갖는 컴퓨터 시스템
US6907494B2 (en) Method and system of managing virtualized physical memory in a memory controller and processor system
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
TW201339836A (zh) 資訊處理設備、算術裝置及資訊傳送方法
JP2011198091A (ja) 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
JP2003067357A (ja) 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
KR19980079433A (ko) 비포함 캐쉬 메모리 계층 구조에서 사용하기 위한 캐쉬 일관성 메카니즘 구현 방법 및 시스템
CN103052945A (zh) 管理计算机存储器的方法、程序产品及数据存储设备
KR20050011152A (ko) 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법
JP4507563B2 (ja) マルチプロセッサシステム
EP1611513B1 (en) Multi-node system in which global address generated by processing subsystem includes global to local translation information
CN113906396A (zh) 用于存取借用存储器的存储器管理单元(mmu)
US8447934B2 (en) Reducing cache probe traffic resulting from false data sharing
US10565111B2 (en) Processor
US9842050B2 (en) Add-on memory coherence directory
JP6634864B2 (ja) 演算処理装置、情報処理装置、及び情報処理装置の制御方法
US11635968B2 (en) Using idle caches as a backing store for boot code
EP4191420A1 (en) Address translation cache and system including the same
JP2009151457A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法
JP2017068806A (ja) 情報処理装置および情報処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee