KR19980024009A - 캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템 - Google Patents

캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템 Download PDF

Info

Publication number
KR19980024009A
KR19980024009A KR1019970014817A KR19970014817A KR19980024009A KR 19980024009 A KR19980024009 A KR 19980024009A KR 1019970014817 A KR1019970014817 A KR 1019970014817A KR 19970014817 A KR19970014817 A KR 19970014817A KR 19980024009 A KR19980024009 A KR 19980024009A
Authority
KR
South Korea
Prior art keywords
update
address
update address
cache
main memory
Prior art date
Application number
KR1019970014817A
Other languages
English (en)
Other versions
KR100233207B1 (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 KR19980024009A publication Critical patent/KR19980024009A/ko
Application granted granted Critical
Publication of KR100233207B1 publication Critical patent/KR100233207B1/ko

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2041Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/1407Checkpointing the instruction stream
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

캐시 메모리(20)상의 모든 데이타 블록의 어드레스는, 갱신 어드레스 등록부(33)에 의해서 갱신 어드레스 기억부(32)가 구비하는 복수의 영역 A0∼An-1중 어느 하나에 기억된다. 임의의 캐시 블록이 일단 더티 상태가 된 후, 비더티 상태가 되었을 때에는, 갱신 어드레스 삭제부(34)가, 영역으로부터 그 어드레스를 삭제한다. 캐시 플러시를 행할 때에는 플러시 실행부(35)가, 더티 블록의 어드레스를 각 영역으로부터 순차적으로 취출하여, 그 어드레스로 표시되는 데이타의 메인 메모리(51)로의 재기록을 요구하는 명령을 시스템 버스(40)에 발행함으로써, 모든 더티 블록의 내용이 메인 메모리(51)로 재기록된다. 따라서, 이 캐시 플러시 장치에 따르면, 캐시 플러시 조작에 요하는 시간을 단축하여 시스템 성능을 향상시킬 수 있다.

Description

캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템
본 발명은 데이타의 일관성을 보증하는 스누프(snoop) 기구를 갖는 캐시 메모리의 캐시 플러시 장치, 및 동일 장치를 구비한 내장해성(fault tolerance) 계산기 시스템에 관한 것이다.
일반적으로, 계산기에 있어서는, 프로세서에 의한 메인 메모리로의 액세스를 고속화하기 위해서, 프로세서가 필요로 하는 데이타를 일시적으로 격납하는 캐시 메모리가 사용되고 있다. 통상, 캐시 메모리는 캐시 블록이라 불리는 소정의 크기의 데이타 단위로 데이타를 유지한다. 캐시 메모리는 캐시 태그라고 불리는 관리 정보를 유지하여, 캐시 메모리에 격납한 캐시 블록의 데이타가, 메인 메모리중의 어떤 데이타인지, 및 프로세서에 의해서 변경되어 메인 메모리의 내용과 다른 상태(더티 상태)에 있는지 등을 관리하고 있다.
한편, 프로세서를 복수 설치한 계산기(멀티프로세서 계산기)에서는, 캐시 메모리도 복수 있지만, 이들 캐시 메모리 사이에서 데이타의 일관성(data coherency)를 보증하기 위해, 각 캐시 메모리에 스누프 기구가 설치된다. 스누프 기구는 버스에 발행된 버스 명령이, 자신의 캐시 메모리에 격납된 데이타에 영향을 부여하지 않는지의 여부, 또는 자신의 캐시 메모리에 격납된 데이타를 응답으로서 돌려 주지 않으면 안되는지의 여부등을 감시하고, 필요하면, 해당하는 데이타의 무효화(invalidate)등을 행하는 것이다.
캐시 메모리에는 카피백(copy back)형, 라이트스루(write throuqh) 형이 있지만, 프로세서에 의한 데이타 갱신을 즉시 메인 메모리에 반영시키지 않고서, 어느 정도의 기간 내부에 유지하는 것을 계속하는 카피백형의 캐시 메모리의 경우, 프로세서에 의해서 캐시 메모리상에서 변경되어 메인 메모리의 내용과 다른 데이타를 적극적으로 메인 메모리에 재기록(write back) 조작을 필요로 한다. 예컨대, 스누프 기구(snoop mechanism)를 가지지 않은 입출력 장치에 대하여, 캐시 메모리가 격납하는 데이타를 전송하는 경우등에 재기록이 필요해진다. 캐시 메모리가 격납하는 데이타중, 변경되어 있는 데이타를 메인 메모리에 재기록 조작을 캐시 플러시 조작(cache f1ush procedure)이라 부른다. 또한, 캐시 메모리의 데이타가 변경되어 있는 상태를 더티 상태라고 부른다. 그리고, 더티 상태에 있는 캐시 블록을 더티 블록이라고 부른다.
이 캐시 플러시 조작은, 스누프 기구를 가지지 않은 입출력 장치에 대한 데이타의 전송시 이외에도, 체크포인트 방식의 계산기에 있어서 유용하다. 즉, 계산기에 어떠한 장해가 발생했을 때, 미리 취득해 둔(acquire) 체크포인트로부터 처리를 재개하는 체크포인트 방식의 계산기의 경우, 체크포인트의 시점에서, 캐시 메모리중에만 존재하는 변경된 데이타를 메인 메모리에 재기록할 필요가 있다.
캐시 플러시 조작은, 통상, 캐시 플러시 명령(instruction)을 포함하는 소프트웨어에 기초하여 실행된다. 소프트웨어를 실행함으로써, 프로세서는 캐시 태그의 내용을 참조하여, 캐시 블록마다 더티 블록인지의 여부를 판단하며, 더티이면 대응하는 캐시 블록의 데이타를 메인 메모리에 재기록하는 캐시 플러시 동작을 행한다.
이와 같이 프로세서는 부여된 프로그램에 따라서, 하나하나 모든 캐시 블록에 대해서, 상태를 판정하여, 더티인 경우에는 메인 메모리로의 재기록(캐시 플러시 조작)을 실행하지 않으면 안된다. 모든 캐시 블록에 대해서 처리를 행하기 위해서는, 매우 많은 시간을 요한다.
이 상황을 다음과 같은 프로그램예를 참조하여 구체적으로 설명한다. 본 프로그램은 미국 SGI사 R4000 프로세서에 있어서 캐시 플러시 조작을 행하기 위한 프로그램의 일례이다.
cflush:
li $4, 0 # start block address
li $5, CACHE_SIZE # the numver of blocks
loop: cache 0x17, 0($4) # 2nd cache invalidate
addu $5, $5, 01 # decrement cache size
bne $5, 0, loop #
addiu $4, $4, 64 # increment block address
j $31 # return subroutine
nop
이 프로그램에서는 「cache 0x17, 0($4)」라는 명령을 실행하면, 제 4 레지스터($4)에 유지되어 있는 어드레스에 대응하는 세컨드 캐시의 캐시 블록이 선택되어, 만일, 그 캐시 블록의 상태가 더티이면, 그 내용이 메인 메모리에 재기록되는 동시에, 단지 인밸리드(invalid) 상태가 된다. 또한, 만일 상태가 더티가 아니라면, 단지 인밸리드 상태가 된다. 이 루프(loop)는 세컨더리 캐시의 캐시 블록의 수만큼 실행할 필요가 있다.
이 루프(loop)를 처리하는 시간을 세면, 명령수가 4이므로, 4프로세서 사이클을 요하고, 이것을 버스 사이클로 환산하면, 2버스 사이클이 된다 (1버스 블록에서 2명령을 실행). 따라서, 모든 캐시 블록을 플러시하는 시간은 데이타를 메인 메모리에 재기록하는 시간을 포함시키지 않아도, 캐시 플러시 시간=캐시 블록수×2버스 사이클이 되며, 매우 시간이 걸리는 처리가 된다.
한편, 캐시 플러시 조작을 고속화하기 위해서, 캐시 메모리 자체를 개조하는 일도 행해지고 있다. 그러나, 이 방법으로는 기존의 캐시 메모리를 고속화하는 것은 불가능하다.
이와 같이, 종래의 계산기에 있어서는, 캐시 메모리 전체의 플러시 조작(모든 더티 블록에 대해서, 그 내용을 메인 메모리에 재기록하는 것)을 소프트웨어로 모든 캐시 블록에 대하여 순차적으로 행하고 있었기 때문에, 많은 처리 시간을 허비하고 있었다.
또한, 캐시 메모리 전체의 플러시 조작을 하는 기간중에는 그 프로세서가 다른 프로그램을 실행하는 것은 불가능하기 때문에, 본래의 데이타 처리가 정지하게 되며, 시스템 전체의 성능저하를 초래한다고 하는 문제가 있었다.
특히, 체크포인트에 있어서 캐시 플러시 조작을 행해야만 하는 방식을 채용한 계산기에 있어서는, 체크포인트 처리 시간의 증대가 큰 문제였다.
본 발명은 상술한 사정에 대처하기 위해 이루어진 것으로, 캐시 플러시 조작에 요하는 시간을 단축하여 시스템 성능을 향상시키는 캐시 플러시 장치 및 동일 장치를 구비한 계산기 시스템을 제공하는 것을 목적으로 한다.
도 1은 본 발명의 제 1 실시예에 따른 계산기 시스템의 시스템 구성을 나타내는 도면.
도 2a 및 도 2b는 제 1 실시예의 갱신 어드레스 기억부의 영역 Ai의 구조를 나타내는 개념도.
도 3은 제 1 실시예의 갱신 어드레스 등록부의 동작 순서를 나타내는 도면.
도 4는 제 1 실시예의 갱신 어드레스 삭제부의 동작 순서를 나타내는 도면.
도 5는 제 1 실시예의 플러시 실행부의 동작 순서를 나타내는 도면.
도 6은 제 1 실시예의 갱신 어드레스 등록부가 데이타 갱신을 나타내는 명령을 검지했을 때의 캐시 플러시 장치의 동작 순서를 나타내는 도면.
도 7은 제 1 실시예의 갱신 어드레스 삭제부가 더티 블록의 메인 메모리로의 재기록을 나타내는 명령을 검지했을 때의 캐시 플러시 장치의 동작 순서를 나타내는 도면.
도 8은 제 1 실시예의 프로세서가, 0번지, B×M번지, 2B×M번지에 각각 데이타 D0, D1, D2를 연속하여 기록하는 경우의 동작을 설명하는 도면.
도 9는 제 1 실시예의 변형예에 있어서의 영역 Ai의 구조를 나타내는 개념도.
도 10은 동일 변형예의 갱신 어드레스 등록부가 데이타 갱신을 나타내는 명령을 검지했을 때의 캐시 플러시 장치의 동작 순서를 나타내는 도면.
도 11은 동일 변형예의 갱신 어드레스 삭제부가 더티 블록의 메인 메모리로의 재기록을 나타내는 명령을 검지했을 때의 캐시 플러시 장치의 동작 순서를 나타내는 도면.
도 12은 동일 변형예의 플러시 실행부의 동작 순서를 나타내는 도면.
도 13은 동일 변형예의 프로세서가, 0번지, B×M번지, 2B×M번지에 데이타 D0, D1, D2를 연속하여 기록하는 경우의 동작을 설명하는 도면.
도 14는 제 1 실시예의 다른 변형예에 따른 계산기 시스템의 시스템 구성을 나타내는 도면.
도 15는 도 14의 변형예의 플러시 실행부의 동작 순서를 나타내는 도면.
도16은 본 발명의 제 2 실시예에 따른 계산기 시스템의 시스템 구성을 나타내는 도면.
도 17은 제 2 실시예의 갱신 어드레스 기억부의 영역의 구성을 나타내는 개념도.
도 18은 제 2 실시예의 캐시 메모리상에서 데이타 갱신이 발생한 것을 나타내는 명령을 갱신 어드레스 등록부가 검지했을 때의 갱신 어드레스 등록부 및 엔트리 해방부의 처리 플로우.
도 19는 제 2 실시예의 플러시 실행부의 처리 플로우.
도 20은 제 2 실시예의 프로세서가, 0번지, B×M번지, 2B×M번지에 각각 데이타 D0, D1, D2를 연속하여 기록하는 경우의 동작을 설명하는 도면.
도 21은 본 발명의 제 3 실시예에 따른 계산기 시스템의 시스템 구성을 나타내는 도면.
도 22는 제 3 실시예의 갱신 어드레스 삭제부가 일정 시간 만큼 재기록 어드레스와 같은 어드레스가 격납되어 있는 엔트리를 일정 시간 찾는 예를 나타내는 도면.
도 23은 본 발명의 제 4 실시예에 따른 계산기 시스템의 시스템 구성을 나타내는 도면.
도 24는 제 4 실시예의 갱신 어드레스 기억부의 영역의 구성을 나타내는 개념도.
도 25는 제 4 실시예의 캐시 메모리상에서 데이타 갱신이 발생한 것을 나타내는 명령을 갱신 어드레스 등록부가 검지했을 때의 갱신 어드레스 등록부 및 엔트리 해방부의 처리 플로우.
도 26은 제 4 실시예의 갱신 어드레스 삭제부의 처리 플로우.
도 27은 제 4 실시예의 플러시 실행부의 처리 플로우.
도 28은 본 발명의 제 5 실시예에 따른 내장해성 계산기의 구성을 나타내는 도면.
도 29는 제 5 실시예의 계산기에 있어서 시간의 경과와 함께 3개의 단계가 변해가는 상태를 나타내는 도면.
도 30은 본 발명의 제 6 실시예에 따른 내장해성 계산기의 구성을 나타내는 도면.
도 31은 제 6 실시예의 계산기에 있어서 시간의 경과에 따른 제 1 계산기(100a)와 제 2 계산기(100b)와의 상태가 변화하는 상태를 나타내는 도면.
도면의 주요 부분에 대한 부호의 설명
20 : 캐시 메모리
32 : 갱신 어드레스 기억부
33 : 갱신 어드레스 등록부
34 : 갱신 어드레스 삭제부
35 : 플러시 실행부
40 : 시스템 버스
51 : 메인 메모리
본 발명의 제 1 양태에 따르면, 캐시 플러시 장치는 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치로서, 상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과, 상기 캐시 메모리상에서의 데이타 갱신을 상기 시스템 버스의 감시에 의해 검지하고, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과, 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 상기 시스템 버스의 감시에 의해서 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과, 상기 프로세서로부터 지시되었을 때, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스로 발행하는 플러시 실행 수단을 구비하여 이루어진 것을 특징으로 한다.
본 발명의 제 1 양태에 따른 캐시 플러시 장치에 있어서는, 캐시 메모리상의 모든 더티 블록의 어드레스는 갱신 어드레스 등록 수단에 의해서 갱신 어드레스 기억 수단이 구비하는 복수의 영역중 어느 한쪽에 기억된다. 또한, 임의의 캐시 블록이 일단 더티 상태가 된 후, 비더티 상태가 되었을 때에는 갱신 어드레스 삭제 수단에 의해서 영역으로부터 그 어드레스는 삭제된다.
그리고, 캐시 플러시를 행할 때에는 플러시 실행 수단이, 더티 블록의 어드레스를 각 영역으로부터 순차적으로 취출하여, 그 어드레스로 표시되는 데이타의 메인 메모리로의 재기록을 요구하는 명령을 시스템 버스에 발행함으로써, 모든 더티 블록의 내용이 메인 메모리로 재기록된다.
이것에 의해, 예컨대 종래의 소프트웨어에 의한 캐시 플러시와 같이, 모든 캐시 블록에 대해서 순차적으로 더티 블록인지의 여부를 판정하게 되는 처리를 행할 필요가 없어지기 때문에, 신속하고 또한 효율적인 캐시 플러시 조작을 행하는 것이 가능해진다.
본 발명의 제 2 양태에 따르면, 캐시 플러시 장치는, 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치로서, 상기 캐시 메모리내에 확보된 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과, 상기 캐시 메모리상에서의 데이타 갱신을 상기 시스템 버스의 감시에 의해서 검지하고, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역에 상기 갱신 어드레스를 등록하는 갱신 어드레스 등록 수단과, 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 상기 시스템 버스의 감시에 의해서 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역에 등록된 갱신 어드레스와 상기 재기록 어드레스가 일치할 때, 그 영역에 등록된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과, 상기 프로세서로부터 지시되었을 때, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하여, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하여 이루어진 것을 특징으로 한다.
예컨대, 프로세서가 메인 메모리로의 기록 요구를 일시적으로 저장하는 라이트 버퍼를 갖는 경우, 시스템 버스에 접속된 전술한 캐시 플러시 장치측에서 보면, 하나의 캐시 블록이, 일시에 복수의 더티 블록을 격납하고 있는 것과 같이 보이게 되는 상황이 발생한다. 본 발명의 캐시 플러시 장치는 이러한 상황에 대응시킨 것이며, 각 영역이 하나의 엔트리만을 갖는 구성으로서, 이 엔트리에는 라이트 버퍼가 아니라, 캐시 블록에 격납된 데이타의 어드레스(최신의 갱신 어드레스)만을 격납하도록 하여, 갱신 어드레스 삭제 수단이, 이 갱신 어드레스 등록 수단에 의해서 격납된 최신의 갱신 어드레스와, 시스템 버스에 발행된 재기록 어드레스가 일치할 때에만, 그 갱신 어드레스의 삭제를 행하도록 한다. 이와 같이, 각 영역을 하나의 엔트리만을 갖는 구성으로 하고, 또한 라이트 버퍼로부터 시스템 버스에 발행된 최신보다 전의 갱신 어드레스의 재기록 요구를 무시함으로써, 적절한 캐시 플러시 동작이 확보되게 된다.
본 발명의 제 3 양태에 따르면, 캐시 플러시 장치는 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치로서, 상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되며, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 하나의 엔트리를 가지며 이루어지는 영역 및 이 영역에 대응하여 설치되는 카운터를 복수쌍 구비한 갱신 어드레스 기억 수단과, 상기 캐시 메모리상에서의 데이타 갱신을 상기 시스템 버스의 감시에 의해 검지하고, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하며, 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과, 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 상기 시스템 버스의 감시에 의해 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하며, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 삭제 수단과, 상기 프로세서로부터 지시되었을 때, 상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하여 이루어지는 것을 특징으로 한다.
본 발명의 제 3 양태의 캐시 플러시 장치도, 프로세서가 라이트 버퍼를 갖는 경우를 고려한 것으로, 각 영역을 하나의 엔트리만을 갖는 구성으로 하는 동시에, 이 영역 각각에 대응하여 카운터를 설치한다. 그리고, 갱신 어드레스 등록 수단은, 갱신 어드레스를 어느 영역에 격납할 때, 그 영역에 대응하는 카운터를 인크리먼트한다. 한편, 갱신 어드레스 삭제 수단은 재기록을 검지했을 때, 그 영역에 대응하는 카운터를 디크리먼트한다. 그리고, 모든 캐시 플러시 실행 수단은, 이 카운터가 초기치가 아닌 영역에 등록된 갱신 어드레스에 대해서만 재기록을 요구한다. 즉, 갱신 블록수와 재기록 블록수와의 차분을 캐시 블록마다 관리함으로써, 라이트 버퍼를 적용한 경우에도 적절한 캐시 플러시 동작이 확보되게 된다.
또, 시스템에 따라서는, 시스템 버스로의 명령 발행에서는 더티 블록의 내용을 메인 메모리로 재기록할 수 없는 경우가 있다. 이 경우에는 전술한 플러시 실행 수단을 대신해서, 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 이 독출한 갱신 어드레스를 프로세서에 통지하는 갱신 어드레스 독출 수단을 구비하는 것이 바람직하다. 이 경우에 있어서도, 이와 같이 더티 블록의 어드레스만을 프로세서에 통지하는 수단을 구비함으로써, 종래와 같이 캐시 블록에 대해서 순차적으로 더티 블록인지의 여부를 판정하게 되는 처리를 행하는 것과 비교하여, 신속하고 또한 효율적인 캐시 플러시 조작을 행하는 것이 가능해진다.
본 발명의 제 4 양태의 캐시 플러시 장치는, 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치로서, 상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과, 상기 캐시 메모리상에서의 데이타 갱신을 상기 시스템 버스의 감시에 의해서 검지하고, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과, 상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수가 미리 설정한 값을 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단(entry rec1aim)과, 상기 프로세서로부터 지시되었을 때, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하여 이루어진 것을 특징으로 한다.
본 발명의 제 4 양태의 캐시 플러시 장치에 있어서는, 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각에, 미리 설정된 수(영역이 구비하는 엔트리수와 일치시켜도 좋고, 그 범위내의 임의의 수이어도 좋다)의 갱신 어드레스를 기억시키도록 한다. 즉, 새롭게 갱신 어드레스를 격납하고자 했을 때, 그 영역의 빈 엔트리수가 미리 설정된 수를 밑돌게 될 때, 엔트리 해방 수단이 이미 격납되어 있는 갱신 어드레스중의 어느 하나를 선택하여, 이 선택한 갱신 어드레스의 재기록 요구를 발행하는 동시에, 이 엔트리를 공백 상태로 한다. 이와 같이, 영역 각각의 사용 상황에 따라 갱신 어드레스의 재기록 요구를 발행하는 기구를 구비하면, 다이렉트맵 방식이 아닌 캐시 메모리로의 적용이 용이해지는 동시에, 갱신 어드레스 기억 수단이 구비하는 영역의 엔트리수의 설정이나, 영역과 어드레스와의 대응등의 자유도를 대폭 확대시키는 것이 가능해진다.
또, 캐시 메모리가 n웨이의 세트 어소시어티브로 구성될 경우에는, 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각을 n개의 캐시 블록으로 형성되는 그룹에 한쌍으로 설치하는 것이 바람직하다. 하드웨어의 간소화와 처리의 고속화를 실현하기 위함이다.
본 발명의 제 5 양태의 캐시 플러시 장치는 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치로서, 상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과, 상기 캐시 메모리상에서의 데이타 갱신을 상기 시스템 버스의 감시에 의해서 검지하고, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하며, 그 선택한 영역에 갱신 어드레스를 등록하는 갱신 어드레스 등록 수단과, 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 상기 시스템 버스의 감시에 의해서 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하며, 그 선택한 영역내를 미리 정해진 기간내에서 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출되었을 때, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과, 상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수가 미리 설정한 값을 밑돌고 있을 때, 이미 등록되어 있는 갱신 어드레스중 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과, 상기 프로세서로부터 지시되었을 때, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하여 이루어진 것을 특징으로 한다.
본 발명의 제 5 양태의 캐시 플러시 장치에 있어서는, 갱신 어드레스 삭제 수단은, 재기록을 요구하는 명령을 검지했을 때, 미리 정해진 기간내에서 재기록 어드레스에 대응하는 영역내를 검색하고, 그 재기록 어드레스와 일치하는 갱신 어드레스가 검출되었을 때, 그 갱신 어드레스를 삭제(remove)한다(검출되지 않았을 때에는 아무것도 하지 않는다). 이 경우에는 영역내에 이미 비더티 블록이 된 갱신 어드레스도 혼재하여 계속해서 격납될 가능성을 포함하게 되지만, 엔트리 해방 수단이 빈 엔트리수를 관리하여 능동적으로 빈 엔트리를 확보하는 처리중에서 삭제되는 것도 있고, 또한 플러시 실행 수단이 이 비더티 블록이 된 어드레스를 재기록하는 명령을 발행하여도, 어느쪽의 캐시 메모리도 이 명령에 응답하지 않을 뿐이며 아무런 문제는 없다.
한편으로, 이 갱신 어드레스 삭제 수단의 삭제 처리에 허비하는 시간을 소정의 범위내로 억제하기 위해, 메인 메모리에 대한 액세스 빈도가 매우 높은 경우등에 있어서도 다른 처리에 악영향을 부여하는 일이 없다.
또, 이 갱신 어드레스 삭제 수단이, 미리 정해진 기간내에서 삭제 처리를 실행하는 대신에, 해당 캐시 메모리 장치가 다음에 처리해야 할 명령을 검지할 때까지 계속해서 실행하는 것도 유효하다. 이것에 따르면, 다른 처리에 악영향을 부여하는 것을 방지하는 동시에, 불필요하게 격납된 갱신 어드레스의 삭제 처리의 계속/중단이 보다 적절하게 행해지게 된다.
또한, 갱신 어드레스 삭제 수단이, 전술한 바와 같은 재기록을 요구하는 명령의 검지 이외에, 예컨대 캐시 미스가 발생했을 때에 발행되는 독출 명령등을 검지하여, 그 명령의 대상이 되는 어드레스가 영역내에 갱신 어드레스로서 등록되어 있지 않은지 검색하고, 검출되었을 때에 삭제 등을 행하는 것이 바람직하다. 이 캐시 미스가 발생했을 때에 발행되는 독출 명령의 대상이 되는 어드레스로 표시되는 데이타는, 클린한 상태라고 판단할 수 있기 때문에, 이러한 명령을 계기로 하면, 불필요한 갱신 어드레스의 삭제 처리를 실행하는 빈도를 높일 수 있고, 입력을 해방하는 처리나 캐시의 플러시 동작을 경감하는 것이 가능해진다.
또한, 예컨대 예상되는 캐시 메모리의 더티율에 따라서는, 각 영역이 갖는 엔트리수를, 대응하는 캐시 블록수보다도 작게하여도 성능상 문제가 되지 않기 때문에, 그 경우에 각 영역이 갖는 엔트리수를 대응하는 캐시 블록수보다도 작게 하면, 구비해야 할 하드웨어양을 감소하는 것이 가능해진다.
또한, 경우에 따라서는 갱신 어드레스 기억 수단이 구비하는 복수의 영역을, 갱신 어드레스만으로 선택가능하게 구성하는 것도 유효하다. 예컨대, 시스템 버스의 규정에 의해서는, 시스템 버스의 감시만으로는 프로세서의 식별 번호를 수득할 수 없는 경우도 있다. 즉, 그 경우에도 해당 캐시 플러시 장치를 적용가능해지기 때문이다.
본 발명의 제 6 양태의 캐시 플러시 장치는, 상기 갱신 어드레스 기억 수단이, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하고, 상기 갱신 어드레스 등록 수단이, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며, 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 상기 시스템 버스의 감시에 의해서 검지하여, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하며, 그 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 디크리먼트 수단을 또 구비하고, 상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 치기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역중의 갱신 어드레스가 격납되어 있던 엔트리를 모두 빈 엔트리로 하는 엔트리 일괄 해방 수단을 또 구비하여 이루어진 것을 특징으로 한다.
본 발명의 제 6 양태의 캐시 플러시 장치에 따르면, 더티 블록 카운터를 관리함으로써, 임의의 영역에 등록된 갱신 어드레스 모두가 메인 메모리로의 재기록이 불필요해진 것을 검지할 수 있고, 그 때에 엔트리 일괄 해방 수단이 모든 엔트리를 공백 상태로서 엔트리 해방 수단의 동작 기회를 감소시키면, 계산기 전체의 성능을 향상시키는 것이 가능해진다.
본 발명의 제 7 양태에 따르면, 캐시 플러시 장치는, 상기 갱신 어드레스 기억 수단이, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하고, 상기 갱신 어드레스 등록 수단이, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며, 상기 갱신 어드레스 삭제 수단이, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하고, 상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 치기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 또 구비하여 이루어진 것을 특징으로 한다.
본 발명의 제 7 양태의 캐시 플러시 장치도, 더티 블록 카운터를 관리함으로써, 임의의 영역에 등록된 갱신 어드레스 모두가 메인 메모리로의 재기록이 불필요해진 것을 것을 검지할 수 있고, 그 때에 엔트리 일괄 해방 수단이 모든 엔트리를 공백 상태로서 엔트리 해방 수단의 동작 기회를 감소시키면, 계산기 전체의 성능을 향상시키는 것이 가능해진다.
또한, 임의의 영역에 격납된 모든 갱신 어드레스가 재기록이 불필요해 졌을 때를 대신하여, 격납된 갱신 어드레스수가 더티 블록 카운터의 값을 미리 정해진 값을 초과하여 많아졌을 때, 엔트리 해방 수단에 어느 정도의수의 갱신 어드레스를 해방시키는 것도 유효하다. 이 경우에는 재기록이 불필요해진 갱신 어드레스가 소정량을 초과하여 격납되는 것을 회피하며, 캐시 플러시 조작시에 불필요하게 발행되는 명령의 수를 감소시키는 것이 가능해진다. 본 발명의 제 8 양태에 따르면, 계산기 시스템은 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템으로서, 청구항 제 1 항, 제 2 항, 제 3 항, 제 7 항 내지 제 13 항중 어느 한 항 기재의 캐시 플러시 장치와, 상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과, 상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과, 고장이 발생했을 때에, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하여 이루어진 것을 특징으로 한다.
중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서는 이 체크포인트의 획득에 허비하는 시간을 어떻게 단축할지가 중요하다. 그리고, 이 체크포인트 획득 처리의 대부분을 캐시 플러시 조작이 차지하고 있다. 즉, 이러한 계산기 시스템에, 전술한 바와 같은 캐시 플러시 장치를 적용하면, 시스템 전체의 성능을 향상시키는 것이 가능해진다.
또, 체크포인트를 정기적으로 획득하는 것에 덧붙여서, 주계 및 종계라는 복수의 계산기를 구비한 계산기 시스템의 경우도, 전술한 바와 같은 캐시 플러시 장치를 적용하는 것이 바람직하다. 체크포인트 획득시의 소요 시간을 단축할 수 있기 때문에, 시스템 전체의 성능을 향상시키는 것이 가능해지기 때문이다. 또, 이들 계산기가 통상시에 실행하는 데이타 처리중에, 캐시 플러시 장치의 플러시 실행 수단을 기동하면, 체크포인트 획득시의 소요 시간을 더욱 단축시킬 수 있다.
이하 도면을 참조하여 본 발명에 의한 캐시 플러시 장치를 구비한 계산기 시스템의 실시예를 설명한다. 도 1은 제 1 실시예의 구성을 나타내는 블록도이다. 캐시 일관성을 갖는 카피백형의 캐시 메모리(20)를 갖는 복수의(여기서는, 3개의) 프로세서(10)는 시스템 버스(40)에 접속된다. 여기서, 캐시 메모리가 프라이머리와 세컨더리의 2계층 또는 그 이상의 계층으로 구성되는 경우, 본 실시예에서 말하는 캐시 메모리란, 시스템 버스(40)에 가장 가까운 캐시 메모리를 가리킨다. 또한, 캐시 메모리에 따라서는 명령을 격납하는 캐시 메모리와, 데이타를 격납하는 캐시 메모리로 분리되고 있는 것도 있지만, 그 경우, 본 실시예에서 말하는 캐시 메모리란, 데이타를 격납하기 위한 캐시 메모리를 가리킨다. 또한, 본 시스템에 있어서의 시스템 버스(40)상에서의 어드레스는 32비트로서 설명한다.
시스템 버스(40)에는 캐시 플러시 장치(30)와, 메인 메모리(51)에 접속되는 메모리 컨트롤러(50)도 접속된다. 캐시 플러시 장치(30)는 버스 인터페이스(31), 갱신(update) 어드레스 기억부(32)(영역 A0∼An-1로 이루어진다), 갱신 어드레스 등록(register)부(33), 갱신 어드레스 삭제(remove)부(34) 및 플러시 실행부(35)로 구성된다.
갱신 어드레스 등록부(33)와 갱신 어드레스 삭제부(34)는 2 이상의 기능을 갖는 하나의 하드웨어 모듈로서 실행되어야 한다. 버스 인터페이스(31)는 시스템 버스(40)와의 인터페이스를 취급한다.
갱신 어드레스 기억부(32)는 모든 더티 블록의 어드레스를 유지하기 위한 n개의 영역(region) A0∼An-1로 구성된다. 본 실시예에서는 모든 더티 블록의 어드레스가 갱신 어드레스 기억부(32)에 격납되고, 더티가 아닌 어드레스는 갱신 어드레스 기억부(32)에는 격납되지 않는다.
여기서, 영역의 구조에 대해서 설명한다. 영역 Ai는 도 2a, 도 2b에 도시된 바와 같이, 갱신 어드레스를 격납하는 1개 이상의 엔트리를 갖는다. 각 엔트리에 격납되어 있는 값이 유효한지의 여부를 나타낼 필요가 있지만, 이 방법으로는 하기의 2개의 방법중 어느 하나에 기초하는 것이 적당하다.
(1) 갱신 어드레스가 격납되어 있지 않은 엔트리에는, 통상은 결코 취득하지 않은 값(예컨대, 0xFFFFFFFF)을 격납한다(도 2a).
(2) 어드레스를 격납하는 엔트리란 특별히 엔트리의 내용이 유효한지의 여부(valid or invalid)를 나타내는 플래그를 각 엔트리에 붙인다(도 2b).
또, 갱신 어드레스 기억부(32)를 구성하는 영역의 설치 방법, 및 어드레스와 영역의 대응에 대해서는, 뒤에 상세한 설명을 행한다.
도 3은 갱신 어드레스 등록부(33)의 동작 순서를 나타낸다. 프로세서(10)에 의한 데이타 기록에 의해, 캐시 메모리(20)상에서 데이타 갱신이 발생한 것을 나타내는 명령을 검지하면(단계 A1), 갱신이 발생한 어드레스(갱신 어드레스), 및 갱신을 행한 프로세서의 식별 번호에 기초하여, 갱신 어드레스 기억부(32)를 구성하는 n개의 영역 A0∼An-1중 어느 한쪽 영역을 선택하고(단계 A2), 선택한 영역에 속하는 엔트리중에서 빈 엔트리(empty entry)를 찾고, 이 경우, 이 갱신 어드레스를 기록한다(단계 A3).
갱신을 행한 프로세서(10)의 식별 번호의 획득(capture)은 시스템 버스의 규정에 따라, 하기의 2와 같은 경우가 있다.
(1) 상기 명령에 포함되는 경우
(2) 버스 아비트레이션의 신호를 감시함으로써 수득되는 경우
도 4는 갱신 어드레스 삭제부(34)의 동작 순서를 나타낸다. 더티 블록의 내용을 메인 메모리로 재기록(write back)하기 위한 명령을 검지하면 (단계 B1), 재기록이 발생한 어드레스(재기록 어드레스), 및 재기록을 행한 프로세서의 식별 번호에 기초하여, 갱신 어드레스 기억부(32)를 구성하는 n개의 영역 A0∼An-1중 어느 한쪽 영역을 선택하여(단계 B2), 그 영역에 포함되는 엔트리중에서 그 어드레스를 포함하는 엔트리를 찾아, 갱신 어드레스를 삭제한다(단계 B3).
또, 갱신 어드레스 등록부(33) 및 갱신 어드레스 삭제부(34)는 프로세서 식별 번호와 어드레스로부터 갱신 어드레스 기억부(32)를 구성하는 n개의 영역 A0∼An-1중 어느 한쪽 영역을 선택하는 방법에 있어서, 동일한 방법을 취하지 않으면 안된다. 또한, 갱신 어드레스 기억부(32)를 n개의 영역으로 구성하는 이유는, 갱신 어드레스 삭제부(34)가 재기록 어드레스를 포함하는 엔트리를 찾아, 삭제하는 동작을 캐시 메모리마다 고속화하기 위함이다.
도 5는 플러시 실행부(35)의 동작 순서를 나타낸다.
플러시 실행부(35)는 프로세서로부터의 지시에 기초하여, 갱신 어드레스 기억부(32)에 격납되어 있는 모든 어드레스를 순차적으로 취출하여, 그 어드레스를 갖는 더티 블록의 내용을 메인 메모리에 재기록하는 것을 요구하는 명령을 시스템 버스에 발행한다. 이 때문에, 단계 C1에서 영역을 나타내는 변수 i를 0으로 하고, 단계 C2에서 영역 Ai에 갱신 어드레스가 있는지 없는지 결정한다. Yes인 경우는 단계 C3에서 영역 Ai에 포함되는 갱신 어드레스를 취출하고, 그 어드레스의 더티 블록의 내용을 메인 메모리에 재기록을 요구하는 명령을 발행하여 단계 C2로 되돌아간다. 단계 C2에서 No인 경우는 단계 C4에서 변수 i를 인크리먼트하여, 단계 C5에서 모두의 영역의 처리가 끝났는지 아닌지 판정하기 위해서 i=n인지 아닌지 결정한다. No인 경우는 단계 C2로 되돌아가고, Yes인 경우는 종료한다.
취출된 어드레스를 갱신 어드레스 기억부(32)로부터 삭제하는 처리는 플러시 실행부(35)가 실행하여도 좋지만, 플러시 실행부(35)가 발행한 메인 메모리(51)로의 재기록을 요구하는 명령을 갱신 어드레스 삭제부(34)가 검지함으로써도 가능하다.
다음에, 본 실시예의 캐시 플러시 장치(30)의 제어 방법에 준하여, 그 동작을 설명한다.
(초기화)
프로세서(10)는 캐시 플러시 장치(30)를 동작시키기 전에, 캐시 메모리(20)의 상태와 캐시 플러시 장치(30)의 갱신 어드레스 기억부(32)의 내용이 일치하도록 초기화를 행한다. 초기화에서는 모든 캐시 블록을 인밸리드 상태로 한다(invalidate a11 the cache blocks). 영역 A0∼An-1은 갱신 어드레스를 포함하지 않도록 초기화된다.
(캐시 플러시 장치(30)의 통상시의 동작)
프로세서(10)가 초기화를 행한 후, 캐시 플러시 장치(30)를 구성하는 각부가 소정의 동작을 행함으로써, 갱신 어드레스 기억부(32)에는 모든 더티 블록의 어드레스가 유지된다. 반대로 갱신 어드레스 기억부(32)에 격납되어 있는 갱신 어드레스에 대하여, 반드시 더티 블록이 존재한다. 그것에 대해서 설명한다. 여기서는, 임의의 프로세서(10)가 캐시 메모리(20)상에서 데이타를 갱신하는 경우를 생각한다.
(1) 그 캐시 메모리(20)가 갱신해야 할 데이타를 유지하고 있지 않은 경우, 그 어드레스의 데이타를 요구하는 동시에, 다른 캐시 메모리(20)에 대하여, 그 어드레스의 데이타의 무효화를 요구하는 명령이 시스템 버스(40)에 대하여 발행된다. 그리고, 그 캐시 메모리(20)에 데이타가 공급되면, 그 캐시 블록이 더티 상태로 변화한다. 갱신 어드레스 등록부(33)는 상기 명령을 버스 인터페이스(31)를 통해 받아들이고, 갱신 어드레스 및 프로세서 식별 번호에 기초하여, 영역 A0∼An-1중 어느 하나를 선택하여, 그 영역의 빈 엔트리에 상기 어드레스를 기록한다.
(2) 그 캐시 메모리(20)가 갱신해야 할 데이타를 Shared 상태로 유지하고 있는 경우, 다른 캐시 메모리(20)에 대하여, 그 어드레스의 데이타가 무효화를 요구하는 명령이 시스템 버스(40)에 대하여 발행된다. 그리고, 다른 캐시 메모리(20)로부터의 응답이 있으면, 그 캐시 블록의 상태가 더티하게 변화한다. 갱신 어드레스 등록부(33)는 상기 명령을 버스 인터페이스를 통해 받아들이고, 갱신 어드레스 및 프로세서 식별 번호에 기초하여, 영역 A0∼An-1중 어느 하나를 선택하여, 그 영역에 상기 어드레스를 기록한다.
(3) 그 캐시 메모리(20)가 갱신해야 할 데이타를 이미 더티 상태로 유지하고 있는 경우, 시스템 버스(40)상에 데이타 갱신을 나타내는 명령은 나오지 않고, 따라서, 캐시 플러시 장치(30)는 아무런 동작도 하지 않는다. 그러나, 그 캐시 블록의 어드레스는, 일찌기 더티 상태 이외에서 더티 상태가 되었을 때, 그 어드레스가 영역 A0∼An-1중 어느 하나에 기억되어 있기 때문에 문제는 생기지 않는다.
캐시 메모리에 의해서는, 전술한 (1)∼(3)의 상태의 그 외에, Clean Exclusive라는 상태를 취득하는 것이 있다. Clean Exclusive 상태라고 하는 것은 캐시 메모리의 내용은 메인 메모리와 동일하고, 또한 그 어드레스의 데이타를 유지하고 있는 캐시 메모리는 그 캐시 메모리뿐인 것을 나타낸다. 캐시 블록이 Clean Exclusive 상태가 되는 것은 프로세서가 데이타를 판독하려고 해서 캐시 미스가 발생하며, 그 데이타를 요구하는 명령이 시스템 버스에 발행되었을 때, 어느쪽의 캐시 메모리도 「그 데이타를 가지고 있다」라는 응답을 돌려 주지 않았을 경우이다.
캐시 블록이 Clean Exclusive 상태인 경우에, 그 캐시 블록에 대하여 데이타의 기록이 행해지면, 다른 캐시 메모리에는 그 어드레스에 대응하는 캐시 블록이 존재하지 않기 때문에, 시스템 버스에는 데이타의 갱신을 나타내는 명령이 발행되지 않으며, 캐시 블록이 더티 상태로 변화한다.
따라서, 본 실시예에서는 Clean Exclusive 상태를 취득하는 캐시 메모리를 사용할 경우는, 캐시 블록이 Clean Exclusive 상태가 되지 않도록 할 필요가 있다. 그것은, 캐시 플러시 장치(30)에, 임의의 캐시 메모리가 프로세서로부터의 데이타 판독으로 캐시 미스를 일으켜 시스템 버스에 데이타를 요구하는 명령에 대하여, 「그 데이타를 가지고 있다」라는 응답을 돌려 주는 기능을 추가하는 것으로 실현된다.
또한, 임의의 더티 블록의 내용이 메인 메모리(51)에 재기록되는 경우, 갱신 어드레스 삭제부(34)가 그 명령을 검지하여, 재기록 어드레스와 프로세서 식별 번호를 바탕으로, 갱신 어드레스 등록부(33)가 영역 A0∼An-1을 선택한 것과 같은 방법으로 영역 A0∼An-1중 어느 하나를 선택하여, 그 속에 포함되는 동일 어드레스를 삭제한다.
(캐시 플러시 장치(30)에 의한 캐시 플러시 동작)
프로세서(10)가 캐시 플러시 장치(30)에 캐시 플러시를 명령하면, 플러시 실행부(35)는 프로세서(10)로부터의 지시에 기초하여, 갱신 어드레스 기억부(32)에 격납되어 있는 모든 어드레스를 순차적으로 취출하여, 그 어드레스를 갖는 더티 블록의 내용을 메인 메모리(51)로 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행한다.
이 결과, 더티 블록이 존재하지 않고, 또한, 갱신 어드레스 기억부(32)에도 갱신 어드레스가 기억되어 있지 않은 초기 상태로 되돌아간다.
본 실시예에 있어서는, 갱신 어드레스 기억부(32)를 구성하는 영역 A0∼An-1의 설정 방법, 및 어드레스와 영역과의 대응은 캐시 메모리(20)의 구성에 맞추는 것이 바람직하다. 다음에 그것에 대해서 설명한다.
(영역의 설계 방법 그 1)
우선, 캐시 메모리(20)가 다이렉트맵 방식이고, 프로세서수가 1이라는 가장 단순한 경우에 대해서 설명한다. 지금, 1개의 캐시 블록의 크기가 B바이트, 캐시 블록의 개수가 M이라 한다. 이 경우, 통상의 캐시 메모리에서는, 어드레스 a번지의 데이타는 (a/B mod M)번째의 캐시 블록에 격납된다.
이 경우, 영역 A0∼An-1은 캐시 블록과 1:1로 대응시켜 설치한다. 즉, 영역의 개수 n을 캐시 블록수 M과 동일하게 하여, 어드레스 a번지의 데이타는 (a/B mod M)번째의 영역에 격납한다. 또, 프로세서수가 1이므로, 갱신 어드레스 등록부(33) 및 갱신 어드레스 삭제부(34)는 프로세서 식별 번호를 사용할 필요는 없다.
여기서, 최근의 프로세서가 구비하고 있는 라이트 버퍼라고 불리는 기구를 갖는 캐시 메모리에 대처할 필요가 있으므로, 그것에 대해서 설명한다.
라이트 버퍼란, 프로세서 및 캐시 메모리로부터 메인 메모리로의 데이타 기록 요구를 일시적으로 저장하는 버퍼이다. 라이트 버퍼를 구비함으로써, 프로세서가 더티 블록에 대하여 별도의 어드레스의 데이타를 갱신하고자 하여 라이트 미스가 발생한 경우, 우선 새롭게 갱신해야 할 데이타를 메인 메모리로부터 독출하고, 그 후에, 원래의 더티 블록의 내용을 메인 메모리에 재기록하게 된다. 즉, 프로세서로 말하면, 새롭게 갱신해야 할 데이타가 재빠르게 이용가능해지는 것으로, 그 만큼만 성능이 향상하게 된다.
최근의 프로세서에서는 라이트 버퍼를 2개 이상 구비하기 때문에, 같은 캐시 블록에 대응하는 여러가지 어드레스에서의 데이타 갱신이 잇달아 일어나면, 메인 메모리로부터 갱신해야 할 데이타의 독출이 잇달아 일어나고, 그 후, 더티 블록의 재기록이 연속해서 일어날 가능성이 있다.
이 때문에, 시스템 버스(40)를 관측하고 있는 캐시 플러시 장치(30)에는 마치 1개의 영역에 대한 갱신 어드레스가 라이트 버퍼의 수+1만큼 존재하도록 보이는 것이 일시적으로 일어나므로, 그것에 대한 대책이 필요하다.
가장 단순한 대책은 각 영역의 엔트리수를 증가시키는 것이지만, 다음과 같은 문제가 있다.
(1) 엔트리수를 크게하기 위해, 하드웨어양이 커진다.
(2) 많은 엔트리중에서, 메인 메모리로의 재기록이 있던 어드레스를 발견하는 것을 고속화하기는 어렵다.
캐시 메모리가 다이렉트맵 방식의 경우에 한하면, 라이트 버퍼 기구를 갖는 캐시 메모리에 대해서는, 하기에 나타낸 2개의 구체예가 유효하다.
(구체예 1)
여기서는, 각 영역의 엔트리수를 1로 한다. 갱신 어드레스 등록부(33)가 데이타 갱신을 나타내는 명령을 검지했을 때의 캐시 플러시 장치(30)의 동작 순서를 나타내는 도 6, 갱신 어드레스 삭제부(34)가 더티 블록의 메인 메모리(51)로의 재기록을 나타내는 명령을 검지했을 때의 캐시 플러시 장치(30)의 동작 순서를 나타내는 도 7을 참조하여 동작 순서를 설명한다.
(1) 갱신 어드레스 등록부(33)는 데이타 갱신을 나타내는 명령을 검지하면, 대응하는 영역의 엔트리에 갱신 어드레스를 기록한다(도 6).
(2) 갱신 어드레스 삭제부(34)는 더티 블록의 내용인 메인 메모리(51)로의 재기록 명령을 검지하면, 대응하는 영역의 엔트리의 내용과 재기록 어드레스를 비교한다. 일치하면, 그 엔트리의 내용을 빈 엔트리의 상태로 변경한다(도 7).
(3) 플러시 실행부(35)는 각 영역에 대해서, 그 영역의 엔트리가 빈 엔트리가 아닐 때, 그 어드레스의 더티 블록의 내용인 메인 메모리(51)로의 재기록을 요구하는 명령을 시스템 버스(40)에 발행한다.
여기서, 도 8을 참조하여, 프로세서(10)가, 0번지, B×M번지, 2B×M번지에 각각 데이타 D0, Dl, D2를 연속하여 기록하는 경우의 동작을 설명한다. 다만, B는 캐시 블록의 크기, M은 프로세서의 캐시 블록수이다.
(1) 프로세서(10)가, 0번지에 데이타 D0을 기록하려고 하였지만, 캐시 블록 0에 0번지의 데이타가 격납되어 있지 않으므로, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터라고 하는 것은 실제로는 일어나지 않는다)에, 0번지에서 (B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다(issue).
(2) 그 결과, 캐시 블록 0에, 0번지에서 (B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 0번지의 데이타가 D0에 갱신된다. 또한, 영역 A0에는 0번지가 갱신된 것에 대응하여 갱신 어드레스 0이 격납된다.
(3) 프로세서(10)가 B×M번지에 데이타 D1을 기록하려 했으나, 캐시 블록 0에 B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되고 있는 0번지의 데이타를 메인 메모리(51)에 재기록하기 위한 메인 메모리(51)로의 라이트 요구(write request)가, 라이트 버퍼에 격납된다. 또한, 시스템 버스(40)에, 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)에(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터라고 하는 것은 실제로는 일어나지 않는다), B×M번지로부터 (B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(4) 그 결과, 캐시 블록 0에, B×M번지로부터 (B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, B×M 번지의 데이타가 D1에 갱신된다. 또한, 영역 A0에는 B×M번지가 갱신된 것에 대응하여 B×M이 격납된다.
(5) 프로세서(10)가 2B×M번지에 데이타 D2를 쓰려고 하였지만, 캐시 블록 0에 2B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되어 있는 B×M번지의 데이타를 메인 메모리(51)에 재기록하기 위한 메인 메모리(51)로의 라이트 액세스 요구가 라이트 버퍼에 격납된다. 이 결과, 라이트 버퍼에는 메인 메모리(51)로의 재기록의 명령이 2개 격납되게 된다. 또한, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)에(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터 라고 하는 것은 실제로는 일어나지 않는다), 2B×M번지로부터 (2B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(6) 그 결과, 캐시 블록 0에, 2B×M번지로부터 (2B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 2B×M번지의 데이타가 D2에 갱신된다. 또한, 영역 A0에는 2B×M번지가 갱신된 것에 대응하여 2B×M이 격납된다.
(7) 라이트 버퍼에 격납되어 있던, 0번지에서 (B-1)번지까지의 데이타의 메인 메모리(51)로의 재기록의 명령(write request commnand)이, 시스템 버스(40)에 발생된다. 갱신 어드레스 삭제부(34)는 영역 A0의 내용 2B×M과 재기록 어드레스(the address of the write request command) 0이 일치하지 않으므로, 아무것도 하지 않는다.
(8) 라이트 버퍼에 격납되어 있던, B×M번지로부터 (B×M+B-1)번지까지의 데이타의 메인 메모리(51)로의 재기록의 명령이 시스템 버스(40)에 발생된다. 갱신 어드레스 삭제부(34)는 영역 A0의 내용 2B×M과 재기록 어드레스 B×M이 일치하지 않으므로, 아무것도 하지 않는다. 이상, 구체예 1에 대해서 설명하였다.
(구체예 2)
여기서는 각 영역의 엔트리수를 1로 하고, 그 영역에 대응하는 갱신 어드레스가 몇개 있는지를 나타내는 카운터를 설치한다. 엔트리 및 카운터는 하기와 같이 사용된다.
(1) 카운터 0은, 그 영역에 포함되는 갱신 어드레스가 없는 것을 나타낸다(counter value zero means).
(2) 갱신 어드레스 등록부(33)는 데이타 갱신을 검지하면, 대응하는 영역의 엔트리에 갱신 어드레스를 기록하는 동시에, 그 영역의 카운터를 +1한다.
(3) 갱신 어드레스 삭제부(34)는 더티 블록의 내용의 메인 메모리(51)로의 재기록을 검지하면, 대응하는 영역의 카운터를 -1한다.
(4) 플러시 실행부(35)는 각 영역에 대해서, 그 영역의 카운터가 0이 아닐 때, 그 어드레스의 더티 블록의 내용의 메인 메모리(51)로의 재기록을 요구하는 명령을 시스템 버스(40)에 발행한다.
영역 Ai의 구조를 도 9에 나타낸다. 32비트의 엔트리에 4비트의 카운터가 설치된다.
도 10은 갱신 어드레스 등록부(33)가 데이타 갱신을 나타내는 명령을 검지했을 때의 캐시 플러시 장치(30)의 동작 순서, 도 11은 갱신 어드레스 삭제부(34)가 더티 블록의 메인 메모리(51)로의 재기록을 나타내는 명령을 검지했을 때의 캐시 플러시 장치(30)의 동작 순서, 및 도 12는 플러시 실행부(35)의 동작 순서를 각각 나타낸다.
다음에, 도 13을 참조하여, 프로세서(10)가, 0번지, B×M번지, 2B×M번지에 각각 데이타 D0, D1, D2를 연속하여 기록하는 경우의 동작을 설명한다. 다만, B는 캐시 블록의 크기, M은 프로세서의 캐시 블록수이다.
(1) 프로세서(10)가, 0번지에 데이타 D0를 쓰려고 하였지만, 캐시 블록0에 0번지의 데이타가 격납되어 있지 않으므로, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터 라고 하는 것은 실제로는 일어나지 않는다)에, 0번지로부터 (B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전달되는 명령을 시스템 버스(40)에 발한다.
(2) 그 결과, 캐시 블록 0에, 0번지로부터 (B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 0번지의 데이타가 D0에 갱신된다. 또한, 영역 A0에는 0번지가 갱신된 갓에 대응하여 0이 격납되며, 카운터의 값은 인크리먼트되어 1이 된다.
(3) 프로세서(10)가 B×M 번지에 데이타 D1을 기록하려고 하였지만, 캐시 블록 0에 B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되어 있는 0번지의 데이타를 메인 메모리(51)에 재기록하기 위한 메인 메모리(51)로의 라이트 액세스 요구가, 라이트 버퍼에 격납된다. 또한, 시스템 버스(40)에, 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터 라고 하는 것은 실제로는 일어나지 않는다)에, B×M번지로부터 (B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(4) 그 결과, 캐시 블록 0에, B×M번지로부터 (B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, B×M번지의 데이타가 D1에 갱신된다. 또한, 영역 A0에는 B×M번지가 갱신된 것에 대응하여 B×M이 격납된다. 또한, 카운터의 값은 +1되어 2가 된다.
(5) 프로세서(10)가 2B×M번지에 데이타 D2를 기록하려고 했으나, 캐시 블록 0에 2B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되어 있는 B×M번지의 데이타를 메인 메모리(51)로 재기록하기 위한 메인 메모리(51)로의 라이트 액세스 요구가 라이트 버퍼에 격납된다. 이 결과, 라이트 버퍼에는 메인 메모리(51)로의 재기록의 명령이 2개 격납되게 된다. 또한, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)(이 경우, 프로세서수는 1이므로, 다른 프로세서(10)로부터 라고 하는 것은 실제로는 일어나지 않는다)에, 2B×M번지로부터 (2B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(6) 그 결과, 캐시 블록 0에, 2B×M번지에서 (2B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 2B×M번지의 데이타가 D2에 갱신된다. 또한, 영역 A0에는 2B×M번지가 갱신된 것에 대응하여 2B×M이 격납된다. 또한, 카운터의 값은 +1되어 3이 된다.
(7) 라이트 버퍼에 격납되어 있던, 0번지로부터 (B-1)번지까지의 데이타의 메인 메모리(51)로의 재기록의 명령이 시스템 버스(40)에 발생한다. 영역 A0에 대응하는 카운터의 값은 -1되어, 2가 된다.
(8) 라이트 버퍼에 격납되어 있던, B×M번지로부터 (B×M+B-1)번지까지의 데이타의 메인 메모리(51)로의 재기록의 명령이 시스템 버스(40)에 발생한다. 또한, 영역 A0에 대응하는 카운터의 값은 -1되어, 1이 된다.
이상, 구체예 2에 대해서 설명하였다.
(영역의 설계 방법 그 2)
다음에, 캐시 메모리(20)가 다이렉트맵 방식이고, 프로세서수가 P라는 경우에 대해서 설명한다. 이 경우, 1개의 캐시 블록의 크기가 B바이트, 캐시 블록의 개수가 M이라 한다.
이 경우, 2개의 구체예가 있다.
(구체예 3)
영역의 개수 n을 P×M으로 하고, 각 영역의 엔트리수를 1로 한다. 그리고, 최초의 M개의 영역을 최초의 프로세서(10)의 캐시 메모리(20)에, 다음 M개의 영역을 2번째 프로세서(10)의 캐시 메모리(20)에, 라는 상태로 대응시킨다. 갱신 어드레스 등록부(33) 및 갱신 어드레스 삭제부(34)는 상술한 바와 같이 프로세서 식별 번호와 어드레스를 바탕으로, 영역을 선택하면 좋다. 각 영역은 1개의 프로세서(10)의 1개의 캐시 블록과 대응되므로, 프로세서(10)가 갖는 라이트 버퍼로의 대처로는 이전에 설명한 구체예 1 및 구체예 2가 유효하다.
(구체예 4)
영역의 개수 n을 M으로 하고, 각 영역의 엔트리수를 P로 한다. 영역Ai는 각 프로세서(10)의 제 i 번째 캐시 블록에 대응시킨다.
이러한 대응을 행함으로써, 임의의 프로세서(10)에서 데이타 갱신이 발생했는지에 의하지 않고, 갱신이 있었던 어드레스로부터 대응하는 영역이 요구되므로, 제 1 후보와 다르며, 프로세서 식별 번호는 필요없다. 따라서, 시스템 버스의 규정에 의해, 데이타 갱신을 행한 프로세서의 식별 번호가 수득될 수 없는 경우에도 유효하다.
다만, 프로세서가 갖는 라이트 버퍼(write buffer)로의 대처로는 이전에 설명한 구체예 1 및 구체예 2를 적용할 수 없다는 문제가 있다. 그 때문에, 라이트 버퍼를 갖는 프로세서에 대해서는 구체예 3이나, 또는, 후술하는 제 2 내지 제 4 실시예에 기초하는 편이 바람직하다.
(영역의 설계 방법 그 3)
다음에, 캐시 메모리가 N웨이의 세트 어소시어티브이고, 캐시 블록수가 M, 프로세서수가 1인 경우에 대해서 설명한다. 1개의 캐시 블록의 크기가 B바이트라고 한다. 이 경우, N개의 캐시 블록이 그룹을 형성하여, 어드레스 a번지의 데이타는 ((a/B) mod (M/N))번째 그룹의 캐시 블록에 격납되게 된다.
(구체예 5)
이 경우, 영역의 개수 n은 M/N으로 하고, 각 영역의 엔트리수는 N으로 한다. 또한, 어드레스 a번지의 데이타는 ((a/B) mod (M/N))번째의 영역에 격납한다. 이 방법의 결점은 프로세서(10)가 라이트 버퍼를 갖는 경우, 다이렉트맵의 캐시 메모리(20)의 경우와 같은 개량안이 없는 것이다. 이 문제에 대해서는, 다음에 나타내는 제 2 내지 제 4 실시예에 나타내는 방식에 따르는 것이 바람직하다.
(구체예 6)
캐시 메모리(20)가 세트 어소시어티브라도, 갱신 어드레스가 어떤 웨이에 격납되는지, 시스템 버스(40)의 제어 신호선을 관측하는(observe) 등의 수단에 의해서 알수 있는 경우에는, 다이렉트맵의 경우와 같이, 각 캐시 블록마다 영역을 설정하는 것이 가능하다. 그 경우에는 프로세서(10)가 갖는 라이트 버퍼로의 대처로는 이전에 설명한 구체예 1 및 구체예 2가 유효하다.
이상 설명한 본 실시예의 캐시 플러시 장치(30)에 의한 캐시 플러시처리와 종래의 소프트웨어에 의한 캐시 플러시 처리를 비교하면, 캐시 블록이 더티인 비율이, 예컨대 50%를 초과하는 매우 높은 경우는, 더티 블록의 내용을 메인 메모리(51)에 재기록하는 처리가 많기 때문에, 소요 시간에 큰 차이는 없다.
한편, 캐시 블록이 더티인 비율이, 예컨대 10%인 경우, 소프트웨어에 의한 캐시 플러시에서는 다음 더티 블록을 찾아 내는데, 평균하여 2버스 사이클×10=20사이클을 요하는데 대하여, 본 실시예의 캐시 플러시 장치(30)의 플러시 실행부(35)는 각 영역 A0∼An-1에 기억되어 있는 어드레스를 순서대로 취출하는(태그 서치) 것을, 예컨대 복수의 영역을 병렬로 검사하는 하드웨어에 의해 고속화할 수 있으므로, 캐시 플러시 처리 시간을 단축할 수 있다.
또한, 영역 A0∼An-1에 어드레스 이외에 부가 정보를 갖게 하는 것에 의해서도 태그 서치 시간을 고속화할 수 있다. 이 예에 대해서는 제 2 실시예에서 설명한다. 본 캐시 플러시 장치의 또 하나의 효과는 전용의 하드웨어를 설치하였으므로, 캐시 플러시 장치에 캐시 플러시 처리를 하게 하면서, 프로세서는 통상의 처리를 실행할 수 있다고 하는 점이다. 이것은 본 실시예의 캐시 플러시 장치를 체크포인트 방식을 채용한 내장해성의 계산기 시스템에 적용하는 경우에 특히 효과가 있다. 이것에 대해서는 제 5 및 제 6 실시예에서 설명한다.
또, 지금까지 설명해 온 캐시 플러시 장치(30)는 플러시 실행부(35)가, 더티 블록에 대하여, 그것이 유지하고 있는 데이타를 메인 메모리(51)에 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행함으로써, 캐시 플러시를 실행할 수 있는 것을 전제로 하고 있다.
통상의 시스템에서는 캐시사이에서 데이타의 일관성을 유지하면서 데이타의 독출을 요구하는 Read-line이라는 명령이 그것에 해당한다. Read-line에 대한 응답으로는 2종류가 있다. 첫째는 더티 블록의 내용이 시스템 버스 상에서 응답되고, 메인 메모리의 대응하는 부분이 이 응답에 따라 갱신된다. 둘째는 Retry(조금 뒤에 다시 Read-Line을 실행시켜라)가 시스템 버스에 발행된다. 다음에, 더티 블록이 속하는 캐시 메모리가 자발적으로 Write-Line 명령을 시스템 버스에 발행하여 더티 블록의 내용을 메인 메모리에 재기록한다. 그리고, Retry를 받은 쪽이, 다시 Read-Line을 시스템 버스에 발행하면, 이번에는 메인 메모리가 최신의 데이타를 응답한다.
그러나, 계산기 시스템에 따라서는 Read-Line 명령을 시스템 버스에 발행하여도, 더티 블록의 내용이 메인 메모리 재기록되지 않고, 더티 블록에 계속해서 유지되는 일도 있을 수 있다. 그래서, 여기서는 그와 같은 계산기 시스템에 적용가능한 캐시 플러시 장치(30)의 2개의 구체예에 대해서 설명한다.
(구체예 7)
캐시 플러시 장치(30)가 캐시 플러시를 행할 때, 우선, Read-Line-with- Invalidate 명령이라는, 더티 블록의 데이타를 독출하는 동시에, 더티 블록의 내용을 무효화하는 명령을 발행하여, 다음에, Write-Line 명령을 발행함으로써, 이전에 독출한 데이타를 메인 메모리(51)에 재기록하는 방법이다. 이 방법은, 데이타 일관성을 유지하기 위해, 캐시 플러시 장치(30) 자신이, 마치 더티 블록을 보유하는 캐시 메모리(20)와 동일하게 동작할 필요가 있다.
(구체예 8)
제 2 구성법은 우선, 프로세서(10)가 갱신 어드레스 기억부(32)에 기억된 모든 갱신 어드레스를 취득할 수 있도록 한다. 이것은 예컨대 도 14에 도시된 바와 같이, 갱신 어드레스 기억부(32)에 기억된 모든 갱신 어드레스를 순차적으로 독출하는 기능을 갖는 갱신 어드레스 독출부(37)를 플러시 실행부(35) 대신에 캐시 플러시 장치(30)에 설치하고, 프로세서가 이 갱신 어드레스 독출부(37)가 보존하는 갱신 어드레스를 독출할 수 있도록 함으로써 실현한다. 갱신 어드레스 독출부(37)는 프로세서에 갱신 어드레스를 독출할 때마다, 새로운 갱신 어드레스를 준비한다. 또, 프로세서에 의한 갱신 어드레스의 독출시에, 한번에 복수의 갱신 어드레스를 독출할 수 있도록 하여 더욱 고속화하는 것도 생각할 수 있다. 그리고, 프로세서(10)가, 이 갱신 어드레스 독출부(37)를 통해 취득한 어드레스를 사용하여, 더티 블록의 내용을 메인 메모리로 재기록하도록 한다. 이 때, 프로세서(10)는, 캐시 조작 명령을 사용하거나, 또는 갱신 어드레스와 같은 캐시 블록에 격납되는 별도의 어드레스의 데이타를 메인 메모리로부터 독출함으로써, 캐시 블록의 리프레스먼트를 일으키게 한다. 이것을, 갱신 어드레스가 없어질 때까지 반복하면 모든 더티 블록을 메인 메모리에 재기록할 수 있다. 갱신 어드레스가 없어졌다고 하는 정보는 갱신 어드레스와 동일하게, 프로세서가 갱신 어드레스 독출부(37)로부터 독출한다. 이 방법은 캐시 플러시 장치(30)가 데이타 일관성의 관리를 할 필요가 없기 때문에, 하드웨어가 간단해지는 것이 장점이다. 또한, 프로세서(10)가 모든 처리를 소프트웨어로 실행한다.
종래의 방법과 비교하여, 더티 블록을 효율이 좋게 발견할 수 있기 때문에, 캐시 플러시 처리가 고속이다.
이 구체예 8의 동작을 나타내는 흐름도를 도 15에 나타낸다. 단계 Ha1에서 영역을 나타내는 변수 i가 0이 되고, 단계 Ha2에서 영역 Ai에 갱신 어드레스가 있는지의 여부가 판정된다. 갱신 어드레스가 있을 경우는, 단계 Ha3에서 영역 Ai에 포함되는 갱신 어드레스를 취출하여 유지한다. 단계 Ha4에서 갱신 어드레스가 프로세서에 의해 독출되었는지의 여부가 판정된다. Yes인 경우, 단계 Ha2로 되돌아가고, No인 경우는 단계 Ha5에서 i가 1만큼 증가되고, 단계 Ha6에서 i가 n에 도달했는지의 여부가 판정된다. No인 경우, 단계 Ha2로 되돌아가며, Yes인 경우는 단계 Ha7에서 갱신 어드레스가 없어진 것을 나타내는 정보를 유지하여 동작을 종료한다.
구체예 7(Read-Line-with-Inva1idate∼Write-Line)에 나타내는 방법에서는 캐시 플러시 장치가 데이타 일관성을 유지하기 위해서 캐시와 같은 동작을 할 필요가 있다. 그러나, 구체예 8(Read-Line∼Write-Line(Write-Line은 무조건 Inva1idate도 포함한다))에 나타내는 방법에서는, 캐시 플러시 장치가 데이타 일관성을 유지하기 위해서 캐시와 같은 동작을 할 필요가 없다. 구체예 8은 UltraSPARC판 MBT에서 설계하고 있다. 이 방법에서는, 캐시 플러시 장치가 블록의 데이타를 가지고 있는 동안에, 오너가 데이타를 재기록할 가능성이 있지만, 그 때에는 그 데이타를 버리고, 플러시 실패라고 하면 좋다. 버스가 일원화되어 있지 않은 시스템(계층 버스 시스템이나 DSM 시스템)에서는 데이타 일관성이 무너지기 때문에, 적응할 수 없을 가능성이 있다. 이 경우에도, 2상째로 한정하여 적용하는 것은 가능하다.
이하, 본 발명의 다른 실시예를 설명한다. 이하의 설명에서, 제 1 실시예와 대응하는 부분은 동일한 참조 숫자를 부가하여 상세한 설명은 생략한다.
(제 2 실시예)
다음에, 본 발명의 제 2 실시예를 설명한다. 도 16은 본 발명의 제 2 실시예의 계산기 시스템의 시스템 구성을 나타낸다. 캐시 플러시 장치(30)가 적용되는 계산기의 구성은 제 1 실시예와 같다.
캐시 플러시 장치(30)는 버스 인터페이스(31), 갱신 어드레스 기억부(32)(영역 A0∼An-1), 갱신 어드레스 등록부(33), 플러시 실행부(35) 및 엔트리 해방부(36)로 구성된다.
갱신 어드레스 기억부(32)는 모든 더티 블록의 어드레스를 유지하기 위한 n개의 영역(영역 A0∼An-1)으로 구성된다. 본 실시예에서는 모든 더티 블록의 어드레스가 갱신 어드레스 기억부(32)에 격납되지만, 그 이외에, 일찌기 더티 블록이었지만 현재에는 그렇지 않은 어드레스도 갱신 어드레스 기억부(32)에 격납될 때가 있다. 이것은 본 실시예에서는, 제 1 실시예에서 나타낸 갱신 어드레스 삭제부(34)를 가지지 않은 경우에 의한 것이며, 이것이 제 1 실시예와의 기본적인 차이이다.
여기서, 영역 Ai의 구조에 대해서 설명한다. 영역 Ai의 각 엔트리에 격납되어 있는 값이 유효한지의 여부를 나타내기 위해서는, 제 1 실시예에서 나타낸 방법을 채용할 수도 있지만, 하기의 방법에 기초하는 쪽이 보다 바람직하다.
즉, 영역을 구성하는 복수의 엔트리를 순환(cyc1ic) 버퍼로서 사용한다. 독출 포인터(R 포인터)와 기록 포인터(W 포인터)를 설치하고, R 포인터가 지시하는 엔트리로부터 W 포인터가 지시하는 엔트리의 하나전의 엔트리까지 갱신 어드레스가 격납되도록 한다. 다만, W 포인터와 R 포인터가 일치하는 경우에, 그것이 모든 엔트리가 공백인 상태를 나타내는지, 모든 엔트리가 공백이 아닌 상태를 나타내는지가 불분명하고(it is ambiguous whether …or …), 이것을 판별하기 위해서, 풀플래그라는 1비트의 플래그도 설치한다(equipped with fullnes f1aq, a one bit f1ag). 이 방법은 갱신 어드레스 등록부(33)나 플러시 실행부(35)의 동작이 고속화하기 쉽다는 장점이 있다.
도 17은 본 실시예의 영역의 구성을 나타내는 개념도이다. R 포인터는 유효한 갱신 어드레스중, 가장 오래 등록된 것(registered least recently)를 나타낸다. 또한, W 포인터는 새로운 갱신 어드레스를 등록해야 할 위치를 나타낸다. 그리고, 풀플래그는 W 포인터와 R 포인터가 일치할 경우에, 그것이 모든 엔트리가 공백인 상태를 나타내는(풀플래그=OFF)것인지, 모든 엔트리가 공백이 아닌 상태를 나타내는(풀플래그=ON)것인지의 판별에 사용한다.
갱신 어드레스 등록부(33)는 제 1 실시예와 같다.
엔트리 해방부(36)는 전술한 갱신 어드레스 등록부(33)가 있는 영역에 갱신 어드레스를 기록하려고 했을 경우에, 그 영역에 속하는 공백(empty) 엔트리가 없는 것을 검출했을 때에, 격납되어 있는 갱신 어드레스중에서 1개를 선택하여, 그 어드레스를 갖는 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행한다. 이 때, 그 어드레스를 유지하고 있는 엔트리를 공백으로 한다. 또, 엔트리 해방부(36)는 상기 타이밍으로 엔트리를 해방하는 것이 가장 효율적이지만, 아직 빈 엔트리가 조금 남아 있는, 보다 빠른 타이밍으로 행하는 것도 가능하다.
도 18은 캐시 메모리(20)상에서 데이타 갱신이 발생한 것을 나타내는 명령을 갱신 어드레스 등록부(33)가 검지했을 때의, 갱신 어드레스 등록부(33) 및 엔트리 해방부(36)의 처리 플로우(process f1ow)를 나타낸다. 단계 I1에서 데이타 갱신을 나타내는 명령을 검출하면, 단계 12에서 프로세서 식별 번호(identifier)와 갱신 어드레스(update address)로부터 대응하는 영역 Ai를 구한다. 단계 I3에서 영역 Ai의 풀플래그가 온인지의 여부를 판정한다. No인 경우는 단계 18로 이동하고, Yes인 경우는 단계 I4에서 엔트리 해방부 (36)가 영역 Ai의 R 포인터가 나타내는 엔트리중의 어드레스를 이용하여 더티 블록의 메인 메모리로의 재기록을 요구하는 명령을 발행한다. 단계 15에서 R 포인터가 최후의 엔트리를 지시하고 있는지의 여부를 판정한다. No인 경우는 단계 I6에서 R 포인터를 1만큼 인크리먼트하고, Yes인 경우는 단계 I7에서 R 포인터가 최초의 엔트리를 지시하도록 하고나서, 단계I8을 실행한다. 단계 I8에서는 W 포인터가 나타내는 위치에 갱신 어드레스를 등록한다.
단계 I9에서 W 포인터가 최후의 엔트리를 지시하고 있는지의 여부를 판정한다. No인 경우는 단계 I10에서 W 포인터를 1만큼 인크리먼트하고, Yes인 경우는 단계 I11에서 W 포인터가 최초의 엔트리를 지시하도록 하고나서, 단계 I12를 실행한다. 단계 I12에서는 W 포인터와 R 포인터가 나타내는 위치가 같은지 아닌지 판정한다. 같은 경우에는 단계 I13에서 풀플래그를 온으로 하고나서 종료하고, 같지 않은 경우에는 즉시 종료한다.
플러시 실행부(35)의 처리 플로우를 도 19에 도시한다. 플러시 실행부(35)는 프로세서(10)로부터의 지시에 기초하여, 갱신 어드레스 기억부(32)에 격납되어 있는 모든 어드레스를 순차적으로 취출하여(이 결과, 독출된 어드레스는 갱신 어드레스 기억부(32)로부터 지워진다)(단계 J2∼J10), 그 어드레스의 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행한다(단계 J5).
이 실시예에서는 각 영역 Ai에 대해서, R 포인터로부터 W 포인터가 지시하는 범위의 엔트리에만 유효한 갱신 어드레스가 격납되므로, 더티 블록이 존재하는 비율이 작은 경우라도, 효율적으로 더티 블록의 어드레스를 취출할 수 있으며, 캐시 플러시가 고속화된다.
다음에, 본 실시예의 캐시 플러시 장치(30)의 제어 방법에 준하여, 그 동작을 설명한다.
(초기화)
프로세서(10)는 캐시 플러시 장치(30)를 동작시키기 전에, 캐시 메모리(20)의 상태와 캐시 플러시 장치(30)의 갱신 어드레스 기억부(32)의 내용이 일치하도록 초기화를 행한다. 초기화에서는 모든 캐시 블록을 인밸리드 상태로 한다(inva1idate all the cache blocks). 영역 A0∼An-1은 초기화하지 않아도 정확하게 동작하지만, 각 영역에 대응하는 R 포인터와 W 포인터를 일치하도록 하는 것이 성능상 바람직하다(is recommended in terms of performance).
(캐시 플러시 장치(30)의 통상시의 동작)
프로세서(10)가 초기화를 행한 후, 캐시 플러시 장치(30)를 구성하는 각부가 소정의 동작을 행함으로써, 갱신 어드레스 기억부(32)에는 모든 더티 블록의 어드레스가 유지된다. 다만, 임의의 더티 블록의 내용을 메인 메모리(51)에 재기록할 때, 그것에 따라서 영역 A0∼An-1에 유지되어 있는 어드레스를 삭제할 리 없고, 따라서, 영역 A0∼An-1에 포함되어 있는 어드레스의 더티 블록이 존재하지 않는 경우도 있다. 그것에 대해서 설명한다.
갱신 어드레스 등록부(33)가 캐시 메모리(20)상에서 데이타가 갱신된 것을 검지하면, 그 갱신 어드레스와 데이타 갱신을 행한 프로세서(10)의 식별 번호에 기초하여, 영역 A0∼An-1중 어느 하나를 선택하여, 그 영역에 어드레스를 기록하려고 한다. 여기서, 그 영역에 빈 엔트리가 없으면, 즉, 풀플래그가 ON이면, 엔트리 해방부(36)는 R 포인터가 지시하는 엔트리에 격납되어 있는 어드레스를 갖는 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행한다. 이 결과, 상기 어드레스를 갖는 더티 블록이 있으면, 그 내용이 메인 메모리(51)에 재기록되고, 비더티 상태가 된다. 또한, 상기 어드레스를 갖는 더티 블록이 없는 경우에는 아무것도 일어나지 않는다. 어떻든, 이 조작에 의해 상기 어드레스에 대한 더티 블록이 없는 것을 보증할 수 있으므로, 빈 엔트리를 갱신 어드레스 등록부(33)를 갱신 어드레스의 기록에 사용할 수 있다.
또한, 프로세서(10)가 데이타 처리를 하는 과정에서 더티 블록의 내용이 메인 메모리(51)에 재기록되는 경우, 캐시 플러시 장치(30)를 구성하는 각부는 아무런 동작도 행하지 않는다.
(캐시 플러시 장치(30)에 의한 캐시 플러시시의 동작)
프로세서(10)가 캐시 플러시 장치(30)에 캐시 플러시를 명령하면, 플러시 실행부(35)는 프로세서(10)로부터의 지시에 기초하여, 갱신 어드레스 기억부(32)에 격납되어 있는 모든 어드레스를 순차적으로 취출하여, 그 어드레스를 갖는 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것을 요구하는 명령을 시스템 버스(40)에 발행한다.
이 결과, 더티 블록이 존재하지 않고, 또한, 갱신 어드레스 기억부(32)에도 갱신 어드레스가 기억되어 있지 않은 초기 상태로 되돌아간다.
본 실시예는 제 1 실시예와 비교하여, 갱신 어드레스 기억부(32)를 구성하는 영역의 설정 방법 및 어드레스와 영역과의 대응의 자유도가 각별히 커지고 있다. 즉, 제 1 실시예에서는 갱신 어드레스 기억부(32)의 영역은 캐시 메모리(20)의 구성에 맞출 필요가 있었다. 그것은 각 영역이 더티 블록의 어드레스를 정확하게 유지하고, 또한 영역에 유지할 수 없게 된 경우에, 더티 블록의 내용을 메인 메모리(51)에 재기록하는 액션을 취하는 수단이 없었기 때문이다. 이것에 대하여, 본 실시예에서는 갱신 어드레스를 영역에 유지할 수 없게 된 경우에는 엔트리 해방부(36)가 그 영역에 유지되어 있는 갱신 어드레스를 1개 취출하여, 그 어드레스를 갖는 더티 블록의 내용의 메인 메모리(51)로의 재기록을 요구하는 명령을 시스템 버스(40)에 발행함으로써, 캐시 메모리(20)의 상태를 갱신 어드레스 기억부(32)의 상태에 맞출 수 있다.
갱신 어드레스 기억부(32)를 구성하는 영역의 설정 방법 및 어드레스와 영역과의 대응의 구체예를 설명한다.
(구체예 1)
캐시 메모리(20)가 다이렉트맵 방식이고, 프로세서수가 p라는 경우를 생각한다. 이 경우, 예컨대, 모든 프로세서(10)의 i번째의 캐시 블록에 대응시켜, 영역을 1개 설치할 수 있다. 1개의 캐시 메모리(20)의 캐시 블록수를 M 으로 하면, 영역의 수 n은 M이 된다.
1개의 영역을 구성하는 엔트리수는 제 1 실시예에서는 적어도 p 필요하였지만, 본 실시예에서는 그것 보다 적게 할 수 있다. 이 경우, 1개의 영역에 대응하는 캐시 블록의 개수는 p이지만, 통상, 임의의 캐시 블록이 더티인 비율(probability)는 20∼50% 정도이므로, 엔트리수는 p/2 정도로 하여도 좋다. 또한, 프로세서 l0의 라이트 버퍼에의 대책은 특별히 필요는 없다. 이것에 대해서는 후술한다.
(구체예 2)
가장 극단적인 예이기는 하지만, 영역의 개수를 1개로 하여도 좋다. 캐시 블록의 개수는 p×M이므로, 엔트리수는 예컨대 p×M/4∼p×M/2 정도로 한다. 이 때, 캐시 메모리(20)의 구성은 다이렉트맵 방식이라도, 세트 어소시어티브 방식이라도, 풀 어소시어티브 방식이라도 정확하게 동작한다.
본 실시예의 경우, 빈 엔트리가 있는 동안은 캐시 플러시 장치(30)는 시스템 버스(40)에 대하여 아무런 명령도 발행하지 않는다. 그러나, 빈 엔트리가 없어지면, 캐시 메모리(20)상에서 라이트 미스가 발생할 때마다, 더티 블록의 내용의 메인 메모리(51)로의 재기록을 요구하는 명령이 1개 발생한다.
이와 같이, 영역의 개수를 1개로 하면, 프로세서 식별 번호나 갱신 어드레스로부터 대응하는 영역을 선택하는 하드웨어가 불필요해진다고 하는 장점이 있는 반면, 같은 어드레스에 대한 캐시 미스가 몇번이나 발생하면, 복수의 엔트리에 그 갱신 어드레스가 격납되어 버린다는 사태가 생기기 쉽게 되어, 그만큼 성능이 열화한다.
따라서, 갱신 어드레스 기억부(32)의 구성을 결정할 때는 하드웨어 설계와 성능과의 밸런스에 배려하여 어느정도 캐시 메모리(20)의 구조(cache b1ock configuration of the cache memory 20)에 맞출 필요가 있다.
(구체예 3)
캐시 메모리(20)가 N웨이의 세트 어소시어티브 방식이고, 캐시 블록수가 M, 프로세서수가 p라는 경우에 대해서 설명한다. 1개의 캐시 블록의 크기가 B바이트라고 한다. 이 경우, N개의 캐시 블록이 그룹을 형성하고, 어드레스 a번지의 데이타는 ((a/B) mod (M/N))번째의 그룹의 캐시 블록에 격납된다.
이 때, 영역을 p×M개로 하고, 각 영역의 엔트리수를 1로 한다. 그리고, 프로세서 식별 번호가 k인 프로세서에 의한 a번지 데이타의 갱신을 (M×k+(a/BmodM))번째의 영역에 대응시킨다.
이 방법에서는, 캐시 메모리(20)상에서는 N웨이의 세트 어소시어티브로 관리되어 있지만, 캐시 플러시 장치(30)상에서는 다이렉트맵의 캐시 메모리로서 관리한다. 이 결과, 예컨대, 식별 번호 0의 프로세서(10)가 캐시 메모리(20)상에서 0번지의 데이타를 더티 상태로 유지하고 있는 경우에, B×M번지의 데이타를 갱신하려고 하면, 캐시 플러시 장치(30)가 0번지의 데이타의 메인 메모리(51)로의 재기록을 요구하는 요구를 발행한다.
원래, 세트 어소시어티브 방식의 캐시 메모리(20)를 더티 상태의 경우만이라고는 해도, 다이렉트맵 방식으로 관리하는 것은 캐시 히트율의 열화가 되지만, 캐시 플러시 장치(30)의 설계에 관해서는, 다이렉트맵 방식과같이 관리함으로써, 1개의 엔트리에 포함되는 갱신 어드레스를 참조하는 것 만으로 좋으며, 하드웨어의 간단화와 처리의 고속화가 실현된다.
본 실시예에서는 상기 구체예 1 및 구체예 2에서 나타낸 바와 같이, 하나의 영역을 모든 프로세서(10)의 어느 캐시 블록에 대응시키는 것도 가능하다. 이것에 의해, 갱신 어드레스 등록부(33)등은 영역 A0∼An-1을 구할 때, 프로세서(10)의 식별 번호는 필요로 하지 않으므로, 시스템 버스(40)의 규정이 명령중에 프로세서 식별 번호를 포함하지 않도록 되어 있는 경우에도 적용할 수 있다. 다음에, 도 20을 참조하여, 프로세서(10)가 0번지, B×M번지, 2B×M번지에 각각 데이타 D0, D1, D2를 연속하여 기록하는 경우의 동작을 설명한다. 다만, B는 캐시 블록의 크기, M은 프로세서의 캐시 블록수이다. 또한, 영역A0의 엔트리수는 2로 한다.
(1) 프로세서(10)가 0번지에 데이타 D0을 기록하려고 했지만, 캐시 블록 0에 0번지의 데이타가 격납되어 있지 않으므로, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)에 0번지에서 (B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(2) 그 결과, 캐시 블록 0에, 0번지에서 (B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 0번지의 데이타가 D0에 갱신된다. 또한, 영역 A0에는 0번지가 갱신된 것에 대응하여 0이 격납된다.
(3) 프로세서(10)가 B×M번지에 데이타 D1를 기록하려고 했지만, 캐시 블록 0에 B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되어 있는 0번지의 데이타를 메인 메모리(51)에 재기록을 위한 메인 메모리(51)로의 라이트 액세스 요구가 라이트 버퍼에 격납된다. 또한, 시스템 버스(40)에, 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)에 B×M번지에서 (B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(4) 그 결과, 캐시 블록 0에, B×M번지로부터 (B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, B×M번지의 데이타가 D1에 갱신된다. 또한, 영역 A0에는 B×M번지가 갱신된 것에 대응하여, 0과 B×M이 격납된다.
(5) 프로세서(10)가 2B×M번지에 데이타 D2를 기록하려고 했지만, 캐시 블록 0에 2B×M번지의 데이타가 격납되어 있지 않으므로, 현재 더티 상태로 유지되어 있는 B×M번지의 데이타를 메인 메모리(51)에 재기록하기 위한 메인 메모리(51)로의 라이트 액세스 요구가 라이트 버퍼에 격납된다. 이 결과, 라이트 버퍼에는, 메인 메모리(51)로의 재기록의 명령이 2개 격납되게 된다. 또한, 시스템 버스(40)에 메인 메모리(51) 혹은 다른 프로세서(10)의 캐시 메모리(20)에, 2B×M번지로부터 (2B×M+B-1)번지의 데이타를 요구하는 동시에, 데이타를 갱신하는 것을 다른 프로세서(10)에 전하는 명령을 시스템 버스(40)에 발한다.
(6) 그 결과, 캐시 블록 0에, 2B×M번지로부터 (2B×M+B-1)번지까지의 데이타가 더티 상태로 격납되고, 그 중, 2B×M번지의 데이타가 D2에 갱신된다. 또한, 영역 A0에는 2B×M번지가 갱신된 것에 대응하여 2B×M을 격납하려고 하여, 빈 엔트리가 없기(풀플래그=ON) 때문에, 가장 최초에 격납된 어드레스 0번지를 갖는 더티 블록의 내용의 메인 메모리(51)로의 재기록을 요구하는 명령이 시스템 버스(40)에 발행된다.
(7) 캐시 플러시 장치(30)로부터 시스템 버스(40)에 발행된 상기 명령에 호응하여, 프로세서(10)의 라이트 버퍼에 격납되어 있던 0번지∼(B-1)번지의 데이타의 메인 메모리(51)로의 재기록이 행해진다.
(8) 라이트 버퍼에 격납되어 있던, B×M번지로부터 (B×M+B-1)번지까지의 데이타의 메인 메모리(51)로의 재기록 명령이 시스템 버스(40)에 발생한다.
(9) 캐시 플러시 장치(30)는 (8)의 명령에 대해서 아무런 처리를 하지 않으므로, 영역 A0의 엔트리에는 2B×M과 동시에 3×M도 계속해서 유지된다.
(제 3 실시예)
다음에, 본 발명의 제 3 실시예를 설명한다. 도 21에는 본 발명의 제 3 실시예의 계산기 시스템의 시스템 구성을 나타낸다. 캐시 플러시 장치(30)가 적용되는 계산기의 구성은 제 1 및 제 2 실시예와 같다.
캐시 플러시 장치(30)는 버스 인터페이스(31), 갱신 어드레스 기억부(32)(영역 A0∼An-1), 갱신 어드레스 등록부(33), 갱신 어드레스 삭제부(34), 플러시 실행부(35) 및 엔트리 해방부(36)로 구성된다.
갱신 어드레스 기억부(32), 갱신 어드레스 등록부(33), 플러시 실행부(35) 및 엔트리 해방부(36)는, 제 2 실시예와 같다.
갱신 어드레스 기억부(32)는 제 1 실시예와 유사하지만, 제 1 실시예에서는, 재기록 어드레스에 대응하는 영역중에서 항상 그 어드레스를 유지하는 엔트리를 찾아, 빈 엔트리로 하고 있는 것과 달리, 본 실시예에서는 이 처리를 어떤 일정 시간 만큼 시도하여, 만일, 그 동안에 그 어드레스를 유지하는 엔트리가 발견되면, 그것을 빈 엔트리로 하지만, 혹시, 발견되지 않을 경우에는 닫아 버린다(어드레스를 삭제하지 않는다). 이 결과, 갱신 어드레스 기억부(32)에는 이미 비더티 블록이 된 어드레스도 유지될 가능성이 있으므로, 제 2 실시예와 같이, 엔트리 해방부(36)가 능동적으로 빈 엔트리를 작성한다.
갱신 어드레스 삭제부(34)가 재기록 어드레스와 같은 어드레스가 격납되어 있는 엔트리를 일정 시간 만큼 찾는 가장 전형적인 예를 도 22에 도시하는 흐름도에 따라서 설명한다. 도 22에 도시된 바와 같이, 갱신 어드레스 삭제부(34)는 R 포인터가 지시하는 엔트리의 내용과 재기록 어드레스를 비교하여(단계 K3), 만일 일치하면, R 포인터를 진행시킴으로써(단계 K5∼K6), 갱신 어드레스를 삭제한다. 이 결과, 엔트리 해방부(36)가 적당히 플러시 명령 발행 수단을 통해서 더티 블록을 없애는 조작을 감할 수 있는 만큼, 성능을 향상시킬 수 있다.
또한, 갱신 어드레스 삭제부(34)가 재기록 어드레스와 같은 어드레스가 격납되어 있는 엔트리를 찾는 처리를 일정 시간 만큼 실행하는 대신에, 캐시 메모리(20)상에서의 데이타 갱신을 나타내는 명령이 다음에 검지될 때까지, 또는 더티 블록의 내용을 메인 메모리(51)로 재기록하기 위한 명령이 다음에 검지될 때까지 이 찾는 처리를 실행하는 것도 가능하다. 그 쪽이 갱신 어드레스 삭제부(34)가 실제로 갱신 어드레스 기억부(32)로부터 갱신 어드레스를 삭제하는 빈도가 높아지므로, 성능상은 보다 바람직하다.
또, 본 실시예에 있어서의 갱신 어드레스 삭제부(34)는 더티 블록의 내용을 메인 메모리(51)에 재기록하기 위한 명령을 검지하는 것을 계기로서, 갱신 어드레스 기억부(32)에 동일한 어드레스가 발견되면, 그것을 삭제하는 것으로 하였다. 그러나, 예컨대, 프로세서(10)가 캐시 메모리(20)로부터 데이타를 읽으려고 하여 캐시 미스가 발생했을 때, 캐시 메모리(20)로부터 시스템 버스(40)로 발행되는 명령을 검출한 것을 계기로서, 갱신 어드레스 기억부(32)에 동일한 어드레스가 발견되면 그것을 삭제할 수도 있다. 일반적으로, 시스템 버스(40)에 발행되는 명령으로서, 그 결과, 대상이 되는 어드레스의 캐시 메모리(20)가 더티가 아닌 상태(클린 상태)가 되는 명령의 검지를 계기로 할 수 있다. 이것에 의해, 갱신 어드레스 삭제부(34)가 동작하는 빈도가 증가하고, 엔트리 해방부(36)를 필요로 하는 회수가 줄어, 성능 향상을 기대할 수 있다.
(제 4 실시예)
다음에, 본 발명의 제 4 실시예를 설명한다. 도 23에는 본 발명의 제 4 실시예의 계산기 시스템의 시스템 구성을 나타낸다. 캐시 플러시 장치(30)가 적용되는 계산기의 구성은 제 1 및 제 2 실시예와 같다.
캐시 플러시 장치(30)는 버스 인터페이스(31), 갱신 어드레스 기억부(32)(영역 A0∼An-1), 갱신 어드레스 등록부(33), 갱신 어드레스 삭제부(34), 플러시 실행부(35) 및 엔트리 해방부(36)로 구성된다.
갱신 어드레스 기억부(32)는 제 2 실시예에서 설명한 것에 덧붙여서, 도 24에 도시된 바와 같이 각 영역에 대응하여 이 영역에 대응하는 더티 블록의 개수를 유지하는 더티 블록 카운터를 설치한다.
갱신 어드레스 등록부(33)는 제 2 실시예에서 설명한 것에 덧붙여서, 그 영역에 대한 더티 블록 카운터를 +1하는 기능을 추가한 것이다.
엔트리 해방부(36)는 제 2 실시예에서 설명한 것과 동일하다.
도 25에는 캐시 메모리(20)상에서 데이타 갱신이 발생한 것을 나타내는 명령을 갱신 어드레스 등록부(33)가 검지했을 때의 갱신 어드레스 등록부(33) 및 엔트리 해방부(36)의 처리 플로우를 나타낸다. 단계 L1에서 데이타 갱신을 나타내는 명령을 검출하면, 단계 L2에서 프로세서 식별 번호와 갱신 어드레스로부터 대응하는 영역 Ai를 구한다. 단계 L3에서 더티 블록 카운터를 +1한다. 단계 L4에서 영역 Ai의 풀플래그가 온인지 아닌지를 판정한다. No인 경우는, 단계 L9로 이동하고, Yes인 경우는 단계 L5에서 엔트리 해방부 (36)가 영역 Ai의 R 포인터가 나타내는 엔트리중의 어드레스를 이용하여 더티 블록의 메인 메모리로의 재기록을 요구하는 명령을 발행한다. 단계 L6에서 R 포인터가 최후의 엔트리를 지시하고 있는지의 여부를 판정한다. No인 경우는 단계 L7에서 R 포인터를 1만큼 인크리먼트하고, Yes인 경우는 단계 L8에서 R 포인터가 최초의 엔트리를 지시하도록 하고나서, 단계 L9를 실행한다. 단계 L9에서는 W 포인터가 나타내는 위치에 갱신 어드레스를 등록한다.
단계 L10에서 W 포인터가 최후의 엔트리를 지시하고 있는지의 여부를 판정한다. No인 경우는 단계 L11에서 W 포인터를 1만큼 인크리먼트하고, Yes인 경우는 단계 L12에서 W 포인터가 최초의 엔트리를 지시하도록 하고나서, 단계 L13을 실행한다. 단계 L13에서는 W 포인터와 R 포인터가 나타내는 위치가 같은지 아닌지 판정한다. 같은 경우에는 단계 L14에서 풀플래그를 온으로 하고나서 종료하고, 같지 않은 경우에는 즉시 종료한다.
도 26은 갱신 어드레스 삭제부(34)의 처리 플로우를 나타낸다. 갱신 어드레스 삭제부(34)는 더티 블록의 내용을 메인 메모리(51)에 재기록하기 위한 명령을 검지하면(단계 M1), 재기록이 발생한 어드레스(재기록 어드레스), 및 재기록을 행한 프로세서(10)의 식별 번호에 기초하여, 상기 갱신 어드레스 기억부(32)를 구성하는 n개의 영역 A0∼An-1중 어느 한쪽 영역을 선택하여(단계 M2), 그 더티 블록 카운터를 -1한다(단계 M3). 그리고, 그 결과, 만일 더티 블록 카운터의 값이 제로가 되면, R 포인터의 값을 W 포인터의 값과 일치시키고, 또한, 풀플래그를 OFF로 함으로써(단계 M5), 그 영역이 유지하고 있는 모든 갱신 어드레스를 삭제한다.
도 27은 플러시 실행부(35)의 처리 플로우를 나타낸다. 플러시 실행부(35)는 프로세서(10)로부터 지시에 기초하여, 각 영역의 더티 블록 카운터의 값이 0이 아닌 영역에 대해서, 그 각 엔트리에 격납되어 있는 어드레스를 갖는 더티 블록의 내용의 메인 메모리(51)로의 재기록을 요구하는 명령을 시스템 버스(40)에 발행한다(단계 N3). 그리고, 더티 블록 카운터가 0이 된 후(단계 N2), 그 영역에 대한 처리를 종료한다.
본 실시예에서는 제 2 실시예의 구성에 덧붙여서, 갱신 어드레스 기억부(32)를 구성하는 각 영역에 대응시켜, 더티 블록 카운터를 설치하여, 갱신 어드레스 등록부(33) 및 갱신 어드레스 삭제부(34)가 상기 카운터를 더티 블록의 증감에 맞추어 유지 관리하고 있다. 그리고, 임의의 영역에 대응하는 더티 블록이 모두 없어졌을 경우에, 갱신 어드레스 삭제부(34)가 그 영역의 모든 엔트리를 공백으로 하고 있다.
이 결과, 제 2 실시예와 비교하여, 엔트리 해방부(36)를 기동하는 빈도를 감소시켜, 본 캐시 플러시 장치(30)를 구비한 계산기의 성능을 향상시킬 수 있다.
또, 본 실시예에서는 제 2 실시예에의 수단의 추가로서 설명하였지만, 제 3 실시예에 대해서도 같은 수단을 추가할 수 있다.
또한, 본 실시예에서는 갱신 어드레스 삭제부(34)가 더티 블록 카운터를 디크리먼트한 결과, 0이 되었을 때에, 대응하는 영역 Ai의 모든 엔트리를 공백으로 하고 있지만, 하기에 나타낸 바와 같은 더티 블록 카운터의 제 2 이용법을 생각할 수 있다.
지금, 영역 Ai의 더티 블록 카운터를 디크리먼트한 결과, 1이 되었다고 한다. 이 때, 영역 Ai에 격납되어 있는 갱신 어드레스의 개수(이것은, R 포인터와 W 포인터의 차로부터 구할 수 있다)가 큰 경우, 영역 Ai에 유지되어 있는 대부분의 갱신 어드레스에 대하여, 더티 블록은 실재하지 않는 것을 의미한다.
그래서, 영역 Ai의 모든 엔트리에 대하여 엔트리 해방부(36)를 적용하면, 플러시 실행부(35)가 더티 블록의 실재하지 않는 어드레스에 대하여, 메인 메모리(51)로의 재기록을 요구하는 명령의 발행 회수를 줄일 수 있으며, 성능 향상이 기대된다.
이상, 제 1 실시예에서 제 4 실시예는 캐시 플러시 장치에 대해서 설명하였다. 다음에, 상술한 4개의 실시예중 어느 하나를 이용한 내장해성 계산기(fault tolerant computer)의 실시예를 설명한다.
(제 5 실시예)
도 28은 본 발명의 제 5 실시예를 나타낸다. 제 1 내지 제 4 실시예중 어느 하나의 캐시 플러시 장치(30)가 시스템 버스(40)에 접속된다. 각 프로세서(10)는 캐시 일관성을 구비한 카피백형의 캐시 메모리(20)를 갖는다.
본 실시예의 계산기는 항상, 하기의 3개의 단계중 어느 하나를 실행함으로써, 내장해성이 우수한 데이타 처리 기능을 제공한다.
(1) 데이타 처리 단계(normal data processing step)
캐시 플러시 장치(30)에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행한다.
(2) 체크포인트 작성 단계(checkpoint acquisition step)
이 단계는 데이타 처리 단계를 일시 중단하는 형으로 정기적으로 실행되는 단계이다. 프로세서(10)가 복수 있는 경우에는 모든 프로세서(10)가 동기하여 실행한다. 이 단계에서 행하는 처리는 하기의 2개이다.
(2a) 데이타 처리중의 프로세서(10)의 컨텍스트(프로세서(10)의 프로그램 카운터나 범용 레지스터 등의 내용)를 메인 메모리(51)로 격납한다.
(2b) 상기 캐시 플러시 장치(30)의 플러시 실행부(35)를 기동함으로써, 모든 더티 블록의 내용을 메인 메모리(51)로 재기록한다.
(3) 롤백 리커버리 단계
이 단계는 데이타 처리 단계 또는 체크포인트 작성 단계의 실행중에 계산기에 어떠한 고장이 발생했을 때에 실행되는 단계이다. 이 단계에서 행하는 처리는 하기의 2개이다.
(3a) 직전에 작성한 체크포인트의 상태로 메인 메모리(51)를 복원한다.
(3b) 복원된 메인 메모리(51)에 격납되어 있는 정보를 사용하여, 데이타 처리를 재개한다(재개되면, 데이타 처리 단계로 이동한다).
도 29는 본 실시예의 계산기로서, 시간의 경과와 함께, 3개의 단계가 변해가는 모습을 나타내고 있다.
데이타 처리 단계를 개시하여 일정 시간이 경과하면, 각 프로세서(10)는 체크포인트 작성 단계를 개시한다. 이 체크포인트 작성 단계에서 행하는 제 1 처리는 직전의 데이타 처리 단계이고, 어디까지 처리를 행하였을지, 즉, 직전의 데이타 처리 단계로부터 체크포인트 작성 단계로 전환될 때의 프로세서의 컨텍스트(프로그램 카운터, 상태 레지스터, 및 범용 레지스터 등의 내용)를 메인 메모리(51)에 쓰기 시작하는 것이다. 다만, 실제로는 캐시 메모리(20)상에만 격납되기만 하는 지도 모른다.
체크포인트 작성 단계에서 행하는 제 2 처리는 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것이다. 이 제 2 처리는 캐시 메모리(20)중의 데이타가 깨지게 되는 고장이 발생한 경우에도, 롤백 리커버리 단계에 의해서, 고장 발생 전의 상태에서 데이타 처리를 재개시키기 위해서 필요하다.
체크포인트 작성 단계가 종료하면, 데이타 처리 단계를 재개한다. 이 때, 체크포인트 작성 단계에서 메인 메모리(51)에 쓰기 시작한 프로세서(10)의 컨텍스트가 사용된다.
도 29에서는 3번째 데이타 처리 단계의 도중에서 어떠한 고장이 발생하여, 롤백 리커버리 단계가 개시한 취지를 나타낸다. 롤백 리커버리 단계에서 행하는 제 1 처리는 메인 메모리(51)의 상태를 직전의 체크포인트 작성 단계를 실행한 상태, 별도의 표현을 하면, 3번째 데이타 처리 단계를 개시하기 직전의 상태로 복원하는 것이다.
일반적으로, 데이타 처리 단계에서는 더티 블록의 내용의 메인 메모리(51)로의 재기록이 수시 발생하므로, 메인 메모리(51)의 상태는 데이타 처리 단계 개시시의 상태에서 조금씩 변화한다. 그래서, 롤백 리커버리 단계의 제 1 처리로서, 메인 메모리(51)의 상태를 직전의 체크포인트의 상태로 복원한다. 이 복원의 방법은 예컨대, 더티 블록의 내용의 메인 메모리(51)로의 재기록이 발생할 때마다, 메인 메모리(51)의 재기록 전의 내용을 로그 메모리에 축적해 두고, 그것을 이용하여 메인 메모리(51)의 상태를 복원하여도 좋다.
예컨대, a번지에 D1이라는 데이타의 재기록이 발생할 때, 메인 메모리 컨트롤러(50)가 그 재기록을 위한 명령을 보류하고, 메인 메모리(51)의 a번지의 내용(D0)을 독출한 후, 메인 메모리(51)의 a번지에 D1을 기록한다. 그리고 a번지와 D0의 조를 축적해 둔다. 그리고, 롤백 리커버리 단계의 제 1 처리로서, a번지의 메인 메모리(51)에 D0을 기록하는 것으로, 직전의 체크포인트시의 메인 메모리(51)의 상태가 복원된다.
또한, 별도의 방법으로는 메인 메모리(51)를 메모리 A와 메모리 B로 이중화(dup1icated)해 두고, 데이타 처리 단계에서의 더티 블록의 내용의 메인 메모리(51)로의 재기록에서는 메모리 A에만 재기록을 행하고, 체크포인트 작성 단계에서, 메모리 A의 변화분을 메모리 B에도 적용함으로써도 실현할 수 있다.
롤백 리커버리 단계의 제 2 처리는 복원한 메인 메모리의 상태에서 데이타 처리 단계를 재개하는 것이다. 이 처리는 체크포인트 작성 단계로부터 데이타 처리 단계로의 이행과 동일하다. 상기 도면의 경우, 3번째의 데이타 처리 단계와 같은 상태에서 4번째 데이타 처리 단계가 개시된다.
또, 롤백 리커버리 단계에서는 이 밖에 고장난 원인을 조사하여, 고장난 장치를 분리하거나, 심각한 장해의 경우에는 데이타 처리 단계의 재개를 닫고, 계산기를 정지시키는 등의 처리가 필요하다. 다만, 이 부분은 본 발명의 본지가 아니므로 설명은 생략한다.
이러한 계산기에서는 정기적으로 체크포인트 작성 단계를 실행하는 만큼, 데이타 처리 성능이 열화하므로, 체크포인트 작성 단계의 소요 시간의 단축이 중요하다. 체크포인트 작성 단계의 처리의 대부분은 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것이므로, 본 발명의 캐시 플러시 장치(30)를 사용함으로써, 재기록 시간이 단축될 수 있고, 체크포인트 작성 단계의 소요 시간의 대폭적인 단축을 기대할 수 있다.
또, 데이타 처리 단계의 후반에, 캐시 플러시 장치(30)의 플러시 실행부(35)를 기동하면, 체크포인트 작성 단계의 소요 시간을 더욱 단축시킬 수 있다. 그것은 캐시 플러시 장치(30)의 플러시 실행부(35)를 기동함으로써, 체크포인트 작성 단계의 개시 시점에서, 더티 블록의 개수가 상기 처리를 하지 않은 경우와 비교하여 상당히 줄기 때문이다. 상기 처리를 하지 않은 경우, 더티 블록의 비율이 예컨대 30%인 것이 15%정도가 된다. 제 1 내지 제 4 실시예의 캐시 플러시 장치(30)의 플러시 실행부(35)는 더티 블록의 비율이 작은 때에도 효율적으로 갱신 어드레스 기억부(32)에 격납되어 있는 갱신 어드레스를 취출할 수 있으므로, 더티 블록의 비율이 15%이면, 체크포인트 작성 단계의 소요 시간은 거의 반이 된다.
(제 6 실시예)
다음에, 본 발명의 제 6 실시예를 설명한다. 도 30에는 제 1 내지 제 4 실시예에 나타낸 어느 하나의 캐시 플러시 장치(30)를 구비한 본 실시예의 내장해성 계산기의 구성을 나타낸다. 도 30에 도시된 바와 같이, 본 실시예에서는 독립한 제 1 계산기(100a)와 제 2 계산기(100b)를 메모리 갱신 관측부(60)(제 1 계산기(100a)내)와 메모리 갱신부(70)(제 2 계산기(100b)내)에서 접속한 구성을 취하고 있다. 제 1 계산기(100a)와 제 2 계산기(100b)는, 적어도 같은 종류의 프로세서(10)와 같은 종류의 메인 메모리(51)를 포함할 필요가 있다. 제 1 계산기(100a)는 항상, 데이타 처리 단계와 체크포인트 작성 단계를 실행한다. 한편, 제 2 계산기(100b)는 통상은 대기 단계를 실행하며, 제 1 계산기(100a)에 장해가 발생하면 제 1 계산기(100a)가 그때까지 실행해 온 데이타 처리를 이어 받는다. 메모리 갱신 관측부(60)는 제 1 계산기(100a)의 시스템 버스(40)를 관측함으로써, 제 1 계산기(100a)에서 발생하는 메인 메모리(51)를 갱신하는 명령을 관측·축적한다. 그리고, 제 1 계산기(100a)의 지시에 의해, 축적하고 있던 명령을 제 2 계산기(100b)에 접속된 메모리 갱신부(70)에 보낸다.
메모리 갱신부(70)는 메모리 갱신 관측부(60)로부터 수취한 명령을 제 2 계산기(100b)의 시스템 버스(40)에 발행함으로써, 제 2 계산기(100b)의 메인 메모리(51)의 상태를 제 1 계산기(100a)와 일치시킨다.
제 1 계산기(100a)의 데이타 처리 단계 및 체크포인트 작성 단계에 대해서 설명한다.
(1) 데이타 처리 단계
캐시 플러시 장치(30)에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행한다.
(2) 체크포인트 작성 단계
이 단계는 데이타 처리 단계를 일시 중단하는 형으로 정기적으로 실행되는 단계이다. 프로세서(10)가 복수 있는 경우에는 모든 프로세서(10)가 동기하여 실행한다. 이 단계에서 행하는 처리는 하기의 3개이다.
(2a) 데이타 처리중의 프로세서(10)의 컨텍스트(프로세서(10)의 프로그램 카운터나 범용 레지스터 등의 내용)를 메인 메모리(51)로 격납한다.
(2b) 상기 캐시 플러시 장치(30)의 플러시 실행부(35)를 기동함으로써, 모든 더티 블록의 내용을 메인 메모리(51)로 재기록한다.
(2c) 메모리 갱신 관측부(60)에 대하여, 축적한 명령을 메모리 갱신부(70)에 보내도록 지시한다.
제 2 계산기(100b)의 대기 단계에서는 각 프로세서(10)는 데이타 처리는 행하지 않고, 메모리 갱신부(70)에 제 1 계산기(100a)에서의 메인 메모리 갱신의 명령이 정기적으로 수신되고 있는지의 여부를 조사한다. 그리고, 일정 기간 이상, 상기 명령이 수신되지 않으면, 제 1 계산기(100a)가 동작 불능에 빠진 것으로 하여, 그 시점의 제 2 계산기(100b)의 메인 메모리(51)의 상태에서 데이타 처리를 행한다.
도 31은 본 실시예의 계산기로서, 시간의 경과에 따른 제 1 계산기(100a)와 제 2 계산기(100b)의 상태가 변화하는 모습을 나타내고 있다.
제 1 계산기(100a)에서는 데이타 처리 단계를 개시하여 일정 시간이 경과하면, 각 프로세서(10)는 체크포인트 작성 단계를 개시한다. 여기서 행하는 제 1 처리는 직전의 데이타 처리 단계이고, 어디까지 처리를 행했는지, 즉, 직전의 데이타 처리 단계로부터 체크포인트 작성 단계로 전환될 때의 프로세서의 컨텍스트(프로그램 카운터, 상태 레지스터, 및 범용 레지스터등의 내용)를 메인 메모리(51)에 쓰기 시작하는 것이다. 다만, 실제로는 캐시 메모리(20)상에만 격납되기만 하는 지도 모른다.
체크포인트 작성 단계에서 행하는 제 2 처리는 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것이다. 이 제 2 처리는 제 1 계산기(100a)에서의 메인 메모리(51)의 갱신을 모두 제 2 계산기(100b)로 보내기 위해서 필요하다.
체크포인트 작성 단계에서 행하는 제 3 처리는 메모리 갱신 관측부(60)에, 축적한 명령을 메모리 갱신부(70)에 보내도록 지시하는 것이다. 이 지시는 체크포인트 작성 단계가 종료하기 직전에 행하는 것이 바람직하다. 그것은 제 2 계산기(100b)에 항상 건전한 메인 메모리 이미지를 유지시키기 위함이다.
체크포인트 작성 단계가 종료하면, 데이타 처리 단계를 재개한다.
이 때, 체크포인트 작성 단계에서 메인 메모리(51)에 쓰기 시작한 프로세서(10)의 컨텍스트가 사용된다.
도 31에서는 3번째 데이타 처리 단계의 도중에 어떠한 고장이 발생한 취지를 나타낸다. 이 때, 제 1 계산기(100a)는 단지 처리를 정지하기만 해도 좋다.
또는, 다음에 제 2 계산기(100b)에서 고장이 발생했을 때 구비하여, 개시-업을 행할 수도 있다.
제 2 계산기(100b)는 제 1 계산기(100a)에서 고장이 발생할 때까지, 대기 단계를 실행한다. 그리고, 시각 T에 있어서, 메모리 갱신부(70)가 메모리 갱신 관측부(60)로부터 명령을 일정 시간 이상 수취하지 않는다고 하여, 데이타 처리 단계를 실행한다. 도 31의 경우, 제 2 계산기(100b)에서는 제 1 계산기(100a)에서의 3번째 데이타 처리 단계와 같은 상태에서 데이타 처리 단계가 개시되게 된다.
이러한 계산기에서는 정기적으로 체크포인트 작성 단계를 실행하는 만큼, 데이타 처리 성능이 열화하므로, 체크포인트 작성 단계의 소요 시간의 단축이 중요하다. 체크포인트 작성 단계의 처리의 대부분은 더티 블록의 내용을 메인 메모리(51)에 재기록하는 것이므로, 캐시 플러시 장치(30)를 사용함으로써 대폭적인 소요 시간의 단축을 기대할 수 있다.
또, 데이타 처리 단계의 후반에, 캐시 플러시 장치(30)의 플러시 실행부(35)를 기동하면, 체크포인트 작성 단계의 소요 시간을 더욱 단축할 수 있는 것은 제 5 실시예의 경우와 동일하다.
이상 상세히 기술한 바와 같이, 본 발명의 캐시 플러시 장치에 따르면, 캐시 메모리상의 모든 더티 블록의 어드레스는 캐시 플러시 장치내의 어느 한쪽 영역에 기억된다. 또한, 임의의 캐시 블록이 일단 더티 상태가 된 후, 비더티 상태가 되었을 경우, 영역으로부터 그 어드레스는 삭제된다. 그리고, 플러시 실행부가 더티 블록의 어드레스를 각 영역으로부터 순차적으로 취출하여, 그 어드레스의 더티 블록의 내용의 메인 메모리로의 재기록을 요구하는 명령을 시스템 버스에 발행함으로써, 모든 더티 블록의 내용이 메인 메모리로 재기록된다.
이것에 의해, 예컨대 종래의 소프트웨어에 의한 캐시 플러시와 같이, 모든 캐시 블록에 대해서 순차적으로 더티 블록인지 아닌지 판정해 간다고 하는 처리를 행할 필요가 없어지기 때문에, 신속하고 또한 효율적인 캐시 플러시 조작을 행하는 것이 가능해진다.
또한, 프로세서가 라이트 버퍼를 갖는 경우라도, 예컨대 각 영역이 1개의 엔트리만을 갖는 구성으로서, 이 엔트리에는 라이트 버퍼가 아니라, 캐시 블록에 격납된 데이타의 어드레스(최신의 갱신 어드레스)만을 격납하도록 하는 등에 의해, 적절한 캐시 플러시 동작이 확보된다. 또, 영역 각각의 사용 상황에 따라서 갱신 어드레스의 재기록 요구를 발행하는 기구를 구비함으로써, 갱신 어드레스 기억부가 구비하는 영역의 엔트리수의 설정이나, 영역과 어드레스와의 대응등의 자유도를 대폭 확대시키는 것을 가능하게 한다.
또한, 본 발명의 계산기 시스템에 따르면, 체크포인트 획득 처리의 대부분을 차지하는 캐시 플러시 조작을 신속하게 또한 효율적으로 행하기 때문에, 시스템 전체의 성능을 향상시키게 된다.

Claims (67)

  1. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하는 계산기에 이용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 데이타의 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 하나의 영역을 선택하고, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  2. 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하는 계산기에 이용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여, 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 갱신 어드레스와 상기 재기록 어드레스를 비교하여, 양쪽이 일치할 때에, 그 선택한 영역에 격납된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  3. 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하는 계산기에 이용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리 및 이 영역에 대응하여 설치되는 카운터를 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응하는 상기 카운터를 디크리먼트하는 갱신 어드레스 삭제 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  4. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하는 계산기에 이용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 데이타의 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  5. 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 갱신 어드레스와 상기 재기록 어드레스를 비교하여, 양쪽이 일치할 때에, 그 선택한 영역에 격납된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  6. 버스 스누프 기구를 갖는 카피백형으로서 다이렉트맵 방식의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리 및 이 영역에 대응하여 설치되는 카운터를 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응하는 상기 카운터를 디크리먼트하는 갱신 어드레스 삭제 수단과;
    상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  7. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  8. 제 7 항에 있어서, 상기 캐시 메모리는 n웨이의 세트 어소시어티브형이며,
    상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각은 n개의 캐시 블록으로 형성되는 그룹과 1:1로 대응하여 설치되는 것을 특징으로 하는 캐시 플러시 장치.
  9. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 일정 시간 만큼 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  10. 제 9 항에 있어서, 상기 갱신 어드레스 삭제 수단은 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 블록 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비된 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  11. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여 이루어진 계산기에 적용되는 캐시 플러시 장치에 있어서,
    상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과;
    상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과;
    상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 해당 캐시 플러시 장치가 다음에 처리해야 할 명령을 검지할 때까지 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과;
    상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과;
    상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  12. 제 11 항에 있어서, 상기 갱신 어드레스 삭제 수단은, 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 플러시 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  13. 제 7 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 캐시 플러시 장치.
  14. 제 9 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 캐시 플러시 장치.
  15. 제 11 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 캐시 플러시 장치.
  16. 제 1 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 캐시 플러시 장치.
  17. 제 7 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 캐시 플러시 장치.
  18. 제 9 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 캐시 플러시 장치.
  19. 제 11 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 캐시 플러시 장치.
  20. 제 7 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 시스템 버스의 감시에 의해서 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 디크리먼트 수단과;
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역중의 갱신 어드레스가 격납된 엔트리를 모두 빈 엔트리로 하는 엔트리 일괄 해방 수단을 추가로 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  21. 제 9 항에 있어서, 상기 갱신 어드레스 기억 수단은 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하며,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  22. 제 11 항에 있어서, 상기 갱신 어드레스 기억 수단은 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하며,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  23. 제 20 항에 있어서, 상기 엔트리 해방 수단은, 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역에 격납되어 있는 갱신 어드레스의 개수가, 그 영역에 대응하는 상기 더티 블록 카운터의 값이 미리 정해진 값을 초과하여 많아졌을 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중의 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 수단을 구비하는 것을 특징으로 하는 캐시 플러시 장치.
  24. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 데이타의 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트(context)의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  25. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 갱신 어드레스와 상기 재기록 어드레스를 비교하여, 양쪽이 일치할 때, 그 선택한 영역에 격납된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  26. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리 및 이 영역에 대응하여 설치되는 카운터를 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응하는 상기 카운터를 디크리먼트하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  27. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  28. 제 27 항에 있어서, 상기 캐시 메모리는 n웨이의 세트 어소시어티브형이고,
    상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각은, n개의 캐시 블록으로 형성되는 그룹과 1:1로 대응하여 설치되는 것을 특징으로 하는 계산기 시스템.
  29. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 일정 시간 만큼 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    e)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스탬.
  30. 제 29 항에 있어서, 상기 갱신 어드레스 삭제 수단은, 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 블록 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  31. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 해당 캐시 플러시 장치가 다음에 처리해야 할 명령을 검지할 때까지 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    e)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  32. 제 31 항에 있어서, 상기 갱신 어드레스 삭제 수단은, 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 블록 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출되었을 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  33. 제 27 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  34. 제 29 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  35. 제 31 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  36. 제 24 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  37. 제 27 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  38. 제 29 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  39. 제 31 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  40. 제 27 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 시스템 버스의 감시에 의해서 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 디크리먼트 수단과;
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역중의 갱신 어드레스가 격납된 엔트리를 모두 빈 엔트리로 하는 엔트리 일괄 해방 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  41. 제 29 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하며,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  42. 제 31 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하며,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  43. 제 40 항에 있어서, 상기 엔트리 해방 수단은, 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역에 격납되어 있는 갱신 어드레스의 개수가 그 영역에 대응하는 상기 더티 블록 카운터의 값이 미리 정해진 값을 초과하여 많아졌을 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중의 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  44. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 데이타의 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 상기 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 갱신 어드레스 독출 수단을 통해 상기 갱신 어드레스를 취득하고, 그 취득한 갱신 어드레스로 표시되는 데이타를 상기 캐시 메모리로부터 상기 메인 메모리로 재기록하기 위한 명령열을 실행함으로써 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 상기 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  45. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보된 캐시 블록각각 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 갱신 어드레스와 상기 재기록 어드레스를 비교하여, 양쪽이 일치할 때, 그 선택한 영역에 격납된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 상기 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 갱신 어드레스 독출 수단을 통해 상기 갱신 어드레스를 취득하고, 그 취득한 갱신 어드레스로 표시되는 데이타를 상기 캐시 메모리로부터 상기 메인 메모리로 재기록하기 위한 명령열을 실행함으로써 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 상기 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  46. 버스 스누프 기구를 갖는 카피백형의 캐시 메모리를 구비한 적어도 1개의 프로세서와, 메인 메모리와, 상기 적어도 1개의 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    a)상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리 및 이 영역에 대응하여 설치되는 카운터를 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응하는 상기 카운터를 디크리먼트하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스를 상기 프로세서가 순차적으로 독출할 수 있도록 준비하는 갱신 어드레스 독출 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 상기 메인 메모리로의 격납, 및 상기 캐시 플러시 장치의 갱신 어드레스 독출 수단을 통해 상기 갱신 어드레스를 취득하고, 그 취득한 갱신 어드레스로 표시되는 데이타를 상기 캐시 메모리로부터 상기 메인 메모리로 재기록하기 위한 명령열을 실행함으로써 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 포함하는 상기 체크포인트 작성 수단과;
    고장이 발생했을 때, 직전에 획득한 체크포인트 시점에서 상기 메인 메모리를 복원하고, 이 복원된 상기 메인 메모리에 유지된 정보를 이용하여, 데이타 처리를 재개하는 롤백 리커버리 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  47. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 데이타의 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 상기 재기록 어드레스와 일치하는 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  48. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보된 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리를 가지고 이루어진 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하고, 그 선택한 영역에 격납된 갱신 어드레스와 상기 재기록 어드레스를 비교하여, 양쪽이 일치할 때, 그 선택한 영역에 격납된 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  49. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보되는 캐시 블록 각각에 대응하여 설치되고, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역으로서, 각각이 1개의 엔트리 및 이 영역에 대응하여 설치되는 카운터를 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중의 어느 한쪽 영역을 선택하고, 그 선택한 영역에 그 갱신 어드레스를 격납하는 동시에, 그 영역에 대응하는 상기 카운터를 인크리먼트하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응하는 상기 카운터를 디크리먼트하는 갱신 어드레스 삭제 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단이 구비한 영역중, 그 영역에 대응하는 카운터의 값이 초기치가 아닌 영역에 격납된 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  50. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    d)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  51. 제 50 항에 있어서, 상기 캐시 메모리는 n웨이의 세트 어소시어티브형이며,
    상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각은, n개의 캐시 블록으로 형성되는 그룹과 1:1로 대응하여 설치되는 것을 특징으로 하는 계산기 시스템.
  52. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 일정시간만큼 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    e)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  53. 제 52 항에 있어서, 상기 갱신 어드레스 삭제 수단은, 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 블록 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출되었을 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  54. 적어도 제 1 및 제 2 계산기를 구비하고, 중단한 처리를 재개시하기 위한 체크포인트를 정기적으로 획득하는 계산기 시스템에 있어서,
    상기 제 1 계산기에서 발생한 메인 메모리로의 기록 명령을 받아들여 축적하고, 상기 제 1 계산기로부터 지시되었을 때, 상기 축적한 명령을 상기 제 2 계산기로 송신하는 메모리 갱신 관측 수단과;
    상기 메모리 갱신 관측 수단이 송신한 명령을 수신하여, 상기 제 2 계산기의 메인 메모리에 대하여 상기 제 1 계산기와 동일한 기록 명령을 발행하는 메모리 갱신 수단을 구비하는데;
    상기 제 1 계산기는,
    a)상기 캐시 메모리내에 확보된 캐시 블록중, 상기 메인 메모리에 재기록해야 할 데이타를 유지한 상태에 있는 캐시 블록인 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역을 복수 구비한 갱신 어드레스 기억 수단과,
    b)상기 시스템 버스를 감시함으로써 상기 캐시 메모리상에서의 데이타 갱신을 검지하고, 데이타 갱신이 있는 갱신 어드레스와 데이타 갱신을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 상기 갱신 어드레스를 격납하는 갱신 어드레스 등록 수단과,
    c)상기 시스템 버스를 감시함으로써 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 재기록이 있는 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호에 기초하여 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내에 상기 재기록 어드레스와 일치하는 갱신 어드레스가 있는지의 여부를 해당 캐시 플러시 장치가 다음에 처리해야 할 명령을 검지할 때까지 검색하여, 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출된 경우, 그 갱신 어드레스를 삭제하는 갱신 어드레스 삭제 수단과,
    d)상기 갱신 어드레스 등록 수단이 선택한 영역의 빈 엔트리수를 소정치와 비교하여, 빈 엔트리수가 상기 소정치를 밑돌 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하고, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 엔트리 해방 수단과,
    e)상기 프로세서로부터의 지시에 응답하여, 상기 갱신 어드레스 기억 수단에 기억된 모든 갱신 어드레스를 순차적으로 독출하고, 그 독출한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 플러시 실행 수단을 포함하는 캐시 플러시 장치와;
    상기 캐시 플러시 장치에 갱신 어드레스의 포착을 시키면서 통상의 데이타 처리를 실행하는 데이타 처리 수단과;
    상기 프로세서 모두가 동기하여 실행하는 데이타 처리중의 컨텍스트의 메인 메모리로의 격납, 상기 캐시 플러시 장치의 플러시 실행 수단이 실행하는 모든 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록, 및 상기 메모리 갱신 관측 수단에 대한 상기 축적한 명령의 상기 제 2 계산기로의 송신 지시를 포함하는 체크포인트 획득 수단을 구비하며;
    제 2 계산기는, 상기 메모리 갱신 수단이 소정의 시간을 초과하여 상기 메모리 갱신 관측 수단으로부터 명령을 수신하지 않았을 때, 데이타 처리를 개시하는 대기 수단을 구비하여 이루어진 것을 특징으로 하는 계산기 시스템.
  55. 제 54 항에 있어서, 상기 갱신 어드레스 삭제 수단은, 임의의 어드레스로 표시되는 데이타를 유지하는 캐시 블록 모두가 더티 블록이 아닌 것을 나타내는 명령을 검지했을 때, 그 어드레스로부터 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역내를 검색하여 상기 재기록 어드레스와 일치하는 갱신 어드레스가 검출되었을 경우, 그 갱신 어드레스를 삭제하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  56. 제 50 항에 있어서,
    상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  57. 제 52 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  58. 제 54 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역 각각이 갖는 엔트리수는 대응하는 캐시 블록의 개수보다 작은 것을 특징으로 하는 계산기 시스템.
  59. 제 47 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  60. 제 50 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  61. 제 52 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  62. 제 54 항에 있어서, 상기 갱신 어드레스 기억 수단이 구비하는 복수의 영역은 상기 갱신 어드레스만으로 선택가능한 것을 특징으로 하는 계산기 시스템.
  63. 제 50 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은, 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 시스템 버스의 감시에 의해서 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 검지하고, 그 재기록 어드레스와 재기록을 행한 프로세서의 식별 번호로 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역을 선택하고, 그 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 디크리먼트 수단과;
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역중의 갱신 어드레스가 격납된 엔트리를 모두 빈 엔트리로 하는 엔트리 일괄 해방 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  64. 제 52 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하고,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  65. 제 54 항에 있어서, 상기 갱신 어드레스 기억 수단은, 상기 더티 블록이 유지하는 데이타의 어드레스를 기억하기 위한 영역 각각에 대응한 상기 더티 블록의 수를 유지하기 위한 더티 블록 카운터를 구비하며,
    상기 갱신 어드레스 등록 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 인크리먼트하는 수단을 구비하며,
    상기 갱신 어드레스 삭제 수단은 상기 선택한 영역에 대응한 상기 더티 블록 카운터를 디크리먼트하는 수단을 구비하며,
    상기 디크리먼트 수단의 디크리먼트에 의해서 상기 더티 블록 카운터가 초기치로 되었을 때, 그 더티 블록 카운터에 대응하는 영역에 격납된 갱신 어드레스를 모두 삭제하는 일괄 삭제 수단을 추가로 구비하는 것을 특징으로 하는 계산기 시스템.
  66. 제 63 항에 있어서, 상기 엔트리 해방 수단은 상기 갱신 어드레스 기억 수단이 구비한 복수의 영역중 어느 한쪽 영역에 격납되어 있는 갱신 어드레스의 개수가, 그 영역에 대응하는 상기 더티 블록 카운터의 값이 미리 정해진 값을 초과하여 많아졌을 때, 그 영역에 이미 격납되어 있는 갱신 어드레스중 어느 하나를 선택하여, 이 선택한 갱신 어드레스로 표시되는 상기 더티 블록이 유지하는 데이타의 상기 메인 메모리로의 재기록을 요구하는 명령을 상기 시스템 버스에 발행하는 동시에, 그 갱신 어드레스가 격납되어 있던 엔트리를 빈 엔트리로 하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  67. 제 24 항 내지 제 45 항 및 제 47 항 내지 제 66 항중 어느 한 항에 있어서, 상기 데이타 처리 수단은, 상기 캐시 플러시 장치의 플러시 실행 수단을 기동시키는 처리를 포함하는 것을 특징으로 하는 계산기 시스템.
KR1019970014817A 1996-09-09 1997-04-22 캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템 KR100233207B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8238157A JP2916421B2 (ja) 1996-09-09 1996-09-09 キャッシュフラッシュ装置およびデータ処理方法
JP96-238157 1996-09-09

Publications (2)

Publication Number Publication Date
KR19980024009A true KR19980024009A (ko) 1998-07-06
KR100233207B1 KR100233207B1 (ko) 1999-12-01

Family

ID=17026043

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970014817A KR100233207B1 (ko) 1996-09-09 1997-04-22 캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템

Country Status (7)

Country Link
US (1) US6490657B1 (ko)
EP (1) EP0828217B1 (ko)
JP (1) JP2916421B2 (ko)
KR (1) KR100233207B1 (ko)
CN (1) CN1192315C (ko)
DE (1) DE69729917T2 (ko)
TW (1) TW343303B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
KR101414384B1 (ko) * 2012-02-29 2014-07-01 후지쯔 가부시끼가이샤 연산 장치, 정보 처리 장치 및 연산 방법

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10320274A (ja) * 1997-03-19 1998-12-04 Toshiba Corp キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
JP3935276B2 (ja) * 1998-10-21 2007-06-20 キヤノン株式会社 ネットワークデバイス管理方法、装置、記憶媒体、及び送出装置
JP3718599B2 (ja) * 1998-12-28 2005-11-24 富士通株式会社 キャッシュ装置、メモリ制御システムおよび方法、記録媒体
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6622208B2 (en) * 2001-03-30 2003-09-16 Cirrus Logic, Inc. System and methods using a system-on-a-chip with soft cache
US6779087B2 (en) * 2001-04-06 2004-08-17 Sun Microsystems, Inc. Method and apparatus for checkpointing to facilitate reliable execution
US6675262B1 (en) * 2001-06-08 2004-01-06 Hewlett-Packard Company, L.P. Multi-processor computer system with cache-flushing system using memory recall
JP3804823B2 (ja) * 2001-07-03 2006-08-02 日本電気株式会社 障害回復機能を備えたキャッシュシステムとそのキャッシュ制御方法
US7472230B2 (en) * 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
US6965970B2 (en) * 2001-09-27 2005-11-15 Intel Corporation List based method and apparatus for selective and rapid cache flushes
US20030120869A1 (en) * 2001-12-26 2003-06-26 Lee Edward K. Write-back disk cache management
US7080211B2 (en) 2002-02-12 2006-07-18 Ip-First, Llc Microprocessor apparatus and method for prefetch, allocation, and initialization of a cache line from memory
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US6986002B2 (en) * 2002-12-17 2006-01-10 International Business Machines Corporation Adaptive shared data interventions in coupled broadcast engines
US7296127B2 (en) 2003-03-31 2007-11-13 Intel Corporation NoDMA cache
US7069389B2 (en) * 2003-11-26 2006-06-27 Microsoft Corporation Lazy flushing of translation lookaside buffers
US7257679B2 (en) * 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US20060190678A1 (en) * 2005-02-22 2006-08-24 Butler Douglas B Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a single DRAM cache and tag
US7506100B2 (en) * 2005-02-23 2009-03-17 United Memories, Inc. Static random access memory (SRAM) compatible, high availability memory array and method employing synchronous dynamic random access memory (DRAM) in conjunction with a data cache and separate read and write registers and tag blocks
CN1328670C (zh) * 2005-03-30 2007-07-25 中国人民解放军国防科学技术大学 目录协议对多处理器结点内脏数据共享的支持方法
US7475195B2 (en) * 2005-05-24 2009-01-06 International Business Machines Corporation Data processing system, cache system and method for actively scrubbing a domain indication
US7478201B2 (en) * 2005-05-24 2009-01-13 International Business Machines Corporation Data processing system, cache system and method for passively scrubbing a domain indication
US7467262B2 (en) * 2005-05-24 2008-12-16 International Business Machines Corporation Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code
US7418544B2 (en) * 2005-10-05 2008-08-26 Oracle International Corporation Method and system for log structured relational database objects
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US8195890B1 (en) * 2006-08-22 2012-06-05 Sawyer Law Group, P.C. Method for maintaining cache coherence using a distributed directory with event driven updates
US20080148399A1 (en) * 2006-10-18 2008-06-19 Microsoft Corporation Protection against stack buffer overrun exploitation
US7739547B2 (en) * 2007-06-07 2010-06-15 International Business Machines Corporation Failure recovery and error correction techniques for data loading in information warehouses
CN101359326B (zh) * 2007-07-31 2010-11-10 英业达股份有限公司 一种刷新指定裸设备脏数据的系统及方法
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
JP5224038B2 (ja) * 2008-02-27 2013-07-03 日本電気株式会社 コンピュータ装置、コンピュータ装置の運用継続方法及びプログラム
JP5092897B2 (ja) * 2008-05-26 2012-12-05 富士通株式会社 データ移行処理プログラム、データ移行処理装置およびデータ移行処理方法
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
US8135911B2 (en) * 2008-10-21 2012-03-13 International Business Machines Corporation Managing a region cache
CN104461942B (zh) * 2009-09-15 2018-06-08 威盛电子股份有限公司 串流上下文的高速缓存系统
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US20150019822A1 (en) * 2013-07-11 2015-01-15 Lsi Corporation System for Maintaining Dirty Cache Coherency Across Reboot of a Node
CN103577349B (zh) * 2013-11-06 2016-11-23 华为技术有限公司 在高速缓存中选择数据进行刷盘的方法和装置
CN103714014B (zh) * 2013-11-18 2016-12-07 华为技术有限公司 处理缓存数据的方法及装置
CN105138481B (zh) * 2014-05-30 2018-03-27 华为技术有限公司 存储数据的处理方法、装置和系统
KR101996266B1 (ko) 2014-09-18 2019-10-01 삼성전자주식회사 호스트 및 이를 포함하는 컴퓨터 시스템
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US10209891B2 (en) * 2015-08-24 2019-02-19 Western Digital Technologies, Inc. Methods and systems for improving flash memory flushing
US10482033B2 (en) * 2016-03-24 2019-11-19 Samsung Electronics Co., Ltd Method and device for controlling memory
US10545816B2 (en) * 2017-05-01 2020-01-28 International Business Machines Corporation Managed hardware accelerator address translation fault resolution utilizing a credit
US10289479B2 (en) * 2017-05-01 2019-05-14 International Business Machines Corporation Hardware accelerator address translation fault resolution
US10572337B2 (en) * 2017-05-01 2020-02-25 International Business Machines Corporation Live partition mobility enabled hardware accelerator address translation fault resolution
CN108509354B (zh) * 2018-03-22 2020-06-23 雷科防务(西安)控制技术研究院有限公司 存储芯片硬件空间回收和管理方法
WO2019193620A1 (ja) * 2018-04-02 2019-10-10 三菱電機株式会社 履歴記憶装置、履歴記憶方法及び履歴記憶プログラム
US11550725B2 (en) 2020-05-18 2023-01-10 Micron Technology, Inc. Dynamically sized redundant write buffer with sector-based tracking
US11301380B2 (en) * 2020-05-18 2022-04-12 Micron Technology, Inc. Sector-based tracking for a page cache
KR20220138760A (ko) * 2021-04-06 2022-10-13 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
CN113590520B (zh) * 2021-06-15 2024-05-03 珠海一微半导体股份有限公司 Spi系统自动写入数据的控制方法及spi系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59160899A (ja) 1982-12-09 1984-09-11 セコイア・システムス・インコ−ポレ−テツド メモリ−・バツク・アツプ・システム
JP2514208B2 (ja) 1987-07-15 1996-07-10 富士通株式会社 ホットスタンドバイメモリ−コピ−方式
NL8800158A (nl) 1988-01-25 1989-08-16 Philips Nv Computersysteem voorzien van een hierarchisch georganiseerd geheugen.
DE4136729C2 (de) 1990-11-05 1995-07-20 Mitsubishi Electric Corp Cache-Steuereinrichtung
JP3085899B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 マルチプロセッサシステム
JP2902976B2 (ja) 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3020833B2 (ja) * 1995-06-19 2000-03-15 株式会社東芝 チェックポイント取得システム
JP2916420B2 (ja) * 1996-09-04 1999-07-05 株式会社東芝 チェックポイント処理加速装置およびデータ処理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
KR101414384B1 (ko) * 2012-02-29 2014-07-01 후지쯔 가부시끼가이샤 연산 장치, 정보 처리 장치 및 연산 방법

Also Published As

Publication number Publication date
US6490657B1 (en) 2002-12-03
JPH1083351A (ja) 1998-03-31
TW343303B (en) 1998-10-21
EP0828217A1 (en) 1998-03-11
CN1192315C (zh) 2005-03-09
EP0828217B1 (en) 2004-07-21
CN1176433A (zh) 1998-03-18
KR100233207B1 (ko) 1999-12-01
DE69729917T2 (de) 2005-07-21
DE69729917D1 (de) 2004-08-26
JP2916421B2 (ja) 1999-07-05

Similar Documents

Publication Publication Date Title
KR100233207B1 (ko) 캐시 플러시 장치 및 이 장치를 구비한 계산기 시스템
US10613940B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
US6418515B1 (en) Cache flush unit
US6085294A (en) Distributed data dependency stall mechanism
KR100567099B1 (ko) L2 디렉토리를 이용한 멀티프로세서 시스템의 가-저장촉진 방법 및 장치
JP2916420B2 (ja) チェックポイント処理加速装置およびデータ処理方法
US5652859A (en) Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US9058195B2 (en) Virtual machines failover
US7085955B2 (en) Checkpointing with a write back controller
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
KR100267029B1 (ko) 메모리갱신이력보존장치를구비한컴퓨터시스템
KR100243853B1 (ko) 개량된메모리아키텍쳐를위한방법및장치
US20050154866A1 (en) Systems and methods for executing across at least one memory barrier employing speculative fills
JP2902976B2 (ja) キャッシュフラッシュ装置
JP3086779B2 (ja) メモリ状態復元装置
JPH09511088A (ja) マルチプロセッサ・システムのための高可用性のエラー自己回復共用キャッシュ
US20050154805A1 (en) Systems and methods for employing speculative fills
US8301844B2 (en) Consistency evaluation of program execution across at least one memory barrier
US6178484B1 (en) DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches
JP2007533014A (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JPH04230549A (ja) 多重レベル・キャッシュ
WO2017074416A1 (en) Managing cache operations using epochs
JPH05210584A (ja) 改善されたぺージングを有するディジタルデータプロセッサ
JPH10320274A (ja) キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
JP3555847B2 (ja) キャッシュメモリの障害処理装置、キャッシュメモリの障害処理方法、マルチプロセッサシステム

Legal Events

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

Payment date: 20080813

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee