KR101319670B1 - 캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법 - Google Patents
캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법 Download PDFInfo
- Publication number
- KR101319670B1 KR101319670B1 KR1020110085922A KR20110085922A KR101319670B1 KR 101319670 B1 KR101319670 B1 KR 101319670B1 KR 1020110085922 A KR1020110085922 A KR 1020110085922A KR 20110085922 A KR20110085922 A KR 20110085922A KR 101319670 B1 KR101319670 B1 KR 101319670B1
- Authority
- KR
- South Korea
- Prior art keywords
- error
- cache memory
- data
- cache
- bit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 소프트 에러의 영향을 더욱 억제할 수 있는 캐시 메모리 시스템을 제공하는 것을 과제로 한다.
캐시 메모리를 라이트스루 방식으로 동작시키고, 캐시 미스 발생 시의 동작을, 캐시 메모리에 대응하는 데이터가 없는 경우나, 데이터가 있더라도 에러가 발생한 경우에 실행하도록 한다. 그리고, 캐시 메모리에, 이전에 소프트 에러가 발생했음을 나타내는 비트를 설정하여, 이 비트가 "1"일 때에, 다시 에러가 발생하면, 하드웨어 에러가 발생한 것으로 판단하여, CPU에 인터럽트를 발생시킨다. 이 비트는 소프트 에러가 발생한다고 생각되는 빈도보다도 충분히 짧은 시간 간격으로 리셋되게 한다.
캐시 메모리를 라이트스루 방식으로 동작시키고, 캐시 미스 발생 시의 동작을, 캐시 메모리에 대응하는 데이터가 없는 경우나, 데이터가 있더라도 에러가 발생한 경우에 실행하도록 한다. 그리고, 캐시 메모리에, 이전에 소프트 에러가 발생했음을 나타내는 비트를 설정하여, 이 비트가 "1"일 때에, 다시 에러가 발생하면, 하드웨어 에러가 발생한 것으로 판단하여, CPU에 인터럽트를 발생시킨다. 이 비트는 소프트 에러가 발생한다고 생각되는 빈도보다도 충분히 짧은 시간 간격으로 리셋되게 한다.
Description
이하의 실시형태는 소프트 에러에 의한 영향을 억제할 수 있는 캐시 메모리 시스템에 관한 것이다.
최근 반도체 기술의 고도화에 따라, 반도체 장치의 배선 등의 구조가 미세 화되는 경향이 있다. 그러나, 반도체 장치의 배선 등의 회로가 미세화되면, 외부로부터 들어오는 α선이나 우주선(중성자선)에 의해서 회로의 동작 에러가 발생할 가능성이 높아진다. 메모리에 있어서도, 소형이며 대용량의 메모리가 제조되고 있지만, 회로의 구조가 미세하기 때문에, α선이나 우주선(중성자선)에 의해서, 저장되어 있는 데이터에 에러를 일으키는 경우가 있다. 이러한 에러를 소프트 에러라고 한다. 소프트 에러는 메인 메모리, 캐시 메모리 쌍방에 생길 수 있다.
캐시 메모리에 있어서, 그 기록 방식으로서, 라이트백(write back) 방식과 라이트스루(write through) 방식이 있다. 동작 속도 성능은 라이트백 방식 쪽이 좋지만, 라이트백 방식 쪽은 제어가 복잡하다고 알려져 있다. 그러나, 소프트 에러에 대해서는 라이트스루 쪽이 강하다고도 말할 수 있다. 그 이유는, 라이트백에서는, 캐시 메모리에 쓴 데이터 내용을 메인 메모리에 재기록하는 타이밍이 장시간 경과한 후인 경우가 많아, 그 경과 시간 동안에 메모리 내용인 데이터의 반전이 생겨, 재기록 시에 소프트 에러로서 겉으로 드러나기 때문이다. 이에 대하여, 라이트스루에서는, 캐시에 데이터를 기록하는 동시에 메인 메모리에 기록해 버리기 때문에, 장시간 경과한 내용을 판독하는 동작이 적어지므로, 소프트 에러율은 낮게 볼 수 있다.
따라서 캐시 메모리의 동작 속도 성능을 조금 희생하여, 신뢰성을 높이기 위해서 캐시 메모리 방식을 라이트스루 방식으로 하는 것이 유효하다.
캐시 메모리를 라이트스루 방식으로 한 경우, 캐시 메모리와 메인 메모리의 데이터 내용은 언제나 동일하다고 말할 수 있다. 이것을 이용하여, 캐시 메모리에서 에러가 발생한 경우, 캐시 메모리의 데이터를 버리고, 그 에러가 발생한 캐시의 어드레스에 상당하는 메인 메모리의 데이터 내용을 판독하여, CPU에 데이터를 보내고, 에러가 발생한 캐시 메모리의 데이터 내용을 재기록함으로써 정상적인 동작을 하게 할 수 있다.
종래 기술에는, 버퍼 메모리의 일시적인 오류 발생에 대하여, 오류를 보정하는 과제나, α선에 의한 소프트웨어 에러와 하드웨어적인 문제점에 의한 에러가 복합되어, 수정 가능 비트수를 넘는 에러가 발생하는 것을 방지하는 과제나, 소프트 에러의 축적을 방지하는 과제가 존재한다.
이하의 실시형태에서는 소프트 에러의 영향을 더욱 억제할 수 있는 캐시 메모리를 제공한다.
이하의 실시형태의 일 양태로서의 캐시 메모리 시스템은, 태그부와 데이터부를 포함하는 데이터를 저장하는 캐시 메모리와, 그 태그부와 데이터부 쌍방에 대해서 에러를 검출하는 에러 검출부와, 그 캐시 메모리를 라이트스루 방식으로 동작시키고, 태그부의 캐시 히트 정보에 있어서 캐시 히트했음을 나타내는 신호와, 그 에러 검출부에서의 에러 검출에 있어서 에러가 없었음을 나타내는 신호와의 논리곱을 취한 결과의 신호를, CPU로 보내야 하는 캐시 히트 정보로 하는 제어부를 구비하며, 에러가 발생했을 때에도 캐시 미스히트였을 때와 마찬가지로, 메인 메모리로부터, 에러가 발생한 캐시 메모리의 데이터에 상당하는 어드레스의 데이터를 판독하여, 그 데이터로 에러 발생한 캐시 메모리의 데이터를 치환한다.
이하의 실시형태에 따르면, 소프트 에러의 영향을 더욱 억제할 수 있는 캐시 메모리 시스템이 제공된다.
도 1은 캐시 메모리의 동작을 설명하는 도면(1)이다.
도 2는 캐시 메모리의 동작을 설명하는 도면(2)이다.
도 3a는 본 실시형태의 캐시 메모리 시스템을 도시하는 도면이다.
도 3b는 본 실시형태의 캐시 메모리 시스템의 동작을 도시하는 도면이다.
도 4a는 본 실시형태의 캐시 메모리 시스템을 도시하는 도면이다.
도 4b는 본 실시형태의 캐시 메모리 시스템의 동작을 도시하는 도면이다.
도 5는 2 웨이 세트 어소시에이티브 방식(2-way set associative system)인 경우의 구성도이다.
도 6은 패리티 체크를 하기 위한 회로의 도면이다.
도 7은 에러 검출 회로로서의 ECC 회로의 회로도이다.
도 8a는 도 3a에 있어서 도 7의 ECC 회로를 추가로 사용하는 구성도이다.
도 8b는 도 9의 회로를 이용한 구성도이다.
도 9는 패리티 체크를 하기 위한 회로의 도면이다.
도 10은 패리티 체크와 ECC 정정 중 어디에나 적용할 수 있는 에러 검사를 위한 구성을 설명하는 도면이다.
도 11은 본 실시형태의 동작의 상세한 점을 설명하는 도면(1)이다.
도 12는 본 실시형태의 동작의 상세한 점을 설명하는 도면(2)이다.
도 13은 본 실시형태의 동작의 상세한 점을 설명하는 도면(3)이다.
도 2는 캐시 메모리의 동작을 설명하는 도면(2)이다.
도 3a는 본 실시형태의 캐시 메모리 시스템을 도시하는 도면이다.
도 3b는 본 실시형태의 캐시 메모리 시스템의 동작을 도시하는 도면이다.
도 4a는 본 실시형태의 캐시 메모리 시스템을 도시하는 도면이다.
도 4b는 본 실시형태의 캐시 메모리 시스템의 동작을 도시하는 도면이다.
도 5는 2 웨이 세트 어소시에이티브 방식(2-way set associative system)인 경우의 구성도이다.
도 6은 패리티 체크를 하기 위한 회로의 도면이다.
도 7은 에러 검출 회로로서의 ECC 회로의 회로도이다.
도 8a는 도 3a에 있어서 도 7의 ECC 회로를 추가로 사용하는 구성도이다.
도 8b는 도 9의 회로를 이용한 구성도이다.
도 9는 패리티 체크를 하기 위한 회로의 도면이다.
도 10은 패리티 체크와 ECC 정정 중 어디에나 적용할 수 있는 에러 검사를 위한 구성을 설명하는 도면이다.
도 11은 본 실시형태의 동작의 상세한 점을 설명하는 도면(1)이다.
도 12는 본 실시형태의 동작의 상세한 점을 설명하는 도면(2)이다.
도 13은 본 실시형태의 동작의 상세한 점을 설명하는 도면(3)이다.
본 실시형태에서는, 캐시 메모리를 라이트스루 방식으로 동작시키고, 캐시 미스 발생 시의 동작을, 캐시 메모리에 대하여, 대응하는 데이터가 없는 경우나, 또는 데이터가 있더라도 에러가 발생한 경우에 수행하게 한다. 그리고, 캐시 메모리에, 이전에 소프트 에러가 발생했음을 나타내는 비트를 설정해 두어, 이 비트가 "1"일 때에, 다시 에러가 발생한 경우에는, 하드웨어 에러가 발생한 것으로 판단하여, CPU에 인터럽트를 발생시킨다. 또한, 하드웨어 에러인지에 대한 판단은 1번 캐시 메모리의 에러가 발생하면 세트되며, 소프트 에러가 발생한다고 생각되는 빈도보다도 충분히 짧은 시간 간격으로 리셋되는 레지스터를 준비하여, 이 레지스터가 세트되어 있을 때에, 또 캐시 메모리의 에러가 발생한 경우, 하드웨어 에러라고 판단하여, CPU에 인터럽트를 발생시킨다.
이상과 같이, 캐시 메모리의 데이터에 에러가 있는 경우도 캐시 미스 시와 마찬가지로, 메인 메모리로부터 데이터를 판독하여, 새로운 데이터를 캐시 메모리에 재기록하게 함으로써, 에러의 영향이 확산되는 것을 억제할 수 있다.
도 1 및 도 2는 캐시 메모리의 동작을 설명하는 도면이다.
통상, 캐시 메모리는 1 라인(16∼64 Byte 정도)을 단위로 분할되며, 1 라인에 태그가 붙는다. 태그의 내용은 그 1 라인이 메인 메모리의 어디에 상당하는지를 나타내는 Address 정보와 Status를 갖는다. Status는 라이트스루 방식에서는 Valid(유효)와 Invalid(무효)의 2개의 상태를 취하며, 리셋했을 때는 Invalid, 캐시에 올바른 데이터가 들어갔을 때에는 Valid가 된다. 이에 대하여, 라이트백 방식에서는, Invalid(무효), Clean(캐시의 내용과 메인 메모리의 내용이 동일)과 Dirty(캐시의 내용이 올바르지만, 메인 메모리의 내용은 오래되어 사용할 수 없다)의 3가지의 상태를 취한다.
CPU로부터의 데이터 라이트가 발생했을 때, 라이트스루 방식에서는, 라이트어드레스가 캐시 히트하는 경우에 라이트 데이터를 메인 메모리와 동시에 캐시 메모리의 데이터부에도 기록한다. 캐시 미스일 경우는, 캐시 메모리는 무시하고, 메인 메모리에만 기록한다.
라이트백 방식에서는, 라이트가 발생하더라도 캐시 히트일 경우는, 캐시에밖에 기록하지 않는다. 당연히 메인 메모리와 캐시 메모리 간의 데이터의 정합성이 유지되지 않는 상태가 된다. 이 상태를 태그에 Dirty 상태로서 기억해 둔다. 미스히트의 경우는 리필(메인 메모리로부터 1 라인분의 데이터를 판독)을 한 후, 캐시 메모리에 판독된 데이터를 기록한다(이 때도 Dirty 상태가 된다).
도 1은 CPU로부터의 데이터의 기록, 판독 동작을 수행하는 구성의 블록 구성도이다.
CPU(10)로부터, 캐시 컨트롤러(11B), 캐시 메모리(11A)에 Enable 신호와 함께, Read/Write 신호와, Read/Write가 이루어지는 어드레스를 나타내는 Address 신호가 입력된다. 캐시 메모리(11A)는 C-Address 신호가 나타내는 어드레스에 대응하는 데이터가 내부에 존재하는지 여부를 확인하여, 존재하는 경우에는 CacheHit 신호를 "1"로 하고, 존재하지 않는 경우에는 CacheHit 신호를 "O"으로 하여 캐시 컨트롤러(11B)에 출력한다. 캐시 히트인 경우에는, 캐시 메모리(11A)는, Read/Write 신호에 따라서, 지시된 어드레스에 대하여, 데이터를 기록 혹은 판독한다. 또한, 캐시 컨트롤러(11B)는 라이트백 방식에서는 미스히트의 경우 리필이 필요하게 되지만, 이 경우 캐시 컨트롤러(11B)는 메모리 컨트롤러에 캐시 1 라인분을 메인 메모리로부터 데이터를 판독하도록 메모리 컨트롤러(12)에 지시한다. 메모리 컨트롤러(12)는 메인 메모리(13)에의 액세스를 제어하는 회로이다.
CPU(10)로부터의 Enable 신호, Read/Write 신호, Address 신호는 메모리 컨트롤러(12)를 통해 메인 메모리(13)에 입력된다. 데이터 판독 시에, 캐시 메모리(11A)에 있어서, 미스히트이면, 캐시 컨트롤러(11B)는 메인 메모리(13)로부터, 지정된 어드레스의 데이터를 판독하도록 메모리 컨트롤러(12)에 판독 명령을 발행한다. 판독된 데이터는 캐시 메모리(11A)에 저장된다.
또한, 라이트스루 방식으로 데이터를 기록하는 경우에는, 미스히트 시에, 캐시 메모리(11A)에는 아무것도 하지 않고, 메인 메모리(13)에만 데이터가 기록된다. 히트의 경우에는, 캐시 메모리(11A)와 메인 메모리(13) 양방에 데이터가 기록된다.
도 2는 라이트백 방식과 라이트스루 방식의 동작을 설명하는 신호도이다.
각 신호명 앞에 C가 있는 것은 캐시 메모리에의 신호이며, M이 붙는 것은 메인 메모리에의 신호이다.
도 2의 (a)는 라이트백 방식에 있어서 캐시 메모리에 히트한 경우의 기록 동작을 나타내는 신호도이다. 캐시 메모리에 Address 신호의 인가와 동시에 C-Enable 신호가 입력되면, 캐시 내부의 Tag가 판독되어 Tag의 데이터와 Address의 상위부가 일치할 경우, 캐시 메모리에 히트했음을 나타내는 Hit 신호가 "1"이 된다. 캐시에 히트하면, 그 Address에 대응한 캐시의 1 워드에 CPU로부터의 데이터: C-Data(write)가 기록 신호: C-Read/Write를 Low로 함으로써, 기록된다. 또한, 이 도면에서는 도시하지 않지만, 캐시 메모리(11B)의 TAG의 Status는 Dirty가 된다.
도 2의 (b)는 라이트백 방식에 있어서 캐시 메모리에 미스히트한 경우의 동작을 나타내는 신호도이다. C-Enable 신호가 인에이블로 되어도, 캐시 메모리에 미스히트하기 때문에, Hit 신호는 "O" 그대로이다. 미스히트 시에 캐시 컨트롤러는 Address 신호가 나타내는 어드레스를 이용하여, 메인 메모리로부터 1 라인분의 데이터를 판독하도록 메모리 컨트롤러에 지시한다(도시하지 않음). 이 때 그 캐시 라인의 이미 저장되어 있는 데이터로서, 그 Tag의 Status가 Dirty인 경우는 이 데이터를 해당하는 메인 메모리에 재기록할 필요가 있지만, 이것은 본 발명과 관계가 없기 때문에 도시하지 않는다. 메인 메모리로부터 판독된 데이터는 해당하는 캐시 메모리에 기록된다. 재차 동일 어드레스에서 캐시에 기록 명령이 발생하여, 캐시 메모리에는 CPU로부터의 데이터가 저장된다.
도 2의 (c)는 라이트스루 방식에 있어서의 동작을 설명하는 신호도이다. 최초로, C-Enable 신호가 인에이블로 된다. C-Read/Write 신호가 기록을 지시하여, Address 신호가 출력된다. Address 신호가 나타내는 어드레스에서 Tag부를 판독하여, 히트하면, 캐시 메모리에 데이터를 기록하고, 이어서, 메인 메모리에 동일한 데이터를 기록한다. 캐시 메모리에서 미스히트한 경우에는, 캐시 메모리에는 아무것도 하지 않고, 메인 메모리에만 데이터를 기록한다. 캐시 메모리에 데이터가 있는 경우는, 캐시 메모리의 데이터와 메인 메모리의 대응하는 데이터의 내용이 동일한 내용으로 된다.
도 3a는 본 실시형태의 캐시 메모리 시스템을 도시하는 도면이다.
본 실시형태에서는 도 3a에 도시하는 바와 같이, CPU로부터의 어드레스가 캐시 컨트롤러에 받아들여져, 그 일부를 사용하여, 캐시 메모리(11)로부터 태그부가 판독되고, 태그의 스테이터스가 무효일 때에는 비교기와 양 패리티 체크 회로는 디세이블로 되어 그 출력은 "O"이 된다. 유효(Valid)이면 그 내용과 CPU로부터의 상위 어드레스가 비교기(20)에서 비교되어, 같은 경우 히트가 된다. 또한, 데이터부 및 태그부로부터 판독된 내용에 대해서는, 태그 패리티 체크부(21) 및 패리티 체크 출력부(22)에서 패리티 체크하여, 에러가 없으면, 이 내용은 유효가 되어 CPU에 보내진다. 태그부의 데이터가 불일치일 때, 혹은 패리티 에러가 발생한 경우(도 3b 참조)는 이 데이터는 무효가 된다. 데이터가 무효가 되는, 즉 패리티 에러가 발생한 경우도 통상의 미스히트와 마찬가지로 메인 메모리로부터의 판독이 이루어며, 그 데이터가 CPU로 보내지고, 캐시의 데이터부에도 판독된 데이터가 기록되고, 태그부의 내용도 새로운 어드레스에 재기록된다. 한편 패리티 에러에 의한 태그의 재기록인 경우는 동일 라인의 SE 비트(후술)에 "1"을 기록해 둔다. CPU로부터 캐시를 포함하는 메모리에 데이터를 기록하는 경우, 태그의 스테이터스가 유효하고 태그부의 내용과 해당하는 어드레스가 일치했다고 해도 캐시에서 패리티 에러가 발생하면, 미스히트로 처리되어, CPU로부터의 데이터는 메인 메모리에만 기록되고, 이 때 이 태그의 스테이터스는 무효: Invalid로 변경된다. 패리티 에러가 발생하지 않으면 CPU로부터의 데이터에 대하여 패리티 비트가 패리티 생성 회로(PG)(65)에서 생성되어 CPU로부터의 데이터는 패리티 비트와 함께 캐시의 데이터부에 기록된다. 이 때에도 라이트스루 방식이기 때문에 메인 메모리에의 기록도 이루어진다.
CPU가 메모리를 판독할 때, 캐시에서 미스히트하거나 혹은 패리티 에러가 발생하면(도 3b 참조), 해당하는 어드레스의 메인 메모리로부터 판독이 이루어지고, 그 내용에 대하여 패리티 생성 회로(PG)(65)에 의해 패리티 비트가 생성되어, 캐시의 데이터부에 메인 메모리로부터 판독된 내용과 함께 기록된다. 또한, 태그부에 대해서도 해당하는 어드레스의 1부에 대하여 패리티 생성 회로(PG)(66)에서 패리티 비트가 생성되어 캐시의 태그부에의 기록이 이루어진다.
논리곱 회로(23)에는, 비교기(20)의 출력인 히트 신호와, 태그 패리티 체크부(21)와 패리티 체크 출력부(22)의 패리티 체크 결과 신호의 논리 반전된 신호가 입력된다. 이에 따라, 논리곱 회로(23)의 출력은, 캐시 히트하고, 또 2개의 패리티 체크에 있어서 에러가 없는 경우에는 "1"(유효)이 되고, 캐시 히트하고, 또 패리티 에러가 있는 경우에는 "0"(무효)이 되며, 캐시 미스의 경우에도 "0"(무효)이 된다. 데이터 출력부(26)는 논리곱 회로(23)의 출력이 유효인 경우에만 캐시 메모리(11)의 데이터부로부터의 데이터를 출력한다. 또한, 태그 패리티 체크부(21)의 패리티 체크 결과의 신호와, 패리티 체크 출력부(22)의 패리티 체크 결과의 신호는 논리합 회로(24)에 입력된다. 논리합 회로(24)의 출력은 논리곱 회로(25)에 입력된다. 또한, SE 비트(후술)의 값도 논리곱 회로(25)에 입력된다. 이에 따라, 2개의 패리티 체크의 결과 중 어느 하나 이상에 에러가 발생하고, 또한, SE 비트(후술)가 "1"인 경우에, CPU에 인터럽트를 발생시키는 인터럽트 신호가 생성된다. 이와 같이 매우 간단한 회로의 추가(에러 발생 시를 캐시 미스로서 출력하는 회로의 추가)로, 또한 소프트웨어 추가 없이 캐시의 품질을 향상시킬 수 있다. 즉, 패리티 에러의 발생 시에도 캐시 미스와 마찬가지로 메인 메모리로부터 해당하는 어드레스의 데이터 판독으로 캐시 데이터를 덮어쓰기하고 또한 태그의 내용도 갱신함으로써, 에러가 소거되게 된다. 또한, 패리티 에러가 하드웨어 에러인지 소프트 에러인지를 판정하기 위한 판정 회로를 설치하기 때문에, 예컨대 캐시 메모리(11)의 엔트리에 1 비트(SE 비트: 소프트 에러 비트)를 추가하여, 1번 패리티 에러가 발생하면, 그 비트를 "1"로 해 두고, 또한 동일한 어드레스를 읽었을 때에 패리티 에러가 발생하고, 또 SE 비트가 "1"인 경우는 하드웨어 에러라고 판단한다(이것은, 소프트 에러에서는 에러 발생 개소가 랜덤이며 동일 어드레스에서 소프트 에러가 발생하는 것은 매우 드물다는 것을 이용하고 있음).
도 4a는(도 4a에 있어서, 도 3a와 동일한 구성 요소에는 동일한 참조 부호를 붙여, 설명을 생략한다. 또한 태그의 스테이터스 비트도 생략) 도 3a에 있어서의 SE 비트가 목적으로 하는 하드웨어 에러인지 소프트 에러인지의 판정 방식을 다른 방식으로 실시한 예이다. JK-FF는 1번 패리티 에러가 발생하면 그 값은 "1"로 설정된다. 다운카운터는 그 값이 0으로 되면 JK-FF를 리셋하는 신호(=0)를 액티브로 하는 동시에 다운카운터 자체의 값을 프리셋 값으로 설정한다. 이 JK-FF가 "1"인 상태에서 패리티 에러가 발생하면, JK-FF의 출력과 P-에러 신호 모두 "1"이 되고, 이들은 논리곱 회로에서 논리곱이 취해져, 인터럽트 신호가 활성화된다. 즉, 이 인터럽트 신호는 다운카운터가 0이 되는 주기 이내에 2번의 패리티 에러가 발생하면 하드웨어 에러라고 판정하도록 동작한다(이것도, 소프트 에러의 특징인 소프트 에러 발생 빈도가 매우 드물고, 연속해서 에러가 발생할 확률이 매우 작다는 것을 이용하고 있다. 다운카운터가 0이 되기까지의 시간은 소프트 에러가 발생하는 시간 간격의 1/10 정도로 한다. 예컨대, 소프트 에러가 1년에 1번 발생하는 경우에는, 그 시간 간격은 1개월 정도로 한다. 이렇게 함으로써 패리티 에러가 1개월에 2번 이상 발생한 경우에는 하드웨어 에러라고 판정할 수 있다.
도 4b는 도 4a의 파선으로 둘러싼 부분의 타이밍도이다. JK-FF가 "1"인 상태에서 캐시 메모리의 데이터부 혹은 태그부에서 패리티 에러(P-에러)가 발생하면, P 에러의 하강 부분에서 JK-FF의 내용이 "1"이 된다. 다운카운터는 O이 되는 동시에 프리셋 값으로 되돌아가는 다운카운터이다. 다운카운터의 값이 O이 되면(=O이 High 레벨) JK-FF는 "0"이 된다. JK-FF가 "1"인 상태, 즉 1번 패리티 에러가 발생한 상태에서 또 패리티가 발생하면, JK-FF의 출력과의 논리곱이 취해지기 때문에, 인터럽트 신호가 활성화된다.
이 인터럽트 신호를 소프트 에러인지 하드웨어 에러인지의 판정에 이용하여 소프트 에러라고 판정된 경우, 즉 인터럽트 신호 없음에서는, 메인 메모리로부터 데이터를 판독하여, 캐시 메모리에 기록하는 처리를 수행한다. 만약에 인터럽트 신호가 활성화되어, 하드웨어 에러가 발생했다고 판단한 경우는, 실제로 CPU에 인터럽트를 발생시켜, CPU의 프로그램에 그 처리를 맡기는 것도 가능하다. 물론 하드웨어 에러라고 판단되더라도, 메인 메모리의 데이터를 판독하여 계속 처리를 실행하는 것도 가능하다.
한편, 도 3a의 예에서, 캐시 메모리는 다이렉트 맵 방식이지만, 세트 어소시에이티브 방식에도 적용할 수 있다.
도 5에 2 웨이 세트 어소시에이티브 방식인 경우의 구성도를 도시한다. 이 도면에서도 태그의 스테이터스 비트는 생략되어 있다.
캐시 메모리(11A)는 2개의 웨이를 포함한다. 이에 따라, CPU 어드레스의 상위와 태그부를 비교하여 히트 신호를 생성하는 2개의 비교기(20-1, 20-2)가 설치된다. 비교기(20-1, 20-2)는 캐시 메모리(11A)에 CPU 어드레스가 나타내는 데이터가 존재하는지 여부를 나타내는 신호를 생성하는 것이지만, 이 신호와, 각 웨이의 태그부의 에러를 검출하는 태그 패리티 체크부(21-1, 21-2)로부터의 패리티 체크 결과와, 데이터부의 에러를 검출하는 패리티 체크 출력부(22-1, 22-2)로부터의 패리티 체크 결과의 논리 반전된 신호가 논리곱 회로(30-1, 30-2)에 입력된다. 논리곱 회로(30-1, 30-2)의 출력은 논리합 회로(31)에서 논리합이 취해져, 캐시 히트 신호로서 출력된다. 따라서, CPU 어드레스에 대응하는 데이터가 존재하는 웨이에 있어서, 에러가 태그부에도 데이터부에도 없는 경우에, 캐시 히트 신호가 생성된다. 이것은, 단순히 대응하는 엔트리가 캐시 메모리(11A)에 있을 뿐 아니라, 에러가 발생하지 않은 경우에, 캐시 히트라 정의하여, CPU가 캐시 메모리(11A)에 액세스하게 하는 것이다. 따라서, 대응하는 엔트리가 캐시 메모리(11A)에 없는 경우뿐만 아니라, 에러가 발생한 경우도 캐시 미스가 일어난 경우와 동일한 동작을 하게 된다.
논리곱 회로(30-1, 30-2)의 출력은 웨이 선택부(32)에도 입력되어, 출력이"1"인 웨이를 선택하게 한다. 이 때에도, 단순히 대응하는 엔트리가 캐시 메모리(11a)에 있을 뿐 아니라, 또한 에러가 존재하지 않는 웨이를 선택하는 구조로 되어 있다.
또한, 태그 패리티 체크부(21-1, 21-2)로부터의 검사 결과와, 패리티 체크 출력부(22-1, 22-2)로부터의 검사 결과의 논리가 반전된 신호가 웨이마다 논리곱 회로(33-1, 33-2)에 입력되어 논리곱이 취해진다. 논리곱 회로(33-1, 33-2)의 출력의 논리를 반전한 신호가 각각 논리곱 회로(34-1, 34-2)에 입력된다. 논리곱 회로(34-1, 34-2)에는 각 웨이의 SE 비트도 입력되어, 웨이마다 논리곱이 취해진다. 논리곱 회로(34-1, 34-2)의 출력은 논리합 회로(35)에 입력되고, 논리합이 취해져, 결과가 CPU에의 인터럽트 신호로서 출력된다. 이 인터럽트 신호는 어느 하나 이상의 웨이에 있어서, 태그부 혹은 데이터부 또는 그 양방에 에러가 있고, 또한, SE 비트가 "1"인 엔트리가 있는 경우에, 하드웨어 에러가 발생했다고 해서 생성된다.
N웨이 세트 어소시에이티브 방식의 캐시 메모리에 대해서도 상기와 같은 식으로 회로를 구성할 수 있다. 즉, 웨이마다, CPU 어드레스의 상위와 태그부를 비교하는 비교기를 설치하여, 비교기의 출력과, 그 웨이의 태그부와 데이터부의 패리티 체크 결과의 논리 반전 신호와의 논리곱을 취하여, 웨이 선택 신호로 한다. 또한, 웨이 선택 신호의 논리합을 캐시 히트 신호로 한다. 또한, 어느 하나 이상의 웨이에 있어서, 태그부 혹은 데이터부 또는 그 양방에 에러가 존재하고, 또한 SE 비트가 "1"인 경우에, CPU에의 인터럽트 신호를 생성하도록 구성한다.
도 6은 패리티 체크를 하기 위한 회로의 도면이다. 또한, 도 7은 에러 검출 회로로서의 ECC 회로의 회로도이다.
도 6의 패리티 체크를 위한 회로는 태그 패리티 체크부 및 패리티 체크 출력부 중 어디에나 사용 가능하다.
도 6에서는 캐시 메모리에 바이트 패리티를 채용하고 있다. 바이트 패리티는 1 바이트마다 패리티 비트를 1 비트, 즉 8 바이트가 1 워드라고 하면 8 비트의 패리티 비트를 갖는 구성이다. 이 구성에서는, 1 바이트마다 패리티 체크를 한다. 복수의 패리티 체크는 회로에서 병렬로 하고, 모든 패리티 체크 결과의 논리합을 전체 데이터의 패리티 체크 결과로서 이용한다. 8 바이트를 포함하는 64 비트의 데이터는, 패리티 비트를 제외한 데이터만을 판독하여 이용한다.
도 6과 같은 구성에서는, 이 8 비트의 패리티 비트를 ECC의 용장 비트로 대체함으로써 품질을 높일 수 있다. 도 7이 8 비트의 ECC의 용장 비트를 이용한 경우의 구성도이다. 64 비트의 데이터와 8 비트의 ECC 용장 비트를 판독하여, 1 비트의 에러이면, 에러 정정하여 출력하고, 2 비트 이상의 에러이면, 정정 불능 에러로 하여 에러 신호를 출력한다. 그러나, 이 방식에서는, ECC의 검사/정정에 여분의 시간이 필요하게 된다. 소프트 에러율이 큰 경우, 품질을 중시하여, 처리 속도의 성능은 내려가지만, 도 7과 같은 ECC를 사용하는 신뢰성이 높아지는 방식을 채용할 수 있다.
도 8a는 도 3a에 있어서 도 7의 ECC 회로를 추가로 사용하는 구성도이다.
도 8a에 있어서, 도 3a와 동일한 구성 요소에는 동일한 참조 부호를 붙여, 설명을 생략한다.
에러 검출 방식을 ECC로 할지 패리티로 할지는 ECC/패리티 선택부(40)에서 설정할 수 있다. 한편, 이 도면에서는 캐시 메모리에의 기록부가 생략되어 있지만, ECC/패리티 선택부(40)에 의해 ECC가 선택된 경우에는 도 7의 ECC 비트에는, CPU로부터 입력된 64 비트의 데이터에 대응한 데이터가 ECC 비트 생성 회로(도시하지 않음)에 의해 생성되어 기록된다. ECC/패리티 선택부(40)에 의해 패리티가 선택된 경우에는 도 6의 P(패리티) 비트에는, CPU로부터 입력된 64 비트의 데이터의 각 바이트 대응한 패리티 데이터가 패리티 비트 생성 회로(도시하지 않음)에 의해 생성되어 기록된다. ECC/패리티 선택부(40)는 ECC를 선택하는 경우는, 도 7의 ECC 회로(41)의 정정 불능 에러 신호를 논리합 회로(45)에 입력시키고, 패리티를 선택하는 경우는, 도 6에 구성이 도시된 패리티 체크 출력부(22)의 패리티 에러 신호를 논리합 회로(45)에 입력시킨다. 논리합 회로(45)의 출력은 캐시 메모리의 SE 비트와 논리곱이 도면부호 46에서 취해져, CPU에의 인터럽트 신호가 된다.
도 8a에 있어서, 캐시 메모리(11)의 데이터부의 데이터는 패리티 체크 출력부(22)와, ECC 회로(41)에 입력된다. 데이터부로부터의 데이터와 ECC 회로(41)에서 에러 정정된 데이터는 멀티플렉서(42)에 입력된다. 멀티플렉서(42)는 ECC/패리티 선택부(40)의 설정에 따라서, 어느 한 데이터를 데이터 출력부(26)에 출력한다. 패리티 체크 출력부(22)의 패리티 체크 결과와, ECC/패리티 선택부(40)의 설정 신호는 논리곱 회로(43)에 입력된다. 또한, ECC 회로(41)의 정정 불능 에러 신호와 ECC/패리티 선택부(40)의 설정 신호의 논리 반전 신호는 논리곱 회로(44)에 입력된다. 논리곱 회로(43, 44)에, ECC/패리티 선택부(40)의 설정 신호 중, 서로 논리가 반전된 신호가 입력됨으로써, 어느 한쪽의 논리곱 회로의 출력이 선택된다. 논리곱 회로(43, 44)의 출력은 논리합 회로(45)에 입력된다. 즉, ECC/패리티 선택부(40)로부터의 출력이 "0"인 경우에는, 논리곱 회로(44)의 입력에 "0"의 논리 반전인 "1"이 입력되어, 논리곱 회로(44)측이 선택된다. 한편, ECC/패리티 선택부(40)로부터의 출력이 "1"인 경우에는, 논리곱 회로(43)의 입력에 "1"이 입력되어, 논리곱 회로(43)측이 선택된다. 또한, 논리합 회로(45)에는, 태그 패리티 체크부(21)의 출력도 입력되고, 논리합이 취해져, CPU에의 인터럽트 신호로서 출력된다. 이에 따라, 데이터부에, 패리티 체크에서 에러가 발견되거나, ECC의 검사에서 정정 불능 에러가 발견되거나, 태그에 패리티 에러가 검출되면, 태그부의 정보와 CPU로부터의 어드레스가 일치하더라도 이 에러 신호가 Low가 되어 논리곱이 도면부호 47에서 취해지기 때문에 히트가 되지 않고 미스히트로서 캐시 컨트롤러에 의해 처리된다. 또한, 도면부호 45의 에러 출력은 캐시 메모리의 SE 비트와, 도 3a의 실시예에서 설명한 바와 같은 것과의 논리곱이 도면부호 46에서 취해지고, SE 비트도 1이라면, 그 출력은 1이 되어 CPU에의 인터럽트 신호가 유효하게 되어, 하드웨어 에러로서의 처리가 이루어진다. 여기서, ECC 처리에서는, 회로적인 지연이 큰 것에 주의해야 한다. 소프트 에러율의 예측 결과에 따라서, 동작 속도의 성능은 내려가지만, 신뢰성이 높아지는 방식(ECC 처리)을 선택하도록 한다. 즉, 소프트 에러율의 예측 결과가, 제조자가 상정하는 것 이상의 높은 비율을 보이는 경우에는, 멀티플렉서를, ECC 회로로부터의 정정 후 데이터를 선택하도록 전환한다. 소프트 에러율의 예측 결과가 제조자가 상정하는 범위 내인 경우에는, 데이터를 그대로 출력하고, 패리디 검사 결과를 출력하도록 한다.
도 9 및 도 10은 패리티 체크와 ECC 정정 중 어디에나 적용할 수 있는 에러 검사를 위한 구성을 설명하는 도면이다.
도 9는 64 비트의 데이터에, 1 바이트마다 1 비트의 패리티가 붙은 구성이며, 패리티 체크만을 하는 구성이다.
도 10에서는 도 9에 대하여 ECC 비트가 부가되어 있다. ECC로는 가장 일반적인 SECDED :1 bit 에러 정정/2 bit 에러 검출 방식을 상정한다. 부가된 ECC 비트를 이용하여, 에러 정정도 실행할 수 있게 하여, 패리티 체크와 ECC가 동시에 가능하다. 이 회로를 이용한 실시예가 도 8b이다. 이 실시예에서는 통상의 패리티 에러도 발생하지 않는 상태에서는, 멀티플렉서(MPX)는 캐시로부터의 데이터를 그대로 출력하고, 패리티 에러가 발생하면, 멀티플렉서(MPX)는 ECC 회로로부터의 출력을 선택하게 된다. 그리고, 2 bit 에러, 즉 정정 불능 에러가 발생하면, 캐시 미스로 취급되어, 지금까지 설명한 본 발명예와 같은 식의 처리를 행한다. 이 회로에서는, 패리티 에러도 없는 통상의 상태에서는 보다 고속의 패리티 체크만 처리되고, 패리티 에러가 발생했을 때에는 고신뢰성의 ECC가 유효하게 되는 방식으로 되어 고속성과 고신뢰성을 겸비한다.
도 11∼도 13은 다른 본 실시형태의 동작의 상세한 점을 설명하는 도면이다.
본 실시형태에서는 2 웨이를 상정한 캐시 메모리 구성으로 되어 있다. 도 11에 있어서, 도 5와 동일한 구성 요소에는 동일한 참조 부호를 붙인다.
도 11의 본 실시형태에서는 고신뢰성 동작을 실행하는 모드와 통상 동작 모드 중 어느 동작을 설정할 수 있도록 구성된다. 모드의 설정은 웨이 선택부(32)에 대하여 이루어진다. 모드의 설정값은 레지스터(52)에 기록되고, 이것이 웨이 선택부(32)에 입력된다. CPU는 레지스터(52)에의 모드 설정값의 기록 어드레스를 어드레스 디코더(50)에 출력한다. 어드레스 디코더(50)는 어드레스를 디코딩하여, 논리곱 회로(51)에 입력한다. 이 어드레스는 레지스터(52)의 어드레스를 나타내고, 디코딩됨으로써, 레지스터(52)에의 기록 인에이블 신호가 된다. 논리곱 회로(51)에는 CPU로부터의 기록 신호도 입력된다. 논리곱 회로(51)에 인에이블 신호와 기록 신호가 입력되고, 논리곱이 취해져 출력된다. 논리곱 회로(51)의 출력은 레지스터(52)에 입력되고, CPU로부터의 데이터(모드의 설정값)가 레지스터(52)에 래치된다.
통상 동작 모드(Mode: O)에서는, CPU로부터의 어드레스의 일부가 양쪽 웨이의 태그부를 판독하여, 그 태그부로부터 판독된 데이터와 CPU로부터의 어드레스의 상위부와 비교된다. 만약에 어느 쪽의 태그부에서, 값이 일치하면 캐시 히트가 되어, 히트된 웨이의 데이터부가 웨이 선택부(32)를 통해 CPU에 판독된다. 통상 동작 모드에서는, 웨이 O과 웨이 1에는 다른 내용이 기억되어, 캐시의 히트율이 높아지도록 사용된다. 또한, 통상 동작 모드에서도, 도 4a에서 도시한 패리티 체크 방식을 이용하여, 패리티 에러가 발생한 경우는 미스히트로서 처리하는 것도 가능하다. 본 실시형태의 고신뢰성 모드(Mode: 1)에서는, 품질을 더욱 높이기 위해서, 2개의 웨이에 동일 내용을 기억시켜 놓는다. 에러가 없는 경우는, 양방의 데이터를 판독하지만, 한쪽의 웨이에 패리티 에러가 발생하면, 패리티 에러가 발생하지 않은 다른 쪽의 웨이를 CPU가 판독함으로써 패리티 에러를 회피하여 품질을 높일 수 있다. 이와 같이, 2개의 웨이에 동일 내용을 기억시켜 두는 경우에는, 캐시 메모리의 웨이 수는 2의 배수로 할 필요가 있다. 이에 따르면, 2개의 웨이를 1쌍으로 하여, 동일 내용의 데이터를 기억시켜 놓을 수 있다. 한편, 동일 내용을 기억시켜 놓는 웨이의 수는 2개에 한정되지는 않으며, 임의의 수 M이라도 좋지만, 캐시 메모리의 전체 웨이수는 M의 배수로 한다.
도 12를 참조하여 설명한다. 도 12는 캐시 메모리로부터의 데이터의 판독 동작의 모드와 신호값과의 관계를 도시하는 표이다. 도 12의 표의 동작은 웨이 선택부(32)에 의해서 실행된다.
동작 1∼6까지는, 통상의 2 웨이 세트 어소시에이티브의 동작이다. 동작 1은 양쪽 웨이 모두 미스히트로 캐시로부터 판독은 이루어지지 않는다. 동작 2는 웨이 0으로부터 정상적으로(패리티 에러 없이) 판독이 이루어졌을 때이다. 동작 3은 웨이 0이 히트했지만, 패리티 에러가 발생했기 때문에 캐시로부터의 데이터는 CPU에 전송되지 않는 경우이다. 동작 4는 웨이 1이 히트하여, 정상적으로(패리티 에러 없이) 판독이 이루어졌을 때이다. 동작 5는 웨이 1이 히트했지만, 패리티 에러가 발생했기 때문에 캐시로부터의 데이터는 CPU에 전송되지 않는 경우이다. 동작 6은 양쪽 웨이가 함께 히트했지만, 이것은 통상 동작에서는 발생하지 않는 이상 동작이기 때문에 에러로서 취급된다.
동작 7∼10은 본 실시형태(고신뢰성)의 동작인데, 캐시 메모리의 태그부·데이터부 모두 에러가 없으면 동일한 내용이 판독된다. 동작 7은 본 실시형태에 있어서의 모드의 동작이다. 웨이 O이 히트하고, 패리티 에러 없음이기 때문에, 웨이 O의 데이터가 CPU에 전송된다. 동작 8은 양쪽 웨이가 히트하고, 웨이 0에 패리티 에러가 발생하며, 웨이 1에는 패리티 에러 없음이기 때문에, 웨이 1의 데이터가 CPU에 전송된다. 동작 9는 웨이 1만 히트하고, 패리티 에러 없음이기 때문에, 웨이 1의 데이터가 CPU에 전송된다. 동작 10은 양쪽 웨이가 모두 히트했지만, 양쪽 웨이의 데이터 모두 패리티 에러가 발생했기 때문에, 캐시의 내용은 CPU에 전송되지 않는다.
또한, 본 실시형태의 캐시에의 기록 동작을 도 13의 표를 참조하여 설명한다.
통상 동작 모드(Mode: 0)에서는, 2 웨이 세트 어소시에이티브 캐시로서 동작한다. 동작 1∼7까지는 통상의 동작이다. 동작 1은 웨이 0이 히트하여, CPU로부터의 데이터를 웨이 0에 기록한다. 동작 2는 웨이 1이 히트하여, CPU로부터의 데이터를 웨이 1에 기록한다. 동작 3은 양쪽 웨이가 모두 미스히트였지만, 웨이 0쪽은 그 내용이 Invalid(무효)이기 때문에, 웨이 0에 CPU로부터의 데이터를 기록한다. 동작 4는 양쪽 웨이가 모두 미스히트였지만, 웨이 1쪽은 그 내용이 Invalid(무효)이기 때문에, 웨이 1에 CPU로부터의 데이터를 기록한다. 동작 5는 양쪽 웨이가 모두 미스히트하고, 더구나 양쪽 웨이 모두 그 내용이 Valid(유효)인 경우로, 어느 한쪽 웨이의 데이터를 메인 메모리에 세이브하여, 그 대응하는 위치에 데이터를 기록할 필요가 있다. 어느 쪽의 Way를 세이브시킬지를 해결하는 방법으로서 LRU(Least Recently Used) 방식이 알려져 있으며, 2 웨이이면 간단하게 실장할 수 있다. 즉, 태그부의 1 비트를 LRU 비트로 할당하여, CPU로부터의 액세스가 히트한 경우, 웨이 O이 히트하면 LRU 비트를 1로 하고, 웨이 1이 히트하면 LRU 비트는 O으로 한다. 이렇게 함으로써, 제일 마지막에 히트한 웨이와는 반대의 정보가 기록되게 된다. 이 방식을 채용함으로써, 동작 5에서는, LRU가 0이기 때문에 웨이 O에 기록하지만, 동작 6에서는, LRU가 1이기 때문에 웨이 1에의 기록이 이루어진다. 동작 7은 양쪽 웨이 모두 미스히트이고 Invalid이기 때문에 웨이 0에의 기록이 이루어진다.
동작 8∼10은 본 실시형태(고신뢰성)의 모드이며, Mode가 1, 즉 양쪽 웨이의 내용이 완전히 같아지도록, Write시에는 언제나 양쪽 웨이에 기록한다. 다만, 동작 9에서는, 양쪽 웨이가 Valid이기 때문에, 캐시의 내용을 메인 메모리에 세이브시킨 후에, 양쪽 웨이에 기록한다.
이상의 본 실시형태에서는, α선이나 우주선(중성자선)에 의한 소프트 에러 대책으로서, 캐시 메모리의 동작 품질을 높일 수 있는 캐시 메모리 시스템을 제공할 수 있다.
10: CPU 11A: 캐시 메모리
11B: 캐시 컨트롤러 12: 메모리 컨트롤러
13: 메인 메모리 20, 20-1, 20-2: 비교기
21, 21-1, 21-2: 태그 패리티 체크부
22, 22-1, 22-2: 패리티 체크 출력부
23, 25, 30-1, 30-2, 33-1, 33-2, 34-1, 34-2, 43, 44, 51: 논리곱 회로
24, 31, 35, 45: 논리합 회로 26 :데이터 출력부
32: 웨이 선택부 40: ECC/패리티 선택부
41: ECC 회로 42: 멀티플렉서
50: 어드레스 디코더 52: 레지스터
61: 어드레스 버퍼 62: 데이터 버퍼
63: 태그 어드레스 버퍼 64: 제어부
65, 66: 패리티 비트 생성기
11B: 캐시 컨트롤러 12: 메모리 컨트롤러
13: 메인 메모리 20, 20-1, 20-2: 비교기
21, 21-1, 21-2: 태그 패리티 체크부
22, 22-1, 22-2: 패리티 체크 출력부
23, 25, 30-1, 30-2, 33-1, 33-2, 34-1, 34-2, 43, 44, 51: 논리곱 회로
24, 31, 35, 45: 논리합 회로 26 :데이터 출력부
32: 웨이 선택부 40: ECC/패리티 선택부
41: ECC 회로 42: 멀티플렉서
50: 어드레스 디코더 52: 레지스터
61: 어드레스 버퍼 62: 데이터 버퍼
63: 태그 어드레스 버퍼 64: 제어부
65, 66: 패리티 비트 생성기
Claims (11)
- 태그부와 데이터부를 포함하는 데이터를 저장하는 캐시 메모리와,
그 태그부와 데이터부의 쌍방에 대해서 에러를 검출하는 에러 검출부와,
그 캐시 메모리를 라이트스루 방식으로 동작시키고, 태그부의 캐시 히트 정보에 있어서 캐시 히트했음을 "1"로 나타내고 미스히트했음을 "0"으로 나타내는 신호와, 그 에러 검출부에서의 에러 검출에 있어서 에러가 없었음을 "1"로 나타내고 에러가 있었음을 "0"으로 나타내는 신호와의 논리곱을 취한 결과의 신호를, CPU에 보내야 하는 캐시 히트 정보로 하는 제어부
를 구비하고,
에러가 발생했을 때에도 캐시 미스히트였을 때와 마찬가지로, 메인 메모리로부터, 에러가 발생한 캐시 메모리의 데이터에 상당하는 어드레스의 데이터를 판독하여, 그 데이터로 에러 발생한 캐시 메모리의 데이터를 치환하는 것을 특징으로 하는 캐시 메모리 시스템. - 제1항에 있어서, 상기 캐시 메모리는 각 데이터에 대해서, 이전에 에러가 발생했을 때에 "1"이 설정되는 소프트 에러 비트를 구비하고,
상기 제어부는 그 소프트 에러 비트가 "1"로 설정되어 있는 데이터에 대해서, 상기 에러 검출부에서 에러가 검출된 경우에는, CPU에의 인터럽트 신호를 생성하는 것을 특징으로 하는 캐시 메모리 시스템. - 제1항에 있어서, 상기 캐시 메모리 시스템은 이전에 에러가 발생했을 때에 세트되는 레지스터를 구비하고, 이 레지스터는 정기적으로 리셋되는 것을 특징으로 하고,
상기 제어부는 상기 레지스터가 세트되어 있을 때, 상기 에러 검출부에서 에러가 검출된 경우에는, CPU에의 인터럽트 신호를 생성하는 것을 특징으로 하는 캐시 메모리 시스템. - 제1항에 있어서, 상기 에러 검출부는 패리티 체크 회로를 포함하는 것을 특징으로 하는 캐시 메모리 시스템.
- 제1항에 있어서, 상기 에러 검출부는 패리티 체크 회로와 ECC 회로를 구비하여, 쌍방을 전환하여 사용하는 것을 특징으로 하는 캐시 메모리 시스템.
- 제1항에 있어서, 상기 에러 검출부는 1 비트 에러 정정 2 비트 에러 검출의 ECC 회로를 구비하여, 검출 가능한 2 비트 에러가 검출되었을 때에 에러라고 판단하는 것을 특징으로 하는 캐시 메모리 시스템.
- 제1항에 있어서, 상기 캐시 메모리에 대하여 기록 동작 시에 에러가 발생한 경우에는, 상기 태그부의 스테이터스 상태를 무효로 하는 것을 특징으로 하는 캐시 메모리 시스템.
- 제1항에 있어서, 상기 에러 검출부는, 패리티 체크 회로와 ECC 회로를 구비하여, 쌍방을 동시에 사용하는 것을 특징으로 하는 캐시 메모리 시스템.
- 제1항에 있어서, 상기 캐시 메모리는 2N 웨이 세트 어소시에이티브 방식을 채용하고,
상기 제어부는, 1쌍의 웨이에 동일 데이터를 기록하게 하는 제어와, 동시에 2 웨이의 판독을 실행시켜, 만일 한쪽의 웨이에서 에러가 발생하면, 다른 쪽의 웨이를 유효하게 하여 판독 액세스시키는 제어를 실행하는 것을 특징으로 하는 캐시 메모리 시스템. - 제1항에 기재한 캐시 메모리 시스템을 구비한 반도체 장치.
- 태그부와 데이터부를 포함하는 데이터를 저장하는 캐시 메모리를 구비한 캐시 메모리 시스템의 제어 방법에 있어서,
그 태그부와 데이터부의 쌍방에 대해서 에러를 검출하며,
그 캐시 메모리를 라이트스루 방식으로 동작시키고, 태그부의 캐시 히트 정보에 있어서 캐시 히트했음을 "1"로 나타내고 미스히트했음을 "0"으로 나타내는 신호와, 그 에러 검출에 있어서 에러가 없었음을 "1"로 나타내고 에러가 있었음을 "0"으로 나타내는 신호와의 논리곱을 취한 결과의 신호를, CPU에 보내야 하는 캐시 히트 정보로 하고,
에러가 발생했을 때에도 캐시 미스히트였을 때와 마찬가지로, 메인 메모리로부터, 에러가 발생한 캐시 메모리의 데이터에 상당하는 어드레스의 데이터를 판독하여, 그 데이터로 에러 발생한 캐시 메모리의 데이터를 치환하는 것을 특징으로 하는 캐시 메모리 시스템의 제어 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010250495A JP2012103826A (ja) | 2010-11-09 | 2010-11-09 | キャッシュメモリシステム |
JPJP-P-2010-250495 | 2010-11-09 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120049798A KR20120049798A (ko) | 2012-05-17 |
KR101319670B1 true KR101319670B1 (ko) | 2013-10-17 |
Family
ID=46020798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110085922A KR101319670B1 (ko) | 2010-11-09 | 2011-08-26 | 캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8589763B2 (ko) |
JP (1) | JP2012103826A (ko) |
KR (1) | KR101319670B1 (ko) |
CN (1) | CN102541756A (ko) |
TW (1) | TW201224753A (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101703173B1 (ko) * | 2011-11-07 | 2017-02-07 | 삼성전자주식회사 | 데이터 캐시 컨트롤러, 이를 포함하는 장치들, 및 이의 동작 방법 |
JP6031850B2 (ja) * | 2012-06-29 | 2016-11-24 | 日本電気株式会社 | 情報機器、データ保証システム、処理装置、データ保証方法およびプログラム |
WO2014097464A1 (ja) * | 2012-12-20 | 2014-06-26 | 富士通株式会社 | データ比較回路、及び、処理装置 |
CN103116484B (zh) * | 2012-12-31 | 2015-12-23 | 华为技术有限公司 | 指令处理方法及设备 |
US9176895B2 (en) | 2013-03-16 | 2015-11-03 | Intel Corporation | Increased error correction for cache memories through adaptive replacement policies |
JP6275427B2 (ja) | 2013-09-06 | 2018-02-07 | 株式会社東芝 | メモリ制御回路およびキャッシュメモリ |
US9329930B2 (en) | 2014-04-18 | 2016-05-03 | Qualcomm Incorporated | Cache memory error detection circuits for detecting bit flips in valid indicators in cache memory following invalidate operations, and related methods and processor-based systems |
JP6367704B2 (ja) * | 2014-12-25 | 2018-08-01 | 株式会社バイオス | 記憶制御システム及び記憶制御装置 |
US10474569B2 (en) | 2014-12-29 | 2019-11-12 | Toshiba Memory Corporation | Information processing device including nonvolatile cache memory and processor |
KR101629411B1 (ko) | 2015-02-03 | 2016-06-10 | 한국전자통신연구원 | 레벨0 캐시 제어 장치 및 방법 |
CN104750577B (zh) * | 2015-04-13 | 2017-09-29 | 中国人民解放军国防科学技术大学 | 面向片上大容量缓冲存储器的任意多位容错方法及装置 |
CN105335247B (zh) * | 2015-09-24 | 2018-04-20 | 中国航天科技集团公司第九研究院第七七一研究所 | 高可靠系统芯片中Cache的容错结构及其容错方法 |
CN105259150B (zh) * | 2015-11-02 | 2019-01-18 | 深圳市锦瑞生物科技有限公司 | 一种荧光分析仪定标系统 |
US9904593B2 (en) * | 2015-11-13 | 2018-02-27 | Taiwan Semiconductor Manufacturing Co., Ltd. | Memory device and correction method |
CN106710627B (zh) * | 2015-11-18 | 2019-11-26 | 凌阳科技股份有限公司 | 多晶胞芯片及其存储器装置 |
KR102515417B1 (ko) | 2016-03-02 | 2023-03-30 | 한국전자통신연구원 | 캐시 메모리 장치 및 그것의 동작 방법 |
US10467092B2 (en) * | 2016-03-30 | 2019-11-05 | Qualcomm Incorporated | Providing space-efficient storage for dynamic random access memory (DRAM) cache tags |
US10185619B2 (en) * | 2016-03-31 | 2019-01-22 | Intel Corporation | Handling of error prone cache line slots of memory side cache of multi-level system memory |
US10067827B2 (en) * | 2016-06-29 | 2018-09-04 | Micron Technology, Inc. | Error correction code event detection |
JP2018120413A (ja) * | 2017-01-25 | 2018-08-02 | Necプラットフォームズ株式会社 | 保守判断装置、保守判断方法及びプログラム |
US10572389B2 (en) * | 2017-12-12 | 2020-02-25 | Advanced Micro Devices, Inc. | Cache control aware memory controller |
US10990463B2 (en) | 2018-03-27 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor memory module and memory system including the same |
KR102538679B1 (ko) * | 2018-04-06 | 2023-06-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR20200015999A (ko) * | 2018-08-06 | 2020-02-14 | 에스케이하이닉스 주식회사 | 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990072593A (ko) * | 1998-02-17 | 1999-09-27 | 포만 제프리 엘 | 캐시갱신프로토콜을이용한캐시할당해제방법및데이터처리시스템 |
JP2005182749A (ja) | 2003-12-18 | 2005-07-07 | Arm Ltd | キャッシュ・メモリおよびそのエラー訂正方法 |
KR20100109365A (ko) * | 2009-03-30 | 2010-10-08 | 후지쯔 가부시끼가이샤 | 캐시 제어 장치, 정보 처리 장치 및 캐시 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
KR20100133194A (ko) * | 2009-06-11 | 2010-12-21 | 수원대학교산학협력단 | 캐시 메모리 장치 및 이를 이용한 에러 검출 방법 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS581899A (ja) | 1981-06-27 | 1983-01-07 | Toshiba Corp | バツフアメモリの誤り補正方式 |
JPS63278162A (ja) | 1987-05-09 | 1988-11-15 | Nec Corp | 情報処理装置におけるエラ−訂正装置 |
JPH02143352A (ja) | 1988-11-24 | 1990-06-01 | Nec Corp | メモリエラー検出修正方式 |
US5649090A (en) * | 1991-05-31 | 1997-07-15 | Bull Hn Information Systems Inc. | Fault tolerant multiprocessor computer system |
JPH05134938A (ja) * | 1991-11-12 | 1993-06-01 | Shikoku Nippon Denki Software Kk | メモリ制御装置 |
JPH06175934A (ja) * | 1992-12-01 | 1994-06-24 | Oki Electric Ind Co Ltd | 1ビットエラー処理方式 |
US5961655A (en) * | 1996-12-05 | 1999-10-05 | Hewlett-Packard Company | Opportunistic use of pre-corrected data to improve processor performance |
US5958072A (en) * | 1997-01-13 | 1999-09-28 | Hewlett-Packard Company | Computer-system processor-to-memory-bus interface having repeating-test-event generation hardware |
JPH10289164A (ja) * | 1997-04-16 | 1998-10-27 | Mitsubishi Electric Corp | メモリ制御方法およびメモリ制御装置 |
US6163857A (en) * | 1998-04-30 | 2000-12-19 | International Business Machines Corporation | Computer system UE recovery logic |
US6625749B1 (en) * | 1999-12-21 | 2003-09-23 | Intel Corporation | Firmware mechanism for correcting soft errors |
US7275202B2 (en) * | 2004-04-07 | 2007-09-25 | International Business Machines Corporation | Method, system and program product for autonomous error recovery for memory devices |
JP4201783B2 (ja) | 2005-08-04 | 2008-12-24 | 富士通マイクロエレクトロニクス株式会社 | キャッシュメモリ装置、半導体集積回路およびキャッシュ制御方法 |
JP2008234074A (ja) * | 2007-03-16 | 2008-10-02 | Fujitsu Ltd | キャッシュ装置 |
WO2010109631A1 (ja) * | 2009-03-26 | 2010-09-30 | 富士通株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
-
2010
- 2010-11-09 JP JP2010250495A patent/JP2012103826A/ja active Pending
-
2011
- 2011-08-26 KR KR1020110085922A patent/KR101319670B1/ko not_active IP Right Cessation
- 2011-08-29 TW TW100130907A patent/TW201224753A/zh unknown
- 2011-09-01 US US13/223,996 patent/US8589763B2/en not_active Expired - Fee Related
- 2011-09-29 CN CN2011103042411A patent/CN102541756A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR19990072593A (ko) * | 1998-02-17 | 1999-09-27 | 포만 제프리 엘 | 캐시갱신프로토콜을이용한캐시할당해제방법및데이터처리시스템 |
JP2005182749A (ja) | 2003-12-18 | 2005-07-07 | Arm Ltd | キャッシュ・メモリおよびそのエラー訂正方法 |
KR20100109365A (ko) * | 2009-03-30 | 2010-10-08 | 후지쯔 가부시끼가이샤 | 캐시 제어 장치, 정보 처리 장치 및 캐시 제어 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 |
KR20100133194A (ko) * | 2009-06-11 | 2010-12-21 | 수원대학교산학협력단 | 캐시 메모리 장치 및 이를 이용한 에러 검출 방법 |
Also Published As
Publication number | Publication date |
---|---|
TW201224753A (en) | 2012-06-16 |
US8589763B2 (en) | 2013-11-19 |
US20120117428A1 (en) | 2012-05-10 |
JP2012103826A (ja) | 2012-05-31 |
KR20120049798A (ko) | 2012-05-17 |
CN102541756A (zh) | 2012-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101319670B1 (ko) | 캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법 | |
JP4019061B2 (ja) | Ecc保護機構における固定ビット障害を解決するための特殊eccマトリクスの適用方法 | |
US7272773B2 (en) | Cache directory array recovery mechanism to support special ECC stuck bit matrix | |
US7437597B1 (en) | Write-back cache with different ECC codings for clean and dirty lines with refetching of uncorrectable clean lines | |
KR101252367B1 (ko) | 저전압 동작 동안 캐시 부분의 디스에이블 | |
US8205136B2 (en) | Fault tolerant encoding of directory states for stuck bits | |
US7055003B2 (en) | Data cache scrub mechanism for large L2/L3 data cache structures | |
US6480975B1 (en) | ECC mechanism for set associative cache array | |
US8977820B2 (en) | Handling of hard errors in a cache of a data processing apparatus | |
US7752505B2 (en) | Method and apparatus for detection of data errors in tag arrays | |
JP4395425B2 (ja) | 破損データ値を処理するためのデータ処理装置と方法 | |
US9384091B2 (en) | Error code management in systems permitting partial writes | |
US20090204766A1 (en) | Method, system, and computer program product for handling errors in a cache without processor core recovery | |
US9146808B1 (en) | Soft error protection for content addressable memory | |
JP2010009102A (ja) | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 | |
KR20120031875A (ko) | 의사 에러 발생 장치 | |
US9081693B2 (en) | Data type dependent memory scrubbing | |
JP2013196393A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US7395489B2 (en) | Control system and memory control method executing a detection of an error in a formation in parallel with reading operation | |
US7689891B2 (en) | Method and system for handling stuck bits in cache directories | |
JPH09146836A (ja) | キャッシュ索引の障害訂正装置 | |
US20070186135A1 (en) | Processor system and methodology with background error handling feature | |
US7055002B2 (en) | Integrated purge store mechanism to flush L2/L3 cache structure for improved reliabity and serviceability | |
JP2006286135A (ja) | 半導体記憶装置及びその読み書き制御方法 | |
US20100057994A1 (en) | Device and method for controlling caches |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |