KR20130111171A - 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 - Google Patents
정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 Download PDFInfo
- Publication number
- KR20130111171A KR20130111171A KR1020120113026A KR20120113026A KR20130111171A KR 20130111171 A KR20130111171 A KR 20130111171A KR 1020120113026 A KR1020120113026 A KR 1020120113026A KR 20120113026 A KR20120113026 A KR 20120113026A KR 20130111171 A KR20130111171 A KR 20130111171A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- information
- error
- area
- memory
- Prior art date
Links
Images
Classifications
-
- 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
- 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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 하드웨어 기구에 의해 메모리의 부정 사용을 방지하는 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 제공하는 것을 목적으로 한다.
마크 부가부(131), 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 데이터의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가한다. 마크 소거부(132)는, 상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거한다. 에러 검출부(15)는, 상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 상기 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행한다.
마크 부가부(131), 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 데이터의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가한다. 마크 소거부(132)는, 상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거한다. 에러 검출부(15)는, 상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 상기 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행한다.
Description
본 발명은, 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램에 관한 것이다.
최근 복수의 프로세스를 병행하여 동작시키는 멀티 프로세스를 실행하는 멀티 프로세서 시스템이 제공되고 있다. 멀티 프로세스를 실행하는 멀티 프로세서 시스템에서는, 각 프로세스가 동일한 범위의 메모리를 사용하는 공유 메모리 시스템이 이용되는 경우가 있다.
이러한 공유 메모리를 이용하는 멀티 프로세서 시스템에서는, 각 프로세스의 메모리 부정 사용으로 인해 메모리 내용이 파괴될 우려가 있다. 그래서, 메모리의 부정 사용으로 인한 메모리 파괴를 방지하는 몇 개의 방법이 제안되어 있다. 종래의 메모리 부정 사용을 방지하는 방법은, 소프트웨어에 의한 보호와 하드웨어에 의한 보호로 대별된다.
소프트웨어에 의한 보호는, 메모리를 참조하는 경우에, 포인터뿐만 아니라 열쇠를 세트로 하여 이용하는 것으로 메모리의 부정 사용을 방지하고 있다. 예컨대, malloc 등의 메모리 확보시에, 메모리 영역의 포인터와 함께 열쇠가 되는 정수치가 생성되어, 맞는 열쇠와 세트로 포인터를 이용하지 않으면 메모리에 액세스할 수 없도록 하고 있다. 또한, 하드웨어에 의한 보호는 하드웨어의 MMU(Memory Management Unit)에 메모리 보호의 기능을 추가함으로써 실현된다.
또, 메모리에의 액세스를 제어하는 방법으로서, 메모리상의 액세스할 수 있는 영역을 가상 계산기마다 기준 레지스터와 상한 레지스터를 이용하여 제한하는 종래 기술이 있다. 또한, 최근 메모리의 에러에 대응하기 위해서, 에러를 검출하여 정정하는 ECC(Error Check and Correct) 기능이 붙은 ECC 메모리가 제공되고 있다. 그리고, 이러한 ECC 메모리에 있어서의 종래 기술로서, ECC 메모리에 대하여 ECC 코드를 자유롭게 기록하는 기술이 있다.
그러나, 종래의 소프트웨어에 의한 보호에서는, 메모리 참조시마다 열쇠를 대조하는 처리가 소프트웨어에 의해서 행해지기 때문에, 이 처리에 의한 오버헤드가 커져서, 정보 처리 장치의 처리 속도가 저하되어 버린다.
또한, MMU의 처리는, 예컨대 수 킬로바이트∼수 메가바이트 등과 같은 큰 사이즈의 페이지 단위로 행해진다. 그 때문에, 종래의 하드웨어에 의한 보호에서는, 메모리의 보호도 페이지 단위로 행해져, 소프트웨어가 관리하는 메모리의 단위와 비교하여 입도(粒度)가 거칠기 때문에, 소프트웨어에 알맞은 메모리 보호를 하는 것이 어렵다.
하나의 측면에서는, 본 발명은, 메모리의 부정 사용을 방지하는 하드웨어 기구를 갖는 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 제공하는 것을 목적으로 한다.
본원이 개시하는 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램은, 하나의 양태에 있어서, 정보 부가부는, 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가하며, 소거부는, 상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거한다. 오류 검출부는, 상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행한다.
하나의 양태에 따르면, 하드웨어 기구에 의해 메모리의 부정 사용을 방지할 수 있다.
도 1은, 실시예 1에 따른 정보 처리 장치의 블록도이다.
도 2는, 연산기와 명령 제어부의 세부사항을 나타내는 블록도이다.
도 3은, ECC 생성부(14)의 세부사항을 나타내는 블록도이다.
도 4a는, 히프 영역을 확보한 시점에서의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 4b는, 하나의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 4c는, 복수의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 5는, 실시예 1에 따른 정보 처리 장치에 있어서의 히프 영역 획득시의 처리 흐름도이다.
도 6은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 확보 요구가 있었던 경우의 처리 흐름도이다.
도 7은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 개방 요구가 있었던 경우의 처리 흐름도이다.
도 8은, 마크의 부가 및 소거의 처리 및 이들의 처리에 부수되는 에러를 시계열로 나타낸 도면이다.
도 9는, 실시예 2에 따른 정보 처리 장치의 블록도이다.
도 10은, 실시예 3에 따른 정보 처리 장치의 블록도이다.
도 2는, 연산기와 명령 제어부의 세부사항을 나타내는 블록도이다.
도 3은, ECC 생성부(14)의 세부사항을 나타내는 블록도이다.
도 4a는, 히프 영역을 확보한 시점에서의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 4b는, 하나의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 4c는, 복수의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다.
도 5는, 실시예 1에 따른 정보 처리 장치에 있어서의 히프 영역 획득시의 처리 흐름도이다.
도 6은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 확보 요구가 있었던 경우의 처리 흐름도이다.
도 7은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 개방 요구가 있었던 경우의 처리 흐름도이다.
도 8은, 마크의 부가 및 소거의 처리 및 이들의 처리에 부수되는 에러를 시계열로 나타낸 도면이다.
도 9는, 실시예 2에 따른 정보 처리 장치의 블록도이다.
도 10은, 실시예 3에 따른 정보 처리 장치의 블록도이다.
이하에, 본원이 개시하는 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램의 실시예를 도면에 기초하여 상세히 설명한다. 또, 이하의 실시예에 의해 본원이 개시하는 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램이 한정되지는 않는다.
[실시예 1]
도 1은, 실시예 1에 따른 정보 처리 장치의 블록도이다. 도 1에 도시한 바와 같이, 본 실시예에 따른 정보 처리 장치는, 프로세서 코어(1) 및 메모리(2)를 갖고 있다. 본 실시예에서는, 메모리(2)에 8바이트 단위로 데이터를 저장하는 경우로 설명한다. 또한, ECC의 오류 정정 부합은, 본 실시예에서는 1바이트의 경우로 설명한다.
프로세서 코어(1)는, 연산기(11), 레지스터(12), 명령 제어부(13), ECC 생성부(14) 및 에러 검출부(15)를 갖고 있다.
연산기(11)는, 명령 제어부(13)로부터의 연산 명령을 받아, 연산을 행한다. 그리고, 연산기(11)는, 연산 결과를 레지스터(12)에 저장한다.
도 2는, 명령 제어부의 세부사항을 나타내는 블록도이다. 도 2에 있어서의 프로그램(5)은, 예컨대 복수의 프로세스를 실행하여, 각 프로세스가 공유 메모리를 사용하는 프로그램이다. 프로그램(5)은, 히프 영역 획득부(51), 영역 확보부(52), 영역 개방부(53) 및 데이터 처리부(54)를 갖고 있다. 또한, 명령 제어부(13)는, 마크 부가부(131) 및 마크 소거부(132)를 갖고 있다.
히프 영역 획득부(51)는, 메모리(2)의 메모리 자원의 관리를 행하는 커넬로부터 히프 영역을 획득한다. 히프 영역이란, 메모리(2) 내에서 확보 가능한 메모리 영역으로서 할당된 영역이다. 히프 영역 획득부(51)는, 히프 영역으로 할당한 메모리 영역의 정보를 관리 테이블에 등록한다.
또한, 히프 영역 획득부(51)는, 히프 영역에 대한 마크 부가의 지시를 명령 제어부(13)의 마크 부가부(131)에 통지한다. 히프 영역 획득부(51)는, 히프 영역을 마크를 부가한 데이터로 매립할 때까지 마크 부가의 지시를 반복하여 마크 부가부(131)에 통지한다. 여기서, 마크란, 예컨대 메모리의 사용 불가 또는 메모리의 부정 사용으로부터 보호되어 있는 상태를 나타내는 식별 정보를 말한다. 데이터에 대한 마크의 부가에 대해서는 나중에 상세히 설명한다. 이 마크가, 「오류 검출 정보를 잘못하여 생성한 정보」의 일례에 해당한다.
영역 확보부(52)는, 히프 영역에서의 프로세스가 사용하는 메모리 영역의 확보 요구를 확보하는 사이즈와 함께 프로세스로부터 받는다. 히프 영역에서의 프로세스가 사용하는 메모리 영역의 확보란, 예컨대 C 언어에서의「malloc」등이다. 그리고, 영역 확보부(52)는, 관리 테이블을 참조하여, 히프 영역에서의 미할당 영역 중에서 메모리 영역 확보의 요구를 한 프로세스에 할당하는 메모리 영역을 결정한다. 그리고, 영역 확보부(52)는 히프 영역내의 확보된 메모리 영역의 정보를 관리 테이블에 등록한다. 이 영역 확보부(52)가 히프 영역내에 프로세스가 사용하는 메모리 영역으로서 확보한 메모리 영역이, 「제2 기억 영역」의 일례에 해당한다. 게다가, 영역 확보부(52)가 확보한 영역 이외의 히프 영역내의 영역이, 「제1 기억 영역」의 일례에 해당한다.
또한, 영역 확보부(52)는, 결정한 확보된 메모리 영역에서의 마크 소거의 지시를 명령 제어부(13)의 마크 소거부(132)에 통지한다. 영역 확보부(52)는, 확보된 메모리 영역에서의 데이터에 부가된 마크를 전부 소거할 수 있을 때까지 마크 소거의 지시를 반복하여 마크 소거부(132)에 통지한다. 데이터에 대한 마크의 소거에 관해서는 나중에 상세히 설명한다.
또한, 영역 확보부(52)는, 확보된 메모리 영역의 선두 어드레스를 메모리 영역 확보의 요구를 행한 프로세스에 통지한다.
영역 개방부(53)는, 사용하고 있는 메모리 영역의 개방 요구를 프로세스로부터 받는다. 사용하고 있는 메모리 영역의 개방 요구란, 예컨대 C 언어에서의「free」등이다. 영역 개방부(53)는, 메모리 영역 개방을 요구한 프로세스용으로 확보하고 있는 메모리 영역을 특정한다. 그리고, 영역 개방부(53)는, 히프 영역내의 특정한 메모리 영역 확보의 정보를 관리 테이블로부터 삭제한다.
또한, 영역 개방부(53)는, 개방하는 메모리 영역에 대한 마크 재부가의 지시를 마크 부가부(131)에 통지한다. 영역 개방부(53)는, 개방하는 메모리 영역을 마크를 재부가한 데이터로 매립할 때까지 마크 재부가의 지시를 반복하여 마크 부가부(131)에 통지한다. 데이터에 대한 마크의 재부가에 관해서는 나중에 상세히 설명한다.
데이터 처리부(54)는, 각 프로세스에 의한 메모리(2)에의 데이터의 저장이나 판독을 실행한다. 데이터의 저장이란, 예컨대 C 언어의 스토어 명령의 실행 등이다. 또한, 데이터의 판독이란, 예컨대 C 언어의 로드 명령의 실행 등이다. 그리고, 데이터 처리부(54)는, 각 프로세스에 할당된 메모리 영역에 대하여, 데이터의 저장이나 판독 등의 데이터 처리를 각 프로세스에 할당된 메모리 영역에 대하여 행한다. 구체적으로는, 데이터 처리부(54)는, 데이터의 저장을 행하는 프로세스에 대하여 확보되어 있는 메모리 영역의 비어 있는 영역 중에서 지정된 데이터를 기록하는 어드레스를 결정한다. 그리고, 데이터 처리부(54)는, 데이터의 기록 지시를 명령 제어부(13)에 통지한다. 또한, 데이터 처리부(54)는, 데이터의 판독 지시를 에러 검출부(15)에 통지한다.
마크 부가부(131)는, 히프 영역에 대한 마크 부가의 지시를 히프 영역 획득부(51)로부터 받는다. 그리고, 마크 부가부(131)는, 히프 영역에 저장하는 후술의 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 ECC 생성부(14)의 비트 반전부(141)에 통지한다. 여기서, 본 실시예에서는, 마크 부가부(131)는 마크의 부가로서 정상적인 데이터의 특정한 3비트를 반전시키고 있지만, 특정한 에러가 검출되는 정보이라면 다른 정보이더라도 좋고, 예컨대 3비트 이상의 수의 비트를 반전시키더라도 좋다.
또한, 마크 부가부(131)는, 마크 재부가의 지시를 영역 개방부(53)로부터 받는다. 그리고, 마크 부가부(131)는, 개방하는 메모리 영역에 저장하는 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 ECC 생성부(14)의 비트 반전부(141)에 통지한다. 이 마크 부가부(131)가, 「정보 부가부」 및 「정보 재부가부」의 일례이다.
마크 소거부(132)는, 마크 소거의 지시를 영역 확보부(52)로부터 받는다. 그리고, 마크 소거부(132)는, 확보하는 메모리 영역에 저장하는 데이터에 대응하는 오류 정정용 부호의 생성으로서 통상의 오류 정정용 부호 생성을 행하는 지시를 비트 반전부(141)에 통지한다. 이 마크 소거부(132)가, 「소거부」의 일례에 해당한다.
도 3은, ECC 생성부(14)의 세부사항을 나타내는 블록도이다. 도 3에 도시한 바와 같이, ECC 생성부(14)는, 비트 반전부(141), 코드 생성부(142) 및 데이터 저장부(143)를 갖고 있다.
ECC 생성부(14)는, 히프 영역을 확보하는 경우, 임시 데이터를 취득한다. 여기서, 임시 데이터는, 예컨대 부가한 마크의 내용을 나타내기 위한 마크 보조 정보 등이더라도 좋고, 빈 데이터이더라도 좋다. 임시 데이터는 ECC 생성부(14)가 생성하더라도 좋고, 레지스터(12)로부터 판독하더라도 좋다.
비트 반전부(141)는, 히프 영역 확보의 경우, 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 명령 제어부(13)의 마크 부가부(131)로부터 받는다. 또한, 비트 반전부(141)는, 임시 데이터를 레지스터(12)로부터 취득한다. 그리고, 비트 반전부(141)는, 취득한 임시 데이터가 미리 결정된 특정한 3비트를 반전시킨다. 그 후, 비트 반전부(141)는, 특정한 3비트를 반전시킨 임시 데이터를 코드 생성부(142)에 출력한다.
또한, 비트 반전부(141)는, 메모리 영역 확보의 경우, 확보하는 메모리 영역에 저장하는 데이터에 대응하여, 통상의 오류 정정용 부호 생성을 행하는 지시를 마크 소거부(132)로부터 받는다. 그리고, 비트 반전부(141)는, 레지스터(12)로부터 취득한 데이터에 변경을 가하지 않고서 코드 생성부(142)에 출력한다. 즉, 메모리 영역 확보의 경우, 비트 반전부(141)는, 통상의 데이터 저장 명령(예컨대, C 언어에 있어서의「스토어 명령」)의 경우와 같은 동작을 한다.
또한, 비트 반전부(141)는, 데이터의 기록의 경우(예컨대, C 언어에 있어서의「스토어 명령」의 경우), 지정된 어드레스에 저장하는 데이터를 코드 생성부(142)에 출력한다.
또한, 비트 반전부(141)는, 메모리 영역 개방의 경우, 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 명령 제어부(13)의 마크 부가부(131)로부터 받는다. 그리고, 비트 반전부(141)는, 개방하는 메모리 영역에 저장하는 임시 데이터가 미리 결정된 특정한 3비트를 반전시킨다. 그 후, 비트 반전부(141)는, 특정한 3비트를 반전시킨 임시 데이터를 코드 생성부(142)에 출력한다.
코드 생성부(142)는, 히프 영역 확보의 경우, 특정한 3비트를 반전시킨 임시 데이터의 입력을 비트 반전부(141)로부터 받는다. 그리고, 코드 생성부(142)는, 수신한 특정한 3비트를 반전시킨 임시 데이터로부터, 히프 영역의 전체 영역에 저장해 나가는 임시 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 생성한다. 그리고, 코드 생성부(142)는, 생성한 1바이트의 검사 코드를 데이터 저장부(143)에 출력한다.
또한, 코드 생성부(142)는, 메모리 영역 확보의 경우, 레지스터(12)로부터 취득된 변경이 가해지고 있지 않은 데이터의 입력을 비트 반전부(141)로부터 받는다. 그리고, 코드 생성부(142)는, 수신한 데이터로부터, 확보한 메모리 영역에 저장하는 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 생성한다. 그리고, 코드 생성부(142)는, 생성한 1바이트의 검사 코드를 데이터 저장부(143)에 출력한다.
또한, 코드 생성부(142)는 데이터 기록의 경우(예컨대, C 언어에 있어서의「스토어 명령」의 경우), 레지스터(12)로부터 취득한 데이터를 비트 반전부(141)로부터 수신한다. 그리고, 코드 생성부(142)는, 수신한 데이터로부터 1바이트의 검사 코드를 생성한다. 그리고, 코드 생성부(142)는 생성한 1바이트의 검사 코드를 데이터 저장부(143)에 출력한다.
코드 생성부(142)는, 메모리 영역 개방의 경우, 특정한 3비트를 반전시킨 임시 데이터의 입력을 비트 반전부(141)로부터 받는다. 그리고, 코드 생성부(142)는, 수신한 특정한 3비트가 반전시켜진 임시 데이터로부터, 개방한 메모리 영역에 저장하는 임시 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 생성한다. 그리고, 코드 생성부(142)는, 생성한 1바이트의 검사 코드를 데이터 저장부(143)에 출력한다.
데이터 저장부(143)는, 히프 영역 확보의 경우, 8바이트의 임시 데이터를 레지스터(12)로부터 수신한다. 또한, 데이터 저장부(143)는, 히프 영역의 전체 영역에 저장해 나가는 임시 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 코드 생성부(142)로부터 취득한다. 그리고, 데이터 저장부(143)는, 코드 생성부(142)로부터 취득한 임시 데이터의 특정한 3비트를 반전시켜서 생성한 1바이트의 검사 코드를 취득한 임시 데이터에 부가한다. 이와 같이, 예컨대 임시 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드를 데이터에 부가하는 것을「마크의 부가」라고 한다. 그 후, 데이터 저장부(143)는, 마크를 부가한 임시 데이터를 순서대로, 메모리(2)의 히프 영역의 전체 영역을 망라하도록 저장해 나간다. 즉, 데이터 저장부(143)는, 마크를 부가한 임시 데이터로 히프 영역의 모든 영역을 매립한다. 여기서, 마크 부가에서는, 정상적인 데이터의 특정한 3비트를 반전시켜 생성한 검사 코드를 데이터에 부가시키고 있기 때문에, 마크를 부가한 데이터에 대하여 체크를 한 경우, ECC 에러가 발생하는 것이 된다. 마크를 부가한 정해진 사이즈의 데이터를 히프 영역에 저장해 나가는 것이, 「메모리상의 제1 영역에서 정해진 영역마다 에러를 발생시키는 마크를 부가하는」것의 일례에 해당한다.
도 4a는, 히프 영역을 확보한 시점에서의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다. 도 4a의 메모리(201)는, 히프 영역을 확보한 시점에서의 메모리(2) 내의 히프 영역의 상태를 나타내고 있다. 메모리(201) 내의 각 박스는, 8바이트의 데이터 + 1바이트의 검사 코드가 저장된 영역을 표시하고 있다. 그리고, 박스(211)와 같이 사선으로 망이 처진 박스는, 1바이트의 검사 코드로서 임시 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드가 부가된 데이터를 표시하고 있다. 즉, 박스(211)와 같이 사선으로 망이 처진 박스는, 마크가 부가된 데이터가 저장되어 있는 것을 나타내고 있다. 메모리(201)와 같이, 히프 영역을 확보한 시점에서는, 히프 영역은 전부 마크가 부가된 데이터로 매립되어 있다. 이 상태에서는, 히프 영역내의 어느 쪽의 어드레스에 있어서도, 마크가 부가된 데이터가 참조된다.
데이터 저장부(143)는, 메모리 영역 확보의 경우, 확보한 메모리 영역에 저장하는 8바이트의 데이터를 레지스터(12)로부터 수신한다. 또한, 데이터 저장부(143)는, 수신한 각 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 코드 생성부(142)로부터 취득한다. 그리고, 데이터 저장부(143)는, 코드 생성부(142)로부터 취득한 임시 데이터를 변경하지 않고서 사용하여 생성한 1바이트의 검사 코드를 취득한 데이터에 부가한다. 이 검사 코드의 부가에 의해, 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드가 확보한 메모리 영역에 저장하는 데이터로부터 제외된다. 이와 같이, 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드를 데이터로부터 제외하는 것을「마크의 소거」라고 한다. 그리고, 데이터 저장부(143)는, 확보한 메모리 영역에 마크를 소거한 데이터를 저장해 나간다. 이에 따라, 데이터 저장부(143)는, 마크를 소거한 데이터로 확보한 메모리 영역을 매립한다. 확보한 메모리 영역을 마크를 소거한 데이터로 매립하는 것이, 「제2 영역에서 정해진 영역마다 부가되어 있는 마크를 소거하는」것의 일례에 해당한다.
도 4b는, 하나의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다. 도 4b의 메모리(202)는, 하나의 프로세스에 대하여 메모리 영역을 확보한 경우의 메모리(2)내의 히프 영역의 상태를 나타내고 있다. 영역(221)은, 하나의 프로세스에 대하여 확보된 메모리 영역이다. 영역(221)에 표시되는 망이 처져 있지 않은 박스는, 마크가 소거된 데이터가 저장되어 있는 것을 나타내고 있다. 즉, 메모리(202)와 같이, 프로세스에 대하여 메모리 영역을 확보한 경우, 확보된 메모리 영역은 마크가 소거된 데이터로 매립되어 있다. 그리고, 메모리(202)의 영역(221) 이외의 영역은, 마크가 부가된 데이터로 매립되어 있다. 이 상태에서, 예컨대, 영역(221)이 할당된 프로세스의 처리에 있어서, 프로세스가 영역(221) 이외의 영역을 참조한 경우, 그 프로세스는 마크가 부가된 데이터를 참조한다.
또한, 도 4c는 복수의 프로세스에 대하여 메모리 영역을 확보한 경우의 히프 영역에 저장되어 있는 데이터의 상태를 도시한 도면이다. 도 4c의 메모리(203)는, 복수의 프로세스에 대하여 메모리 영역을 확보한 경우의 메모리(2)내의 히프 영역의 상태를 표시하고 있다. 영역(231)은, 어떤 프로세스에 대하여 확보된 메모리 영역이다. 또한, 영역(232)은, 다른 프로세스에 대하여 확보된 메모리 영역이다. 또한, 영역(233)은, 또 다른 프로세스에 대하여 확보된 메모리 영역이다. 도 4c에 도시한 바와 같이, 복수의 프로세스에 대하여 메모리 영역을 할당하는 경우, 확보한 각각의 메모리 영역이 연속하지 않도록 할당한다. 구체적으로는, 영역(231)과 영역(232) 사이에 마크가 부가된 영역(234)이 끼워져 있다. 또한, 영역(232)과 영역(233) 사이에 마크가 부가된 영역(235)이 끼워져 있다. 이와 같이 하는 것으로, 예컨대, 영역(232)을 참조하고 있는 경우에, 참조처의 포인터가 영역(232) 밖으로 비어져 나온 경우, 참조를 하고 있는 프로세스는, 마크가 부가된 영역(234) 또는 (235)을 참조하는 것이 되어, 잘못되어 마크가 부가되어 있지 않은 다른 프로세스의 영역을 참조하는 일은 없다. 그 때문에, 오버런 등에 의한 파괴도 방지할 수 있다.
메모리 영역에 대한 데이터의 기록인 경우, 참조한 어드레스의 데이터에 마크가 부가되어 있지 않으면, 데이터 저장부(143)는, 레지스터(12)에 저장된 데이터를 레지스터(12)로부터 판독한다. 또한, 데이터 저장부(143)는, 판독한 데이터에 대응하는 검사 코드를 코드 생성부(142)로부터 취득한다. 그리고, 데이터 저장부(143)는, 판독한 데이터에 취득한 검사 코드를 부가하고, 메모리(2)내의 지정된 어드레스에 저장한다.
데이터 저장부(143)는, 메모리 영역 개방의 경우, 8바이트의 임시 데이터를 레지스터(12)로부터 수신한다. 또한, 데이터 저장부(143)는, 개방하는 메모리 영역에 저장해 나가는 임시 데이터에 부가하는 오류 정정용 부호인 1바이트의 검사 코드를 코드 생성부(142)로부터 취득한다. 그리고, 데이터 저장부(143)는, 코드 생성부(142)로부터 취득한 임시 데이터의 특정한 3비트를 반전시켜서 생성한 1바이트의 검사 코드를 취득한 임시 데이터에 부가한다. 이와 같이, 마크를 소거한 메모리 영역에 대하여, 재차 임시 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드를 데이터에 부가하는 것을「마크의 재부가」라고 한다. 개방하는 메모리 영역에 저장되어 있는 데이터에 마크가 부가되어 있으면, 데이터 저장부(143)는, 마크를 재부가한 임시 데이터를 순서대로, 메모리(2)에 있어서의 개방하는 메모리 영역에 저장해 나간다. 이에 따라, 데이터 저장부(143)는, 마크를 재부가한 데이터로 개방한 메모리 영역을 매립한다. 마크를 재부가한 데이터로 개방한 메모리 영역을 매립하는 것이, 「개방된 제2 영역에서 정해진 영역마다 마크를 재부가하는」것의 일례에 해당한다.
프로그램(5)이 데이터의 저장을 행하는 경우, 데이터의 저장에 앞서서, 에러 검출부(15)는, 데이터 처리부(54)에 의해 데이터의 저장처로서 지정된 메모리(2)내의 어드레스로부터 데이터를 판독한다. 그리고, 에러 검출부(15)는, 판독한 데이터에 마크가 부가되어 있는지 여부를 판정한다. 에러 검출부(15)는, 참조한 어드레스의 데이터에 마크가 부가되어 있는 경우는, 에러를 검출한다. 예컨대, 에러 검출부(15)는, 확보되어 있지 않은 메모리 영역에 프로그램(5)이 액세스한 경우 등은, 프로그램(5)에 의한 미할당 영역으로의 액세스 위반을 검출한다. 또한, 에러 검출부(15)는, 다른 프로세스에 대하여 확보된 메모리 영역을, 프로세스가 참조한 경우 등은, 메모리 사용 위반을 검출한다. 또한, 에러 검출부(15)는, 이미 개방되어 있는 메모리 영역에 프로그램(5)이 액세스한 경우에는, 개방 완료 영역으로의 액세스 위반을 검출한다. 그리고, 에러 검출부(15)는, 개개의 에러의 리포트를 레지스터(12)에 등록한다. 여기서, 본 실시예에서는, 데이터 저장의 경우에도, 에러 검출부(15)가 저장처에 지정되어 있는 어드레스로부터 데이터를 판독하여 마크의 유무를 판정하고 있지만, 이것은 다른 방법이라도 좋다. 예컨대, ECC 생성부(14)의 데이터 저장부(143)에, 데이터를 저장할 때에, 저장처의 어드레스에 저장되어 있는 데이터에 마크가 부가되어 있는지 여부를 판정시키더라도 좋다.
프로그램(5)이 데이터의 판독을 행한 경우, 에러 검출부(15)는, 지정된 어드레스의 메모리 영역으로부터 판독된 데이터도 에러가 있는지 여부를 판정한다. 구체적으로는, 에러 검출부(15)는, 메모리 영역으로부터 판독된 데이터에 마크가 부가되어 있는 경우, 에러를 검출하고, 레지스터(12)에 에러의 리포트를 등록한다. 예컨대, 프로그램(5)이 확보되어 있지 않은 메모리 영역을 참조한 경우 등은, 메모리(2)로부터 판독된 데이터에 포함되는 마크를 에러 검출부(15)가 검출함으로써, 액세스 위반을 검출한다. 또한, 어드레스를 지정한 프로세스 이외의 프로세스에 대하여 확보된 메모리 영역을 프로그램(5)이 참조한 경우 등에 있어서도, 에러 검출부(15)는 메모리 사용 위반을 검출한다. 또한, 에러 검출부(15)는, 프로그램(5)이 이미 개방되어 있는 메모리 영역에 액세스한 경우에도, 메모리(2)로부터 판독된 데이터에 포함되는 마크를 검출함으로써, 개방 완료 영역으로의 액세스 위반을 검출한다. 그리고, 에러 검출부(15)는, 개개의 에러의 리포트를 레지스터(12)에 등록한다.
이것에 대하여, 프로그램(5)이 참조한 메모리 영역에 마크가 소거된 데이터가 저장되어 있는 경우, 에러 검출부(15)는, 지정된 데이터를 메모리(2)로부터 판독한다. 그리고, 에러 검출부(15)는, 판독한 데이터를 레지스터(12)에 저장한다.
또한, 프로그램(5)이 메모리 영역의 개방을 행한 경우, 에러 검출부(15)는, 개방하는 메모리 영역으로부터 데이터를 판독하고, 판독된 각 데이터에 마크가 부가되어 있는지 여부를 판정한다. 그리고, 개방하는 메모리 영역에 저장되어 있는 데이터에 마크가 부가되어 있지 않은 경우, 에러 검출부(15)는, 2중 개방 위반의 에러를 검출한다. 이 에러 검출부(15)가, 「오류 검출부」의 일례에 해당한다.
다음에, 도 5를 참조하여, 본 실시예에 따른 정보 처리 장치에 있어서의 히프 영역 획득시의 처리의 흐름에 관해서 설명한다. 도 5는, 실시예 1에 따른 정보 처리 장치에 있어서의 히프 영역 획득시의 처리 흐름도이다.
히프 영역 획득부(51)는, 커넬로부터 히프 영역을 획득한다(단계 S101). 히프 영역 획득(51)은, 데이터에 대한 마크의 부가를 마크 부가부(131)에 통지한다.
마크 부가부(131)는, 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 비트 반전부(141)에 통지한다. ECC 생성부(14)는, 취득한 임시 데이터에 있어서의 특정한 3비트를 반전시킨 데이터로부터 임시 데이터에 대응하는 1바이트의 검사 코드를 생성한다. 그리고, ECC 생성부(14)는, 생성한 1바이트의 검사 코드를 레지스터(12)로부터 취득한 임시 데이터에 부가하여, 히프 영역에 저장해 나간다. ECC 생성부(14)는, 히프 영역 획득부(51)에 의한 마크 부가부(131)의 제어에 따르고, 메모리(2) 내의 히프 영역으로서 획득한 영역의 모두에 마크를 부가한다(단계 S102).
이 상태에서, 메모리(2)의 히프 영역에 대한 데이터의 저장이나 판독을 프로그램(5)이 행하면, 에러 검출부(15)는, 지정된 어드레스를 갖는 메모리 영역으로부터 데이터를 판독한다(단계 S103).
이 경우, 프로그램(5)에 의해 참조된 메모리 영역에는 마크가 부가된 데이터가 저장되어 있기 때문에, 에러 검출부(15)는, 판독한 데이터에 마크가 부가되어 있는 것을 검출하고, 미할당 영역으로의 액세스 위반을 검출한다(단계 S104).
여기서, 도 5에서는, 미할당 영역으로의 액세스 위반의 검출 처리를 설명하기 위해서, 단계 S103 및 S104를 기재했지만, 미할당 영역으로의 액세스 위반이 행하여지지 않으면, 단계 S103 및 S104는 실행되지 않더라도 좋다.
다음에, 도 6을 참조하여, 본 실시예에 따른 정보 처리 장치에 있어서의 메모리 영역의 확보 요구가 있었던 경우의 처리의 흐름에 관해서 설명한다. 도 6은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 확보 요구가 있었던 경우의 처리 흐름도이다. 여기서는, 메모리 영역의 확보 요구로서, C 언어의 malloc를 예로 설명한다.
영역 확보부(52)는, 프로세스로부터의 malloc 요구를 수신한다(단계 S201).
영역 확보부(52)는, 요구된 사이즈의 영역을 메모리(2)상의 히프 영역에 확보한다(단계 S202). 그리고, 영역 확보부(52)는, 데이터의 마크 소거를 마크 소거부(132)에 지시한다.
마크 소거부(132)는, 통상의 에러 정정 부호의 생성 지시를 비트 반전부(141)에 통지한다. ECC 생성부(14)는, 레지스터(12)로부터 취득한 데이터에 대응하는 1바이트의 검사 코드를 생성한다. 그리고, ECC 생성부(14)는, 생성한 1바이트의 검사 코드를 레지스터(12)로부터 취득한 데이터에 부가하여, 확보한 영역에 저장해 나간다. ECC 생성부(14)는, 영역 확보부(52)에 의한 마크 소거부(132)의 제어에 따라서, 메모리(2) 내의 히프 영역에서의 확보한 메모리 영역의 모든 데이터의 마크를 소거한다(단계 S203).
영역 확보부(52)는, 확보한 영역의 선두 어드레스를 malloc 요구를 출력한 프로세스로 돌려보낸다(단계 S204).
메모리(2)에 대한 데이터의 저장이나 판독의 명령이 프로그램(5)으로부터 이루어지면, 에러 검출부(15)가, 지정된 어드레스를 갖는 메모리 영역에서 데이터를 판독한다(단계 S205).
에러 검출부(15)는, 프로그램(5)에 의해 참조된 어드레스로부터 판독한 데이터에 마크가 부가되어 있는지 여부를 판정한다(단계 S206).
마크가 부가되어 있지 않은 경우(단계 S206:부정), 에러 검출부(15)는, 메모리 사용 가능이라고 판정한다(단계 S207). 이것에 대하여, 마크가 부가되어 있는 경우(단계 S206:긍정), 에러 검출부(15)는, 메모리 사용 위반을 검출한다(단계 S208).
다음에, 도 7을 참조하여, 본 실시예에 따른 정보 처리 장치에 있어서의 메모리 영역의 개방 요구가 있었던 경우의 처리 흐름에 관해서 설명한다. 도 7은, 실시예 1에 따른 정보 처리 장치에 있어서의 메모리 영역의 개방 요구가 있었던 경우의 처리 흐름도이다. 여기서는, 메모리 영역의 개방 요구로서, C 언어의 free를 예로 설명한다.
영역 개방부(53)는, 프로세스로부터의 free 요구를 수신한다(단계 S301). 영역 개방부(53)는, 개방을 지정받은 메모리 영역을 특정한다. 또한, 영역 개방부(53)는, 마크 부가부(131)에 마크의 재부가를 지시한다. 마크 부가부(131)는, 임시 데이터에 있어서의 특정한 3비트를 반전시키는 지시를 비트 반전부(141)에 통지한다.
에러 검출부(15)는, 개방하는 메모리 영역에 저장되어 있는 데이터에 마크가 부가되어 있는지 여부를 판정한다(단계 S302).
마크가 부가되어 있는 경우(단계 S302:긍정), ECC 생성부(14)는, 레지스터(12)로부터 취득한 임시 데이터에 있어서의 특정한 3비트를 반전시킨 데이터로부터 임시 데이터에 대응하는 1바이트의 검사 코드를 생성한다. 그리고, ECC 생성부(14)는, 생성한 1바이트의 검사 코드를 임시 데이터에 부가하여, 개방한 메모리 영역에 저장해 나간다. ECC 생성부(14)는, 영역 개방부(53)에 의한 마크 부가부(131)의 제어에 따라서, 메모리(2) 내의 히프 영역에서의 개방한 메모리 영역의 모두에 마크를 재부가한다(단계 S303).
영역 개방부(53)는, 개방한 메모리 영역을 관리 테이블로부터 삭제한다(단계 S304).
이 상태에서, 개방된 메모리 영역에 대한 데이터의 저장이나 판독의 명령이 프로그램(5)으로부터 이루어지면, 에러 검출부(15)가, 개방된 메모리 영역에서 데이터를 판독한다(단계 S305).
이 경우, 판독된 메모리에는 마크가 부가된 데이터가 저장되어 있기 때문에, 에러 검출부(15)는, 개방 완료의 메모리 영역으로의 액세스 위반을 검출한다(단계 S306).
이것에 대하여, 개방 요구가 있었던 메모리 영역의 데이터에 마크가 부가되어 있지 않은 경우(단계 S302:부정), 에러 검출부(15)는, 2중 개방 위반을 검출한다(단계 S307).
여기서, 도 7에서는, 개방 완료 영역으로의 액세스 위반의 검출 처리를 설명하기 위해서, 단계 S305 및 S306을 기재했지만, 개방 완료 영역으로의 액세스 위반이 행하여지지 않으면, 단계 S305 및 S306은 실행되지 않더라도 좋다.
다음에, 도 8을 참조하여, 시계열에서의 각 처리의 실행 및 그것에 부수되는 에러의 발생에 관해서 설명한다. 도 8은, 마크의 부가 및 소거의 처리 및 이들의 처리에 부수되는 에러를 시계열로 나타낸 도면이다. 도 8은 화살표가 향하는 방향으로 시간이 경과하고 있다. 또한, 2중선으로 둘러싸인 박스는 에러의 검출을 표시하고 있다.
시각(301)에서 프로세스가 시작되고, 히프 영역 획득부(51)는, 히프 영역을 커넬로부터 획득한다.
ECC 생성부(14)는, 히프 영역으로서 획득된 영역의 모두에 마크를 부가한 데이터를 저장한다(단계 S311). 여기서는, 마크가 부가된 데이터를 어떤 메모리 영역에 저장하는 것을, 메모리에 마크를 부가한다고 한다.
이 상태에서, 프로그램(5)이, 마크가 부가된 메모리를 참조한다(단계 S312). 이 경우, 에러 검출부(15)는, 마크가 부가된 메모리로부터 데이터를 판독한다.
이 경우, 프로세스가 사용하는 영역으로서 확보되어 있지 않고, 마크가 부가된 상태인 메모리로부터 데이터를 판독하기 때문에, 에러 검출부(15)는, 미할당 영역으로의 액세스 위반을 검출한다(단계 S313).
시각(302)에서, 프로세스로부터의 malloc의 요구를 받아, 영역 확보부(52)가 메모리 영역을 확보한다.
ECC 생성부(14)는, 확보한 메모리 영역에 저장되어 있는 데이터의 마크를 소거한다(단계 S321). 여기서는, 어떤 메모리 영역에 저장되어 있는 데이터의 마크를 소거하는 것을, 메모리의 마크를 소거한다고 한다.
프로세스는, 데이터의 스토어 또는 로드를 행하기 위해서 메모리를 참조한다(단계 S322). 에러 검출부(15)는, 프로세스에 의해 지정된 어드레스로부터 데이터를 판독한다.
에러 검출부(15)는, 판독한 데이터에 마크가 부가되어 있는지 여부를 판정한다(단계 S323). 마크가 부가되어 있지 않으면(단계 S323:부정), 프로세스에 의해 참조된 메모리는 그 프로세스가 사용하도록 확보된 메모리 영역이기 때문에, 에러 검출부(15)는, 그 메모리 영역이 사용 가능하다고 판정한다(단계 S324). 그 후, ECC 생성부(14) 또는 에러 검출부(15)는, 프로세스에 의해 참조된 메모리에의 데이터의 저장이나 데이터의 판독을 행한다. 이것에 대하여, 마크가 부가되어 있으면(단계 S323:긍정), 프로세스에 의해 참조된 메모리 영역은 프로세스가 사용하도록 확보된 메모리 영역이 아니기 때문에, 에러 검출부(15)는, 메모리 사용 위반을 검출한다(단계 S325).
시각(303)에서, 영역 개방부(53)는 프로세스로부터의 free의 요구를 받아서 메모리 영역을 개방한다.
ECC 생성부(14)는, 개방한 메모리 영역에 마크가 부가된 데이터를 재차 저장한다(단계 S331). 여기서는, 어떤 메모리 영역에 마크가 부가된 데이터를 메모리에 재차 저장하는 것을, 메모리에의 마크의 재부가라고 한다.
이 상태에서, 프로그램(5)은, 마크가 재부가된 메모리 영역을 참조한다(단계 S332). 그리고, 에러 검출부(15)는, 마크가 재부가된 메모리로부터 데이터를 판독한다.
이 경우, 데이터를 판독한 메모리 영역은 이미 개방되어 있고, 마크가 재부가된 상태인 메모리 영역으로부터 데이터를 판독하게 되기 때문에, 에러 검출부(15)는, 개방 완료 영역으로의 액세스 위반을 검출한다(단계 S333).
또한, 시각(304)에서, 프로세스로부터의 free의 요구를 받아서, 영역 개방부(53)가 이미 개방되어 있는 메모리 영역에 대하여 재차 개방을 행한다.
에러 검출부(15)는, 개방된 메모리 영역에 저장되어 있는 데이터에 마크가 부가되어 있는지를 확인한다. 이 경우, 이미 개방되어 있는 메모리에 대하여 추가로 개방을 하고 있기 때문에, 에러 검출부(15)는, 개방된 메모리에 마크가 부가되어 있는 것을 검출한다. 이에 따라, 에러 검출부(15)는, 이미 개방 완료의 메모리를 추가로 개방하려고 하고 있다고 판정한다(단계 S341). 그래서, 에러 검출부(15)는, 2중 개방 위반을 검출한다(단계 S342).
이상으로 설명한 바와 같이, 본 실시예에 따른 정보 처리 장치는, 히프 영역으로서 획득한 메모리 영역의 모두에 마크를 부가한 데이터를 저장한다. 그 후, 정보 처리 장치는, 프로세스가 사용하는 영역으로서 확보한 메모리 영역의 데이터의 마크를 소거한다. 또한, 확보한 메모리 영역을 개방하는 경우, 개방하는 메모리 영역의 모두에 마크를 부가한 데이터를 재차 저장한다. 이에 따라, 사용 영역으로서 확보되어 있지 않은 영역에 액세스한 경우, 액세스하는 메모리에 저장된 데이터에 마크가 붙어 있기 때문에, 액세스 위반이 발생하고 있는 것을 즉시 알 수 있다. 또한, 개방 완료의 메모리 영역을 재차 개방하려고 하더라도, 그 메모리 영역에 저장되어 있는 데이터에 마크가 붙어 있기 때문에, 개방할 수 없는 영역인 것을 즉시 알 수 있다.
또한, 이들의 에러 검출은, ECC를 이용하여 특정한 값을 갖는 오류 정정 부호가 부가되어 있는지 여부를 판정하기 때문에, 하드웨어에 의한 처리에 의해서 검출하는 것이 가능하다. 따라서, 본 실시예에 따른 정보 처리 장치는, 미할당 영역으로의 액세스, 개방 완료 영역으로의 액세스 및 2중 개방과 같은 메모리 사용 위반을 하드웨어에 의해서 고속으로 검출하는 것이 가능해진다.
또한, ECC를 데이터에 대한 마크의 부가에 이용하고 있기 때문에, 예컨대 8바이트마다의 메모리 사용에 관해서 체크할 수 있다. 이 때문에, 본 실시예에 따른 정보 처리 장치는, 수 킬로바이트∼수 메가바이트 등과 같은 큰 사이즈의 페이지 단위에서의 MMU의 처리에 비교해서 미세한 입도로 메모리의 부정 사용의 검출을 행할 수 있다.
즉, 본 실시예에 따른 정보 처리 장치에 따르면, 종래의 소프트웨어에 의한 메모리 보호에 비교해서 고속이고, 또한 종래의 MMU에 의한 처리에 비교해서 미세한 입도로 메모리를 보호할 수 있다. 이에 따라, 높은 성능이 필요해지는 대규모 소프트웨어에 있어서의 메모리 파괴를 발생시키는 버그의 검출이 용이해지고, 대규모 소프트웨어의 품질 확보가 용이해진다.
[실시예 2]
도 9는, 실시예 2에 따른 정보 처리 장치의 블록도이다. 본 실시예에 따른 정보 처리 장치는, 실시예 1에 따른 정보 처리 장치에 더하여 캐시 메모리(3) 및 메모리 컨트롤러(4)를 추가로 갖고 있다. 본 실시예에 따른 정보 처리 장치에 있어서, 실시예 1에 따른 정보 처리 장치와 동일한 기능을 갖는 각부에 대해서는 설명을 생략한다.
캐시 메모리(3)는, 데이터 RAM(Random Access Memory)(31), 제2 에러 검사기(32), 제3 에러 검사기(33) 및 제4 에러 검사기(34)를 갖고 있다. 또한, 메모리 컨트롤러(4)는, 제1 에러 검사기(41) 및 제5 에러 검사기(42)를 갖고 있다. 캐시 메모리(3)와 메모리 컨트롤러(4) 사이가 칩의 경계가 되는 경우가 있다. 그리고, 칩 사이 통신에 있어서 에러가 발생하는 비율이 높기 때문에, 본 실시예의 정보 처리 장치는, 에러를 발생할 가능성이 높은 칩의 경계에 에러 검사기를 배치하여, 에러가 발생한 장소를 특정할 수 있도록 구성되어 있다.
데이터의 저장, 데이터의 판독 및 메모리의 개방 요구를 소프트웨어로부터 받은 경우, 제1 에러 검사기(41)는, 메모리(2)로부터 대응하는 데이터를 판독한다. 그리고, 제1 에러 검사기(41)는, 판독한 데이터의 에러를 체크한다. 이때, 제1 에러 검사기(41)는, ECC 생성부(14) 및 다른 에러 검사기에 의해서 부가된 마크는 에러로서는 검출하지 않는다. 여기서, 다른 에러 검사기란, 제2 에러 검사기(32), 제3 에러 검사기(33), 제4 에러 검사기(34) 및 제5 에러 검사기(42)이다. 에러가 검출되지 않는 경우에는, 제1 에러 검사기(41)는, 수신한 데이터에 변경을 가하지 않고서 제2 에러 검사기(32)에 송신한다.
이것에 대하여, 판독한 데이터에 에러가 발생하고 있는 경우에는, 제1 에러 검사기(41)는, 미리 결정된 오류 부합의 특정한 3비트를 반전시켜 오류 플래그(1)를 나타내는 오류 정정 부호인 마크를 데이터에 부가한다. 이 데이터를 오류 플래그(1)가 부가된 데이터라고 부른다. 이 오류 플래그(1)를 나타내는 오류 정정 부호의 마크를 데이터에 부가하기 위해서 반전시키는 특정한 3비트는, ECC 생성부(14) 및 다른 에러 검사기가 마크를 부가하기 위해서 반전시키는 특정한 3비트와는 다르다. 또한, 제1 에러 검사기(41)는, 데이터 영역에 오류 플래그(1)를 나타내는 마크 보조 정보를 저장한다. 그리고, 제1 에러 검사기(41)는, 오류 플래그(1)를 부가한 데이터를 제2 에러 검사기(32)에 송신한다.
제2 에러 검사기(32)는, 제1 에러 검사기(41)로부터 데이터를 수신한다. 그리고, 제2 에러 검사기(32)는, 수신한 데이터의 에러를 체크한다. 이때, 제2 에러 검사기(32)는, ECC 생성부(14) 및 다른 에러 검사기에 의해서 부가된 마크는 에러로서는 검출하지 않는다. 여기서, 다른 에러 검사기란, 제1 에러 검사기(41), 제3 에러 검사기(33), 제4 에러 검사기(34) 및 제5 에러 검사기(42)이다. 에러가 검출되지 않는 경우에는, 제2 에러 검사기(32)는, 수신한 데이터에 변경을 가하지 않고서 데이터 RAM(31)에 저장한다.
이것에 대하여, 수신한 데이터에 에러가 발생하고 있는 경우에는, 제2 에러 검사기(32)는, 미리 결정된 오류 부합의 특정한 3비트를 반전시켜 오류 플래그(2)를 나타내는 오류 정정 부호인 마크를 데이터에 부가한다. 이 데이터를 오류 플래그(2)가 부가된 데이터라고 부른다. 이 오류 플래그(2)를 나타내는 오류 정정 부호의 마크를 데이터에 부가하기 위해서 반전시키는 특정한 3비트는, ECC 생성부(14) 및 다른 에러 검사기가 마크를 부가하기 위해서 반전시키는 특정한 3비트와는 다르다. 또한, 제2 에러 검사기(32)는, 데이터 영역에 오류 플래그(2)를 나타내는 마크 보조 정보를 저장한다. 그리고, 제2 에러 검사기(32)는, 오류 플래그(2)를 부가한 데이터를 데이터 RAM(31)에 저장한다.
제3 에러 검사기(33)는, 데이터 RAM(31)으로부터 제2 에러 검사기(32)에 의해서 저장된 데이터를 판독한다. 그리고, 제3 에러 검사기(33)는, 판독한 데이터의 에러를 체크한다. 이때, 제3 에러 검사기(33)는, ECC 생성부(14) 및 다른 에러 검사기에 의해서 부가된 마크는 에러로서는 검출하지 않는다. 여기서, 다른 에러 검사기란, 제1 에러 검사기(41), 제2 에러 검사기(32), 제4 에러 검사기(34) 및 제5 에러 검사기(42)이다. 에러가 검출되지 않는 경우에는, 제3 에러 검사기(33)는, 수신한 데이터에 변경을 가하지 않고서 에러 검출부(15)에 송신한다.
이것에 대하여, 판독한 데이터에 에러가 발생하고 있는 경우에는, 제3 에러 검사기(33)는, 미리 결정된 오류 부합의 특정한 3비트를 반전시켜 오류 플래그(3)를 나타내는 오류 정정 부호인 마크를 데이터에 부가한다. 이 데이터를 오류 플래그(3)가 부가된 데이터라고 부른다. 이 오류 플래그(3)를 나타내는 오류 정정 부호의 마크를 데이터에 부가하기 위해서 반전시키는 특정한 3비트는, ECC 생성부(14) 및 다른 에러 검사기가 마크를 부가하기 위해서 반전시키는 특정한 3비트와는 다르다. 또한, 제3 에러 검사기(33)는, 데이터 영역에 오류 플래그(3)를 나타내는 마크 보조 정보를 저장한다. 그리고, 제3 에러 검사기(33)는, 오류 플래그(3)를 부가한 데이터를 에러 검출부(15)에 송신한다.
데이터의 저장, 데이터의 판독 및 메모리의 개방 요구를 소프트웨어로부터 받은 경우, 에러 검출부(15)는, 메모리(2)로부터 판독한 데이터에 ECC 생성부(14)가 부가한 마크가 부가되어 있는지 여부를 판정한다. 그리고, 에러 검출부(15)는, 마크의 유무에 의해, 메모리 사용 위반이 발생하고 있는지 여부를 판정한다. 메모리 사용 위반이 발생하고 있는 경우에는, 에러 검출부(15)는, 메모리 사용 위반 발생을 통지하는 리포트를 레지스터(12)에 등록한다.
ECC 생성부(14)는, 히프 영역의 획득시, 메모리 영역의 개방시 및 데이터의 저장시에, 데이터를 캐시 메모리(3)의 데이터 RAM(31)에 저장한다. ECC 생성부(14)는, 마크가 부가된 데이터 및 마크가 소거된 데이터의 어느 것이나 데이터 RAM(31)에 저장한다.
제4 에러 검사기(34)는, 데이터 RAM(31)에 저장된 데이터를 판독한다. 그리고, 제4 에러 검사기(34)는, 판독한 데이터의 에러를 체크한다. 이때, 제4 에러 검사기(34)는, ECC 생성부(14) 및 다른 에러 검사기에 의해서 부가된 마크는 에러로서는 검출하지 않는다. 여기서, 다른 에러 검사기란, 제1 에러 검사기(41), 제2 에러 검사기(32), 제3 에러 검사기(33) 및 제5 에러 검사기(42)이다. 에러가 검출되지 않는 경우에는, 제4 에러 검사기(34)는, 판독한 데이터에 변경을 가하지 않고서 제5 에러 검사기(42)에 송신한다.
이것에 대하여, 판독한 데이터에 에러가 발생하고 있는 경우에는, 제4 에러 검사기(34)는, 미리 결정된 오류 부합의 특정한 3비트를 반전시켜 오류 플래그(4)를 나타내는 오류 정정 부호인 마크를 데이터에 부가한다. 이 데이터를 오류 플래그(4)가 부가된 데이터라고 부른다. 이 오류 플래그(4)를 나타내는 오류 정정 부호의 마크를 데이터에 부가하기 위해서 반전시키는 특정한 3비트는, ECC 생성부(14) 및 다른 에러 검사기가 마크를 부가하기 위해서 반전시키는 특정한 3비트와는 다르다. 또한, 제4 에러 검사기(34)는, 데이터 영역에 오류 플래그(4)를 나타내는 마크 보조 정보를 저장한다. 그리고, 제4 에러 검사기(34)는, 오류 플래그(4)를 부가한 데이터를 제5 에러 검사기(42)에 송신한다.
제5 에러 검사기(42)는, 제4 에러 검사기(34)로부터 데이터를 수신한다. 그리고, 제5 에러 검사기(42)는, 수신한 데이터의 에러를 체크한다. 이때, 제5 에러 검사기(42)는, ECC 생성부(14) 및 다른 에러 검사기에 의해서 부가된 마크는 에러로서는 검출하지 않는다. 여기서, 다른 에러 검사기란, 제1 에러 검사기(41), 제2 에러 검사기(32), 제3 에러 검사기(33) 및 제4 에러 검사기(34)이다. 에러가 검출되지 않는 경우에는, 제5 에러 검사기(42)는, 수신한 데이터에 변경을 가하지 않고서 메모리(2)에 저장한다.
이것에 대하여, 수신한 데이터에 에러가 발생하고 있는 경우에는, 제5 에러 검사기(42)는, 미리 결정된 오류 부합의 특정한 3비트를 반전시켜 오류 플래그(5)를 나타내는 오류 정정 부호인 마크를 데이터에 부가한다. 이 데이터를 오류 플래그(5)가 부가된 데이터라고 부른다. 이 오류 플래그(5)를 나타내는 오류 정정 부호의 마크를 데이터에 부가하기 위해서 반전시키는 특정한 3비트는, ECC 생성부(14) 및 다른 에러 검사기가 마크를 부가하기 위해서 반전시키는 특정한 3비트와는 다르다. 또한, 제5 에러 검사기(42)는, 데이터 영역에 오류 플래그(5)를 나타내는 마크 보조 정보를 저장한다. 그리고, 제5 에러 검사기(42)는, 오류 플래그(5)를 부가한 데이터를 메모리(2)에 저장한다.
이상으로 설명한 바와 같이, 본 실시예에 따른 정보 처리 장치는, 각처에 배치된 에러 검사기로 에러를 검출하고, 독자의 검사 코드를 생성하여 데이터에 부가한다. 이 때문에, 본 실시예에 따른 정보 처리 장치는, 어디에서 에러가 발생했는지를 특정하는 것이 용이해진다. 또한, 본 실시예에 따른 정보 처리 장치는, 메모리의 사용 상태를 나타내는 마크를, 각 에러 검사기가 생성하는 검사 코드와는 다른 검사 코드를 이용하여 생성하기 때문에, 에러의 발생 개소의 특정과 함께 메모리의 부정 사용을 용이하게 확인할 수 있다.
[실시예 3]
도 10은, 실시예 3에 따른 정보 처리 장치의 블록도이다. 본 실시예에 따른 정보 처리 장치는, 실시예 2에 따른 정보 처리 장치에 있어서 메모리의 사용 상태의 마크 부가를 메모리 컨트롤러(4)가 실행하는 구성이다. 본 실시예에 따른 정보 처리 장치는, 실시예 2에 따른 정보 처리 장치에 더하여 마크 제어부(43)를 추가로 갖고 있다. 본 실시예에 따른 정보 처리 장치에 있어서, 실시예 1 및 실시예 2에 따른 정보 처리 장치와 동일한 기능을 갖는 각부에 관해서는 설명을 생략한다.
ECC 생성부(14)는, 히프 영역을 획득한 경우, 히프 영역으로서 획득한 메모리 영역의 어드레스 및 임시 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드를, 메모리 컨트롤러(4)의 마크 제어부(43)에 통지한다. 또한, ECC 생성부(14)는, 히프 영역으로서 획득한 메모리 영역에 저장하는 데이터에 생성한 검사 코드를 부가하여 메모리(2)에 저장하는 지시를 마크 제어부(43)에 통지한다.
그리고, ECC 생성부(14)는, 생성한 검사 코드의 부가를 하지 않고서 데이터 RAM(31)에 임시 데이터를 저장한다.
또한, ECC 생성부(14)는, 프로세스에 대하여 메모리 영역을 확보한 경우, 확보한 메모리 영역의 어드레스, 데이터에 대응하는 생성한 검사 코드 및 마크 소거의 지시를, 메모리 컨트롤러(4)의 마크 제어부(43)에 통지한다.
그리고, ECC 생성부(14)는, 마크의 소거를 하지 않고서 데이터 RAM(31)에 레지스터(121)로부터 판독한 데이터를 저장한다.
또한, ECC 생성부(14)는, 메모리 영역을 개방한 경우, 개방한 메모리 영역의 어드레스, 임시 데이터의 특정한 3비트를 반전시켜서 생성한 검사 코드 및 마크 재부가의 지시를, 메모리 컨트롤러(4)의 마크 제어부(43)에 통지한다.
그리고, ECC 생성부(14)는, 마크의 재부가를 하지 않고서 데이터 RAM(31)에 임시 데이터를 저장한다.
마크 제어부(43)는, 히프 영역 획득시, 히프 영역의 어드레스 및 검사 코드의 정보를 ECC 생성부(14)로부터 수신한다. 또한, 마크 제어부(43)는, 검사 코드를 부가하여 메모리(2)에 저장하는 지시를 ECC 생성부(14)로부터 받는다. 그리고, 마크 제어부(43)는, 제5 에러 검사기(42)로부터 수신한 데이터에 대하여 수신한 검사 코드를 이용하여 마크를 부가하여, 히프 영역의 어드레스를 갖는 메모리(2)의 영역에 데이터를 저장해 나간다. 마크 제어부(43)는, 히프 영역의 모든 영역에 마크를 부가한 데이터를 저장한다.
마크 제어부(43)는, 메모리 영역의 확보시, 확보한 메모리 영역의 어드레스, 검사 코드의 정보 및 마크의 소거 지시를 ECC 생성부(14)로부터 받는다. 그리고, 마크 제어부(43)는, 제5 에러 검사기(42)로부터 수신한 데이터에 대하여 ECC 생성부(14)로부터 수신한 검사 코드를 부가하여 마크를 소거하고, 확보한 메모리 영역의 어드레스를 갖는 메모리(2)의 영역에 데이터를 저장해 나간다. 마크 제어부(43)는, 확보한 메모리 영역의 모든 영역에 마크를 부가한 데이터를 저장한다.
마크 제어부(43)는, 메모리 영역 개방시, 개방한 메모리 영역의 어드레스, 검사 코드의 정보 및 마크의 재부가의 지시를 ECC 생성부(14)로부터 받는다. 그리고, 마크 제어부(43)는, 제5 에러 검사기(42)로부터 수신한 데이터에 대하여 수신한 검사 코드를 이용하여 마크를 부가하여, 개방한 메모리 영역의 어드레스를 갖는 메모리(2)의 영역에 데이터를 저장해 나간다. 마크 제어부(43)는, 개방한 메모리 영역의 모든 영역에 마크를 부가한 데이터를 저장한다.
이상으로 설명한 바와 같이, 본 실시예에 따른 정보 처리 장치는, 프로세서 코어가 메모리 컨트롤러에 마크의 부가 및 삭제를 지시하고, 그것을 계기로 메모리 컨트롤러가 마크의 부가 또는 삭제를 반복한다. 이에 따라, 마크 생성 및 삭제에 의한 프로세서 코어의 부하를 경감할 수 있고, 또한, 프로세서 코어와 메모리 사이의 버스에의 부하를 경감시킬 수 있다.
1 : 프로세서 코어 2 : 메모리
3 : 캐시 메모리 4 : 메모리 컨트롤러
5 : 프로그램 11 : 연산기
12 : 레지스터 13 : 명령 제어부
14 : ECC 생성부 15 : 에러 검출부
51 : 히프 영역 획득부 52 : 영역 확보부
53 : 영역 개방부 54 : 데이터 처리부
131 : 마크 부가부 132 : 마크 소거부
141 : 비트 반전부 142 : 코드 생성부
143 : 데이터 저장부
3 : 캐시 메모리 4 : 메모리 컨트롤러
5 : 프로그램 11 : 연산기
12 : 레지스터 13 : 명령 제어부
14 : ECC 생성부 15 : 에러 검출부
51 : 히프 영역 획득부 52 : 영역 확보부
53 : 영역 개방부 54 : 데이터 처리부
131 : 마크 부가부 132 : 마크 소거부
141 : 비트 반전부 142 : 코드 생성부
143 : 데이터 저장부
Claims (6)
- 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가하는 정보 부가부와,
상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거하는 소거부와,
상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행하는 오류 검출부
를 구비한 것을 특징으로 하는 정보 처리 장치. - 제1항에 있어서, 이용 가능한 영역으로서 확보되어 있는 상기 제2 기억 영역을 개방하는 영역 개방부와,
상기 영역 개방부에 의해 개방된 상기 제2 기억 영역에 저장하는 제3 데이터의 오류 검출 정보의 오류를 발생시키도록 생성한 제3 정보를 상기 제3 데이터에 부가하는 정보 재부가부를 더 구비한 것을 특징으로 하는 정보 처리 장치. - 제2항에 있어서, 상기 오류 검출부는, 상기 영역 개방부가 개방하고자 하는 영역에 저장되어 있는 데이터에 상기 제2 정보가 부가되어 있는지 여부를 판정하고, 상기 제2 정보가 부가되어 있는 경우에는 에러를 검출하는 것을 특징으로 하는 정보 처리 장치.
- 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 메모리는 오류 검사 영역을 갖는 메모리이며,
상기 정보 부가부는, 상기 제2 데이터의 상기 오류 검사 영역에 정해진 에러를 나타내는 에러 정보를 기록하는 것으로 상기 제2 데이터에의 제2 정보의 부가를 행하고,
상기 소거부는, 상기 제2 데이터의 상기 오류 검사 영역의 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것을 특징으로 하는 정보 처리 장치. - 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가하고,
상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거하고,
상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행하는 것을 특징으로 하는 정보 처리 장치 제어 방법. - 메모리의 제1 기억 영역에 저장하는 제1 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제1 정보를 상기 제1 데이터에 부가하고, 제2 기억 영역에 저장하는 제2 데이터의 오류 검출 정보의 오류가 발생하도록 생성한 제2 정보를 상기 제2 데이터에 부가하고,
상기 제1 기억 영역과 상기 제2 기억 영역 중, 상기 제2 기억 영역을 이용 가능하게 할 때에, 상기 제1 데이터에 부가된 상기 제1 정보는 재기록하지 않고서, 상기 제2 데이터에 부가된 상기 제2 정보를 상기 제2 데이터의 오류 검출 정보에 재기록하는 것으로 상기 제2 정보를 소거하고,
상기 메모리에 저장된 상기 제1 데이터 또는 상기 제2 데이터를 판독한 경우에, 판독된 데이터에 부가된 정보를 이용하여, 판독된 데이터에 대한 오류 검출 처리를 행하는 처리를 컴퓨터에 실행시키는 것을 특징으로 하는 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012083177A JP5464226B2 (ja) | 2012-03-30 | 2012-03-30 | 情報処理装置、情報処理装置制御方法及び情報処理装置制御プログラム |
JPJP-P-2012-083177 | 2012-03-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20130111171A true KR20130111171A (ko) | 2013-10-10 |
Family
ID=47044797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120113026A KR20130111171A (ko) | 2012-03-30 | 2012-10-11 | 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8910004B2 (ko) |
EP (1) | EP2645249A1 (ko) |
JP (1) | JP5464226B2 (ko) |
KR (1) | KR20130111171A (ko) |
CN (1) | CN103365792A (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015095001A (ja) * | 2013-11-08 | 2015-05-18 | キヤノン株式会社 | 情報処理装置、その制御方法とプログラム |
US10122744B2 (en) * | 2016-11-07 | 2018-11-06 | Bank Of America Corporation | Security violation assessment tool to compare new violation with existing violation |
EP3454216B1 (en) * | 2017-09-08 | 2020-11-18 | Nxp B.V. | Method for protecting unauthorized data access from a memory |
US10318438B1 (en) * | 2017-12-07 | 2019-06-11 | Nuvoton Technology Corporation | Secure memory access using memory read restriction |
JP7145117B2 (ja) * | 2019-04-05 | 2022-09-30 | ルネサスエレクトロニクス株式会社 | 通信装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5525812A (en) | 1978-08-08 | 1980-02-23 | Panafacom Ltd | Writing system for error correction code |
JPS6126152A (ja) | 1984-07-16 | 1986-02-05 | Fujitsu Ltd | アドレスチエツク方式 |
JPH02181845A (ja) * | 1989-01-06 | 1990-07-16 | Nec Corp | 使用中メモリの誤動作フリー防止方式 |
JPH09305418A (ja) * | 1996-05-15 | 1997-11-28 | Nec Corp | 共有メモリ管理方式 |
JP2002149495A (ja) * | 2000-11-15 | 2002-05-24 | Nec Corp | メモリ管理方式とその方法及びこの方法を記録した記録媒体 |
US20040128464A1 (en) * | 2002-12-30 | 2004-07-01 | Lee Micheil J. | Memory reclamation |
US7707463B2 (en) * | 2005-11-30 | 2010-04-27 | International Business Machines Corporation | Implementing directory organization to selectively optimize performance or reliability |
US20080172584A1 (en) * | 2007-01-11 | 2008-07-17 | Red Bend Ltd. | Method and system for in-place updating content stored in a storage device |
US8347061B2 (en) * | 2008-04-29 | 2013-01-01 | International Business Machines Corporation | Method for protecting user-managed memory using an exception |
JP5422974B2 (ja) | 2008-11-18 | 2014-02-19 | 富士通株式会社 | 誤り判定回路及び共有メモリシステム |
CN102346715B (zh) * | 2010-07-30 | 2014-05-28 | 国际商业机器公司 | 保护内存中应用程序的方法、内存控制器和处理器 |
US8533572B2 (en) * | 2010-09-24 | 2013-09-10 | Intel Corporation | Error correcting code logic for processor caches that uses a common set of check bits |
US8775863B2 (en) * | 2011-05-31 | 2014-07-08 | Freescale Semiconductor, Inc. | Cache locking control |
-
2012
- 2012-03-30 JP JP2012083177A patent/JP5464226B2/ja not_active Expired - Fee Related
- 2012-09-12 US US13/612,098 patent/US8910004B2/en not_active Expired - Fee Related
- 2012-09-21 EP EP12185406.1A patent/EP2645249A1/en not_active Withdrawn
- 2012-10-11 KR KR1020120113026A patent/KR20130111171A/ko not_active Application Discontinuation
- 2012-10-12 CN CN2012103870290A patent/CN103365792A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP2645249A1 (en) | 2013-10-02 |
US8910004B2 (en) | 2014-12-09 |
US20130262947A1 (en) | 2013-10-03 |
CN103365792A (zh) | 2013-10-23 |
JP5464226B2 (ja) | 2014-04-09 |
JP2013214154A (ja) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1877547B (zh) | 提供扩展的存储器保护 | |
US8631250B2 (en) | Method and system for designating and handling confidential memory allocations | |
KR20130111171A (ko) | 정보 처리 장치, 정보 처리 장치 제어 방법 및 정보 처리 장치 제어 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 | |
KR20050051540A (ko) | 번역 룩어사이드 버퍼들의 레이지 플러싱 | |
US8397045B2 (en) | Memory management device, memory management method, and memory management program | |
JP2008276763A (ja) | メモリエラーの検出法 | |
KR101453184B1 (ko) | 중앙 처리 연산 장치 및 이상 검사 방법 | |
KR101724590B1 (ko) | 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법 | |
KR20220045211A (ko) | 캐패빌리티 기입 어드레스 추적 | |
US9009579B2 (en) | Address translation checking device, central processing unit, and address translation checking method | |
CN107977577B (zh) | 访存指令访问检测方法及装置 | |
US8151086B2 (en) | Early detection of an access to de-allocated memory | |
US9286483B2 (en) | Protecting visible data during computerized process usage | |
CN113626346B (zh) | 一种固态硬盘的数据保护方法、装置、设备及介质 | |
JP4892414B2 (ja) | 制御回路、記憶媒体、処理装置、組込みシステムならびに領域管理方法 | |
US7814288B2 (en) | Protecting memory operations involving zero byte allocations | |
US11556395B2 (en) | Data race detection with per-thread memory protection | |
CN103164290A (zh) | 应用内存管理方法和装置 | |
JP2006155516A (ja) | メモリ管理装置、メモリ管理システム及びメモリ管理方法 | |
CN108052410B (zh) | 一种防止SPI-Nand读取数据页出错的方法及装置 | |
CN108038064B (zh) | 一种PairBlock擦除出错的处理方法及装置 | |
Schemmel et al. | KDAlloc: The KLEE Deterministic Allocator: Deterministic Memory Allocation during Symbolic Execution and Test Case Replay | |
CN114942896A (zh) | 一种c语言内存块的管理方法及终端 | |
JP2007219590A (ja) | 情報処理装置及びそのデータ消去方法 | |
JPH01237858A (ja) | デバッグシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |