KR100691695B1 - 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법 - Google Patents

메모리 시스템 제어 장치 및 메모리 시스템 제어 방법 Download PDF

Info

Publication number
KR100691695B1
KR100691695B1 KR1020040105539A KR20040105539A KR100691695B1 KR 100691695 B1 KR100691695 B1 KR 100691695B1 KR 1020040105539 A KR1020040105539 A KR 1020040105539A KR 20040105539 A KR20040105539 A KR 20040105539A KR 100691695 B1 KR100691695 B1 KR 100691695B1
Authority
KR
South Korea
Prior art keywords
data
state
cache
memory
processor
Prior art date
Application number
KR1020040105539A
Other languages
English (en)
Other versions
KR20060013330A (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 KR20060013330A publication Critical patent/KR20060013330A/ko
Application granted granted Critical
Publication of KR100691695B1 publication Critical patent/KR100691695B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 주기억과의 트랜잭션을 감소시키는 것을 과제로 한다.
메모리 시스템 제어 장치(200)가 프로세서(100a∼100d)로부터 기입을 전제로 한 리드 요구를 받아, 그 데이터를 요구원의 프로세서에 송출한 경우에, 스누프 캐시 갱신부(233)는 스누프(snoop) 캐시에 그 데이터가 「강한 갱신 상태」임을 기억시킨다. 데이터 취득 순서 선택부(232)는, 「강한 갱신 상태」로 스누프 캐시에 존재하는 데이터가 프로세서(100a∼100d)로부터 요구되었을 경우에는, 주기억(300)에 대하여 투기 리드를 행하지 않고, 프로세서의 캐시 메모리로부터 데이터를 취득한다.
메모리, 캐시, 주기억, 갱신, 프로세서

Description

메모리 시스템 제어 장치 및 메모리 시스템 제어 방법{METHOD AND APPARATUS FOR CONTROLLING MEMORY SYSTEM}
도 1은 본 실시예에 따른 메모리 시스템 제어 방식에 대해서 설명하기 위한 설명도.
도 2는 본 실시예에 따른 메모리 시스템 제어 장치의 구성을 나타내는 기능 블록도.
도 3은 본 실시예에 따른 메모리 시스템 제어 방식에서의 「약한 갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도.
도 4는 본 실시예에 따른 메모리 시스템 제어 방식에서의 「강한 갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도.
도 5는 본 실시예에 따른 메모리 시스템 제어 방식에서의 「약한 갱신 상태」의 경우의 제어 순서를 나타내는 타임차트.
도 6은 본 실시예에 따른 메모리 시스템 제어 방식에서의 「강한 갱신 상태」의 경우의 제어 순서를 나타내는 타임차트.
도 7의 (a)는 MESI 프로토콜(protocol)에 의한 메모리 시스템 제어 방식에 대해서 설명하기 위한 설명도.
도 7의 (b)는 MSI 프로토콜에 의한 메모리 시스템 제어 방식에 대해서 설명 하기 위한 설명도.
도 8은 MSI 프로토콜에 의한 메모리 시스템 제어 방식에서의 「갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도.
*도면의 주요 부분에 대한 부호의 설명*
100a, 100b, 100c, 100d : 프로세서(processor)
110a, 110b, 110c, 110d : 캐시 메모리(cache memory)
200 : 메모리 시스템 제어 장치
210a, 210b, 210c, 210d : 프로세서 인터페이스부(processor interface unit)
220 : 리드(read) 데이터 선택 송출부
230 : 캐시 제어부
231a, 231b, 231c, 231d : 스누프 캐시(snoop cache)
232 : 데이터 취득 순서 선택부
233 : 스누프 캐시 갱신부
240 : 주(主)기억 인터페이스부
300 : 주기억
본 발명은 프로세서마다 캐시 메모리를 갖는 멀티프로세서(multiprocessor) 시스템에서 캐시 메모리와 주기억의 코히어런시(coherency)(일관성)를 제어하는 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법에 관한 것이며, 특히 주기억과의 트랜잭션(transaction)을 감소시키고, 시스템의 성능 저하를 회피할 수 있는 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법에 관한 것이다.
멀티프로세서 시스템에는 캐시를 프로세서마다 독립적으로 구비한 것이 있다. 예를 들면, 프로세서 자체가 캐시를 내장하고 있는 경우가 이것에 해당된다. 종래부터, 이러한 멀티프로세서 시스템에서는, 코히어런시의 확보를 효율적으로 행하여 시스템의 성능을 향상시키기 위해, MESI 프로토콜, 투기(投機) 리드, 스누프 캐시와 같은 기술이나 수법이 이용되고 있다.
MESI 프로토콜은 캐시 코히어런시 프로토콜의 일종(一種)이며, 캐시의 각 라인의 상태를 「갱신 상태(Modified)」, 「배타 상태(Exclusive)」, 「공유 상태(Shared)」 및 「무효 상태(Invalid)」로 나누어 제어한다. 이 MESI 프로토콜을 이용함으로써, 최신 데이터가 존재하는 장소가 명확해져, 각 캐시와 주기억 사이의 코히어런시를 효율적으로 확보할 수 있다(예를 들어, 일본국 특개2002-24198호 공보).
투기 리드는 프로세서로의 문의와 동시에 주기억으로의 리드 요구를 행하는 수법이다. 일정 프로세서로부터 데이터의 요구가 있었을 경우, 데이터의 일관성을 확보하기 위해서는, 전체 프로세서에 대하여 상기 데이터를 보유하고 있는지의 여부를 문의할 필요가 있지만, 프로세서로부터의 응답을 대기하고 나서 주기억으로의 리드 요구를 행한 것에서는 레이턴시(latency)(지연)가 커진다.
그래서, 프로세서로의 문의와 동시에 주기억으로의 리드 요구를 투기적으로 행하여, 프로세서로부터 상기 데이터를 보유하고 있음을 나타내는 응답이 없었을 경우에는, 투기적으로 주기억으로부터 판독한 데이터를 요구원(要求元)의 프로세서에 송신한다. 이렇게 투기 리드를 행함으로써, 데이터 취득에 따른 레이턴시를 작게 할 수 있다.
다만, 모든 리드 요구에 대하여 투기 리드를 행하면, 주기억과의 트랜잭션이 증대하고, 결과적으로 시스템의 성능이 악화될 우려가 있다. 그래서, 메모리 액세스의 제어를 행하는 메모리 시스템 제어 장치 내에, 각 캐시 메모리가 보유하고 있는 라인의 정보를 저장하는 스누프 캐시를 설치하는 수법이 채용되고 있다.
메모리 시스템 제어 장치는 스누프 캐시의 상태를 참조함으로써, 프로세서로의 문의를 행하지 않고 각 프로세서의 캐시가 보유하고 있는 각 라인의 상황을 알 수 있으며, 불필요한 투기 리드의 발생을 회피할 수 있다(예를 들어, 일본국 특개평8-185359호 공보).
그러나, 프로세서의 버스 사양(specification)에 따라서는, 프로세서의 캐시 상태 천이(遷移)를 메모리 시스템 제어 장치 측에서 정확히 파악할 수 없는 경우가 있다. 이러한 경우에는, 스누프 캐시를 참조하여도 프로세서의 캐시 상태를 알 수 없기 때문에, 프로세서로의 문의가 필요하게 된다.
여기서, 프로세서로부터의 응답을 대기하는 것에 의한 레이턴시 증대를 회피하기 위해는 주기억의 투기 리드가 필요하게 되지만, 상술한 바와 같이, 투기 리드 가 다발(多發)하면 주기억과의 트랜잭션이 증대하여, 시스템의 성능이 악화될 우려가 있다.
본 발명은 상술한 종래 기술에 의한 문제점을 해소하기 위해 안출된 것으로서, 주기억과의 트랜잭션을 감소시킬 수 있는 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법을 제공하는 것을 목적으로 한다.
상술한 과제를 해결하여 목적을 달성하기 위해, 본 발명은 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시를 제어하는 메모리 시스템 제어 장치로서, 상기 프로세서가 갖는 캐시 메모리의 각 엔트리(entry)에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 수단과, 상기 프로세서의 하나로부터 데이터의 리드 요구를 받았을 경우에, 상기 캐시 상태 보유 수단에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 수단과, 상기 데이터 취득 순서 선택 수단이 선택한 취득 순서에 의해 취득된 데이터로부터 최신 상태의 데이터를 선택하고, 요구원의 프로세서에 송출(送出)하는 리드 데이터 선택 송출 수단과, 상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 수단의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별(種別)에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 수단을 구비한 것을 특 징으로 한다.
또한, 본 발명은 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시를 제어하는 메모리 시스템 제어 방법으로서, 상기 프로세서가 갖는 캐시 메모리의 각 엔트리에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 공정과, 상기 프로세서의 하나로부터 데이터의 리드 요구를 받았을 경우에, 상기 캐시 상태 보유 공정에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 공정과, 상기 데이터 취득 순서 선택 공정이 선택한 취득 순서에 의해 취득된 데이터로부터 최신 상태의 데이터를 선택하고, 요구원의 프로세서에 송출하는 리드 데이터 선택 송출 공정과, 상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 공정의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 공정을 포함한 것을 특징으로 한다.
본 발명에 의하면, 「갱신 상태」를 「강한 갱신 상태」와 「약한 갱신 상태」로 구별하여 관리하도록 구성했기 때문에, 「갱신 상태」에 있는 캐시의 제어를 정밀하게, 또한 효율적으로 행할 수 있다.
또한, 본 발명은, 상기 발명에 있어서, 상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 기입을 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「강한 갱신 상태」로서 등록하는 것을 특징으로 한다.
본 발명에 의하면, 기입을 전제로 한 데이터로서 리드 요구를 받은 경우는, 그 데이터를 「강한 갱신 상태」로서 등록하도록 구성했기 때문에, 이 경우와 같이 캐시 메모리에 최신 데이터가 확실하게 존재하고 있는 경우를 다른 「갱신 상태」로 구별할 수 있다.
또한, 본 발명은, 상기 발명에 있어서, 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「강한 갱신 상태」인 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정(選定)하는 것을 특징으로 한다.
본 발명에 의하면, 「강한 갱신 상태」로서 캐시 상태 보유 수단에 보유되어 있는 데이터에 대해서는 캐시 메모리에만 데이터 요구를 행하고, 주기억으로의 투기 리드를 행하지 않도록 구성했기 때문에, 주기억과의 트랜잭션을 감소시킬 수 있다.
이하, 첨부 도면을 참조하여, 본 발명에 따른 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법의 적합한 실시예를 상세하게 설명한다. 또한, 여기서는 프로세서 자체가 캐시를 내장하고 있는 경우를 예로 들어 설명하지만, 본 발명은 캐시가 프로세서마다 존재하고 있는 것을 전제로 하고 있으며, 반드시 프로세서 자체가 캐시를 내장하고 있을 필요는 없다.
우선, 종래의 메모리 시스템 제어 방식에 대해서 설명한다. 도 7의 (a)는 MESI 프로토콜에 의한 메모리 시스템 제어 방식에 대해서 설명하기 위한 설명도이다. 도 7의 (a)는 프로세서가 복수 존재하는 멀티프로세서 시스템에서의 캐시 메모리 측의 상태(status) 관리와 스누프 캐시 측의 상태 관리의 대응을 나타내고 있다.
캐시 메모리는 프로세서와 주기억의 데이터 교환(exchange)을 고속화하기 위해 양자 사이에 설치되는 기억 장치이며, 주기억의 라인 일부를 보유한다. 이 예에서는 프로세서마다 별개의 캐시 메모리가 존재한다.
스누프 캐시는 프로세서와 주기억의 데이터 교환을 제어하는 메모리 시스템 제어 장치 내에 설치되는 기억 장치이며, 캐시 메모리와 쌍으로 존재하여, 대응하는 캐시 메모리가 보유하고 있는 각 라인의 태그(tag) 정보를 보유한다.
도 7의 (a)에 나타낸 바와 같이, 캐시 메모리에 저장되는 각 라인은 "M(갱신 상태)", "E(배타 상태)", "S(공유 상태)", "I(무효 상태)"의 4개 상태로 분류되어 관리된다. 캐시 메모리와 쌍으로 존재하는 스누프 캐시의 각 라인도 동일한 상태로 분류되어 관리된다.
이와 같이, 캐시 메모리와 스누프 캐시의 상태가 항상 일치하고 있을 경우에는, 메모리 시스템 제어 장치는, 프로세서에 캐시 메모리의 상태를 문의하지 않고 자체가 갖는 스누프 캐시를 참조함으로써 데이터의 취득처를 결정할 수 있다.
구체적으로는, 메모리 시스템 제어 장치는, 일정 프로세서로부터 데이터의 리드 요구를 받으면, 각 스누프 캐시를 참조하여, 상기 데이터를 포함하는 라인이 보유되어 있는지의 여부를 검색한다. 그리고, 상기 데이터를 포함하는 라인이 어느 하나의 스누프 캐시에 보유되어 있지 않으면, 상기 데이터를 포함하는 라인을 주기억으로부터 취득하는 것으로 하고, 보유되어 있으면, 그 라인의 상태를 확인하여 데이터의 취득처를 결정한다.
라인의 상태가 "M"이었을 경우는, 상기 라인이 프로세서에 의해 변경된 상태로 캐시 메모리에 보유되어 있음을 나타내고 있기 때문에, 그 라인을 보유하고 있는 프로세서의 캐시 메모리로부터 데이터를 취득할 필요가 있다.
라인의 상태가 "E" 또는 "S"였을 경우는, 상기 라인이 프로세서에 의해 변경되지 않고 1개 또는 복수의 프로세서에 보유되어 있음을 나타내고 있기 때문에, 그 라인을 보유하고 있는 프로세서의 캐시 메모리 또는 주기억의 어느 것으로부터 데이터를 취득하여도 문제는 없다.
라인의 상태가 "I"였을 경우는, 상기 라인의 내용이 무효로 되어 있음을 나타내고 있기 때문에, 그 라인을 보유하고 있는 다른 프로세서의 캐시 메모리 또는 주기억으로부터 데이터를 취득할 필요가 있다.
이와 같이, 프로세서의 캐시 메모리와 스누프 캐시의 상태가 항상 일치하고 있을 경우에는, 시스템에 부하를 작용시키지 않고 효율적으로 데이터의 취득을 행할 수 있다.
도 7의 (b)는 MSI 프로토콜에 의한 메모리 시스템 제어 방식에 대해서 설명하기 위한 설명도이다. 도 7의 (b)에 나타낸 예에서는, 프로세서의 버스 사양에 의해, 프로세서의 캐시 메모리에 보유된 라인의 상태가 "E"로부터 "M" 또는 "I"로 천이한 것을 메모리 시스템 제어 장치 측에서 파악할 수 없다.
이러한 경우, 종래는 스누프 캐시 측에서는 MESI 프로토콜 대신에 MSI 프로토콜이 사용되어, "M"과 "E"의 상태를 구별하지 않고 제어를 행하였다.
이 예에서는, 캐시 메모리 측에서 상태가 "E"로 된 라인의 상태를 스누프 캐시 측에서는 "M"으로서 관리하고 있다. 캐시 메모리의 라인 상태가 "M"이나 "I"로 천이하여도, 메모리 시스템 제어 장치 측에서는 그것을 감지할 수 없기 때문에, 스누프 캐시 측의 "M" 상태는 그대로 유지된다. 이 때문에, 스누프 캐시 측의 "M" 상태는 캐시 메모리 측의 "E"뿐만 아니라 "M"이나 "I"와도 대응하고 있다.
즉, 이 예에서의 스누프 캐시 측의 "M" 상태는 캐시 메모리에 최신 데이터가 확실하게 존재함을 나타내고 있는 것이 아니라, 프로세서의 캐시 메모리에 최신 데이터가 존재할 가능성도 있지만, 유효 데이터가 존재하지 않을 가능성도 있음을 나타내고 있다.
따라서, 메모리 시스템 제어 장치는, 프로세서로부터 요구된 데이터를 포함하는 라인이 스누프 캐시에 존재하고, 그 상태가 "M"이었을 경우는, 그 스누프 캐시에 대응하는 프로세서에 상기 라인에 대한 문의를 행하여, 그 응답에 의해 유효 데이터가 존재하지 않음을 알았을 경우에는 주기억에 대하여 다시 데이터를 요구하는 것이 필요하게 된다.
통상, 프로세서의 응답을 대기하고 나서 주기억에 데이터를 요구한 것에서는 레이턴시가 커지기 때문에, 프로세서로의 문의와 동시에 주기억에 대하여 투기 리드를 행한다. 이 투기 리드는 캐시에 오류가 발생했을 때의 레이턴시를 작게 할 수 있는 반면, 주기억과의 트랜잭션을 증대시킨다는 문제도 포함하고 있다.
여기서, 투기 리드가 발생하는 경우에 대해서 예를 들어 설명한다. 도 8은 MSI 프로토콜에 의한 메모리 시스템 제어 방식에서의 「갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도이다.
도 8에 나타낸 바와 같이, 메모리 시스템 제어 장치(200)는, 어느쪽 캐시에도 보유되어 있지 않은 데이터의 리드 요구를 프로세서(100a)로부터 접수하면(스텝 S301), 주기억(300)에 대하여 상기 데이터를 포함하는 라인의 판독을 요구한다(스텝 S302).
주기억(300)으로부터 판독된 라인은 리드 데이터 선택 송출부(220)에 보내지고(스텝 S303), 이곳으로부터 요구원의 프로세서(100a)에 송신되어 캐시 메모리(110a)에 저장된다. 이 시점에서, 캐시 메모리(110a)에서의 상기 라인의 상태는 "E"로 되고, 스누프 캐시(231a)에서의 상기 라인의 상태는 "M"으로 된다.
그 후, 프로세서(100a)가 상기 라인을 갱신하여 캐시 메모리(110a)에서의 상태가 "M"으로 천이하거나, 또는 프로세서(100a)가 상기 라인을 파기(破棄)하여 캐시 메모리(110a)에서의 상태가 "I"로 천이하여도, 그 천이는 메모리 시스템 제어 장치(200)로부터는 파악할 수 없다(스텝 S305).
여기서, 프로세서(100b)로부터 동일한 라인에 포함되는 데이터의 배타 리드 요구가 있으면(스텝 S306), 메모리 시스템 제어 장치(200)는, 각 스누프 캐시를 검색하여, 프로세서(100a)에 대응하는 스누프 캐시(231a)에 상기 라인이 "M"의 상태로 보유되어 있음을 확인한다.
"M"의 상태는, 캐시 메모리(110a)에 최신 데이터가 존재하는 경우와 캐시 메모리(110a)의 라인이 이미 무효로 되어 있는 경우의 어느쪽도 있을 수 있음을 나타내고 있기 때문에, 메모리 시스템 제어 장치(200)는, 프로세서(100a)에 대하여 상기 라인에 관한 문의를 행한다(스텝 S307).
또한, 프로세서(100a)로부터의 응답을 대기하는 것에 의한 레이턴시 증대를 회피하기 위해, 메모리 시스템 제어 장치(200)는, 주기억(300)에 대하여 상기 데이터를 포함하는 라인의 판독을 동시에 요구한다(스텝 S308).
그리고, 프로세서(100a)로부터의 응답이 도달하고(스텝 S309), 또한 주기억(300)에 요구하고 있던 라인이 송신되어 오면(스텝 S310), 리드 데이터 선택 송출부(220)는, 프로세서(100a)로부터의 응답 내용으로부터 최신 데이터가 어디에 있는지를 판단하여, 적절한 데이터를 선택하여 프로세서(100b)에 송신한다(스텝 S311).
이 시점에서, 캐시 메모리(110a)와 스누프 캐시(231a)에서의 상기 라인의 상태는 "I"로 되고, 캐시 메모리(110b)에서의 상기 라인의 상태는 "E"로 되며, 스누프 캐시(231b)에서의 상기 라인의 상태는 "M"(도시되지 않음)으로 된다.
이와 같이, 스누프 캐시 측에서 MESI 프로토콜 대신에 MSI 프로토콜을 사용한 종래의 방식에서는, 주기억에 대한 투기 리드가 필요하게 되어, 주기억과의 트랜잭션이 증대한다.
다음으로, 본 실시예에 따른 메모리 시스템 제어 방식에 대해서 설명한다. 도 1은 본 실시예에 따른 메모리 시스템 제어 방식에 대해서 설명하기 위한 설명도이다. 본 실시예에서도, 프로세서의 버스 사양에 의해, 프로세서의 캐시 메모리에 보유된 라인의 상태가 "E"로부터 "M" 또는 "I"로 천이한 것을 메모리 시스템 제어 장치 측에서 파악할 수 없다.
도 1에 나타낸 바와 같이, 본 실시예에 따른 메모리 시스템 제어 방식에서는, MSI 프로토콜을 사용한 종래의 방식에서는 "M(갱신 상태)"으로 분류하고 있던 스누프 캐시 측의 상태를 "M(강한 갱신 상태)"과 "W(Weakly Modified, 약한 갱신 상태)"로 구별하고 있다.
본 실시예에 따른 메모리 시스템 제어 방식에서의 "M"은, MESI 프로토콜에 의한 메모리 시스템 제어 방식에서의 "M"과 동일하게 캐시 메모리가 최신 데이터를 보유하고 있음을 보증한다. "W"는 MSI 프로토콜에 의한 메모리 시스템 제어 방식에서의 "M"과 동일하게 캐시 메모리 측의 상태가 불명확한 것을 나타낸다.
메모리 시스템 제어 장치는, 프로세서의 요구 내용으로부터 상기 라인이 캐시 메모리에서 "M"으로 된다고 판단한 경우에, 스누프 캐시에서의 상기 라인의 상태를 "M"으로 설정한다. 예를 들면, 프로세서로부터 기입을 전제로 한 리드 요구가 있었던 경우가 이것에 해당된다.
스누프 캐시에서 상태가 "M"으로 되어 있는 라인은, 캐시 메모리에 최신 상태로 존재하고 있음이 보증되기 때문에, 주기억에 대한 투기 리드가 불필요해지고, 그만큼 시스템의 부하가 경감된다.
다음으로, 본 실시예에 따른 메모리 시스템 제어 장치의 구성에 대해서 설명한다. 도 2는 본 실시예에 따른 메모리 시스템 제어 장치의 구성을 나타내는 기능 블록도이다. 도 2에 나타낸 바와 같이, 메모리 시스템 제어 장치(200)는 프로세서 (100a∼100d)의 복수의 프로세서 및 주기억(300)과 접속된 구성을 채용한다. 또한, 접속되는 프로세서의 수는 몇 개여도 상관없다.
프로세서(100a)는 각종 연산을 행하는 연산 장치이며, 캐시 메모리(110a)를 갖는다. 캐시 메모리(110a)는 주기억의 라인을 소정 수만큼 기억할 수 있으며, 기억하고 있는 각 라인의 상태를 "M", "E", "S" 또는 "I" 중 어느 하나의 상태로서 보유한다.
프로세서(100b), 프로세서(100c) 및 프로세서(100d)는 프로세서(100a)와 동일한 구성이기 때문에 설명을 생략한다.
메모리 시스템 제어 장치(200)는 프로세서(100a∼100d)와 주기억(300) 사이의 데이터 교환을 제어하고, 코히어런시를 확보하기 위한 장치이며, 프로세서 인터페이스부(210a∼210d)와, 리드 데이터 선택 송출부(220)와, 캐시 제어부(230)와, 주기억 인터페이스부(240)를 갖는다.
프로세서 인터페이스부(210a)는 프로세서(100a)와 데이터 등의 교환을 행하는 입출력부이다. 마찬가지로, 프로세서 인터페이스부(210b∼210d)는 각각 프로세서(100b∼100d)와 데이터 등의 교환을 행한다.
리드 데이터 선택 송출부(220)는 프로세서(100a∼100d) 및 주기억(300)으로부터 보내진 데이터를 요구원의 프로세서에 송출하는 처리부이다. 메모리 시스템 제어 장치(200)가 프로세서(100a∼100d) 중 어느 하나에 데이터를 문의하는 동시에 주기억(300)에 대하여 투기 리드를 행한 경우에는, 리드 데이터 선택 송출부(220)는 동일한 라인의 정보를 2개 취득하게 되지만, 프로세서 측으로부터의 응답 내용 을 판단하여 요구원의 프로세서에 송출하는 데이터를 선택한다.
캐시 제어부(230)는 스누프 캐시의 각 라인의 상태를 제어하고, 프로세서(100a∼100d)로부터 데이터의 요구가 있었을 경우에 그 데이터를 취득하는 순서를 선택하는 처리부이며, 스누프 캐시(231a∼231d)와, 데이터 취득 순서 선택부(232)와, 스누프 캐시 갱신부(233)를 갖는다.
스누프 캐시(231a)는 캐시 메모리(110a)가 기억하고 있는 각 라인의 태그 정보를 기억하며, 기억하고 있는 각 라인의 상태를 "M", "W", "S" 또는 "I" 중 어느 하나의 상태로서 보유한다. 스누프 캐시(231b∼231d)는, 마찬가지로 캐시 메모리(110b∼110d)가 기억하고 있는 각 라인의 태그 정보와 각 라인의 상태를 기억한다.
데이터 취득 순서 선택부(232)는, 프로세서(100a∼100d)로부터 데이터의 취득 요구가 있었을 경우에 상기 데이터를 포함하는 라인을 취득하기 위한 순서를 선택하는 처리부이다. 구체적으로는, 우선, 상기 데이터를 포함하는 라인이 스누프 캐시(231a∼231d)에 존재하는지의 여부를 조사하여, 존재하지 않을 경우는 상기 데이터를 포함하는 라인을 주기억으로부터 취득하는 것으로 한다.
상기 데이터를 포함하는 라인이 스누프 캐시(231a∼231d)에 존재할 경우에는, 그 상태를 확인하여 취득 순서를 선택한다. 상태가 "M"이면, 그 스누프 캐시에 대응하는 캐시 메모리로부터 라인을 취득하는 것으로 한다. 상태가 "W"이면, 그 스누프 캐시에 대응하는 프로세서에 문의를 행하는 동시에, 주기억(300)에 대하여 투기 리드를 행하는 것으로 한다.
상태가 "S"인 것이 있으면, 그 스누프 캐시에 대응하는 캐시 메모리로부터 라인을 취득하는 것으로 한다. 또한, 이 경우는 주기억(300)으로부터 라인을 취득할 수도 있다. 그리고, 상태가 "I"인 것만 있을 경우는, 주기억(300)으로부터 라인을 취득하는 것으로 한다.
스누프 캐시 갱신부(233)는 스누프 캐시(231a∼231d)에 보유되어 있는 각 라인의 상태를 갱신하는 처리부이다. 상태의 갱신은 프로세서(100a∼100d)로부터의 리드 요구나 상태 변경의 통지에 의거하여 행한다. 예를 들면, 프로세서(100a∼100d)로부터의 리드 요구의 종류가 기입을 전제로 한 것일 경우에는, 스누프 캐시(231b∼231d)에 보유하는 라인의 상태를 "M"으로 설정한다.
주기억 인터페이스부(240)는 주기억(300)과 데이터 등의 교환을 행하는 입출력부이다. 주기억(300)은 메모리 시스템 제어 장치(200)를 구비하는 멀티프로세서 시스템에서 가동하는 각종 프로그램이나 그들 프로그램이 사용하는 데이터를 전개하기 위한 기억부이다.
다음으로, 본 실시예에 따른 메모리 시스템 제어 방식에서의 제어 순서에 대해서 예를 들어 설명한다. 도 3은 본 실시예에 따른 메모리 시스템 제어 방식에서의 「약한 갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도이다.
도 3에 나타낸 바와 같이, 메모리 시스템 제어 장치(200)는, 어느쪽 캐시에도 보유되어 있지 않은 데이터의 리드 요구를 프로세서(100a)로부터 접수하면(스텝 S101), 주기억(300)에 대하여 상기 데이터를 포함하는 라인의 판독을 요구한다(스텝 S102).
주기억(300)으로부터 판독된 라인은 리드 데이터 선택 송출부(220)에 보내지 고(스텝 S103), 이곳으로부터 요구원의 프로세서(100a)에 송신되어 캐시 메모리(110a)에 저장된다. 이 시점에서, 캐시 메모리(110a)에서의 상기 라인의 상태는 "E"로 되고, 스누프 캐시(231a)에서의 상기 라인의 상태는 "W"로 된다.
그 후, 프로세서(100a)가 상기 라인을 갱신하여 캐시 메모리(110a)에서의 상태가 "M"으로 천이하거나, 또는 프로세서(100a)가 상기 라인을 파기하여 캐시 메모리(110a)에서의 상태가 "I"로 천이하여도, 그 천이는 메모리 시스템 제어 장치(200)로부터는 파악할 수 없다(스텝 S105).
여기서, 프로세서(100b)로부터 동일한 라인에 포함되는 데이터의 배타 리드 요구가 있으면(스텝 S106), 메모리 시스템 제어 장치(200)는, 각 스누프 캐시를 검색하여, 프로세서(100a)에 대응하는 스누프 캐시(231a)에 상기 라인이 "W"의 상태로 보유되어 있음을 확인한다.
"W"의 상태는, 캐시 메모리(110a)에 최신 데이터가 존재하는 경우와 캐시 메모리(110a)의 라인이 이미 무효로 되어 있는 경우의 어느쪽도 있을 수 있음을 나타내고 있기 때문에, 메모리 시스템 제어 장치(200)는, 프로세서(100a)에 대하여 상기 라인에 관한 문의를 행한다(스텝 S107).
또한, 프로세서(100a)로부터의 응답을 대기하는 것에 의한 레이턴시 증대를 회피하기 위해, 메모리 시스템 제어 장치(200)는, 주기억(300)에 대하여 상기 데이터를 포함하는 라인의 판독을 동시에 요구한다(스텝 S108).
그리고, 프로세서(100a)로부터의 응답이 도달하고(스텝 S109), 또한 주기억(300)에 요구하고 있던 라인이 송신되어 오면(스텝 S110), 리드 데이터 선택 송출 부(220)는, 프로세서(100a)로부터의 응답 내용으로부터 최신 데이터가 어디에 있는지를 판단하여, 적절한 데이터를 선택하여 프로세서(100b)에 송신한다(스텝 S111).
이 시점에서, 캐시 메모리(110a)와 스누프 캐시(231a)에서의 상기 라인의 상태는 "I"로 되고, 캐시 메모리(110b)에서의 상기 라인의 상태는 "E"로 되며, 스누프 캐시(231b)에서의 상기 라인의 상태는 "W"(도시되지 않음)로 된다.
이와 같이, 본 실시예에 따른 메모리 시스템 제어 방식에서도, 스누프 캐시 측의 상태가 「약한 갱신 상태」인 경우에는, 주기억에 대한 투기 리드가 필요하게 되어, 주기억과의 트랜잭션이 증대한다.
도 4는 본 실시예에 따른 메모리 시스템 제어 방식에서의 「강한 갱신 상태」의 경우의 제어 순서를 설명하기 위한 설명도이다.
도 4에 나타낸 바와 같이, 메모리 시스템 제어 장치(200)는, 어느쪽 캐시에도 보유되어 있지 않은 데이터에 대해서 기입을 전제로 한 리드 요구를 프로세서(100a)로부터 접수하면(스텝 S201), 주기억(300)에 대하여 상기 데이터를 포함하는 라인의 판독을 요구한다(스텝 S202).
주기억(300)으로부터 판독된 라인은 리드 데이터 선택 송출부(220)에 보내지고(스텝 S203), 이곳으로부터 요구원의 프로세서(100a)에 송신되어 캐시 메모리(110a)에 저장된다. 이 시점에서, 캐시 메모리(110a)에서의 상기 라인의 상태는 "M"으로 되고, 스누프 캐시(231a)에서의 상기 라인의 상태도 "M"으로 된다.
그 후, 프로세서(100a)가 상기 라인을 갱신하여도 캐시 메모리(110a)에서의 상태는 "M"으로 유지된다(스텝 S205).
여기서, 프로세서(100b)로부터 동일한 라인에 포함되는 데이터의 배타 리드 요구가 있으면(스텝 S206), 메모리 시스템 제어 장치(200)는, 각 스누프 캐시를 검색하여, 프로세서(100a)에 대응하는 스누프 캐시(231a)에 상기 라인이 "M"의 상태로 보유되어 있음을 확인한다.
"M"의 상태는, 캐시 메모리(110a)에 최신 데이터가 존재함을 나타내고 있기 때문에, 메모리 시스템 제어 장치(200)는, 프로세서(100a)에 대하여 상기 라인의 배출을 요구한다(스텝 S207).
그리고, 프로세서(100a)로부터 라인의 배출이 실행되면(스텝 S208), 리드 데이터 선택 송출부(220)가 그 배출된 라인을 프로세서(100b)에 송신한다(스텝 S209).
이 시점에서, 캐시 메모리(110a)와 스누프 캐시(231a)에서의 상기 라인의 상태는 "I"로 되고, 캐시 메모리(110b)에서의 상기 라인의 상태는 "E"로 되며, 스누프 캐시(231b)에서의 상기 라인의 상태는 "W"(도시되지 않음)로 된다.
이와 같이, 본 실시예에 따른 메모리 시스템 제어 방식에서는, 스누프 캐시 측의 상태가 「강한 갱신 상태」인 경우에는, 주기억에 대한 투기 리드가 불필요해져, 주기억과의 트랜잭션 증대를 회피할 수 있다.
투기 리드의 발생 유무(有無)는 제어 순서를 타임차트로 나타냄으로써 용이하게 확인할 수 있다. 도 5는 본 실시예에 따른 메모리 시스템 제어 방식에서의 「약한 갱신 상태」의 경우의 제어 순서를 나타내는 타임차트이다. 도 6은 본 실시예에 따른 메모리 시스템 제어 방식에서의 「강한 갱신 상태」의 경우의 제어 순 서를 나타내는 타임차트이다.
도 5와 도 6을 비교하면 알 수 있듯이, 도 6에서는 주기억에 대한 투기 리드인 스텝 S108과 스텝 S109에 상당하는 스텝이 존재하고 있지 않아, 그만큼 주기억과의 트랜잭션이 감소하게 된다.
상술한 바와 같이, 본 실시예에서는 프로세서로부터의 리드 요구의 종류에 따라 스누프 캐시의 「갱신 상태」의 상태를 「강한 갱신 상태」와 「약한 갱신 상태」로 구별하여, 「강한 갱신 상태」의 경우는 프로세서의 캐시 메모리에 최신 데이터가 존재하는 것이 보증되도록 구성했기 때문에, 주기억에 대한 투기 리드의 발생을 감소시킴으로써, 주기억과의 트랜잭션 증대를 회피할 수 있다.
(부기 1) 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시를 제어하는 메모리 시스템 제어 장치로서,
상기 프로세서가 갖는 캐시 메모리의 각 엔트리에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 수단과,
상기 프로세서의 하나로부터 데이터의 리드 요구를 받았을 경우에, 상기 캐시 상태 보유 수단에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 수단과,
상기 데이터 취득 순서 선택 수단이 선택한 취득 순서에 의해 취득된 데이터 로부터 최신 상태의 데이터를 선택하고, 요구원의 프로세서에 송출하는 리드 데이터 선택 송출 수단과,
상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 수단의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 수단을 구비한 것을 특징으로 하는 메모리 시스템 제어 장치.
(부기 2) 상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 기입을 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「강한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 1에 기재된 메모리 시스템 제어 장치.
(부기 3) 상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 기입할 가능성이 있는 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 1 또는 2에 기재된 메모리 시스템 제어 장치.
(부기 4) 상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 「공유 상태」로의 천이를 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 1, 2 또는 3에 기재된 메모리 시스템 제어 장치.
(부기 5) 상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 「무효 상태」로의 천이를 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터 의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 1 내지 4 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 6) 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「강한 갱신 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 1 내지 5 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 7) 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「약한 갱신 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득과 주기억으로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 1 내지 6 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 8) 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「공유 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 1 내지 7 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 9) 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 모두 「무효 상태」일 경우에, 주기억으로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 1 내지 8 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 10) 상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단의 어느쪽 엔트리에도 존재하지 않을 경우에, 주기억으로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 1 내지 9 중 어느 하나에 기재된 메모리 시스템 제어 장치.
(부기 11) 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시를 제어하는 메모리 시스템 제어 방법으로서,
상기 프로세서가 갖는 캐시 메모리의 각 엔트리에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 공정과,
상기 프로세서의 하나로부터 데이터의 리드 요구를 받았을 경우에, 상기 캐시 상태 보유 공정에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 공정과,
상기 데이터 취득 순서 선택 공정이 선택한 취득 순서에 의해 취득된 데이터로부터 최신 상태의 데이터를 선택하고, 요구원의 프로세서에 송출하는 리드 데이터 선택 송출 공정과,
상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 공정의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 공정을 포함한 것을 특징으로 하는 메모리 시스템 제어 방법.
(부기 12) 상기 캐시 상태 갱신 공정은, 상기 프로세서의 하나로부터 기입을 전제로 한 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 공정에 「강한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 11에 기재된 메모리 시스템 제어 방법.
(부기 13) 상기 캐시 상태 갱신 공정은, 상기 프로세서의 하나로부터 기입할 가능성이 있는 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 공정에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 11 또는 12에 기재된 메모리 시스템 제어 방법.
(부기 14) 상기 캐시 상태 갱신 공정은, 상기 프로세서의 하나로부터 「공유 상태」로의 천이를 전제로 한 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 공정에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 11, 12 또는 13에 기재된 메모리 시스템 제어 방법.
(부기 15) 상기 캐시 상태 갱신 공정은, 상기 프로세서의 하나로부터 「무효 상태」로의 천이를 전제로 한 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 공정에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 부기 11 내지 14 중 어느 하나에 기재된 메모리 시스템 제어 방법.
(부기 16) 상기 데이터 취득 순서 선택 공정은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정의 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「강한 갱신 상태」일 경우에, 상기 캐시 상태 보유 공정에 대응하는 프로세서로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 11 내지 15 중 어느 하나에 기재된 메모리 시스템 제어 방법.
(부기 17) 상기 데이터 취득 순서 선택 공정은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정의 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「약한 갱신 상태」일 경우에, 상기 캐시 상태 보유 공정에 대응하는 프로세서로부터의 데이터 취득과 주기억으로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 11 내지 16 중 어느 하나에 기재된 메모리 시스템 제어 방법.
(부기 18) 상기 데이터 취득 순서 선택 공정은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정의 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「공유 상태」일 경우에, 상기 캐시 상태 보유 공정에 대응하는 프로세서로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 11 내지 17 중 어느 하나에 기재된 메모리 시스템 제어 방법.
(부기 19) 상기 데이터 취득 순서 선택 공정은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정의 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 모두 「무효 상태」일 경우에, 주기억으로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 11 내지 18 중 어느 하나에 기재된 메모리 시스템 제어 방법.
(부기 20) 상기 데이터 취득 순서 선택 공정은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정의 어느쪽 엔트리에도 존재하지 않을 경우에, 주기억으로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 부기 11 내지 19 중 어느 하나에 기재된 메모리 시스템 제어 방법.
이상과 같이, 본 발명에 따른 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법은, 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서의 코히어런시 제어에 유용하며, 특히 주기억과의 트랜잭션을 감소시키고자 할 경우에 적합하다.
본 발명에 의하면, 「갱신 상태」를 「강한 갱신 상태」와 「약한 갱신 상태」로 구별하여 관리하도록 구성했기 때문에, 「갱신 상태」에 있는 캐시의 제어를 정밀하게, 또한 효율적으로 행할 수 있다는 효과를 나타낸다.
또한, 본 발명에 의하면, 기입을 전제로 한 데이터로서 리드 요구를 받은 경 우는, 그 데이터를 「강한 갱신 상태」로서 등록하도록 구성했기 때문에, 이 경우와 같이 캐시 메모리에 최신 데이터가 확실하게 존재하고 있는 경우를 다른 「갱신 상태」로 구별할 수 있다는 효과를 나타낸다.
또한, 본 발명에 의하면, 「강한 갱신 상태」로서 캐시 상태 보유 수단에 보유되어 있는 데이터에 대해서는 캐시 메모리에만 데이터 요구를 행하고, 주기억으로의 투기 리드를 행하지 않도록 구성했기 때문에, 주기억과의 트랜잭션을 감소시킬 수 있다는 효과를 나타낸다.

Claims (10)

  1. 프로세서마다 캐시 메모리(cache memory)를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시(coherency)를 제어하는 메모리 시스템 제어 장치로서,
    상기 프로세서가 갖는 캐시 메모리의 각 엔트리(entry)에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 수단과,
    상기 프로세서의 하나로부터 데이터의 리드(read) 요구를 받았을 경우에, 상기 캐시 상태 보유 수단에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 수단과,
    상기 데이터 취득 순서 선택 수단이 선택한 취득 순서에 의해 취득된 데이터로부터 최신 상태의 데이터를 선택하고, 요구원(要求元)의 프로세서에 송출(送出)하는 리드 데이터 선택 송출 수단과,
    상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 수단의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별(種別)에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 수단을 구비하고,
    상기 캐시 상태 갱신 수단은 상기 프로세서의 하나로부터 기입을 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「강한 갱신 상태」로서 등록하고,
    상기 데이터 취득 순서 선택 수단은 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「강한 갱신 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하고, 주 기억으로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하지 않는 것을 특징으로 하는 메모리 시스템 제어 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 기입할 가능성이 있는 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  4. 제 1 항에 있어서,
    상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 「공유 상태」로의 천이를 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  5. 제 1 항에 있어서,
    상기 캐시 상태 갱신 수단은, 상기 프로세서의 하나로부터 「무효 상태」로의 천이를 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 수단에 「약한 갱신 상태」로서 등록하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「약한 갱신 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득과 주기억으로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  8. 제 1 항에 있어서,
    상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「공유 상태」일 경우에, 상기 캐시 상태 보유 수단에 대응하는 프로세서로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  9. 제 1 항에 있어서,
    상기 데이터 취득 순서 선택 수단은, 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 수단 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 모두 「무효 상태」일 경우에, 주기억으로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하는 것을 특징으로 하는 메모리 시스템 제어 장치.
  10. 프로세서마다 캐시 메모리를 갖는 멀티프로세서 시스템에서 상기 캐시 메모리와 주기억의 코히어런시를 제어하는 메모리 시스템 제어 방법으로서,
    상기 프로세서가 갖는 캐시 메모리의 각 엔트리에 저장되어 있는 데이터의 어드레스 정보를 기억하고, 각 엔트리의 이용 상태를 「강한 갱신 상태」, 「약한 갱신 상태」, 「공유 상태」 또는 「무효 상태」 중 어느 하나의 상태로서 보유하는 캐시 상태 보유 공정과,
    상기 프로세서의 하나로부터 데이터의 리드 요구를 받았을 경우에, 상기 캐시 상태 보유 공정에 의해 보유되어 있는 상기 어드레스 정보와 상기 이용 상태에 의거하여 상기 데이터의 취득 순서를 적어도 하나 선택하는 데이터 취득 순서 선택 공정과,
    상기 데이터 취득 순서 선택 공정의 선택한 취득 순서에 의해 취득된 데이터로부터 최신 상태의 데이터를 선택하고, 요구원의 프로세서에 송출하는 리드 데이터 선택 송출 공정과,
    상기 데이터의 어드레스 정보를 요구원의 프로세서에 대응하는 캐시 상태 보유 공정의 엔트리의 하나에 등록할 때에, 상기 리드 요구의 종별에 따라 상기 엔트리의 이용 상태를 갱신하는 캐시 상태 갱신 공정을 포함하고,
    상기 캐시 상태 갱신 공정은 상기 프로세서의 하나로부터 기입을 전제로 한 데이터로서 리드 요구를 받았을 경우에, 상기 데이터의 이용 상태를 상기 캐시 상태 보유 공정에 「강한 갱신 상태」로서 등록하는 것을 포함하고,
    상기 데이터 취득 순서 선택 공정은 상기 프로세서의 하나로부터 리드 요구된 데이터의 어드레스가 상기 캐시 상태 보유 공정 중 어느 하나의 엔트리에 존재하고, 그 엔트리의 이용 상태가 「강한 갱신 상태」일 경우에, 상기 캐시 상태 보유 공정에 대응하는 프로세서로부터의 데이터 취득만을 상기 데이터의 취득 순서로서 선정하고, 주 기억으로부터의 데이터 취득을 상기 데이터의 취득 순서로서 선정하지 않는 것을 포함하는 것을 특징으로 하는 메모리 시스템 제어 방법.
KR1020040105539A 2004-08-05 2004-12-14 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법 KR100691695B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00229082 2004-08-05
JP2004229082A JP4673585B2 (ja) 2004-08-05 2004-08-05 メモリシステム制御装置およびメモリシステム制御方法

Publications (2)

Publication Number Publication Date
KR20060013330A KR20060013330A (ko) 2006-02-09
KR100691695B1 true KR100691695B1 (ko) 2007-03-09

Family

ID=34930886

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040105539A KR100691695B1 (ko) 2004-08-05 2004-12-14 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법

Country Status (5)

Country Link
US (1) US7783840B2 (ko)
EP (1) EP1624377B1 (ko)
JP (1) JP4673585B2 (ko)
KR (1) KR100691695B1 (ko)
CN (1) CN100338587C (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099583A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited システムコントローラおよびキャッシュ制御方法
JP5168800B2 (ja) * 2006-03-08 2013-03-27 富士通株式会社 マルチプロセッサシステム
JP5146444B2 (ja) 2007-03-20 2013-02-20 富士通株式会社 マルチプロセッサシステム及びその制御方法
US8898653B2 (en) * 2007-06-27 2014-11-25 International Business Machines Corporation Non-disruptive code update of a single processor in a multi-processor computing system
US8127192B2 (en) * 2007-07-18 2012-02-28 International Business Machines Corporation Predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification/validation in interrupt mode
US7739570B2 (en) * 2007-07-18 2010-06-15 International Business Machines Corporation System and method for increasing error checking performance by calculating CRC calculations after multiple test patterns for processor design verification and validation
US7689886B2 (en) * 2007-07-18 2010-03-30 International Business Machines Corporation System and method for predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification and validation
US7747908B2 (en) * 2007-07-18 2010-06-29 International Business Machines Corporation System and method for creating different start cache and bus states using multiple test patterns for processor design verification and validation
US7661023B2 (en) * 2007-07-18 2010-02-09 International Business Machines Corporation System and method for verification of cache snoop logic and coherency between instruction & data caches for processor design verification and validation
US7647539B2 (en) * 2007-07-18 2010-01-12 International Business Machines Corporation System and method of testing using test pattern re-execution in varying timing scenarios for processor design verification and validation
JP2009042992A (ja) * 2007-08-08 2009-02-26 Renesas Technology Corp バス制御装置
US8185694B2 (en) * 2008-07-25 2012-05-22 International Business Machines Corporation Testing real page number bits in a cache directory
KR101639672B1 (ko) * 2010-01-05 2016-07-15 삼성전자주식회사 무한 트랜잭션 메모리 시스템 및 그 동작 방법
KR101944329B1 (ko) * 2012-04-17 2019-04-18 삼성전자주식회사 멀티프로세서 시스템 및 그것의 캐쉬 관리 방법
CN102722467A (zh) * 2012-05-31 2012-10-10 深圳市江波龙电子有限公司 一种多处理器设备及其程序运行方法
US9619382B2 (en) * 2013-08-19 2017-04-11 Intel Corporation Systems and methods for read request bypassing a last level cache that interfaces with an external fabric
US9665468B2 (en) 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
US9632947B2 (en) 2013-08-19 2017-04-25 Intel Corporation Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early
US9361227B2 (en) 2013-08-30 2016-06-07 Soft Machines, Inc. Systems and methods for faster read after write forwarding using a virtual address
FR3021773B1 (fr) * 2014-05-27 2017-10-06 Bull Sas Interrogation speculative en memoire centrale d'un systeme multiprocesseur
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032776A (ko) * 1996-10-16 1998-07-25 가나이 츠토무 데이타 프로세서 및 데이타 처리시스템
KR19980057631A (ko) * 1996-12-30 1998-09-25 김광호 캐시일관성 유지를 위한 스누핑 장치

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5537574A (en) * 1990-12-14 1996-07-16 International Business Machines Corporation Sysplex shared data coherency method
JPH06208507A (ja) * 1993-01-11 1994-07-26 Casio Comput Co Ltd キャッシュメモリシステム
JPH08185359A (ja) * 1994-10-31 1996-07-16 Toshiba Corp メモリサブシステム
US5692149A (en) * 1995-03-16 1997-11-25 Samsung Electronics Co., Ltd. Block replacement method in cache only memory architecture multiprocessor
US5684977A (en) * 1995-03-31 1997-11-04 Sun Microsystems, Inc. Writeback cancellation processing system for use in a packet switched cache coherent multiprocessor system
EP0735487B1 (en) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
JPH11212868A (ja) * 1998-01-28 1999-08-06 Oki Electric Ind Co Ltd スヌープキャッシュメモリ制御システム
JP2000132531A (ja) * 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
JP3550092B2 (ja) 1998-12-10 2004-08-04 富士通株式会社 キャッシュ装置及び制御方法
WO2000038077A1 (fr) 1998-12-18 2000-06-29 Fujitsu Limited Antememoire et procede de commande
US6857051B2 (en) * 1998-12-23 2005-02-15 Intel Corporation Method and apparatus for maintaining cache coherence in a computer system
JP2002024198A (ja) * 2000-07-06 2002-01-25 Fujitsu Ltd 分散共有メモリ型並列計算機
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6763435B2 (en) * 2001-10-16 2004-07-13 International Buisness Machines Corporation Super-coherent multiprocessor system bus protocols
US7073004B2 (en) * 2002-12-12 2006-07-04 International Business Machines Corporation Method and data processing system for microprocessor communication in a cluster-based multi-processor network

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980032776A (ko) * 1996-10-16 1998-07-25 가나이 츠토무 데이타 프로세서 및 데이타 처리시스템
KR19980057631A (ko) * 1996-12-30 1998-09-25 김광호 캐시일관성 유지를 위한 스누핑 장치

Also Published As

Publication number Publication date
US7783840B2 (en) 2010-08-24
KR20060013330A (ko) 2006-02-09
JP2006048406A (ja) 2006-02-16
JP4673585B2 (ja) 2011-04-20
EP1624377A2 (en) 2006-02-08
EP1624377B1 (en) 2013-10-23
CN1731372A (zh) 2006-02-08
US20060031641A1 (en) 2006-02-09
EP1624377A3 (en) 2008-06-04
CN100338587C (zh) 2007-09-19

Similar Documents

Publication Publication Date Title
KR100691695B1 (ko) 메모리 시스템 제어 장치 및 메모리 시스템 제어 방법
JP5190236B2 (ja) 複数の上位レベルのキャッシュ・メモリおよび1つの下位レベルのキャッシュ・メモリを有するマルチプロセッサ・データ処理システムにおいてコヒーレンシを管理する方法、およびデータ処理システム
US7360032B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of modified memory blocks
US7747826B2 (en) Data processing system and method for efficient communication utilizing an in coherency state
US8140770B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation
US7747825B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US7404046B2 (en) Cache memory, processing unit, data processing system and method for filtering snooped operations
JP5105863B2 (ja) 複数のコヒーレンシ・ドメインを有するデータ処理システムでフラッシュ動作を処理するデータ処理システム、方法、およびメモリ・コントローラ
US7640401B2 (en) Remote hit predictor
US20070204110A1 (en) Data processing system, cache system and method for reducing imprecise invalid coherency states
US7454577B2 (en) Data processing system and method for efficient communication utilizing an Tn and Ten coherency states
US7502893B2 (en) System and method for reporting cache coherency state retained within a cache hierarchy of a processing node
US7454578B2 (en) Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory
JPWO2010100679A1 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
US8296520B2 (en) System and method for optimizing neighboring cache usage in a multiprocessor environment
US20080320234A1 (en) Information processing apparatus and data transfer method
KR101072174B1 (ko) 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법
JP5004571B2 (ja) 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
US7366844B2 (en) Data processing system and method for handling castout collisions
US10628312B2 (en) Producer/consumer paced data transfer within a data processing system having a cache which implements different cache coherency protocols
US6678800B1 (en) Cache apparatus and control method having writable modified state
US7725619B2 (en) Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes

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
FPAY Annual fee payment

Payment date: 20130201

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140204

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150130

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20200129

Year of fee payment: 14