KR20100030602A - 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 - Google Patents

프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 Download PDF

Info

Publication number
KR20100030602A
KR20100030602A KR1020090084986A KR20090084986A KR20100030602A KR 20100030602 A KR20100030602 A KR 20100030602A KR 1020090084986 A KR1020090084986 A KR 1020090084986A KR 20090084986 A KR20090084986 A KR 20090084986A KR 20100030602 A KR20100030602 A KR 20100030602A
Authority
KR
South Korea
Prior art keywords
memory
data
address
write
information
Prior art date
Application number
KR1020090084986A
Other languages
English (en)
Other versions
KR101038167B1 (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
Priority claimed from JP2008231363A external-priority patent/JP4909963B2/ja
Priority claimed from JP2009169371A external-priority patent/JP2011022933A/ja
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20100030602A publication Critical patent/KR20100030602A/ko
Application granted granted Critical
Publication of KR101038167B1 publication Critical patent/KR101038167B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 형태에 관한 메모리 관리 장치를 포함하는 정보 처리 장치는, 제1 메모리와, 불휘발성의 제2 메모리를 포함하는 혼성 메모리에 대한 기입 위치를 지정하는 기입처 논리 어드레스와, 기입 대상 데이터를, 프로세서로부터 접수하는 섹션과, 상기 제2 메모리로의 액세스 횟수가 상기 제1 메모리로의 액세스 횟수보다 적어지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정하는 섹션과, 상기 기입처 논리 어드레스와 상기 기입처 물리 어드레스를 관련시킨 어드레스 변환 데이터를, 기억 섹션에 기억하는 섹션과, 상기 혼성 메모리에서의 상기 기입처 물리 어드레스가 나타내는 위치에, 상기 기입 대상 데이터를 기입하는 섹션을 포함한다.
Figure P1020090084986
MPU, 메모리 관리 장치, NAND형 플래시 메인 메모리, 어드레스 변환 테이블, 기입 횟수 데이터

Description

프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법{INFORMATION PROCESSING DEVICE INCLUDING MEMORY MANAGEMENT DEVICE MANAGING ACCESS FROM PROCESSOR TO MEMORY AND MEMORY MANAGEMENT METHOD}
본 발명은, 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법에 관한 것이다.
종래의 MPU(Micro Processing Unit)는, DRAM(Dynarnic Random Access Memory)을 메인 메모리(주 기억 장치)로서 사용한다. 또한, 종래의 MPU는, 예를 들어 플래시 메모리를 2차 기억 장치로서 사용한다. 종래의 MPU와 플래시 메모리는 I/O 인터페이스를 통해 접속된다. 플래시 메모리는, MPU에 의해 파일 메모리로서 취급된다.
종래에 있어서, NAND형 플래시 메모리의 관리 기능은 파일 시스템에 실장된다.
MPU 내에 캐시 메모리가 포함되어 있고, 메인 메모리로서 DRAM이 사용되고 있고, 또한 MPU가 NAND형 플래시 메모리를 액세스하는 경우, 종래에 있어서는, 이 하의 메모리 계층을 따른 동작이 행해진다.
우선, MPU는, MMU(Memory Management Unit)에 의해, 논리 어드레스를 물리 어드레스로 변환하고, 캐시 메모리를 액세스한다.
여기서, MPU는, 오퍼레이팅 시스템(OS)의 가상 기억 관리에 의해, 일부의 데이터에 대해, 메인 메모리인 DRAM에 액세스를 행한다.
또한, MPU는, NAND형 플래시 메모리에 액세스가 필요한 경우에, 플래시 파일 시스템(Flash File System)에 의해, NAND형 플래시 메모리에서의 불량 블록을 피하는 제어, NAND형 플래시 메모리의 전체 블록을 이격 없이 액세스시키는 제어 등을 행하고, NAND형 플래시 메모리의 물리 위치를 결정한다.
MPU는, 결정된 물리 위치에 기초하여, NAND형 플래시 메모리를 액세스한다.
종래의 MPU에 있어서는, 메모리 계층의 수가 많아질수록, 다른 계층에 포함되는 동작이 많아져, 다른 계층의 동작간에 최적화를 행하는 것이 곤란하다. 예를 들어, MPU가 캐시 메모리의 데이터를 교체할 때에, NAND형 플래시 메모리 특유의 불량 블록 관리를 행하는 등과 같은 제어는, 각각의 동작이 다른 메모리 계층에 속하기 때문에, 실현 곤란하다.
MPU가 2차 기억 장치의 파일을 액세스하는 경우에는, 종래의 오퍼레이팅 시스템(OS)은 많은 처리를 실행할 필요가 있다. 메인 메모리의 기억 용량이 작은 정보 처리 장치에 있어서는, HDD(하드 디스크) 또는 SSD(Solid State Drive) 등의 2차 기억 장치가 MPU에 의해 액세스되는 횟수가 많아져, 프로그램의 처리수가 증가하고, 처리 시간이 커지는 경우가 있다.
이와 같은 문제를 해결하기 위해, 예를 들어 모바일 기기에 있어서, NAND형 플래시 메모리와 동일한 용량의 DRAM을 준비하여, 기동시에 NAND형 플래시 메모리의 전체 데이터를 DRAM에 전송하는 방식이 사용되고 있다.
그러나, 이 방식은 저렴한 NAND형 플래시 메모리와 동일한 용량분의 고가인 DRAM을 실장할 필요가 있고, 예를 들어 모바일 기기 등과 같은 소용량의 메모리를 갖는 기기에 대해서는 적용하기 쉽지만, 다른 기억 용량이 큰 장치에 대해서는 적용 곤란하다.
특허 문헌 1(일본 특허 공개 제2008-242944호 공보)에는, 통합 메모리 관리 장치가 제안되어 있다. 이 통합 메모리 관리 장치에서는, MPU에 대한 메인 메모리로서 NAND형 플래시 메모리가 사용되고 있다. 또한, 특허 문헌 1에서는, MPU의 1차 캐시 메모리와, 2차 캐시 메모리와, 메인 메모리인 NAND형 플래시 메모리가 동일한 메모리 계층으로 취급된다. 통합 메모리 관리 장치의 캐시 컨트롤러는, 1차 캐시 메모리 및 2차 캐시 메모리에 대한 메모리 관리에 부가하여, 메인 메모리에 대한 메모리 관리를 실행한다.
특허 문헌 2(일본 특허 공개 평7-146820)에는, 정보 처리 장치의 주 기억 장치로서 플래시 메모리를 채용하는 기술이 개시되어 있다. 특허 문헌 2에 있어서, 시스템의 메모리 버스에는, 휘발성 메모리인 캐시 메모리를 통해 플래시 메모리가 접속된다. 캐시 메모리에는, 이 캐시 메모리에 저장되어 있는 데이터의 어드레스 또는 액세스 이력 등의 정보를 기록하는 어드레스 어레이가 설치된다. 컨트롤러는, 액세스처의 어드레스를 참조하여, 캐시 메모리 또는 플래시 메모리의 데이터를 메모리 버스에 공급하거나, 메모리 버스의 데이터를 저장한다.
특허 문헌 3(일본 특허 공개 제2001-266580호 공보)에 있어서는, 종류가 다른 반도체 메모리 장치를 공통의 버스에 접속하는 것을 가능하게 하는 발명이 개시되어 있다.
이 특허 문헌 3의 반도체 메모리 장치는, 랜덤 액세스 메모리 칩과, 상기 랜덤 액세스 메모리 칩을 포함한 패키지를 포함한다. 상기 패키지는, 상기 랜덤 액세스 메모리 칩을 외부 장치에 전기적으로 연결하는 복수의 핀을 갖는다. 복수의 핀은, 상기 랜덤 액세스 메모리와, 전기적으로 소거 및 프로그램 가능한 불휘발성 반도체 메모리에, 공통으로 메모리 기능을 제공한다. 상기 복수의 핀의 각각은, 불휘발성 반도체 메모리가 대응하는 핀의 위치에 배열되어 있다.
본 발명의 제1 형태에 관한 메모리 관리 장치를 포함하는 정보 처리 장치는, 제1 메모리와, 불휘발성의 제2 메모리를 포함하는 혼성 메모리에 대한 기입 위치를 지정하는 기입처 논리 어드레스와, 기입 대상 데이터를, 프로세서로부터 접수하는 접수 섹션과, 상기 제2 메모리로의 액세스 횟수가 상기 제1 메모리로의 액세스 횟수보다 적어지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정하는 어드레스 결정 섹션과, 상기 기입처 논리 어드레스와 상기 기입처 물리 어드레스를 관련시킨 어드레스 변환 데이터를, 기억 섹션에 기억하는 어드레스 관리 섹션과, 상기 혼성 메모리에서의 상기 기입처 물리 어드레스가 나타내는 위치에, 상기 기입 대상 데이터를 기입하는 기입 섹션을 포함한다.
본 발명의 제2 형태에 관한 메모리 관리 방법은, 제1 메모리와, 불휘발성의 제2 메모리를 포함하는 혼성 메모리에 대한 위치를 지정하는 기입처 논리 어드레스와, 기입 대상 데이터를, 프로세서로부터 접수하고, 상기 제2 메모리로의 액세스 횟수가 상기 제1 메모리로의 액세스 횟수보다 적어지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정하고, 상기 기입처 논리 어드레스와 상기 기입처 물리 어드레스를 관련시킨 어드레스 변환 데이터를, 기억 섹션에 기억하고, 상기 혼성 메모리에서의 상기 기입처 물리 어드레스가 나타내는 위치에, 상기 기입 대상 데이터를 기입한다.
본 발명에 따르면, 메모리 계층에 있어서 오버헤드가 큰 계층을 삭제할 수 있고, 다층화되어 있었던 메모리 계층을 단순화할 수 있어서, 액세스에 필요한 시간, 제조시에 필요한 시간, 제조시에 필요한 비용 등의 다양한 비용을 삭감할 수 있는 등의 효과가 있다.
이하, 도면을 참조하면서 본 발명의 각 실시 형태에 대해 설명한다. 또한, 이하의 설명에 있어서, 대략 또는 실질적으로 동일한 기능 및 구성 요소에 대해서는, 동일한 부호를 부여하고, 중복 설명은 필요한 경우에만 행한다.
이하의 각 실시 형태에 있어서, 메모리 관리 장치는, 예를 들어 MPU 등과 같은 프로세서를 포함하는 정보 처리 장치, 또는 프로세서 및 메모리를 포함하는 정보 처리 장치에 포함된다.
(제1 실시 형태)
본 실시 형태의 메모리 관리 장치(플랫 메모리 관리 장치)는, MPU에 포함되어 있고, 캐시 메모리와 메인 메모리에 대해 메모리 관리를 행한다. 메모리 관리 장치는, 메모리 액세스에 관한 메모리 계층의 수를 삭감하여, 메모리 액세스의 최적화를 용이하게 실현 가능하게 한다.
본 실시 형태에 있어서, 메인 메모리로서는, 불휘발성 반도체가 사용되는 것으로 한다. 그러나, 메인 메모리로서는, 하기의 제9 실시 형태 이후에서 설명하는 바와 같은, 제1 메모리와 불휘발성의 제2 메모리를 포함하는 혼성 메인 메모리가 사용되는 것으로 해도 된다.
본 실시 형태에 있어서는, MPU의 MMU와, MPU의 캐시 컨트롤러와, 메인 메모리용 MMU를 통합한 메모리 관리 장치에 대해 설명한다.
도 1은, 본 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도이다. 또한, 본 실시 형태에 있어서는, 메인 메모리가 NAND형 플래시 메모리인 경우를 예로서 설명하지만, 상술한 바와 같이, 예를 들어 혼성 메인 메모리 등과 같은 다른 기억 장치를 사용할 수도 있다. 메인 메모리로서는, 예를 들어 NOR형 플래시 메모리 등과 같은 다른 불휘발성 반도체 메모리를 사용하는 것으로 해도 된다. 본 실시 형태에 있어서, 액세스라 함은, 데이터(또는 프로그램)의 판독과 기입의 적어도 한쪽을 포함하는 것으로 한다.
MPU(101)는, 메모리 관리 장치(102)를 포함하고, NAND형 플래시 메인 메모리(104)를 액세스한다.
NAND형 플래시 메인 메모리(104)는, 내부에, 어드레스 변환 테이블(105), 기입 횟수 데이터(106)를 기억한다. 기입 횟수 데이터(106)는, 메인 메모리의 액세스 상태를 나타내는 메인 메모리 이력 데이터에 대응한다.
어드레스 변환 테이블(105)은, NAND형 플래시 메인 메모리(104)에서의 논리 어드레스와, 물리 위치(Physical Location) 또는 물리 어드레스를 관련시킨 데이터이다.
기입 횟수 데이터(106)는, NAND형 플래시 메인 메모리(104)의 각 페이지 또는 블록의 기입 횟수를 나타낸다.
메모리 관리 장치(102)는, MMU(107), 캐시 컨트롤러(108), 1차 캐시 메모리(103), 2차 캐시 메모리(122), 메인 메모리용 MMU(109), 액세스 이력 저장부(NAND Information Registers)(110)를 포함한다. 또한, 캐시 컨트롤러(108)는, 1차 캐시 메모리(103)용의 제1 캐시 컨트롤러(108a)와 2차 캐시 메모리(122)용의 제2 캐시 컨트롤러(108b)를 포함한다. 또한, 메인 메모리용 MMU(109)는, 어드레스 관계 저장부(123)를 포함한다. 또한, 메인 메모리용 MMU(109)와, 어드레스 관계 저장부(123)는 분리되어 있어도 된다.
예를 들어, 메모리 관리 장치(102)는, 1칩 상에 통합된 상태로 형성된다.
본 실시 형태에 있어서는, 캐시 메모리가 2개인 경우를 예로 들어 설명하지만, 캐시 메모리의 수는 1개 또는 3 이상이라도 된다.
MMU(107)는, 캐시 메모리(103, 122)의 논리 어드레스를 물리 어드레스로 변환한다.
1차 캐시 메모리(103)는 태그 저장 영역(103a)과 라인 저장 영역(103b)을 갖는다.
2차 캐시 메모리(122)는 태그 저장 영역(122a)과 라인 저장 영역(122b)을 갖는다.
본 실시 형태에 있어서, 1차 캐시 메모리(103)의 라인 사이즈 및 2차 캐시 메모리(122)의 라인 사이즈는, NAND형 플래시 메인 메모리(104)의 블록과 동일한 사이즈(예를 들어 256킬로바이트) 또는 블록 사이즈의 배수나, NAND형 플래시 메인 메모리(104)의 페이지 사이즈 또는 페이지 사이즈의 배수로 되는 사이즈로 한다. 이에 의해, NAND형 플래시 메인 메모리(104)의 데이터를 1차 캐시 메모리(103) 또는 2차 캐시 메모리(122)로 이동하는 동작, 및 1차 캐시 메모리(103) 또는 2차 캐시 메모리(122)의 데이터를 NAND형 플래시 메인 메모리(104)로 이동하는 동작을 페이지 단위, 페이지 사이즈의 정수배 단위(2 이상), 블록 단위, 블록 사이즈의 정수배 단위(2 이상)로 행할 수 있어, 데이터의 이동을 간소화할 수 있다.
본 실시 형태에 있어서, 1차 캐시 메모리(103) 및 2차 캐시 메모리(122)는, 예를 들어 라이트 백형인 것으로 한다. 또한, 2차 캐시 메모리(122)는, 1차 캐시 메모리(103)보다도 기억 용량이 크지만 저속인 것으로 한다.
제1 캐시 컨트롤러(108a)는, 1차 캐시 메모리(103)에 대한 액세스를 제어한다.
보다 구체적으로는, 제1 캐시 컨트롤러(108a)는, 1차 캐시 메모리(103)로부터 데이터를 판독하는 경우에는, MMU(107)로부터 얻어진 물리 어드레스를 따라, 1차 캐시 메모리(103)에서의 물리 어드레스에 대응하는 데이터를 판독한다. 또한, 제1 캐시 컨트롤러(108a)는, 1차 캐시 메모리(103)에 데이터를 기입하는 경우에는, MMU(107)로부터 얻어진 물리 어드레스를 따라, 1차 캐시 메모리(103)에서의 물리 어드레스에 대응하는 위치에, 기입 대상의 데이터를 기입한다.
제2 캐시 컨트롤러(108b)는, 2차 캐시 메모리(122)에 대한 액세스를 제어한다.
보다 구체적으로는, 제2 캐시 컨트롤러(108b)는, 2차 캐시 메모리(122)로부터 데이터를 판독하는 경우에는, MMU(107)로부터 얻어진 물리 어드레스를 따라, 2 차 캐시 메모리(122)에서의 물리 어드레스에 대응하는 데이터를 판독한다. 또한, 제2 캐시 컨트롤러(108b)는, 2차 캐시 메모리(122)에 데이터를 기입하는 경우에는, MMU(107)로부터 얻어진 물리 어드레스를 따라, 2차 캐시 메모리(122)에서의 물리 어드레스에 대응하는 위치에, 기입 대상의 데이터를 기입한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에 대한 액세스를 제어한다.
메인 메모리용 MMU(109)는, 필요에 따라서, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)의 일부 또는 전부를, 어드레스 관계 데이터로서, 어드레스 관계 저장부(123)에 저장한다. 또한, 메인 메모리용 MMU(109)는, 필요에 따라서, NAND형 플래시 메인 메모리(104)의 기입 횟수 데이터(106)의 일부 또는 전부를, 액세스 이력 데이터로서, 액세스 이력 저장부(110)에 저장한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)의 논리 어드레스를 물리 위치로 변환한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)의 물리 위치에 기초하여, NAND형 플래시 메인 메모리(104)로부터 데이터의 판독을 행하고, 제1 캐시 컨트롤러(108a) 또는 제2 캐시 컨트롤러(108b)를 경유하여, 1차 캐시 메모리(103) 또는 2차 캐시 메모리(122)에 데이터를 기억한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)로부터 새로운 데이터를 판독한 경우에는, 그 새로운 데이터에 관한 어드레스 변환 테이블의 데이터, 및 기입 횟수 데이터를 판독하여, 각각 어드레스 관계 저장부(123) 및 액세스 이력 저장부(110)에 저장한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에 데이터를 기입하는 경우, 어드레스 관계 데이터 및 액세스 이력 데이터에 기초하여, NAND형 플래시 메인 메모리(104)의 전체 영역 또는 전체 블록을 이격 없이 액세스시키는 제어, NAND형 플래시 메인 메모리(104)의 각 영역 또는 블록의 기입 횟수를 균등화하기 위한 제어, 불량 영역 또는 불량 블록을 피하는 제어 등을 행한다. 또한, 메인 메모리용 MMU(109)는, 1차 캐시 메모리(103) 또는 2차 캐시 메모리(122)에 기억되어 있었던 데이터를, 제1 캐시 컨트롤러(108a) 또는 제2 캐시 컨트롤러(108b)를 경유하여 취득하고, 이 취득한 데이터를 NAND형 플래시 메인 메모리(104)의 물리 위치에 기초하여 NAND형 플래시 메인 메모리(104)에 기억한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에 데이터가 기입된 경우에, 기입된 데이터에 관한 논리 어드레스와 물리 위치의 관계에 기초하여 어드레스 관계 저장부(123)의 어드레스 관계 데이터를 갱신하고, 또한 액세스 이력 저장부(110)의 액세스 이력 데이터를 갱신한다.
메인 메모리용 MMU(109)는, 필요에 따라서, 메인 메모리용 MMU(109)에 저장되어 있는 어드레스 관계 데이터와, 액세스 이력 저장부(110)에 기억되어 있는 액세스 이력 데이터를, 각각 NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)과 기입 횟수 데이터(106)에 대해 반영한다. 즉, 메인 메모리용 MMU(109)는, MPU(101)에 기억되어 있는 어드레스 관계 데이터와, NAND형 플래시 메인 메모리(104)에 기억되어 있는 어드레스 변환 테이블(105)을 정합시킨다. 또한, 메인 메모리용 MMU(109)는, 액세스 이력 저장부(110)의 액세스 이력 데이터와, NAND형 플래시 메인 메모리(104)의 기입 횟수 데이터(106)를 정합시킨다.
액세스 이력 저장부(110)는, NAND형 플래시 메인 메모리(104)의 페이지 또는 블록(물리 위치)의 액세스 상태의 이력을 저장한다. 본 실시 형태에 있어서, 액세스 이력 저장부(110)는, NAND형 플래시 메인 메모리(104)에서의 각 페이지 또는 블록의 기입 횟수 데이터(106) 중, 일부 또는 전부의 페이지 또는 블록에 대한 기입 횟수 데이터를 저장한다.
예를 들어, 각 블록의 기입 횟수는 4바이트로 기록되고, 각 블록 사이즈는 256킬로바이트로 한다. 이 경우에 있어서, NAND형 플래시 메인 메모리(104)의 기억 용량이 1메가바이트인 것으로 하면, NAND형 플래시 메인 메모리(104)에 기억되는 블록수는 4블록이고, 각 블록의 기입 횟수를 기억하기 위해 필요한 기억 용량은 16바이트로 된다. 동일한 경우에, NAND형 플래시 메인 메모리(104)의 기억 용량이 1기가바이트인 것으로 하면, NAND형 플래시 메인 메모리(104)에 기억되는 블록수는 4096블록이고, 각 블록의 기입 횟수를 기억하기 위해 필요한 기억 용량은 16킬로바이트로 된다. 또한, 같은 경우에 있어서, NAND형 플래시 메인 메모리(104)의 기억 용량이 16기가바이트인 것으로 하면, 각 블록의 기입 횟수를 기억하기 위해 필요한 기억 용량은 64킬로바이트로 된다.
예를 들어, NAND형 플래쉬. 플래시 메인 메모리(104)의 기억 용량이 예를 들어 128기가바이트 등과 같이 커진 경우, 액세스 이력 저장부(110)는, NAND형 플래시 메인 메모리(104)에서의 기입 횟수 데이터(106)의 일부를 저장한다. 이와 같 이, 액세스 이력 저장부(110)는, 기입 횟수 데이터(106)의 일부를 저장하기 위해, 기입 횟수에는 pos가 부여되어 있다. pos는 캐시 태그와 같은 방법으로 사용된다.
메인 메모리용 MMU(109)의 동작예의 개략을 설명한다.
메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)의 일부를, 어드레스 관계 저장부(123)에 기억하고, 기입 횟수 데이터(106)의 일부를 액세스 이력 저장부(110)에 기억한다.
메인 메모리용 MMU(109)는, 캐시 메모리(103, 122)에 판독 대상의 데이터가 기억되어 있지 않고, NAND형 플래시 메인 메모리(104)로부터 데이터의 판독을 행하는 경우, NAND형 플래시 메인 메모리(104)로부터 데이터를 판독한다. 그리고, 메인 메모리용 MMU(109)는, 어드레스 변환 테이블(105) 중 판독한 데이터에 관한 데이터를 어드레스 관계 저장부(123)에 기억한다. 또한, 메인 메모리용 MMU(109)는, 기입 횟수 데이터(106) 중 판독한 데이터에 관한 데이터를 액세스 이력 저장부(110)에 기억한다.
MPU(101)로부터 NAND형 플래시 메인 메모리(104)로의 데이터의 기입을 행하는 경우, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에서의 논리 어드레스를 물리 위치로 변환하고, 캐시 라인(103b, 122b)에서의 기입 대상의 데이터를 NAND형 플래시 메인 메모리(104)에 기입한다. 부가하여, 메인 메모리용 MMU(109)는, 어드레스 관계 저장부(123)에 기억하고 있는 어드레스 관계 데이터와, 액세스 이력 저장부(110)에 기억되어 있는 액세스 이력 데이터를 갱신한다.
그리고, 메인 메모리용 MMU(109)는, 어드레스 관계 저장부(123)의 어드레스 관계 데이터와, 액세스 이력 저장부(110)의 액세스 이력 데이터에 기초하여, 각각 어드레스 변환 테이블(105)과 기입 횟수 데이터(106)를 갱신한다.
예를 들어, 1차 캐시 메모리(103)가 리드 온리(Read Only)인 경우, MPU(101)로부터 캐시 라인(103b)으로의 기입은 없다. 이 경우, 메인 메모리용 MMU(109)는, 제1 캐시 컨트롤러(108a)를 사용하여, NAND형 플래시 메인 메모리(104)로부터 판독한 데이터를 1차 캐시 메모리(103)에 덮어쓴다. 이 1차 캐시 메모리(103)에 기억된 데이터의 판독이 발생하면, 제1 캐시 컨트롤러(108a)는, 1차 캐시 메모리(103)로부터 데이터를 판독한다.
한편, 1차 캐시 메모리(103)가 리드 온리가 아닌 경우, MPU(101)는, 프로그램을 실행하여 얻어진 데이터를 캐시 메모리(103)에 기입한다. MPU(101)로부터 캐시 라인(103b)에 데이터의 기입이 발생한 경우, 캐시 라인(103b)의 데이터를 NAND형 플래시 메인 메모리(104)에 라이트 백(Write Back)한다. 이 경우, 메인 메모리용 MMU(109)는, 라이트 백되는 데이터를 캐시 메모리(103)로부터 제1 캐시 컨트롤러(108a) 경유로 판독한다. 그리고, 메인 메모리용 MMU(109)는, 액세스 이력 저장부(110)의 액세스 이력 데이터에 기초하여, NAND형 플래시 메인 메모리(104)에 있어서 라이트 백되는 위치로서, 소정수보다 적은 기입 횟수의 페이지 또는 블록을 선택한다. 메인 메모리용 MMU(109)는, 이 선택된 페이지 또는 블록에 라이트 백되는 데이터를 기억하고, 선택된 페이지 또는 블록에 대해, NAND형 플래시 메인 메모리(104)용의 논리 어드레스와 물리 위치의 변환 관계를 나타내는 어드레스 관계 데이터를 갱신하고, 선택된 페이지 또는 블록에 대해 액세스 이력 저장부(110)의 기 입 횟수를 갱신한다.
그 후, 필요에 따라서, 어드레스 관계 저장부(123)와 액세스 이력 저장부(110)의 내용에 의해, 어드레스 변환 테이블(105)과 기입 횟수 데이터(106)를 갱신한다.
도 2는, 본 실시 형태에 관한 메모리 관리 장치(102)의 메모리 계층의 일례를 나타내는 도면이다.
본 예에서의 메모리 계층은, MMU(107)가 속하는 계층과, 메인 메모리용 MMU(109) 및 캐시 컨트롤러(108)가 속하는 계층을 갖는다.
MMU(107)의 계층에서는, 논리 어드레스가 물리 어드레스로 변환된다.
메인 메모리용 MMU(109)가 속하는 계층에서는, 예를 들어 액세스처로 되는 NAND형 플래시 메인 메모리(104)의 물리 위치 또는 물리 어드레스가 결정된다. 메인 메모리용 MMU(109)가 속하는 계층에서는, 기입 횟수가 소정수 이하(예를 들어 최소)인 페이지 또는 블록을 액세스시키는 제어가 행해진다.
그리고, 메모리 관리 장치(102)는, 결정된 물리 위치에 기초하여, NAND형 플래시 메인 메모리(104)를 액세스한다.
도 3은, 본 실시 형태에 관한 메모리 관리 장치(102)를 포함한 MPU(101)가, NAND형 플래시 메인 메모리(104)의 데이터, 기입 횟수 데이터(106)의 일부, 어드레스 변환 테이블(105)의 일부를 기억하는 경우의 동작의 일례를 나타내는 흐름도이다.
스텝 SS1에 있어서, 메인 메모리용 MMU(109)는, MPU(101)에 의해 사용되는 NAND형 플래시 메인 메모리(104)의 데이터의 일부(최초에는, 선두로부터 1기가바이트분 등이라도 됨)의 데이터를 판독한다. 캐시 컨트롤러(108)는, 판독된 데이터를, 캐시 메모리(103, 122)의 캐시 라인(103b, 122b)에 기입한다.
스텝 SS2에 있어서, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에 보관되어 있는 기입 횟수 데이터(106)의 일부[캐시 메모리(103, 122)에 저장된 데이터에 대한 블록의 기입 횟수 등. 또한, 최초에는, 선두로부터 1기가바이트분 등이라도 됨]를, MPU(101) 내의 액세스 이력 저장부(110)에 카피한다.
스텝 SS3에 있어서, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에 보관되어 있는 어드레스 변환 테이블(105)의 일부[캐시 메모리(103, 122)에 저장된 데이터에 대응하는 블록의 논리 어드레스와 물리 위치의 관계를 나타내는 데이터 등. 또한, 최초에는, 선두로부터 1기가바이트분 등이라도 됨]를, MPU(101) 내의 메인 메모리용 MMU(109)의 어드레스 관계 저장부(123)에 카피한다.
또한, 이 스텝 SS1 내지 SS3은 자유로운 순서로 실행되어도 되고, 병렬로 실행되어도 된다.
도 4는, 본 실시 형태에 관한 메모리 관리 장치(102)를 포함한 MPU(101)에 있어서, 1차 캐시 메모리(103) 또는 NAND형 플래시 메인 메모리(104)로부터 데이터를 판독하는 경우의 동작의 일례를 나타내는 흐름도이다. 또한, 2차 캐시 메모리(122)로부터 데이터를 판독하는 경우에 대해서도, 1차 캐시 메모리(103)의 경우와 마찬가지이다.
스텝 TT1에 있어서, MMU(107) 및 메인 메모리용 MMU(109)는, 판독 대상의 논 리 어드레스를 물리 어드레스로 변환한다.
판독 대상의 물리 어드레스가 1차 캐시 메모리(103)를 나타내는 경우, 스텝 TT2a에 있어서, 제1 캐시 컨트롤러(108a)는, 물리 어드레스에 기초하여 1차 캐시 메모리(103)로부터 판독 대상의 데이터를 판독한다.
판독 대상의 물리 어드레스(물리 위치)가 NAND형 플래시 메인 메모리(104)를 나타내는 경우, 스텝 TT2b에 있어서, 메인 메모리용 MMU(109)는, 물리 어드레스에 대응하는 데이터를, NAND형 플래시 메인 메모리(104)로부터 판독한다.
스텝 TT3b에 있어서, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)로부터 판독한 데이터를, 제1 캐시 컨트롤러(108a) 경유로, 1차 캐시 메모리(103)에 덮어쓴다.
또한, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)로부터 새롭게 판독한 데이터에 대응하는 어드레스 관계 데이터 및 액세스 이력 데이터가 각각 어드레스 관계 저장부(123) 및 액세스 이력 저장부(110)에 기억되어 있지 않는 경우, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105) 및 기입 횟수 데이터(106)에 기초하여 어드레스 관계 저장부(123) 및 액세스 이력 저장부(110)에 새롭게 판독한 데이터에 대응하는 데이터를 기억한다.
도 5는, 본 실시 형태에 관한 메모리 관리 장치(102)를 포함한 MPU(101)로부터, 1차 캐시 메모리(103)의 캐시 라인(103b)으로의 덮어쓰기가 발생하고, 또한 1차 캐시 메모리(103)의 데이터를 NAND형 플래시 메인 메모리(104)에 기억하는 경우의 동작의 일례를 나타내는 흐름도이다. 또한, 2차 캐시 메모리(122)로의 덮어쓰 기가 발생한 경우에 대해서도, 이 1차 캐시 메모리(103)의 경우와 마찬가지이다.
스텝 UU1에 있어서, MMU(107)는, 논리 어드레스로부터 물리 어드레스로의 변환을 행한다.
스텝 UU2에 있어서, 제1 캐시 컨트롤러(108a)는, 물리 어드레스에 따라서, 기입 대상의 데이터를, 1차 캐시 메모리(103)에 기억한다.
스텝 UU3에 있어서, 메인 메모리용 MMU(109)는, 어드레스 관계 저장부(123)의 어드레스 관계 데이터와, 액세스 이력 저장부(110)의 액세스 이력 데이터에 기초하여, 기입 횟수가 임의의 값보다 적은 블록의 위치 또는 가장 기입이 적은 블록의 위치를, NAND형 플래시 메인 메모리(104)에서의 기입 위치로서 선택한다.
스텝 UU4에 있어서, 메인 메모리용 MMU(109)는, NAND형 플래시 메인 메모리(104)에서의 선택된 위치에, 기입 대상의 데이터를 기억한다.
스텝 UU5에 있어서, 메인 메모리용 MMU(109)는, 덮어쓰기 후의 캐시 라인(103b)에 대응하도록, 어드레스 관계 저장부(123)의 어드레스 관계 데이터를 갱신하고, 액세스 이력 저장부(110)의 액세스 이력 데이터를 갱신한다.
스텝 UU6에 있어서, 메인 메모리용 MMU(109)는, 메인 메모리용 MMU(109)에 저장되어 있는 어드레스 관계 데이터와 정합하도록, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)을 갱신하고, 또한 액세스 이력 저장부(110)에 저장되어 있는 어드레스 이력 데이터와 정합하도록, NAND형 플래시 메인 메모리(104)의 기입 횟수 데이터(106)를 갱신한다. 예를 들어, NAND형 플래시 메인 메모리(104)의 기입 횟수 데이터(106)의 갱신은, MPU(101)의 전원이 오프될 때, 또는 MPU(101)의 액세스 이력 저장부(110)의 기입시에 실행된다.
본 실시 형태에 있어서, 메모리 관리 장치(102)는, 기입 횟수에 기초하여 기입을 행하는 블록의 물리 위치를 선택하고 있다. 그러나, 이것 대신에, 메모리 관리 장치(102)는, 불량 영역 또는 불량 블록을 피하는 제어, NAND형 플래시 메인 메모리(104)의 전체 영역 또는 전체 블록을 이격 없이 액세스시키는 제어, 액세스처의 영역 또는 블록의 위치가 분산되도록 하는 제어를 행하는 것으로 해도 된다. 이 경우, 액세스 이력 저장부(110)에는, NAND형 플래시 메인 메모리(104)에 기억되어 있는 불량 영역 또는 불량 블록의 발생 위치, NAND형 플래시 메인 메모리(104)의 기입 위치의 분포 등의 데이터가 기억된다. 또한, 메모리 관리 장치(102)는, 각종 제어를 자유롭게 조합하여, 기입을 행하는 영역 또는 블록의 위치를 선택하는 것으로 해도 된다.
본 실시 형태에 있어서, 메모리 관리 장치(102)는, 캐시 메모리(103)의 데이터 교체시에, NAND형 플래시 메인 메모리(104)의 휴지 수집(garbage collection) 처리 또는 소거를 위한 제어를 행하는 것으로 해도 된다.
본 실시 형태에 있어서, 메인 메모리용 MMU(109)의 어드레스 관계 저장부(123)와 액세스 이력 저장부(110) 중, 적어도 한쪽에 대해, 2차 캐시 메모리를 사용하여 데이터를 저장하는 것으로 해도 된다. 즉, 어드레스 관계 저장부(123)에 기억되어 있는 어드레스 관계 데이터는, 2차 캐시 메모리(122)에 저장되는 것으로 해도 된다. 또한, 액세스 이력 저장부(110)에 기억되는 기입 횟수 등을 포함하는 액세스 이력 데이터는, 2차 캐시 메모리(122)에 저장되는 것으로 해도 된다.
본 실시 형태에 관한 MPU(101)의 메모리 관리 장치(102)에 있어서는, 액세스 이력 저장부(110)에 저장되어 있는 데이터를 사용하여 기입을 행하는 대상으로 되는 NAND형 플래시 메인 메모리(104)의 물리 위치를 선택하고, 라이트 백하는 알고리즘을 채용하고, 이 알고리즘을 실행하는 프로그램을 사용할 수 있다. 예를 들어, 기입 횟수가 많은 영역 또는 블록의 기입을 피하는 등과 같은 고도의 알고리즘을 사용할 수 있다.
이상 설명한 본 실시 형태에 관한 메모리 관리 장치(102)에 있어서는, MPU(101) 내에서, MMU(107), 제1 캐시 컨트롤러(108a), 제1 캐시 컨트롤러(108b), 캐시 메모리(103), 캐시 메모리(122), 메인 메모리용 MMU(109), 액세스 이력 저장부(110)가 통합된 구성이 채용되고 있다. 즉, 본 실시 형태에 있어서는, NAND형 플래시 메인 메모리(104)의 메모리 맵핑 관리가 MPU(101)의 메모리 관리 장치(102)에서 실행되는 아키텍처(architecture)가 실현되고 있다.
이에 의해, 메모리 계층에 있어서, 오버헤드가 큰 계층을 삭제할 수 있다.
본 실시 형태에 있어서는, 일반적인 NAND형 플래시 메모리에 포함되어 있는 메모리 컨트롤러의 동작을, MPU(101)측에서 실행한다. 이와 같이, MPU의 동작과 메모리 컨트롤러의 동작을 조합하여 MPU(101)에서 실행함으로써, 메모리 제어를 협조시킬 수 있다.
본 실시 형태에 있어서는, 다층화되어 있었던 메모리 계층을 단순화할 수 있어, 액세스에 필요한 시간, 제조시에 필요한 시간, 제조시에 필요한 비용 등의 다양한 비용을 삭감할 수 있다.
본 실시 형태에 있어서는, 메모리 계층이 심플해지기 때문에, 프로그래머는 어느 계층에서 MMU 변환, 캐시 메모리의 치환이 발생하는지를 파악하는 것이 용이하며, 프로그램 옵티마이즈를 용이하게 행할 수 있다.
본 실시 형태에 있어서는, MPU(101)의 캐시 동작과 메인 메모리의 액세스 동작 사이에서 최적화를 용이하게 실현할 수 있다.
종래의 불휘발성 메모리에 대해서는, 이 불휘발성 메모리로의 액세스를 제어하는 메모리 컨트롤러가 MPU와 별도로 준비되어 있었다. 그리고, 종래에 있어서, MPU가 불휘발성 메모리에 액세스하는 경우에는, MPU는, I/O 인터페이스를 통해 메모리 컨트롤러에 데이터 전송을 행하고, 메모리 컨트롤러는, MPU로부터 수신한 데이터에 기초하여 불휘발성 메모리로의 액세스 제어를 행하고 있었다.
이에 반해, 본 실시 형태에 있어서는, 불휘발성 메모리가 메인 메모리 영역에 배치되고, 오퍼레이팅 시스템은, 메인 메모리와 동일한 레벨로 불휘발성 메모리에 액세스 가능하다.
이에 의해, 본 실시 형태에 있어서는, I/O 인터페이스를 통한 데이터의 전송의 필요가 없고, 고속의 액세스가 가능하고, 저렴한 불휘발성 메모리를 메인 메모리로서 사용할 수 있다.
(제2 실시 형태)
본 실시 형태에 있어서는, 상기 제1 실시 형태의 변형예에 대해 설명한다.
도 6은, 본 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도이다.
MPU(111)에는, 본 실시 형태에 관한 메모리 관리 장치(112)가 포함되어 있다. 통합 MMU(113)는, 상기 제1 실시 형태에 관한 MMU(107)와 메인 메모리용 MMU(109)를 통합한 기능을 실현한다.
본 실시 형태에 있어서, 1차 캐시 메모리(103)의 태그 및 2차 캐시 메모리(122)의 태그는, 프로세스 ID와 논리 어드레스에서, 각각 1차 캐시 메모리(103) 및 2차 캐시 메모리(122)를 관리하기 위해 사용된다.
본 실시 형태에 있어서는, 프로세서인 MPU(111)의 통합 MMU(113)에 의해, 1차 캐시 메모리(103), 2차 캐시 메모리(122), NAND형 플래시 메인 메모리(104)의 메모리 맵핑 관리가 행해지고, 각종 메모리의 일괄 관리가 행해진다.
도 7은, 본 실시 형태에 관한 메모리 관리 장치(112)의 메모리 계층의 일례를 나타내는 도면이다.
본 예에서의 메모리 계층은, 통합 MMU(113)와 캐시 컨트롤러(108)가 동일한 계층에 속해 있다. 메모리 관리 장치(112)는, 1차 캐시 메모리(103) 및 2차 캐시 메모리(122)에 대한 어드레스 변환과, NAND형 플래시 메인 메모리(104)에 대한 어드레스 변환을 통합하고, 동등한 메모리 계층으로 취급한다. 메모리 관리 장치(112)는, 임의의 기준을 따라, 캐시 메모리(103), 캐시 메모리(122), NAND형 플래시 메인 메모리(104) 중 어느 영역을 액세스할지 결정한다.
이 메모리 계층에서는, 논리 어드레스가 NAND형 플래시 메인 메모리(104)의 물리 위치로 변환되는 경우, 기입 횟수가 소정수 이하인 영역 또는 블록을 액세스시키는 제어가 행해진다.
그리고, 메모리 관리 장치(112)는, 결정된 물리 위치에 기초하여, NAND형 플래시 메인 메모리(104)를 액세스한다.
이상 설명한 본 실시 형태에 있어서는, 상기 제1 실시 형태에 관한 MMU(107)와 메인 메모리용 MMU(109)를 통합함으로써, 구성이 심플해지고, 액세스에 필요한 시간 비용이나 제조시에 필요한 경제 비용 등의 다양한 비용을 삭감할 수 있다.
통합 MMU(113)를 사용함으로써, 1차 캐시 메모리(103) 및 2차 캐시 메모리(122)에 대한 어드레스 변환과, NAND형 플래시 메인 메모리(104)에 대한 어드레스 변환을 통합할 수 있다. 예를 들어, 임의의 프로세스에 관한 기억 내용을, 가능한 한 NAND형 플래시 메인 메모리(104) 내의 가까운 위치에 기억함으로써, 고속 액세스가 가능해진다. 또한, 예를 들어 기입 횟수가 적은 영역 또는 블록만을 선택하여 하나의 프로세스에 할당할 수 있다.
(제3 실시 형태)
본 실시 형태에 있어서는, 상기 제1 또는 제2 실시 형태에 관한 메모리 관리 장치(102, 112)의 변형예에 대해 설명한다.
도 8은, 상기 도 1에 나타낸 제1 실시 형태에 관한 메모리 관리 장치(102)의 변형예를 나타내는 도면이다.
상기 제1 실시 형태에 있어서는, 물리 위치에 기초하는 NAND형 플래시 메인 메모리(104)로의 액세스는, 메인 메모리용 MMU(109)에 의해 실행하고 있다. 그러나, 물리 위치에 기초하는 NAND형 플래시 메인 메모리(104)로의 액세스는, 캐시 컨트롤러(108)가 행하는 것으로 해도 된다.
이 경우, 메인 메모리용 MMU(109)는, 논리 어드레스를 물리 위치로 변환하는 제어를 행하고, 이 메인 메모리용 MMU(109)에서 선택된 물리 위치에 기초하여, 캐시 컨트롤러(108)는, NAND형 플래시 메인 메모리(104)를 액세스한다. 또한, 본 실시 형태에 있어서, 캐시 컨트롤러(108)는, 메인 메모리용 MMU(109) 대신에, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)의 판독 및 갱신, 기입 횟수 데이터(106)의 판독 및 갱신을 하는 것으로 해도 된다.
도 9는, 상기 도 6에 나타낸 제2 실시 형태에 관한 메모리 관리 장치(112)의 변형예를 나타내는 도면이다.
상기 제2 실시 형태에 있어서는, 물리 위치에 기초하는 NAND형 플래시 메인 메모리(104)로의 액세스는, 통합 MMU(113)에 의해 실행하고 있다. 그러나, 물리 위치에 기초하는 NAND형 플래시 메인 메모리(104)로의 액세스는, 캐시 컨트롤러(108)가 행하는 것으로 해도 된다.
이 경우, 통합 MMU(113)는, 논리 어드레스를 물리 위치로 변환하는 제어를 행하고, 이 통합 MMU(113)에서 선택된 물리 위치에 기초하여, 캐시 컨트롤러(108)는, NAND형 플래시 메인 메모리(104)를 액세스한다. 또한, 본 실시 형태에 있어서, 캐시 컨트롤러(108)는, NAND형 플래시 메인 메모리(104)의 어드레스 변환 테이블(105)의 판독 및 갱신, 기입 횟수 데이터(106)의 판독 및 갱신을 하는 것으로 해도 된다.
(제4 실시 형태)
본 실시 형태에 있어서는, 상기 제1 내지 제3 실시 형태에 관한 메모리 관리 장치(102, 112)의 적용예에 대해 설명한다.
도 10은, 본 실시 형태에 관한 메모리 관리 장치의 적용예를 나타내는 블록도이다.
예를 들어, 게임기나, 카 네비게이션 시스템에서는, 디스크 드라이브에 의해 판독된 데이터 또는 프로그램이 메인 메모리에 한번 기입되고, 그 후, 이 메인 메모리에 기입된 데이터 또는 프로그램이 다수 판독된다. 본 실시 형태에 있어서, 메모리 관리 장치(120)는, 게임기에 적용되는 경우에 대해 설명하지만, 카 네비게이션 시스템 등의 다른 장치에 적용되는 경우도 마찬가지이다. 메모리 관리 장치(120) 대신에, 상기 메모리 관리 장치(102, 112)를 사용하는 것으로 해도 된다.
포터블 게임 콘솔 프로세서(114)는 그래픽스 프로세서(115)와 프로세서(116)를 포함한다.
그래픽스 프로세서(115), 프로세서(116), 2차 캐시 메모리(117), NAND형 플래시 메인 메모리(104), 디스크 드라이브(118)는 버스(119)에 접속되어 있다.
프로세서(116)는, 1차 캐시 메모리(103), 2차 캐시 메모리(117)를 액세스하기 위한 2차 캐시 태그(121), 캐시 컨트롤러(108), 통합 MMU(113)를 포함한다.
또한, 프로세서(116)는, 액세스 이력 저장부(110)를 포함하지만, 이 도 10에서는 생략하고 있다. 또한, 프로세서(116)는, 1차 캐시 메모리(103) 또는 2차 캐시 메모리(117)를, 액세스 이력 저장부(110)로서 사용하는 것으로 해도 된다.
캐시 컨트롤러(108)는, 1차 캐시 메모리(103), 2차 캐시 메모리(7)로의 액세스를 제어한다. 2차 캐시 메모리(117)에는, 예를 들어 DRAM을 사용할 수 있다. 본 실시 형태에 있어서, 2차 캐시 메모리(117)는, 포터블 게임 콘솔 프로세서(114)와 분리되어 있다.
2차 캐시 메모리(117)에 대한 밴드 폭은, NAND형 플래시 메인 메모리(104)의 10배 정도로 한다. 디스크 드라이브(118)로서는, 예를 들어 광 디스크 드라이브를 사용할 수 있다.
본 실시 형태에 있어서, NAND형 플래시 메인 메모리(104)로의 기입은, 게임 카트리지의 교환시로 하고, 다른 시점에서는 NAND형 플래시 메인 메모리(104)는 리드 온리로 이용되는 것으로 한다. 빈번하게 기입되는 데이터 또는 프로그램 코드, 빈번하게 판독되는 데이터 또는 프로그램 코드는, 2차 캐시 메모리(117)에 저장된다. 또한 빈번하게 판독되는 데이터 또는 프로그램 코드는, 1차 캐시 메모리(103)에 저장된다.
또한, 예를 들어 1차 캐시 메모리(103) 또는 2차 캐시 메모리(117)에 기억되어 있는 데이터 또는 프로그램 코드 중, 사용 빈도가 낮은 데이터 또는 프로그램 코드를 NAND형 플래시 메인 메모리(104)에 기입하고, NAND형 플래시 메인 메모리(104)에 기억되어 있는 데이터 또는 프로그램 코드 중, 사용 빈도가 높은 데이터 또는 프로그램 코드를 1차 캐시 메모리(103) 또는 2차 캐시 메모리(117)에 기억하는 것으로 해도 된다.
본 실시 형태에서는, 예를 들어 1차 캐시 메모리(103)는 64킬로바이트 정도이고, 2차 캐시 메모리(117)는 16 내지 128메가바이트 정도이고, NAND형 플래시 메인 메모리(104)는 1기가바이트 정도인 것으로 한다.
예를 들어, 그래픽스ㆍ프로세서(115)의 처리 능력은, 1/10 밴드 폭의 NAND형 플래시 메인 메모리(104)의 속도로 균형을 취하거나, 그 2 내지 3배 정도의 능력으로 한다. 사용 빈도가 낮은 데이터는, NAND형 플래시 메인 메모리(104)로부터 판독하고, 사용 빈도가 높은 데이터는, 1차 캐시 메모리(103) 또는 2차 캐시 메모리(117)로부터 판독한 것으로 한다.
본 실시 형태에 있어서는, 캐시 교체(캐시 미스 등)시에, NAND형 플래시 메인 메모리(104)의 휴지 수집 처리나 삭제(erase)를 행하는 등과 같은 최적화를 실현할 수 있는 프로세서(116)를 제공할 수 있어, 고도의 최적화를 행할 수 있다.
또한, 2차 캐시 메모리(117)의 엔트리 사이즈를 1메가바이트 정도로 하면, NAND형 플래시 메인 메모리(104)와의 호환성이 양호해진다.
본 실시 형태에 있어서는, 예를 들어 이중으로 가상 메모리 변환이 행해져 오버헤드가 커지는 것을 방지할 수 있다.
본 실시 형태에 있어서는, 프로세서(116)에 통합 MMU(113)가 포함됨으로써, 1차 캐시 메모리(103)와 2차 캐시 메모리(117)와 NAND형 플래시 메인 메모리(104)를 일괄 관리할 수 있다.
그리고, 본 실시 형태에서는, 리줌(resume)시에 보존하는 데이터량을 삭감할 수 있다.
본 실시 형태에 있어서는, NAND형 플래시 메인 메모리(104)에 데이터 또는 프로그램을 기억함으로써, 디스크 드라이브(118)로의 액세스를 삭감할 수 있어, 대기 시간을 삭감할 수 있고, 사용자의 조작성 및 만족도를 향상시킬 수 있다.
본 실시 형태에 있어서는, 2차 캐시 메모리(117)(DRAM)보다도 메모리 단가가 저렴한 NAND형 플래시 메인 메모리(104)를 사용함으로써, 보다 많은 데이터 또는 프로그램을 고속으로 액세스할 수 있다.
(제5 실시 형태)
본 실시 형태에 있어서는, 프로세서와 메인 메모리 사이에 포함된 메모리 관리 장치에 대해 설명한다.
도 11은, 본 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도이다.
본 실시 형태에 관한 메모리 관리 장치(124)는, 시스템 버스(130) 경유로, 복수의 프로세서(예를 들어 Codec IP, Graphic IP를 포함함)(1251 내지 1254)와 접속되어 있다. 메모리 관리 장치(124)는, 멀티 프로세서 구성에 대해 적용된다. 또한, 메모리 관리 장치(124)는, 예를 들어 NAND형 플래시 메모리 등과 같은 불휘발성의 메인 메모리(126)와 접속되어 있다. 또한, 본 실시 형태에 있어서, 프로세서의 수는 1 또는 2 이상이며 자유롭게 변경 가능하다.
메인 메모리(126)에서는, 기입 및 판독은, 페이지라고 불리는 복수 비트 단위로 행해진다. 소거는, 블록이라 불리는, 복수의 페이지를 총괄한 단위로 일괄하여 행해진다.
복수의 프로세서(1251 내지 1254) 중 몇 개에서는, 논리 어드레스를 포함하는 프로세스가 실행되고 있다. 본 예에서는, 프로세서(1251, 1252, 1254)에서 프로세스(1271, 1272, 1274)가 실행되고 있다. 또한, 프로세스(1271, 1272, 1274)는 오퍼레이팅 시스템이라도 된다.
복수의 프로세서(1251 내지 1254)의 각각은, 1차 캐시 메모리(1281 내지 1284), 2차 캐시 메모리(1291 내지 1294)를 포함한다.
메모리 관리 장치(124)는, 웨어 레벨링과, 논리 어드레스로부터 물리 어드레스로의 변환을 행한다.
메모리 관리 장치(124)는, 메인 메모리(126)의 페이지 단위, 페이지 사이즈의 정수배 단위, 블록 단위, 블록 사이즈의 정수배 단위로 웨어 레벨링을 행한다. 웨어 레벨링 카운터는, 메인 메모리(126)의 용장(redundancy) 영역(126a)에 기억된다. 용장 영역(126a)은, 메인 메모리(126)의 페이지 또는 블록마다 설치되어 있는 용장 영역이다. 메모리 관리 장치(124)는, 메모리 공간에 맵핑을 행하는 경우에, 웨어 레벨링을 고려하여 메모리 확보를 행한다.
메모리 관리 장치(124)는, 리무버블 메모리도 메인 메모리로서 취급하고, 메모리 공간에 맵핑한다.
이 메모리 관리 장치(124)는, 복수의 프로세서(1251 내지 1254)측이라기보다 오히려 메인 메모리(126)측에 포함되어 있다. 그러나, 메모리 관리 장치(124)는, 복수의 프로세서(1251 내지 1254)측에 포함되는 것으로 해도 된다.
메모리 관리 장치(124)는, 명령과 데이터로, 페이지 사이즈를 절환한다. 예를 들어, 명령용의 페이지 사이즈는 16킬로바이트 등과 같이 작은 사이즈로 하고, 데이터용의 페이지 사이즈는 512킬로바이트 등과 같이 큰 사이즈로 한다.
메인 메모리(126)는, 메모리 관리 장치(124)의 페이지 사이즈(프로세스 또는 OS)와 동일한 메모리 페이지 사이즈 또는 메모리 관리 장치(124)의 페이지 사이즈의 배수로 되는 메모리 페이지 사이즈를 갖는다.
1차 캐시 메모리(1281 내지 1284) 및 2차 캐시 메모리(1291 내지 1294)와, 메인 메모리(126) 사이에서는, 일괄하여 페이지의 전송이 실행된다. 이 일괄의 전송은, 예를 들어 메인 메모리의 페이지 단위, 페이지 사이즈의 정수배 단위, 블록 단위(예를 들어, 256킬로바이트 내지 512킬로바이트), 또는 블록 사이즈의 정수배 단위로 행해진다.
1차 캐시 메모리(1281 내지 1284)에 대한 액세스 및 2차 캐시 메모리(1291 내지 1294)에 대한 액세스는 논리 어드레스에 기초하여 행해진다. 시스템 버스(130) 상에서도, 논리 어드레스가 사용된다.
통일적인 메모리 관리 장치(124)는, 복수의 프로세서(1251 내지 1254)에 대해, 프로세스 레벨의 논리 어드레스로부터 물리 어드레스로의 변환, 또한 메인 메모리(126)의 페이지 단위, 페이지 사이즈의 정수배 단위, 블록 단위, 또는 블록 사이즈의 정수배 단위로의 웨어 레벨링을 위한 논리 페이지 또는 논리 블록으로부터 물리 페이지 또는 물리 블록으로의 변환을 종합하여 행한다.
본 실시 형태에 있어서는, 도 12에 나타낸 형식의 시스템 논리 어드레스(131)가 사용된다. 이 시스템 논리 어드레스(131)는, 프로세서 ID와 프로세스 ID, 프로세스 내 논리 어드레스를 포함한다. 또한, 프로세서 ID와 프로세스 ID 중 적어도 하나는 변환되고(예를 들어 해싱 등을 이용하여 ID의 길이가 짧아지고), 시스템 논리 어드레스(131)는, 변환 후의 내용을 포함하는 것으로 해도 된다. 예를 들어, 프로세서 ID와 프로세스 ID를 해싱에 의해 변환하고, 시스템 논리 어드레스(131)는, 이 해싱에 의해 변환된 비트와 프로세스 내 논리 어드레스를 포함하는 것으로 해도 된다.
메인 메모리(126)는, 시스템 전체에서 단일의 페이지 테이블(126b)을 기억한다. 즉, 메인 메모리(126)는, 프로세스(1271, 1272, 1274)마다의 페이지 테이블을 갖는 것이 아니라, 프로세스(1271, 1272, 1274) 전체에서 통일한 페이지 테이블(126b)을 갖는다.
본 실시 형태에 있어서는, 메인 메모리(126)에 하드 디스크 드라이브(HDD)와 동일한 정도의 용량을 갖는 메인 메모리(126)를 사용한다. 이 경우, 물리 메모리보다도 큰 메모리 공간을 사용하기 위해 2차 기억(스왑 아웃)을 사용할 필요는 없다. 종래에 있어서는, 물리 메인 메모리가 예를 들어 DRAM이며 기억 용량이 1GB 정도이지만, 프로세스마다 4GB의 논리 메모리 공간을 사용하고자 하는 경우에, 보다 기억 용량이 큰 하드 디스크 드라이브 상에 2차 기억 영역을 확보하여, 스왑 인/스왑 아웃을 행할 필요가 있었다. 그러나, 본 실시 형태에서는, 메인 메모리(126)가 하드 디스크 드라이브와 동일 레벨 이상의 기억 용량을 갖기 때문에, 2차 기억을 사용할 필요가 없다.
따라서, 장치 구성 및 동작을 심플하게 할 수 있다.
본 실시 형태에 있어서는, 인스턴트 온/오프(ON/OFF)를 행할 수 있어, 리줌 등을 고속화할 수 있다.
종래에 있어서는, 실행하기 전에 파일을 로드할 필요가 있었다. 이에 반해, 본 실시 형태에 있어서는, 캐시 메모리(1281 내지 1284, 1291 내지 1294) 또는 메인 메모리(126) 상의 실행 어드레스로 점프하는 것만으로 좋고, 실행하기 전에 파일을 로드할 필요가 없다.
(제6 실시 형태)
본 실시 형태에 있어서는, 상기 제5 실시 형태의 변형예에 대해 설명한다.
도 13은, 본 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도이다.
본 실시 형태에 관한 메모리 관리 장치에 있어서, 복수의 메모리 관리 장치(1241, 1242)는, 네트워크(133) 경유로, 복수의 프로세서(Codec IP, Graphic IP를 포함함)(1251 내지 1254)와 접속되어 있다. 메모리 관리 장치(1241, 1242)는, 예를 들어 NAND형 플래시 메모리 등과 같은 불휘발성의 복수의 메인 메모리(1261, 1262)와 접속되어 있다.
또한, 메모리 관리 장치의 수, 메인 메모리의 수는 자유롭게 변경 가능하다.
메인 메모리(1261)는, 상기 제5 실시 형태에서의 메인 메모리(126)와 같은 특징을 갖고, 웨어 레벨링 카운터를 기억하는 용장 영역(1261a), 프로세스(1271, 1272, 1274) 전체에서 통일한 페이지 테이블(1261b)을 갖는다. 메인 메모리(1262)도, 이 메인 메모리(1261)와 같은 특징을 갖는다.
본 실시 형태에서 사용되는 논리 어드레스(134)는, 도 14에 나타낸 바와 같이, 네트워크(133)의 IP 어드레스 또는 IPv6 어드레스, 프로세서 ID와 프로세스 ID, 프로세스 내 논리 어드레스를 포함한다. 또한, 각 어드레스 및 ID 중 적어도 하나는 변환되고(예를 들어 해싱 등을 이용하여 ID의 길이가 짧아지고), 논리 어드레스(134)는, 변환 후의 내용을 포함하는 것으로 해도 된다. 예를 들어, IP 어드레스 또는 IPv6 어드레스, 프로세서 ID와 프로세스 ID를 해싱에 의해 변환하고, 논리 어드레스(134)는, 이 해싱에 의해 변환된 비트와 프로세스 내 논리 어드레스를 포함하는 것으로 해도 된다.
메인 메모리(1261, 1262)는, 메모리 관리 장치(1241, 1242)의 페이지 사이즈와 동일한 메모리 페이지 사이즈 또는 메모리 관리 장치(1241, 1242)의 페이지 사이즈의 정수배로 되는 메모리 페이지 사이즈를 갖는다.
1차 캐시 메모리(1281 내지 1284) 또는 2차 캐시 메모리(1291 내지 1294)와, 메인 메모리(1261, 1262) 사이에서는, 일괄하여 페이지의 전송이 실행된다. 이 일괄의 전송은, 예를 들어 메인 메모리의 페이지 단위, 페이지 사이즈의 정수배 단위, 블록 단위(예를 들어, 256킬로바이트 내지 512킬로바이트), 또는 블록 사이즈의 정수배 단위로 행해진다.
본 실시 형태에 있어서, 1차 캐시 메모리(1281 내지 1284)에 대한 액세스, 및 2차 캐시 메모리(1291 내지 1294)에 대한 액세스는, 논리 어드레스에 기초하여 실행된다. 네트워크(133) 상에서도, 논리 어드레스가 사용된다.
통일적인 메모리 관리 장치(1241, 1242)는, 복수의 프로세서(1251 내지 1254)에 대해, 프로세스 레벨의 논리 어드레스로부터 물리 어드레스로의 변환, 또한 불휘발성의 메인 메모리(1261, 1242)의 페이지 단위, 페이지 사이즈의 정수배 단위, 블록 단위, 또는 블록 사이즈의 정수배 단위로의 웨어 레벨링을 위한 논리 페이지 또는 논리 블록으로부터 물리 페이지 또는 물리 블록으로의 변환을 종합하여 행한다.
본 실시 형태에 있어서는, 네트워크(133) 경유의 광대한 메모리 공간에 있어서 상기 제5 실시 형태와 같은 효과를 얻을 수 있다.
(제7 실시 형태)
본 실시 형태에 있어서는, 상기 제5 및 제6 실시 형태의 변형예에 대해 설명한다. 이하에 있어서는, 상기 제5 실시 형태의 변형예에 대해 설명하지만, 상기 제6 실시 형태에 대해서도 마찬가지로 변형 가능하다.
도 15는, 본 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도이다.
복수의 프로세서(1351 내지 1354)는, 시스템 버스(130) 경유로, 메인 메모리(126)와 접속되어 있다. 또한, 본 실시 형태에 있어서, 프로세서의 수는 자유롭게 변경 가능하다.
복수의 프로세서(1351 내지 1354) 중 몇 개에서는, 논리 어드레스를 포함하는 프로세스가 실행되고 있다. 본 예에서는, 프로세서(1351, 1352, 1354)에서 프로세스(1271, 1272, 1274)가 실행되고 있다. 프로세스(1271, 1272, 1274)는 오퍼레이팅 시스템이라도 된다.
복수의 프로세서(1351 내지 1354)의 각각은, 1차 캐시 메모리(1361 내지 1364), 2차 캐시 메모리(1371 내지 1374), 메모리 관리 장치(1381 내지 1384)를 포함한다.
메모리 관리 장치(1381 내지 1384)는, 웨어 레벨링과, 논리 어드레스로부터 물리 어드레스로의 변환을 행한다. 메모리 관리 장치(1381 내지 1384)는, 복수의 프로세서(1351 내지 1354)측에 포함되어 있다.
메인 메모리(126)는, 메모리 관리 장치(1381 내지 1384)의 페이지 사이즈와 동일한 메모리 페이지 사이즈 또는 메모리 관리 장치(1381 내지 1384)의 페이지 사이즈의 정수수로 되는 메모리 페이지 사이즈를 갖는다.
1차 캐시 메모리(1361 내지 1364) 또는 2차 캐시 메모리(1371 내지 1374)와, 메인 메모리(126) 사이에서는, 일괄하여 페이지의 전송이 실행된다. 이 일괄의 전송은, 예를 들어 메인 메모리의 블록(페이지의 정수배) 단위(예를 들어, 256킬로바이트 내지 512킬로바이트)로 행해진다.
본 실시 형태에 있어서, 1차 캐시 메모리(1361 내지 1364)에 대한 액세스, 및 2차 캐시 메모리(1371 내지 1374)에 대한 액세스에서는 논리 어드레스가 사용된다. 시스템 버스(130) 상에서는, 물리 어드레스가 사용된다.
복수의 프로세서(1351 내지 1354)마다 포함되는 메모리 관리 장치(1381 내지 1384)는, 프로세스 레벨의 논리 어드레스로부터 물리 어드레스로의 변환, 또한 메인 메모리(126)의 페이지 단위, 페이지 사이즈의 정수배 단위 또는 블록 단위로의 웨어 레벨링을 위한 논리 페이지 또는 논리 블록으로부터 물리 페이지 또는 물리 블록으로의 변환을 행한다.
이상 설명한 본 실시 형태에 있어서는, 메모리 관리 장치(1381 내지 1384)를 프로세서(1351 내지 1354)측에 설치한 경우라도, 상기 제5 실시 형태와 같은 효과 를 얻을 수 있다.
(제8 실시 형태)
본 실시 형태에서는, 상기 제5 실시 형태의 상세에 대해 설명한다.
도 16은, 본 실시 형태에 관한 메모리 관리 장치(124)의 구성의 일례를 나타내는 블록도이다.
NAND형 플래시 메인 메모리(126)는, 물리 어드레스에 대응하는 물리 블록(139), 페이지 테이블(126b), 메모리 사용 정보(140), 메모리 고유 정보(141)를 포함한다.
각 프로세서(1251 내지 1254)의 1차 캐시 메모리(1281 내지 1284), 2차 캐시 메모리(1291 내지 1294)의 캐시 라인 사이즈와, NAND형 플래시 메인 메모리(126)의 블록 사이즈 또는 페이지 사이즈의 정수배는 동일한 사이즈이며, 데이터 전송의 효율화가 도모되고 있다.
NAND형 플래시 메인 메모리(126)에 있어서, 각종의 데이터는, 예를 들어 데이터 D1과 같이 복수의 물리 블록(139)에 걸쳐 존재하는 것으로 해도 된다. 또한, 예를 들어 복수의 데이터(D1, D2)와 같이, 복수의 데이터가 하나의 물리 블록(139)에 존재하는 것으로 해도 된다.
그리고, 각 데이터(D1, D2)는 고유의 판독 기입 빈도 정보(E1, E2)를 갖는 것으로 해도 된다. 예를 들어, 각 데이터(D1, D2)는 정적 정보와 동적 정보 중 적어도 한쪽을 포함하고 있다. 정적 정보는, 당초부터 결정되어 있는 값이다. 동적 정보는, 실제로 그 데이터가 기입된 횟수, 판독된 횟수를 포함한다.
예를 들어, 디지털 카메라의 화상 데이터의 정적 정보로서, 촬영된 직후에2시간에 1회 판독 및 기입이 행해지는 취지의 정보, 촬영되어 3일 경과 후에 2주간에 한번 판독이 행해지고, 기입은 행해지지 않는 취지의 정보 등이 기억된다. 또한, 예를 들어 웹 브라우저의 캐시 정보의 정적 정보로서, 수분에 1회 기입 및 판독이 행해지는 취지의 정보, 어느 정도 이상 액세스되는 사이트의 정보가 1일에 1회 기입되는 취지의 정보, 주기성의 액세스 패턴이 있는 경우에는 그 정보가 기입되는 취지의 정보, 소정의 시간에 있어서 기입이 많은 취지의 정보 등이 기억된다.
정적 정보는, 다양한 데이터의 종류에 대해, 효과적인 값을 설정할 필요가 있다. 이 정적 정보의 설정 파일은, 네트워크 상에서 공유되는 것으로 해도 된다.
페이지 테이블(126b)은 전체 시스템에서 하나이면 된다. 혹은, 페이지 테이블(126b)은 없어도 된다.
메모리 사용 정보(140)는, 각 메모리 영역의 판독 기입 횟수와, 각 데이터의 판독 기입 횟수를 포함한다. 보다 상세하게 설명하면, 예를 들어 메모리 사용 정보(140)는, 각 메모리 영역(페이지 또는 블록)에 대해, 기입 횟수, 판독 횟수, 이 영역 내에 존재하는 데이터 정보(개수, 종류, 각 데이터 고유의 판독 횟수, 기입 횟수 등을 포함함)를 포함한다.
메모리 고유 정보(141)는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈, 블록 사이즈, 기입 가능 횟수, 판독 가능 횟수 등을 포함한다. 보다 상세하게 설명하면, 예를 들어 메모리 고유 정보(141)는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈, 블록 사이즈, 전체 기억 용량, SLC(Single Level Cell) 영역 정보 [블록 위치, 사이즈, 판독 가능 횟수(판독 가능 횟수의 예측치라도 됨), 기입 가능 횟수(기입 가능 횟수의 예측치라도 됨) 등을 포함함], MLC(Multi Level Cell) 영역 정보(블록 위치, 사이즈, 판독 가능 횟수, 기입 가능 횟수 등을 포함함]를 포함한다.
메모리 관리 장치(124)는, 각 프로세스(OS라도 됨)용 논리 어드레스를 물리 어드레스로 변환하고, NAND형 플래시 메인 메모리(126)용의 논리 어드레스를 물리 어드레스로 변환한다.
또한, 메모리 관리 장치(124)는, 데이터(D1, D2) 고유의 판독 기입 빈도 정보(E1, E2), 메모리 사용 정보(140), 메모리 고유 정보(141)에 기초하여, 최적의 웨어 레벨링을 실행한다.
메모리 관리 장치(124)는 마이크로 프로세서(142), 작업 메모리(143), 정보 레지스터(144), 캐시 메모리(145)를 포함한다.
마이크로 프로세서(142)는 정보 레지스터(144), 작업 메모리(143)를 이용하면서, 메모리 관리를 실행한다. 캐시 메모리(145)는, 각 프로세서(1251 내지 1254)로부터의 데이터 및 NAND형 플래시 메인 메모리(126)로부터의 데이터의 일시 보존 등에 사용된다. 또한, 캐시 메모리(145)는 외장형의 DRAM이라도 된다.
도 17은, 마이크로 프로세서(142)의 기능의 일례를 나타내는 블록도이다.
마이크로 프로세서(142)는 취득 기능(142a), 어드레스 변환 기능(142b), 액세스 기능(142c), 전송 기능(142d)을 포함한다.
복수의 프로세서(1251 내지 1254) 중 어느 하나가, NAND형 플래시 메인 메모 리(126)의 데이터를 판독하는 경우, 취득 기능(142a)은, 복수의 프로세서(1251 내지 1254) 중 어느 하나로부터, 판독 논리 어드레스를 취득한다.
어드레스 변환 기능(142b)은, 취득 기능(142a)에 의해 취득된 판독처 논리 어드레스를, NAND형 플래시 메인 메모리(126)의 판독처 물리 어드레스로 변환한다. 예를 들어, NAND형 플래시 메인 메모리(126)는, 복수의 그룹 속성을 갖는 영역으로 분할되어 있고, 각각의 그룹 속성이 메모리 고유 정보(141)로서 보유되어 있는 것으로 한다. 이 경우, 어드레스 변환 기능(142b)은, 어느 하나의 프로세서 상에서 동작하는 파일 관리 프로그램(프로세스)에 의해 정의된 데이터(D1, D2) 고유의 판독 기입 빈도 정보(E1, E2)와, 메모리 고유 정보(141)를 참조하여, 데이터(D1, D2) 고유의 판독 기입 빈도 정보(E1, E2)에 대응하는 그룹 속성의 영역 내에 기입처 물리 어드레스를 대응시킨다.
액세스 기능(142c)은, NAND형 플래시 메인 메모리(126)로부터, 판독처 물리 어드레스에 대응하는 데이터를 판독한다. 여기서, 이 판독되는 데이터의 데이터 사이즈는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈의 정수배 또는 블록 사이즈로 한다.
전송 기능(142d)은, 판독된 데이터를, 판독 논리 어드레스를 발행한 프로세서의 캐시 메모리에 전송한다. 여기서, 판독 논리 어드레스를 발행한 프로세서의 캐시 메모리의 캐시 사이즈는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈, 페이지 사이즈의 정수배 또는 블록 사이즈에 의존하고 있다.
복수의 프로세서(1251 내지 1254) 중 어느 하나가, NAND형 플래시 메인 메모 리(126)로 데이터를 기입하는 경우, 취득 기능(142a)은, 프로세서로부터, 기입처 논리 어드레스와, 기입 데이터를 취득한다. 여기서, 기입 데이터의 사이즈는 캐시 사이즈로 한다.
어드레스 변환 기능(142b)은, 취득 기능(142a)에 의해 취득된 기입처 논리 어드레스를, NAND형 플래시 메인 메모리(126)의 기입처 물리 어드레스로 변환한다.
액세스 기능(142c)은, NAND형 플래시 메인 메모리(126)의 기입처 물리 어드레스에 대응하는 위치에, 기입 데이터를 기입한다.
마이크로 프로세서(142)의 어드레스 변환 기능(142b)은, 데이터 고유의 판독 기입 빈도 정보, 메모리 사용 정보(140)와, 메모리 고유 정보(141) 중 적어도 하나에 기초하여, 웨어 레벨링을 행한다.
도 18은, 메모리 관리 장치(124)의 전송 알고리즘의 제1 동작의 예를 나타내는 도면이다.
메모리 관리 장치(124)의 마이크로 프로세서(142)는, 기동시에, 메모리 사용 정보(140) 및 메모리 고유 정보(141)를 판독 출력하고, 정보 레지스터(144)에 저장한다. 메모리 고유 정보(141)에는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈 및 블록 사이즈가 포함되어 있다. 각 프로세서(1251 내지 1254)의 캐시 사이즈는, NAND형 플래시 메인 메모리(126)의 페이지 사이즈, 페이지 사이즈의 정수배, 블록 사이즈, 또는 블록 사이즈의 정수배이다.
종래부터 사용되고 있는 프로세서에 메모리 관리 장치(124)를 적용하는 경우이며, 이 종래의 프로세서에 대해 캐시 사이즈를 변경할 수 없는 경우에는, 마이크 로 프로세서(142)는, 작업 메모리(143) 또는 캐시 메모리(145)에서 버퍼링을 행하고, 프로세서(1251 내지 1254)의 캐시 사이즈와 NAND형 플래시 메인 메모리(126)의 페이지 사이즈, 페이지 사이즈의 정수배, 블록 사이즈, 또는 블록 사이즈의 정수배와의 차를 정합한다. 예를 들어, 마이크로 프로세서(142)는, 페이지 사이즈 256킬로바이트분의 데이터를 작업 메모리(143) 또는 캐시 메모리(145)로 판독하고, 프로세서(1251 내지 1254) 중 어느 하나에 대해, 캐시 라인 4킬로바이트분의 데이터를 출력한다.
도 19는, 메모리 관리 장치(124)의 전송 알고리즘의 제2 동작의 예를 나타내는 도면이다.
메모리 관리 장치(124)의 마이크로 프로세서(142)는, 프로세서(1252)로부터, 1캐시 라인분의 액세스 요구를 수신한다(Tr19A).
다음에, 마이크로 프로세서(142)는, 액세스 요구에 대응하는 페이지 사이즈, 페이지 사이즈의 정수배, 블록 사이즈, 또는 블록 사이즈의 정수배의 데이터를, NAND형 플래시 메인 메모리(126)로부터 판독하고, 캐시 메모리(145)에 기억한다(Tr19B).
다음에, 마이크로 프로세서(142)는, 액세스 요구에 대응하는 데이터를, 캐시 메모리(145)로부터 프로세서(1252)에 송신한다(Tr19C).
도 20은, 메모리 관리 장치(124)의 전송 알고리즘의 제3 동작의 예를 나타내는 도면이다.
프로세서(1252)는, 캐시 메모리(1282) 또는 캐시 메모리(1292)의 데이터를 재기입한다(Tr20A).
다음에, 메모리 관리 장치(124)의 마이크로 프로세서(142)는, 캐시 메모리(1282) 또는 캐시 메모리(1292)가 재기입된 데이터를 캐시 아웃하고, 캐시 메모리(145)에 전송한다(Tr20B).
그러면, 마이크로 프로세서(142)는, 이 데이터가 갖는 판독 기입 빈도 정보, 정보 레지스터(144)에 기억되어 있는 메모리 사용 정보(140) 및 메모리 고유 정보(141)에 기초하여, 웨어 레벨링을 행하고, NAND형 플래시 메인 메모리(126)의 복수의 물리 블록 중으로부터 기입을 행하는 물리 블록(139)을 결정한다.
마이크로 프로세서(142)는, 캐시 메모리(145)에 기억되어 있는 재기입된 데이터를, 결정된 물리 블록(139)에 기억한다(Tr20C).
이 기입에 있어서는, 필요에 따라서, 메모리 블록의 이동, 휴지 수집이 행해진다.
도 21은, 웨어 레벨링의 일례를 나타내는 블록도이다.
NAND형 플래시 메인 메모리(126)는, 2 이상의 뱅크(146a, 146b)를 포함한다.
마이크로 프로세서(142)는, 데이터(블록 또는 페이지)를, 순차, 한쪽의 뱅크(146a)에 추가 기억해 간다. 즉, NAND형 플래시 메인 메모리(126)에 대해 라이트-원스(write-once)식의 데이터 기입이 행해진다.
데이터의 삭제가 발생하면, 마이크로 프로세서(142)는, 뱅크(146a) 상의 삭제 대상의 데이터를 삭제한다. 그러나, 이 뱅크(146a)에서의 최후의 영역에 데이터가 기억될 때까지, 순차, 추가 기억은 계속된다. 기입 대상으로 되어 있는 뱅 크(146a)에서는, 도중에 삭제된 부분에 기입은 행해지지 않는다. 따라서, 기입 대상으로 되어 있는 뱅크(146a)에 있어서 데이터의 삭제가 발생하면, 이 삭제된 영역의 데이터가 빠진 상태로 된다.
마이크로 프로세서(142)는, 한쪽의 뱅크(146a)의 최후의 영역까지 데이터를 기억하면, 이 뱅크(146a) 중 삭제되어 있지 않는 유효한 데이터를, 다른 쪽의 뱅크(146b)에 휴지 수집하면서 카피하고, 이 다른 쪽의 뱅크(148b)에 있어서, 카피된 데이터의 다음으로부터 새로운 데이터를 추가 기억해 간다. 또한, 마이크로 프로세서(142)는, 한쪽의 뱅크(146a)의 데이터를 다른 쪽의 뱅크(146b)에 카피한 후, 한쪽의 뱅크(146a)에 대해 클리어를 행한다. 그 후, 같은 처리가 반복된다.
또한, 상기와 같은 빈 영역을 정리하는 처리는, NAND형 플래시 메인 메모리(126)에서의 메모리 영역의 데이터를, NAND형 플래시 메인 메모리(126)의 용장 영역으로 이동시켜 실현되어도 된다.
여기서, 메모리 관리 장치(124)의 마이크로 프로세서(142)에서 사용되는 웨어 레벨링 알고리즘의 구체적 동작예에 대해 설명한다.
우선, 마이크로 프로세서(142)는, 어느 하나의 프로세서 또는 오퍼레이팅 시스템으로부터, 기입되는 데이터를 수신한다. 기입되는 데이터가 복수인 경우에는, 기입 빈도가 가장 높은 데이터를 기준으로 하여 사용한다. 프로세서 또는 오퍼레이팅 시스템이 종래형인 경우, 마이크로 프로세서(142)는, 데이터의 선두 등을 조사하여, 데이터의 종류를 판단한다.
예를 들어, 마이크로 프로세서(142)는, 기입되는 데이터의 종별이 압축된 화 상 데이터인 경우, 이 기입되는 데이터의 기입 빈도는 적기 때문에, MLC 영역을 재기입 영역으로 결정한다. 또는, 마이크로 프로세서(142)는, 기입되는 데이터의 종별이 압축된 화상 데이터인 경우, 이미 기입 횟수가 많아져 있는 빈 영역을 기입 영역에 결정한다.
예를 들어, 마이크로 프로세서(142)는, 기입되는 데이터의 종별이 웹 브라우저의 캐시 데이터인 경우, 기입 빈도가 높기 때문에, SLC 영역을 기입 영역으로 결정한다.
예를 들어, 마이크로 프로세서(142)는, SLC 영역 또는 MLC 영역 중으로부터, 기입 횟수가 가장 적은 빈 블록을, 기입 영역으로 결정한다.
예를 들어, 마이크로 프로세서(142)는, NAND형 플래시 메인 메모리(126)에서의 모든 빈 영역(예를 들어 빈 블록)의 기입 횟수가, 최대 기입 가능 횟수의 소정의 비율(예를 들어 80% 등)에 도달하고 있는 경우에, 이미 데이터가 기입되어 있는 영역 중, 정적 정보에 기초하는 기입 횟수가 적고, 또한 동적 정보에 기초하는 기입 횟수도 적은 영역을 선택하고, 이 선택된 영역의 데이터를, 빈 영역에 기억한다. 그리고, 마이크로 프로세서(142)는, 이 선택된 영역의 데이터를 삭제한다. 즉, 빈 영역과 선택된 영역 사이에서 데이터의 교체를 행한다.
본 실시 형태에 있어서, 메모리 관리 장치(124)의 마이크로 프로세서(142)는, 복수의 NAND형 플래시 메인 메모리(126)를 관리하는 것으로 해도 된다.
도 22는, 복수의 NAND형 플래시 메인 메모리(126)를 관리하는 메모리 관리 장치(124)의 일례를 나타내는 사시도이다.
하나의 메모리 관리 장치(124)와, 복수의 NAND형 플래시 메인 메모리(126)에서, 하나의 메모리 유닛(147)이 형성된다. 도 22의 예에서는, 3개의 메모리 유닛(147)이 형성되어 있다.
메모리 관리 장치(124)는, 동일한 메모리 유닛(147)에 속하는 복수의 NAND형 플래시 메인 메모리(126)에 대한 액세스를 관리한다.
또한, 복수의 메모리 유닛(147) 내에 포함되어 있는 복수의 메모리 관리 장치(124)는, 서로 연계하여 하나의 메모리 관리 장치가 되도록 동작한다.
메모리 유닛(147)의 메모리 관리 장치(124)는, 메모리 유닛(147) 내의 복수의 NAND형 플래시 메인 메모리(126)에 대한 ECC 기능 및 RAID 기능을 포함하고, 미러링 및 스트라이핑을 행한다.
각각의 NAND형 플래시 메인 메모리(126)는, 메모리 유닛(147)이 통전 중(동작 중)이라도, 핫 스왑(교환) 가능하다. 복수의 NAND형 플래시 메인 메모리(126)의 각각에는 버튼(148)이 포함되어 있다.
버튼(148)은 경고 출력부(예를 들어 LED 등)를 포함한다. 예를 들어, 경고 출력부가 제1 색(녹)인 경우에는 정상 상태를 나타내고, 제2 색(적)인 경우에는 교환 필요한 상태를 나타낸다.
버튼(148)을 누르면, 프로세스 또는 오퍼레이팅 시스템에 통지가 송신되어, 액세스 등이 발생하고 있지 않는 제거 안전시에, 버튼(148)은 제3 색(청)이 되고, 이 버튼(148)에 대응하는 NAND형 플래시 메인 메모리(126)는 핫 스왑 가능해진다.
핫 스왑 실행시에는, 핫 스왑을 요구하는 버튼(148)이 눌러진 후, 라이트 백 이 완료된 시점에서, 교환 가능한 것을 나타내는 램프가 점등하고, NAND형 플래시 메인 메모리(126)의 교환이 행해진다.
메모리 관리 장치(126)의 마이크로 프로세서(142)는, 정보 레지스터(144)에 기억되어 있는 메모리 사용 정보(140)와 메모리 고유 정보(141)를 참조하여, 각NAND형 플래시 메인 메모리(126)의 기입 횟수 또는 판독 횟수가, 메모리 고유 정보(141)에 기술되어 있는 상한에 도달하였는지 여부를 판단한다. 그리고, 마이크로 프로세서(142)는, 기입 횟수 또는 판독 횟수가 상한에 도달하고 있는 경우, 메모리 교환을 통지 또는 경고한다.
본 실시 형태에 있어서, NAND형 플래시 메인 메모리(126)의 페이지 사이즈 또는 블록 사이즈가 큰 경우, 프리로드가 유효하다.
프리로드를 행하는 경우, 메모리 관리 장치(124)의 마이크로 프로세서(142)는 NAND형 플래시 메인 메모리(126)에서의 데이터 고유 정보(E1, E2)를 참조하여, 빈번하게 액세스될 가능성이 높은 데이터를, 미리 캐시 메모리(145)에 프리로드해 둔다.
혹은, 마이크로 프로세서(142)는, 주기성이 있는 데이터이며, 소정의 시간에 액세스될 가능성이 높은 데이터를, 그 소정 시간 전에 프리로드해 둔다.
도 23은, MMU를 포함하고 있는 기존의 프로세서에 대해, 본 실시 형태에 관한 메모리 관리 장치(124)를 사용한 멀티 프로세서 시스템의 일례를 나타내는 블록도이다.
프로세서(1255)는, 기존의 프로세서이며, MMU(1495), 1차 캐시 메모 리(1285), 2차 캐시 메모리(1295)를 포함하고, 프로세스(1275)를 실행한다. 이 도 23의 시스템에서는, 통상의 MMU(1495)에 의한 어드레스 변환과, 본 실시 형태에 관한 메모리 관리 장치(124)에 의한 어드레스 변환이 혼재하게 된다. 이 경우, 프로세서(1255)의 MMU(1495)는, NAND형 플래시 메인 메모리(126)로 액세스하는 경우에, 우선 NAND형 플래시 메인 메모리(126)의 페이지 테이블(126b)을 액세스한다. 그러나, 이 페이지 테이블(126b)은, 어드레스 변환을 행하지 않고, 변환을 통과하는 내용으로 한다. 예를 들어, 페이지 테이블(126b)에서는, 변환 전의 어드레스와 변환 후의 어드레스가 동일하게 설정되어 있다. 이에 의해, 프로세서(1255)의 MMU(1495)에서는 어드레스 변환이 행해지지 않고, 메모리 관리 장치(124)에서 어드레스 변환을 행하는 것이 가능해진다.
상기한 도 16에 나타낸 본 실시 형태에 관한 메모리 관리 장치(124)를 사용한 시스템과, 종래의 멀티 프로세서 시스템과의 차이점을, 이하에서 설명한다.
도 24는, 일반적인 종래의 멀티 프로세서 시스템의 일례를 나타내는 블록도이다.
종래의 멀티 프로세서 시스템에서는, 기존의 프로세서(1255 내지 1258)와 메인 메모리(150)와 2차 기억 장치(151)가 시스템 버스(130)로 접속되어 있다.
각 프로세서(1255 내지 1258)는, 각각 MMU(1495 내지 1498), 1차 캐시 메모리(1285 내지 1288), 2차 캐시 메모리(1295 내지 1298)를 포함한다. 각 프로세서(1255, 1256, 1258)는, 각각 프로세스(1275, 1276, 1278)를 실행한다.
MMU(1495 내지 1498)는, 논리 어드레스와 물리 어드레스 사이의 변환을 행한 다. 각 프로세서(1255 내지 1258)로부터, 1차 캐시 메모리(1285 내지 1288), 2차 캐시 메모리(1295 내지 1298), 메인 메모리(150), 2차 기억 장치(151) 중 어느 하나로의 액세스는, 물리 어드레스에 기초하여 행해진다.
메인 메모리(150)에는, 예를 들어 DRAM 등과 같은 휘발성의 기억 장치가 사용된다. 메인 메모리(150)는, 각 프로세스(1275 내지 1278)마다의 페이지 테이블(1525 내지 1528)을 포함한다.
2차 기억 장치(151)에는, 예를 들어 하드 디스크 드라이브, SSD(Solid State Drive), NAND형 플래시 메모리 등이 사용된다.
종래의 멀티 프로세서 시스템에서는 메인 메모리에 DRAM 등이 사용되고 있는 것에 반해, 본 실시 형태에 관한 멀티 프로세서 시스템에서는, NAND형 플래시 메인 메모리(126)가 메인 메모리로서 사용되고 있다. 통상, DRAM의 비트 단가는, NAND형 플래시 메인 메모리(126)의 비트 단가보다도 높다. 따라서, 본 실시 형태에 있어서는, 비용을 삭감시킬 수 있다.
종래의 멀티 프로세서 시스템에서는 메인 메모리가 휘발성인 것에 반해, 본 실시 형태에 관한 멀티 프로세서 시스템에서는 메인 메모리로서 불휘발성의 NAND형 플래시 메인 메모리(126)가 사용된다. 이에 의해, 본 실시 형태에 있어서는, 인스턴트 온이 가능해지고, 메인 메모리로 프로그램 또는 데이터 등의 로드 시간 등을 삭제할 수 있어, 동작 속도를 향상시킬 수 있다.
종래의 멀티 프로세서 시스템에서는, 휘발성의 메인 메모리(150)와 불휘발성의 2차 기억 장치(151)의 양쪽이 탑재된다. 이에 반해, 본 실시 형태에 관한 멀티 프로세서 시스템에서는, NAND형 플래시 메인 메모리(126)를 탑재함으로써, 메인 메모리를 불휘발성으로 할 수 있어, 하드 디스크 등과 같은 2차 기억 장치를 제거할 수 있다. 본 실시 형태에 있어서는, 메인 메모리로서 DRAM을 탑재할 필요가 없다. 그리고, 본 실시 형태에 있어서는, 캐시로서 DRAM을 탑재하는 경우에, 이 캐시의 기억 용량이 적어도 된다. 따라서, 본 실시 형태에 있어서는, 시스템 구성 및 메모리 관리를 간략화할 수 있어, 비용을 삭감할 수 있다.
종래의 멀티 프로세서 시스템에서는, 페이지 테이블(1525 내지 1528)을 공유해야만 하여, 액세스 병목현상이 발생한다. 이에 반해, 본 실시 형태에 관한 멀티 프로세서 시스템에서는, 페이지 테이블을 공유할 필요가 없어, 액세스 병목현상을 해소할 수 있다.
종래와 같이, 2차 기억 장치에 DRAM 또는 SSD를 사용한 경우, 파일, SATA(Serial ATA) 등의 개념이 사용된다. 이 경우, 반드시 오버헤드가 존재한다. 이에 반해, 본 실시 형태에서는, 데이터는 파일에 의해 추상화되는 일은 없고, 메모리가 직접 액세스된다. 따라서, 본 실시 형태에서는, 데이터에 대한 액세스를 효율화할 수 있다.
종래와 같이 2차 기억 장치에 DRAM또는 SSD를 사용한 경우에 비해, 본 실시 형태에서는, 구동시에, 디스크 서치 시간이 필요 없기 때문에, 구동 시간을 단축화할 수 있다. 본 실시 형태에서는, 어플리케이션의 구동 속도도 고속화할 수 있다. 본 실시 형태에서는, 검색 속도 및 어플리케이션의 실행 속도를 고속화할 수 있다. 본 실시 형태에서는, 복수의 프로세서마다 어플리케이션을 동작시킬 수 있다. 본 실시 형태에서는, 불휘발성의 메인 메모리가 이용되기 때문에, 시스템의 슬리브시에, 배터리의 수명을 고려할 필요가 없다. 본 실시 형태에서는, 부품수를 삭감시킬 수 있어, 비용을 억제할 수 있다. 본 실시 형태는, 멀티 프로세서 환경에 용이하게 적응할 수 있다. 본 실시 형태에서는, 인스톨이 필요 없어, 프로세스 마이그레이션을 없앨 수 있다.
본 실시 형태에 있어서는, 데이터 고유의 판독 기입 빈도 정보(E1, E2), 메모리 사용 정보(140), 메모리 고유 정보(141)에 기초하여, 메모리 관리 장치(124)에 의해 최적의 웨어 레벨링이 행해진다. 본 실시 형태에 있어서는, 데이터 고유의 판독 기입 빈도 정보(E1, E2)에 기초하여 웨어 레벨링을 행함으로써, SSD보다도 효율적으로 웨어 레벨링을 행할 수 있다.
일반적으로, NAND형 플래시 메모리의 세대가 다른 경우에는, 페이지 사이즈 및 블록 사이즈도 상위하다. 본 실시 형태에 있어서, 메모리 관리 장치(124)는, NAND형 플래시 메인 메모리(126)로부터 메모리 고유 정보(141)를 판독하고, 이 메모리 고유 정보(141)에서 나타내어지는 페이지 사이즈 또는 블록 사이즈에 따른 처리를 행한다. 이에 의해, 다양한 세대의 NAND형 플래시 메모리를, NAND형 플래시 메인 메모리(126)로서 사용할 수 있다. 본 실시 형태에 있어서, 메모리 관리 장치(124)는, NAND형 플래시 메인 메모리(126)로부터 페이지 사이즈 또는 블록 사이즈를 포함하는 메모리 고유 정보(141)를 판독하고, NAND형 플래시 메인 메모리(126)의 페이지 사이즈 또는 블록 사이즈와, 각 프로세서의 캐시 라인 사이즈를 맞출 수 있다.
본 실시 형태에 있어서, 메모리 관리 장치(124)는, NAND형 플래시 메인 메모리(126)의 수명 관리를 행하고, 경고를 행한다. 이에 의해, 문제의 발생을 방지할 수 있다.
본 실시 형태에 있어서, 메모리 관리 장치(124)는, 복수의 NAND형 플래시 메인 메모리(126)에 대한 RAID 기능을 갖고, 재교환 대상의 NAND형 플래시 메인 메모리(126)의 핫 스왑을 실현할 수 있다. 이에 의해, 수명이 다한 NAND형 플래시 메인 메모리(126)를 용이하게 교환할 수 있다.
여기서, 복수의 프로세서에 대해, 복수의 NAND형 플래시 메인 메모리를 포함한 경우의 가상 기억 액세스의 일례에 대해 설명한다.
도 25는, 넓은 어드레스 공간용의 포인터를 구하는 처리의 일례를 나타내는 블록도이다.
포인터(153)는, 좁은 어드레스 공간용의 포인터(153a)와, 좁은 어드레스 공간용의 포인터(153b)를 포함한다.
세그먼트 테이블(154)은, 프로세스 ID(155)마다 설치되어 있고, 넓은 어드레스 공간용의 포인터(156)를 포함한다.
예를 들어, 넓은 어드레스 공간용의 포인터(157)는, 좁은 어드레스 공간용의 포인터(153b)와, 좁은 어드레스 공간용의 포인터(153a)에 의해 특정되는 세그먼트 테이블(154) 상의 넓은 어드레스 공간용의 포인터(156)를 조합함으로써 얻어진다. 또한, 넓은 어드레스 공간용의 포인터(157)는, 좁은 어드레스 공간용의 포인터(153b)와, 좁은 어드레스 공간용의 포인터(153a)와, 세그먼트 테이블(54) 상의 넓은 어드레스 공간용의 포인터(156)를 조합하여 생성되는 것으로 해도 된다.
도 26은, 복수의 캐시 메모리와 복수의 NAND형 플래시 메인 메모리로 형성되는 가상 기억 공간의 일례를 나타내는 블록도이다.
넓은 어드레스 공간용의 포인터(157)는, 프로세서의 캐시 메모리(1581 내지 158n)와, 복수의 NAND형 플래시 메인 메모리(1591 내지 159m)에 의해 구성되는 가상 기억 공간(160) 중 어느 하나를 가리킨다.
이에 의해, 프로세서의 캐시 메모리(1581 내지 158n)와, 복수의 NAND형 플래시 메인 메모리(1591 내지 159m)를 통합적으로 취급하는 것이 가능하다.
상기 각 실시 형태에 관한 메모리 관리 장치는, 캐시가 라이트 백형인 경우 및 라이트 스루형인 경우 중 어느 것에 있어서도 적용 가능하다.
(제9 실시 형태)
본 실시 형태에 있어서는, 메인 메모리로서 복수의 종류의 메모리를 포함하는 혼성 메인 메모리가 사용되고 있는 경우에, 이 혼성 메인 메모리에 대한 액세스를 관리하는 장치에 대해 설명한다. 본 실시 형태에 있어서, 혼성 메인 메모리는 불휘발성의 반도체 메모리를 포함한다.
도 27은, 본 실시 형태에 관한 메모리 관리 장치의 구성의 일례를 나타내는 블록도이다.
또한, 도 28은, 본 실시 형태에 관한 메모리 관리 장치의 처리부의 구성의 일례를 나타내는 블록도이다.
메모리 관리 장치(1)는, 기종이 다른 복수의 메모리를 조합하여 형성된 혼성 메인 메모리(2)에 대한 액세스를 관리한다. 여기서, 액세스라 함은, 기억 장치에 대한 기입과 판독 중 적어도 한쪽을 의미하는 것으로 한다.
본 실시 형태에 있어서는, 프로세서(3a 내지 3c)와 메모리 관리 장치(1)가 분리된 구성인 경우를 예로서 설명하지만, 메모리 관리 장치(1)는 프로세서(3a 내지 3c) 중 적어도 하나에 내장되는 것으로 해도 된다.
프로세서(3a 내지 3c)는, 각각 1차 캐시 메모리(4a 내지 4c), 2차 캐시 메모리(5a 내지 5c)를 포함하고 있다. 프로세서(3a 내지 3c)는, 각각 가상 논리 어드레스를 포함하는 프로세스(6a 내지 6c)를 실행한다. 상기한 도 27에서는, 3개의 프로세서(3a 내지 3c)가 도시되어 있지만, 프로세서의 수는 1 이상이면 된다.
복수의 프로세서(3a 내지 3c)는, 버스(7), 메모리 관리 장치(1)를 경유하여, 혼성 메인 메모리(2)와 접속되어 있다.
이하에 있어서는, 프로세서(3b)를 사용하여 본 실시 형태의 설명을 행하지만 프로세서(3a, 3c)에 대해서도 마찬가지이다.
본 실시 형태에 있어서, 프로세서(3b)는, 논리 어드레스를 사용하여, 1차 캐시 메모리(4b), 2차 캐시 메모리(5b)를 액세스 가능하다.
혼성 메인 메모리는 제1 메모리, 제2 메모리, 제3 메모리를 포함하고 있다. 제1 메모리는 제2 메모리보다도 액세스 가능 횟수가 많다. 제2 메모리는 제3 메모리보다도 액세스 가능 횟수가 많다.
본 실시 형태에서는, 제1 메모리는 휘발성 반도체 메모리(8)인 것으로 한다. 휘발성 반도체 메모리(8)로서는, 예를 들어 DRAM(Dynamic Random Access Memory), FPM-DRAM, EDO-DRAM, SDRAM 등과 같은 일반적인 컴퓨터에 있어서 메인 메모리로서 이용되는 메모리가 사용된다.
제2 메모리는 불휘발성 반도체 메모리(9)인 것으로 한다. 불휘발성 반도체 메모리(9)로서는, 예를 들어 SLC(Single Level Cell) 타입의 NAND형 플래시 메모리가 사용된다. SLC는 MLC와 비교하여, 판독 및 기입이 고속이며, 신뢰성이 높다. 그러나, SLC는 MLC와 비교하여, 소자의 집적도가 낮아, 대용량화에는 적합하지 않다.
제3 메모리는 불휘발성 반도체 메모리(10)인 것으로 한다. 불휘발성 반도체 메모리(10)로서는, 예를 들어 MLC(Multi Level Cell) 타입의 NAND형 플래시 메모리가 사용된다. MLC는 SLC와 비교하여, 판독 및 기입이 저속이며, 신뢰성이 낮다. 그러나, MLC는 SLC와 비교하여, 소자의 집적도가 높아, 대용량화에 적합하다.
또한, 신뢰성이라 함은, 기억 장치로부터 데이터를 판독하는 경우에서의 데이터의 결손의 일어나기 어려움의 정도를 의미한다.
SLC의 내구성은 MLC의 내구성보다도 높다. 여기서, 내구성이 높다라고 함은 액세스 가능 횟수가 많고, 내구성이 낮다라고 함은 액세스 가능 횟수가 적은 것을 의미한다.
SLC는 1개의 메모리 셀에 M(1 이상의 정수)의 비트의 정보를 기억 가능하다. MLC는 1개의 메모리 셀에 M+1비트 이상의 정보를 기억 가능하다.
즉, 본 실시 형태에 관한 혼성 메인 메모리(2)는, 제1로, 휘발성 메모리(8), 제2로, 불휘발성 메모리(9), 제3으로 불휘발성 메모리(10)의 순서로 내구성이 높 다.
NAND형 플래시 메모리 등의 불휘발성 반도체 메모리(9, 10)는, 휘발성 반도체 메모리(8)와 비교하여, 저렴하고 대용량화가 가능하다.
또한, NAND형 플래시 메모리 대신에, 예를 들어 NOR형 플래시 메모리 등과 같은 다른 종류의 플래시 메모리, PRAM(Phase change memory), ReRAM(Resistive Random access memory)을 사용할 수도 있다.
메인 메모리로서 불휘발성 반도체 메모리(9, 10)를 이용하는 경우와, 2차 기억 장치로서 불휘발성 반도체 메모리(9, 10)를 이용하는 경우를 비교하면, 메인 메모리로서 불휘발성 반도체 메모리(9, 10)를 사용한 경우에는 이 불휘발성 반도체 메모리(9, 10)로의 액세스 빈도가 높아진다. 본 실시 형태에 있어서는, 휘발성 반도체 메모리(8)와 SLC의 불휘발성 반도체 메모리(9)와 MLC의 불휘발성 반도체 메모리(10)를 혼성하여 메인 메모리로 하는 혼성 메인 메모리(2)를 포함한 정보 처리 장치를 실현하고 있다. 혼성 메인 메모리(2)는 이기종 혼재형의 주 기억 장치이며, 메모리 관리 장치(1)에 의해 데이터의 저장 위치가 관리된다.
메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13), 컬러링 테이블(14)은, 불휘발성 반도체 메모리(9)와 불휘발성 반도체 메모리(10) 중 어느 하나에 기억된다. 여기서, 컬러링 테이블(14)은, 각 데이터에 대한 데이터 고유 정보를, 엔트리로서 갖는 테이블이다.
또한, 혼성 메인 메모리(2)는, 다른 복수의 종별의 메모리를 포함하고, 복수의 메모리 중 적어도 하나가 불휘발성 메모리이며, 복수의 메모리 중 제1 메모리 는, 이 복수의 메모리 중 제2 메모리보다도 내구성이 높다.
메모리 관리 장치(1)는 처리부(15), 작업 메모리(16), 정보 기억부(17)를 포함한다.
처리부(15)는, 정보 기억부(17)에 기억되어 있는 정보에 기초하여, 작업 메모리(16)를 사용하면서 각종 처리를 실행한다.
작업 메모리(16)는, 예를 들어 버퍼로서 이용되고, 각종의 데이터 변환 등의 작업 영역으로서 사용된다.
처리부(15)는 접수부(18), 어드레스 결정부(19), 어드레스 관리부(20), 기입부(21), 재배치부(22), 어드레스 변환부(23), 판독부(24), 전송부(25)를 포함한다. 처리부(15)의 기능은, 예를 들어 오퍼레이팅 시스템(27) 등과 같은 프로그램을 처리부(15)가 실행함으로써 실현되는 것으로 해도 된다.
본 실시 형태에 있어서, 오퍼레이팅 시스템(27)은, 혼성 메인 메모리(2)에 대한 기입 및 판독을 관리하는 메모리 관리 장치(1)를 제어한다.
메모리 관리 장치(1)는, 메모리 관리 장치(1)의 동작 개시시에, 불휘발성 메모리(9) 또는 불휘발성 메모리(10)에 기억되어 있는 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13), 컬러링 테이블(14)을 판독하고, 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13), 컬러링 테이블(14)을 정보 기억부(17)에 기억한다. 불휘발성 메모리(9, 10)에 기억되어 있는 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13), 컬러링 테이블(14)을 기동시에 정보 기억부(17)에 기억하는 처리는, 예를 들어 메모리 관리 장치(1)의 처리부(15), 접수부(18)에 의해 실행된다.
메모리 사용 정보(11)는, 혼성 메인 메모리(2)의 각 영역에 대한 액세스 발생 횟수(판독 횟수 및 기입 횟수), 혼성 메인 메모리(2)에 포함되는 각종 메모리의 사용률 정보(빈 스페이스의 비율) 등, 혼성 메인 메모리(2)의 각 영역의 사용 상태를 나타낸다.
메모리 고유 정보(12)는, 혼성 메인 메모리(2)의 페이지 사이즈 및 블록 사이즈, 혼성 메인 메모리(2)에서의 영역마다의 액세스 가능 횟수(기입 가능 횟수 및 판독 가능 횟수) 등, 혼성 메인 메모리(2)의 각 영역의 특징을 나타낸다.
어드레스 변환 정보(13)는, 예를 들어 테이블 형식에서, 논리 어드레스와, 이 논리 어드레스에 대응하는 물리 어드레스를 관계시킨 정보이다.
컬러링 테이블(14)은, 상술한 바와 같이, 각 데이터의 데이터 고유 정보를 엔트리로서 갖는 테이블이다.
데이터 고유 정보는, 대응되어 있는 데이터에 대한 액세스 횟수(기입 횟수 및 판독 횟수) 등의 데이터 고유의 정보를 포함한다.
정보 기억부(17)는, 상기한 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13), 컬러링 테이블(14)을 기억하는 장치이다. 정보 기억부(17)로서는, 예를 들어 레지스터가 사용된다. 또한, 정보 기억부(17)는 복수의 레지스터로 분할되어도 된다.
이하에, 처리부(15)에 의한 기입 동작에 대해 설명한다.
접수부(18)는, 프로세서(3b)로부터의 기입 대상 데이터를 혼성 메인 메모 리(2)에 기입하는 경우에, 프로세서(3b)로부터 기입처 논리 어드레스와 기입 대상 데이터를 접수한다.
그리고, 접수부(18)는, 기입처 논리 어드레스와 기입 대상 데이터를 작업 메모리(16)에 기억한다.
어드레스 결정부(19)는, 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 하나에 기초하여, 휘발성 반도체 메모리(8)로의 액세스 횟수가 불휘발성 반도체 메모리(9)로의 액세스 횟수보다도 많아지고, 또한 불휘발성 반도체 메모리(9)로의 액세스 횟수가 불휘발성 반도체 메모리(10)로의 액세스 횟수보다도 많아지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정한다.
여기서, 어드레스 결정부(19)는, 각 메모리(8, 9, 10) 내에서는, 액세스 빈도가 균등화되도록, 작업 메모리(16)에 기억된 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정한다.
그리고, 어드레스 결정부(19)는, 기입처 물리 어드레스를 작업 메모리(16)에 기억한다.
보다 구체적으로 설명하면, 어드레스 결정부(19)는, 메모리 사용 정보(11), 메모리 고유 정보(12), 데이터 고유 정보에 기초하여, 기입 대상 데이터가 고 액세스 빈도 그룹, 중 액세스 빈도 그룹, 저 액세스 빈도 그룹 중 어디에 속하는지 판단한다.
어드레스 결정부(19)는, 기입 대상 데이터가 고 액세스 빈도 그룹에 속한다고 판단된 경우에, 휘발성 반도체 메모리(8)에서의 미사용의 물리 어드레스를 기입 처 물리 어드레스로서 결정한다. 이 경우에 있어서, 어드레스 결정부(19)는, 액세스 빈도가 휘발성 반도체 메모리(8) 내에서 동등해지도록 미사용 영역을 선택한다.
어드레스 결정부(19)는, 기입 대상 데이터가 중 액세스 빈도 그룹에 속한다고 판단된 경우에, 불휘발성 반도체 메모리(9)에서의 미사용의 물리 어드레스를 기입처 물리 어드레스로서 결정한다. 이 경우에 있어서, 어드레스 결정부(19)는, 액세스 빈도가 불휘발성 반도체 메모리(9) 내에서 동등해지도록 미사용 영역을 선택한다.
어드레스 결정부(19)는, 기입 대상 데이터가 저 액세스 빈도 그룹에 속한다고 판단된 경우에, 불휘발성 반도체 메모리(10)에서의 미사용의 물리 어드레스를 기입처 물리 어드레스로서 결정한다. 이 경우에 있어서, 어드레스 결정부(19)는, 액세스 빈도가 불휘발성 반도체 메모리(10) 내에서 동등해지도록 미사용 영역을 선택한다.
기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 하나는, 기입 대상 데이터의 종류, 사용자에 의해 설정된 데이터, 기입 대상 데이터의 최후의 액세스로부터 현재까지의 미사용 시간, 기입 대상 데이터의 데이터 종별에 의해 결정되는 액세스 빈도의 추측치, 기입 대상 데이터의 액세스 빈도의 관측치 중 적어도 하나를 포함하는 액세스 빈도 정보(판독 기입 빈도 정보)에 기초하여 구해진다.
또한, 본 실시 형태에 있어서, 어드레스 결정부(19)는, 휘발성 메모리(8)의 기억 장치 사용률, 불휘발성 메모리(9)의 기억 장치 사용률, 불휘발성 메모리(10)의 기억 장치 사용률에 따라서, 기입 대상 데이터를 휘발성 메모리(8)와 불휘발성 메모리(9)와 불휘발성 메모리(10) 중 어느 장치에 기억할지 판단할 때에 사용하는 임계치를 변경한다.
어드레스 결정부(19)는, 메모리 사용 정보(11)에 포함되어 있는 휘발성 반도체 메모리(8)의 사용률 정보, 불휘발성 반도체 메모리(9)의 사용률 정보, 불휘발성 반도체 메모리(10)의 사용률 정보에 기초하여, 기입 대상 데이터를 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9), 불휘발성 반도체 메모리(10) 중 어느 것에 기억할지를 판단하기 위해 사용되는 임계치를 변경한다.
예를 들어, 불휘발성 반도체 메모리(9, 10)의 빈 영역에 비해 휘발성 메모리(8)의 빈 영역이 많은 경우에는, 가령 중 액세스 빈도 그룹, 저 액세스 빈도 그룹에 속하는 기입 대상 데이터이라도, 휘발성 메모리(8)에 기억하도록 어드레스를 결정한다.
어드레스 관리부(20)는, 접수부(18)에 의해 취득되어 작업 메모리(16)에 기억된 기입처 논리 어드레스와, 어드레스 결정부(19)에 의해 결정되고 작업 메모리(16)에 기억된 기입처 물리 어드레스를 대응시켜 정보 기억부(17)에 기억되어 있는 어드레스 변환 정보(13)에 기억한다. 어드레스 변환 정보(13)는, 예를 들어 테이블 형식에 의해, 논리 어드레스와 물리 어드레스의 관계를 관리한다.
기입부(21)는, 혼성 메인 메모리(2)에 대해, 작업 메모리(16)에 기억되어 있는 기입 대상 데이터를, 어드레스 결정부(19)에 의해 결정되어 작업 메모리(16)에 기억되어 있는 기입처 물리 어드레스가 나타내는 위치에 기입한다.
예를 들어, 기입부(21)는, 기입 대상 데이터를, 기입 단위(예를 들어 페이지 단위)의 데이터로 변환하여 작업 메모리(16)에 기억하고, 이 작업 메모리(16)에 기억되어 있는 기입 단위의 데이터를, 혼성 메인 메모리(2)에 기억한다.
재배치부(22)는, 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 기초하여, 혼성 메인 메모리(2)에서의 임의의 메모리에 기억된 기입 대상 데이터를, 혼성 메인 메모리(2)에서의 다른 메모리에 재배치하기 위한 재배치 후의 기입처 물리 어드레스를 결정하여, 기입 대상 데이터의 재배치를 행한다.
또한, 재배치부(22)는, 어드레스 결정부(19)의 일 기능이라도 된다. 재배치를 위한 기입은, 기입부(21)에 의해 행해지는 것으로 해도 된다.
재배치부(22)에 의해 재배치가 실행되면, 어드레스 관리부(20)는, 정보 기억부(17)에 기억되어 있는 메모리 사용 정보(11), 어드레스 변환 정보(13), 데이터 고유 정보 등을, 재배치 후의 기입처 물리 어드레스에 의해 갱신한다. 즉, 어드레스 관리부(20)는, 기입 대상 데이터의 기입처 논리 어드레스와 재배치 후의 기입처 물리 어드레스를 관계시켜 어드레스 변환 정보(13)에 등록한다. 또한, 어드레스 관리부(20)는 메모리 사용 정보(11), 데이터 고유 정보가 재배치 후의 상태를 나타내도록, 기입 횟수, 기입 빈도 등을 갱신한다.
이 재배치는, 기입 대상 데이터의 중요도 또는 액세스 빈도가 시간의 경과에 따라서 변화하는 경우(동적인 경우)에 유효하다.
예를 들어, 기입 대상 데이터의 데이터 종별, 액세스 빈도의 추측치 등과 같은, 데이터 기입 전에 얻는 것이 가능한 정적 정보에 기초하여, 기입 대상 데이터는, 어드레스 결정부(19) 및 기입부(21)에 의해 SLC의 불휘발성 반도체 메모리(9) 에 기입된 것으로 한다. 그 후, 재배치부(22)는, 기입 대상 데이터의 액세스 빈도의 관측치 등과 같은, 기입 후에 시간 경과를 따라 변화하는 동적 정보에 기초하여, 전회의 기입시보다도 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽이 어느 정도를 넘어 높아져 있는 경우에, 기입 대상 데이터의 기억처를 SLC의 불휘발성 반도체 메모리(9)로부터 휘발성 반도체 메모리(8)로 바꾼다. 재배치부(22)는, 동적 정보에 기초하여, 전회의 기입시보다도 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽이 어느 정도를 넘어 낮아져 있는 경우에, 기입 대상 데이터의 기억처를 SLC의 불휘발성 반도체 메모리(9)로부터 MLC의 불휘발성 반도체 메모리(10)로 바꾼다.
마찬가지로, 재배치부(22)는, 정적 정보 또는 동적 정보에 기초하여 휘발성 반도체 메모리(8)에 기억된 기입 대상 데이터를, 동적 정보에 기초하여, 불휘발성 반도체 메모리(9) 또는 불휘발성 반도체 메모리(10)에 재배치해도 된다.
재배치부(22)는, 정적 정보 또는 동적 정보에 기초하여 불휘발성 반도체 메모리(10)에 기억된 기입 대상 데이터를, 동적 정보에 기초하여, 휘발성 반도체 메모리(8) 또는 불휘발성 반도체 메모리(9)에 재배치해도 된다.
재배치부(22)는 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9, 10)의 영역 내에서, 기입 대상 데이터의 기억 위치를 이동시키는 것으로 해도 된다.
재배치부(22)는, 상기한 재배치 처리를, 예를 들어 소정의 시간 경과할 때마다 실행하는 것으로 해도 되고, 예를 들어 휘발성 반도체 메모리(8) 및 불휘발성 반도체 메모리(9, 10) 중 어느 하나의 영역에 있어서 기억 용량이 임계치를 초과한 경우에 실행하는 것으로 해도 된다.
이하에, 처리부(15)에 의한 판독 동작에 대해 설명한다.
접수부(18)는, 프로세서(3b)가 혼성 메인 메모리(2)로부터 데이터를 판독하는 경우에, 프로세서(3b)로부터 판독처 논리 어드레스를 접수하고, 이 판독처 논리 어드레스를 작업 메모리(16)에 기억한다.
어드레스 변환부(23)는, 정보 기억부(17)에 기억되어 있는 어드레스 변환 정보(13)에 기초하여, 작업 메모리(16)에 기억된 판독처 논리 어드레스를 판독처 물리 어드레스로 변환하고, 이 판독처 물리 어드레스를 작업 메모리(16)에 기억한다.
판독부(24)는, 혼성 메인 메모리(2)로부터, 작업 메모리(16)에 기억되어 있는 판독처 물리 어드레스에 대응하는 판독 단위(예를 들어 페이지 단위)의 데이터를 판독하고, 작업 메모리(16)에 기억한다.
전송부(25)는, 혼성 메인 메모리(2)로부터 판독되어 작업 메모리(16)에 기억된 판독 단위의 데이터로부터, 판독처 물리 어드레스에 대응하는 부분의 판독 대상 데이터(예를 들어 바이트 단위의 데이터)를 추출하고, 이 추출된 판독 대상 데이터를 프로세서(3b)에 보낸다.
본 실시 형태에 있어서, 혼성 메인 메모리(2)에 대한 기입 단위 및 판독의 데이터 단위는 페이지 사이즈, 페이지 사이즈의 정수배(2배 이상), 블록 사이즈, 블록 사이즈의 정수배(2배 이상)로 해도 된다.
또한, 전송부(25)는, 판독 단위의 데이터를 프로세서(3b)로 송신하고, 프로세서(3b)에서는, 판독 단위의 데이터를 1차 캐시 메모리(4b) 또는 2차 캐시 메모 리(5b)에 기억하는 것으로 해도 된다.
즉, 본 실시 형태에 있어서는, 1차 캐시 메모리(4b) 또는 2차 캐시 메모리(5b)의 기입 단위 및 판독 단위에 대해서도, 페이지 사이즈, 페이지 사이즈의 정수배(2배 이상), 블록 사이즈, 블록 사이즈의 정수배(2배 이상)로 해도 된다.
도 29는, 본 실시 형태에 관한 메모리 관리 장치(1)에 의해 실현되는 물리 어드레스 공간의 일례를 나타내는 블록도이다.
본 실시 형태에 관한 메모리 관리 장치(1)는, 예를 들어 각종 캐시 메모리(4a 내지 4c, 5a 내지 5c), 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9, 10)를 포함하는 물리 어드레스 공간(26)을 형성한다. 메모리 관리 장치(1)는, 이 물리 어드레스 공간(26) 상에서 어드레스 결정 등의 어드레스 관리를 행한다. 이에 의해, 캐시 메모리(4a 내지 4c, 5a 내지 5c), 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9, 10)를 플랫 메모리 계층으로 취급할 수 있다.
도 30은, 본 실시 형태에 관한 오퍼레이팅 시스템(27)의 동작의 일례를 나타내는 블록도이다.
본 실시 형태에 있어서는, 오퍼레이팅 시스템(27)에 있어서 혼성 메인 메모리(2)의 어느 메모리에 데이터를 기억할지의 선택이 행해진다.
오퍼레이팅 시스템(27)은, 프로세스에 있어서, 프로세스 생성시 요구 영역으로의 데이터 기입, 파일 맵용 영역으로의 데이터 기입, 프로세스가 동적으로 요구하는 영역으로의 데이터 기입이 발생한 경우, 또는 커널 내에서 사용하는 파라미터용 영역으로의 데이터 기입이 발생한 경우, 이들의 데이터 기입에 대해 정해져 있 는 중요도, 액세스 빈도, 기억 장치마다의 사용 가능 영역의 잔량에 기초하여, 기억 장치 선택용의 임계치를 구한다. 그리고, 오퍼레이팅 시스템(27)은, 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 기초하여 구해지는 데이터 기입의 평가치(컬러링 레벨)와, 결정된 기억 장치 선택용의 임계치를 비교함으로써, 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(SLC)(9), 불휘발성 반도체 메모리(MLC)(10)를 포함하는 혼재 메인 메모리(2) 중, 어느 메모리에 데이터를 배치할지 결정한다.
예를 들어, 데이터의 중요도는 정적 정보에 의해 결정되고, 데이터의 액세스 빈도는 정적 정보와 동적 정보에 의해 결정된다. 컬러링 레벨은 정적 정보와 동적 정보 중 적어도 한쪽에 기초하여 구해진다.
본 실시 형태에 있어서는, 내구성의 관점에서, 이기종의 메모리를 포함하는 혼성 메인 메모리(2)를 효과적으로 사용한다. 즉, 본 실시 형태에 있어서는, 혼성 메인 메모리(2)의 수명을 가능한 한 연장시키기 위해, 각 메모리의 내구성에 기초하여 데이터 배치가 결정된다.
또한, 본 실시 형태에 있어서는, 신뢰성의 관점에서, 이기종의 메모리를 포함하는 혼성 메인 메모리(2)를 효과적으로 사용한다. 본 실시 형태에 있어서는, 혼성 메인 메모리(2)에서의 치명적인 데이터 결손을 피하기 위해, 각 메모리의 신뢰성에 기초하여 데이터 배치가 결정된다.
상기와 같이, 오퍼레이팅 시스템(27)은, 예를 들어 기입 대상 데이터의 액세스 빈도, 데이터의 중요도 등의 정보에 기초하여 컬러링 레벨(평가치)을 산출하고, 이 컬러링 레벨을 구한다.
그리고, 오퍼레이팅 시스템(27)은, 예를 들어 각 메모리의 사용 가능 영역의 잔량, 컬러링 레벨 등의 정보에 기초하여, 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9, 10)의 어느 위치에 기입 대상 데이터를 저장할지 결정한다.
이와 같이, 본 실시 형태에 있어서는, 오퍼레이팅 시스템(27)에 의해 중요도, 액세스 빈도가 생성 및 해석되고, 이 해석의 결과 얻어지는 컬러링 레벨은 보존된다. 컬러링 레벨의 연산에 있어서, 예를 들어 사용자에 의한 설정 데이터, 오퍼레이팅 시스템(27)에 의한 해석 결과 등의 정보 중, 어느 정보를 사용할지는 정보 처리 장치의 실장에 의존한다.
오퍼레이팅 시스템(27)은 MMU 치환 알고리즘의 최적화를 행한다. 또한, 오퍼레이팅 시스템(27)은, 모든 데이터에 대해, 그 데이터의 액세스 빈도를 포함하는 데이터 고유 정보를 부가하는 처리를 행한다.
데이터의 중요도의 평가 지표로서는, 예를 들어 실행 가능 파일인지 여부의 구별, 미디어 파일인지 여부의 구별, 파일의 위치 정보 등이 사용된다.
실행 가능 파일인지 여부의 구별은, 파일의 실행 가능 퍼미션에 의해 판별 가능하다. 예를 들어, 실행 가능 파일의 중요도는, 높게 설정된다.
미디어 파일인지 여부의 구별은, 파일의 확장자에 의해 판별 가능하다. 예를 들어, 미디어 파일의 중요도는 낮게 설정된다.
파일의 위치 정보로서는, 예를 들어 파일의 위치가, 정보 처리 장치에서의 메일 박스인지, 휴지통인지 등의 판별에 사용된다. 예를 들어, 메일 박스에 있는 파일, 휴지통에 있는 파일의 중요도는 낮게 설정된다.
또한, 데이터의 중요도의 평가 지표로서는, 예를 들어 사용자에 의해 지정된 정보가 사용된다. 예를 들어, 데이터의 중요도의 평가 지표를 포함하는 파일로서, 파일의 확장자를 바꾼 셰도우 파일이 사용된다. 사용자에 의해 지정된 중요도의 설정은, 이 셰도우 파일에 기입된다. 셰도우 파일에는, 예를 들어 데이터 식별 정보와 중요도의 관계, 폴더 위치와 중요도의 관계, 데이터의 종별과 중요도의 관계 등과 같은, 데이터의 특징과 중요도의 관계가 기술되어 있다. 오퍼레이팅 시스템(27)은, 이 셰도우 파일의 정보, 기입 대상 데이터의 식별 정보, 기입 대상 데이터의 폴더 위치, 기입 대상 데이터의 종별에 기초하여, 기입 대상 데이터의 중요도를 결정한다.
또한, 데이터의 중요도의 평가 지표로서, 예를 들어 데이터의 최종 액세스 시각으로부터 현재의 시각까지의 간격(데이터의 미사용 시간)을 사용하는 것으로 해도 된다. 예를 들어, 중요도는, 데이터의 미사용 시간의 길이에 비례하여 작아지는 것으로 한다.
데이터의 액세스 빈도의 평가 지표로서는, 예를 들어 파일의 형식, 액세스 패턴, ELF 포맷의 세그먼트, 사용자에 의해 설정된 데이터, 액세스 빈도의 실측치가 사용된다.
예를 들어, 파일의 형식이 미디어 파일인 경우, 이 데이터에 대한 기입 빈도는 낮다고 추측된다.
예를 들어, 액세스 빈도는, 액세스 패턴에 있어서, 시스템 콜에 의해 지정된 허가와 파일의 허가 중 어느 것인지에 따라서 변경된다.
예를 들어, ELF 포맷의 세그먼트에 대해, 리드 온리 섹션에서의 세그먼트는, 기입 빈도가 낮다고 추측된다. 또한, text 섹션, 판독 및 기입이 가능한 섹션에서의 세그먼트는, 기입 빈도가 높다고 추측된다.
예를 들어, 액세스 빈도를 나타내는 복수의 평가 지표가 다른 값을 나타내는 경우에, 액세스 빈도가 높은 것을 나타내는 평가 지표가 우선하여 사용되는 것으로 해도 된다.
본 실시 형태에 있어서는, 컬러링 레벨(CL)을 하기의 수학식 1 및 수학식 2와 같이 정의한다. 또한, 이 컬러링 레벨(CL)의 산출은 일례이며, 자유롭게 변경 가능하다.
CL=min(9, (중요도×W+액세스 빈도×(1-W)))
0≤W≤1 : 중요도, 액세스 빈도의 가중치 부여를 행하는 보정치
이 경우, CL은 0≤CL≤9의 범위로 된다.
커널 내에서 사용되는 파라미터용 영역에 대해, 중요도는 9(고정치)로 한다.
프로세스 생성시에 요구되는 영역에 대해, 중요도는 9(고정치)로 한다.
프로세스가 동적으로 요구하는 영역에 대해, 중요도는 5(고정치)로 한다.
프로세스가 파일을 혼성 메인 메모리(2)에 맵하기 위한 영역에 대해, 중요도는, 수학식 3, 수학식 4에 기초하여 구해진다.
중요도=min(9, max(정적 중요도, 사용자 지정 중요도))
0≤정적 중요도≤9
액세스 빈도는, 수학식 5 내지 수학식 8에 기초하여 구해진다.
액세스 빈도=정적 액세스 빈도×T
정적 액세스 빈도=max(사용자 지정 액세스 빈도, OS 지정 액세스 빈도)
T=max(0, -(액세스 시간 간격/ 최대 액세스 시간 간격)+1)
0≤T≤1
여기서, 정적 중요도는, 데이터의 형식에 기초하여 경험적으로 판단되는 값이다. 시간 보정치(T)는, 데이터의 미사용 시간에 따라서 경험적으로 설정된다. 예를 들어, 시간 보정치(T)는, 데이터의 미사용 시간이 길어질수록 작아지는 값으로 되는 것으로 한다.
최대 액세스 시간 간격은, 경험적으로 정의되는 값이다. 액세스 시간 간격은 실측치이다.
상기한 수학식 3에 의해 얻어지는 중요도는 0≤중요도≤9로 된다.
도 31은, 프로세스가 파일을 혼성 메인 메모리(2)에 맵하기 위한 영역에 대 한 동적 중요도의 산출예를 나타내는 도면이다.
액세스 시간 간격(월 단위의 미사용 시간)이 각각 0, 1, …, 10인 경우, 시간 보정치(T)는 각각 1, 0.9, …, 0으로 설정되어 있다.
이 도 31에 있어서, 데이터 형식이 실행 가능 파일, 미디어 파일, 휴지통 파일인 경우, 정적 중요도는 각각 9, 4, 2로 한다.
예를 들어, 데이터 형식이 실행 가능 파일이며, 액세스 시간 간격이 0(1개월 미만)인 경우, 동적 중요도는 (소수점 이하 버림) 9로 된다. 다른 경우도 도 31의 관계에 기초하여 동적 중요도가 결정된다.
커널 내에서 사용하는 파라미터용 영역에 대해, 액세스 빈도는 9(고정치)로고 한다.
프로세스가 사용하는 영역에 대해, 액세스 빈도는, 액세스 패턴에 기초하여 결정된다. 예를 들어, 데이터에 대한 액세스 패턴이 판독뿐인 경우, 액세스 빈도는 3으로 한다. 예를 들어, 데이터에 대해 기입의 가능성이 있는 경우, 액세스 빈도는 5로 한다.
이하에, 메모리의 선택의 구체예에 대해 설명한다.
혼성 메인 메모리(2)에 포함되는 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(SLC)(9), 불휘발성 반도체 메모리(MLC)(10) 중 어느 메모리에 데이터를 기억할지를 선택하기 위해 사용되는 임계치는, 각 메모리의 사용 가능 영역의 잔량(사용률)에 기초하여 결정된다. 컬러링 레벨과 결정된 임계치의 대소 관계에 기초하여, 기입처의 메모리가 선택된다.
도 32는, 본 실시 형태에 관한 메모리의 사용률과 임계치의 관계의 일례를 나타내는 도면이다.
임계치 ONRAM은, 데이터를 휘발성 반도체 메모리(8)에 배치할지 여부를 판단하기 위한 임계치이다. 본 실시 형태에 있어서, 컬러링 레벨이 임계치 ONRAM 이상의 데이터는, 휘발성 반도체 메모리(8)에 기억된다.
임계치 ONRAM은, 이하의 수학식 9로 산출되고, 소수점 이하의 값은 버려진다.
ONRAM=min(9, (9×(기억 장치 사용률(%)/100]+6))
상기한 도 32에 있어서, 임계치 ONRAM의 범위는 6≤ONRAM≤9이다. 휘발성 반도체 메모리(8)의 사용률이 높을수록 임계치 ONRAM은 커지고, 기입처로서 휘발성 반도체 메모리(8)가 선택되기 어려워진다.
임계치 ONSLC는, 데이터를 불휘발성 반도체 메모리(SLC)(9)에 배치할지 여부를 판단하기 위한 임계치이다. 본 실시 형태에 있어서는, 임계치 ONSLC 이상이며, 상기한 임계치 ONRAM 미만의 컬러링 레벨을 갖는 데이터는, 불휘발성 반도체 메모리(9)에 배치된다.
임계치 ONSLC는, 이하의 수학식 10으로 산출되고, 소수점 이하는 버려 취급한다.
ONSLC=min(5, (9×(기억 장치 사용률(%)/100)+3))
상기한 도 32에 있어서, 임계치 ONSLC의 범위는 3≤ONSLC≤5이다. 불휘발성 반도체 메모리(9)의 사용률이 높을수록 임계치 ONSLC는 커지고, 기입처로서 불휘발성 반도체 메모리(9)가 선택되기 어려워진다.
그리고, 임계치 ONSLC 미만이며, 휘발성 반도체 메모리(8)와 불휘발성 반도체 메모리(9) 중 어느 쪽에도 배치되지 않는 데이터는, 불휘발성 반도체 메모리(MLC)(10)에 배치된다.
상기 도 32에 있어서, 휘발성 반도체 메모리(8)의 사용률이 20%, 불휘발성 반도체 메모리(9)의 사용률이 20%인 경우, 임계치 ONRAM은 7, 임계치 ONSLC는 4로 된다. 이 경우, 컬러링 레벨이 7≤CL≤10인 데이터는 휘발성 반도체 메모리(8)에 기억된다. 컬러링 레벨이 4≤CL<7인 데이터는 불휘발성 반도체 메모리(9)에 기억된다. 컬러링 레벨이 0≤CL<4인 데이터는 불휘발성 반도체 메모리(10)에 기억된다. 다른 경우에 대해서도 마찬가지이다.
도 33은, 본 실시 형태에 관한 메모리 관리 장치(1)에 의한 혼성 메인 메모리(2)로의 데이터 기입 동작의 일례를 나타내는 흐름도이다.
스텝 S1에 있어서, 메모리 관리 장치(1)는 데이터와 논리 어드레스를 접수한다.
스텝 S2에 있어서, 메모리 관리 장치(1)는 메모리 사용 정보(11), 메모리 고유 정보(12), 컬러링 테이블(14) 내의 데이터 고유 정보를 참조하여, 혼성 메인 메모리(2)에서의 기입처로 되는 메모리를 선택한다.
스텝 S3에 있어서, 메모리 관리 장치(1)는 선택된 메모리 내의 빈 영역을 선 택한다.
스텝 S4에 있어서, 메모리 관리 장치(1)는 선택된 빈 영역에, 데이터를 기입한다.
스텝 S5에 있어서, 메모리 관리 장치(1)는 기입이 정상으로 종료하였는지 판단한다.
기입이 정상으로 종료되지 않는 경우, 스텝 S6에 있어서, 메모리 관리 장치(1)는, 에러 처리를 실행하고, 기입 처리를 종료한다.
기입이 정상으로 종료한 경우, 스텝 S7에 있어서, 메모리 관리 장치(1)는, 접수한 논리 어드레스와, 선택된 빈 영역에 대응하는 물리 어드레스에 기초하여, 어드레스 변환 정보(13)를 갱신한다.
스텝 S8에 있어서, 메모리 관리 장치(1)는, 메모리 사용 정보(11)에서의 메모리의 기입 횟수, 컬러링 테이블(14)에 기억되어 있는 데이터 고유 정보의 기입 횟수, 기입 대상 데이터에 부여되어 있는 데이터 고유 정보의 기입 횟수를 갱신한다.
도 34는, 본 실시 형태에 관한 기입 대상 데이터 및 판독 대상 데이터의 데이터 구조의 일례를 나타내는 도면이다.
데이터(28)는, 데이터 본체(29)와, 이 데이터의 기입 빈도, 판독 빈도 등을 포함하는 데이터 고유 정보(30)를 조합한 데이터 구조를 갖는다.
컬러링 테이블(14)은, 각 데이터에 부여되어 있는 데이터 고유 정보(30)에 기초하여 생성된다.
도 35는, 컬러링 테이블(14)의 일례를 나타내는 도면이다.
컬러링 테이블(14)의 각 엔트리는, 데이터의 최소 IO 단위로 할당된다.
엔트리에서의 기입 빈도, 판독 빈도, 중요도는 오퍼레이팅 시스템(27) 또는 사용자에 의해 추측(예측)된 값이다.
기입 빈도, 판독 빈도, 중요도가 오퍼레이팅 시스템(27)에 의해 추측되는 경우, 오퍼레이팅 시스템(27)은, 데이터에 관한 확장자 또는 퍼미션을 참조하여, 기입 빈도, 판독 빈도, 중요도를 결정한다.
기입 빈도, 판독 빈도, 중요도가 사용자에 의해 설정되는 경우, 설정을 위한 전용의 GUI(Graphical User Interface) 또는 콘피그레이션이 준비된다.
이 기입 빈도는, 하기의 제10 실시 형태에 관한 SW_Color에 대응한다.
본 실시 형태에서의 중요도 및 판독 빈도는, 하기의 제10 실시 형태에 관한 SR_Color에 대응한다.
기입 빈도, 판독 빈도, 중요도는, 데이터 생성시에, 오퍼레이팅 시스템(27)에 의해 기입된다.
엔트리에서의 최종 액세스 시각은, 대응하는 데이터가 최후에 액세스된 시간 정보이다. 최종 액세스 시각과 현재 시각의 차는, 상기 수학식 7의 액세스 시간 간격으로 된다.
엔트리에서의 컬러링 레벨은, 예를 들어 상기한 수학식 1로 산출된다.
컬러링 테이블(14)에서의 컬러링 레벨과 최종 액세스 시각은, 상기 도 33의 스텝 S8에 있어서, 메모리 관리 장치(1)에 의해 갱신된다.
도 36은, 본 실시 형태에 관한 혼성 메인 메모리(2)의 어드레스 맵의 일례를 나타내는 도면이다.
혼성 메인 메모리(2)는, 휘발성 반도체 메모리(8)의 기억 영역(31A), 불휘발성 반도체 메모리(9)의 기억 영역(31B), 불휘발성 반도체 메모리(9)용의 용장 블록 영역(31C), 불휘발성 반도체 메모리(10)의 기억 영역(31D), 불휘발성 반도체 메모리(10)용의 용장 블록 영역(31E)을 포함한다.
데이터의 기입시에, 기억 영역(31A), 기억 영역(31B), 기억 영역(31D) 중 어느 영역을 선택할지는, 상기와 같이 컬러링 레벨과 임계치에 기초하여 결정된다.
기억 영역(31B), 기억 영역(31D) 내에 있어서 어느 위치에 데이터를 기억할지는, 예를 들어 라이트-원스식의 기입이 채용된다.
라이트-원스식의 기입에서는, 각각의 기억 영역(31B, 31D) 내에서는, 시퀀셜에 기억 위치를 바꾸어 데이터가 기입된다. 이와 같은 라이트-원스식의 기입에 의해, 기억 영역(31B, 31D) 내에서의 액세스 빈도를 균등화할 수 있다.
본 실시 형태에서는, 어드레스 결정부(19)는, 기억 영역(31B, 31D)이 데이터의 기입처로서 선택되면, 기억 영역(31B, 31D) 내에서의 기입처 물리 어드레스를 시퀀셜에 발생시킨다. 기입부(21)는, 시퀀셜에 발생된 물리 어드레스에 기초하여 데이터의 기입을 행한다.
기억 영역(31B, 31D)에 대해, 라이트-원스식의 기입이 어느 정도 진행하면, 휴지 수집이 행해진다.
휴지 수집의 일례로서는, 예를 들어 현재의 기억 영역(31B, 31D) 내를 서치 하고, 복수의 엔트리 중 하나에 모여지는 것을 하나로 총괄하는 처리, 기억 영역(31B, 31D) 내에서 유효한 데이터와 소거된 데이터가 혼재하는 경우에, 유효한 데이터만을 모아서 재배치하는 처리, 액세스 빈도가 낮은 데이터, 중요도가 낮은 데이터를 다른 메모리로 이동시켜 빈 영역을 늘리는 처리 등이 있다.
기억 영역(31B)에 대한 휴지 수집이 실행되는 경우에는, 용장 영역(31C)이 이용된다. 기억 영역(31D)에 대한 휴지 수집이 실행되는 경우에는, 용장 영역(31E)이 이용된다.
휴지 수집은, 예를 들어 재배치부(22)에 의해 실행된다. 휴지 수집을 위한 기입은, 기입부(21)에 의해 행해지는 것으로 해도 된다.
재배치부(22)에 의해 휴지 수집이 실행되면, 어드레스 관리부(20)는, 정보 기억부(17)에 기억되어 있는 메모리 사용 정보(11), 어드레스 변환 정보(13), 데이터 고유 정보 등을, 휴지 수집 후의 기입처 물리 어드레스에 의해 갱신한다.
이상 설명한 본 실시 형태에 있어서는, 기입 횟수 또는 판독 횟수에 제한이 있는 불휘발성 반도체 메모리를 메인 메모리로서 효과적으로 이용할 수 있다.
본 실시 형태에 있어서는, 메모리 관리 장치(1)와 오퍼레이팅 시스템(27)이 협조하여 데이터 고유의 액세스 빈도 정보를 생성하고, 메모리 관리 장치(1)는 이 액세스 빈도 정보에 기초하여 최적의 기입 방식을 실현할 수 있다.
이에 의해, 혼성 메인 메모리(2)에서의 불휘발성 반도체 메모리(9, 10)에 기억된 데이터가 과잉으로 열화하는 것을 방지할 수 있고, 불휘발성 반도체 메모리(9, 10)를 사용한 고속이며 저렴한 정보 처리 장치를 실현할 수 있다.
(제10 실시 형태)
본 실시 형태에 있어서는, 상기 제9 실시 형태에서 설명한 메모리 관리 장치(1) 및 혼성 메인 메모리(2)의 상세에 대해 설명한다.
본 실시 형태에 관한 오퍼레이팅 시스템(27)은, 데이터 고유의 액세스 빈도 정보(판독 기입 빈도 정보)를 생성한다. 메모리 관리 장치(1)는, 데이터 고유의 액세스 빈도 정보를 사용하여 데이터의 기입처를 결정한다. 또한, 메모리 관리 장치(1)는, 데이터 고유의 액세스 정보, 메모리 사용 정보, 메모리 고유 정보에 기초하여 최적의 웨어 레벨링을 실행한다. 상기 제9 실시 형태에 있어서는, 컬러링 레벨을 사용하여 기억 영역을 결정하고 있지만, 본 실시 형태에 있어서는, 데이터로부터 추측되는 액세스 빈도를 나타내는 값(SW_Color, SR_Color)을 사용하여 기억 영역을 결정한다.
NAND형 플래시 메모리는 덮어쓰기 동작을 행할 수 없다. 이로 인해, 유효한 데이터가 존재하지 않는 NAND형 플래시 메모리의 블록에 대해 새로운 데이터를 기입하는 경우, 그 블록 전체를 소거하고 나서 데이터를 기입하는 동작이 행해진다. 블록의 소거 처리를 반복하면, 블록은 열화하여, 데이터를 기입하는 것이 곤란해진다. 이로 인해 특정의 블록만에 데이터의 기입 처리가 집중되면, 일부의 영역만 기입 처리를 할 수 없게 되는 현상이 발생한다. 이것을 회피하기 위해, 데이터관리 장치(1)는, 웨어 레벨링 기능을 포함한다. 이 웨어 레벨링 기능은, 블록의 소거 횟수에 따라서, 데이터의 교체를 정기적으로 행한다.
종래에 있어서는, 불휘발성 반도체 메모리는 2차 기억 장치로서 사용되고 있 고, MPU는, 2차 기억 장치를 액세스하는 경우에, I/O 인터페이스를 통한 데이터의 전송이 필요하였다.
이에 반해, 본 실시 형태에서는, 불휘발성 반도체 메모리(9, 10)가 메인 메모리 영역에 배치된다. 메모리 관리 장치(1)는, 오퍼레이팅 시스템(27)이 휘발성 반도체 메모리(8)와 동일한 레벨로 불휘발성 반도체 메모리(9, 10)에 액세스할 수 있는 구성을 갖는다. 이에 의해, MPU와 불휘발성 반도체 메모리(9, 10) 사이에서 I/O 인터페이스를 통한 데이터의 전송 필요 없게 되어, 불휘발성 반도체 메모리(9, 10)에 대해 고속의 액세스가 가능해진다.
또한, 본 실시 형태에서는, 종래의 모바일 기기와 같이 저렴한 플래시 메모리와 동등한 용량의 고가인 DRAM 메모리를 배치할 필요가 없어, 저렴한 시스템을 제공할 수 있다.
오퍼레이팅 시스템(27)이 메인 메모리와 동일한 레벨로 불휘발성 반도체 메모리에 액세스할 수 있도록 시스템을 설계하는 경우, 2차 기억 장치로서 불휘발성 반도체 메모리를 사용하고 있었던 종래의 시스템과 비교하여, 불휘발성 반도체 메모리로의 기입은 증가한다.
불휘발성 반도체 메모리가 NAND형 플래시 메모리인 경우, 과도한 기입을 피하고, 시스템의 수명을 연장시키는 방식이 필요하다.
본 실시 형태에서는, 기입 횟수에 제한이 있는 불휘발성 반도체 메모리(9, 10)를 메인 메모리로서 사용할 수 있도록 기입하는 방식이 개선되어 있다. 본 실시 형태에서는, 데이터 고유의 액세스 빈도 정보를 사용하여, 데이터가 기입되는 빈도가 예측된다. 액세스 빈도가 높은 데이터는, 내구성이 높은 DRAM, SLC 영역에 배치하는 등의 처리를 행하고, 정보 처리 장치의 메모리 영역을 보호한다. 데이터 고유의 액세스 빈도 정보는 웨어 레벨링에 적용된다. 예를 들어, 데이터 고유의 액세스 빈도 정보에 기초하여, 웨어 레벨링에서의 데이터의 이동이 제어된다.
상기 도 27에 나타낸 바와 같이, 메모리 관리 장치(플랫 메모리 관리 장치)(1)는, MPU인 프로세서(Graphic IP 등이라도 됨)(3a 내지 3c) 등이 접속되는 논리 어드레스 버스(7)와 혼성 메인 메모리(2) 사이에 포함된다. 메모리 관리 장치(1)는, 혼성 메인 메모리(2)에 대해 메모리 관리를 행한다. 상기 도 27에서는 MPU 2개와 GPU 1개가 공통으로 논리 버스(7)에 접속된 예를 나타내고 있지만, 단일의 프로세서를 실장하는 기기에 응용해도 얻어지는 효과는 동일하다.
메모리 관리 장치(1)는 메모리 관리를 위한 MPU 등과 같은 처리부(15), 처리부(15)에 의해 사용되는 작업 메모리(16), 불휘발성 반도체 메모리(9, 10)로의 기입 방식을 결정하는 정보 등을 유지하는 정보 기억부(17)를 포함한다.
또한, 메모리 관리 장치(1)는, 정보 기억부(17)와는 독립하여, 불휘발성 반도체 메모리(9, 10)로 기입되는 데이터마다의 데이터 고유의 액세스 빈도 정보를 유지하는 컬러링 테이블의 베이스 어드레스를 나타내는 컬러링 테이블 레지스터를 포함하는 것으로 해도 된다.
메모리 관리 장치(1)에 접속되는 혼성 메인 메모리(2)는, 예를 들어 DRAM 등과 같은 휘발성 반도체 메모리(8)와 불휘발성 반도체 메모리(9, 10)를 포함하고 있다.
불휘발성 반도체 메모리(9, 10)로서는, 예를 들어 NAND형 플래시 메모리가 사용되지만, 예를 들어 PRAM, ReRAM 등과 같은 다른 파일 메모리라도 된다.
불휘발성 반도체 메모리(9, 10)의 메모리 공간 내의 소정의 번지에는, 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(페이지 테이블)(13), 컬러링 테이블(데이터마다의 데이터 고유의 액세스 정보를 유지하는 테이블)(14)이 기억되어 있다. 메모리 사용 정보(11), 메모리 고유 정보(12), 어드레스 변환 정보(13)는, 시스템의 파워 온 후에, 불휘발성 반도체 메모리(9, 10)의 영역으로부터 정보 기억부(17)에 카피된다. 정보 기억부(17)는, 고속으로 어드레스 변환을 행하기 위해 메모리 관리 장치(1)의 칩 상에 SRAM으로 구성되는 것이 바람직하다. 또한, 컬러링 테이블(14)의 베이스 어드레스(논리 어드레스)는, 시스템의 파워 온 후에, 메모리 관리 장치(1) 내에 존재하는 정보 기억부(17) 또는 컬러링 테이블 레지스터에 세트된다.
어드레스 변환 정보(13)는, 혼성 메인 메모리(2)의 물리 맵 정보(CHIP 어드레스, Block 어드레스, Page 어드레스)와 논리 어드레스를 관련시킨 테이블이다.
어드레스 변환 정보(13)에 의해 유지되는 불휘발성 반도체 메모리의 메모리 영역의 맵핑 데이터는, 논리 어드레스와 혼성 메인 메모리(2) 사이에서 어드레스를 관련시킨 정보에 부가하여, 각각의 페이지 또는 블록이 기입 가능한 상태인지 여부를 나타내는 플래그 정보, 각각의 Page 데이터가 최신으로 유효한지 혹은 이미 다른 페이지로 갱신되었기 때문에 무효한지를 판별하기 위한 플래그 정보를 포함한다.
도 37은, 본 실시 형태에 관한 혼성 메인 메모리(2)의 메모리 맵의 일례를 나타내는 도면이다.
메모리 고유 정보(12)는, 1) 혼성 메인 메모리(2)의 메모리 공간 내의 DRAM 공간 사이즈, 2) 혼성 메인 메모리(2)의 메모리 공간 내의 불휘발성 반도체 메모리(9, 10)의 메모리 사이즈, 3) 혼성 메인 메모리(2)의 메모리 공간을 구성하는 NAND형 플래시 메모리의 블록의 사이즈, 페이지의 사이즈, 4) 불휘발성 반도체 메모리(9) 내의 SLC 영역(2치 영역)으로서 할당된 메모리 공간 정보(상한 소거 횟수, 상한 판독 횟수를 포함함), 5) 2bit/Cell의 다치 영역에 할당된 메모리 공간 정보(상한 소거 횟수, 상한 판독 횟수를 포함함), 6) 3bit/Cell의 다치 영역에 할당된 메모리 공간 정보(상한 소거 횟수, 상한 판독 횟수를 포함함), 7) 4bit/Cell의 다치 영역에 할당된 메모리 공간 정보(상한 소거 횟수, 상한 판독 횟수를 포함함)를 포함한다.
메모리 관리 장치(1)는, 오퍼레이팅 시스템(27)으로부터의 데이터 기입 처리의 명령에 대해, 메모리 고유 정보(12)와, 컬러링 테이블(14)을 참조하여, 어느 메모리 공간[SLC 영역(2치 영역), 2bit/Cell의 다치 영역, 3bit/Cell의 다치 영역, 4bit/Cell의 다치 영역]에 데이터를 기입할지 결정하고, 또한 그 메모리 공간 내의 어느 물리 어드레스에 기입할지에 대해 메모리 사용 정보(11)와, 데이터 고유의 액세스 빈도 정보를 참조하여 결정한다.
또한, 메모리 관리 장치(1)는, 오퍼레이팅 시스템(27)에 의해 데이터의 판독 처리가 실행되는 경우에, 컬러링 테이블(14)을 참조하여 판독하는 방식을 결정한 다.
메모리 사용 정보(11)는 불휘발성 반도체 메모리(9, 10)의 메모리 영역 내의 각 블록이 몇 번 소거되었는지와, 몇 번 판독되었는지를 나타내는 정보이다. 각 블록이 소거될 때마다, 메모리 사용 정보(11)에서의 각각의 블록의 소거 횟수(기입 횟수)는 인크리먼트된다. 또한, 각 페이지가 판독될 때마다, 메모리 사용 정보(11)에서의 그 페이지의 판독 횟수가 인크리먼트된다.
도 38은, 컬러링 테이블(14)의 일례를 나타내는 도면이다.
컬러링 테이블(14)은, 각 데이터에 대해, 각각의 데이터 고유의 액세스 빈도 정보를 유지하는 테이블이다.
컬러링 테이블(14)은, 임의의 데이터가 생성된 경우에, 데이터가 맵핑된 논리 어드레스 공간과 데이터 고유의 액세스 빈도 정보를 관련시키기 위해 사용된다.
컬러링 테이블(14)의 각 엔트리는, 데이터의 최소의 판독 기입 사이즈(예를 들어 NAND형 플래시 메모리의 페이지 사이즈)에 대응하고 있고, 데이터로부터 추측되는 기입 빈도를 나타내는 값(SW_Color), 데이터로부터 추측되는 판독 빈도를 나타내는 값(SR_Color), 데이터로부터 추측되는 데이터의 수명, 데이터의 생성된 시각, 데이터로의 기입 횟수, 데이터의 판독 횟수를 포함한다.
도 39는, 컬러링 테이블(14)의 생성 처리의 일례를 나타내는 흐름도이다.
컬러링 테이블(14)은, 불휘발성 반도체 메모리(9, 10) 상의 임의의 영역에 배치된다. 컬러링 테이블(14)이 배치되어 있는 번지는, 메모리 관리 장치(1)의 실장에 의해 결정되는 것으로 해도 된다.
스텝 T1에 있어서, 메모리 관리 장치(1)는 전원이 투입되어 기동한다.
스텝 T2에 있어서, 메모리 관리 장치(1)는, 컬러링 테이블(14)의 베이스 어드레스를 논리 어드레스로 변환하고, 각 데이터에 대한 인덱스를 생성한다.
스텝 T3에 있어서, 메모리 관리 장치(1)는, 정보 기억부(17) 또는 컬러링 테이블 레지스터에, 컬러링 테이블(14)의 베이스 어드레스를 세트한다.
오퍼레이팅 시스템(27) 및 메모리 관리 장치(1)는, 정보 기억부(17) 또는 컬러링 테이블 레지스터를 통해, 컬러링 테이블(14)을 참조한다.
도 40은, 오퍼레이팅 시스템(27)에 의한 컬러링 테이블(14)의 엔트리의 생성 처리의 일례를 나타내는 흐름도이다. 이 도 40은, 프로세스(6b)가 임의의 데이터를 생성할 때에, 오퍼레이팅 시스템(27)이 컬러링 테이블(14)의 엔트리에 데이터를 세트하는 동작을 나타내고 있다. 새로운 데이터를 불휘발성 반도체 메모리(9, 10)에 기입하는 경우, 오퍼레이팅 시스템(27)은, 데이터 고유의 액세스 빈도 정보의 값(SW_Color, SR_Color), 데이터의 수명, 데이터 생성 시각을, 컬러링 테이블(14)의 엔트리에 기입한다.
SW_Color, SR_Color는, 오퍼레이팅 시스템(27)이 데이터의 기입 빈도, 및 판독 빈도를 예측하여 설정하는 값이다. SW_Color, SR_Color에는, 각각 기입 빈도 및 판독 빈도가 높다고 예측되는 경우일수록, 높은 값이 설정된다. 데이터의 수명은, 이 데이터가 어느 정도 길게 혼성 메인 메모리(2) 상에 존재하는지 예측되고, 이 예측에 기초하여 설정된다. 이들의 값은, 데이터를 생성하는 프로그램의 소스 코드에 의해 정적으로 지정되는 것으로 해도 되고, 오퍼레이팅 시스템(27)이 그 값 을 컬러링 테이블(14)에 기입하는 것으로 해도 되고, 오퍼레이팅 시스템(27)이 파일의 확장자 또는 파일 헤더 등을 참조함으로써 예측되는 것으로 해도 된다.
스텝 U1에 있어서, 임의의 프로세스(6b)는, 데이터 기입 요구를 발생시킨다.
스텝 U2에 있어서, 오퍼레이팅 시스템(27)은, 불휘발성 반도체 메모리(9, 10)의 페이지 사이즈마다의 정적 정보를 생성한다.
스텝 U3에 있어서, 오퍼레이팅 시스템(27)은, 정보 기억부(17) 또는 컬러링 테이블 레지스터의 기억 내용에 기초하여 컬러링 테이블(14)을 참조한다.
스텝 U4에 있어서, 오퍼레이팅 시스템(27)은, 정적 정보를 컬러링 테이블(14)에 기입한다.
스텝 U5에 있어서, 오퍼레이팅 시스템(27)은, 기입처 논리 어드레스를 메모리 관리 장치(1)에 통지한다.
그리고, 스텝 U6에 있어서, 메모리 관리 장치(1)는 기입 처리를 실행한다.
SW_Color 및 SR_Color의 범위, 후술하는 오퍼레이팅 시스템(27)에 의한 빈도 예측의 패턴, SW_Color 및 SR_Color를 사용하여 메모리 영역을 결정하는 메모리 관리 장치(1)의 동작은 일례이다. 시스템 실장자는, 메모리 관리 장치(1)의 동작을 적절하게 튜닝 가능하게 해도 된다.
여기서, 임의의 데이터에 대한 오퍼레이팅 시스템(27)에 의한 SW_Color, SR_Color, 데이터 수명의 설정에 대해 설명한다.
도 41은, 각종의 데이터에 대한 SW_Color, SR_Color, 데이터 수명의 할당의 설정의 제1 예를 나타내는 도면이다.
도 42는, 각종의 데이터에 대한 SW_Color, SR_Color, 데이터 수명의 할당의 설정의 제2 예를 나타내는 도면이다.
커널의 텍스트 영역은 판독되는 경우가 많고, 기입될 가능성은 낮다. 오퍼레이팅 시스템(27)은 자신이 동작하는 텍스트 영역의 SR_Color를 5, SW_Color를 1로 설정한다. 또한, 오퍼레이팅 시스템(27)은, 커널의 텍스트 영역의 데이터 수명은 길다(LONG)고 예측하고 있다.
한편, 커널의 데이터 영역은, 판독과 기입의 빈도가 모두 높다. 따라서, 오퍼레이팅 시스템(27)은, 커널의 데이터 영역에 대해, SR_Color를 5, SW_Color를 5로 설정한다.
커널이 동적으로 확보하는 데이터 영역은, 데이터가 불필요해지면 삭제되기 때문에 데이터의 수명은 짧다(SHORT).
사용자 프로그램의 텍스트 영역은, 모든 프로세스로부터 리엔트런트로 호출되는 커널에 비해, 판독 빈도는 낮다. 단, 프로세스가 액티브하게 되어 있는 상태에서는 커널과 마찬가지로 판독 빈도가 높아진다. 이로 인해, 사용자 프로그램의 텍스트 영역에 있어서는, SW_Color가 1, SR_Color가 4로 설정된다. 사용자 프로그램의 텍스트 영역에 대해, 데이터 수명은, 그 프로그램이 언인스톨될 때까지의 기간이기 때문에, 일반적으로는 길어진다. 따라서, 사용자 프로그램의 텍스트 영역에 대해, 데이터 수명은 길다(LONG)고 설정된다.
프로그램이 동적으로 확보하는 영역은, 크게 나누어 2종류 있다. 우선 하나는 프로그램의 실행 종료와 함께 폐기되는 데이터(스택(stack) 영역을 포함함)이 다. 이들의 데이터는 데이터 수명이 짧고, 판독과 기입의 빈도는 높다. 따라서, 프로그램의 실행 종료와 함께 폐기되는 데이터에 대해, SR_Color로서 4가 설정되고, SW_Color로서 4가 설정된다. 또 하나의 프로그램이 동적으로 확보하는 영역은, 프로그램이 새로운 파일을 위해 생성한 영역이다. 프로그램에 의해 생성된 데이터는 데이터 수명이 길고, 판독과 기입의 빈도는 생성하는 파일의 종별에 의존한다.
프로세스에 의해 참조되는 파일로서 취급되는 데이터에 대해, 파일의 데이터 수명은 길다고 설정된다.
예를 들어 파일의 확장자가 SYS, dll, DRV 등으로 나타내어진 바와 같은 시스템 파일이 판독되는 경우에 대해 설명한다. 이와 같은 확장자를 갖는 데이터는, 오퍼레이팅 시스템이 다양한 처리를 실행하는 경우에 판독되는 파일이다. 혼성 메인 메모리(2) 상에 오퍼레이팅 시스템이 인스톨되는 경우에, 한번 기입되면 그 후 갱신되는 일은 거의 없다. 이들의 확장자를 갖는 파일은, 파일 중에서 비교적 액세스 빈도는 높지만, 프로그램(커널)의 텍스트 영역과 비교하여 액세스 빈도는 낮다고 예측된다. 따라서, 오퍼레이팅 시스템(27)은, 이들의 확장자를 갖는 데이터의 SW_Color를 1로 설정하고, SR_Color를 3으로 설정한다. 이 설정은, 데이터로부터 예측되는 기입 빈도는 매우 낮고, 예측되는 판독 빈도는 높은 것을 나타내고 있다. 즉, 이들의 확장자를 갖는 데이터는, 오퍼레이팅 시스템의 갱신이나 다른 프로그램을 인스톨하는 경우에 몇 번 재기입되는 정도이며, 거의 Read Only로서 취급되는 것으로 예측된다.
확장자가 JPEG에 대표되는 사진 데이터, 및 확장자가 MOV에 대표되는 무비 데이터는, 한번 기입되면 다시 기입이 행해지는 일은 적다. 이와 같은 사진 및 무비 데이터는 프로그램으로부터 액세스되는 빈도가 적다고 예측된다. 따라서, 오퍼레이팅 시스템(27)은, 사진 및 무비 데이터에 대해, SW_Color 및 SR_Color의 설정치는 작아진다.
도 43은, 컬러링 테이블의 엔트리의 얼라인먼트의 제1 예를 나타내는 도면이다.
도 44는, 컬러링 테이블의 엔트리의 얼라인먼트의 제2 예를 나타내는 도면이다.
컬러링 테이블의 엔트리는, 데이터의 최소의 판독 기입 사이즈(예를 들어 NAND형 플래시 메모리의 페이지 사이즈)에 대응하고 있지만, 프로세스는, 논리 어드레스 공간에 데이터를 맵할 때, 데이터의 최소의 판독 기입 사이즈로 얼라인먼트 하여 맵하는 것을 의무 부여되어 있지 않다. 이로 인해, 컬러링 테이블의 1 엔트리에 대해 복수의 데이터가 대응할 가능성이 있다.
이와 같은 경우, 오퍼레이팅 시스템(27)은, 도 43에 나타낸 바와 같이, 1 엔트리에 대응하는 복수의 데이터 중에서, 가장 판독 빈도 및 기입 빈도가 높다고 예측되는 데이터를 대표로 한다.
혹은, 오퍼레이팅 시스템(27)은, 도 44에 나타낸 바와 같이, 1 엔트리를 점유하는 데이터의 사이즈를 가중치로 하고, 각 데이터의 SW_Color, SR_Color의 가중 평균치를 설정한다.
컬러링 테이블(14)에 의해 나타내어지고 있는 SW_Color와 SR_Color는, 프로그램 작성자에 의해 오퍼레이팅 시스템(27) 등의 소스 코드에 매립되거나, 오퍼레이팅 시스템(27)에 의해 예측된다. 그러나, 프로그램 개발자가 의도한 경우에 다른 용도로 파일이나 사진 데이터가 사용되는 경우도 있다. 일반적으로, 사진 등과 같은 데이터의 액세스는 대부분이 판독이며, 사진의 내용이 재기입되는 일은 적다. 그러나, 사진을 가공하는 프로그램이 특정의 사진을 취급하는 경우, 가공 중의 사진이 빈번하게 재기입되는 일이 있다. 이와 같은 경우, 컬러링 테이블(14)의 SW_Color와 SR_Color를 사용자가 재기입 가능하면, 특정의 파일을, 보다 고속으로 재기입 횟수에 여유가 있는 영역으로 이동하는 것이 가능해진다. 이와 같은 동작을 실현시키기 위해, 각 데이터의 데이터 고유의 액세스 빈도 정보는, 오퍼레이팅 시스템(27)의 소프트웨어 상에서 재기입되도록, 오퍼레이팅 시스템(27)의 파일 시스템을 설계하는 것이 바람직하다. 예를 들어 일반적인 브라우저에서 파일의 프로퍼티를 열면, 컬러링 테이블(14)에 상당하는 속성이 GUI 화면 상에서 볼 수 있도록 시스템이 설계되어 있고, 그 초기 데이터를 사용자가 GUI 상에서 변경할 수 있도록 오퍼레이팅 시스템(27)을 설계하는 것이 바람직하다.
다음에, 본 실시 형태에 관한 메모리 관리 장치(1)를 사용한 정보 처리 장치에 의한 혼성 메인 메모리(2)로부터의 데이터 판독 동작에 대해 상세하게 설명한다.
프로세서(3b)로부터 데이터의 판독 요구가 발생하면, 프로세서(3b)에 의해 발행된 가상 논리 어드레스는 논리 어드레스 공간에 할당된 논리 어드레스로 변 환(CPUID 프로세스 ID의 부가)된다. 그리고, 메모리 관리 장치(1)는, 변환 후의 논리 어드레스에 대응하여 휘발성 반도체 메모리(8), 불휘발성 반도체 메모리(9, 10)로부터 데이터의 판독을 행한다. 논리 어드레스에 대응하는 데이터가 휘발성 반도체 메모리(8)의 메모리 영역에 존재하는 경우에는, 휘발성 반도체 메모리(8) 상의 데이터는, 메모리 관리 장치(1)를 통해 2차 캐시 메모리(5b)에 도입된다.
휘발성 반도체 메모리(8) 상에 논리 어드레스에 대응하는 데이터가 존재하지 않는 경우, 메모리 관리 장치(1)는 논리 어드레스에 대응하는 불휘발성 반도체 메모리(9, 10)의 칩 내의 블록 어드레스, 페이지 어드레스를 정보 기억부(17) 내의 어드레스 변환 정보(13)에 기초하여 검색하고, 필요한 데이터를 불휘발성 반도체 메모리(9, 10)의 칩에서의 지시된 블록 내의 소정 페이지로부터 판독한다.
이때, 메모리 관리 장치(1)는, 컬러링 테이블(14)에 기초하여, 논리 어드레스에 대응하는 데이터의 고유의 액세스 빈도 정보를 참조하여, 판독 방법을 결정한다.
도 45는, 컬러링 테이블(14)에서의 기입 빈도 및 판독 빈도의 산출의 방법의 일례를 나타내는 도면이다.
오퍼레이팅 시스템(27)의 개발자는, 메모리 관리 장치(1)의 데이터 판독 방식과 데이터 기입 방식의 실장에 의해, 앞서 설명한 기준 등을 사용하여 SW_Color, SR_Color를 설정한다.
도 46은, 본 실시 형태에 관한 메모리 관리 장치(1)에 의한 판독 방식의 결정 동작의 일례를 나타내는 흐름도이다.
이 도 46에서의 SR_Color는, 컬러링 테이블(14)의 SR_Color에 대응하고 있다. 컬러링 테이블(14)의 기입 빈도 및 판독 빈도는, 메모리 관리 장치(1)가 메모리 사용 정보(11), 메모리 고유 정보(12), 컬러링 테이블(14)에 포함되어 있는 기입 횟수, 판독 횟수, 데이터 생성 시각을 사용하여 산출되는 값이다.
도 46의 흐름도의 스텝 V1 내지 V13에서는, 상기 도 41, 도 42에 있어서 설정되어 있는 SR_Color 등에 기초하여, 데이터가 메모리 관리 장치(1)에 의해 어떻게 판독되는지가 설명되어 있다.
우선, SR_Color를 5, SW_Color를 1로 지정된 커널의 텍스트 영역은, 판독되는 경우가 많고, 기입될 가능성은 낮다고 추측된다. 이 커널의 텍스트 영역에서의 제1 데이터는, 오퍼레이팅 시스템이 다양한 처리를 할 때에 판독되기 때문에, 판독 횟수는 많아지고, 또한 고속으로 판독될 필요가 있다.
메모리 관리 장치(1)는, 불휘발성 반도체 메모리(9, 10)로부터 판독된 제1 데이터를, 프로세서(3b)의 2차 캐시 메모리(5b) 또는 1차 캐시 메모리(4b)에 대해 기입하는 동시에, 병행하여, 혼성 메인 메모리(2) 내의 휘발성 반도체 메모리(8)의 메모리 영역에도 판독된 제1 데이터를 전송한다.
다시 동일한 제1 데이터가 판독되는 경우에는, 프로세서(3b)의 2차 캐시 메모리(5b) 또는 1차 캐시 메모리(4b) 상으로부터, 또는 캐시 히트(cache hit)하지 않는 경우에는 혼성 메인 메모리(2)의 휘발성 반도체 기억 메모리(8)의 메모리 영역으로부터, 제1 데이터의 판독이 행해진다. 혼성 메인 메모리(2) 상의 휘발성 반도체 메모리(8)의 메모리 영역에 기억된 제1 데이터는, 전원이 오프될 때까지 휘발 성 반도체 메모리(8) 상에 유지된다.
다음에, SR_Color를 5, SW_Color를 5로 지정된 커널의 데이터 영역은, 시스템이 기동할 때마다 새롭게 생성, 초기화하는 영역이다. 이로 인해, 커널의 데이터 영역에서의 제2 데이터의 수명은 짧다고 추측된다. 메모리 관리 장치(1)는, 최초에 제2 데이터의 수명을 참조한다. 제2 데이터는, 시스템 가동 중에 반드시 휘발성 반도체 메모리(8) 상에 존재하고, 전원이 오프되는 동시에 휘발성 반도체 메모리(8)로부터 소거된다.
다음에, SR_Color를 4, SW_Color를 1로 지정된 사용자 프로그램의 영역은, 모든 프로세스로부터 리엔트런트로 호출되는 커널에 비해, 판독 빈도는 낮다. 사용자 프로그램의 영역에서의 제3 데이터는 휘발성 반도체 메모리(8)의 메모리 영역에 배치되지만, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)의 메모리 영역이 Full로 메워진 경우, 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10)의 메모리 영역으로의 라이트 백 대상으로 된다. 소거되는 제3 데이터의 순서는, 컬러링 테이블(14)의 정보에 기초하여 결정된다. 라이트 백되는 경우에는, 판독이 적은 순서로, 제3 데이터가 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10) 상으로 옮겨진다.
SR_Color를 4, SW_Color를 4로 지정한 프로그램이 동적으로 확보하는 영역에서의 제4 데이터 중, 데이터 수명이 짧다고 지정된 제4 데이터는, 커널의 데이터 영역과 마찬가지로, 시스템 가동 중에 반드시 휘발성 반도체 메모리(8) 상에 존재하고, 전원이 오프되는 동시에 휘발성 반도체 메모리(8)로부터 소거된다.
한편, 데이터 수명이 길다고 지정된 제4 데이터는, 휘발성 반도체 메모리(8)의 메모리 영역에 배치되지만, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)의 메모리 영역이 Full로 메워진 경우, 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10)의 메모리 영역으로의 라이트 백 대상으로 된다.
다음에, 프로세스가 참조하는 파일로서 취급되는 데이터에 대해 설명한다. 상기 도 41, 도 42에서는 파일의 데이터 수명은 모두 길다고 설정되어 있다.
SW_Color를 1로 하고, SR_Color를 3으로 지정된 파일류에 포함되는 제5 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도가 높은 것이 오퍼레이팅 시스템(27)에 의해 추측된다. 이때, 메모리 관리 장치(1)는, 제5 데이터를 휘발성 반도체 메모리(8)의 메모리 영역에 배치하지만, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)의 메모리 영역이 Full로 메워진 경우, 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10)의 메모리 영역으로의 라이트 백 대상으로 된다.
SW_Color를 1로 하고. SR_Color를 2로 지정된 파일류에 포함되는 제6 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도도 낮은 것이 오퍼레이팅 시스템(27)에 의해 추측된다. 이와 같이, 메모리 관리 장치(1)는, 판독 빈도가 높다고 판정되어 있지 않는 경우, 판독시에 휘발성 반도체 메모리(8)의 메모리 영역에 카피를 행하지 않고, 불휘발성 반도체 메모리(9, 10)에 직접 액세스한다.
SW_Color를 1로 하고, SR_Color를 1로 지정한 파일류에 포함되는 제7 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도도 매우 낮은 것이 오퍼레이팅 시 스템(27)에 의해 추측된다. 이와 같이, 메모리 관리 장치(1)는, 판독 빈도가 높다고 판정되어 있지 않는 경우, 판독시에 휘발성 반도체 메모리(8)의 메모리 영역에 카피를 행하지 않고, 불휘발성 반도체 메모리(9, 10)에 직접 액세스한다.
도 47은, 본 실시 형태에 관한 메모리 관리 장치(1)의 데이터 판독의 처리의 일례를 나타내는 흐름도이다.
이 도 47의 스텝 W1 내지 W10에 있어서, 메모리 관리 장치(1)는, 정보 기억 장치(17) 내의 메모리 사용 정보(11) 중 대응하는 페이지 어드레스의 판독 횟수와 메모리 고유 정보(12)의 판독 상한 횟수를 참조한다.
메모리 관리 장치(1)는, 메모리 사용 정보(11)로부터 판독된 메모리의 판독 횟수가, 판독 상한 횟수를 초과하고 있는지 여부를 체크한다.
메모리의 판독 횟수가, 판독 상한 횟수를 초과하고 있지 않는 경우, 메모리 관리 장치(1)는, 정보 기억부(17) 내의 판독 횟수를 인크리먼트하는 처리를 한다.
메모리의 판독 횟수가, 판독 상한 횟수를 초과하고 있는 경우에는, 메모리 관리 장치(1)는, 동일한 메모리 공간[SLC 영역(2치 영역), 2bit/Cell의 다치 영역, 3bit/Cell의 다치 영역, 4bit/Cell의 다치 영역] 외의 블록에, 블록 내의 전부의 페이지의 데이터를 카피한다. 이와 같이 카피를 행하는 경우, 메모리 관리 장치(1)는, 판독 횟수가 적은 새로운 블록을 검색하고, 거기에 모든 페이지 데이터를 재배치하는(이전하는) 것이 바람직하다. 판독 처리가 성공한 경우, 메모리 관리 장치(1)는 컬러링 테이블(14)의 판독 횟수를 인크리먼트한다.
도 48은, 본 실시 형태에 관한 메모리 관리 장치(1)의 데이터 기입의 처리의 일례를 나타내는 흐름도이다.
이 도 48의 스텝 X1 내지 X8에 있어서, 프로세스(프로그램)(6a 내지 6c)로부터 데이터의 기입 요구가 발생하면, 각각의 프로세서(3a 내지 3c)는, 각각의 프로세서(3a 내지 3c)가 포함하는 1차 캐시 메모리(4a 내지 4c), 2차 캐시 메모리(5a 내지 5c) 상에 데이터가 존재하는지 여부를 체크한다.
1차 캐시 메모리(4a 내지 4c) 또는 2차 캐시 메모리(5a 내지 5c) 상에 데이터가 존재하는 경우, 프로세서(3a 내지 3c)는, 1차 캐시 메모리(4a 내지 4c) 또는 2차 캐시 메모리(5a 내지 5c) 상의 데이터를 재기입하여 기입 동작이 종료된다.
1차 캐시 메모리(4a 내지 4c) 또는 2차 캐시 메모리(5a 내지 5c) 상에 데이터가 존재하지 않는 경우, 메모리 관리 장치(1)는, 가상 논리 어드레스를 논리 어드레스 공간에 할당된 논리 어드레스로 변환한다.
변환 후의 논리 어드레스에 대응하는 데이터가 휘발성 반도체 메모리(8) 상에 존재하는 경우, 메모리 관리 장치(1)는, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)에 대해 기입 동작을 행한다.
논리 어드레스에 대한 데이터가 휘발성 반도체 메모리(8) 상에 존재하지 않을 경우, 도 48에 나타낸 바와 같이, 메모리 관리 장치(1)는, 불휘발성 반도체 메모리(9, 10)의 메모리 영역에 대해 기입 동작을 행한다. 데이터 생성시에는, 이 논리 어드레스에 대응한 불휘발성 반도체 메모리(9, 10)의 기입 번지는, 논리 어드레스에 대응하는 컬러링 테이블(14)의 엔트리와 메모리 관리 장치(1)의 정보 관리 장치(17) 내에 보존된 메모리 사용 정보(11), 메모리 고유 정보(12)에 기초하여 결 정된다. 기입 번지의 결정 후, 메모리 관리 장치(1)는, 결정된 기입 번지에 관한 정보를 어드레스 변환 정보(13)에 기입한다. 기입이 성공한 경우, 메모리 관리 장치(1)는 컬러링 테이블(14)의 기입 횟수를 인크리먼트한다.
도 49는, 본 실시 형태에 관한 메모리 관리 장치(1)에 의한 기입처 영역의 결정 동작의 일례를 나타내는 흐름도이다. 메모리 관리 장치(1)는, 이 도 49의 기입처 영역의 결정을, 컬러링 테이블(14)에 기초하여 실행한다. 메모리 영역을 결정하기 위해 사용하는 컬러링 테이블(14)의 속성은 SW_Color, SR_Color, 기입 빈도로 한다.
오퍼레이팅 시스템(27)의 개발자는, 메모리 관리 장치(1)의 데이터 판독 방식과 데이터 기입 방식의 실장에 대해, 상기 도 41 및 도 42에 나타낸 바와 같은 설정을 행한다. 이 도 49의 스텝 Y1 내지 Y12는, 상기 도 41 및 도 42에 나타낸 설정에 따라서, 데이터가 메모리 관리 장치(1)에 의해 어떻게 판독되는지를 나타내고 있다.
우선, SR_Color를 5, SW_Color를 1로 지정된 커널의 텍스트 영역에서의 제1 데이터는 판독되는 횟수가 많고, 기입될 가능성은 낮다고 추측된다. 제1 데이터는, 상기 도 46에 나타내어지고 있는 판독 방식의 결정 동작에 기초하여, 시스템 가동 중에 휘발성 반도체 메모리(8)로 옮겨져 판독 또는 기입된다. 이로 인해, 제1 데이터가 실제로 불휘발성 반도체 메모리(9, 10)에 기입 출력되는 빈도는 낮다. 그러나, 제1 데이터의 중요성은 높기 때문에, 이 도 49에 있어서, 메모리 관리 장치(1)는, 제1 데이터를, SLC인 불휘발성 반도체 메모리(9)의 B 영역에 기입한다.
다음에, SR_Color를 5, SW_Color를 5로 지정된 커널의 데이터 영역은, 시스템이 기동할 때마다 새롭게 생성, 초기화하는 영역이므로, 커널의 데이터 영역에서의 제2 데이터의 수명은 짧다고 추측된다. 메모리 관리 장치(1)는, 최초에 제2 데이터의 수명을 참조한다. 제2 데이터는, 시스템 가동 중에 반드시 휘발성 반도체 메모리(8) 상에 존재하고, 전원이 오프되는 동시에 휘발성 반도체 메모리(8)로부터 소거된다. 따라서, 제2 데이터는, 불휘발성 반도체 메모리(9, 10)의 메모리 영역에 기입되는 일은 없다.
다음에, SR_Color를 4, SW_Color를 1로 지정된 사용자 프로그램의 영역에서의 제3 데이터는, 모든 프로세스로부터 리엔트런트로 호출되는 커널의 영역에서의 데이터에 비해, 판독 빈도는 낮다. 상기 도 46에 나타낸 판독 동작으로부터, 사용자 프로그램의 영역에서의 제3 데이터는, 장기간에 걸쳐 액세스되지 않는 경우에만 불휘발성 반도체 메모리(9, 10)의 메모리 영역에 기입 출력된다. 따라서, 제3 데이터가 불휘발성 반도체 메모리(9, 10)에 기입되는 빈도는 낮다. 제3 데이터는, 커널의 텍스트 영역에서의 데이터와 비교하여 중요도는 낮기 때문에, 도 49에서는 MLC 영역인 A 영역에 기입된다.
SR_Color를 4, SW_Color를 4로 지정된 프로그램이 동적으로 확보하는 영역에서의 제4 데이터 중, 데이터 수명이 짧다고 지정된 제4 데이터는, 커널의 데이터 영역과 마찬가지로, 시스템 가동 중에 반드시 휘발성 반도체 메모리(8) 상에 존재한다. 메모리 관리 장치(1)는, 최초에 데이터의 수명을 참조한다. 제4 데이터는, 시스템 가동 중에 반드시 휘발성 반도체 메모리(8) 상에 존재하고, 전원이 오프되 는 동시에 휘발성 반도체 메모리(8)로부터 소거되므로 불휘발성 반도체 메모리(9, 10)의 메모리 영역에 기입되는 일은 없다.
한편, 데이터 수명이 길다고 지정된 제4 데이터는, 휘발성 반도체 메모리(8)의 메모리 영역에 배치되지만, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)의 메모리 영역이 Full로 메워진 경우, 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10)의 메모리 영역으로의 라이트 백 대상으로 된다. 프로그램의 텍스트 영역은 데이터의 중요도가 높기 때문에, 프로그램의 텍스트 영역에서의 데이터는, SLC 영역인 C 영역에 기입하도록 하고 있다.
다음에 프로세스가 참조하는 파일로서 취급되는 데이터에 대해 설명한다. 도 41 및 도 42에서는 파일의 데이터 수명은 모두 길다고 설정되어 있다.
SW_Color를 1로 하고, SR_Color를 3으로 지정된 시스템 파일류에서의 제5 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도가 높은 것이 오퍼레이팅 시스템(27)에 의해 추측된다. 이때, 메모리 관리 장치(1)는, 제5 데이터를 휘발성 반도체 메모리(8)의 메모리 영역에 배치하지만, 혼성 메인 메모리(2)의 휘발성 반도체 메모리(8)의 메모리 영역이 Full로 메워진 경우, 휘발성 반도체 메모리(8) 상으로부터 불휘발성 반도체 메모리(9, 10)의 메모리 영역으로의 라이트 백 대상으로 된다. 제5 데이터의 기입 빈도는 낮다고 판단할 수 있으므로 메모리 관리 장치(1)는 제5 데이터를 MLC 영역으로 배치한다.
SW_Color를 3으로 하고, SR_Color를 3으로 지정된 파일류는, 기입 빈도가 매우 높고, 예측되는 판독 빈도도 높은 것이 오퍼레이팅 시스템(27)에 의해 추측된 다. 따라서, 메모리 관리 장치(1)는, SW_Color가 3이고, SR_Color가 3인 파일류에서의 데이터를 SLC 영역으로 배치한다.
SW_Color를 1로 하고, SR_Color를 2로 지정된 파일류에 포함되는 제6 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도도 낮은 것이 오퍼레이팅 시스템(27)에 의해 추측된다. 제6 데이터에 대해서는, 파일로서의 중요도도 낮다고 판단되기 때문에, 메모리 관리 장치(1)는, 제6 데이터를 MLC 영역으로 배치한다.
SW_Color를 1로 하고, SR_Color를 1로 지정된 파일류에 포함되는 제7 데이터는, 기입 빈도가 매우 낮고, 예측되는 판독 빈도도 매우 낮은 것이 오퍼레이팅 시스템(27)에 의해 추측된다. 제7 데이터에 대해서는, 파일로서의 중요도도 낮다고 판단되기 때문에, 메모리 관리 장치(1)는, 제7 데이터를 MLC 영역으로 배치한다.
다음에, 메모리 영역 내에서의 기입처 물리 어드레스의 결정에 대해 설명한다.
상기한 처리에 의해 기입 대상의 메모리 영역이 결정된 경우, 메모리 관리 장치(1)는, 기입처의 블록 어드레스를 결정한다. 이 경우, 메모리 관리 장치, 1은, 컬러링 테이블(14)을 참조하여, 기입처 블록 어드레스를 적절하게 선택함으로써 웨어 레벨링의 발생을 억제하고, 불필요한 소거 처리를 저감한다.
이하에 이 웨어 레벨링의 발생을 억제하는 방법의 상세에 대해 설명한다.
일반적으로, 웨어 레벨링은, 블록간에 데이터의 교체를 행한다. 이로 인해, 웨어 레벨링이 행해지는 빈도에 의해 소거 횟수의 평준화가 행해진다. 웨어 레벨링에서는, 그때마다 블록에 대한 소거 처리가 실행된다. 웨어 레벨링의 빈도를 낮 추면, 소거 처리의 횟수는 감소하지만, 소거 블록의 평준화가 행해지지 않는다는 트레이드 오프를 갖는다. 블록간의 소거 횟수의 차가 웨어 레벨링 발동의 트리거로 되는 알고리즘에 있어서, 웨어 레벨링의 빈도는, 소거 횟수의 차의 임계치에 의존한다. 본 실시 형태에 있어서, 메모리 관리 장치(1)는, 웨어 레벨링에 의한 소거 처리의 증가를 피하면서, 평준화를 행하기 위해, 데이터 고유의 액세스 빈도 정보를 사용하여, 블록으로의 기입시에 적절한 블록을 선택한다.
도 50은, 불휘발성 반도체 메모리(9, 10)의 임의의 블록에서의 소거 횟수의 추이의 일례를 나타내는 그래프이다.
시간의 경과에 따라 이상적인 소거 횟수는 변화한다. NAND형 플래시 메모리를 사용하는 정보 처리 장치에서는, 장래적으로 NAND형 플래시 메모리가 열화하고, 메모리를 교환할 필요가 발생한다. 메모리의 교환기까지 NAND형 플래시 메모리의 다수의 블록을 사용하기 위해서는 웨어 레벨링에 의한 소거 횟수의 평준화가 필요하다. 이 도 50에서는, NAND형 플래시 메모리의 임의의 블록에서의 소거 횟수의 추이를 나타내고 있다.
모든 블록이 도 50에서 나타낸 소거 횟수의 추이를 따르기 위해서는, 웨어 레벨링에 있어서 각 블록의 소거 횟수의 차에 대한 임계치를 작게 설정한다.
도 51은, 웨어 레벨링에 있어서 소거 횟수의 차에 대한 임계치를 작게 설정한 경우의 변화의 일례를 나타내는 그래프이다.
이 도 51에서의 파선은 각 블록의 소거 횟수의 변동의 범위를 나타내고 있다. 도 51에서는, 임계치를 작게 함으로써 웨어 레벨링을 위한 소거 처리가 증가 하고, NAND형 플래시 메모리 전체의 수명이 짧아지는 상태가 도시되어 있다.
메모리 관리 장치(1)는, 소거 횟수의 분산을 저감시키고, 웨어 레벨링에 의한 소거 처리를 억제하기 위해, 데이터를 기입할 때에 데이터의 액세스 빈도 정보에 기초한 소거 블록의 선택을 행한다.
도 52는, 컬러링 테이블(14)의 정보로부터 기준으로 되는 소거 횟수를 결정하는 결정표의 일례를 나타내고 있다.
메모리 관리 장치(1)는, 컬러링 테이블(14)의 파라미터에 기초하여, 기준으로 되는 소거 횟수를 산출하고, 기준으로 되는 소거 횟수에 가장 가까운 소거 횟수를 갖는 블록을 선택한다. 기준으로 되는 블록의 소거 횟수는, 현재의 메모리 영역 내의 블록의 최소의 소거 횟수를 최소치(사용률 0%)로 하고, 최소의 소거 횟수에 웨어 레벨링의 임계치를 가산한 값을 최대치(사용률 100%)로 한다.
이 도 52에 있어서는, 컬러링 테이블(14)의 SW_Color와 기입 빈도를 사용하여, 기준으로 되는 소거 횟수가 산출된다. 그러나, 파라미터로서 SR_Color나 판독 빈도를 사용하여 웨어 레벨링의 억제를 행하는 것으로 해도 된다.
도 53은, 소거 가능 횟수에 따른 블록의 그룹 분류의 일례를 나타내는 그래프이다.
도 54는, 소거 가능 횟수에 따른 블록의 그룹 분류의 판단 기준을 나타내는 도면이다.
본 실시 형태에 있어서는, 메모리 영역마다 소거 횟수에 의한 블록의 그룹 분류가 행해진다. 블록의 그룹 분류의 결과를 나타내는 정보는, 메모리 고유 정 보(12)로서 보존된다. 또한, 블록의 그룹 분류의 결과를 나타내는 정보는, 메모리 사용 정보(11)로서 보존되는 것으로 해도 된다.
도 53의 굵은 선은, 최소의 소거 횟수의 추이를 나타내고 있고, 파선은 웨어 레벨링의 임계치를 나타내고 있다. 도 53에 나타낸 바와 같이, 각 블록은 웨어 레벨링의 임계치의 범위 내(변동의 범위 내)에서 소거 횟수마다의 그룹으로 분할된다.
메모리 관리 장치(1)는, 어떤 블록의 데이터가 소거되고, 다시 기입 가능하게 되었을 때, 도 54에 나타낸 바와 같은 판정표에 기초하여, 블록의 그룹이 어디에 속하는지 판정하고, 메모리 고유 정보(12)에 기억한다.
도 55는, 컬러링 테이블(14)의 정보에 기초하여 웨어 레벨링에서의 블록이 속하는 그룹의 탐색의 일례를 나타내는 도면이다.
메모리 관리 장치(1)는, 컬러링 테이블(14)의 정보에 기초하여, 블록을 탐색하는 기준으로 되는 블록의 그룹을 결정한다.
탐색 기준으로 되는 블록의 그룹이 결정되면, 도 55에 나타낸 바와 같이, 메모리 관리 장치(1)는 블록이 발견될 때까지, 그 근방의 블록 그룹을 탐색한다. 이 탐색 처리에 의해 데이터를 기입하는 영역의 물리 어드레스가 결정되면, 메모리 관리 장치(1)는, 데이터의 기입을 행하고, 어드레스 변환 정보(13)를 갱신한다.
또한, 메모리 관리 장치(1)는, 다른 블록 탐색법을 사용하여 기입 번지를 결정하는 것으로 해도 된다. 예를 들어, 메모리 관리 장치(1)는 소거 횟수를 키로 하고, 소거 블록을 노드로 하는 트리 구조(B-Tree B+Tree RB-Tree 등)로 기입 가능 한 블록(소거 처리 완료)을 관리하고, 메모리 고유 정보(12) 또는 메모리 사용 정보(11)에 보존한다. 메모리 관리 장치(1), 기준으로 되는 소거 횟수를 키로서 트리를 탐색하고, 가장 가까운 소거 횟수를 갖는 블록을 선택한다.
임의의 프로세스(3b)에 의해 데이터가 소거되면, 오퍼레이팅 시스템(27)은 이 데이터에 대한 컬러링 테이블(14)의 내용을 소거한다. 메모리 관리 장치(1)는, 컬러링 테이블(14)의 내용이 소거되었을 때, 어드레스 변환 정보(13)에서의 소거 대상 데이터의 논리 어드레스에 대응하는 물리 어드레스를 소거한다.
데이터가 휘발성 반도체 메모리(8) 상에 존재하는 경우에는, 휘발성 반도체 메모리(8) 상의 데이터가 소거된다.
도 56은, 본 실시 형태에 관한 메모리 관리 장치(1)에 캐시 메모리를 더 포함한 메모리 관리 장치의 일례를 나타내는 블록도이다.
메모리 관리 장치(32)는, 상기 메모리 관리 장치(1)와 같은 구성에 부가하여, 캐시 메모리(33)를 포함하고 있다.
프로세서(3b)는, 1차 캐시 메모리(4b), 2차 캐시 메모리(5b)에 부가하여, 캐시 메모리(33)를 직접 액세스 가능하다.
메모리 관리 장치(32)는, 1차 캐시 메모리(4b), 2차 캐시 메모리(5b), 캐시 메모리(33) 중 어느 하나에 있어서, 페이지 인 또는 페이지 아웃이 발생한 경우에, 혼성 메인 메모리(2)를 액세스한다.
이상 설명한 본 실시 형태에 있어서는, 혼성 메인 메모리(2)의 각 메모리의 내구성에 기초하여 데이터 배치가 실현되고, 혼성 메인 메모리(2)의 수명을 연장시 킬 수 있다.
또한, 본 실시 형태에 있어서는, 혼성 메인 메모리(2)의 각 메모리의 신뢰성에 기초하여 데이터 배치가 실현되기 때문에, 혼성 메인 메모리(2)에서의 치명적인 데이터 결손을 방지할 수 있다.
본 실시 형태에 관한 메모리 관리 장치(1) 및 혼성 메인 메모리(2)를 사용함으로써, 스왑을 없앨 수 있다.
본 실시 형태에 있어서는, 불휘발 반도체 메모리(9, 10)가 메인 메모리로서 사용된다. 이에 의해, 메인 메모리의 기억 용량을 대용량화할 수 있어, HDD/SSD를 사용한 2차 기억 시스템을 사용하지 않아도 된다.
본 실시 형태에 있어서는, 메모리 계층을 적게 할 수 있어, 오퍼레이팅 시스템(27)의 구조를 간단하게 할 수 있다. 예를 들어, 본 실시 형태에 있어서는, 1차 캐시 메모리(4a 내지 4c), 2차 캐시 메모리(5a 내지 5c), 혼성 메인 메모리(2)를 동일한 계층으로 취급할 수 있다.
본 실시 형태에 있어서는, 불휘발성 반도체 메모리(9, 10)를 메인 메모리로서 사용하기 때문에, 인스턴트 온을 고속화할 수 있다.
본 실시 형태에 있어서는, 메모리 사용 정보(11), 메모리 고유 정보(12), 데이터 고유 정보를 포함하는 컬러링 테이블(14)을 사용하여 혼성 메인 메모리(2)의 수명을 연장시킬 수 있고, 또한 고속 액세스 가능한 메모리 변환을 행할 수 있다.
본 실시 형태에 있어서는, 혼성 메인 메모리(2)로부터의 데이터 판독에 있어서, 불휘발성 반도체 메모리(9, 10)의 페이지 사이즈, 페이지 사이즈의 배수, 블록 사이즈, 블록 사이즈의 배수의 판독 단위의 데이터를, 일단 작업 메모리(16)에 기억하고, 이 작업 메모리(16)로부터 더 필요한 데이터(예를 들어 바이트 데이터)만을 프로세서(3b)에 송신할 수 있다. 이에 의해, 데이터 판독에 있어서 바이트 액세스를 가능하게 할 수 있다.
또한, 작업 메모리(16)는, 프로세서(3a 내지 3c) 내의 1차 캐시 메모리(4a 내지 4c), 2차 캐시 메모리(5a 내지 5c), 정보 기억부(17)를 사용하여 실현하는 것으로 해도 된다.
상기 각 실시 형태에 있어서, 기입 빈도는, 단위 시간당의 기입 횟수로 해도 된다. 판독 빈도는, 단위 시간당의 판독 횟수로 해도 된다.
상기 제9 및 제10 실시 형태에 있어서, 혼성 메인 메모리(2)는, SLC의 불휘발성 반도체 메모리(9)와 MLC의 불휘발성 반도체 메모리(10)를 포함한다.
SLC의 소거 가능 횟수와 MLC의 소거 가능 횟수는 다르다.
따라서, 메모리 관리 장치(1)에 의해 실행되는 웨어 레벨링은, 메모리 영역에 따라서 변경시키는 것으로 해도 된다.
이 경우, 예를 들어 소거 블록은, 그 소거 블록의 상태에 따라서 유즈드(used) 그룹 또는 프리(free) 그룹으로 나누어진다.
유즈드 그룹은, 데이터가 기입된 상태의 소거 블록의 집합이다.
프리 그룹은, 데이터가 소거 왼료된 소거 블록의 집합이다.
유즈드 그룹 중에서 소거 횟수가 적은 소거 블록과, 프리 그룹 중에서 소거 횟수가 많은 소거 블록 사이에서, 소거 횟수의 차가 소정의 임계치를 초과하는 경 우, 메모리 관리 장치(1)는, 유즈드 그룹 중에서 소거 횟수가 적은(예를 들어 최소) 유즈드 소거 블록과, 프리 그룹 중에서 소거 횟수가 많은 프리 소거 블록을 선택한다. 메모리 관리 장치(1)는, 선택된 유즈드 소거 블록의 데이터를, 선택된 프리 소거 블록으로 옮기는 동시에, 선택된 유즈드 소거 블록을 프리 그룹으로 옮기고, 선택된 프리 소거 블록을 유즈드 그룹으로 옮긴다.
이 웨어 레벨링에 있어서 선택된 유즈드 소거 블록은, 일정 기간, 프로텍트되어, 웨어 레벨링 대상이 되지 않는다.
이 웨어 레벨링에 의해, SLC에 있어서 블록 소거 횟수가 평준화되고, MLC에 있어서 블록 소거 횟수가 평준화된다.
메모리 관리 장치(1)는, 확장자와 메모리 영역(SLC 또는 MLC)에 따라서, 웨어 레벨링에 사용되는 임계치를 바꾼다. 예를 들어, 메모리 관리 장치(1)는, SLC의 메모리 영역에서는, 제1 임계치에 기초하여, 웨어 레벨링을 행하는지 여부를 판단한다. 메모리 관리 장치(1)는, MLC의 메모리 영역에서는, 제2 임계치에 기초하여, 웨어 레벨링을 행하는지 여부를 판단한다.
이에 의해, 각 메모리 영역에 있어서, 적절한 조건에서 웨어 레벨링을 실행시킬 수 있다.
도 1은 본 발명의 제1 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
도 2는 제1 실시 형태에 관한 메모리 관리 장치의 메모리 계층의 제1 예를 나타내는 도면.
도 3은 제1 실시 형태에 관한 메모리 관리 장치를 포함한 MPU가, NAND형 플래시 메인 메모리의 데이터, 기입 횟수 데이터의 일부, 어드레스 변환 테이블의 일부를 기억하는 경우의 동작의 일례를 나타내는 흐름도.
도 4는 제1 실시 형태에 관한 메모리 관리 장치를 포함한 MPU에 있어서, 1차 캐시 메모리 또는 NAND형 플래시 메인 메모리로부터 데이터를 판독하는 경우의 동작의 일례를 나타내는 흐름도.
도 5는 제1 실시 형태에 관한 메모리 관리 장치를 포함한 MPU로부터, 1차 캐시 메모리의 캐시 라인으로의 덮어쓰기가 발생하고, 또한 1차 캐시 메모리(3)의 데이터를 NAND형 플래시 메인 메모리에 기억하는 경우의 동작의 일례를 나타내는 흐름도.
도 6은 본 발명의 제2 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
도 7은 제2 실시 형태에 관한 메모리 관리 장치의 메모리 계층의 일례를 나타내는 도면.
도 8은 본 발명의 제3 실시 형태에 관한 메모리 관리 장치의 제1 예를 나타 내는 블록도.
도 9는 제3 실시 형태에 관한 메모리 관리 장치의 제2 예를 나타내는 블록도.
도 10은 본 발명의 제4 실시 형태에 관한 메모리 관리 장치의 적용예를 나타내는 블록도.
도 11은 본 발명의 제5 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
도 12는 제5 실시 형태에 관한 시스템 논리 어드레스의 일례를 나타내는 도면.
도 13은 본 발명의 제6 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
도 14는 제6 실시 형태에 관한 시스템 논리 어드레스의 일례를 나타내는 도면.
도 15는 본 발명의 제7 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
도 16은 본 발명의 제8 실시 형태에 관한 메모리 관리 장치의 구성의 일례를 나타내는 블록도.
도 17은 제8 실시 형태에 관한 메모리 관리 장치의 마이크로 프로세서의 기능의 일례를 나타내는 블록도.
도 18은 제8 실시 형태에 관한 메모리 관리 장치의 전송 알고리즘의 제1 동 작의 예를 나타내는 블록도.
도 19는 제8 실시 형태에 관한 메모리 관리 장치의 전송 알고리즘의 제2 동작의 예를 나타내는 블록도.
도 20은 제8 실시 형태에 관한 메모리 관리 장치의 전송 알고리즘의 제3 동작의 예를 나타내는 블록도.
도 21은 웨어 레벨링의 일례를 나타내는 블록도.
도 22는 복수의 NAND형 플래시 메인 메모리를 관리하는 메모리 관리 장치의 일례를 나타내는 사시도.
도 23은 MMU를 포함하고 있는 기존의 프로세서에 대해, 제8 실시 형태에 관한 메모리 관리 장치를 사용한 멀티 프로세서 시스템의 일례를 나타내는 블록도.
도 24는 종래의 멀티 프로세서 시스템의 일례를 나타내는 블록도.
도 25는 넓은 어드레스 공간용의 포인터를 구하는 처리의 일례를 나타내는 블록도.
도 26은 복수의 캐시 메모리와 복수의 NAND형 플래시 메인 메모리로 형성되는 가상 기억 공간의 일례를 나타내는 블록도.
도 27은 본 발명의 제9 실시 형태에 관한 메모리 관리 장치의 구성의 일례를 나타내는 블록도.
도 28은 제9 실시 형태에 관한 메모리 관리 장치의 처리부의 구성의 일례를 나타내는 블록도.
도 29는 제9 실시 형태에 관한 메모리 관리 장치에 의해 실현되는 물리 어드 레스 공간의 일례를 나타내는 블록도.
도 30은 제9 실시 형태에 관한 오퍼레이팅 시스템의 동작의 일례를 나타내는 블록도.
도 31은 프로세스가 파일을 혼성 메인 메모리에 맵하기 위한 영역에 대한 동적 중요도의 산출예를 나타내는 도면.
도 32는 제9 실시 형태에 관한 메모리의 사용률과 임계치의 관계의 일례를 나타내는 도면.
도 33은 제9 실시 형태에 관한 메모리 관리 장치에 의한 혼성 메인 메모리로 데이터 기입 동작의 일례를 나타내는 흐름도.
도 34는 제9 실시 형태에 관한 기입 대상 데이터 및 판독 대상 데이터의 데이터 구조의 일례를 나타내는 도면.
도 35는 제9 실시 형태에 관한 컬러링 테이블의 일례를 나타내는 도면.
도 36은 제9 실시 형태에 관한 혼성 메인 메모리의 어드레스 맵의 일례를 나타내는 도면.
도 37은 본 발명의 제10 실시 형태에 관한 혼성 메인 메모리의 메모리 맵의 일례를 나타내는 도면.
도 38은 제10 실시 형태에 관한 컬러링 테이블의 일례를 나타내는 도면.
도 39는 컬러링 테이블의 생성 처리의 일례를 나타내는 흐름도.
도 40은 오퍼레이팅 시스템에 의한 컬러링 테이블의 엔트리의 생성 처리의 일례를 나타내는 흐름도.
도 41은 각종의 데이터에 대한 SW_Color, SR_Color, 데이터 수명의 할당의 설정의 제1 예를 나타내는 도면.
도 42는 각종의 데이터에 대한 SW_Color, SR_Color, 데이터 수명의 할당의 설정의 제2 예를 나타내는 도면.
도 43은 컬러링 테이블의 엔트리의 얼라인먼트의 제1 예를 나타내는 도면.
도 44는 컬러링 테이블의 엔트리의 얼라인먼트의 제2 예를 나타내는 도면.
도 45는 컬러링 테이블에서의 기입 빈도 및 판독 빈도의 산출의 방법의 일례를 나타내는 도면.
도 46은 제10 실시 형태에 관한 메모리 관리 장치(1)에 의한 판독 방식의 결정 동작의 일례를 나타내는 흐름도.
도 47은 제10 실시 형태에 관한 메모리 관리 장치의 데이터 판독의 처리의 일례를 나타내는 흐름도.
도 48은 제10 실시 형태에 관한 메모리 관리 장치의 데이터 기입의 처리의 일례를 나타내는 흐름도.
도 49는 제10 실시 형태에 관한 메모리 관리 장치에 의한 기입처 영역의 결정 동작의 일례를 나타내는 흐름도.
도 50은 불휘발성 반도체 메모리의 임의의 블록에서의 소거 횟수의 추이의 일례를 나타내는 그래프.
도 51은 웨어 레벨링에 있어서 소거 횟수의 차에 대한 임계치를 작게 설정한 경우의 변화의 일례를 나타내는 그래프.
도 52는 컬러링 테이블의 정보로부터 기준으로 되는 소거 횟수를 결정하는 결정표의 일례를 나타내는 도면.
도 53은 소거 가능 횟수에 따른 블록의 그룹 분류의 일례를 나타내는 그래프.
도 54는 소거 가능 횟수에 따른 블록의 그룹 분류의 판단 기준을 나타내는 도면.
도 55는 컬러링 테이블의 정보에 기초하여 웨어 레벨링에서의 블록이 속하는 그룹의 탐색의 일례를 나타내는 도면.
도 56은 캐시 메모리를 더 포함한 제10 실시 형태에 관한 메모리 관리 장치의 일례를 나타내는 블록도.
<도면의 주요 부분에 대한 부호의 설명>
101 : MPU
102 : 메모리 관리 장치
104 : NAND형 플래시 메인 메모리
105 : 어드레스 변환 테이블
106 : 기입 횟수 데이터
107 : MMU
108 : 캐시 컨트롤러
109 : 메인 메모리용 MMU
110 : 액세스 이력 저장부

