WO2011007599A1 - メモリ管理装置 - Google Patents

メモリ管理装置 Download PDF

Info

Publication number
WO2011007599A1
WO2011007599A1 PCT/JP2010/053817 JP2010053817W WO2011007599A1 WO 2011007599 A1 WO2011007599 A1 WO 2011007599A1 JP 2010053817 W JP2010053817 W JP 2010053817W WO 2011007599 A1 WO2011007599 A1 WO 2011007599A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
data
information
area
semiconductor memory
Prior art date
Application number
PCT/JP2010/053817
Other languages
English (en)
French (fr)
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 JP2009169371A external-priority patent/JP2011022933A/ja
Priority claimed from JP2010048334A external-priority patent/JP2011186558A/ja
Priority claimed from JP2010048331A external-priority patent/JP2011186555A/ja
Priority claimed from JP2010048338A external-priority patent/JP2011186562A/ja
Priority claimed from JP2010048333A external-priority patent/JP2011186557A/ja
Priority claimed from JP2010048329A external-priority patent/JP2011186554A/ja
Priority claimed from JP2010048335A external-priority patent/JP2011186559A/ja
Priority claimed from JP2010048337A external-priority patent/JP2011186561A/ja
Priority claimed from JP2010048339A external-priority patent/JP2011186563A/ja
Priority claimed from JP2010048328A external-priority patent/JP2011186553A/ja
Priority claimed from JP2010048332A external-priority patent/JP5322978B2/ja
Application filed by 株式会社 東芝 filed Critical 株式会社 東芝
Priority to EP10799661.3A priority Critical patent/EP2455865B1/en
Priority to CN201080031863.5A priority patent/CN102473140B/zh
Publication of WO2011007599A1 publication Critical patent/WO2011007599A1/ja
Priority to US13/351,582 priority patent/US20120191900A1/en
Priority to US14/938,589 priority patent/US10776007B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1016Performance improvement
    • 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/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
    • 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/7202Allocation control and policies
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

Definitions

  • the present invention relates to a memory management device that manages access to memory.
  • a volatile semiconductor memory such as a dynamic random access memory (DRAM) is used as a main memory (main memory) of a processor.
  • a nonvolatile semiconductor memory is used as a secondary storage device in combination with the volatile semiconductor memory.
  • Japanese Patent Laid-Open No. 2008-242944 proposes an integrated memory management device.
  • a NAND flash memory is used as a main memory for the MPU.
  • the primary cache memory of the MPU, the secondary cache memory, and the NAND flash memory as the main memory are handled in the same memory hierarchy.
  • the cache controller of the integrated memory management device executes memory management for the main memory in addition to memory management for the primary cache memory and the secondary cache memory.
  • Japanese Patent Application Laid-Open No. 7-146820 discloses a technique of adopting a flash memory as a main storage device of an information processing apparatus.
  • a flash memory is connected to a memory bus of a system via a cache memory which is a volatile memory.
  • the cache memory is provided with an address array for recording information such as an address or access history of data stored in the cache memory.
  • the controller refers to the address of the access destination, supplies the data of the cache memory or the flash memory to the memory bus, or stores the data of the memory bus.
  • Japanese Patent Application Laid-Open No. 2001-266580 discloses an invention which makes it possible to connect different types of semiconductor memory devices to a common bus.
  • the semiconductor memory device of Patent Document 3 includes a random access memory chip and a package including the random access memory chip.
  • the package has a plurality of pins electrically connecting the random access memory chip to an external device.
  • a plurality of pins provide memory functions in common to the random access memory and the electrically erasable and programmable non-volatile semiconductor memory.
  • Each of the plurality of pins is arranged at a corresponding pin position of the nonvolatile semiconductor memory.
  • the present invention provides a memory management device capable of efficiently using nonvolatile semiconductor memory.
  • a memory management device controls writing and reading to a main storage memory including a nonvolatile semiconductor memory and a volatile semiconductor memory in response to a write request and a read request from a processor.
  • a memory management device includes: a coloring information holding unit for holding coloring information generated based on data characteristics of write target data to be written to at least one of the nonvolatile semiconductor memory and the volatile semiconductor memory; And a write management unit which determines an area to which the write target data is to be written from the nonvolatile semiconductor memory and the volatile semiconductor memory.
  • FIG. 1 is a block diagram showing an example of the configuration of a memory management device and an information processing device according to the first embodiment of the present invention.
  • FIG. 2 is a block diagram showing an example of the configuration of the memory management device and the information processing device according to the first embodiment.
  • FIG. 3 is a diagram showing an example of a memory map of the mixed main memory according to the first embodiment.
  • FIG. 4 is a diagram showing an example of the address conversion information according to the first embodiment.
  • FIG. 5 is a view showing an example of a coloring table according to the first embodiment.
  • FIG. 6 is a diagram for explaining an example of static color information according to the first embodiment.
  • FIG. 7 is a flowchart showing an example of data arrangement processing according to the first embodiment.
  • FIG. 8 is a diagram showing an example of the configuration of the coloring table according to the first embodiment.
  • FIG. 9 is a diagram showing a first example of setting of static color information for various data.
  • FIG. 10 is a diagram showing a second example of setting of static color information for various data.
  • FIG. 11 is a flowchart showing an example of a coloring table generation process according to the first embodiment.
  • FIG. 12 is a flowchart illustrating an example of a process of generating an entry of the coloring table according to the first embodiment.
  • FIG. 13 is a diagram illustrating a first example of alignment of entries in the coloring table.
  • FIG. 14 is a diagram illustrating a second example of alignment of entries in the coloring table.
  • FIG. 15 is a diagram showing an example of a method of calculating the dynamic writing frequency DW_color and the dynamic reading frequency DR_color based on the dynamic color information and the static color information.
  • FIG. 16 is a flowchart illustrating an example of data read processing according to the first embodiment.
  • FIG. 17 is a flowchart illustrating an example of the process of determining the data read method according to the first embodiment.
  • FIG. 18 is a flowchart showing an example of the data writing process according to the first embodiment.
  • FIG. 19 is a flowchart illustrating an example of a process of determining a write destination area of data according to the first embodiment.
  • FIG. 20 is a diagram for describing determination processing of a write target block for data according to the first embodiment.
  • FIG. 21 is a graph showing an example of the transition of the number of times of erasing in an arbitrary block area of the nonvolatile semiconductor memory.
  • FIG. 22 is a graph showing an example of a change when the threshold value for the difference in the number of erasures is set small in wear leveling.
  • FIG. 23 is a graph showing an example of grouping of block areas according to the number of times of erasing.
  • FIG. 24 is a diagram showing a determination criterion of grouping of block areas according to the number of times of erasing.
  • FIG. 25 is a diagram showing an example of block area search in wear leveling.
  • FIG. 26 is a block diagram showing an example of a memory management device provided with a cache memory.
  • FIG. 27 is a block diagram showing an implementation example of the memory management device, the mixed main memory, and the processor.
  • FIG. 28 is a block diagram showing an example of another configuration aspect of the memory management device and the information processing device according to the first embodiment.
  • FIG. 29 is a perspective view showing an example of a plurality of memory management devices for managing a plurality of nonvolatile semiconductor memories.
  • FIG. 30 is a diagram showing an example of the physical address space of the volatile semiconductor memory according to the second embodiment.
  • FIG. 31 is a diagram showing an example of the relationship between coloring information and the area of the volatile semiconductor memory.
  • FIG. 32 is a diagram showing another example of the relationship between coloring information and the area of the volatile semiconductor memory.
  • FIG. 33 is a view showing an example of the data structure for managing the free space and the use area of the volatile semiconductor memory according to the second embodiment.
  • FIG. 34 is a flow chart showing an example of the write processing of the volatile semiconductor memory according to the second embodiment.
  • FIG. 35 is a flow chart showing an example of the erasing process of the volatile semiconductor memory according to the second embodiment.
  • FIG. 36 is a view showing the truth value of the valid / invalid flag of the nonvolatile semiconductor memory in the address conversion information according to the third embodiment of the present invention.
  • FIG. 37 shows a state transition of the valid / invalid flag of the nonvolatile semiconductor memory.
  • FIG. 38 is a flow chart showing processing at the time of release request of the mixed main memory according to the third embodiment.
  • FIG. 39 is a diagram for illustrating the formation of an explicit free area of the volatile semiconductor memory at the time of the release request of the memory in FIG.
  • FIG. 40 is a flow chart showing processing at the time of acquisition request of the mixed main memory according to the third embodiment.
  • FIG. 41 is a flow chart showing processing at the time of a memory data read request in FIG.
  • FIG. 42 is a flow chart showing processing at the time of a memory data write request in FIG.
  • FIG. 43 is a block diagram showing an example of a main part of a functional configuration of a memory management device according to a fourth embodiment of the present invention.
  • FIG. 44 is a diagram illustrating an example of a data configuration of block sizes when the write target data is not classified by the coloring information.
  • FIG. 45 is a diagram showing an example of a data configuration of block sizes in the case of classifying write target data with coloring information.
  • FIG. 46 is a diagram showing an example of the relationship between the address conversion information and the physical address space (NAND logical address) of the nonvolatile semiconductor memory according to the fourth embodiment.
  • FIG. 47 is a diagram showing an example of a logical-physical conversion table (NAND logical-physical conversion table) of the nonvolatile semiconductor memory.
  • FIG. 48 is a data structure diagram showing an example of a reservation list.
  • FIG. 49 is a flowchart showing an example of processing of the group value calculation unit and the reservation list management unit according to the fourth embodiment.
  • FIG. 50 is a diagram showing an example of state transition of address conversion information according to the fourth embodiment.
  • FIG. 51 is a diagram showing an example of the dirty bit field according to the fifth embodiment.
  • FIG. 52 is a flowchart illustrating an example of shutdown processing according to the fifth embodiment.
  • FIG. 53 is a diagram showing an example of a coloring table applied to the fifth embodiment.
  • FIG. 54 is a flowchart showing setting processing of prefetch hint information according to the fifth embodiment.
  • FIG. 55 is a flowchart illustrating an example of processing of the operating system at startup according to the fifth embodiment.
  • FIG. 56 is a block diagram showing an example of the relationship between a virtual address area in a virtual address space and attribute information according to the sixth embodiment of the present invention.
  • FIG. 57 is a flowchart of an example of setting processing of second attribute information of virtual address area data by the operating system.
  • FIG. 58 is a diagram showing an example of setting of static color information based on virtual address area data.
  • FIG. 59 is a diagram showing an example of the dependency between the command and the library.
  • FIG. 60 is a diagram showing an example of the score of the command and the score of the library.
  • FIG. 61 is a diagram illustrating another example of calculation of the score of the library based on the score of the command.
  • FIG. 62 is a diagram showing an example of setting of static color information using a score of a library.
  • FIG. 63 is a diagram showing an example of variables or functions compiled by the compiler.
  • FIG. 64 is a diagram showing an example of setting of static color information using a compiler.
  • FIG. 65 is a diagram showing an example of setting of static color information based on the usage frequency of a dynamically generated memory area.
  • FIG. 66 is a block diagram showing an example of the configuration of a memory management device, an information processing device, and a memory device according to the seventh embodiment of the present invention.
  • FIG. 67 is a graph showing an example of change in the number of times of erasing of the memory unit.
  • FIG. 68 is a graph showing an example of the usage state of the memory device based on the number of times of erasing of the memory device.
  • FIG. 69 is a graph showing an example of the usage state of the memory device based on the number of read occurrences of the memory device.
  • FIG. 70 is a flowchart showing an example of processing for notifying the memory device of the use state based on the number of times of erasing of the memory device.
  • FIG. 71 is a flowchart showing an example of processing for notifying the memory device of the use state based on the number of times of occurrence of reading of the memory device.
  • FIG. 72 is a diagram of an example of data included in management information.
  • FIG. 73 is a flowchart of an example of processing from when the memory device is electrically connected to the memory management device to when access to the memory device is started.
  • FIG. 74 is a flowchart of an example of processing from when the memory management device receives the removal notification from the memory device until the memory device becomes removable.
  • FIG. 75 is a diagram showing an example of the replacement state of the memory device.
  • FIG. 76 is a block diagram showing an example of reuse of a memory device.
  • FIG. 77 is a graph showing an example of a change in the number of accesses when control is performed such that the number of accesses to a specific memory device is larger than the number of accesses to other memory devices based on coloring information.
  • FIG. 78 is a diagram showing an example of a configuration of a memory management device according to the eighth embodiment of the present invention.
  • FIG. 79 is a schematic view showing a first example of dynamic switching of the nonvolatile semiconductor memory according to the eighth embodiment.
  • FIG. 80 is a schematic view showing a second example of dynamic switching of the nonvolatile semiconductor memory according to the eighth embodiment.
  • FIG. 81 is a state transition diagram showing a first example of switching control of a memory area by the switching control unit according to the eighth embodiment.
  • FIG. 82 is a state transition diagram showing a second example of switching control of a memory area by the switching control unit according to the eighth embodiment.
  • FIG. 83 is a block diagram showing an example of the relationship between the memory management device and the address space according to the ninth embodiment of the present invention.
  • FIG. 84 is a flowchart showing an example of the write operation by the processor and the memory management device according to the ninth embodiment.
  • FIG. 85 is a diagram showing an example of the configuration of an information processing device and a network system according to the tenth embodiment of the present invention.
  • FIG. 86 is a flowchart of an example of processing of the profile information management unit according to the tenth embodiment.
  • FIG. 87 is a flowchart showing an example of profile information upload processing by the user terminal according to the tenth embodiment.
  • FIG. 88 is a flowchart illustrating an example of download processing of profile information by the user terminal according to the tenth embodiment.
  • FIG. 89 is a block diagram showing an example of a network system according to the eleventh embodiment of the present invention.
  • FIG. 90 is a block diagram showing an example of the configuration of a memory management device according to the eleventh embodiment.
  • FIG. 91 is a block diagram showing a first relationship between a processor logical address and a network logical address according to an eleventh embodiment.
  • FIG. 92 is a block diagram showing a second relationship between processor logical addresses and network logical addresses according to the eleventh embodiment.
  • FIG. 93 is a block diagram showing a third relationship between a processor logical address and a network logical address according to the eleventh embodiment.
  • FIG. 94 is a block diagram showing a fourth relationship between a processor logical address and a network logical address according to the eleventh embodiment.
  • FIG. 95 is a block diagram showing a fifth relationship between processor logical addresses and network logical addresses according to the eleventh embodiment.
  • FIG. 96 is a block diagram showing an example of a virtual address space of a network system according to the eleventh embodiment.
  • FIG. 97 is a block diagram showing a first example of configurations of a processor logical address and a network logical address according to an eleventh embodiment.
  • FIG. 98 is a block diagram showing a second example of the processor logical address and the network logical address according to the eleventh embodiment.
  • FIG. 99 is a block diagram showing a third example of the configuration of processor logical addresses and network logical addresses according to the eleventh embodiment.
  • FIG. 100 is a diagram showing an example of calculation for estimating the number of address bits required to access data stored in a large number of devices connected to the network.
  • FIG. 1 is a block diagram showing an example of the configuration of a memory management device and an information processing device according to the present embodiment.
  • the information processing apparatus 100 includes a memory management device 1, a mixed main memory 2, and processors 3a, 3b, and 3c.
  • the processors 3a, 3b, and 3c are, for example, an MPU (Micro Processor Unit) or a GPU (Graphic Processor Unit).
  • the processors 3a, 3b, 3c respectively include primary cache memories 4a, 4b, 4c and secondary cache memories 5a, 5b, 5c.
  • Processors 3a, 3b, 3c execute processes 6a, 6b, 6c, respectively, to process various data.
  • the processors 3a, 3b, 3c designate data by virtual addresses in the execution of the processes 6a, 6b, 6c.
  • the processors 3a, 3b, and 3c When the data (data to be written) is written to the mixed main memory 2, the processors 3a, 3b, and 3c generate a write request. Further, when reading data (data to be read) from the hybrid main memory 2, the processors 3a, 3b, and 3c generate a read request.
  • the processors 3a, 3b and 3c each have a page table (not shown) for converting a virtual address into a physical address (a logical address for the mixed main memory 2) of the MPU or GPU.
  • a page table (not shown) for converting a virtual address into a physical address (a logical address for the mixed main memory 2) of the MPU or GPU.
  • the processors 3a, 3b, 3c use virtual addresses as logical addresses according to the page table. Convert and specify write target data by logical address.
  • the processors 3a, 3b, 3c use the virtual address according to the page table. Convert to a logical address, and specify read target data by the logical address.
  • the memory management device 1 manages access (writing, reading) to the mixed main memory 2 of the processors 3a, 3b, 3c.
  • the memory management device 1 includes a processing unit 15, a working memory 16, and an information storage unit 17.
  • the memory management device 1 stores, in the information storage unit 17, memory usage information 11, which will be described later, memory specific information 12, address conversion information 13, and a coloring table 14.
  • the coloring table 14 stored in the information storage unit 17 of the memory management device 1 may be part of the coloring table 14 stored in the nonvolatile semiconductor memories 9 and 10. For example, among the coloring tables 14 stored in the non-volatile semiconductor memories 9 and 10, data of the coloring table 14 which is frequently used may be stored in the information storage unit 17 of the memory management device 1.
  • the memory management device 1 refers to the coloring table 14 and manages the access to the mixed main memory 2 of the processors 3a, 3b, 3c. Details will be described later.
  • the mixed main memory 2 includes a first memory, a second memory, and a third memory.
  • the first memory has a higher accessible upper limit number than the second memory.
  • the second memory has a higher accessible upper limit number than the third memory.
  • the upper limit number of accessible times is a statistically expected expected value and does not mean that this relation is always guaranteed.
  • the first memory may have a higher data transfer rate (access rate) than the second memory.
  • the first memory is the volatile semiconductor memory 8.
  • the volatile semiconductor memory 8 for example, a memory used as a main memory in a general computer such as a dynamic random access memory (DRAM), an FPM-DRAM, an EDO-DRAM, or an SDRAM is used.
  • non-volatile random access memory such as MRAM (Magnetoresistive Random Access Memory), FeRAM (Ferroelectric Random Access Memory), etc., if high speed random access like DRAM is possible and there is no substantial limit on the number of accessible upper limits. May be adopted.
  • the second memory is assumed to be the non-volatile semiconductor memory 9.
  • the non-volatile semiconductor memory 9 for example, a SLC (Single Level Cell) type NAND flash memory is used. SLC is faster and more reliable in reading and writing than MLC (Multi Level Cell). However, SLC is higher in bit cost than MLC and is not suitable for large capacity.
  • the third memory is assumed to be the non-volatile semiconductor memory 10.
  • the non-volatile semiconductor memory 10 for example, a MLC type NAND flash memory is used. MLC is slower in reading and writing and less reliable than SLC. However, MLC has a lower bit cost than SLC, and is suitable for large capacity.
  • the nonvolatile semiconductor memory 9 is a SLC type NAND flash memory
  • the nonvolatile semiconductor memory 10 is an MLC type NAND flash memory.
  • the nonvolatile semiconductor memory 9 is 2 bits / bit.
  • the nonvolatile semiconductor memory 10 may be a 3-bit / cell MLC type NAND flash memory.
  • Reliability means the degree of durability (durability) of data loss when reading data from a storage device.
  • the durability of SLC is higher than that of MLC.
  • high durability means that the number of accessible upper limits is high and the term “low durability” means that the number of accessible upper limits is low.
  • the SLC can store one bit of information in one memory cell.
  • the MLC can store two or more bits of information in one memory cell. That is, the mixed main memory 2 according to the present embodiment has high durability first in the order of the volatile memory 8, secondly the non-volatile semiconductor memory 9, and thirdly the non-volatile semiconductor memory 10.
  • the nonvolatile semiconductor memories 9 and 10 such as NAND flash memories can be inexpensive and can have a large capacity as compared with the volatile semiconductor memory 8.
  • NAND flash memory for example, another type of flash memory such as NOR flash memory, PRAM (Phase change memory), ReRAM (Resistive Random access memory) are used. It can also be done.
  • an MLC may be adopted as the third memory, and an MLC capable of using a pseudo SLC mode in which data is written using only the lower page of the MLC may be adopted as the second memory.
  • an MLC capable of using a pseudo SLC mode in which data is written using only the lower page of the MLC may be adopted as the second memory.
  • the non-volatile semiconductor memories 9 and 10 are used as the main memory in comparison with the non-volatile semiconductor memories 9 and 10 as the main memory and the non-volatile semiconductor memories 9 and 10 as the secondary storage device. In this case, the frequency of access to the nonvolatile semiconductor memories 9 and 10 becomes high.
  • an information processing apparatus including a hybrid main memory 2 in which the volatile semiconductor memory 8, the SLC non-volatile semiconductor memory 9 and the MLC non-volatile semiconductor memory 10 are mixed to form a main memory is realized. There is.
  • the mixed main memory 2 is a heterogeneous mixed type main storage device, and the memory management device 1 manages arrangement of data.
  • Memory usage information 11, memory specific information 12, address conversion information 13, and a coloring table 14 are stored in predetermined areas of the nonvolatile semiconductor memories 9 and 10.
  • the memory usage information 11 includes the number of write occurrences and the number of read occurrences of each page area of the nonvolatile semiconductor memories 9 and 10, the number of erasures of each block area, and the size of the area in use.
  • the memory specific information 12 includes the memory size of the volatile semiconductor memory 8, the memory size of the nonvolatile semiconductors 9 and 10, the page size and block size of the nonvolatile semiconductor memories 9 and 10, and the accessible upper limit number of times for each area
  • the upper limit number of times of writing, the upper limit number of times of reading, and the upper limit number of times of erasing are included.
  • the page size is a unit of data size of writing and reading of the nonvolatile semiconductor memories 9 and 10.
  • the block size is a unit of data erase size of the nonvolatile semiconductor memories 9 and 10. In the nonvolatile semiconductor memories 9 and 10, the block size is larger than the page size.
  • the address conversion information 13 is information for converting a logical address given from the processors 3a, 3b, 3c into a physical address corresponding to the logical address. Details of the address conversion information 13 will be described later.
  • the coloring table 14 is a table for holding coloring information for each data.
  • the coloring information includes static color information and dynamic color information. Details will be described later.
  • FIG. 2 is a block diagram showing an example of the configuration of the memory management device 1 and the information processing device 100 according to the present embodiment.
  • the processors 3a, 3b and 3c of FIG. 1 the processor 3b is described as a representative in FIG. 2, but the same applies to the other processors 3a and 3c.
  • the operating system 27 is executed by the processor 3b.
  • the operating system 27 is authorized to access the coloring table 14 which is executed by the processor 3 b and stored in the information storage unit 17.
  • the processing unit 15 of the memory management device 1 includes an address management unit 18, a read management unit 19, a write management unit 20, a coloring information management unit 21, a memory use information management unit 22, and a rearrangement unit 23. Furthermore, the coloring information management unit 21 includes an access frequency calculation unit 24 and a dynamic color information management unit 25.
  • the processing unit 15 executes various processes while using the work memory 16 based on the information stored in the information storage unit 17.
  • the work memory 16 is used, for example, as a buffer, and is used as a work area for various data conversions.
  • the functional blocks provided in the processing unit 15 can be realized as either hardware or software (for example, the operating system 27, firmware or the like), or a combination of both. Whether these functional blocks are implemented as hardware or software depends on specific embodiments or design constraints imposed on the entire information processing apparatus 100. A person skilled in the art can realize these functions in various ways in each specific embodiment, but determining such an implementation is included in the scope of the present invention. The same applies to the functional blocks used in the following description.
  • the address management unit 18 assigns a physical address to the logical address, and stores it in the address conversion information 13. Thereby, the processing unit 15 can acquire the physical address corresponding to the logical address by referring to the address conversion information 13.
  • the read management unit 19 manages read processing of read target data with respect to the mixed main memory 2.
  • the write management unit 20 manages the process of writing write target data in the mixed main memory 2 when the processors 3a, 3b, 3c generate a write request.
  • the coloring information management unit 21 manages the coloring table 14.
  • the memory use information management unit 22 manages the memory use information 11 of the mixed main memory 2.
  • the rearrangement unit 23 re-arranges the data arranged at the physical address corresponding to an arbitrary logical address based on the coloring information included in the coloring table 14 asynchronously with the operation of the processors 3a, 3b, 3c. Do the placement. For example, among the data included in the non-volatile semiconductor memory 10, the relocation unit 23 periodically re-reads data with high read frequency and high write frequency to the non-volatile semiconductor memory 9 based on dynamic color information described later. Deploy. Also, the rearrangement unit 23 periodically re-reads the data with low reading frequency and writing frequency among the data contained in the nonvolatile semiconductor memory 9 based on the dynamic color information, to the nonvolatile semiconductor memory 10 periodically. Deploy.
  • the relocation unit 23 can relocate data between the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10 as well.
  • the write processing by the write management unit 20 described later performs relocation processing by performing determination processing of a write destination memory area and determination processing of a write destination block area each time data update occurs.
  • the relocation unit 23 periodically relocates data.
  • the trigger of the operation start of the rearrangement unit 23 may be a cycle set by the developer or a cycle settable by the user interface. Further, the rearrangement unit 23 may operate when the information processing apparatus 100 is in the pause state.
  • the access frequency calculation unit 24 calculates data access frequency information (dynamic writing frequency DW_color, dynamic reading frequency DR_color) based on the coloring information included in the coloring table 14.
  • the dynamic color information management unit 25 manages dynamic color information included in the coloring table 14.
  • FIG. 3 is a diagram showing an example of a memory map of the mixed main memory 2 according to the present embodiment.
  • Hybrid main memory 2 includes volatile semiconductor memory 8 (DRAM area), nonvolatile semiconductor memory 9 (SLC area), and nonvolatile semiconductor memory 10 (2 bit / Cell area, 3 bit / Cell area, 4 bit / Cell area). Equipped with The 2 bit / Cell area, 3 bit / Cell area, and 4 bit / Cell area constitute an MLC area.
  • the DRAM area, the SLC area, the 2 bit / cell area, the 3 bit / cell area, and the 4 bit / cell area are collectively referred to as a memory area.
  • the volatile semiconductor memory 8 is constituted of, for example, a 128 MByte DRAM area.
  • the nonvolatile semiconductor memory 9 includes, for example, a 2 GByte B area, a 128 MByte B redundant block area, a 2 GByte C area and a 128 MByte C redundant block area.
  • Each memory area of the nonvolatile semiconductor memory 9 is a SLC type NAND flash memory.
  • the nonvolatile semiconductor memory 10 has, for example, a 2 bit / Cell area composed of 4 GByte A area and 128 MByte A redundant block area, 3 bit / Cell composed of 4 GByte D area and 128 MByte D redundant block area, It consists of 4 bit / cell area composed of 4 GByte E area and 128 MByte E redundant block area.
  • Each memory area of the nonvolatile semiconductor memory 10 is an MLC type NAND flash memory. As shown in FIG. 3, physical addresses are allocated to the memory area.
  • the memory specific information 12 includes 1) the memory size of the volatile semiconductor memory 8 (DRAM area) in the memory space of the mixed main memory 2, 2) the mixed main memory 2 Memory size of nonvolatile semiconductor memory 9, 10 in memory space, 3) Block size of NAND type flash memory constituting memory space of mixed main memory 2, page size, 4) SLC area in nonvolatile semiconductor memory 9 ( Memory space information (including the upper limit number of erasable upper limit, the upper limit number of readable upper limit, and the upper limit number of writable upper limit) allocated as binary area) 5) Memory space information (erasable upper limit number of upper limit, read) Possible upper limit number of times, including upper limit number of writable upper limit) 6) Memory space information allocated to 3 bit / cell area (erasure Including ability upper limit number, readable upper limit number of times, including writable upper limit number), 7) the memory space information allocated to 4bit / Cell region (erasable upper limit number of times, the containing readable upper limit
  • FIG. 4 is a view showing an example of the address conversion information 13 according to the present embodiment.
  • the logical address, the physical address of the volatile semiconductor memory 8, the physical address of the nonvolatile semiconductor memories 9 and 10, and the valid / invalid flag are managed in a table format.
  • each entry of the address conversion information 13 at least one of a logical address, a physical address of the volatile semiconductor memory 8 and a physical address of the nonvolatile semiconductor memories 9 and 10 corresponding to the logical address, a valid / invalid flag Is registered.
  • the valid / invalid flag is information indicating whether each entry is valid.
  • the valid / invalid flag is valid when 1 and 0 when invalid.
  • the initial value of the entry valid / invalid flag is 0.
  • An entry in which the valid / invalid flag is 0 is an unmapped entry of the logical address or an entry in which the logical address is mapped but erased.
  • a logical address is mapped to an entry in which the valid / invalid flag is 1, and a physical address corresponding to the logical address exists in at least one of the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10. .
  • one entry of the address conversion information 13 manages the logical address, the physical address of the volatile semiconductor memory 8, and the physical address of the nonvolatile semiconductor memories 9 and 10.
  • the logical address and the physical address of the nonvolatile semiconductor memory 8 may be managed, and the logical address and the physical address of the volatile semiconductor memory 9, 10 may be managed by another tag RAM.
  • the tag RAM is referred to, and when there is no physical address corresponding to the logical address in the tag RAM, the address conversion information 13 is referred to.
  • FIG. 5 is a diagram showing an example of the coloring table 14 according to the present embodiment.
  • coloring information is given to each data.
  • the data size unit of data to which coloring information is added is, for example, the minimum unit of read and write.
  • the minimum unit of read and write is the page size of the NAND flash memory.
  • the coloring table 14 associates coloring information with each data, and stores the coloring information in entry units. Each entry in the coloring table 14 is indexed. An index is a value generated based on a logical address.
  • the read management unit 19, the write management unit 20, the coloring information management unit 21, the rearrangement unit 23, etc. of the memory management device 1 are managed by the index corresponding to the logical address when the logical address specifying the data is given. Get the coloring information of the data with reference to the existing entry.
  • the coloring information includes static color information and dynamic color information.
  • the static color information is information generated on the basis of the characteristics of the data to which the coloring information is added, and is used as a hint for determining the arrangement (writing) area on the mixed main memory 2 of the data. It is a kind.
  • Dynamic color information is information including at least one of the number and frequency of reading and writing of data. Dynamic color information may be used as hint information.
  • FIG. 6 is a diagram for explaining an example of static color information according to the present embodiment.
  • the static color information includes at least one of the "importance", "read frequency, write frequency", and "data life” of the data.
  • the read frequency described in FIG. 6 corresponds to the static read frequency described later, and the write frequency corresponds to the static write frequency.
  • the “importance level” is a value set by estimating the importance of the data based on the type of data and the like.
  • the “read frequency, write frequency” is a value set by estimating the frequency at which the data is read or written based on the type of data or the like.
  • the “data life” is a value set by estimating a period (life of data) in which the data is used as data without being erased based on the type of data or the like.
  • the property of the file held in the file system is a property determined by the data attribute added to the file of the file data including the data to which the coloring information is added.
  • the data attributes added to the file include header information of the file, file name, file location, file management data (information held in inodd), and the like. For example, as the file location, when the file is located in the trash of the file system, the characteristics of the data contained in the file are less important, the frequency of reading, the frequency of writing is less, It can be predicted that the life is short. Based on this characteristic, it is assumed that the coloring information of the data has a low writing frequency, a low reading frequency, and a short data life.
  • the characteristics of the area temporarily used in the program include the characteristics determined based on the data type at the time of program execution of the program to which the data to which the coloring information is added is applied and the data type at the time of program file generation. And a characteristic determined based on the above.
  • the data type at the time of program execution is, for example, a data type classified based on which area of the stack area, heap area, and text area the data is mapped at the time of program execution.
  • the characteristics of data mapped to the stack area and the heap area are predicted to be high in frequency of writing, high in frequency of reading, high in importance, and short in data life.
  • the static coloring information of the data is high in the frequency of writing, high in the frequency of reading, high in importance, and short in data life.
  • the static coloring information of the data is high in writing frequency, high in reading frequency, high in importance, and long in data lifetime.
  • Data type prediction at the time of program file generation is to estimate the degree of importance, read / write frequency, and data life of data handled by the program at the time of program generation.
  • static color information may be set directly by the user through the user interface.
  • FIG. 7 is a flowchart showing an example of data arrangement processing.
  • the hybrid main memory 2 includes the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10.
  • the volatile semiconductor memory 8 or the non-volatile semiconductor memory 9, 10 is determined as the arrangement destination based on the coloring information.
  • the write management unit 20 refers to coloring information attached to the write target data (step S1).
  • the writing management unit 20 refers to the “data life” of the coloring information to determine the data life of the write target data (step S2).
  • step S3 If it is determined that the data life of the write target data is short (step S3), the write management unit 20 selects the volatile semiconductor memory 8 as a memory area in which the write target data is arranged (step S4), The memory area in which the target data is arranged is determined to the volatile semiconductor memory 8 (step S12) When it is determined that the data life of the write target data is long (step S3), the write management unit 20 refers to the "importance" of the coloring information of the write target data, and determines the importance of the write target data. (Step S5).
  • the write management unit 20 sets the nonvolatile main memory 9 with high durability (reliability) as a memory area in which the write target data is arranged. It chooses (step S7). Furthermore, the write management unit 20 determines whether to cache the write target data in the volatile semiconductor memory 8 based on the coloring information of the write target data (cache method based on the coloring information) (step S8). The memory area in which the write target data is arranged is determined to be the non-volatile semiconductor memory 9 (step S12).
  • the write management unit 20 selects the nonvolatile semiconductor memory 10 with low durability as the memory area in which the write target data is arranged (step S6) S9). Further, the writing management unit 20 determines the reading frequency and the writing frequency of the writing target data based on coloring information (dynamic color information, static color information) of the writing target data (step S10).
  • the write management unit 20 selects the nonvolatile semiconductor memory 9 as a memory area in which the write target data is arranged (step S7). ). Furthermore, the write management unit 20 determines whether to cache the write target data in the volatile semiconductor memory 8 based on the coloring information of the write target data (cache method based on the coloring information) (step S8). The memory area in which the write target data is arranged is determined to be the non-volatile semiconductor memory 9 (step S12).
  • the write management unit 20 caches the write target data in the non-volatile main memory 8 based on the coloring information of the write target data. It is judged whether or not it is (cache method based on coloring information) (step S8), and the memory area in which the write target data is arranged is determined as the nonvolatile semiconductor memory 10 (step S12).
  • FIG. 8 is a view showing an example of the configuration of the coloring table 14 according to the present embodiment.
  • coloring information any one of “importance level”, “read frequency, write frequency”, and “data life” may be used, or any two may be used in combination. Or all may be used in combination. Furthermore, it is also possible to separately define and use other coloring information not shown in FIG.
  • the coloring table 14 is a table that associates coloring information with each data and holds the information in units of entries.
  • the data size of data to which coloring information is associated by the coloring table 14 is, for example, the minimum data size to be read and written.
  • the minimum data size read and written is the page size of the NAND flash memory.
  • Each entry in the coloring table 14 is indexed.
  • the coloring information held in the coloring table 14 includes static color information and dynamic color information.
  • An index is a value generated based on a logical address.
  • the read management unit 19, the write management unit 20, the coloring information management unit 21, the rearrangement unit 23, etc. of the memory management device 1 are managed by the index corresponding to the logical address when the logical address specifying the data is given.
  • the data coloring information is acquired by referring to the existing entry.
  • the static color information includes a value SW_color indicating a static writing frequency, SR_color indicating a static reading frequency, data lifetime SL_color, and a time ST_color at which data was generated.
  • the static writing frequency SW_color is a value that is set by estimating the frequency at which the data is written based on the type of data and the like.
  • the static reading frequency SR_color is a value that is set by estimating the frequency at which the data is read out based on the type of data and the like.
  • the static writing frequency SW_color is set to a higher value for data that is estimated to have a high writing frequency.
  • the static read frequency SR_color is set to a higher value for data that is estimated to have a higher read frequency.
  • the data life SL_color is a value set by estimating the period (life of data) in which the data is used as data without being erased based on the type of data and the like.
  • Static color information is a value statically predetermined by a program (process) that generates data.
  • the operating system 27 executed by the information processing apparatus 100 may predict static color information based on a file extension or a file header of data.
  • the dynamic color information includes the number of times of data writing DWC_color and the number of times of data reading DRC_color.
  • the number of times of data writing DWC_color is the number of times the data has been written to the mixed main memory 2.
  • the number of times of data read DRC_color is the number of times the data has been read from the mixed main memory 2.
  • the dynamic color information management unit 25 manages, for each data, the number of times the data has been written to the mixed main memory 2 based on the number of times of data writing DWC_color.
  • the dynamic color information management unit 25 manages, for each data, the number of times the data has been read from the mixed main memory 2 based on the number of times of data read DRC_color.
  • the mixed main memory 2 is used as a main memory.
  • data to be processed by the processors 3a, 3b, 3c are written to the mixed main memory 2 and read from the mixed main memory 2. Every time data is written, the dynamic color information management unit 25 increments the number of times of data writing DWC_color. Also, every time data is read, the dynamic color information management unit 25 increments the read count DRC_color of the data.
  • the access frequency calculation unit 24 calculates the dynamic writing frequency DW_color from the number of times of data writing DWC_color.
  • the access frequency calculation unit 24 calculates the dynamic read frequency DR_color from the data read count DRC_color.
  • the dynamic writing frequency DW_color is a value indicating the frequency at which the data is written to the mixed main memory 2.
  • the dynamic read frequency DR_color is a value indicating the frequency at which the data is read from the mixed main memory 2. The method of calculating the dynamic writing frequency DW_color and the dynamic reading frequency DR_color will be described later.
  • the memory management device 1 refers to coloring information to write area, read method, etc. decide.
  • FIG. 9 is a diagram showing a first example of setting of static color information (static writing frequency SW_color, static reading frequency SR_color, data life SL_color) for various data.
  • FIG. 10 is a diagram showing a second example of setting of static color information (static writing frequency SW_color, static reading frequency SR_color, data life SL_color) for various data.
  • the text area of the kernel usually has a high frequency of reads and a low frequency of writes.
  • the operating system 27 sets the static reading frequency SR_color of the text area in which it operates to 5 and the static writing frequency SW_color to 1.
  • the operating system 27 also predicts that the data life SL_color of the text area of the kernel is long (LONG).
  • the operating system 27 sets the static read frequency SR_color to 5 and the static write frequency SW_color to 5 for the kernel data area.
  • the text area of the user program is usually read less frequently than the kernel that is called reentrant from all processes. However, when the process is active, the frequency of reading is high like the kernel. Therefore, in the text area of the user program, the static writing frequency SW_color is set to 1, and the static reading frequency SR_color is set to 4. In the text area of the user program, the data life SL_color is generally long since it is a period until the program is uninstalled. Therefore, the data life SL_color is set to be long (LONG) for the text area of the user program.
  • the first is data (including a stack area) that is discarded when the execution of the program ends. These data have a short data life SL_color, and the frequency of reading and the frequency of writing are high. Therefore, the static reading frequency SR_color is set to 4 and the static writing frequency SW_color is set to 4 for the data to be discarded when the execution of the program ends.
  • An area dynamically reserved for another program is an area generated by the program for a new file. The data generated by the program has a long data life SL_color, and the frequency of reading and writing depends on the type of file to be generated.
  • the data life of the file SL_color is set to be long.
  • the data having such an extension is a file read out when the operating system 27 executes various processes.
  • the operating system 27 sets the static writing frequency SW_color of data having these extensions to 1, and sets the static reading frequency SR_color to 3. This setting indicates that the frequency of writes predicted from data is extremely low and the frequency of predicted reads is high. That is, data having these extensions are only rewritten several times when installing an update of the operating system 27 or other programs, and it is predicted that they will be treated as almost read only.
  • the frequency of writing music data compressed by MP3 or the like is low.
  • the frequency of reading music data is considered to be higher than the frequency of writing. Therefore, the static writing frequency SW_color of music data compressed by MP3 or the like is set to 1, and the static reading frequency SW_color is set to 2.
  • the frequency of writing moving image data compressed by MPEG or the like is low.
  • the frequency of reading moving image data is considered to be higher than the frequency of writing. Therefore, the static writing frequency SW_color of moving image data compressed by MP3 or the like is set to 1, and the static reading frequency SW_color is set to 2.
  • the static writing frequency SW_color of the text file is set to 3
  • the static reading frequency SW_color is set to 3.
  • the static writing frequency SW_color of the browser cache file is set to 1, and the static reading frequency SW_color is set to 3.
  • the static writing frequency SW_color of a file arranged in a low access directory such as a trash can is set to 1
  • the static reading frequency SW_color is set to 1.
  • Photo data whose extension is represented by JPEG and movie data whose extension is represented by MOV are rarely written again once they are written. Such photographic data and movie data are expected to be accessed less frequently from the program. Therefore, the operating system 27 sets small values for the static writing frequency SW_color and the static reading frequency SR_color of photo data and movie data.
  • FIG. 11 is a flowchart showing an example of the generation process of the coloring table 14.
  • the coloring table 14 is generated at initial startup of the system.
  • the coloring table 14 is arranged in an arbitrary area on the nonvolatile semiconductor memories 9 and 10.
  • the address at which the coloring table 14 is arranged may be determined by the implementation of the memory management device 1.
  • step T1 the information processing apparatus 100 is powered on and starts up.
  • step T2 the coloring information management unit 21 converts the base address of the coloring table 14 into a logical address, and generates an index for each data.
  • step T3 the coloring information management unit 21 sets the base address of the coloring table 14 in the information storage unit 17.
  • the information storage unit 17 includes, for example, a register.
  • the base address of the coloring table 14 is set, for example, in the coloring table register.
  • FIG. 12 is a flowchart showing an example of generation processing of an entry of the coloring table 14.
  • the processors 3a, 3b, 3c secure an area on the logical address space used to execute the processes 6a, 6b, 6c. At the stage of securing the area on the logical address space, 0 is set in the valid / invalid flag of the address conversion information 13 of the secured logical address.
  • the assignment of physical addresses to logical addresses is performed when the processes 6a, 6b, 6c access (read, write) logical addresses within the range of the secured logical address space.
  • static color information for data corresponding to the logical address is registered in the coloring table 14 and the valid / invalid flag of the address conversion information 13 of the logical address is 1 Is set.
  • the processes 6a, 6b, 6c executed by the processors 3a, 3b, 3c issue a request for securing an area on the logical address space for placing new data (step U1).
  • the unused area on the logical address space is managed by the operating system 27, and the logical address is determined by the operating system 27.
  • the operating system 27 generates static color information based on the type of newly generated data and the like (step U3). Static color information is generated for each page size of generated data. For example, if the data size of the generated data is larger than the page size, the data is divided into page sizes, and static color information is generated for each divided page size. In the following description, it is assumed that the data size of the write target data is the page size, but the present invention is not limited to this.
  • the operating system 27 refers to the coloring table 14 based on the base address set in the information storage unit 17 (step U4).
  • the operating system 27 registers the generated static color information in the entry of the coloring table 14 to which the index corresponding to the secured logical address is added (step U5).
  • the processes 6a, 6b, 6c executed by the processors 3a, 3b, 3c issue read requests or write requests to the secured logical address space after the logical system is successfully secured by the operating system 27. .
  • the address management unit 18 determines the physical address for the logical address where the writing has occurred, but this process will be described later.
  • FIG. 13 is a diagram showing a first example of alignment of entries in the coloring table 14.
  • FIG. 14 is a diagram showing a second example of alignment of entries in the coloring table 14. As shown in FIG.
  • the entries in the coloring table 14 correspond to the minimum read / write size of data (for example, the page size of the NAND flash memory), but when the processes 6a, 6b, 6c map data in the logical address space, It is not obligated to map in alignment with the smallest read / write size of. Therefore, a plurality of data may correspond to one entry of the coloring table 14.
  • the operating system 27 represents, among a plurality of data corresponding to one entry, data predicted to have the highest reading frequency and the highest writing frequency.
  • the operating system 27 uses the size of data occupying one entry as a weight, and sets a weighted average value of the static writing frequency SW_color and the static reading frequency SR_color of each data.
  • the static writing frequency SW_color and the static reading frequency SR_color indicated by the coloring table 14 may be embedded in source code such as the operating system 27 by the program developer or may be predicted by the operating system 27.
  • files and photo data may be used for applications other than that intended by the program developer.
  • access to data such as photo data is mostly read out, and the contents of the photo data are rarely rewritten.
  • the photographic data being processed may be frequently rewritten. In such a case, if the user can rewrite the static writing frequency SW_color and the static reading frequency SR_color of the coloring table 14, a specific file can be moved to an area where there is room for rewriting speed more quickly. It will be possible.
  • the file system of the operating system 27 so that the coloring information of each data can be rewritten on the software of the operating system 27.
  • the information processing apparatus 100 is designed so that the attribute corresponding to the coloring table 14 can be viewed on the GUI screen if the file property is opened with a general browser, and the initial data is displayed on the GUI by the user.
  • the operating system 27 is designed to be modifiable.
  • FIG. 15 is a diagram showing an example of a method of calculating the dynamic writing frequency DW_color and the dynamic reading frequency DR_color based on the dynamic color information and the static color information.
  • the horizontal axis represents time
  • the vertical axis represents the number of accesses (the number of readings DWC_color or the number of writings DRC_color).
  • coloring information (including data generation time) is generated for the newly generated data, and registered in a new entry of coloring table 14.
  • Data is written to the hybrid main memory 12.
  • access read, write
  • the access count (write count DWC_color, read count DRC_color) increases with the passage of time.
  • the increase in the number of accesses is performed by the dynamic color information management unit 25.
  • the access frequency calculation unit 24 of the memory management device 1 calculates the dynamic writing frequency DW_color and the dynamic reading frequency DR_color from the number of accesses.
  • the write count DWC_color of the data and the read count DRC_color of the data at the current time can be determined by referring to the coloring table 14.
  • the dynamic writing frequency DW_color at the current time is determined by a time average (average change rate ⁇ ) of the number of times of writing DWC_color from the data generation time ST_color to the current time.
  • the dynamic reading frequency DR_color at the current time is determined by a time average (average change rate ⁇ ) of the number of readings DRC_color from the data generation time ST_color to the current time.
  • the dynamic writing frequency DW_color and the dynamic reading frequency DR_color of the data are calculated from the dynamic color information (the number of times of writing DWC_color, the number of times of reading DRC_color).
  • the frequency of access to the data is high or low.
  • the determination of whether the access frequency is high or low is made based on, for example, the memory specific information 11 of the mixed main memory 2 in which the data is written, the calculated dynamic writing frequency DW_color and the dynamic reading frequency DR_color.
  • weight 1 “the upper limit number of accessible times ⁇ weight 1 / data life” is set as the inclination of the expression A, and “the upper limit number of accessible times ⁇ weight 2 / data life” is set as the inclination of the expression B.
  • weight 1> weight 2 is satisfied.
  • Weight 1 and weight 2 can be arbitrarily set according to the mixed main memory 2 to which the data concerned for calculating the dynamic writing frequency DW_color and the dynamic reading frequency DR_color are written.
  • FIG. 16 is a flowchart showing an example of the data read process.
  • step W1 the processes 6a, 6b, and 6c executed by the processors 3a, 3b, and 3c generate a read request for data (read target data) (step W1).
  • a virtual address for designating read target data is converted to a logical address by a page table (not shown) provided in the processors 3a, 3b, 3c (step W2).
  • the read management unit 19 refers to the valid / invalid flag of the entry of the logical address corresponding to the read target data of the address conversion information 13 (step W3).
  • step W3a When the valid / invalid flag of the address conversion information 13 is 0 (step W3a), the data is undefined because writing to the logical address has never occurred. In this case, the read management unit 19 behaves as if 0 data corresponding to the read request size is read (step W8), and the process proceeds to step W10.
  • step W3a When the valid / invalid flag of the address conversion information 13 is 1 (step W3a), writing of data to the logical address has occurred at least once.
  • the read management unit 19 refers to the address conversion information 13 and determines whether data corresponding to the logical address is stored in the volatile semiconductor memory 8 (step W4).
  • step W4a When it is determined that the data corresponding to the logical address is stored in the volatile semiconductor memory 8 (step W4a), the read management unit 19 performs the reading from the volatile semiconductor memory 8, so the process proceeds to step W10. .
  • the read management unit 19 refers to the coloring table 14 to read from the nonvolatile semiconductor memories 9 and 10
  • the method of reading out the data to be read out is determined (step W5). The process of determining the reading method will be described later.
  • the read management unit 19 refers to the memory specific information 11 and the memory usage information 12 of the nonvolatile semiconductor memories 9 and 10 in which the data to be read is stored, and it is necessary to move (rewrite) the data to be read. It judges no (step W6).
  • step W6a When it is determined that the movement of the read target data is unnecessary (step W6a), the read management unit 19 proceeds to step W9.
  • step W6a When it is determined that the read target data needs to be moved (step W6a), the read management unit 19 moves the read target data to another area of the non-volatile semiconductor memories 9 and 10 (step W7). ), Then the process proceeds to step W9.
  • step W9 the memory use information managing unit 22 increments the number of times of reading the memory use information 11 when reading from the non-volatile memory area.
  • step W10 the dynamic color information management unit 25 increments the number of times of reading data DRC_color of the coloring table 14 when reading data.
  • step W11 the read management unit 19 reads data based on the physical address obtained from the logical address and the address conversion information 13.
  • FIG. 17 is a flowchart showing an example of the process of determining the data read method.
  • the reading method determination process is a process of determining whether the memory area of the volatile semiconductor memory 8 is used as a cache when reading data from the memory areas of the nonvolatile semiconductor memories 9 and 10. This processing corresponds to step W5 in FIG.
  • the mixed main memory 2 includes the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10.
  • part of the volatile semiconductor memory 8 can also be used as a cache memory.
  • data that is read frequently is cached in the volatile semiconductor memory 8 and then read.
  • data that is read less frequently is read directly from the nonvolatile semiconductor memories 9 and 10 without being cached in the volatile semiconductor memory 8.
  • the read management unit 19 refers to the static read frequency SR_color of the read target data by referring to the coloring table 14 (step V1).
  • the process is performed to cache the read target data from the volatile semiconductor memory 9, 10 to the volatile main memory 8 (DRAM area). It moves to step V4.
  • the read management unit 19 reads the volatile semiconductor memory 8 ( It is confirmed whether or not there is an empty area to which read target data is to be written in the DRAM area (step V4).
  • the read management unit 19 caches the read target data from the volatile semiconductor memories 9 and 10 to the volatile semiconductor memory 8 (DRAM area) (step V4a) Step V5).
  • step V4a When the volatile memory 8 has no free space (step V4a), the read management unit 19 writes back the data stored in the volatile semiconductor memory 8 to the nonvolatile semiconductor memories 9 and 10, and the volatile memory By erasing the data stored in the semiconductor memory 8, an empty area is secured (step V6). After the write-back processing, the read management unit 19 confirms the free space of the volatile semiconductor memory 8 again (step V7). If a vacant area exists in the volatile semiconductor memory 8 (step V7a), the process proceeds to step V5, and if it does not exist (step V7a), the process proceeds to step V8.
  • the read management unit 19 reads the read target data, The data is read directly from the nonvolatile semiconductor memories 9 and 10 without caching in the volatile semiconductor memory 8 (step V8).
  • the reading method is determined by referring to the static reading frequency SR_color and the dynamic reading frequency DR_color.
  • FIGS. 9 and 10 a method of reading out the data shown in FIGS. 9 and 10 will be specifically described.
  • the data shown in FIGS. 9 and 10 is determined as follows according to the flow chart of the process of determining the data read method described with reference to FIG.
  • the text area of the kernel in which the static read frequency SR_color is 5 and the static write frequency SW_color is 1 has a high read frequency and a low write frequency. Since the first data in the text area of this kernel is read when the operating system 27 performs various processes, the number of times of reading increases and it needs to be read faster.
  • the memory management device 1 writes the first data read from the non-volatile semiconductor memories 9 and 10 into the secondary cache memory 5 b or the primary cache memory 4 b of the processor 3 b, and simultaneously generates the main data.
  • the first data read out is also transferred to the memory area of the volatile semiconductor memory 8 in the memory 2.
  • first data When the same first data is read again, it is from the secondary cache memory 5b or the primary cache memory 4b of the processor 3b, or from the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 when there is no cache hit. , And the first data is read out.
  • the first data stored in the memory area of the volatile semiconductor memory 8 on the mixed main memory 2 is on the volatile semiconductor memory 8 until the power is turned off unless the memory area of the volatile semiconductor memory 8 is exhausted. It is held.
  • a kernel data area in which the static read frequency SR_color is set to 5 and the static write frequency SW_color is set to 5 is newly generated and initialized each time the system (the information processing apparatus 100) is started. It is an area. Therefore, it is assumed that the second data life SL_color in the data area of the kernel is short.
  • the memory management device 1 first refers to the second data life SL_color.
  • the second data exists on the volatile semiconductor memory 8 as long as the memory area of the volatile semiconductor memory 8 is not depleted, and the power is turned off and the volatile semiconductor memory 8 is erased.
  • the read frequency is lower than in the kernel called by all processes to reentrant.
  • the third data in the area of the user program is arranged in the memory area of the volatile semiconductor memory 8, but if the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 is filled with FULL, the third data is stored on the volatile semiconductor memory 8.
  • the write back target to the memory area of the nonvolatile semiconductor memories 9 and 10 is to be performed.
  • the order of the third data to be written back is determined based on the information in the coloring table 14.
  • the third data is transferred from the volatile semiconductor memory 8 to the nonvolatile semiconductor memories 9 and 10 in ascending order of the number of times of reading.
  • the data life SL_color is short Data is present on the volatile semiconductor memory 8 as long as the memory area of the volatile semiconductor memory 8 is not exhausted as in the data area of the kernel, and the power is turned off and the volatile semiconductor memory 8 is erased.
  • the fourth data set to have a long data life SL_color is placed in the memory area of the volatile semiconductor memory 8, but the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 is buried in FULL. In this case, write-back from the volatile semiconductor memory 8 to the memory areas of the nonvolatile semiconductor memories 9 and 10 is performed.
  • the data life SL_color of data treated as a file referred to by the process is set to be all long.
  • the fifth data included in files with static write frequency SW_color set to 1 and static read frequency SR_color set to 3 has extremely low write frequency and high predicted read frequency in the operating system. 27 guessed.
  • the memory management device 1 arranges the fifth data in the memory area of the volatile semiconductor memory 8, but when the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 is filled with FULL, the volatile semiconductor It becomes an object of write back from the memory 8 to the memory area of the nonvolatile semiconductor memories 9 and 10.
  • the sixth data included in files with static writing frequency SW_color set to 1 and static reading frequency SR_color set to 2 has very low static writing frequency SW_color and low predicted static reading frequency SR_color That is inferred by the operating system 27.
  • the memory management device 1 directly accesses the nonvolatile semiconductor memories 9 and 10 without going through the cache of the volatile semiconductor memory 8 at the time of reading.
  • the seventh data included in files with static writing frequency SW_color set to 1 and static reading frequency SR_color set to 1 has a very low static writing frequency SW_color, and the predicted static reading frequency SR_color is also extremely low. It is assumed by the operating system 27 that it is low. As described above, when it is not determined that the static read frequency is high, the memory management device 1 directly accesses the nonvolatile semiconductor memories 9 and 10 without passing through the cache of the volatile semiconductor memory 8 at the time of reading.
  • the reading method of the read target data is determined based on the coloring information of the read target data. As a result, it becomes possible to use a reading method that matches the characteristics of the read target data (static read frequency SR_color, static write frequency SW_color, data life SL_color), and data read efficiency can be improved.
  • FIG. 18 is a flowchart showing an example of the data writing process.
  • step X1 the processes 6a, 6b, 6c executed by the processors 3a, 3b, 3c generate a write request for data (data to be written) (step X1).
  • a virtual address specifying the write target data is converted into a logical address by a page table (not shown) provided in the processors 3a, 3b, 3c (step X2).
  • the write management unit 20 refers to the coloring table 14 to determine the memory area to be written in the mixed main memory 2 (step X3). The selection of the write target memory area will be described later.
  • the write management unit 20 determines whether the write target memory selected in step X3 is the volatile semiconductor memory 8 (step X4). If it is determined that the selected write target memory is the volatile semiconductor memory 8 (step X4a), the process of step X7 is executed, and if the write target memory is a non-volatile memory (step X4a), the process of step X5 is performed. To be executed.
  • step X5 the write management unit 20 refers to the memory use information 11 and the coloring table 14 to determine a write target block area in the memory area of the nonvolatile semiconductor memories 9 and 10.
  • step X6 the address management unit 18 updates the address conversion information 13 based on the physical address of the page in the write target block.
  • the nonvolatile semiconductor memories 9 and 10 are NAND flash memories, the same physical address is not overwritten, so it is necessary to update the physical address accompanying the writing.
  • the write management unit 20 After the write destination physical address is determined, the write management unit 20 performs data write processing (step X7). Subsequently, the address management unit 18 sets the valid / invalid flag of the address conversion information 13 to 1 (step X8).
  • the dynamic color information management unit 25 increments the number of times of writing DWC_color of the coloring table 14 (step X9), and the memory use information management unit 22 increments the number of times of writing of the memory use information 11 (step X10).
  • FIG. 19 is a flowchart showing an example of the process of determining the data write destination area.
  • step Y1 the write management unit 20 refers to the data life SL_color of the write target data.
  • step Y2 the write management unit 20 determines whether the data life SL_color is longer or shorter than a predetermined value. If the data life SL_color is greater than or equal to the predetermined value, the process proceeds to step Y9.
  • the write management unit 20 checks the free space of the DRAM area in step Y3, and the write management unit 20 determines whether there is a free space in the DRAM area in step Y4. Do.
  • the write management unit 20 writes the write target data in the DRAM area in step Y5.
  • the write management unit 20 executes a write back process from the DRAM area to another nonvolatile semiconductor memory in step Y6. Then, in step Y7, the write management unit 20 checks the free space of the DRAM area, and in step Y8, the write management unit 20 determines whether there is a free space in the DRAM area.
  • step Y5 If there is an empty area in the DRAM area, the process proceeds to step Y5, and the write management unit 20 writes the write target data in the DRAM area.
  • step Y9 If there is no free space in the DRAM area, the process proceeds to step Y9.
  • step Y 9 the writing management unit 20 refers to the static writing frequency SW_color of the writing target data managed by the coloring table 14.
  • step Y10 the writing management unit 20 determines whether 5 is set to the static writing frequency SW_color (whether or not the static writing frequency SW_color of the write target data is high).
  • step Y11 the memory management device 1 reads the static reading frequency of the write target data managed by the coloring table 14 References SR_color.
  • step Y12 the writing management unit 20 determines which value of 1 to 5 is set in the static reading frequency SR_color.
  • the write management unit 20 selects the B area as the write destination of the write target data in step Y13.
  • the write management unit 20 selects the area A as the write destination of the write target data in step Y14.
  • the write management unit 20 calculates the dynamic data write frequency DW_color in step Y15 based on the data coloring information.
  • the writing management unit 20 refers to the static writing frequency SW_color of the writing target data managed by the coloring table 14.
  • step Y17 the writing management unit 20 determines whether or not “static writing frequency SW_color is 3 or more, or dynamic writing frequency DW_color of data is high”.
  • step Y17 If “SW_color is 3 or more or dynamic writing frequency DW_color of the data is high level” does not hold in step Y17, the process proceeds to step Y14, and the writing management unit 20 selects the A area. Do.
  • step Y17 If “SW_color is 3 or more or the dynamic writing frequency DW_color of the data is high level” in step Y17, the process proceeds to step Y18, and the writing management unit 20 selects the C area.
  • the write management unit 20 calculates the dynamic data write frequency DW_color based on the data coloring information in step Y19.
  • step Y20 the writing management unit 20 refers to the static writing frequency SW_color of the writing target data managed by the coloring table 14.
  • step Y21 the writing management unit 20 determines whether or not “SW_color is 3 or more, or that the calculated dynamic writing frequency DW_color is at a high level” is established.
  • step Y21 If “SW_color is 3 or more or the calculated dynamic writing frequency DW_color is high level” in this step Y21, the process proceeds to step Y18 and the writing management unit 20 selects the C area. Do.
  • step Y21 If “SW_color is 3 or more or the calculated dynamic writing frequency DW_color is at a high level” does not hold in step Y21, the process proceeds to step Y22.
  • step Y22 the writing management unit 20 determines whether or not “SW_color is 2 or more, or the calculated dynamic writing frequency DW_color is at the middle level” is established.
  • step Y22 If “SW_color is 2 or more or the calculated dynamic writing frequency DW_color is at the middle level” in this step Y22, the process proceeds to step Y23, and the writing management unit 20 selects the D area. Do.
  • step Y22 If “SW_color is 2 or more or the calculated dynamic writing frequency DW_color is at the middle level” does not hold in step Y22, the process proceeds to step Y24, and the writing management unit 20 selects the E area. Do.
  • the writing management unit 20 calculates the dynamic writing frequency DW_color of the data based on the coloring information of the data in step Y25.
  • step Y26 the writing management unit 20 refers to the static reading frequency SW_color of the writing target data managed by the coloring table 14. Thereafter, the process proceeds to step Y21.
  • the data write destination area is determined using static color information and dynamic color information
  • the data write destination area is determined using only static color information. You can also. That is, a part of the flowchart of the example of FIG. 19 may be diverted, and the writing destination area of data may be determined based on static color information.
  • the developer of the operating system 27 makes settings as shown in FIGS. 9 and 10 with respect to the implementation of the data reading method of the reading management unit 19 and the data writing method of the writing management unit 20.
  • the first data in the text area of the kernel in which SR_color is set to 5 and SW_color is set to 1 is read many times and written less.
  • the first data is transferred to the volatile semiconductor memory 8 and read / written during the operation of the system based on the read method determination operation shown in FIG. For this reason, the frequency at which the first data is actually written to the nonvolatile semiconductor memories 9 and 10 is low.
  • the write management unit 20 writes the first data in the B region of the nonvolatile semiconductor memory 9 which is SLC.
  • the kernel data area in which SR_color is set to 5 and SW_color is set to 5 is an area newly generated and initialized each time the information processing apparatus 100 is started, so the second data in the kernel data area
  • the data life of is assumed to be short.
  • the write management unit 20 first refers to the data life SL_color of the second data.
  • the second data is always present on the volatile semiconductor memory 8 while the information processing apparatus 100 is in operation, and the power is turned off and the volatile semiconductor memory 8 is erased. Therefore, the second data is not written to the memory areas of the nonvolatile semiconductor memories 9 and 10.
  • the area of the user program in which SR_color is set to 4 and SW_color is set to 1 is read less frequently than a kernel that is called reentrant from all processes.
  • the third data in the area of the user program is written to the memory areas of the nonvolatile semiconductor memories 9 and 10 only when the data is not accessed for a long time by the reading method shown in FIG. Therefore, the frequency at which the third data is written to the nonvolatile semiconductor memories 9 and 10 is low.
  • the third data is less important as compared to the data in the text area of the kernel, so the third data is written to the A area, which is the MLC area in FIG.
  • the fourth data set to have a short data life SL_color is the kernel data area and Similarly, it always exists on the volatile semiconductor memory 8 while the information processing apparatus 100 is in operation.
  • the write management unit 20 first refers to the data life SL_color.
  • the fourth data is always present on the volatile semiconductor memory 8 during system operation, and since the power is turned off and erased from the volatile semiconductor memory 8, the fourth data is written to the memory areas of the nonvolatile semiconductor memories 9 and 10. Absent.
  • the fourth data set to have a long data life SL_color is placed in the memory area of the volatile semiconductor memory 8, but the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 is buried in FULL. In this case, write-back from the volatile semiconductor memory 8 to the memory areas of the nonvolatile semiconductor memories 9 and 10 is performed. Since the text area of the program has high importance of data, the data in the text area of the program is written to the C area which is SLC.
  • the write management unit 20 arranges the fifth data in the memory area of the volatile semiconductor memory 8, but if the memory area of the volatile semiconductor memory 8 of the mixed main memory 2 is full, the fifth Data is to be written back from the volatile semiconductor memory 8 to the memory areas of the nonvolatile semiconductor memories 9 and 10. Since it is determined that the fifth data write frequency is low, the write management unit 20 arranges the fifth data in the MLC area.
  • Files with a SW_color of 3 and a SR_color of 3 are extremely frequently written and predicted by the operating system 27 to be frequently read. Therefore, the writing management unit 20 arranges data in files in which SW_color is set to 3 and SR_color is set to 3 in the SLC area.
  • the write management unit 20 arranges the sixth data in the MLC area.
  • the seventh data included in the file type in which SW_color is set to 1 and SR_color is set to 1 is estimated by the operating system 27 to be extremely low in writing frequency and extremely low in predicted reading frequency.
  • the write management unit 20 arranges the seventh data in the MLC area because it is determined that the seventh data has a low degree of importance as a file.
  • the write management unit 20 determines the physical address of the write destination. In this case, the write management unit 20 refers to the coloring table 14 and appropriately selects the physical address of the write destination, thereby suppressing the occurrence of wear leveling and reducing unnecessary erase processing.
  • data exchange for example, data exchange (exchange) is performed between blocks so that the difference between the number of times of erasure between the block with the largest number of erasures and the block with the smallest number of erasures falls within a predetermined threshold.
  • data exchange exchange
  • the data transfer destination needs to be an unused block, and erasing processing of a block originally storing data occurs.
  • FIG. 20 is a diagram for describing determination processing of a write target block for data.
  • nonvolatile semiconductor memories 9 and 10 data is erased in block units.
  • the erase count EC for each block area of the nonvolatile semiconductor memories 9 and 10 can be obtained by referring to the memory use information 11.
  • a ratio of the number of times of erasure EC to the upper limit value of the number of times of erasure of the block area (the upper limit number of erasable erasures) is defined as a consumption rate.
  • the consumption rate is 100%. When the consumption rate is 100%, data is not written to the block area.
  • the writing management unit 20 refers to the coloring table 14 to write target data with low writing frequency (static writing frequency SW_color, dynamic writing frequency DW_color) (for example, SW_color is 1 and DW_color is “middle”). Write in a block area with high consumption rate (eg, less than 90% consumption rate).
  • the writing management unit 20 refers to the coloring table 14 to write target data (for example, SW_color is 5 and DW_color is “high”) having a high writing frequency (static writing frequency SW_color, dynamic writing frequency DW_color). Write in a block area with a low consumption rate (e.g., less than 10 consumption rates).
  • the block area to which the write target data is to be written is determined based on the coloring information of the write target data and the consumption rate of the block area. As a result, it is possible to select the write target block area that matches the characteristics (write frequency) of the write target data, and to improve the reliability of the data. Also, as described below, it is possible to extend the life of the mixed main memory.
  • FIG. 21 is a graph showing an example of the transition of the number of times of erasing in an arbitrary block area of the nonvolatile semiconductor memories 9 and 10.
  • the vertical axis represents the number of erasures
  • the horizontal axis represents time.
  • the ideal number of erasures in each block area changes with the passage of time.
  • the nonvolatile semiconductor memories 9 and 10 such as NAND flash memory
  • the nonvolatile semiconductor memories 9 and 10 will be degraded in the future, and the nonvolatile semiconductor memories 9 and 10 need to be replaced.
  • FIG. 21 shows the transition of the number of times of erasing in an arbitrary block area of the nonvolatile semiconductor memories 9 and 10. It is preferable that the number of times of erasing of the block area reaches the upper limit of erasable times when the expected life for the block area is reached.
  • FIG. 22 is a graph showing an example of a change when the threshold value for the difference in the number of erasures is set small in wear leveling.
  • the broken line in FIG. 22 indicates the range of variation in the number of times of erasing in each block area. As shown in FIG. 22, by reducing the threshold value, the variation in the number of erases in each block area is reduced, but the number of occurrences of the erase process for wear leveling is increased. As a result, the nonvolatile semiconductor memory 9, The entire life of 10 may be shortened.
  • the write management unit 20 based on the memory use information 11, the memory specific information 12, and the coloring table 14 when writing data in order to reduce the distribution of the number of times of erasure and to suppress the number of occurrences of erasure processing by wear leveling. Select the erase block area.
  • FIG. 23 is a graph showing an example of grouping of block areas according to the number of times of erasing.
  • FIG. 24 is a diagram showing a determination criterion of grouping of block areas according to the number of times of erasing.
  • grouping is performed according to the number of times of erasing for each block area.
  • Information indicating the result of grouping of block areas is stored as memory usage information 11.
  • the information indicating the result of the grouping of the block areas may be stored as the memory specific information 12.
  • the thick lines in FIG. 23 indicate the transition of the minimum number of erasures, and the broken lines indicate the wear leveling threshold. As shown in FIG. 23, each block area is classified into a group of erase numbers within the range (within the range of variation) of the wear leveling threshold.
  • the memory use information management unit 22 determines which group this block area belongs to, based on the judgment table as shown in FIG. The usage information 11 is stored.
  • a value obtained by adding the minimum number of times of erasing among the number of times of erasing of all block areas and a threshold value for determining whether or not to perform wear leveling is used.
  • the intervals are divided by the number of groups.
  • the groups are set as h, g, f, e, d, c, b, a from the bottom of the divided range to the top. Further, in the determination table, the upper limit number of erasures and the lower limit number of erasures for each group are set.
  • FIG. 25 is a diagram showing an example of block area search in wear leveling.
  • the writing management unit 20 determines, based on the information in the coloring table 14, a group serving as a reference for searching the block area of the write target data. For example, when the access frequency of write target data is high, a group with a small number of erases is determined, and when the access frequency of write target data is low, a group with a large number of erases is determined. In the following, it is assumed that the group c is determined for the write target data.
  • write management unit 20 determines block areas belonging to group c of write target data determined based on memory usage information 11. Search for
  • this block area is determined as the write destination of the write target data.
  • the write management unit 20 searches for a block area belonging to the group b in the vicinity of the determined write target data group c. .
  • the block area belonging to the nearby group b is selected as the write destination of the write target data.
  • the search is further performed on another nearby group d for the group c of the write target data until the block area is determined. .
  • the write management unit 20 writes the data, and the address management unit 18 updates the address conversion information 13.
  • the write management unit 20 may determine the write destination address using a search method of another block area. For example, the write management unit 20 manages a writable block area (erased) in a tree structure (B-Tree B + Tree RB-Tree or the like) with the number of erasures as a key and the erasure block area as a node. It is stored in the memory specific information 12 or the memory use information 11. The write management unit 20 searches the tree using the reference number of times of erasure as a key, and extracts the block area having the closest number of times of erasure.
  • the operating system 27 erases the contents of the coloring table 14 for this data.
  • the address management unit 18 erases the physical address corresponding to the logical address of the erasure target data in the address conversion information 13.
  • FIG. 26 is a block diagram showing an example of a memory management apparatus further including a cache memory in the memory management apparatus 1 according to the present embodiment.
  • the processor 3b is described as a representative among the processors 3a, 3b and 3c, the same applies to the other processors 3a and 3c.
  • the memory management device 1 further includes a cache memory 28.
  • the processor 3 b can directly access the cache memory 28 in addition to the primary cache memory 4 b and the secondary cache memory 5 b.
  • the memory management device 28 accesses the mixed main memory 2 when page-in or page-out occurs in any of the primary cache memory 4 b, the secondary cache memory 5 b, and the cache memory 28.
  • FIG. 27A is a block diagram showing a first implementation example of the memory management device 1, the mixed main memory 2, and the processor 3a.
  • FIG. 27A describes the case where the volatile semiconductor memory 8 is a DRAM and the nonvolatile semiconductor memories 9 and 10 are NAND flash memories, but the present invention is not limited to this.
  • the processor 3a includes a memory controller (MMU) 3ma, a primary cache memory 4a, and a secondary cache memory 4b.
  • the memory management device 1 includes a DRAM controller.
  • the processor 3a and the memory management device 1 are formed on the same substrate (for example, SoC).
  • the volatile semiconductor memory 8 is controlled by a DRAM controller provided in the memory management device 1.
  • the nonvolatile semiconductor memories 9 and 10 are controlled by the memory management device 1.
  • the memory module in which the volatile semiconductor memory 8 is mounted and the memory module in which the nonvolatile semiconductor memories 9 and 10 are mounted are separate modules.
  • FIG. 27B is a block diagram showing a first implementation example of the memory management device 1, the mixed main memory 2, and the processor 3a.
  • the volatile semiconductor memory 8 is a DRAM
  • the nonvolatile semiconductor memories 9 and 10 are NAND flash memories.
  • the present invention is not limited to this. The description of the same configuration as that of FIG. 27A will be omitted.
  • the memory management device 1 is electrically connected from the outside to the chip on which the processor 3a is mounted.
  • the volatile semiconductor memory 8 is connected to the memory management device 1.
  • the memory management device 1 includes a DRAM controller (not shown).
  • the dynamic color information management unit 22 of the memory management device 1 manages the number of times of writing DWC_color and the number of times of reading RWC_color for data.
  • the count of the number of times of writing DWC_color and the number of times of reading RWC_color for the data is the memory controllers (MMU) 3ma, 3mb, and 3c provided in the processors 3a, 3b, 3c. It does in 3 mc.
  • MMU memory controllers
  • the memory controller 3ma provided in the processor 3a includes a counter cta that counts the number of times of data writing DWC_color and the number of times of reading DRC_color. Furthermore, the memory controller 3 ma includes count information cia for managing the number of times of data writing DWC_color and the number of times of reading DRC_color.
  • the counter cta counts (increments) the read count DRC_color for the data, and updates the count information cia.
  • the counter cta counts (increments) the number of times of writing DWC_color for the data, and updates the count information cia.
  • the number of times of writing DWC_color for data and the number of times of reading DRC_color, which are managed by the count information cia, are periodically reflected on the number of times of writing DWC_color and number of times of reading DRC_color of the coloring table 14 for the data.
  • the memory management device 1 can count the writing and reading generated by the processor 3a. It may be difficult.
  • the counter cta of the processor 3a since the counter cta of the processor 3a counts writing and reading, it is possible to count the number of readings and writings at a high operating frequency.
  • FIG. 29 is a perspective view showing an example of a plurality of memory management devices for managing a plurality of nonvolatile semiconductor memories.
  • one memory module 30 is formed by one memory management device 1 and a plurality of NAND flash memories 29. In the example of FIG. 29, three memory modules 30 are formed.
  • the plurality of nonvolatile semiconductor memories 29 are, for example, NAND flash memories, and are used as the above-mentioned nonvolatile semiconductor memories 9 and 10.
  • the memory management device 1 manages access to a plurality of nonvolatile semiconductor memories 29 belonging to the same memory module 30.
  • the plurality of memory management devices 1 provided in the plurality of memory modules 30 cooperate with one another to operate as one memory management device.
  • the memory management device 1 of the memory module 30 has an ECC function and a RAID function for a plurality of nonvolatile semiconductor memories 29 in the memory module 30, and performs mirroring and striping.
  • Each nonvolatile semiconductor memory 29 is hot-swappable (replaceable) even while the memory module 30 is energized (in operation).
  • a button 31 is associated with each of the plurality of nonvolatile semiconductor memories 29.
  • the button 31 includes a warning output unit (for example, an LED). For example, if the warning output unit is the first color (green), it indicates a normal state, and if it is a second color (red), it indicates a state requiring replacement.
  • a warning output unit for example, an LED
  • buttons 31 When the button 31 is pressed, a notification is sent to the processes 6a, 6b, 6c and the operating system 27, and the button 31 turns to a third color (blue) when it is safe to remove it without access etc.
  • the nonvolatile semiconductor memory 29 corresponding to the button 31 can be hot-swappable.
  • the button 31 requesting the hot swap is pressed, and when the write back is completed, a lamp indicating that it can be replaced is lighted, and the nonvolatile semiconductor memory 29 is replaced.
  • the processing unit 15 of the memory management device 1 refers to the memory usage information 11 and the memory specific information 12 stored in the information storage unit 17, and the number of times of rewriting or reading of each nonvolatile semiconductor memory 29 is memory specific information. It is determined whether the predetermined percentage of the accessible upper limit number described in 12 has been reached. Then, when the number of times of writing or the number of times of reading has reached a predetermined ratio of the upper limit number of times of writing or the upper limit number of times of reading, the processing unit 15 notifies or warns of memory replacement.
  • preload when the page size or block size of the nonvolatile semiconductor memory 29 is large, preload is effective.
  • the processing unit 15 of the memory management device 1 refers to coloring information corresponding to data stored in the non-volatile semiconductor memory 29, and pre-reads data that is likely to be accessed frequently. It is preloaded in the cache memory 28.
  • the processing unit 15 preloads data having periodicity, which is likely to be accessed in a predetermined time, before the predetermined time.
  • the arrangement of data is determined based on the durability of each memory of the mixed main memory 2, and the life of the mixed main memory 2 can be extended. Also, high speed access to the mixed main memory 2 can be realized.
  • Swap can be eliminated by using the memory management device 1 and the mixed main memory 2 according to the present embodiment.
  • the nonvolatile semiconductor memories 9 and 10 are used as a main memory. Thereby, the storage capacity of the main memory can be increased, and it is not necessary to use a secondary storage device using a hard disk or a solid state disk (SSD).
  • SSD solid state disk
  • the speed of instant-on can be increased.
  • the Neumann-type architecture which is a basic type of computer architecture, has a problem called von Neumann bottleneck caused by the difference between the CPU frequency and the main memory speed.
  • von Neumann bottleneck caused by the difference between the CPU frequency and the main memory speed.
  • SRAM high-speed cache memory
  • the non-volatile memory when used as the main memory, a memory management device capable of improving the hit rate of the cache memory will be described.
  • the nonvolatile semiconductor memories 9 and 10 are used as a main memory, and a part of the volatile semiconductor main memory 8 is used as a cache memory.
  • a volatile semiconductor memory 8 used as a cache memory will be described.
  • FIG. 30 shows a physical address space of volatile semiconductor memory (hereinafter, also simply referred to as cache memory) 8.
  • the physical address space of the cache memory 8 is divided into a plurality of areas L0 to L5. Each area does not have to be continuous on the physical address space. For example, the physical address space is set larger as the size of each area is higher. Furthermore, in the upper area, the area can be expanded to the adjacent lower area. The maximum expansion size of each area is managed by the area limit ELM.
  • data with low writing priority is arranged in the upper area, and data with high writing priority is arranged in the lower area.
  • the process of this arrangement is performed, for example, by the write management unit 20 of FIG.
  • the write priority is determined using coloring information. “Writing” means moving of data from the volatile semiconductor memory 8 to the nonvolatile semiconductor memories 9 and 10.
  • the cache memory 8 has a cache header CHD.
  • the cache header CHD stores management information of each area. That is, the area limit ELM of each area, the free cache line list FCL, and the area cache line list ECL are stored in the cache header CHD.
  • the free cache line list FCL is a data structure for managing the free space of the cache memory 8 and stores a plurality of nodes as management information corresponding to cache lines not belonging to any area.
  • the area cache line list ECL is a data structure that manages the used area of the cache memory 8 and stores the nodes acquired from the free cache line list FCL for each area.
  • the contents of the cache header CHD are initialized by reading from the non-volatile semiconductor memory when the information processing apparatus 100 is started. Further, when the information processing apparatus 100 ends, the contents of the cache header CHD are saved in the non-volatile semiconductor memory area.
  • the information processing apparatus 100 When the information processing apparatus 100 is activated (cold boot), the content set by the operation system is recorded in the cache header CHD, and basic information of each area is generated.
  • the area limit ELM can be set by the user according to the usage pattern of his or her system, and an interface may be provided to enable this.
  • the data to be written to the mixed main memory 2 has coloring information as hint information for determining an arrangement (writing) area on the mixed main memory 2. Therefore, by controlling the writing of data to each area of the cache memory 8 using this coloring information, it is possible to improve the cache hit rate. As a result, the frequency of reading into the nonvolatile semiconductor memories 9 and 10 can be reduced, and the nonvolatile semiconductor memories 9 and 10 can be protected.
  • FIGS. 32 (a) and (b) are tables (CET) showing the correspondence between the coloring information of the coloring table 14 and the areas of the cache memory 8 shown in FIG. An example is shown.
  • FIG. 31A gives priority to the read access, and can improve the read hit rate.
  • FIG. 31A shows the correspondence between data life SL_color as coloring information, static reading frequency information SR_color, dynamic reading frequency DR_color, and the area of volatile semiconductor memory 8. .
  • the higher the value of the static reading frequency information SR_color and the higher the reading frequency the higher the area of the volatile semiconductor memory 8 is placed. That is, when priority is given to read access, static read frequency information SR_color and dynamic read frequency DR_color are referenced, and static read frequency information SR_color and dynamic read frequency DW_color are arranged in the upper area having a large area size. . Since the upper area has a large area size, data in this area is likely to be held for a long time. Therefore, it is possible to improve the cache hit rate of read access.
  • data whose data life is "S" is arranged in the area L5 regardless of other coloring information. For example, since the lifetime of data is short, it is less necessary to write data in the middle of calculation to the nonvolatile semiconductor memories 9 and 10. However, there are many such data. Therefore, such data is arranged in the cache memory 8 in the largest area L5.
  • FIG. 31B gives priority to the write access, and can improve the write hit rate.
  • FIG. 31 (b) shows the correspondence between the data life SL_color as coloring information, the static writing frequency information SW_color, the dynamic writing frequency information DW_color, and the area of the volatile semiconductor memory 8. There is. That is, when priority is given to write access, static writing frequency information SW_color and dynamic writing frequency DW_color are referenced, and static writing frequency information SR_color and dynamic writing frequency SW_color are arranged in the upper area having a large area size. . This makes it possible to improve the cache hit rate of write access.
  • FIG. 32A considers both the read frequency and the write frequency, and the hit rate can be improved if at least one of the read frequency and the write frequency is high. Specifically, the relationship between the data life SL_color as coloring information, the sum of the value of static read frequency information SR_color and the value of static write frequency information SW_color, and the area of volatile semiconductor memory 8 is shown. .
  • FIG. 32 (b) is a modification of FIG. 32 (a), in which the reading frequency and the writing frequency are weighted, and weights are arbitrarily set for the reading frequency and the writing frequency to enable improvement of the hit rate. It is. Unlike FIG. 32A, the area of the volatile semiconductor memory 8 is associated with the value of SR_color * W + SW_color * (1-W).
  • FIGS. 32 (a) and 32 (b) data having a data life of "S" is arranged in the area L5, as in FIGS. 31 (a) and 31 (b).
  • One of the tables CET indicating the relationship between coloring information and areas shown in FIGS. 31 (a) and (b) and 32 (a) and (b) is stored in, for example, the information storage unit 17.
  • the relationship between the coloring information and the area is not limited to the examples shown in FIGS. 31 (a) and (b) and FIGS. 32 (a) and (b), but may change according to the user's request. is there. Therefore, the area of the cache memory 8 is set to be extensible as described above so as to have extensibility.
  • FIG. 33 shows an example of the free cache line list FCL and the area cache line list ECL stored in the cache header CHD of the cache memory 8.
  • the free cache line list FCL has a data structure indicating an empty area of the cache memory 8 and is configured of a plurality of nodes ND corresponding to cache lines. Each node ND is configured by the physical address of the cache line, the belonging area, and the update flag.
  • the cache line corresponds to the page size (I / O size) of the nonvolatile semiconductor memories 9 and 10.
  • Each node ND stores the physical address of the cache line.
  • the affiliation area is one of the areas L0 to L5 set in the cache memory.
  • the update flag is a flag indicating whether update or the like has occurred in the data of the cache line.
  • the update flag is "0" it indicates that the data is erased or the data is written to the volatile semiconductor memory 8 and the written data is not updated.
  • the update flag is “1”
  • the data of the cache line is updated, which indicates that the update of this data is not reflected in the nonvolatile semiconductor memories 9 and 10.
  • the update flag is controlled by, for example, the processing unit 15.
  • processing unit 15 sets the corresponding update flag to "0", and when the written data is updated in cache memory 8, updating is performed. Set the flag to "1". Further, when the data in the cache memory 8 is erased, the processing unit 15 sets the corresponding update flag to “0”, and further reflects the data update in the cache memory 8 in the nonvolatile semiconductor memories 9 and 10 In this case, the corresponding update flag is set to "0".
  • the update flag may not be disposed at each node, and may refer to, for example, the contents of a field indicating a dirty bit stored in the information processing unit 17.
  • the area cache line list ECL is a data structure for managing the use area of the cache memory 8 and stores nodes corresponding to cache lines included in each area. That is, when the data read from the non-volatile semiconductor memories 9 and 10 is written to the cache memory 8, the affiliation area of each node of the free cache line list FCL is searched based on the coloring information attached to the data, If there is, the node is obtained and placed in the corresponding area of the area cache line list ECL. For example, when the write data is data to be written to the area L5, each node of the free cache line list FCL is searched, and one node in the lower area L4 to L0 as the area L5 or the extension area is acquired. The acquired node is connected to the area cache line list ECL corresponding to the area L5.
  • data is written to the cache memory 8 according to the acquired cache line physical address of the node. Further, the update flag of the node ND is set to "0".
  • the area cache line list ECL is managed based on an algorithm such as FIFO (First-in / First-out) or LRU (Least Recently Used). Therefore, for example, when nodes are acquired from the free cache line list FCL corresponding to each area, the acquired nodes are sorted based on the set algorithm.
  • FIFO First-in / First-out
  • LRU Least Recently Used
  • a cache line corresponding to a node located at the top of the area cache line list ECL is always a write target of the area.
  • the number of nodes arranged corresponding to each area is managed by the area limit ELM, and the length of the list of each area is managed not to exceed the area limit ELM. .
  • management by software processing using a cache header has been described as a cache area management method, but hardware management using a configuration in which cache lines are managed by cache tags may be used. .
  • FIG. 34 shows, for example, a process of writing data by the processing unit 15. That is, FIG. 34 shows the flow of processing when it is determined that data is newly read from the nonvolatile semiconductor memories 9 and 10 and arranged in the cache memory 8. In this embodiment, since the size of each area is variable, the process until data writing differs depending on whether the area can be expanded.
  • step S31 the data arrangement area of the cache memory 8 is determined (step S31). That is, based on the correspondence shown in FIGS. 31 (a) and (b) and FIGS. 32 (a) and 32 (b), it is determined in which area of the cache memory 8 the read data is to be arranged.
  • the table CET shown in FIG. 31 (a) is referred to.
  • the coloring information attached to the data when the data life is “L”, the value of the static reading frequency information SR_color is “1”, and the reading frequency is “high”, this data is placed in the area L0 Be done. Further, in the coloring information attached to the data, when the data life is “L”, the value of SR_color is “4” and the reading frequency is “high”, this data is arranged in the area L4.
  • step S32 it is determined whether the area can be expanded. For example, the current size of the area can be recognized from the number of nodes in the area cache line list. Therefore, the current size is compared with the value of the area limit ELM described in the cache header CHD. As a result, if the current size is smaller than the value of the area limit ELM, it is determined that the area is expandable.
  • step S33 it is determined whether there is a node ND corresponding to the area in the free cache line list FCL (step S33). That is, the area to which the node belongs in the free cache line list FCL is searched, and it is determined whether the corresponding area exists. In this case, if the data is data to be written to the area L4, the area L4 can be expanded to a part of the area L3, so the area L4 and the area L3 are searched.
  • the physical address of the cache line is acquired from the acquired node ND, and data read from the nonvolatile semiconductor memories 9 and 10 is written to the cache memory 8 based on the physical address (step S35).
  • the cache header CHD is updated (step S36). That is, the node ND acquired from the free cache line list FCL is moved to the area cache line list ECL, and the update flag is set to data "0".
  • step S37 the address conversion table is updated (step S37). That is, the physical addresses of the nonvolatile semiconductor memories 9 and 10 corresponding to the data written to the cache memory 8 are written to the address conversion table.
  • step S33 when it is determined in step S33 that there is no node ND corresponding to the free cache line list FCL, the area cache line list ECL is searched from the lowest area (step S38). That is, in order to generate a new node ND, it is necessary to transfer any data in the cache memory 8 to the non-volatile semiconductor memories 9 and 10 to generate a free area. Therefore, all areas from the lowest area L0 to the area L5 of the area cache line list ECL shown in FIG. 33 are searched.
  • the area L4 can be expanded to a part of the lower area. Therefore, the node ND in the lower area of the area cache line list ECL is obtained.
  • step S39 it is determined whether the node ND can be acquired.
  • the physical address of the cache line is acquired from the acquired node ND, and the data in the cache memory 8 is written to the non-volatile semiconductor memories 9 and 10 based on the physical address Step S40).
  • the cache header CHD is updated (step S41). That is, the data corresponding to the node ND of the area cache line list ECL is written to the nonvolatile semiconductor memories 9 and 10, whereby the free node ND is generated. This node ND is moved to the free cache line list FCL, and the update flag is set to data "0".
  • control is transferred to the step S33.
  • this node since there is a free node ND in the free cache line list FCL, this node is acquired, and data is written to the physical address designated by this node (steps S33 to S35).
  • the cache header CHD and the address conversion table are updated (steps S36 and S37).
  • step S32 If it is determined in step S32 that expansion of the area is difficult, the node ND in that area of the area cache line list ELC is searched, and the head node ND is acquired (step S42).
  • the acquired node ND is a node in a low priority area.
  • step S40 the physical address of the cache line is acquired from the acquired node, and the data of the volatile semiconductor memory 8 is written to the nonvolatile semiconductor memories 9 and 10 based on the physical address, as in the operation described above (step S40). ). Thereafter, the cache header is updated (step S41).
  • the cache memory 8 can not be used, and data is written to the nonvolatile semiconductor memories 9 and 10 (see FIG. Step S43). Thereafter, the address conversion table is updated (step S37).
  • FIG. 35 shows an example of the erase operation of the cache memory 8.
  • the cache memory 8 is erasable by software.
  • step S51 when an erase request for data stored in cache memory 8 is issued (step S51), the update flag of each node ND is searched and not updated in nonvolatile semiconductor memories 9 and 10. Data is detected (step S52). That is, for example, a node in which the update flag of the area cache line list ECL is data "1" is detected. As a result, when there is no update flag that is data "1", the process is ended.
  • step S53 If there is an update flag of data "1", data in the cache memory 8 is written to the nonvolatile semiconductor memories 9, 10 based on the physical address of the cache line of the node ND (step S53).
  • step S54 the cache header CHD is updated (step S54). That is, the nodes of the area cache line list ECL are migrated to the free cache line list FCL, and the update flag is set to data "0". Subsequently, control is transferred to step S52. Such an operation is repeated until the update flag of data "1" disappears.
  • data of high importance is stored in the upper area of the volatile semiconductor memory 8 based on the relationship between the coloring information added to the data and the area of the cache memory 8. . Therefore, it is possible to improve the hit rate of the cache memory 8.
  • the hit rate of the cache memory 8 is high, the number of accesses to the nonvolatile semiconductor memories 9 and 10 can be reduced, and the nonvolatile semiconductor memories 9 and 10 can be protected.
  • the upper area since the upper area has the extension area, data can be written until the extension area is full. In the case where the area is small, data that is not accessed for a while, although it has high importance, is likely to be written back from the cache memory 8 based on, for example, the LRU algorithm. However, by making the upper area extendable to the lower area and securing a wide area including the extended area, it is possible to leave data with few accesses in the cache memory. Therefore, it is possible to improve the hit rate of the cache memory 8.
  • the cache memory 8 is divided into areas L0 to L5 for each piece of coloring information. For example, when the area L5 as the upper area stores data of a prescribed size or more, the area can be expanded to a part of the lower area L4. Further, when data is written to the extension area and the area can not be extended, data of the cache memory 8 is written back to the nonvolatile semiconductor memories 9 and 10 based on an algorithm such as FIFO or LRU. Since the lowest area L0 has no extension area, when the area is full, write back is performed based on an algorithm such as FIFO or LRU. Therefore, data with high write frequency can be stored in the cache memory 8 for a long time. Therefore, it is possible to protect the non-volatile semiconductor memories 9 and 10 having a limited number of erases.
  • the present embodiment is a modification of the first embodiment.
  • the present embodiment relates to an example in which the number of accesses to the nonvolatile semiconductor memory (NAND type flash memory) 9 and 10 can be reduced, and the memory life can be extended.
  • the detailed description of the parts overlapping with the first embodiment is omitted.
  • the initial value of the flag is "0".
  • the flag “0 (invalid)” indicates that the corresponding logical address is not mapped to the non-volatile semiconductor memory 9 or 10, or is mapped but has become an erase target.
  • the flag “1 (valid)” indicates that the corresponding logical address is mapped to at least one of the non-volatile semiconductor memories 9 and 10.
  • the flag “0 (invalid)” is all the data in the block when all the pages in the block on the nonvolatile semiconductor memory (NAND) 9, 10 become the flag “0 (invalid)”. Can be erased. If there is a page having at least one flag "0 (valid)" in the block, the block can not be erased yet.
  • step S001 the operating system OS of the processor 3a (corresponding to the operating system 27 of the first embodiment) is a memory release request (argument: logical address) of the volatile semiconductor memory 8 Is sent to the memory management device 1.
  • the memory management device 1 having received the memory release request refers to the address conversion information (address conversion table) 13, and the volatile semiconductor memory 8 corresponding to the logical address of the argument of the memory release request.
  • the above physical address has an indeterminate value, and the valid / invalid bit of the non-volatile semiconductor memory 9, 10 is checked to find that the corresponding data is on the volatile semiconductor memory 8 or on the non-volatile semiconductor memory 9, 10. Check if it is. That is, when the valid / invalid bit of the non-volatile semiconductor memory 9 or 10 in the address conversion information 13 is “0”, the memory management device 1 receives the logical address of the argument on the non-volatile semiconductor memory 9 or 10.
  • the memory management device 1 refers to the physical address of the volatile semiconductor memory 8 and the physical address of the nonvolatile semiconductor memories 9 and 10 when the valid / invalid bit of the nonvolatile semiconductor memories 9 and 10 is “1”. Then, the presence or absence of the data on the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10 is confirmed, and the following control is performed.
  • Case 1 (The data exists on DARAM 8 and NAND 9 and 10) (S003) Subsequently, at the time of step S003, when the data is present in both of the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10, the memory management device 1 requests the volatile semiconductor memory 8 to release the data.
  • the data of the physical address on the volatile semiconductor memory 8 corresponding to the existing logical address is erased to form an explicit empty area, and the dirty bit of the volatile semiconductor memory 8 is set to "0".
  • the dirty bit of the volatile semiconductor memory 8 is a bit indicating that the data on the volatile semiconductor memory 8 has been rewritten, and exists, for example, in the header area of the volatile semiconductor memory 8 or the like.
  • step S 004 the memory management device 1 sends the non-volatile semiconductor memory 9 or 10 a valid / invalid bit of the physical address on the non-volatile semiconductor memory 9 or 10 corresponding to the logical address requested to be released. Is invalidated as “0”, and is to be erased. At this time, strictly speaking, the data erase operation is not actually performed on the nonvolatile semiconductor memories (NAND) 9 and 10, and only the effective bit is dropped as the erase target.
  • NAND nonvolatile semiconductor memories
  • the non-volatile semiconductor memory (DRAM) 8 is provided with a vacant area to reduce the number of accesses to the non-volatile semiconductor memory (NAND) 9 and 10.
  • NAND non-volatile semiconductor memory If there is no designated data only on 9, 10 (if it is not cached), it need not be considered. If data corresponding to the logical address requested to be released is not on the volatile semiconductor memory 8 but only on the nonvolatile semiconductor memories 9 and 10, the valid / invalid bit is set to “0” (invalidation Only).
  • the memory management device 1 releases the mixed main memory 2 including the volatile semiconductor memory (first memory) 8 and the nonvolatile semiconductor memories (second memory) 9 and 10.
  • the logical address specifying the position is received from the processor 3, and the specified logical address with reference to the address conversion information 13, the physical address of the volatile semiconductor memory (first memory) 8, and the non-volatile semiconductor memory (second memory) )
  • FIG. 39 is a diagram for illustrating the formation of an explicit free area of the volatile semiconductor memory at the time of the release request of the memory in FIG.
  • an explicit free space FS0 erased is formed at the physical address xh corresponding to the logical address specified by the memory release request. be able to.
  • the amount of data in the volatile semiconductor memory 8 can be reduced, so the number of accesses to the nonvolatile semiconductor memories 9 and 10 can be reduced, and the memory life of the nonvolatile semiconductor memories 9 and 10 can be extended. It is advantageous in that it can be done.
  • step S011 the application App in the processor 3a transmits a memory acquisition request to the operating system OS.
  • step S012 the operating system OS secures part of the free (arbitrary) logical address.
  • the secured logical address is not mapped to the physical address on the volatile semiconductor memory or nonvolatile semiconductor memory, and is mapped only when a write request comes in the future.
  • a memory area based on coloring information can be secured before data reading and data writing described below. Therefore, it is advantageous in that the memory life of the nonvolatile semiconductor memories 9 and 10 can be extended.
  • step S013 the application App requests the operating system OS to read data.
  • step S014 the operating system OS requests the memory management device 1 to read data.
  • the memory management device 1 refers to the address conversion information 13 and searches for an entry corresponding to the logical address for which the data read (read) request has been made.
  • the data at the physical address on the volatile semiconductor memory 8 or the nonvolatile semiconductor memories 9 and 10 corresponding to the logical address for which the data read request has been made is returned.
  • the physical address has not been mapped yet, and the physical address contains an undefined value, data cleared to zero is returned instead.
  • step S015 the application App requests the operating system OS to write data.
  • step S016 the operating system OS requests the memory management device 1 to write data.
  • the memory management device 1 refers to the address conversion information 13 and enters the mapping result (physical address on volatile semiconductor memory or nonvolatile semiconductor memory) for the secured logical address.
  • the mapping result physical address on volatile semiconductor memory or nonvolatile semiconductor memory
  • the valid / invalid bit indicating the presence or absence of data on the nonvolatile semiconductor memories 9 and 10 is set to “1” to be validated. Details will be described later along the flow shown in FIG.
  • step S201 the application App of the processor 3a makes a read request to the operating system OS, and the operating system OS designates a logical address to the memory management device 1 to read memory data. Request.
  • step S202 the memory management device 1 having received the above-mentioned memory data read request refers to the address conversion information (table) 13, and the volatile semiconductor memory 8 has data corresponding to the logical address. It is determined whether or not.
  • step S203 when it is determined in the determination in step S202 that there is data corresponding to the logical address on the volatile semiconductor memory 8 (Yes), the operating system OS is executed by the memory management device 1 The data in the physical address of the volatile semiconductor memory 8 corresponding to the logical address is read, and this operation is ended (End).
  • step S204 when it is determined in the determination in step S202 that there is no data corresponding to the logical address on the volatile semiconductor memory 8 (No), the memory management device 1 receives the address conversion information (table 13) again to determine whether or not there is data corresponding to the logical address on the nonvolatile semiconductor memories 9 and 10.
  • step S205 when it is determined in the determination in step S204 that there is an address corresponding to the non-volatile semiconductor memories 9 and 10 (Yes), the operating system OS causes the memory management device 1 to The data stored in the nonvolatile semiconductor memories 9 and 10 corresponding to the logical address is read out.
  • step S206 the operating system OS causes the memory management device 1 to write the data read from the nonvolatile semiconductor memories 9 and 10 at the time of step S205 onto the volatile semiconductor memory 8. .
  • step S207 the memory management device 1 sets the physical address of the volatile semiconductor memory 8 of the relevant entry of the address conversion information 13, and sets the valid / invalid bit in the address conversion information 13 to "1". Set the dirty bit to "0" and end (End).
  • step S208 when it is determined that there is no address corresponding to the non-volatile semiconductor memories 9 and 10 in the determination in step S204 (No), the operating system OS causes the memory management device 1 to be cleared to zero.
  • the transmitted data is transmitted to the processor 3a side, and the process ends (End).
  • the above-mentioned "send zero-cleared data to the processor 3a side" means that if data actually exists in at least one of volatile and non-volatile semiconductor memory, the physical corresponding to the logical address Send the contents of the data in the address. However, in this case, it has not yet been mapped, and there is no corresponding data, so in practice it is to return a place to send the contents of the data, instead filled with zeros for size as data.
  • the zero-cleared data may be written on the volatile semiconductor memory 8.
  • step S301 the application App of the processor 3a requests write to the operating system OS, and the operating system OS specifies a logical address to the memory management device 1 and writes memory data. Request.
  • step S302 the memory management device 1 having received the memory data write request refers to the address conversion information (table) 13, and the volatile semiconductor memory 8 has data corresponding to the logical address. It is determined whether or not.
  • step S303 when it is determined in the determination in step S302 that there is data corresponding to the logical address on the volatile semiconductor memory 8 (Yes), the operating system OS is executed by the memory management device 1 The data is written to the physical address on the volatile semiconductor memory 8 corresponding to the logical address.
  • step S304 the memory management device 1 refers to the address conversion information 13 and sets the dirty bit of the entry of the volatile semiconductor memory 8 corresponding to the address to “1” (End).
  • step S305 when it is determined in the determination in step S302 that there is no data corresponding to the logical address on the volatile semiconductor memory 8 (No), the memory management device 1 receives the address conversion information 13 With reference again to FIG. 6, it is determined whether or not there is data corresponding to the logical address on the nonvolatile semiconductor memories 9 and 10.
  • step S306 when it is determined in the determination in step S305 that there is data corresponding to the logical address in the nonvolatile semiconductor memories 9 and 10 (Yes), the operating system OS is the memory management device 1 Thus, the data at the physical address on the nonvolatile semiconductor memories 9 and 10 corresponding to the logical address is read out.
  • step S307 when it is determined in the determination in step S305 that there is no data corresponding to the logical address on the nonvolatile semiconductor memories 9 and 10 (No), the operating system OS is a memory management device. The data whose 1 is cleared to zero is transmitted to the processor 3a side, and the process proceeds to the next step S308.
  • step S308 the memory management device 1 writes the data read from the non-volatile semiconductor memory or the data that is zero-cleared on the volatile semiconductor memory 8.
  • step S309 the memory management device 1 sets the physical address of the volatile semiconductor memory 8 of the relevant entry of the address conversion information (table) 13, and sets the valid / invalid bit in the address conversion information 13 "1. "Dirty bit is set to" 0 ".
  • step S310 the memory management device 1 writes the updated data on the volatile semiconductor memory 8, and ends this operation (End).
  • step S012 the memory management device 1 according to this example secures a part of the free logical address when the operation system OS receives the memory acquisition request from the application. Thereafter, when a write request occurs, the appropriate memory area of volatile semiconductor memory 8 or nonvolatile semiconductor memories 9 and 10 is secured according to coloring information accompanying the number of times of logical address writing or the like. .
  • the memory management device 1 since the memory management device 1 according to this example explicitly creates an empty area on the volatile semiconductor memory 8, data on the volatile semiconductor memory 8 to be written out to the nonvolatile semiconductor memories 9 and 10 decreases. It is possible to reduce the number of accesses to the nonvolatile semiconductor memory including the NAND flash memory whose access count is limited.
  • the volatile semiconductor memory 8 as a cache memory and the nonvolatile semiconductor memories 9 and 10 are described as being managed by a common address conversion table as shown in FIG. 4, but the present invention is not limited thereto.
  • the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10 may be managed separately.
  • the volatile semiconductor memory 8 may be managed by a cache tag (table). Further, the cache tag may not necessarily include coloring information.
  • Fourth Embodiment NAND flash memory is generally used as a secondary storage device.
  • most of the data stored in the NAND flash memory has a data size equal to or larger than the physical block size. Therefore, when a NAND flash memory is used as a secondary storage device, it is rare that one block area contains a plurality of data with different erase frequencies.
  • the size of the data read from the NAND flash memory and the size of the data written to the NAND flash memory are the same as those of the NAND flash memory. It is estimated that the size is often smaller than the physical block size.
  • the present embodiment is a modification of the first embodiment, and classifies a plurality of write target data into a plurality of groups (color groups) based on coloring information, and a plurality of write target data belonging to the same group.
  • groups color groups
  • the memory management device 1 that configures data of block size will be described.
  • coloring information for example, at least one of static color information and dynamic color information described in the first embodiment may be employed.
  • static color information for example, at least one of "importance”, “read frequency, write frequency”, and “data life” may be adopted.
  • dynamic color information for example, at least one of the number of times of reading and writing of data and the frequency of reading and writing of data may be adopted.
  • nonvolatile semiconductor memories 9 and 10 are NAND flash memories
  • the type of nonvolatile semiconductor memories 9 and 10 is not limited to this.
  • the overwrite method will be briefly described.
  • the overwrite method is one of the write methods of a memory system using a NAND flash memory.
  • NAND type flash memory writing can not be performed again to the page once written after erasing the entire block including the page. In other words, in the NAND flash memory, overwriting can not be performed on the same physical address (physical address of the NAND flash memory, hereinafter, NAND physical address) after erasing.
  • NAND physical address physical address of the NAND flash memory
  • the correspondence between the logical address (the logical address of the NAND flash memory, hereinafter, NAND logical address) and the NAND physical address is managed by the logical-physical conversion table, and these relations are dynamically changed. It can be done.
  • a memory system including a NAND flash memory behaves in such a manner that an upper layer can overwrite an arbitrary logical address when adopting the overwrite method.
  • the logical-physical conversion table of the NAND flash memory In the logical-physical conversion table of the NAND flash memory, the correspondence between the NAND logical address (hereinafter referred to as NLBA) in block units and the NAND physical address (hereinafter referred to as NPBA) in block units is managed. Since the logical-physical conversion table of the NAND flash memory is managed in block units, the size of the block or less, for example, even if only one page of data is updated, the entire block including that data It is necessary to delete the data.
  • NLBA NAND logical address
  • NPBA NAND physical address
  • a new NPBA is assigned to the NLBA.
  • the updated data is written to the area corresponding to the new NPBA, and at this time, the non-updated data stored in the old NPBA is copied to the area corresponding to the new NPBA (winding movement).
  • a plurality of NPBAs may be allocated for data exchange to one NLBA, and data exchange associated with updating may be performed among them.
  • write target data is divided into groups based on, for example, static write frequency SW_color as coloring information
  • data to be written is grouped based on other coloring information, for example, various criteria such as static reading frequency SR_color, dynamic writing frequency DW_color, dynamic reading frequency DW_color, and a combination of a plurality of criteria. It may be done.
  • the management size for grouping a plurality of write target data is smaller than the block size of the NAND flash memory.
  • a page equal to the management unit of the coloring table 14 is used as one unit of management size.
  • FIG. 43 is a block diagram showing an example of the main part of the functional configuration of the memory management device 1 according to the present embodiment.
  • the coloring information management unit 21 includes a group value calculation unit 201 and a reservation list management unit 202 in addition to the access frequency calculation unit 24 and the dynamic color information management unit 25 described with reference to FIG.
  • the memory management device 1 further includes a writing management unit 20, a coloring table 14 stored in the information storage unit 17, and a reservation list 32 stored in the work memory 16.
  • the other functional blocks included in the memory management device 1 are the same as those described with reference to FIG.
  • the group value calculation unit 201 refers to the coloring table 14 and calculates a color group value based on the static writing frequency SW_color of the write target data.
  • the color group value is a value indicating which color group the data to be written belongs to among the color groups determined according to the static writing frequency SW_color.
  • the color group value is calculated based on the coloring information of the coloring table 14, and indicates the grouping result of the writing target data.
  • the group value calculation unit 201 calculates color group values using coloring information for each data as an input value, but this calculation method can be variously changed.
  • the group value calculation unit 201 may use the static writing frequency SW_color or the dynamic writing frequency DW_color of the data as the color group value as it is.
  • the group value calculation unit 201 performs grouping so that the number of color groups is not too large. Further, for example, the group value calculation unit 201 may calculate the color group value based on at least one of the static writing frequency SW_color and the dynamic writing frequency DW_color of the data.
  • the reservation list management unit 202 manages a reservation list 32 indicating the reservation state of write target data for blocks allocated to each color group.
  • a reservation list 32 indicating the reservation state of write target data for blocks allocated to each color group.
  • the reservation list 32 is stored in the work memory 16, it may be stored in another storage unit such as the information storage unit 17, for example. Details of the reservation list management unit 202 and the reservation list 32 will be described later.
  • the write management unit 20 refers to the reservation list 32 and writes data of a block size obtained by putting together a plurality of write target data assigned to the reservation node into the block corresponding to the reservation node in the nonvolatile semiconductor memories 9 and 10 .
  • FIG. 44 is a diagram illustrating an example of a data configuration of block sizes when the write target data is not classified by the coloring information.
  • the erase frequency of the block is proportional to the data with the highest access frequency (for example, static write frequency SW_color) among the data in the block.
  • FIG. 45 is a diagram showing an example of the data configuration of the block size in the case where write target data is classified by coloring information.
  • coloring information can be obtained based on the coloring table 14
  • writing targets according to access frequency (for example, static writing frequency SW_color) Data can be grouped.
  • the group value calculation unit 201 classifies write target data smaller than the block size of the NAND flash memory into color groups having similar access frequencies based on the coloring table 14.
  • the reservation list management unit 202 collects write target data belonging to the same color group by the block size and packages the data into blocks.
  • FIG. 46 is a view showing an example of the relationship between the address conversion information 13 according to this embodiment and the physical address space of the nonvolatile semiconductor memories 9 and 10, that is, the NAND logical address.
  • the address conversion information 13 has items of a logical address, a physical address of the volatile semiconductor memory 8, a physical address (NAND logical address) of the nonvolatile semiconductor memories 9 and 10, and a valid / invalid flag.
  • the physical address of the volatile semiconductor memory 8 is stored in association with the logical address of the data.
  • the valid / invalid flag is a flag indicating whether each entry is valid.
  • the write target data D1 of the color group G2 is stored in the nonvolatile semiconductor memories 9 and 10.
  • physical address (NAND logical address) areas of the nonvolatile semiconductor memories 9 and 10 for the color group G2 are reserved for one block.
  • the write target data D2 of the color group G4 is stored in the nonvolatile semiconductor memories 9 and 10.
  • physical address areas for one block in the nonvolatile semiconductor memories 9 and 10 are reserved for the color group G4.
  • the address conversion information 13 stores the logical address of the write target data D2, the physical address Q1 of any of the physical address areas reserved for the color group G4, and the valid / invalid flag 1 indicating validity. .
  • write target data D3 belonging to the same color group G2 as write target data D1 previously stored in the physical address space of nonvolatile semiconductor memories 9 and 10 is stored in nonvolatile semiconductor memories 9 and 10.
  • the address conversion information 13 stores the logical address of the write target data D3, another physical address P2 in the physical address area reserved for the color group G2, and a valid / invalid flag 1 indicating validity. .
  • FIG. 47 is a diagram showing an example of the logical-physical conversion table (NAND logical-physical conversion table) 13 a of the nonvolatile semiconductor memories 9 and 10.
  • the NAND logical-physical conversion table 13a is stored, for example, in the information storage unit 17.
  • the NAND logical-physical conversion table 13a shows the correspondence between the NAND logical block address NLBA and the NAND physical block address NPBA.
  • NPBA2 is assigned to NLBA0
  • NPBA1 is assigned to NLBA1
  • NPBA0 is assigned to NLBA2.
  • NLBA 0 corresponds to physical addresses P 1, P 2... P n of the nonvolatile semiconductor memories 9 and 10.
  • FIG. 48 is a data structure diagram showing an example of the reservation list 32. As shown in FIG.
  • the reservation list 32 manages reservation nodes 321 to 326 representing physical address areas in units of reserved block areas.
  • the reservation list 32 is a management area structure for preventing the frequently accessed data and the poorly accessed data from being included in the same block.
  • the reservation nodes are managed in a list structure, for example, to flexibly cope with the increase and decrease of the number.
  • Each reservation node 321 to 326 includes a color group value assigned to each reservation node, a reservation physical address (reservation NAND logical address), and a free area size.
  • the reserved physical address is a physical address (NAND logical address) which is unused and next places data in the physical address (NAND logical address) area assigned to the reserved node.
  • the free area size indicates the size of an unused area of the physical address (NAND logical address) area allocated to the reservation node.
  • the reservation list management unit 202 scans the reservation list 32. Next, the reservation list management unit 202 searches for reservation nodes having the same color group value as the color group value of the new data, and the free space size being larger than the size of the new data.
  • the reservation physical address of the retrieved reservation node is used as the physical address of the new data.
  • the reservation list management unit 202 selects an unused address area from the physical address area allocated to the retrieved reservation node, and updates the reserved physical address of the retrieved reservation node. Also, the reservation list management unit 202 reduces the size of the new data from the free space size, and updates the free space size of the retrieved reserved node.
  • the reservation list management unit 202 secures a new physical address area of block size and adds a new reservation node to the reservation list 32.
  • the reservation list management unit 202 sets the color group value of the new data as the color group value of the new reservation node, and uses the unused physical address of the newly secured physical address area as the reservation physical address of the new reservation node. Set and set the size of the free area of the newly secured physical address area in the free area size of the new reservation node.
  • FIG. 49 is a flowchart showing an example of processing of the group value calculation unit 201 and the reservation list management unit 202 according to the present embodiment.
  • step A1 the group value calculation unit 201 calculates the color group value of the write target data.
  • step A2 the reservation list management unit 202 searches the reservation list 32 based on the color group value of the write target data.
  • the reservation list management unit 202 determines whether there is an appropriate reservation node having a color group value of write target data and having a free area equal to or larger than the size of the write target data.
  • the reservation list management unit 202 refers to the memory usage information 11, the memory specific information 12, and the coloring table 12 to obtain the block size from the physical address (NAND logical address) space. Reserve a new physical address area.
  • the reservation list management unit 202 associates the logical address of the write target data with one of the reserved physical address areas (for example, the first physical address) by way of the address management unit 18.
  • the address conversion information 13 is updated.
  • step A5 the reservation list managing unit 202 adds the reservation node of the reserved one block area to the reservation list 32, and sets the color group value, the reservation address, and the free area size in the reservation node. Thereafter, the process proceeds to step A8a.
  • step A6 the reservation list management unit 202 uses the reservation address of the appropriate reservation node as a physical address, and the logical address of the write target data and the physical address via the address management unit 18 In association, the address conversion information 13 is updated.
  • step A6 the reservation list management unit 202 updates the appropriate reservation address of the reservation node and the free area size. Thereafter, the process proceeds to step A8a.
  • the reservation list management unit 202 determines whether the updated free space size of the appropriate reservation node is smaller than an arbitrary size.
  • step A9 the reservation list managing unit 202 discards the appropriate reservation node from the reservation list 32, and the process ends.
  • FIG. 50 is a diagram showing an example of state transition of the address conversion information 13 according to the present embodiment.
  • the group value calculation unit 201 refers to the coloring table 14 based on the logical address “0x0010 — 0000” to calculate a color group value for the logical address “0x0010 — 0000”.
  • the reservation list management unit 202 searches the reservation list 32 based on the color group value.
  • the reservation list management unit 202 determines the physical address “0x0030 — 0000” for the logical address “0x0010 — 0000” based on the memory usage information 11, the memory specific information 12, and the coloring table 12.
  • the group value calculation unit 201 reserves an address area for one block area from the physical address “0x0030 — 0000”.
  • the group value calculation unit 201 adds a reservation node corresponding to the reserved address area to the reservation list 32.
  • the group value calculation unit 201 sets the color group value calculated in state 1 to the reservation node.
  • the group value calculation unit 201 refers to the coloring table 14 based on the logical address “0x0030 — 0000” to calculate a color group value for the logical address “0x0030 — 0000”.
  • the reservation list management unit 202 searches the reservation list 32 based on the color group value. In this example, it is assumed that a reservation node corresponding to a color group value is found.
  • the reservation list management unit 202 determines the reservation physical address “0x0040 — 0000” of the found reservation node as the physical address for the logical address “0x0030 — 0000”.
  • the physical address “0x0040 — 0000” corresponding to the logical address “0x0030 — 0000” is registered in the address conversion information 13 by the address management unit 18.
  • block size data is configured by the plurality of write target data belonging to the same access frequency based on the coloring information of the plurality of write target data.
  • the MPU uses a DRAM as a main memory.
  • the execution code, data, etc. in the main memory and the context of the process are stored in the secondary storage device. For this reason, when rebooting the system, it is necessary to load the necessary execution code, data, etc. from the secondary storage onto the memory again through the I / O interface. Furthermore, initialization of each program is performed again. For this reason, the system startup time is often long.
  • a memory management apparatus capable of shortening the time required for shutdown and activation and capable of storing highly safe data in consideration of the nature of nonvolatile memory will be described.
  • the fifth embodiment relates to the transfer of data from the volatile semiconductor memory 8 to the nonvolatile semiconductor memories 9 and 10 when the information processing apparatus 100 is shut down.
  • a memory map of the mixed main memory 2 is as shown in FIG.
  • the volatile semiconductor memory 8 (DRAM area) contains data cached by reading and writing data.
  • dirty data which is updated in the volatile semiconductor memory 8 and which is not updated in the nonvolatile semiconductor memories 9 and 10 exists. For this reason, it is necessary to select dirty data and transfer it to the nonvolatile semiconductor memories 9 and 10.
  • FIG. 51 shows an example of the dirty bit field DBF of the volatile semiconductor memory 8 provided in the information storage unit 17.
  • flag data indicating whether the data is dirty or not is set corresponding to the index information set based on the physical address.
  • the flag data “0” indicates that the data corresponding to the entry has been erased or that the data has been read into the volatile semiconductor memory 8 and has not been updated (synchronized), and flag data “1” indicates that the volatile semiconductor memory 8 has been updated and the nonvolatile semiconductor memories 9 and 10 have not been updated (not synchronized). That is, data corresponding to the entry of data “1” needs to be transferred to nonvolatile semiconductor memories 9 and 10 at shutdown, and data corresponding to the entry of data “0” is transferred to nonvolatile semiconductor memories 9 and 10 There is no need to transfer.
  • the memory management device 1 writes the data read from the nonvolatile semiconductor memories 9 and 10 into the volatile semiconductor memory 8 or erases the data from the volatile semiconductor memory 8, and the volatile semiconductor memory 8.
  • the flag data of the corresponding entry is set to "0" at any of the time when the update of the data is reflected in the non-volatile semiconductor memories 9 and 10.
  • the memory management device 1 sets the flag data of the corresponding entry to “1”.
  • FIG. 52 illustrates an example of processing when the information processing apparatus 100 is shut down. This process is performed by, for example, the processing unit 15.
  • step IS31 the total size SA of data not updated in the nonvolatile semiconductor memories 9 and 10 is calculated (step IS31). That is, the entry of the dirty bit field DBF is searched to detect data whose flag data is "1". The sizes of data in which the detected flag data is “1” are summed up to calculate the non-updated data size SA.
  • each entry of the dirty bit field DBF is set for each page size of the nonvolatile semiconductor memory. Therefore, the update data size SA can be obtained by counting the number of "1" s in the flag data and multiplying the count value by the page size.
  • the free space size SB of the non-volatile semiconductor memory is calculated (step IS32).
  • the nonvolatile semiconductor Data is written to the SLC area of memory 9. Specifically, data is preferentially written to, for example, the B area of the SLC area shown in FIG.
  • the memory management device 1 manages writing of the nonvolatile semiconductor memories 9 and 10 based on the information of the coloring table 14.
  • the shutdown process according to the present embodiment ignores this principle and, for example, preferentially stores data in, for example, the B area of nonvolatile semiconductor memory 9 in order to store data while maintaining high speed and high reliability. .
  • the free area size of the B area is calculated.
  • the calculation of the free space size is obtained, for example, based on the contents of the memory use information 11.
  • step IS33 the calculated unupdated data size SA and the free area size SB of the B area are compared.
  • step IS34 the unupdated data of the volatile semiconductor memory 8 is written to the B area of the nonvolatile semiconductor memory.
  • step IS35 the address management information shown in FIG. 4 is updated based on the writing to the area B.
  • step IS33 when it is determined in step IS33 that the calculated unupdated data size SA is larger than the free area size SB of the B area, the normal writing process is performed. That is, according to the principle, data writing is performed with reference to the coloring table 14 (step IS36). Thereafter, the address management information is updated (step IS37).
  • the dirty bit field DBF is provided in the information storage unit 17, and whether or not the data of the volatile semiconductor memory 8 is updated is managed by the flag data, and the information processing apparatus 100 is shut down. At this time, the data of the volatile semiconductor memory 8 is transferred to the nonvolatile semiconductor memory 9 based on the flag data of the dirty bit field DBF. Therefore, at the time of shutdown, the unupdated data can be reliably transferred to the nonvolatile semiconductor memory 9.
  • the unupdated data output from the volatile semiconductor memory 8 is written to the SLC region of the nonvolatile semiconductor memory 9. For this reason, it is possible to speed up the writing process and to maintain reliability for long-term storage.
  • the fifth embodiment aims to speed up the startup of the information processing apparatus 100.
  • the information processing apparatus when the moving image player and the browser are operating, when shut down and the browser is operating, if the moving image player has a priority that it is highly likely to be scheduled next, the information processing apparatus If the code of the video player with high priority is transferred to the volatile semiconductor memory 8 after activation of 100, it is considered possible to operate at high speed.
  • prefetch hint information is added to the coloring table 14 and the information processing apparatus 100 is activated using this prefetch hint information.
  • the prefetch hint information is set in the coloring table 14 at shutdown. That is, the operating system 27 stores the prefetch hint information in the coloring table 14 in the shutdown process, so that the overhead of memory access at the time of activation can be reduced, and can be activated at high speed.
  • FIG. 53 shows an example of the coloring table 14 applied to the present embodiment.
  • a field of prefetch hint information is added to each entry.
  • the prefetch hint information is, for example, flag data provided in the field of static color information. When the flag data is "0", it does not pre-read data corresponding to the entry at the time of activation, and when it is "1", it pre-reads data corresponding to the entry at the time of activation.
  • the flag data is not limited to binary data, but may be multivalued data.
  • the flag data as the prefetch hint information is set in the coloring table 14 when the information processing apparatus 100 is shut down, for example, in the shutdown process of the operating system 27.
  • FIG. 54 shows setting processing of prefetch hint information. This process is performed by, for example, the processing unit 15.
  • prefetch hint information is added to an address where code data necessary for activation is stored (step IS41). That is, flag data “1” is set in the corresponding entry of the coloring table 14 as prefetch hint information.
  • prefetch hint information is added to the context of the process with the highest priority (step IS42). That is, flag data “1” is set as the prefetch hint information in the entry corresponding to the context of the process with the highest priority in the coloring table 14.
  • the high priority data includes, for example, device initialization code data and the context of a high priority process when shutting down.
  • flag data “0” as prefetch hint information is set even if it is related to the process with the highest priority. .
  • an address space to which MPEG data is mapped corresponds to this, and this address space is set so as not to read ahead.
  • step IS43 it is judged whether or not the prefetch hint information is added to the data of the set size. That is, it is determined whether or not the size of the volatile semiconductor memory 8 in which the preread data is stored has been exceeded.
  • the use size of the volatile semiconductor memory 8 can be set by the user, for example. For this reason, it is determined whether the set size has been exceeded. As a result, if the size is within the set size, the process proceeds to step IS42 and the above operation is performed. If it is determined that the size exceeds the set size, the process is ended. In this way, at the time of shutdown, prefetch hint information is set in the coloring table 14.
  • the activation process of the information processing apparatus 100 includes an execution code to be executed and data to be read.
  • the operating system 27 can know the execution code and data area to be executed early in the startup.
  • FIG. 55 shows the process of the operating system 27 at startup.
  • the coloring table 14 is searched (step IS51), and flag data as read ahead hint information of the entry is read (step IS52).
  • step IS53 it is determined whether this flag data is "1" (step IS53).
  • the flag data is "1"
  • the data corresponding to the entry is read from the nonvolatile semiconductor memories 9 and 10 (step IS54). That is, the data to which the prefetch hint information is attached in priority to other data is transferred from the nonvolatile semiconductor memories 9 and 10 to the volatile semiconductor memory 8.
  • step IS53 when the flag data is "0", the data corresponding to the entry is not read out.
  • step IS55 it is judged whether or not the next entry is present in the coloring table 14 (step IS55). As a result, if there is a next entry, control is transferred to step IS51, and the above operation is repeated. Also, if there is no next entry, the process is terminated.
  • the termination condition of the process is not limited to the case where there is no next entry, and the write size at the start of the volatile semiconductor memory 8 is set in advance, and the process is terminated when the write size is reached. It is also possible to set as follows. By doing this, it is possible to secure free space in the volatile semiconductor memory 8.
  • prefetch hint information is added to the entry of the coloring table corresponding to data that is likely to be executed immediately after startup, and at the time of startup, this prefetch hint information
  • the data is transferred from the nonvolatile semiconductor memories 9 and 10 to the volatile semiconductor memory 8 preferentially. For this reason, it is possible to reduce the overhead at the time of start-up where reading frequently occurs and to start the information processing apparatus 100 at high speed.
  • the volatile semiconductor memory 8 since only the high priority data is transferred to the volatile semiconductor memory 8, it is more volatile than in the case where all data present in the volatile semiconductor memory 8 at the time of shutdown is saved and recovered at startup.
  • the contents of the semiconductor memory 8 can be organized, and the speed of execution after activation can be increased.
  • the operating system 27 sets static color information of the coloring table 14 shown in FIG. 5 and FIG. 8 for each data.
  • the operating system 27 determines static color information of this data based on the extension of the file (the file in which the data is arranged) corresponding to the data, and sets it in the coloring table 14.
  • the operating system 27 manages mapping data in which data and a file are associated with each other.
  • the operating system 27 may refer to a table in which file extensions and static color information are associated.
  • the relation between the file extension and the static color information instead of the relation between the file extension and the static color information, the relation between the file name and the static color information may be set.
  • the operating system 27 determines static color information of this data based on the name of the directory in which the file corresponding to the data is arranged, and sets it in the coloring table 14.
  • the operating system 27 may refer to a table in which directory names and static color information are associated.
  • the user For example, the user generates a shadow file for a certain file.
  • the shadow file is generated by changing the extension of the file corresponding to the shadow file. For example, for the file ".foo.ext", the shadow file ".foo.ext.s_color" is generated in the same directory.
  • the operating system 27 determines static color information of this data based on the shadow file of the file corresponding to the data, and sets it in the coloring table 14.
  • a shadow file may be generated for a directory, and the shadow file may hold the relationship between static color information and the directory.
  • Extended attributes are functions that allow the user to attach metadata that the file system does not interpret to a file or directory.
  • static color information of the file or directory is set.
  • the operating system 27 determines static color information of this data based on the metadata linked to the file corresponding to the data, and sets it in the coloring table 14.
  • the operating system 27 determines static color information of this data based on the metadata linked to the directory in which the data is arranged, and sets it in the coloring table 14.
  • the operating system 27 determines static color information of this data based on the header of the file corresponding to the data and sets it in the coloring table 14.
  • the static color information may be set using the shadow file or the extended attribute described above instead of modifying the header of the file.
  • the application file may be divided into a plurality of sections, and static color information may be set for each of the plurality of sections.
  • the control similar to the memory management device 1 can be realized for the SSD by generating the SATA vendor extension command used for the SSD and passing data and static color information to the SSD.
  • FIG. 56 is a block diagram showing an example of the relationship between the virtual address area in the virtual address space and the attribute information.
  • the application uses virtual address areas J34a to J34f in the virtual address space J32.
  • the operating system 27 has a virtual memory function.
  • the operating system 27 manages the virtual address areas J34a to J34f using virtual address area data corresponding to the virtual address areas J34a to J34f.
  • the information J33 is information related to the virtual address space J32, and includes virtual address area data.
  • Virtual address area data for each of the virtual address areas J34a to J34f has a data structure including a start address, an end address, first attribute information, and second attribute information.
  • virtual address area data is used one or more for one process.
  • the start address and the end address of each virtual address area data indicate the start address and the end address of the corresponding virtual address area
  • the first attribute information of each virtual address area data is that the corresponding virtual address area is readable “r”, writable “w”, executable “x”, occupied area "p” or shared area “”s" indicates.
  • the second attribute information of each virtual address area data indicates which of the heap area, the stack area, and the file map area the corresponding virtual address area is.
  • virtual address area data J35c and J35d for virtual address areas J34c and J34d among virtual address area data for virtual address areas J34a to J34f are selected and described, but the other virtual address area data are the same. It has a feature.
  • the operating system 27 Since the virtual address area J34c is readable, writable, and occupied, the operating system 27 stores "r" "w” "p" in the first attribute information of the virtual address area data J35c. Do.
  • the operating system 27 Since the virtual address area J34c is a heap area, the operating system 27 stores “1” indicating the heap area in the second attribute information of the virtual address area data J35c.
  • the operating system 27 Since the virtual address area J34d is readable, executable, and occupied, the operating system 27 stores "r" "x" "p" in the first attribute information of the virtual address area data J35d. Do.
  • the operating system 27 Since the virtual address area J34d is a file map area, the operating system 27 stores "4" indicating the file map area in the second attribute information of the virtual address area data J35d.
  • FIG. 57 is a flow chart showing an example of setting processing of second attribute information of virtual address area data by the operating system 27.
  • step SE1 the operating system 27 takes out the virtual address area to be set.
  • step SE2 the operating system 27 sets an initial value "0" in the second attribute information.
  • step SE3 the operating system 27 determines whether the virtual address area is a heap area.
  • the operating system 27 sets “1” in the second attribute information in step SE4.
  • step SE5 the operating system 27 determines whether the virtual address area is a stack area.
  • the operating system 27 sets “2” in the second attribute information in step SE6.
  • step SE7 the operating system 27 determines whether the virtual address area is a file map area.
  • the operating system 27 sets “4” in the second attribute information in step SE8.
  • step SE9 the operating system 27 determines whether to set the second attribute in another virtual address area.
  • step SE1 If the second attribute is set for another virtual address area, the process proceeds to step SE1.
  • FIG. 58 is a diagram showing an example of setting of static color information based on the virtual address area data J35c.
  • the operating system 27 generates a static writing frequency SW_color, a static reading frequency SR_color, and a data life SL_color for data in the virtual address area J34c based on the first attribute and the second attribute of the virtual address area data J35c. Set in the coloring table 14.
  • the operating system 27 When the data in the virtual address area J34c is allocated to the logical address space which is a real memory by page fault, the operating system 27 generates data generation time ST_color for the data in the virtual address area J34c and sets it in the coloring table 14 .
  • the memory management device 1 updates the number of writes and the number of reads for data in the virtual address area J34c.
  • the score of the command is determined in advance, and the score of the library (dynamically linked) used in the command is determined based on the score of the command.
  • the score is a value determined based on the frequency of use. For example, in the examples of FIG. 59 and FIG. 60 described later, the value of the score increases as the frequency of use increases.
  • the static writing frequency SW_color and the static reading frequency SR_color for data included in the library are set based on the score of the library.
  • the score may be obtained using a dynamic linker that links the library dynamically.
  • the score of each library is incremented each time the library is linked by the dynamic linker.
  • the score of the library is initialized to 0 in the first stage, and each time it is linked, the score of this linked library is incremented. As a result, the more frequently the library is linked, the higher the score.
  • FIG. 59 is a diagram showing an example of the dependency between the command and the library.
  • the command uses at least one library.
  • the score of the command is preset.
  • the score of the library is the sum of the score of the command using the library or the library using the library.
  • the score of the command “cp” is set to "5".
  • the command “cp” uses the libraries “libacl.so.1” and “libselenux.so.1”.
  • the score of the library "libacl.so.1” and “libselenux.so.1” is set to the score "5" of the command "cp” using this library "libacl.so.1” and “libselenux.so.1” Ru.
  • the score of the command "bash” is set to "10".
  • the command "bash” uses the library “libncurses.so.5".
  • the score of the library "libncurses.so.5" is set to the score "10" of the command "bash” which uses this library "libncurses.so.5".
  • the library "libdl.so.2" is used for the library “libselenux.so.1" and "libncurses.so.5".
  • the library “libdl.so.2” is set to the sum “15” of the scores of the libraries “libselenux.so.1” and “libncurses.so.5” using this library “libdl.so.2”.
  • Scores are set in accordance with similar rules for other commands and libraries.
  • the setting of the score of each command can be changed.
  • the method of inheriting the score can also be changed variously. For example, if the parent library has a dependency that branches to multiple child libraries (for example, if the parent library selects and uses one of multiple child libraries), then the score of the child library is The score of the parent library may be divided by the number of children. Also, for example, if the parent library requires a library of multiple children at the same time, the library of children may be set to the same score as the library of the parent.
  • FIG. 60 is a diagram showing an example of the score of the command and the score of the library.
  • the score of the library calculated according to the dependency of the above-mentioned FIG. 59 is shown.
  • FIG. 61 is a diagram illustrating another example of calculation of the score of the library based on the score of the command.
  • the dependency between libraries is not used, and the score of each library is calculated by the sum of the scores of the commands using the library.
  • FIG. 62 is a diagram showing an example of setting of static color information using a score of a library.
  • the operating system 27 determines the static writing frequency SW_color, the static reading frequency SR_color, and the data for the data of the virtual address area J34d based on the first attribute and the second attribute of the virtual address area data J35d and the score of the library.
  • the life SL_color is generated and set in the coloring table 14.
  • the operating system 27 When the data of the virtual address area J34d is allocated to the logical address space by page fault, the operating system 27 generates data generation time ST_color for the data of the virtual address area J34d and sets it in the coloring table 14.
  • the memory management device 1 updates the number of writing and the number of reading of data in the virtual address area J34 d.
  • the compiler has a function capable of predicting the frequency (frequency of use) of a variable or the frequency of a function.
  • the user sets static color information for data including a variable or a function based on the frequency of the variable or the frequency of the function predicted by the function of the compiler. This makes it possible to set static color information finer than the file unit.
  • the compiler can compile variables or functions specified by the user into specific sections at compile time, as shown in FIG.
  • the user sets static color information for data including variables and functions grouped by the function of this compiler. This allows variables and functions with similar frequency to be combined in the same writing unit.
  • FIG. 64 is a diagram showing an example of setting of static color information using a compiler.
  • the user uses a compiler to predict the frequency of variables and the frequency of functions, and also divides the software to be compiled into sections and sets static color information for the sections.
  • the operating system 27 sets the static writing frequency SW_color to “low” and the static reading frequency SR_color to “high” for the section including the “exception handler”.
  • the operating system 27 sets the static writing frequency SW_color to “low” and the static reading frequency SR_color to “low” for the section including the “exception handler”.
  • static color information can be set for data to be allocated to a dynamically generated memory area.
  • FIG. 65 is a diagram showing an example of setting of static color information based on the usage frequency of a dynamically generated memory area.
  • the operating system 27 sets the static write frequency SW_color to “low” and the static read frequency SR_color to “high” in the data arranged in the memory area “kernel page table”.
  • the operating system 27 sets the static write frequency SW_color to “high” and the static read frequency SR_color to “high” in the data arranged in the memory area “kernel stack”.
  • the operating system 27 sets the static writing frequency SW_color to “high” and the static reading frequency SR_color to “high” in the data arranged in the buffer area of the moving image player.
  • the operating 27 directly updates the coloring table 14 when acquiring and releasing the memory area.
  • the madvise () system call advises the kernel on how to handle paging I / O of length byte memory blocks starting at address addr.
  • the application can tell the kernel how to handle the mapped memory and shared memory, and the kernel can accordingly select an appropriate method such as read ahead or cache.
  • This system call may be added with a function of setting static color information of a specified memory area. Alternatively, a new system call may be added to set static color information of a designated memory area.
  • the profiler has a function of acquiring, for example, performance information of an application.
  • This performance information includes statistical information such as frequency of use.
  • the user sets static color information for the application based on the performance information generated by the profiler.
  • the static color information is not set based on the usage frequency predicted in advance, but is set according to the actual usage state.
  • the setting method of static color information is described. Thereby, static color information used in the memory management device 1 is set in the coloring table 14, and the lifetime of the nonvolatile semiconductor memories 9, 10 can be extended based on the static color information.
  • FIG. 66 is a block diagram showing an example of the configuration of the memory management device 1, the information processing device 100, and the memory devices H32a, H32b, and H32c according to the present embodiment.
  • the same reference numerals as in the first embodiment denote the same or similar parts as those in the first embodiment, and a description thereof will be omitted.
  • the processor 3b is described as a representative, but the same applies to the other processors 3a and 3c.
  • the processing unit 15 included in the memory management device 1 includes a memory usage information management unit 22, a connection detection unit H33, a determination unit H34, a notification unit H35, and an exchange control unit H36.
  • the memory use information 11, the memory specific information 12, the address conversion information 13, and the coloring table 14 are stored in the information storage unit 17 provided in the memory management device. Furthermore, the processing unit 15 of the memory management device 1 is connected to the plurality of connector units H44a, H44b, and H44c.
  • the memory devices H32a, H32b, and H32c respectively include memory units H37a, H37b, and H37c, normal notification units H38a, H38b, and H38c, warning notification units H39a, H39b, and H39c, and use stop notification units H40a, H40b, and H40c. And connection operation units H41a, H41b, and H41c.
  • the memory devices H32a, H32b, and H32c further include connector portions H42a, H42b, and H42c, respectively.
  • Management information H43a, H43b, and H43c are stored in the memory units H37a, H37b, and H37c. Details of the management information H43a, H43b, and H43c will be described later.
  • the connector portions H42a, H42b, and H42c provided in the memory devices H32a, H32b, and H32c are connected to the connector portions H44a, H44b, and H44c, respectively.
  • the configuration of the memory management device 1 will be described in more detail.
  • the memory device H32a among the memory devices H32a, H32b, and H32c, the memory device H32a will be described as a representative, but the same applies to the other memory devices H32b and H32c.
  • the connection detection unit H33 detects the connection between the memory management device 1 and the memory device H32a.
  • the connection detection unit H33 detects that the memory device H32a is electrically connected to the memory management device 1 when receiving an “attachment notification” described later from the connection operation unit H41a of the memory device H32a (“connection state”).
  • connection state To detect Further, the connection detection unit H33 detects that the memory device H32a is electrically disconnected from the memory management device 1 when receiving a “notification of removal” described later from the connection operation unit H41a of the memory device H32a (“ "Ready for removal” is detected.
  • the determination unit H34 determines the use state of the memory device H32a based on the memory use information 11.
  • the use state includes, for example, “normal state”, “warning state”, and “usage stop state”.
  • the determining unit H34 periodically determines the use state of the memory device H32a.
  • the determination unit H34 determines, for example, the use state of the memory device H32a each time an access to the memory device H32a occurs. The method of determining the use state will be described later.
  • the notification unit H35 notifies the memory device H32a of the usage state based on the usage state determined by the determination unit H34.
  • connection detection unit H33 detects the “connection state” based on the “attachment notification” from the connection operation unit H41a of the memory device H32a
  • the exchange control unit H36 detects the memory included in the management information H43a stored in the memory unit H37a.
  • the number of times of erasure, the number of times of occurrence of writing, and the number of times of occurrence of reading for each predetermined area of the unit H 37 a are read and stored in the memory usage information 11.
  • connection detection unit H33 detects the “removal preparation state” based on the “removal notification” from the connection operation unit H41a of the memory device H32a
  • the exchange control unit H36 uses the memory stored in the information storage unit 17
  • the number of erasures, the number of write occurrences, and the number of read occurrences for each predetermined area of the memory device H32a included in the information 11 are read and stored in the management information H43a of the memory unit H37a. Details of the management information H43a will be described later.
  • the erase count is managed in block area units, the number of write occurrences, and the number of read occurrences are managed in page area units.
  • the memory unit H37a is a SLC type NAND flash memory or an MLC type NAND flash memory, and corresponds to the nonvolatile semiconductor memories 9 and 10 of the first embodiment. Further, the memory unit H37a may be a NAND flash memory (SLC area) in a partial area of SLC type, and may be a NAND flash memory (MLC area) in an MLC type except the SLC area. In this case, the SLC region corresponds to the non-volatile semiconductor memory 9, and the MLC region corresponds to the non-volatile semiconductor memory 10.
  • SLC area NAND flash memory
  • MLC area NAND flash memory
  • the normal notification unit H 38 a displays the normal state when notified of the “normal state” from the notification unit H 35 of the memory management device 1.
  • the normal notification unit H38a is a light emitter of the first color (blue), and lights up to display a normal state.
  • the warning notification unit H39a displays a warning status when notified of the "Warning status" from the notification section H35 of the memory management device 1.
  • the warning notification unit H39a is a light emitter of the second color (yellow), and displays a warning state by being lit.
  • the use stop notification unit H40a displays a stop state when notified of the "use stop state" from the notification unit H35 of the memory management device 1.
  • the use stop notification unit H40a is a light emitter of the third color (red color), and lights up to display a use stop state.
  • connection operation unit H41a notifies the memory management device 1 that the memory device H32a is removed (notification of removal) when the memory device H32a is electrically disconnected (when removed) from the memory management device 1.
  • the connection operation unit H41a includes, for example, an electrical or mechanical button, and when the memory device H32a is removed, the user presses the button to notify the memory management device 1 of a removal notification.
  • the connection operation unit H 41 a notifies the memory management device 1 of the connection (attachment notification). For example, when the memory device H 32 a is electrically connected to the memory management device 1, when the user presses the button, the memory management device 1 is notified of an attachment notification.
  • the memory device H32a and the memory management device 1 are electrically connected.
  • FIG. 67 is a graph showing an example of a change in the number of times of erasing of the memory unit H37a.
  • the horizontal axis is time, and the vertical axis is the number of erasures.
  • the memory unit H37a of the memory device H32a of the present embodiment receives access (read, write, erase) from the processor 3b. Therefore, the number of times of erasure, the number of times of occurrence of reading, and the number of times of occurrence of writing of the memory unit H37a increase with the use time, and at a certain time, the number of times of erasure reaches the upper limit number of times erasable of the memory unit H37a. When the number of times of erasing of the memory unit H32a reaches the upper limit of erasable times, writing, reading, and erasing of data to the memory unit H32a is not desirable from the viewpoint of reliability.
  • the memory management device 1 manages the erase count, the read generation count, the write generation count, and the like of the nonvolatile semiconductor memories 9 and 10 (memory device H 32 a) based on the memory usage information 11.
  • the memory management device 1 monitors the use state of the memory device H32a based on the memory use information 11, and before the number of times of erasure of the memory management device H32a reaches the number of times of occurrence of erasure. , Warns the memory device H32a.
  • FIG. 68 is a graph showing an example of the usage state of the memory device H32a based on the number of times of erasing of the memory device H32a.
  • the horizontal axis is time, and the vertical axis is the number of erasures.
  • the write can also be used to determine the use state of the memory device H 32 a as in the case of the erase.
  • FIG. 68 an example of the change in the number of times of erasing of the memory unit H37a is shown by a broken line.
  • a regression curve ⁇ tERASE (for example, a linear regression line) with respect to the number of erasures of the memory unit H37a is indicated by a solid line. From this linear regression line, the number of erasures ERASE alert after a predetermined time (warning period) tERASE before from the current time is predicted. When the ERASE alert exceeds the erasable upper limit ERASE max , it is determined that the use state of the memory unit H 37 a is “Warning state”.
  • the use state of the memory unit H 37 a is “normal state”.
  • the use state of the memory unit H 37 a is determined to be “inactive state”.
  • Memory unit H37a when the memory unit H37a is a NAND flash memory, the number of times of erasing of the memory unit H37a is managed in block area units.
  • Memory unit H37a includes a plurality of block areas. Among the plurality of block areas included in the memory unit H37a, the variation in the number of times of erasing is reduced by wear leveling. Therefore, for example, the average value of the number of times of erasing of each of the plurality of block areas included in the memory unit H37a is set as the number of times of erasing of the memory unit H37a.
  • the maximum number of times of erasing of the plurality of block areas included in the memory unit H37a may be set as the number of times of erasing of the memory unit H37a. The same applies to the number of read occurrences and the number of write occurrences.
  • FIG. 69 is a graph showing an example of a use state of the memory device H32a based on the number of read occurrences of the memory device H32a.
  • the horizontal axis is time, and the vertical axis is the number of read occurrences.
  • FIG. 69 shows an example of changes in the number of occurrences of read of the memory unit H 37 a by a broken line.
  • a regression curve ⁇ tREAD (for example, a linear regression line) with respect to the number of read occurrences of the memory unit H37a is indicated by a solid line. From this linear regression line, the number of read occurrences READ alert after a predetermined time (warning period) t READ before from the current time is predicted. When the READ alert exceeds the upper limit number of times of reading READ max , it is determined that the use state of the memory unit H 37 a is “Warning state”.
  • FIG. 70 is a flowchart showing an example of processing for notifying the memory device H32a of the usage state based on the number of times of erasing of the memory device H32a.
  • step HA1 the memory use information management unit 22 reads the memory use information 11.
  • step HA2 the memory use information management unit 22 reads the number of erasures of the current time of the memory device H32a from the memory use information 11.
  • the determination unit H34 determines based on the current time, a time before the current, the number of times the current time has been erased, the number of times the time before the current has been erased, the past ⁇ tERASE stored in the memory usage information 11, and the like. , Calculate a new ⁇ t ERASE. For example, the determination unit H34 calculates ⁇ tERASE, which is the number of erasures per unit time, based on the erasure start time, the current time, and the number of erasures of the current time.
  • step HA4 the determination unit H34 determines whether the number of erasures at the current time is equal to or less than the upper limit number of erasable ERASE max .
  • step HA5 If the number of times of erasure at the current time exceeds the upper limit of erasable number ERASE max , in step HA5, the judgment unit H34 judges that the memory device H32a is in the use suspension state, and the process moves to step HA9.
  • the determination unit H34 calculates ⁇ tERASE ⁇ tERASE before + the number of erasures at the current time in step HA6, and erases after tERASE before the current time Estimate the number of times ERASE alert .
  • step HA7 the determination unit H34 determines whether the predicted value ERASE alert is less than or equal to the erasable upper limit number ERASE max .
  • step HA8 the determination unit H34 determines that the memory device H32a is in a warning state, and the process moves to step HA9.
  • step HA9 If the predicted value ERASE alert is less than or equal to the erasable upper limit ERASE max , the process moves to step HA9.
  • step HA9 the determination unit H34 stores the number of erasures of the current time in the memory use information 11 by ⁇ t ERASE and performs updating.
  • FIG. 71 is a flowchart showing an example of processing for notifying the memory device H32a of the usage state based on the number of occurrences of read of the memory device H32a.
  • steps HB1 to HB9 in FIG. 71 are the same as steps HA1 to HA9 in FIG. 70 in which the target of determination is the number of erasures except that the target of determination is the number of read occurrences, the description will be omitted.
  • a warning may be notified before the use state of the memory device H32a becomes the “usage stop state”. It becomes possible.
  • the determination unit H34 calculates ⁇ tERASE.
  • the determination unit H34 obtains a time tERASE max predicted that the number of times of erasure reaches ERASE max based on the number of times of erasure at the current time and ⁇ tERASE and ERASE max .
  • the determination unit H34 obtains the time tERASE alert to be in the warning state by subtracting tERASE before from tERASE max .
  • the determining unit H34 determines that the current state is the warning state. Alternatively, based on the erase start time, ⁇ tERASE, and the time tERASE alert to issue a warning, the determination unit H34 obtains the erase count ERASE alert to be the warning state, and the erase count is the erase count ERASE alert or more. When it becomes, it is judged as a warning state.
  • FIG. 72 is a diagram showing an example of data included in the management information H43a.
  • Management information H43a includes erase count of each predetermined area of the memory unit H37a memory device H32a, regression curve ⁇ tERASE for erase count, erasable upper limit count ERASE max, warning period terase before, the erasing start time. Furthermore, the management information H43a includes the number of times of reading occurrence in each predetermined area of the memory unit H37a of the memory device H32a, the regression curve ⁇ tREAD about the number of times of reading occurrence, the erasable upper limit number of readings READ max , the warning period tREAD before , and the reading start time.
  • the number of times of erasure, the number of times of occurrence of reading, and the regression curves ⁇ tERASE, ⁇ tREAD are information managed by the memory use information 11 of the memory management device 1, and when the memory device H32a is removed from the memory management device 1, as described later. , And stored in the management information H43a.
  • FIG. 73 is a flowchart showing an example of processing from when the memory device H 32 a is electrically connected to the memory management device 1 to when access to the memory device H 32 a is started.
  • step HC1 the connection detection unit H33 of the memory management device 1 receives an “attachment notification” from the memory device H32a, whereby the memory device H32a is electrically connected to the memory management device 1 (connection state) To detect
  • step HC1 it is determined whether or not the management information H43a is stored in the memory device H32a. If the management information H43a is stored, the process moves to step HC3. If the management information H43a is not stored, the process moves to step HC4.
  • Step HC3 the number of times of erasure, the number of times of occurrence of writing, and the number of times of occurrence of reading of the memory unit H37a included in the management information H43a are read out and stored in the memory usage information 11. Further, the erasable upper limit number ERASE max of the memory unit H 37 a, the readable upper limit number READ max of the memory unit H 37 a, and the warning periods t ERASE before and t READ before are read and stored in the memory specific information 12.
  • management information H43a is newly generated and written to the memory unit H37a, and "0" is stored in the memory usage information 11 as the number of times of erasing, the number of times of writing occurrence, and the number of occurrence of reading for each predetermined area.
  • step HC3 or step HC4 access to the memory device H32a is started.
  • the number of times of erasure, the number of times of occurrence of writing, and the number of times of occurrence of reading of the memory usage information 11 corresponding to the memory device H32a are updated.
  • FIG. 74 is a flowchart showing an example of processing from when the memory management device 1 receives the “removal notification” from the memory device H 32 a until the memory device H 32 a becomes removable.
  • step HD1 the connection detection unit H33 of the memory management device 1 receives the “removal notification” from the memory device H32a.
  • step HD2 the exchange control unit H36 of the memory management device 1 reads the data stored in the memory device H32a from the memory device H32a and writes the data to another memory device (for example, the memory device H32b).
  • step HD3 the exchange control unit H36 sets the number of times of writing, reading and erasing for each predetermined area of the memory device H32a managed by the memory usage information 11 as management information H43a in the memory of the memory device H32a.
  • step HD3 the exchange control unit H36 sets the number of times of writing, reading and erasing for each predetermined area of the memory device H32a managed by the memory usage information 11 as management information H43a in the memory of the memory device H32a.
  • step HD4 the notification unit H35 of the memory management device 1 notifies the memory device H32a that the memory device H32a is removable.
  • the number of times of writing, reading number, and erasing number for each predetermined area of the memory device H32a are stored in the memory unit H37a of the memory device H32a as management information H43a, and then the memory By reading out the management information H43a when the device H32a is attached, it becomes possible to obtain usage information of the memory device H32a.
  • FIG. 75 is a diagram showing an example of the replacement state of the memory device.
  • the information processing apparatus 100 of FIG. 75 includes a processor 3b, a memory management device 1, and memory devices H32a to H32l.
  • the information processing apparatus 100 applies the RAID technology to the memory devices H32a to H32l.
  • the memory management device 1 that controls access to the memory devices H32a to H32l supports hot swapping as hardware.
  • the information processing apparatus 100 is an apparatus that requires continuous operation, such as a server apparatus.
  • the memory devices H32a to H32m have upper limits on the number of times of memory reading and the number of times of memory erasing, and are replaced when their lifetime is reached.
  • Each of the memory devices H32a to H32m includes display units H45a to H45m.
  • the display units H45a to H45m emit light, for example, in green when the memory devices H32a to H32m are in the normal state, and emit light, for example, in red in the warning state or the use stop state.
  • Buttons H46a to H46l are assigned to the mounted memory devices H32a to H32l, respectively.
  • the RAID technology By applying the RAID technology to the memory management device 1, even if a part of the memory devices H32a to H32l (the memory device H32k in FIG. 75) is in the warning state or the use stop state, the remaining memory devices H32a to The information processing apparatus 100 can operate normally by H32 j and H32 l. Then, the user can remove the memory device H 32 k in the warning state or the use stop state while the information processing apparatus 100 is operating, and attach a substitute memory device H 32 m.
  • the display unit H45k of the memory device H32k emits red light.
  • the corresponding button H46k is pressed by the user.
  • a removal notification is sent to the memory management device 1.
  • the memory management device 1 executes processing such as saving data of the memory device H32k, powering off the memory device H32k, and the like.
  • the data of the memory device H 32 k may be replaced immediately without being saved.
  • the user When the memory device H32k becomes removable, the user removes the memory device H32k and mounts a new memory device H32m.
  • the memory device H32k can Media such as CD-R substitutes can be reused as photo recording media for digital cameras.
  • management information of the memory device H32k is stored in the memory device H32k, and the display unit H45k is a memory device. It is equipped with H32k.
  • a display unit for electronic ink may be used for the display units H45a to H45m.
  • the determination unit H34 of the memory management device 1 accesses the memory devices H32a to H32l based on the memory use information 11 and the memory unique information 12 (for example, “erase number / eraseable upper limit number”, “read occurrence” Calculate the number of times / the upper limit number of readable times etc.).
  • the notification unit H35 of the memory management device 1 controls the display of the display units H45a to H45l for electronic ink based on the access states to the memory devices H32a to H32l.
  • the display units H45a to H451 indicate the access states in a bar graph.
  • the display contents of the display units H45a to H451 for electronic ink are maintained even when the memory devices H32a to H32l are removed from the memory management device 1. Therefore, after removing the memory devices H32a to H32l, the user attaches the memory devices H32a to H32l to another information processing apparatus with reference to the display contents of the display units H45a to H45l for electronic ink, and reuses them. be able to.
  • FIG. 76 is a block diagram showing an example of reuse of the memory device H 32 a.
  • the information processing device 1 is a device such as a server device or a personal computer that requires high reliability for storing and accessing data.
  • the information processing apparatus 100A is an apparatus such as a digital camera, a printer, a mobile phone, etc., which is not required to be as reliable as the information processing apparatus 100 in storing and accessing data.
  • the memory device H32a is replaced at an early time from the timing at which the warning is issued.
  • the memory device H32a can be used until the use stop notification is generated.
  • the user can remove the memory device H 32 a from the information processing device 100 and attach the memory device H 32 a to the information processing device 100 A for use. .
  • the memory device H32a is effectively reused.
  • the write destination is selected from the memory devices H32a, H32b, and H32c so that the warning timings of the memory devices H32a, H32b, and H32c do not concentrate in a short period.
  • the method of selection will be described.
  • the writing management unit 20 selects one of the memory devices H32a, H32b, and H32c that is high in static color information or high in dynamic color information. Control to write to H32a.
  • the number of accesses to the memory device H32a increases faster than the other memory devices H32b and H32c.
  • the specific memory device H 32 a quickly becomes a warning state, it is possible to suppress concentration of the warning time within a short period, and it is possible to prevent an increase in workload such as replacing a large number of memory devices in a short period.
  • the memory devices H32a to H32l having the upper limit of the number of accesses can be easily attached to the memory management device 1, and can be easily removed.
  • the memory devices H32a to H32l can be replaced while the information processing apparatus 100 is continuously operated.
  • the memory devices H32a to H32l that are removable from the memory management device 1 can be reused.
  • a high-reliability, high-speed, large-capacity storage device combining the memory devices H32a to H32l can be realized, the memory devices H32a to H32l can be easily exchanged, and the operation rate of the information processing apparatus 100 Can be improved.
  • the present embodiment is a modification of the first embodiment.
  • the memory management device according to the present embodiment can dynamically switch the SLC region in the nonvolatile semiconductor memories 9 and 10 to the MLC region, and can switch the MLC region dynamically to the SLC region.
  • the SLC region refers to a memory region used as a SLC type NAND flash memory in the nonvolatile semiconductor memories 9 and 10.
  • the MLC area indicates a memory area used as a MLC type NAND flash memory in the nonvolatile semiconductor memories 9 and 10.
  • nonvolatile semiconductor memories 9 and 10 the entire memory area of nonvolatile semiconductor memories 9 and 10 may be an SLC area or an MLC area, and a part of memory areas of nonvolatile semiconductor memories 9 and 10 is an SLC area
  • the memory area which is not the SLC area may be the MLC area.
  • SLC / MLC area information Information on whether the memory area of the nonvolatile semiconductor memory 9 or 10 is an SLC area or an MLC area (hereinafter referred to as “SLC / MLC area information”) is managed by, for example, the memory specific information 12 .
  • the memory specific information 12 holds information as to whether the memory area designated by the physical address in the nonvolatile semiconductor memory 9 or 10 is an SLC area or an MLC area.
  • SLC / MLC area information for each memory area is managed by the memory specific information 12, it may be managed by the memory use information 11.
  • FIG. 78 is a diagram showing an example of a configuration of a memory management device according to the present embodiment.
  • the memory management device D32 includes a processing unit D33, a work memory 16, and an information storage unit 17.
  • the processing unit D33 includes a consumption rate calculation unit D34, a switching determination unit D35, and a switching control unit D36. Furthermore, the processing unit D33, like the processing unit 15 of the first embodiment described above, includes the address management unit 18, the read management unit 19, the write management unit 20, the coloring information management unit 21, and the memory usage information management unit 22. , Rearranger 23, which are omitted in FIG.
  • the memory management device D32 can switch the SLC area to the MLC area based on the information on the consumption rate of the SLC area in the nonvolatile semiconductor memories 9 and 10. Furthermore, the memory management device D32 can switch the MLC area to the SLC area based on the consumption rate information of the MLC area in the nonvolatile semiconductor memories 9 and 10.
  • the consumption rate is the ratio of the number of times of writing to the upper limit of the number of writable upper limits of the memory area.
  • the memory management device D32 dynamically switches the SLC area and the MLC area based on the erase consumption rate, which is the ratio of the erase count to the erasable upper limit count, and the read consumption rate, which is the ratio of the read count to the readable upper limit count. Is also possible. Furthermore, the memory management device D32 can also perform dynamic switching between SLC and MLC based on at least two of the write consumption rate, the erase consumption rate, and the read consumption rate.
  • the consumption rate calculation unit D 34 refers to the memory usage information 11 and the memory specific information 12 and calculates the write consumption rate of the memory area based on the number of times of writing in the memory area and the upper limit number of writable times. Similarly, the consumption rate calculation unit D34 can also calculate the read consumption rate and the erasure consumption rate by referring to the memory usage information 11 and the memory specific information 12. The write consumption rate and the read consumption rate are calculated, for example, in page area units or block area units. The erasure consumption rate is calculated, for example, in block area units.
  • the write consumption rate is calculated for each of a plurality of block areas included in the SLC area and the MLC area.
  • the variation in the write consumption rate is reduced by wear leveling. Therefore, for example, an average value of the write consumption rates of a plurality of block areas included in the SLC area and the MLC area is set as the write consumption rate of the SLC area and the MLC area.
  • the maximum write consumption rate may be set as the write consumption rate of the SLC area and the MLC area. The same applies to the read consumption rate and the erase consumption rate.
  • the switching determination unit D35 determines whether the write consumption rate of the SLC area exceeds the write consumption rate threshold (hereinafter referred to as “SLC threshold”) set in the SLC area. Further, the switching determination unit D35 determines whether or not the write consumption rate of the MLC area exceeds the write consumption rate threshold (hereinafter referred to as "MLC threshold”) set in the MLC area. Information on the SLC threshold and MLC threshold of each memory area is managed in the memory specific information 11.
  • the switching control unit D36 performs control to switch the SLC area to the MLC area when the write consumption rate of the SLC area exceeds the SLC threshold. Further, when the write consumption rate of the MLC area exceeds the MLC threshold, the switching control unit D36 performs control to switch the MLC area to the SLC area. Further, the switching control unit D36 updates the "SLC / MLC area information" managed by the memory specific information 11 according to the switching between the SLC area and the MLC area.
  • the switching control unit D36 performs control to switch one of the MLC regions to the SLC region when switching from the SLC region to the MLC region occurs. Further, when switching from the MLC region to the SLC region occurs, the switching control unit D36 performs control to switch one of the MLC regions to the SLC region. Thus, control is performed so that the change in the ratio of the SLC area and the MLC area is reduced before and after the switching of the memory area by the switching control unit D36. Switching between the SLC area and the MLC area is performed by the switching control unit D 36 specifying the switching target memory area with respect to the nonvolatile semiconductor memories 9 and 10 and outputting a command.
  • the switching control unit D36 moves the data, and updates the address conversion information 13 according to the movement of the data.
  • the memory use information managing unit 22 updates the memory use information 11 (the number of times of writing, the number of times of erasing, the number of times of reading, etc.) of the switched memory area according to the switching of the SLC area and the MLC area by the switching control unit D36. .
  • FIG. 79 is a schematic view showing a first example of dynamic switching of the nonvolatile semiconductor memory according to the present embodiment.
  • the non-volatile semiconductor memories 291 to 294 shown in FIG. 79 correspond to the non-volatile semiconductor memories 9 and 10, and are used as the main memory of the information processing apparatus 100.
  • nonvolatile semiconductor memories 291 to 293 are used as SLC areas (nonvolatile semiconductor memories 291 to 293 are SLC type NAND flash memories). Further, the entire memory area of the nonvolatile semiconductor memory 294 is used as an MLC area (the nonvolatile semiconductor memory 294 is an MLC type NAND flash memory).
  • the nonvolatile semiconductor memories 291 to 294 are, for example, memory cards.
  • switching control unit D36 switches nonvolatile semiconductor memory 291 from the SLC type to the MLC type. Further, the switching control unit D36 switches the nonvolatile semiconductor memory 294 having a low write consumption rate from the MLC type to the SLC type. As a result, the nonvolatile semiconductor memory 291 having a high write consumption rate is used as an MLC type, and data with low access frequency is written. On the other hand, the nonvolatile semiconductor memory 294 with a low write consumption rate will be used as an SLC type, and data with high access frequency will be written.
  • the lifetime (usable period as main memory) of the non-volatile semiconductor memory 291 of the MLC type can be extended. It is possible. Normally, using a strong ECC reduces the reading speed of data from the non-volatile semiconductor memory, but in this embodiment, since the reading speed from an MLC type non-volatile semiconductor memory may be low, a strong ECC may be used. It is possible to use
  • the nonvolatile semiconductor memories 291 to 294 are removed from the information processing apparatus 100, and the CD-R is removed. It may be used for applications such as applications where the frequency of writing is low.
  • FIG. 80 is a schematic view showing a second example of the dynamic switching of the nonvolatile semiconductor memory according to the present embodiment.
  • the non-volatile semiconductor memory 295 shown in FIG. 80 corresponds to the non-volatile semiconductor memories 9 and 10, and is used as a main memory of the information processing apparatus 100.
  • the non-volatile semiconductor memory 294 is configured of a memory area used as an SLC area and a memory area used as an MLC area.
  • the SLC area is switched to the MLC area based on the wear rate information. Thereby, the same effect as the example shown in FIG. 79 is obtained.
  • FIG. 79 and FIG. 80 the process of switching the SLC area to the MLC area when the write consumption rate exceeds the SLC threshold is described for the SLC area, but the write consumption rate exceeds the MLC threshold for the MLC area. In this case, the same applies to the process of switching the MLC area to the SLC area.
  • the upper limit number of writable upper limits of the MLC area is set lower than that of the SLC area. Therefore, even if the write consumption rate of the MLC region exceeds the MLC threshold, the upper limit number of writable upper limits can be set high by switching the MLC region to the SLC region. For example, in the MLC region, the upper limit number of times of writing is 1000 times, and in the SLC region, when the upper limit number of times of writing is 10000 times, in the MLC region, the consumption rate reaches 80% and the MLC threshold is reached. By switching this MLC area to the SLC area, for example, 2000 times of writing can be performed as the SLC area. It is possible to further extend the life of the memory area by using this SLC area as a memory area to which data with low access frequency is written, such as an MLC area.
  • FIG. 81 is a state transition diagram showing a first example of switching control of a memory area by the switching control unit D36 according to the present embodiment.
  • the order of the processes described in steps OA1 to OA5 in FIG. 81 may be changed as long as switching between the SLC area and the MLC area, movement of data, and update of information are normally performed.
  • the memory area MA of the nonvolatile semiconductor memory is an SLC area
  • the memory areas MB, MC, and MD of the nonvolatile semiconductor memory are MLC areas.
  • Data Da, Db and Dc are stored in memory areas MA, MB and MC, respectively.
  • the memory area MD is an area for saving.
  • step OA1 it is assumed that the write consumption rate of the memory area MA exceeds the SLC threshold.
  • the switching control unit D36 selects one of the memory areas MB and MC in the MLC area (the memory area MB in the example of FIG. 81), and saves the data Db of the selected memory area MB.
  • the memory area MD of As to which of the memory areas MB and MC of the MLC area is to be selected the memory area of the MLC area in which no data is stored may be preferentially selected, and data of low importance based on the coloring table 14
  • the memory area of the MLC area storing the data may be preferentially selected, or the memory area of the MLC area having a low write consumption rate, read exhaustion rate, and low erase consumption rate may be preferentially selected. This selection can be changed in various ways.
  • the coloring table 14 is referred to as a transfer destination (save destination) of the data Db of the memory area MB, and among the data included in the data Db, data with high access frequency is saved in the SLC area and included in the data Db. Among the data to be accessed, data with low access frequency may be saved in the MLC area.
  • step OA3 the switching control unit D switches the memory MB of the selected MLC to SLC, and changes the SLC / MLC area information of the memory area MB.
  • step OA4 the switching control unit D36 moves the data Da of the memory area MA of the SLC to be switched to the memory area MB newly switched to SLC.
  • step OA5 the switching control unit D36 switches the memory area MA of the SLC to be switched to the MLC, and changes the SLC / MLC area information of the memory area MA.
  • the address conversion information 13 is updated as the data moves, and the physical address of the data move destination is associated with the logical address of the data.
  • the memory usage information 11 is updated.
  • FIG. 82 is a state transition diagram showing a second example of switching control of a memory area by the switching control unit D36 according to the present embodiment.
  • the order of the processes described in the respective steps OB1 to OB5 in FIG. 82 may be changed as long as switching between SLC and MLC, data movement, and information update are normally performed.
  • step OB1 the memory area MA of the non-volatile semiconductor memory is SLC, and the memory areas MB, MC, MD of the non-volatile semiconductor memory are MLC. Data Da, Db and Dc are stored in memory areas MA, MB and MC, respectively.
  • the memory area MD is a save area.
  • step OB1 it is assumed that the write consumption rate of the memory area MA exceeds the SLC threshold.
  • step OB2 the switching control unit D36 moves the data Da of the memory area MA to the memory area MD for saving.
  • step OB3 the switching control unit D36 selects one of the memory areas MB and MC of the MLC (the memory area MB in the example of FIG. 82), and saves the data Db of the selected memory area MB. Move to the memory area MD of
  • step OB4 the switching control unit D36 switches the memory area MA of SLC to MLC, and switches the memory area MB of MLC to SLC. Furthermore, SLC / MLC area information of the memory areas MA and MB is changed.
  • step OA5 the switching control unit D36 moves the data Da in the memory area MD for saving to the memory area MB switched to SLC, and the memory changes the data Db in the memory area MD for saving to MLC Move to area MA.
  • the address conversion information 13 is updated as the data moves, and the physical address of the data move destination is associated with the logical address of the data.
  • the memory usage information 11 is updated.
  • the coloring table 17 is referred to as described in the first embodiment, and data with high access frequency is written to the SLC area (arrangement ), Write (place) data with low access frequency to the MLC area.
  • the SLC region can be dynamically switched to the MLC region according to the use situation of the nonvolatile semiconductor memories 9 and 10, and the MLC region can be dynamically switched to the SLC region.
  • Can. By switching the SLC area to the MLC area, it is possible to use the SLC area with a high write consumption rate as the MLC area. Furthermore, by switching the MLC region to the SLC region, the MLC region having a low write consumption rate can be used as the SLC region. As a result, the lifetimes of the nonvolatile semiconductor memories 9 and 10 can be extended, and the nonvolatile semiconductor memories 9 and 10 can be used efficiently.
  • the present embodiment is a modification of the first embodiment.
  • a memory management device for expanding the address space used by the processors 3a, 3b and 3c will be described.
  • FIG. 83 is a block diagram showing an example of the relationship between the memory management device and the address space according to the present embodiment.
  • the processor 3b is described as a representative, but the same applies to the other processors 3a and 3c.
  • the memory management device 1 described in the first embodiment performs address conversion between the logical address space E32 of the memory and the physical address space E33 of the memory, and determines the write destination of the data.
  • the physical address space E33 of the memory includes the physical address space of the mixed main memory 2.
  • the memory physical address space E33 may further include the physical address space of another memory.
  • the memory logical address space E32 corresponds to the processor physical address space E34 for the processor 3b.
  • On the processor physical address space E34 for example, data management based on the file systems E34a and E34b is realized.
  • the processor 3 b includes a memory management device E35.
  • the processor 3 b and the memory management device E 35 may have different structures.
  • the processor 3b is executing a plurality of processes Pc1 to Pcn.
  • the plurality of processes Pc1 to Pcn use processor logical address spaces PLA1 to PLAn, respectively.
  • the processor logical address spaces PLA1 to PLAn are CPU logical address spaces.
  • Processor logical address spaces PLA1 to PLAn have memory windows MW1 to MWn, respectively.
  • a part of data in the processor physical address space E34 is mapped (ie, copied or mapped) to the memory windows MW1 to MWn.
  • the processor 3b can access data of the memory windows MW1 to MWn in parallel in the plurality of processes Pc1 to Pcn, and can execute the plurality of processes Pc1 to Pcn at high speed.
  • the processor 3b can use virtually wide address space by using the memory windows MW1 to MWn.
  • the processor 3b updates data of the memory windows MW1 to MWn, whereby newly necessary data is stored in the memory windows MW1 to MWn. Is mapped to
  • the processor 3b can access the processor physical address space E34 via the memory windows MW1 to MWn.
  • the memory management device E35 has the same configuration as the memory management device 1 described in the first embodiment.
  • the memory management device E35 further implements the function of the processor 3b as an MMU, but the memory management device E35 and the MMU of the processor 3b may have different structures.
  • the most significant feature of the memory management device E35 is that address conversion and data write destination determination are performed between the processor logical address space PLA1 to PLAn and the processor physical address space E34.
  • the information storage unit 17 of the memory management device E35 stores memory usage information E36, memory specific information E37, coloring table E38, and address conversion information E39.
  • the processing unit 15 of the memory management device E35 refers to or updates the memory usage information E36, the memory specific information E37, the coloring table E38, and the address conversion information E39 of the information storage unit 17 while using the working memory 16. The same processing as the processing described in the first embodiment is performed.
  • the memory use information E36 includes, for example, the number of write occurrences and the number of read occurrences of each address area of the processor physical address space E34, and the number of erasures of each block area.
  • the memory use information E 36 indicating the use state of each address area of the processor physical address space E 34 can be calculated based on, for example, the memory use information 11 and the address conversion information 13 managed by the memory management device 1.
  • the memory specific information 12 corresponds to, for example, a memory type of each address area of the processor physical address space E34 (for example, whether it corresponds to the volatile semiconductor memory 8 or SLC non-volatile semiconductor memory 9 or MLC non-volatile semiconductor Whether it corresponds to the memory 10) memory size of volatile semiconductor memory 8, memory size of nonvolatile semiconductor memories 9, 10, page size and block size of nonvolatile semiconductor memories 9, 10, access to each address area is possible
  • the upper limit number of times (the upper limit number of times which can be written, the upper limit number of times which can be read, the upper limit number of times which can be erased) is included.
  • the memory unique information E 37 indicating the unique information of each address area of the processor physical address space E 34 can be calculated based on, for example, the memory unique information 12 managed by the memory management device 1 and the address conversion information 13.
  • the coloring table E38 associates the processor logical address with the coloring information of the data indicated by the processor logical address.
  • the address conversion information E39 is information in which a processor logical address is associated with a processor physical address.
  • the address conversion information E39 is updated to indicate the updated state when the memory windows MW1 to MWn are updated.
  • the processing unit 15 uses the processor logical address space PLA1 to PLAn and the processor based on the memory usage information E36, the memory specific information E37, the coloring table E38, and the address conversion information E39. Address conversion and data write destination determination are performed with the physical address space E34.
  • the processing unit 15 performs control not to execute the write back process from the memory windows MW1 to MWn to the processor logical address space E34 with respect to read only data whose data write frequency is 0. .
  • the processing unit 15 when the processing unit 15 is the type of data to be read and written, and the values of the memory windows MW1 to MWn differ from the value of the processor physical address space E34 (in the case of dirty data) , Write back the values of the memory windows MW1 to MWn to the processor logical address space E34.
  • the processing unit 15 does not perform write back from the memory windows MW1 to MWn to the processor logical address space E34, even if this data is dirty data. .
  • the processing unit 15 sets the static writing frequency SW_color, the static reading frequency SR_color, the static erasing frequency SE_color, the dynamic writing frequency DW_color, the dynamic reading frequency DR_color, Data is distributed to the volatile semiconductor memory 8 and the nonvolatile semiconductor memories 9 and 10 based on the target erase frequency DE_color and the data type.
  • FIG. 84 is a flowchart showing an example of the write operation by the processor 3b and the memory management device E35 according to the present embodiment.
  • FIG. 84 shows an example of processing in the case where writing of data to memory windows MW1 to MWn occurs and then a change of the processor physical address area allocated to memory windows MW1 to MWn occurs.
  • step EM1 the memory management device E35 initially allocates one of the processor physical address areas to the memory windows MW1 to MWn, and generates address conversion information E39.
  • the processor physical address area assigned to the memory windows MW1 to MWn is the memory area of the volatile semiconductor memory 8, the memory area of the SLC non-volatile semiconductor memory 9, or any memory area of the MLC non-volatile semiconductor memory 10. May correspond to
  • step EM2 the processor 3b writes data in the memory windows MW1 to MWn.
  • the memory management device E35 updates the coloring information (for example, the number of times of writing DWC_color, the dynamic writing frequency DW_color, etc.) of the data to be written.
  • the memory management device E35 stores the memory usage information E36, the memory specific information E37, the coloring table E38, and the address conversion information E39. Based on this, the write destination of the write target data to the processor physical address space E34 is determined, and the memory management device E35 updates the memory use information E36 and the address conversion information E39. Furthermore, the memory management device E35 writes the write target data in the determined processor physical address area.
  • the memory management device E35 writes the write target data to any memory area among the memory area of the volatile semiconductor memory 8, the memory area of the SLC non-volatile semiconductor memory 9, and the memory area of the MLC non-volatile semiconductor memory 10. Decide whether to write.
  • step EM4 the processor 3b generates data accesses to other processor physical address areas not allocated to the memory windows MW1 to MWn.
  • step EM5 the memory management device E35 changes the assignment of processor physical address areas to the memory windows MW1 to MWn, and updates the address conversion information E39. In addition.
  • the assignment change of the processor physical address area to the memory windows MW1 to MWn is performed by, for example, a system call of the operating system 27.
  • the base address is changed. In fact, the processor page table entries are changed.
  • the memory management device E35 performs write back on the data of the memory windows MW1 to MWn before the change, and updates coloring information and memory use information E36 of this data.
  • step EM6 the processor 3b uses the data stored in the changed memory windows MW1 to MWn.
  • the processor physical address space E34 larger than the logical address space PLA1 to PLAn can be used, and the processor physical address of the processor 3b Space E34 can be expanded.
  • coloring information can be used to efficiently map data between the memory windows PLA1 to PLAn and the processor physical address space E34.
  • the determination of the write destination of data in the processor physical address space E34 is performed based on the memory usage information E36, the memory specific information E37, and the coloring information of the coloring table E38.
  • the data write destination to the processor physical address space E34 may be determined using at least one of the memory usage information E36, the memory specific information E37, and the coloring table E38.
  • processor logical address spaces PLA to PLn are formed for each of a plurality of processes Pc1 to Pcn, and memory windows MW1 to MWn are used in each of them.
  • an operation to access a memory such as the mixed main memory 2 is performed in parallel, and a plurality of processes Pc1 to Pcn can be executed at high speed.
  • the present embodiment is an information processing apparatus (server apparatus) that shares coloring information used in the memory management apparatus 1 according to the first embodiment and transmits the shared coloring information to the information processing apparatus 100. is there.
  • the operating system 27 when the processor 3a, 3b, 3c executes the processes 6a, 6b, 6c to generate new data, the operating system 27 generates the new generated data. Based on the type, static color information is generated, and static color information is added to the newly generated data.
  • the memory management device 1 refers to the static color information of the data to determine the memory area to be written, etc. Can extend the life of Therefore, the lifetime of the nonvolatile semiconductor memories 9 and 10 can be further extended by optimizing the coloring information including the static color information.
  • FIG. 85 is a diagram illustrating an example of the configuration of the information processing device and the network system according to the present embodiment.
  • the network system K32 has a configuration in which an information processing apparatus K33, a profile generation terminal K34, and user terminals 100A and 100B are communicably connected via a network K35.
  • the network K35 is, for example, various communication media such as the Internet, LAN (Local Area Network), etc., and may be wireless or wired.
  • the configuration of the profile generation terminal K34 will be described.
  • the profile generation terminal K34 is, for example, a terminal of a program developer or maker.
  • the profile generation device K34 includes a setting unit K34a, a storage device K34b, and a communication unit K34c.
  • the setting unit K34a generates, for example, the profile information K36 based on setting operation by a program developer or the like, and stores the profile information K36 in the storage device K34b.
  • the storage unit K34b stores the profile information K36 generated by the setting unit K34a.
  • the communication unit K34c transmits the profile information K36 stored in the storage device K34b to the information processing device K33 via the network K35.
  • the configuration of the user terminals 100A and 100B will be described.
  • the user terminals 100A and 100B correspond to the information processing apparatus 100 of the first embodiment, and include a memory management apparatus 1 and a mixed main memory 2.
  • a coloring table 17 is stored in the information storage unit 17 and the mixed main memory 2 of the memory management device 1 provided in the user terminals 100A and 100B.
  • the user terminals 100A and 100B generate the profile information K37 and K38 automatically or according to the instruction of the user. Details of generation of profile information will be described later.
  • the user terminals 100A and 100B transmit the profile information K37 and K38 to the information processing apparatus K33 via the network K35.
  • the user terminals 100A and 100B download (receive) the profile information from the information processing device K33 automatically or according to the instruction of the user.
  • the operating system 27 of the user terminals 100A and 100B refers to the downloaded profile information when generating coloring information for data.
  • the operating system 27 of the user terminals 100A and 100B generates static color information for the data based on the profile information and stores the static color information in the coloring table 14.
  • the configuration of the information processing device K33 will be described.
  • the information processing apparatus K33 includes a communication unit K33a, a profile information management unit K33b, and a storage device K33c.
  • the profile information management unit K33 may be realized by hardware or may be realized by cooperation of software and hardware such as a processor.
  • the communication unit K33a transmits and receives profile information K36 to K38 between the profile generation terminal K34 and the user terminals 100A and 100B.
  • the profile information management unit K33b stores the profile information received via the communication unit K33a in the storage device K33c. Also, the profile information management unit K33b transmits profile information to the user terminals 100A and 100B and the profile generation terminal K34 via the communication unit K33a.
  • the storage device K33c stores profile information. Further, the storage device K33 c stores the service data K40. The service data K40 will be described later.
  • profile information is information to be referred to when the operating system 27 in the user terminals 100A and 100B adds (generates) static color information to data.
  • the profile information is, for example, information in which data identification information, coloring information, and generator identification information are associated.
  • the data identification information corresponds to, for example, the data format of FIGS. 9 and 10 in the first embodiment.
  • file identification information such as file name, file extension, etc., information on the position (for example, directory) where data is arranged on the file system, etc. are used.
  • the coloring information includes the static color information described above.
  • Static color information is a value set for each piece of data identification information. For example, as shown in FIGS. 9 and 10 of the first embodiment, the static writing frequency SW_color, the static reading frequency SR_color, the data life Contains SL_color.
  • the generator identification information is information for identifying a generator of profile information.
  • the generator identification information is additional information and is added as needed.
  • the user terminals 100A and 100B hold data identification information and coloring information for the data identification information shown in FIG. 9 and FIG.
  • the user terminals 100A and 100B generate profile information based on the held data identification information and coloring information.
  • the user terminals 100A and 100B may generate profile information from the coloring table 14 managed by the memory management device 1.
  • the index generated based on the logical address specifying the data and the coloring information of the data are managed in entry units.
  • the user terminals 100A and 100B identify the data specified by the logical address from this index, and extract the data identification information of the data.
  • the user terminals 100A and 100B calculate static color information of the data and dynamic color information (for example, dynamic writing frequency DW_color, dynamic reading frequency DR_color). Furthermore, if necessary, the user terminals 100A and 100B change the dynamic color information into the same data format as the static color information.
  • the user terminals 100A and 100B generate profile information based on the static color information, the coloring information including the dynamic color information, the data identification information, and the creator identification information.
  • profile information from coloring information including dynamic color information
  • a software maker who has developed a new application may use the profile generation terminal K34 to register, in the information processing apparatus K33, profile information K36 related to a file dedicated to the new application.
  • the service data K40 includes explanatory data of various profile information K36 to K38 stored in the storage device K33c, and various advertising data.
  • the service data K40 is transmitted from the information processing device K33 to the user terminals 100A and 100B.
  • the user terminals 100A and 100B use the browser to display the service data K40.
  • the user can determine the profile information to be downloaded with reference to the explanation data of service data K40. .
  • advertisement data of profile information For example, by including advertisement data of profile information, advertisement data of information equipment, advertisement data of nonvolatile semiconductor memory, etc. in service data K40, downloading of profile information, replacement of information equipment, replacement of nonvolatile semiconductor memory It is possible to recommend a specific product to the user who is considering etc.
  • the profile information management unit K33b applies a statistical method to the profile information K36 to K38 stored in the storage device K33c, and transmits the profile information obtained as a result to the user terminals 100A and 100B. It may be As a statistical method, for example, for coloring information associated with the same data identification information, a method of calculating an average value, calculating a median value, or the like can be used.
  • the profile information managing unit K33 b may calculate the average or median of the static writing frequency SW_color for a plurality of coloring information associated with the same data identification information, the average or median of the static reading frequency SR_color, the data life Profile information including an average or median of SL_color, an average or median of dynamic writing frequency DW_color, and an average or median of dynamic reading frequency DR_color is generated, and the generated profile information is used as the user terminal 100A. , 100B.
  • the profile information management unit K33b counts the number of times the profile information K36 to K38 has been downloaded by the browser of the user terminals 100A and 100B.
  • the profile information management unit K33b multiplies the number of downloads of each piece of profile information K36 to K38 by the download fee per profile information K36 to K38, and calculates the compensation fee for the creator of each piece of profile information K36 to K38. Then, the profile information management unit K33b generates reward information to which rewards are allocated for the creator identification information of each of the profile information K36 to K38, and stores the reward information in the storage device K33c.
  • the profile information management unit K33b is configured to, in response to a download request from the user terminals 100A and 100B, for each piece of downloaded profile information with respect to identification information (for example, a user ID etc.) identifying download request sources.
  • identification information for example, a user ID etc.
  • the usage charge information to which the usage charge is assigned is generated, and the usage charge information is stored in the storage device K33c.
  • FIG. 86 is a flowchart showing an example of processing of the profile information management unit K33b according to the present embodiment.
  • step C1 the profile information managing unit K33b determines whether any one of the profile information K36 to K38 has been received from one of the profile generation terminal K34 and the user terminals 100A and 100B.
  • the profile information managing unit K33b stores the received profile information in the storage device K33c.
  • step C3 the profile information management unit K33b determines whether a download request has been received from any of the user terminals 100A and 100B.
  • step C6 If no download request has been received, the process proceeds to step C6.
  • step C4 the profile information managing unit K33b reads out the profile information corresponding to the received download request from the storage device K33c.
  • step C5 the profile information managing unit K33b transmits the read profile information to the user terminal of the transmission source of the download request.
  • step C6 the profile information management unit K33b determines whether the processing has ended. If the process has not ended, the process returns to step C1.
  • FIG. 87 is a flowchart showing an example of the upload process of the profile information K37 by the user terminal 100A according to the present embodiment.
  • the upload process by the user terminal 100B is also substantially the same as that in FIG.
  • step UL1 the user terminal 100A, for example, automatically or according to a user's instruction, data identification information for data, coloring information associated with this data in the coloring table 14, generator identification information In combination, profile information K37 is generated.
  • step UL2 the user terminal 100A transmits the generated profile information K37 to the information processing device K33 via the network K35.
  • FIG. 88 is a flowchart showing an example of download processing of profile information by the user terminal 100A according to the present embodiment.
  • the download process of the user terminal 100B is also substantially the same as that of FIG.
  • step DL1 the user terminal 100A transmits a download request including data identification information to the information processing apparatus K33 via the network K35, for example, automatically or according to a user's instruction.
  • step DL2 the user terminal 100A receives profile information from the information processing device K33 via the network K35 as a reply to the download request.
  • step DL3 the operating system 27 of the user terminal 100A controls the static color information included in the received profile information for the data corresponding to the data identification information of the received profile information in the coloring table 14.
  • step DL4 the memory management device 1 of the user terminal 100A determines whether dynamic color information is included in the received profile information.
  • the process ends.
  • step DL5 the memory management device 1 controls the data corresponding to the data identification information of the received profile information in the coloring table 14. Stores dynamic color information contained in received profile information.
  • coloring information used in the memory management device 1 is generated by a large number of persons such as a maker or a user, and the generated coloring information is shared.
  • a charge can be paid to the creator of the coloring information according to the number of times the coloring information is browsed or downloaded.
  • the operator of the information processing apparatus K33 can collect a large amount of coloring information, and can quickly perform various services related to the coloring information.
  • coloring information can be shared, and development of the memory management apparatus 1 and the mixed main memory 2 can be speeded up. And the mixed main memory 2 can be spread.
  • the present embodiment is a modification of the first embodiment.
  • a memory management apparatus that accesses a memory connected via a network will be described.
  • FIG. 89 is a block diagram showing an example of a network system according to the present embodiment.
  • the network system N37 includes an information processing device N37A and an information processing device N37B.
  • the information processing device N37A and the information processing device N37B are connected via the network N38. Since the information processing device N37A and the information processing device N37B have equivalent functions, the information processing device N37A will be described in detail below.
  • the network system N37 may include three or more information processing apparatuses.
  • the information processing device N37A includes a processor 3A, a memory management device N32A, a volatile semiconductor memory 8A, a nonvolatile semiconductor memory 9A, and a network interface device N39A.
  • the processor 3A is connected to the volatile semiconductor memory 8A, the nonvolatile semiconductor memory 9A, and the network interface device N39A via the memory management device N32A.
  • the processor 3A may include a cache memory internally, but the description is omitted in FIG.
  • the information processing device N37A may include a plurality of processors 3A.
  • the volatile semiconductor memory 8A is the same as the volatile semiconductor memory 8 of the first embodiment.
  • the nonvolatile semiconductor memory 9A is similar to the nonvolatile semiconductor memory 9 or the nonvolatile semiconductor memory 10 of the first embodiment.
  • volatile semiconductor memory 8A and nonvolatile semiconductor memory 9A are used as main memories of information processing device N37A.
  • the volatile semiconductor memory 8A and the non-volatile semiconductor memory 9A process information by storing data having a high access frequency or data having a high degree of importance for the information processing apparatus N37A among the data of the other information processing apparatus N37B.
  • the volatile semiconductor memory 8A is used as a primary cache memory in the information processing device N37A
  • the non-volatile semiconductor memory 9A is used as a secondary cache memory in the information processing device N37A.
  • the network interface device N39A exchanges network logical addresses or data with the network interface device N39A of the other information processing device N37B via the network N38.
  • FIG. 90 is a block diagram showing an example of a configuration of a memory management device N32A according to the present embodiment.
  • the processing unit N33A of the memory management device N32A performs network address conversion.
  • a unit N34 and a communication unit N35 are provided.
  • the network address conversion unit N34 has a short address length logical address (hereinafter referred to as a “processor logical address”) used in the processor 3A and a long address length used in a plurality of information processing apparatuses connected by a network. It is converted to a logical address (hereinafter referred to as "network logical address"). For example, in this address conversion, a hash function is used.
  • the processor logical address is a pointer stored in a register.
  • the working memory 16 stores an address length conversion table AT.
  • the network address conversion unit N34 converts the processor logical address into a network logical address by referring to the address length conversion table AT.
  • address length conversion table AT is stored in the work memory 16, it may be stored in the information storage unit 17.
  • the communication unit N35 transmits and receives data specified by the network logical address and the network logical address via the network N38 using the network interface device N39A.
  • memory usage information 11 is the entire network system N37 (in the example of FIG. 90, memory usage information 11 is volatile semiconductor memory 8A, nonvolatile semiconductor memory 9A, volatile semiconductor memory 8B, nonvolatile This shows the use state of the memory area of the semiconductor memory 9B).
  • the memory specific information 12 represents the specific information of the memory area of the entire network system N37.
  • the address conversion information 13 indicates the relationship between the network logical address and the physical address used in the entire network system N37.
  • the coloring table 14 includes coloring information of each data in the entire network system N37.
  • a unique address is assigned to all data.
  • the number of required address bits becomes large, for example, 128 bits.
  • the registers of the processors 3A and 3B are assumed to be 32 bits or 64 bits. In this case, it is necessary to convert the processor logical address of the number of bits of the register into the number of bits of the network logical address.
  • the network address conversion unit N34 provided in the memory management devices N32A and N32B executes this conversion process.
  • the memory management unit N32A receives a processor logical address from the processor 3A and converts the processor logical address to a network logical address. Then, memory management device N 32 A does not store data corresponding to the network logical address in any of the memories of information processing device N 37 A (in FIG. 90, volatile semiconductor memory 8 A and nonvolatile semiconductor memory 9 A).
  • the network logical address is sent to the other information processing apparatus N37B via the network interface apparatus N39A and the network N38.
  • the memory management device N32B of the information processing device N37B receives data corresponding to the network logical address from the information processing device N37A via the network N38 and the network interface device N39B.
  • the memory management device N32B is based on the address conversion information 13 when the received network logical address is stored in the memory of the information processing device N37B (the volatile semiconductor memory 8B or the nonvolatile semiconductor memory 9B in FIG. 90). Converts the network logical address into a physical address and reads the data.
  • the memory management device N32B sends the read data to the information processing device N37A via the network interface device N39A and the network N38.
  • the memory management device N32A of the information processing device N37A receives the read data from the information processing device N37B via the network N38 and the network interface device N39A.
  • the memory management device N32A returns the read data to the processor 3A.
  • the memory management device N32A refers to the coloring table 14 and, when the access frequency or the importance of the read data is equal to or more than a predetermined value, this data is stored in the volatile semiconductor memory 8A or the nonvolatile semiconductor memory 9A.
  • Write, update address conversion information 13 In this writing, the writing destination is determined by the same method as in the first embodiment.
  • the memory management device N32A receives a processor logical address and data to be written from the processor 3A, and converts the processor logical address to a network logical address. Then, when the network logical address indicates the other information processing apparatus N37B, the memory management apparatus N32A sends the network logical address and the write target data to the other information processing apparatus N37B via the network interface apparatus N39A and the network N38.
  • the memory management device N32B of the information processing device N37B receives the network logical address and the write target data from the information processing device N37A via the network N38 and the network interface device N39B.
  • the memory management device N 32 B converts the network logical address into a physical address based on the address conversion information 13 and writes the write target data in the memory area indicated by the physical address.
  • the memory management device N32A of the information processing device N37A manages memory use information 11 and memory specific information 12 for the volatile semiconductor memory 8A, the nonvolatile semiconductor memory 9A, the volatile semiconductor memory 8B, and the nonvolatile semiconductor memory 9B.
  • the memory management device N32A includes coloring information of each data stored in the volatile semiconductor memory 8A, the nonvolatile semiconductor memory 9A, the volatile semiconductor memory 8B, and the nonvolatile semiconductor memory 9B in a coloring table 14 Manage with
  • the memory management device N32A is a volatile semiconductor connected via the network N38 in addition to the volatile semiconductor memory 8A and the nonvolatile semiconductor memory 9A based on the memory usage information 11, the memory specific information 12, and the coloring table 14. Also for the memory 8B and the nonvolatile semiconductor memory 9B, the writing destination is determined so as to extend the life of the nonvolatile semiconductor memories 9A and 9B.
  • the memory management device N32A of the information processing device N37A is the volatile semiconductor memory 8A of the information processing device N37A or data D1 of the main body with high frequency of access from the information processing device N37A to the other information processing device N37B.
  • the data is copied to the nonvolatile semiconductor memory 9A and stored as data D1c.
  • the memory management device N32A refers to the coloring table 14 and stores data D1 stored in another information processing device N37B and having an access frequency equal to or higher than a predetermined level, the volatile semiconductor memory 8A of the information processing device N37A or non-volatile It stores it as the data D1c copied to the memory semiconductor memory 9A.
  • the memory management devices N32A and N32B are the information processing device N37A.
  • the data D1c copied to is managed as the main body.
  • the memory management devices N32A and N32B manage the data D1c of the information processing device N37A as a main body.
  • data D1c copied to information processing device N37A is managed as a main body
  • data D1 of information processing device N37B is maintained as it is, and different addresses (IDs) are assigned to data D1 and D1c. Good. Another address may be assigned to the original data D1 or may be assigned to the copied data D1c.
  • the original data D1 may be deleted.
  • management such as updating data D1 of the main body is performed so that collision of data D1 and D1c does not occur. I do.
  • FIG. 91 is a block diagram showing a first relationship between a processor logical address and a network logical address according to the present embodiment.
  • the upper address P1u of the processor address Pr1 is 32 bits
  • the lower address P1d is 32 bits
  • the combination of the upper address N1u and the middle address N1m of the network logical address N1 is 128 bits, and the lower address N1d is 32 bits.
  • the upper address N1u of the network logical address N1 indicates, for example, a carrier, and the middle address N1m of the network logical address N1 is, for example, a processor-specific value.
  • the upper address N1u and the middle address N1m of the network logical address N1 are addresses related to the network, and are, for example, an IP address, IPv4 or the like.
  • the combination of the upper address N1u and the middle address N1m of the network logical address N1 is translated by the hash function N40.
  • the upper address P1u of the processor logical address Pr1 having a smaller number of bits than the upper address N1u and the middle address N1m of the network logical address N1 is obtained.
  • the upper address P1u of the processor logical address Pr1 is used as a key in conversion from the processor logical address Pr1 to the network logical address N1.
  • the lower address N1d of the network logical address N1u is used as it is as the lower address P1d of the processor logical address Pr1.
  • the upper address N1u and the middle address N1m of the network logical address N1 are stored at the position indicated by the upper address P1u of the processor logical address Pr1 in the address length conversion table AT1.
  • the network address conversion unit N34 When converting the processor logical address Pr1 to the network logical address N1, the network address conversion unit N34 refers to the position indicated by the upper address P1u of the processor logical address Pr1 in the address length conversion table AT1 and stores the network stored in this position. An upper address N1u and a middle address N1m of the logical address N1 are obtained.
  • the network address conversion unit N 34 obtains the network logical address N 1 by combining the lower address P 1 d of the processor logical address Pr 1 with the upper address N 1 u and the middle address N 1 m of the obtained network logical address N 1.
  • the address length conversion table AT1 has an address length conversion flag indicating whether each entry is valid.
  • the network address conversion unit N34 refers to the address length conversion flag of the registration destination when registering an entry in the address length conversion table AT1. When the address length conversion flag is invalid, the network address conversion unit N34 directly registers in the entry. The network address conversion unit N34 executes exception handling when the address length conversion flag is valid. This can prevent duplicate registration in the entry.
  • FIG. 92 is a block diagram showing a second relationship between the processor logical address Pr2 and the network logical address N2 according to the present embodiment.
  • the middle address N2m of the network logical address N2 is used as the upper address P2u of the processor logical address Pr2.
  • the upper address P2u of the processor logical address Pr2 is used as a key in conversion from the processor logical address Pr2 to the network logical address N2.
  • the lower address N2d of the network logical address N2 is used as it is as the lower address P2d of the processor logical address Pr2.
  • the upper address N2u and the middle address N2m of the network logical address N2 are stored at the position indicated by the upper address P2u of the processor logical address Pr2 in the address length conversion table AT2.
  • the network address conversion unit N34 When converting the processor logical address Pr2 to the network logical address N2, the network address conversion unit N34 refers to the position indicated by the upper address P2u of the processor logical address Pr2 in the address length conversion table AT2 and stores the network stored in this position. An upper address N2 u and a middle address N2 m of the logical address N2 are obtained.
  • the network address conversion unit N 34 obtains the network logical address N 2 by combining the lower address P 2 d of the processor logical address Pr 2 with the upper address N 2 u and the middle address N 2 m of the obtained network logical address N 2.
  • FIG. 93 is a block diagram showing a third relationship between a processor logical address and a network logical address according to the present embodiment.
  • the middle address N3m and the lower address N3d of the network logical address N3 are used as the upper address P3u and the lower address P3d of the processor logical address Pr3.
  • the upper address P3u of the processor logical address Pr3 is used as a key in the conversion from the processor logical address Pr3 to the network logical address N3.
  • the upper address N3u of the network logical address N3 is stored at the position indicated by the upper address P3u of the processor logical address Pr3 in the address length conversion table AT3.
  • the network address conversion unit N34 When converting the processor logical address Pr3 into the network logical address N3, the network address conversion unit N34 refers to the position indicated by the upper address P3u of the processor logical address Pr3 in the address length conversion table AT3 and stores the network stored in this position. An upper address N3u of the logical address N3 is obtained.
  • the network address conversion unit N34 obtains the network logical address N3 by combining the upper address P3u of the processor logical address Pr3 and the lower address P3d with the upper address N3u of the obtained network logical address N3.
  • FIG. 94 is a block diagram showing a fourth relationship between a processor logical address and a network logical address according to the present embodiment.
  • the network address conversion unit N34 extracts a value at n bit intervals from the combination of the upper address N4u and the middle address N4m of the network logical address N4, and sets the extracted value as the upper address P4u of the processor logical address Pr4. .
  • the upper address P4u of the processor logical address Pr4 having a smaller number of bits than the upper address N4u and the middle address N4m of the network logical address N1 is obtained.
  • the upper address P4u of the processor logical address Pr4 is used as a key in conversion from the processor logical address Pr4 to the network logical address N4.
  • FIG. 95 is a block diagram showing a fifth relationship between a processor logical address and a network logical address according to the present embodiment.
  • the network address conversion unit N34 sets a value obtained by dividing the combination of the upper address N5u and the middle address N5m of the network logical address N5 by the value P (for example, a prime number) as the upper address P5u of the processor logical address Pr5.
  • P for example, a prime number
  • the network address conversion unit N34 converts a part of the network logical addresses N1 to N5 into a part of the processor logical addresses Pr1 to Pr5 by using the conversion table instead of the hash function N40, and the processor logical addresses Pr1 to Pr Part of Pr5 may be used as a key for address length conversion.
  • the network address conversion unit N34 creates a table for registering a part or all of the network logical addresses N1 to N5, and converts the addresses of this table from the processor logical addresses Pr1 to Pr5 to the network logical addresses N1 to N5. It may be used as a key.
  • each of the plurality of information processing devices N37A and N37B may manage the table. More preferably, a table is shared among a plurality of information processing devices N37A and N37B connected to network N38, and each of information processing devices N37A and N37B locally stores a copy of the table in a cache memory or the like. It is also good.
  • lower addresses N1d to N5d of network logical addresses N1 to N5 and lower addresses P1d to P5d of processor logical addresses Pr1 to Pr5 are used without being converted.
  • the lower addresses N1d to N5d of to N5 and the lower addresses P1d to P5d of the processor logical addresses Pr1 to Pr5 may be converted.
  • FIG. 96 is a block diagram showing an example of a virtual address space of the network system N37 according to the present embodiment.
  • FIG. 97 is a block diagram showing a first example of configurations of a processor logical address and a network logical address according to the present embodiment.
  • the processor logical address N42 includes a conversion key, a file address and an offset.
  • the network address conversion unit N34 converts the processor logical address N42 into the network logical address N43.
  • the network logical address N43 includes processor identification information (for example, identification information of an operator and an information processing apparatus), a file address and an offset.
  • the memory management device N32A transmits the network logical address N43 to the memory management device N32B via the network N38. Then, the memory management device N32B reads the data specified by the file address and the offset of the network logical address N43, and returns the data to the memory management device N32A.
  • FIG. 98 is a block diagram showing a second example of configurations of a processor logical address and a network logical address according to the present embodiment.
  • Processor logical address N44 includes a conversion key and an offset.
  • the network address conversion unit N34 converts the processor logical address N44 into the network logical address N45.
  • the network logical address N45 includes processor identification information, a file address, and an offset.
  • the memory management device N32A transmits the network logical address N45 to the memory management device N32B via the network N38. Then, the memory management device N32B reads the data specified by the file address and the offset of the network logical address N45, and returns the data to the memory management device N32A.
  • FIG. 99 is a block diagram showing a third example of configurations of a processor logical address and a network logical address according to the present embodiment.
  • the processor logical address N46 includes a conversion key and a file address.
  • the network address conversion unit N34 converts the processor logical address N46 into the network logical address N47.
  • the network logical address N47 includes processor identification information and a file address.
  • the memory management device N32A transmits the network logical address N47 to the memory management device N32B via the network N38. Then, the memory management device N32B reads the file data specified by the file address of the network logical address N47 and returns the file data to the memory management device N32A.
  • an 8-bit CPU Central Processing Unit
  • the number of bits of this 8-bit CPU is provided with an 8-bit register. Further, in a commonly used 8-bit CPU, the number of bits of the address is 16 bits.
  • a 16-bit CPU has a 16-bit register.
  • the number of bits of the address is 20 bits.
  • the general register stores both numerical values and addresses. Therefore, it is desirable that the number of bits of the numerical value and the number of bits of the address match. However, as described above, the number of register bits and the number of address bits may not match.
  • 64-bit CPUs are in widespread use.
  • a 64-bit CPU can provide sufficient operational accuracy. Therefore, the need for the number of register bits to exceed 64 bits is low. Further, it is considered difficult to provide the CPU with a register exceeding 64 bits from the viewpoint of carry processing of the adder of the CPU.
  • SLS single level store
  • the size of the virtual address may be It needs to be as large as 128 bits.
  • FIG. 100 is a diagram showing an example of calculation for estimating the number of address bits required to access data stored in a large number of devices connected to the network.
  • the address can be assigned to all data of the network system.
  • an address can be assigned to all data used in the network system N37.
  • each of the information processing devices N37A and N37B according to the present embodiment is a memory connected to the memory provided in the own device via the network N38 in management of access method, access frequency, access frequency, etc. It is not necessary to distinguish from.
  • the volatile semiconductor memory 8A and the nonvolatile semiconductor memory 9A on the network system N38, and the volatile semiconductor memory 8B and the nonvolatile semiconductor memory 9B can be used as the main memory.
  • each of the information processing devices N37A and N37B according to the present embodiment can use the memory in the own device as a cache memory for storing data stored in another device.
  • an address of a bit number larger than the bit number of the register of the processors 3A and 3B can be used, and a large memory space can be used.
  • access not performed via a network is performed by reading and writing to a storage device, and access performed via a network is performed by socket communication.
  • the access method differs between read and write and socket communication.
  • a special access method using, for example, a URL is used.
  • the storage device is accessed based on the network logical address regardless of whether it is accessed via the network, and the same access method is used.
  • an address length conversion flag is attached to the address length conversion tables AT, AT1 to AT5, whereby duplicate registration can be prevented.
  • any functional block shown in each embodiment can be combined appropriately, and can be divided appropriately.
  • only some steps of the flowcharts shown in the respective embodiments can be extracted and implemented, arbitrary steps can be appropriately combined, and can be appropriately divided.
  • the present invention is not limited to the above embodiment, and can be variously modified at the implementation stage without departing from the scope of the invention. Furthermore, the above embodiments include inventions of various stages, and various inventions can be extracted by appropriate combinations of a plurality of disclosed constituent requirements.

Abstract

 本発明の一例のメモリ管理装置(1)は、プロセッサ(6a)からの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ(9)及び揮発性半導体メモリ(8)を含む主記憶メモリ2に対する書き込み及び読み出しを制御する。メモリ管理装置(1)は、不揮発性半導体メモリ(9)及び揮発性半導体メモリ(8)の少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報(14)を保持するカラーリング情報保持部(17)と、カラーリング情報(14)を参照し、不揮発性半導体メモリ(9)及び揮発性半導体メモリ(8)から、書き込み対象データを書き込む領域を決定する書き込み管理部(15)とを具備する。

Description

メモリ管理装置
 本発明は、メモリに対するアクセスを管理するメモリ管理装置に関する。
 従来の情報処理装置においては、プロセッサの主記憶装置(メインメモリ)として、例えばDRAM(Dynamic Random Access Memory)などの揮発性半導体メモリが使用されている。さらに、従来の情報処理装置では、揮発性半導体メモリと組み合わせて、不揮発性半導体メモリが2次記憶装置として使用される。
 特開2008-242944号公報(文献1)には、統合メモリ管理装置が提案されている。この統合メモリ管理装置では、MPUに対するメインメモリとしてNAND型フラッシュメモリが用いられている。さらに、特許文献1では、MPUの1次キャッシュメモリと、2次キャッシュメモリと、メインメモリであるNAND型フラッシュメモリとが同一のメモリ階層で扱われる。統合メモリ管理装置のキャッシュコントローラは、1次キャッシュメモリ及び2次キャッシュメモリに対するメモリ管理に加えて、メインメモリに対するメモリ管理を実行する。
 特開平7-146820号公報(文献2)には、情報処理装置の主記憶装置としてフラッシュメモリを採用する技術が開示されている。特許文献2において、システムのメモリバスには、揮発性メモリであるキャッシュメモリを介して、フラッシュメモリが接続される。キャッシュメモリには、このキャッシュメモリに格納されているデータのアドレス又はアクセス履歴などの情報を記録するアドレスアレイが設けられる。コントローラは、アクセス先のアドレスを参照し、キャッシュメモリ又はフラッシュメモリのデータをメモリバスに供給し、あるいは、メモリバスのデータを格納する。
 特開2001-266580号公報(文献3)においては、種類の異なる半導体メモリ装置を共通のバスに接続することを可能にする発明が開示されている。
 この特許文献3の半導体メモリ装置は、ランダムアクセスメモリチップと、前記ランダムアクセスメモリチップを備えたパッケージを含む。前記パッケージは、前記ランダムアクセスメモリチップを外部装置に電気的に連結する複数のピンを有する。複数のピンは、前記ランダムアクセスメモリと、電気的に消去及びプログラム可能な不揮発性半導体メモリとに、共通にメモリ機能を提供する。前記複数のピンの各々は、不揮発性半導体メモリの対応するピンの位置に配列されている。
 本発明は、不揮発性半導体メモリを効率的に使用することが可能なメモリ管理装置を提供する。
 本発明の一態様によるメモリ管理装置は、プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御する。メモリ管理装置は、前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部と、前記カラーリング情報を参照し、前記不揮発性半導体メモリ及び前記揮発性半導体メモリから、前記書き込み対象データを書き込む領域を決定する書き込み管理部とを具備する。
 本発明によれば、不揮発性半導体メモリを効率的に使用することが可能なメモリ管理装置を提供できる。
図1は、本発明の第1の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図である。 図2は、第1の実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図である。 図3は、第1の実施形態に係る混成メインメモリのメモリマップの一例を示す図である。 図4は、第1の実施形態に係るアドレス変換情報の一例を示す図である。 図5は、第1の実施形態に係るカラーリングテーブルの一例を示す図である。 図6は、第1の実施形態に係る静的カラー情報の一例を説明するための図である。 図7は、第1の実施形態に係るデータ配置の処理の一例を示すフローチャートである。 図8は、第1の実施形態に係るカラーリングテーブルの構成の一例を示す図である。 図9は、各種データに対する静的カラー情報の設定の第1の例を示す図である。 図10は、各種データに対する静的カラー情報の設定の第2の例を示す図である。 図11は、第1の実施形態に係るカラーリングテーブルの生成処理の一例を示すフローチャートである。 図12は、第1の実施形態に係るカラーリングテーブルのエントリの生成処理の一例を示すフローチャートである。 図13は、カラーリングテーブルのエントリのアライメントの第1の例を示す図である。 図14は、カラーリングテーブルのエントリのアライメントの第2の例を示す図である。 図15は、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法の一例を示す図である。 図16は、第1の実施形態に係るデータの読み出し処理の一例を示すフローチャートである。 図17は、第1の実施形態に係るデータの読み出し方式の決定処理の一例を示すフローチャートである。 図18は、第1の実施形態に係るデータの書き込み処理の一例を示すフローチャートである。 図19は、第1の実施形態に係るデータの書き込み先領域の決定処理の一例を示すフローチャートである。 図20は、第1の実施形態に係るデータに対する書き込み対象ブロックの決定処理について説明するための図である。 図21は、不揮発性半導体メモリの任意のブロック領域における消去回数の推移の一例を示すグラフである。 図22は、ウェアレベリングにおいて消去回数の差に対する閾値を小さく設定した場合の変化の一例を示すグラフである。 図23は、消去回数に応じたブロック領域のグループ分けの一例を示すグラフである。 図24は、消去回数に応じたブロック領域のグループ分けの判断基準を表す図である。 図25は、ウェアレベリングにおけるブロック領域の検索の一例を示す図である。 図26は、キャッシュメモリを備えたメモリ管理装置の一例を示すブロック図である。 図27は、メモリ管理装置、混成メインメモリ、プロセッサの実装例を示すブロック図である。 図28は、第1の実施形態に係るメモリ管理装置と情報処理装置の別構成態様の一例を示すブロック図である。 図29は、複数の不揮発性半導体メモリを管理する複数のメモリ管理装置の一例を示す斜視図である。 図30は、第2の実施形態に係る揮発性半導体メモリの物理アドレス空間の一例を示す図である。 図31は、カラーリング情報と揮発性半導体メモリの領域の関係の一例を示す図である。 図32は、カラーリング情報と揮発性半導体メモリの領域の関係の他の例を示す図である。 図33は、第2の実施形態に係る揮発性半導体メモリの空き領域と使用領域を管理するためのデータ構造の一例を示す図である。 図34は、第2の実施形態に係る揮発性半導体メモリの書き込み処理の一例を示すフローチャートである。 図35は、第2の実施形態に係る揮発性半導体メモリの消去処理の一例を示すフローチャートである。 図36は、本発明の第3の実施形態に係るアドレス変換情報における不揮発性半導体メモリの有効/無効フラグの真理値を示す図である。 図37は、不揮発性半導体メモリの有効/無効フラグの状態遷移を示す図である。 図38は、第3の実施形態に係る混成メインメモリの解放要求時の処理を示すフロー図である。 図39は、図38中のメモリの解放要求時の揮発性半導体メモリの明示的な空き領域の形成を説明するための図である。 図40は、第3の実施形態に係る混成メインメモリの獲得要求時の処理を示すフロー図である。 図41は、図40中のメモリデータリード要求時の処理を示すフロー図である。 図42は、図40中のメモリデータライト要求時の処理を示すフロー図である。 図43は、本発明の第4の実施形態に係るメモリ管理装置の機能構成の要部の一例を示すブロック図である。 図44は、カラーリング情報で書き込み対象データを分類しない場合のブロックサイズのデータ構成の一例を示す図である。 図45は、カラーリング情報で書き込み対象データを分類する場合のブロックサイズのデータ構成の一例を示す図である。 図46は、第4の実施形態に係るアドレス変換情報と不揮発性半導体メモリの物理アドレス空間(NAND論理アドレス)との関係の一例を示す図である。 図47は、不揮発性半導体メモリの論物変換テーブル(NAND論物変換テーブル)の一例を示す図である。 図48は、予約リストの一例を示すデータ構造図である。 図49は、第4の実施形態に係るグループ値算出部と予約リスト管理部の処理の一例を示すフローチャートである。 図50は、第4の実施形態に係るアドレス変換情報の状態遷移の一例を示す図である。 図51は、第5の実施形態に係り、ダーティビットフィールドの一例を示す図である。 図52は、第5の実施形態に係るシャットダウン処理の一例を示すフローチャートである。 図53は、第5の実施形態に適用されるカラーリングテーブルの一例を示す図である。 図54は、第5の実施形態に係る先読みヒント情報の設定処理を示すフローチャートである。 図55は、第5の実施形態に係り、起動時のオペレーティングシステムの処理の一例を示すフローチャートである。 図56は、本発明の第6の実施形態に係る仮想アドレス空間内の仮想アドレス領域と属性情報との関係の一例を示すブロック図である。 図57は、オペレーティングシステムによる仮想アドレス領域データの第2の属性情報の設定処理の一例を示すフローチャートである。 図58は、仮想アドレス領域データに基づく静的カラー情報の設定の一例を示す図である。 図59は、コマンドとライブラリとの間の依存関係の一例を示す図である。 図60は、コマンドのスコアとライブラリのスコアの一例を示す図である。 図61は、コマンドのスコアに基づくライブラリのスコアの他の算出例を示す図である。 図62は、ライブラリのスコアを用いた静的カラー情報の設定の一例を示す図である。 図63は、コンパイラによってまとめられた変数又は関数の一例を示す図である。 図64は、コンパイラを用いた静的カラー情報の設定の一例を示す図である。 図65は、動的に生成されるメモリ領域の使用頻度に基づく静的カラー情報の設定の一例を示す図である。 図66は、本発明の第7の実施形態に係るメモリ管理装置、情報処理装置及びメモリ装置の構成の一例を示すブロック図である。 図67は、メモリユニットの消去回数の変化の一例を示すグラフである。 図68は、メモリ装置の消去回数に基づく、メモリ装置の使用状態の一例を示すグラフである。 図69は、メモリ装置の読み出し発生回数に基づく、メモリ装置の使用状態の一例を示すグラフである。 図70は、メモリ装置の消去回数に基づき、メモリ装置に使用状態を通知する処理の一例を示すフローチャートである。 図71は、メモリ装置の読み出し発生回数に基づき、メモリ装置に使用状態を通知する処理の一例を示すフローチャートである。 図72は、管理情報に含まれるデータの一例を示す図である。 図73は、メモリ管理装置にメモリ装置が電気的に接続されてから、メモリ装置にアクセスを開始するまでの処理の一例を示すフローチャートである。 図74は、メモリ管理装置がメモリ装置から取り外し通知を受信してから、メモリ装置が取り外し可能となるまでの処理の一例を示すフローチャートである。 図75は、メモリ装置の取り替え状態の一例を示す図である。 図76は、メモリ装置の再利用の一例を示すブロック図である。 図77は、カラーリング情報に基づいて、特定のメモリ装置に対するアクセス回数が他のメモリ装置に対するアクセス回数よりも多くなるように制御を行った場合のアクセス回数の変化の一例を示すグラフである。 図78は、本発明の第8の実施形態に係るメモリ管理装置の構成の一例を示す図である。 図79は、第8の実施形態に係る不揮発性半導体メモリの動的切り替えの第1の例を示す模式図である。 図80は、第8の実施形態に係る不揮発性半導体メモリの動的切り替えの第2の例を示す模式図である。 図81は、第8の実施形態に係る切り替え制御部によるメモリ領域の切り替え制御の第1の例を示す状態遷移図である。 図82は、第8の実施形態に係る切り替え制御部によるメモリ領域の切り替え制御の第2の例を示す状態遷移図である。 図83は、本発明の第9の実施形態に係るメモリ管理装置とアドレス空間との関係の一例を示すブロック図である。 図84は、第9の実施形態に係るプロセッサとメモリ管理装置による書き込み動作の一例を示すフローチャートである。 図85は、本発明の第10の実施形態に係る情報処理装置及びネットワークシステムの構成の一例を示す図である。 図86は、第10の実施形態に係るプロファイル情報管理部の処理の一例を示すフローチャートである。 図87は、第10の実施形態に係るユーザ端末によるプロファイル情報のアップロード処理の一例を示すフローチャートである。 図88は、第10の実施形態に係るユーザ端末によるプロファイル情報のダウンロード処理の一例を示すフローチャートである。 図89は、本発明の第11の実施形態に係るネットワークシステムの一例を示すブロック図である。 図90は、第11の実施形態に係るメモリ管理装置の構成の一例を示すブロック図である。 図91は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第1の関係を示すブロック図である。 図92は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第2の関係を示すブロック図である。 図93は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第3の関係を示すブロック図である。 図94は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第4の関係を示すブロック図である。 図95は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第5の関係を示すブロック図である。 図96は、第11の実施形態に係るネットワークシステムの仮想アドレス空間の一例を示すブロック図である。 図97は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第1の例を示すブロック図である。 図98は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第2の例を示すブロック図である。 図99は、第11の実施形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第3の例を示すブロック図である。 図100は、ネットワークに接続される多数の機器に記憶されるデータをアクセスするために必要なアドレスのビット数を推定する計算の一例を示す図である。
 以下、図面を参照しながら本発明の各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
 (第1の実施形態)
 図1を参照して、本発明の第1の実施形態に係るメモリ管理装置1及び情報処理装置100について説明する。図1は、本実施形態に係るメモリ管理装置及び情報処理装置の構成の一例を示すブロック図である。
 情報処理装置100は、メモリ管理装置1と、混成メインメモリ2と、プロセッサ3a,3b,3cとを備える。
 プロセッサ3a,3b,3cは、例えば、MPU(Micro Processor Unit)又はGPU(Graphic Processor Unit)である。プロセッサ3a,3b,3cは、各々に1次キャッシュメモリ4a,4b,4cと、2次キャッシュメモリ5a,5b,5cを備える。プロセッサ3a,3b,3cは、それぞれプロセス6a,6b,6cを実行し、種々のデータを処理する。プロセッサ3a,3b,3cは、プロセス6a,6b,6cの実行においては、仮想アドレスによりデータを指定する。
 プロセッサ3a,3b,3cは、データ(書き込み対象データ)を混成メインメモリ2に書き込む場合には、書き込み要求を発生させる。また、プロセッサ3a,3b,3cは、データ(読み出し対象データ)を混成メインメモリ2から読み出す場合には、読み出し要求を発生させる。
 プロセッサ3a,3b,3cは、各々に仮想アドレスをMPU又はGPUの物理アドレス(混成メインメモリ2に対する論理アドレス)に変換するページテーブル(図示せず)を備える。プロセッサ3a,3b,3cは、1次キャッシュメモリ4a,4b,4c、2次キャッシュメモリ5a,5b,5c、又は混成メインメモリ2にデータを書き込む場合には、ページテーブルにより仮想アドレスを論理アドレスに変換し、論理アドレスにより書き込み対象データを指定する。同様に、プロセッサ3a,3b,3cは、1次キャッシュメモリ4a,4b,4c、2次キャッシュメモリ5a,5b,5c、又は混成メインメモリ2からデータを読み出す場合には、ページテーブルにより仮想アドレスを論理アドレスに変換し、論理アドレスにより読み出し対象データを指定する。
 なお、以下において、1次キャッシュメモリ4a,4b,4c、2次キャッシュメモリ5a,5b,5c、又は混成メインメモリ2に対する書き込み、読み出しを総称して「アクセス」と表現する。
 メモリ管理装置1は、プロセッサ3a,3b,3cの混成メインメモリ2に対するアクセス(書き込み、読み出し)を管理する。メモリ管理装置1は、処理部15と、作業メモリ16と、情報記憶部17とを備える。メモリ管理装置1は、後述するメモリ使用情報11と、メモリ固有情報12と、アドレス変換情報13と、カラーリングテーブル14とを情報記憶部17に格納する。メモリ管理装置1の情報記憶部17に格納されるカラーリングテーブル14は、不揮発性半導体メモリ9,10に格納されているカラーリングテーブル14の一部であってもよい。例えば、不揮発性半導体メモリ9,10に格納されているカラーリングテーブル14のうち、頻繁に用いられるカラーリングテーブル14のデータを、メモリ管理装置1の情報記憶部17に格納するとしてもよい。メモリ管理装置1は、カラーリングテーブル14等を参照し、プロセッサ3a,3b,3cの混成メインメモリ2に対するアクセスを管理する。詳細については後述する。
 混成メインメモリ2は、第1のメモリ、第2のメモリ、及び第3のメモリを備えている。第1のメモリは、第2のメモリよりもアクセス可能上限回数が多い。第2のメモリは、第3のメモリよりもアクセス可能上限回数が多い。ここでアクセス可能上限回数とは、統計的に予想される期待値であって、常にこの関係が保証されることを意味してはいないことに注意されたい。また、第1のメモリは、第2のメモリよりもデータ転送速度(アクセス速度)が大きくてもよい。
 本実施形態では、第1のメモリは揮発性半導体メモリ8であるとする。揮発性半導体メモリ8としては、例えば、DRAM(Dynamic Random Access Memory)、FPM-DRAM、EDO-DRAM、SDRAMなどのような、一般的なコンピュータにおいてメインメモリとして利用されるメモリが用いられる。また、DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限が無いのであれば、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリを採用してもよい。
 第2のメモリは不揮発性半導体メモリ9であるとする。不揮発性半導体メモリ9としては、例えば、SLC(Single Level Cell)タイプのNAND型フラッシュメモリが用いられる。SLCは、MLC(Multi Level Cell)と比較して、読み出し及び書き込みが高速であり、信頼性が高い。しかしながら、SLCは、MLCと比較して、ビットコストが高く、大容量化には向いていない。
 第3のメモリは不揮発性半導体メモリ10であるとする。不揮発性半導体メモリ10としては、例えば、MLCタイプのNAND型フラッシュメモリが用いられる。MLCは、SLCと比較して、読み出し及び書き込みが低速であり、信頼性が低い。しかしながら、MLCは、SLCと比較して、ビットコストが低く、大容量化に向いている。
 なお、本実施形態では、不揮発性半導体メモリ9がSLCタイプのNAND型フラッシュメモリであり、不揮発性半導体メモリ10がMLCタイプのNAND型フラッシュメモリであるが、例えば、不揮発性半導体メモリ9が2bit/CellのMLCタイプのNAND型フラッシュメモリであり、不揮発性半導体メモリ10が3bit/CellのMLCタイプのNAND型フラッシュメモリであってもよい。
 信頼性とは、記憶装置からデータを読み出す場合におけるデータの欠損の起こりにくさの程度(耐久性)を意味する。SLCの耐久性は、MLCの耐久性よりも高い。ここで、耐久性が高いとは、アクセス可能上限回数が多く、耐久性が低いとは、アクセス可能上限回数が少ないことを意味する。
 SLCは1つのメモリセルに1ビットの情報を記憶可能である。一方、MLCは1つのメモリセルに2ビット以上の情報を記憶可能である。すなわち、本実施形態に係る混成メインメモリ2は、第1に、揮発性メモリ8、第2に、不揮発性半導体メモリ9、第3に、不揮発性半導体メモリ10、の順で耐久性が高い。
 NAND型フラッシュメモリなどの不揮発性半導体メモリ9,10は、揮発性半導体メモリ8と比較して、安価で大容量化が可能である。不揮発性半導体メモリ9,10としては、NAND型フラッシュメモリに代えて、例えばNOR型フラッシュメモリなどのような他の種類のフラッシュメモリ、PRAM(Phase change memory)、ReRAM(Resistive Random access memory)を用いることもできる。
 なお、第3のメモリとしてMLCを採用し、第2のメモリとして、MLCの下位ページのみを使用してデータ書き込みを行う擬似SLCモードが利用可能なMLCを採用してもよい。この場合、第2のメモリと第3のメモリとを共通のチップのみで構成することが可能であり、製造コスト面で有利となる。
 メインメモリとして不揮発性半導体メモリ9,10を利用する場合と、2次記憶装置として不揮発性半導体メモリ9,10を利用する場合とを比較すると、メインメモリとして不揮発性半導体メモリ9,10を使用した場合にはこの不揮発性半導体メモリ9,10へのアクセス頻度が高くなる。本実施形態においては、揮発性半導体メモリ8とSLCの不揮発性半導体メモリ9とMLCの不揮発性半導体メモリ10とを混成してメインメモリとする混成メインメモリ2を備えた情報処理装置を実現している。混成メインメモリ2は、異機種混在型の主記憶装置であり、メモリ管理装置1によってデータの配置が管理される。
 不揮発性半導体メモリ9,10の所定の領域には、メモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14が記憶されている。
 メモリ使用情報11は、不揮発性半導体メモリ9,10の各ページ領域の書き込み発生回数及び読み出し発生回数と、各ブロック領域の消去回数と、使用中領域サイズを含む。
 メモリ固有情報12は、揮発性半導体メモリ8のメモリサイズと、不揮発性半導体9、10のメモリサイズと、不揮発性半導体メモリ9,10のページサイズ及びブロックサイズと、各領域のアクセス可能上限回数(書き込み可能上限回数、読み出し可能上限回数、消去可能上限回数)と、を含む。ここで、ページサイズとは、不揮発性半導体メモリ9,10の書き込み、読み出しのデータサイズの単位である。ブロックサイズとは、不揮発性半導体メモリ9,10のデータ消去サイズの単位である。不揮発性半導体メモリ9,10において、ブロックサイズはページサイズよりも大きい。
 アドレス変換情報13は、プロセッサ3a,3b,3cから与えられる論理アドレスを、論理アドレスに対応する物理アドレスに変換する情報である。アドレス変換情報13の詳細については後述する。
 カラーリングテーブル14は、データ毎のカラーリング情報が保持するテーブルである。カラーリング情報は、静的カラー情報と動的カラー情報を含む。詳細は後述する。
 次に、図2を参照して、本実施形態に係るメモリ管理装置とオペレーティングシステムとについてさらに説明する。図2は、本実施形態に係るメモリ管理装置1及び情報処理装置100の構成の一例を示すブロック図である。図2では、図1のプロセッサ3a,3b,3cのうちプロセッサ3bを代表として説明するが、他のプロセッサ3a,3cについても同様である。
 オペレーティングシステム27は、プロセッサ3bにより実行される。オペレーティングシステム27は、プロセッサ3bで実行され、情報記憶部17に格納されているカラーリングテーブル14にアクセスする権限を有する。
 メモリ管理装置1の処理部15は、アドレス管理部18、読み出し管理部19、書き込み管理部20、カラーリング情報管理部21、メモリ使用情報管理部22、再配置部23を備える。さらに、カラーリング情報管理部21は、アクセス頻度算出部24、動的カラー情報管理部25を備える。
 処理部15は、情報記憶部17に記憶されている情報に基づいて、作業メモリ16を使用しつつ各種処理を実行する。
 作業メモリ16は、例えばバッファとして利用され、各種のデータ変換などの作業領域として使用される。
 処理部15に備えられている上記機能ブロックは、ハードウェア及びソフトウェア(例えばオペレーティングシステム27、ファームウェア等)のいずれか一方、又は両者の組み合わせとして実現することができる。これらの機能ブロックが、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施形態、又は情報処理装置100全体に課せられた設計制約に依存する。当業者は、具体的な実施形態毎に、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。なお、以下の説明において用いられる機能ブロックについても同様である。
 アドレス管理部18は、論理アドレスに対して物理アドレスを割り当て、アドレス変換情報13に記憶する。これにより、処理部15は、アドレス変換情報13を参照することにより、論理アドレスに対応する物理アドレスを取得することができる。
 読み出し管理部19は、プロセッサ3a,3b,3cが読み出し要求を発生した場合に、混成メインメモリ2に対して読み出し対象データの読み出し処理を管理する。
 書き込み管理部20は、プロセッサ3a,3b,3cが書き込み要求を発生した場合に、混成メインメモリ2に対して書き込み対象データを書き込む処理を管理する。
 カラーリング情報管理部21は、カラーリングテーブル14を管理する。
 メモリ使用情報管理部22は、混成メインメモリ2のメモリ使用情報11を管理する。
 再配置部23は、プロセッサ3a,3b,3cの動作と非同期に、カラーリングテーブル14に含まれているカラーリング情報に基づき、任意の論理アドレスに対応する物理アドレスに配置されているデータの再配置を行う。再配置部23は、例えば、後述する動的カラー情報に基づき、不揮発性半導体メモリ10に含まれるデータのうち、読み出し頻度、書き込み頻度が高いデータを、定期的に、不揮発性半導体メモリ9に再配置する。また、再配置部23は、例えば、動的カラー情報に基づき、不揮発性半導体メモリ9に含まれるデータのうち、読み出し頻度、書き込み頻度が低いデータを、定期的に、不揮発性半導体メモリ10に再配置する。同様に、再配置部23は、揮発性半導体メモリ8、不揮発性半導体メモリ9,10の間でもデータの再配置を行うことが可能である。後述する書き込み管理部20による書き込み処理は、データの更新が発生するたびに、書き込み先メモリ領域の判断処理と書き込み先ブロック領域の判断処理を行うことで再配置を行う。これに対し、再配置部23はデータの再配置を定期的に行う。再配置部23がデータの再配置を行う場合、書き込み管理部20及び読み出し管理部19は再配置が終了するまで動作しない。再配置部23の動作開始のトリガは、開発者によって設定された周期や、ユーザインターフェースにて設定可能な周期としてもよい。また、情報処理装置100が休止状態になる時に再配置部23が動作してもよい。
 アクセス頻度算出部24は、カラーリングテーブル14に含まれているカラーリング情報に基づき、データのアクセス頻度情報(動的書き込み頻度DW_color、動的読み出し頻度DR_color)を算出する。
 動的カラー情報管理部25は、カラーリングテーブル14に含まれている動的カラー情報を管理する。
 次に、図3を参照して、本実施形態に係る混成メインメモリについて説明する。図3は、本実施形態に係る混成メインメモリ2のメモリマップの一例を示す図である。
 混成メインメモリ2は、揮発性半導体メモリ8(DRAM領域)と、不揮発性半導体メモリ9(SLC領域)と、不揮発性半導体メモリ10(2bit/Cell領域、3bit/Cell領域、4bit/Cell領域)とを備える。2bit/Cell領域、3bit/Cell領域、4bit/Cell領域はMLC領域を構成する。DRAM領域、SLC領域、2bit/Cell領域、3bit/Cell領域、4bit/Cell領域を総称して、メモリ領域と称する。
 揮発性半導体メモリ8は、例えば、128MByteのDRAM領域から構成される。
 不揮発性半導体メモリ9は、例えば、2GByteのB領域と128MByteのB冗長ブロック領域と、2GByteのC領域と128MByteのC冗長ブロック領域から構成される。不揮発性半導体メモリ9の各メモリ領域は、SLCタイプのNAND型フラッシュメモリである。
 不揮発性半導体メモリ10は、例えば、4GByteのA領域と128MByteのA冗長ブロック領域から構成される2bit/Cell領域と、4GByteのD領域と128MByteのD冗長ブロック領域から構成される3bit/Cellと、4GByteのE領域と128MByteのE冗長ブロック領域から構成される4bit/Cell領域とにより構成される。不揮発性半導体メモリ10の各メモリ領域は、MLCタイプのNAND型フラッシュメモリである。図3に示すように、メモリ領域には、物理アドレスが割り付けられる。
 混成メインメモリ2が上記構成である場合には、メモリ固有情報12は、1)混成メインメモリ2のメモリ空間内の揮発性半導体メモリ8(DRAM領域)のメモリサイズ、2)混成メインメモリ2のメモリ空間内の不揮発性半導体メモリ9,10のメモリサイズ、3)混成メインメモリ2のメモリ空間を構成するNAND型フラッシュメモリのブロックサイズ、ページサイズ、4)不揮発性半導体メモリ9内のSLC領域(2値領域)として割り付けられたメモリ空間情報(消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む)、5)2bit/Cell領域に割り付けられたメモリ空間情報(消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む)、6)3bit/Cell領域に割り付けられたメモリ空間情報(消去可能上限回数、読み出し可能上限回数、書き込み可能上限回数を含む)、7)4bit/Cell領域に割り付けられたメモリ空間情報(消去可能上限回数、読み出し可能上限回数を含む)を含む。
 次に、図4を参照して、本実施形態に係るアドレス変換情報(アドレス変換テーブル)13について説明する。図4は、本実施形態に係るアドレス変換情報13の一例を示す図である。
 アドレス変換情報13では、論理アドレス、揮発性半導体メモリ8の物理アドレス、不揮発性半導体メモリ9,10の物理アドレス、有効/無効フラグが、テーブル形式で管理される。
 アドレス変換情報13の各エントリには、論理アドレス、この論理アドレスに対応する揮発性半導体メモリ8の物理アドレスと不揮発性半導体メモリ9,10の物理アドレスとのうちの少なくとも一つ、有効/無効フラグが登録される。
 有効/無効フラグは、各エントリが有効であるか否かを示す情報である。有効/無効フラグは、1のときに有効、0のときに無効を表す。エントリの有効/無効フラグの初期値は0である。有効/無効フラグが0のエントリは、論理アドレスのマッピングされていないエントリ、又は、論理アドレスがマッピングされたが消去されたエントリである。有効/無効フラグが1のエントリには、論理アドレスがマッピングされており、揮発性半導体メモリ8と不揮発性半導体メモリ9,10とのうちの少なくとも一方に、論理アドレスに対応する物理アドレスが存在する。
 なお、図4に示すアドレス変換情報13の例では、アドレス変換情報13の1エントリで論理アドレス、揮発性半導体メモリ8の物理アドレス、不揮発性半導体メモリ9,10の物理アドレスを管理しているが、例えば、アドレス変換情報13では論理アドレスと不揮発性半導体メモリ8の物理アドレスを管理し、論理アドレスと揮発性半導体メモリ9,10の物理アドレスは、別のタグRAMで管理してもよい。この場合、論理アドレスから物理アドレスへ変換する際には、まず、タグRAMが参照され、タグRAMに当該論理アドレスに対応する物理アドレスがない場合に、アドレス変換情報13が参照される。
 次に、図5を参照して、本実施形態に係るカラーリングテーブル14について説明する。図5は、本実施形態に係るカラーリングテーブル14の一例を示す図である。
 本実施形態では、データ毎にカラーリング情報が付与される。カラーリング情報が付与されるデータのデータサイズ単位は、例えば、読み出し、書き込みの最小の単位である。例えば、読み出し、書き込みの最小の単位は、NAND型フラッシュメモリのページサイズである。カラーリングテーブル14は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル14の各エントリには、インデックスが付されている。インデックスとは、論理アドレスを基に生成される値である。メモリ管理装置1の読み出し管理部19、書き込み管理部20、カラーリング情報管理部21、再配置部23などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照し、データのカラーリング情報を取得する。
 カラーリング情報は、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性に基づいて生成される情報であり、当該データの混成メインメモリ2上の配置(書き込み)領域を決定するヒントとなるヒント情報の一種である。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。動的カラー情報をヒント情報として用いてもよい。
 次に、図6を参照して、静的カラー情報について説明する。図6は、本実施形態に係る静的カラー情報の一例を説明するための図である。
 静的カラー情報は、当該データの「重要度」、「読み出し頻度、書き込み頻度」、「データ寿命」のうち少なくとも一つの情報を含む。図6において説明する、読み出し頻度は、後述する、静的読み出し頻度に対応し、書き込み頻度は、静的書き込み頻度に対応する。
 「重要度」とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。
 「読み出し頻度、書き込み頻度」とは、データの種類等に基づいて、当該データが読み出し、又は書き込みされる頻度を推測して設定される値である。
 「データ寿命」とは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間(データの寿命)を推測して設定される値である。
 「重要度」、「読み出し頻度、書き込み頻度(読み書き頻度)」、「データ寿命」は、例えば、ファイルシステムに保持されるファイルの特性、又はプログラムに一次的に使用される領域の特性により推測される。
 ファイルシステムに保持されるファイルの特性とは、カラーリング情報が付与される当該データが含まれるファイルデータのファイルに付加されたデータ属性により判断される特性である。ファイルに付加されたデータ属性には、ファイルのヘッダ情報、ファイル名、ファイルの位置、ファイル管理データ(inoddに保持される情報)等が含まれる。例えば、ファイルの位置としては、ファイルがファイルシステムのゴミ箱に位置している場合には、当該ファイルに含まれるデータの特性は、重要性が低い、読み出しの頻度、書き込みの頻度が低い、データの寿命が短い、と予測できる。この特性に基づき、当該データのカラーリング情報は、書き込み頻度は低、読み出し頻度は低、データの寿命は短、と推測される。
 プログラムに一時的に使用される領域の特性には、カラーリング情報が付与される当該データが扱われるプログラムのプログラム実行時のデータ種別に基づき判断される特性と、プログラムファイル生成時のデータ種別に基づき判断される特性とが含まれる。
 プログラム実行時のデータ種別とは、例えば、プログラム実行時に、当該データがスタック領域、ヒープ領域、テキスト領域のいずれの領域にマッピングされたかに基づいて分類されるデータ種別である。例えば、スタック領域、ヒープ領域にマッピングされたデータの特性は、書き込みの頻度は高く、読み出しの頻度は高く、重要性は高く、データ寿命は短い、と予測される。この特性に基づき、当該データの静的カラーリング情報は、書き込み頻度は高、読み出し頻度は高、重要度は高、データ寿命は短、と推測される。例えば、テキスト領域にマッピングされたデータの特性は、リード・オンリーのデータであるので、書き込みの頻度は低く、読み出しの頻度は高く、重要性は高く、データの寿命は長いと予測される。この特性に基づき、当該データの静的カラーリング情報は、書き込み頻度は高、読み出し頻度は高、重要度は高、データ寿命は長、と推測される。
 プログラムファイル生成時のデータ種別予測とは、プログラム生成時に、当該プログラムで扱われるデータの重要度、読み書き頻度、データ寿命を推測することである。
 また、静的カラー情報は、ユーザインターフェースにより、ユーザが直接設定してもよい。
 次に、図7を参照して、カラーリング情報に基づく、データの書き込み処理の一例を示す。図7は、データ配置の処理の一例を示すフローチャートである。
 前述のように、本実施形態では、混成メインメモリ2は、揮発性半導体メモリ8、不揮発性半導体メモリ9,10を備える。データを混成メインメモリ2に配置する場合、カラーリング情報に基づいて、揮発性半導体メモリ8、不揮発性半導体メモリ9,10のいずれかのメモリ領域が配置先として決定される。
 まず、データ(書き込み対象データ)の書き込み要求が発生した場合、書き込み管理部20は、書き込み対象データに付与されているカラーリング情報を参照する(ステップS1)。
 次に、書き込み管理部20は、カラーリング情報の「データ寿命」を参照し、書き込み対象データのデータ寿命の判断を行う(ステップS2)。
 書き込み対象データのデータ寿命が短いと判断された場合(ステップS3)には、書き込み管理部20は、書き込み対象データが配置されるメモリ領域として揮発性半導体メモリ8を選択し(ステップS4)、書き込み対象データが配置されるメモリ領域を、揮発性半導体メモリ8に決定する(ステップS12)
 書き込み対象データのデータ寿命が長いと判断された場合(ステップS3)には、書き込み管理部20は、書き込み対象データのカラーリング情報の「重要度」を参照し、書き込み対象データの重要度の判断を行う(ステップS5)。
 書き込み対象データの重要度が高いと判断された場合(ステップS6)には、書き込み管理部20は、書き込み対象データが配置されるメモリ領域として耐久性(信頼性)の高い不揮発性メインメモリ9を選択する(ステップS7)。さらに、書き込み管理部20は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを揮発性半導体メモリ8にキャッシュするか否か(カラーリング情報によるキャッシュ方式)の判断を行い(ステップS8)、書き込み対象データが配置されるメモリ領域を、不揮発性半導体メモリ9に決定する(ステップS12)。
 書き込み対象データの重要度が低いと判断された場合(ステップS6)には、書き込み管理部20は、書き込み対象データが配置されるメモリ領域として耐久性の低い不揮発性半導体メモリ10を選択する(ステップS9)。さらに、書き込み管理部20は、書き込み対象データのカラーリング情報(動的カラー情報、静的カラー情報)により、書き込み対象データの読み出し頻度、書き込み頻度の判断を行う(ステップS10)。
 書き込み対象データの読み出し頻度、書き込み頻度が高いと判断された場合(ステップS11)には、書き込み管理部20は、書き込み対象データが配置されるメモリ領域として不揮発性半導体メモリ9を選択する(ステップS7)。さらに、書き込み管理部20は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを揮発性半導体メモリ8にキャッシュするか否か(カラーリング情報によるキャッシュ方式)の判断を行い(ステップS8)、書き込み対象データが配置されるメモリ領域を不揮発性半導体メモリ9に決定する(ステップS12)。
 書き込み対象データの読み出し頻度、書き込み頻度が低いと判断された場合(ステップS11)には、書き込み管理部20は、書き込み対象データのカラーリング情報に基づき、書き込み対象データを不揮発性メインメモリ8にキャッシュするか否か(カラーリング情報によるキャッシュ方式)の判断を行い(ステップS8)、書き込み対象データが配置されるメモリ領域を不揮発性半導体メモリ10に決定する(ステップS12)。
 次に、図8を参照して、本実施形態に係るカラーリングテーブル14の構成例について説明する。図8は、本実施形態に係るカラーリングテーブル14の構成の一例を示す図である。図8に示すカラーリングテーブル14では、図5、図6に示すカラーリング情報のうち、特に、読み出し頻度、書き込み頻度、データ寿命をカラーリング情報として用いる場合について説明する。
 なお、カラーリング情報としては、「重要度」、「読み出し頻度、書き込み頻度」、「データ寿命」のいずれか1つを用いてもよいし、または任意の2つを組み合わせて用いてもよいし、または全てを組み合わせて用いてもよい。さらに、図6で示していない他のカラーリング情報を別途定義して用いることも可能である。
 カラーリングテーブル14は、データ毎にカラーリング情報を対応付け、エントリ単位で保持するテーブルである。カラーリングテーブル14によりカラーリング情報が対応付けられるデータのデータサイズは、例えば、読み出し、書き込まれる最小のデータサイズである。例えば、読み出し、書き込まれる最小のデータサイズは、NAND型フラッシュメモリのページサイズである。以下において、カラーリングテーブル14によりカラーリング情報が対応付けられるデータのデータサイズがページサイズであるとして説明するが、これに限定されるものではない。
 カラーリングテーブル14の各エントリには、インデックスが付されている。
 カラーリングテーブル14に保持されるカラーリング情報には、静的カラー情報と、動的カラー情報とが含まれる。
 インデックスとは、論理アドレスを基に生成される値である。メモリ管理装置1の読み出し管理部19、書き込み管理部20、カラーリング情報管理部21、再配置部23などは、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照することで、データのカラーリング情報を取得する。
 静的カラー情報は、静的書き込み頻度を示す値SW_color、静的読み出し頻度を示すSR_color、データ寿命SL_color、データの生成された時刻ST_colorを含む。
 ここで、静的書き込み頻度SW_colorとは、データの種類等に基づいて、当該データが書き込まれる頻度を推測して設定される値である。静的読み出し頻度SR_colorとは、データの種類等に基づいて、当該データが読み出される頻度を推測して設定される値である。例えば、静的書き込み頻度SW_colorは、書き込み頻度が高いと推測されるデータほど、高い値が設定される。例えば、静的読み出し頻度SR_colorは、読み出し頻度が高いと推測されるデータほど、高い値が設定される。
 データ寿命SL_colorとは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間(データの寿命)を推測して設定される値である。
 静的カラー情報は、データを生成するプログラム(プロセス)により、静的に、予め決められた値である。また、情報処理装置100に実行されるオペレーティングシステム27が、データのファイル拡張子又はファイルヘッダ等に基づいて、静的カラー情報を予測してもよい。
 動的カラー情報は、データの書き込み回数DWC_color、データの読み出し回数DRC_colorを含む。ここで、データの書き込み回数DWC_colorとは、当該データが混成メインメモリ2に書き込まれた回数である。データの読み出し回数DRC_colorとは、当該データが混成メインメモリ2から読み出された回数である。動的カラー情報管理部25は、データの書き込み回数DWC_colorにより、データ毎に、当該データが混成メインメモリ2に書き込まれた回数を管理する。動的カラー情報管理部25は、データ読み出し回数DRC_colorにより、データ毎に、当該データが混成メインメモリ2から読み出された回数を管理する。前述のように、混成メインメモリ2は、メインメモリとして用いられる。このため、プロセッサ3a,3b,3cで処理されるデータは、混成メインメモリ2に書き込まれ、混成メインメモリ2から読み出される。動的カラー情報管理部25は、データが書き込まれる度に、当該データの書き込み回数DWC_colorをインクリメントする。また、動的カラー情報管理部25は、データが読み出される度に、当該データの読み出し回数DRC_colorをインクリメントする。
 後述するように、アクセス頻度算出部24は、データの書き込み回数DWC_colorから、動的書き込み頻度DW_colorを算出する。アクセス頻度算出部24は、データの読み出し回数DRC_colorから、動的読み出し頻度DR_colorを算出する。
 動的書き込み頻度DW_colorとは、当該データが混成メインメモリ2に書き込まれた頻度を示す値である。動的読み出し頻度DR_colorとは、当該データが混成メインメモリ2から読み出された頻度を示す値である。動的書き込み頻度DW_colorと動的読み出し頻度DR_colorの算出方法については、後述する。
 後述するように、プロセッサ3a,3b,3cから混成メインメモリ2に対して書き込み要求、読み出し要求が発生すると、メモリ管理装置1は、カラーリング情報を参照することにより、書き込み領域、読み出し方式等を決定する。
 次に、図9、図10を参照して、本実施形態に係る静的カラー情報について説明する。図9は、各種データに対する静的カラー情報(静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_color)の設定の第1の例を示す図である。図10は、各種データに対する静的カラー情報(静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_color)の設定の第2の例を示す図である。
 カーネルのテキスト領域は、通常、読み出しの頻度は高く、書き込みの頻度は低い。オペレーティングシステム27は自身が動作するテキスト領域の静的読み出し頻度SR_colorを5、静的書き込み頻度SW_colorを1と設定する。また、オペレーティングシステム27は、カーネルのテキスト領域のデータ寿命SL_colorは長い(LONG)と予測する。
 一方、カーネルのデータ領域は、通常、読み出しの頻度、書き込みの頻度がともに高い。よって、オペレーティングシステム27は、カーネルのデータ領域について、静的読み出し頻度SR_colorを5、静的書き込み頻度SW_colorを5に設定する。
 カーネルに動的に確保されるデータ領域は、データが不要になると削除されるためデータ寿命SL_colorは短い(SHORT)とする。
 ユーザプログラムのテキスト領域は、通常、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出しの頻度は低い。ただし、プロセスがアクティブになっている状態ではカーネル同様読み出しの頻度が高くなる。このため、ユーザプログラムのテキスト領域においては、静的書き込み頻度SW_colorが1、静的読み出し頻度SR_colorが4に設定される。ユーザプログラムのテキスト領域について、データ寿命SL_colorは、そのプログラムがアンインストールされるまでの期間であるため、一般的には長くなる。よって、ユーザプログラムのテキスト領域について、データ寿命SL_colorは長い(LONG)と設定される。
 プログラムに動的に確保される領域は、大きく分けて2種類ある。まず1つはプログラムの実行終了とともに廃棄されるデータ(スタック領域を含む)である。これらのデータはデータ寿命SL_colorが短く、読み出しの頻度と書き込みの頻度は高い。したがって、プログラムの実行終了とともに廃棄されるデータについて、静的読み出し頻度SR_colorが4に設定され、静的書き込み頻度SW_colorが4に設定される。もう1つのプログラムに動的に確保される領域は、プログラムが新たなファイルのために生成した領域である。プログラムによって生成されたデータはデータ寿命SL_colorが長く、読み出しと書き込みの頻度は生成されるファイルの種別に依存する。
 プロセスによって参照されるファイルとして扱われるデータについて、ファイルのデータ寿命SL_colorは長いと設定される。
 例えばファイルの拡張子がSYS,dll,DRVなどで示されるようなシステムファイルが読み込まれる場合について説明する。このような拡張子を持つデータは、オペレーティングシステム27が様々な処理を実行する場合に読み出されるファイルである。このような拡張子を持つデータは、混成メインメモリ2上にオペレーティングシステム27がインストールされる場合に、1度書き込まれるとその後更新されることはほとんどない。これらの拡張子を持つファイルは、ファイルのなかでも比較的アクセスの頻度は高いが、プログラム(カーネル)のテキスト領域と比較してアクセスの頻度は低いと予測される。したがって、オペレーティングシステム27は、これらの拡張子を持つデータの静的書き込み頻度SW_colorを1に設定し、静的読み出し頻度SR_colorを3に設定する。この設定は、データから予測される書き込みの頻度は極めて低く、予測される読み出しの頻度は高いことを示している。すなわち、これらの拡張子を持つデータは、オペレーティングシステム27のアップデートや他のプログラムをインストールする場合に数度書き換わる程度であり、ほとんどリード・オンリーとして扱われると予測される。
 音声ファイルを編集するプログラムを使用するユーザは少ない。したがって、例えば、MP3などによって圧縮されている音楽データの書き込みの頻度は低いと考えられる。音楽データの読み出しの頻度は、書き込みの頻度よりは高いと考えられる。したがって、MP3などによって圧縮されている音楽データの静的書き込み頻度SW_colorは1、静的読み出し頻度SW_colorは2に設定される。
 動画編集プログラムを使用するユーザは少ない。このため、例えば、MPEGなどによって圧縮されている動画データの書き込みの頻度は低いと考えられる。動画データの読み出しの頻度は、書き込みの頻度よりは高いと考えられる。したがって、MP3などによって圧縮されている動画データの静的書き込み頻度SW_colorは1、静的読み出し頻度SW_colorは2に設定される。
 テキストデータの編集プログラムを使用するユーザは多い。このため、例えば、テキストファイルの書き込みの頻度及び読み出しの頻度は、高いと考えられる。したがって、テキストファイルの静的書き込み頻度SW_colorは3、静的読み出し頻度SW_colorは3に設定される。
 ウェブブラウザを使用するユーザは多い。このため、ブラウザキャッシュファイルの読み出しの頻度及び書き込みの頻度は、音楽データや動画データなどのメディアファイル以上であると考えられる。したがって、ブラウザキャッシュファイルの静的書き込み頻度SW_colorは1、静的読み出し頻度SW_colorは3に設定される。
 例えば、ごみ箱などのようなアクセスの頻度の低いディレクトリに配置されているファイルの静的書き込み頻度SW_colorは1、静的読み出し頻度SW_colorは1に設定される。
 拡張子がJPEGで代表されるような写真データ、及び拡張子がMOVで代表されるようなムービーデータは、一度書き込まれると再度度書き込みが行なわれることは少ない。このような写真データ及びムービーデータはプログラムからアクセスされる頻度が少ないと予測される。したがって、オペレーティングシステム27は、写真データ及びムービーデータの静的書き込み頻度SW_color及び静的読み出し頻度SR_colorに対して小さい値を設定する。
 次に、図11を参照して、本実施形態に係るカラーリングテーブル14の生成処理について説明する。図11は、カラーリングテーブル14の生成処理の一例を示すフローチャートである。カラーリングテーブル14は、システムの初期起動時に生成される。カラーリングテーブル14は、不揮発性半導体メモリ9,10上の任意の領域に配置される。カラーリングテーブル14の配置されている番地は、メモリ管理装置1の実装により決定されるとしてもよい。
 ステップT1において、情報処理装置100は、電源が投入され、起動する。
 ステップT2において、カラーリング情報管理部21は、カラーリングテーブル14のベースアドレスを論理アドレスに変換し、各データについてのインデックスを生成する。
 ステップT3において、カラーリング情報管理部21は、情報記憶部17に、カラーリングテーブル14のベースアドレスをセットする。情報記憶部17は、例えばレジスタで構成される。カラーリングテーブル14のベースアドレスは、例えばカラーリングテーブルレジスタにセットされる。
 次に、図12を参照して、本実施形態に係るカラーリングテーブル14のエントリの生成処理について説明する。図12は、カラーリングテーブル14のエントリの生成処理の一例を示すフローチャートである。
 プロセッサ3a,3b,3cはプロセス6a,6b,6cを実行するために用いる論理アドレス空間上の領域を確保する。論理アドレス空間上の領域を確保した段階では、確保した論理アドレスのアドレス変換情報13の有効/無効フラグには0が設定されている。論理アドレスに対する物理アドレスの割り当ては、確保された論理アドレス空間の範囲内の論理アドレスに対して、プロセス6a,6b,6cがアクセス(読み出し、書き込み)した段階で行われる。論理アドレスに対する物理アドレスの割り当てが行われると、当該論理アドレスに対応するデータに対する静的カラー情報をカラーリングテーブル14に登録するとともに、当該論理アドレスのアドレス変換情報13の有効/無効フラグには1が設定される。
 まず、プロセッサ3a,3b,3cにより実行されるプロセス6a,6b,6cは、新たなデータを配置するための論理アドレス空間上の領域の確保要求を出す(ステップU1)。論理アドレス空間上の未使用領域は、オペレーティングシステム27が管理しており、論理アドレスはオペレーティングシステム27により決定される。(ステップU2)
 次に、プロセス6a,6b,6cにより新たなデータが生成されると、オペレーティングシステム27は、新たに生成されたデータの種類等に基づいて、静的カラー情報を生成する(ステップU3)。静的カラー情報は、生成されたデータのページサイズ毎に生成される。例えば、生成されたデータのデータサイズがページサイズより大きい場合には、データをページサイズに分割し、分割後のページサイズ毎に静的カラー情報が生成される。以下において、書き込み対象データのデータサイズがページサイズである場合を想定し説明するが、これに限定されない。
 次に、オペレーティングシステム27が、情報記憶部17にセットされたベースアドレスに基づき、カラーリングテーブル14を参照する(ステップU4)。
 次に、オペレーティングシステム27が、生成された静的カラー情報を、確保された論理アドレスに対応するインデックスが付されたカラーリングテーブル14のエントリに登録する(ステップU5)。
 プロセッサ3a,3b,3cにより実行されるプロセス6a,6b,6cは、オペレーティングシステム27による論理アドレス空間の確保が成功した後、確保された論理アドレス空間に対し、読み出し要求、又は、書き込み要求を出す。このとき、アドレス管理部18は、書き込みが生じた論理アドレスに対する物理アドレスを決定するが、この処理は後に説明する。
 以上の処理により、プロセッサ3a,3b,3cがプロセス6a,6b,6cを実行することにより、新たなデータが生成され、新たなデータが混成メインメモリ2に書き込まれる場合に、新たに生成されたデータに対してカラーリング情報が生成され、カラーリングテーブル14の新たなエントリに登録される。これにより、新たなデータを混成メインメモリ2に書き込むことが可能となる。
 次に、図13、図14を参照して、カラーリングテーブル14のエントリのアライメントについて説明する。図13は、カラーリングテーブル14のエントリのアライメントの第1の例を示す図である。図14は、カラーリングテーブル14のエントリのアライメントの第2の例を示す図である。
 カラーリングテーブル14のエントリは、データの最少の読み書きサイズ(例えばNAND型フラッシュメモリのページサイズ)に対応しているが、プロセス6a,6b,6cは、論理アドレス空間にデータをマップする際、データの最少の読み書きサイズにアライメントしてマップすることを義務づけられていない。このため、カラーリングテーブル14の1エントリに対して複数のデータが対応する可能性がある。
 このような場合、オペレーティングシステム27は、図13に示すように、1エントリに対応する複数のデータのうちで、最も読み出し頻度及び書き込み頻度が高いと予測されるデータを代表とする。
 あるいは、オペレーティングシステム27は、図14に示すように、1エントリを占めるデータのサイズを重みとし、各データの静的書き込み頻度SW_color、静的読み出し頻度SR_colorの加重平均値を設定する。
 カラーリングテーブル14によって示されている静的書き込み頻度SW_colorと静的読み出し頻度SR_colorとは、プログラム開発者によりオペレーティングシステム27などのソースコードに埋め込まれるか、オペレーティングシステム27によって予測される。しかしながら、プログラム開発者が意図した場合と別の用途でファイルや写真データが使われる場合もある。一般的に、写真データなどのようなデータのアクセスはほとんどが読み出しであり、写真データの内容が書き換えられることは少ない。しかしながら、写真データを加工するプログラムが特定の写真データを扱う場合、加工中の写真データが頻繁に書き換えられることがある。このような場合、カラーリングテーブル14の静的書き込み頻度SW_colorと静的読み出し頻度SR_colorをユーザが書き換え可能であれば、特定のファイルを、より高速で書き換え回数に余裕のある領域に移動することが可能になる。
 このような動作を実現させるため、各データのカラーリング情報は、オペレーティングシステム27のソフトウェア上で書き換えられるように、オペレーティングシステム27のファイルシステムを設計することが好ましい。たとえば一般的なブラウザでファイルのプロパティを開けば、カラーリングテーブル14に相当する属性がGUI画面上で見ることができるように情報処理装置100が設計されており、その初期データをユーザがGUI上で変更できるようオペレーティングシステム27を設計することが好ましい。
 次に、図15を参照して、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法について説明する。図15は、動的カラー情報と静的カラー情報に基づいて動的書き込み頻度DW_colorと動的読み出し頻度DR_colorを算出する方法の一例を示す図である。図15において、横軸は時間であり、縦軸はアクセス回数(読み出し回数DWC_color、又は書き込み回数DRC_color)である。
 新たなデータがデータ生成時刻において生成されると、新たに生成されたデータに対してカラーリング情報(データ生成時刻を含む)が生成され、カラーリングテーブル14の新たなエントリに登録された上で、データは混成メインメモリ12に書き込まれる。データ生成時刻以降、このデータに対するアクセス(読み出し、書き込み)が発生することにより、時間の経過とともに、アクセス回数(書き込み回数DWC_color、読み出し回数DRC_color)が増加する。このアクセス回数の増加は、動的カラー情報管理部25によって行われる。メモリ管理装置1のアクセス頻度算出部24は、アクセス回数から動的書き込み頻度DW_color、動的読み出し頻度DR_colorを算出する。
 現在時刻における、当該データの書き込み回数DWC_color、データの読み出し回数DRC_colorは、カラーリングテーブル14を参照することにより求めることができる。現在時刻における、当該動的書き込み頻度DW_colorは、データ生成時刻ST_colorから現在時刻までの書き込み回数DWC_colorの時間平均(平均変化率α)により求める。また、現在時刻における、当該動的読み出し頻度DR_colorは、データ生成時刻ST_colorから現在時刻までの読み出し回数DRC_colorの時間平均(平均変化率α)により求める。これにより、動的カラー情報(書き込み回数DWC_color、読み出し回数DRC_color)から、当該データの動的書き込み頻度DW_colorと、動的読み出し頻度DR_colorとが算出される。
 次に、算出された動的書き込み頻度DW_colorと、動的読み出し頻度DR_colorとに基づいて、当該データに対するアクセスの頻度の高低が判断される。アクセス頻度の高低の判断は、例えば、当該データが書き込まれている混成メインメモリ2のメモリ固有情報11、算出された動的書き込み頻度DW_color及び動的読み出し頻度DR_colorに基づいて行われる。
 図15においては、まず、式Aの傾きとして「アクセス可能上限回数×重み1/データ寿命」を設定し、式Bの傾きとして「アクセス可能上限回数×重み2/データ寿命」を設定する。ここで、重み1>重み2である。重み1、重み2は、動的書き込み頻度DW_color、動的読み出し頻度DR_colorを算出する当該データを書き込む混成メインメモリ2に応じて、任意に設定することができる。
 平均変化率α<式Aの傾き、が成り立つ場合、このデータの動的アクセス頻度は、高いと判断される。
 式Bの傾き<平均変化率α≦式Aの傾き、が成り立つ場合、このデータの動的アクセス頻度は、中と判断される。
 平均変化率α≦式Bの傾き、が成り立つ場合、このデータの動的アクセス頻度は、低いと判断される。
 次に、図16を参照して、混成メインメモリ2からデータを読み出す処理について説明する。図16は、データの読み出し処理の一例を示すフローチャートである。
 まず、プロセッサ3a,3b,3cにより実行されるプロセス6a,6b,6cが、データ(読み出し対象データ)の読み出し要求を発生させる(ステップW1)。
 次に、プロセッサ3a,3b,3cに備えられているページテーブル(図示せず)により、読み出し対象データを指定する仮想アドレスが論理アドレスに変換される(ステップW2)。
 次に、読み出し管理部19は、アドレス変換情報13の読み出し対象データに対応する論理アドレスのエントリの有効/無効フラグを参照する(ステップW3)。
 アドレス変換情報13の有効/無効フラグが0のとき(ステップW3a)、論理アドレスに対する書き込みが一度も発生していないのでデータは不定である。この場合、読み出し管理部19は読み出し要求サイズ分の0データを読み出したようにふるまい(ステップW8)、ステップW10の処理に移る。
 アドレス変換情報13の有効/無効フラグが1のとき(ステップW3a)、論理アドレスに対するデータの書き込みが少なくとも一度発生している。この場合、読み出し管理部19は、アドレス変換情報13を参照し、論理アドレスに対応するデータが揮発性半導体メモリ8に記憶されているか判断する(ステップW4)。
 読み出し管理部19は、論理アドレスに対応するデータが揮発性半導体メモリ8に記憶されていると判断された場合(ステップW4a)、揮発性半導体メモリ8から読み出しを行うため、処理はステップW10に移る。
 読み出し管理部19は、論理アドレスに対応するデータが揮発性半導体メモリ8に記憶されていないと判断された場合(ステップW4a)、カラーリングテーブル14を参照して、不揮発性半導体メモリ9,10からの読み出し対象データの読み出し方式を決定する(ステップW5)。読み出し方式の決定処理については後述する。
 次に、読み出し管理部19は、読み出し対象データが記憶されている不揮発性半導体メモリ9,10のメモリ固有情報11と、メモリ使用情報12を参照し、読み出し対象データの移動(再書き込み)の要否を判断する(ステップW6)。
 読み出し管理部19は、読み出し対象データの移動が不要であると判断された場合(ステップW6a)には、ステップW9に移る。
 読み出し管理部19は、読み出し対象データの移動が必要であると判断された場合(ステップW6a)には、読み出し対象データを不揮発性半導体メモリ9,10の別の領域への移動を行い(ステップW7)、その後、処理はステップW9に移る。
 ステップW9において、メモリ使用情報管理部22は、不揮発性メモリ領域から読み出しを行った際に、メモリ使用情報11の読み出し回数をインクリメントする。ステップW10において、動的カラー情報管理部25は、データの読み出しを行った際に、カラーリングテーブル14のデータの読み出し回数DRC_colorをインクリメントする。ステップW11において、読み出し管理部19は、論理アドレスとアドレス変換情報13とから得られる物理アドレスに基づいてデータの読み出しを行う。
 次に、図17を参照して、データの読み出し方式の決定処理について説明する。図17は、データの読み出し方式の決定処理の一例を示すフローチャートである。読み出し方式の決定処理は不揮発性半導体メモリ9、10のメモリ領域からデータを読み出す時に、揮発性半導体メモリ8のメモリ領域をキャッシュとして使用するか否かを判断する処理である。本処理は図16のステップW5に該当する。
 前述のように、混成メインメモリ2は、揮発性半導体メモリ8と、不揮発性半導体メモリ9,10とを具備する。本実施形態では、揮発性半導体メモリ8の一部を、キャッシュメモリとして用いることも可能である。混成メインメモリ2の不揮発性半導体メモリ9,10からデータを読み出す場合には、読み出される頻度が高いデータは、揮発性半導体メモリ8にキャッシュされた上で、読み出される。一方、読み出される頻度が低いデータは、揮発性半導体メモリ8にキャッシュされずに、不揮発性半導体メモリ9,10から直接読み出される。
 まず、読み出し管理部19は、カラーリングテーブル14を参照することにより、読み出し対象データの静的読み出し頻度SR_colorを参照する(ステップV1)。静的読み出し頻度SR_colorが大きい(例えば、SR_color=5)場合には(ステップV1a)、読み出し対象データを揮発性半導体メモリ9,10から揮発性メインメモリ8(DRAM領域)にキャッシュするため、処理はステップV4に移る。
 読み出し管理部19は、読み出し対象データの静的読み出し頻度SR_colorが小さい(例えば、SR_color<=4)場合には(ステップV1a)、アドレス変換情報13を参照することにより、読み出し対象データが書き込まれている領域を確認し(ステップV2)、さらに、アクセス頻度算出部24は、読み出し対象データの動的読み出し頻度DR_colorを算出する(ステップV3)。
 読み出し管理部19は、読み出し対象データの静的読み出し頻度SR_colorと動的読み出し頻度DR_colorとに対して「SR_color≧3又はDR_colorが高い」が成り立つ場合には(ステップV3a)、揮発性半導体メモリ8(DRAM領域)に読み出し対象データを書き込む空き領域があるか否か確認する(ステップV4)。読み出し管理部19は、揮発性半導体メモリ8に、空き領域がある場合には(ステップV4a)、読み出し対象データを揮発性半導体メモリ9,10から揮発性半導体メモリ8(DRAM領域)にキャッシュする(ステップV5)。読み出し管理部19は、揮発性メモリ8に、空き領域がない場合には(ステップV4a)、揮発性半導体メモリ8に記憶されているデータを不揮発性半導体メモリ9,10にライトバックし、揮発性半導体メモリ8に記憶されているデータを消去することにより、空き領域を確保する(ステップV6)。ライトバック処理の後、読み出し管理部19は、揮発性半導体メモリ8の空き領域を再度確認する(ステップV7)。揮発性半導体メモリ8に空き領域が存在する場合(ステップV7a)、処理はステップV5に移り、存在しない場合(ステップV7a)、処理はステップV8に移る。
 読み出し管理部19は、読み出し対象データの静的読み出し頻度SR_colorと動的読み出し頻度DR_colorとに対して「SR_color≧3又はDR_colorが高い」が成り立たない場合には(ステップV3a)、読み出し対象データを、揮発性半導体メモリ8にキャッシュせずに、不揮発性半導体メモリ9,10から直接読み出す(ステップV8)。
 以上のように、静的読み出し頻度SR_color、動的読み出し頻度DR_colorを参照することで、読み出し方式が決定される。
 この図17においては、データ寿命SL_colorの判断は行われていない。この理由について説明する。後述するように、書き込み時においては、データ寿命SL_colorの短いデータは揮発性半導体メモリ8に配置される。このため、有効/無効フラグが1であり、データ寿命SL_colorが短いことを示すデータは、揮発性半導体メモリ8に記憶されることになる。この結果、図17において、データ寿命SL_colorに基づく判断は不要となる。
 次に、データの図9、図10に示すデータについての読み出し方式について具体的に説明する。図9、図10に示すデータは、図17で説明したデータの読み出し方式の決定処理のフローチャートに従うことにより、以下のように読み出し方式が決定される。
 まず、静的読み出し頻度SR_colorに5、静的書き込み頻度SW_colorに1が設定されているカーネルのテキスト領域は、読み出しの頻度が高く、書き込みの頻度は低いと推測される。このカーネルのテキスト領域における第1のデータは、オペレーティングシステム27が様々な処理をする際に読み出されるため、読み出し回数は多くなり、さらに高速に読み出される必要がある。
 メモリ管理装置1は、不揮発性半導体メモリ9,10から読み出された第1のデータを、プロセッサ3bの2次キャッシュメモリ5b又は1次キャッシュメモリ4bに対して書き込むとともに、並行して、混成メインメモリ2内の揮発性半導体メモリ8のメモリ領域にも読み出された第1のデータを転送する。
 再度同じ第1のデータが読み出される場合には、プロセッサ3bの2次キャッシュメモリ5b又は1次キャッシュメモリ4b上から、又はキャッシュヒットしない場合は混成メインメモリ2の揮発性半導体メモリ8のメモリ領域から、第1のデータの読み出しが行なわれる。混成メインメモリ2上の揮発性半導体メモリ8のメモリ領域に記憶された第1のデータは、揮発性半導体メモリ8のメモリ領域が枯渇しない限り、電源がオフされるまで揮発性半導体メモリ8上に保持される。
 次に、静的読み出し頻度SR_colorに5、静的書き込み頻度SW_colorに5が設定指定されているカーネルのデータ領域は、システム(情報処理装置100)が起動するたびに新たに生成、初期化される領域である。このため、カーネルのデータ領域における第2のデータ寿命SL_colorは短いと推測される。メモリ管理装置1は、最初に第2のデータの寿命SL_colorを参照する。第2のデータは、揮発性半導体メモリ8のメモリ領域が枯渇しない限り、揮発性半導体メモリ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のデータのうち、データ寿命SL_colorが短いと指定された第4のデータは、カーネルのデータ領域と同様に、揮発性半導体メモリ8のメモリ領域が枯渇しない限り、揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去される。
 一方、データ寿命SL_colorが長いと設定されている第4のデータは、揮発性半導体メモリ8のメモリ領域に配置されるが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFULLに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。
 次に、プロセスに参照されるファイルとして扱われるデータについて説明する。上記図10において、プロセスに参照されるファイルとして扱われるデータのデータ寿命SL_colorはすべて長いと設定されている。
 静的書き込み頻度SW_colorに1、静的読み出し頻度SR_colorに3が設定されているファイル類に含まれる第5のデータは、書き込みの頻度が極めて低く、予測される読み出しの頻度が高いことがオペレーティングシステム27によって推測される。このとき、メモリ管理装置1は、第5のデータを揮発性半導体メモリ8のメモリ領域に配置するが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFULLに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。
 静的書き込み頻度SW_colorに1、静的読み出し頻度SR_colorに2が設定されているファイル類に含まれる第6のデータは、静的書き込み頻度SW_colorが極めて低く、予測される静的読み出し頻度SR_colorも低いことがオペレーティングシステム27によって推測される。このように、メモリ管理装置1は、静的読み出し頻度SR_colorが高いと判断されていない場合、読み出し時に揮発性半導体メモリ8のキャッシュを介さず、不揮発性半導体メモリ9,10に直接アクセスする。
 静的書き込み頻度SW_colorに1、静的読み出し頻度SR_colorに1が設定されているファイル類に含まれる第7のデータは、静的書き込み頻度SW_colorが極めて低く、予測される静的読み出し頻度SR_colorも極めて低いことがオペレーティングシステム27によって推測される。このように、メモリ管理装置1は、静的読み出し頻度が高いと判断されていない場合、読み出し時に揮発性半導体メモリ8のキャッシュを介さず、不揮発性半導体メモリ9,10に直接アクセスする。
 以上のように、読み出し対象データの読み出し方式は、読み出し対象データのカラーリング情報に基づき決定される。これにより、読み出し対象データの特性(静的読み出し頻度SR_color、静的書き込み頻度SW_color、データ寿命SL_color)に合った読み出し方式を用いることが可能となり、データの読み出し効率の向上が図られる。
 次に、図18を参照して、混成メインメモリ2へのデータの書き込み処理について説明する。図18は、データの書き込み処理の一例を示すフローチャートである。
 まず、プロセッサ3a,3b,3cにより実行されるプロセス6a,6b,6cが、データ(書き込み対象データ)の書き込み要求を発生させる(ステップX1)。
 次に、プロセッサ3a,3b,3cに備えられているページテーブル(図示せず)により、書き込み対象データを指定する仮想アドレスが論理アドレスに変換される(ステップX2)。
 次に、書き込み管理部20は、カラーリングテーブル14を参照することにより、混成メインメモリ2のうちの書き込み対象のメモリ領域を決定する(ステップX3)。書き込み対象メモリ領域の選定については後述する。
 書き込み管理部20は、ステップX3により選択された書き込み対象メモリが揮発性半導体メモリ8か否か判断する(ステップX4)。判断の結果、選択された書き込み対象メモリが揮発性半導体メモリ8の場合(ステップX4a)、ステップX7の処理が実行され、書き込み対象メモリが不揮発性メモリの場合(ステップX4a)、ステップX5の処理が実行される。
 ステップX5において、書き込み管理部20は、メモリ使用情報11とカラーリングテーブル14を参照し、不揮発性半導体メモリ9,10のメモリ領域中の書き込み対象ブロック領域を決定する。ステップX6において、アドレス管理部18は、書き込み対象ブロック中のページの物理アドレスに基づきアドレス変換情報13を更新する。不揮発性半導体メモリ9,10がNAND型フラッシュメモリの場合、同一物理アドレスに対する上書きは行われないため、書き込みに伴う物理アドレスの更新が必要となる。
 書き込み管理部20は、書き込み先物理アドレスが決定した後、データの書き込み処理を行う(ステップX7)。続いて、アドレス管理部18は、アドレス変換情報13の有効/無効フラグを1にセットする(ステップX8)。動的カラー情報管理部25はカラーリングテーブル14の書き込み回数DWC_colorをインクリメントし(ステップX9)、メモリ使用情報管理部22は、メモリ使用情報11の書き込み回数をインクリメントする(ステップX10)。
 次に、図19を参照して、データの書き込み対象メモリ領域の決定処理について説明する。図19は、データの書き込み先領域の決定処理の一例を示すフローチャートである。
 ステップY1において、書き込み管理部20は、書き込み対象データのデータ寿命SL_colorを参照する。
 ステップY2において、書き込み管理部20は、データ寿命SL_colorが所定の値より長いか、短いか判断する。データ寿命SL_colorが所定の値以上の場合、処理は、ステップY9に移る。
 データ寿命が所定の値より短い場合、ステップY3において、書き込み管理部20は、DRAM領域の空き領域を確認し、ステップY4において、書き込み管理部20は、DRAM領域に空き領域があるか否か判断する。
 DRAM領域に空き領域がある場合、ステップY5において、書き込み管理部20は、書き込み対象データをDRAM領域に書き込む。
 DRAM領域に空き領域がない場合、ステップY6において、書き込み管理部20は、DRAM領域から他の不揮発性半導体メモリへのライトバック処理を実行する。そして、ステップY7において、書き込み管理部20は、DRAM領域の空き領域を確認し、ステップY8において、書き込み管理部20は、DRAM領域に空き領域があるか否か判断する。
 DRAM領域に空き領域がある場合、処理は、ステップY5に移り、書き込み管理部20は、書き込み対象データをDRAM領域に書き込む。
 DRAM領域に空き領域がない場合、処理はステップY9に移る。
 ステップY9において、書き込み管理部20は、カラーリングテーブル14で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
 ステップY10において、書き込み管理部20は、静的書き込み頻度SW_colorに5が設定されているか否か(書き込み対象データの静的書き込み頻度SW_colorが高いか否か)、判断する。
 静的書き込み頻度SW_colorに5が設定されている場合、処理はY13に移り、書き込み管理部20は、書き込み対象データの書き込み先としてB領域を選択する。
 静的書き込み頻度SW_colorに5ではない値(5未満の値)が設定されている場合、ステップY11において、メモリ管理装置1は、カラーリングテーブル14で管理されている書き込み対象データの静的読み出し頻度SR_colorを参照する。
 ステップY12において、書き込み管理部20は、静的読み出し頻度SR_colorに1~5のどの値が設定されているか判断する。
 このステップY12において静的読み出し頻度SR_colorに5が設定されている場合、ステップY13において、書き込み管理部20は、書き込み対象データの書き込み先として、B領域を選択する。
 ステップY12において静的読み出し頻度SR_colorに4が設定されている場合、ステップY14において、書き込み管理部20は、書き込み対象データの書き込み先として、A領域を選択する。
 このステップY12において静的読み出し頻度SR_colorに3が設定されている場合、ステップY15において、書き込み管理部20は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。次に、ステップY16において、書き込み管理部20は、カラーリングテーブル14で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
 ステップY17において、書き込み管理部20は、「静的書き込み頻度SW_colorが3以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」ことが成り立つか否か判断する。
 このステップY17において「SW_colorが3以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」が成り立たない場合、処理はステップY14に移り、書き込み管理部20は、A領域を選択する。
 ステップY17において「SW_colorが3以上であるか、又は、データの動的書き込み頻度DW_colorが高レベルである」が成り立つ場合、処理はステップY18に移り、書き込み管理部20は、C領域を選択する。
 上記ステップY12において静的読み出し頻度SR_colorに2が設定されている場合、ステップY19において、書き込み管理部20は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。
 ステップY20において、書き込み管理部20は、カラーリングテーブル14で管理されている書き込み対象データの静的書き込み頻度SW_colorを参照する。
 ステップY21において、書き込み管理部20は、「SW_colorが3以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」ことが成り立つか否か判断する。
 このステップY21において「SW_colorが3以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」が成り立つ場合、処理はステップY18に移り、書き込み管理部20は、C領域を選択する。
 ステップY21において「SW_colorが3以上であるか、又は、算出された動的書き込み頻度DW_colorが高レベルである」が成り立たない場合、処理はステップY22に移る。
 ステップY22において、書き込み管理部20は、「SW_colorが2以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」ことが成り立つか否か判断する。
 このステップY22において「SW_colorが2以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」が成り立つ場合、処理はステップY23に移り、書き込み管理部20は、D領域を選択する。
 ステップY22において「SW_colorが2以上であるか、又は、算出された動的書き込み頻度DW_colorが中レベルである」が成り立たない場合、処理はステップY24に移り、書き込み管理部20は、E領域を選択する。
 上記ステップY12において静的読み出し頻度SR_colorに1が設定されている場合、ステップY25において、書き込み管理部20は、データのカラーリング情報に基づいて、データの動的書き込み頻度DW_colorを算出する。
 ステップY26において、書き込み管理部20は、カラーリングテーブル14で管理されている書き込み対象データの静的読み出し頻度SW_colorを参照する。その後、処理はステップY21に移る。
 なお、図19の例では、静的カラー情報と動的カラー情報とを用いてデータの書き込み先領域を決定しているが、静的カラー情報のみを用いてデータの書き込み先領域を決定することもできる。すなわち、この図19の例のフローチャートの一部を流用し、静的カラー情報に基づいてデータの書き込み先領域を決定するとしてもよい。
 例えば、オペレーティングシステム27の開発者は、読み出し管理部19のデータ読み出し方式と書き込み管理部20データ書き込み方式の実装に対して、上記図9及び図10に示すような設定を行う。
 例えば、SR_colorに5、SW_colorに1が設定されているカーネルのテキスト領域における第1のデータは読み出される回数が多く、書き込まれる回数は少ないと推測される。第1のデータは、上記図17に示されている読み出し方式の決定動作に基づいて、システム稼働中に揮発性半導体メモリ8に移され読み書きされる。このため、第1のデータが実際に不揮発性半導体メモリ9,10に書き込まれる頻度は低い。しかし、第1のデータの重要性は高いため、この図19において、書き込み管理部20は、第1のデータを、SLCである不揮発性半導体メモリ9のB領域に書き込む。
 次に、SR_colorに5、SW_colorに5が設定されているカーネルのデータ領域は、情報処理装置100が起動するたびに新たに生成、初期化される領域なので、カーネルのデータ領域における第2のデータのデータ寿命は短いと推測される。書き込み管理部20は、最初に第2のデータのデータ寿命SL_colorを参照する。第2のデータは、情報処理装置100の稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去される。したがって、第2のデータは、不揮発性半導体メモリ9,10のメモリ領域に書き込まれない。
 次に、SR_colorに4、SW_colorに1が設定されているユーザプログラムの領域は、すべてのプロセスからリエントラントに呼び出されるカーネルと比べて、読み出し頻度は低い。ユーザプログラムの領域における第3のデータは、上記図16に示した読み出し方式によって長期にわたりアクセスされない場合にのみ不揮発性半導体メモリ9,10のメモリ領域に書き込まれる。したがって、第3のデータが不揮発性半導体メモリ9,10に書き込まれる頻度は低い。第3のデータは、カーネルのテキスト領域におけるデータと比較して重要度は低いため、図19ではMLC領域であるA領域に書き込まれる。
 SR_colorに4、SW_colorに4が設定されているプログラムに動的に確保される領域における第4のデータのうち、データ寿命SL_colorが短いと設定されている第4のデータは、カーネルのデータ領域と同様に、情報処理装置100稼働中に必ず揮発性半導体メモリ8上に存在する。書き込み管理部20は、最初にデータ寿命SL_colorを参照する。第4のデータは、システム稼働中に必ず揮発性半導体メモリ8上に存在し、電源がオフされるとともに揮発性半導体メモリ8から消去されるので不揮発性半導体メモリ9,10のメモリ領域に書き込まれない。
 一方、データ寿命SL_colorが長いと設定されている第4のデータは、揮発性半導体メモリ8のメモリ領域に配置されるが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFULLに埋まった場合、揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。プログラムのテキスト領域はデータの重要度が高いため、プログラムのテキスト領域におけるデータは、SLCであるC領域に書き込まれる。
 次にプロセスによって参照されるファイルとして扱われるデータについて説明する。図10では、プロセスによって参照されるファイルのデータ寿命SL_colorはすべて長いと設定されている。
 SW_colorに1、SR_colorに3が設定されているシステムファイル類における第5のデータは、書き込み頻度が極めて低く、予測される読み出し頻度が高いことがオペレーティングシステム27によって推測される。このとき、書き込み管理部20は、第5のデータを揮発性半導体メモリ8のメモリ領域に配置するが、混成メインメモリ2の揮発性半導体メモリ8のメモリ領域がFULLに埋まった場合、第5のデータは揮発性半導体メモリ8上から不揮発性半導体メモリ9,10のメモリ領域へのライトバック対象となる。第5のデータの書き込み頻度は低いと判断されるので書き込み管理部20は第5のデータをMLC領域へ配置する。
 SW_colorに3、SR_colorに3が設定されているファイル類は、書き込み頻度が極めて高く、予測される読み出し頻度も高いことがオペレーティングシステム27によって推測される。したがって、書き込み管理部20は、SW_colorに3、SR_colorに3が設定されているファイル類におけるデータをSLC領域へ配置する。
 SW_colorに1、SR_colorに2が設定されているファイル類に含まれる第6のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も低いことがオペレーティングシステム27によって推測される。第6のデータは、ファイルとしての重要度も低いと判断されるため、書き込み管理部20は、第6のデータをMLC領域へ配置する。
 SW_colorに1、SR_colorに1が設定されているファイル類に含まれる第7のデータは、書き込み頻度が極めて低く、予測される読み出し頻度も極めて低いことがオペレーティングシステム27によって推測される。第7のデータについては、ファイルとしての重要度も低いと判断されるため、書き込み管理部20は、第7のデータをMLC領域へ配置する。
 上記の処理により書き込み対象のメモリ領域が決定された場合、書き込み管理部20は、書き込み先の物理アドレスを決定する。この場合、書き込み管理部20は、カラーリングテーブル14を参照し、書き込み先の物理アドレスを適切に選択することでウェアレベリングの発生を抑え、不要な消去処理を低減する。
 ここでウェアレベリングとは、例えば、消去回数が最大のブロックと、消去回数が最小のブロックとの消去回数の差が、所定の閾値以内に収まるように、ブロック間でデータの入れ替え(交換)を行うことを意味する。例えば、NAND型フラッシュメモリは消去処理なしでのデータ上書きができないため、データ移動先は未使用のブロックである必要があり、元々データを記憶していたブロックの消去処理が発生することになる。
 次に、図20を参照して、データに対する書き込み対象ブロックの決定処理について説明する。図20は、データに対する書き込み対象ブロックの決定処理について説明するための図である。
 不揮発性半導体メモリ9,10は、ブロック単位でデータの消去が行われる。不揮発性半導体メモリ9,10のブロック領域毎の消去回数ECは、メモリ使用情報11を参照することにより取得することができる。ブロック領域の消去回数の上限値(消去可能上限回数)に対する消去回数ECの割合を消耗率とする。
 ブロック領域の消去回数ECが、当該ブロック領域の消去可能上限回数に達している場合には、消耗率は100%である。消耗率が100%の場合には、当該ブロック領域へのデータの書き込みは行われない。
 ブロック領域の消去回数ECが、当該ブロック領域の消去回数の上限値に近い場合(例えば、90%)には、当該ブロック領域に対するデータの書き込みを少なくする。書き込み管理部20は、カラーリングテーブル14を参照することにより、書き込み頻度(静的書き込み頻度SW_color、動的書き込み頻度DW_color)の低い書き込み対象データ(例えば、SW_colorが1、DW_colorが「中」)を、消耗率の高いブロック領域(例えば、消耗率90%未満)に書き込む。
 一方、ブロック領域の消去回数ECが、当該ブロック領域の消去回数の上限値より低い場合(例えば、消耗率10%)には、当該ブロック領域に対するデータの書き込みは、多くてもよい。書き込み管理部20は、カラーリングテーブル14を参照することにより、書き込み頻度(静的書き込み頻度SW_color、動的書き込み頻度DW_color)の高い書き込み対象データ(例えば、SW_colorが5、DW_colorが「高」)を、消耗率の低いブロック領域(例えば、消耗率10未満)に書き込む。
 以上のように、書き込み対象データを書き込むブロック領域は、書き込み対象データのカラーリング情報と、ブロック領域の消耗率に基づいて決定する。これにより、書き込み対象データの特性(書き込み頻度)に合った書き込み対象ブロック領域を選択することができ、データの信頼性の向上が図れる。また、以下において説明するように、混成メインメモリの寿命の延ばすことが可能となる。
 次に、図21乃至図25を参照して、書き込み対象データを書き込むブロック領域を、書き込み対象データのカラーリング情報、メモリ使用情報11、メモリ固有情報12に基づいて決定する処理についての詳細と効果について説明する。
 図21は、不揮発性半導体メモリ9,10の任意のブロック領域における消去回数の推移の一例を示すグラフである。この図21において、縦軸は消去回数、横軸は時間を表す。
 時間の経過により各ブロック領域における理想的な消去回数は変化する。例えばNAND型フラッシュメモリなどの不揮発性半導体メモリ9,10を使用する情報処理装置1では、将来的に不揮発性半導体メモリ9,10が劣化し、不揮発性半導体メモリ9,10を交換する必要が生じる。メモリ交換期までに不揮発性半導体メモリ9,10の多数のブロック領域を使用するためには、ウェアレベリングによる消去回数の平準化が必要である。図21では、不揮発性半導体メモリ9,10の任意のブロック領域における消去回数の推移を示している。ブロック領域に対して期待されている寿命に達した時点で、ブロック領域の消去回数が消去可能上限回数に達することが好ましい。
 例えば、すべてのブロック領域が図21で示した消去回数の推移に従うためには、ウェアレベリングにおいて各ブロック領域の消去回数の差に対する閾値を小さく設定することも可能である。
 図22は、ウェアレベリングにおいて消去回数の差に対する閾値を小さく設定した場合の変化の一例を示すグラフである。
 図22における破線は各ブロック領域の消去回数のばらつきの範囲を示している。図22に示すように、閾値を小さくすることにより、各ブロック領域の消去回数のばらつきは小さくなるが、ウェアレベリングのための消去処理の発生回数が増加し、この結果、不揮発性半導体メモリ9,10全体の寿命が短くなる可能性がある。
 書き込み管理部20は、消去回数の分散を低減させ、ウェアレベリングによる消去処理の発生回数を抑えるために、データを書き込む際に、メモリ使用情報11、メモリ固有情報12、カラーリングテーブル14に基づいた消去ブロック領域の選択を行う。
 図23は、消去回数に応じたブロック領域のグループ分けの一例を示すグラフである。
 図24は、消去回数に応じたブロック領域のグループ分けの判断基準を表す図である。
 本実施形態においては、ブロック領域毎に消去回数によるグループ分けが行われる。ブロック領域のグループ分けの結果を示す情報は、メモリ使用情報11として保存される。なお、ブロック領域のグループ分けの結果を示す情報は、メモリ固有情報12として保存されるとしてもよい。
 図23の太線は、最小の消去回数の推移を示しており、破線はウェアレベリングの閾値を表している。図23に示すように、各ブロック領域はウェアレベリングの閾値の範囲内(ばらつきの範囲内)でそれぞれの消去回数のグループに分類される。
 メモリ使用情報管理部22は、あるブロック領域のデータが消去され、再度書き込み可能になったとき、図24に示すような判断表に基づいて、このブロック領域がどのグループに属するか判断し、メモリ使用情報11に記憶する。
 この図24の判断表では、全てのブロック領域の消去回数のうちの最小の消去回数と、この最小の消去回数とウェアレベリングを行うか否かを判断するための閾値とを加算した値との間が、グループの数で分割されている。グループは、分割された範囲の下から上に向けて、h,g,f,e,d,c,b,aと設定されている。そして、判断表には、各グループに対する上限の消去回数と下限の消去回数とが設定されている。
 図25は、ウェアレベリングにおけるブロック領域の検索の一例を示す図である。
 書き込み管理部20は、カラーリングテーブル14の情報に基づいて、書き込み対象データのブロック領域を検索する基準となるグループを決定する。例えば、書き込み対象データのアクセス頻度が高い場合には、消去回数の少ないグループが決定され、書き込み対象データのアクセス頻度が低い場合には、消去回数の多いグループが決定される。以下においては、書き込み対象データに対して、グループcが決定されたとして説明を行う。
 検索基準となる書き込み対象データのグループcが決定されると、図25に示すように、書き込み管理部20は、メモリ使用情報11に基づいて、決定された書き込み対象データのグループcに属するブロック領域を検索する。
 決定された書き込み対象データのグループcに属するブロック領域が存在する場合、このブロック領域が書き込み対象データの書き込み先として決定される。
 これに対して、決定された書き込み対象データのグループcに属するブロック領域が存在しない場合、書き込み管理部20は、決定された書き込み対象データのグループcの近傍のグループbに属するブロック領域を検索する。
 決定された書き込み対象データの近傍グループbに属するブロック領域が存在する場合、この近傍グループbに属するブロック領域が書き込み対象データの書き込み先として選択される。
 決定された書き込み対象データの近傍グループbに属するブロック領域が存在しない場合、以下同様に、ブロック領域が決定されるまで、さらに書き込み対象データのグループcに対する他の近傍グループdに対する検索が実行される。このような検索処理によってデータを書き込むブロック領域の物理アドレスが決定されると、書き込み管理部20は、データの書き込みを行い、アドレス管理部18はアドレス変換情報13を更新する。
 なお、書き込み管理部20は、他のブロック領域の検索方法を用いて書き込み先のアドレスを決定するとしてもよい。例えば、書き込み管理部20は、消去回数をキーとし、消去ブロック領域をノードとする木構造(B-Tree B+Tree RB-Tree等)で書き込み可能なブロック領域(消去処理済み)を管理し、メモリ固有情報12又はメモリ使用情報11に保存する。書き込み管理部20は、基準となる消去回数をキーにツリーを検索し、最も近い消去回数をもつブロック領域を抽出する。
 任意のプロセス3bによってデータが消去されると、オペレーティングシステム27はこのデータについてのカラーリングテーブル14の内容を消去する。アドレス管理部18は、カラーリングテーブル14の内容が消去されたとき、アドレス変換情報13における消去対象データの論理アドレスに対応する物理アドレスを消去する。
 データが揮発性半導体メモリ8上に存在する場合は、揮発性半導体メモリ8上のデータが消去される。
 次に、図26を参照して、本実施形態に係るメモリ管理装置1にキャッシュメモリを備えた構成について説明する。図26は、本実施形態に係るメモリ管理装置1にさらにキャッシュメモリを備えたメモリ管理装置の一例を示すブロック図である。なお、この図26においては、プロセッサ3a,3b,3cのうちプロセッサ3bを代表として説明するが、他のプロセッサ3a,3cについても同様である。
 メモリ管理装置1は、さらに、キャッシュメモリ28を備えている。
 プロセッサ3bは、1次キャッシュメモリ4b、2次キャッシュメモリ5bに加えて、キャッシュメモリ28を直接アクセス可能である。
 メモリ管理装置28は、1次キャッシュメモリ4b、2次キャッシュメモリ5b、キャッシュメモリ28のいずれかにおいて、ページイン又はページアウトが発生した場合に、混成メインメモリ2をアクセスする。
 メモリ管理装置1、混成メインメモリ2、プロセッサ3aの実装例を、図27の例に基づいて説明する。
 図27(A)は、メモリ管理装置1、混成メインメモリ2、プロセッサ3aの第1の実装例を示すブロック図である。図27(A)では、揮発性半導体メモリ8が、DRAMであり、不揮発性半導体メモリ9,10がNAND型フラッシュメモリである場合について説明するが、これに限定されない。
 プロセッサ3aは、メモリコントローラ(MMU)3maと、1次キャッシュメモリ4aと、2次キャッシュメモリ4bとを備える。メモリ管理装置1は、DRAMコントローラを備える。プロセッサ3aとメモリ管理装置1は同一基板(例えば、SoC)上に形成される。
 揮発性半導体メモリ8は、メモリ管理装置1が備えるDRAMコントローラにより制御される。不揮発性半導体メモリ9,10は、メモリ管理装置1により制御される。図27(A)の実装例では、揮発性半導体メモリ8が搭載されるメモリモジュールと、不揮発性半導体メモリ9,10が搭載されるメモリモジュールとは、別モジュールである。
 図27(B)は、メモリ管理装置1、混成メインメモリ2、プロセッサ3aの第1の実装例を示すブロック図である。図27(B)では、揮発性半導体メモリ8が、DRAMであり、不揮発性半導体メモリ9,10がNAND型フラッシュメモリである場合について説明するが、これに限定されない。図27(A)と同様の構成については、説明を省略する。
 図27(B)の例では、プロセッサ3aが搭載されたチップに、メモリ管理装置1が外部から電気的に接続される構成となっている。また、メモリ管理装置1に、揮発性半導体メモリ8が接続される構成となっている。メモリ管理装置1は、DRAMコントローラ(図示省略)を備える。
 次に、図28を参照して、本実施形態に係るメモリ管理装置1と情報処理装置100の別構成態様について説明する。図1に示したメモリ管理装置1と情報処理装置100では、データについての書き込み回数DWC_color、読み出し回数RWC_colorのカウント(インクリメント)は、メモリ管理装置1の動的カラー情報管理部22で管理する。これに対し、図28に示すメモリ管理装置1と情報処理装置100では、データについての書き込み回数DWC_color、読み出し回数RWC_colorのカウントは、プロセッサ3a,3b,3cが備えるメモリコントローラ(MMU)3ma,3mb,3mcで行う。以下の説明において、メモリコントローラ3ma,3mb,3mcのうちメモリコントローラ3maを代表として説明するが、他のメモリコントローラ3mb,3mcについても同様である。
 プロセッサ3aに備えられているメモリコントローラ3maは、データについての書き込み回数DWC_color、読み出し回数DRC_colorのカウントを行うカウンタctaを備える。さらに、メモリコントローラ3maは、データについての書き込み回数DWC_color、読み出し回数DRC_colorを管理するカウント情報ciaを含む。
 カウンタctaは、例えば、プロセッサ3aがデータに対してロード命令を発生させた場合、当該データに対する読み出し回数DRC_colorをカウント(インクリメント)し、カウント情報ciaを更新する。また、カウンタctaは、例えば、プロセッサ3aがデータに対してストア命令を発生させた場合、当該データに対する書き込み回数DWC_colorをカウント(インクリメント)し、カウント情報ciaを更新する。
 カウント情報ciaにより管理される、データについての書き込み回数DWC_color、読み出し回数DRC_colorは、定期的に、当該データについてのメモリ管理装置1のカラーリングテーブル14の書き込み回数DWC_color、読み出し回数DRC_colorに反映される。
 この図28の構成態様においては、次の効果が得られる。すなわち、プロセッサ3aの動作周波数はGHzオーダーであるのに対し、メモリ管理装置1の動作周波数はMHzオーダーである場合に、メモリ管理装置1では、プロセッサ3aで発生する書き込み、読み出しをカウントすることが困難な場合が考えられる。これに対し、図28の構成態様の場合には、プロセッサ3aのカウンタctaで、書き込み、読み出しをカウントするため、高い動作周波数での読み出し回数、書き込み回数をカウントすることが可能となる。
 次に、図29を参照して、複数のメモリ管理装置1により、複数の不揮発性半導体メモリを管理する構成について説明する。図29は、複数の不揮発性半導体メモリを管理する複数のメモリ管理装置の一例を示す斜視図である。
 図29においては、一つのメモリ管理装置1と、複数のNAND型フラッシュメモリ29とで、一つのメモリモジュール30が形成される。図29の例では、3つのメモリモジュール30が形成されている。
 複数の不揮発性半導体メモリ29は、例えばNAND型フラッシュメモリであり、上記の不揮発性半導体メモリ9,10として用いられる。
 メモリ管理装置1は、同じメモリモジュール30に属する複数の不揮発性半導体メモリ29に対するアクセスを管理する。
 さらに、複数のメモリモジュール30内に備えられている複数のメモリ管理装置1は、互いに連携して一つのメモリ管理装置にように動作する。
 メモリモジュール30のメモリ管理装置1は、メモリモジュール30内の複数の不揮発性半導体メモリ29に対するECC機能及びRAID機能を備え、ミラーリング及びストライピングを行う。
 それぞれの不揮発性半導体メモリ29は、メモリモジュール30が通電中(動作中)であっても、ホットスワップ(交換)可能である。複数の不揮発性半導体メモリ29のそれぞれには、ボタン31が対応付けられている。
 ボタン31は、警告出力部(例えばLEDなど)を備える。例えば、警告出力部が第1の色(緑)の場合は、正常状態を表し、第2の色(赤)の場合には交換必要な状態を表す。
 ボタン31が押されると、プロセス6a,6b,6c及びオペレーティングシステム27に通知が送信され、アクセスなどが発生していない取り外し安全なときに、ボタン31は、第3の色(青)になり、このボタン31に対応する不揮発性半導体メモリ29は、ホットスワップ可能となる。
 ホットスワップ実行時には、ホットスワップを要求するボタン31が押された後、ライトバックが完了した時点で、交換可能であることを示すランプが点灯し、不揮発性半導体メモリ29の交換が行われる。
 メモリ管理装置1の処理部15は、情報記憶部17に記憶されているメモリ使用情報11とメモリ固有情報12とを参照し、各不揮発性半導体メモリ29の書き換え回数又は読み出し回数が、メモリ固有情報12に記述されているアクセス可能上限回数の所定割合に達したか否か判断する。そして、処理部15は、書き込み回数又は読み出し回数が、書き込み可能上限回数又は読み出し可能上限回数の所定割合に達している場合、メモリ交換を通知又は警告する。
 本実施形態において、不揮発性半導体メモリ29のページサイズ又はブロックサイズが大きい場合、プリロードが有効である。
 プリロードが行われる場合、メモリ管理装置1の処理部15は、不揮発性半導体メモリ29に記憶されているデータに対応するカラーリング情報を参照し、頻繁にアクセスされる可能性の高いデータを、予めキャッシュメモリ28にプリロードしておく。
 あるいは、処理部15は、周期性のあるデータであって、所定の時間にアクセスされる可能性の高いデータを、その所定時間の前にプリロードしておく。
 本実施形態においては、混成メインメモリ2の各メモリの耐久性に基づいてデータの配置が決定され、混成メインメモリ2の寿命を延ばすことができる。また、混成メインメモリ2に対する高速なアクセスを実現できる。
 本実施形態においては、混成メインメモリ2の各メモリの耐久性に基づいてデータが配置されるため、混成メインメモリ2における致命的なデータ欠損を防止することができる。
 本実施形態に係るメモリ管理装置1及び混成メインメモリ2を用いることにより、スワップをなくすことができる。
 本実施形態においては、不揮発半導体メモリ9,10がメインメモリとして用いられる。これにより、メインメモリの記憶容量を大容量化することができ、ハードディスク又はSSD(Solid State Disk)を用いた2次記憶装置を使用しなくてもよい。
 本実施形態においては、不揮発性半導体メモリ9,10をメインメモリとして用いるため、インスタント・オンを高速化できる。
 (第2の実施形態)
 コンピュータ・アーキテクチャの基本的な型であるノイマン型アーキテクチャはCPUの周波数とメインメモリの速度差によって生じるフォン・ノイマン・ボトルネックと呼ばれる問題を有している。従来、揮発性メモリをメインメモリに使用する場合、メインメモリとCPUコアの間に高速なキャッシュメモリ(SRAM等)を設置することにより、この問題を緩和してきた。
 近時、メインメモリとして揮発性半導体メモリより低速な不揮発性半導体メモリを使用する技術が開発されている。この場合、上記問題がより顕著に現れる。このため、キャッシュメモリのヒット率を向上させる必要がある。
 本実施形態では、不揮発性メモリをメインメモリとする場合において、キャッシュメモリのヒット率を向上することが可能なメモリ管理装置について説明する。
 本実施形態は、不揮発性半導体メモリ9,10をメインメモリとして用い、揮発性半導体メインメモリ8の一部をキャッシュメモリとして用いる。本実施形態では、キャッシュメモリとして用いられる揮発性半導体メモリ8について説明する。
 図30は、揮発性半導体メモリ(以下、単にキャッシュメモリとも言う)8の物理アドレス空間を示している。
 本実施形態において、キャッシュメモリ8の物理アドレス空間は、複数の領域(エリア)L0~L5に分けられている。各エリアは、物理アドレス空間上連続である必要はない。各エリアのサイズは、例えば上位のエリア程、物理アドレス空間が大きく設定されている。さらに、上位のエリアは、隣接する下位のエリアにエリアが拡張可能とされている。各エリアの最大拡張サイズは、エリアリミットELMにより管理されている。
 上位エリアはエリアサイズが大きいため、このエリア内のデータは長期間保持される可能性が高い。一方、下位エリアはエリアサイズが小さいため、このエリア内のデータは短期間しか保持されない可能性が高い。
 本実施形態においては、上位エリアには、書き出し優先度の低いデータを配置し、下位エリアには、書き出し優先度の高いデータを配置する。この配置の処理は、例えば、図1の書き込み管理部20が行う。書き出し優先度は、カラーリング情報を用いて判断する。なお、「書き出し」とは、揮発性半導体メモリ8から不揮発性半導体メモリ9,10へのデータの移動を意味する。
 キャッシュメモリ8は、キャッシュヘッダCHDを有している。キャッシュヘッダCHDは各エリアの管理情報を格納している。すなわち、キャッシュヘッダCHDには、各エリアのエリアリミットELM、フリーキャッシュラインリストFCL、及びエリアキャッシュラインリストECLが記憶されている。
 フリーキャッシュラインリストFCLは、キャッシュメモリ8の空き領域を管理するデータ構造であり、どのエリアにも属していないキャッシュラインに対応する管理情報としての複数のノードを格納している。
 エリアキャッシュラインリストECLは、キャッシュメモリ8の使用領域を管理するデータ構造であり、エリア毎に、フリーキャッシュラインリストFCLから取得したノードを格納する。
 キャッシュヘッダCHDの内容は、情報処理装置100の起動時に不揮発性半導体メモリから読み込むことにより初期化される。また、情報処理装置100の終了時、キャッシュヘッダCHDの内容は、不揮発性半導体メモリ領域に退避される。
 情報処理装置100の起動時(コールドブート時)は、オペレーションシステムが設定した内容がキャッシュヘッダCHDに記録され、各エリアの基本情報が生成される。
 なお、エリアリミットELMは、ユーザが各自のシステムの使用形態に合わせて設定すること可能であり、これを可能とするためのインターフェースを設けてもよい。
 フリーキャッシュラインリストFCL、エリアキャッシュラインリストECL、及びノードの詳細については後述する。
 上記のように、混成メインメモリ2に書き込まれるデータは、混成メインメモリ2上の配置(書き込み)領域を決定するヒント情報としてのカラーリング情報を有している。このため、このカラーリング情報を用いてキャッシュメモリ8の各エリアに対するデータの書き込みを制御することにより、キャッシュのヒット率を向上することが可能となる。これにより、不揮発性半導体メモリ9,10への読み出しの頻度の低減が図れ、不揮発性半導体メモリ9,10を保護することが可能である。
 図31(a)(b)、図32(a)(b)は、上記カラーリングテーブル14のカラーリング情報と、図30に示すキャッシュメモリ8の各エリアとの対応関係を示すテーブル(CET)の例を示している。
 図31(a)は、読み出しアクセスを優先したものであり、読み出しのヒット率を向上可能とするものである。具体的には、図31(a)は、カラーリング情報としてのデータ寿命SL_color、静的読み出し頻度情報SR_colorと、動的読み出し頻度DR_color、及び揮発性半導体メモリ8のエリアの対応関係を示している。図31(a)に示すように、静的読み出し頻度情報SR_colorの値が大きく、読み出し頻度が高いデータ程、揮発性半導体メモリ8の上位のエリアに配置される。つまり、読み出しアクセスを優先する場合には、静的読み出し頻度情報SR_colorと動的読み出し頻度DR_colorを参照し、静的読み出し頻度情報SR_colorと動的読み出し頻度DW_colorをエリアのサイズが大きい上位エリアに配置する。上位エリアはエリアサイズが大きいため、このエリア内のデータは長期間保持される可能性が高い。このため、読み出しアクセスのキャッシュヒット率を向上することが可能である。
 また、データ寿命が“S”であるデータは、他のカラーリング情報に係らずエリアL5に配置される。例えば演算途中のデータなどは、データの寿命が短いため、不揮発性半導体メモリ9,10に書き込む必要が低い。しかし、このようなデータは数多く存在する。このため、このようなデータはキャッシュメモリ8において、最も大きなサイズのエリアL5に配置される。
 図31(b)は、書き込みアクセスを優先したものであり、書き込みのヒット率を向上可能とするものである。具体的には、図31(b)は、カラーリング情報としてのデータ寿命SL_color、静的書き込み頻度情報SW_colorと、動的書き込み頻度情報DW_color、及び揮発性半導体メモリ8のエリアの対応関係を示している。つまり、書き込みアクセスを優先する場合には、静的書き込み頻度情報SW_colorと動的書き込み頻度DW_colorを参照し、静的書き込み頻度情報SR_colorと動的書き込み頻度SW_colorをエリアのサイズが大きい上位エリアに配置する。これにより、書き込みアクセスのキャッシュヒット率を向上することが可能である。
 また、データ寿命が“S”のデータは、図31(a)と同様に、エリアL5に配置される。
 図32(a)は、読み出し頻度と書き込み頻度の両方を考慮したものであり、読み出し頻度と書き込み頻度の少なくとも一方が高ければヒット率を向上可能とするものである。具体的には、カラーリング情報としてのデータ寿命SL_colorと、静的読み出し頻度情報SR_colorの値と静的書き込み頻度情報SW_colorの値の和と、揮発性半導体メモリ8のエリアの対応関係を示している。
 図32(b)は、図32(a)の変形であり、読み出し頻度と書き込み頻度に重み付けしたものであり、読み出し頻度と書き込み頻度に任意に重みを設定し、ヒット率を向上可能とするものである。図32(a)と異なり、SR_color * W + SW_color * (1-W) の値に対して揮発性半導体メモリ8のエリアが対応付けられている。
 図32(a)(b)において、データ寿命が“S”のデータは、図31(a)(b)と同様に、エリアL5に配置される。
 図31(a)(b)、図32(a)(b)に示すカラーリング情報とエリアの関係を示すテーブルCETは、これらのうちの1つが、例えば情報記憶部17に記憶される。
 また、カラーリング情報とエリアの関係は、図31(a)(b)、図32(a)(b)に示す例に限定されるものではなく、ユーザの要求に応じて変化し得るものである。このため、拡張性を有するように、キャッシュメモリ8のエリアが上記にように拡張可能に設定されている。
 次に、図33を参照して、キャッシュエリアの管理方法の一例を説明する。図33は、キャッシュメモリ8のキャッシュヘッダCHDに記憶されたフリーキャッシュラインリストFCL、エリアキャッシュラインリストECLの一例を示している。
 フリーキャッシュラインリストFCLは、前述したように、キャッシュメモリ8の空き領域を示すデータ構造であり、キャッシュラインに対応した複数のノードNDにより構成されている。各ノードNDは、キャッシュラインの物理アドレス、所属エリア、更新フラグにより構成されている。
 キャッシュラインは、不揮発性半導体メモリ9、10のページサイズ(I/Oサイズ)に対応している。各ノードNDは、キャッシュラインの物理アドレスを記憶している。
 所属エリアは、キャッシュメモリに設定されたエリアL0~L5のいずれかである。
 更新フラグは、キャッシュラインのデータに更新等が発生したかどうかを示すフラグである。この更新フラグが“0”である場合、データが消去されたこと、又は、データが揮発性半導体メモリ8に書き込まれ、この書き込まれたデータが更新されていないことを示している。
 また、更新フラグが“1”である場合、キャッシュラインのデータが更新され、このデータの更新が不揮発性半導体メモリ9,10に反映されていないことを示している。
 この更新フラグは、例えば処理部15により制御される。処理部15は、不揮発性半導体メモリ9,10からキャッシュメモリ8にデータを書き込む際、対応する更新フラグを“0”にセットし、この書き込まれたデータがキャッシュメモリ8において更新された場合、更新フラグを“1”にセットする。また、処理部15は、キャッシュメモリ8のデータが消去された際、対応する更新フラグを“0”にセットし、さらに、キャッシュメモリ8のデータの更新を不揮発性半導体メモリ9,10に反映した場合、対応する更新フラグを“0”にセットする。
 なお、更新フラグは、各ノードに配置せず、例えば情報処理部17に記憶されているダーティビットを示すフィールドの内容を参照してもよい。
 一方、エリアキャッシュラインリストECLは、前述したように、キャッシュメモリ8の使用領域を管理するデータ構造であり、各エリアに含まれるキャッシュラインに対応してノードを格納している。すなわち、不揮発性半導体メモリ9,10から読み出されたデータをキャッシュメモリ8に書き込む場合、データに付されたカラーリング情報に基づきフリーキャッシュラインリストFCLの各ノードの所属エリアがサーチされ、空きエリアがある場合、そのノードが取得され、エリアキャッシュラインリストECLの対応するエリアに配置される。例えば書き込みデータがエリアL5に書き込むべきデータである場合、フリーキャッシュラインリストFCLの各ノードがサーチされ、エリアL5又は拡張領域としての下位のエリアL4~L0のうちの1つのノードが取得される。この取得されたノードは、エリアL5に対応するエリアキャッシュラインリストECLに接続される。
 また、取得されたノードのキャッシュライン物理アドレスに従って、キャッシュメモリ8にデータが書き込まれる。さらに、ノードNDの更新フラグが“0”に設定される。
 エリアキャッシュラインリストECLは、例えばFIFO(First-in/First-out)や、LRU(Least Recently Used)等のアルゴリズムに基づき管理される。このため、例えば各エリアに対応してフリーキャッシュラインリストFCLからノードが取得された場合、取得されたノードは、設定されたアルゴリズムに基づきソートされる。
 エリアキャッシュラインリストECLの例えば先頭に位置するノードに対応するキャッシュラインが常にそのエリアの書き出し対象となる。
 また、エリアキャッシュラインリストECLにおいて、各エリアに対応して配置されるノードの数は、エリアリミットELMにより管理され、各エリアのリストの長さがエリアリミットELMを越えないように管理されている。
 なお、図33では、キャッシュエリアの管理方法として、キャッシュヘッダを用いた、ソフトウェア処理による管理について説明したが、キャッシュラインをキャッシュタグで管理する構成を用いた、ハードウェアによる管理であってもよい。
 図34は、例えば処理部15によるデータの書き込み処理を示している。すなわち、図34は、不揮発性半導体メモリ9,10から新たにデータが読み出され、キャッシュメモリ8に配置されることが決定された場合の処理の流れを示している。本実施形態は、各エリアのサイズを可変長にしているため、エリアが拡張可能かどうかにより、データ書き込みまでのプロセスが異なる。
 図34において、キャッシュメモリ8にデータを配置する場合、先ず、キャッシュメモリ8のデータ配置エリアが決定される(ステップS31)。すなわち、図31(a)(b)、図32(a)(b)に示す対応関係に基づき、読み出されたデータをキャッシュメモリ8のどのエリアに配置するかが決定される。
 具体的には、不揮発性半導体メモリ9,10から読み出されたデータに付されたカラーリング情報に基づき、例えば図31(a)に示すテーブルCETが参照される。データに付されたカラーリング情報のうち、データ寿命が“L”で、静的読み出し頻度情報SR_colorの値が“1”、読み出し頻度が“高”である場合、このデータは、エリアL0に配置される。また、データに付されたカラーリング情報のうち、データ寿命が“L”で、SR_colorの値が“4”、読み出し頻度が“高”である場合、このデータは、エリアL4に配置される。
 次に、エリアの拡張が可能かどうか判別される(ステップS32)。例えばエリアキャッシュラインリストのノードの数から、そのエリアの現在のサイズを認識できる。このため、この現在のサイズと、キャッシュヘッダCHDに記載されたエリアリミットELMの値が比較される。この結果、現在のサイズがエリアリミットELMの値より小さい場合、エリアが拡張可能であると判定される。
 エリアが拡張可能である場合、フリーキャッシュラインリストFCLに、そのエリアに対応するノードNDが存在するかどうかが判定される(ステップS33)。すなわち、フリーキャッシュラインリストFCL内のノードの所属エリアがサーチされ、対応するエリアが存在するかどうかが判別される。この場合、データがエリアL4に書き込むべきデータである場合、エリアL4はエリアL3の一部まで拡張可能であるため、エリアL4とエリアL3がサーチされる。
 この結果、対応するノードNDが存在する場合、そのノードNDがフリーキャッシュラインリストから取得される(ステップS34)。
 この取得したノードNDからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、不揮発性半導体メモリ9,10から読み出されたデータがキャッシュメモリ8に書き込まれる(ステップS35)。
 この後、キャッシュヘッダCHDが更新される(ステップS36)。すなわち、フリーキャッシュラインリストFCLから取得されたノードNDがエリアキャッシュラインリストECLに移動され、更新フラグがデータ“0”に設定される。
 次いで、アドレス変換テーブルが更新される(ステップS37)。すなわち、キャッシュメモリ8に書き込まれたデータに対応する不揮発性半導体メモリ9,10の物理アドレスがアドレス変換テーブルに書き込まれる。
 一方、ステップS33において、フリーキャッシュラインリストFCLに対応するノードNDが存在しないと判定された場合、エリアキャッシュラインリストECLが最下位エリアからサーチされる(ステップS38)。すなわち、新たなノードNDを生成するため、キャッシュメモリ8内のいずれかのデータを不揮発性半導体メモリ9,10へ転送してフリーエリアを生成する必要がある。このため、図33に示すエリアキャッシュラインリストECLの最下位エリアL0からエリアL5の全エリアがサーチされる。
 例えば不揮発性半導体メモリ9,10から読み出されたデータがエリアL4に書き込むべきデータである場合において、エリアL4は下位エリアの一部に拡張可能とされている。このため、エリアキャッシュラインリストECLの下位エリアのノードNDが取得される。
 次いで、ノードNDが取得できたかどうかが判定される(ステップS39)。この結果、ノードNDを取得できた場合、この取得したノードNDからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、キャッシュメモリ8内のデータが不揮発性半導体メモリ9,10に書き込まれる(ステップS40)。
 この後、キャッシュヘッダCHDが更新される(ステップS41)。すなわち、エリアキャッシュラインリストECLのノードNDに対応するデータが不揮発性半導体メモリ9,10に書き込まれたことにより、フリーのノードNDが生成されたことなる。このノードNDがフリーキャッシュラインリストFCLに移動され、更新フラグがデータ“0”に設定される。
 次いで、制御が前記ステップS33に移行される。この場合、フリーキャッシュラインリストFCLにフリーなノードNDが存在するため、このノードが取得され、このノードで指定された物理アドレスにデータが書き込まれる(ステップS33~S35)。次いで、キャッシュヘッダCHD及びアドレス変換テーブルが更新される(ステップS36,S37)。
 また、ステップS32において、エリアの拡張が困難と判別された場合、エリアキャッシュラインリストELCのそのエリアのノードNDがサーチされ、先頭ノードNDが取得される(ステップS42)。この取得されたノードNDは、優先度の低いエリアのノードである。
 この後、前述した動作と同様に、取得したノードからキャッシュラインの物理アドレスが取得され、この物理アドレスに基づき、揮発性半導体メモリ8のデータが不揮発性半導体メモリ9,10に書き込まれる(ステップS40)。この後、キャッシュヘッダが更新される(ステップS41)。
 さらに、前記ステップS39において、エリアキャッシュラインリストECLをサーチした結果、ノードNDを取得できなかった場合、キャッシュメモリ8を使用することができないため、不揮発性半導体メモリ9,10にデータが書き込まれる(ステップS43)。この後、アドレス変換テーブルが更新される(ステップS37)。
(キャッシュメモリの消去)
 図35は、キャッシュメモリ8の消去動作の一例を示している。キャッシュメモリ8は、ソフトウェアにより消去可能とされている。
 図35に示すように、キャッシュメモリ8に記憶されたデータの消去要求が発行された場合(ステップS51)、各ノードNDの更新フラグがサーチされ、不揮発性半導体メモリ9,10に更新されていないデータが検出される(ステップS52)。すなわち、例えばエリアキャッシュラインリストECLの更新フラグがデータ“1”であるノードが検出される。この結果、データ“1”である更新フラグがない場合、処理が終了される。
 また、データ“1”である更新フラグがある場合、そのノードNDのキャッシュラインの物理アドレスに基づき、キャッシュメモリ8内のデータが不揮発性半導体メモリ9,10に書き込まれる(ステップS53)。
 この後、キャッシュヘッダCHDが更新される(ステップS54)。すなわち、エリアキャッシュラインリストECLのノードが、フリーキャッシュラインリストFCLに移行され、更新フラグがデータ“0”に設定される。次いで、制御がステップS52に移行される。このような動作が、データ“1”である更新フラグが無くなるまで繰り返される。
 上記第2の実施形態によれば、データに付されたカラーリング情報とキャッシュメモリ8のエリアとの関係に基づき、重要度の高いデータは揮発性半導体メモリ8の上位のエリアに記憶している。したがって、キャッシュメモリ8のヒット率を向上させることが可能である。
 また、キャッシュメモリ8のヒット率が高いため、不揮発性半導体メモリ9,10に対するアクセス回数を低減することが可能であり、不揮発性半導体メモリ9,10を保護することが可能である。
 しかも、上位のエリアは拡張領域があるため、拡張領域が満杯となるまでデータを書き込むことができる。エリアが小さい場合、重要度が高くとも、アクセスが暫くないデータは、例えばLRUのアルゴリズムに基づき、キャッシュメモリ8からライトバックされてしまう可能性が高い。しかし、上位エリアを下位エリアまで拡張可能とし、拡張領域を含めて広いエリア確保することにより、アクセスが少ないデータもキャッシュメモリ内に残すことが可能である。したがって、キャッシュメモリ8のヒット率を向上することが可能である。
 また、キャッシュメモリ8は、カラーリング情報毎にエリアがL0~L5に分けられている。上位のエリアとしての例えばエリアL5は、規定のサイズ以上のデータを記憶する場合、それより下位のエリアL4の一部までエリアを拡張可能とされている。また、拡張領域までデータが書き込まれ、エリアを拡張できなくなった場合、FIFOや、LRU等のアルゴリズムに基づき、キャッシュメモリ8のデータが不揮発性半導体メモリ9,10へライトバックされる。最下位のエリアL0は、拡張領域を持たないため、エリアが満杯となった場合、FIFOやLRU等のアルゴリズムに基づきライトバックが行われる。このため、書き込み頻度が高いデータをキャッシュメモリ8に長期間保存することが可能である。したがって、消去回数に制限がある不揮発性半導体メモリ9,10を保護することが可能である。
 (第3の実施形態)
 次に、図36乃至図42を用い、第3の実施形態に係るメモリ管理装置およびその制御方法について説明する。本実施形態は、上記第1の実施形態の変形例である。本実施形態は、不揮発性半導体メモリ(NAND型フラッシュメモリ)9,10へのアクセス回数を削減でき、メモリ寿命を長期化できる一例に関する。なお、この説明において、上記第1の実施形態と重複する部分の詳細な説明を省略する。
 <アドレス変換情報の有効/無効フラグの真理値> 
 まず、図36を用い、上記図4中のアドレス変換情報13が有する不揮発性半導体メモリ9,10上のデータの有無を表す有効(valid)/無効(invalid)フラグの真理値について説明する。
 図示するように、フラグの初期値は、”0”である。 
 フラグ”0(無効)”は、対応する論理アドレスは不揮発性半導体メモリ9,10にはマッピングされていないか、もしくはマッピングされたが消去対象となったことを表す。 
 フラグ”1(有効)”は、対応する論理アドレスは不揮発性半導体メモリ9,10とのうちの少なくとも一方に、マッピングされていることを表す。
 なお、フラグ”0(無効)”は、不揮発性半導体メモリ(NAND)9,10上にあるブロック内の全ページがフラグ”0(無効)”となったときに、そのブロックにある全てのデータを消去できるとする。ブロック内に1つでもフラグ”0(有効)”を有するページがあれば、そのブロックはまだ消去できない。
 <有効/無効フラグの状態遷移> 
 次に、図37を用い、上記不揮発性半導体メモリ9,10の有効(valid)/無効(invalid)フラグの状態遷移について説明する。
 図示するように、有効/無効フラグは、不揮発性半導体メモリ9,10にマッピングされた場合は、フラグ”0”から”1”に状態遷移する。一方、不揮発性半導体メモリ9,10上のデータが消去対象となった場合は、フラグ”1”から”0”に状態遷移する。
 <1.メモリ解放要求の処理フロー> 
 次に、図38に沿って、混成メインメモリ2のメモリ解放要求の処理フローについて説明する。
 (S001) 
 図示するように、まず、ステップS001の際、例えば、プロセッサ3aのオペレーティングシステムOS(第1の実施形態のオペレーティングシステム27に相当)は、揮発性半導体メモリ8のメモリ解放要求(引数:論理アドレス)を、メモリ管理装置1に送信する。
 (S002) 
 続いて、ステップS002の際、上記メモリ解放要求を受けたメモリ管理装置1は上記アドレス変換情報(アドレス変換テーブル)13を参照し、メモリ解放要求の引数の論理アドレスに対応する揮発性半導体メモリ8上の物理アドレスが不定でない値を持っているか、また、不揮発性半導体メモリ9,10の有効/無効ビットを調べて、該当するデータが揮発性半導体メモリ8上または不揮発性半導体メモリ9,10上にあるか否かを確認する。 
 すなわち、メモリ管理装置1は、上記アドレス変換情報13中の不揮発性半導体メモリ9,10の有効/無効ビットが”0”の場合には引数の論理アドレスが不揮発性半導体メモリ9,10上にはマッピングされていないと判断し、不揮発性半導体メモリ9,10の有効/無効ビットが”1”の場合には引数の論理アドレスが不揮発性半導体メモリ9,10上にマッピングされていると判断する。 
 そして、メモリ管理装置1は、不揮発性半導体メモリ9,10の有効/無効ビットが”1”の場合には、揮発性半導体メモリ8の物理アドレスおよび不揮発性半導体メモリ9,10の物理アドレスを参照して、当該データの揮発性半導体メモリ8上および不揮発性半導体メモリ9,10上の存在の有無を確認し、以下の制御を行う。
  Case 1(当該データがDARAM8上及びNAND9,10上に存在) 
 (S003) 
 続いて、ステップS003の際、当該データが揮発性半導体メモリ8上および不揮発性半導体メモリ9,10上のいずれにも存在する場合、メモリ管理装置1は、揮発性半導体メモリ8に対し、解放要求のあった論理アドレスに対応する揮発性半導体メモリ8上の物理アドレスのデータを消去して明示的な空き領域を形成し、揮発性半導体メモリ8のダーティビットを”0”とする。ここで、揮発性半導体メモリ8の上記ダーティビットとは、揮発性半導体メモリ8上のデータが書き換えられたことを示すビットであり、例えば、揮発性半導体メモリ8のヘッダ領域等に存在する。
 (S004) 
 続いて、ステップS004の際、メモリ管理装置1は、不揮発性半導体メモリ9,10に対し、解放要求のあった論理アドレスに対応する不揮発性半導体メモリ9,10上の物理アドレスの有効/無効ビットを”0”として無効化し、消去対象とする。なお、この際、厳密には不揮発性半導体メモリ(NAND)9,10に対して実際にデータ消去動作は行わず、消去対象として有効ビットを落とすだけとする。
  Case 2(当該データがDARAM8上のみに存在) 
 (S005) 
 続いて、ステップS005の際、当該データが揮発性半導体メモリ8上のみに存在する場合、メモリ管理装置1は、同様に、解放要求のあった論理アドレスに対応する揮発性半導体メモリ8上の物理アドレスのデータを消去して明示的な空き領域を形成し、揮発性半導体メモリ8のダーティビットを”0”とする。
 なお、本例では、揮発性半導体メモリ(DRAM)8に空き領域を作ることで、不揮発性半導体メモリ(NAND)9,10へのアクセス回数を削減することを目的とするため、不揮発性半導体メモリ(NAND)9,10上にしか指定されたデータがない場合(キャッシュされていない場合)は考慮する必要がない。解放要求のあった論理アドレスに対応するデータが揮発性半導体メモリ8上にはなく、不揮発性半導体メモリ9,10上にのみにある場合は、有効/無効ビットを”0”とする(無効化する)だけである。
 <1-2.メモリ解放要求による揮発性半導体メモリ8の明示的な空き領域> 
 上記のように、本例に係るメモリ管理装置1は、揮発性半導体メモリ(第1メモリ)8と不揮発性半導体メモリ(第2メモリ)9,10とを含む混成メインメモリ2に対して、解放位置を指定する論理アドレスをプロセッサ3から受付け、アドレス変換情報13を参照して上記指定された論理アドレスと、揮発性半導体メモリ(第1メモリ)8の物理アドレスと不揮発性半導体メモリ(第2メモリ)9,10の物理アドレスとその不揮発性半導体メモリ9,10上の物理アドレスにあるデータの有効/無効フラグを調べ、解放要求のあった論理アドレスに対応するデータの存在する物理アドレスを確認する。そして、揮発性半導体メモリ(第1メモリ)8上に対応するデータがあればそれを消去して明示的な空き領域を形成し、不揮発性半導体メモリ(第2メモリ)9,10にも対応するデータがあれば、実際にデータの消去動作は行わないが、有効/無効フラグを“0”とし、無効化する。換言すれば、メモリ解放要求により指定された論理アドレスに対して、揮発性半導体メモリ(DRAM)8に明示的な空き領域を形成するものである。 
 図39は、図38中のメモリの解放要求時の揮発性半導体メモリの明示的な空き領域の形成を説明するための図である。例えば、図示するように、揮発性半導体メモリ(DRAM)8のメモリ空間上に、メモリ解放要求により指定された論理アドレスに対応する物理アドレスxhに、消去された明示的な空き領域FS0を形成することができる。 
 これにより、揮発性半導体メモリ8のデータ量を低減することができるため、不揮発性半導体メモリ9,10へのアクセス回数を低減でき、不揮発性半導体メモリ9,10のメモリ寿命を長期化することができる点で有利である。
 <2.メモリ獲得要求の処理フロー> 
 次に、図40に沿って、混成メインメモリ2のメモリ獲得要求の処理フローについて説明する。
 (S011) 
 図示するように、まず、ステップS011の際、例えば、プロセッサ3a中のアプリケーションAppが、オペレーティングシステムOSにメモリ獲得要求を送信する。
 (S012) 
 続いて、ステップS012の際、オペレーティングシステムOSは、free(任意)な論理アドレスの一部を確保する。この段階では、まだ確保した論理アドレスは揮発性半導体メモリや不揮発性半導体メモリ上の物理アドレスにはマッピングされておらず、今後、write要求が来て初めてマッピングされる。この際、本例では、以下に説明するデータ読み出しおよびデータ書込みの前に、カラーリング情報(ヒント情報)に基づいたメモリ領域を確保しておくことができる。そのため、不揮発性半導体メモリ9,10のメモリ寿命を長期化することができる点で有利である。
 (S013(Data read要求)) 
 続いて、ステップS013の際、アプリケーションAppは、オペレーティングシステムOSに、データ読み出し(read)を要求する。
 (S014) 
 続いて、ステップS014の際、オペレーティングシステムOSは、メモリ管理装置1に対してデータ読み出し(read)を要求する。
 すると、メモリ管理装置1は、アドレス変換情報13を参照して、データ読み出し(read)要求のあった論理アドレスに対応するエントリを探す。
 ここで、マッピングされていれば、データ読み出し要求のあった論理アドレスに対応する揮発性半導体メモリ8上または不揮発性半導体メモリ9,10上の物理アドレスにあるデータを返す。一方、現時点ではまだマッピングされておらず、上記物理アドレスに不定の値が入っている場合には、代わりにゼロクリアしたデータを返す。
 詳細については、図41に示すフローに沿って、後述する。
 (S015(Data write要求)) 
 続いて、ステップS015の際、アプリケーションAppは、オペレーティングシステムOSに、データ書込み(write)を要求する。
 (S016) 
 続いて、ステップS016の際、オペレーティングシステムOSはメモリ管理装置1に対してデータ書き込み(write)を要求する。
 すると、メモリ管理装置1は、アドレス変換情報13を参照し、上記確保した論理アドレスに対するマッピング結果(揮発性半導体メモリ上や不揮発性半導体メモリ上の物理アドレス)を入れる。この際、不揮発性半導体メモリ9,10上にマッピングされた場合、不揮発性半導体メモリ9,10上のデータの有無を示す有効/無効ビットを”1”とし、有効化する。 
 詳細については、図42に示すフローに沿って、後述する。
 <2-1.メモリデータリード要求時の処理フロー> 
 次に、図41に沿って、上記ステップS014の際のメモリデータリード要求の処理フローについて、詳細に説明する。
 (S201) 
 図示するように、まず、ステップS201の際、例えば、プロセッサ3aのアプリケーションAppが、オペレーティングシステムOSに読み出し要求をし、オペレーティングシステムOSはメモリ管理装置1に、論理アドレスを指定して、メモリデータリードを要求する。
 (S202) 
 続いて、ステップS202の際、上記メモリデータリード要求を受けたメモリ管理装置1は、アドレス変換情報(テーブル)13を参照して、揮発性半導体メモリ8上に、論理アドレスに対応するデータがあるか否かを判定する。
 (S203) 
 続いて、ステップS203の際、ステップS202の際の判定において揮発性半導体メモリ8上に論理アドレスに対応するデータがあると判定された場合(Yes)、オペレーティングシステムOSは、メモリ管理装置1によって、論理アドレスに対応する揮発性半導体メモリ8の物理アドレスにあるデータを読み出し、この動作を終了する(End)。
 (S204) 
 続いて、ステップS204の際、ステップS202の際の判定において揮発性半導体メモリ8上に論理アドレスに対応するデータがないと判定された場合(No)、メモリ管理装置1は、アドレス変換情報(テーブル)13を再び参照して、不揮発性半導体メモリ9,10上に、論理アドレスに対応するデータがあるか否かを判定する。
 (S205) 
 続いて、ステップS205の際、上記ステップS204の際の判定において不揮発性半導体メモリ9、10上に対応するアドレスがあると判定された場合(Yes)、オペレーティングシステムOSは、メモリ管理装置1によって、論理アドレスに対応する不揮発性半導体メモリ9,10に記憶された当該データを読み出す。
 (S206) 
 続いて、ステップS206の際、オペレーティングシステムOSは、メモリ管理装置1によって、上記ステップS205の際に不揮発性半導体メモリ9,10から読み出された上記データを、揮発性半導体メモリ8上に書込む。
 (S207) 
 続いて、ステップS207の際、メモリ管理装置1は、アドレス変換情報13の当該エントリの揮発性半導体メモリ8の物理アドレスを設定し、アドレス変換情報13中の有効/無効ビットを”1”とし、ダーティビットを”0”とし、終了する(End)。
 (S208) 
 続いて、ステップS208の際、上記ステップS204の際の判定において不揮発性半導体メモリ9、10上に対応するアドレスがないと判定された場合(No)、オペレーティングシステムOSは、メモリ管理装置1がゼロクリアしたデータを、プロセッサ3a側に送信し、終了する(End)。
 ここで、上記”ゼロクリアしたデータをプロセッサ3a側に送信する”とは、本来、実際に揮発性および不揮発性半導体メモリの少なくともどちらか一方にデータが存在していれば、論理アドレスに対応する物理アドレスにあるデータの中身を送信する。しかしながら、この場合では、まだマッピングしておらず、該当するデータはないので、実際ならデータの中身を送るところを、代わりにサイズ分ゼロで埋めたものをデータとして返信するということである。
 なお、この後、上記ゼロクリアしたデータを、揮発性半導体メモリ8上に書込んでおいても良い。
 <2-2.メモリデータライト要求時の処理フロー> 
 次に、図42に沿って、上記ステップS016の際のメモリデータライト要求時の処理フローについて、詳細に説明する。
 (S301) 
 図示するように、まずステップS301の際、例えばプロセッサ3aのアプリケーションAppがオペレーティングシステムOSに書き出し(write)を要求し、オペレーティングシステムOSはメモリ管理装置1に、論理アドレスを指定して、メモリデータライトを要求する。
 (S302) 
 続いて、ステップS302の際、上記メモリデータライト要求を受けたメモリ管理装置1は、アドレス変換情報(テーブル)13を参照して、揮発性半導体メモリ8上に、論理アドレスに対応するデータがあるか否かを判定する。
 (S303) 
 続いて、ステップS303の際、ステップS302の際の判定において揮発性半導体メモリ8上に論理アドレスに対応するデータがあると判定された場合(Yes)、オペレーティングシステムOSは、メモリ管理装置1によって、論理アドレスに対応する揮発性半導体メモリ8上の物理アドレスに、当該データを書き込む。
 (S304) 
 続いて、ステップS304の際、メモリ管理装置1は、アドレス変換情報13を参照し、当該アドレスに対応する揮発性半導体メモリ8のエントリのダーティビットを”1”とする(End)。
 (S305) 
 続いて、ステップS305の際、上記ステップS302の際の判定において揮発性半導体メモリ8上に論理アドレスに対応するデータがないと判定された場合(No)、メモリ管理装置1は、アドレス変換情報13を再び参照して、不揮発性半導体メモリ9,10上に、論理アドレスに対応するデータがあるか否かを判定する。
 (S306) 
 続いて、ステップS306の際、上記ステップS305の際の判定において不揮発性半導体メモリ9,10上に論理アドレス対応するデータがあると判定された場合(Yes)、オペレーティングシステムOSは、メモリ管理装置1によって、論理アドレスに対応する不揮発性半導体メモリ9,10上の物理アドレスにあるデータを読み出す。
 (S307) 
 続いて、ステップS307の際、上記ステップS305の際の判定において不揮発性半導体メモリ9,10上に論理アドレスに対応するデータがないと判定された場合(No)、オペレーティングシステムOSは、メモリ管理装置1がゼロクリアしたデータを、プロセッサ3a側に送信し、次のステップS308に進む。
 (S308) 
 続いて、ステップS308の際、メモリ管理装置1は、揮発性半導体メモリ8上に、上記不揮発性半導体メモリから読み出したデータ、又は、ゼロクリアしたデータを書込む。
 (S309) 
 続いて、ステップS309の際、メモリ管理装置1は、アドレス変換情報(テーブル)13の当該エントリの揮発性半導体メモリ8の物理アドレスを設定し、アドレス変換情報13中の有効/無効ビットを”1”とし、ダーティビットを”0”とする。
 (S310) 
 続いて、ステップS310の際、メモリ管理装置1は、揮発性半導体メモリ8上に更新したデータを書込み、この動作を終了する(End)。
 ここで、上記のように、本例では、一度、揮発性半導体メモリ8に、不揮発性半導体メモリ9、10上にあるデータなどを読み出してから、揮発性半導体メモリ8上で更新したデータに書き換える。これは、データ書き込みの際、不揮発性半導体メモリ9,10上で書き換えるとアクセス回数が増える(読み出し+書き込みが必要となるため)ことを防止するためのである。
 <2-3.作用効果> 
 上記のように、本例に係るメモリ管理装置1は、ステップS012の際、アプリケーションより上記メモリ獲得要求を受けたオペレーションシステムOSは、freeな論理アドレスの一部を確保する。その後、write要求が発生した際に、論理アドレス書込み回数等に伴うカラーリング情報に応じて、揮発性半導体メモリ8、又は、不揮発性半導体メモリ9,10のうち適切な方のメモリ領域を確保する。
 さらに、本例に係るメモリ管理装置1は、揮発性半導体メモリ8上に明示的に空き領域を作るので、不揮発性半導体メモリ9,10に書き出すべき揮発性半導体メモリ8上のデータが減少し、アクセス可能回数に制限のあるNAND型フラッシュメモリを含む不揮発性半導体メモリへのアクセス回数を削減できる。
 そのため、NAND型フラッシュメモリを含む不揮発性半導体メモリ9,10のメモリ寿命を長期化することができる点で有利である。
 なお、本例では、キャッシュメモリである揮発性半導体メモリ8と、不揮発性半導体メモリ9,10とを、図4に示すように共通のアドレス変換テーブルで管理するとして説明したが、これに限らず、揮発性半導体メモリ8と、不揮発性半導体メモリ9,10とを別々に管理してもよい。例えば、揮発性半導体メモリ8は、キャッシュタグ(テーブル)で管理されていてもよい。また、キャッシュタグには必ずしもカラーリング情報が含まれていなくともよい。
 (第4の実施形態)
 NAND型フラッシュメモリは、一般的には2次記憶装置として使用される。この場合、NAND型フラッシュメモリに記憶されるデータのほとんどは、物理ブロックサイズ以上のデータサイズを持つ。したがって、NAND型フラッシュメモリを2次記憶装置として用いる場合、1ブロック領域内に消去頻度の異なる複数のデータが含まれることはまれである。
 これに対して、上記のように、NAND型フラッシュメモリをメインメモリとして使用する場合、NAND型フラッシュメモリから読み出されるデータのサイズ及びNAND型フラッシュメモリに書き込まれるデータのサイズは、NAND型フラッシュメモリの物理ブロックサイズ未満になることが多いと推測される。
 本実施形態は、上記第1の実施形態の変形例であり、複数の書き込み対象データをカラーリング情報に基づいて複数のグループ(カラーグループ)に分類し、同じグループに属する複数の書き込み対象データをまとめて、ブロックサイズのデータを構成するメモリ管理装置1について説明する。
 カラーリング情報としては、例えば、第1の実施形態で説明した静的カラー情報及び動的カラー情報の少なくとも一つを採用すればよい。静的カラー情報としては、例えば、「重要度」、「読み出し頻度、書き込み頻度」、「データ寿命」の少なくとも一つを採用すればよい。動的カラー情報としては、例えば、データの読み出し及び書き込みの回数、データの読み出し及び書き込みの頻度の少なくとも一つを採用すればよい。
 本実施形態においては、不揮発性半導体メモリ9,10がNAND型フラッシュメモリの場合を例として説明するが、不揮発性半導体メモリ9,10の種別はこれに限定されるものではない。ここで、上書き方式について簡単に説明する。上書き方式とは、NAND型フラッシュメモリを使用したメモリシステムの書き込み方式の一つである。
 NAND型フラッシュメモリでは、一度書き込みを行ったページに対しては、そのページを含むブロック全体を消去した後でなければ、再び書き込みを行うことはできない。換言すれば、NAND型フラッシュメモリでは、同一の物理アドレス(NAND型フラッシュメモリの物理アドレス、以下、NAND物理アドレス)に対して、消去後でなければ上書きは不可能である。
 一方、上書き方式では、論理アドレス(NAND型フラッシュメモリの論理アドレス、以下、NAND論理アドレス)とNAND物理アドレスとの対応関係が論物変換テーブルによって管理されており、これらの関係は動的に変更され得る。NAND型フラッシュメモリを含むメモリシステムは、上書き方式を採用した場合、上位レイヤからは任意の論理アドレスに対して上書きが可能であるように振る舞う。
 NAND型フラッシュメモリの論物変換テーブルでは、ブロック単位のNAND論理アドレス(以下、NLBA)と、ブロック単位のNAND物理アドレス(以下、NPBA)との対応関係が管理されている。NAND型フラッシュメモリの論物変換テーブルはブロック単位で管理されているため、ブロックサイズ以下の大きさ、例えば1ページ分のデータのみが更新された場合であっても、そのデータを含むブロック全体の消去処理が必要となる。
 具体的には、NLBAの一部に対応するデータが更新された場合、このNLBAに対して新たなNPBAが割り当てられる。更新データは新たなNPBAに対応する領域に書き込まれ、この際、旧NPBAに格納されていた更新されないデータが、新たなNPBAに対応する領域にコピーされる(巻き添え引越し)。なお、一つのNLBAに対して、データ交換用に複数のNPBAを割り当てておき、これらの間で更新に伴うデータ交換を行うこととしてもよい。
 本実施形態では、カラーリング情報として、例えば、静的書き込み頻度SW_colorに基づいて、書き込み対象データがグループ分けされる場合について説明する。しかしながら、他のカラーリング情報、例えば、静的読み出し頻度SR_color、動的書き込み頻度DW_color、動的読み出し頻度DW_colorなどの様々な基準、さらには、複数の基準の組み合わせに基づいて書き込み対象データがグループ分けされるとしてもよい。
 本実施形態において、複数の書き込み対象データをグループ分けするための管理サイズは、NAND型フラッシュメモリのブロックサイズ未満である。例えば、管理サイズの一単位として、カラーリングテーブル14の管理単位と等しいページが用いられる。
 図43は、本実施形態に係るメモリ管理装置1の機能構成の要部の一例を示すブロック図である。カラーリング情報管理部21は、図2で説明したアクセス頻度算出部24、動的カラー情報管理部25に加えて、グループ値算出部201、予約リスト管理部202を具備する。
 また、メモリ管理装置1は、書き込み管理部20、情報記憶部17に格納されたカラーリングテーブル14、作業メモリ16に格納された予約リスト32を具備する。メモリ管理装置1に含まれるその他の機能ブロックについては図2で説明したものと同様であるため、ここでは図示及び説明を省略する。
 グループ値算出部201は、カラーリングテーブル14を参照し、書き込み対象データの静的書き込み頻度SW_colorに基づいてカラーグループ値を算出する。カラーグループ値は、書き込み対象データが、静的書き込み頻度SW_colorに応じて決定されるカラーグループのうち、どのカラーグループに所属するかを示す値である。カラーグループ値は、カラーリングテーブル14のカラーリング情報に基づいて算出され、書き込み対象データのグループ分け結果を示す。
 グループ値算出部201は、データ毎のカラーリング情報を入力値として、カラーグループ値を算出するが、この算出方法は各種変更可能である。例えば、グループ値算出部201は、データの静的書き込み頻度SW_color又は動的書き込み頻度DW_colorをそのままカラーグループ値として用いてもよい。
 この場合、グループ値算出部201は、静的書き込み頻度SW_color又は動的書き込み頻度DW_colorの範囲が広い場合、カラーグループの数が多くなりすぎないように、グループ分けを行う。また、例えば、グループ値算出部201は、データの静的書き込み頻度SW_colorと動的書き込み頻度DW_colorとのうちの少なくとも一方に基づいて、カラーグループ値を算出するとしてもよい。
 予約リスト管理部202は、各カラーグループに割り当てられているブロックに対する書き込み対象データの予約状態を示す予約リスト32を管理する。予約リスト32は、例えば、作業メモリ16に記憶されるが、例えば情報記憶部17など他の記憶部に記憶されるとしてもよい。予約リスト管理部202及び予約リスト32の詳細については後述する。
 書き込み管理部20は、予約リスト32を参照し、予約ノードに割り当てられている複数の書き込み対象データをまとめたブロックサイズのデータを、不揮発性半導体メモリ9,10における予約ノードに対応するブロックに書き込む。
 ここで図44及び図45を用いて、通常のNAND型フラッシュメモリへの書き込みと本実施形態に係るメモリ管理装置1による書き込みとの相違点について説明する。
 図44は、カラーリング情報で書き込み対象データを分類しない場合のブロックサイズのデータ構成の一例を示す図である。
 上書き方式を採用したNAND型フラッシュメモリにおいては、ブロック内のデータの一部のみが更新される場合であっても、このブロック全体の消去が必要になる。このため、ブロックの消去頻度は、ブロック内のデータのうちでもっともアクセス頻度(例えば、静的書き込み頻度SW_color)の高いデータに比例する。
 仮に、極端にアクセス頻度の高いデータが、様々なブロックに分散されると、データ更新作業に伴うブロック消去が頻発し、結果として消去頻度の高いブロック数が増加し、NAND型フラッシュメモリの寿命は短くなる。
 これに対して、図45は、カラーリング情報で書き込み対象データを分類する場合のブロックサイズのデータ構成の一例を示す図である。
 本実施形態では、上記第1の実施形態で説明したように、カラーリングテーブル14に基づいてカラーリング情報を得ることができるため、アクセス頻度(例えば、静的書き込み頻度SW_color)に応じて書き込み対象データをグループ分けすることができる。
 グループ値算出部201は、NAND型フラッシュメモリのブロックサイズ未満の書き込み対象データを、カラーリングテーブル14に基づいて、同程度のアクセス頻度を持つカラーグループに分類する。
 予約リスト管理部202は、同一のカラーグループに属する書き込み対象データをブロックサイズ分だけ集め、ブロックにパッケージ化する。
 これにより、アクセス頻度の高いデータを、一部のブロックに集中させることができる。そして、消去頻度の高いブロックの数を減少させ、NAND型フラッシュメモリの寿命を長期化できる。
 図46は、本実施形態に係るアドレス変換情報13と不揮発性半導体メモリ9,10の物理アドレス空間、すなわちNAND論理アドレスとの関係の一例を示す図である。
 アドレス変換情報13は、論理アドレス、揮発性半導体メモリ8の物理アドレス、不揮発性半導体メモリ9,10の物理アドレス(NAND論理アドレス)、有効/無効フラグを項目として持つ。
 このアドレス変換情報13において、データが揮発性半導体メモリ8に格納される場合には、データの論理アドレスに関連付けて、揮発性半導体メモリ8の物理アドレスが格納される。
 データが不揮発性半導体メモリ9,10に格納される場合には、データの論理アドレスに関連付けて、不揮発性半導体メモリ9,10の物理アドレス(NAND論理アドレス)が格納される。有効/無効フラグは、各エントリが有効か否かを示すフラグである。
 まず、カラーグループG2の書き込み対象データD1が不揮発性半導体メモリ9,10に格納されるとする。この場合、カラーグループG2に対する不揮発性半導体メモリ9,10の物理アドレス(NAND論理アドレス)領域が、1ブロック分予約される。
 さらに、書き込み対象データD1の論理アドレスL1、カラーグループG2に対して予約された物理アドレス(NAND論理アドレス)領域のうちのいずれかの物理アドレス(NAND論理アドレス)P1、有効を示す有効/無効フラグ1が、アドレス変換情報13に格納される。
 次に、カラーグループG4の書き込み対象データD2が不揮発性半導体メモリ9,10に格納されるとする。この場合、カラーグループG4に対して、不揮発性半導体メモリ9,10における1ブロック分の物理アドレス領域が予約される。
 そして、書き込み対象データD2の論理アドレス、カラーグループG4に対して予約された物理アドレス領域のうちのいずれかの物理アドレスQ1、有効を示す有効/無効フラグ1が、アドレス変換情報13に格納される。
 ここで、先において不揮発性半導体メモリ9,10の物理アドレス空間に格納された書き込み対象データD1と同じカラーグループG2に所属する書き込み対象データD3が不揮発性半導体メモリ9,10に格納されるとする。この場合、書き込み対象データD3の論理アドレス、カラーグループG2に対して予約された物理アドレス領域のうちの他の物理アドレスP2、有効を示す有効/無効フラグ1が、アドレス変換情報13に格納される。
 図47は、不揮発性半導体メモリ9,10の論物変換テーブル(NAND論物変換テーブル)13aの一例を示す図である。NAND論物変換テーブル13aは、例えば、情報記憶部17に記憶される。NAND論物変換テーブル13aは、NAND論理ブロックアドレスNLBAと、NAND物理ブロックアドレスNPBAとの対応関係を示す。
 図47では、例えば、NLBA0に対してNPBA2が割り当てられ、NLBA1に対してNPBA1が割り当てられ、NLBA2に対してNPBA0が割り当てられている。例えば、NLBA0は、不揮発性半導体メモリ9,10の物理アドレスP1、P2…Pnが対応する。
 図48は、予約リスト32の一例を示すデータ構造図である。
 予約リスト32は、予約されたブロック領域単位の物理アドレス領域を表す予約ノード321~326を管理する。この予約リスト32は、アクセス頻度の高いデータとアクセス頻度の低いデータとが同一のブロックに含まれることを防止するための管理区構造である。予約ノードは、例えば、数の増減に柔軟に対応するためにリスト構造で管理される。
 各予約ノード321~326は、それぞれの予約ノードに割り当てられているカラーグループ値、予約物理アドレス(予約NAND論理アドレス)、空き領域サイズを含む。
 予約物理アドレスは、予約ノードに割り当てられている物理アドレス(NAND論理アドレス)領域のうち、未使用であり次にデータの配置を行う物理アドレス(NAND論理アドレス)である。
 空き領域サイズは、予約ノードに割り当てられている物理アドレス(NAND論理アドレス)領域のうち、未使用の領域のサイズを示す。
 論理アドレス空間上に新データが発生した場合、予約リスト管理部202は、予約リスト32を走査する。次に、予約リスト管理部202は、新データのカラーグループ値と同じカラーグループ値を持ち、空き領域サイズが新データのサイズよりも大きい予約ノードを検索する。
 予約ノードが検索された場合、新データの物理アドレスには、検索された予約ノードの予約物理アドレスが用いられる。
 予約リスト管理部202は、検索された予約ノードに割り当てられている物理アドレス領域から、未使用のアドレス領域を選択し、検索された予約ノードの予約物理アドレスを更新する。また、予約リスト管理部202は、空き領域サイズから新データのサイズを削減し、検索された予約ノードの空き領域サイズの更新を行う。
 予約ノードが検索されなかった場合、予約リスト管理部202は、ブロックサイズの新たな物理アドレス領域を確保し、予約リスト32に新予約ノードを加える。予約リスト管理部202は、新予約ノードのカラーグループ値に、新データのカラーグループ値を設定し、新予約ノードの予約物理アドレスに、新たに確保された物理アドレス領域の未使用の物理アドレスを設定し、新予約ノードの空き領域サイズに、新たに確保された物理アドレス領域の空き領域のサイズを設定する。
 図49は、本実施形態のグループ値算出部201と予約リスト管理部202の処理の一例を示すフローチャートである。
 ステップA1において、グループ値算出部201は、書き込み対象データのカラーグループ値を算出する。
 ステップA2において、予約リスト管理部202は、書き込み対象データのカラーグループ値に基づいて、予約リスト32を検索する。
 ステップA3a,A3bにおいて、予約リスト管理部202は、書き込み対象データのカラーグループ値を持ち、書き込み対象データのサイズ以上の空き領域を持つ適切な予約ノードがあるか否か、判断する。
 適切な予約ノードがない場合、ステップA4において、予約リスト管理部202は、メモリ使用情報11、メモリ固有情報12、カラーリングテーブル12を参照し、物理アドレス(NAND論理アドレス)空間から、ブロックサイズの新たな物理アドレス領域を予約する。また、予約リスト管理部202は、アドレス管理部18経由で、書き込み対象データの論理アドレスと、予約された物理アドレス領域のうちのいずれかの物理アドレス(例えば先頭の物理アドレス)とを関連付けて、アドレス変換情報13を更新する。
 ステップA5において、予約リスト管理部202は、予約リスト32に、予約された1ブロック領域の予約ノードを追加し、予約ノードにカラーグループ値、予約アドレス、空き領域サイズを設定する。その後処理は、ステップA8aに移る。
 適切な予約ノードがある場合、ステップA6において、予約リスト管理部202は、適切な予約ノードの予約アドレスを物理アドレスとし、アドレス管理部18経由で、書き込み対象データの論理アドレスと、物理アドレスとを関連付けて、アドレス変換情報13を更新する。
 ステップA6において、予約リスト管理部202は、適切な予約ノードの予約アドレス、空き領域サイズを更新する。その後処理は、ステップA8aに移る。
 ステップA8a,A8bにおいて、予約リスト管理部202は、適切な予約ノードの更新された空き領域サイズが、任意のサイズより小さいか否か判断する。
 空き領域サイズが任意のサイズ以上の場合、処理は終了する。
 空き領域サイズが任意のサイズより小さい場合、ステップA9において、予約リスト管理部202は、この適切な予約ノードを予約リスト32から破棄し、処理は終了する。
 図50は、本実施形態のアドレス変換情報13の状態遷移の一例を示す図である。
 状態1においては、論理アドレス「0x0010_0000」に対するデータが発生しており、この論理アドレス「0x0010_0000」がアドレス変換情報13に登録されている。
 グループ値算出部201は、論理アドレス「0x0010_0000」に基づいてカラーリングテーブル14を参照し、論理アドレス「0x0010_0000」に対するカラーグループ値を算出する。予約リスト管理部202は、カラーグループ値に基づいて、予約リスト32を検索する。
 この例では、カラーグループ値に対応する予約ノード(物理アドレス領域の範囲)がなかったとする。予約ノードが発見されない場合には、予約リスト管理部202は、メモリ使用情報11、メモリ固有情報12、カラーリングテーブル12に基づいて、論理アドレス「0x0010_0000」に対する物理アドレス「0x0030_0000」を決定する。
 状態2においては、論理アドレス「0x0010_0000」に対応する物理アドレス「0x0030_0000」がアドレス管理部18によってアドレス変換情報13に登録される。
 グループ値算出部201は、物理アドレス「0x0030_0000」から1ブロック領域分のアドレス領域を予約する。
 グループ値算出部201は、この予約されたアドレス領域に対応する予約ノードを予約リスト32に追加する。グループ値算出部201は、予約ノードに状態1で算出されたカラーグループ値を設定する。
 状態3においては、論理アドレス「0x0030_0000」に対する新たなデータが発生しており、この論理アドレス「0x0030_0000」がアドレス管理部18によってアドレス変換情報13に登録される。
 グループ値算出部201は、論理アドレス「0x0030_0000」に基づいてカラーリングテーブル14を参照し、論理アドレス「0x0030_0000」に対するカラーグループ値を算出する。予約リスト管理部202は、カラーグループ値に基づいて、予約リスト32を検索する。この例では、カラーグループ値に対応する予約ノードが発見されたとする。予約リスト管理部202は、発見された予約ノードの予約物理アドレス「0x0040_0000」を、論理アドレス「0x0030_0000」に対する物理アドレスに決定する。
 状態4において、論理アドレス「0x0030_0000」に対応する物理アドレス「0x0040_0000」がアドレス管理部18によってアドレス変換情報13に登録される。
 以上説明した本実施形態では、複数の書き込み対象データのカラーリング情報に基づいて、アクセス頻度が同じグループに属する複数の書き込み対象データによってブロックサイズのデータが構成される。
 したがって、アクセス頻度の高いデータを特定のブロックに集中させることができるため、上書き方式を採用したメモリ管理装置1において、消去頻度の高いブロックの数を減少させることができ、不揮発性半導体メモリ9,10の寿命を延ばすことができる。
 (第5の実施形態)
 一般に、MPUは、DRAMをメインメモリとして用いている。このようなシステムがシャットダウンされる場合、メインメモリ内の実行コードやデータなどやプロセスのコンテキストが二次記憶装置に保存される。このため、システムを再起動する際、I/Oインターフェースを介して二次記憶装置から必要な実行コードやデータなどを再度メモリ上にロードしなくてはならない。さらに、各プログラムの初期化も再度行われる。このため、システムの起動時間は長くなることが多い。
 この問題を解決するため、(a)メインメモリの記憶状態やプロセスのコンテキストをスワップ領域(二次記憶装置と同義)に退避し、シャットダウンを行う方式(例えばsuspend to swap)や、(b)完全にシステムの電源を落とさず、揮発性メモリからデータが消えないような状態で休止する方式(例えばsuspend to RAM)が提案されている。
 しかし、(a)の場合、スワップ領域に退避する実行コードやデータなどの最適化が難しく、実行コードやデータなどのサイズに比例して起動時間が長くなる。
 また、(b)の場合、揮発性メモリ上にデータが存在するため、通電状態を保たなければならない。このため、長期間の休止が困難であるという問題がある。
 本実施形態では、シャットダウン及び起動に要する時間を短縮可能であり、不揮発性メモリの性質を考慮した安全性の高いデ―タの保管が可能なメモリ管理装置について説明する。
 <情報処理装置100のシャットダウン時のデータの移動>
 第5の実施形態は、情報処理装置100をシャットダウンする際における揮発性半導体メモリ8から不揮発性半導体メモリ9,10へのデータの移動に関する。
 メモリ管理装置1において、混成メインメモリ2のメモリマップは、図3に示す通りである。情報処理装置100が動作しているとき、揮発性半導体メモリ8(DRAM領域)には、データの読み、書きによりキャッシュされたデータが存在する。情報処理装置100をシャットダウンするとき、例えば揮発性半導体メモリ8において更新され、不揮発性半導体メモリ9,10において更新されていないダーティなデータが存在する。このため、ダーティなデータを選択し、不揮発性半導体メモリ9,10に転送する必要がある。
 図51は、情報記憶部17に設けられた揮発性半導体メモリ8のダーティビットフィールドDBFの一例を示している。このダーティビットフィールドDBF各カラムは、物理アドレスに基づいて設定されたインデックス情報に対応して、そのデータがダーティかどうかを示すフラグデータが設定されている。フラグデータ“0”は、そのエントリに対応するデータが消去されたこと、又は、そのデータが揮発性半導体メモリ8に読み込まれ、更新されていないこと(同期されている)ことを示し、フラグデータ“1”は、揮発性半導体メモリ8において更新され、不揮発性半導体メモリ9,10において更新されていない(同期されていない)ことを示している。すなわち、データ“1”のエントリに対応するデータは、シャットダウン時に不揮発性半導体メモリ9,10へ転送する必要があり、データ“0”のエントリに対応するデータは、不揮発性半導体メモリ9,10へ転送する必要がない。
 メモリ管理装置1は、不揮発性半導体メモリ9,10から読み出されたデータを揮発性半導体メモリ8に書き込む際、又は揮発性半導体メモリ8からデータが消去された際、及び揮発性半導体メモリ8内のデータの更新を不揮発性半導体メモリ9,10に反映した際のいずれかにおいて、対応するエントリのフラグデータを“0”にセットする。
 また、メモリ管理装置1は、揮発性半導体メモリ8上のデータが更新されたとき、対応するエントリのフラグデータを“1”にセットする。
 ダーティビットフィールドDBFのエントリ数は、揮発性半導体メモリ8のサイズをI/O単位(キャッシュラインサイズ=ページサイズ)で割った値となる。
 図52は、情報処理装置100がシャットダウンされる際の処理の一例を示している。この処理は、例えば処理部15において実行される。
 情報処理装置100がシャットダウンされる際、先ず、不揮発性半導体メモリ9,10に更新されていないデータの合計サイズSAが算出される(ステップIS31)。すなわち、ダーティビットフィールドDBFのエントリがサーチされてフラグデータが“1”であるデータが検出される。この検出されたフラグデータが“1”であるデータのサイズが合計され、未更新データサイズSAが算出される。
 前述したように、ダーティビットフィールドDBFの各エントリは、不揮発性半導体メモリのページサイズ毎に設定されている。このため、フラグデータが“1”の数を計数し、この計数値にページサイズを乗算することにより、更新データサイズSAを求めることができる。
 次いで、不揮発性半導体メモリの空き領域サイズSBが算出される(ステップIS32)。本実施形態は、シャットダウン時に、揮発性半導体メモリ8のデータを不揮発性半導体メモリ書き込む場合、書き込み、読み出しの高速化、及びデータを長期間保管する可能性があることを考慮して、不揮発性半導体メモリ9のSLC領域にデータが書き込まれる。具体的には、図3に示すSLC領域の例えばB領域に優先的にデータが書き込まれる。
 上述したように、メモリ管理装置1は、カラーリングテーブル14の情報に基づき、不揮発性半導体メモリ9,10の書き込みを管理している。しかし、本実施形態に係るシャットダウン処理は、この原則を無視し、例えば高速かつ高信頼性を維持してデータを記憶させるため、不揮発性半導体メモリ9の例えばB領域にデータを優先的に記憶させる。
 このため、B領域の空き領域サイズが算出される。空き領域サイズの計算は、例えばメモリ使用情報11の内容に基づき求められる。
 この後、算出された未更新データサイズSAとB領域の空き領域サイズSBが比較される(ステップIS33)。この結果、算出された未更新データサイズSAがB領域の空き領域サイズSB以下である場合、揮発性半導体メモリ8の未更新のデータが不揮発性半導体メモリのB領域に書き込まれる(ステップIS34)。次いで、B領域に書き込に基づき、図4に示すアドレス管理情報が更新される(ステップIS35)。
 一方、ステップIS33において、算出された未更新データサイズSAがB領域の空き領域サイズSBより大きいと判断された場合、通常の書き込み処理が実行される。すなわち、原則に従って、カラーリングテーブル14を参照してデータの書き込みが実行される(ステップIS36)。この後、アドレス管理情報が更新される(ステップIS37)。
 本実施形態によれば、情報記憶部17にダーティビットフィールドDBFを設け、揮発性半導体メモリ8のデータが更新されたか、されていないかをフラグデータにより管理し、情報処理装置100がシャットダウンされる際、ダーティビットフィールドDBFのフラグデータに基づき、揮発性半導体メモリ8のデータを不揮発性半導体メモリ9に転送している。したがって、シャットダウン時、未更新のデータを確実に不揮発性半導体メモリ9へ転送することができる。
 しかも、シャットダウン時、揮発性半導体メモリ8から出力される未更新のデータは、不揮発性半導体メモリ9のSLC領域に書き込まれる。このため、書き込み処理を高速化することができるとともに、長期間の保存に対して信頼性を保持することが可能である。
 <情報処理装置100の起動の高速化>
 第5の実施形態は、情報処理装置100の起動の高速化を目的とする。
 例えば動画プレーヤとブラウザが動作していた状態において、シャットダウンされたとき、ブラウザが動作していた場合、動画プレーヤは次にスケジュールされる可能性が高いという優先度を持っている場合、情報処理装置100の起動後、優先度の高い動画プレーヤのコードが揮発性半導体メモリ8に転送されていれば、高速に動作させることが可能と考えられる。
 そこで、本実施形態は、起動の高速化を目的として、カラーリングテーブル14に先読みヒント情報を付加し、この先読みヒント情報を用いて情報処理装置100を起動させる。この先読みヒント情報は、シャットダウン時にカラーリングテーブル14に設定される。すなわち、オペレーティングシステム27は、シャットダウンプロセスにおいてカラーリングテーブル14に先読みヒント情報を格納することにより、起動時のメモリアクセスのオーバーヘッドを低減することができ、高速に起動することが可能である。
 図53は、本実施形態に適用されるカラーリングテーブル14の一例を示している。図8に示すカラーリングテーブル14に対して、各エントリに先読みヒント情報のフィールドが付加されている。この先読みヒント情報は、静的カラー情報のフィールドに設けられる例えばフラグデータである。このフラグデータは、“0”である場合、そのエントリに対応するデータを起動時に先読みせず、“1”である場合、そのエントリに対応するデータを起動時に先読みすることを示している。このフラグデータは、2値データに限定されるものではなく、多値データとすることも可能である。
 この先読みヒント情報としてのフラグデータは、情報処理装置100がシャットダウンされるとき、例えばオペレーティングシステム27のシャットダウンプロセスにおいて、カラーリングテーブル14に設定される。
 図54は、先読みヒント情報の設定処理を示している。この処理は、例えば処理部15において実行される。
 情報処理装置100がシャットダウンされるとき、先ず、起動に必要なコードデータが格納されたアドレスに先読みヒント情報が付加される(ステップIS41)。すなわち、カラーリングテーブル14の対応するエントリに先読みヒント情報として、フラグデータ“1”が設定される。
 この後、優先度が最も高いプロセスのコンテキストに先読みヒント情報が付加される(ステップIS42)。すなわち、カラーリングテーブル14の優先度が最も高いプロセスのコンテキストに対応するエントリに先読みヒント情報として、フラグデータ“1”が設定される。優先度が高いデータとしては、例えばデバイスの初期化コードデータや、シャットダウンする時に優先度が高かいプロセスのコンテキストなどがある。
 なお、優先度が最も高いプロセスに関連していても、静的カラー情報としての例えば静的読み出し頻度(SR_color)が低いデータである場合、先読みヒント情報としてのフラグデータ“0”が設定される。例えばMPEGデータをマップしたアドレス空間がこれに相当し、このアドレス空間は先読みを行わないように設定される。
 次いで、設定されたサイズのデータに先読みヒント情報を付加したかどうかが判別される(ステップIS43)。すなわち、先読みされたデータが格納される揮発性半導体メモリ8のサイズを越えたかどうかが判別される。揮発性半導体メモリ8の使用サイズは、例えばユーザにより設定可能されている。このため、設定されたサイズを越えたかどうかが判別される。この結果、設定されたサイズ以内の場合、ステップIS42に移行され、上記の動作が行われる。また、判別の結果、設定されたサイズを超えたものと判別された場合、処理が終了される。このようにして、シャットダウンの際に、カラーリングテーブル14に先読みヒント情報が設定される。
 情報処理装置100が起動された場合、情報処理装置100の起動プロセスには、必ず実行される実行コードや読み込むデータが存在する。オペレーティングシステム27は起動の早期で実行される実行コードやデータ領域を知ることができる。
 情報処理装置100の起動時、カラーリングテーブル14に設定された先読みヒント情報を用いて、起動プロセスと並行に、不揮発性半導体メモリから揮発性半導体メモリへデータが転送される。
 図55は、起動時のオペレーティングシステム27の処理を示している。
 先ず、カラーリングテーブル14がサーチされ(ステップIS51)、エントリの先読みヒント情報としてのフラグデータが読み出される(ステップIS52)。次いで、このフラグデータが“1”であるかどうかが判別される(ステップIS53)。この結果、フラグデータが“1”である場合、そのエントリに対応するデータが不揮発性半導体メモリ9,10から読み出される(ステップIS54)。すなわち、他のデータに優先して先読みヒント情報が付されたデータが不揮発性半導体メモリ9,10から揮発性半導体メモリ8に転送される。
 また、ステップIS53の判別において、フラグデータが“0”である場合、そのエントリに対応するデータは読み出されない。
 この後、カラーリングテーブル14に次のエントリがあるかどうかが判別される(ステップIS55)。この結果、次のエントリがある場合、制御がステップIS51に移行され、上記動作が繰り返される。また、次のエントリがない場合、処理が終了される。
 なお、処理の終了条件は、次のエントリがない場合に限定されるものではなく、揮発性半導体メモリ8の起動時の書き込みサイズを予め設定し、この書き込みサイズに達した場合、処理を終了するように設定することも可能である。このようにすることにより、揮発性半導体メモリ8に空き容量を確保することができる。
 本実施形態によれば、情報処理装置100のシャットダウン時に、起動後、即実行される可能性の高いデータに対応するカラーリングテーブルのエントリに先読みヒント情報を付加し、起動時、この先読みヒント情報を検索して優先的に不揮発性半導体メモリ9,10から揮発性半導体メモリ8にデータを転送している。このため、読み出しが多発する起動時にオーバーヘッドを低減し、高速に情報処理装置100を起動することが可能である。
 また、優先度の高いデータのみを揮発性半導体メモリ8に転送しているため、シャットダウン時に揮発性半導体メモリ8に存在していたデータを全てセイブし、起動時にリカバーする場合に比べて、揮発性半導体メモリ8の内容を整理でき、起動後の実行処理を高速化することが可能である。
 (第6の実施形態)
 本実施形態においては、上記第1の実施形態に係るメモリ管理装置1によるカラーリングテーブル14に対する静的カラー情報の設定の具体例を説明する。
 オペレーティングシステム27は、各データに対して、上記図5及び図8に示すカラーリングテーブル14の静的カラー情報を設定する。
 カラーリングテーブル14に対する静的カラー情報の設定方法としては、例えば、[1]ファイルの拡張子又は名称に基づく設定、[2]ディレクトリの名称に基づく設定、[3]シャドウファイルに基づく設定、[4]ファイルシステムの拡張属性を用いる設定、[5]ソフトウェア(例えば、アプリケーション)又はデータ(例えばMPEG2などの動画圧縮データ)のファイルに付されるヘッダに基づく設定、[6]仮想アドレス空間の属性情報に基づく設定、[7]ダイナミックリンクライブラリの使用頻度に基づく設定、[8]コンパイラを用いる設定、[9]動的に生成されるメモリ領域に基づく設定、[10]プロファイラを用いる設定、などがある。以下に、それぞれの設定方法について説明する。
 [1]ファイルの拡張子又は名称に基づく設定
 例えば、オペレーティングシステム27は、ユーザ(プログラム開発者を含む)から、カーネルコマンドラインを用いたファイルの拡張子と静的カラー情報との関係の設定を受ける。例えば、拡張子「jpeg」「mpeg」に対して静的カラー情報「1」「2」を設定する場合、オペレーティングシステム27は、「coloring_ext=jpeg:1,mpeg:2」のようなコマンドを受け付ける。
 これにより、ファイルの拡張子と静的カラー情報との関係がオペレーティングシステム27に対して設定される。オペレーティングシステム27は、データに対応するファイル(データが配置されているファイル)の拡張子に基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 なお、例えば、オペレーティングシステム27は、データとファイルとを関連付けたマッピングデータを管理している。
 例えば、オペレーティングシステム27は、ファイルの拡張子と静的カラー情報とを関連付けたテーブルを参照するとしてもよい。
 また、ファイルの拡張子と静的カラー情報との関係に代えて、ファイルの名称と静的カラー情報との関係が設定されるとしてもよい。
 [2]ディレクトリの名称に基づく設定
 例えば、オペレーティングシステム27は、ユーザから、カーネルコマンドラインを用いたディレクトリの名称と静的カラー情報との関係の設定を受ける。例えば、ディレクトリ「/tmp」「/var/log」に対して静的カラー情報「3」「4」を指定する場合、オペレーティングシステム27は、「coloring_dir=/tmp:3,/var/log:4」のようなコマンドを受け付ける。
 これにより、ディレクトリの名称と静的カラー情報との関係がオペレーティングシステム27に対して設定される。オペレーティングシステム27は、データに対応するファイルが配置されているディレクトリの名称に基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 なお、例えば、オペレーティングシステム27は、ディレクトリの名称と静的カラー情報とを関連付けたテーブルを参照するとしてもよい。
 [3]シャドウファイルに基づく設定
 静的カラー情報とファイルとの関係、又は、静的カラー情報とディレクトリとの関係は、ファイルシステム上でユーザによって個別に設定されるとしてもよい。
 例えば、ユーザは、あるファイルに対してシャドウファイルを生成する。シャドウファイルは、このシャドウファイルに対応するファイルの拡張子を変えて生成される。例えば、ファイル「.foo.ext」に対して、同一のディレクトリ内に、シャドウファイル「.foo.ext.s_color」が生成される。
 そして、ユーザは、静的カラー情報とファイルとの関係を、シャドウファイルに保持させる。例えば、シャドウファイル「.foo.ext.s_color」内に、ファイル「.foo.ext」の静的カラー情報が設定される。
 オペレーティングシステム27は、データに対応するファイルのシャドウファイルに基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 なお、ディレクトリに対してシャドウファイルが生成され、このシャドウファイルに、静的カラー情報とディレクトリとの関係が保持されるとしてもよい。
 [4]ファイルシステムの拡張属性を用いる設定
 ファイルシステム上でユーザによって設定される静的カラー情報とファイルとの関係、静的カラー情報とディレクトリとの関係は、例えば、ファイルシステムの拡張属性を用いて設定される。
 拡張属性とは、ファイルシステムが解釈しないメタデータをユーザがファイル又はディレクトリに結びつけるための機能である。ファイル又はディレクトリに結び付けられているメタデータ内に、ファイル又はディレクトリの静的カラー情報が設定される。
 オペレーティングシステム27は、データに対応するファイルに結び付けられているメタデータに基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 また、オペレーティングシステム27は、データの配置されているディレクトリに結び付けられているメタデータに基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 [5]ソフトウェア又はデータのファイルに付されるヘッダに基づく設定
 ユーザは、ソフトウェアファイル又はデータファイルのヘッダを改変し、このファイルのヘッダに静的カラー情報を設定する。
 オペレーティングシステム27は、データに対応するファイルのヘッダに基づいて、このデータの静的カラー情報を決定し、カラーリングテーブル14に設定する。
 なお、ファイルのヘッダを改変するのではなく、上述したシャドウファイル又は拡張属性を用いて静的カラー情報が設定されてもよい。
 アプリケーションのファイルを複数のセクションに区切り、複数のセクションごとに、静的カラー情報が設定されるとしてもよい。
 SSDに使用されるSATAベンダー拡張コマンドを生成し、SSDにデータ及び静的カラー情報を渡すことにより、SSDに対してもメモリ管理装置1と同様の制御を実現できる。
 [6]仮想アドレス空間の属性情報に基づく設定
 図56は、仮想アドレス空間内の仮想アドレス領域と属性情報との関係の一例を示すブロック図である。
 アプリケーションは、仮想アドレス空間J32内の仮想アドレス領域J34a~J34fを使用する。
 オペレーティングシステム27は、仮想記憶の機能を具備する。オペレーティングシステム27は、各仮想アドレス領域J34a~J34fを、各仮想アドレス領域J34a~J34fに対応する仮想アドレス領域データを用いて管理する。情報J33は、仮想アドレス空間J32に関する情報であり、仮想アドレス領域データを含む。
 各仮想アドレス領域J34a~J34fに対する仮想アドレス領域データは、開始アドレス、終了アドレス、第1の属性情報、第2の属性情報を含むデータ構造を持つ。例えば、仮想アドレス領域データは、1プロセスに対して1以上利用される。
 各仮想アドレス領域データの開始アドレス及び終了アドレスは、対応する仮想アドレス領域の開始アドレス及び終了アドレスを示す、
 各仮想アドレス領域データの第1の属性情報は、対応する仮想アドレス領域が、読み出し可能「r」か、書き込み可能「w」か、実行可能「x」か、占有領域「p」又は共有領域「s」か、を示す。
 各仮想アドレス領域データの第2の属性情報は、対応する仮想アドレス領域が、ヒープ領域、スタック領域、ファイルマップ領域、のいずれであるかを示す。
 本実施形態では、仮想アドレス領域J34a~J34fに対する仮想アドレス領域データのうち、仮想アドレス領域J34c,J34dに対する仮想アドレス領域データJ35c,J35dを選択して説明するが、他の仮想アドレス領域データも同様の特徴を持つ。
 仮想アドレス領域J34cは、読み出し可能であり、書き込み可能であり、占有領域であるため、オペレーティングシステム27は、仮想アドレス領域データJ35cの第1の属性情報に「r」「w」「p」を格納する。
 仮想アドレス領域J34cは、ヒープ領域であるため、オペレーティングシステム27は、仮想アドレス領域データJ35cの第2の属性情報に、ヒープ領域を示す「1」を格納する。
 仮想アドレス領域J34dは、読み出し可能であり、実行可能であり、占有領域であるため、オペレーティングシステム27は、仮想アドレス領域データJ35dの第1の属性情報に「r」「x」「p」を格納する。
 仮想アドレス領域J34dは、ファイルマップ領域であるため、オペレーティングシステム27は、仮想アドレス領域データJ35dの第2の属性情報に、ファイルマップ領域を示す「4」を格納する。
 図57は、オペレーティングシステム27による仮想アドレス領域データの第2の属性情報の設定処理の一例を示すフローチャートである。
 ステップSE1において、オペレーティングシステム27は、設定対象の仮想アドレス領域を取り出す。
 ステップSE2において、オペレーティングシステム27は、第2の属性情報に、初期値「0」を設定する。
 ステップSE3において、オペレーティングシステム27は、仮想アドレス領域がヒープ領域か否か判断する。
 仮想アドレス領域がヒープ領域の場合には、ステップSE4において、オペレーティングシステム27は、第2の属性情報に「1」を設定する。
 ステップSE5において、オペレーティングシステム27は、仮想アドレス領域がスタック領域か否か判断する。
 仮想アドレス領域がスタック領域の場合には、ステップSE6において、オペレーティングシステム27は、第2の属性情報に「2」を設定する。
 ステップSE7において、オペレーティングシステム27は、仮想アドレス領域がファイルマップ領域か否か判断する。
 仮想アドレス領域がファイルマップ領域の場合には、ステップSE8において、オペレーティングシステム27は、第2の属性情報に「4」を設定する。
 ステップSE9において、オペレーティングシステム27は、他の仮想アドレス領域に対して第2の属性の設定を行うか否か判断する。
 他の仮想アドレス領域に対して第2の属性を設定する場合、処理は、ステップSE1に移る。
 他の仮想アドレス領域に対して第2の属性を設定しない場合、処理は終了する。
 図58は、仮想アドレス領域データJ35cに基づく静的カラー情報の設定の一例を示す図である。
 この図58では、オペレーティングシステム27によって管理されている仮想アドレス領域データJ35cに基づいて、仮想アドレス領域J34cに配置されているデータの静的カラー情報がカラーリングテーブル14に設定される場合を表している。
 オペレーティングシステム27は、仮想アドレス領域データJ35cの第1の属性及び第2の属性に基づいて、仮想アドレス領域J34cのデータに対する静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_colorを生成し、カラーリングテーブル14に設定する。
 仮想アドレス領域J34cのデータがページフォルトによって実メモリである論理アドレス空間に割り当てられた場合、オペレーティングシステム27は、仮想アドレス領域J34cのデータに対するデータ生成時刻ST_colorを生成し、カラーリングテーブル14に設定する。
 なお、メモリ管理装置1によって、仮想アドレス領域J34cのデータに対する書き込み回数、読み出し回数が更新される。
 [7]ダイナミックリンクライブラリの使用頻度に基づく設定
 コマンドとライブラリとは依存関係を有する。例えば、あるコマンドが実行されると、このコマンドに依存しているライブラリが使用される。
 したがって、この[7]の方法では、予めコマンドのスコアが決定され、このコマンドのスコアに基づいてコマンドで使用される(ダイナミックにリンクされる)ライブラリのスコアが決定される。ここで、スコアは、使用頻度に基づいて決定される値であるとする。例えば、後述する図59及び図60の例では、使用頻度が高いほどスコアの値が大きくなる。
 ライブラリに含まれているデータに対する静的書き込み頻度SW_color、静的読み出し頻度SR_colorは、ライブラリのスコアに基づいて設定される。なお、ライブラリを動的にリンクする動的リンカを用いてスコアを求めるとしてもよい。この場合、例えば、各ライブラリのスコアは、動的リンカによってライブラリがリンクされるたびに、インクリメントされる。具体的には、動的リンカが使用される場合、最初の段階でライブラリのスコアは0に初期化され、その後リンクされるたびに、このリンクされたライブラリのスコアがインクリメントされる。この結果、リンクされる回数が多いライブラリほど、スコアが大きくなる。
 図59は、コマンドとライブラリとの間の依存関係の一例を示す図である。
 この図59において、コマンドは、少なくとも一つのライブラリを使用する。コマンドのスコアは、予め設定される。
 ライブラリのスコアは、そのライブラリを使用するコマンド又はそのライブラリを使用するライブラリのスコアの総和とする。
 例えば、コマンド「cp」のスコアは「5」に設定されている。コマンド「cp」は、ライブラリ「libacl.so.1」「libselenux.so.1」を使用する。
 ライブラリ「libacl.so.1」「libselenux.so.1」のスコアは、このライブラリ「libacl.so.1」「libselenux.so.1」を使用するコマンド「cp」のスコア「5」に設定される。
 コマンド「bash」のスコアは「10」に設定されている。コマンド「bash」は、ライブラリ「libncurses.so.5」を使用する。
 ライブラリ「libncurses.so.5」のスコアは、このライブラリ「libncurses.so.5」を使用するコマンド「bash」のスコア「10」に設定される。
 ライブラリ「libdl.so.2」は、ライブラリ「libselenux.so.1」「libncurses.so.5」に使用される。
 ライブラリ「libdl.so.2」は、このライブラリ「libdl.so.2」を使用するライブラリ「libselenux.so.1」「libncurses.so.5」のスコアの総和「15」に設定される。
 他のコマンド及びライブラリについても同様の規則にしたがってスコアが設定される。
 なお、各コマンドのスコアの設定は変更可能である。スコアの継承方法も、各種変更可能である。例えば、親のライブラリが複数の子のライブラリへ分岐する依存関係を持つ場合(親のライブラリが複数の子のライブラリのうちのいずれかを選択して使用する場合など)、子のライブラリのスコアは、親のライブラリのスコアを子の数で割った値としてもよい。また、例えば、親のライブラリが同時に複数の子のライブラリを必要とする場合、子のライブラリに親のライブラリと同じスコアが設定されるとしてもよい。
 図60は、コマンドのスコアとライブラリのスコアの一例を示す図である。この図60では、上記図59の依存関係にそって計算されたライブラリのスコアを示している。
 図61は、コマンドのスコアに基づくライブラリのスコアの他の算出例を示す図である。この図61では、ライブラリ間の依存関係は用いられず、各ライブラリのスコアが、そのライブラリを使用するコマンドのスコアの総和により算出されている。
 図62は、ライブラリのスコアを用いた静的カラー情報の設定の一例を示す図である。
 この図62では、オペレーティングシステム27によって管理されている仮想アドレス領域データJ35dに基づいて、仮想アドレス領域J34dに配置されているデータの静的カラー情報がカラーリングテーブル14に設定される場合を表している。
 オペレーティングシステム27は、仮想アドレス領域データJ35dの第1の属性及び第2の属性、及び、ライブラリのスコアに基づいて、仮想アドレス領域J34dのデータに対する静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_colorを生成し、カラーリングテーブル14に設定する。
 仮想アドレス領域J34dのデータがページフォルトによって論理アドレス空間に割り当てられた場合、オペレーティングシステム27は、仮想アドレス領域J34dのデータに対するデータ生成時刻ST_colorを生成し、カラーリングテーブル14に設定する。
 なお、メモリ管理装置1によって、仮想アドレス領域J34dのデータに対する書き込み回数、読み出し回数が更新される。
 [8]コンパイラを用いる設定
 コンパイラは、変数の頻度(使用頻度)又は関数の頻度を予測可能な機能を持つ。
 ユーザは、このコンパイラの機能によって予測された変数の頻度又は関数の頻度に基づいて、変数又は関数を含むデータに対して、静的カラー情報を設定する。これにより、ファイル単位よりも細かい静的カラー情報の設定が可能である。
 コンパイラは、図63に示すように、コンパイル時に、ユーザに指定された変数又は関数を、特定のセクションにまとめることができる。
 ユーザは、このコンパイラの機能によってまとめられた変数及び関数を含むデータに対して、静的カラー情報を設定する。これにより、同じ書き込み単位内に、同程度の頻度を持つ変数及び関数をまとめることができる。
 図64は、コンパイラを用いた静的カラー情報の設定の一例を示す図である。
 ユーザは、コンパイラを用いて、変数の頻度及び関数の頻度を予測し、また、コンパイルされるソフトウェアをセクションに区分けし、セクションに対して静的カラー情報を設定する。
 例えば、オペレーティングシステム27は、「exception handler」を含むセクションに対して、静的書き込み頻度SW_colorに「低」、静的読み出し頻度SR_colorに「高」を設定する。
 例えば、オペレーティングシステム27は、「exception handler」を含むセクションに対して、静的書き込み頻度SW_colorに「低」、静的読み出し頻度SR_colorに「低」を設定する。
 [9]動的に生成されるメモリ領域に基づく設定
 ユーザは、動的に生成(確保・開放)されるメモリ領域に対し、後述するプロファイラから得られる使用頻度又は予想される使用頻度に基づいて、静的カラー情報を設定する。
 これにより、動的に生成されるメモリ領域に配置されるデータに対して、静的カラー情報を設定可能となる。
 図65は、動的に生成されるメモリ領域の使用頻度に基づく静的カラー情報の設定の一例を示す図である。
 例えば、オペレーティングシステム27は、メモリ領域「kernel page table」に配置されるデータに、静的書き込み頻度SW_colorに「低」、静的読み出し頻度SR_colorに「高」を設定する。
 例えば、オペレーティングシステム27は、メモリ領域「kernel stack」に配置されるデータに、静的書き込み頻度SW_colorに「高」、静的読み出し頻度SR_colorに「高」を設定する。
 例えば、オペレーティングシステム27は、動画プレーヤのバッファ領域に配置されるデータに、静的書き込み頻度SW_colorに「高」、静的読み出し頻度SR_colorに「高」を設定する。
 オペレーティング27は、メモリ領域の取得時及び開放時に、直接カラーリングテーブル14を更新する。
 アプリケーションのヒープ領域、スタック領域に配置されるデータに対する静的カラー情報の設定については、上記第1の実施形態で説明しているため、ここでは説明を省略する。
 madvise()システムコールは、アドレスaddrから始まるlengthバイトのメモリブロックのページング入出力をどう扱えばよいか、カーネルにアドバイスする。このシステムコールを用いると、アプリケーションからカーネルに、マップされたメモリや共有メモリをどのように扱ってほしいか伝えることができ、カーネルはそれに応じて先読み又はキャッシュなどの適切な手法を選択できる。このシステムコールに、指定されたメモリ領域の静的カラー情報を設定する機能を加えるとしてもよい。あるいは、指定されたメモリ領域の静的カラー情報を設定する新規のシステムコールが追加されるとしてもよい。
 [10]プロファイラを用いる設定
 プロファイラは、アプリケーションの例えば性能情報を取得する機能を持つ。この性能情報には、使用頻度などの統計情報が含まれる。
 ユーザは、プロファイラによって生成される性能情報に基づいて、アプリケーションに対し、静的カラー情報を設定する。
 これにより、事前に予測された使用頻度に基づいて静的カラー情報が設定されるのではなく、実際の利用状態に応じて静的カラー情報が設定される。
 以上に説明した本実施の形態においては、静的カラー情報の設定方法が説明されている。これにより、メモリ管理装置1で使用される静的カラー情報がカラーリングテーブル14に設定され、この静的カラー情報に基づいて、不揮発性半導体メモリ9,10の寿命を長期化させることができる。
 (第7の実施形態)
 図66を参照して、本実施形態に係るメモリ管理装置1、情報処理装置100、メモリ装置H32a,H32b,H32cについて説明する。図66は、本実施形態に係るメモリ管理装置1、情報処理装置100及びメモリ装置H32a,H32b,H32cの構成の一例を示すブロック図である。第1実施形態と同一又は同様の構成については、同一の符号を付し、説明を省略する。なお、図66の説明において、図1のプロセッサ3a,3b,3cのうちプロセッサ3bを代表として説明するが、他のプロセッサ3a,3cについても同様である。
 メモリ管理装置1に備えられている処理部15は、メモリ使用情報管理部22、接続検出部H33、判断部H34、通知部H35、交換制御部H36を備える。メモリ管理装置に備えられている情報記憶部17には、前述した、メモリ使用情報11、メモリ固有情報12、アドレス変換情報13、カラーリングテーブル14が格納されている。さらに、メモリ管理装置1の処理部15は、複数のコネクタ部H44a,H44b,H44cに接続されている。
 メモリ装置H32a,H32b,H32cは、各々に、メモリユニットH37a,H37b,H37cと、正常通知部H38a,H38b,H38cと、警告通知部H39a,H39b,H39cと、使用停止通知部H40a,H40b,H40cと、接続操作部H41a,H41b,H41cとを備える。さらに、メモリ装置H32a,H32b,H32cは、各々に、コネクタ部H42a,H42b,H42cを備える。メモリユニットH37a,H37b,H37cには、管理情報H43a,H43b,H43cが格納されている。管理情報H43a,H43b,H43cの詳細については後述する。
 メモリ装置H32a,H32b,H32cに備えられているコネクタ部H42a,H42b,H42cは、それぞれ、コネクタ部H44a,H44b,H44cに接続される。
 次に、メモリ管理装置1の構成についてより詳細に説明する。以下の説明において、メモリ装置H32a,H32b,H32cのうちメモリ装置H32aを代表として説明するが、他のメモリ装置H32b,H32cについても同様である。
 接続検出部H33は、メモリ管理装置1とメモリ装置H32aとの接続を検出する。接続検出部H33は、メモリ装置H32aの接続操作部H41aから、後述する「取り付け通知」を受信すると、メモリ装置H32aがメモリ管理装置1に電気的に接続されたことを検出する(「接続状態」を検出する)。また、接続検出部H33は、メモリ装置H32aの接続操作部H41aから、後述する「取り外し通知」を受信すると、メモリ装置H32aがメモリ管理装置1から電気的に非接続されることを検出する(「取り外し準備状態」を検出する)。
 判断部H34は、メモリ使用情報11に基づき、メモリ装置H32aの使用状態を判断する。使用状態は、例えば、「正常状態」「警告状態」「使用停止状態」を含む。判断部H34は、例えば、定期的に、メモリ装置H32aの使用状態を判断する。また、判断部H34は、例えば、メモリ装置H32aに対するアクセスが発生する毎に、メモリ装置H32aの使用状態を判断する。使用状態の判断方法については後述する。
 通知部H35は、判断部H34によって判断された使用状態に基づいて、メモリ装置H32aに対して使用状態を通知する。
 交換制御部H36は、接続検出部H33がメモリ装置H32aの接続操作部H41aからの「取り付け通知」に基づき「接続状態」を検出すると、メモリユニットH37aに格納されている管理情報H43aに含まれるメモリユニットH37aの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリ使用情報11に格納する。また、交換制御部H36は、接続検出部H33が、メモリ装置H32aの接続操作部H41aからの「取り外し通知」に基づき「取り外し準備状態」を検出すると、情報記憶部17に格納されているメモリ使用情報11に含まれる、メモリ装置H32aの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリユニットH37aの管理情報H43aに格納する。管理情報H43aの詳細については後述する。
 例えば、メモリ装置H32aが、NAND型フラッシュメモリである場合には、例えば、消去回数は、ブロック領域単位、書き込み発生回数、読み出し発生回数は、ページ領域単位で管理されている。
 次に、メモリ装置H32a,H32b,H32cの構成について説明する。
 メモリユニットH37aは、SLCタイプのNAND型フラッシュメモリ、又はMLCタイプのNAND型フラッシュメモリであり、第1実施形態の不揮発性半導体メモリ9,10に相当する。また、メモリユニットH37aは、一部の領域がSLCタイプのNAND型フラッシュメモリ(SLC領域)であり、SLC領域を除く部分がMLCタイプのNAND型フラッシュメモリ(MLC領域)であってもよい。この場合、SLC領域が不揮発性半導体メモリ9に相当し、MLC領域が不揮発性半導体メモリ10に相当する。
 正常通知部H38aは、メモリ管理装置1の通知部H35から「正常状態」の通知を受けた場合に、正常状態を表示する。例えば、正常通知部H38aは、第1の色(青色)の発光体であり、点灯することにより、正常状態を表示する。
 警告通知部H39aは、メモリ管理装置1の通知部H35から「警告状態」の通知を受けた場合に、警告状態を表示する。例えば、警告通知部H39aは、第2の色(黄色)の発光体であり、点灯することにより、警告状態を表示する。
 使用停止通知部H40aは、メモリ管理装置1の通知部H35から「使用停止状態」の通知を受けた場合に、停止状態を表示する。例えば、使用停止通知部H40aは、第3の色(赤色)の発光体であり、点灯することにより、使用停止状態を表示する。
 接続操作部H41aは、メモリ装置H32aがメモリ管理装置1から電気的に非接続される場合(取り外される場合)に、取り外される旨(取り外し通知)をメモリ管理装置1に通知する。接続操作部H41aは、例えば、電気的、又は機械的なボタンを備え、メモリ装置H32aを取り外す際に、ユーザが当該ボタンを押すことにより、取り外し通知をメモリ管理装置1に通知する。
 また、接続操作部H41aは、メモリ装置H32aがメモリ管理装置1に電気的に接続された場合に、接続された旨(取り付け通知)をメモリ管理装置1に通知する。例えば、メモリ装置H32aをメモリ管理装置1に電気的に接続する際に、ユーザが当該ボタンを押すことにより、取り付け通知をメモリ管理装置1に通知する。
 コネクタ部H42aが、コネクタ部H44aに接続されることにより、メモリ装置H32aとメモリ管理装置1とが電気的に接続される。
 次に、図67を参照してメモリ装置H32aに備えられているメモリユニットH37aの消去回数の変化について説明する。図67は、メモリユニットH37aの消去回数の変化の一例を示すグラフである。横軸は時間であり、縦軸は消去回数である。
 本実施形態のメモリ装置H32aのメモリユニットH37aは、プロセッサ3bからアクセス(読み出し、書き込み、消去)を受ける。このため、メモリユニットH37aの消去回数、読み出し発生回数、書き込み発生回数は、使用時間とともに増加し、ある時刻において、消去回数はメモリユニットH37aの消去可能上限回数に達する。メモリユニットH32aの消去回数が消去可能上限回数に達すると、メモリユニットH32aに対するデータの書き込み、読み出し、消去は、信頼性の観点から、望ましくない。
 前述のように、メモリ管理装置1は、メモリ使用情報11により不揮発性半導体メモリ9,10(メモリ装置H32a)の消去回数、読み出し発生回数、書き込み発生回数等を管理している。本実施形態では、以下に示すように、メモリ管理装置1が、メモリ使用情報11に基づき、メモリ装置H32aの使用状態をモニターし、メモリ管理装置H32aの消去回数が消去発生上限回数に達する前に、メモリ装置H32aに対して警告する。
 図68を参照して、メモリ装置H32aの消去回数に基づく、メモリ装置H32aの使用状態の判断について説明する。図68は、メモリ装置H32aの消去回数に基づく、メモリ装置H32aの使用状態の一例を示すグラフである。横軸は時間であり、縦軸は消去回数である。なお、書き込みについても、消去と同様にメモリ装置H32aの使用状態の判断に用いることができる。
 図68に、メモリユニットH37aの消去回数の変化の例を破線で示す。メモリユニットH37aの消去回数に対する回帰曲線ΔtERASE(例えば、1次回帰線)を実線で示す。この1次回帰線から、現在時刻から所定時間(警告期間)tERASEbefore後の消去回数ERASEalertを予測する。ERASEalertが消去可能上限回数ERASEmaxを超えている場合、メモリユニットH37aの使用状態は「警告状態」であると判断される。ERASEalertが消去可能上限回数ERASEmaxを超えていない場合、メモリユニットH37aの使用状態は「正常状態」であると判断される。また、現在時刻の消去回数が、消去可能上限回数ERASEmaxを超えている場合、メモリユニットH37aの使用状態は「使用停止状態」と判断される。
 なお、前述のように、メモリユニットH37aがNAND型フラッシュメモリである場合には、メモリユニットH37aの消去回数は、ブロック領域単位で管理される。メモリユニットH37aは、複数のブロック領域を含む。メモリユニットH37aに含まれる複数のブロック領域間では、ウェアレベリングにより、消去回数のばらつきは小さくなる。このため、例えば、メモリユニットH37aに含まれる複数のブロック領域の各々の消去回数の平均値をメモリユニットH37aの消去回数とする。また、例えば、メモリユニットH37aに含まれる複数のブロック領域の最大の消去回数を、メモリユニットH37aの消去回数としてもよい。読み出し発生回数、書き込み発生回数についても、同様である。
 次に図69を参照して、メモリ装置H32aの読み出し発生回数に基づく、メモリ装置H32aの使用状態の判断について説明する。図69は、メモリ装置H32aの読み出し発生回数に基づく、メモリ装置H32aの使用状態の一例を示すグラフである。横軸は時間であり、縦軸は読み出し発生回数である。
 図69に、メモリユニットH37aの読み出し発生回数の変化の例を破線で示す。メモリユニットH37aの読み出し発生回数に対する回帰曲線ΔtREAD(例えば、1次回帰線)を実線で示す。この1次回帰線から、現在時刻から所定時間(警告期間)tREADbefore後の読み出し発生回数READalertを予測する。READalertが読み出し可能上限回数READmaxを超えている場合、メモリユニットH37aの使用状態は「警告状態」であると判断される。READalertが読み出し可能上限回数READmaxを超えていない場合、メモリユニットH37aの使用状態は「正常状態」であると判断される。また、現在時刻の読み出し発生回数が、読み出し可能上限回数READmaxを超えている場合、メモリユニットH37aの使用状態は「使用停止状態」と判断される。
 次に、図70を参照して、メモリ装置H32aの消去回数に基づき、メモリ装置H32aに使用状態を通知する処理の一例を説明する。図70は、メモリ装置H32aの消去回数に基づき、メモリ装置H32aに使用状態を通知する処理の一例を示すフローチャートである。
 ステップHA1において、メモリ使用情報管理部22は、メモリ使用情報11を読み出す。
 ステップHA2において、メモリ使用情報管理部22は、メモリ使用情報11から、メモリ装置H32aの現在時刻の消去回数を読み出す。
 ステップHA3において、判断部H34は、現在の時刻、現在より前の時刻、現在時刻の消去回数、現在より前の時刻の消去回数、メモリ使用情報11に格納されている過去のΔtERASEなどに基づいて、新たなΔtERASEを計算する。例えば、判断部H34は、消去開始時刻、現在時刻、現在時刻の消去回数に基づいて、単位時間当たりの消去回数であるΔtERASEを計算する。
 ステップHA4において、判断部H34は、現在時刻の消去回数が、消去可能上限回数ERASEmax以下か否か判断する。
 現在時刻の消去回数が、消去可能上限回数ERASEmaxを超えている場合、ステップHA5において、判断部H34は、メモリ装置H32aが使用停止状態であると判断し、処理はステップHA9に移動する。
 現在時刻の消去回数が、消去可能上限回数ERASEmax以下の場合、ステップHA6において、判断部H34は、ΔtERASE×tERASEbefore+現在時刻の消去回数、を算出し、現在時刻からtERASEbefore経過後の消去回数の予測値ERASEalertを求める。
 ステップHA7において、判断部H34は、予測値ERASEalertが、消去可能上限回数ERASEmax以下か否か判断する。
 予測値ERASEalertが消去可能上限回数ERASEmaxを超えている場合、ステップHA8において、判断部H34は、メモリ装置H32aに対して警告状態と判断し、処理はステップHA9に移動する。
 予測値ERASEalertが消去可能上限回数ERASEmax以下の場合、処理はステップHA9に移動する。
 ステップHA9において、判断部H34は、メモリ使用情報11に、現在時刻の消去回数、ΔtERASE格納し、更新を行う。
 以上のように、メモリ装置H32aの消去回数に基づき、メモリ装置H32aに使用状態を通知することで、メモリ装置H32aの使用状態が「使用停止状態」となる前に、警告を通知することが可能となる。
 次に、図71を参照して、メモリ装置H32aの読み出し発生回数に基づき、メモリ装置H32aに使用状態を通知する処理の一例を説明する。図71は、メモリ装置H32aの読み出し発生回数に基づき、メモリ装置H32aに使用状態を通知する処理の一例を示すフローチャートである。
 図71のステップHB1~HB9は判断の対象が読み出し発生回数である点を除き、判断の対象が消去回数である上記図70のステップHA1~HA9と同様であるため、説明を省略する。
 以上のように、メモリ装置H32aの読み出し発生回数に基づき、メモリ装置H32aに使用状態を通知することで、メモリ装置H32aの使用状態が「使用停止状態」となる前に、警告を通知することが可能となる。
 上記の本実施形態においては、現在時刻から所定時間tERASEbefore,tREADbefore後の予測された消去回数ERASEalert,READalertが消去可能上限回数ERASEmax,読み出し可能上限回数READmaxを超える場合に、警告状態とする。しかしながら、上記の判断処理は、様々に変更することができる。以下に、本実施の形態における判断処理の変形例について説明する。
 例えば、判断部H34は、ΔtERASEを算出する。
 判断部H34は、現在時刻の消去回数とΔtERASEとERASEmaxとに基づいて、消去回数がERASEmaxに達すると予測される時間tERASEmaxを求める。
 判断部H34は、tERASEmaxからtERASEbeforeを引くことにより、警告状態とすべき時間tERASEalertを求める。
 そして、判断部H34は、現在時刻が警告状態とすべき時間tERASEalertとなるか又は超えた場合に、警告状態と判断する。あるいは、判断部H34は、消去開始時刻とΔtERASEと警告を発すべき時間tERASEalertとに基づいて、警告状態とすべき消去回数ERASEalertを求め、消去回数が警告状態とすべき消去回数ERASEalert以上となった場合に、警告状態と判断する。
 なお、消去回数に代えて、読み出し発生回数を判断の対象とする場合においても同様である。
 次に、図72を参照してメモリ装置H32aに格納されている管理情報H43aについて説明する。図72は、管理情報H43aに含まれるデータの一例を示す図である。
 管理情報H43aは、メモリ装置H32aのメモリユニットH37aの所定領域毎の消去回数、消去回数についての回帰曲線ΔtERASE、消去可能上限回数ERASEmax、警告期間tERASEbefore、消去開始時刻を含む。さらに、管理情報H43aは、メモリ装置H32aのメモリユニットH37aの所定領域毎の読み出し発生回数、読み出し発生回数についての回帰曲線ΔtREAD、消去可能上限回数READmax、警告期間tREADbefore、読み出し開始時刻を含む。
 消去回数、読み出し発生回数、回帰曲線ΔtERASE,ΔtREADは、メモリ管理装置1のメモリ使用情報11で管理されている情報であり、後述するように、メモリ装置H32aがメモリ管理装置1から取り外される際に、管理情報H43aに格納される。
 次に、図73を参照して、メモリ管理装置1にメモリ装置H32aが電気的に接続されてから、メモリ装置H32aにアクセスを開始するまでの処理について説明する。図73は、メモリ管理装置1にメモリ装置H32aが電気的に接続されてから、メモリ装置H32aにアクセスを開始するまでの処理の一例を示すフローチャートである。
 まず、ステップHC1において、メモリ管理装置1の接続検出部H33がメモリ装置H32aから「取り付け通知」を受信することにより、メモリ装置H32aがメモリ管理装置1に電気的に接続されたこと(接続状態)を検出する。
 次に、ステップHC1においてメモリ装置H32aに管理情報H43aが格納されているか否か判断する。管理情報H43aが格納されている場合、ステップHC3に移動する。管理情報H43aが格納されていない場合、ステップHC4に移動する。
 ステップHC3では、管理情報H43aに含まれているメモリユニットH37aの所定領域毎の消去回数、書き込み発生回数、読み出し発生回数を読み出し、メモリ使用情報11に格納する。また、管理情報H43aに含まれているメモリユニットH37aの消去可能上限回数ERASEmax、読み出し可能上限回数READmax、警告期間tERASEbefore、tREADbeforeを読み出し、メモリ固有情報12に格納する。
 ステップHC4では、管理情報H43aを新規生成し、メモリユニットH37aに書き込み、メモリ使用情報11には、所定領域毎の消去回数、書き込み発生回数、読み出し発生回数の値として「0」を格納する。
 ステップHC3又はステップHC4の処理の後に、メモリ装置H32aに対するアクセスが開始される。メモリ装置H32aに対するアクセスが発生すると、前述のように、メモリ装置H32aに対応するメモリ使用情報11の所定領域毎の消去回数、書き込み発生回数、読み出し発生回数が更新される。
 次に、図74を参照して、メモリ管理装置1がメモリ装置H32aから「取り外し通知」を受信してから、メモリ装置H32aが取り外し可能となるまでの処理について説明する。図74は、メモリ管理装置1がメモリ装置H32aから「取り外し通知」を受信してから、メモリ装置H32aが取り外し可能となるまでの処理の一例を示すフローチャートである。
 まず、ステップHD1において、メモリ管理装置1の接続検出部H33がメモリ装置H32aから「取り外し通知」を受信する。
 次に、ステップHD2において、メモリ管理装置1の交換制御部H36は、メモリ装置H32aに記憶されているデータを、メモリ装置H32aから読み出し、別のメモリ装置(例えば、メモリ装置H32b)に書き込む。
 次に、ステップHD3において、交換制御部H36は、メモリ使用情報11で管理されているメモリ装置H32aの所定領域毎の書き込み回数、読み出し回数、消去回数を、管理情報H43aとして、メモリ装置H32aのメモリユニットH37aに格納する。
 次に、ステップHD4において、メモリ管理装置1の通知部H35は、メモリ装置H32aに、取り外し可能であることを通知する。
 以上のように、メモリ装置H32aの取り外し時に、メモリ装置H32aの所定領域毎の書き込み回数、読み出し回数、消去回数を、管理情報H43aとして、メモリ装置H32aのメモリユニットH37aに格納し、次に、メモリ装置H32aの取り付け時に、管理情報H43aを読み出すことで、メモリ装置H32aの使用情報を取得することが可能となる。
 次に、図75を参照して、メモリ装置の取り替え状態について説明する。図75は、メモリ装置の取り替え状態の一例を示す図である。
 この図75の情報処理装置100は、プロセッサ3b、メモリ管理装置1、メモリ装置H32a~H32lを具備する。情報処理装置100は、RAIDの技術を、メモリ装置H32a~H32lに適用する。さらに、本実施形態において、メモリ装置H32a~H32lに対するアクセスを制御するメモリ管理装置1は、ハードウェアとしてホットスワップに対応している。情報処理装置100は、サーバ装置などのような連続運転が必要な装置とする。
 メモリ装置H32a~H32mは、メモリ読み出し回数及びメモリ消去回数に上限があり、寿命がきたら交換される。各メモリ装置H32a~H32mは、表示部H45a~H45mを具備する。この図75では、表示部H45a~H45mは、メモリ装置H32a~H32mが正常状態の場合に例えば緑色で発光し、警告状態又は使用停止状態の場合に例えば赤色で発光する。
 装着されているメモリ装置H32a~H32lには、それぞれボタンH46a~H46lが割り当てられている。
 メモリ管理装置1にRAIDの技術を適用することにより、メモリ装置H32a~H32lのうちの一部(図75ではメモリ装置H32k)が警告状態又は使用停止状態になっても、残りのメモリ装置H32a~H32j,H32lにより情報処理装置100は正常に稼動可能である。そして、ユーザは、警告状態又は使用停止状態になったメモリ装置H32kを、情報処理装置100を稼動させたまま取り外して、代わりのメモリ装置H32mを取り付けることができる。
 例えば、メモリ装置H32kが使用され、メモリ装置H32kの読み出し発生回数又は消去回数が増加して読み出し可能上限回数又は消去可能上限回数に接近すると、メモリ装置H32kの表示部H45kは赤く発光する。装着されているメモリ装置H32kを交換する場合には、対応するボタンH46kがユーザによって押される。ボタンH46kが押されると、メモリ管理装置1に、取り外し通知が送信される。メモリ管理装置1は、取り外し通知を受信すると、メモリ装置H32kのデータの退避、メモリ装置H32kの電源OFFなどの処理を実行する。
 なお、取り外し対象のメモリ装置H32kに重要度が特定のしきい値より低いデータのみが記憶されている場合には、メモリ装置H32kのデータを退避させないですぐに交換してもよい。
 ユーザは、メモリ装置H32kが取り外し可能状態になると、メモリ装置H32kを取り外し、新たなメモリ装置H32mを取り付ける。
 例えば、サーバ装置、パーソナルコンピュータ、ゲーム機などのような情報処理装置100の主記憶装置としてメモリ装置H32kが使用され、メモリ装置H32kが警告状態となったとしても、このメモリ装置H32kは、例えば、CD-Rの代わりのようなメディア、デジタルカメラの写真記録メディアとして再利用可能である。
 本実施の形態において、中古のメモリ装置H32kを他の情報処理装置で使用可能とするために、このメモリ装置H32kの管理情報は、このメモリ装置H32kに格納され、さらに、表示部H45kがメモリ装置H32kに備えられている。
 表示部H45a~H45mには、電子インク用の表示部を用いるとしてもよい。例えば、メモリ管理装置1の判断部H34は、メモリ使用情報11及びメモリ固有情報12に基づいて、各メモリ装置H32a~H32lに対するアクセス状態(例えば、「消去回数/消去可能上限回数」、「読み出し発生回数/読み出し可能上限回数」など)を求める。メモリ管理装置1の通知部H35は、各メモリ装置H32a~H32lに対するアクセス状態に基づいて、電子インク用の表示部H45a~H45lの表示を制御する。例えば、表示部H45a~H45lは、アクセス状態を棒グラフで表す。
 電子インク用の表示部H45a~H45lの表示内容は、メモリ装置H32a~H32lがメモリ管理装置1から取り外された場合であっても維持される。したがって、ユーザは、メモリ装置H32a~H32lを取り外した後、この電子インク用の表示部H45a~H45lの表示内容を参考にして、他の情報処理装置にメモリ装置H32a~H32lを取り付け、再利用することができる。
 次に、図76を参照して、メモリ装置H32aの再利用について説明する。図76は、メモリ装置H32aの再利用の一例を示すブロック図である。
 例えば、情報処理装置1は、サーバ装置、パーソナルコンピュータなどのようにデータの記憶及びアクセスについて高い信頼性が要求される装置であるとする。
 例えば、情報処理装置100Aは、デジタルカメラ、プリンター、携帯電話などのようにデータの記憶及びアクセスについて情報処理装置100ほどは高い信頼性を要求されていない装置とする。
 情報処理装置100では、正常動作が望まれるため、警告が発行されたタイミングから早めの時点でメモリ装置H32aが交換される。
 これに対して、情報処理装置100Aでは、警告が発行された後であっても使用停止通知が発生するまでメモリ装置H32aを使用可能である。
 ユーザは、情報処理装置100においてメモリ装置H32aに対して警告が通知された場合に、このメモリ装置H32aを情報処理装置100から取り外し、メモリ装置H32aを情報処理装置100Aに取り付けて使用することができる。このようにメモリ装置H32aは有効に再利用される。
 次に、図77を参照して、カラーリング情報に基づいて、メモリ装置H32a,H32b,H32cの警告時期が短期間内に集中しないように、メモリ装置H32a,H32b,H32cの中から書き込み先を選択する方法について説明する。
 図77に示すように、書き込み管理部20は、カラーリング情報に基づいて、静的カラー情報の高いデータ又は動的カラー情報の高いデータを、メモリ装置H32a,H32b,H32cのうち特定のメモリ装置H32aに書き込むように制御する。これにより、メモリ装置H32aに対するアクセス回数(消去回数、読み出し発生回数、書き込み発生回数)が、他のメモリ装置H32b,H32cに比べ、早く増加する。
 これにより、特定のメモリ装置H32aが早く警告状態となり、警告時期が短期間内に集中するのを抑制でき、短期間に多数のメモリ装置を取り替えるような作業負担の増加を防止することができる。
 上記の本実施形態においては、アクセス回数に上限のあるメモリ装置H32a~H32lをメモリ管理装置1に簡単に取り付けることができ、さらに、簡単に取り外すことができる。
 したがって、情報処理装置100で使用されるメモリ装置H32a~H32lの状態監視及びメンテナンスを容易に行うことができる。
 本実施形態においては、情報処理装置100を連続運転させながら、メモリ装置H32a~H32lの取り替えを行うことができる。
 さらに、本実施の形態においては、メモリ管理装置1に対して着脱可能なメモリ装置H32a~H32lを再利用することができる。
 本実施形態においては、メモリ装置H32a~H32lを組み合わせた高信頼性、高速、大容量の記憶装置を実現することができ、メモリ装置H32a~H32lを容易に交換でき、情報処理装置100の稼働率を向上させることができる。
 (第8の実施形態)
 本実施形態は、上記第1の実施形態の変形例である。本実施形態に係るメモリ管理装置は、不揮発性半導体メモリ9,10におけるSLC領域をMLC領域に動的に切り替え可能であり、さらに、MLC領域をSLC領域に動的に切り替え可能である。
 本実施形態において、SLC領域とは、不揮発性半導体メモリ9,10において、SLCタイプのNAND型フラッシュメモリとして用いられるメモリ領域を指す。また、MLC領域とは、不揮発性半導体メモリ9,10において、MLCタイプのNAND型フラッシュメモリとして用いられるメモリ領域を指す。
 不揮発性半導体メモリ9,10は、不揮発性半導体メモリ9,10の全メモリ領域がSLC領域、又はMLC領域であってもよいし、不揮発性半導体メモリ9,10の一部のメモリ領域がSLC領域であり、SLC領域ではないメモリ領域がMLC領域であってもよい。
 不揮発性半導体メモリ9,10のメモリ領域がSLC領域であるか、MLC領域であるかの情報(以下において、「SLC/MLC領域情報」と称する)は、例えば、メモリ固有情報12で管理される。例えば、メモリ固有情報12は、不揮発性半導体メモリ9,10において、物理アドレスで指定されるメモリ領域が、SLC領域であるか、MLC領域であるかの情報を保持する。なお、各メモリ領域に対するSLC/MLC領域情報はメモリ固有情報12で管理するとしているが、メモリ使用情報11で管理するとしてもよい。
 図78は、本実施形態に係るメモリ管理装置の構成の一例を示す図である。
 メモリ管理装置D32は、処理部D33、作業メモリ16、情報記憶部17を具備する。
 処理部D33は、消耗率算出部D34、切替判断部D35、切替制御部D36を具備する。さらに、処理部D33は、上述した第1の実施形態の処理部15と同様に、アドレス管理部18、読み出し管理部19、書き込み管理部20、カラーリング情報管理部21、メモリ使用情報管理部22、再配置部23を具備するが、これらは図78では省略されている。
 本実施形態のメモリ管理装置D32は、不揮発性半導体メモリ9,10におけるSLC領域の消耗率の情報に基づき、当該SLC領域をMLC領域に切り替えることが可能である。さらに、メモリ管理装置D32は、不揮発性半導体メモリ9,10におけるMLC領域の消耗率情報に基づき、当該MLC領域をSLC領域に切り替えることが可能である。ここで、消耗率とは、メモリ領域の書き込み可能上限回数に対する書き込み回数の割合である。
 また、メモリ管理装置D32は、消去可能上限回数に対する消去回数の割合である消去消耗率、読み出し可能上限回数に対する読み出し回数の割合である読み出し消耗率に基づいて、SLC領域とMLC領域の動的切り替えを行なうことも同様に可能である。さらに、メモリ管理装置D32は、書き込み消耗率、消去消耗率、読み出し消耗率のうちの少なくとも2つに基づいて、SLCとMLCの動的切り替えを行なうことも可能である。
 消耗率算出部D34は、メモリ使用情報11とメモリ固有情報12を参照し、メモリ領域の書き込み回数と書き込み可能上限回数に基づき、当該メモリ領域の書き込み消耗率を算出する。同様に、消耗率算出部D34は、メモリ使用情報11とメモリ固有情報12を参照し、読み出し消耗率、消去消耗率を算出することも可能である。書き込み消耗率、読み出し消耗率は、例えば、ページ領域単位、又は、ブロック領域単位で算出される。消去消耗率は、例えば、ブロック領域単位で算出される。
 例えば、SLC領域、MLC領域が、ブロック領域より大きいメモリ領域である場合、SLC領域、MLC領域に含まれる複数のブロック領域毎に書き込み消耗率が算出される。SLC領域、MLC領域に含まれる複数のブロック領域間では、ウェアレベリングにより、書き込み消耗率のばらつきは小さくなる。このため、例えば、SLC領域、MLC領域に含まれる複数のブロック領域の書き込み消耗率の平均値を当該SLC領域、MLC領域の書き込み消耗率とする。また、例えば、SLC領域、MLC領域に含まれる複数のブロック領域の書き込み消耗率のうち、最大の書き込み消耗率を、当該SLC領域、MLC領域の書き込み消耗率としてもよい。読み出し消耗率、消去消耗率についても同様である。
 切替判断部D35は、SLC領域の書き込み消耗率が、当該SLC領域に設定されている書き込み消耗率の閾値(以下において、「SLC閾値」と称する)を超えているか否か判断する。また、切替判断部D35は、MLC領域の書き込み消耗率が、当該MLC領域に設定されている書き込み消耗率の閾値(以下において、「MLC閾値」と称する)を超えているか否か判断する。各メモリ領域のSLC閾値、MLC閾値の情報は、メモリ固有情報11において管理されている。
 切替制御部D36は、SLC領域の書き込み消耗率がSLC閾値を超えている場合に、このSLC領域をMLC領域に切り替える制御を行う。また、切替制御部D36は、MLC領域の書き込み消耗率がMLC閾値を超えている場合に、このMLC領域をSLC領域に切り替える制御を行う。さらに、切替制御部D36は、SLC領域、MLC領域の切替に応じて、メモリ固有情報11で管理されている「SLC/MLC領域情報」を更新する。
 また、切替制御部D36は、SLC領域からMLC領域への切り替えが発生した場合に、いずれかのMLC領域をSLC領域に切り替える制御を行う。また、切替制御部D36は、MLC領域からSLC領域への切り替えが発生した場合に、いずれかのMLC領域をSLC領域に切り替える制御を行う。これにより、切替制御部D36によるメモリ領域の切り替え前後においてSLC領域とMLC領域の割合の変化が少なくなるように制御する。なお、SLC領域とMLC領域の切り替えは、切替制御部D36が不揮発性半導体メモリ9,10に対して、切り替え対象メモリ領域を特定し、コマンドを出力することにより行われる。
 さらに、切替制御部D36は、切り替え対象のメモリ領域にデータが記憶されている場合に、データの移動を行い、このデータの移動に応じてアドレス変換情報13を更新する。
 また、切替制御部D36によるSLC領域、MLC領域の切り替えに応じて、メモリ使用情報管理部22は、切り替えられたメモリ領域のメモリ使用情報11(書き込み回数、消去回数、読み出し回数など)を更新する。
 図79は、本実施形態に係る不揮発性半導体メモリの動的切り替えの第1の例を示す模式図である。図79に示す不揮発性半導体メモリ291~294は、不揮発性半導体メモリ9,10に対応し、情報処理装置100のメインメモリとして用いられる。
 図79に示す例では、不揮発性半導体メモリ291~293の全メモリ領域がSLC領域として使用されている(不揮発性半導体メモリ291~293は、SLCタイプのNAND型フラッシュメモリである)。また、不揮発性半導体メモリ294の全メモリ領域がMLC領域として使用されている(不揮発性半導体メモリ294は、MLCタイプのNAND型フラッシュメモリである)。不揮発性半導体メモリ291~294は、例えば、メモリカードである。
 第1の実施形態で説明したように、SLCタイプの不揮発性半導体メモリ291~293に対しては、アクセス頻度の高いデータが書き込まれる。このため、SLCタイプの不揮発性半導体メモリ291~293の書き込み消耗率は高くなる。一方、MLCタイプの不揮発性半導体メモリ294に対しては、アクセス頻度の低いデータが書き込まれる。このため、MLCタイプの不揮発性半導体メモリ294は、書き込み消耗率が低くなる。
 切替判断部D35は、不揮発性半導体メモリ291の書き込み消耗率が不揮発性半導体メモリ291のSLC閾値を超えたと判断すると、切替制御部D36は、不揮発性半導体メモリ291をSLCタイプからMLCタイプに切り替える。さらに、切替制御部D36は、書き込み消耗率の低い不揮発性半導体メモリ294をMLCタイプからSLCタイプに切り替える。これにより、書き込み消耗率の高い不揮発性半導体メモリ291は、MLCタイプとして使用されることとなり、アクセス頻度の低いデータが書き込まれる。一方、書き込み消耗率の低い不揮発性半導体メモリ294は、SLCタイプとして使用されることとなり、アクセス頻度の高いデータが書き込まれる。MLCタイプの不揮発性半導体メモリ291に対しては、強力なECC(Error-Correcting Code)をかけることにより、MLCタイプの不揮発性半導体メモリ291の寿命(メインメモリとしての使用可能期間)を延ばすことも可能である。通常、強力なECCを用いると、不揮発性半導体メモリからのデータの読み出し速度が低下するが、本実施例では、MLCタイプの不揮発性半導体メモリからの読み出し速度は低くてもよいため、強力なECCを用いることが可能である。
 さらに、不揮発性半導体メモリ291~294の書き込み消耗率が高くなり、メインメモリとしての使用が困難になった場合には、この不揮発性半導体メモリ291~294を情報処理装置100から取り外し、CD-R用途など書き込みの頻度が低いアプリケーションに用いてもよい。
 図80は、本実施形態に係る不揮発性半導体メモリの動的切り替えの第2の例を示す模式図である。図80に示す不揮発性半導体メモリ295は、不揮発性半導体メモリ9,10に対応し、情報処理装置100のメインメモリとして用いられる。
 図80に示す例では、不揮発性半導体メモリ294はSLC領域として使用されるメモリ領域と、MLC領域として使用されるメモリ領域とから構成される。
 図80に示す例においても、図79に示す例で説明したように、消耗率情報に基づき、SLC領域をMLC領域に切り替える。これにより、図79に示す例と同様の効果が得られる。
 図79、図80では、SLC領域について、書き込み消耗率がSLC閾値を超えた場合に、当該SLC領域をMLC領域に切り替える処理について説明したが、MLC領域について、書き込み消耗率がMLC閾値を超えた場合に、当該MLC領域をSLC領域に切り替える処理についても同様である。
 通常、MLC領域は、SLC領域に比べ書き込み可能上限回数が低く設定される。このため、MLC領域としては書き込み消耗率がMLC閾値を超えた場合であっても、当該MLC領域をSLC領域に切り替えることにより、書き込み可能上限回数を高く設定することが可能である。例えば、MLC領域では、書き込み上限回数が1000回であり、SLC領域では、書き込み上限回数が10000回である場合、MLC領域では、消耗率が80%でMLC閾値に達する。このMLC領域を、SLC領域に切り替えることにより、例えば、SLC領域としては、さらに、2000回の書き込みが可能である。このSLC領域を、MLC領域のように、アクセス頻度が低いデータを書き込むメモリ領域として用いることにより、当該メモリ領域の寿命をさらに延ばすことが可能である。
 図81は、本実施の形態に係る切替制御部D36によるメモリ領域の切り替え制御の第1の例を示す状態遷移図である。なお、図81における各ステップOA1~OA5で説明されている処理は、SLC領域とMLC領域との切り替え、データの移動、情報の更新が正常に行われる範囲でその順序を変更してもよい。
 ステップOA1において、不揮発性半導体メモリのメモリ領域MAはSLC領域であり、不揮発性半導体メモリのメモリ領域MB,MC,MDはMLC領域である。メモリ領域MA,MB,MCには、それぞれ、データDa,Db,Dcが記憶されている。メモリ領域MDは退避用の領域である。
 このステップOA1において、メモリ領域MAの書き込み消耗率がSLC閾値を超えたとする。
 すると、ステップOA2において、切替制御部D36は、MLC領域のメモリ領域MB,MCのいずれかを選択し(図81の例では、メモリ領域MB)、選択されたメモリ領域MBのデータDbを退避用のメモリ領域MDに移動する。MLC領域のメモリ領域MB,MCのどちらを選択するかについては、データが記憶されていないMLC領域のメモリ領域を優先的に選択してもよく、カラーリングテーブル14に基づいて重要度の低いデータを記憶しているMLC領域のメモリ領域を優先的に選択してもよく、書き込み消耗率、読み出し消耗率、消去消耗率の低いMLC領域のメモリ領域を優先的に選択してもよい。この選択は各種に変更可能である。
 また、メモリ領域MBのデータDbの移動先(退避先)として、カラーリングテーブル14を参照し、データDbに含まれるデータのうちアクセス頻度の高いデータは、SLC領域に退避し、データDbに含まれるデータのうちアクセス頻度の低いデータは、MLC領域に退避するとしてもよい。
 次に、ステップOA3において、切替制御部D36は、選択されたMLCのメモリMBを、SLCに切り替え、メモリ領域MBのSLC/MLC領域情報を変更する。
 次に、ステップOA4において、切替制御部D36は、切り替え対象のSLCのメモリ領域MAのデータDaを、新たにSLCに切り替えられたメモリ領域MBに移動する。
 そして、ステップOA5おいて、切替制御部D36は、切り替え対象のSLCのメモリ領域MAをMLCに切り替え、メモリ領域MAのSLC/MLC領域情報を変更する。
 なお、上記の各ステップにおいて、データの移動に伴い、アドレス変換情報13を更新し、データの移動先の物理アドレスと、当該データの論理アドレスとを対応付ける。また、データの移動に伴い、データの書き込み、読み出し、消去が発生する場合には、メモリ使用情報11を更新する。
 図82は、本実施の形態に係る切替制御部D36によるメモリ領域の切り替え制御の第2の例を示す状態遷移図である。なお、この図82における各ステップOB1~OB5で説明されている処理は、SLCとMLCとの切り替え、データの移動、情報の更新が正常に行われる範囲でその順序を変更してもよい。
 ステップOB1において、不揮発性半導体メモリのメモリ領域MAはSLCであり、不揮発性半導体メモリのメモリ領域MB,MC,MDはMLCである。メモリ領域MA,MB,MCには、それぞれ、データDa,Db,Dcが記憶されている。メモリ領域MDは退避領域である。
 このステップOB1において、メモリ領域MAの書き込み消耗率がSLC閾値を超えたとする。
 すると、ステップOB2において、切替制御部D36は、メモリ領域MAのデータDaを退避用のメモリ領域MDに移動する。
 次に、ステップOB3において、切替制御部D36は、MLCのメモリ領域MB,MCのいずれかを選択し(図82の例では、メモリ領域MB)、選択されたメモリ領域MBのデータDbを退避用のメモリ領域MDに移動する。
 次に、ステップOB4において、切替制御部D36は、SLCのメモリ領域MAをMLCに切り替え、MLCのメモリ領域MBをSLCに切り替える。さらに、メモリ領域MA,MBのSLC/MLC領域情報を変更する。
 そして、ステップOA5において、切替制御部D36は、退避用のメモリ領域MDのデータDaをSLCに切り替えられたメモリ領域MBに移動し、退避用のメモリ領域MDのデータDbをMLCに切り替えられたメモリ領域MAに移動する。
 なお、上記の各ステップにおいて、データの移動に伴い、アドレス変換情報13を更新し、データの移動先の物理アドレスと、当該データの論理アドレスとを対応付ける。また、データの移動に伴い、データの書き込み、読み出し、消去が発生する場合には、メモリ使用情報11を更新する。
 上記のように、SLC領域をMLC領域に変更した後、第1の実施形態で示したように、カラーリングテーブル17を参照し、SLC領域に対しては、アクセス頻度の高いデータを書き込み(配置し)、MLC領域に対しては、アクセス頻度の低いデータを書き込む(配置する)。
 以上説明した本実施形態においては、不揮発性半導体メモリ9,10の使用状況に応じて、SLC領域をMLC領域に動的に切り替えることができ、また、MLC領域をSLC領域に動的に切り替えることができる。SLC領域をMLC領域に切り替えることにより、書き込み消耗率が高くなったSLC領域を、MLC領域として使用することができる。さらに、MLC領域をSLC領域に切り替えることにより、書き込み消耗率が低いMLC領域を、SLC領域として使用することができる。これにより、不揮発性半導体メモリ9,10の寿命を延ばすことができ、不揮発性半導体メモリ9、10を効率よく使用することが可能となる。
 (第9の実施形態)
 本実施形態は、上記第1の実施形態の変形例である。本実施形態では、プロセッサ3a,3b,3cで用いられるアドレス空間を拡張するメモリ管理装置について説明する。
 図83は、本実施形態に係るメモリ管理装置とアドレス空間との関係の一例を示すブロック図である。なお、この図83においては、プロセッサ3a,3b,3cのうちプロセッサ3bを代表として説明するが、他のプロセッサ3a,3cについても同様である。
 上記第1の実施形態で説明したメモリ管理装置1は、メモリの論理アドレス空間E32と、メモリの物理アドレス空間E33との間で、アドレス変換を行うととともに、データの書き込み先を決定する。
 ここで、メモリの物理アドレス空間E33は、混成メインメモリ2の物理アドレス空間を含む。メモリの物理アドレス空間E33は、さらに、他のメモリの物理アドレス空間を含むとしてもよい。
 メモリの論理アドレス空間E32は、プロセッサ3bに対するプロセッサ物理アドレス空間E34に対応する。プロセッサ物理アドレス空間E34上では、例えば、ファイルシステムE34a,E34bに基づくデータ管理が実現される。
 プロセッサ3bは、メモリ管理装置E35を具備する。なお、プロセッサ3bとメモリ管理装置E35とは、別構造としてもよい。
 プロセッサ3bは、複数のプロセスPc1~Pcnを実行している。この複数のプロセスPc1~Pcnでは、それぞれプロセッサ論理アドレス空間PLA1~PLAnが用いられる。例えば、プロセッサ3bがCPU(Central Processing Unit)の場合、プロセッサ論理アドレス空間PLA1~PLAnはCPU論理アドレス空間である。
 プロセッサ論理アドレス空間PLA1~PLAnは、それぞれメモリウィンドウMW1~MWnを持つ。メモリウィンドウMW1~MWnには、プロセッサ物理アドレス空間E34の一部のデータが写像(すなわち、コピー又はマッピング)される。
 これにより、プロセッサ3bは、複数のプロセスPc1~Pcnにおいて並列にメモリウィンドウMW1~MWnのデータをアクセスすることができ、複数のプロセスPc1~Pcnを高速に実行することができる。
 プロセッサ3bで使用可能なアドレス空間の大きさが制限されていても、プロセッサ3bは、メモリウィンドウMW1~MWnを用いることで、仮想的に広いアドレス空間を使用することができる。
 プロセスPc1~PcnにおいてメモリウィンドウMW1~MWnに写像されていないデータが必要になると、プロセッサ3bは、メモリウィンドウMW1~MWnのデータを更新し、これにより、新たに必要なデータがメモリウィンドウMW1~MWnに写像される。
 プロセッサ3bは、プロセッサ物理アドレス空間E34を、メモリウィンドウMW1~MWnを介してアクセス可能である。
 本実施形態に係るメモリ管理装置E35は、上記第1の実施形態で説明したメモリ管理装置1と同様の構成を持つ。本実施形態において、メモリ管理装置E35は、さらにプロセッサ3bのMMUとしての機能も実現するが、メモリ管理装置E35とプロセッサ3bのMMUとは別構造としてもよい。
 本実施形態に係るメモリ管理装置E35の最も大きな特徴は、プロセッサ論理アドレス空間PLA1~PLAnと、プロセッサ物理アドレス空間E34との間で、アドレス変換とデータの書き込み先の決定を行う点である。
 メモリ管理装置E35の情報記憶部17は、メモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38、アドレス変換情報E39を記憶する。
 メモリ管理装置E35の処理部15は、作業メモリ16を使用しながら、情報記憶部17のメモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38、アドレス変換情報E39を参照し、又は、更新し、上記第1の実施形態で説明した処理と同様の処理を実行する。
 メモリ使用情報E36は、例えば、プロセッサ物理アドレス空間E34の各アドレス領域の書き込み発生回数及び読み出し発生回数と、各ブロック領域の消去回数と、を含む。
 プロセッサ物理アドレス空間E34の各アドレス領域の使用状態を示すメモリ使用情報E36は、例えば、メモリ管理装置1で管理されているメモリ使用情報11とアドレス変換情報13とに基づいて算出可能である。
 メモリ固有情報12は、例えば、プロセッサ物理アドレス空間E34の各アドレス領域のメモリ種別(例えば、揮発性半導体メモリ8に対応するか、SLCの不揮発性半導体メモリ9に対応するか、MLCの不揮発性半導体メモリ10に対応するか、など)、揮発性半導体メモリ8のメモリサイズ、不揮発性半導体メモリ9,10のメモリサイズ、不揮発性半導体メモリ9,10のページサイズ及びブロックサイズ、各アドレス領域のアクセス可能上限回数(書き込み可能上限回数、読み出し可能上限回数、消去可能上限回数)、を含む。
 プロセッサ物理アドレス空間E34の各アドレス領域の固有情報を示すメモリ固有情報E37は、例えば、メモリ管理装置1で管理されているメモリ固有情報12とアドレス変換情報13とに基づいて算出可能である。
 カラーリングテーブルE38は、プロセッサ論理アドレスと、このプロセッサ論理アドレスの示すデータのカラーリング情報とを関係付けている。
 アドレス変換情報E39は、プロセッサ論理アドレスと、プロセッサ物理アドレスとを関連付けた情報である。アドレス変換情報E39は、メモリウィンドウMW1~MWnが更新されると、その更新後の状態を表すように更新される。
 処理部15は、上記第1の実施形態で説明したように、メモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38、アドレス変換情報E39に基づいて、プロセッサ論理アドレス空間PLA1~PLAnと、プロセッサ物理アドレス空間E34との間で、アドレス変換とデータの書き込み先の決定を行う。
 具体的には、例えば、処理部15は、データの書き込み頻度が0である読み出し専用のデータに対して、メモリウィンドウMW1~MWnからプロセッサ論理アドレス空間E34へのライトバック処理を実行しない制御を行う。
 例えば、処理部15は、データが読み出し及び書き込みの対象とする種別の場合であって、メモリウィンドウMW1~MWnの値とプロセッサ物理アドレス空間E34の値とが異なっている場合(ダーティデータの場合)、メモリウィンドウMW1~MWnの値をプロセッサ論理アドレス空間E34にライトバックする。
 例えば、処理部15は、データが一時的に使用される種別(temporary)の場合、このデータがダーティデータであっても、メモリウィンドウMW1~MWnからプロセッサ論理アドレス空間E34へのライトバックを行わない。
 例えば、処理部15は、上記第1の実施形態で説明したように、静的書き込み頻度SW_color、静的読み出し頻度SR_color、静的消去頻度SE_color、動的書き込み頻度DW_color、動的読み出し頻度DR_color、動的消去頻度DE_color、データ種別に基づいて、揮発性半導体メモリ8、不揮発性半導体メモリ9,10に対するデータの振り分けを行う。
 図84は、本実施形態に係るプロセッサ3bとメモリ管理装置E35による書き込み動作の一例を示すフローチャートである。この図84では、メモリウィンドウMW1~MWnに対するデータの書き込みが発生し、その後、メモリウィンドウMW1~MWnに割り当てられているプロセッサ物理アドレス領域の変更が発生した場合の処理の一例を示している。
 ステップEM1において、メモリ管理装置E35は、メモリウィンドウMW1~MWnに、プロセッサ物理アドレス領域のいずれかを初期的に割り当て、アドレス変換情報E39を生成する。この時点で、メモリウィンドウMW1~MWnに割り当てられるプロセッサ物理アドレス領域は、揮発性半導体メモリ8のメモリ領域、SLCの不揮発性半導体メモリ9のメモリ領域、MLCの不揮発性半導体メモリ10のいずれのメモリ領域に対応するものでもよい。
 ステップEM2において、プロセッサ3bは、メモリウィンドウMW1~MWnに、データを書き込む。同時に、メモリ管理装置E35は、書き込み対象データのカラーリング情報(例えば、書き込み回数DWC_color、動的書き込み頻度DW_colorなど)を更新する。
 ステップEM3において、プロセッサ3bがメモリウィンドウMW1~MWnのデータをプロセッサ物理アドレス空間E34に書き込む場合、メモリ管理装置E35は、メモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38、アドレス変換情報E39に基づいて、プロセッサ物理アドレス空間E34に対する書き込み対象データの書き込み先を決定し、また、メモリ管理装置E35は、メモリ使用情報E36、アドレス変換情報E39を更新する。さらに、メモリ管理装置E35は、決定されたプロセッサ物理アドレス領域に書き込み対象データを書き込む。
 例えば、メモリ管理装置E35は、書き込み対象データを、揮発性半導体メモリ8のメモリ領域、SLCの不揮発性半導体メモリ9のメモリ領域、MLCの不揮発性半導体メモリ10のメモリ領域のうち、どのメモリ領域に書き込むか決定する。
 ステップEM4において、プロセッサ3bは、メモリウィンドウMW1~MWnに割り当てられていない他のプロセッサ物理アドレス領域に対するデータのアクセスを発生させる。
 ステップEM5において、メモリ管理装置E35は、メモリウィンドウMW1~MWnに対するプロセッサ物理アドレス領域の割り当てを変更し、アドレス変換情報E39を更新する。なお。メモリウィンドウMW1~MWnに対するプロセッサ物理アドレス領域の割り当て変更は、例えばオペレーティングシステム27のシステムコールによって行われる。メモリ管理装置E35では、ベースアドレスの変更が行われる。実際には、プロセッサページテーブルのエントリが変更される。
 この場合、メモリ管理装置E35は、変更前のメモリウィンドウMW1~MWnのデータに対するライトバックを行い、このデータのカラーリング情報、メモリ使用情報E36を更新する。
 ステップEM6において、プロセッサ3bは、変更後のメモリウィンドウMW1~MWnに格納されているデータを使用する。
 本実施形態においては、プロセッサ3bのプロセッサ論理アドレス空間PLA1~PLAnが小さい場合であっても、論理アドレス空間PLA1~PLAnより大きいプロセッサ物理アドレス空間E34を使用することができ、プロセッサ3bのプロセッサ物理アドレス空間E34を拡張することができる。
 本実施形態においては、カラーリング情報を用いて、メモリウィンドウPLA1~PLAnと、プロセッサ物理アドレス空間E34との間でデータを効率的に写像させることができる。
 なお、本実施形態では、プロセッサ物理アドレス空間E34に対するデータの書き込み先の決定を、メモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38のカラーリング情報に基づいて行っている。しかしながら、例えば、メモリ使用情報E36、メモリ固有情報E37、カラーリングテーブルE38のうちの少なくとも一つを用いて、プロセッサ物理アドレス空間E34に対するデータの書き込み先の決定を行うとしてもよい。
 本実施形態においては、複数のプロセスPc1~Pcnごとに、プロセッサ論理アドレス空間PLA~PLnが形成され、それぞれにおいて、メモリウィンドウMW1~MWnが用いられる。これにより、並列に混成メインメモリ2などのメモリにアクセスするような動作が実行され、高速に複数のプロセスPc1~Pcnを実行することができる。
 (第10の実施形態)
 本実施形態は、上記第1の実施形態のメモリ管理装置1で使用されるカラーリング情報を共有化し、共有化されたカラーリング情報を情報処理装置100に送信する情報処理装置(サーバ装置)である。
 前述したように、情報処理装置100において、プロセッサ3a,3b,3cがプロセス6a,6b,6cを実行することより新たなデータが生成されると、オペレーティングシステム27は、新たに生成されたデータの種類に基づいて、静的カラー情報を生成し、当該新たに生成されたデータに静的カラー情報を付与する。メモリ管理装置1は、当該データを不揮発性半導体メモリ9,10に書き込む場合に、当該データの静的カラー情報を参照し、書き込み対象メモリ領域等を決定することで、不揮発性半導体メモリ9,10の寿命を延ばすことができる。このため、静的カラー情報を含むカラーリング情報を最適化することにより、不揮発性半導体メモリ9、10のさらなる長寿命化が図れる。
 本実施形態では、オペレーティングシステム27が静的カラー情報を生成する際に参照するプロファイル情報を共有化するシステムについて説明する。プロファイル情報を共有化することで、カラーリング情報を最適化が実現される。プロファイル情報については後述する。
 図85は、本実施形態に係る情報処理装置及びネットワークシステムの構成の一例を示す図である。
 ネットワークシステムK32は、情報処理装置K33、プロファイル生成端末K34、ユーザ端末100A,100BがネットワークK35を介して通信可能に接続されている構成を持つ。
 ネットワークK35は、例えば、インターネット、LAN(Local Area Network)などの各種通信媒体であり、無線であっても有線であってもよい。
 プロファイル生成端末K34の構成について説明する。プロファイル生成端末K34は、例えば、プログラム開発者又はメーカの端末である。プロファイル生成装置K34は、設定部K34a、記憶装置K34b、通信部K34cを具備する。
 設定部K34aは、例えば、プログラム開発者などの設定操作に基づいて、プロファイル情報K36を生成し、記憶装置K34bに格納する。
 記憶部K34bは、設定部K34aにより生成されたプロファイル情報K36を格納する。
 通信部K34cは、ネットワークK35を介して、記憶装置K34bに格納されているプロファイル情報K36を情報処理装置K33に送信する。
 ユーザ端末100A、100Bの構成について説明する。ユーザ端末100A、100Bは、上記第1の実施形態の情報処理装置100に相当し、メモリ管理装置1、混成メインメモリ2を具備する。ユーザ端末100A,100Bに備えられているメモリ管理装置1の情報記憶部17、混成メインメモリ2には、カラーリングテーブル17が格納されている。
 ユーザ端末100A,100Bは、自動で、又は、ユーザの指示にしたがって、プロファイル情報K37,K38を生成する。プロファイル情報の生成についての詳細は後述する。ユーザ端末100A,100Bは、ネットワークK35を介してプロファイル情報K37,K38を情報処理装置K33に送信する。
 さらに、ユーザ端末100A,100Bは、自動で、又は、ユーザの指示にしたがって、情報処理装置K33からプロファイル情報をダウンロード(受信)する。ユーザ端末100A,100Bのオペレーティングシステム27は、データに対するカラーリング情報を生成する際に、ダウンロードされたプロファイル情報を参照する。ユーザ端末100A,100Bのオペレーティングシステム27は、プロファイル情報に基づいて、データに対する静的カラー情報を生成し、カラーリングテーブル14に格納する。
 情報処理装置K33の構成について説明する。情報処理装置K33は、通信部K33a、プロファイル情報管理部K33b、記憶装置K33cを具備する。プロファイル情報管理部K33は、ハードウェアにより実現されてもよいし、ソフトウェアとプロセッサなどのハードウェアとの協働により実現されてもよい。
 通信部K33aは、プロファイル生成端末K34、ユーザ端末100A,100Bとの間でプロファイル情報K36~K38の送受信を行う。
 プロファイル情報管理部K33bは、通信部K33aを介して受信されたプロファイル情報を、記憶装置K33cに格納する。また、プロファイル情報管理部K33bは、通信部K33aを介してユーザ端末100A,100B、プロファイル生成端末K34にプロファイル情報を送信する。
 記憶装置K33cは、プロファイル情報を格納する。さらに、記憶装置K33cは、サービスデータK40を格納する。サービスデータK40については後述する。
 次に、プロファイル情報について説明する。前述のように、プロファイル情報は、ユーザ端末100A,100Bにおけるオペレーティングシステム27が、データに対して静的カラー情報を付与(生成)する際に参照する情報である。
 プロファイル情報は、例えば、データ識別情報、カラーリング情報、生成者識別情報を関連付けた情報である。
 データ識別情報は、例えば、上記第1の実施形態の図9及び図10のデータ形式に相当する。データ識別情報としては、ファイルの名称、ファイルの拡張子などのようなファイルの識別情報、ファイルシステム上でデータが配置される位置(例えばディレクトリ)の情報、などが用いられる。
 カラーリング情報は、上述した静的カラー情報を含む。静的カラー情報は、データ識別情報毎に設定される値であり、例えば、上記第1の実施形態の図9及び図10のように、静的書き込み頻度SW_color、静的読み出し頻度SR_color、データ寿命SL_colorを含む。
 生成者識別情報は、プロファイル情報の生成者を識別するための情報である。生成者識別情報は、付加的な情報であり、必要に応じて付加される。
 次に、プロフィル情報の生成について説明する。
 ユーザ端末100A,100Bは、図9、図10に示す、データ識別情報と当該データ識別情報に対するカラーリング情報を保有している。ユーザ端末100A,100Bは、保有されているデータ識別情報とカラーリング情報とに基づいてプロファイル情報を生成する。
 また、ユーザ端末100A,100Bは、メモリ管理装置1によって管理されているカラーリングテーブル14からプロファイル情報を生成してもよい。前述のように、カラーリングテーブル14は、データを指定する論理アドレスに基づいて生成されたインデックスと、当該データのカラーリング情報がエントリ単位で管理されている。ユーザ端末100A,100Bは、このインデックスから、論理アドレスにより指定されるデータを特定し、当該データのデータ識別情報を抽出する。さらに、ユーザ端末100A,100Bは、当該データの静的カラー情報と、動的カラー情報(例えば動的書き込み頻度DW_color、動的読み出し頻度DR_color)とを算出する。さらに、必要であれば、ユーザ端末100A,100Bは、動的カラー情報を、静的カラー情報と同様のデータ形式に変更する。前述のように、静的カラー情報は、SW_color=5のようなデータ形式であるのに対し、動的カラー情報は、データに対する実際のアクセス頻度であり、例えばアクセス頻度の時間平均値などが用いられることも想定される。この動的カラー情報のアクセス頻度又はアクセス頻度の時間平均値の大きさに応じて、DR_color=5のようなデータ形式への変換が実行される。これにより、データ識別情報と、当該データ識別情報に対する静的カラー情報、動的カラー情報が決定される。ユーザ端末100A,100Bは、この静的カラー情報、動的カラー情報を含むカラーリング情報と、データ識別情報と、生成者識別情報に基づいて、プロファイ情報を生成する。
 このように、動的カラー情報を含むカラーリング情報により、プロファイル情報を生成することで、データに対する実際のアクセス頻度をプロファイル情報としてユーザ端末100A,100Bに提供することが可能となる。これにより、オペレーティングシステム27がデータに対して付与するカラーリング情報の最適化を図ることが可能となる。
 また、例えば、新しいアプリケーションを開発したソフトウェアメーカは、プロファイル生成端末K34を用いて、新しいアプリケーション専用のファイルに関するプロファイル情報K36を情報処理装置K33に登録してもよい。
 次に、サービスデータK40について説明する。サービスデータK40は、記憶装置K33cに記憶されている各種のプロファイル情報K36~K38の説明データ、各種の広告データを含む。
 サービスデータK40は、情報処理装置K33からユーザ端末100A,100Bに送信される。例えば、ユーザ端末100A,100Bは、ブラウザを用いて、サービスデータK40を表示する。
 例えば、記憶装置K33cに記憶されている複数のプロファイル情報に同一のデータ識別情報が含まれている場合、ユーザは、サービスデータK40の説明データを参照し、ダウンロードするプロファイル情報を決定することができる。
 例えば、サービスデータK40に、プロファイル情報の広告データ、情報機器の広告データ、不揮発性半導体メモリの広告データなどを含めておくことで、プロファイル情報のダウンロード、情報機器の買い替え、不揮発性半導体メモリの買い替えなどを検討しているユーザに対して、特定の製品を推薦することができる。
 また、例えば、プロファイル情報管理部K33bは、記憶装置K33cに記憶されているプロファイル情報K36~K38に対して統計的手法を適用し、この結果得られたプロファイル情報をユーザ端末100A,100Bに送信するとしてもよい。統計的手法として、例えば同じデータ識別情報と関連付けられているカラーリング情報については、平均値を算出する、中央値を求める、などの手法を用いることができる。例えば、プロファイル情報管理部K33bは、同じデータ識別情報に関連付けられている複数のカラーリング情報に対する静的書き込み頻度SW_colorの平均値又は中央値、静的読み出し頻度SR_colorの平均値又は中央値、データ寿命SL_colorの平均値又は中央値、動的書き込み頻度DW_colorの平均値又は中央値、動的読み出し頻度DR_colorの平均値又は中央値、を含むプロファイル情報を生成し、この生成されたプロファイル情報をユーザ端末100A,100Bに送信する。
 プロファイル情報管理部K33bは、ユーザ端末100A,100Bのブラウザによってプロファイル情報K36~K38がダウンロードされた回数をカウントする。プロファイル情報管理部K33bは、各プロファイル情報K36~K38のダウンロード回数に、プロファイル情報K36~K38の1回当りのダウンロード料金を掛け算し、各プロファイル情報K36~K38の生成者に対する報酬料金を算出する。そして、プロファイル情報管理部K33bは、各プロファイル情報K36~K38の生成者識別情報に対して、報酬料金を割り当てた報酬情報を生成し、報酬情報を記憶装置K33cに記憶する。
 さらに、プロファイル情報管理部K33bは、ユーザ端末100A,100Bからのダウンロード要求に応じて、ダウンロード要求元を特定する識別情報(例えばユーザIDなど)に対して、ダウンロードされたプロファイル情報の1回あたりの使用料金を割り当てた使用料金情報を生成し、使用料金情報を記憶装置K33cに記憶する。
 図86は、本実施形態に係るプロファイル情報管理部K33bの処理の一例を示すフローチャートである。
 ステップC1において、プロファイル情報管理部K33bは、プロファイル生成端末K34、ユーザ端末100A,100Bのいずれかから、プロファイル情報K36~K38のいずれかを受信したか否か判断する。
 プロファイル情報K36~K38が受信されていない場合、処理は、ステップC3に移る。
 プロファイル情報K36~K38のいずれかが受信されている場合、ステップC2において、プロファイル情報管理部K33bは、受信されたプロファイル情報を記憶装置K33cに記憶する。
 ステップC3において、プロファイル情報管理部K33bは、ユーザ端末100A,100Bのいずれかからダウンロード要求を受信したか否か判断する。
 ダウンロード要求が受信されていない場合、処理はステップC6に移る。
 ダウンロード要求が受信された場合、ステップC4において、プロファイル情報管理部K33bは、受信されたダウンロード要求に対応するプロファイル情報を記憶装置K33cから読み出す。
 ステップC5において、プロファイル情報管理部K33bは、読み出されたプロファイル情報を、ダウンロード要求の発信元のユーザ端末に送信する。
 ステップC6において、プロファイル情報管理部K33bは、処理終了か否か判断する。処理終了でない場合には、ステップC1に処理は戻る。
 図87は、本実施形態に係るユーザ端末100Aによるプロファイル情報K37のアップロード処理の一例を示すフローチャートである。なお、ユーザ端末100Bによるアップロード処理についてもこの図87とほぼ同様である。
 ステップUL1において、ユーザ端末100Aは、例えば、自動で、又は、ユーザの指示にしたがって、データに対するデータ識別情報、カラーリングテーブル14においてこのデータに対応付けられているカラーリング情報、生成者識別情報を組み合わせて、プロファイル情報K37を生成する。
 ステップUL2において、ユーザ端末100Aは、生成されたプロファイル情報K37を、ネットワークK35を介して、情報処理装置K33に送信する。
 図88は、本実施形態に係るユーザ端末100Aによるプロファイル情報のダウンロード処理の一例を示すフローチャートである。なお、ユーザ端末100Bのダウンロード処理についてもこの図88とほぼ同様であるため、説明を省略する。
 ステップDL1において、ユーザ端末100Aは、例えば、自動で、又は、ユーザの指示にしたがって、データ識別情報を含むダウンロード要求を、ネットワークK35を介して、情報処理装置K33に送信する。
 ステップDL2において、ユーザ端末100Aは、ダウンロード要求に対する返信として、情報処理装置K33からネットワークK35を介して、プロファイル情報を受信する。
 ステップDL3において、ユーザ端末100Aのオペレーティングシステム27は、カラーリングテーブル14において、受信されたプロファイル情報のデータ識別情報に対応するデータに対して、受信されたプロファイル情報に含まれている静的カラー情報を格納する。
 ステップDL4において、ユーザ端末100Aのメモリ管理装置1は、受信されたプロファイル情報に動的カラー情報が含まれているか否か判断する。
 受信されたプロファイル情報に動的カラー情報が含まれていない場合、処理は終了する。
 受信されたプロファイル情報に動的カラー情報が含まれている場合、ステップDL5において、メモリ管理装置1は、カラーリングテーブル14において、受信されたプロファイル情報のデータ識別情報に対応するデータに対して、受信されたプロファイル情報に含まれている動的カラー情報を格納する。
 以上説明した本実施形態においては、メモリ管理装置1で使用されるカラーリング情報がメーカ又はユーザなどの多数の者によって生成され、生成されたカラーリング情報が共有される。
 本実施形態では、カラーリング情報が閲覧される回数又はダウンロードされる回数に応じて、カラーリング情報の生成者に料金を支払うことができる。
 本実施形態において、情報処理装置K33の運営者は、多数のカラーリング情報を収集することができ、カラーリング情報に関する各種サービスを迅速に行うことができる。
 本実施形態に係る情報処理装置K33を用いることにより、カラーリング情報を共有化することが可能であり、メモリ管理装置1及び混成メインメモリ2の開発を迅速化することができ、メモリ管理装置1及び混成メインメモリ2を普及させることができる。
 (第11の実施形態)
 本実施形態は、上記第1の実施形態の変形例である。本実施形態においては、ネットワークを介して接続されているメモリをアクセスするメモリ管理装置について説明する。
 図89は、本実施形態に係るネットワークシステムの一例を示すブロック図である。
 ネットワークシステムN37は、情報処理装置N37Aと情報処理装置N37Bとを具備する。情報処理装置N37Aと情報処理装置N37Bとは、ネットワークN38経由で接続されている。情報処理装置N37Aと情報処理装置N37Bとは、同等の機能を持つため、以下においては情報処理装置N37Aについて詳細に説明する。なお、ネットワークシステムN37は、3台以上の情報処理装置を備えるとしてもよい。
 情報処理装置N37Aは、プロセッサ3A、メモリ管理装置N32A、揮発性半導体メモリ8A、不揮発性半導体メモリ9A、ネットワークインタフェース装置N39Aを具備する。
 プロセッサ3Aは、メモリ管理装置N32Aを介して、揮発性半導体メモリ8A、不揮発性半導体メモリ9A、ネットワークインタフェース装置N39Aと接続されている。
 このプロセッサ3Aは、内部にキャッシュメモリを備えるとしてもよいが、図89では説明を省略する。情報処理装置N37Aは、複数のプロセッサ3Aを備えるとしてもよい。
 揮発性半導体メモリ8Aは、上記第1の実施形態の揮発性半導体メモリ8と同様である。不揮発性半導体メモリ9Aは、上記第1の実施形態の不揮発性半導体メモリ9又は不揮発性半導体メモリ10と同様である。
 本実施の形態において、揮発性半導体メモリ8Aと不揮発性半導体メモリ9Aとは、情報処理装置N37Aのメインメモリとして用いられる。しかしながら、揮発性半導体メモリ8Aと不揮発性半導体メモリ9Aは、他の情報処理装置N37Bのデータのうち、情報処理装置N37Aにとってアクセス頻度の高いデータ又は重要度の高いデータを記憶することにより、情報処理装置N37Aにおけるキャッシュメモリとしての機能を果たす。この場合、揮発性半導体メモリ8Aは情報処理装置N37Aにおける1次キャッシュメモリとして使用され、不揮発性半導体メモリ9Aは情報処理装置N37Aにおける2次キャッシュメモリとして使用される。
 ネットワークインタフェース装置N39Aは、ネットワークN38経由で、他の情報処理装置N37Bのネットワークインタフェース装置N39Aと、ネットワーク論理アドレス又はデータの送受信を行う。
 本実施形態に係るメモリ管理装置N32Aについて説明する。図90は、本実施形態に係るメモリ管理装置N32Aの構成の一例を示すブロック図である。
 メモリ管理装置N32Aの処理部N33Aは、アドレス管理部18、読み出し管理部19、書き込み管理部20、カラーリング情報管理部21、メモリ使用情報管理部22、再配置部23に加えて、ネットワークアドレス変換部N34と、通信部N35とを具備する。
 ネットワークアドレス変換部N34は、プロセッサ3Aで用いられている短いアドレス長の論理アドレス(以下、「プロセッサ論理アドレス」という)を、ネットワークで接続されている複数の情報処理装置で用いられる長いアドレス長の論理アドレス(以下、「ネットワーク論理アドレス」という)に変換する。例えば、このアドレスの変換では、ハッシュ関数が用いられる。なお、プロセッサ論理アドレスは、レジスタに格納されるポインタである。
 作業メモリ16には、アドレス長変換テーブルATが記憶されている。ネットワークアドレス変換部N34は、アドレス長変換テーブルATを参照し、プロセッサ論理アドレスをネットワーク論理アドレスに変換する。
 なお、アドレス長変換テーブルATは、作業メモリ16に記憶されているが、情報記憶部17に記憶されるとしてもよい。
 通信部N35は、ネットワーク論理アドレス及びネットワーク論理アドレスで指定されるデータを、ネットワークインタフェース装置N39Aを用いて、ネットワークN38経由で送信及び受信する。
 本実施の形態において、メモリ使用情報11は、ネットワークシステムN37全体(この図90の例では、メモリ使用情報11は、揮発性半導体メモリ8A、不揮発性半導体メモリ9A、揮発性半導体メモリ8B、不揮発性半導体メモリ9B)のメモリ領域の使用状態を表す。
 同様に、メモリ固有情報12は、ネットワークシステムN37全体のメモリ領域の固有情報を表す。
 アドレス変換情報13は、ネットワークシステムN37全体で使用されているネットワーク論理アドレスと物理アドレスとの関係を示す。
 カラーリングテーブル14は、ネットワークシステムN37全体における各データのカラーリング情報を含む。
 ネットワークシステムN37においては、全てのデータに対してユニークなアドレスが付される。ネットワークシステムN37全体で共通のネットワーク論理アドレス空間を用いる場合、必要となるアドレスのビット数は、例えば、128ビットなどのように大きくなる。しかしながら、このネットワークシステムN37において、プロセッサ3A,3Bのレジスタは、32ビット又は64ビットであるとする。この場合、レジスタのビット数のプロセッサ論理アドレスを、ネットワーク論理アドレスのビット数に変換することが必要である。メモリ管理装置N32A,N32Bに備えられているネットワークアドレス変換部N34は、この変換処理を実行する。
 ネットワークシステムN37によるネットワークN38経由でのデータ読み出しについて説明する。
 メモリ管理装置N32Aは、プロセッサ3Aからプロセッサ論理アドレスを受け、このプロセッサ論理アドレスをネットワーク論理アドレスに変換する。そして、メモリ管理装置N32Aは、ネットワーク論理アドレスに対応するデータが、情報処理装置N37Aのメモリ(この図90では揮発性半導体メモリ8Aと不揮発性半導体メモリ9A)のいずれにも記憶されていない場合に、ネットワークインタフェース装置N39A及びネットワークN38経由で、他の情報処理装置N37Bにネットワーク論理アドレスを送る。
 情報処理装置N37Bのメモリ管理装置N32Bは、情報処理装置N37AからネットワークN38及びネットワークインタフェース装置N39B経由で、ネットワーク論理アドレスに対応するデータを受ける。
 メモリ管理装置N32Bは、受信されたネットワーク論理アドレスが情報処理装置N37Bのメモリ(この図90では揮発性半導体メモリ8B又は不揮発性半導体メモリ9B)に記憶されている場合に、アドレス変換情報13に基づいて、ネットワーク論理アドレスを物理アドレスに変換し、データを読み出す。
 メモリ管理装置N32Bは、読み出されたデータを、ネットワークインタフェース装置N39A、ネットワークN38経由で、情報処理装置N37Aに送る。
 情報処理装置N37Aのメモリ管理装置N32Aは、情報処理装置N37BからネットワークN38及びネットワークインタフェース装置N39A経由で、読み出されたデータを受ける。
 メモリ管理装置N32Aは、読み出されたデータを、プロセッサ3Aに返す。
 また、メモリ管理装置N32Aは、カラーリングテーブル14を参照し、読み出されたデータのアクセス頻度又は重要度が所定値以上の場合に、このデータを揮発性半導体メモリ8A又は不揮発性半導体メモリ9Aに書き込み、アドレス変換情報13を更新する。この書き込みは、上記第1の実施形態と同様の手法により、書き込み先を決定する。
 ネットワークシステムN37によるネットワークN38経由でのデータ書き込みについて説明する。
 メモリ管理装置N32Aは、プロセッサ3Aからプロセッサ論理アドレスと書き込み対象データを受け、このプロセッサ論理アドレスをネットワーク論理アドレスに変換する。そして、メモリ管理装置N32Aは、ネットワーク論理アドレスが他の情報処理装置N37Bを示す場合に、ネットワークインタフェース装置N39A及びネットワークN38経由で、他の情報処理装置N37Bにネットワーク論理アドレス及び書き込み対象データを送る。
 情報処理装置N37Bのメモリ管理装置N32Bは、情報処理装置N37AからネットワークN38及びネットワークインタフェース装置N39B経由で、ネットワーク論理アドレス及び書き込み対象データを受ける。
 メモリ管理装置N32Bは、アドレス変換情報13に基づいて、ネットワーク論理アドレスを物理アドレスに変換し、物理アドレスの示すメモリ領域に書き込み対象データを書き込む。
 上記図89に示すネットワークシステムN37におけるデータD1のコピーについて説明する。
 情報処理装置N37Aのメモリ管理装置N32Aは、揮発性半導体メモリ8A、不揮発性半導体メモリ9A、さらに、揮発性半導体メモリ8B、不揮発性半導体メモリ9Bに対するメモリ使用情報11及びメモリ固有情報12を管理する。
 さらに、メモリ管理装置N32Aは、揮発性半導体メモリ8A、不揮発性半導体メモリ9A、さらに、揮発性半導体メモリ8B、不揮発性半導体メモリ9Bに格納されている各データのカラーリング情報を、カラーリングテーブル14で管理する。
 メモリ管理装置N32Aは、メモリ使用情報11、メモリ固有情報12、カラーリングテーブル14に基づいて、揮発性半導体メモリ8A及び不揮発性半導体メモリ9Aに加えて、ネットワークN38経由で接続されている揮発性半導体メモリ8B及び不揮発性半導体メモリ9Bに対しても、不揮発性半導体メモリ9A,9Bの寿命を延ばすように、書き込み先の決定を行う。
 ここで、情報処理装置N37Aのメモリ管理装置N32Aは、情報処理装置N37Aから他の情報処理装置N37Bに対するアクセスが発生する頻度の高い本体のデータD1を、情報処理装置N37Aの揮発性半導体メモリ8A又は不揮発性半導体メモリ9Aにコピーし、データD1cとして記憶する。例えば、メモリ管理装置N32Aは、カラーリングテーブル14を参照し、他の情報処理装置N37Bに記憶されておりアクセス頻度が所定レベル以上のデータD1を、情報処理装置N37Aの揮発性半導体メモリ8A又は不揮発性半導体メモリ9AにコピーされたデータD1cとして記憶する。
 他の情報処理装置N37BにおけるデータD1に対するアクセス頻度よりも、情報処理装置N37AにコピーされたデータD1cに対するアクセス頻度の方が所定レベル以上に大きい場合、メモリ管理装置N32A,N32Bは、情報処理装置N37AにコピーされたデータD1cを本体として管理する。
 さらに、情報処理装置N37Aにおいて、コピーされたデータD1cへの書き込みが発生した場合、メモリ管理装置N32A,N32Bは、情報処理装置N37AのデータD1cを本体として管理する。
 このように、情報処理装置N37AにコピーされたデータD1cが本体として管理される場合、情報処理装置N37BのデータD1はそのまま維持され、データD1,D1cとで相互に異なるアドレス(ID)を割り当てるとしてよい。別のアドレスは、原のデータD1に対して割り当てられてもよく、コピーされたデータD1cに対して割り当てられてもよい。
 また、データD1cが本体として管理される場合、原のデータD1は消去されてもよい。
 メモリ管理装置N32A,N32Bとでは、データD1,D1cの衝突が発生しないように、例えば、キャッシュとして使用されているデータD1cに対する書き込みが発生した場合には、本体のデータD1を更新するなどの管理を行う。
 図91は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第1の関係を示すブロック図である。
 例えば、プロセッサアドレスPr1の上位アドレスP1uは32ビットであり、下位アドレスP1dは32ビットである。
 例えば、ネットワーク論理アドレスN1の上位アドレスN1uと中位アドレスN1mとの組み合わせは128ビットであり、下位アドレスN1dは32ビットである。
 ネットワーク論理アドレスN1の上位アドレスN1uは例えば事業者を示し、ネットワーク論理アドレスN1の中位アドレスN1mは例えばプロセッサ固有の値であるとする。ネットワーク論理アドレスN1の上位アドレスN1uと中位アドレスN1mは、ネットワークに関係するアドレスであり、例えば、IPアドレス、IPv4などとする。
 ネットワーク論理アドレスN1の上位アドレスN1uと中位アドレスN1mとの組み合わせは、ハッシュ関数N40によって変換される。この変換によって、ネットワーク論理アドレスN1の上位アドレスN1uと中位アドレスN1mよりもビット数の少ない、プロセッサ論理アドレスPr1の上位アドレスP1uが求められる。このプロセッサ論理アドレスPr1の上位アドレスP1uが、プロセッサ論理アドレスPr1からネットワーク論理アドレスN1への変換におけるキーとして用いられる。
 ネットワーク論理アドレスN1uの下位アドレスN1dは、そのままプロセッサ論理アドレスPr1の下位アドレスP1dとして用いられる。
 アドレス長変換テーブルAT1におけるプロセッサ論理アドレスPr1の上位アドレスP1uの示す位置に、ネットワーク論理アドレスN1の上位アドレスN1uと中位アドレスN1mとが格納される。
 プロセッサ論理アドレスPr1をネットワーク論理アドレスN1に変換する場合、ネットワークアドレス変換部N34は、アドレス長変換テーブルAT1におけるプロセッサ論理アドレスPr1の上位アドレスP1uの示す位置を参照し、この位置に格納されているネットワーク論理アドレスN1の上位アドレスN1u及び中位アドレスN1mを求める。
 そして、ネットワークアドレス変換部N34は、求められたネットワーク論理アドレスN1の上位アドレスN1u及び中位アドレスN1mに、プロセッサ論理アドレスPr1の下位アドレスP1dを組み合わせて、ネットワーク論理アドレスN1を求める。
 アドレス長変換テーブルAT1には、各エントリに対して、有効であるか否かを示すアドレス長変換フラグが付されている。
 ネットワークアドレス変換部N34は、アドレス長変換テーブルAT1に対するエントリの登録時に、登録先のアドレス長変換フラグを参照する。ネットワークアドレス変換部N34は、アドレス長変換フラグが無効の場合には、そのままエントリへの登録を行う。ネットワークアドレス変換部N34は、アドレス長変換フラグが有効の場合には、例外処理を実行する。これにより、エントリへの重複登録を防止することができる。
 図92は、本実施の形態に係るプロセッサ論理アドレスPr2とネットワーク論理アドレスN2との第2の関係を示すブロック図である。
 ネットワーク論理アドレスN2の中位アドレスN2mは、プロセッサ論理アドレスPr2の上位アドレスP2uに用いられる。このプロセッサ論理アドレスPr2の上位アドレスP2uが、プロセッサ論理アドレスPr2からネットワーク論理アドレスN2への変換におけるキーとして用いられる。
 ネットワーク論理アドレスN2の下位アドレスN2dは、そのままプロセッサ論理アドレスPr2の下位アドレスP2dとして用いられる。
 アドレス長変換テーブルAT2におけるプロセッサ論理アドレスPr2の上位アドレスP2uの示す位置に、ネットワーク論理アドレスN2の上位アドレスN2uと中位アドレスN2mとが格納される。
 プロセッサ論理アドレスPr2をネットワーク論理アドレスN2に変換する場合、ネットワークアドレス変換部N34は、アドレス長変換テーブルAT2におけるプロセッサ論理アドレスPr2の上位アドレスP2uの示す位置を参照し、この位置に格納されているネットワーク論理アドレスN2の上位アドレスN2u及び中位アドレスN2mを求める。
 そして、ネットワークアドレス変換部N34は、求められたネットワーク論理アドレスN2の上位アドレスN2u及び中位アドレスN2mに、プロセッサ論理アドレスPr2の下位アドレスP2dを組み合わせて、ネットワーク論理アドレスN2を求める。
 図93は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第3の関係を示すブロック図である。
 ネットワーク論理アドレスN3の中位アドレスN3m及び下位アドレスN3dは、プロセッサ論理アドレスPr3の上位アドレスP3u及び下位アドレスP3dに用いられる。プロセッサ論理アドレスPr3の上位アドレスP3uは、プロセッサ論理アドレスPr3からネットワーク論理アドレスN3への変換におけるキーとして用いられる。
 アドレス長変換テーブルAT3におけるプロセッサ論理アドレスPr3の上位アドレスP3uの示す位置に、ネットワーク論理アドレスN3の上位アドレスN3uが格納される。
 プロセッサ論理アドレスPr3をネットワーク論理アドレスN3に変換する場合、ネットワークアドレス変換部N34は、アドレス長変換テーブルAT3におけるプロセッサ論理アドレスPr3の上位アドレスP3uの示す位置を参照し、この位置に格納されているネットワーク論理アドレスN3の上位アドレスN3uを求める。
 そして、ネットワークアドレス変換部N34は、求められたネットワーク論理アドレスN3の上位アドレスN3uに、プロセッサ論理アドレスPr3の上位アドレスP3uと下位アドレスP3dとを組み合わせて、ネットワーク論理アドレスN3を求める。
 図94は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第4の関係を示すブロック図である。
 ネットワークアドレス変換部N34は、ネットワーク論理アドレスN4の上位アドレスN4uと中位アドレスN4mとの組み合わせから、nビット間隔で値を抽出し、この抽出された値をプロセッサ論理アドレスPr4の上位アドレスP4uとする。この変換によって、ネットワーク論理アドレスN1の上位アドレスN4uと中位アドレスN4mよりもビット数の少ない、プロセッサ論理アドレスPr4の上位アドレスP4uが求められる。このプロセッサ論理アドレスPr4の上位アドレスP4uは、プロセッサ論理アドレスPr4からネットワーク論理アドレスN4への変換におけるキーとして用いられる。
 ネットワーク論理アドレスN4とプロセッサ論理アドレスPr4との他の関係、及び、プロセッサ論理アドレスPr4からネットワーク論理アドレスN4への変換は、上記図91の場合と同様であるため、説明を省略する。
 図95は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスとの第5の関係を示すブロック図である。
 ネットワークアドレス変換部N34は、ネットワーク論理アドレスN5の上位アドレスN5uと中位アドレスN5mとの組み合わせを、値P(例えば素数)で割った余りの値をプロセッサ論理アドレスPr5の上位アドレスP5uとする。この変換によって、ネットワーク論理アドレスN5の上位アドレスN5uと中位アドレスN5mよりもビット数の少ない、プロセッサ論理アドレスPr5の上位アドレスP5uが求められる。このプロセッサ論理アドレスPr5の上位アドレスP5uは、プロセッサ論理アドレスPr5からネットワーク論理アドレスN5への変換におけるキーとして用いられる。
 ネットワーク論理アドレスN5とプロセッサ論理アドレスPr5との他の関係、及び、プロセッサ論理アドレスPr5からネットワーク論理アドレスN5への変換は、上記図91の場合と同様であるため、説明を省略する。
 なお、ネットワークアドレス変換部N34は、ハッシュ関数N40の代わりに変換テーブルを用いて、ネットワーク論理アドレスN1~N5の一部をプロセッサ論理アドレスPr1~Pr5の一部に変換し、このプロセッサ論理アドレスPr1~Pr5の一部をアドレス長の変換のキーとして用いてもよい。
 また、ネットワークアドレス変換部N34は、ネットワーク論理アドレスN1~N5の一部又は全部を登録するテーブルを作成し、このテーブルのアドレスを、プロセッサ論理アドレスPr1~Pr5からネットワーク論理アドレスN1~N5への変換で用いるキーとしてもよい。この変換方法においては、複数の情報処理装置N37A,N37Bのそれぞれがテーブルを管理してもよい。より好ましくは、ネットワークN38に接続される複数の情報処理装置N37A,N37Bの間でテーブルを共有させ、情報処理装置N37A,N37Bのそれぞれは、このテーブルのコピーをキャッシュメモリなどにローカルに格納するとしてもよい。
 上記のアドレスの変換においては、ネットワーク論理アドレスN1~N5の下位アドレスN1d~N5dとプロセッサ論理アドレスPr1~Pr5の下位アドレスP1d~P5dは変換されることなく使用されているが、このネットワーク論理アドレスN1~N5の下位アドレスN1d~N5dとプロセッサ論理アドレスPr1~Pr5の下位アドレスP1d~P5dを変換させるとしてもよい。
 図96は、本実施の形態に係るネットワークシステムN37の仮想アドレス空間の一例を示すブロック図である。
 本実施の形態においては、ネットワークシステムN37の全てのデータにユニークなネットワーク論理アドレスが割り当てられるため、各情報処理装置N37A,N37Bに共通の仮想アドレス空間N41を形成することができる。
 図97は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第1の例を示すブロック図である。
 プロセッサ論理アドレスN42は、変換キーと、ファイルアドレス及びオフセットとを含む。
 ネットワークアドレス変換部N34は、プロセッサ論理アドレスN42をネットワーク論理アドレスN43に変換する。
 ネットワーク論理アドレスN43は、プロセッサ識別情報(例えば、事業者及び情報処理装置の識別情報)と、ファイルアドレス及びオフセットとを含む。
 メモリ管理装置N32Aは、ネットワーク論理アドレスN43をネットワークN38経由でメモリ管理装置N32Bに送信する。すると、メモリ管理装置N32Bは、このネットワーク論理アドレスN43のファイルアドレスとオフセットとによって指定されるデータを読み出し、メモリ管理装置N32Aに返す。
 図98は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第2の例を示すブロック図である。
 プロセッサ論理アドレスN44は、変換キーとオフセットとを含む。
 ネットワークアドレス変換部N34は、プロセッサ論理アドレスN44をネットワーク論理アドレスN45に変換する。
 ネットワーク論理アドレスN45は、プロセッサ識別情報及びファイルアドレスと、オフセットとを含む。
 メモリ管理装置N32Aは、メモリ管理装置N32Aは、ネットワーク論理アドレスN45をネットワークN38経由でメモリ管理装置N32Bに送信する。すると、メモリ管理装置N32Bは、このネットワーク論理アドレスN45のファイルアドレスとオフセットとによって指定されるデータを読み出し、メモリ管理装置N32Aに返す。
 図99は、本実施の形態に係るプロセッサ論理アドレスとネットワーク論理アドレスの構成の第3の例を示すブロック図である。
 プロセッサ論理アドレスN46は、変換キーと、ファイルアドレスとを含む。
 ネットワークアドレス変換部N34は、プロセッサ論理アドレスN46をネットワーク論理アドレスN47に変換する。
 ネットワーク論理アドレスN47は、プロセッサ識別情報とファイルアドレスとを含む。
 メモリ管理装置N32Aは、ネットワーク論理アドレスN47をネットワークN38経由でメモリ管理装置N32Bに送信する。すると、メモリ管理装置N32Bは、このネットワーク論理アドレスN47のファイルアドレスとによって指定されるファイルデータを読み出し、メモリ管理装置N32Aに返す。
 上記のようなアドレス変換の技術的意義について以下に説明する。
 例えば、8ビットCPU(Central Processing Unit)は、プロセッサ3Aとして一般的に使用されている。この8ビットCPUのビット数は、8ビットのレジスタを備える。また、一般的に使用されている8ビットCPUにおいて、アドレスのビット数は16ビットである。
 例えば、16ビットCPUは、16ビットのレジスタを備える。一般的に使用されている16ビットCPUにおいて、アドレスのビット数は20ビットである。
 ゼネラルレジスタには、数値とアドレスのどちらも格納される。したがって、数値のビット数とアドレスのビット数とは一致していることが望ましい。しかしながら、上述したように、レジスタのビット数とアドレスのビット数とは一致していない場合がある。
 現状においては、64ビットCPUが普及しつつある。64ビットCPUは十分な演算精度を提供することができる。このため、レジスタのビット数が64ビットを超える必要性は低い。また、CPUの加算器のキャリー処理の観点から、CPUに64ビットを超えるレジスタを備えることは、困難と考えられる。
 これに対して、アドレスのビット数を増やす必要性は高いと考えられる。その一例としてSingle Level Store(SLS)について説明する。
 SLSでは、二次記憶装置を含む各種の記憶装置に対して、仮想アドレスが割り付けられる。近年、ネットワークを介して接続されていないローカルの記憶装置は、Tbyteオーダーであるため、仮想アドレスのサイズは、32ビットでは不足し、64ビットであれば足りる。
 しかしながら、ネットワーク環境で使用される例えば(NAS)などのような記憶装置が使用される場合、又は、ネットワークに接続されている多数の記憶装置にアドレスを割り当てる場合には、仮想アドレスのサイズを例えば128ビットなどのように大きくする必要がある。
 図100は、ネットワークに接続される多数の機器に記憶されるデータをアクセスするために必要なアドレスのビット数を推定する計算の一例を示す図である。
 この図100に示すように、世界中の人間がある程度のデータを記憶することを想定すると、82ビットのネットワーク論理アドレスを用いることでこれらのデータにアクセスすることができる。
 したがって、上述したように、ネットワークシステムN37において、プロセッサ3A,3Bのレジスタのビット数と同じプロセッサ論理アドレスから、よりビット数の多いネットワーク用のネットワーク論理アドレスを求めることの意義は大きい。
 例えは、本実施の形態において、ネットワーク論理アドレスは、128ビットとすることで、ネットワークシステムの全データにアドレスを割り当てることができる。
 以上説明した本実施の形態においては、ネットワークシステムN37で使用される全てのデータに対して、アドレスを割り当てることができる。
 本実施の形態においては、ネットワークシステムN37に備えられている揮発性半導体メモリ8A及び不揮発性半導体メモリ9Aと、揮発性半導体メモリ8B及び不揮発性半導体メモリ9Bとの間で、例えば、アドレス変換、書き込み先決定、などのような基本的なメモリ管理及びメモリアクセスを共通した方法によって行うことができる。すなわち、本実施の形態に係る各情報処理装置N37A,N37Bは、アクセス方法、アクセス回数、アクセス頻度などの管理において、自装置に備えられているメモリと、ネットワークN38を介して接続されているメモリとを区別しなくてもよい。
 本実施の形態においては、情報処理装置N37A,N37Bによってアクセスされる頻度の高いデータは、その装置内に記憶されるため、ネットワークN38を介した送受信によるアクセス遅延、ネットワークの切断によるアクセスの失敗を防止することができる。
 本実施の形態においては、ネットワークシステムN38上の揮発性半導体メモリ8A及び不揮発性半導体メモリ9Aと、揮発性半導体メモリ8B及び不揮発性半導体メモリ9Bを、メインメモリとして用いることができる。さらに、本実施の形態に係る各情報処理装置N37A,N37Bは、自装置内のメモリを、他の装置に記憶されているデータを記憶しておくキャッシュメモリとして用いることができる。
 本実施の形態においては、プロセッサ3A,3Bのレジスタのビット数よりも大きいビット数のアドレスを用いることができ、広大なメモリ空間を使用することができる。
 一般的に、ネットワーク経由で行われないアクセスは、記憶装置へのリード、ライトが行われ、ネットワーク経由で行われるアクセスは、ソケット通信により行われている。リード及びライトと、ソケット通信とでは、アクセス方法が異なっている。また、ネットワーク経由のWebアクセスでは、例えばURLなどを用いた特別なアクセス方法が用いられている。これに対して、本実施の形態においては、ネットワーク経由でアクセスされるか否かに関係なく、ネットワーク論理アドレスに基づいて記憶装置に対するアクセスが行われ、同一のアクセス方法が用いられる。
 本実施の形態においては、アドレス長変換テーブルAT,AT1~AT5に、アドレス長変換フラグが付されており、これにより重複登録を防止することができる。
 上記各実施形態において説明した各構成要素は、自由に組み合わせることができ、自由に分割することができる。例えば、各実施形態で示された任意の機能ブロックを適宜組み合わせることができ、また適宜分割することができる。また、例えば、各実施形態で示されたフローチャートの一部のステップのみを抽出して実施することができ、任意のステップを適宜組み合わせることができ、また適宜分割することができる。
 本発明は、上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。

Claims (57)

  1.  プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部と、
     前記カラーリング情報を参照し、前記不揮発性半導体メモリ及び前記揮発性半導体メモリから、前記書き込み対象データを書き込む領域を決定する書き込み管理部と
    を具備するメモリ管理装置。
  2.  前記カラーリング情報は、前記書き込み対象データのデータ特性に基づいて推測されるアクセス頻度を含む、請求項1のメモリ管理装置。
  3.  前記カラーリング情報は、前記書き込み対象データのデータ特性に基づいて推測されるデータ寿命を含む、請求項1のメモリ管理装置。
  4.  前記カラーリング情報は、前記書き込み対象データのデータ特性に基づいて推測される重要度を含む、請求項1のメモリ管理装置。
  5.  前記カラーリング情報は、さらに、前記書き込み対象データに対するアクセス回数を含む、請求項1のメモリ管理装置。
  6.  前記カラーリング情報は、前記書き込み対象データのデータ特性に基づいて推測されるアクセス頻度と、データ寿命と、重要度とのうちの少なくとも1つを含む、請求項1に記載のメモリ管理装置。
  7.  前記不揮発性半導体メモリは、第1の領域と第2の領域を含み、
     前記書き込み管理部は、前記カラーリング情報を参照し、前記データに基づいて推測されるアクセス頻度が高い書き込み対象データを、前記第1の領域に書き込み、
     前記書き込み管理部は、前記カラーリング情報を参照し、前記データに基づいて推測されるアクセス頻度が低い書き込み対象データを、前記第2の領域に書き込む、
    請求項2のメモリ管理装置。
  8.  前記不揮発性半導体メモリから読み出し対象データを読み出す場合、前記読み出し対象データの前記カラーリング情報を参照し、前記揮発性半導体メモリをキャッシュとして用いるか否か判断する読み出し管理部を、さらに備える請求項1のメモリ管理装置。
  9.  前記不揮発性半導体メモリは、NAND型フラッシュメモリであり、前記揮発性半導体メモリはDRAMである、請求項1のメモリ管理装置。
  10.  プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部と、
     前記カラーリング情報を参照し、前記不揮発性半導体メモリ及び前記揮発性半導体メモリから、前記書き込み対象データを書き込む領域を決定する書き込み管理部と
    を備え、
     前記書き込み管理部は、前記不揮発性半導体メモリの少なくとも一部をキャッシュメモリとして用い、前記カラーリング情報に基づき、前記揮発性半導体メモリが備える複数の領域からデータを書き込む領域を決定する、メモリ管理装置。
  11.  前記不揮発性半導体メモリの前記複数の領域は、上位領域と下位領域を含み、上位領域が下位領域より大きい、請求項10のメモリ管理装置。
  12.  前記制御部は、前記カラーリング情報に基づき、前記上位領域に対して、アクセス頻度の高いデータを配置し、前記下位領域に対して、アクセス頻度の低いデータを配置する、請求項11に記載のメモリ管理装置。
  13.  前記上位領域が、前記下位領域に対して拡張可能である、請求項11のメモリ管理装置。
  14.  前記書き込み管理部は、前記揮発性半導体メモリの上位領域又は下位領域に空き領域がないと判断した場合、前記上位領域又は下位領域に配置されたデータを、前記不揮発性半導体メモリに移動させ、前記上位領域又は下位領域に空き領域を確保する、請求項11のメモリ管理装置。
  15.  前記揮発性半導体メモリに記憶され、前記揮発性半導体メモリの前記複数の領域に対応してそれぞれ設けられ、前記複数の領域のうち空き領域を管理する複数の管理情報により構成された第1のデータ構造と、
     前記揮発性半導体メモリに記憶され、前記揮発性半導体メモリの前記複数の領域の1つにデータが記憶されるとき、その領域に対応して前記第1のデータ構造から取得された前記管理情報に基づき、前記揮発性半導体メモリの使用領域を管理する第2のデータ構造と
    をさらに具備する、請求項10のメモリ管理装置。
  16.  前記揮発性半導体メモリにデータを記憶するとき、対応する領域に空き領域がない場合、前記制御部は、前記第2のデータ構造に管理されたその領域に対応する少なくとも1つの管理情報のうち先頭の管理情報に対応するデータを前記不揮発性半導体メモリに転送し、空き領域を確保する、請求項10のメモリ管理装置。
  17.  前記複数の領域のうち優先度の高い領域は、優先度の低い領域に拡張可能であり、前記揮発性半導体メモリは、各領域に対応して拡張限界情報を管理している、請求項10のメモリ管理装置。
  18.  前記第2のデータ構造は、少なくともFIFO(First-in First-out)、LRU(Least Recently Used)のうちの1つにより管理される、請求項10のメモリ管理装置。
  19.  前記各管理情報は、その管理情報に対応するデータが更新されたかどうかを示すフラグ情報を含む、請求項15のメモリ管理装置。
  20.  プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方の解放位置を指定する論理アドレスに係る解放要求を受けた際、前記指定された論理アドレスと前記不揮発性半導体メモリ、前記揮発性半導体メモリの物理アドレスとを関連付けたアドレス変換情報を参照し、前記解放要求のあった論理アドレスに対応するデータが存在する物理アドレスを確認し、前記第1メモリ上に対応するデータがある場合にはそのデータを消去する、メモリ管理装置。
  21.  前記指定された論理アドレスと前記不揮発性半導体メモリ、前記揮発性半導体メモリの物理アドレスとを関連付けたアドレス変換情報を参照する際には、前記アドレス変換情報中における前記第2メモリ上の有効/無効フラグを参照する、請求項20のメモリ管理装置。
  22.  前記解放要求のあった論理アドレスに対応するデータが存在する物理アドレスを確認する際に、前記不揮発性半導体メモリ上及び前記揮発性半導体メモリ上のいずれにも対応するデータがある場合には、前記揮発性半導体メモリ上のデータは消去し、前記不揮発性半導体メモリ上のデータに対して消去動作を行わず、消去対象となったことを表すフラグを付加する、請求項21のメモリ管理装置。
  23.  外部から前記混成メインメモリの獲得要求を受けた際、データ読出し動作およびデータ書込み動作の前に、データの特性をもとに生成され、当該データのカラーリング情報に基づいて、前記不揮発性半導体メモリ、前記揮発性半導体メモリ上に任意な物理アドレスの一部を確保する、請求項20のメモリ管理装置。
  24.  プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部と、
     前記カラーリング情報を参照し、前記不揮発性半導体メモリ及び前記揮発性半導体メモリから、前記書き込み対象データを書き込む領域を決定する書き込み管理部と
    を備え、
     前記書き込み管理部は、前記書き込み対象データに対する前記カラーリング情報に基づいて、前記書き込み対象データが複数のグループのうちのどのグループに属するか判断し、前記各グループに属する複数のデータをまとめて書き込み単位のデータを形成する、
    メモリ管理装置。
  25.  前記書き込み管理部は、
     前記カラーリング情報に応じて決定される複数のグループのうち、前記書き込み対象データがどのグループに所属するかを示すグループ値を算出するグループ値算出部と、
     前記揮発性半導体メモリと前記不揮発性半導体メモリとのうちの少なくとも一方における前記書き込み単位の物理アドレス領域ごとに形成されており、前記グループ値、前記物理アドレス領域における未使用の予約物理アドレス、前記物理アドレス領域の空き領域サイズを含む予約情報を管理し、前記グループ値が前記書き込み対象データと一致する予約情報を検索し、検索された前記予約情報の前記予約物理アドレスを前記書き込み対象データの物理アドレスに決定する予約情報管理部と
    を具備する、請求項24のメモリ管理装置。
  26.  前記予約情報管理部は、
     前記予約情報が発見されなかった場合、前記カラーリング情報と前記メモリ使用情報と前記メモリ固有情報とに基づいて、前記書き込み単位の新たな物理アドレス領域を決定し、前記新たな物理アドレス領域に対応する新たな予約情報を生成する、
    請求項25のメモリ管理装置。
  27.  前記予約情報管理部は、前記空き領域サイズが任意のサイズより小さい予約情報を破棄することを特徴とする請求項25のメモリ管理装置。
  28.  プロセッサからの書き込み要求及び読み出し要求に応じて、2値データを記憶する第1の記憶領域と多値データを記憶する第2の記憶領域とを含む不揮発性半導体メモリと、少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部と、
     前記揮発性半導体メモリ内で更新され、前記不揮発性半導体メモリに更新されていないデータを示す第1のフラグデータを記憶する第1の記憶部と、
     情報処理装置のシャットダウン時、前記第1の記憶部に記憶された前記第1のフラグデータに基づき、前記揮発性半導体メモリから前記不揮発性半導体メモリに転送すべきデータを検出する第1の検出部と、
     前記第1の検出部により検出されたデータを前記カラーリング情報とは無関係に前記不揮発性半導体メモリの前記第2の記憶領域に転送する第1の転送部と
    を具備するメモリ管理装置。
  29.  前記第1の検出部により検出された前記揮発性半導体メモリから前記不揮発性半導体メモリに転送すべきデータのサイズを算出する算出部と、
     前記算出部により算出されたサイズが、前記第2の記憶領域のサイズより大きい場合、前記第1の記憶部の前記カラーリング情報に基づき、前記揮発性半導体メモリのデータを前記不揮発性半導体メモリに転送する第2の転送部と
    を具備する請求項28のメモリ管理装置。
  30.  前記カラーリング情報保持部は、前記カラーリング情報が記憶される各エントリに情報処理装置の起動時に先に読み出すべきデータであるかどうかを示す第2のフラグデータを含み、
     起動時に前記第2のフラグデータを検出する第2の検出部と、
     前記第2の検出部により、先に読み出すべきデータが検出された場合、そのデータを読み出す読み出し部と
    をさらに具備する請求項28のメモリ管理装置。
  31.  前記第2のフラグデータは、シャットダウン時に前記第1の記憶部の対応するエントリに設定される、請求項30のメモリ管理装置。
  32.  プロセッサからの書き込み要求及び読み出し要求に応じて、2値データを記憶する第1の記憶領域と多値データを記憶する第2の記憶領域とを含む不揮発性半導体メモリと、少なくとも前記不揮発性半導体メモリから読み出されたデータを記憶する揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部を具備し、
     前記第1の管理部における前記カラーリング情報の生成は、オペレーティングシステムによって行われる、メモリ管理装置。
  33.  前記カラーリング情報は、前記書き込み対象データが書き込まれる頻度を推測して設定される値、前記データが読み出される頻度を推測して設定される値、前記データが消去される頻度を推測して設定される値、前記データの重要性を推測して設定される重要度のうちの少なくとも一つを含む、請求項32のメモリ管理装置。
  34.  前記オペレーティングシステムは、
     (A)前記書き込み対象データに対応するファイルの拡張子又は名称と、前記カラーリング情報との関係
     (B)前記書き込み対象データに対応するファイルの配置されているディレクトリの名称と、前記カラーリング情報との関係
     (C)前記書き込み対象データに対応するファイルのシャドウファイル、又は、前記書き込み対象データに対応するファイルが配置されているディレクトリに配置されているシャドウファイル、に含まれている前記カラーリング情報
     (D)前記書き込み対象データに対応するファイルのヘッダに含まれている前記カラーリング情報
     (E)前記書き込み対象データの配置されている仮想アドレス領域の属性情報
     (F)前記書き込み対象データがライブラリに使用される頻度
     (G)コンパイラによって算出された前記書き込み対象データに含まれている変数の使用頻度と関数の使用頻度とのうちの少なくとも一方
     (H)前記書き込み対象データの配置されている動的に生成されるメモリ領域の使用頻度
     (I)プロファイラによって取得された前記書き込み対象データを含むソフトウェアの性能情報
    のうちの少なくとも一つに基づいて、前記書き込み対象データに対して、前記カラーリング情報を生成する、請求項32のメモリ管理装置。
  35.  前記書き込み対象データに対応するファイル、又は、前記書き込み対象データに対応するファイルの配置されているディレクトリ、にメタデータが結び付けられており、
     前記メタデータは、前記カラーリング情報を含み、
     前記オペレーティングシステムは、前記メタデータに基づいて、前記書き込み対象データに対して、前記カラーリング情報を生成する、請求項32のメモリ管理装置。
  36.  プロセッサからの書き込み要求及び読み出し要求に応じて、不揮発性半導体メモリ及び揮発性半導体メモリを含む主記憶メモリに対する書き込み及び読み出しを制御するメモリ管理装置であって、
     前記不揮発性半導体メモリの所定領域毎の消去回数を含むメモリ使用情報を管理するメモリ使用情報管理部と、
     前記メモリ使用情報に基づき、前記不揮発性半導体メモリの消去回数が、当該不揮発性半導体メモリの消去可能上限回数に達する前に、前記不揮発性半導体メモリに警告を通知する通知部と
    を具備するメモリ管理装置。
  37.  前記通知部は、前記メモリ使用情報に基づき、所定時間後の消去回数を予測し、予測した前記所定時間後の消去回数が前記消去可能上限回数を超える場合に、前記不揮発性半導体メモリに警告を通知する、請求項36のメモリ管理装置。
  38.  前記不揮発性半導体メモリが、電気的に非接続状態となる前に、前記不揮発性半導体メモリに対し、当該不揮発性半導体メモリの所定領域毎の消去回数を書き込む交換制御部をさらに具備する、請求項36のメモリ管理装置。
  39.  前記不揮発性半導体メモリのうち、1つの前記不揮発性半導体メモリに対して警告を通知した後に、当該不揮発性半導体メモリに記憶されているデータを、別の前記不揮発性半導体メモリに書き込む、請求項36のメモリ管理装置。
  40.  前記不揮発性半導体メモリ及び前記揮発性半導体メモリの少なくとも一方に書き込む書き込み対象データのデータ特性に基づき生成されるカラーリング情報を保持するカラーリング情報保持部をさらに備え、
     複数の前記不揮発性半導体メモリのうち、所定の前記不揮発性半導体メモリに対して、書き込み頻度又は読み出し頻度の高いデータを書き込む、請求項36のメモリ管理装置。
  41.  不揮発性半導体メモリにおけるSLC領域とMLC領域のうちの少なくとも一方に記憶される各データの特性に基づいて生成され、当該各データの配置領域を決定するヒントとなるカラーリング情報を記憶する第1の記憶部と、
     前記不揮発性半導体メモリに含まれるメモリ領域に対するメモリ固有の特性を示すメモリ固有情報を記憶する第2の記憶部と、
     前記メモリ領域に対する使用状態を示すメモリ使用情報を記憶する第3の記憶部と、
     前記不揮発性半導体メモリに対する書き込み対象データの前記カラーリング情報を生成する第1の管理部と、
     前記不揮発性半導体メモリに対するアクセスが発生した場合に、アクセスされたメモリ領域に対する前記メモリ使用情報を更新する第2の管理部と、
     前記カラーリング情報と前記メモリ使用情報と前記メモリ固有情報とに基づいて、書き込み対象データに対して前記メモリ領域の中から書き込み領域を決定する第3の管理部と、
     前記メモリ使用情報と前記メモリ固有情報とに基づいて、前記メモリ領域に対して、SLCとMLCの切り替えを行うか否かを判断する切替判断部と、
     前記切替判断部によって切り替えを行うと判断されたメモリ領域に対して、SLCとMLCとの間で切り替えを行う切替制御部と
    を具備するメモリ管理装置。
  42.  前記メモリ使用情報は、前記各メモリ領域に対する書き込み回数、消去回数、読み出し回数のうちの少なくとも一つを含み、
     前記メモリ固有情報は、前記各メモリ領域に対する書き込み可能上限回数、消去可能上限回数、読み出し可能上限回数のうちの少なくとも一つを含み、
     前記各メモリ領域に対して、前記書き込み可能上限回数に対する書き込み回数の割合、前記消去可能上限回数に対する消去回数の割合、前記読み出し可能上限回数に対する読み出し回数の割合、のうちの少なくとも一つを算出する消耗率算出部をさらに具備し、
     前記切替判断部は、前記消耗率算出部によって算出された割合が、設定されている閾値を超えたメモリ領域に対して、SLCとMLCの切り替えを行うと判断する、
    請求項41のメモリ管理装置。
  43.  前記SLC領域には、アクセス頻度の高いデータが書き込まれ、
     前記MLC領域には、アクセス頻度の低いデータが書き込まれ、
     前記切替制御部は、前記SLC領域のうちのいずれかのメモリ領域がMLCに切り替えられる場合に、前記MLC領域のうちのいずれかのメモリ領域をSLCに切り替える、
    請求項41のメモリ管理装置。
  44.  前記切替制御部は、SLCとMLCの切り替え対象領域にデータが記憶されている場合に、前記カラーリング情報を参照し、前記切り替え対象領域のデータのうち、アクセス頻度の高いデータを他のSLC領域に移動し、前記切り替え対象領域のデータのうち、アクセス頻度の低いデータを他のMLC領域に移動する、請求項41のメモリ管理装置。
  45.  プロセッサのプロセッサ論理アドレス空間に含まれており前記プロセッサ論理アドレス空間よりも大きいプロセッサ物理アドレス空間の一部が写像されるメモリウィンドウに配置される各データの特性に基づいて生成され、当該各データの配置領域を決定するヒントとなるカラーリング情報を記憶する第1の記憶部と、
     前記各データに対する前記カラーリング情報を生成する第1の管理部と、
     前記カラーリング情報に基づいて、前記メモリウィンドウから前記プロセッサ物理アドレス空間に書き込まれるデータに対して、前記プロセッサ物理アドレス空間の中から、書き込み領域を決定する第2の管理部と、
     前記各データのプロセッサ論理アドレスとプロセッサ物理アドレスとを関連付けたアドレス変換情報を、第2の記憶部に記憶する第3の管理部と
    を具備するメモリ管理装置。
  46.  前記第3の管理部は、前記メモリウィンドウに配置されているデータが、前記プロセッサによって、前記プロセッサ物理アドレス空間の第1のメモリ領域のデータから第2のメモリ領域のデータに変更された場合に、前記アドレス変換情報を更新する、
    請求項45のメモリ管理装置。
  47.  前記プロセッサによって複数のプロセスが実行されており、
     前記複数のプロセスのそれぞれに対して前記複数のメモリウィンドウが使用されており、
     前記第1の管理部は、前記複数のメモリウィンドウに配置される前記各データに対する前記カラーリング情報を生成し、
     前記第2の管理部は、前記複数のメモリウィンドウに配置されている前記各データの前記プロセッサ物理アドレス空間に対する書き込み領域を決定し、
     前記第3の管理部は、前記複数のメモリウィンドウに配置されている前記各データの前記プロセッサ論理アドレスと前記プロセッサ物理アドレスとを関連付けたアドレス変換情報を管理する、
    請求項45のメモリ管理装置。
  48.  前記プロセッサ物理アドレス空間の各メモリ領域に対するメモリ固有の特性を示すメモリ固有情報を記憶する第3の記憶部と、
     前記プロセッサ物理アドレス空間に含まれる各メモリ領域に対する使用状態を示すメモリ使用情報を記憶する第4の記憶部と、
     前記プロセッサ物理アドレス空間に対するアクセスが発生した場合に、アクセスされた前記プロセッサ物理アドレス空間のメモリ領域に対する前記メモリ使用情報を更新する第4の管理部と
    をさらに具備し、
     前記第2の配置部は、前記カラーリング情報と前記メモリ使用情報と前記メモリ固有情報とに基づいて、前記メモリウィンドウから前記プロセッサ物理アドレス空間に書き込まれる前記データに対して、前記プロセッサ物理アドレス空間に対する前記書き込み領域を決定する、
    請求項45のメモリ管理装置。
  49.  第1の半導体メモリと前記第1の半導体メモリよりもアクセス可能上限回数の小さい不揮発性の第2の半導体メモリとのうちの少なくとも一方に記憶されるデータの特性に基づいて生成され当該データの配置領域を決定するヒントとなるカラーリング情報と、データ識別情報とを関連付けたプロファイル情報を記憶する記憶部と、
     前記第1の半導体メモリと前記第2の半導体メモリをアクセスする装置から、前記データ識別情報を含むダウンロード要求を受信する受信部と、
     前記ダウンロード要求が受信された場合に、前記ダウンロード要求に含まれているデータ識別情報に基づいて、前記記憶部から前記プロファイル情報を読み出す管理部と、
     前記読みされたプロファイル情報を、前記ダウンロード要求の発信元の前記装置に送信する送信部と
    を具備する情報処理装置。
  50.  前記受信部は、さらに前記プロファイル情報を受信し、
     前記管理部は、前記プロファイル情報が受信された場合に、前記プロファイル情報を前記記憶部に記憶する、
    請求項49の情報処理装置。
  51.  前記カラーリング情報は、前記データが書き込まれる頻度を推測して設定される値、前記データが読み出される頻度を推測して設定される値、前記データが消去される頻度を推測して設定される値、前記データの重要性を推測して設定される重要度のうちの少なくとも一つを含む、請求項49の情報処理装置。
  52.  前記プロファイル情報は、前記データに対する単位時間当たりの書き込み回数を示す動的書き込み頻度、前記データに対する単位時間当たりの読み出し回数を示す動的読み出し頻度、前記データに対する単位時間当たりの消去回数を示す動的消去頻度のうちの少なくとも一つを含む、請求項49の情報処理装置。
  53.  第1の半導体メモリと前記第1の半導体メモリよりもアクセス可能上限回数の小さい不揮発性の第2の半導体メモリとのうちの少なくとも一方に記憶される各データの特性に基づいて生成され、当該各データの配置領域を決定するヒントとなるカラーリング情報を記憶する第1の記憶部と、
     前記第1の半導体メモリと前記第2の半導体メモリとのそれぞれに対するメモリ固有の特性を示すメモリ固有情報を記憶する第2の記憶部と、
     前記第1の半導体メモリと前記第2の半導体メモリとに含まれる各メモリ領域に対する使用状態を示すメモリ使用情報を記憶する第3の記憶部と、
     プロセッサから発行されたプロセッサ論理アドレスを、当該プロセッサ論理アドレスよりも長くネットワークシステム上のメモリ領域を特定するネットワーク論理アドレスに変換するネットワークアドレス変換部と、
     前記第1の半導体メモリと前記第2の半導体メモリとのうちの少なくとも一方に対する書き込み対象データに対する前記カラーリング情報を生成する第1の管理部と、
     前記第1の半導体メモリと前記第2の半導体メモリとのうちの少なくとも一方に対するアクセスが発生した場合に、アクセスされたメモリ領域に対する前記メモリ使用情報を更新する第2の管理部と、
     前記カラーリング情報と前記メモリ使用情報と前記メモリ固有情報とに基づいて、前記書き込み対象データに対して前記第1の半導体メモリと前記第2の半導体メモリとのメモリ領域の中から、書き込み領域を決定する第3の管理部と、
     前記書き込み対象データの前記ネットワーク論理アドレスと前記書き込み領域の物理アドレスとを関連付けたアドレス変換情報を第4の記憶部に記憶する第4の管理部と、
     読み出し対象データの前記ネットワーク論理アドレスと前記アドレス変換情報とに基づいて、前記読み出し対象データを前記第1の半導体メモリと前記第2の半導体メモリとのうちのいずれかから読み出す第5の管理部と
    を具備するメモリ管理装置。
  54.  前記ネットワーク論理アドレスを、前記ネットワークを介して他の装置に対して送信及び受信する通信部、をさらに具備する請求項53のメモリ管理装置。
  55.  前記メモリ固有情報は、前記ネットワークシステム上の前記第1の半導体メモリと前記第2の半導体メモリのそれぞれに対するメモリ固有の特性を示し、
     前記第1の管理部は、前記ネットワークシステム上の各データの前記カラーリング情報を管理し、
     前記第2の管理部は、前記ネットワークシステム上の前記第1の半導体メモリと前記第2の半導体メモリとの各メモリ領域に対する前記メモリ使用情報を管理する、
    請求項53のメモリ管理装置。
  56.  前記プロセッサ論理アドレスは、アドレス長の変換キーとなる第1のプロセッサアドレス部と、前記ネットワーク論理アドレスの一部と同じ第2のプロセッサアドレス部とを具備し、
     前記ネットワーク論理アドレスは、前記変換キーに基づいて変換され前記変換キーよりも大きいビット数の第1のネットワークアドレス部と、前記第2のプロセッサアドレスと同じ第2のネットワークアドレス部とを具備し、
     前記ネットワークアドレス変換部は、前記第1のプロセッサアドレス部と前記第1のネットワークアドレス部とを関連付けたアドレス長変換テーブルを参照し、前記第1のネットワークアドレス部と前記第2のプロセッサアドレス部とを組み合わせて、前記ネットワーク論理アドレスを生成する、
    請求項53のメモリ管理装置。
  57.  前記アドレス長変換テーブルの各エントリに、有効又は無効を示すフラグが付されている、請求項53のメモリ管理装置。
PCT/JP2010/053817 2009-07-17 2010-03-08 メモリ管理装置 WO2011007599A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201080031863.5A CN102473140B (zh) 2009-07-17 2010-03-08 存储器管理装置
EP10799661.3A EP2455865B1 (en) 2009-07-17 2010-03-08 Memory management device
US13/351,582 US20120191900A1 (en) 2009-07-17 2012-01-17 Memory management device
US14/938,589 US10776007B2 (en) 2009-07-17 2015-11-11 Memory management device predicting an erase count

Applications Claiming Priority (22)

Application Number Priority Date Filing Date Title
JP2009-169371 2009-07-17
JP2009169371A JP2011022933A (ja) 2009-07-17 2009-07-17 メモリ管理装置を含む情報処理装置及びメモリ管理方法
JP2010048331A JP2011186555A (ja) 2010-03-04 2010-03-04 メモリ管理装置及び方法
JP2010-048331 2010-03-04
JP2010048339A JP2011186563A (ja) 2010-03-04 2010-03-04 メモリ管理装置およびメモリ管理方法
JP2010-048339 2010-03-04
JP2010048329A JP2011186554A (ja) 2010-03-04 2010-03-04 メモリ管理装置及び方法
JP2010048332A JP5322978B2 (ja) 2010-03-04 2010-03-04 情報処理装置及び方法
JP2010-048332 2010-03-04
JP2010-048328 2010-03-04
JP2010-048337 2010-03-04
JP2010-048334 2010-03-04
JP2010-048329 2010-03-04
JP2010-048338 2010-03-04
JP2010-048335 2010-03-04
JP2010048328A JP2011186553A (ja) 2010-03-04 2010-03-04 メモリ管理装置
JP2010048334A JP2011186558A (ja) 2010-03-04 2010-03-04 メモリ管理装置及び方法
JP2010048337A JP2011186561A (ja) 2010-03-04 2010-03-04 メモリ管理装置
JP2010048335A JP2011186559A (ja) 2010-03-04 2010-03-04 メモリ管理装置
JP2010048333A JP2011186557A (ja) 2010-03-04 2010-03-04 メモリ管理装置及び方法
JP2010-048333 2010-03-04
JP2010048338A JP2011186562A (ja) 2010-03-04 2010-03-04 メモリ管理装置及び方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/351,582 Continuation US20120191900A1 (en) 2009-07-17 2012-01-17 Memory management device

Publications (1)

Publication Number Publication Date
WO2011007599A1 true WO2011007599A1 (ja) 2011-01-20

Family

ID=43449209

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/053817 WO2011007599A1 (ja) 2009-07-17 2010-03-08 メモリ管理装置

Country Status (6)

Country Link
US (2) US20120191900A1 (ja)
EP (1) EP2455865B1 (ja)
KR (1) KR20120068765A (ja)
CN (1) CN102473140B (ja)
TW (1) TWI460588B (ja)
WO (1) WO2011007599A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5423879B2 (ja) * 2010-03-29 2014-02-19 日本電気株式会社 データアクセス場所選択システム、方法およびプログラム
JP2014078231A (ja) * 2012-10-08 2014-05-01 Hgst Netherlands B V 低電力・低遅延・大容量ストレージ・クラス・メモリのための装置および方法
JP2014167798A (ja) * 2014-03-24 2014-09-11 ▲ホア▼▲ウェイ▼技術有限公司 バッファマッピングを制御するための方法およびバッファシステム
JP2014530422A (ja) * 2011-10-27 2014-11-17 ▲ホア▼▲ウェイ▼技術有限公司 バッファマッピングを制御するための方法およびバッファシステム
WO2017090176A1 (ja) * 2015-11-27 2017-06-01 株式会社日立製作所 ストレージシステム

Families Citing this family (273)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102822881B (zh) * 2010-04-05 2015-04-29 丰田自动车株式会社 车辆的碰撞判定装置
JP2012033047A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
TWI490690B (zh) * 2011-04-20 2015-07-01 Taejin Infotech Co Ltd 用於半導體儲存裝置的raid控制器
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
EP3451176B1 (en) 2011-09-30 2023-05-24 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
EP2761466B1 (en) 2011-09-30 2020-08-05 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
EP2761480A4 (en) 2011-09-30 2015-06-24 Intel Corp APPARATUS AND METHOD FOR IMPLEMENTING MULTINIVE MEMORY HIERARCHY ON COMMON MEMORY CHANNELS
JP5745701B2 (ja) * 2011-09-30 2015-07-08 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 認証システム及び方法
EP2761467B1 (en) 2011-09-30 2019-10-23 Intel Corporation Generation of far memory access signals based on usage statistic tracking
EP3382556A1 (en) 2011-09-30 2018-10-03 INTEL Corporation Memory channel that supports near memory and far memory access
JP5860543B2 (ja) * 2011-10-26 2016-02-16 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. ブートデータのロード
JP5862408B2 (ja) * 2012-03-27 2016-02-16 富士通株式会社 エミュレーション装置、及びエミュレーションプログラム
US9367439B2 (en) * 2012-04-30 2016-06-14 Oracle International Corporation Physical memory usage prediction
TWI454913B (zh) * 2012-06-26 2014-10-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103959187B (zh) * 2012-06-26 2016-07-27 东芝三菱电机产业系统株式会社 数据收集装置及数据收集方法
US10037271B1 (en) * 2012-06-27 2018-07-31 Teradata Us, Inc. Data-temperature-based control of buffer cache memory in a database system
KR101975406B1 (ko) 2012-07-11 2019-05-07 삼성전자주식회사 비휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템 및 그것의 메모리 블록 관리, 소거, 및 프로그램 방법들
KR101975528B1 (ko) 2012-07-17 2019-05-07 삼성전자주식회사 패스트 어레이 영역을 갖는 반도체 메모리 셀 어레이 및 그것을 포함하는 반도체 메모리
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
JP5788369B2 (ja) * 2012-09-12 2015-09-30 株式会社東芝 メモリシステム、コンピュータシステム、およびメモリ管理方法
CN103678143B (zh) * 2012-09-25 2018-10-12 联想(北京)有限公司 文件存储方法、装置及电子设备
US20140095778A1 (en) * 2012-09-28 2014-04-03 Jaewoong Chung Methods, systems and apparatus to cache code in non-volatile memory
TW201417102A (zh) 2012-10-23 2014-05-01 Ind Tech Res Inst 電阻式記憶體裝置
US8984251B2 (en) * 2012-12-04 2015-03-17 Apple Inc. Hinting of deleted data from host to storage device
KR102011135B1 (ko) * 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US9235528B2 (en) * 2012-12-21 2016-01-12 Advanced Micro Devices, Inc. Write endurance management techniques in the logic layer of a stacked memory
CN103902462B (zh) * 2012-12-27 2018-03-09 华为技术有限公司 内存管理方法、内存管理装置及计算机
CN105027211B (zh) * 2013-01-31 2018-09-21 慧与发展有限责任合伙企业 自适应粒度行缓冲器高速缓存
TWI511035B (zh) * 2013-03-08 2015-12-01 Acer Inc 動態調整快取層級方法
WO2014141411A1 (ja) 2013-03-13 2014-09-18 株式会社日立製作所 ストレージシステムおよびストレージシステム制御方法
JP2014206967A (ja) * 2013-03-18 2014-10-30 株式会社Genusion 記憶装置
CN104063182B (zh) * 2013-03-20 2017-04-12 宏碁股份有限公司 动态调整快取层级方法
WO2014158154A1 (en) * 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Regulating memory activation rates
CN105229742A (zh) 2013-04-30 2016-01-06 惠普发展公司,有限责任合伙企业 存储器访问速率
US9479466B1 (en) * 2013-05-23 2016-10-25 Kabam, Inc. System and method for generating virtual space messages based on information in a users contact list
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
WO2015008358A1 (ja) * 2013-07-18 2015-01-22 株式会社日立製作所 情報処理装置
US9898410B2 (en) * 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
US10013344B2 (en) 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
KR102289919B1 (ko) * 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
CN105094686B (zh) 2014-05-09 2018-04-10 华为技术有限公司 数据缓存方法、缓存和计算机系统
US8850108B1 (en) 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US10114757B2 (en) 2014-07-02 2018-10-30 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US8874836B1 (en) 2014-07-03 2014-10-28 Pure Storage, Inc. Scheduling policy for queues in a non-volatile solid-state storage
US9817750B2 (en) * 2014-07-03 2017-11-14 Pure Storage, Inc. Profile-dependent write placement of data into a non-volatile solid-state storage
CN104123264A (zh) * 2014-08-01 2014-10-29 浪潮(北京)电子信息产业有限公司 一种基于异构融合架构的缓存管理方法及装置
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US10061515B2 (en) * 2014-09-11 2018-08-28 Toshiba Memory Corporation Information processing apparatus and memory system
CN104252419B (zh) 2014-09-16 2017-09-19 华为技术有限公司 一种内存分配的方法及装置
CN105573831B (zh) * 2014-10-13 2019-11-26 龙芯中科技术有限公司 数据转移方法和装置
US9542122B2 (en) * 2014-10-23 2017-01-10 Seagate Technology Llc Logical block addresses used for executing host commands
WO2016088234A1 (ja) 2014-12-04 2016-06-09 株式会社 東芝 異なる特性の不揮発性半導体メモリの寿命を長くするストレージ装置
JP6107802B2 (ja) * 2014-12-15 2017-04-05 コニカミノルタ株式会社 不揮発性メモリ制御装置、不揮発性メモリ制御方法及びプログラム
KR102295208B1 (ko) 2014-12-19 2021-09-01 삼성전자주식회사 프로그램 영역을 동적으로 할당하는 저장 장치 및 그것의 프로그램 방법
CA2974394C (en) * 2015-01-20 2023-09-05 Ultrata, Llc Distributed index for fault tolerant object memory fabric
US10255182B2 (en) 2015-02-11 2019-04-09 Samsung Electronics Co., Ltd. Computing apparatus and method for cache management
US10241909B2 (en) * 2015-02-27 2019-03-26 Hitachi, Ltd. Non-volatile memory device
US9870836B2 (en) 2015-03-10 2018-01-16 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US9948615B1 (en) 2015-03-16 2018-04-17 Pure Storage, Inc. Increased storage unit encryption based on loss of trust
US11294893B2 (en) 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
US10503445B2 (en) 2015-03-23 2019-12-10 Netapp, Inc. Data structure store and data management
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10007435B2 (en) 2015-05-21 2018-06-26 Micron Technology, Inc. Translation lookaside buffer in memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
CN106294202A (zh) * 2015-06-12 2017-01-04 联想(北京)有限公司 一种数据存储方法和装置
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10275320B2 (en) 2015-06-26 2019-04-30 Commvault Systems, Inc. Incrementally accumulating in-process performance data and hierarchical reporting thereof for a data stream in a secondary copy operation
CN106325764B (zh) * 2015-07-08 2021-02-26 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US10282324B2 (en) 2015-07-13 2019-05-07 Samsung Electronics Co., Ltd. Smart I/O stream detection based on multiple attributes
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
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
US11461010B2 (en) 2015-07-13 2022-10-04 Samsung Electronics Co., Ltd. Data property-based data placement in a nonvolatile memory device
US10656838B2 (en) 2015-07-13 2020-05-19 Samsung Electronics Co., Ltd. Automatic stream detection and assignment algorithm
US11232079B2 (en) 2015-07-16 2022-01-25 Pure Storage, Inc. Efficient distribution of large directories
JP6403162B2 (ja) 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US10108503B2 (en) * 2015-08-24 2018-10-23 Western Digital Technologies, Inc. Methods and systems for updating a recovery sequence map
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
JP6538496B2 (ja) * 2015-09-11 2019-07-03 東芝メモリ株式会社 メモリシステム
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US9940028B2 (en) * 2015-11-13 2018-04-10 Samsung Electronics Co., Ltd Multimode storage device
US10593421B2 (en) * 2015-12-01 2020-03-17 Cnex Labs, Inc. Method and apparatus for logically removing defective pages in non-volatile memory storage device
JP2017107321A (ja) * 2015-12-08 2017-06-15 京セラドキュメントソリューションズ株式会社 電子機器およびデータアクセス制御プログラム
TWI720086B (zh) * 2015-12-10 2021-03-01 美商艾斯卡瓦公司 儲存在區塊處理儲存系統上的音頻資料和資料的縮減
JP6115740B1 (ja) * 2015-12-17 2017-04-19 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
JP6515799B2 (ja) * 2015-12-18 2019-05-22 京セラドキュメントソリューションズ株式会社 電子機器及びメモリー寿命警告プログラム
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
GB2546731B (en) * 2016-01-20 2019-02-20 Advanced Risc Mach Ltd Recording set indicator
US10296264B2 (en) 2016-02-09 2019-05-21 Samsung Electronics Co., Ltd. Automatic I/O stream selection for storage devices
KR102652293B1 (ko) * 2016-03-03 2024-03-29 에스케이하이닉스 주식회사 메모리 관리방법
JP6320439B2 (ja) 2016-03-10 2018-05-09 株式会社東芝 メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法
US10592171B2 (en) 2016-03-16 2020-03-17 Samsung Electronics Co., Ltd. Multi-stream SSD QoS management
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US10866905B2 (en) 2016-05-25 2020-12-15 Samsung Electronics Co., Ltd. Access parameter based multi-stream storage device access
KR101754348B1 (ko) * 2016-06-17 2017-07-06 고려대학교 산학협력단 정보 저장 테이블을 관리하는 분석 시스템 및 그의 제어 방법
CN107562367B (zh) * 2016-07-01 2021-04-02 阿里巴巴集团控股有限公司 基于软件化存储系统读写数据的方法以及装置
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11449232B1 (en) 2016-07-22 2022-09-20 Pure Storage, Inc. Optimal scheduling of flash operations
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11080155B2 (en) 2016-07-24 2021-08-03 Pure Storage, Inc. Identifying error types among flash memory
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US10216420B1 (en) 2016-07-24 2019-02-26 Pure Storage, Inc. Calibration of flash channels in SSD
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
JP2018049385A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステムおよびプロセッサシステム
US10366774B2 (en) 2016-09-27 2019-07-30 Spin Memory, Inc. Device with dynamic redundancy registers
US10446210B2 (en) 2016-09-27 2019-10-15 Spin Memory, Inc. Memory instruction pipeline with a pre-read stage for a write operation for reducing power consumption in a memory device that uses dynamic redundancy registers
US10437723B2 (en) 2016-09-27 2019-10-08 Spin Memory, Inc. Method of flushing the contents of a dynamic redundancy register to a secure storage area during a power down in a memory device
US10460781B2 (en) 2016-09-27 2019-10-29 Spin Memory, Inc. Memory device with a dual Y-multiplexer structure for performing two simultaneous operations on the same row of a memory bank
US10360964B2 (en) 2016-09-27 2019-07-23 Spin Memory, Inc. Method of writing contents in memory during a power up sequence using a dynamic redundancy register in a memory device
US10628316B2 (en) 2016-09-27 2020-04-21 Spin Memory, Inc. Memory device with a plurality of memory banks where each memory bank is associated with a corresponding memory instruction pipeline and a dynamic redundancy register
US10437491B2 (en) 2016-09-27 2019-10-08 Spin Memory, Inc. Method of processing incomplete memory operations in a memory device during a power up sequence and a power down sequence using a dynamic redundancy register
US10546625B2 (en) 2016-09-27 2020-01-28 Spin Memory, Inc. Method of optimizing write voltage based on error buffer occupancy
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10216417B2 (en) 2016-10-26 2019-02-26 Samsung Electronics Co., Ltd. Method of consolidate data streams for multi-stream enabled SSDs
TWI596541B (zh) * 2016-11-30 2017-08-21 財團法人工業技術研究院 資料存取系統、資料存取裝置及資料存取方法
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
JP6880769B2 (ja) * 2017-01-24 2021-06-02 富士通株式会社 情報処理装置,制御プログラムおよび情報処理方法
US10979223B2 (en) 2017-01-31 2021-04-13 Pure Storage, Inc. Separate encryption for a solid-state drive
WO2018154669A1 (ja) 2017-02-23 2018-08-30 株式会社日立製作所 ストレージシステム
US20180261281A1 (en) * 2017-03-10 2018-09-13 Micron Technology, Inc. Methods for mitigating power loss events during operation of memory devices and memory devices employing the same
TWI658405B (zh) * 2017-03-17 2019-05-01 合肥兆芯電子有限公司 資料程式化方法、記憶體儲存裝置及記憶體控制電路單元
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
EP3588305A4 (en) * 2017-04-07 2020-04-01 Panasonic Intellectual Property Management Co., Ltd. NON-VOLATILE STORAGE WITH INCREASED NUMBER OF USEFUL TIMES
US11048624B2 (en) 2017-04-25 2021-06-29 Samsung Electronics Co., Ltd. Methods for multi-stream garbage collection
US10698808B2 (en) 2017-04-25 2020-06-30 Samsung Electronics Co., Ltd. Garbage collection—automatic data placement
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US20180321855A1 (en) 2017-05-03 2018-11-08 Samsung Electronics Co., Ltd. Multistreaming in heterogeneous environments
CN107291381B (zh) * 2017-05-18 2020-04-28 记忆科技(深圳)有限公司 一种固态硬盘动态加速区的实现方法及固态硬盘
CN107168654B (zh) * 2017-05-26 2019-08-13 华中科技大学 一种基于数据对象热度的异构内存分配方法及系统
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US11138103B1 (en) 2017-06-11 2021-10-05 Pure Storage, Inc. Resiliency groups
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
CN107203477A (zh) * 2017-06-16 2017-09-26 深圳市万普拉斯科技有限公司 内存分配方法、装置、电子设备及可读存储介质
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
CN107506137A (zh) * 2017-08-11 2017-12-22 记忆科技(深圳)有限公司 一种提升固态硬盘写性能的方法
US10545685B2 (en) * 2017-08-30 2020-01-28 Micron Technology, Inc. SLC cache management
US10877827B2 (en) 2017-09-15 2020-12-29 Pure Storage, Inc. Read voltage optimization
US10210926B1 (en) 2017-09-15 2019-02-19 Pure Storage, Inc. Tracking of optimum read voltage thresholds in nand flash devices
JP7030463B2 (ja) 2017-09-22 2022-03-07 キオクシア株式会社 メモリシステム
US10866899B2 (en) * 2017-10-02 2020-12-15 Arm Ltd Method and apparatus for control of a tiered memory system
US10901907B2 (en) 2017-10-19 2021-01-26 Samsung Electronics Co., Ltd. System and method for identifying hot data and stream in a solid-state drive
US10515701B1 (en) 2017-10-31 2019-12-24 Pure Storage, Inc. Overlapping raid groups
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
JP6805110B2 (ja) * 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10719265B1 (en) 2017-12-08 2020-07-21 Pure Storage, Inc. Centralized, quorum-aware handling of device reservation requests in a storage system
US10929053B2 (en) 2017-12-08 2021-02-23 Pure Storage, Inc. Safe destructive actions on drives
TWI647567B (zh) * 2017-12-13 2019-01-11 國立中正大學 使用記憶體位址定位冷熱存取區間之方法
US10929031B2 (en) 2017-12-21 2021-02-23 Pure Storage, Inc. Maximizing data reduction in a partially encrypted volume
WO2019133233A1 (en) * 2017-12-27 2019-07-04 Spin Transfer Technologies, Inc. A method of writing contents in memory during a power up sequence using a dynamic redundancy register in a memory device
US10831591B2 (en) * 2018-01-11 2020-11-10 Commvault Systems, Inc. Remedial action based on maintaining process awareness in data storage management
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10733053B1 (en) 2018-01-31 2020-08-04 Pure Storage, Inc. Disaster recovery for high-bandwidth distributed archives
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US10931450B1 (en) 2018-04-27 2021-02-23 Pure Storage, Inc. Distributed, lock-free 2-phase commit of secret shares using multiple stateless controllers
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10853146B1 (en) 2018-04-27 2020-12-01 Pure Storage, Inc. Efficient data forwarding in a networked device
US10949087B2 (en) 2018-05-15 2021-03-16 Samsung Electronics Co., Ltd. Method for rapid reference object storage format for chroma subsampled images
US11449256B2 (en) 2018-05-15 2022-09-20 Samsung Electronics Co., Ltd. Method for accelerating image storing and retrieving differential latency storage devices based on access rates
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11438279B2 (en) 2018-07-23 2022-09-06 Pure Storage, Inc. Non-disruptive conversion of a clustered service from single-chassis to multi-chassis
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
US10454498B1 (en) 2018-10-18 2019-10-22 Pure Storage, Inc. Fully pipelined hardware engine design for fast and efficient inline lossless data compression
KR20200044312A (ko) * 2018-10-19 2020-04-29 삼성전자주식회사 반도체 장치
CN111078128B (zh) * 2018-10-22 2023-05-16 浙江宇视科技有限公司 数据管理方法、装置及固态硬盘
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
CN109684237B (zh) * 2018-11-20 2021-06-01 华为技术有限公司 基于多核处理器的数据访问方法和装置
US11231873B2 (en) * 2018-12-07 2022-01-25 Intel Corporation Apparatus and method for assigning velocities to write data
JP7305340B2 (ja) * 2018-12-11 2023-07-10 キヤノン株式会社 情報処理装置
US20200192572A1 (en) 2018-12-14 2020-06-18 Commvault Systems, Inc. Disk usage growth prediction system
KR20200077276A (ko) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11010114B2 (en) * 2018-12-31 2021-05-18 Kyocera Document Solutions Inc. Read/write direction-based memory bank control for imaging
JP7219397B2 (ja) * 2019-01-18 2023-02-08 富士通株式会社 情報処理装置、記憶制御装置および記憶制御プログラム
US11194473B1 (en) * 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US10720217B1 (en) * 2019-01-29 2020-07-21 Silicon Storage Technology, Inc. Memory device and method for varying program state separation based upon frequency of use
DE102019102861A1 (de) 2019-02-05 2020-08-06 Hyperstone Gmbh Verfahren und Vorrichtung zur Abschätzung der Abnutzung eines nicht-flüchtigen Informationsspeichers
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11113007B2 (en) * 2019-05-13 2021-09-07 Micron Technology, Inc. Partial execution of a write command from a host system
US11074177B2 (en) * 2019-06-19 2021-07-27 Micron Technology, Inc. Garbage collection adapted to host write activity
US11714572B2 (en) 2019-06-19 2023-08-01 Pure Storage, Inc. Optimized data resiliency in a modular storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11106595B2 (en) * 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
US10996975B2 (en) * 2019-08-22 2021-05-04 Micron Technology, Inc. Hierarchical memory systems
US11327665B2 (en) * 2019-09-20 2022-05-10 International Business Machines Corporation Managing data on volumes
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
CN110825662A (zh) * 2019-11-04 2020-02-21 深圳芯邦科技股份有限公司 一种数据更新方法、系统及相关装置
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
CN113467706A (zh) * 2020-03-30 2021-10-01 华为技术有限公司 一种固态硬盘管理方法及固态硬盘
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11256587B2 (en) 2020-04-17 2022-02-22 Pure Storage, Inc. Intelligent access to a storage device
US11416338B2 (en) 2020-04-24 2022-08-16 Pure Storage, Inc. Resiliency scheme to enhance storage performance
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
DE102020123220A1 (de) * 2020-09-04 2022-03-10 Harman Becker Automotive Systems Gmbh Speichersystem, Verfahren zum Betrieb desselben
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US11513974B2 (en) 2020-09-08 2022-11-29 Pure Storage, Inc. Using nonce to control erasure of data blocks of a multi-controller storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US20210216452A1 (en) * 2021-03-27 2021-07-15 Intel Corporation Two-level main memory hierarchy management
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
KR20220138759A (ko) * 2021-04-06 2022-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US20210232313A1 (en) * 2021-04-15 2021-07-29 Intel Corporation User configurable slc memory size
US20220391131A1 (en) * 2021-06-04 2022-12-08 Fujitsu Limited Computer-readable recording medium, information processing device control method and information processing device
US11755237B2 (en) * 2021-08-31 2023-09-12 Micron Technology, Inc. Overwriting at a memory system
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
EP4300319A4 (en) * 2022-05-18 2024-02-28 Changxin Memory Tech Inc HOT PLUGGING METHOD AND APPARATUS FOR MEMORY MODULE, AND MEMORY MODULE
US20240070072A1 (en) * 2022-08-26 2024-02-29 Micron Technology, Inc. Telemetry-capable memory sub-system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146820A (ja) 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH11353219A (ja) * 1998-06-08 1999-12-24 Matsushita Graphic Communication Systems Inc データ格納装置
JP2001266580A (ja) 2000-01-26 2001-09-28 Samsung Electronics Co Ltd 半導体メモリ装置
JP2007305210A (ja) * 2006-05-10 2007-11-22 Toshiba Corp 半導体記憶装置
JP2008242944A (ja) 2007-03-28 2008-10-09 Toshiba Corp 統合メモリ管理装置及び方法

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6571323B2 (en) * 1999-03-05 2003-05-27 Via Technologies, Inc. Memory-access management method and system for synchronous dynamic Random-Access memory or the like
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
JP4869466B2 (ja) * 2000-02-24 2012-02-08 富士通セミコンダクター株式会社 記憶装置の制御方法、データ管理システム、記録媒体、及び記憶装置
JP4078010B2 (ja) * 2000-03-03 2008-04-23 株式会社日立グローバルストレージテクノロジーズ 磁気ディスク装置及び情報記録方法
US6807106B2 (en) * 2001-12-14 2004-10-19 Sandisk Corporation Hybrid density memory card
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7020762B2 (en) * 2002-12-24 2006-03-28 Intel Corporation Method and apparatus for determining a dynamic random access memory page management implementation
US7174437B2 (en) * 2003-10-16 2007-02-06 Silicon Graphics, Inc. Memory access management in a shared memory multi-processor system
CN1751508A (zh) * 2003-10-20 2006-03-22 松下电器产业株式会社 多媒体数据记录装置、监视系统、以及多媒体数据记录方法
US7032087B1 (en) * 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory
US20050160188A1 (en) * 2004-01-20 2005-07-21 Zohar Bogin Method and apparatus to manage memory access requests
US20080082736A1 (en) * 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
TWI253564B (en) * 2004-06-29 2006-04-21 Integrated Circuit Solution In Method of efficient data management with flash storage system
JP4066381B2 (ja) * 2005-03-01 2008-03-26 三菱電機株式会社 車載電子制御装置
US7224604B2 (en) * 2005-03-14 2007-05-29 Sandisk Il Ltd. Method of achieving wear leveling in flash memory using relative grades
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US7861122B2 (en) * 2006-01-27 2010-12-28 Apple Inc. Monitoring health of non-volatile memory
US7519792B2 (en) * 2006-02-21 2009-04-14 Intel Corporation Memory region access management
US20090132621A1 (en) * 2006-07-28 2009-05-21 Craig Jensen Selecting storage location for file storage based on storage longevity and speed
JP4839164B2 (ja) * 2006-09-15 2011-12-21 株式会社日立製作所 ハードウェアモニタを用いた性能評価システム及び再構築可能な計算機システム
KR100791325B1 (ko) * 2006-10-27 2008-01-03 삼성전자주식회사 비휘발성 메모리를 관리하는 장치 및 방법
US7568068B2 (en) * 2006-11-13 2009-07-28 Hitachi Global Storage Technologies Netherlands B. V. Disk drive with cache having volatile and nonvolatile memory
US8122220B1 (en) * 2006-12-20 2012-02-21 Marvell International Ltd. Memory usage in imaging devices
US8135900B2 (en) 2007-03-28 2012-03-13 Kabushiki Kaisha Toshiba Integrated memory management and memory management method
US20090043831A1 (en) * 2007-08-11 2009-02-12 Mcm Portfolio Llc Smart Solid State Drive And Method For Handling Critical Files
KR101498673B1 (ko) * 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
JP2009087509A (ja) * 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
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
US20090144545A1 (en) * 2007-11-29 2009-06-04 International Business Machines Corporation Computer system security using file system access pattern heuristics
CN101521039B (zh) * 2008-02-29 2012-05-23 群联电子股份有限公司 数据储存系统、控制器及方法
TWI416524B (zh) * 2008-06-25 2013-11-21 Silicon Motion Inc 記憶體裝置和資料儲存方法
US8135907B2 (en) * 2008-06-30 2012-03-13 Oracle America, Inc. Method and system for managing wear-level aware file systems
US8082386B2 (en) * 2008-10-21 2011-12-20 Skymedi Corporation Method of performing wear leveling with variable threshold
US8283933B2 (en) 2009-03-13 2012-10-09 Qualcomm, Incorporated Systems and methods for built in self test jitter measurement
US8166232B2 (en) * 2009-04-02 2012-04-24 Hitachi, Ltd. Metrics and management for flash memory storage life
US8214621B2 (en) * 2009-04-29 2012-07-03 Microsoft Corporation Storage optimization across media with differing capabilities
US8327076B2 (en) * 2009-05-13 2012-12-04 Seagate Technology Llc Systems and methods of tiered caching
US8151137B2 (en) * 2009-05-28 2012-04-03 Lsi Corporation Systems and methods for governing the life cycle of a solid state drive
JP2012033001A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
JP2012033047A (ja) 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム
JP2012033002A (ja) 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146820A (ja) 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
JPH0816482A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH11353219A (ja) * 1998-06-08 1999-12-24 Matsushita Graphic Communication Systems Inc データ格納装置
JP2001266580A (ja) 2000-01-26 2001-09-28 Samsung Electronics Co Ltd 半導体メモリ装置
JP2007305210A (ja) * 2006-05-10 2007-11-22 Toshiba Corp 半導体記憶装置
JP2008242944A (ja) 2007-03-28 2008-10-09 Toshiba Corp 統合メモリ管理装置及び方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2455865A4

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5423879B2 (ja) * 2010-03-29 2014-02-19 日本電気株式会社 データアクセス場所選択システム、方法およびプログラム
US8909614B2 (en) 2010-03-29 2014-12-09 Nec Corporation Data access location selecting system, method, and program
JP2014530422A (ja) * 2011-10-27 2014-11-17 ▲ホア▼▲ウェイ▼技術有限公司 バッファマッピングを制御するための方法およびバッファシステム
JP2014078231A (ja) * 2012-10-08 2014-05-01 Hgst Netherlands B V 低電力・低遅延・大容量ストレージ・クラス・メモリのための装置および方法
JP2014167798A (ja) * 2014-03-24 2014-09-11 ▲ホア▼▲ウェイ▼技術有限公司 バッファマッピングを制御するための方法およびバッファシステム
WO2017090176A1 (ja) * 2015-11-27 2017-06-01 株式会社日立製作所 ストレージシステム
JPWO2017090176A1 (ja) * 2015-11-27 2018-02-15 株式会社日立製作所 ストレージシステム
US10387062B2 (en) 2015-11-27 2019-08-20 Hitachi, Ltd. Storage system with cells changeable between two different level cell modes based on predicted lifetime

Also Published As

Publication number Publication date
KR20120068765A (ko) 2012-06-27
US20120191900A1 (en) 2012-07-26
TWI460588B (zh) 2014-11-11
CN102473140A (zh) 2012-05-23
US20160062660A1 (en) 2016-03-03
EP2455865A4 (en) 2014-12-10
EP2455865A1 (en) 2012-05-23
EP2455865B1 (en) 2020-03-04
CN102473140B (zh) 2015-05-13
US10776007B2 (en) 2020-09-15
TW201106157A (en) 2011-02-16

Similar Documents

Publication Publication Date Title
WO2011007599A1 (ja) メモリ管理装置
US11669444B2 (en) Computing system and method for controlling storage device
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US9256527B2 (en) Logical to physical address mapping in storage systems comprising solid state memory devices
JP5607943B2 (ja) メモリシステム及びその磨耗度管理方法
JP2011022933A (ja) メモリ管理装置を含む情報処理装置及びメモリ管理方法
JP4909963B2 (ja) 統合メモリ管理装置
US7197605B2 (en) Allocating cache lines
JP2011186561A (ja) メモリ管理装置
JP2011186555A (ja) メモリ管理装置及び方法
JP2011186553A (ja) メモリ管理装置
JP2011186562A (ja) メモリ管理装置及び方法
JP2011186563A (ja) メモリ管理装置およびメモリ管理方法
JP5322978B2 (ja) 情報処理装置及び方法
JP2011186558A (ja) メモリ管理装置及び方法
JP2011186554A (ja) メモリ管理装置及び方法
JP2011186559A (ja) メモリ管理装置
JP2011186557A (ja) メモリ管理装置及び方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201080031863.5

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10799661

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 20117029315

Country of ref document: KR

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2010799661

Country of ref document: EP