KR100233205B1 - 체크 포인트 처리 가속 장치 - Google Patents

체크 포인트 처리 가속 장치 Download PDF

Info

Publication number
KR100233205B1
KR100233205B1 KR1019970014318A KR19970014318A KR100233205B1 KR 100233205 B1 KR100233205 B1 KR 100233205B1 KR 1019970014318 A KR1019970014318 A KR 1019970014318A KR 19970014318 A KR19970014318 A KR 19970014318A KR 100233205 B1 KR100233205 B1 KR 100233205B1
Authority
KR
South Korea
Prior art keywords
cache
address
memory
data
pore image
Prior art date
Application number
KR1019970014318A
Other languages
English (en)
Other versions
KR19980024007A (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 KR19980024007A publication Critical patent/KR19980024007A/ko
Application granted granted Critical
Publication of KR100233205B1 publication Critical patent/KR100233205B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

캐시 메모리(20) 상에서의 데이터 갱신이 행해지면, 비포어 이미지 취득부(32)는 그 갱신 어드레스와 갱신전 데이터를 취득하여, 비포어 이미지 기억부(35)에 격납한다. 캐시 플러시 실행부(34)는 이 비포어 이미지 기억부(35)에 격납된 모든 어드레스를 사용하여, 갱신 상태의 캐시 블록의 내용을 메인 메모리(51)에 재기록할 것을 요구하는 명령을 시스템 버스(40)에 발행한다. 한편, 메인 메모리 상태 복원부(33B)는 비포어 이미지 기억부(35)에 격납된 모든 갱신전 데이터에 대해서, 새로이 격납한 것에서부터 차례로, 메인 메모리(51)에 갱신 기록할 것을 요구하는 명령을 시스템 버스(40)에 발행한다. 이로써, 표준적인 유니 프로세서 등을 탑재하는 계산기에 의해 체크 포인트 & 복구 기능을 용이하게 실현 가능하게 하는 체크 포인트 처리 가속 장치를 얻을 수 있다.

Description

체크 포인트 처리 가속 장치
본 발명은 데이터의 일관성(data coherency)을 보증하는 스누프(snoop) 기구를 갖는 캐시 메모리를 구비한 계산기에 적용하여 알맞은 체크 포인트 가속 장치와, 이 장치를 적용한 체크 포인트 & 복구(recovery) 방식의 계산기 시스템에 관한 것이다.
계산기 시스템을 고신뢰화하는 방식의 하나로서, 통상의 데이터 처리 도중 정기적으로 체크 포인트를 메인 메모리 상에 작성해 두고, 계산기에 어떠한 장해(fault)가 발생했을 때에, 직전의 체크 포인트로 되돌아가 처리를 재개한다고 하는 것이 있고, 이러한 방식은 체크 포인트 & 복구 방식이라 불리며, 하기의 3가지 종류로 크게 나뉜다.
(1) 주로 데이터 베이스 관리 시스템 등에서 사용되며, 2대의 계산기를 사용하여, 1대의 계산기가 다운되었을 때에, 데이터 자체 손실을 막거나, 데이터 간의 논리적인 정합성을 유지하기 위해서, 다른 계산기가 데이터 베이스를 이어받는 것.
(2) 1개의 응용 프로그램을 1차 프로세스와 섀도 프로세스로 하여, 따로따로 계산기에 배치하여 이중 실행하여, 1차 프로세스를 실행중의 계산기가 다운되었을 때에, 섀도 프로세스가 정합성이 유지된 상태로서 이어받기 위한 것. 이용자에게서는 응용 프로그램의 실행이 도중에 중단되지 않고 계속되고 있는 것처럼 보인다.
(3) 계산기에 어떠한 고장이 발생하였을 때에, 그 계산기가 다운되는 것을 미연에 방지하기 위한 것. 이용자 및 응용 프로그램에서는 고장이 발생하지 않았을 때와 비교해서 거의 차이가 보이지 않는다.
이 중, (3)의 체크 포인트 & 복구 방식에서는 어떠한 고장이 발생했을 때에, 직전의 체크 포인트로에서부터 처리가 재개되기 때문에, 체크 포인트 자신은 고장 발생에 의해서도 파괴되지 않는 기억 장치에 격납하는 것이 필수이다. 이와 같은 기억 장치는 안정 기억이라 불리며, 예컨대 이중화된 주기억장치 등이 사용된다.
이러한 (3)의 체크 포인트 & 복구 방식의 계산기에서는 도 1에 나타내는 것과 같이, 각 프로세서는 정기적으로 통상의 데이터 처리를 일시 중단하여 체크 포인트 처리를 실행하고(t1), 이것이 종료되면 다시 통상의 데이터 처리를 중단한 시점에서부터 재개한다(t2). 그리고, 무언가의 고장이 발생하면(t3), 프로세서는 복구 처리를 실행한다. 이 복구 처리에서는 메인 메모리를 (t2)의 상태로 되돌린 후에, 통상의 데이터 처리를 재개한다(t4). 즉, 시각(t4)에 있어서, 시각(t2)과 같은 상태에서 재개함으로써, 장해 발생의 영향을 받지 않고서 데이터 처리를 속행하는 것을 목표로 하는 것이다.
이어서, 이 체크 포인트 & 복구 방식에 대해서 캐시 메모리, 메인 메모리 및 체크 포인트의 관계를 다음에 나타낸다.
(통상의 데이터 처리)
장해 발생시에 메인 메모리를 체크 포인트시의 상태로 되돌리기 위해서, 메인 메모리가 그 위에 갱신되는 경우, 어떠한 대책을 취할 필요가 있다.
(체크 포인트 처리)
캐시 메모리에 유지되어 있는 갱신된 데이터를 전부 메인 메모리에 재기록한다.
(장해 발생시의 복구처리)
적어도 직전의 체크 포인트 처리 이후에 메인 메모리 상에서 갱신이 발생한 부분을 체크 포인트 시점의 상태로 되돌릴 필요가 있다.
체크 포인트 & 복구 방식을 채용한 허용 오차 계산기의 구체예가 Philip A Bernstein, "Sequoia: A Fault-Tolerant Tightly Coupled Mu Itiprocessor for Transaction Processing", IEEE Computer, Vo1. 21, No. 2, 1988에 개시되어 있다.
이 Sequoia 계산기에 있어서는 통상의 데이터 처리 기간 중, 프로세서가 데이터를 갱신하면, 그 데이터는 캐시 메모리 상에 유지되어, 결코 메인 메모리에 재기록되는 일은 없다. 그리고, 체크 포인트 처리를 개시하면, 캐시 메모리에 유지되어 있던 갱신된 데이터가 메인 메모리에 재기록된다. 그리고, 계산기에 어떠한 고장이 발생한 경우에는 캐시 메모리를 무효화함으로써, 직전의 체크 포인트 시점의 메인 메모리의 상태에서부터 통상의 데이터 처리를 재개할 수가 있다. 이것을 전술한 캐시 메모리, 메인 메모리 및 체크 포인트의 관계에 대응시키면, 다음과 같이 나타낼 수 있다.
(통상의 데이터 처리)
프로세서에 의해 갱신된 데이터는 체크 포인트 처리를 시작할 때까지는 메인 메모리에 재기록하지 않는다.
(체크 포인트 처리)
캐시 메모리에 유지되어 있는 갱신된 데이터는 전부 메인 메모리에 재기록한다.
(장해 발생시의 복구처리)
캐시 메모리를 무효화하는 것이 바람직하다.
또한, 이 Sequoia 계산기에서는 체크 포인트 & 복구 방식을 실현하기 위해서, 특별한 캐시 메모리를 구비하고 있다. 이것은 통상의 라이트스루형, 혹은 카피백형의 캐시 메모리를 사용하면, 「통상의 데이터 처리의 기간중에 프로세서에 의해 갱신된 데이터는, 체크 포인트 처리를 시작할 때까지는 메인 메모리에 재기록하지 않는다」라고 하는 제어를 실행할 수 없기 때문이다. 이 때문에, 「통상의 데이터 처리의 기간중에 프로세서에 의해 갱신된 데이터는 체크 포인트 처리를 시작할 때까지는 메인 메모리에 재기록하지 않는다」라고 하는 제어가 가능한 캐시 메모리를 구비할 필요가 있다.
또한, 체크 포인트 & 복구 방식을 채용한 허용 오차 계산기의 제 2 구체예가 USP 4,740,969 "Method & Apparatus for Recovering from Hardware Faults"에 개시되어 있다. 이 구체예에서는 다음의 처리가 실행된다.
(통상의 데이터 처리)
메인 메모리로부터 캐시 메모리에 데이터를 로핑할 때, 그 어드레스와 데이터의 내용을 유지한다.
(체크 포인트 처리)
언급되어 있지 않다.
(장해 발생시의 복구처리)
상기 어드레스와 데이터를 이용하여, 메인 메모리를 체크 포인트 시점의 상태로 되돌린다.
이와 같이, Sequoia 계산기의 경우에는 체크 포인트 & 복구를 위해 특별한 캐시 메모리를 구비해야 하므로, 프로세서의 급격한 기술 개혁을 따라가는 것이 어렵다고 하는 문제가 있다. 즉, Sequoia 계산기의 캐시 메모리는 프로세서가 데이터를 캐시 메모리 상에서 갱신한 경우, 프로세서에서부터 체크 포인트 처리 개시 요구가 있을 때까지, 메인 메모리에는 결코 재기록하지 않아야 한다. 체크 포인트 처리 개시 요구가 있으면, 각 캐시 라인을 체크하여, 재기록하는 동작을 캐시 메모리의 하드웨어에서 실현한다. 한편, 보통의 캐시 메모리에서는 프로세서가 데이터를 메인 메모리에 재기록하는 것을 프로세서로부터 제어할 수 없어, 적당한 타이밍으로 행하여진다.
또한, USP 4,740,969에 개시되는 방식에서는 메인 메모리로부터 캐시 메모리로의 데이터 전송시에 어드레스와 데이터를 유지하기 때문에, 통상적으로 데이터 처리에 있어서 취득하는 데이터의 양이 많아진다고 하는 문제가 있다.
본 발명의 목적은 특별한 캐시 메모리를 필요로 하지 않고서, 표준 유니프로세서 혹은 멀티프로세서를 탑재하는 계산기에 의해 체크 포인트 & 복구 기능을 용이하게 실현 가능하게 하는 체크 포인트 처리 가속 장치 및 체크 포인트 & 복구 방식을 제공하는 것을 목적으로 한다.
또한, 다른 목적은 표준 계산기에 있어서도, 성능을 향상할 수 있는 것이다.
게다가, 다른 목적은 USP 4,740,969에 개시되는 방법과 비교하여, 통상의 데이터 처리에 있어서, 취득하는 데이터의 양이 보다 적은 체크 포인트 처리 가속 장치 및 체크 포인트 & 복구 방식을 제공하는 것이다.
도 1는 종래의 체크 포인트 & 복구 방식의 동작 순서를 설명하는 도면.
도 2은 본 발명의 제 1 실시예에 따른 계산기 시스템의 시스템 구성을 도시한 도면.
도 3은 동 실시예의 비포어 이미지 기억부의 구조를 나타내는 개념도.
도 4는 동 실시예의 비포어 이미지 취득부의 처리 흐름을 도시한 도면.
도 5은 동 실시예의 캐시 플러시 실행부의 처리 흐름을 도시한 도면.
도 6은 동 실시예의 메인 메모리 상태 복원부의 처리 흐름을 도시한 도면.
도 7는 동 실시예의 프로세서에 의한 체크 포인트 처리 가속 장치의 제어 방식을 도시한 도면.
도 8은 동 실시예의 프로세서에 의한 데이터 갱신에 따른 동작을 설명하는 도면.
도 9는 동 실시예의 캐시 플러시 실행부에 의한 판독 라인 명령의 발행을 설명하는 도면.
도 10은 동 실시예의 체크 포인트 처리의 개시전에 고장이 발생한 경우의 동작을 설명하는 도면.
도 11은 본 발명의 제 2 실시예에 따른 계산기 시스템의 시스템 구성을 도시한 도면.
도 12는 동 실시예의 비포어 이미지 취득부의 처리 흐름을 도시한 도면.
도 13은 동 실시예의 캐시 플러시 실행부의 처리 흐름을 도시한 도면.
도 14는 동 실시예의 프로세서에 의한 데이터 갱신에 따른 동작을 설명하는 도면.
도 15는 동 실시예의 캐시 플러시 실행부에 의한 판독 라인 명령의 발행을 설명하는 도면.
도 16은 동 실시예의 체크 포인트 처리의 개시전에 고장이 발생한 경우의 동작을 설명하는 도면.
도 17은 본 발명의 제 3 실시예에 따른 계산기 시스템의 시스템 구성을 도시한 도면.
도 18은 동 실시예의 캐시 플러시 실행부의 처리 흐름을 도시한 도면.
도 19는 동 실시예의 프로세서에 의한 데이터 갱신에 따른 동작을 설명하는 도면.
도 20은 동 실시예의 캐시 플러시 실행부에 의한 판독 라인 명령의 발행을 설명하는 도면.
도 21은 동 실시예의 체크 포인트 처리의 개시전에 고장이 발생한 경우의 동작을 설명하는 도면.
도 22는 동 실시예의 비포어 이미지를 취득하는지를 판단하는 기구를 도시한 도면.
도 23은 본 발명의 제 4 실시예의 프로세서, 비포어 이미지 취득부, 및 캐시 플러시 실행부의 동작의 시간적인 관계를 설명하는 도면.
도 24는 동 실시예의 플러시 전도 방식의 프로세서의 처리 흐름을 도시한 도면.
도 25a, 도 25b는 동 실시예의 플러시 전도 방식의 효과를 원래의 제어 방식과 대비시켜 모식적으로 나타낸 도면.
도 26은 동 실시예의 프로세서, 메인 메모리, 비포어 이미지 취득부, 및 캐시 플러시 실행부의 동작예를 나타내는 도면.
도 27은 동 실시예의 비포어 이미지 기억부의 엔트리 구성법과 그 사용법을 설명하는 도면.
도 28은 동 실시예의 캐시 플러시 실행부의 처리 흐름을 도시한 도면.
도 29는 본 발명의 제 5 실시예의 프로세서가 체크 포인트 가속 장치를 사용하여 체크 포인트/롤백 방식을 실현하는 경우의 통상의 데이터 처리 및 체크 포인트 처리에 있어서의 처리 흐름을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
10 : 프로세서
20 : 캐시 메모리
30 : 체크 포인트 처리 가속 장치
39 : 버스 I/F
32 : 비포어 이미지 취득부
33 : 메인 메모리 상태 복원부
34 : 체크 플러시 실행부
35 : 비포어 이미지 기억부
50 : 메모리 제어기
51 : 메인 메모리
본 발명의 체크 포인트 처리 가속 장치는, 버스 스누프 기구를 지닌 카피백형의 캐시 메모리를 구비한 적어도 하나 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스로 구성된 계산기에 사용되는 체크 포인트 처리 가속 장치로서, 데이터 갱신이 발생한 어드레스 및 그 갱신전의 데이터를 쌍으로 한 비포어 이미지를 복수개 기억하는 비포어 이미지 기억 수단과, 상기 캐시 메모리 상에서 데이터 갱신이 발생한 것을 나타내는 명령 및 그에 대한 응답을 상기 시스템 버스의 감시에 의해 검지하여, 그들이 갱신 어드레스 및 갱신전 데이터를 포함하는 경우에, 그 어드레스 및 갱신전 데이터를 상기 비포어 이미지 기억 수단에 격납하며, 갱신이 발생한 어드레스를 포함하지만 갱신전의 데이터를 포함하지 않은 경우에, 그 갱신전 데이터를 독출하기 위한 명령을 상기 명령에 포함되는 어드레스를 이용하여 상기 시스템 버스에 발행하고, 상기 어드레스 및 독출된 갱신전의 데이터를 상기 비포어 이미지 기억 수단에 격납하는 비포어 이미지 취득 수단과, 상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 수단에 격납된 모든 어드레스에 대해서, 그 어드레스로 표시되는 갱신 상태의 데이터를 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 캐시 플러시 실행 수단과, 상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 기억 수단에 격납된 모든 갱신전 데이터에 대해서, 새롭게 격납한 것부터 순차로 메인 메모리에의 갱신 기록을 요구하는 명령을 상기 시스템 버스에 발행하는 메인 메모리 상태 복원 수단을 구비하여 이루어지는 것을 특징으로 한다.
본 발명의 체크 포인트 처리 가속 장치에 있어서, 프로세서가 캐시 메모리 상에서 데이터 갱신을 실행하면, 비포어 이미지 취득 수단은 그 갱신 어드레스와 갱신전 데이터를 취득하여 비포어 이미지 기억 수단에 격납한다. 캐시 플러시 실행 수단은 프로세서로부터의 지시에 근거하여, 비포어 이미지 기억 수단에 격납되어 있는 모든 어드레스를 사용하여, 그 어드레스를 지니는 갱신 상태의 캐시 블록의 내용을 메인 메모리에 재기록하는 것을 요구하는 명령을 시스템 버스에 발행함으로써, 캐시 플러시를 실행한다. 한편, 메인 메모리 상태 복원 수단은 프로세서로부터의 지시에 근거하여, 비포어 이미지 기억 수단에 격납되어 있는 모든 갱신전 데이터를 새롭게 격납한 것에서부터 순차로 메인 메모리의 갱신 기록을 요구하는 명령을 시스템 버스에 발행함으로써, 메인 메모리를, 비포어 이미지 기억 수단에는 아무것도 기억되어 있지 않았을 때의 상태로 만든다.
즉, 본 발명의 체크 포인트 처리 가속 장치를 적용하면, 특별한 캐시 메모리를 필요로 하지 않고, 또한, 종래와 같이 프로세서가 캐시 플러시용의 소프트웨어를 실행함으로써, 캐시 플러시를 실시하는 것과 비교하여, 대폭적인 고속화가 기대된다. 따라서, 체크 포인트 처리에 소비되는 작업의 대부분이 캐시 플러시인 것을 고려하면, 체크 포인트 & 복구 방식의 계산기 전체의 성능을 향상시킬 수 있다.
또한, 연속하는 체크 포인트 사이에서 프로세서가 같은 어드레스의 데이터를 복수회 갱신하는 것도 충분히 생각할 수도 있다. 그래서, 메인 메모리를 캐시 메모리 상에 확보되는 캐시 블록의 크기로 분할하여, 이 분할에 의해서 정의되는 구획에 대응시켜, 온과 오프 두개의 상태가 할당되는 플래그 메모리를 마련하는 것이 바람직하다. 그리고, 캐시 블록내의 데이터가 갱신되었을 때, 그 어드레스에 대응한 플래그 메모리가 오프 상태이었을 경우에는 그 갱신전의 데이터를 비포어 이미지 기억 수단에 격납함과 동시에, 그 플래그 메모리를 온으로 한다. 또한, 프로세서에 의해 그 데이터가 다시 갱신된 경우에는 그 플래그 메모리는 이미 온으로 되어있으므로, 갱신전의 데이터는 격납이 끝난 것을 인식할 수 있기 때문에, 갱신전 데이터의 비포어 이미지 기억 수단에의 격납은 실행되지 않는다. 이에 따라, 불필요한 동작을 삭감할 수 있으므로, 그 성능을 더욱 향상시킬 수 있게 된다. 이 플래그 메모리는 반드시 모든 구획에 대응시켜 설치하여야 하는 것은 아니며, 일부 구획에 대응시켜 설치한 경우라도 유효하다.
또한, 서로 공통 부분을 갖지 않도록 어드레스 범위를 설정하여, 이 설정한 어드레스 범위 각각에 대응시켜 블록 카운터를 설치하는 것이 바람직하다. 이 경우, 이 블록 카운터를 그 대응하는 어드레스 범위에 포함되는 캐시 블록 중에서 갱신 상태의 캐시 블록이 몇개 있는가를 나타내도록 관리한다. 따라서, 이 블록 카운터가 초기값(예컨대 0)을 나타내는 경우, 이 어드레스 범위에 관해서는 캐시 플러시가 불필요한 것이 그자리에서 인식 가능하기 때문에, 체크 포인트 처리의 소요 시간을 대폭으로 단축할 수 있게 된다.
또한, 본 발명의 계산기 시스템은, 버스 스누프 기구를 지니는 카피백형의 캐시 메모리를 구비한 적어도 하나 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하며, 중단된 처리를 재개시하기 위한 체크 포인트를 정기적으로 채취하는 작성을 하면서 데이터 처리를 행하는 계산기 시스템으로서, 청구항 1 ∼ 19중 어느 한 항에 기재한 체크 포인트 처리 가속 장치와, 상기 체크 포인트 처리 가속 장치의 비포어 이미지 취득 수단을 동작시키면서 통상의 데이터 처리를 실행하는 데이터 처리 수단과, 모든 프로세서가 동기하여 실행하는 데이터 처리중인 콘텍스트의 메인 메모리에의 격납, 및 상기 체크 포인트 처리 가속 장치의 캐시 플러시 실행 수단이 실행하는 모든 갱신 상태의 블록 내용의 상기 메인 메모리에의 재기록을 포함하는 체크 포인트 작성 수단과, 고장이 발생하였을 때에, 모든 캐시 블록을 무효화하여, 상기 체크 포인트 처리 가속 장치의 메인 메모리 복원 수단에 의해 직전에 채취한 체크 포인트 시점의 상태로 메인 메모리를 복원하고, 이 복원된 메인 메모리에 격납되어 있는 정보를 이용하여, 데이터 처리를 재개하는 롤백/ & 복구 수단을 구비하여 이루어지는 것을 특징으로 한다.
중단된 처리를 재개시하기 위한 체크 포인트를 정기적으로 채취하는 계산기 시스템에 있어서는 이 체크 포인트의 채취에 소비하는 시간을 어떻게 단축하는가가 중요하다. 즉, 이러한 계산기 시스템에 전술한 것과 같은 체크 포인트 처리 가속 장치를 적용하면, 시스템 전체의 성능을 향상시킬 수 있다.
이하 도면을 참조하여 본 발명에 의한 체크 포인트 처리 가속 장치의 실시예를 설명한다.
(제 1 실시예)
도 2에는 본 발명의 제 1 실시예에 따른 계산기 시스템의 시스템 구성이 나타나 있다. 각각이 캐시 일관성을 구비한 카피백형의 캐시 메모리(20)를 지니는 복수의(여기서는 3가지의) 프로세서(10)가 시스템 버스(40)에 접속된다. 단, 캐시 메모리가 제 1 및 제 2 층으로 된 2 계층 혹은 그 이상의 계층으로 구성되는 경우, 본 실시예에서 말하는 캐시 메모리(20)란 시스템 버스(40)에 가장 가까운 캐시 메모리를 가리킨다. 또한, 캐시 메모리에 따라서는 명령을 격납하는 캐시 메모리와, 데이터를 격납하는 캐시 메모리로 나뉘어 있는 것도 있는데, 그 경우, 본 실시예에서 말하는 캐시 메모리(20)란 데이터를 격납하기 위한 캐시 메모리를 가리킨다. 또한, 이 시스템에 있어서의 시스템 버스(40) 상에서의 어드레스는 32 비트로서 설명한다. 시스템 버스(40)에는 메모리 제어기(50)를 통해 메인 메모리(51)가 접속되는 동시에, 체크 포인트 가속 처리 장치(30)도 접속된다.
체크 포인트 가속처리 장치(30)는 버스 인터페이스(31), 비포어 이미지 취득부(before-image acquiring section)(32), 메인 메모리 상태 복원부(main memory restoring section)(33), 캐시 플러시 실행부(cache flush executing section) (34), 비포어 이미지 기억부(before-image storing section)(35)로 이루어진다.
우선, 이 체크 포인트 처리 가속 장치(30)의 기능에 대해서, 본 장치를 제어하는 소프트웨어와 관련시켜 설명한다.
(초기화)
프로세서(10)는 어떤 적당한 시점에서 변경된 상태(후술)의 캐시 블록이 존재하지 않는 상태를 만든다.
(통상의 데이터 처리시)
프로세서(10)는 통상의 데이터 처리를 개시하는 시점에서 비포어 이미지 취득부(32)를 기동한다. 프로세서(10)가 응용 프로그램 등을 실행하고 있는 동안, 체크 포인트 처리 가속 장치(30)는 시스템 버스(40)를 감시하며, 프로세서(10)가 캐시 메모리(20) 상에서 데이터를 갱신한 것을 검지할 때마다, 갱신 어드레스와 갱신전 데이터를 기억한다.
(체크 포인트 처리)
프로세서(10)는 통상의 데이터 처리를 일정 시간, 예컨대 수 밀리초 ∼ 수십 밀리초 실행하면, 정기적으로 체크 포인트 처리를 행한다. 체크 포인트 처리에서는 직전까지 실행하고 있었던 응용 프로그램의 콘텍스트(프로세서의 레지스터 내용 등)를 메인 메모리(51)에 격납하는 동시에, 모든 변경된 상태의 캐시 블록의 내용을 메인 메모리(51)에 재기록한다(이하, 이 재기록을 「캐시 플러시」라 한다). 이 체크 포인트 처리 가속 장치(30)는 모든 변경된 상태의 캐시 블록에 대하여, 그 내용의 메인 메모리(51)에의 재기록을 요구하는 명령을 시스템 버스(40)에 발행함으로써 캐시 플러시를 실현한다. 이와 같이 전용 하드웨어를 사용하여 행하는 캐시 플러시 처리는 프로세서(10)가 캐시 플러시용의 소프트웨어를 실행하는 것과 비교하여 고속이라는 이점이 있다. 체크 포인트 처리가 종료되면, 프로세서(10)는 통상의 데이터 처리를 재개한다.
(장해 발생시의 복구처리)
계산기 시스템에 어떠한 장해가 발생한 경우, 프로세서(10)는 장해가 일어난 곳을 확인하여, 필요하면 장해가 발생한 장치를 잘라내는 동시에, 모든 캐시 블록(20)을 무효화한다. 그리고, 체크 포인트 처리 가속 장치(30)는 그 내부에 기억되어 있는 비포어 이미지를 사용하여, 메인 메모리(51)에 갱신전의 데이터를 재기록하는 명령을 발행함으로써, 메인 메모리(51)의 상태를 직전의 체크 포인트 처리시의 상태로 되돌린다. 그 후, 프로세서(10)는 통상의 데이터 처리를 재개한다.
즉, 본 실시예의 체크 포인트 처리 가속 장치(30)는 다음의 3가지 기능을 갖는다.
(1) 통상의 데이터 처리시
프로세서(10)가 데이터 갱신을 행한 것을 검지하여, 그 비포어 이미지를 취득하여 기억한다.
(2) 체크 포인트 처리
프로세서(10)로부터의 지시에 의해, 기억하고 있었던 비포어 이미지를 사용하여 변경된 상태의 캐시 블록 내용의 메인 메모리(51)에의 재기록(캐시 플러시)을 요구하는 명령을 발행한다.
(3) 장해 발생시의 복구처리
프로세서(10)로부터의 지시에 의해, 기억하고 있었던 비포어 이미지를 사용하여 메인 메모리(51)에 갱신전의 데이터를 재기록하는 명령을 발행한다.
또한, 비포어 이미지를 기억하는 것은 (2) 및 (3)의 기능을 실현하기 위해서이므로, 반드시 모든 데이터 갱신에 대해서, 그 비포어 이미지를 취득할 필요는 없다. 예컨대, 체크 포인트 후, 어떤 어드레스에 대하여 최초로 갱신이 발생한 경우, 비포어 이미지의 취득은 필수이지만, 2번째 이후의 경우에는 비포어 이미지의 취득은 불필요하다.
이 체크 포인트 처리 가속 장치(30)는 시스템 버스(40) 상의 명령과 그 응답을 감시하여, 혹은 능동적으로 명령을 발행함으로써 처리를 행하기 때문에, 여기서 캐시 메모리(20) 및 시스템 버스(40)의 구조, 및 명령과 그에 대한 응답에 대하여 설명한다. 단, 여기서 말하는 것은 본 실시예의 메모리 상태 복원부(33)를 적용할 수 있는 계산기의 일례이다. 예컨대, 다음에 나타내는 캐시 블록의 취득하는 상태나 시스템 버스(40) 상의 명령이나 응답에는 각각 수종류의 변이가 존재하지만, 어떤 것에 대해서도 본 실시예의 주지에 따른 체크 포인트 처리 가속 장치(30)를 구성할 수 있는 것은 말할 필요도 없다.
(시스템 버스의 구조)
시스템 버스(40)는 어드레스/데이터선 외에, 제어용 신호선으로서의 명령 신호선, 변경 응답 신호선 및 쉐어드(shared) 응답 신호선을 포함한다. 어드레스/데이터 신호선은 명령의 어드레스 및 데이터를 보내기 위한 신호선이고, 어드레스/데이터에 공통된 신호선을 시분할로 사용하는 방식과, 어드레스/데이터 각각에 독립된 신호선을 마련하는 방식이 있으며, 어떤 것이라도 상관없다. 명령 신호선은 명령의 종류를 나타내는 정보뿐만 아니라, 명령에 관한 각종 정보를 보내기 위한 신호선이다. 쉐어드 응답 신호선은 다른 프로세서/캐시 메모리에 의해 발행된 명령에 대하여, 캐시 블록dmf 공유하고 있는 것을 통지하기 위해서 사용된다. 그리고, 변경된 응답 신호선은 다른 프로세서/캐시 메모리에 의해 발행된 명령에 대하여, 캐시 블록dl 갱신 데이터를 유지하고 있는 것을 통지하기 위해서 사용된다.
(캐시 블록의 상태)
캐시 블록의 상태는 하기한 바와 같다.
(1) 무효 상태
이 캐시 블록에는 유효한 데이터가 존재하지 않는다.
(2) 변경된 상태
이 캐시 블록에는 갱신된 데이터가 존재하고, 다른 프로세서(10)의 캐시 블록에는 동일한 데이터가 존재하지 않는다. 캐시 플러시에 사용되는 데이터는 캐시 블록의 갱신 데이터이다.
(3) 클린 쉐어드(Clean-Shared) 상태
이 캐시 블록에는 메인 메모리(51)와 동일 내용의 데이터가 존재한다. 또한, 다른 프로세서(10)의 캐시 블록에도 동일 내용의 데이터가 존재할 가능성이 있다.
(4) 클린 익스클루시브(Clean-Exclusive) 상태
이 캐시 블록에는 메인 메모리(51)와 동일한 내용의 데이터가 존재한다. 또한, 다른 캐시 메모리(20)의 캐시 블록에는 동일 내용의 데이터가 존재하지 않는다.
(명령 및 응답의 사양)
시스템 버스(40) 상의 명령 및 그에 대한 캐시 메모리(20) 혹은 메인 메모리(51)로부터의 응답은 다음과 같다. 단, 이 중에서, 판독 라인 비동기는 시스템 버스(40)에서 지지되고 있지만, 캐시 메모리(20)가 발행하는 명령은 아니다.
(1) 판독 라인 (캐시 블록데이터의 판독 요구)
발행되는 상황 : 프로세서(10)가 데이터를 판독하려고 하고, 캐시 메모리(20) 중에 그 데이터가 없는 경우.
응답(케이스 1) : 변경된 상태의 캐시 블록를 갖는 캐시 메모리(20)가 있으면, 그 캐시 메모리(20)는 변경된 응답 신호선을 사용하여, 판독 라인 명령을 발행한 캐시 메모리(20)와 메인 메모리(51)에 데이터가 전송된다. 양쪽의 캐시 블록은 클린 쉐어드 상태가 된다.
응답(케이스 2) : 변경된 상태의 캐시 블록를 갖는 캐시 메모리(20)는 없지만, 클린 쉐어드 또는 클린 익스클루시브 상태의 캐시 블록를 갖는 캐시 메모리(20)가 있으면, 그 캐시 메모리(20)는 쉐어드 응답 신호선을 사용한다. 메인 메모리(51) 또는 그 데이터를 유지하는 캐시 메모리(20)가 판독 라인 명령을 발행한 캐시 메모리(20)에 데이터를 전송한다. 어느 것이 데이터를 전송할까는 계산기에 의존한다. 양쪽의 캐시 블록의 상태는 클린 쉐어드로 된다.
응답(케이스 3) : 상기한 것 중 아무것도 아닌 경우, 변경된 응답 신호선도 쉐어드 응답 신호선도 사용되지 않고, 메인 메모리(51)로부터 판독 라인 명령을 발행한 캐시 메모리(20)에 데이터가 전송된다. 캐시 블록의 상태는 클린 익스클루시브로 된다.
(2) 판독 라인 무효화(캐시 블록 데이터의 판독과, 다른 캐시 블록의 무효화 요구)
발행되는 상황 : 프로세서(10)가 데이터를 갱신하려고 하고, 캐시 메모리(20) 중에 그 데이터가 없는 경우.
응답(케이스 1) : 변경된 상태의 캐시 블록을 갖는 캐시 메모리(20)가 있으면, 그 캐시 메모리(20)는 변경된 응답 신호선을 사용하여, 판독 라인 무효화 명령을 발행한 캐시 메모리(20)와 메인 메모리(51)에 데이터가 전송된다. 계산기에 따라 변경 상태의 캐시 블록를 갖는 캐시 메모리(20)가 재시도에 응답하여, 메인 메모리(51)에 데이터를 재기록하고, 판독 라인 무효화 명령을 발행한 캐시 메모리(20)가 다시 같은 명령을 발행하면, 이번은 메인 메모리(51)가 응답하는 일도 있다(후술하는 케이스 3). 본 실시예에서는 전자를 설명한다. 요구측의 캐시 블록은 변경된 상태가 되고, 응답한 측은 무효 상태가 된다.
응답(케이스 2) : 클린 쉐어드 또는 클린 익스클루시브 상태의 캐시 블록을 갖는 캐시 메모리(20)가 있으면, 그 캐시 메모리(20)는 쉐어드 응답 신호선을 사용한다. 메인 메모리(51) 또는 그 데이터를 유지하는 캐시 메모리(20)가 판독 라인 무효화 명령을 발행한 캐시 메모리(20)에 데이터를 전송한다. 어느 것이 데이터를 전송하는지는 계산기에 의존한다. 요구측의 캐시 블록은 변경된 상태가 되고, 응답한 측은 무효 상태가 된다.
응답(케이스 3) : 상기한 것 중 아무것도 아닌 경우, 변경 응답 신호선도 쉐어드 응답 신호선도 사용되지 않고, 메인 메모리(51)로부터 판독 라인 무효화 명령을 발행한 캐시 메모리(20)에 데이터가 전송된다. 캐시 블록은 변경된 상태가 된다.
(3) 기록 라인 (캐시 블록 데이터의 메인 메모리에의 기록)
발행되는 상황 : 변경 상태의 캐시 블록에 다른 어드레스의 데이터를 격납하지 않으면 안되게 되었기 때문에, 변경 상태의 캐시 블록의 내용을 메인 메모리(51)에 재기록하는 경우.
응답 : 메인 메모리(51)가 기록 명령에 포함되는 데이터에 의해 갱신된다. 캐시 블록의 내용은 클린 쉐어드로 된다.
(4) 무효화(다른 캐시 메모리의 데이터 무효화 요구. 어드레스 전송만)
발행되는 상황 : 프로세서(1O)가 클린 쉐어드 상태의 캐시 블록의 데이터를 갱신하고자 하는 경우.
응답 : 본 명령을 발행한 측은 변경 상태가 되고, 수신한 측은 무효 상태로 된다.
(5) 판독 라인 비동기(메인 메모리 데이터의 판독 요구)
발행되는 상황 : 메인 메모리(51)로부터 I/O 장치로의 DMA 전송 등으로 사용
응답 : 캐시 메모리(20)의 상태에 상관없이, 항상 메인 메모리(51)가 요구되는 어드레스의 내용을 응답한다. 캐시 블록의 상태는 불변한다.
이상, 본 실시예의 캐시 메모리(20) 및 시스템 버스(40) 등을 설명하였다.
(체크 포인트 처리 가속 장치의 구성)
체크 포인트 처리 가속 장치(30)는 비포어 이미지 기억부(35), 비포어 이미지 취득부(32), 캐시 플러시 실행부(34) 및 메인 메모리 상태 복원부(33)로 구성된다.
비포어 이미지 기억부(35)는 도 3에 도시된 바와 같이, 갱신 어드레스(update address) 및 갱신전 데이터(previous data)의 쌍(비포어 이미지)을 기억하는 복수의 엔트리와, 캐시 플러시 실행부(34)가 사용하는 F 포인터와, 비포어 이미지 취득부(32) 및 메인 메모리 상태 복원부(33)가 사용하는 W 포인터로 구성된다.
비포어 이미지 기억부(35)에 기억하는 갱신전의 데이터는 캐시 블록과 같은 크기(여기서는 B 비트로 한다)를 갖는다. 이것은 캐시 메모리(20) 사이, 혹은 캐시 메모리(20)와 메인 메모리(51) 사이의 데이터 전송의 단위와 같게 하기 위해서이다. 어드레스는 3 비트이다.
W 포인터는 비포어 이미지 취득부(32)가 새롭게 취득한 비포어 이미지를 격납하는 엔트리를 가리킨다. 프로세서(10)의 지시에 의해, 비포어 이미지 취득부(32)가 기동되면, W 포인터는 최초의 엔트리를 가리키도록 초기화된다. 그리고, 비포어 이미지 취득부(32)가 새롭게 취득한 비포어 이미지를 W 포인터가 가리키는 엔트리에 격납하면, W 포인터가 +1 증가되어, 그 다음 엔트리를 가리키도록 제어된다. 또한, 프로세서(10)의 지시에 의해 메인 메모리 상태 복원부(33)가 기동되면, W 포인터가 차례로 -1 감소되면서, W 포인터가 가리키는 엔트리에 격납되어 있는 갱신 어드레스와 갱신전 데이터 쌍을 사용하여, 메인 메모리(51)의 내용이 갱신전의 상태로 되돌아 간다.
F 포인터는 캐시 플러시 실행부(34)가 다음 처리 대상으로 하는 비포어 이미지를 격납하고 있는 엔트리를 가리킨다. 프로세서(10)의 지시에 의해, 캐시 플러시 실행부(34)가 기동되면, F 포인터는 최초의 엔트리를 가리키도록 초기화된다. 그리고, 캐시 플러시 실행부(34)는 F 포인터가 가리키는 엔트리에 격납되어 있는 갱신 어드레스에 대하여, 판독 라인 명령을 발행하여 F 포인터가 다음 엔트리를 가리키도록 제어된다. 그리고, F 포인터의 값과 W 포인터의 값이 일치하면, 캐시 플러시 실행부(34)는 종료된다.
비포어 이미지 취득부(32)는 시스템 버스(40) 상의 명령 및 응답을 감시하고, 혹은 필요에 따라 명령을 발행함으로써, 프로세서(10)가 캐시 메모리(20) 상에서 데이터를 갱신하였을 때, 그 비포어 이미지를 비포어 이미지 기억부(35)에 격납한다. 비포어 이미지 취득부(32)가 상기 명령을 검지하였을 때의 동작이 이하에서 기술된다.
(1) 판독 라인
쉐어드 응답 신호선을 사용한다.
(2) 판독 라인 무효화
변경 응답 신호선이 사용되는 경우에는 아무것도 사용하지 않는다. 그렇지 않으면, 명령에 포함되는 갱신 어드레스와, 캐시 메모리(20) 또는 메인 메모리(51)로부터의 응답에 포함되는 갱신전 데이터를 비포어 이미지 기억부(35)에 격납한다.
(3) 무효화
명령에 포함되는 갱신 어드레스를 사용하여, 판독 라인 비동기 명령을 발행한다. 그리고, 상기 갱신 어드레스와 메인 메모리(51)로부터의 응답에 포함되는 갱신전 데이터를 비포어 이미지 기억부(35)에 격납한다.
도 4에는 이 비포어 이미지 취득부(32)의 처리 흐름을 도시하고 있다.
단계 A1에서, W 포인터는 0으로 셋트되고, 단계 A2에서 이벤트 대기 상태가 된다. 이 상태에서, 버스 라인에 발행된 명령에 따라서, 단계 A3, A5, A7 중 어느 한 단계를 취한다.
단계 A3에 도시된 바와 같이 판독 라인 명령이 검출되면, 단계 A4에서 쉐어드 응답 신호선을 사용하여, 단계 A2로 되돌아간다. 이 이유는 판독 라인 명령은 프로세서(10)가 데이터를 갱신할 때에 발행되는 명령이 아니기 때문에, 이 명령에 의해 비포어 이미지를 취득하는 일은 없다. 그 때문에, 쉐어드 응답 신호선을 사용하여, 캐시 블록이 클린 익스클루시브 상태로 되는 것을 막아야 한다. 왜냐하면, 프로세서(10)가 클린 익스클루시브 상태의 캐시 블록의 데이터를 갱신하는 경우, 다른 캐시 메모리(20)는 그 데이터를 유지하고 있지 않기 때문에, 시스템 버스(40)에 아무 명령도 발행하지 않고, 클린 익스클루시브 상태에서 변경된 상태로 바뀐다. 그 때문에, 비포어 이미지 취득부(32)는 비포어 이미지를 취득할 수 없게 된다. 그래서, 본 발명에서는 비포어 이미지 취득부(32)가 쉐어드 응답 신호선을 사용함으로써, 캐시 블록은 클린 쉐어드 상태로 되어, 프로세서(1O)에 의한 데이터의 갱신에 의해 시스템 버스(40)에 무효화 명령이 발행되어, 비포어 이미지를 취득할 수 있게 된다.
단계 A5에 도시하는 것과 같이 판독 라인 무효화 명령이 검출되면, 단계 A6에서 변경된 응답 신호선이 사용되고 있는 지의 여부가 판정된다. 변경된 응답 신호선이 사용되고 있는 경우, 다른 캐시 메모리(20)가 그 데이터를 변경된 상태를 유지하고 있기 때문에(따라서, 그 어드레스에 대응하는 비포어 이미지는 이미 비포어 이미지 기억부(35)에 기억되어 있기 때문에), 그 경우에는 비포어 이미지를 기억하지 않고, 단계 A2로 되돌아간다. 변경된 응답 신호선이 사용되고 있지 않은 경우는, 캐시 메모리(20) 혹은 메인 메모리(51)로부터 갱신전의 데이터를 포함하는 응답이 있기 때문에, 단계 A9에서 비포어 이미지 취득부(32)는 갱신전의 데이터를 추출한다. 그런 다음, 단계 A10에서 W 포인터가 가리키는 엔트리에 비포어 이미지를 기록하고, 단계 A11에서 W 포인터를 +1 증가한다. 그 후, 단계 A2로 되돌아간다.
이와 같이, 종래와 같이 메인 메모리에서 캐시 메모리로의 데이터 전송이 일어날 때마다 비포어 이미지를 취득하는 것에 비해서, 본 발명에서는 캐시 메모리로부터 데이터의 변경을 나타내는 명령을 발행한 경우만 비포어 이미지를 취득하기 때문에, 비포어 이미지 기억부(32)의 이용 효율을 향상시키고, 캐시 플러시 시간 단축이 가능하다.
단계 A7에 도시하는 것과 같이, 무효화 명령이 검출된 경우, 본 명령 및 응답은 데이터를 포함하지 않기 때문에, 단계 A8에서 비포어 이미지 취득부(32)가 판독 라인 비동기 명령을 발행하여, 메인 메모리(51)로부터의 응답에 포함되는 갱신전 데이터를 취득한다. 여기서, 혹시 판독 라인 명령을 발행하면 갱신된 데이터를 유지하고 있는 캐시 블록이 응답하기 때문에, 갱신전의 데이터를 얻을 수는 없다. 즉, 판독 라인 비동기 명령을 발행하는 것이 필수적이다.
이런 다음, 단계 A9 ∼ Al1가 실행된다.
이어서, 도 5를 참조하여 캐시 플러시 실행부(34)의 동작을 설명한다.
캐시 플러시 실행부(34)는 프로세서(10)의 지시에 의해, 단계 B1에 도시하는 것과 같이 F 포인터가 최초의 엔트리를 가리키도록 한 후, 단계 B2에서 F 포인터와 W 포인터가 일치하는지를 판정한다. F 포인터가 W 포인터와 같으면, 캐시 플러시처리를 종료한다. 이때, 캐시 블록의 상태는 전부 무효 또는 클린 쉐어드로 되어 있다.
F 포인터와 W 포인터가 같지 않는 경우는, 단계 B3에서 F 포인터가 가리키는 엔트리 중의 갱신 어드레스를 사용하여, 판독 라인 명령을 발행하여, 단계 B4에서 F 포인터를 진행시킨다. 판독 라인 명령을 발행하는 것은, 혹시 그 어드레스의 데이터를 변경된 상태로 유지하는 캐시 블록이 있을 경우, 그 데이터를 메인 메모리(51)에도 전송하여, 그 캐시 블록의 상태가 변경된 상태에서 클린 쉐어드로 변하는 판독 라인과, 그 응답의 성질을 이용하기 위해서이다. F 포인트를 +1 진행시킨 후에는 단계 B2로 되돌아간다.
이와 같이 캐시 플러시 실행부(34)는 비포어 이미지 기억부(35)에 격납되어 있는 모든 어드레스에 대해서, 판독 라인 명령을 발행하기 때문에 낭비가 있을 수 있다. 그것은 통상의 데이터 처리에 있어서, 예컨대 a번지의 데이터를 변경된 상태로 유지하고 있는 캐시 블록이, 그 후에 b번지의 데이터를 격납하기 위해서, a번지의 데이터를 메인 메모리(51)에 재기록하는 경우, a번지의 변경된 상태의 캐시 블록은 실제로 존재하지 않음에도 불구하고, 캐시 플러시 실행부(34)에는 a번지의 비포어 이미지가 존재하기 때문에, a번지에 대하여 판독 라인 명령을 발행하는 일이 적지 않게 일어나기 때문이다. 이것을 개선하는 방법에 대해서는 다른 실시예에서 설명한다.
도 6을 참조하여 메인 메모리 상태 복원부(33)의 동작을 설명한다. 우선, 단계 C1에서 W 포인터가 O인지 아닌지를 판정하여, W 포인터가 O이면 동작을 종료한다. 0이 아닌 경우는 메인 메모리 상태 복원부(33)는 프로세서(10)의 지시에 의해, 단계 C2에서 W 포인터를 -1 감소하고, 단계 C3에서 W 포인터가 가리키는 엔트리 중의 비포어 이미지를 기록 라인 명령을 사용하여 메인 메모리에 재기록한다. 여기서, a번지에 대한 비포어 이미지가 2개 이상 존재하는 경우, 체크 포인트시의 상태로 되돌리기 위해서는 보다 이른 시점에서 취득한 비포어 이미지를, 보다 늦은 시점에서 메인 메모리(51)에 재기록할 필요가 있다. 따라서, W 포인터가 현재 가리키는 엔트리에서부터 최초의 엔트리를 향해서 -1 감소하는 것은 상기한 제약을 만족시키는 가장 용이한 방법이다.
이어서, 프로세서(10)에 의한 체크 포인트 처리 가속 장치(30)의 제어 방식을 도 7을 참조하여 설명한다.
통상의 데이터 처리에서는 단계 Jl에서 비포어 이미지 취득부(32)를 기동한 후, 단계 J2에서 응용 프로그램이나 오퍼레이팅 시스템(통상의 데이터 처리)을 실행한다. 그리고, 단계 J3에서 통상의 데이터 처리가 일정 기간 계속되었는지의 여부가 판정되어, 일정 기간 경과하였다고 판정되면, 통상의 데이터 처리를 중단하고 체크 포인트 처리를 개시한다.
체크 포인트 처리에서는 우선, 단계 J4에서 프로세서(10)를 개입 금지 상태로 하여, 외부기기 등으로부터의 개입을 받아들이지 않도록 한다. 이것은 체크 포인트 처리중에는 통상의 데이터 처리를 일체 실행하지 않도록 하기 위해서이다. 단, 계산기의 고장 발생을 통지하는 개입에 대해서는 통상의 개입보다 높은 우선도를 설정하는 등, 상기 개입 금지 상태에 있더라도 받아들여지도록 되어 있을 필요가 있다. 단계 J4에서 프로세서(10)는 캐시 플러시 실행부(34)를 기동하여, 통상의 데이터 처리를 중단한 시점에서의 콘텍스트, 즉 레지스터 내용의 메인 메모리(51)의 적당한 어드레스에의 기록도 행한다. 단, 본 실시예에서는 카피백형의 캐시 메모리가 사용되기 때문에, 이 시점에서는 통상의 데이터 갱신과 같이, 캐시 블록에 변경 상태로 유지되고, 비포어 이미지 기억부(35)에 그 어드레스의 비포어 이미지가 기억되고 있다.
그 후, 단계 J5에서 프로세서(10)는 비포어 이미지 취득부(32)의 동작을 정지하여, 단계 J6에서 캐시 플러시 실행부(34)가 비포어 이미지 기억부(35) 내의 비포어 이미지를 사용하여, 모든 변경된 상태의 캐시 블록의 데이터가 메인 메모리(51)에 재기록되는 것을 기다린다. 프로세서(10)의 콘텍스트도 이 때, 메인 메모리(51)에 재기록된다. 캐시 플러시 실행부(34)가 실행을 종료하면, 단계 J7에서 메인 메모리(51)에 보존한 콘텍스트를 대응하는 레지스터로 되돌려, 개입 금지 상태를 해제함으로써, 통상의 데이터 처리를 재개한다.
이어서, 체크 포인트 처리 가속 장치(30)의 동작을 설명한다.
(초기화)
프로세서(10)는 소프트웨어를 실행함으로써, 모든 캐시 블록을 변경 상태 이외의 상태로 한다.
(통상의 데이터 처리시)
프로세서(10)는 통상의 데이터 처리를 개시하는 시점에서, 비포어 이미지 취득부(32)를 기동한다. 도 8을 참조하여, 통상의 데이터 처리로서, 프로세서(10)가 a번지의 데이터를 A0에서 A1으로, b번지의 데이터를 B0에서 B1으로, a번지의 데이터를 A1에서 A2로, 이 순서로 갱신하는 경우에 대해서 설명한다. 단, a번지, b번지는 모두 캐시 블록 BLK0에 대응하며, BLK0는 초기 상태에서는 a번지의 데이터 A0를 클린 쉐어드 상태로 유지하고 있다고 하자.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 a번지의 데이터를 A1로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, a번지에 대한 무효화 명령이 발행된다.
3 : 그 데이터를 갖는 다른 캐시 메모리(20)는 a번지의 캐시 블록이 있으면 무효화하여, 종료된 것을 나타내는 응답을 한다. 캐시 메모리(20)상의 데이터가 A0에서 A1으로 갱신된다.
4 : 비포어 이미지 취득부(32)는 a번지에 대하여 판독 라인 비동기 명령을 발행한다.
5 : 메인 메모리(51)가 데이터 A0를 응답하고, 비포어 이미지 취득부(32)는 a번지와 데이터 A0의 쌍을 비포어 이미지 기억부(35)에 격납한다.
6 : 프로세서(10)가 b번지의 데이터를 B1로 갱신하고자 하지만, 캐시 블록 BLK0이 a번지의 데이터 A1를 변경 상태로 유지하고 있기 때문에, a번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 b번지에 대한 판독 라인 무효화 명령이 발행된다.
7 : 메인 메모리(51)가 데이터 B0를 포함하는 응답을 되돌려 준다. 이 동작의 예는 초기화 직후이기 때문에, 변경된 응답 신호선은 사용되지 않는다. 이 때, 비포어 이미지 취득부(32)는 b번지와 데이터 B0의 쌍을 비포어 이미지 기억부(35)에 격납한다.
8 : 기록 버퍼에 유지되고 있던 a번지에 대한 기록 라인 명령이 발행된다.
9 : 메인 메모리(51)의 a번지의 데이터가 A1로 변한다.
10 : 프로세서(10)가 a번지의 데이터를 A2로 갱신하려고 하지만, 캐시 블록 BLK0이 b번지의 데이터 B1를 변경 상태로 유지하고 있기 때문에, b번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 a번지에 대한 판독 라인 무효화 명령이 발행된다.
11 : 메인 메모리(51)가 데이터 A1를 포함하는 응답을 되돌려 준다. 비포어 이미지 취득부(32)는 a번지와 데이터 A1의 쌍을 비포어 이미지 기억부(35)에 격납한다.
12 : 기록 버퍼에 유지되어 있던 b번지에 대한 기록 라인 명령이 발행된다.
13 : 메인 메모리(51)의 b번지의 데이터가 B1으로 변한다.
이상, 프로세서(10), 메인 메모리(51) 및 비포어 이미지 취득부(32)의 통상의 데이터 처리시의 동작의 예를 설명하였다.
(체크 포인트 처리시)
전술한 상태에서, 프로세서(10)가 캐시 플러시 실행부(34)를 기동하면, 캐시 플러시 실행부(34)는 a번지, b번지, a번지의 순으로 판독 라인 명령을 발행한다. 그 모양을 도 9에 도시하고 있다. 단, 비포어 이미지란의 밑줄은 F 포인터가 가리키는 위치를 나타낸다.
1 : 초기 상태를 가리킨다.
2 : 캐시 플러시 실행부(34)는 최초에 취득한 비포어 이미지 a번지와 데이터 A0의 쌍을 사용하여, a번지에 대한 판독 라인 명령을 발행한다.
3 : BLK0는 a번지의 데이터 A2를 변경 상태로 유지하고 있기 때문에, 변경 응답 신호선을 사용하여, 메인 메모리(51)에의 재기록이 행하여져, 메인 메모리(51)의 a번지가 A2로 변한다. BLK0의 상태는 클린 쉐어드로 변화한다.
4 : 캐시 플러시 실행부(34)는 비포어 이미지 b번지와 데이터 B0의 쌍을 사용하여, b번지에 대한 판독 라인 명령을 발행한다.
5 : BLK0는 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, 변경 응답 신호선도 쉐어드 응답 신호선도 사용하지 않는다. 메인 메모리(5l)가 B1을 응답한다. BLK0의 상태는 변화하지 않는다.
6 : 캐시 플러시 실행부(34)는 비포어 이미지 a번지와 데이터 A1의 쌍을 사용하여, a번지에 대한 판독 라인 명령을 발행한다.
7 : BLK0는 클린 쉐어드 상태이기 때문에, 쉐어드 응답 신호선을 사용한다. 메인 메모리(51)가 A2를 응답한다. BLK0의 상태는 변화하지 않는다.
캐시 플러시 실행부(34)의 동작이 종료되면, 변경된 상태였던 모든 캐시 블록의 내용이 메인 메모리(51)에 재기록되는 동시에, 그들 캐시 블록의 상태가 클린 쉐어드 상태로 된다. 이것은 초기화 직후와 같은 상태이며, 따라서, 캐시 플러시 실행부(34)가 종료되면, 프로세서(10)는 즉시 통상의 데이터 처리를 시작할 수 있다.
이상, 비포어 이미지를 이용한 캐시 플러시 실행부(34)의 체크 포인트 처리시의 동작예를 설명하였다.
(장해 발생시의 복구처리)
계산기에 어떠한 장해가 발생한 경우, 프로세서(10)는 장해가 일어난 곳을 확인하여, 필요하면 장해가 발생한 장치를 떼어버리는 동시에, 모든 캐시 블록을 무효화한다. 그리고, 체크 포인트 처리 가속 장치(30)의 메인 메모리 상태 복원부(33)가 비포어 이미지를 이용하여, 기록 라인 명령을 발행함으로써, 메인 메모리(51)의 상태를 직전의 체크 포인트 처리시의 상태로 되돌린다.
이 모양을 먼저 설명한 체크 포인트 처리 개시전에 고장이 발생한 경우를 예로 들어, 도 10을 참조하여 설명한다.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 모든 캐시 블록의 무효화를 행하는 명령을 실행한다.
3 : 이 명령 실행의 결과, BLK0는 무효 상태로 된다.
4 : 메인 메모리 상태 복원부(33)가 최후에 취득한 비포어 이미지 a번지와 데이터 A1의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
5 : 메인 메모리(51)의 a번지에 A1이 쓰여지지만, 원래 A1이기 때문에 변하지 않는다.
6 : 메인 메모리 상태 복원부(33)가 그 전에 취득한 비포어 이미지 b번지와 데이터 B0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
7 : 메인 메모리(51)의 b번지가 B0로 변한다.
8 : 메인 메모리 상태 복원부(33)가 그 전에 취득한 비포어 이미지 a번지와 데이터 A0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
9 : 메인 메모리(51)의 a번지가 A0로 변한다.
이 결과, 메인 메모리(51)는 체크 포인트 처리 종료 시점의 상태로 되돌아 간다. 이상, 메인 메모리 상태 복원부(33)의 동작예를 나타내었다.
이와 같이, 본 실시예의 체크 포인트 처리 가속 장치(30)를 적용하면, 특별한 캐시 메모리등 없이도, 표준 구성으로 된 계산기 시스템에 있어서 효율적인 캐시 플러시가 실현되며, 또한 고성능의 체크 포인트 복구 방식의 계산기 시스템을 구축할 수 있게 된다.
(제 2 실시예)
다음에, 본 발명의 제 2 실시예를 설명한다. 도 11에는 본 실시예에 따른 계산기 시스템의 시스템 구성이 나타내어져 있다. 체크 포인트 처리 가속 장치(30A)가 이용되는 계산기의 구성은 제 1 실시예와 동일하다.
본 실시예의 체크 포인트 처리 가속 장치(30A)는 제 1 실시예의 구성에 대하여 플래그 메모리(36)가 부가된 것이다. 플래그 메모리(36)는 비포어 이미지 기억부(35A)와 함께 1개의 하드웨어로서 실현된다.
플래그 메모리(36)는 메인 메모리(51)의 단위인 캐시 블록 단위마다 1 비트의 정보를 유지하는 영역이다. 또한, 실장되어 있는 메인 메모리(51)의 일부분에 대해서만 플래그 메모리(36)를 구비하는 구성이라도 좋다. 플래그 메모리(36)는 그 어드레스에 대한 비포어 이미지를 비포어 이미지 기억부(35A)에 격납하고, 또한 캐시 플러시 실행부(34A)가 아직 그 어드레스에 대하여 판독 라인 명령을 발행하지 않을 때에만 온이 되도록 제어된다. 따라서, 어떤 어드레스에 대한 플래그 메모리(36)가 온으로 되어 있다는 것은 캐시 플러시 실행부(34A)가 앞으로 그 어드레스에 대하여 판독 라인 명령을 발행한다는 것을 나타낸다. 또한, 초기화 종료시나 체크 포인트 처리 종료시에는 모든 플래그 메모리(36)의 값이 오프로 된다.
비포어 이미지 취득부(32A)는 비포어 이미지를 취득하는 부분에 관해서는 제 1 실시예와 동일하다. 그러나, 전술한 플래그 메모리(36)의 참조/갱신 처리가 추가되고, 또한, 플래그 메모리(36)의 값에 따라서, 비포어 이미지를 격납하지 않은 경우가 있다는 점이 제 1 실시예와 다르다. 비포어 이미지 취득부(32A)의 처리 흐름은 도 12에 도시되어 있다.
단계 D01에서, W 포인터를 0으로 셋트하고, 단계 D02에서 이벤트 대기 상태로 된다. 이 상태에서, 버스 라인에 발행된 명령에 따라서, 단계 D1, D3, D7 중 어느 것을 취한다.
단계 D1에 도시하는 것과 같이 판독 라인 명령이 검출되면, 제 1 실시예와 같이, 단계 D2에서 쉐어드 응답 신호선을 사용하여, 단계 D02로 되돌아간다.
단계 D3에 도시하는 것과 같이 판독 라인 무효화 명령이 검출되면, 단계 D4에서 비포어 이미지 취득부(32A)는 갱신 어드레스에 대응하는 플래그 메모리(36)의 값을 참조한다. 온이면, 비포어 이미지를 취득·격납할 필요가 없기 때문에, 단계 D02로 되돌아 간다.
플래그 메모리가 온이면, 비포어 이미지를 취득·격납할 필요가 없는 것은 다음과 같은 이유에서이다.
(1) 플래그 메모리(36)를 온으로 하는 것은 비포어 이미지 취득부(32A)가 비포어 이미지를 취득하여, 비포어 이미지 기억부(35A)에 격납할 때만이다. 따라서, 플래그 메모리(36)가 온이라고 하는 것은 그 어드레스에 대한 비포어 이미지가 격납되어 있기 때문에, 메인 메모리 상태 복원부(33A)는 올바르게 동작한다.
(2) 또한, 플래그 메모리(36)가 온이라는 것은 캐시 플러시 실행부(34A)가 그 어드레스에 대하여 장래 판독 라인 명령을 발행하는 것을 나타낸다. 따라서, 캐시 플러시 실행부(34A)에 있어서도 플래그 메모리(36)가 온일 때에는 비포어 이미지를 격납할 필요는 없다.
플래그 메모리가 오프이면, 단계 D5에서 메모리를 온으로 변경하고 나서, 제 1 실시예와 동일한 방법으로 비포어 이미지를 취득한다. 즉, 단계 D6에서 변경된 응답 신호선이 사용되어 있는지가 판정된다. 변경된 응답 신호선이 사용되어 있는 경우, 다른 캐시 메모리(20)가 그 데이터를 변경된 상태로 유지하고 있었던 것이 되기 때문에(따라서, 그 어드레스에 대응하는 비포어 이미지는 이미 비포어 이미지 기억부(35A)에 기억되어 있으므로), 그 경우에는 비포어 이미지를 기억하지 않고, 단계 D02로 되돌아 간다. 사용되고 있지 않은 경우는 캐시 메모리(20) 혹은 메인 메모리(51)로부터 갱신전의 데이터를 포함하는 응답이 있으므로, 단계 Dl1에서 비포어 이미지 취득부(32A)는 갱신전 데이터를 추출한다. 그런 다음, 단계 D12에서 W 포인터가 가리키는 엔트리에 비포어 이미지를 기록하고, 단계 D13에서 W 포인터를 +1 증가한다. 그 후, 단계 D02로 되돌아 간다.
한편, 어떤 어드레스에 대응하는 플래그 메모리(36)가 없는 경우에는 그 어드레스에 대응하는 비포어 이미지를 항상 채취·격납하면 좋다. 즉, 그와 같은 어드레스에 관해서는 제 1 실시예의 경우와 같은 동작을 한다.
단계 D7에 도시하는 것과 같이 무효화 명령이 검출된 경우도 단계 D8에서 비포어 이미지 취득부(32A)는 갱신 어드레스에 대응하는 플래그 메모리(36)의 값을 참조한다. 온이라면, 비포어 이미지를 취득·격납할 필요가 없기 때문에, 단계 D02로 되돌아 간다. 플래그 메모리가 오프라면, 단계 D9에 메모리를 온으로 변경하고 나서, 제 1 실시예와 동일한 방법으로 비포어 이미지를 취득한다. 즉, 본 명령 및 응답은 데이터를 포함하지 않기 때문에, 단계 Dl0에서 비포어 이미지 취득부(32A)가 판독 라인 비동기 명령을 발행하여, 메인 메모리(5l)로부터의 응답에 포함되는 갱신전 데이터를 취득한다. 여기서, 혹시 판독 라인 명령을 발행하면, 갱신된 데이터를 유지하고 있는 캐시 블록이 응답하기 때문에, 갱신전의 데이터를 얻을 수 없다. 즉, 판독 라인 비동기 명령을 발행하는 것이 필수적이다.
이 다음, 단계 Dl1 ∼ D13가 실행된다.
도 13은 캐시 플러시 실행부(34A)의 처리를 나타내는 흐름도이다. 캐시 플러시 실행부(34A)는 제 1실시예의 캐시 플러시 실행부(34)의 처리에, 판독 라인 명령을 발행할 때에, 플래그 메모리(36)를 오프로 하는 기구를 추가한 것이다.
캐시 플러시 실행부(34A)는 프로세서(10)의 지시에 의해, 단계 E1에 도시하는 것과 같이 F 포인터가 최초의 엔트리를 가리키도록 한 후, 단계 E2에서 F 포인터와 W 포인터가 일치하는지의 여부를 판정한다. F 포인터가 W 포인터와 같으면, 캐시 플러시 처리를 종료한다. 이 때, 캐시 블록의 상태는 전부 무효 또는 클린 쉐어드로 되어 있다.
양자의 포인터가 같지 않은 경우는 단계 E3에서 F 포인터가 가리키는 엔트리 중의 갱신 어드레스를 사용하여, 판독 라인 명령을 발행하여, 단계 E4에서 F 포인터를 진행시킨다. 판독 라인 명령을 발행하는 것은, 만일 그 어드레스의 데이터를 변경된 상태로 유지하는 캐시 블록이 있으면, 그 데이터를 메인 메모리(51)에도 전송하여, 그 캐시 블록의 상태는 변경된에서 클린 쉐어드에 변하는 판독 라인과 그 응답의 성질을 이용하기 위해서이다. F 포인트를 +1 진행시킨 후에는 단계 E5에서 플래그 메모리를 오프하고 나서 단계 E2로 되돌아 간다.
또한, 어떤 어드레스에 대응하는 플래그 메모리(36)가 없는 경우에는 도 13에 나타내는 처리 흐름에서, 단계 E5를 생략하면 된다.
메인 메모리 상태 복원부(33A)는 제 1 실시예의 메인 메모리 상태 복원부(33)와 동일하다.
이어서 제 2 실시예의 체크 포인트 처리 가속 장치(30A)의 동작을 설명한다.
(초기화)
프로세서(10)는 모든 플래그 메모리(36)를 오프로 한다. 이와 동기하여, 프로세서(10)는 소프트웨어를 실행함으로써, 모든 캐시 블록을 변경된 상태 이외의 상태로 한다.
(통상의 데이터 처리시)
프로세서(10)는 통상의 데이터 처리를 개시하는 시점에서, 비포어 이미지 취득부(32A)를 기동한다. 여기에서는 도 14를 참조하여, 통상의 데이터 처리로서, 프로세서(10)가 a번지의 데이터를 A0에서 A1로, b번지의 데이터를 B0에서 B1로, a번지의 데이터를 A1에서 A2로, 이 순서로 갱신하는 경우에 대해서 설명한다. 단, a번지, b번지는 모두 캐시 블록 BLK0에 대응하며, BLK0는 초기 상태에서는 a번지의 데이터 A0를 클린 쉐어드 상태로 유지하고 있다고 하자.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 a번지의 데이터를 A1으로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, a번지에 대한 무효화 명령이 발행된다.
3 : 그 데이터를 갖는 다른 캐시 메모리(20)는 a번지의 캐시 블록이 있으면 무효화하여, 종료된 것을 가리키는 응답을 되돌려 준다.
4 : 비포어 이미지 취득부(32A)는 a번지에 대응하는 플래그 메모리(36)가 오프이기 때문에, 이것을 온으로 하여, a번지에 대하여 판독 라인 비동기 명령을 발행한다.
5 : 메인 메모리(51)가 데이터 A0를 응답한다. 비포어 이미지 취득부(32A)가 a 번지와 데이터 A0의 쌍을 비포어 이미지 기억부(35A)에 격납한다.
6 : 프로세서(10)가 b번지의 데이터를 B1으로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터 A1을 변경된 상태로 유지하고 있기 때문에, a번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 b번지에 대한 판독 라인 무효화 명령이 발행된다.
7 : 메인 메모리(51)가 데이터 B0를 응답한다. 비포어 이미지 취득부(32A)는 b번지에 대응하는 플래그 메모리(36)가 오프이기 때문에, 이것을 온으로 하여, b번지와 데이터 B0의 쌍을 비포어 이미지 기억부(35A)에 격납한다.
8 : 기록 버퍼에 유지되어 있던 a번지에 대한 기록 라인 명령이 발행된다.
9 : 메인 메모리(51)의 a번지가 A1로 변한다.
10 : 프로세서(10)가 a번지의 데이터를 A2로 갱신하려고 하지만, 캐시 블록 BLK0이 b번지의 데이터 B1를 변경된 상태로 유지하고 있기 때문에, b번지의 데이 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 a번지에 대한 판독 라인 무효화 명령이 발행된다.
11 : 메인 메모리(51)가 데이터 A1을 응답한다. 비포어 이미지 취득부(32A)는 a번지에 대응하는 플래그 메모리(36)가 온이기 때문에, 비포어 이미지를 격납하지 않는다.
12 : 기록 버퍼에 유지되어 있던 a번지에 대한 기록 라인 명령이 발행된다.
13 : 메인 메모리(51)의 a번지가 A1으로 변한다.
이상, 프로세서(10), 메인 메모리(51), 및 비포어 이미지 취득부(32A)의 통상의 데이터 처리시의 동작예를 설명하였다.
(체크 포인트 처리시)
전술한 상태에서, 프로세서(10)가 캐시 플러시 실행부(34A)를 기동하면, 캐시 플러시 실행부(34A)는 a번지, b번지의 순으로 판독 라인 명령을 발행한다. 그 모양을 도 15에 도시하고 있다. 단, 비포어 이미지란의 밑줄은 F 포인터가 가리키는 위치를 나타낸다.
1 : 초기 상태를 가리킨다.
2 : 캐시 플러시 실행부(34A)는 최초로 비포어 이미지 a번지와 데이터 A0의 쌍을 이용하여, a번지에 대응하는 플래그 메모리(36)를 오프로 하는 동시에, a번지에 대하여 판독 라인 명령을 발행한다.
3 : BLK0는 a번지의 데이터 A2를 변경된 상태로 유지하고 있기 때문에, 변경된 응답 신호선이 사용되어, 메인 메모리(51)에의 재기록이 행하여져, 메인 메모리(51)의 a번지가 A2로 변한다. BLK0의 상태는 클린 쉐어드로 변화한다.
4 : 캐시 플러시 실행부(34A)는 비포어 이미지 b번지와 데이터 B0의 쌍을 이용하여, b번지에 대응하는 플래그 메모리(36)를 오프로 하는 동시에, b번지에 대하여 판독 라인 명령을 발행한다.
5 : BLK0는 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, 변경된 응답 신호선도 쉐어드 응답 신호선도 사용되지 않는다. 메인 메모리(51)가 B1을 응답한다. BLK0의 상태는 변화하지 않는다.
캐시 플러시 실행부(34A)의 동작이 종료되면, 변경된 상태이던 모든 캐시 블록의 내용이 메인 메모리(51)에 재기록되는 동시에, 그들 캐시 블록의 상태가 클린 쉐어드 상태로 된다. 또한, 모든 플래그 메모리(36)의 값이 오프로 된다. 이것은 초기화 직후와 같은 상태이고, 따라서, 캐시 플러시 실행부(34A)의 동작이 종료되면, 프로세서(10)는 즉시 통상의 데이터 처리를 시작할 수 있다.
이상, 비포어 이미지를 사용한 캐시 플러시 실행부(34A)의 체크 포인트 처리시의 동작예를 설명하였다.
(장해 발생시의 복구처리)
계산기에 어떠한 장해가 발생한 경우, 프로세서(10)는 장해가 일어난 곳을 확인하여, 필요하면 장해가 발생한 장치를 떼어버리는 동시에, 모든 캐시 블록을 무효화한다. 그리고, 체크 포인트 처리 가속 장치(30A)의 메인 메모리 상태 복원부(33A)가 비포어 이미지를 사용하여, 기록 라인 명령을 발행함으로써, 메인 메모리(51)의 상태를 직전의 체크 포인트 처리시의 상태로 되돌린다.
이 모양을 먼저 설명한 체크 포인트 처리의 개시전에 고장이 발생한 경우를 예로 들어 도 16를 참조하여 설명한다.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 모든 캐시 블록의 무효화를 행하는 명령을 실행한다.
3 : 이 명령 실행의 결과, BLK0는 무효 상태로 된다.
4 : 메인 메모리 상태 복원부(33A)가 최후에 취득한 비포어 이미지 b번지와 데이터 B0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
5 : 메인 메모리(51)의 b번지가 B0로 변한다.
6 : 메인 메모리 상태 복원부(33A)가 비포어 이미지 a번지와 데이터 A0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
7 : 메인 메모리(51)의 a번지가 A0로 변한다.
8 : 프로세서(10)는 플래그 메모리(51)를 전부 오프로 한다.
9 : 이 결과, 메인 메모리(51)는 체크 포인트 처리 종료 시점의 상태로 되돌아 간다.
이상, 메인 메모리 상태 복원부(33A)의 장해 복구시의 동작예를 설명하였다.
또한, 플래그 메모리(36)는 모든 어드레스에 대해 반드시 설정할 필요는 없다. 어떤 어드레스에 대해서, 대응하는 플래그 메모리(36)가 없는 경우, 비포어 이미지 취득부(32A)는 그 어드레스에 대한 비포어 이미지를 취득하여, 비포어 이미지 기억부(35A)에 격납하도록 하면 좋다.
이와 같이, 본 실시예의 체크 포인트 처리 가속 장치(30A)에서는 플래그 메모리(36)를 설치함으로써, 같은 어드레스에 대한 비포어 이미지가 2회 이상 비포어 이미지 기억부(35A)에 격납되는 것을 피할 수 있다. 또한, 캐시 플러시 실행부(34A)가 실행을 종료하였을 때에는 모든 플래그 메모리(36)가 오프로 되도록 제어하기 때문에, 프로세서(10)는 즉시 통상의 데이터 처리를 개시할 수 있다.
(제 3 실시예)
이어서, 본 발명의 제 3 실시예를 설명한다. 도 17에는 본 실시예에 따른 계산기 시스템의 시스템 구성이 나타내어져 있다. 체크 포인트 처리 가속 장치(30B)가 사용되는 계산기의 구성은 제 1실시예와 동일하다.
본 실시예의 체크 포인트 처리 가속 장치(30B)는 제 1 실시예의 구성에 대하여 블록 카운터(38), 블록 카운터 제어부(37)가 부가된 것이다. 블록 카운터(38)는 1개 이상의 어드레스 범위의 각각에 대하여 설정된 카운터의 집합이며, 각 어드레스 범위에 포함되는 변경된 상태의 캐시 블록의 갯수를 유지하는 데에 사용된다. 단, 각 어드레스 범위는 서로 공통 부분을 가지지 않도록 설정한다. 이 어드레스 범위 설정의 일례를, 캐시 메모리(20)가 다이렉트 맵 방식인 경우에 대해서 설명하고 있다.
한개의 캐시 블록에 대응하는 어드레스의 집합을 한개의 어드레스 범위로 한다. 이 경우, 블록 카운터에 속하는 한개의 카운터는 대응하는 캐시 블록에서 변경된 상태인 것의 갯수를 유지하게 된다. 프로세서의 수가 P인 경우, 카운터는 O ∼ P+α까지의 값을 취할 수 있다. 여기서, α는 정의 정수이며, 최근의 고속 프로세서가 지니는 기록 버퍼의 효과에 의해, 시스템 버스를 감시하고 있는 체크 포인트 처리 가속 장치로부터는 일시적이기는 하지만, 한개의 캐시 블록에 대응하여, 복수 번지의 데이터가 변경된 상태로 유지되어 있는 것처럼 보이는 것에 대응하는 것이다. α의 값은 P 정도면 충분하다. 또한, 블록 카운터를 구성하는 각 카운터는 블록 카운터 제어부(37)에 의해 증감된다. 또한, 캐시 플러시 실행부(34A)에 의해서 참조된다.
블록 카운터 제어부(37)는 시스템 버스(40)상의 명령 및 그 응답을 감시하여, 캐시 블록이 변경된 상태로 변하는 것을 검지하였을 때에, 그 어드레스에 대응하는 상기 카운터가 있는 경우는 그것을 +1 증가한다. 한편, 캐시 블록이 변경된 상태에서 그 이외의 상태로 변하는 것을 검지하였을 때에는 그 어드레스에 대응하는 상기 카운터가 있는 경우는 그것을 -1 감소한다.
블록 카운터 제어부(37)가 시스템 버스(40)상의 명령 및 그 응답을 검지하였을 때의 동작을 다음에 나타낸다.
(1) 판독 라인 명령
만일, 변경된 응답 신호선이 사용되면, 명령에 포함되는 어드레스에 대응하는 카운터를 -1 감소한다. 그렇지 않으면 아무것도 하지 않는다.
(2) 판독 라인 무효화 명령
만일, 변경된 응답 신호선이 사용되면 아무것도 하지 않는다. 그렇지 않으면, 명령에 포함되는 갱신 어드레스에 대응하는 카운터를 +1 증가한다.
(3) 무효화 명령
명령에 포함되는 갱신 어드레스에 대응하는 카운터를 +1 증가한다.
(4) 기록 라인 명령
명령에 포함되는 어드레스에 대응하는 카운터를 -1 감소한다.
또한, 판독 라인 명령으로 변경된 응답 신호선이 사용된 경우는 변경된 상태의 캐시 블록의 데이터가 메인 메모리에 재기록되어, 상태가 변경된에서 클린 쉐어드로 변화한 것을 나타내기 때문에, 카운터를 -1 감소한다. 또한, 판독 라인 무효화 명령에 의해 변경된 응답 신호선이 사용된 경우는 변경된 상태의 캐시 블록이 있는 캐시 메모리에서부터 다른 캐시 메모리로 이동한 것이므로, 카운터의 값은 바꾸지 않는다.
비포어 이미지 취득부(32B)는 제 1 실시예의 비포어 이미지 취득부(32)와 동일이다.
도 18를 참조하여 캐시 플러시 실행부(34B)의 동작을 설명한다. 캐시 플러시 실행부(34B)는 프로세서(10)의 지시에 의해, 단계 F1에 도시하는 것과 같이 F 포인터가 최초의 엔트리를 가리키도록 한 후, 단계 F2에서 F 포인터와 W 포인터가 일치하는지의 여부를 판정한다. F 포인터가 W 포인터와 같으면, 캐시 플러시 처리를 종료한다. 이 때, 캐시 블록의 상태는 전부 무효 또는 클린 쉐어드로 되어 있다.
양자의 포인터가 같지 않은 경우는 단계 F3에서 F 포인터가 가리키는 엔트리 중의 어드레스에 대한 카운터가 0인가 아닌가를 판정한다. "예"인 경우는 단계 F5에서 F 포인터를 +1 증가하고, "아니오"인 경우는 단계 F4에서 F 포인터가 가리키는 엔트리 중의 갱신 어드레스를 사용하여, 판독 라인 명령을 발행하여, 단계 F5에서 F 포인터를 진행시킨다. 판독 라인 명령을 발행하는 것은, 만일 그 어드레스의 데이터를 변경된 상태로 유지하는 캐시 블록이 있으면, 그 데이터를 메인 메모리(51)에도 전송하여, 그 캐시 블록의 상태는 변경된에서 클린 쉐어드로 변화한다고 하는 판독 라인과 그 응답의 성질을 이용하기 위해서이다. F 포인트를 +1 진행시킨 후에는 단계 F2로 되돌아 간다.
이와 같이 본 실시예의 캐시 플러시 실행부(34B)는 제 1 실시예의 캐시 플러시 실행부(34)에, 판독 라인 명령을 발행할 때, 대응하는 카운터의 값을 참조하여, 만일, 0이라면, 판독 라인 명령을 발행하지 않도록 하는 기구를 추가한 것이다.
메인 메모리 상태 복원부(33A)는 제 1 실시예의 메인 메모리 상태 복원부(33)와 동일하다.
여기서, 체크 포인트 처리 가속 장치(30B)의 동작을 설명한다.
(초기화)
프로세서(10)는 블록 카운터(38)를 구성하는 모든 카운터의 값을 O으로 한다. 이와 동기하여, 프로세서(10)는 소프트웨어를 실행함으로써, 모든 캐시 블록을 변경된 상태 이외의 상태로 한다.
(통상의 데이터 처리시)
프로세서(10)는 통상의 데이터 처리를 개시하는 시점에서, 비포어 이미지 취득부(32B)를 기동한다. 여기에서는 도 19를 참조하여, 통상의 데이터 처리로서, 프로세서(10)가 a번지의 데이터를 A0에서 A1로, b번지의 데이터를 B0에서 B1로, a번지의 데이터를 A1에서 A2로, 이 순서로 갱신하는 경우에 대해서 설명한다. 단, a번지, b번지는 모두 캐시 블록 BLK0에 대응하며, BLK0는 초기 상태에서는 a번지의 데이터 A0를 클린 쉐어드 상태로 유지하고 있다고 하자. 또한, 캐시 블록 BLK0에 대응하여, 카운터가 1개 설치되어 있다고 하자.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 a번지의 데이터를 A1로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, a번지에 대한 무효화 명령이 발행된다.
3 : 그 데이터를 지니는 다른 캐시 메모리(20)는 a번지의 캐시 블록이 있으면 무효화하여, 종료를 나타내는 응답을 되돌려 준다. 캐시 메모리(20) 상의 데이터가 A0에서 A1으로 갱신된다. 블록 카운터 제어부(37)는 카운터를 +1 증가하여 1로 한다.
4 : 비포어 이미지 취득부(32B)는 a번지에 대하여 판독 라인 비동기 명령을 발행한다.
5 : 메인 메모리(51)가 데이터 A0를 응답한다. 비포어 이미지 취득부(32B)는 a번지와 데이터 A0의 쌍을, 비포어 이미지 기억부(35B)에 격납한다.
6 : 프로세서(10)가 b번지의 데이터를 B1로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터 Al을 변경된 상태로 유지하고 있기 때문에, a번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 b번지에 대한 판독 라인 무효화 명령이 발행된다.
7 : 메인 메모리(51)가 데이터 B0를 포함하는 응답을 되돌려 준다. 블록 카운터 제어부(37)는 카운터를 +1 증가하여 2로 한다. 비포어 이미지 취득부(32B)는 b번지와 데이터 B0의 쌍을 비포어 이미지 기억부(35B)에 격납한다.
8 : 기록 버퍼에 유지되어 있던 a번지에 대한 기록 라인 명령이 발행된다.
9 : 메인 메모리(51)의 a번지의 데이터가 A1로 변한다. 블록 카운터 제어부(37)는 카운터를 -1 감소하여 1로 한다.
10 : 프로세서(10)가 a번지의 데이터를 A2로 갱신하려고 하지만, 캐시 블록 BLK0이 b번지의 데이터 B1를 변경된 상태로 유지하고 있기 때문에, b번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 a번지에 대한 판독 라인 무효화 명령이 발행된다.
11 : 메인 메모리(51)가 데이터 A1를 포함하는 응답을 되돌려 준다. 블록 카운터 제어부(37)는 카운터를 +1 증가하여 2로 한다. 비포어 이미지 취득부(32B)는 a번지와 데이터 A1의 쌍을 비포어 이미지 기억부(35B)에 격납한다.
12 : 기록 버퍼에 유지되어 있던 b번지에 대한 기록 라인 명령이 발행된다.
13 : 메인 메모리(51)의 b번지의 데이터가 B1로 변한다. 이 때, 블록 카운터 제어부(37)는 카운터를 -1 감소하여 1로 한다.
이상, 프로세서(10), 메인 메모리(51), 블록 카운터 제어부(37), 및 비포어 이미지 취득부(32B)의 통상의 데이터 처리시의 동작예를 설명하였다.
(체크 포인트 처리시)
전술한 상태에서, 프로세서(10)가 캐시 플러시 실행부(34B)를 기동하면, 캐시 플러시 실행부(34B)는 a번지, b번지, a번지의 순으로 판독 라인 명령을 발행한다. 그 모양을 도 20에 나타낸다. 단, 비포어 이미지란의 밑줄은 F 포인터가 가리키는 위치를 나타낸다.
1 : 초기 상태를 가리킨다.
2 : 캐시 플러시 실행부(34B)는 최초로 취득한 비포어 이미지 a번지와 데이터 A0의 쌍을 사용한다. a번지에 대응하는 카운터가 1이기 때문에, a번지에 대하여 판독 라인 명령을 발행한다.
3 : BLK0는 a번지의 데이터 A2를 변경된 상태로 유지하고 있기 때문에, 변경된 응답 신호선을 사용하여, 메인 메모리(51)에의 재기록이 행하여져, 메인 메모리(51)의 a번지가 A2로 변한다. BLK0의 상태는 클린 쉐어드로 변화한다. 블록 카운터 제어부(37)는 판독 라인 명령에 대하여, 변경된 응답 신호선이 사용되었기 때문에, 카운터를 -1 감소하여 0으로 한다.
4 : 캐시 플러시 실행부(34B)는 비포어 이미지 b번지와 데이터 B0의 쌍을 사용하려고 하지만, b번지에 대응하는 카운터는 0이기 때문에, 판독 라인 명령은 발행하지 않는다.
5 : 캐시 플러시 실행부(34B)는 비포어 이미지 a번지와 데이터 A1의 쌍을 사용하려고 하지만, a번지에 대응하는 카운터는 0이기 때문에, 판독 라인 명령은 발행하지 않는다.
캐시 플러시 실행부(34B)의 동작이 종료되면, 변경된 상태이던 모든 캐시 블록의 내용이 메인 메모리(51)에 재기록되는 동시에, 그들 캐시 블록의 상태가 클린 쉐어드 상태로 된다. 또한, 모든 카운터의 값은 O으로 된다. 이것은 초기화 직후와 같은 상태이며, 따라서, 캐시 플러시 실행부(34B)의 동작이 종료되면, 프로세서(10)는 통상의 데이터 처리를 즉시 시작할 수 있다.
이상, 비포어 이미지를 사용한 캐시 플러시 실행부(34B)의 체크 포인트 처리시의 동작예를 설명하였다.
이와 같이, 본 실시예에서는 블록 카운터(38)를 설치함으로써, 캐시 플러시 실행부(34B)가 발행하는 판독 라인 명령의 수를 줄일 수 있기 때문에, 그 만큼 체크 포인트 처리의 소요 시간을 단축할 수 있다.
(장해 발생시의 복구처리)
이어서, 먼저 설명한 체크 포인트 처리의 개시전에 고장이 발생한 경우를 예로 들어 도 21를 참조하여 설명한다. 장해가 발생하였을 때, 프로세서(10)는 모든 캐시 블록을 무효화하기 때문에, 캐시 블록 BLK0의 상태도 무효로 되어 있다.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 모든 캐시 블록의 무효화 명령을 실행한다.
3 : 이 명령 실행 결과, BLK0는 무효 상태가 된다.
4 : 메인 메모리 상태 복원부(33B)가 최후에 취득한 비포어 이미지 a번지와 데이터 A1의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
5 : 메인 메모리(51)의 a번지에 A1이 쓰여지지만, 원래 A1이기 때문에 변하지 않는다.
6 : 메인 메모리 상태 복원부(33B)가 그 전에 취득한 비포어 이미지 b번지와 데이터 B0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
7 : 메인 메모리(51)의 b번지가 BO로 변한다.
8 : 메인 메모리 상태 복원부(33B)가 그 전에 취득한 비포어 이미지 a번지와 데이터 A0의 쌍을 기초로 하여, 기록 라인 명령을 발행한다.
9 : 메인 메모리(51)의 a번지가 A0로 변한다.
10 : 프로세서(10)가 모든 카운터의 값을 O으로 한다.
11 : 이 결과, 메인 메모리(51)는 체크 포인트 처리 종료의 시점의 상태로 되돌아 간다.
이상, 메인 메모리 상태 복원부(33B)의 장해 복구시의 동작예를 설명하였다.
한편, 블록 카운터(38)는 모든 어드레스에 대하여 반드시 설정할 필요는 없다. 어떤 어드레스에 대해서, 대응하는 카운터가 없는 경우, 캐시 플러시 실행부(34B)는 그 어드레스에 대한 판독 라인 명령을 항상 발행하도록 하면 좋다.
이와 같이, 본 실시예의 체크 포인트 처리 가속 장치(30B)에서는 블록 카운터(38)를 설치함으로써, 캐시 플러시 실행부(34B)가 변경된 상태의 캐시 블록이 실재하지 않는 어드레스에 대하여, 판독 라인 명령을 발행한다고 하는 낭비를 어느 정도 경감시킬 수 있다. 또한, 캐시 플러시 실행부(34B)가 실행중에도 블록 카운터 제어부(37)가 블록 카운터(38)의 +1 증가/-1 감소를 적절히 행함으로써, 캐시 플러시 실행부(34B)가 실행을 종료하였을 때, 모든 블록 카운터의 값은 0으로 되어 있다. 이 때문에, 캐시 플러시 실행부(34B)가 실행을 종료하면, 프로세서(10)는 즉시 통상의 데이터 처리를 개시할 수 있다.
한편, 전술한 실시예에서는 블록 카운터(38)를 다이렉트 맵 방식의 캐시 메모리(20)에 대해서 캐시 블록의 각각에 대응시켜 설치하는 방식을 나타내었다.
이어서, 캐시 메모리(20)가 n웨이의 세트 어소시에이티브 방식인 경우에 관해서 설명한다.
n웨이의 세트 어소시에이티브 방식의 캐시 메모리의 경우, 어떤 어드레스의 데이터는 한개의 웨이를 형성하는 n개의 캐시 블록의 어딘가에 격납되지만, 그 중 어느 캐시 블록에 격납되는지는 그 때마다 변할 수 있다.
그래서, 한개의 웨이를 형성하는 n개의 캐시 블록에 대하여, 한개의 카운터를 마련한다. 즉, 어떤 카운터는 대응하는 웨이에서 변경된 상태의 캐시 블록의 개수를 유지하게 된다. 프로세서의 수가 P인 경우, 카운터는 O ∼ P×n+α까지의 값을 취할 수 있다. α는 다이렉트 맵 방식의 경우에 설명한 바와 같이, 프로세서의 기록 버퍼에 대응하기 위한 마진이다.
또한, 블록 카운터(38)를 캐시 블록 혹은 한 개의 웨이를 형성하는 캐시 블록의 집합에 대응시켜 설치하는 대신에, 메인 메모리를 캐시 블록의 크기로 나누어, 각각에 대하여 카운터를 설치하는 것도 가능하다. 이 경우, 계산기의 프로세서의 수에 관계없이, 한개의 어드레스에 대한 변경된 상태의 캐시 블록의 개수는 0이나 1이기 때문에, 각각 1 비트로 표현할 수 있어서, 블록 카운터 제어부(37)를 간단화할 수 있다.
이것은 메인 메모리를 캐시 블록의 크기로 나누어, 1 비트의 정보를 지니게 한다고 하는 점에서, 제 2 실시예와 유사하지만, 이하의 점에서 다르다.
즉, 1 비트 정보의 온/오프를 행하는 타이밍, 및 그 온/오프에 의해 제어하는 대상이 다르다. 구체적으로는 제 2 실시예에서는 비포어 이미지를 취득하는가 아닌가의 판단에 사용하는 데 대하여, 본 실시예에서는 캐시 플러시 실행부(34B)가 판독 라인 명령을 발행하는지의 여부 판단에 사용한다.
또한, 체크 포인트 방식의 계산기에 장해가 발생한 경우, 모든 메인 메모리를 직전의 체크 포인트로 되돌리는 것이 아니라, 메인 메모리의 일부 영역, 예컨대 장해 발생과 복구 처리의 이력을 유지하는 영역이나, 복구 처리를 실행하는 프로그램의 작업 영역 등, 되돌려서는 안되는 영역이 존재한다.
이 체크 포인트 처리 가속 장치(30B)에서, 그것을 실현하는 방식에는 이하의 2종류가 있다.
(1) 비포어 이미지 취득부(32B)에, 비포어 이미지를 취득하는지 아닌지를 판단시키는 기구(제 2 실시예의 플래그와는 다르다)를 설치한다. 이 방법은 취득하는 비포어 이미지가 적어지는 장점이 있지만, 그 판단을 고속으로 실행하지 않으면, 프로세서(10)나 시스템 버스(40)의 동작을 추종할 수 없게 될 위험성이 있다.
(2) 메인 메모리 상태 복원부(33B)에, 같은 판단 기구를 지니게 하여, 메인 메모리(51)에 비포어 이미지를 기록하는 기록 라인 명령을 발행하는지 아닌지를 판단한다. 이 방법에서는 실행 속도를 그다지 염려할 필요는 없다. 또한, 같은 판단 기구를 캐시 플러시 실행부(34B)에 지니게 하면, 체크 포인트 처리의 소요 시간이 약간 단축 가능하다.
여기서는 상태를 복원하여서는 안되는 영역은 제어 소프트웨어 쪽이며, 물리적으로 연속되는 영역에서, 또한 영역의 선두 어드레스를 어느 정도 자유롭게 설정할 수 있다는 전제로, (1)의 방식에도 적용 가능한 판단이 고속이며 하드웨어의 양도 그다지 필요로 하지 않는 방식을 나타낸다.
도 22와 같이, 이방식에서는 판단의 대상이 되는 갱신 어드레스를 유지하는 어드레스 레지스터(61), 어드레스 레지스터의 일부 비트를 마스크하기 위한 마스크 레지스터(62)와 33비트의 AND 회로(63), 그 결과와 비교하기 위한 비교 참조 레지스터(64)와 32비트 비교기(65)로 이루어지는 기구를 구비한다. 그리고, 비교기(65)에서 일치한다라고 판단하였을 때에는 비포어 이미지를 채취하지 않도록 한다. 또한, 이 기구라도 판단이 너무 늦는 경우에는 예컨대 무효화 명령에 대한 판독 라인 비동기 명령을 먼저 발행하여, 비포어 이미지를 격납하기 직전에 이 기구의 결과를 사용하여도 좋다.
지금까지, 캐시 메모리(20) 상에서 데이터 갱신이 발생한 경우에, 시스템 버스(40)에 발행되는 무효화 명령, 및 판독 라인 무효화 명령이 관측되었을 때, 비포어 이미지 취득부(32B)가 갱신 어드레스와 갱신전 데이터를 취득하는 방법을 나타내었다. 그러나, 계산기에 따라서는 입출력 기기에서부터 메인 메모리(51)에의 데이터 전송이나, 프로세서(10)에서부터의 캐시 메모리(20)를 통과시키지 않는 메인 메모리(51)에의 기록이 일어나는 경우가 있으므로, 다음에 그와 같은 계산기에 적용하는 비포어 이미지 취득부(32B), 메인 메모리 상태 복원부(33B)의 변형예를 설명한다.
(변형예 1)
여기서는 이하의 전제가 필요하다.
(1) 메인 메모리(51)에의 기록에는 기록 라인 명령과는 별도의 명령(여기서는 그것을 기록 비동기 명령이라고 부른다)이 사용된다.
(2) 시스템 버스(40)의 수단으로서, 재시도 응답선이라는 제어 신호선이 있고, 기록 비동기 명령이 시스템 버스에 발행되었을 때, 재시도 신호선을 사용함으로써, 그 명령의 실행 중지를 요구할 수 있다. 이 경우, 잠시 중지된 명령이 다시 발행된다.
비포어 이미지 취득부(32B)는 기록 비동기 명령이 검출되면, 재시도 응답선을 사용한다. 그리고, 그 직후에, 기록 비동기 명령에 포함되어 있는 갱신 어드레스를 사용하여, 판독 라인 비동기 명령을 발행한다. 그리고, 메인 메모리(5l)로부터의 응답에 포함되는 데이터와 상기 갱신 어드레스의 쌍을 비포어 이미지로서 비포어 이미지 기억부(35B)에 격납한다. 한편, 비포어 이미지 취득부(32B)는 이전과 같은 어드레스를 포함하는 기록 비동기 명령을 검출하였을 때에는 재시도 응답선을 사용하지 않는다.
(변형예 2)
입출력 기기로부터 메인 메모리(51)에의 데이터 전송이나, 프로세서(10)로부터의 캐시 메모리(20)를 통과시키지 않은 메인 메모리(51)에의 기록은 프로세서(10)의 제어하에서 행하여진다. 따라서, 기록 비동기 명령이 발행되기 전에, 프로세서(10)가 그 어드레스에 대하여 캐시 메모리(20)를 경유한 데이터 갱신을 행함으로써, 비포어 이미지 취득부(32B)에 비포어 이미지를 취득시킨다. 다음에, 프로세서(10)는 갱신한 데이터를 유지하고 있는 캐시 블록를 무효화하고, 그 후, I/0기기로부터 메인 메모리(51)에의 데이터 전송 등을 기동한다.
(변형예 3)
비포어 이미지 취득부(32B)는 프로세서(10)로부터 지정된 어드레스 범위에 대해서, 비포어 이미지의 취득과 격납을 실행하는 기능을 부가한다. 통상, 입출력 기기로부터 메인 메모리(51)에의 데이터 전송은 연속된 어드레스에 대하여 행하여지기 때문에, 프로세서(10)로부터의 1회의 지시에 의해 복수의 비포어 이미지의 취득이 가능해진다. 따라서, 변형예 2보다 처리가 고속이다.
이상 설명한 제 1 ∼ 제 3 실시예는 하드웨어의 변형에 관한 실시예이지만, 제 1 ∼ 제 3 실시예의 어디에도 적용 가능한 처리 동작의 변형에 관한 실시예를 이하에서 설명한다.
(제 4 실시예)
제 1 ∼ 제 3 실시예에서는 통상의 데이터 처리시에, 비포어 이미지 취득부(32,32A,32B)를 동작시킴으로써 비포어 이미지를 취득하고, 체크 포인트 처리시에는 프로세서(10)가 캐시 플러시 실행부(34,34A,34B)를 기동하여, 그 종료를 기다렸다가 통상의 데이터 처리를 재개하는 제어 방식하에서의 동작을 설명하였다. 제 4 실시예로서, 체크 포인트 처리의 소요 시간을 단축하는 보다 최적화된 체크 포인트 처리 가속 장치(30,30A,30B)의 제어 방법, 및 그 제어 방법에 적합한 체크 포인트 처리 가속 장치의 기능 및 구성법을 나타낸다. 또한, 이 제어 방식을 플러시 전도(early flush) 방식이라 부르기로 한다.
본 발명의 체크 포인트 처리 가속 장치(30,30A,30B)를 적용한 체크 포인트 & 복구 방식의 계산기에서는 통상의 데이터 처리를 계속하는 시간은 전형적으로는 수 밀리초 ∼ 수십 밀리초이다. 체크 포인트 처리가 종료된 시점에서는 모든 캐시 블록이 무효 상태, 또는 클린 쉐어드 상태이며, 변경된 상태인 것은 없다. 그리고, 통상의 데이터 처리를 재개하면, 점차로 변경된 상태의 캐시 블록이 증가하여, 다음 체크 포인트 처리를 시작할 때는 전형적으로는 10% ∼ 50%의 캐시 블록이 변경된 상태로 되어 있다.
체크 포인트 처리의 소요 시간의 대부분은 비포어 이미지 기억부(35)에 격납되어 있는 비포어 이미지의 어드레스에 대하여, 판독 라인 명령을 발행하는 처리가 차지한다. 이것을 고속화하는 방법으로서, 제 2 실시예에서는 플래그 메모리(36)를 사용하는 방법을, 제 3 실시예에서는 블록 카운터(38)를 사용하는 방법을 나타내었다. 그리고, 이들은 쓸데 없는 판독 라인 명령의 발행을 줄이는 것을 목적으로 하고 있었다.
제 4 실시예에서는 캐시 플러시 실행부(34)의 기동을 체크 포인트 처리의 개시전, 즉 통상의 데이터 처리중에 행하는 방법을 설명한다. 또한, 제 1 ∼ 제 3 실시예에서 설명한 체크 포인트 처리 가속 장치(30,30A,30B)가 모두 이 제어 방식하에서 정확하게 동작하는 것과 이 제어 방식에 의해 적합한 체크 포인트 처리 가속 장치의 구성법에 대해서도 설명한다.
맨처음에, 도 23에 기초하여, 프로세서(10), 비포어 이미지 취득부(32)(또는 32A, 32B), 및 캐시 플러시 실행부(34)(또는 32A, 34B)의 동작의 시간적인 관계를 설명한다.
프로세서(10)는 통상의 데이터 처리 및 체크 포인트 처리(비포어 이미지 처리)의 전반은 비포어 이미지 취득부(32)를 실행시켜 둔다. 또한, 프로세서(10)는 통상의 데이터 처리 도중에, 캐시 플러시 실행부(34)를 기동한다. 그러면, 그 후에는 프로세서(10)가 통상의 데이터 처리에 따라서, 데이터의 갱신을 행하고, 그것을 비포어 이미지 취득부(32)가 비포어 이미지 기억부(35)의 W 포인터(제 1실시예에서 설명)가 가리키는 엔트리에 격납하는 처리와, 캐시 플러시 실행부(34)가 비포어 이미지 기억부(35)의 F 포인터가 가리키는 엔트리에 격납되어 있는 어드레스에 대하여 판독 라인 명령을 발행함으로써, 변경된 상태의 캐시 블록의 내용을 메인 메모리에 재기록하는 처리가 병행되어 행하여진다.
그리고, 프로세서(10)가 체크 포인트 처리를 개시하면, 우선 통상의 데이터 처리를 중단하였을 때의 콘텍스트의 메인 메모리(51)(실제로는 캐시 메모리(20))에의 기록 후, 캐시 플러시 실행부(34)가 처리를 종료하는 것을 기다린다.
다음에, 이 플러시 전도 방식의 프로세서의 처리 흐름을 도 24에 근거하여 설명한다.
통상의 데이터 처리에서는 단계 G1에서 비포어 이미지 취득부(32)를 기동한 후, 단계 G2에서 응용 프로그램이나 오퍼레이팅 시스템(통상의 데이터 처리)을 실행한다. 그리고, 단계 G3에서 캐시 플러시 실행부(34)를 기동하는 타이밍인지 아닌지를 판정한다. 이 캐시 플러시 실행부(34)를 기동하는 타이밍에 대해서는 후술한다. 기동해야 할 타이밍이 검출되면, 단계 G4에서 캐시 플러시 실행부(34)를 기동한다. 단계 G5에서 응용 프로그램이나 오퍼레이팅 시스템(통상의 데이터 처리)을 실행한다. 그리고, 단계 G6에서 통상의 데이터 처리가 일정 기간 계속되었는지가 판정되어, 일정 기간 경과하였다고 판정되면, 통상의 데이터 처리를 중단하고, 체크 포인트 처리를 개시한다.
체크 포인트 처리에서는 우선 단계 G7에서 프로세서(10)를 개입 금지 상태로 하여, 외부 기기 등으로부터의 개입을 받아들이지 않도록 한다. 이것은 체크 포인트 처리 중에는 통상의 데이터 처리를 일체 실행하지 않도록 하기 위해서이다. 단, 계산기의 고장 발생을 통지하는 개입에 대해서는 통상의 개입보다 높은 우선도를 설정하는 등, 개입 금지 상태로 있더라도 받아들이도록 되어 있을 필요가 있다. 단계 G7에서는 프로세서(10)는 통상의 데이터 처리를 중단한 시점에서의 콘텍스트, 즉 레지스터 내용의 메인 메모리(51)의 적당한 어드레스에의 기입도 행한다. 단, 본 실시예에서는 카피백형의 캐시 메모리가 사용되기 때문에, 이 시점에서는 통상의 데이터 갱신과 같이, 캐시 블록에 변경된 상태로 유지되고, 비포어 이미지 기억부(35)에 그 어드레스의 비포어 이미지가 기억되고 있다.
그 후, 프로세서(10)는 단계 G8에서 비포어 이미지 취득부(32)의 동작을 정지하고, 단계 G9에서 캐시 플러시 실행부(34)가 비포어 이미지 기억부(35) 내의 비포어 이미지를 사용하여, 모든 변경된 상태의 캐시 블록의 데이터가 메인 메모리(51)에 재기록되는 것을 기다린다. 프로세서(10)의 콘텍스트도, 이 때 메인 메모리(51)에 재기록된다. 캐시 플러시 실행부(34)가 실행을 종료하면, 단계 Gl0에서 메인 메모리(51)에 보존한 콘텍스트를 대응하는 레지스터로 되돌려, 개입 금지 상태를 해제함으로써, 통상의 데이터 처리를 재개한다.
플러시 전도 방식의 효과를 제 1 ∼ 제 3 실시예의 통상의 플러시 방식과 대비시켜 모식적으로 나타내면, 도 25a, 25b와 같이 된다. 이들 도면의 세로축은 캐시 플러시 실행부가 처리해야 할 비포어 이미지의 양이고, 횡축은 시간이다.
통상의 제어 방식(도 25a)도 플러시 전도 방식(도 25b)도, 통상의 데이터 처리를 개시한 직후 새로이 취득되는 비포어 이미지의 양이 거의 직선적으로 증가한다.
통상의 제어 방식에서는 이 상태가 체크 포인트 처리의 직전까지 계속되는 데 반하여, 플러시 전도 방식에서는 통상의 데이터 처리 도중에 캐시 플러시 실행부(34)를 기동함으로써, 비포어 이미지 취득부(32)가 새로이 비포어 이미지를 취득하는 한편, 캐시 플러시 실행부(34)가 판독 라인 명령을 발행하여, 그 결과 캐시 플러시 실행부(34)가 처리해야 할 비포어 이미지의 양(W 포인터와 F 포인터의 차)의 증가가 둔화되거나 또는 줄어든다. 모식도에서는 줄어드는 경우를 나타내었다. 캐시 플러시 실행부(34)가 처리해야 할 비포어 이미지의 양을 줄이도록 하는가 아닌가는 캐시 플러시 실행부(34)의 구성법으로 제어할 수 있기 때문에, 후에 설명한다.
이 체크 포인트 처리 가속 장치(30)를 사용한 경우의 체크 포인트 처리의 소요 시간은 거의, 캐시 플러시 실행부(34)가 처리해야 할 비포어 이미지의 양에 비례하기 때문에, 플러시 전도 방식은 체크 포인트 처리의 소요 시간을 대폭으로 줄일 수 있다. 통상의 데이터 처리 소요 시간은 앞에서 말한 바와 같이, 전형적으로는 수 밀리초 ∼ 수십 밀리초 사이이고, 통상의 제어 방식의 경우, 체크 포인트 처리의 소요 시간은 1 밀리초 ∼ 10 밀리초 정도이다. 그 사이, 외부 기기로부터의 개입을 받아들이지 않는 것이, 본 체크 포인트 & 복구 방식의 계산기의 적용 범위를 제한하는 요인이 될 수 있다. 따라서, 플러시 전도 방식에 의해, 체크 포인트 처리의 소요 시간이 예컨대 수분의 1이 된다는 것은 충분히 의미가 있다.
단, 플러시 전도 방식에는 성능을 열화시키는 측면도 있다. 그것은 앞으로도 변경된 상태로 사용되는 캐시 블록(메인 메모리 상에 설정된 카운터가 그 전형이다)을 클린 쉐어드 상태로 해 버려서, 다음에 프로세서가 그 데이터를 갱신하고자 할 때, 무효화 명령이 발행되어 버리는 점이다. 이 성능의 열화를 경감시키는 방법에 대해서는 후에 설명한다.
여기서 체크 포인트 처리 가속 장치(30)의 동작을 설명한다.
플러시 전도 방식하에서, 제 1 ∼ 제 3 실시예의 체크 포인트 처리 가속 장치(30,30A,30B)는 올바르게 동작한다. 동작예는 유사하기 때문에, 여기서는 도 11에 나타낸 제 2 실시예의 경우에 대해서 설명하는 것으로 끝낸다.
(초기화)
프로세서(10)는 모든 플래그 메모리(36)를 오프로 한다. 이와 동기하여, 프로세서(10)는 소프트웨어를 실행함으로써, 모든 캐시 블록을 변경된 상태 이외의 상태로 한다.
(통상의 데이터 처리 및 체크 포인트 처리시)
프로세서(10)는 통상의 데이터 처리를 개시하는 시점에서, 비포어 이미지 취득부(32)를 기동한다. 여기서는 이하에 나타낸 순서로 처리가 행하여진 경우에 관해서 설명한다.
(1) 프로세서(10)가 a번지의 데이터를 A0에서 A1로, b번지의 데이터를 B0에서 Bl로, 이 순서로 갱신하였다.
(2) 프로세서(10)가 캐시 플러시 실행부(34A)를 기동하였다.
(3) 캐시 플러시 실행부(34A)가 a번지에 대하여 판독 라인 명령을 발행하였다.
(4) 프로세서(10)가 a번지의 데이터를 A1에서 A2로 갱신하였다.
단, a번지, b번지 모두 캐시 블록 BLK0에 대응하며, BLK0는 초기 상태에서는 a번지의 데이터 A0를 클린 쉐어드 상태로 유지하고 있다고 하자.
이 경우의 동작을 도 26을 참조하여 상세히 설명한다.
1 : 초기 상태를 가리킨다.
2 : 프로세서(10)가 a번지의 데이터를 A1로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터를 클린 쉐어드 상태로 유지하고 있기 때문에, a번지에 대한 무효화 명령이 발행된다.
3 : 그 데이터를 지니는 다른 캐시 메모리(20)는 a번지의 캐시 블록이 있으면 무효화하여, 종료된 것을 가리키는 응답을 되돌려 준다.
4 : 비포어 이미지 취득부(32A)는 a번지에 대응하는 플래그 메모리(36)가 오프이기 때문에, 이것을 온으로 하여, a번지에 대하여 판독 라인 비동기 명령을 발행한다.
5 : 메인 메모리(51)가 데이터 A0를 응답한다. 비포어 이미지 취득부(32A)가 a번지와 데이터 A0의 쌍을 비포어 이미지 기억부(35A)에 격납한다.
6 : 프로세서(10)가 b번지의 데이터를 B1로 갱신하려고 하지만, 캐시 블록 BLK0이 a번지의 데이터 A1를 변경된 상태로 유지하고 있기 때문에, a번지의 데이터 재기록을 위한 기록 라인 명령이 기록 버퍼에 일시적으로 유지되어, 먼저 b번지에 대한 판독 라인 무효화 명령이 발행된다.
7 : 메인 메모리(51)가 데이터 B0를 응답한다. 비포어 이미지 취득부(32A)는 b번지에 대응하는 플래그 메모리(36)가 오프이기 때문에, 이것을 온으로 하여, b번지와 데이터 B0의 쌍을 비포어 이미지 기억부(35A)에 격납한다.
8 : 기록 버퍼에 유지되고 있던 a번지에 대한 기록 라인 명령이 발행된다.
9 : 메인 메모리의 a번지가 A1로 변한다.
10 : 프로세서(10)는 이 시점에서 캐시 플러시 실행부(34A)를 기동한다.
11 : 캐시 플러시 실행부(34A)는 비포어 이미지 a번지와 데이터 A0의 쌍을 사용하여, a번지에 대응하는 플래그 메모리(36)를 오프로 하는 동시에, a번지에 대하여 판독 라인 명령을 발행한다.
12 : BLK0는 b번지의 데이터 B1를 변경된 상태로 유지하고 있기 때문에, 변경된 응답 신호선도 쉐어드 응답 신호선도 사용되지 않는다. 메인 메모리(51)가 A1를 응답한다. BLK0의 상태는 변화하지 않는다.
13 : 캐시 플러시 실행부(34A)는 비포어 이미지 b번지와 데이터 B0의 쌍을 사용하여, b번지에 대응하는 플래그 메모리(36)를 오프하는 동시에, b번지에 대하여 판독 라인 명령을 발행한다.
14 : BLK0는 b번지의 데이터 B1을 변경된 상태로 유지하고 있기 때문에, 변경된 응답 신호선이 사용되고, 메인 메모리(51)에의 재기록이 행하여져, 메인 메모리(51)의 b번지가 B1로 변한다. BLK0의 상태는 클린 쉐어드로 변한다.
15 : 프로세서(10)가 a번지의 데이터를 A2로 갱신하려고 하지만, 캐시 블록 BLK0이 b번지의 데이터 B1를 클린 쉐어드 상태로 유지하고 있기 때문에, a번지에 대한 판독 라인 무효화 명령이 발행된다.
16 : 메인 메모리(51)가 데이터 A1을 포함하는 응답을 되돌려 준다. 비포어 이미지 취득부(32A)는 a번지에 대응하는 플래그 메모리(36)가 오프이기 때문에, 이것을 온으로 하여, a번지와 데이터 A1의 쌍을 비포어 이미지 기억부(35A)에 격납한다.
17 : 캐시 플러시 실행부(34A)는 비포어 이미지 a번지와 데이터 A1의 쌍을 사용하여, a번지에 대응하는 플래그 메모리(36)를 오프로 하여, a번지에 대하여 판독 라인 명령을 발행한다.
18 : BLK0는 a번지의 데이터 A2를 변경된 상태로 유지하고 있기 때문에, 변경된 응답 신호선이 사용되며, 메인 메모리(51)에의 재기록이 행하여져, 메인 메모리(51)의 a번지는 A2로 변한다. BLK0의 상태는 클린 쉐어드로 변한다.
이상, 본 제어 방법에 있어서의 프로세서(10), 메인 메모리(51), 비포어 이미지 취득부(32A), 및 캐시 플러시 실행부(34A)의 통상의 데이터 처리 및 체크 포인트 처리시의 동작예를 설명하였다.
(장해 발생시의 복구 처리)
메인 메모리 상태 복원부(33A)의 동작은 비포어 이미지 기억부(35A)에 기억되어 있는 비포어 이미지를 보다 후에 격납된 것부터 순차로 기록 라인 명령을 발행할 뿐이기 때문에, 동작예에 기초하여 설명한다.
이상, 플러시 전도 방식하에서, 본 발명의 제 2 실시예의 체크 포인트 처리 가속 장치가 올바르게 동작하는 것을 설명하였다.
이어서, 체크 포인트 처리 가속 장치(30)(30A,30B)의 기능 및 구성법을 설명한다.
제 1 ∼ 제 3 실시예에서는 캐시 플러시 실행부(34)(34A,34B)는 비포어 이미지 기억부(35)에 격납되어 있는 비포어 이미지를 F 포인터를 사용하여 최초로 격납된 것부터 순차로 처리하는 방식을 나타내었다. 통상의 제어 방식의 경우에는 비포어 이미지를 어떠한 순서로 처리하더라도 그다지 변함이 없지만, 플러시 전도 방식의 경우, 이 처리 방식은 2개의 장점이 있다.
제 1 장점은 앞으로도 변경된 상태로 사용되는 캐시 블록을 클린 쉐어드 상태로 해 버려서, 다음에 프로세서가 그 데이터를 갱신하고자 할 때, 무효화 명령이 발행되어 버린다고 하는 성능 열화 요인을 경감시킬 수 있는 점이다.
즉, 이른 시점에서 취득한 비포어 이미지일수록, 캐시 플러시 실행부(34) (34A,34B)가 처리하고자 하는 시점에서는 이미 변경된 상태의 캐시 블록이 실재하지 않을 가능성이 높고, 캐시 플러시 실행부(34)(34A,34B)가 판독 라인 명령을 발행하더라도, 그에 의하여 클린 쉐어드 상태로 변화할 가능성은 작기 때문이다.
제 2 장점은 하드웨어의 제어의 용이성이다. 우선, 비포어 이미지 취득부(32)(32A,32B)가 W 포인터를 사용하여 최초의 엔트리로부터 순차로 기록하는 것을 캐시 플러시 실행부(34)(34A,34B)가 F 포인터를 사용하여 쫓아가기 때문에, 캐시 플러시 실행부(34)(34A,34B)의 종료의 판단이 간단해진다.
또한, 플러시 전도 방식에서는 비포어 이미지 취득부(32)(32A,32B)와 캐시 플러시 실행부(34)(34A,34B)에 의한 비포어 이미지 기억부(35)(35A,35B)에의 액세스 경합(競合)이 발생한다. 한개의 메모리 뱅크에 대하여 판독 액세스와 기록 액세스가 교대로 나오면, 판독 액세스가 늦게 되기 때문에, 그러한 상황을 피하는 것이 바람직하다. 특히, 복수 프로세서를 구비한 멀티 프로세서 시스템에 적용하는 경우에는 액세스 경합의 회피가 중요하다.
여기에서는 제 1 실시예에서 말한 W 포인터와 F 포인터를 사용하는 것을 전제로, 액세스 경합이 적은 비포어 이미지 기억부(35)(35A,35B)의 엔트리의 구성법과 그 사용법을 나타낸다.
우선, 전반의 n개의 엔트리와, 후반의 n개의 엔트리를 도 27에 도시한 바와 같이, 메모리 뱅크 A와 메모리 뱅크 B로 나누어 구성한다. 2개의 뱅크 메모리로 나누는 것은 각각의 뱅크 메모리에 동시에 액세스가 가능하게 하는 것과, 후에 도시하는 것과 같이, 한개의 메모리 뱅크에 대하여 판독 액세스와 기록 액세스가 교대로 나오는 것과 같은 상황을 만들지 않기 위해서이다.
통상의 데이터 처리의 전반, 즉, 비포어 이미지 취득부(32)(32A,32B)가 동작하여, 캐시 플러시 실행부(34)(34A,34B)가 동작하지 않을 때는 취득한 비포어 이미지를 메모리 뱅크 A에 격납한다. 이 때, 메모리 뱅크 A는 기록 액세스만으로 된다.
이어서, 프로세서(10)가 캐시 플러시 실행부(34)(34A,34B)를 기동하면, 비포어 이미지 취득부(32)(32A,32B)는 취득한 비포어 이미지를 메모리 뱅크 B에 격납한다. 그리고, 캐시 플러시 실행부(34)(34A,34B)는 메모리 뱅크 A에서부터 비포어 이미지를 낸다. 이 때, 메모리 뱅크 A는 판독 액세스만, 메모리 뱅크 B는 기록 액세스만으로 된다.
다음에, 프로세서(10)는 캐시 플러시가 메모리 뱅크 A 내의 비포어 이미지를 전부 처리하기 직전에 체크 포인트 처리를 개시하여, 얼마 되지 않아 바로 비포어 이미지 취득부(32)(32A,32B)를 정지한다. 이 때, 메모리 뱅크 B는 거의 기록 액세스로만 된다.
이상과 같이, 메모리 뱅크의 사용 상황과 캐시 플러시 실행부(34)(34A,34B)의 기동, 및 체크 포인트 처리의 개시를 링크함으로써, 각 메모리 뱅크는 거의 항시, 판독나 라이드 중 어느 한 쪽의 모드로 액세스되게 되어, 비포어 이미지의 격납과 취득이 고속화될 수 있다.
또한, 전술 설명에서는 캐시 플러시 실행부(34)(34A,34B)는 프로세서(10)가 기동한다고 하였지만, 이와 같이 제어하면, 비포어 이미지 취득부(32)(32A,32B)가 메모리 뱅크 A의 모든 엔트리에 비포어 이미지를 격납한 시점에서 캐시 플러시 실행부(34)(34A,34B)를 기동하도록 할 수도 있으며, 그 경우, 프로세서(10)는 캐시 플러시 실행부(34)(34A,34 B)를 기동하는 처리를 생략할 수 있는 것 외에, 메모리 뱅크 A의 용량을 끝까지 사용할 수 있다고 하는 장점이 있다.
또한, 캐시 플러시 실행부(34)(34A,34B)는 판독 라인 명령의 발행 빈도를 제어할 수 있다. 통상의 제어 방식하에서는 캐시 플러시 실행부(34)(34A,34B)는 프로세서(10)가 대개 동작을 정지하고 있는 상황에서 동작하기 때문에, 비포어 이미지 기억부(35)(35A,35B)에 격납되어 있는 갱신 어드레스를 사용하여, 얼마나 고속으로 판독 라인 명령을 발행하는가만이 중요하였다.
그러나, 플러시 전도 방식하에서는 데이터 처리 도중에서, 캐시 플러시 실행부(34)(34A,34B)에 의한 판독 라인 명령의 발행 빈도가 과도하게 높으면, 통상의 데이터 처리가 거의 진행되지 않는 상황이 된다.
그래서, 캐시 플러시 실행부(34)(34A,34B)는 판독 라인 명령의 발행 빈도를 적게 하는 모드와 높은 모드를 구비하는 것이 바람직하다. 그 실현 방법의 예를 도 28에 나타내는 캐시 플러시 실행부(34)(34A,34B)의 처리 흐름에 따라 설명한다.
이 처리 흐름은 도 5에 나타낸 제 l 실시예의 것을 약간 수정한 것이다. 즉, 캐시 플러시 실행부(34)(34A,34B)는 프로세서(10)의 지시에 의해, 단계 H1에 도시하는 것과 같이 F 포인터가 최초의 엔트리를 가리키도록 한 후, 단계 H2에서 F 포인터와 W 포인터가 일치하는지 판정한다. F 포인터가 W 포인터와 같으면, 캐시 플러시 처리를 종료한다. 이 때, 캐시 블록의 상태는 전부 무효 또는 클린 쉐어드로 되어 있다.
양자의 포인터가 같지 않은 경우는 단계 H3에서 F 포인터가 가리키는 엔트리 중의 갱신 어드레스를 사용하여, 판독 라인 명령을 발행하고, 단계 H4에서 F 포인터를 진행시킨다. 판독 라인 명령을 발행하는 것은, 만일 그 어드레스의 데이터를 변경된 상태로 유지하는 캐시 블록이 있으면, 그 데이터를 메인 메모리(51)에도 전송하여, 그 캐시 블록의 상태는 변경된에서 클린 쉐어드로 변화한다고 하는 판독 라인과 그 응답의 성질을 이용하기 위해서이다. F 포인트를 +1 진행시킨 후, 단계 H5, H6에 도시하는 것과 같이, 비포어 이미지 취득부(32)(32A,32B)가 실행중이라면 C사이클을 기다리고, 그렇지 않으면 단계 H2로 되돌아가, 즉시 다음의 비포어 이미지를 사용한 판독 라인 명령을 발행한다.
이 방식의 변형으로는 예컨대 비포어 이미지 취득부(32)(32A,32B)가 최근의 수십 사이클에 있어서, 비포어 이미지를 취득한 적이 있는 경우에는 C사이클을 기다리는 방식도 가능하다.
(제 5 실시예)
이어서, 본 발명의 제 5 실시예를 설명한다. 전술한 제 4 실시예에서는 프로세서(10)는 체크 포인트 작성시, 캐시 플러시 실행부(34)(34A,34B)가 종료하는 것을 그저 기다리는 데(도 24의 단계 G9)에 많은 시간을 소요했었다. 그것을 개선하는 방법으로서, 체크 포인트 작성시에, 프로세서가 소프트웨어적으로 변경된 상태의 캐시 블록의 내용을 메인 메모리(51)에 재기록하는 캐시 명령을 실행하는 방법에 대해서 설명한다. 또한, 제 1 ∼ 제 4 실시예에서는 하드웨어도 병용하여 캐시 플러시를 행하고 있다.
도 29는 본 실시예의 프로세서(10)가 체크 포인트 가속 장치(30)(30A,30B)를 사용하여 체크 포인트 & 롤백 방식을 실현하는 경우의 통상의 데이터 처리 및 체크 포인트 처리에 있어서의 처리 흐름을 나타내고 있다.
통상의 데이터 처리는 제 4 실시예의 플러시 전도 방식과 완전히 동일하기 때문에 설명은 생략한다.
체크 포인트 처리에서는 우선, 단계 I7에서 프로세서(10)를 개입 금지 상태로 하여, 외부 기기 등으로부터의 개입을 받아들이지 않도록 한다. 이것은 체크 포인트 처리중에는 통상의 데이터 처리를 일체 실행하지 않도록 하기 위해서이다. 단, 계산기의 고장 발생을 통지하는 개입에 있어서는 통상의 개입보다 높은 우선도를 설정하는 등, 개입 금지 상태로 있더라도 받아들여지도록 되어 있을 필요가 있다. 단계 I7에서는 프로세서(10)는 통상의 데이터 처리를 중단한 시점에서의 콘텍스트, 즉 레지스터 내용의 메인 메모리(51)의 적당한 어드레스에의 기록도 행한다. 단, 본 실시예에서는 카피백형 캐시 메모리가 사용되기 때문에, 이 시점에서는 통상의 데이터 갱신과 같이, 캐시 블록에 변경된 상태로 유지되어, 비포어 이미지 기억부(35)에 그 어드레스의 비포어 이미지가 기억되고 있다.
이어서, 단계 I9, I10, I12에서, 프로세서(10)는 한개의 캐시 블록의 태그를 독출하는 캐시 명령을 실행하여, 만일 변경된 상태라면, 그 캐시 블록의 내용을 메인 메모리(51)에 재기록하는 캐시 명령을 실행한다고 하는 처리를 N회 반복함으로써, N개의 캐시 블록에 대해서 캐시 플러시 처리를 행한다.
그리고, 이 시점에서, 캐시 명령에 의한 캐시 플러시 처리가 최후의 블록까지 종료되었으면(단계 I10), 단계 I11에서 캐시 플러시 실행부(34)(34A,34B)를 정지시킨 후, 단계 I13에서 메인 메모리(51)에 보존한 콘텍스트를 대응 레지스터로 되돌려, 개입 금지 상태를 해제함으로써, 통상의 데이터 처리를 재개한다.
단계 I10에서 캐시 명령에 의한 캐시 플러시 처리가 최후의 블록까지 종료되지 않고 있으면, 이 처리 동안 캐시 플러시 실행부(34)(34A,34B)의 동작이 계속되고 있기 때문에, 프로세서(10)는 단계 I12에서 캐시 플러시 실행부(34)(34A,34B)가 실행을 종료하였는지를 조사한다. 혹시, 실행이 종료되어 있으면, 단계 I13에서 메인 메모리(51)에 보존한 콘텍스트를 대응 레지스터로 되돌려, 개입 금지 상태를 해제함으로써, 통상의 데이터 처리를 재개한다.
이 방식의 효과는 체크 포인트 처리의 소요 시간이 단축된다.
특히, 캐시 플러시 실행부(34)(34A,34B)만으로는 시스템 버스의 전송 능력에 여유가 생길 정도로 시스템 버스(40)의 전송 능력이 대단히 큰 경우, 캐시 명령에 의한 캐시 플러시를 병용함으로써, 체크 포인트 처리의 소요 시간을 단축할 수 있다.
또한, 이 방식의 변형으로서, 체크 포인트 처리를 시작한 시점에서, 체크 포인트 실행부(34)(34A,34B)의 동작을 도중에 정지시켜, 캐시 명령에 의한 캐시 플러시처리만을 행하는 방법도 생각할 수 있다. 원래, 캐시 명령에 의한 소프트웨어적인 캐시 플러시 캐시 플러시 실행부(34)(34A,34B)와 달리, 시스템 버스(40)에 필요 없는 버스 명령을 발행하지 않는다고 하는 이점이 있다. 따라서, 프로세서의 수가 어느 정도 많고, 모든 프로세서가 일제히 캐시 명령에 의하여 캐시 플러시 처리했을 때에, 시스템 버스(40)의 전송 능력이 다 소요된 경우에는 이 방식이 유효하다.
더욱이, 플러시 전도 방식하에서, 체크 포인트 처리를 캐시 조작 명령에 의한 캐시 플러시 처리만을 행하는 방법(이것을 캐시 명령 단독(sole cache command)방식이라고 부른다)에 의해 실행하는 것을 전제로 하여, 체크 포인트 처리 가속 장치를 다음과 같이 개량할 수 있다.
제 4 실시예에서 설명한 체크 포인트 처리 가속 장치(30)(30A,30B)에서는 캐시 플러시 실행부(34)(34A,34B)는 최초로 취득한 비포어 이미지로부터 순차로 사용하는 것이었다. 그러나, 캐시 명령 단독 방식의 경우, 체크 포인트 처리 가속 장치(30)(30A,30B)의 캐시 플러시 실행부(34)(34A,34B)는 어떤 비포어 이미지를 사용하더라도 상관없다. 그래서, 시스템의 성능을 손상하지 않도록, 몇번이나 반복 기록이 발생하는 캐시 블록에 대하여, 그 내용을 메인 메모리에 재기록하는 일이 없도록 하는 것이 바람직하다.
이것을 실현하는 수단으로서, 캐시 플러시 실행부(34)(34A,34B)는 최초로 취득한 비포어 이미지로부터가 아니라, 도중에서 취득한 비포어 이미지를 사용하도록 하는 것도 생각할 수 있다. 이것은 최초 취득한 비포어 이미지에 포함되는 어드레스는 그 후에도 빈번히 쓰일 가능성이, 도중에서 취득한 비포어 이미지에 포함되는 어드레스의 경우부 높은 경우가 많다고 생각되기 때문이다.
본 발명은 상술한 실시예에 한정되지 않고 여러가지로 변형하여 실시할 수 있다. 예컨대, 제 4, 제 5 실시예는 각각 제 1 ∼ 제 3 실시예의 어디에도 적용이 가능한 동시에, 제 4, 제 5 실시예를 조합하여 제 1 ∼ 제 3 실시예의 어디에도 적용하는 것이 가능하다.
이상 설명한 바와 같이, 본 발명에 의하면, 프로세서가 캐시 메모리 상에서의 데이터 갱신을 하였을 때, 비포어 이미지 취득부가 그 갱신 어드레스와 갱신전 데이터를 취득하여, 비포어 이미지 기억부에 격납한다. 그리고, 캐시 플러시 실행부는 프로세서로부터 지시되었을 때에, 비포어 이미지 기억부에 격납되어 있는 모든 어드레스를 사용하여, 그 어드레스를 지니는 갱신 상태의 캐시 블록의 내용을 메인 메모리로 재기록할 것을 요구하는 명령을 시스템 버스에 발행함으로써, 캐시 플러시를 실행한다. 한편, 메인 메모리 상태 복원부는 프로세서로부터 지시되었을 때에, 비포어 이미지 기억부에 격납되어 있는 모든 갱신전 데이터를 새롭게 격납한 것에서부터 순차로 메인 메모리의 갱신 기록을 요구하는 명령을 시스템 버스에 발행함으로써, 메인 메모리를 비포어 이미지 기억부에는 아무것도 기억되어 있지 않았을 때의 상태로 복구한다.
즉, 이 체크 포인트 처리 가속 처리 장치를 적용하면, 특별한 캐시 메모리를 구비할 필요 없이, 표준 프로세서를 탑재하는 계산기 시스템 상에 있어서, 효율적인 체크 포인트 & 복구 기능을 실현할 수 있게 된다. 또한, 종래와 같이, 프로세서가 캐시 플러시용의 소프트웨어를 실행함으로써, 캐시 플러시를 실시하는 것에 비교하여, 대폭적인 고속화가 기대되기 때문에, 체크 포인트 & 복구 방식의 계산기 전체의 성능을 향상시키는 것이 가능해진다.
또한, 캐시 메모리 상에 확보되는 캐시 블록에 대응시켜 플래그 메모리를 마련하여, 비포어 이미지의 중복 격납을 회피하고, 혹은 서로 공통 부분을 갖지 않도록 어드레스 범위를 설정하고, 이 설정한 어드레스 범위 각각에 대응시켜 블록 카운터를 설치하여, 불필요한 캐시 플러시 동작 회피를 실행하면, 한층더 성능 향상을 꾀할 수 있게 된다.

Claims (42)

  1. 버스 스누프 기구를 지니는 카피백형의 캐시 메모리를 구비한 적어도 하나 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하는 계산기에 사용되는 체크 포인트 처리 가속 장치에 있어서,
    데이터 갱신이 발생한 갱신 어드레스와 갱신전의 데이터를 쌍으로 한 비포어 이미지를 복수개 기억하는 비포어 이미지 기억 수단과,
    상기 캐시 메모리 상에서 데이터 갱신이 발생한 것을 나타내는 명령 및 그에 대한 응답을 상기 시스템 버스의 감시에 의해서 검지하여,
    상기 비포어 이미지가 갱신 어드레스 및 갱신전 데이터를 포함하는 경우에, 갱신 어드레스 및 갱신전 데이터를 상기 비포어 이미지 기억 수단에 격납하고,
    갱신 어드레스를 포함하지만 갱신전의 데이터를 포함하지 않은 경우에, 그 갱신전 데이터를 독출하기 위한 명령을 상기 명령에 포함되는 어드레스를 사용하여 상기 시스템 버스에 발행하여, 상기 어드레스 및 독출된 갱신전 데이터를 상기 비포어 이미지 기억 수단에 격납하는 비포어 이미지 취득 수단과,
    상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스로 표시되는 갱신 상태의 데이터를 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 캐시 플러시 실행 수단과,
    상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 기억 수단에 격납된 모든 갱신전 데이터에 대해서, 새롭게 격납한 것에서부터 순차로 메인 메모리에의 갱신 기록을 요구하는 명령을 상기 시스템 버스에 발행하는 메인 메모리 상태 복원 수단을 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  2. 제 1 항에 있어서, 상기 메인 메모리를 상기 캐시 메모리 내에 확보되는 캐시 블록의 크기로 분할하고, 이 분할에 의해 정의되는 복수의 구획 중의 적어도 하나 이상의 구획 각각에 대응시켜, 온과 오프 두개의 상태가 할당되는 플래그 메모리를 추가로 포함하며,
    상기 비포어 이미지 취득 수단은 상기 비포어 이미지를 취득하였을 때,
    그 갱신 어드레스에 대한 플래그 메모리가 설정되고, 그 플래그 메모리가 오프일 때에는 상기 플래그 메모리를 온으로 설정하는 동시에 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하고,
    그 갱신 어드레스에 대한 플래그 메모리가 설정되고, 그 플래그 메모리가 온일 때에는 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하지 않으며,
    그 갱신 어드레스에 대한 플래그 메모리가 설치되어 있지 않을 때에는 상기 비포어 이미지를 비포어 이미지 기억 수단에 격납하는 수단을 구비하고,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단으로부터 비포어 이미지를 독출하여, 갱신 상태로 있는 캐시 블록의 내용을 상기 메인 메모리에 재기록할 것을 요구하는 명령을 발행할 때,
    그 어드레스에 대응하는 플래그 메모리가 설치되어 있을 때에는 그 플래그 메모리를 오프로 설정하는 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  3. 제 1 항에 있어서, 서로 공통 부분을 지니지 않도록 설정되는 하나 이상의 어드레스 범위 각각에 대응하여 설치되어, 상기 어드레스 범위에 속하는 갱신 상태의 캐시 블록수를 유지하는 블록 카운터와,
    상기 시스템 버스 상의 명령 및 그 응답을 감시하여, 상기 캐시 블록이 갱신 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 블록 카운터가 존재할 때는 그 블록 카운터를 +1 증가하고,
    상기 캐시 블록이 갱신 상태에서 그 이외의 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 블록 카운터가 있을 때는 그 블록 카운터를 -1 감소하는 카운터 제어 수단을 추가로 포함하며,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스에 대응하는 상기 블록 카운터가 없거나, 또는 블록 카운터가 있더라도 그 값이 초기값이 아닐 때, 그 어드레스의 갱신 상태의 캐시 블록의 내용을 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  4. 제 3 항에 있어서, 상기 캐시 메모리는 다이렉트 맵 방식의 캐시 메모리이며, 상기 블록 카운터는 캐시 블록과 1:1로 대응하여 설치되는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  5. 제 3 항에 있어서, 상기 캐시 메모리는 n웨이의 세트 어소시에이티브 방식의 캐시 메모리이며, 상기 블록 카운터는 n개의 캐시 블록으로 형성되는 그룹과 1:1로 대응하여 설치되는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  6. 제 1 항에 있어서, 상기 메인 메모리를 상기 캐시 메모리 내에 확보되는 캐시 블록의 크기로 분할하고, 이 분할에 의해 정의되는 복수의 구획 중의 적어도 하나 이상의 구획 각각에 대응시켜, 온과 오프 두개의 상태가 할당되는 플래그 메모리와,
    상기 시스템 버스 상의 명령 및 그 응답을 감시하여,
    상기 캐시 블록이 갱신 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 플래그 메모리가 설치되어 있을 때는 그 플래그 메모리를 온으로 설정하고,
    상기 캐시 블록이 갱신 상태에서 그 이외의 상태로 이행하는 것을 검지하였을 때와, 그 어드레스에 대응한 상기 플래그 메모리가 설치되어 있을 때는 그 플래그 메모리를 오프로 설정하는 플래그 메모리 제어수단과,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스에 대응하는 상기 플래그 메모리가 설치되어 있지 않거나, 또는 설치되더라도 그 상태가 온일 때에, 그 어드레스의 갱신 상태의 캐시 블록의 내용을 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단이 상기 캐시 메모리 상에서 데이터 갱신이 발생한 것을 나타내는 명령, 또는그에 대한 응답을 검지하였을 때에, 그 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하는지의 여부를 그 갱신 어드레스에 의해 판단하는 어드레스 판정 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  8. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 기억 수단에 격납된 상기 비포어 이미지 각각에 대하여, 상기 메인 메모리 상태 복원 수단에 의해 상기 메인 메모리에 재기록하는지의 여부를 그 갱신 어드레스에 의해 판단하는 어드레스 판정 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  9. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단은 상기 캐시 메모리 상에서의 데이터 갱신이 행하여졌을 때, 그 갱신 대상의 데이터가 다른 캐시 메모리 상에서 갱신되어 유지되고 있는 데이터일 때, 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하지 않는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  10. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 캐시 블록에 할당되는 복수의 관리 상태에서, 그 캐시 블록이 유지하고 있는 데이터는 다른 프로세서의 캐시 메모리에는 유지되어 있지 않고, 메인 메모리상과 같은 클린 익스클루시브 상태의 데이터를 포함할 때에, 어느 한 캐시 메모리가 발행한 메인 메모리 데이터의 판독 요구 명령에 대하여, 그 데이터를 유지하고 있다고 응답하여, 상기 캐시 블록이 클린 익스클루시브 상태가 되는 것을 막는 응답 수단을 추가로 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  11. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단은,
    상기 캐시 메모리의 기구를 개재시키지 않고서, 상기 메인 메모리의 내용을 갱신하는 명령을 검지하였을 때, 그 명령의 실행을 중지시켜, 상기 명령에 포함되는 갱신 어드레스를 사용하여 상기 메인 메모리로부터 갱신전 데이터를 독출하기 위한 명령을 상기 시스템 버스에 발행하고, 상기 어드레스와 독출된 갱신전 데이터를 상기 비포어 이미지 격납 수단에 격납하는 수단과,
    상기 실행을 중지시킨 명령이 다시 발행되었을 때에는 그 명령의 실행 중지를 행하지 않는 수단을 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  12. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단은,
    상기 프로세서로부터 지시된 어드레스 범위에 대해서, 상기 메인 메모리로부터 갱신전 데이터를 독출하기 위한 명령을 상기 시스템 버스에 발행하여, 상기 어드레스와 그 독출된 갱신전 데이터를 쌍으로 한 비포어 이미지를 상기 비포어 이미지 격납 수단에 격납하는 수단을 포함하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  13. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단과 상기 캐시 플러시 실행 수단은 병행 실행이 가능한 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  14. 제 13 항에 있어서, 상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 비포어 이미지 중에서 가장 빠른 시점에서 취득된 것부터 순차로 처리하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  15. 제 13 항에 있어서, 상기 비포어 이미지 기억 수단은 서로 독립된 복수의 메모리로 구성되는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  16. 제 13 항에 있어서, 상기 비포어 이미지 기억 수단은 서로 독립된 제 1 및 제 2 메모리를 구비하고,
    상기 비포어 이미지 취득 수단은 상기 캐시 플러시 실행 수단이 동작하고 있지 않을 때에는 취득한 비포어 이미지를 상기 제 1 메모리에 격납하고, 상기 캐시 플러시 실행 수단이 동작을 개시하였을 때에는 취득한 비포어 이미지를 상기 제 2 메모리에 격납하는 수단을 구비하며,
    상기 캐시 플러시 실행 수단은 상기 제 1 메모리에 격납된 비포어 이미지부터 처리하는 수단을 구비하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  17. 제 16 항에 있어서, 상기 캐시 플러시 실행 수단은 상기 비포어 이미지 취득 수단에 의해서 상기 제 1 메모리의 전부에 상기 비포어 이미지가 격납되었을 때에 기동되는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  18. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서, 상기 비포어 이미지 기억 수단의 남은 용량이 소정의 양을 밑도는 것을 상기 프로세서에 통지하는 통지 수단을 구비하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  19. 제 18 항에 있어서, 상기 캐시 플러시 실행 수단은,
    상기 비포어 이미지 취득 수단이 실행중일 때에는, 갱신 상태의 캐시 블록의 내용을 상기 메인 메모리에 재기록할 것을 요구하는 명령의 발행 빈도를 소정의 값 이내로 억제하며, 상기 비포어 이미지 취득 수단이 정지하였을 때에는, 상기 명령의 발행 빈도를 높이는 수단을 구비하는 것을 특징으로 하는 체크 포인트 처리 가속 장치.
  20. 버스 스누프 기구를 지니는 카피백형의 캐시 메모리를 구비한 적어도 1개 이상의 프로세서와, 메인 메모리와, 상기 프로세서와 상기 메인 메모리를 접속하는 시스템 버스를 구비하여, 중단한 처리를 재개시하기 위한 체크 포인트를 정기적으로 취득하면서 데이터 처리를 행하는 계산기 시스템에 있어서,
    데이터 갱신이 발생한 갱신 어드레스와 갱신전의 데이터를 쌍으로 한 비포어 이미지를 복수개 기억하는 비포어 이미지 기억 수단과,
    상기 캐시 메모리상에서 데이터 갱신이 발생한 것을 나타내는 명령 및 그에 대한 응답을 상기 시스템 버스의 감시에 의해서 검지하고,
    상기 비포어 이미지가 갱신 어드레스 및 갱신전 데이터를 포함하는 경우에, 갱신 어드레스 및 갱신전 데이터를 상기 비포어 이미지 기억 수단에 격납하며,
    갱신 어드레스를 포함하지만 갱신전의 데이터를 포함하지 않은 경우에, 그 갱신전 데이터를 독출하기 위한 명령을 상기 명령에 포함되는 어드레스를 사용하여 상기 시스템 버스에 발행하여, 상기 어드레스 및 독출된 갱신전 데이터를 상기 비포어 이미지 기억 수단에 격납하는 비포어 이미지 취득 수단과,
    상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스로 표시되는 갱신 상태의 데이터를 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 캐시 플러시 실행 수단과,
    상기 프로세서로부터 지시되었을 때에, 상기 비포어 이미지 기억 수단에 격납된 모든 갱신전 데이터에 대해서, 새롭게 격납한 것에서부터 순차로 메인 메모리에의 갱신 기록을 요구하는 명령을 상기 시스템 버스에 발행하는 메인 메모리 상태 복원 수단으로 이루어지는 체크 포인트 처리 가속 장치와,
    상기 체크 포인트 처리 가속 장치의 비포어 이미지 취득 수단을 동작시키면서 통상의 데이터 처리를 실행하는 데이터 처리 수단과,
    모든 프로세서가 동기하여 실행하는 데이터 처리중 콘텍스트의 메인 메모리에의 격납, 및 상기 체크 포인트 처리 가속 장치의 캐시 플러시 실행 수단이 실행하는 모든 갱신 상태의 블록의 내용을 상기 메인 메모리에 재기록하는 체크 포인트 작성 수단과,
    고장이 발생하였을 때에, 모든 캐시 블록을 무효화하여, 상기 체크 포인트 처리 가속 장치의 메인 메모리 복원 수단으로 하여금 메인 메모리를 직전에 채취한 체크 포인트 시점의 상태로 복원시키고, 이 복원된 메인 메모리에 격납되어 있는 정보를 이용하여 데이터 처리를 재개하는 롤백 & 복구 수단을 포함하는 것을 특징으로 하는 계산기 시스템.
  21. 제 20 항에 있어서, 상기 메인 메모리를 상기 캐시 메모리 내에 확보되는 캐시 블록의 크기로 분할하고, 이 분할에 의해 정의되는 복수의 구획중 적어도 1개 이상의 구획 각각에 대응시켜, 온과 오프 두개의 상태가 할당되는 플래그 메모리를 추가로 포함하며,
    상기 비포어 이미지 취득 수단은 상기 비포어 이미지를 취득하였을 때,
    그 갱신 어드레스에 대한 플래그 메모리가 설치되고, 그 플래그 메모리가 오프일 때에는 상기 플래그 메모리를 온으로 설정하는 동시에 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하며,
    그 갱신 어드레스에 대한 플래그 메모리가 설치되고, 그 플래그 메모리가 온일 때에는 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하지 않고,
    그 갱신 어드레스에 대한 플래그 메모리가 설치되어 있지 않을 때에는 상기 비포어 이미지를 비포어 이미지 기억 수단에 격납하는 수단을 구비하며,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단으로부터 비포어 이미지를 독출하여, 갱신 상태에 있는 캐시 블록의 내용을 상기 메인 메모리에 재기록할 것을 요구하는 명령을 발행할 때,
    그 어드레스에 대응하는 플래그 메모리가 설치되어 있을 때에는 그 플래그 메모리를 오프로 설정하는 수단을 포함하는 것을 특징으로 하는 계산기 시스템.
  22. 제 20 항에 있어서, 서로 공통 부분을 지니지 않도록 설정되는 1개 이상의 어드레스 범위 각각에 대응하여 설치되어, 상기 어드레스 범위에 속하는 갱신 상태의 캐시 블록수를 유지하는 블록 카운터와,
    상기 시스템 버스 상의 명령 및 그 응답을 감시하여, 상기 상기 캐시 블록이 갱신 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 블록 카운터가 존재할 때는 그 블록 카운터를 +1 증가하고,
    상기 캐시 블록이 갱신 상태에서 그 이외의 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 블록 카운터가 있을 때에는 그 블록 카운터를 -1 감소하는 카운터 제어 수단을 추가로 포함하며,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스에 대응하는 상기 블록 카운터가 없거나, 또는 블록 카운터가 있더라도 그 값이 초기값이 아닐 때에는 그 어드레스의 갱신 상태의 캐시 블록의 내용을 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 수단을 포함하는 것을 특징으로 하는 계산기 시스템.
  23. 제 22 항에 있어서, 상기 캐시 메모리는 다이렉트 맵 방식의 캐시 메모리이며, 상기 블록 카운터는 캐시 블록과 1:1로 대응하여 설치되는 것을 특징으로 하는 계산기 시스템.
  24. 제 22 항에 있어서, 상기 캐시 메모리는 n웨이의 셋트 어소시에이티브 방식의 캐시 메모리이며, 상기 블록 카운터는 n개의 캐시 블록으로 형성되는 그룹과 1:1로 대응하여 설치되는 것을 특징으로 하는 계산기 시스템.
  25. 제 20 항에 있어서, 상기 메인 메모리를 상기 캐시 메모리 내에 확보되는 캐시 블록의 크기로 분할하고, 이 분할에 의해 정의되는 복수의 구획 중 적어도 1개 이상의 구획 각각에 대응시켜, 온과 오프 두개의 상태가 할당되는 플래그 메모리와,
    상기 시스템 버스 상의 명령 및 그 응답을 감시하여,
    상기 캐시 블록이 갱신 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 플래그 메모리가 설치되어 있을 때에는 그 플래그 메모리를 온으로 설정하고,
    상기 캐시 블록이 갱신 상태에서 그 이외의 상태로 이행하는 것을 검지하였을 때, 그 어드레스에 대응한 상기 플래그 메모리가 설치되어 있을 때에는 그 플래그 메모리를 오프로 설정하는 플래그 메모리 제어 수단을 포함하며,
    상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 모든 어드레스에 대해서, 그 어드레스에 대응하는 상기 플래그 메모리가 설치되어 있지 않거나, 또는 설치되어 있어도 그 상태가 온일 때에는, 그 어드레스의 갱신 상태의 캐시 블록의 내용을 메인 메모리에 재기록할 것을 요구하는 명령을 상기 시스템 버스에 발행하는 수단을 추가로 포함하는 것을 특징으로 하는 계산기 시스템.
  26. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단이 상기 캐시 메모리 상에서 데이터 갱신이 발생한 것을 나타내는 명령, 또는 그에 대한 응답을 검지하였을 때에, 그 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하는지의 여부를 그 갱신 어드레스에 의해 판단하는 어드레스 판단 수단을 추가로 포함하는 것을 특징으로 하는 계산기 시스템.
  27. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 비포어 이미지 기억 수단에 격납된 상기 비포어 이미지 각각에 대해서, 상기 메인 메모리 상태 복원 수단에 의해 상기 메인 메모리에 재기록하는지의 여부를 그 갱신 어드레스에 의해 판단하는 어드레스 판정 수단을 추가로 포함하는 것을 특징으로 하는 계산기 시스템.
  28. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 캐시 메모리 상에서의 데이터 갱신이 행하여졌을 때, 그 갱신 대상의 데이터가 다른 캐시 메모리 상에서 갱신되어 유지되고 있는 데이터일 때에, 상기 비포어 이미지를 상기 비포어 이미지 기억 수단에 격납하지 않는 상기 비포어 이미지 취득 수단을 추가로 포함하는 것을 특징으로 하는 계산기 시스템.
  29. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 캐시 블록에 할당되는 복수의 관리 상태에서, 그 캐시 블록이 유지하고 있는 데이터는 다른 프로세서의 캐시 메모리에는 유지되어 있지 않으며, 또한 메인 메모리상과 같은 클린 익스클루시브 상태의 데이타를 포함할 때에, 어느 한 캐시 메모리가 발행한 메인 메모리 데이터의 판독 요구 명령에 대해서, 그 데이터를 유지하고 있다고 응답하여, 상기 캐시 블록이 클린 엑스클루시브 상태가 되는 것을 막는 응답 수단을 추가로 포함하는 것을 특징으로 하는 계산기 시스템.
  30. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단은,
    상기 캐시 메모리 기구를 개재시키지 않고서, 상기 메인 메모리의 내용을 갱신하는 명령을 검지하였을 때에, 그 명령의 실행을 중지시켜, 상기 명령에 포함되는 갱신 어드레스를 이용하여 상기 메인 메모리에서 갱신전 데이터를 독출하기 위한 명령을 상기 시스템 버스에 발행하여, 상기 어드레스와 독출된 갱신전 데이터를 상기 비포어 이미지 격납 수단에 격납하는 수단과,
    상기 실행을 중지시킨 명령이 다시 발행되었을 때에는 그 명령의 실행 중지를 행하지 않는 수단을 포함하는 것을 특징으로 하는 계산기 시스템.
  31. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단은,
    상기 프로세서로부터 지시된 어드레스 범위에 대해서, 상기 메인 메모리에서 갱신전 데이터를 독출하기 위한 명령을 상기 시스템 버스에 발행하여, 상기 어드레스와 독출된 갱신전 데이터를 쌍으로 한 비포어 이미지를 상기 비포어 이미지 격납 수단에 격납하는 수단을 포함하는 것을 특징으로 하는 계산기 시스템.
  32. 제 20 항 내지 제 22 항 중 어느 한 항에 있어서, 상기 비포어 이미지 취득 수단과 상기 캐시 플러시 실행 수단은 병행 실행이 가능한 것을 특징으로 하는 계산기 시스템.
  33. 제 32 항에 있어서, 상기 캐시 플러시 실행 수단은 상기 비포어 이미지 기억 수단에 격납된 비포어 이미지 중에서 가장 최근에 취득된 것부터 차례로 처리하는 것을 특징으로 하는 계산기 시스템.
  34. 제 32 항에 있어서, 상기 비포어 이미지 기억 수단은 서로 독립된 복수의 메모리로 구성되는 것을 특징으로 하는 계산기 시스템.
  35. 제 32 항에 있어서, 상기 비포어 이미지 기억 수단은 서로 독립된 제 1 및 제 2 메모리를 구비하며,
    상기 비포어 이미지 취득 수단은 상기 캐시 플러시 실행 수단이 동작하고 있지 않을 때에는 취득한 비포어 이미지를 상기 제 1 메모리에 격납하고, 상기 캐시 플러시 실행 수단이 동작을 개시하였을 때에는, 취득한 비포어 이미지를 상기 제 2 메모리에 격납하는 수단을 구비하고,
    상기 캐시 플러시 실행 수단은 상기 제 1 메모리에 격납된 비포어 이미지에서부터 처리하는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  36. 제 35 항에 있어서, 상기 캐시 플러시 실행 수단은 상기 비포어 이미지 취득 수단에 의해 상기 제 1 메모리 전부에 상기 비포어 이미지가 격납되었을 때에 기동되는 것을 특징으로 하는 계산기 시스템.
  37. 제 20 항 내지 제 25 항 중 어느 한 항에 있어서, 상기 비포어 이미지 기억 수단의 남은 용량이 소정의 양을 밑도는 것을 상기 프로세서에 통지하는 통지 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  38. 제 37 항에 있어서, 상기 캐시 플러시 실행 수단은 상기 비포어 이미지 취득 수단이 실행중일 때에는 갱신 상태의 캐시 블록의 내용을 상기 메인 메모리에 재기록할 것을 요구하는 명령의 발행 빈도를 소정의 값 이내로 억제하며, 상기 비포어 이미지 취득 수단이 정지하였을 때에, 상기 명령의 발행 빈도를 높이는 수단을 구비하는 것을 특징으로 하는 계산기 시스템.
  39. 제 20 항에 있어서, 상기 캐시 플러시 기동 수단의 기동은 동작에 있어서 체크 포인트 취득 수단에 선행하는 데이터 처리 수단에 의해 행해지는 것을 특징으로 하는 계산기 시스템.
  40. 제 39 항에 있어서, 상기 체크 포인트 작성 수단은 상기 체크 포인트 처리 가속 장치의 캐시 플러시 실행 수단에 의한 캐시 플러시 동작과 캐시 조작 명령의 실행에 의한 캐시 플러시 동작을 병용하는 것을 특징으로 하는 계산기 시스템.
  41. 제 39 항에 있어서, 상기 체크 포인트 작성 수단은 상기 체크 포인트 처리 가속 장치의 캐시 플러시 실행 수단을 정지하여, 캐시 조작 명령의 실행에 의한 캐시 플러시를 실행하는 것을 특징으로 하는 계산기 시스템.
  42. 제 41 항에 있어서, 상기 체크 포인트 처리 가속 장치의 캐시 플러시 실행 수단은 도중에 취득한 비포어 이미지에서부터 사용하기 시작하는 것을 특징으로 하는 계산기 시스템.
KR1019970014318A 1996-09-04 1997-04-18 체크 포인트 처리 가속 장치 KR100233205B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP8234321A JP2916420B2 (ja) 1996-09-04 1996-09-04 チェックポイント処理加速装置およびデータ処理方法
JP96-234321 1996-09-04

Publications (2)

Publication Number Publication Date
KR19980024007A KR19980024007A (ko) 1998-07-06
KR100233205B1 true KR100233205B1 (ko) 1999-12-01

Family

ID=16969185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970014318A KR100233205B1 (ko) 1996-09-04 1997-04-18 체크 포인트 처리 가속 장치

Country Status (7)

Country Link
US (1) US6088773A (ko)
EP (1) EP0834811B1 (ko)
JP (1) JP2916420B2 (ko)
KR (1) KR100233205B1 (ko)
CN (1) CN1111790C (ko)
DE (1) DE69703574T2 (ko)
TW (1) TW384427B (ko)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2916421B2 (ja) * 1996-09-09 1999-07-05 株式会社東芝 キャッシュフラッシュ装置およびデータ処理方法
TW379298B (en) * 1996-09-30 2000-01-11 Toshiba Corp Memory updating history saving device and memory updating history saving method
JPH10320274A (ja) * 1997-03-19 1998-12-04 Toshiba Corp キャッシュフラッシュ装置及び同装置を備えた計算機システム、記録媒体
FR2778254B1 (fr) * 1998-04-29 2002-02-15 Texas Instruments France Circuits,systemes et procedes d'ordinateur utilisant un nettoyage partiel d'une memoire cache
US6332199B1 (en) * 1998-10-29 2001-12-18 International Business Machines Corporation Restoring checkpointed processes including adjusting environment variables of the processes
JP2002123479A (ja) 2000-10-17 2002-04-26 Hitachi Ltd ディスク制御装置およびそのキャッシュ制御方法
US6766428B2 (en) * 2001-04-06 2004-07-20 Sun Microsystems, Inc. Method and apparatus for storing prior versions of modified values to facilitate reliable execution
US6779087B2 (en) * 2001-04-06 2004-08-17 Sun Microsystems, Inc. Method and apparatus for checkpointing to facilitate reliable execution
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
GB2381088B (en) * 2001-10-15 2006-02-08 Jacobs Rimell Ltd State recovery
US6973541B1 (en) * 2002-09-26 2005-12-06 Unisys Corporation System and method for initializing memory within a data processing system
US6993630B1 (en) * 2002-09-26 2006-01-31 Unisys Corporation Data pre-fetch system and method for a cache memory
US6976128B1 (en) * 2002-09-26 2005-12-13 Unisys Corporation Cache flush system and method
US6934810B1 (en) * 2002-09-26 2005-08-23 Unisys Corporation Delayed leaky write system and method for a cache memory
KR100856626B1 (ko) * 2002-12-24 2008-09-03 엘지노텔 주식회사 캐시 플러시 시스템 및 방법
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
CA2435148A1 (en) * 2003-07-15 2005-01-15 Robert J. Blainey System and method for lock caching for compound atomic operations on shared memory
US9213609B2 (en) * 2003-12-16 2015-12-15 Hewlett-Packard Development Company, L.P. Persistent memory device for backup process checkpoint states
US20050216552A1 (en) * 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
JP4892812B2 (ja) * 2004-04-28 2012-03-07 株式会社日立製作所 キャッシュ制御およびデータ処理システム並びにその処理プログラム
US7290166B2 (en) * 2004-07-28 2007-10-30 Intel Corporation Rollback of data
US7496787B2 (en) * 2004-12-27 2009-02-24 Stratus Technologies Bermuda Ltd. Systems and methods for checkpointing
US7526583B2 (en) * 2005-06-23 2009-04-28 International Business Machines Corporation Method and apparatus to launch write queue read data in a microprocessor recovery unit
US7506132B2 (en) * 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
US7555424B2 (en) * 2006-03-16 2009-06-30 Quickturn Design Systems, Inc. Method and apparatus for rewinding emulated memory circuits
US8001342B2 (en) * 2006-03-29 2011-08-16 International Business Machines Corporation Method for storing and restoring persistent memory content and virtual machine state information
JP4479743B2 (ja) * 2007-04-24 2010-06-09 株式会社デンソー ロールバック方法及び情報処理装置
JP5251002B2 (ja) * 2007-05-25 2013-07-31 富士通株式会社 分散処理プログラム、分散処理方法、分散処理装置、および分散処理システム
US9131240B2 (en) * 2007-08-23 2015-09-08 Samsung Electronics Co., Ltd. Video decoding method and apparatus which uses double buffering
US8615678B1 (en) 2008-06-30 2013-12-24 Emc Corporation Auto-adapting multi-tier cache
JP2010097557A (ja) * 2008-10-20 2010-04-30 Toshiba Corp セットアソシアティブ方式のキャッシュ装置及びキャッシュ方法
JP5300407B2 (ja) 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
JP2011198091A (ja) 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US9507534B2 (en) * 2011-12-30 2016-11-29 Intel Corporation Home agent multi-level NVM memory architecture
US9251002B2 (en) 2013-01-15 2016-02-02 Stratus Technologies Bermuda Ltd. System and method for writing checkpointing data
US9251003B1 (en) * 2013-08-14 2016-02-02 Amazon Technologies, Inc. Database cache survivability across database failures
CN104699574B (zh) * 2013-12-09 2018-04-20 华为技术有限公司 一种建立处理器Cache检查点的方法、装置及系统
EP3090345B1 (en) 2013-12-30 2017-11-08 Stratus Technologies Bermuda Ltd. Method of delaying checkpoints by inspecting network packets
EP3090336A1 (en) 2013-12-30 2016-11-09 Paul A. Leveille Checkpointing systems and methods of using data forwarding
WO2015102873A2 (en) 2013-12-30 2015-07-09 Stratus Technologies Bermuda Ltd. Dynamic checkpointing systems and methods
CN104657229A (zh) * 2015-03-19 2015-05-27 哈尔滨工业大学 基于高可用性硬件检查点的多核处理器卷回恢复系统及其卷回恢复方法
US10394641B2 (en) * 2017-04-10 2019-08-27 Arm Limited Apparatus and method for handling memory access operations
US11550485B2 (en) * 2018-04-23 2023-01-10 Sap Se Paging and disk storage for document store
US20220269614A1 (en) * 2021-02-22 2022-08-25 Microsoft Technology Licensing, Llc Treating main memory as a collection of tagged cache lines for trace logging

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4740969A (en) * 1986-06-27 1988-04-26 Hewlett-Packard Company Method and apparatus for recovering from hardware faults
JPH0752399B2 (ja) * 1988-06-30 1995-06-05 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 記憶システム
US5408651A (en) * 1993-09-27 1995-04-18 Bull Hn Information Systems Inc. Store "undo" for cache store error recovery
JP2902976B2 (ja) * 1995-06-19 1999-06-07 株式会社東芝 キャッシュフラッシュ装置
JP3086779B2 (ja) * 1995-06-19 2000-09-11 株式会社東芝 メモリ状態復元装置

Also Published As

Publication number Publication date
CN1175732A (zh) 1998-03-11
EP0834811A1 (en) 1998-04-08
TW384427B (en) 2000-03-11
CN1111790C (zh) 2003-06-18
US6088773A (en) 2000-07-11
KR19980024007A (ko) 1998-07-06
DE69703574T2 (de) 2001-06-13
JPH1078918A (ja) 1998-03-24
JP2916420B2 (ja) 1999-07-05
EP0834811B1 (en) 2000-11-22
DE69703574D1 (de) 2000-12-28

Similar Documents

Publication Publication Date Title
KR100233205B1 (ko) 체크 포인트 처리 가속 장치
EP0828217B1 (en) Cache flush apparatus and computer system having the same
EP0833248B1 (en) Computer system with memory update history storage
EP0750258B1 (en) Computer system with memory state recovery
US20040010663A1 (en) Method for conducting checkpointing within a writeback cache
JPH077360B2 (ja) キヤツシユメモリを具えた情報処理装置
JPH10506483A (ja) フォールト・トレラントなコンピュータ・システムのためのメイン・メモリ・システム及びチェックポイント用プロトコル
JP3236287B2 (ja) マルチプロセッサシステム
CA2300005A1 (en) Multiprocessing system employing pending tags to maintain cache coherence
JPH0619786A (ja) キャッシュコヒーレンスを維持する方法及び装置
US5737568A (en) Method and apparatus to control cache memory in multiprocessor system utilizing a shared memory
JP3320562B2 (ja) キャッシュメモリを有する電子計算機
JP3083786B2 (ja) メモリ更新履歴保存装置およびメモリ更新履歴保存方法
US6401173B1 (en) Method and apparatus for optimizing bcache tag performance by inferring bcache tag state from internal processor state
JPH06309231A (ja) キャッシュメモリ制御方法
JPH10149307A (ja) チェックポイント処理方法及び記録媒体
JPH08137748A (ja) コピーバックキャッシュを有するコンピュータ及びコピーバックキャッシュ制御方法
JP2707958B2 (ja) キャッシュ一致処理制御装置
JP3833760B2 (ja) 計算機システム及びメモリ状態復元装置
JP2703255B2 (ja) キャッシュメモリ書込み装置
JP2000181790A (ja) メモリ更新履歴保存装置
JPH07152650A (ja) キャッシュ制御装置
JPH06187230A (ja) メモリ監視制御方法
JPS6135583B2 (ko)
JPH10240630A (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