Claims (20)

  1. 제1 메모리와, 불휘발성의 제2 메모리를 포함하는 혼성 메모리에 대한 기입 위치를 지정하는 기입처 논리 어드레스와, 기입 대상 데이터를, 프로세서로부터 접수하는 접수 섹션과,
    상기 제2 메모리로의 액세스 횟수가 상기 제1 메모리로의 액세스 횟수보다 적어지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정하는 어드레스 결정 섹션과,
    상기 기입처 논리 어드레스와 상기 기입처 물리 어드레스를 관련시킨 어드레스 변환 데이터를, 기억 섹션에 기억하는 어드레스 관리 섹션과,
    상기 혼성 메모리에서의 상기 기입처 물리 어드레스가 나타내는 위치에, 상기 기입 대상 데이터를 기입하는 기입 섹션
    을 포함하는 메모리 관리 장치를 포함하는, 정보 처리 장치.
  2. 제1항에 있어서, 상기 어드레스 결정 섹션은, 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 하나에 기초하여, 상기 혼성 메모리에서의 상기 기입 대상 데이터의 기입처 물리 어드레스를 결정하고,
    상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 하나는, 상기 기입 대상 데이터의 종류, 사용자에 의해 설정된 데이터, 상기 기입 대상 데이터의 액세스 빈도 정보 중 적어도 하나에 기초하여 결정되는, 정보 처리 장치.
  3. 제1항에 있어서, 상기 어드레스 결정 섹션은, 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 기초하여, 상기 기입 대상 데이터가 액세스 빈도가 높은 그룹에 속하는지 낮은 그룹에 속하는지를 판단하고, 상기 기입 대상 데이터가 액세스 빈도가 높은 그룹에 속한다고 판단된 경우에, 상기 제1 메모리에서의 미사용의 물리 어드레스를 상기 기입처 물리 어드레스로서 결정하고, 상기 기입 대상 데이터가 액세스 빈도가 낮은 그룹에 속한다고 판단된 경우에, 상기 제2 메모리에서의 미사용의 물리 어드레스를 상기 기입처 물리 어드레스로서 결정하는, 정보 처리 장치.
  4. 제2항에 있어서, 상기 중요도는, 상기 기입 대상 데이터의 데이터 종별과, 데이터의 특징과 중요도를 관련시킨 사용자 설정 데이터와, 상기 기입 대상 데이터의 최후의 액세스로부터 현재까지의 미사용 시간 중 적어도 하나에 기초하여 구해지는, 정보 처리 장치.
  5. 제2항에 있어서, 상기 액세스 빈도는, 상기 기입 대상 데이터의 데이터 종별에 의해 결정되는 액세스 빈도의 추측치와, 상기 기입 대상 데이터의 액세스 빈도의 관측치 중 적어도 하나에 기초하여 구해지는, 정보 처리 장치.
  6. 제1항에 있어서, 상기 기억 섹션은, 기입 대상 데이터 고유의 액세스 빈도 정보를 포함하는 데이터 고유 정보를 기억하고,
    상기 어드레스 결정 섹션은, 상기 데이터 고유 정보에 기초하여, 상기 제1 메모리의 액세스 빈도가 상기 제2 메모리의 액세스 빈도보다도 많아지고, 또한 상기 제1 메모리 및 상기 제2 메모리 내에서 액세스 빈도가 균등해지도록, 상기 혼성 메모에서의 상기 기입 대상 데이터의 기입처 물리 어드레스를 결정하는, 정보 처리 장치.
  7. 제1항에 있어서, 상기 기억 섹션은, 상기 혼성 메모리의 각 영역에 대한 액세스 발생 횟수를 포함하는 메모리 사용 정보를 기억하고,
    상기 어드레스 결정 섹션은, 상기 메모리 사용 정보에 기초하여, 상기 제1 메모리의 액세스 빈도가 상기 제2 메모리의 액세스 빈도보다도 많아지고, 또한 상기 제1 메모리 및 상기 제2 메모리 내에서 액세스 빈도가 균등해지도록, 상기 혼성 메모리에서의 상기 기입 대상 데이터의 기입처 물리 어드레스를 결정하는, 정보 처리 장치.
  8. 제1항에 있어서, 상기 기억 섹션은, 상기 혼성 메모리의 페이지 사이즈 및 블록 사이즈와, 상기 혼성 메모리에서의 영역마다 액세스 가능 횟수를 포함하는 메모리 고유 정보를 기억하고,
    상기 어드레스 결정 섹션은, 상기 메모리 고유 정보에 기초하여, 상기 제1 메모리의 액세스 빈도가 상기 제2 메모리의 액세스 빈도보다도 많아지고, 또한 상 기 제1 메모리 및 상기 제2 메모리 내에서 액세스 빈도가 균등해지도록, 상기 혼성 메모리에서의 상기 기입 대상 데이터의 기입처 물리 어드레스를 결정하는, 정보 처리 장치.
  9. 제1항에 있어서, 상기 어드레스 결정 섹션은, 상기 제1 메모리의 사용률 정보와 상기 제2 메모리의 사용률 정보에 따라서, 상기 기입 대상 데이터를 상기 제1 메모리에 기억할지 상기 제2 메모리에 기억할지의 판단에 사용하는 임계치를 변경하는, 정보 처리 장치.
  10. 제1항에 있어서, 상기 기입 대상 데이터는, 데이터 본체와 상기 데이터 본체에 대한 액세스 빈도 정보를 포함하고,
    상기 어드레스 결정 섹션은, 상기 기입 대상 데이터에 포함되어 있는 상기 액세스 빈도 정보에 기초하여 상기 기입처 물리 어드레스를 결정하는, 정보 처리 장치.
  11. 제1항에 있어서, 상기 기입 대상 데이터의 상기 액세스 빈도 정보는, 오퍼레이팅 시스템에 의해 관리되거나 사용자에 의해 설정될 수 있는, 정보 처리 장치.
  12. 제1항에 있어서, 상기 제1 메모리는 휘발성 반도체 메모리이고, 상기 제2 메모리는, 1개의 메모리 셀에 M(1 이상의 정수)비트 기억 가능한 제1 불휘발성 반도 체 메모리 블록과, 1개의 메모리 셀에 M+1비트 이상 기억 가능한 제2 불휘발성 반도체 메모리 블록을 포함하고, 상기 어드레스 결정 섹션은, 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 기초하여, 상기 기입 대상 데이터가 고 액세스 빈도 그룹, 중 액세스 빈도 그룹, 저 액세스 빈도 그룹 중 어디에 속하는지를 판단하고, 상기 기입 대상 데이터가 고 액세스 빈도그룹에 속한다고 판단된 경우에, 상기 휘발성 반도체 메모리에서의 미사용의 물리 어드레스를 상기 기입처 물리 어드레스로서 결정하고, 상기 기입 대상 데이터가 중 액세스 빈도 그룹에 속한다고 판단된 경우에, 상기 제1 불휘발성 반도체 메모리 블록에서의 미사용의 물리 어드레스를 상기 기입처 물리 어드레스로서 결정하고, 상기 기입 대상 데이터가 저 액세스 빈도 그룹에 속한다고 판단된 경우에, 상기 제2 불휘발성 반도체 메모리 블록에서의 미사용의 물리 어드레스를 상기 기입처 물리 어드레스로서 결정하는, 정보 처리 장치.
  13. 제1항에 있어서, 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 대한 전회의 기입시로부터의 동적 변화에 따라서, 상기 제1 메모리와 상기 제2 메모리 중 한쪽의 메모리에 기억된 상기 기입 대상 데이터를, 상기 제1 메모리와 상기 제2 메모리 중 다른 쪽의 메모리에 재배치하기 위한 재배치 후의 기입처 물리 어드레스를 결정하고, 상기 기입 대상 데이터를 상기 다른 쪽의 메모리에 재배치하는 재배치 섹션을 더 포함하고,
    상기 어드레스 관리 섹션은, 상기 기억 섹션에 기억되어 있는 어드레스 변환 데이터를 상기 재배치 후의 기입처 물리 어드레스에 의해 갱신하는, 정보 처리 장치.
  14. 제12항에 있어서, 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 대한 전회의 기입시로부터의 동적 변화에 따라서, 상기 제1 불휘발성 반도체 메모리 블록과 상기 제2 불휘발성 반도체 메모리 블록 중 한쪽의 메모리 블록에 기억된 상기 기입 대상 데이터를, 상기 제1 불휘발성 반도체 메모리 블록과 상기 제2 불휘발성 반도체 메모리 블록 중 다른 쪽의 메모리에 재배치하기 위한 재배치 후의 기입처 물리 어드레스를 결정하고, 상기 기입 대상 데이터를 상기 다른 쪽의 메모리에 재배치하는 재배치 섹션을 더 포함하고,
    상기 어드레스 관리 섹션은, 상기 기억 섹션에 기억되어 있는 어드레스 변환 데이터를 상기 재배치 후의 기입처 물리 어드레스에 의해 갱신하는, 정보 처리 장치.
  15. 제1항에 있어서, 상기 접수 섹션은, 상기 프로세서로부터 판독처 논리 어드레스를 취득하고,
    상기 기억 섹션에 기억되어 있는 어드레스 변환 데이터에 기초하여, 상기 판독처 논리 어드레스를 상기 혼성 메모리의 판독처 물리 어드레스로 변환하는 어드레스 변환 섹션과,
    상기 혼성 메모리로부터, 상기 판독 물리 어드레스에 대응하는 판독 대상 데 이터를 판독하는 판독 섹션과,
    상기 판독 대상 데이터를 상기 프로세서에 전송하는 전송 섹션을 더 포함하는, 정보 처리 장치.
  16. 제15항에 있어서, 상기 전송 섹션은, 상기 혼성 메모리로부터 판독한 데이터를 작업 기억 섹션에 기억하고, 상기 작업 기억 섹션에 기억된 데이터 중, 상기 판독처 물리 어드레스에 대응하는 부분의 판독 대상 데이터를 상기 프로세서에 보내는, 정보 처리 장치.
  17. 제15항에 있어서, 상기 혼성 메모리에 대한 기입 단위 및 판독 단위는, 페이지 사이즈, 페이지 사이즈의 배수, 블록 사이즈, 또는 블록 사이즈의 배수인, 정보 처리 장치.
  18. 제1 메모리와, 불휘발성의 제2 메모리를 포함하는 혼성 메모리에 대한 기입 위치를 지정하는 기입처 논리 어드레스와, 기입 대상 데이터를 프로세서로부터 접수하고,
    상기 제2 메모리로의 액세스 횟수가 상기 제1 메모리로의 액세스 횟수보다 적어지도록, 상기 기입처 논리 어드레스에 대응하는 기입처 물리 어드레스를 결정하고,
    상기 기입처 논리 어드레스와 상기 기입처 물리 어드레스를 관련시킨 어드레 스 변환 데이터를 기억 섹션에 기억하고,
    상기 혼성 메모리에서의 상기 기입처 물리 어드레스가 나타내는 위치에, 상기 기입 대상 데이터를 기입하는 것을 특징으로 하는, 메모리 관리 방법.
  19. 제18항에 있어서, 데이터를 기입한 후에, 또한 상기 기입 대상 데이터의 중요도와 액세스 빈도 중 적어도 한쪽에 대한 전회의 기입시로부터의 동적 변화에 따라서, 상기 제1 메모리와 상기 제2 메모리 중 한쪽의 메모리에 기억된 상기 기입 데이터를, 상기 제1 메모리와 상기 제2 메모리 중 다른 쪽의 메모리에 재배치하기 위한 재배치 후의 기입처 물리 어드레스를 결정하고, 상기 기입 대상 데이터를 상기 다른 쪽의 메모리에 재배치하고,
    상기 기억 섹션에 기억되어 있는 어드레스 변환 데이터를, 상기 재배치 후의 기입처 물리 어드레스에 의해 갱신하는 것을 특징으로 하는, 메모리 관리 방법.
  20. 제18항에 있어서, 상기 프로세서로부터 판독처 논리 어드레스를 취득하고,
    상기 기억 섹션에 기억되어 있는 어드레스 변환 데이터에 기초하여, 상기 판독처 논리 어드레스를 상기 혼성 메모리의 판독처 물리 어드레스로 변환하고,
    상기 혼성 메모리로부터, 상기 판독 물리 어드레스에 대응하는 판독 대상 데이터를 판독하고,
    상기 판독 대상 데이터를 상기 프로세서에 전송하는, 메모리 관리 방법.
KR1020090084986A 2008-09-09 2009-09-09 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 KR101038167B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008231363A JP4909963B2 (ja) 2008-09-09 2008-09-09 統合メモリ管理装置
JPJP-P-2008-231363 2008-09-09
JPJP-P-2009-169371 2009-07-17
JP2009169371A JP2011022933A (ja) 2009-07-17 2009-07-17 メモリ管理装置を含む情報処理装置及びメモリ管理方法

Publications (2)

Publication Number Publication Date
KR20100030602A true KR20100030602A (ko) 2010-03-18
KR101038167B1 KR101038167B1 (ko) 2011-05-31

Family

ID=41800158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090084986A KR101038167B1 (ko) 2008-09-09 2009-09-09 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법

Country Status (3)

Country Link
US (1) US9280466B2 (ko)
KR (1) KR101038167B1 (ko)
CN (1) CN101673245B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157148B2 (en) 2013-11-28 2018-12-18 SK Hynix Inc. Semiconductor device configured to control a wear leveling operation and operating method thereof
KR101943312B1 (ko) * 2017-09-06 2019-01-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스
US10831376B2 (en) 2016-04-04 2020-11-10 MemRay Corporation Flash-based accelerator and computing device including the same

Families Citing this family (131)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8135900B2 (en) * 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
JP5171448B2 (ja) * 2007-07-31 2013-03-27 キヤノン株式会社 画像形成装置及びその制御方法
JP5192352B2 (ja) 2008-10-30 2013-05-08 株式会社日立製作所 記憶装置及びデータ格納領域管理方法
US8225030B2 (en) * 2009-09-30 2012-07-17 Dell Products L.P. Systems and methods for using a page table in an information handling system comprising a semiconductor storage device
JP2011118469A (ja) * 2009-11-30 2011-06-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
JP2011145838A (ja) 2010-01-13 2011-07-28 Toshiba Corp 記憶装置管理装置および記憶装置の管理方法
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
US9448938B2 (en) 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US8341340B2 (en) 2010-07-21 2012-12-25 Seagate Technology Llc Multi-tier address mapping in flash memory
JP2012033047A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
JP2012053504A (ja) * 2010-08-31 2012-03-15 Hitachi Ltd ブレード型サーバ装置
US8650414B2 (en) * 2010-09-24 2014-02-11 Intel Corporation Logic device having status and control registers for recording the status and controlling the operation of memory slots such that each memory slot is identified using a bus address and port number
US8613074B2 (en) 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8356153B2 (en) 2010-11-19 2013-01-15 International Business Machines Corporation Adaptive wear leveling via monitoring the properties of memory reference stream
US8601313B1 (en) * 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) * 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
JP5618818B2 (ja) * 2010-12-28 2014-11-05 任天堂株式会社 情報処理装置、情報処理プログラムおよび情報処理方法
KR101166803B1 (ko) 2010-12-31 2012-07-26 세종대학교산학협력단 비휘발성 메모리 및 휘발성 메모리를 포함하는 메모리 시스템 및 그 시스템을 이용한 처리 방법
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US8700951B1 (en) 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
US8832371B2 (en) * 2011-04-04 2014-09-09 Hitachi, Ltd. Storage system with multiple flash memory packages and data control method therefor
US20120272036A1 (en) * 2011-04-22 2012-10-25 Naveen Muralimanohar Adaptive memory system
US8638600B2 (en) 2011-04-22 2014-01-28 Hewlett-Packard Development Company, L.P. Random-access memory with dynamically adjustable endurance and retention
US9501392B1 (en) * 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US8738882B2 (en) 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US9177609B2 (en) 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US10089017B2 (en) * 2011-07-20 2018-10-02 Futurewei Technologies, Inc. Method and apparatus for SSD storage access
TWI521343B (zh) * 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
EP2745203B1 (en) * 2011-08-19 2016-09-21 Kabushiki Kaisha Toshiba Information processing apparatus
JP2014530422A (ja) * 2011-10-27 2014-11-17 ▲ホア▼▲ウェイ▼技術有限公司 バッファマッピングを制御するための方法およびバッファシステム
CN102420856B (zh) * 2011-11-17 2014-10-29 杭州华三通信技术有限公司 一种数据处理方法和设备
US9208070B2 (en) 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
KR101404260B1 (ko) * 2011-12-23 2014-06-05 한양대학교 산학협력단 플래시 메모리의 수명 인디케이터를 제공하는 장치 및 장치
JP5674634B2 (ja) * 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
CN104094240A (zh) * 2012-04-30 2014-10-08 惠普发展公司,有限责任合伙企业 防止混合存储器模块被映射
WO2013188414A2 (en) * 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for filtering the stores to prevent all stores from having to snoop check against all words of a cache
EP2862068B1 (en) 2012-06-15 2022-07-06 Intel Corporation Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
WO2013188460A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a distributed structure
KR101826080B1 (ko) 2012-06-15 2018-02-06 인텔 코포레이션 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐
KR101818967B1 (ko) 2012-06-15 2018-01-16 인텔 코포레이션 명확화 없는 비순차 load store 큐
WO2013188696A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. An instruction definition to implement load store reordering and optimization
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9952879B2 (en) * 2012-08-30 2018-04-24 Microsoft Technology Licensing, Llc Application pre-layout in byte-addressable persistent random access memory
US9323695B2 (en) 2012-11-12 2016-04-26 Facebook, Inc. Predictive cache replacement
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US8966310B2 (en) * 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile memory
US9323499B2 (en) 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US9582465B2 (en) 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
US9026719B2 (en) 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
US9235528B2 (en) * 2012-12-21 2016-01-12 Advanced Micro Devices, Inc. Write endurance management techniques in the logic layer of a stacked memory
WO2014102886A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
TWI559141B (zh) * 2013-01-31 2016-11-21 群聯電子股份有限公司 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103984635B (zh) * 2013-02-08 2017-09-22 群联电子股份有限公司 数据写入方法、存储器控制器与存储器储存装置
JP6018696B2 (ja) * 2013-02-27 2016-11-02 株式会社日立製作所 半導体ストレージ
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
US20190042405A1 (en) * 2013-06-21 2019-02-07 Western Digital Technologies, Inc. Storing data based on writing frequency in data storage systems
EP3044719B1 (en) 2013-09-12 2019-08-28 Virsec Systems Inc. Automated runtime detection of malware
US9785558B2 (en) 2013-10-29 2017-10-10 Hua Zhong University Of Science Technology Mixed cache management
JP6274857B2 (ja) * 2013-12-26 2018-02-07 キヤノン株式会社 メモリ制御装置、メモリ制御方法、およびプログラム
WO2015131403A1 (zh) * 2014-03-07 2015-09-11 华为技术有限公司 访问文件的方法和相关设备
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9633233B2 (en) 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9665296B2 (en) 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9239757B2 (en) * 2014-05-30 2016-01-19 Sandisk Technologies Inc. Method and apparatus for relocating data in non-volatile memory
WO2015200508A1 (en) 2014-06-24 2015-12-30 Virsec Systems, Inc Automated root cause analysis of single or n-tiered applications
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
CN104283784B (zh) * 2014-10-20 2018-11-27 新华三技术有限公司 一种sdn网络中的表项空间调整方法和设备
WO2016067328A1 (ja) * 2014-10-27 2016-05-06 株式会社日立製作所 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
CN104391801B (zh) * 2014-11-07 2018-09-25 北京海尔集成电路设计有限公司 Ddrii控制器的读写、状态转换、物理地址分配方法
CN107102819B (zh) * 2014-12-12 2021-02-23 西安三星电子研究有限公司 向固态硬盘写入数据的方法及设备
CN105988875B (zh) 2015-03-04 2020-08-14 华为技术有限公司 一种运行进程的方法及装置
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10509770B2 (en) 2015-07-13 2019-12-17 Samsung Electronics Co., Ltd. Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device
KR20170019762A (ko) * 2015-08-12 2017-02-22 삼성전자주식회사 파일 시스템을 제어하는 전자 장치 및 그 동작 방법
EP3151130A1 (en) * 2015-09-30 2017-04-05 Tata Consultancy Services Limited Systems and methods for estimating temporal importance of data
JP2017107321A (ja) * 2015-12-08 2017-06-15 京セラドキュメントソリューションズ株式会社 電子機器およびデータアクセス制御プログラム
US20170199687A1 (en) * 2016-01-12 2017-07-13 Kabushiki Kaisha Toshiba Memory system and control method
US20170220252A1 (en) * 2016-01-29 2017-08-03 Faraday&Future Inc. Flash emulated eeprom wrapper
JP6320439B2 (ja) 2016-03-10 2018-05-09 株式会社東芝 メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法
EP3472746B1 (en) 2016-06-16 2020-05-13 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US20170371559A1 (en) * 2016-06-28 2017-12-28 Sandisk Technologies Llc Systems and Methods for Optimizing Media Read Times
US10534716B2 (en) 2016-07-13 2020-01-14 Seagate Technology Llc Limiting access operations in a data storage device
US9842060B1 (en) * 2016-07-13 2017-12-12 Seagate Technology Llc Cache over-provisioning in a data storage device
JP2018049385A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
JP2018073038A (ja) 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
US10002086B1 (en) * 2016-12-20 2018-06-19 Sandisk Technologies Llc Multi-channel memory operations based on bit error rates
CN107315540B (zh) * 2017-06-13 2020-11-27 深圳神州数码云科数据技术有限公司 一种自动分层存储方法及系统
JP6787490B2 (ja) * 2017-06-20 2020-11-18 京セラドキュメントソリューションズ株式会社 メモリーシステム及び電子機器
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
TWI653632B (zh) * 2017-09-29 2019-03-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
JP7153435B2 (ja) * 2017-10-12 2022-10-14 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
KR102534648B1 (ko) * 2018-03-08 2023-05-22 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10802909B2 (en) * 2018-08-17 2020-10-13 Micron Technology, Inc. Enhanced bit flipping scheme
US11469913B2 (en) 2018-08-24 2022-10-11 Mitsubishi Electric Corporation Data collection server, data utilization server and equipment based on use frequency among a plurality of storage corresponding to different levels of use
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
US11231873B2 (en) * 2018-12-07 2022-01-25 Intel Corporation Apparatus and method for assigning velocities to write data
CN111381771B (zh) * 2018-12-29 2023-06-27 深圳市海思半导体有限公司 存储数据的方法、存储控制器和芯片
US11748626B2 (en) 2019-08-12 2023-09-05 Micron Technology, Inc. Storage devices with neural network accelerators for automotive predictive maintenance
US11635893B2 (en) 2019-08-12 2023-04-25 Micron Technology, Inc. Communications between processors and storage devices in automotive predictive maintenance implemented via artificial neural networks
US11775816B2 (en) 2019-08-12 2023-10-03 Micron Technology, Inc. Storage and access of neural network outputs in automotive predictive maintenance
US11586943B2 (en) 2019-08-12 2023-02-21 Micron Technology, Inc. Storage and access of neural network inputs in automotive predictive maintenance
US11853863B2 (en) 2019-08-12 2023-12-26 Micron Technology, Inc. Predictive maintenance of automotive tires
US11586194B2 (en) 2019-08-12 2023-02-21 Micron Technology, Inc. Storage and access of neural network models of automotive predictive maintenance
US11702086B2 (en) 2019-08-21 2023-07-18 Micron Technology, Inc. Intelligent recording of errant vehicle behaviors
US11361552B2 (en) 2019-08-21 2022-06-14 Micron Technology, Inc. Security operations of parked vehicles
US11498388B2 (en) 2019-08-21 2022-11-15 Micron Technology, Inc. Intelligent climate control in vehicles
US11307951B2 (en) * 2019-09-04 2022-04-19 Micron Technology, Inc. Memory device with configurable performance and defectivity management
US11436076B2 (en) 2019-09-05 2022-09-06 Micron Technology, Inc. Predictive management of failing portions in a data storage device
US11409654B2 (en) 2019-09-05 2022-08-09 Micron Technology, Inc. Intelligent optimization of caching operations in a data storage device
US11693562B2 (en) 2019-09-05 2023-07-04 Micron Technology, Inc. Bandwidth optimization for different types of operations scheduled in a data storage device
US11650746B2 (en) 2019-09-05 2023-05-16 Micron Technology, Inc. Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles
US11435946B2 (en) * 2019-09-05 2022-09-06 Micron Technology, Inc. Intelligent wear leveling with reduced write-amplification for data storage devices configured on autonomous vehicles
US11474866B2 (en) * 2019-09-11 2022-10-18 International Business Machines Corporation Tree style memory zone traversal
CN110673796A (zh) * 2019-09-20 2020-01-10 广东以诺通讯有限公司 根据存储数据特性确定eMMC地址映射表的刷新方法及装置
CN112765101A (zh) * 2019-11-01 2021-05-07 伊姆西Ip控股有限责任公司 用于管理文件系统的方法、电子设备和计算机程序产品
CN112988038A (zh) * 2019-12-17 2021-06-18 国民技术股份有限公司 非易失性存储器的数据写入方法、终端和可读存储介质
US11250648B2 (en) 2019-12-18 2022-02-15 Micron Technology, Inc. Predictive maintenance of automotive transmission
US11531339B2 (en) 2020-02-14 2022-12-20 Micron Technology, Inc. Monitoring of drive by wire sensors in vehicles
US11709625B2 (en) 2020-02-14 2023-07-25 Micron Technology, Inc. Optimization of power usage of data storage devices
KR20210132806A (ko) * 2020-04-28 2021-11-05 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
KR102650571B1 (ko) * 2020-11-12 2024-03-26 한국전자통신연구원 역가상화 환경용 혼성 메모리 관리 장치 및 방법
CN114860150A (zh) * 2021-02-04 2022-08-05 戴尔产品有限公司 在存储群集的存储系统之间执行损耗均衡

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0619785A (ja) 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
JPH05325593A (ja) 1992-05-27 1993-12-10 Sharp Corp フラッシュ型eepromの管理装置
JPH06215589A (ja) 1993-01-18 1994-08-05 Hitachi Ltd 半導体メモリ
JPH06223240A (ja) 1993-01-26 1994-08-12 Fuji Film Micro Device Kk メモリカード
JPH07146820A (ja) 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
JPH07296591A (ja) 1994-04-25 1995-11-10 Matsushita Electric Ind Co Ltd 電子機器
JP3507132B2 (ja) 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH08241599A (ja) 1995-03-02 1996-09-17 Fujitsu Ltd 不揮発性メモリを使用した記憶装置
JP2671860B2 (ja) 1995-03-30 1997-11-05 日本電気株式会社 フラッシュメモリ用ファイルシステム
EP0788113B1 (en) * 1996-01-31 2005-08-24 STMicroelectronics S.r.l. Multilevel memory circuits and corresponding reading and writing methods
JPH09259029A (ja) 1996-03-22 1997-10-03 Nec Corp Eepromを用いた記憶装置の制御方式
JP3200012B2 (ja) 1996-04-19 2001-08-20 株式会社東芝 記憶システム
JP3620173B2 (ja) 1996-10-14 2005-02-16 株式会社日立製作所 アドレス変換回路及びマルチプロセッサシステム
JPH10187548A (ja) 1996-12-24 1998-07-21 Toyota Autom Loom Works Ltd 記憶装置
JPH113287A (ja) 1997-06-12 1999-01-06 Hitachi Ltd 記憶装置およびそれに用いられる記憶領域管理方法
JPH1131102A (ja) 1997-07-14 1999-02-02 Toshiba Corp データ記憶システム及び同システムに適用するアクセス制御方法
JP2007293917A (ja) 1997-08-08 2007-11-08 Toshiba Corp メモリシステムの制御方法
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JP2002516446A (ja) * 1998-05-15 2002-06-04 ストーリッジ テクノロジー コーポレーション サイズ可変データブロックのキャッシュ方法
JP3270397B2 (ja) 1998-06-08 2002-04-02 松下電送システム株式会社 データ格納装置
JP3242890B2 (ja) 1998-12-16 2001-12-25 株式会社ハギワラシスコム 記憶装置
FR2787601A1 (fr) 1998-12-22 2000-06-23 Gemplus Card Int Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
JP2001014874A (ja) 1999-06-30 2001-01-19 Nec Ic Microcomput Syst Ltd 不揮発性半導体メモリ装置
KR100383774B1 (ko) 2000-01-26 2003-05-12 삼성전자주식회사 공통 인터페이스 방식의 메모리 장치들을 구비한 시스템
JP4078010B2 (ja) 2000-03-03 2008-04-23 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク装置及び情報記録方法
JP2002133880A (ja) 2000-10-31 2002-05-10 Ricoh Co Ltd 電子機器
US20020129172A1 (en) 2001-03-08 2002-09-12 International Business Machines Corporation Inter-partition message passing method, system and program product for a shared I/O driver
US6807106B2 (en) * 2001-12-14 2004-10-19 Sandisk Corporation Hybrid density memory card
JP4186509B2 (ja) 2002-05-10 2008-11-26 株式会社日立製作所 ディスクシステムとそのキャッシュ制御方法
KR100944054B1 (ko) * 2002-08-29 2010-02-24 파나소닉 주식회사 반도체메모리장치 및 플래시메모리에의 데이터기입방법
JP4199519B2 (ja) 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US6922754B2 (en) * 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
US20050132128A1 (en) 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory
JP2006048506A (ja) 2004-08-06 2006-02-16 Toshiba Corp プロセッサ、メモリ管理システム及びメモリ管理プログラム
JP2006235960A (ja) 2005-02-24 2006-09-07 Fujitsu Ltd ガーベッジコレクション高速化方法
JP4066381B2 (ja) 2005-03-01 2008-03-26 三菱電機株式会社 車載電子制御装置
JP2007048184A (ja) 2005-08-12 2007-02-22 Renesas Technology Corp メモリカード
JP2007305210A (ja) 2006-05-10 2007-11-22 Toshiba Corp 半導体記憶装置
EP2024839B1 (en) 2006-05-15 2014-07-02 SanDisk Technologies Inc. Non-volatile memory system with end of life calculation
JP4158121B2 (ja) 2006-05-18 2008-10-01 コニカミノルタビジネステクノロジーズ株式会社 メモリ管理方法
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
JP4575346B2 (ja) 2006-11-30 2010-11-04 株式会社東芝 メモリシステム
JP2008140238A (ja) 2006-12-04 2008-06-19 Funai Electric Co Ltd 電気機器
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
JP5032172B2 (ja) 2007-03-28 2012-09-26 株式会社東芝 統合メモリ管理装置及び方法並びにデータ処理システム
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
JP2009003569A (ja) 2007-06-19 2009-01-08 Toshiba Corp 半導体記憶装置
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
JP5096847B2 (ja) 2007-09-10 2012-12-12 株式会社リコー アクセス制御装置、アクセス制御方法、アクセス制御プログラム、記録媒体、記憶装置および画像処理装置
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
WO2009090731A1 (ja) 2008-01-16 2009-07-23 Fujitsu Limited 半導体記憶装置、制御装置、制御方法
JP2009301680A (ja) 2008-06-17 2009-12-24 Panasonic Corp 半導体記憶装置及びホスト装置
JP2010009500A (ja) 2008-06-30 2010-01-14 Canon Finetech Inc 不揮発性メモリ制御装置および方法、ならびにインクジェット記録装置
JP5242264B2 (ja) 2008-07-07 2013-07-24 株式会社東芝 データ制御装置、ストレージシステムおよびプログラム
JP2010198407A (ja) 2009-02-26 2010-09-09 Sony Corp 情報処理装置、およびデータ記録制御方法、並びにプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157148B2 (en) 2013-11-28 2018-12-18 SK Hynix Inc. Semiconductor device configured to control a wear leveling operation and operating method thereof
US10831376B2 (en) 2016-04-04 2020-11-10 MemRay Corporation Flash-based accelerator and computing device including the same
KR101943312B1 (ko) * 2017-09-06 2019-01-29 주식회사 맴레이 플래시 기반 가속기 및 이를 포함하는 컴퓨팅 디바이스

Also Published As

Publication number Publication date
CN101673245B (zh) 2016-02-03
KR101038167B1 (ko) 2011-05-31
CN101673245A (zh) 2010-03-17
US20100064111A1 (en) 2010-03-11
US9280466B2 (en) 2016-03-08

Similar Documents

Publication Publication Date Title
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US8738851B2 (en) Device and memory system for swappable memory
US20220327050A1 (en) Storage system and information processing system for controlling nonvolatile memory
US20220083278A1 (en) Storage system, information processing system and method for controlling nonvolatile memory
US10372331B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US10353612B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
KR101324688B1 (ko) 영구 가비지 컬렉션을 갖는 메모리 시스템
JP5437373B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP2011022933A (ja) メモリ管理装置を含む情報処理装置及びメモリ管理方法
US20080244165A1 (en) Integrated Memory Management Device and Memory Device
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
JP2005242897A (ja) フラッシュディスク装置
US11747979B2 (en) Electronic device, computer system, and control method
JP4909963B2 (ja) 統合メモリ管理装置
JP2009205689A (ja) フラッシュディスク装置
JP2011186563A (ja) メモリ管理装置およびメモリ管理方法
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
KR20100099888A (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP2015201231A (ja) 複数のフラッシュパッケージを有するストレージシステム

Legal Events

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

Payment date: 20140421

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150417

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160421

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 9