KR20080089619A - 에러 정정 코드 생성 방법 및 메모리 관리 장치 - Google Patents

에러 정정 코드 생성 방법 및 메모리 관리 장치 Download PDF

Info

Publication number
KR20080089619A
KR20080089619A KR1020087018940A KR20087018940A KR20080089619A KR 20080089619 A KR20080089619 A KR 20080089619A KR 1020087018940 A KR1020087018940 A KR 1020087018940A KR 20087018940 A KR20087018940 A KR 20087018940A KR 20080089619 A KR20080089619 A KR 20080089619A
Authority
KR
South Korea
Prior art keywords
data
storage
error correction
correction code
ecc
Prior art date
Application number
KR1020087018940A
Other languages
English (en)
Other versions
KR100972807B1 (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 KR20080089619A publication Critical patent/KR20080089619A/ko
Application granted granted Critical
Publication of KR100972807B1 publication Critical patent/KR100972807B1/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1064Adding 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
    • 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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 과제는, 캐시 메모리의 데이터의 에러를 정확히 정정할 수 있도록 하는 것이다. 기억 처리 장치(24)는 검색시에 캐시 메모리로부터 판독한 저장 대상 영역 외의 데이터로부터 nt-ECC를 생성한다. 또한 선행하는 저장 명령의 저장 어드레스와 현재의 저장 명령의 저장 어드레스가 일치하는지의 여부, 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정한다. 동일한 저장 어드레스의 선행하는 저장 명령이 존재하고, 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, ECC 유효 정보를 무효로 설정하며, 이 ECC 유효 정보를 nt-ECC에 대응시켜 저장 버퍼(25)에 저장한다.

Description

에러 정정 코드 생성 방법 및 메모리 관리 장치{ERROR CORRECTION CODE GENERATION METHOD AND MEMORY MANAGEMENT DEVICE}
본 발명은, 캐시 메모리에 기록하는 데이터의 에러 정정 코드의 생성 방법 및 메모리 관리 장치에 관한 것이다.
메인 메모리로부터 판독한 데이터를 캐시 메모리에 기억해 두고, 캐시 메모리의 데이터를 액세스함으로써 CPU의 처리 속도를 높이는 것이 행해지고 있다. 캐시 메모리의 데이터에 대해서는 에러 정정 코드(Error Correcting Code)를 부가하여 데이터의 보호를 도모하고 있다.
특허문헌 1에는, 체크 비트 생성의 대상이 되는 데이터 폭보다 작은 데이터를 메모리에 기록하는 경우에, 이들 데이터를 멀티플렉서로 조합하여 하나의 데이터로 하고, ECC 생성 유닛으로 그 데이터로부터 체크 비트를 생성하여 메모리에 기록을 행하는 것이 기재되어 있다. 이에 따라, 부분 기록(partial write)시의 리드 모디파이 라이트(read modify write) 동작의 액세스 시간을 단축할 수 있다고 하는 효과를 얻을 수 있다.
또한, 특허문헌 2에는 더블 워드(double word) 경계를 초과하는 부분 기록을 행하는 경우에, 해당하는 어드레스가 캐시에 없을 때에는 채널로부터의 데이터는 스왑 버퍼에 기억되어, 이 데이터는 부분 기록에 관련된 더블 워드와 스왑 버퍼의 채널로부터의 데이터와 병합되어 메인 메모리에 기록되는 것이 기재되어 있다.
도 16은, 데이터 RAM과 ECC RAM을 갖는 메모리 시스템에서의, 종래의 에러 정정 코드 생성 방법의 설명도이다.
명령 처리 장치(도시 생략)로부터 저장 명령이 출력되면, 저장 대상의 데이터가 데이터 RAM(캐시 메모리)(13)에 존재하는지의 여부를 확인하고, 저장 대상의 데이터가 존재하는 경우에는, 저장 대상의 데이터를 포함하는 8 바이트의 데이터를 판독하여 에러를 체크한다. 이 때, 저장 명령에 대응하는 저장 데이터는 저장 버퍼 STB11에 기록된다.
그 후, 명령 처리 장치로부터 저장 허가가 발행되면, 저장 버퍼 STB11의 데이터가 라이트 버퍼 WB12에 기록되고, 그 데이터가 데이터 RAM(13)에 더 기록된다. 이 기록과 동시에 데이터 RAM(13)으로부터 8 바이트의 데이터를 판독하고, 8 바이트의 데이터 중의 저장 대상 영역 외의 데이터로부터 에러 정정 코드 ECC1을 생성한다. 또한 8 바이트의 데이터 중의 저장 대상 영역의 데이터로부터 에러 정정 코드 ECC2를 생성한다. 이 2개의 ECC를 병합하여 저장 갱신 후의 데이터에 대한 에러 정정 코드 ECC를 생성하고, 생성한 에러 정정 코드를 ECC RAM(14)에 저장한다.
상기한 종래의 에러 정정 코드 생성 방법은, 이하와 같은 문제점을 갖고 있다.
저장 명령을 받아 캐시 메모리를 검색했을 때의 에러 체크에서는 에러가 검출되지 않고, 캐시 메모리에의 데이터의 기록 후에 판독한 데이터의 에러 체크에서 에러가 검출되었을 때에는 기록 후의 데이터에 대한 에러 정정 코드를 정확하게 생성할 수 없다. 이 때 ECC RAM(14)에 보존되어 있는 것은 저장 명령의 실행 전의 데이터로부터 생성한 에러 정정 코드이며, 저장 명령의 실행 전의 데이터는 이 시점에서는 상실되기 때문에, 에러가 검출되었다고 해도 데이터의 1 비트 에러를 정정할 수 없다고 하는 문제점이 있었다.
상기 에러는, 예컨대 SRAM(Static Random Access Memory)에 대하여 기록과 판독을 하는 경우에, 기록 직후에 판독을 행한 경우, 판독 직전의 데이터가 비트선에 잔류하여 다음 사이클의 판독의 마진을 저하시키는 것이 하나의 원인이라고 생각된다. 설계상에는, 기록 후에 데이터가 잔류하지 않도록 비트선을 프리차지 트랜지스터를 이용하여 규정 시간 내에서 전원 전압 VDD까지 충전시키는 구조로 되어 있다. 구체적으로 설명하면, 기록시는 메모리 셀에 접속되는 비트선 쌍을 기록 데이터에 따라서 한 쪽을 로우 레벨로 하여 메모리 셀에 기록을 한다. 기록이 종료되었다면 다음 사이클의 판독 시작시까지 비트선 쌍을 전원전압 VDD에 쇼트함으로써 기록 데이터를 없애고 있다.
그러나, SRAM을 설계값 이상의 동작 사이클로 동작시켰을 때, 또는 트랜지스터의 제조 변동에 의해 프리차지 트랜지스터의 특성이 좋지 않기 때문에 비트선 쌍을 전원전압 VDD까지 프리차지할 수 없으면, 다음 사이클의 판독시에 에러가 발생한다.
특허문헌 1: 일본 특허 공개 평10-232789호 공보
특허문헌 2: 일본 특허 공고 소58-21353호 공보
본 발명의 과제는, 캐시 메모리의 데이터의 에러를 정확히 정정할 수 있도록 하는 것이다.
본 발명의 메모리 관리 장치는 저장 명령의 저장 데이터를 저장하는 버퍼와, 캐시 메모리를 검색하여 상기 저장 명령의 저장 대상의 데이터가 캐시 메모리에 존재하는지의 여부를 판정하는 판정 회로와, 상기 판정 회로에 의해 상기 캐시 메모리에 상기 저장 대상이 되는 데이터가 존재한다고 판정된 경우에는, 상기 캐시 메모리의 검색시에 상기 캐시 메모리로부터 판독한 저장 대상 영역 외의 데이터에 기초하여 제1 에러 정정 코드를 생성하고, 생성한 상기 제1 에러 정정 코드를 상기 버퍼에 저장하는 제1 에러 정정 코드 생성 회로와, 상기 버퍼의 상기 저장 데이터의 저장 대상 영역의 데이터에 기초하여 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 회로와, 상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성하는 병합 회로를 구비한다.
본 발명에 의하면, 캐시 메모리에 데이터를 기록한 후에 에러가 검출된 경우라도, 캐시 메모리의 검색시에 캐시 메모리로부터 판독한 저장 대상 영역 외의 데이터로부터 생성한 제1 에러 정정 코드와, 저장 데이터의 저장 대상 영역의 데이터로부터 생성한 제2 에러 정정 코드로부터 생성한 에러 정정 코드를 이용하여 데이터의 에러를 정확히 정정할 수 있다.
본 발명의 메모리 관리 장치에서, 상기 제1 에러 정정 코드 생성 회로는 선행하는 저장 명령의 저장 어드레스가 현재의 저장 명령의 저장 어드레스와 일치하는지의 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하고, 동일한 저장 어드레스를 갖는 선행하는 저장 명령이 존재하며, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 제1 에러 정정 코드가 적정한지의 여부를 나타내는 ECC 유효 정보를 무효로 설정하고, 이 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 기억한다.
이와 같이 구성함으로써, ECC 유효 정보가 유효인지, 무효인지를 판정함으로써, 제1 에러 정정 코드가 적정한지 여부를 판정할 수 있다.
본 발명의 메모리 관리 장치에서, 상기 버퍼는 복수의 버퍼로 이루어지고, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하는지 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하며, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 ECC 유효 정보를 무효로 설정하며, 이 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 해당하는 버퍼의 상기 저장 어드레스에 저장한다.
이와 같이 구성함으로써 복수의 버퍼에 동일한 저장 어드레스가 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 선행하는 저장 명령이 완료된 후, 제1 에러 정정 코드를 생성하며, 그 제1 에러 정정 코드와, 저장 데이터의 저장 대상 영역의 데이터로부터 생성하는 제2 에러 정정 코드를 이용하여 적정한 에러 정정 코드를 생성할 수 있다.
본 발명의 메모리 관리 장치에서, 상기 병합 회로는, 상기 버퍼의 상기 ECC 유효 정보가 유효인지, 무효인지를 판정하여, 상기 ECC 유효 정보가 유효하게 설정되어 있을 때에는, 상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성한다.
이와 같이 구성함으로써 ECC 유효 정보가 유효하고 적정한 제1 에러 정정 코드가 생성되어 있는 경우에, 이 제1 에러 정정 코드와 저장 데이터로부터 생성하는 제2 에러 정정 코드를 병합하여 올바른 에러 정정 코드를 생성할 수 있다.
본 발명의 메모리 관리 장치에서, 상기 버퍼의 상기 ECC 유효 정보가 무효로 설정된 상태에서, 선행하는 저장 명령이 완료되었을 때에는, 상기 버퍼의 해당하는 저장 어드레스의 상기 ECC 유효 정보를 유효로 재기록한다.
이와 같이 구성함으로써, 동일한 저장 어드레스에 대하여 데이터를 기록하는 선행하는 저장 명령이 존재하는 경우라도, 그 저장 명령이 완료되었을 때에 처리의 대기 시간을 발생시키지 않고, 후속의 저장 명령의 저장 데이터를 캐시 메모리에 기록할 수 있다.
도 1은 메모리 관리 장치의 기본 구성을 도시하는 도면이다.
도 2는 실시형태의 에러 정정 코드 생성 방법의 설명도이다.
도 3은 저장 버퍼와 라이트 버퍼의 데이터 구성을 도시하는 도면이다.
도 4는 IU-REQ시의 동작 흐름도이다.
도 5는 IU-REQ시의 동작 설명도이다.
도 6은 IU-REQ시의 동작을 도시하는 타임차트이다.
도 7은 ECC-VAL의 설정 회로의 블록도이다.
도 8은 WB-GO시의 동작 설명도이다.
도 9는 ST1-REQ시의 동작 흐름도이다.
도 10은 ST1-REQ시의 동작 설명도이다.
도 11은 ST1-REQ시의 동작을 도시하는 타임차트이다.
도 12는 ST2-REQ시의 동작 흐름도이다.
도 13은 ST2-REQ시의 동작 설명도이다.
도 14는 ST2-REQ시의 동작을 도시하는 흐름도이다.
도 15는 ECC 생성 회로의 블록도이다.
도 16은 종래의 에러 정정 코드 생성 방법의 설명도이다.
이하, 본 발명의 실시형태를 도면을 참조하여 설명한다. 도 1은 본 발명의 일 실시형태에 따른 에러 정정 코드 생성 방법에 따라서 동작하는 메모리 관리 장치의 기본 구성을 도시하는 도면이다.
도 1에서, 메모리 관리 장치는 판정 회로(1)와 제1 에러 정정 코드 생성 회로(2)와 제2 에러 정정 코드 생성 회로(3)와 병합 회로(4)와 버퍼(5)를 갖는다.
저장 명령의 저장 데이터는 버퍼(5)에 저장된다. 판정 회로(1)는 캐시 메모리(6)를 검색하여 저장 명령의 저장 대상의 데이터가 캐시 메모리(6)에 존재하는지의 여부를 판정한다.
제1 에러 정정 회로(2)는 판정 회로(1)에 의해 캐시 메모리(6)에 저장 대상이 되는 데이터가 존재한다고 판정된 경우에는, 캐시 메모리(6)의 검색시에 캐시 메모리(6)로부터 판독한 저장 대상 영역 외의 데이터에 기초하여 제1 에러 정정 코드를 생성한다.
제2 에러 정정 코드 생성 회로(3)는 버퍼(5)의 저장 데이터의 저장 대상 영역의 데이터에 기초하여 제2 에러 정정 코드를 생성한다.
병합 회로(4)는 제1 에러 정정 코드와 제2 에러 정정 코드를 병합하여 저장 데이터의 에러 정정 코드를 생성하여 ECC 메모리(7)에 기록한다.
상기한 메모리 관리 장치에 의하면, 캐시 메모리(6)의 검색시에 판독한 저장 대상 영역 외의 데이터로부터 생성한 제1 에러 정정 코드와, 캐시 메모리에 기록하는 저장 데이터로부터 생성한 제2 에러 정정 코드를 병합하여 에러 정정 코드를 생성하고 있기 때문에, 캐시 메모리에 데이터를 기록한 후에 에러가 검출된 경우라도, 데이터의 에러(예컨대 1비트의 에러)를 정확히 정정할 수 있다.
따라서, 종래는 캐시 메모리(6)로부터의 데이터의 판독은, 검색시와, 저장 허가 후에 제1 에러 정정 코드를 생성하는 경우의 2회였지만, 본 실시형태에서는 캐시 메모리(6)로부터의 데이터의 판독은, 검색시의 데이터 체크와 제1 에러 정정 코드의 생성을 위한 1회여도 좋다.
다음에, 도 2는 실시형태의 에러 정정 코드 생성 방법의 설명도이다. 본 실시형태는 캐시 메모리를 가지며, 파이프 라인 방식으로 명령을 실행하는 CPU에 관한 것이다.
명령 처리 장치(22)로부터 저장 명령이 출력되고, 연산기(23)로부터 저장 데이터가 출력되면, 기억 처리 장치(24)는 저장 명령에 포함되는 저장 정보에 기초하여 저장 바이트 마크(STBM)를 작성하여, 이 스토어 바이크 마크를 저장 어드레스와 함께 저장 버퍼(25)에 저장한다. 저장 바이트 마크(STBM)란, 소정 폭의 데이터(실시형태에서는 8 바이트의 데이터) 중 어느 바이트를 저장할지를 나타내는 데이터이며 바이트 단위로 작성된다.
저장 명령의 저장 정보에는, 저장 어드레스, 저장 데이터 폭, 데이터를 좌측 정렬로 저장할지, 우측 정렬로 저장할지를 지정하는 얼라인먼트 정보 등이 포함된다.
기억 처리 장치(24)는, 저장 대상의 캐시 라인이 데이터 RAM(캐시 메모리)(27)에 존재하는지의 여부를 판정한다. 또한 선행하는 저장 명령의 저장 어드레스와 현재의 저장 명령의 저장 드레스가 일치하는지의 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정한다. 동일한 저장 어드레스의 선행하는 저장 명령이 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 선행하는 저장 명령이 완료되지 않으면 저장 대상 외의 데이터로부터 생성되는 nt-ECC가 확정되지 않기 때문에, 그 저장 명령을 저장·저장·인터록(SSI)의 대상으로 한다. 저장·저장·인터록의 대상이라고 판단된 저장 명령은, 선행하는 저장 명령의 저장이 완료된 후, 저장·저장·인터록이 해제된다.
기억 처리 장치(24)는, 데이터 RAM(27)의 검색시에 데이터 RAM(27)의 해당하 는 어드레스로부터 판독한 저장 대상 영역 외의 데이터로부터 에러 정정 코드 nt-ECC(제1 에러 정정 코드에 대응함)를 산출하여, 연산기(23)로부터 출력되는 저장 데이터와 함께 저장 버퍼(25)에 기록한다. 이 때, 현재의 저장 명령이 저장·저장·인터록의 대상일 때에는 선행하는 저장 명령이 완료되지 않으면 올바른 nt-ECC를 얻을 수 없기 때문에 ECC 유효 정보 ECC-VAL을 무효(예컨대, 「0」)로 설정하고, 그 이외일 때는 ECC 유효 정보 ECC-VAL을 유효(예컨대, 「1」)로 설정한다.
도 3의 (A), (B)는, 저장 버퍼(25)와 라이트 버퍼(26)의 데이터 구성을 도시하는 도면이다.
도 3의 (A)에 도시하는 바와 같이, 저장 버퍼(25)의 각 어드레스에는 8 바이트의 데이터와, 그 8 바이트의 데이터의 에러 정정 코드인 1 바이트의 nt-ECC와, 8 바이트의 데이터와의 바이트의 데이터를 저장할지를 나타내는 저장 바이트 마크(STMB)와, 저장 어드레스(ADRS)와, 캐시 비트하였는지를 나타내는 LID와, ECC 유효 정보 ECC-VAL이 대응되어 기억되어 있다. LID에는 캐시 히트했을 때 「1」이 설정되고, 캐시 미스일 때 「0」이 설정된다. ECC 유효 정보 ECC-VAL은 저장 버퍼(25)에 적정한 nt-ECC가 저장되어 있는지 여부를 나타내는 정보이다. 동일 저장 어드레스에 대한 선행하는 저장 명령이 존재하고, 저장 데이터의 데이터 폭이 8 바이트 미만일 때에는, 선행하는 저장 명령이 완료되지 않으면 올바른 nt-ECC를 생성할 수 없기 때문에, 그 경우에는 ECC 유효 정보 ECC-VAL을 무효(「0」)로 설정하며, 그 이외일 때는 유효(「1」)로 설정한다.
도 8의 (B)에 도시하는 바와 같이, 라이트 버퍼(26)의 어드레스는 짝 수(EVEN) 어드레스와 홀수(ODD) 어드레스로 나눠져 있고, 각각 8 바이트의 데이터와, 1 바이트의 nt-ECC와, 저장 바이트 마크(STBM)와, 저장 어드레스(ADRS)와, LID와, ECC 유효 정보 ECC-VAL가 기억된다.
도 2로 되돌아가서, 기억 처리 장치(24)는 명령 처리 장치(22)로부터 저장 허가를 수취하면, 저장 버퍼(25)의 데이터를 라이트 버퍼(26)에 기록한다. 그리고 라이트 버퍼(26)의 ECC 유효 정보가 유효(「1」)이고, LID가 「1」일 때, 대응하는 저장 데이터를 라이트 버퍼(26)로부터 판독하며, 판독한 저장 데이터에 기초하여 저장 대상 영역의 데이터의 에러 정정 코드 t-ECC(제2 에러 정정 코드에 대응한다)를 생성한다. 그리고 생성한 t-ECC와 라이트 버퍼(26)에 저장되어 있는 nt-ECC를 병합하여 병합 결과를 ECC RAM(28)에 기록한다.
다음에, 실시형태의 에러 정정 코드 생성 방법에 대해서 보다 상세히 설명한다. 이하의 설명에서는 기억 처리 장치(24)가 에러 정정 코드를 생성하여 ECC RAM(28)에 기록하기까지의 동작을, IU-REQ(Instruction Unit Request)와, WB-GO(Write Buffer-GO)와, ST1-REQ(Store 1-Request)와, ST2-REQ(Store 2-Request)의 4개로 나눠 설명한다.
처음에, IU-REQ시의 기억 처리 장치(24)의 동작을 도 4의 동작 흐름도를 참조하여 설명한다.
IU-REQ시의 처리 동작이란, 기억 처리 장치(24)가 명령 처리 장치(22)로부터 저장 명령을 수취하고, nt-ECC, LID, ECC 유효 정보 등을 생성하여 저장 버퍼(25)에 저장할 때의 동작이다.
기억 처리 장치(24)는, 명령 처리 장치(22)로부터 저장 명령을 수취하면, 저장 대상 데이터가 데이터 RAM(27)에 존재하는지의 여부, 즉 캐시 히트하였는지를 판정한다(도 4, S 11).
캐시 히트한 경우에는(S11, YES), 저장 명령의 저장 정보로부터 저장 바이트 마크(STBM)를 작성하고, 캐시 히트하였는지의 여부를 나타내는 LID에 「1」을 설정하며(S12), 이들 데이터를 저장 버퍼(25)에 저장한다(S13).
캐시 히트하지 않은 경우에는(S11, NO), 단계 S14로 진행하고, LID에 「0」을 설정한 후, 상기한 단계 13로 진행하며, LID를 =0을 저장 버퍼(25)에 저장한다. 이 경우, 캐시 미스이기 때문에 CPU에 저장 명령으로 지정된 데이터를 메인 메모리로부터 판독하도록 지시한다.
다음에, 저장 명령의 저장 데이터가 저장·저장·인터록(SSI)의 대상인지 여부를 판정한다(S15).
상기한 단계 S15의 처리에서는 선행하는 저장 명령의 저장 어드레스와 현재의 저장 명령의 저장 어드레스를 비교하여 저장 어드레스가 동일한지의 여부를 판정한다. 저장 어드레스가 동일한 경우, 즉 복수의 저장 버퍼(25)와 라이트 버퍼(26)에 동일한 저장 어드레스가 존재하는 경우에는, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭(실시형태에서는 8 바이트의 데이터 폭)과 일치하는지의 여부를 판정한다. 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부는, 예컨대 저장 바이트 마크(STBM)의 값에 의한다. 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 그 저장 명령을 저장·저장·인터록 의 대상이라고 판단한다. 이 이외의 경우는 저장·저장·인터록의 대상이 아니라고 판단한다.
저장 명령이 저장·저장·인터록의 대상이라고 판정되었을 때에는(S15, YES), 단계 S16으로 진행하고, ECC 유효 정보 ECC-VAL에 「0」을 설정하여 ECC 유효 정보를 무효로 한 후, 다음 단계 S17에서, 설정한 ECC 유효 정보 ECC-VAL를 저장 버퍼(25)에 저장한다.
저장 데이터가 저장·저장·인터록의 대상이 아니라고 판정되었을 때에는(S15, NO), 단계 S18로 진행하고, ECC 유효 정보 ECC-VAL에 「1」을 설정한다. 그 후, 상기한 단계 S17로 진행하고, 설정한 ECC 유효 정보 ECC-VAL을 저장 버퍼(25)에 저장한다.
단계 S11에서 캐시 히트라고 판정된 경우에는, 단계 S19에서, 캐시의 검색시에 판독한 저장 대상 외의 데이터로부터 에러 정정 코드 nt-ECC를 생성한다. 그리고, 생성한 nt-ECC를 저장 버퍼(25)에 저장한다(S20).
상기한 바와 같이 하여 nt-ECC와, LID와, ECC 유효 정보 ECC-VAL를 저장 데이터에 대응시켜 저장 버퍼(25)에 저장하여 저장 버퍼(25)의 상태를 확정시킨다(S21).
여기서, 전술한 IU-REQ시의 동작을 도 5의 동작 설명도와, 도 6의 타임차트를 참조하여 설명한다.
기억 처리 장치(24)는, 명령 처리 장치(22)로부터의 저장 명령을 수취하면, 저장 대상 데이터가 데이터 RAM(27)에 존재하는지의 여부를 판정한다. 저장 대상 데이터가 데이터 RAM(27)에 존재하는 경우, 즉 캐시 히트한 경우에는, 또한 선행하는 저장 명령의 저장 어드레스와 현재의 저장 명령의 저장 어드레스가 일치하는지의 여부, 저장 데이터의 데이터 폭이 소정의 데이터 폭(예컨대, 8 바이트)과 일치하는지의 여부를 판정한다(도 6의 (1)).
다른 저장 버퍼(25)와 라이트 버퍼(26)에 동일한 저장 어드레스가 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는(예컨대 8 바이트의 풀 스토어가 아닐 때), 그 저장 명령은 저장·저장·인터록(SSI)의 대상이라고 판정한다(도 6의 (2)의 SSI의 검출).
캐시 히트하고, 저장·저장·인터록의 대상이 아닌 경우에는, 캐시의 검색시에 데이터 RAM(27)의 저장 어드레스로부터 판독한 저장 대상 영역 외의 데이터(저장 바이트 마크로 지정되는 데이터 이외의 데이터)에 기초하여 에러 정정 코드 nt-ECC를 생성하고, ECC 유효 정보 ECC-VAL에 「1」을 설정하며, LID에 「1」을 설정한다. 그리고, 저장 바이트 마크(STBM)와, nt-ECC와, LID와, ECC 유효 정보를 저장 데이터와 대응시켜 저장 버퍼(25)에 저장한다(도 6의 (3)).
캐시 미스한 경우, 또는 저장 명령이 저장·저장·인터록의 대상인 경우에는, LID를 「0」으로, 또는 ECC 유효 정보를 「0」으로 설정하고, 이들 데이터를 저장 버퍼(25)에 저장한다(도 6의 (3)).
도 7은 ECC 유효 정보 ECC-VAL의 설정 회로의 블록도이다.
어드레스 매치 회로(31)는 IU-REQ 또는 ST1-REQ시의 저장 어드레스와 선행하는 저장 명령의 저장 어드레스가 일치하는지의 여부를 판정한다. 이 어드레스 매치 회로(31)는 IU-REQ 또는 ST1-REQ시의 저장 어드레스가 선행하는 저장 명령의 저장 어드레스와 일치할 때 「1」을, 불일치일 때 「0」을 출력한다.
인버터(32)는 IU-REQ 또는 ST1-REQ시의 저장 데이터 폭이 8 바이트인지의 여부를 나타내는 신호의 반전 신호를 출력한다. 따라서 인버터(32)로부터는, IU-REQ 또는 ST1-REQ시의 저장 데이터 폭이 8 바이트일 때 「0」이, 저장 데이터의 데이터 폭이 8 바이트 미만일 때 「1」이 출력된다.
낸드 게이트(33)는 어드레스 매치 회로(31)의 저장 어드레스의 비교 결과와, 인버터(32)의 저장 데이터의 데이터 폭이 8 바이트인지 여부를 나타내는 신호에 기초하여, 저장·저장·인터록의 대상인지의 여부를 나타내는 신호(이하, 이 신호를 SSI 검출 신호라고 함)를 출력한다.
즉, IU-REQ 또는 ST1-REQ시의 저장 어드레스와 선행하는 저장 명령의 저장 어드레스가 일치하고, IU-REQ 또는 ST1-REQ시의 저장 데이터의 데이터 폭이 8 바이트 미만일 때에는, SSI 검출 신호를 「0」으로 하여 저장·저장·인터록의 대상인 것을 나타낸다. 또한 IU-REQ 또는 ST1-REQ시의 저장 어드레스와 선행하는 저장 명령의 저장 어드레스가 불일치, 또는 IU-REQ 또는 ST1-REQ시의 저장 데이터 폭이 8 바이트일 때에는, SSI 검출 신호를 「1」로 한다.
앤드 게이트(34)는 SSI 검출 신호가 「0」일 때, 즉 저장 데이터가 저장·저장·인터록의 대상일 때에는 ECC 유효 정보 ECC-VAL을 「0」으로 한다. 또한 SSI 검출 신호가 「1」일 때, 즉 스토어·스토어·인터록의 대상이 아닐 때에는 ECC 유효 정보 ECC-VAL을 「1」로 하여 올바른 nt-ECC가 설정되어 있는 것을 나타낸다.
다음에, WB-GO시의 기억 처리 장치(24)의 동작을 도 8의 동작 설명도를 참조하여 설명한다. WB-GO란, 저장 버퍼(25)의 데이터를 라이트 버퍼(26)에 기록할 때의 동작이다.
기억 처리 장치(24)는, 명령 처리 장치(22)로부터 저장 허가를 수취하면, 대상이 되는 저장 버퍼(25)의 처리의 우선 순위가 가장 높은지, 비어 있는 라이트 버퍼(26)가 존재하는지의 여부를 판단하고, 우선 순차가 가장 높으며, 비어 있는 라이트 버퍼(26)가 존재하는 경우에는, 저장 버퍼(25)의 대상이 되는 데이터와, nt-ECC와, 저장 바이트 마크(STBM)와, 저장 어드레스(ADRS)와, LID와, ECC 유효 정보를 라이트 버퍼(26)에 기록한다.
다음에, ST1-REQ시의 동작을 도 9의 동작 흐름도를 참조하여 설명한다. ST1-REQ는 LID가 「0」에서 캐시 미스한 경우, 또는 ECC 유효 정보 ECC-VAL이「0」에서 nt-ECC가 확정되지 않는 경우의 처리 동작이다.
라이트 버퍼(26)의 지정된 저장 어드레스의 데이터를 판독하고 라이트 버퍼(26)의 상태를 확인한다(도 9, S31).
다음에, 라이트 버퍼(26)로부터 판독한 LID가 「0」인지 여부, ECC 유효 정보 ECC-VAL이「0」인지 여부를 판별한다(S32).
LID가 「0」에서 캐시 미스일 때, 또는 ECC 유효 정보 ECC-VAL이「0」일 때에는(S32, YES), 단계 S33으로 진행하고, ST1-REQ를 기동한다.
ST1-REQ가 기동되면, 단계 S34에서, 캐시 히트하였는지 여부를 판정한다. 캐시 히트한 경우에는(S34, YES), 단계 S35로 진행하고, LID에 「1」을 설정한다. 다 음에, 「1」을 설정한 LID를 라이트 버퍼(26)에 저장한다(S36). 단계 S34에서 캐시 미스라고 판정된 경우에는(S34, NO), 단계 S37로 진행하고, LID에 「0」을 설정하며, 상기한 단계 S36으로 진행하고, LID=0을 라이트 버퍼(26)에 저장한다. 이 경우, 캐시 미스이기 때문에 데이터를 메인 메모리로부터 판독하도록 명령 처리 장치(22)에 통지한다.
다음에, 저장 명령이 스토어·스토어·인터록(SSI)의 대상인지 여부를 판정한다(S38). 이 스토어·스토어·인터록의 대상인지 여부의 판정은, 동일한 저장 어드레스가 복수의 라이트 버퍼(26)에 존재하는지의 여부, 후속의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만인지의 여부에 의해 행한다.
저장 명령이 스토어·스토어·인터록의 대상인 경우에는(S38, YES), 단계 S39로 진행하고, ECC 유효 정보 ECC-VAL에「0」을 설정한다. 그리고 설정한 ECC 유효 정보 ECC-VAL을 해당하는 라이트 버퍼(26)에 저장한다(S39).
단계 S38에서 저장 명령이 스토어·스토어·인터록의 대상이 아니라고 판정된 경우에는(S38, NO) 단계 S41로 진행하고, ECC 유효 정보 ECC-VAL에 「1」을 설정한다.
또한, 동일한 저장 어드레스에 대하여 데이터를 기록하는 선행하는 저장 명령이 존재하고, 후속의 저장 명령이 스토어·스토어·인터록의 대상으로 되어 있는 경우라도, 선행하는 저장 명령이 완료되면, 후속의 저장 명령은 스토어·스토어·인터록의 대상이 아니기 때문에, 상기한 단계 S41에서, ECC 유효 정보 ECC-VAL이 「1」로 변경된다. ECC 유효 정보 ECC-VAL이 변경된 경우에는 후술하는 단계 S43 및 S44에서, 갱신 후의 데이터 RAM(27)의 데이터의 저장 대상 영역 외의 데이터에 기초하여 새로운 nt-ECC가 생성되고, 생성된 nt-ECC가 라이트 버퍼(26)에 저장된다.
전술한 LID 및 ECC 유효 정보 ECC-VAL의 설정 등에 의해 라이트 버퍼(26)의 상태가 확정된다(S42).
단계 S34에서 캐시 히트라고 판정된 경우에는, 단계 S43에서, 캐시의 검색시에 데이터 RAM(27)의 저장 어드레스로부터 판독된 저장 대상 외의 데이터의 nt-ECC를 생성한다. 그리고 생성한 nt-ECC를 라이트 버퍼(26)에 저장한다(S44).
여기서, ST1-REQ시의 기억 처리 장치(24)의 동작을, 도 10의 동작 설명도와 도 11의 타임차트를 참조하여 설명한다.
기억 처리 장치(24)는, 도 10에 도시하는 바와 같이, 라이트 버퍼(26)의 저장 어드레스의 LID와 ECC 유효 정보 ECC-VAL을 판독하고, LID=0, 또는 ECC-VAL=0이라고 판정한 경우에는 ST1-REQ의 동작을 행한다.
캐시 히트되어 있을 때에는, 현재의 저장 명령의 저장 어드레스와 동일한 저장 어드레스가 다른 라이트 버퍼(26)에 존재하는지 여부를 판정한다(도 11의 (1)).
동일한 저장 어드레스가 다른 라이트 버퍼(26)에 존재하는 경우에는, 또한 저장 데이터의 데이터 폭이 소정의 데이터 폭인지의 여부를 판정한다. 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만이면, 스토어·스토어·인터록의 대상이라고 판단한다(도 11의 (2)).
저장 명령이 스토어·스토어·인터록의 대상이라고 판단한 경우에는, 라이트 버퍼(26)의 해당하는 저장 어드레스에 ECC 유효 정보 ECC-VAL로서 「0」을 기록하고, 데이터 RAM(27)의 해당하는 저장 어드레스의 저장 대상 영역 외의 데이터로부터 생성된 nt-ECC를 라이트 버퍼(26)의 해당하는 저장 어드레스에 기록한다(도 11의 (3)).
다음에, ST2-REQ시의 기억 처리 장치(24)의 동작을 도 12의 동작 흐름도를 참조하여 설명한다.
처음에, 라이트 버퍼(26)가 LID=1이고, ECC-VAL=1인지의 여부를 판별한다(도 12, S51).
LID=1이고, ECC-VAL=1일 때(S51, YES), 즉 데이터 RAM(캐시 메모리)(27)에 저장 대상의 데이터가 존재하고, 저장 명령이 스토어·스토어·인터록의 대상이 아닌 경우에는, 단계 S52로 진행하며, ST2-REQ가 기동된다.
ST2-REQ가 기동되면, 단계 S53에서, 라이트 버퍼(26)의 저장 데이터를 데이터 RAM(27)에 저장한다. 다음에 라이트 버퍼(26)의 저장 데이터에 기초하여 t-ECC를 생성한다(S54).
다음에, 생성한 t-ECC와, 라이트 버퍼(26)의 해당하는 저장 어드레스에 저장되어 있는 nt-ECC를 병합한다(S55).
마지막으로, 병합하여 얻어지는 에러 정정 코드 ECC를 ECC RAM(28)에 저장한다(S56).
여기서, ST2-REQ시의 동작을 도 13의 동작 설명도와 도 14의 타임차트 및 도 15의 ECC 생성 회로의 블록도를 참조하여 설명한다.
기억 처리 장치(24)는, 도 13에 도시하는 바와 같이, 라이트 버퍼(26)의 지정된 저장 어드레스의 LID와 ECC 유효 정보 ECC-VAL을 판독하고, LID=1이고, ECC-VAL=1인지의 여부를 판정하며, 양자를 「1」이라고 판정한 경우에는 ST2-REQ의 동작을 행한다.
우선, 라이트 버퍼(26)의 해당하는 저장 어드레스의 데이터에 기초하여 저장 데이터의 t-ECC를 생성한다(도 14의 (1)).
다음에, 라이트 버퍼(26)의 해당하는 저장 어드레스로부터 저장 대상 영역 외의 데이터의 에러 정정 코드 nt-ECC를 판독하고, 그 nt-ECC와, 라이트 버퍼(26)의 저장 데이터로부터 생성한 저장 대상 영역의 데이터의 에러 정정 코드 t-ECC를 병합한다(도 14의 (2)). 이 때, 동시에 라이트 버퍼(26)의 저장 데이터를 데이터 RAM(27)에 기록한다.
다음에, t-ECC와 nt-ECC를 병합한 데이터를 ECC RAM(28)에 저장한다(도 14의 (3)).
도 15는 ECC 생성 회로의 블록도이다. 도 15에서, 라이트 버퍼(26)의 8 바이트의 데이터와, 각 바이트의 스토어 바이트 마크(STBM)의 값과의 논리곱을 구하고, 저장 대상 영역 외의 바이트 데이터를 「0」으로 한다. 그리고 SEC-DED(Single bit Error Correcting-Double bit Error Detecting) 방식에 의해, 저장 영역의 데이터의 에러 정정 코드 t-ECC를 생성하여 배타적 논리합 회로 EX-OR(41)에 출력한다. EX-OR(41)의 다른쪽 입력 단자에는 라이트 버퍼(26)에 저장되어 있는 nt-ECC(SEC-DED 방식으로 생성되어 있음)가 입력되고, EX-OR(41)은 이들 데이터의 배타적 논리 합을 취하며, 그 결과를 저장 후의 데이터의 ECC로서 ECC RAM(28)에 출력한다.
상기한 ECC 생성 회로에 의해, 라이트 버퍼(26)에 저장되어 있는 저장 데이터의 에러 정정 코드 t-ECC와, 데이터 RAM(27)의 검색시에 판독한 해당하는 저장 어드레스의 저장 대상 영역 외의 데이터로부터 생성한 에러 정정 코드 nt-ECC가 병합되고, 병합 결과의 에러 정정 코드 ECC가 ECC RAM(28)에 기록된다.
전술한 실시형태는, 캐시 메모리의 검색시에 데이터 RAM(캐시 메모리)(27)로부터 판독된 저장 어드레스의 저장 대상 영역 외의 데이터에 기초하여 에러 정정 코드 nt-ECC를 생성하고, 생성한 nt-ECC를 저장 데이터와 대응시켜 저장 버퍼(25)에 저장한다. 또한 저장 버퍼(25)의 저장 데이터와 nt-ECC를 라이트 버퍼(26)에 기록하고, 라이트 버퍼(26)의 저장 데이터의 저장 대상 영역의 데이터에 기초하여 에러 정정 코드 t-ECC를 생성한다. 그리고 nt-ECC와 t-ECC를 병합하여 병합 결과를 저장 데이터의 에러 정정 코드로서 ECC RAM(28)에 기록하고 있다.
상기한 바와 같이 구성함으로써, 데이터 RAM(캐시 메모리)(27)에 저장 데이터를 기록한 후에 에러 체크를 행하여 에러가 검출된 경우라도, 캐시 메모리의 검색시에 데이터 RAM(27)로부터 판독된 저장 대상 영역 외의 데이터로부터 생성된 nt-ECC와, 데이터 RAM(27)에 기록하는 저장 데이터로부터 생성된 t-ECC를 병합하여 얻어지는 에러 정정 코드를 이용하여 에러를 정정함으로써 데이터의 1비트의 에러를 정확히 정정할 수 있다.
또한, 선행하는 저장 명령의 저장 어드레스가 현재의 저장 명령의 저장 어드레스와 동일하고, 현재의 저장 명령의 데이터 폭이 소정의 데이터 폭(예컨대, 8 비 트) 미만일 때에는, ECC 유효 정보 ECC-VAL을 무효(예컨대, 「0」)로 설정하고, 그 ECC 유효 정보 ECC-VAL을 nt-ECC와 저장 데이터와 대응시켜 저장 버퍼(25)에 저장한다. 저장 어드레스가 불일치 또는 데이터 폭이 소정의 데이터 폭과 일치하는 경우에는, ECC 유효 정보 ECC-VAL을 유효(예컨대, 「1」)로 설정하고 저장 데이터와 nt-ECC와 대응시켜 저장 버퍼(25)에 저장한다.
상기한 바와 같이 구성함으로써, 예컨대 동일한 저장 어드레스를 갖는 선행의 저장 명령이 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만으로, 현재의 저장 명령의 실행이 대기되는 경우라도, 선행하는 저장 명령이 완료된 시점에서, 현재의 저장 명령에 대응하는 ECC 유효 정보 ECC-VAL을 무효(「0」)로부터 유효(「1」)로 재기록함으로써, 스토어·스토어·인터록 제어에 의한 대기 상태로부터 해방할 수 있다. 이에 따라 스토어·스토어·인터록 제어를 행했을 때에는 저장 명령의 실행에 불필요한 대기 시간이 발생하는 것을 방지할 수 있다.
본 발명에 의하면, 캐시 메모리에 데이터를 기록한 후에 에러가 검출된 경우라도, 데이터를 기록하기 전의 저장 대상 영역 외의 데이터로부터 생성된 제1 에러 정정 코드와, 저장 데이터의 저장 대상 영역의 데이터로부터 생성된 제2 에러 정정 코드로부터 생성된 에러 정정 코드를 이용하여 데이터의 에러를 정확히 정정할 수 있다.
본 발명은 전술한 실시형태에 한하지 않고, 예컨대 이하와 같이 구성하여도 좋다.
(1) 본 발명은, 캐시 메모리를 갖는 CPU 등 및 그 CPU가 실장된 정보 처리 장치에 적용할 수 있다. 또한 SEC-DED 방식의 에러 정정 코드에 한하지 않고, 다른 방식의 에러 정정 코드에도 적용할 수 있다. 실시형태는 복수의 저장 버퍼(25)와 복수의 라이트 버퍼(26)의 2 종류의 버퍼를 이용하는 경우에 대해서 설명하였지만, 저장 버퍼(25)만, 또는 라이트 버퍼(26)만을 이용하는 경우에도 본 발명은 적용할 수 있다.
(2) 실시형태에서는, 기억 처리 장치(24)의 동작을 IU-REQ, WB-GO, ST1-REQ, ST2-REQ의 4개의 동작으로 나눠 설명하였지만, 이 4종 동작에 한정되는 것이 아니다.
(3) 또한, 실시형태에서는, 데이터 RAM(27)의 저장 대상 영역 이외의 데이터로부터 생성된 에러 정정 코드 nt-ECC를 저장 버퍼(25) 및 라이트 버퍼(26)에 저장하도록 하였지만, 저장 버퍼(25) 또는 라이트 버퍼(26) 이외의 다른 레지스터에 저장하여도 좋다.

Claims (15)

  1. 저장 명령의 저장 데이터를 버퍼에 저장하고,
    캐시 메모리를 검색하여 상기 저장 명령의 저장 대상의 데이터가 상기 캐시 메모리에 존재하는지의 여부를 판정하며,
    상기 캐시 메모리에 상기 저장 대상의 데이터가 존재한다고 판정된 경우에, 상기 캐시 메모리의 검색시에 상기 캐시 메모리로부터 판독된 저장 대상 영역 외의 데이터에 기초하여 제1 에러 정정 코드를 생성하여, 생성한 상기 제1 에러 정정 코드를 유지하며,
    상기 버퍼의 상기 저장 데이터의 저장 대상 영역의 데이터에 기초하여 제2 에러 정정 코드를 생성하고,
    상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여(merge) 상기 저장 데이터의 에러 정정 코드를 생성하는
    에러 정정 코드 생성 방법.
  2. 제1항에 있어서, 선행하는 저장 명령의 저장 어드레스가 현재의 저장 명령의 저장 어드레스와 일치하는지의 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하고, 동일한 저장 어드레스를 갖는 선행하는 저장 명령이 존재하며, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 제1 에러 정정 코드가 적정한지의 여부 를 나타내는 ECC 유효 정보를 무효로 설정하고, 상기 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드에 대응시켜 기억하는 에러 정정 코드 생성 방법.
  3. 제2항에 있어서, 상기 버퍼는 복수의 버퍼로 이루어지고, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하는지 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지 여부를 판정하며, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 ECC 유효 정보를 무효로 설정하며, 상기 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드에 대응시켜 해당하는 버퍼의 상기 저장 어드레스에 저장하는 에러 정정 코드 생성 방법.
  4. 제2항에 있어서, 상기 ECC 유효 정보가 유효인지, 무효인지를 판정하고, 상기 ECC 유효 정보가 유효하게 설정되어 있을 때에는, 상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 저장 데이터의 에러 정정 코드를 생성하는 에러 정정 코드 생성 방법.
  5. 제2항에 있어서, 상기 버퍼의 상기 ECC 유효 정보가 무효로 설정된 상태에서, 선행하는 저장 명령이 완료되었을 때에는, 상기 버퍼의 해당하는 저장 어드레스의 상기 ECC 유효 정보를 유효하게 재기록하는 에러 정정 코드 생성 방법.
  6. 저장 명령에 의해 지정되는 저장 데이터를 저장하는 버퍼와,
    캐시 메모리를 검색하여 상기 저장 명령의 저장 대상의 데이터가 상기 캐시 메모리에 존재하는지의 여부를 판정하는 판정 회로와,
    상기 판정 회로에 의해 상기 캐시 메모리에 상기 저장 대상이 되는 데이터가 존재한다고 판정된 경우에는, 상기 캐시 메모리의 검색시에 상기 캐시 메모리로부터 판독된 저장 대상 영역 외의 데이터에 기초하여 제1 에러 정정 코드를 생성하여 상기 버퍼에 저장하는 제1 에러 정정 코드 생성 회로와,
    상기 버퍼의 상기 저장 데이터의 저장 대상 영역의 데이터에 기초하여 제2 에러 정정 코드를 생성하는 제2 에러 정정 코드 생성 회로와,
    상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성하는 병합 회로
    를 포함하는 메모리 관리 장치.
  7. 제6항에 있어서, 상기 제1 에러 정정 코드 생성 회로는, 선행하는 저장 명령의 저장 어드레스가 현재의 저장 명령의 저장 어드레스와 일치하는지 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하고, 동일한 저장 어드레스를 갖는 선행하는 저장 명령이 존재하며, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 제1 에러 정정 코드가 적정한지의 여부를 나타내는 ECC 유효 정보를 무효로 설정하 고, 상기 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 기억시키는 메모리 관리 장치.
  8. 제7항에 있어서, 상기 버퍼는 복수의 버퍼로 이루어지고,
    상기 제1 에러 정정 코드 생성 회로는, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하는지 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하며, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 ECC 유효 정보를 무효로 설정하며, 이 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 해당하는 버퍼의 상기 저장 어드레스에 저장하는 것인 메모리 관리 장치.
  9. 제7항에 있어서, 상기 병합 회로는, 상기 ECC 유효 정보가 유효인지, 무효인지를 판정하고, 상기 ECC 유효 정보가 유효하게 설정되어 있을 때에는, 상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성하는 것인 메모리 관리 장치.
  10. 제7항에 있어서, 상기 ECC 유효 정보가 무효로 설정된 상태에서, 선행하는 저장 명령이 완료되었을 때, 상기 버퍼의 해당하는 저장 어드레스의 상기 ECC 유효 정보를 유효하게 재기록하는 메모리 관리 장치.
  11. 저장 명령의 저장 데이터를 버퍼에 저장하는 단계와,
    캐시 메모리를 검색하여 상기 저장 명령의 저장 대상의 데이터가 상기 캐시 메모리에 존재하는지의 여부를 판정하고,
    상기 캐시 메모리에 상기 저장 대상의 데이터가 존재한다고 판정된 경우에, 상기 캐시 메모리의 검색시에 상기 캐시 메모리로부터 판독한 저장 대상 영역 외의 데이터에 기초하여 제1 에러 정정 코드를 생성하며, 생성된 상기 제1 에러 정정 코드를 유지하는 단계와,
    상기 버퍼의 상기 저장 데이터의 저장 대상 영역의 데이터에 기초하여 제2 에러 정정 코드를 생성하는 단계와,
    상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성하는 단계
    로 이루어지는 컴퓨터가 실행할 수 있는 에러 정정 코드 생성 프로그램.
  12. 제11항에 있어서, 선행하는 저장 명령의 저장 어드레스가 현재의 저장 명령의 저장 어드레스와 일치하는지의 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지의 여부를 판정하는 단계와,
    동일한 저장 어드레스를 갖는 선행하는 저장 명령이 존재하고, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 제1 에러 정정 코드가 적정한지 여부를 나타내는 ECC 유효 정보를 무효로 설정하며, 상기 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 기억하는 단계
    를 포함하는 에러 정정 코드 생성 프로그램.
  13. 제12항에 있어서, 상기 ECC 유효 정보를 저장하는 단계는, 복수의 상기 버퍼에 동일한 저장 어드레스가 존재하는지의 여부, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭과 일치하는지 여부를 판정하고, 상기 복수의 버퍼에 동일한 저장 어드레스가 존재하며, 현재의 저장 명령의 저장 데이터의 데이터 폭이 소정의 데이터 폭 미만일 때에는, 상기 ECC 유효 정보를 무효로 설정하고, 상기 ECC 유효 정보를 상기 저장 데이터와 상기 제1 에러 정정 코드와 대응시켜 해당하는 버퍼의 상기 저장 어드레스에 저장하는 것인 에러 정정 코드 생성 프로그램.
  14. 제12항에 있어서, 상기 에러 정정 코드를 생성하는 단계는, 상기 버퍼의 상기 ECC 유효 정보가 유효인지, 무효인지를 판정하고, 상기 ECC 유효 정보가 유효하게 설정되어 있을 때에는, 상기 제1 에러 정정 코드와 상기 제2 에러 정정 코드를 병합하여 상기 저장 데이터의 에러 정정 코드를 생성하는 것인 에러 정정 코드 생성 프로그램.
  15. 제12항에 있어서, 상기 ECC 유효 정보를 저장하는 단계는, 상기 버퍼의 상기 ECC 유효 정보가 무효로 설정된 상태에서, 선행하는 저장 명령이 완료되었을 때에 는, 상기 버퍼의 해당하는 저장 어드레스의 상기 ECC 유효 정보를 유효하게 재기록하는 것인 에러 정정 코드 생성 프로그램.
KR1020087018940A 2006-01-31 2006-01-31 에러 정정 코드 생성 방법 및 메모리 관리 장치 KR100972807B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/301590 WO2007088597A1 (ja) 2006-01-31 2006-01-31 エラー訂正コード生成方法及びメモリ管理装置

Publications (2)

Publication Number Publication Date
KR20080089619A true KR20080089619A (ko) 2008-10-07
KR100972807B1 KR100972807B1 (ko) 2010-07-29

Family

ID=38327185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087018940A KR100972807B1 (ko) 2006-01-31 2006-01-31 에러 정정 코드 생성 방법 및 메모리 관리 장치

Country Status (6)

Country Link
US (1) US8245110B2 (ko)
EP (1) EP1980946B1 (ko)
JP (1) JP4339914B2 (ko)
KR (1) KR100972807B1 (ko)
CN (1) CN101336418B (ko)
WO (1) WO2007088597A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170121695A (ko) * 2016-04-25 2017-11-02 아즈빌주식회사 레지스터 이상 검출 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007133986A (ja) * 2005-11-11 2007-05-31 Nec Electronics Corp 半導体記憶装置
EP2169555A4 (en) * 2007-06-20 2011-01-05 Fujitsu Ltd CACHE CONTROL, CACHE CONTROL PROCEDURE AND CACHE CONTROL PROGRAM
JP5163298B2 (ja) 2008-06-04 2013-03-13 富士通株式会社 情報処理装置、データ伝送装置及びデータ伝送方法
JP2010204828A (ja) * 2009-03-02 2010-09-16 Renesas Electronics Corp データ保護回路及び方法、並びにデータ処理装置
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
JP6140093B2 (ja) * 2014-03-18 2017-05-31 株式会社東芝 キャッシュメモリ、誤り訂正回路およびプロセッサシステム
US10769013B1 (en) * 2018-06-11 2020-09-08 Cadence Design Systems, Inc. Caching error checking data for memory having inline storage configurations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5298434A (en) 1976-02-14 1977-08-18 Hitachi Ltd Correction for memory error
US4298929A (en) 1979-01-26 1981-11-03 International Business Machines Corporation Integrated multilevel storage hierarchy for a data processing system with improved channel to memory write capability
DD159377A1 (de) 1981-05-28 1983-03-02 Reiner Hesse Anordnung zur positionierung
JPS603046A (ja) 1983-06-17 1985-01-09 Hitachi Ltd 記憶制御方式
JPH0756640B2 (ja) * 1985-03-01 1995-06-14 株式会社日立製作所 記憶装置
US4768197A (en) * 1986-09-15 1988-08-30 Amdahl Corporation Cache error code update
JPS63231553A (ja) 1987-03-19 1988-09-27 Nec Corp 部分書込み方式
JPH01134548A (ja) 1987-11-19 1989-05-26 Fujitsu Ltd 記憶装置
JPH0460734A (ja) 1990-06-29 1992-02-26 Hitachi Ltd 記憶装置
US5664148A (en) * 1995-08-17 1997-09-02 Institute For The Development Of Emerging Architectures L.L.C. Cache arrangement including coalescing buffer queue for non-cacheable data
JPH10232789A (ja) 1997-02-19 1998-09-02 Hitachi Ltd Eccパーシャルライト制御ユニット
US6725343B2 (en) * 2000-10-05 2004-04-20 Hewlett-Packard Development Company, L.P. System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system
JP4234361B2 (ja) * 2002-06-28 2009-03-04 富士通株式会社 記憶制御装置およびデータ格納方法
US7203890B1 (en) * 2004-06-16 2007-04-10 Azul Systems, Inc. Address error detection by merging a polynomial-based CRC code of address bits with two nibbles of data or data ECC bits
US7392456B2 (en) * 2004-11-23 2008-06-24 Mosys, Inc. Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory
US7617437B2 (en) * 2006-02-21 2009-11-10 Freescale Semiconductor, Inc. Error correction device and method thereof
US7930615B2 (en) * 2007-05-31 2011-04-19 Agere Systems Inc. Memory device with error correction capability and preemptive partial word write operation
US7836262B2 (en) * 2007-06-05 2010-11-16 Apple Inc. Converting victim writeback to a fill

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170121695A (ko) * 2016-04-25 2017-11-02 아즈빌주식회사 레지스터 이상 검출 장치

Also Published As

Publication number Publication date
US8245110B2 (en) 2012-08-14
US20090031188A1 (en) 2009-01-29
EP1980946B1 (en) 2013-05-29
JPWO2007088597A1 (ja) 2009-06-25
EP1980946A1 (en) 2008-10-15
CN101336418B (zh) 2011-02-09
CN101336418A (zh) 2008-12-31
JP4339914B2 (ja) 2009-10-07
WO2007088597A1 (ja) 2007-08-09
EP1980946A4 (en) 2009-07-29
KR100972807B1 (ko) 2010-07-29

Similar Documents

Publication Publication Date Title
KR100972807B1 (ko) 에러 정정 코드 생성 방법 및 메모리 관리 장치
US9128822B2 (en) On-chip bad block management for NAND flash memory
US7810016B2 (en) Semiconductor storage device equipped with ECC function
US8065555B2 (en) System and method for error correction in cache units
US9760434B2 (en) ECC method for double pattern flash memory
US20100250857A1 (en) Cache controlling apparatus, information processing apparatus and computer-readable recording medium on or in which cache controlling program is recorded
JPS60179851A (ja) デ−タ処理装置
US20090164870A1 (en) Apparatus and method for error correction of data values in a storage device
JPS6324428A (ja) キヤツシユメモリ
US6226763B1 (en) Method and apparatus for performing cache accesses
JPS6310460B2 (ko)
US10496546B2 (en) Cache memory and processor system
JP3997404B2 (ja) キャッシュメモリ及びその制御方法
JPH05165719A (ja) メモリアクセス処理装置
JP6337570B2 (ja) 演算処理装置及び演算処理装置の制御方法
JPS6246358A (ja) エラ−処理方式
JPH01273152A (ja) キャッシュメモリ制御方式
JPS583175A (ja) 仮想記憶制御装置
JPS58222495A (ja) 記憶装置
JPH02132539A (ja) メモリパトロール制御方式
JPS62271030A (ja) メモリアクセス方式
JPH04337853A (ja) キャッシュメモリの動作履歴記録装置
JPS6273351A (ja) バツフア・ストレ−ジ置換方式
JPH0535596A (ja) キヤツシユメモリ
JPH06110783A (ja) キャッシュメモリ装置

Legal Events

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

Payment date: 20130705

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140716

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee