WO2011093170A1 - メモリ管理装置及びメモリ管理方法 - Google Patents
メモリ管理装置及びメモリ管理方法 Download PDFInfo
- Publication number
- WO2011093170A1 WO2011093170A1 PCT/JP2011/050738 JP2011050738W WO2011093170A1 WO 2011093170 A1 WO2011093170 A1 WO 2011093170A1 JP 2011050738 W JP2011050738 W JP 2011050738W WO 2011093170 A1 WO2011093170 A1 WO 2011093170A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- address
- memory
- write
- memory management
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Definitions
- Embodiments described herein generally relate to a memory management device and a memory management method for managing access to a 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 secondary storage device is used in combination with a volatile semiconductor memory.
- the main memory is a non-volatile storage device
- the stored contents of the main memory are lost when the power is turned off. For this reason, in the conventional information processing apparatus, it is necessary to start up the system at every boot, and it is necessary to read a program or data from the secondary storage device into the main memory, and it takes time to execute the processing.
- the conventional information processing apparatus when the power is turned off, the stored contents of the main memory are not saved. If the conventional information processing apparatus does not shut down properly, the data, system, and program may be destroyed. There is.
- FIG. 1 is a block diagram illustrating an example of a detailed configuration of the information processing apparatus according to the first embodiment.
- FIG. 2 is a flowchart illustrating an example of write back in the information processing apparatus according to the first embodiment.
- FIG. 3 is a flowchart illustrating an example of fetch in the information processing apparatus according to the first embodiment.
- FIG. 4 is a flowchart illustrating an example of the restoration process of the information processing apparatus according to the first embodiment.
- FIG. 5 is a flowchart illustrating an example of entry registration processing of the memory management unit in the information processing apparatus according to the first embodiment.
- FIG. 6 is a block diagram illustrating an example of an information processing apparatus according to the first embodiment in which a normal data storage area and a sequential data storage area are distinguished.
- FIG. 1 is a block diagram illustrating an example of a detailed configuration of the information processing apparatus according to the first embodiment.
- FIG. 2 is a flowchart illustrating an example of write back in the information processing apparatus according to the first embodiment.
- FIG. 7 is a block diagram illustrating an example of a nonvolatile main memory including a plurality of memory units that are effective to be accessed continuously according to the second embodiment.
- FIG. 8 is a block diagram illustrating a first example of a relationship between a logical data storage position and a physical data storage position of the nonvolatile main memory according to the second embodiment.
- FIG. 9 is a block diagram showing a second example of the relationship between the logical data storage location and the physical data storage location of the nonvolatile main memory according to the second embodiment.
- FIG. 10 is a block diagram illustrating a third example of the relationship between the logical data storage position and the physical data storage position of the nonvolatile main memory according to the second embodiment.
- FIG. 11 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the third embodiment.
- FIG. 12 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the fourth embodiment.
- FIG. 13 is a block diagram illustrating an example of a nonvolatile main memory in which programs, data, and state information according to the fifth embodiment are stored in a plurality of data portions (storage areas).
- FIG. 14 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the sixth embodiment.
- FIG. 15 is a block diagram illustrating an example of an information processing apparatus including a hybrid memory according to the seventh embodiment.
- FIG. 16 is a block diagram illustrating an example of a program and data used in the information processing apparatus according to the seventh embodiment.
- the memory management device includes a determination unit, an address generation unit, an order generation unit, and a write control unit.
- the determination unit determines whether the data is sequential data that is continuously accessed or normal data that is not sequential data.
- the address generation unit generates a first write address so that the position indicated by the generated address does not overlap the normal data write position.
- the address generation unit generates a second write address indicating a write position for sequentially storing the sequential data when the determination unit determines that the data is sequential data.
- the order generation unit generates order information indicating the newness of the generated writing.
- the write control unit When the first write address is generated by the address generation unit, the write control unit writes the normal data by associating the order information generated by the order generation unit with the first write address. The write control unit sequentially writes sequential data to the second write address when the second write address is generated by the address generation unit.
- the information processing apparatus including the memory management apparatus uses a nonvolatile semiconductor memory (nonvolatile main memory) as the main storage device (main memory).
- the information processing apparatus includes a processor such as a Micro Processing Unit (MPU) and a nonvolatile main memory.
- MPU Micro Processing Unit
- the access to the memory includes at least one of reading, writing, and erasing of the memory.
- data, a program, or a combination of data and a program is accessed, but in the following, a case where data is mainly accessed will be described as an example in order to simplify the description.
- FIG. 1 is a block diagram illustrating an example of a detailed configuration of the information processing apparatus according to the present embodiment.
- the information processing apparatus 1 includes a processor 2 and a nonvolatile main memory 3.
- the processor 2 can access various devices such as an external secondary storage device, an external access device, and an I / O device (not shown).
- a device such as a secondary storage device, an external access device, or an I / O device may be provided as a part of the information processing device 1.
- non-volatile main memory 3 for example, a flash memory is used.
- a flash memory for example, a flash memory such as a NAND type or a NOR type is applicable.
- a nonvolatile semiconductor memory such as PRAM (Phase change memory), ReRAM (Resistive random access memory), or MRAM (Magnetoresistive random access memory) may be used.
- the nonvolatile main memory 3 includes a core program 7 and a data portion 25 used as the main memory.
- the data portion 25 includes, for each entry, order information 19, V flag 20, data 21 or state.
- Information 24, status information flag 22, MMU information 23, and S flag 26 are included. Details of the configuration of the data unit 25 will be described later.
- the various data 21 in the nonvolatile main memory 3 is stored in the nonvolatile main memory 3 from, for example, the processor 2 or an external secondary storage device, external access device, or I / O device (not shown).
- the processor 2 includes at least one arithmetic core (four in the example of FIG. 1) 91 to 94, a cache memory 10, a write buffer 11, and a memory management unit (MMU) 12.
- the processor 2 further includes a state information generation unit (for example, a PSW control unit) 13 and an access control unit 14.
- the memory management device 201 includes a memory management unit 12 and an access control unit 14. Note that the memory management device 201 may further include a cache memory 10, a write buffer 11, and the like.
- the arithmetic cores 91 to 94 execute programs while accessing the cache memory 10 and the nonvolatile main memory 3.
- the arithmetic cores 91 to 94 can operate in parallel.
- the cache memory 10 stores data accessed by the arithmetic cores 91 to 94 in units of cache lines.
- the line size of the cache memory 10 is, for example, a page size that is a unit of data writing and reading in the nonvolatile main memory 3, a multiple of the page size, a block size that is an erasing unit of data in the nonvolatile main memory 3, Multiple times the block size.
- the block size is a data unit that is a multiple of the page size.
- a write buffer 11 is provided at the output stage of the cache memory 10. Data to be written that is written from the cache memory 10 to the nonvolatile main memory 3 is written to the nonvolatile main memory 3 via the write buffer 11.
- the write buffer 11 accumulates data to be written from the cache memory 10. When the size of the write target data stored in the write buffer 11 becomes an efficient size for writing to the nonvolatile main memory 3, the stored data is written to the nonvolatile main memory 3.
- the line size of the cache memory 10 is set to the page size of the nonvolatile main memory 3, a multiple of the page size, a block size, or a multiple of the block size. As a result, it is possible to increase the efficiency of processing such as data writing from the cache memory 10 to the nonvolatile main memory 3, and to reduce hardware.
- the memory management unit 12 manages the address conversion information 15 that associates the logical address and the physical address for the cache memory 10 and the nonvolatile main memory 3, the continuous block flag 27, and the number of continuous blocks 28 in units of entries.
- the address conversion information 15 is used for converting between a logical address and a physical address.
- the state information generation unit 13 obtains state information (for example, program state word: PSW) representing the state of the processor 2 and the state of the program at a predetermined timing or when necessary.
- the state information includes information necessary for restoring the operating state of the processor 2, such as general-purpose registers, control registers, and program counters.
- the state information generation unit 13 generates state information every time a predetermined time elapses.
- the state information generation unit 13 generates state information every time a write from the processor 2 to the nonvolatile main memory 3 occurs a predetermined number of times. Further, the state information generation unit 13 generates state information when there is an instruction from software such as the operating system 60.
- the access control unit 14 controls access between the processor 2 and the nonvolatile main memory 3 such as writing and reading of data to and from the nonvolatile main memory 3 and erasing of data in the nonvolatile main memory 3.
- writing to and reading from the nonvolatile main memory 3 is performed in units of pages, for example, and erasing is performed in units of blocks, for example.
- the present invention is not limited to this, and writing, reading, and erasing may be performed with other data sizes.
- the access control unit 14 includes an address generation unit 16, an order generation unit 17, and a write control unit 18.
- the address generation unit 16 When data writing from the processor 2 to the nonvolatile main memory 3 occurs, the address generation unit 16 follows a predetermined rule so that the position indicated by the generated address and the writing position of the write target data do not overlap. Generate a write address.
- the address generator 16 sequentially increases the value of the address to be written from a predetermined initial value, and when it reaches a predetermined final value (larger than the initial value), again, The value of the address to be written to is sequentially increased from a predetermined initial value.
- the address generator 16 decreases the value of the address to be written in order from a predetermined initial value, and reaches a predetermined final value (smaller than the initial value). Then, the address value as the write destination is decreased again in order from a predetermined initial value.
- the address generation unit 16 generates the value of the write destination address in order with several spaces (for example, at predetermined intervals) in the first round, and in the second round. In the unused area that was not written in the first round, the address value of the write destination is generated in order, and in the same manner, the write destination in the unused area that was not written in the nth round until the (n-1) th round. The operation of generating the address values in order is repeated, and when the available unused area falls below a predetermined value or a predetermined ratio (for example, when there is no available unused area), the first round The same operation is repeated again.
- the address generation unit 16 refers to the address conversion information 15 of the memory management unit 12 and sets an unused address (physical address) in the address conversion information 15 as a write address. Select as and generate.
- write address generation method As described above, it is possible to perform writing with little overlap between the position indicated by the generated address and the write position of the write target data.
- Write-once writing is executed by the operation of the address generator 16.
- the write-once method is a method of adding write data.
- the order generation unit 17 generates order information for determining the newness of writing. By using this order information, the latest value of this data can be obtained even when the value of certain data is updated by the write-once formula.
- the order generation unit 17 performs a count-up every time writing to the nonvolatile main memory 3 occurs, and uses the count value as order information. By storing this order information in the nonvolatile main memory 3 in association with the data to be written, for example, data relating to the same identification information such as a variable name is written to a plurality of entries in the nonvolatile main memory 3. If it is, it can be determined that the data with the large order information is the latest.
- the write control unit 18 controls a write process from the processor 2 to the nonvolatile main memory 3. Although details will be described later, the nonvolatile main memory 3 manages data in units of entries.
- the write control unit 18 sets the V (Valid) flag 20 of the entry in which the write target data is written to 1 at the time of writing. By using the V flag 20, it is possible to determine whether the entry to be written is valid or invalid. If the write control unit 18 determines that the memory management unit 12 is not using the entry even if the V flag 20 of the entry on the nonvolatile main memory 3 is 1, it is stored in this entry. The data is erased and the V flag 20 is set to 0. Further, when the write control unit 18 writes again to the entry that has been erased, the write control unit 18 sets the V flag 20 of this entry to 1 after performing the write again.
- the write control unit 18 determines that the V flag 20 of a predetermined number or more than a predetermined ratio is 1 (for example, when all the V flags 20 are 1), the write control unit 18 generates exception processing and Unnecessary entries in the nonvolatile main memory 3 are cleaned up, corresponding unnecessary portions are erased, and the V flag 20 is set to zero.
- the operating system 60 is stored in at least one of the cache memory 10 and the nonvolatile main memory 3.
- the arithmetic cores 91 to 94 execute the operating system 60.
- the operating system 60 stored in at least one of the cache memory 10 and the non-volatile main memory 3 and executed by the arithmetic cores 91 to 94 stores data or programs written from the processor 2 to the non-volatile main memory 3. If it occurs, it is determined whether the write target data or program is sequential data or sequential program, normal data or normal program.
- the sequential data is a series of data that is continuously accessed
- the sequential program is a series of programs that are continuously executed.
- Examples of sequential data include stream data (video) and log data.
- the stream data is mainly read and is not frequently written.
- log data is data that is continuously written, and is read less frequently.
- Discrimination of stream data and log data is performed by the operating system 60, and it is discriminated by specifying a data type when a file extension is detected or a memory allocation API (Application Program Interface) is called from an application. Is done.
- a memory allocation API Application Program Interface
- the stream data may not be allocated as memory as sequential data.
- the operating system 60 may detect data that is frequently accessed sequentially based on the past access history, and discriminate the detected data as sequential data.
- the operating system 60 sets the continuous block flag 27 of the entry corresponding to the detected sequential data to the address conversion information 15 as a flag indicating that the data is sequential data or a sequential program.
- the continuous block flag 27 is a flag indicating that the corresponding entry is an entry of a block storing sequential data.
- Normal data and normal program are data that is not sequential data and non-sequential data, respectively.
- the address generator 16 When the data to be written is determined as normal data by the operating system 60, the address generator 16 generates a write address so that the position indicated by the generated address and the write position of the normal data do not overlap. In addition, when the data to be written is determined to be sequential data by the operating system 60, the address generation unit 16 generates a write address indicating a write position for sequentially storing the sequential data. The address generator 16 generates a write address so that sequential data is stored from the beginning of the block area.
- the block area is an area of a memory that stores data in block units.
- the block area is an arbitrary size determined by the size of data stored in block units, and is about 1 MB, for example.
- the block unit is a unit of an integral multiple of the page size.
- the block unit of the block area of the present embodiment may be a so-called “block unit” that is a data erase unit of the NAND flash memory.
- the write control unit 18 writes the sequence information (counter value) generated by the sequence generation unit 17 at the position specified by the address generated by the address generation unit 16 when writing the data to be written to the nonvolatile main memory 3. 19)
- the V flag 20 “1”, the write target data 21, the state information flag 22 “0”, the MMU information 23, and the S flag 26 “1” or “0” are written.
- the status information flag 22 is information indicating whether or not the entry is an entry for writing status information. If the corresponding entry is a status information write, 1 is set in the status information flag 22, and if the corresponding entry is not a status information write, 0 is set in the status information flag 22.
- the MMU information 23 is various information managed by the MMU 12 and includes, for example, address translation information 15, a continuous block flag 27, and the number of continuous blocks 28.
- the write controller 18 writes the generated state information 24 to the nonvolatile main memory 3 when new state information is generated by the state information generator 13.
- the write control unit 18 At the time of writing the status information 24, the write control unit 18, at the position specified by the address generated by the address generation unit 16, the order information 19 generated by the order generation unit 17, the V flag 20 “1”, State information 24, state information flag 22 “1”, MMU information 23, and S flag 26 are written.
- the write controller 18 associates the order information generated by the order generator 17 with the position specified by the generated write address.
- the normal data is written into the nonvolatile main memory 3.
- the write control unit 18 associates the generated write address with the sequence information generated by the sequence generation unit 17 to generate sequential data. Are sequentially written to the nonvolatile main memory 3.
- the write control unit 18 writes the sequential data continuously from the top of the block area of the nonvolatile main memory 3 based on the sequential data write address.
- the write control unit 18 When the sequential control data cannot be stored continuously, the write control unit 18 writes the sequential data over a plurality of block areas and writes the plurality of block areas in a continuous arrangement. Further, the sequential data is written in a plurality of block areas so as to be continuous.
- the write control unit 18 sets 1 as the S flag 26 in the block area of the nonvolatile main memory 3 that stores the sequential data. To relate. When sequential data is continuously written in a plurality of block areas in the nonvolatile main memory 3, the write control unit 18 has a plurality of block areas in the nonvolatile main memory 3 in which the sequential data is continuously written. Is associated with the S flag 26 “1”.
- the S flag 26 is information for determining whether or not the data written in the nonvolatile main memory 3 is sequential data. When the S flag 26 is 1, the data is sequential data. Indicates that it is not sequential data.
- the access control unit 14 converts the logical address to the physical address of the nonvolatile main memory 3 based on the address conversion information 15 of the memory management unit 12 when the processor 2 reads normal data from the nonvolatile main memory 3. Then, the access control unit 14 reads normal data from the nonvolatile main memory 3 based on the physical address.
- the access control unit 14 converts a logical address into a physical address of the nonvolatile main memory 3 based on the address conversion information 15 of the memory management unit 12 when the processor 2 reads sequential data from the nonvolatile main memory 3. In addition, the access control unit 14 continues from the position indicated by the physical address in the nonvolatile main memory 3 based on the address conversion information 15, the continuous block flag 27, the number of consecutive blocks 28, and the S flag 26 of the nonvolatile main memory 3. Sequentially read sequential data.
- the information processing apparatus 1 stores sequential data as continuously as possible from the beginning of the block area.
- the S flag for these continuous block areas is set to 1.
- the memory management unit 12 manages the sequential data address conversion information 15 in units of a plurality of block areas storing the sequential data.
- the memory management unit 12 may manage the address conversion information 15 of sequential data in units of pages or blocks.
- the memory management unit 12 manages the address conversion information 15 of the sequential data with one entry, and sets the continuous block flag 27 of this entry to 1. In addition to setting, the number of continuous blocks (size) is set.
- the continuous block flag 27 is information used to determine whether or not the entry of the access conversion information 15 is information on a plurality of block areas that store sequential data.
- the continuous block flag 27 is 1, it represents an entry related to sequential data, and when it is 0, it represents an entry related to data that is not sequential data.
- the continuous block number 28 is the number of block areas for sequentially storing sequential data.
- the access control unit 14 does not use the continuous block number 28, for example, while the S flag 1 in the nonvolatile main memory 3 continues to be 1, the block in which sequential data continues. It may be determined that it is stored in the area. However, in this case, it is necessary to trace the sequential data from the beginning even when the sequential data is accessed from the middle.
- the address conversion information 15 addresses the plurality of block areas of the nonvolatile main memory 3 in which the sequential data is stored. By managing with one entry of the conversion information 15, the amount of use (number of entries) of the address conversion information 15 can be reduced.
- the access control unit 14 recognizes that access is to sequential data, and determines the number of block areas in which the sequential data to be accessed is stored. Recognize based on 28 consecutive blocks.
- the access control unit 14 sequentially reads the sequential data stored in the nonvolatile main memory 3 based on the physical address and the number of consecutive blocks 28.
- the access control unit 14 when garbage collection occurs for a block area in which sequential data is continuously stored, the access control unit 14 continuously stores the stored contents of the continuous block area that is the migration target as much as possible. Move to another block area.
- FIG. 2 is a flowchart showing an example of write back in the information processing apparatus 1 according to the present embodiment.
- the writing of the cache line to the nonvolatile main memory 3 is a write-once type as described above. Therefore, in the write back of the present embodiment, the cache line of the cache memory 10 is written back to the position indicated by the unused address of the nonvolatile main memory 3 generated by the address generator 16.
- step S1 the address generation unit 16 of the access control unit 14 refers to the memory management unit 12 and determines whether or not the generated address is unused.
- step S2 the address generator 16 of the address controller 14 generates the next address, and the process returns to step S1.
- the currently used page is not overwritten with the new page.
- the address to be written in the nonvolatile main memory 3 is skipped to the address of the next free entry. Note that the next unused address may be detected in advance instead of obtaining an unused address after the write back is started as in steps S1 and S2.
- step S3 the write control unit 18 writes back the write-back target cache line to the position indicated by the generated address in the nonvolatile main memory 3 that is unused.
- the write control unit 18 updates the address conversion information 15 of the memory management unit 12 to indicate the state after the write-back, and for the page to be written back, the current order information 19 and the memory management unit 12
- the MMU information 23 including the address translation information 15 is written into the nonvolatile main memory 3. Further, the write control unit 18 sets the V flag 20 to 1, sets the status information flag 22 to 0, sets the S flag 26 to 0, and writes it to the nonvolatile main memory 3.
- the order information 19, the V flag 20, the page 21, the state information flag 22, the MMU information 23, and the S flag 26 are written to the position of the nonvolatile main memory 3 indicated by the generated address, and the write back is executed.
- step S3 After the write processing in step S3, the address generation unit 16 of the access control unit 14 generates a new address in step S4, and the order generation unit 17 generates new order information.
- the dirty line is a cache line of a cache memory in which the content of data is not reflected in the main memory and the data content is not consistent between the main memory and the cache memory.
- the state information generation unit 13 can restore these devices by operating SYNC or the like. State information 24 is then generated. Then, the writing control unit 18 performs a writing process of the generated state information 24.
- FIG. 3 is a flowchart showing an example of fetching in the information processing apparatus 1 according to the present embodiment.
- step T1 the memory management unit 12 determines whether the access target data is stored in the cache memory 10 (cache hit).
- the arithmetic cores 91 to 94 load the data on the cache memory 10 in step T2.
- step T ⁇ b> 3 the memory management unit 12 determines whether or not the address conversion information 15 regarding the access target data exists in the memory management unit 12. .
- the memory management unit 12 refers to the access target data entry of the address conversion information 15 and sets the logical address in step T 4. Convert to address.
- step T6 the access control unit 14 transfers the access target data from the devices such as the secondary storage device 4, the external access device 5, and the I / O device 6 by software processing. To the main memory 3.
- the memory management unit 12 sets the entry after loading in the address translation information 15 and updates the address translation information 15. Thereafter, the process proceeds to step T4.
- step T7 the access control unit 14 reads the data stored at the physical address position of the nonvolatile main memory 3 and loads it into the cache memory 10. Further, the access control unit 14 feeds the read data directly to the arithmetic cores 91 to 94 if necessary.
- FIG. 4 is a flowchart showing an example of restoration processing (reconfiguration) of the information processing apparatus 1 according to the present embodiment.
- the processor 2 reads the core program 7 stored in the nonvolatile main memory 3, executes the core program 7, and performs restoration.
- the core program 7 is executed by at least one of the arithmetic cores 91 to 94.
- a case where the core program 7 is executed in the arithmetic core 91 will be described as an example.
- step U1 the arithmetic core 91 executing the core program 7 sequentially reads the entries of the data section 25 stored in the nonvolatile main memory 3.
- the arithmetic core 91 that executes the core program 7 obtains the latest entry of the order information 19 from the entries having the V flag 20 of “1”, and obtains the address (latest address) of the latest entry.
- the computation core 91 that executes the core program 7 has the status information 24 (latest status information) with the latest order information 19 and the latest order information 19 among the entries with the status information flag 22 of “1”.
- MMU information 23 (latest MMU information) is obtained.
- step U2 the arithmetic core 91 that executes the core program 7 causes the address generator 16 to generate the next address for the address of the entry with the V flag 20 being “1” and the latest order information 19.
- the arithmetic core 91 that executes the core program 7 causes the order generation unit 17 to generate the next order information for the order information of the entry with the V flag 20 of “1” and the latest order information 19.
- the arithmetic core 91 that executes the core program 7 restores the memory management unit 12 based on the MMU information 23 of the entry with the V flag 20 of “1” and the latest order information 19.
- the arithmetic core 91 that executes the core program 7 loads the state information 24 with the state information flag 22 being “1” and the latest state information 24 with the order information 19, and restores the state of the processor 2 based on the loaded state information 24. .
- step U3 the arithmetic core 91 exits from the execution of the core program 7 and resumes operation from the state indicated by the loaded state information 24.
- FIG. 5 is a flowchart showing an example of entry registration processing of the memory management unit 12 in the information processing apparatus 1 according to the present embodiment.
- the write target is normal data or sequential data
- step V1 the memory management unit 12 determines whether the write target data is sequential data based on the determination result by the operating system 60.
- step V2 the memory management unit 12 sets the continuous block flag 27 of the new entry of the access conversion information 15 to 0, and in step V3, sets the new entry as normal data. It is allocated to the area of the nonvolatile main memory 3 to be stored. Thereafter, Step V7 is executed.
- Step V7 is executed.
- step V7 the memory management unit 12 determines whether a sufficient area has been secured and the allocation has been performed correctly.
- step V8 one of the arithmetic cores executes an exception process by software, and the memory management unit 12 secures a necessary entry and performs the allocation. Thereafter, the entry registration process of the memory management unit 12 ends.
- the information processing apparatus 1 may separate a normal data storage area for storing normal data and a sequential data storage area for storing sequential data.
- FIG. 6 is a block diagram illustrating an example of the information processing apparatus 1 according to the present embodiment in which a normal data storage area and a sequential data storage area are distinguished.
- the nonvolatile main memory 3 includes a normal data storage area 29 and a sequential data storage area 30.
- the normal data storage area 29 and the sequential data storage area 30 are separated or stored in different memory units.
- the sequential data indicated by the operating system 60 or the like among the sequential data is less frequently written.
- the data may be stored in the sequential data storage area 30 preferentially over the sequential data having a high writing frequency.
- the nonvolatile main memory 3 is divided into an MLC (Multi Level Cell) area and an SLC (Single Level Cell) area, and sequential data having a large data size is preferentially allocated to an MLC area having a higher degree of integration than the SLC area.
- the normal data may be preferentially assigned to the SLC area having a lower degree of integration than the MLC area.
- the SLC type NAND flash memory when comparing an SLC type NAND flash memory and an MLC type NAND flash memory, the SLC type NAND flash memory has a higher access speed and higher reliability than an MLC type NAND flash memory.
- the degree of integration of elements is low and it is not suitable for large capacity.
- the MLC type NAND flash memory has a lower access speed and lower reliability than the SLC type NAND flash memory, but has a high degree of device integration and is suitable for large capacity. .
- the durability means durability against writing, for example.
- Reliability means the difficulty of data loss in data reading.
- the sequential data when the sequential data is stream data, it is considered that the number or frequency of rewriting the sequential data is less than the number or frequency of rewriting normal data. Therefore, in the nonvolatile main memory 3, an area where the number of writings is close to the upper limit number of writings (an area where there is no margin for the number of writings) is used as the sequential data storage area 30.
- the normal data storage area 29 may be used.
- the operating system 60 compares the number of times of writing in each area of the nonvolatile main memory 3 with the upper limit number of times of writing, and determines the normal data storage area 29 and the sequential data storage area 30.
- an area with a small number of writes (for example, an area where the number of writes is less than a predetermined number or an area where the number of writes is less than a predetermined ratio of the upper limit number of writes) is changed to the normal data storage area 29 It may be done.
- an area where the number of times of writing is large (for example, an area where the number of times of writing is a predetermined number or more or an area where the number of times of writing is a predetermined ratio of the upper limit number of times of writing)
- the data storage area 30 may be changed.
- sequential data or a sequential program is stored in a block area, and the memory management unit 12 manages the sequential data or sequential program address conversion information 15 in block area units. As a result, it is possible to reduce the amount of address translation information used by the memory management unit 12.
- the access efficiency and management efficiency of sequential data can be improved.
- the operation when managing access to the nonvolatile semiconductor memory, the operation can be speeded up and high reliability can be realized without complicating the hardware configuration. Furthermore, in this embodiment, the lifetime of the nonvolatile semiconductor memory can be extended.
- a nonvolatile semiconductor memory is used as the main memory. Therefore, even when restarting, necessary programs and data are stored in the nonvolatile main memory 3. It is possible to reduce or eliminate system boot, loading of programs and data, and speed up the processing of the information processing apparatus 1. That is, in the information processing apparatus 1 according to the present embodiment, a nonvolatile semiconductor memory is used as the main memory of the processor 2 and the processing progress is written in the nonvolatile main memory 3, so that the information processing apparatus 1 can be used without a backup power source. This state can be maintained. Further, in the information processing apparatus 1, the start of the program is speeded up.
- the state information 24 is stored in the non-volatile main memory 3 every time the generation event of the state information 24 occurs. Even in such a case, the latest state information 24 can be read to restore the state of the processor 2 to the state before the power is turned off, and the operation of the information processing apparatus 1 can be re-executed.
- the cache size of the cache memory 10 and the write size of the nonvolatile main memory 3, the write size of the data program 21 and the state information 24 are made to coincide or have an integer multiple relationship. This eliminates the need to convert the size of data or programs between the cache memory 10 and the nonvolatile main memory 3, reduces the amount of size conversion hardware, and controls the nonvolatile main memory 3. It is possible to simplify the processing of the information processing apparatus 1.
- the write back rate control from the cache memory 10 may be performed if necessary.
- the arithmetic cores 91 to 94 may include a local memory, but the nonvolatile main memory 3 is accessed via a cache memory. Thereby, the access speed can be increased.
- nonvolatile main memory 3 when a NAND flash memory or a NOR flash memory is used as the nonvolatile main memory 3, it can be used as a main memory without performing wear leveling that has been conventionally performed. .
- a plurality of continuous block areas in which sequential data is stored are not necessarily arranged continuously on an actual physical storage medium, and it is efficient to access and transfer data sequentially. And an effective arrangement.
- FIG. 7 is a block diagram showing an example of the nonvolatile main memory 3 including a plurality of memory units that can be effectively accessed in succession.
- the nonvolatile main memory 3 includes a plurality of memory units (memory chips) 31 and 32.
- FIG. 7 illustrates an example in which the number of block areas in which sequential data is stored is four and the number of memory units is two, the number of block areas in which sequential data is stored and the number of memory units may be two or more.
- the access control unit 14 does not store the sequential data SD1 to SD4 continuously in the same memory unit, but stores the memory units 31 as storage destinations. , 32 are switched and the sequential data SD1 to SD4 are stored.
- the 0th block area 31-0 of the first memory unit 31, the 0th block area 32-0 of the second memory unit 32, the first block area 31-1 of the first memory unit 31, the second block Sequential data SD1 to SD4 are stored in the order of the first block area 32-1 of the memory unit 32.
- Access to the 0 block area 32-0 can be overlapped (parallelized) with access to the 0th block area 31-0 of the first memory unit 31, and data access can be performed at high speed.
- FIG. 8 is a block diagram showing a first example of the relationship between the logical data storage position and the physical data storage position of the nonvolatile main memory 3 according to this embodiment.
- sequential data SD1 to SD4 are stored in a logically continuous state. However, physically, the sequential data SD1 to SD4 are stored while the memory units 31 and 32 are switched.
- FIG. 9 is a block diagram showing a second example of the relationship between the logical data storage position and the physical data storage position of the nonvolatile main memory 3 according to this embodiment.
- the memory unit 31 includes an MLC area 31M and an SLC area 31S.
- the memory unit 32 includes an MLC area 32M and an SLC area 32S.
- the normal data is logically stored in the normal data storage area 29, but physically stored in the SLC areas 31S and 32S of the memory units 31 and 32.
- the sequential data is logically stored in the sequential data storage area 30 but physically stored in the MLC areas 31M and 32M of the memory units 31 and 32.
- FIG. 10 is a block diagram showing a third example of the relationship between the logical data storage position and the physical data storage position of the nonvolatile main memory 3 according to this embodiment. In the relationship of FIG. 10, the relationships of FIGS. 8 and 9 are combined.
- the normal data is logically stored in the normal data storage area 29, but physically stored in the SLC areas 31S and 32S of the memory units 31 and 32.
- sequential data SD1 to SD4 are stored in a logically continuous state. Physically, the sequential data SD1 to SD4 are stored in the order of the block areas 31-0, 32-0, 31-1, and 32-1, respectively, while switching the MLC areas 31M and 32M of the memory units 31 and 32.
- sequential data access can be parallelized and speeded up.
- FIG. 11 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the present embodiment.
- the information processing device 33 includes at least one processor (four in the example of FIG. 11) 341 to 344, a control device 35, and the nonvolatile main memory 3.
- the information processing device 33 includes a secondary storage device 4, an external access device 5, and an I / O device 6.
- the nonvolatile main memory 3 stores a core program 7 and an operating system 60.
- the processors 341 to 344 and the control device 35 execute the operating system 60.
- the processors 341 to 344 execute the programs P1 and P2 while accessing the data D1 and D2 of the nonvolatile main memory 3.
- Each of the processors 341 to 344 includes primary cache memories 361 to 364, respectively. When a cache miss occurs in the primary cache memories 361 to 364, the processors 341 to 344 transmit the access target address to the control device 35.
- the control device 35 includes a memory management device 201 including a secondary cache memory 10, a write buffer 11, a state information generation unit 13, an access control unit 14, and a memory management unit 12.
- Various processes such as write-back, fetch, and restoration executed by the control device 35 are the same as those in the first embodiment.
- the cache memory has three or more layers.
- the control device 35 can be applied.
- the processors 341 to 344 access the nonvolatile main memory 3 via the primary cache memories 361 to 364 and the secondary cache memory 10. As a result, the access processing by the processors 341 to 344 can be accelerated.
- the information processing apparatus according to the first to third embodiments includes a writing number check unit and an abnormality detection unit.
- the information processing apparatus 1 according to the first embodiment includes a writing number check unit and an abnormality detection unit.
- the information processing according to the second and third embodiments is described.
- the present invention can be similarly applied to other types of information processing apparatuses such as apparatuses.
- FIG. 12 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the present embodiment.
- the processor 38 of the information processing apparatus 37 includes a memory management apparatus 202. Furthermore, the memory management device 202 includes a memory management unit 39, an access control unit 43, and an abnormality detection unit 46.
- the memory management unit 39 includes write count information 40 indicating the number of writes and bad information 41 for each area (for example, address area or block area) of the nonvolatile main memory 3.
- write count information 40 indicating the number of writes and bad information 41 for each area (for example, address area or block area) of the nonvolatile main memory 3.
- the Bad information 41 is a value indicating an abnormality when the number of writes indicated by the write count information 40 exceeds the upper limit for each area of the nonvolatile main memory 3.
- the Bad information 41 is also stored in the data part 42 of the nonvolatile main memory 3.
- the memory management unit 39 updates the write count information 40 at the timing when the nonvolatile main memory 3 is written (adds 1 to the write count related to the write target area or entry).
- the write control unit 44 of the access control unit 43 stores the write count information 40 in the corresponding area of the nonvolatile main memory 3 in association with the order information 19.
- the access control unit 43 includes a write count check unit 45.
- the write count check unit 45 checks the write count of the write destination area when writing to the nonvolatile main memory 3, and the write count exceeds a predetermined value representing the upper limit or a predetermined ratio with respect to the upper limit. Causes exception handling to occur. In the exception processing, software is started and necessary processing is executed by this software.
- a value indicating an abnormality is set in the Bad information 41 in the entry of the area where the write count exceeds the upper limit for the memory management unit 39 and the nonvolatile main memory 3, and the write count is set to the upper limit. Do not write to entries that exceed.
- the memory management unit 32 prohibits writing to an entry in which the Bad information 41 indicates an abnormality.
- the processor 38 includes an abnormality detection unit 46.
- the abnormality detection unit 46 for example, an ECC circuit or the like is used.
- the abnormality detection unit 46 performs bit error correction, uncorrectable error detection, and exception generation.
- the use is disabled when the write count exceeds the upper limit, but a bit error may occur even before the write count exceeds the upper limit.
- the abnormality detection unit 46 performs bit error detection for the nonvolatile main memory 3. Further, the abnormality detection unit 46 performs correction when the generated bit error can be corrected. Then, when an uncorrectable bit error occurs, the abnormality detection unit 46 generates exception processing and performs necessary processing by software. For example, by this exception processing by the software, a value indicating an abnormality is set in the Bad information 41 in the entry of the area where the uncorrectable error has occurred in the memory management unit 39 and the nonvolatile main memory 3, and the correction cannot be performed. Do not write to the entry where the error occurred. The memory management unit 39 prohibits writing to an entry in which the Bad information 41 indicates an abnormality.
- the rate control of the write back from the cache memory may be performed.
- the storage area of the nonvolatile main memory 3 may be divided according to the type of contents to be written, such as programs, data, and status information.
- FIG. 13 is a block diagram showing an example of the nonvolatile main memory 3 in which programs, data, and status information are stored in a plurality of data parts (storage areas).
- the address generation unit 16 of the access control units 14 and 43 determines whether the content to be written is the program 21a, the data 21b, or the status information 24.
- the address generating unit 16 When the written content is the program 21a, the address generating unit 16 generates an address so that the program 21a to be written is stored in the data portion (storage area) 25A.
- the access control units 14 and 43 When the content to be written is data 21b, the access control units 14 and 43 generate addresses so that the data 21b to be written is stored in the data portion (area) 25B.
- the access control units 14 and 43 generate addresses so that the status information 24 to be written is stored in the data portion (area) 25C.
- the order information 19, the V flag 20, and the MMU information 23 are associated with the contents to be written.
- the S flag 26 is associated with the contents written in the data parts 25A and 25B.
- MMU information 23 may also be stored in another storage area.
- FIG. 14 is a block diagram illustrating an example of the configuration of the information processing apparatus according to the present embodiment.
- the access control unit 14 of the memory management device 201 further includes a performance degradation detection unit 48.
- the core program 7 includes a performance degradation suppressing program 49.
- the writable area (number of writable entries) in the non-volatile main memory 3 decreases, the performance with respect to access to the non-volatile main memory 3 may deteriorate. Further, if there is no writable area, the process cannot be continued.
- the performance degradation detection unit 48 detects whether or not performance degradation has occurred in access from the processor 2 to the nonvolatile main memory 3 in the information processing apparatus 1. For example, when the time for searching for the write area exceeds the set value, the performance deterioration detecting unit 48, when the number of writable entries is equal to or less than the set value or the set ratio, or when the combination of the two occurs. Detect the occurrence of performance degradation.
- the performance degradation detection unit 48 issues an exception command to the processor 2 when the occurrence of performance degradation is detected for access from the processor 2 to the nonvolatile main memory 3.
- the processor 2 executes the performance degradation suppressing program 49 in the core program 7 when an exception command is generated.
- the processor 2 executes processing for suppressing performance degradation such as garbage collection.
- the performance degradation suppressing program 49 searches, for example, the current nonvolatile main memory 3 and combines the items that are collected into one of a plurality of entries into data that is valid in the nonvolatile main memory 3.
- unused data erasesed data
- Various processes such as a process of moving to another storage medium to increase the free space, or a combination of various processes is executed.
- control of each of the above embodiments can also be applied when the nonvolatile semiconductor memory is used for other purposes than the main memory.
- the nonvolatile main memory 3 is used as the main memory.
- nonvolatile main memory 3 instead of the nonvolatile main memory 3 in each of the above embodiments, a hybrid memory in which different types of semiconductor memories having different properties may be used as the main memory.
- FIG. 15 is a block diagram illustrating an example of an information processing apparatus including the hybrid memory according to the present embodiment.
- FIG. 16 is a block diagram illustrating an example of a program and data used in the information processing apparatus according to the present embodiment.
- the information processing apparatus 54 includes at least one processor 56 including a cache memory 55, a memory management apparatus 57, and a hybrid memory 52.
- the processor 56 is connected to the hybrid memory 52 via the memory management device 57.
- the memory management device 57 includes, for example, an access control unit 59 having the same functions as the access control units 14 and 43 according to the above embodiments. Further, the memory management device 57 has the functions of the memory management units 12 and 39. In the present embodiment, the memory management device 57 includes an address generation unit 16, an order information generation unit 17, and a write control unit 18.
- the hybrid memory 52 is configured by combining a plurality of types of semiconductor memories.
- the hybrid memory 52 includes, for example, a volatile semiconductor memory 52a and a nonvolatile semiconductor memory 58.
- the nonvolatile semiconductor memory 58 includes nonvolatile semiconductor memories 52b and 52c.
- DRAM is used as the volatile semiconductor memory 52a, but instead of DRAM, FPM-DRAM (Fast-Page-Mode-Dynamic-Random-Access-Memory), EDO-DRAM (Extended-Data-Out-Dynamic-Random-Access-Memory), SDRAM ( Synchronous (Dynamic) Random (Access) Memory, etc. may be used.
- Non-volatile random access memory such as MRAM (Magnetoresistive Random Access Memory), FeRAM (Ferroelectric Random ⁇ Access Memory), etc.
- MRAM Magneticoresistive Random Access Memory
- FeRAM Feroelectric Random ⁇ Access Memory
- the non-volatile semiconductor memory 52b is, for example, an SLC type NAND flash memory.
- the nonvolatile semiconductor memory 52c is, for example, an MLC type NAND flash memory.
- nonvolatile semiconductor memories 52b and 52c instead of the NAND flash memory.
- the volatile semiconductor memory 52a has higher reliability or durability than the nonvolatile semiconductor memory 52b and has a higher upper limit of the number of accesses. Further, it is assumed that the nonvolatile semiconductor memory 52b has higher reliability or durability than the nonvolatile semiconductor memory 52c and has a higher upper limit of the number of accesses.
- the address generation unit 16 of the access control unit 59 has the access count or access frequency of the volatile semiconductor memory 52a larger than the access count or access frequency of the nonvolatile semiconductor memory 52b, and the access count or access frequency of the nonvolatile semiconductor memory 52b.
- the memory of the write destination in the hybrid memory 52 is selected so that the frequency is greater than the access count or access frequency of the nonvolatile semiconductor memory 52c.
- the write destination memory is selected by the address generator 16 based on information such as the number of accesses, the access frequency, and the importance of the write target data.
- the access frequency is a value representing the frequency of access.
- the access frequency is determined based on, for example, process priority, file format information, access pattern, ELF format segment, and the like.
- the writing frequency of data related to the media file is set low.
- the access frequency is set high, and when the access pattern is a file permission, the access frequency is set low.
- the write frequency of the access frequency for the segment composed of read-only sections is set low.
- the dynamic access frequency is a value obtained based on the number of data accesses in order to perform data arrangement effectively.
- the dynamic access frequency for example, a value calculated based on the number of accesses and information on time can be used.
- the dynamic access frequency may be the number of accesses per unit time.
- the importance is a value representing the importance of the data, and it is assumed that there are two types, a static importance where the value does not change and a dynamic importance where the value changes according to the access status.
- the static importance level is determined based on, for example, data type (file format) and setting information set by the user.
- the dynamic importance is determined based on access time and the like. For example, static importance is set high for data related to an executable file. For example, for data related to media files, the static importance is set to medium level. For example, when the folder in which the file is stored is a trash can or a mailbox, the static importance is set to be low for data related to the file. For example, the dynamic importance of the write target data is set to decrease in proportion to the interval from the last access time to the present.
- the information processing apparatus 54 executes the operating system 60.
- the operating system 60 includes a data unique information management unit 61 and a memory usage information management unit 62.
- the information processing apparatus 54 manages the data unique information 631 to 63n by the data unique information management unit 61 of the operating system 60.
- the data unique information 631 to 63n includes data unique information such as at least one of access frequency, number of accesses, and importance for each data (may be a program or the like) 641 to 64n.
- the data unique information 631 to 63n corresponding to the data 641 to 64n is associated with the data 641 to 64n handled by the information processing apparatus 54.
- the data unique information 631 to 63n includes the access frequency of each data 641 to 64n.
- the data unique information management unit 61 updates the data unique information 631 to 63n of the data 641 to 64n when the data 641 to 64n is written or read.
- the data unique information 631 to 63n may be managed in a state separated from the data 641 to 64n.
- the information processing apparatus 54 manages the memory usage information 65 by the memory usage information management unit 62 of the operating system 60.
- the memory usage information 65 includes information indicating the usage status of the memories 52a to 52c, such as the usage or usage rate of each of the memories 52a to 52c, and the usage or usage rate of each area of each of the memories 52a to 52c.
- the memory usage information 65 includes “the number of accesses / upper limit of the number of accesses” of each of the memories 52a to 52c, “the number of times of access / upper limit of the number of accesses” of each area of each of the memories 52a to 52c, and “ Used capacity / total capacity ”, the number of accesses to each area of the memories 52a to 52c, the access frequency, and the like.
- the memory usage information management unit 62 uses the accessed memory usage or usage rate, the accessed area usage or usage, for the memory usage information 65. Update information such as rate, number of accesses, and access frequency. In the present embodiment, it is assumed that the memory usage information 65 includes the write count information 40 of the fourth embodiment.
- the information processing apparatus 54 manages the memory specific information 66 by the operating system 60.
- the memory specific information 66 includes memory specific information such as the upper limit (lifetime information, durability information) of the number of accesses of each of the memories 52a to 52c of the hybrid memory 52.
- the address generation unit 16 of the access control unit 59 uses the information indicating the relationship between data and files managed by the operating system 60, the data unique information 631 to 63n, etc. The frequency and the importance are obtained, and the evaluation value of the write target data is calculated based on the access count, access frequency, and importance of the write target data. The evaluation value increases as the number of accesses, access frequency, and importance increase. Then, the address generation unit 16 selects the write destination memory based on the evaluation value of the write target data, the memory use information 65, the memory specific information 66, and the memory selection threshold value used in memory selection. To do.
- the address generation unit 16 selects the volatile semiconductor memory 52a with priority over the nonvolatile semiconductor memory 52b, and prioritizes the volatile semiconductor memory 52b with respect to the volatile semiconductor memory 52c, as the evaluation value increases. select.
- the memory selection threshold value may be set in advance as one element of the memory specific information 66, or may be dynamically calculated based on the memory usage information 65 or the like.
- the access generation unit 16 generates an address for performing write-once writing described in the first to sixth embodiments with respect to a selected memory among the plurality of memories in the hybrid memory 52.
- the memory management device 57 examines the data unique information 631, the memory usage information 65, and the memory unique information 66 of the write target data 641 when writing the data 641, and the volatile semiconductor memory 52 a, the nonvolatile semiconductor memory 52 b, and the nonvolatile semiconductor One of the memories 52c having sufficient write endurance is selected as a write destination memory. This selection makes it possible to use a high-performance, inexpensive, large-capacity memory for a long period of time.
- the memory management device 57 selects the SLC type nonvolatile semiconductor memory 52b having high durability as the write destination when the access frequency of the write target data 641 is high.
- the MLC type nonvolatile semiconductor memory 52c having low durability is selected as the write destination.
- the access control unit 59 of the memory management device 57 selects and stores, for example, an MLC type NAND flash memory 52c as a write destination of the stream data. Since stream data tends to be written less frequently, the performance of the memory is sufficiently ensured even when the MLC type NAND flash memory 52c is used as a write destination.
- the access control unit 59 of the memory management device 57 has been described in each of the above embodiments when one of the SLC type nonvolatile semiconductor memory 52b and the MLC type nonvolatile semiconductor memory 52c is selected.
- the addresses are sequentially issued, and when the issued address is an unused area, a write-once write operation for storing the write target data 641 in the unused area is executed. Thereby, smoothing of the access frequency in the nonvolatile semiconductor memories 52b and 52c can be realized.
- the memory selection threshold used by the memory management device 57 will be described more specifically.
- the write destination is selected from the heterogeneous memories 52a to 52c of the hybrid memory 52 based on the evaluation value calculated based on the access count, access frequency, and importance, and the memory selection threshold.
- Memory is selected. For example, the memory selection threshold is changed based on the memory usage rate.
- the usage rate may be “access count / upper limit of access count” or “memory use area capacity / memory total capacity”.
- the operating system 60 determines the first memory selection threshold so that the higher the usage rate of the volatile semiconductor memory 52a, the easier it is to select the nonvolatile semiconductor memory 52 than the volatile semiconductor memory 52a as the write destination. To do.
- the operating system 60 determines the second memory selection threshold value such that the higher the usage rate of the nonvolatile semiconductor memory 52b, the easier it is to select the nonvolatile semiconductor memory 52c as the write destination than the nonvolatile semiconductor memory 52b. To do.
- the operating system 60 and the memory management device 57 select a write destination memory based on the magnitude relationship between the evaluation value and the first memory selection threshold value and the second memory selection threshold value.
- control of the present embodiment is also applicable when the hybrid memory 52 is used for other purposes than the main memory.
- the volatile semiconductor memory 52a, the SLC type nonvolatile semiconductor memory 52b, and the MLC type nonvolatile semiconductor memory 52c are selectively used based on the number of data accesses, the access frequency, and the importance.
- the main memory used in the information processing apparatus 54 can be reduced in cost, the storage capacity can be increased, and the life can be extended.
- the hybrid memory 52 includes nonvolatile semiconductor memories 52b and 52c that are cheaper and have a larger capacity than the volatile semiconductor memory 52a, the hybrid memory 52 is cheaper and has a larger capacity than when only the volatile semiconductor memory 52a is used as the main memory. can do.
- hardware resources can be simplified by performing write-once writing after memory selection.
- the components described in the above embodiments can be freely combined and can be freely divided.
- the access control units 14 and 43 and the memory management units 12 and 39 may be combined.
- the functions of the memory management unit 12, the state information generation unit 13, and the access control units 13 and 43 may be realized by at least one of the arithmetic cores 91 to 94.
- the function of determining whether or not the data is sequential data by the operating system 60 may be realized by hardware such as the access control unit 14.
- the address generator 16, the order information generator 17, and the write controller 18 can be freely combined.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
実施形態において、メモリ管理装置(201)は、アドレス発生部(16)、順序発生部(17)、書き込み制御部(18)を具備する。アドレス発生部(16)は、プロセッサ(2)から不揮発性半導体メモリ(3)に書き込まれるデータが通常データの場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、書き込まれるデータがシーケンシャルデータの場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させる。順序発生部(17)は、発生した書き込みの新しさを表わす順序情報を発生させる。書き込み制御部(18)は、第1の書き込みアドレスが発生された場合に、第1の書き込みアドレスに対して、発生された順序情報を対応付けて通常データを書き込み、第2の書き込みアドレスが発生された場合に、第2の書き込みアドレスに対して、シーケンシャルデータをシーケンシャルに書き込む。
Description
ここで説明される実施形態は、一般的に、メモリへのアクセスを管理するメモリ管理装置及びメモリ管理方法に関する。
従来の情報処理装置においては、プロセッサの主記憶装置(メインメモリ)として、例えばDynamic Random Access Memory(DRAM)などの揮発性半導体メモリが使用されている。さらに、従来の情報処理装置では、揮発性半導体メモリと組み合わせて2次記憶装置が使用される。
従来の情報処理装置では、メインメモリは不揮発性の記憶装置であるため、電源を切るとメインメモリの記憶内容は消えてしまう。このため、従来の情報処理装置では、毎回ブート時に、システムの立ち上げが必要であり、プログラム又はデータを2次記憶装置からメインメモリに読み込む必要があり、処理を実行するまでに時間を要する。
また、従来の情報処理装置では、電源が切れた場合にメインメモリの記憶内容が保存されないため、従来の情報処理装置が正しくシャットダウンしなかった場合に、データ、システム、プログラムが破壊される可能性がある。
以下、図面を参照しながら各実施形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
(第1の実施形態)
本実施形態において、メモリ管理装置は、判断部、アドレス発生部、順序発生部、書き込み制御部を具備する。判断部は、プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、データが、連続的にアクセスされるシーケンシャルデータであるか、シーケンシャルデータではない通常データであるか判断する。アドレス発生部は、判断部によってデータが通常データと判断された場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させる。アドレス発生部は、判断部によってデータがシーケンシャルデータと判断された場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させる。順序発生部は、発生した書き込みの新しさを表わす順序情報を発生させる。書き込み制御部は、アドレス発生部によって第1の書き込みアドレスが発生された場合に、第1の書き込みアドレスに対して、順序発生部によって発生された順序情報を対応付けて通常データを書き込む。書き込み制御部は、アドレス発生部によって第2の書き込みアドレスが発生された場合に、第2の書き込みアドレスに対して、シーケンシャルデータをシーケンシャルに書き込む。
本実施形態において、メモリ管理装置は、判断部、アドレス発生部、順序発生部、書き込み制御部を具備する。判断部は、プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、データが、連続的にアクセスされるシーケンシャルデータであるか、シーケンシャルデータではない通常データであるか判断する。アドレス発生部は、判断部によってデータが通常データと判断された場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させる。アドレス発生部は、判断部によってデータがシーケンシャルデータと判断された場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させる。順序発生部は、発生した書き込みの新しさを表わす順序情報を発生させる。書き込み制御部は、アドレス発生部によって第1の書き込みアドレスが発生された場合に、第1の書き込みアドレスに対して、順序発生部によって発生された順序情報を対応付けて通常データを書き込む。書き込み制御部は、アドレス発生部によって第2の書き込みアドレスが発生された場合に、第2の書き込みアドレスに対して、シーケンシャルデータをシーケンシャルに書き込む。
本実施形態に係るメモリ管理装置を備える情報処理装置は、主記憶装置(メインメモリ)として、不揮発性の半導体メモリ(不揮発性メインメモリ)を用いる。情報処理装置は、例えばMicro Processing Unit(MPU)などのようなプロセッサと、不揮発性メインメモリとを含む。
本実施形態において、メモリに対するアクセスとは、メモリに対する読み出し、書き込み、消去のうちの少なくとも一つを含む。
本実施形態においては、データ、プログラム、又は、データとプログラムの組合せがアクセスされるが、以下においては、説明を簡略化するために主にデータがアクセスされる場合を例として説明する。
図1は、本実施形態に係る情報処理装置の詳細構成の一例を示すブロック図である。
情報処理装置1は、プロセッサ2と不揮発性メインメモリ3とを具備する。プロセッサ2は、図示しない外部の2次記憶装置、外部アクセス装置、I/O装置などの各種装置をアクセス可能である。なお、2次記憶装置、外部アクセス装置、I/O装置などの装置が、情報処理装置1の一部として備えられるとしてもよい。
不揮発性メインメモリ3としては、例えばフラッシュメモリが用いられる。フラッシュメモリとしては、例えば、NAND型、NOR型などのフラッシュメモリを適用可能である。また、不揮発性メインメモリ3として、PRAM(Phase change memory)、ReRAM(Resistive Random access memory)、MRAM(Magnetoresistive Random Access Memory)のような不揮発性の半導体メモリを用いてもよい。
不揮発性メインメモリ3内に、コアプログラム7とメインメモリとして使用されるデータ部25とが含まれており、データ部25には、エントリごとに、順序情報19、Vフラグ20、データ21又は状態情報24、状態情報フラグ22、MMU情報23、Sフラグ26が含まれる。データ部25の構成の詳細は後述する。
不揮発性メインメモリ3における上記の各種のデータ21は、例えば、プロセッサ2、又は、図示しない外部の2次記憶装置、外部アクセス装置、I/O装置から不揮発性メインメモリ3に格納される。
プロセッサ2は、少なくとも一つの演算コア(この図1の例では4つ)91~94、キャッシュメモリ10、ライトバッファ11、メモリ管理ユニット(MMU)12を具備する。プロセッサ2は、さらに、状態情報生成部(例えばPSW制御部)13、アクセス制御部14を具備する。
本実施形態に係るメモリ管理装置201は、メモリ管理ユニット12、アクセス制御部14を具備する。なお、メモリ管理装置201は、さらに、キャッシュメモリ10、ライトバッファ11などを具備するとしてもよい。
演算コア91~94は、キャッシュメモリ10、不揮発性メインメモリ3にアクセスしつつ、プログラムを実行する。演算コア91~94は、並列に動作可能である。
キャッシュメモリ10は、演算コア91~94がアクセスするデータをキャッシュライン単位で格納する。キャッシュメモリ10のラインサイズは、例えば、不揮発性メインメモリ3のデータの書き込み及び読み出しサイズの単位であるページサイズ、ページサイズの複数倍、不揮発性メインメモリ3のデータの消去単位であるブロックサイズ、ブロックサイズの複数倍とする。ブロックサイズは、ページサイズの複数倍のデータ単位である。
キャッシュメモリ10の出力段にはライトバッファ11が設けられている。キャッシュメモリ10から不揮発性メインメモリ3に書き込まれる書き込み対象データは、ライトバッファ11経由で、不揮発性メインメモリ3に書き込まれる。
ライトバッファ11は、キャッシュメモリ10からの、書き込み対象データを蓄積する。ライトバッファ11に蓄積されている書き込み対象データのサイズが、不揮発性メインメモリ3に書き込みを行うために効率的なサイズになると、この蓄積されたデータは、不揮発性メインメモリ3に書き込まれる。
上記のように、本実施形態においては、キャッシュメモリ10のラインサイズを不揮発性メインメモリ3のページサイズ、ページサイズの複数倍、ブロックサイズ、又はブロックサイズの複数倍とする。これにより、キャッシュメモリ10から不揮発性メインメモリ3へのデータの書き込み等の処理を効率化でき、ハードウェアの削減を図ることができる。
メモリ管理ユニット12は、エントリ単位で、キャッシュメモリ10及び不揮発性メインメモリ3についての論理アドレスと物理アドレスとを関係付けたアドレス変換情報15と、連続ブロックフラグ27、連続ブロック数28を管理する。アドレス変換情報15は、論理アドレスと物理アドレスとの間の変換を行うために用いられる。
状態情報生成部13は、所定の又は必要に応じたタイミングで、プロセッサ2の状態及びプログラムの状態を表わす状態情報(例えばプログラム状態語:PSW)を求める。状態情報には、プロセッサ2の動作状態を復元するために必要な情報、例えば汎用レジスタ、制御レジスタ、プログラムカウンタなどの情報が含まれている。例えば、状態情報生成部13は、所定時間を経過する毎に、状態情報を生成する。また、例えば、状態情報生成部13は、所定の回数、プロセッサ2から不揮発性メインメモリ3への書き込みが発生するたびに、状態情報を生成する。さらに、状態情報生成部13は、オペレーティングシステム60等のソフトウェアからの指示があった場合に、状態情報を生成する。
アクセス制御部14は、プロセッサ2から不揮発性メインメモリ3へのデータの書き込み及び読み出し、不揮発性メインメモリ3におけるデータの消去など、プロセッサ2と不揮発性メインメモリ3との間におけるアクセスを制御する。本実施形態において、不揮発性メインメモリ3への書き込み及び読み出しは、例えばページ単位で行われ、消去は例えばブロック単位で行われるとする。しかし、これには限定されず、他のデータサイズによって書き込み、読み出し、消去が行われるとしてもよい。
本実施形態において、アクセス制御部14は、アドレス発生部16、順序発生部17、書き込み制御部18を具備する。
アドレス発生部16は、プロセッサ2から不揮発性メインメモリ3へのデータの書き込みが発生すると、所定の規則にそって、発生済みのアドレスの示す位置と書き込み対象データの書き込み位置が重ならないように、書き込みアドレスを発生させる。
書き込みアドレスの発生方法の例として、アドレス発生部16は、所定の初期値から順に書き込み先となるアドレスの値を増加させていき、所定の最終値(初期値より大)に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を増加させていく。
また、書き込みアドレスの発生方法の別の例として、アドレス発生部16は、所定の初期値から順に書き込み先となるアドレスの値を減少させていき、所定の最終値(初期値より小)に達すると、再び、所定の初期値から順に書き込み先となるアドレスの値を減少させていく。
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部16は、1巡目において数スペースを空けて(例えば所定の間隔で)順に書き込み先のアドレスの値を発生させ、2巡目において1巡目で書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させ、以下同様に、n巡目においてn-1巡目までで書き込みのなされなかった未使用領域において書き込み先のアドレスの値を順に発生させる動作を繰り返し、利用可能な未使用領域が所定値又は所定割合以下になった場合(例えば、利用可能な未使用領域がなくなった場合)に、上記の1巡目から再び同様の動作を繰り返す。
さらに、書き込みアドレスの発生方法の別の例として、アドレス発生部16が、メモリ管理ユニット12のアドレス変換情報15を参照して、アドレス変換情報15で未使用のアドレス(物理アドレス)を、書き込みアドレスとして選択し、発生させる。
以上のような書き込みアドレスの発生方法を用いることにより、発生済みのアドレスの示す位置と書き込み対象データの書き込み位置の重なりが少ない書き込みが可能となる。このアドレス発生部16の動作によって追記式の書き込みが実行される。ここで、追記式とは、書き込みデータを追加していく方式であるとする。
順序発生部17は、書き込みの新しさを判断するための順序情報を発生させる。この順序情報を用いることにより、追記式によりあるデータの値を更新した場合であってもこのデータの最新の値を求めることが可能になる。本実施形態において、順序発生部17は、不揮発性メインメモリ3への書き込みが発生するたびに、カウントアップを実行し、このカウント値を順序情報として用いる。この順序情報を書き込み対象のデータと関係付けて不揮発性メインメモリ3に格納することで、例えば変数名などのような識別情報が同じデータに関する書き込みが不揮発性メインメモリ3の複数のエントリになされている場合に、順序情報の大きいデータが最新であることを判断可能となる。
書き込み制御部18は、プロセッサ2から不揮発性メインメモリ3への書き込み処理を制御する。詳細は後述するが、不揮発性メインメモリ3は、データをエントリ単位で管理する。書き込み制御部18は、書き込み時に、書き込み対象データが書き込まれたエントリのV(Valid)フラグ20を1にセットする。このVフラグ20を用いることで、書き込み対象のエントリが有効か無効かを判断可能となる。また、書き込み制御部18は、不揮発性メインメモリ3上のエントリのVフラグ20が1であってもメモリ管理ユニット12で使用されていないと判断された場合には、このエントリに格納されているデータを消去し、Vフラグ20を0とする。さらに、書き込み制御部18は、この消去を行ったエントリに再度書き込みを行う場合に、再度書き込みを行った上で、このエントリのVフラグ20を1とする。
書き込み制御部18は、所定数又は所定割合以上のエントリのVフラグ20が1となったと判断した場合(例えば全てのVフラグ20が1となった場合)に、例外処理を発生させ、ソフトウェアにより不揮発性メインメモリ3における不要エントリのクリーンアップを行い、該当する不要部分を消去してVフラグ20を0とする。
本実施形態において、オペレーティングシステム60は、キャッシュメモリ10と不揮発性メインメモリ3とのうちの少なくとも一方に記憶されている。演算コア91~94は、オペレーティングシステム60を実行する。キャッシュメモリ10と不揮発性メインメモリ3とのうちの少なくとも一方に記憶されており、演算コア91~94によって実行されるオペレーティングシステム60は、プロセッサ2から不揮発性メインメモリ3に書き込まれるデータ又はプログラムが発生した場合に、この書き込み対象データ又はプログラムが、シーケンシャルデータ又はシーケンシャルプログラムであるか、通常データ又は通常プログラムであるか判断する。
シーケンシャルデータとは、連続的にアクセスされる一連のデータであり、シーケンシャルプログラムとは、連続的に実行される一連のプログラムであるとする。
シーケンシャルデータとしては、例えば、ストリームデータ(映像)、ログデータなどがある。ストリームデータについては、読み出しが中心であり、書き込みがなされる頻度は少ない。これとは逆に、ログデータは、継続的に書き込みが行われるデータであり、読み出しが行われる頻度は少ない。
ストリームデータ及びログデータの判別は、オペレーティングシステム60によって行われ、ファイルの拡張子の検出、又は、アプリケーションからメモリ割付API(Application Program Interface)が呼ばれた場合にデータ種別が指定されることにより判別される。なお、ストリームデータが編集可能な設定の場合などには、このストリームデータはシーケンシャルデータとしてメモリ割付されない場合がある。
シーケンシャルデータの判別の方法として、オペレーティングシステム60が、過去のアクセス履歴に基づいてシーケンシャルにアクセスされる頻度の高いデータを検出し、この検出されたデータをシーケンシャルデータと判別してもよい。
シーケンシャルデータが判別された場合、例えば、オペレーティングシステム60は、アドレス変換情報15に対して、検出されたシーケンシャルデータに対応するエントリの連続ブロックフラグ27を、シーケンシャルデータ又はシーケンシャルプログラムであることを示すフラグにセットする。ここで、連続ブロックフラグ27は、対応するエントリがシーケンシャルデータを格納するブロックのエントリであることを表すフラグである。
通常データ及び通常プログラムは、それぞれ、シーケンシャルデータではないデータ及びシーケンシャルデータではないプログラムである。
以下においては、シーケンシャルデータの場合について説明するが、シーケンシャルプログラムについても、シーケンシャルデータと同様に扱うことができる。
また、本実施形態では、シーケンシャルデータをブロック単位で管理する場合を例に説明するが、例えばページ単位など他のサイズで管理する場合も同様である。
アドレス発生部16は、書き込まれるデータがオペレーティングシステム60によって通常データと判断された場合に、発生済みのアドレスの示す位置と通常データの書き込み位置が重ならないように書き込みアドレスを発生させる。また、アドレス発生部16は、書き込まれるデータがオペレーティングシステム60によってシーケンシャルデータと判断された場合に、シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す書き込みアドレスを発生させる。アドレス発生部16は、シーケンシャルデータがブロック領域の先頭から格納されるように、書き込みアドレスを発生させる。ここで、ブロック領域とは、ブロック単位のデータを格納するメモリの一領域である。ブロック領域は、ブロック単位で格納するデータのサイズにより決まる任意のサイズであり、例えば、1MB程度である。ブロック単位は、ベージサイズの整数倍の単位である。また、不揮発性メインメモリ3としてNAND型フラッシュメモリを用いる場合、例えば、本実施形態のブロック領域のブロック単位を、NAND型フラッシュメモリのデータの消去単位であるいわゆる「ブロック単位」としてもよい。
書き込み制御部18は、不揮発性メインメモリ3への書き込み対象のデータの書き込み時に、アドレス発生部16によって発生されたアドレスにより指定される位置に、順序発生部17によって発生された順序情報(カウンタ値)19、Vフラグ20「1」、書き込み対象データ21、状態情報フラグ22「0」、MMU情報23、Sフラグ26「1」又は「0」を書き込む。
ここで、状態情報フラグ22は、当該エントリが状態情報の書き込みのためのエントリであるか否かを表わす情報である。該当エントリが状態情報の書き込みである場合には、状態情報フラグ22には1がセットされ、該当エントリが状態情報の書き込みでない場合には、状態情報フラグ22には0がセットされる。
MMU情報23は、MMU12で管理されている各種情報であり、例えばアドレス変換情報15、連続ブロックフラグ27、連続ブロック数28を含む。
書き込み制御部18は、状態情報生成部13によって新規の状態情報が発生された場合には、不揮発性メインメモリ3に対して、発生された状態情報24の書き込みを行う。この状態情報24の書き込み時は、書き込み制御部18は、アドレス発生部16によって発生されたアドレスによって指定される位置に、順序発生部17によって発生された順序情報19、Vフラグ20「1」、状態情報24、状態情報フラグ22「1」、MMU情報23、Sフラグ26を書き込む。
書き込み制御部18は、アドレス発生部16によって通常データの書き込みアドレスが発生された場合に、発生された書き込みアドレスによって指定される位置に対して、順序発生部17によって発生された順序情報を対応付けて通常データを不揮発性メインメモリ3に書き込む。
また、書き込み制御部18は、アドレス発生部16によってシーケンシャルデータの書き込みアドレスが発生された場合に、発生された書き込みアドレスに対して、順序発生部17によって発生された順序情報を対応付けてシーケンシャルデータを不揮発性メインメモリ3にシーケンシャルに書き込む。
ここで、書き込み制御部18は、シーケンシャルデータの書き込みアドレスに基づいて、シーケンシャルデータを、不揮発性メインメモリ3のブロック領域の先頭から連続するように書き込む。
書き込み制御部18は、シーケンシャルデータをすべて連続して格納できない場合には、シーケンシャルデータを複数のブロック領域に亘って書き込み、この複数のブロック領域が連続的な配置となるように書き込む。さらに、複数のブロック領域内でシーケンシャルデータが連続となるように書き込む。
そして、書き込み制御部18は、シーケンシャルデータが不揮発性メインメモリ3のブロック領域の先頭から連続的に書き込まれる場合に、このシーケンシャルデータを格納する不揮発性メインメモリ3のブロック領域にSフラグ26として1を関係付ける。書き込み制御部18は、不揮発性メインメモリ3において複数のブロック領域に連続してシーケンシャルデータが書き込まれる場合には、このシーケンシャルデータが連続的に書き込まれている不揮発性メインメモリ3の複数のブロック領域に対して、Sフラグ26「1」を関係付ける。
Sフラグ26は、不揮発性メインメモリ3に書き込まれたデータがシーケンシャルデータであるか否かを判断するための情報であり、1の場合にはシーケンシャルデータであることを表し、0の場合にはシーケンシャルデータでないことを表す。
アクセス制御部14は、プロセッサ2が不揮発性メインメモリ3から通常データを読み出す場合、メモリ管理ユニット12のアドレス変換情報15に基づいて、論理アドレスを不揮発性メインメモリ3の物理アドレスに変換する。そして、アクセス制御部14は、物理アドレスに基づいて、不揮発性メインメモリ3から通常データを読み出す。
アクセス制御部14は、プロセッサ2が不揮発性メインメモリ3からシーケンシャルデータを読み出す場合、メモリ管理ユニット12のアドレス変換情報15に基づいて、論理アドレスを不揮発性メインメモリ3の物理アドレスに変換する。加えて、アクセス制御部14は、アドレス変換情報15、連続ブロックフラグ27、連続ブロック数28、不揮発性メインメモリ3のSフラグ26に基づいて、不揮発性メインメモリ3において物理アドレスの示す位置から連続的に格納されているシーケンシャルデータを、順次読み出す。
以下に、本実施形態に係るアドレス変換情報15によるシーケンシャルデータの取り扱い例についてより詳細に説明する。
上述したように、情報処理装置1は、シーケンシャルデータを、可能な限りブロック領域の先頭から連続して格納する。
シーケンシャルデータが、ブロック領域の先頭から連続する複数のブロック領域に亘って格納された場合に、これらの複数の連続するブロック領域に関するSフラグは1に設定される。
シーケンシャルデータが連続した複数のブロック領域に亘って格納される場合、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を、シーケンシャルデータを格納する複数ブロック領域単位で管理する。また、別の管理方法として、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を、ページ又はブロック単位で管理するとしてもよい。
例えば、シーケンシャルデータが複数の連続するブロック領域に亘って格納される場合に、メモリ管理ユニット12は、シーケンシャルデータのアドレス変換情報15を1エントリで管理し、このエントリの連続ブロックフラグ27に1を設定するとともに、連続するブロック数(サイズ)を設定する。
ここで、連続ブロックフラグ27は、アクセス変換情報15のエントリが、シーケンシャルデータを格納する複数ブロック領域についての情報か否か判断するために用いられる情報である。連続ブロックフラグ27は、1の場合には、シーケンシャルデータに関するエントリであることを表し、0の場合には、シーケンシャルデータではないデータに関するエントリであることを表す。連続ブロック数28は、シーケンシャルデータを連続して格納するブロック領域の数である。
また、本実施形態において、アクセス制御部14は、連続ブロック数28を用いなくても、例えば、不揮発性メインメモリ3におけるSフラグ1が連続して1であり続ける間、シーケンシャルデータが連続したブロック領域に格納されていると判断してもよい。ただし、この場合には、シーケンシャルデータを途中からアクセスする場合であっても、シーケンシャルデータを最初から辿る必要がある。
このように、シーケンシャルデータが、不揮発性メインメモリ3の連続する複数のブロック領域に格納される場合、アドレス変換情報15において、シーケンシャルデータが格納されている不揮発性メインメモリ3の複数ブロック領域をアドレス変換情報15の1エントリで管理することにより、アドレス変換情報15の使用量(エントリ数)を減らすことができる。
アクセス制御部14は、アドレス変換情報15において論理アドレスの示すエントリの連続ブロックフラグ27が1の場合、シーケンシャルデータに対するアクセスであると認識し、アクセス対象のシーケンシャルデータが格納されているブロック領域数を連続ブロック数28に基づいて認識する。
そして、アクセス制御部14は、物理アドレスと連続ブロック数28に基づいて、不揮発性メインメモリ3に格納されているシーケンシャルデータを順次読み出す。
本実施形態において、アクセス制御部14は、シーケンシャルデータを連続して格納するブロック領域に対するガーベージコレクションが発生した場合に、この移動対象となった連続のブロック領域の記憶内容を、可能な限り、連続する他のブロック領域に移動する。
図2は、本実施形態に係る情報処理装置1におけるライトバックの一例を示すフローチャートである。
キャッシュメモリ10のデータは、演算コア91~94により更新されるため、必要に応じて又は定期的にキャッシュメモリ10のキャッシュラインを不揮発性メインメモリ3のエントリに書き戻す、ライトバックが必要となる。以下において、本実施形態の情報処理装置1のライトバックの処理工程について説明する。本実施形態では不揮発性メインメモリ3へのキャッシュラインの書き込みは、上述のように追記式である。このため、本実施形態のライトバックでは、キャッシュメモリ10のキャッシュラインは、アドレス発生部16により発生される不揮発性メインメモリ3の未使用のアドレスの示す位置に書き戻される。
ライトバックが実行される場合、ステップS1において、アクセス制御部14のアドレス発生部16は、メモリ管理ユニット12を参照し、発生されたアドレスが未使用か否か判断する。
発生されたアドレスが使用中の場合、ステップS2において、アドレス制御部14のアドレス発生部16は、次のアドレスを発生させ、処理は、上記ステップS1に戻る。これにより、現在使用中のページは新しいページで上書きされないことになる。不揮発性メインメモリ3における書き込み対象のアドレスは、次の空いているエントリのアドレスまでスキップされる。なお、ステップS1,S2のように、ライトバックが開始されてから未使用のアドレスを求めるのではなく、予め次の未使用のアドレスを検出しておくとしてもよい。
発生されたアドレスが使用中でない場合、ステップS3において、書き込み制御部18は、ライトバック対象のキャッシュラインを、不揮発性メインメモリ3の未使用であり発生されたアドレスの示す位置に書き戻す。
この時、書き込み制御部18は、メモリ管理ユニット12のアドレス変換情報15を、書き戻し後の状態を表わすように更新し、ライトバック対象のページについて、現在の順序情報19、メモリ管理ユニット12のアドレス変換情報15を含むMMU情報23を、不揮発性メインメモリ3に書き込む。また、書き込み制御部18は、Vフラグ20を1とし、状態情報フラグ22を0とし、Sフラグ26を0とし、不揮発性メインメモリ3に書き込む。
これにより、順序情報19、Vフラグ20、ページ21、状態情報フラグ22、MMU情報23、Sフラグ26が、発生したアドレスによって示される不揮発性メインメモリ3の位置に書き込まれ、ライトバックが実行される。
上記ステップS3の書き込み処理の後、アクセス制御部14のアドレス発生部16は、ステップS4において、新たなアドレスを発生させ、順序発生部17は、新たな順序情報を発生させる。
状態情報24を不揮発性メインメモリ3に書き込む場合において、キャッシュメモリ10中にダーティラインが存在する場合には、まずこのダーティラインが不揮発性メインメモリ3に書き戻される。ダーティラインとは、メインメモリにデータの内容が反映されておらず、メインメモリとキャッシュメモリとの間でデータの内容が整合していないキャッシュメモリのキャッシュラインをいう。
さらに、外部の2次記憶装置、外部アクセス装置、I/O装置などの装置において異常が発生している場合には、状態情報生成部13は、SYNCなどの操作により、これらの装置を復元可能な状態とし、その後状態情報24を生成する。そして、書き込み制御部18が、生成された状態情報24の書き込み処理を行う。
図3は、本実施形態に係る情報処理装置1におけるフェッチの一例を示すフローチャートである。
ステップT1において、メモリ管理ユニット12は、アクセス対象のデータがキャッシュメモリ10に格納されているか(キャッシュヒットか)否か判断する。
アクセス対象のデータがキャッシュメモリ10に格納されている場合、ステップT2において、演算コア91~94は、キャッシュメモリ10上のデータをロードする。
アクセス対象のデータがキャッシュメモリ10に格納されていない場合、ステップT3において、メモリ管理ユニット12は、メモリ管理ユニット12内に、このアクセス対象のデータに関するアドレス変換情報15が存在するか否か判断する。
メモリ管理ユニット12のアドレス変換情報15にアクセス対象データのアドレスに関するエントリが存在する場合、ステップT4において、メモリ管理ユニット12は、アドレス変換情報15のアクセス対象データのエントリを参照し、論理アドレスを物理アドレスに変換する。
メモリ管理ユニット12のアドレス変換情報15にアクセス対象データのアドレスに関するエントリが存在しない場合、ステップT5において、例外処理が実行される。
例外処理が実行されると、ステップT6において、アクセス制御部14は、ソフトウェア処理により、アクセス対象データを、例えば、2次記憶装置4、外部アクセス装置5、I/O装置6などの装置から不揮発性メインメモリ3にロードする。メモリ管理ユニット12は、ロード後のエントリをアドレス変換情報15にセットし、アドレス変換情報15の更新を行う。その後処理は、ステップT4に移る。
ステップT4の後、ステップT7において、アクセス制御部14は、不揮発性メインメモリ3の物理アドレスの位置に格納されているデータを読み出し、キャッシュメモリ10へロードする。また、アクセス制御部14は、必要であれば、直接、読み出したデータを演算コア91~94にフィードする。
図4は、本実施形態に係る情報処理装置1の復元処理(再構成)の一例を示すフローチャートである。
例えば、情報処理装置1の電源が再投入されると、プロセッサ2は、不揮発性メインメモリ3に格納されているコアプログラム7を読み出し、コアプログラム7を実行し、復元を行う。コアプログラム7は、演算コア91~94のうちの少なくとも一つによって実行される。以下においては、演算コア91においてコアプログラム7が実行される場合を例として説明する。
ステップU1において、コアプログラム7を実行する演算コア91は、不揮発性メインメモリ3に格納されたデータ部25のエントリを順に読み出す。
そして、コアプログラム7を実行する演算コア91は、Vフラグ20が「1」のエントリの中から、順序情報19が最新のエントリを求め、この最新のエントリのアドレス(最新のアドレス)を求める。さらに、コアプログラム7を実行する演算コア91は、状態情報フラグ22が「1」のエントリの中から、順序情報19が最新のエントリの状態情報24(最新の状態情報)、順序情報19が最新のエントリのMMU情報23(最新のMMU情報)を求める。
ステップU2において、コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリのアドレスに対する次のアドレスを、アドレス発生部16に発生させる。
コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリの順序情報に対する次の順序情報を、順序発生部17に発生させる。
コアプログラム7を実行する演算コア91は、Vフラグ20が「1」で順序情報19が最新のエントリのMMU情報23に基づいて、メモリ管理ユニット12を復元する。
コアプログラム7を実行する演算コア91は、状態情報フラグ22が「1」で順序情報19が最新の状態情報24をロードし、このロードした状態情報24に基づいて、プロセッサ2の状態を復元する。
ステップU3において、演算コア91は、コアプログラム7の実行から抜けて、ロードされた状態情報24の示す状態から動作を再開する。
図5は、本実施形態に係る情報処理装置1におけるメモリ管理ユニット12のエントリの登録処理の一例を示すフローチャートである。この図5では、書き込み対象が通常データ又はシーケンシャルデータの場合を例に説明するが、書き込み対象が通常プログラム又はシーケンシャルプログラムの場合も同様である。
ステップV1において、メモリ管理ユニット12は、オペレーティングシステム60による判断結果に基づいて、書き込み対象データがシーケンシャルデータか否か判断する。
書き込み対象データがシーケンシャルデータでない場合、ステップV2において、メモリ管理ユニット12は、アクセス変換情報15の新たなエントリの連続ブロックフラグ27を0に設定し、ステップV3において、新たなエントリを、通常データを格納する不揮発性メインメモリ3のエリアに割り付ける。その後、ステップV7が実行される。
書き込み対象データがシーケンシャルデータの場合、ステップV4において、メモリ管理ユニット12は、アクセス変換情報15の新たなエントリの連続ブロックフラグ27を1に設定し、ステップV5において、アクセス変換情報15の新たなエントリに対してオペレーティングシステム60から受けた連続ブロック数28を設定し、ステップV6において、新たなエントリを、シーケンシャルデータを格納する不揮発性メインメモリ3のエリアに割り付ける。その後、ステップV7が実行される。
ステップV7において、メモリ管理ユニット12は、十分なエリアが確保され、割り付けが正しく行われたか判断する。
割り付けが正しく行われた場合、メモリ管理ユニット12のエントリ登録処理は終了する。
割り付けが正しく行われていない場合、ステップV8において、いずれかの演算コアは、ソフトウェアによる例外処理を実行し、メモリ管理ユニット12は、必要なエントリを確保し、割り付けを行う。その後、メモリ管理ユニット12のエントリ登録処理は終了する。
本実施形態において、情報処理装置1は、通常データを格納する通常データ格納領域と、シーケンシャルデータを格納するシーケンシャルデータ格納領域とを分けているとしてもよい。
図6は、通常データ格納領域と、シーケンシャルデータ格納領域とを区別した本実施形態に係る情報処理装置1の一例を示すブロック図である。
情報処理装置1において、不揮発性メインメモリ3は、通常データ格納領域29と、シーケンシャルデータ格納領域30とを具備する。通常データ格納領域29と、シーケンシャルデータ格納領域30とは、分離されているか、又は、異なるメモリユニットに格納される。
例えば、シーケンシャルデータ格納領域30のアクセス回数の上限が、通常データ格納領域29のアクセス回数の上限よりも少ない場合、シーケンシャルデータのうちオペレーティングシステム60などから書き込み頻度が小さいことが示されたシーケンシャルデータは、書き込み頻度が大きいシーケンシャルデータよりも優先的にシーケンシャルデータ格納領域30に格納されるとしてもよい。
例えば、不揮発性メインメモリ3をMLC(Multi Level Cell)領域とSLC(Single Level Cell)領域とに分け、データサイズの大きいシーケンシャルデータはSLC領域よりも集積度が高いMLC領域に優先的に割り付けられ、通常データはMLC領域よりも集積度が低いSLC領域に優先的に割り付けられるとしてもよい。
例えば、SLCタイプのNAND型フラッシュメモリとMLCタイプのNAND型フラッシュメモリとを比較すると、SLCタイプのNANDフラッシュメモリは、MLCタイプのNAND型フラッシュメモリと比べて、アクセス速度は速く、信頼性は高いが、素子の集積度が低く、大容量化に向かない。これに対して、MLCタイプのNAND型フラッシュメモリは、SLCタイプのNAND型フラッシュメモリと比べて、アクセス速度は遅く、信頼性は低いが、素子の集積度が高く、大容量化に向いている。
なお、本実施形態において、耐久性とは、例えば書き込みに対する耐久性を意味する。信頼性とは、データ読み出しにおけるデータの欠損の起こりにくさを意味する。
本実施形態において、シーケンシャルデータがストリームデータの場合、このシーケンシャルデータが書き換えられる回数又は頻度は通常データが書き換えられる回数又は頻度よりも少ないと考えられる。そこで、不揮発性メインメモリ3のうち、書き込み回数が上限書き込み回数に近い領域(書き込み回数に余裕がない領域)がシーケンシャルデータ格納領域30として使用され、書き込み回数が上限書き込み回数まで余裕がある領域が通常データ格納領域29として使用されるとしてもよい。例えば、オペレーティングシステム60によって、不揮発性メインメモリ3の各領域における書き込み回数と上限書き込み回数との比較と、通常データ格納領域29とシーケンシャルデータ格納領域30との決定が行われる。
シーケンシャルデータ格納領域30であっても、書き込み回数の少ない領域(例えば、書き込み回数が所定数未満の領域又は書き込み回数が上限書き込み回数の所定の割合未満の領域)は、通常データ格納領域29に変更されるとしてもよい。これとは逆に、通常データ格納領域29であっても、書き込み回数の多い領域(例えば、書き込み回数が所定数以上の領域又は書き込み回数が上限書き込み回数の所定の割合以上の領域)は、シーケンシャルデータ格納領域30に変更されるとしてもよい。
以上説明した本実施形態に係る情報処理装置1の効果について説明する。
本実施形態では、シーケンシャルデータ又はシーケンシャルプログラムを不揮発性メインメモリ3に対して書き込む場合に、シーケンシャルデータ又はシーケンシャルプログラムをブロック単位で連続的に書き込む。これにより、連続的にアクセスされるシーケンシャルデータ又はシーケンシャルプログラムに対するアクセス効率の向上を図ることができる。
さらに、本実施形態では、シーケンシャルデータ又はシーケンシャルプログラムをブロック領域で格納し、メモリ管理ユニット12がシーケンシャルデータ又はシーケンシャルプログラムのアドレス変換情報15をブロック領域単位で管理する。これにより、メモリ管理ユニット12のアドレス変換情報の使用量を減らすことが可能となる。
以上のように、本実施形態では、シーケンシャルデータのアクセス効率及び管理効率を向上させることができる。
また、本実施形態においては、不揮発性半導体メモリへのアクセスを管理する場合において、ハードウェア構成を複雑化させることなく、動作を高速化させ、高い信頼性を実現させることができる。さらに、本実施形態においては、不揮発性半導体メモリの寿命を延ばすことができる。
また、従来の情報処理装置では、メインメモリに揮発性メモリが使用されているため、再起動のたびにオペレーティングシステム60、プログラム、データをロードする必要があった。これに対して、本実施形態に係る情報処理装置1においては、メインメモリに不揮発性半導体メモリが使用されるため、再起動する場合であっても、必要なプログラム及びデータが不揮発性メインメモリ3に格納されており、システムブート、プログラム及びデータのロードを削減すること又は不要とすることができ、情報処理装置1の処理を高速化させることができる。すなわち、本実施形態に係る情報処理装置1では、プロセッサ2のメインメモリに不揮発性半導体メモリを使用し、処理経過を不揮発性メインメモリ3に書き込むことにより、バックアップ電源がなくても情報処理装置1の状態を保持可能としている。また、情報処理装置1においては、プログラムの起動が高速化される。
さらに、本実施形態に係る情報処理装置1においては、状態情報24の生成イベントが発生するたびに、状態情報24が不揮発性メインメモリ3に格納されるため、電源が急に切断された場合であっても、最新の状態情報24を読み出してプロセッサ2の状態を電源切断前の状態に復元させることができ、情報処理装置1の動作を再実行させることができる。
さらに、本実施形態においては、キャッシュメモリ10のキャッシュサイズと、不揮発性メインメモリ3の書き込みサイズ、データ・プログラム21及び状態情報24の書き込みサイズとを一致又は整数倍の関係とする。これにより、キャッシュメモリ10と不揮発性メインメモリ3との間で、データ又はプログラムのサイズを変換させる必要がなく、サイズの変換ハードウェア量を削減させることができ、不揮発性メインメモリ3に対する制御を簡略化でき、情報処理装置1の処理を効率化させることができる。
さらに、本実施形態においては、必要であれば、キャッシュメモリ10からのライトバックのレート制御を行うとしてもよい。演算コア91~94はローカルメモリを備えるとしてもよいが、不揮発性メインメモリ3には、キャッシュメモリを介してアクセスする。これにより、アクセス速度を高速化することができる。
さらに、本実施形態において、例えば、不揮発性メインメモリ3として、NAND型フラッシュメモリ又はNOR型フラッシュメモリなどを用いた場合、従来行われていたウェアレベリングを行うことなくメインメモリとして利用することができる。
(第2の実施形態)
本実施形態においては、第1の実施形態の変形例について説明する。
本実施形態においては、第1の実施形態の変形例について説明する。
本実施形態において、シーケンシャルデータが格納される連続する複数のブロック領域は、必ずしも実際の物理記憶媒体上で連続して配置されている必要はなく、シーケンシャルにデータをアクセス及びデータ転送することが効率的、効果的な配置であればよい。
図7は、連続してアクセスすることが効果的な複数のメモリユニットを備える不揮発性メインメモリ3の一例を示すブロック図である。
不揮発性メインメモリ3は、複数のメモリユニット(メモリチップ)31,32を含む。この図7では、シーケンシャルデータの格納されるブロック領域数が4、メモリユニットが2つの場合を例に説明するが、シーケンシャルデータの格納されるブロック領域数及びメモリユニットは2以上であればよい。
不揮発性メインメモリ3が複数のメモリユニット31,32を含む場合、アクセス制御部14は、同じメモリユニットに対して連続してシーケンシャルデータSD1~SD4を格納するのではなく、格納先のメモリユニット31,32を切り替えながらシーケンシャルデータSD1~SD4を格納する。
例えば、第1のメモリユニット31の第0ブロック領域31-0、第2のメモリユニット32の第0ブロック領域32-0、第1のメモリユニット31の第1ブロック領域31-1、第2のメモリユニット32の第1ブロック領域32-1、という順序で、シーケンシャルデータSD1~SD4を格納する。この場合、第1のメモリユニット31の第0ブロック領域31-0にアクセスしつつ、第2のメモリユニット32の第0ブロック領域32-0をアクセス可能であり、第2のメモリユニット32の第0ブロック領域32-0へのアクセスを、第1のメモリユニット31の第0ブロック領域31-0へのアクセスと重複(並列化)させることができ、高速にデータアクセスを行うことができる。
図8は、本実施形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第1の例を示すブロック図である。
シーケンシャルデータ格納領域30には、論理的に連続した状態でシーケンシャルデータSD1~SD4が格納される。しかしながら、物理的には、シーケンシャルデータSD1~SD4は、メモリユニット31,32を切り替えながら格納される。
図9は、本実施形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第2の例を示すブロック図である。
この図9において、メモリユニット31は、MLC領域31MとSLC領域31Sを具備する。メモリユニット32は、MLC領域32MとSLC領域32Sを具備する。
不揮発性メインメモリ3において、通常データは、論理的には、通常データ格納領域29に格納されるが、物理的には、メモリユニット31,32のSLC領域31S,32Sに格納される。
シーケンシャルデータは、論理的には、シーケンシャルデータ格納領域30に格納されるが、物理的には、メモリユニット31,32のMLC領域31M,32Mに格納される。
図10は、本実施形態に係る不揮発性メインメモリ3の論理的なデータ格納位置と物理的なデータ格納位置との関係の第3の例を示すブロック図である。この図10の関係では、上記図8及び図9の関係が組み合わされている。
不揮発性メインメモリ3において、通常データは、論理的には、通常データ格納領域29に格納されるが、物理的には、メモリユニット31,32のSLC領域31S,32Sに格納される。
シーケンシャルデータ格納領域30には、論理的に連続した状態でシーケンシャルデータSD1~SD4が格納される。物理的には、シーケンシャルデータSD1~SD4は、メモリユニット31,32のMLC領域31M,32Mを切り替えながら、それぞれブロック領域31-0,32-0,31-1,32-1の順で格納される。
本実施形態においては、シーケンシャルデータのアクセスを並列化することができ、高速化することができる。
(第3の実施形態)
本実施形態においては、上記第1及び第2の実施形態に係る情報処理装置1の変形例であり、キャッシュメモリが階層化された構成を持つ情報処理装置について説明する。
本実施形態においては、上記第1及び第2の実施形態に係る情報処理装置1の変形例であり、キャッシュメモリが階層化された構成を持つ情報処理装置について説明する。
図11は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
情報処理装置33は、少なくとも一つのプロセッサ(この図11の例では4つ)341~344、制御装置35、不揮発性メインメモリ3を備えている。
情報処理装置33は、2次記憶装置4、外部アクセス装置5、I/O装置6を具備する。不揮発性メインメモリ3には、コアプログラム7、オペレーティングシステム60が格納されている。プロセッサ341~344及び制御装置35は、オペレーティングシステム60を実行する。プロセッサ341~344は、不揮発性メインメモリ3のデータD1,D2をアクセスしつつ、プログラムP1,P2を実行する。
それぞれのプロセッサ341~344は、それぞれ1次キャッシュメモリ361~364を備えている。プロセッサ341~344は、1次キャッシュメモリ361~364においてキャッシュミスが発生すると、アクセス対象のアドレスを制御装置35に送信する。
制御装置35は、2次キャッシュメモリ10、ライトバッファ11、状態情報生成部13、アクセス制御部14とメモリ管理ユニット12とを含むメモリ管理装置201を備えている。この制御装置35によって実行される例えばライトバック、フェッチ、復元などの各種処理は、上記第1の実施形態の場合と同様である。
なお、本実施形態においては、1次キャッシュメモリ361~364と2次キャッシュメモリ10とから構成される2階層の場合を例に説明しているが、キャッシュメモリの階層は3階層以上であっても同様に制御装置35を適用可能である。
本実施形態において、プロセッサ341~344は、1次キャッシュメモリ361~364、2次キャッシュメモリ10を介して不揮発性メインメモリ3をアクセスする。これにより、プロセッサ341~344によるアクセス処理を高速化することができる。
(第4の実施形態)
本実施形態においては、上記第1乃至第3の実施形態に係る情報処理装置に、書き込み回数チェック部及び異常検出部を備えた場合について説明する。なお、本実施形態においては、上記第1の実施形態に係る情報処理装置1に書き込み回数チェック部及び異常検出部を備えた場合について説明するが、第2及び第3の実施形態に係る情報処理装置など他の形態の情報処理装置についても同様に適用可能である。
本実施形態においては、上記第1乃至第3の実施形態に係る情報処理装置に、書き込み回数チェック部及び異常検出部を備えた場合について説明する。なお、本実施形態においては、上記第1の実施形態に係る情報処理装置1に書き込み回数チェック部及び異常検出部を備えた場合について説明するが、第2及び第3の実施形態に係る情報処理装置など他の形態の情報処理装置についても同様に適用可能である。
図12は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
本実施形態に係る情報処理装置37のプロセッサ38は、メモリ管理装置202を具備する。さらに、メモリ管理装置202は、メモリ管理ユニット39、アクセス制御部43、異常検出部46を具備する。
本実施形態に係るメモリ管理ユニット39は、アドレス変換情報15に加えて、不揮発性メインメモリ3の領域(例えばアドレス領域又はブロック領域)毎に、書き込み回数を表わす書き込み回数情報40と、Bad情報41とを備える。
Bad情報41は、不揮発性メインメモリ3のそれぞれの領域について、書き込み回数情報40の示す書き込み回数が上限を超えた場合に、異常を示す値となる。なお、Bad情報41は、不揮発性メインメモリ3のデータ部42にも格納される。
本実施形態において、メモリ管理ユニット39は、不揮発性メインメモリ3が書き込まれるタイミングで、書き込み回数情報40を更新する(書き込み対象の領域又はエントリに関する書き込み回数に1を加える)。
アクセス制御部43の書き込み制御部44は、書き込み回数情報40を、順序情報19に対応づけて不揮発性メインメモリ3の該当領域に格納する。
アクセス制御部43には、書き込み回数チェック部45が備えられている。書き込み回数チェック部45は、不揮発性メインメモリ3への書き込み時に、書き込み先の領域の書き込み回数をチェックし、この書き込み回数が上限を表わす所定値を超える場合又は上限に対する所定の割合になった場合に例外処理を発生させる。例外処理では、ソフトウェアが起動され、このソフトウェアにより必要な処理が実行される。
例えば、このソフトウェアによる例外処理では、メモリ管理ユニット39と不揮発性メインメモリ3に対して、書き込み回数が上限を超えた領域のエントリにおけるBad情報41に異常を示す値をセットし、書き込み回数が上限を超えたエントリへの書き込みを行わないようにする。メモリ管理ユニット32は、Bad情報41が異常を表わすエントリへの書き込みを禁止する。
さらに、本実施形態に係る情報処理装置37において、プロセッサ38は、異常検出部46を備えている。異常検出部46としては例えばECC回路などが用いられる。異常検出部46は、ビット誤り訂正、訂正不可能エラー検出、例外発生を行う。
上記の書き込み回数チェック部45では、書き込み回数が上限を超えた場合に使用不可としているが、書き込み回数が上限を超える前であってもビットエラーが発生する場合がある。
このようなエラーに対応するために、異常検出部46は、不揮発性メインメモリ3に対するビットエラー検出を行う。さらに、異常検出部46は、発生したビットエラーを訂正可能な場合には、訂正を行う。そして、異常検出部46は、訂正不可能なビットエラーが発生した場合に、例外処理を発生させ、ソフトウェアにより必要な処理を行う。例えば、このソフトウェアによる例外処理により、メモリ管理ユニット39と不揮発性メインメモリ3に対して、訂正不可能なエラーの発生した領域のエントリにおけるBad情報41に異常を示す値をセットし、訂正不可能なエラーの発生したエントリに対して書き込みを行わないようにする。メモリ管理ユニット39は、Bad情報41が異常を示すエントリへの書き込みを禁止する。
以上説明した本実施形態においては、不揮発性メインメモリ3への書き込みに異常が発生した場合に、異常の発生した領域の使用禁止、ユーザへの取り替え指示、など適当な処理をソフトウェアにより行うことができる。
上記各実施形態においては、キャッシュメモリからのライトバックのレート制御を行うとしてもよい。
(第5の実施形態)
上記各実施形態において、不揮発性メインメモリ3の格納領域は、例えばプログラム、データ、状態情報など書き込まれる内容の種類に応じて分けられるとしてもよい。
上記各実施形態において、不揮発性メインメモリ3の格納領域は、例えばプログラム、データ、状態情報など書き込まれる内容の種類に応じて分けられるとしてもよい。
図13は、プログラム、データ、状態情報が複数のデータ部(格納領域)に分けて格納される不揮発性メインメモリ3の一例を示すブロック図である。
アクセス制御部14,43のアドレス発生部16は、書き込まれる内容がプログラム21aか、データ21bか、状態情報24かを判断する。そして、アドレス発生部16は、書き込まれる内容がプログラム21aの場合には、書き込み対象のプログラム21aがデータ部(格納領域)25Aに格納されるようにアドレスを発生させる。アクセス制御部14,43は、書き込まれる内容がデータ21bの場合には、書き込み対象のデータ21bがデータ部(領域)25Bに格納されるようにアドレスを発生させる。アクセス制御部14,43は、書き込まれる内容が状態情報24の場合には、書き込み対象の状態情報24がデータ部(領域)25Cに格納されるようにアドレスを発生させる。それぞれの書き込まれる内容には、順序情報19、Vフラグ20、MMU情報23、が関連付けられる。
データ部25A,25Bに書き込まれる内容には、Sフラグ26が関連付けられる。
なお、MMU情報23についても、他の格納領域に格納されるとしてもよい。
(第6の実施形態)
本実施形態においては、上記第1乃至第5の実施形態の変形例について説明する。なお、以下においては上記第1の実施形態の変形例について説明するが、上記第2乃至第5の実施形態の変形例についても同様である。
本実施形態においては、上記第1乃至第5の実施形態の変形例について説明する。なお、以下においては上記第1の実施形態の変形例について説明するが、上記第2乃至第5の実施形態の変形例についても同様である。
図14は、本実施形態に係る情報処理装置の構成の一例を示すブロック図である。
メモリ管理装置201のアクセス制御部14は、さらに、性能低下検出部48を具備する。
コアプログラム7は、性能低下抑制プログラム49を具備する。
不揮発性メインメモリ3において書き込み可能な領域(書き込み可能なエントリ数)が少なくなると、不揮発性メインメモリ3に対するアクセスについて性能が低下する場合がある。また、書き込み可能な領域がなくなると、処理の継続が不可能である。
性能低下検出部48は、情報処理装置1においてプロセッサ2から不揮発性メインメモリ3へのアクセスについて性能低下が発生しているかを検出する。例えば、性能低下検出部48は、書き込み領域を探す時間が設定値を超えた場合、書き込み可能エントリ数が設定値又は設定割合以下になった場合、又は、この2つの組み合わせが発生した場合に、性能低下の発生を検出する。
性能低下検出部48は、プロセッサ2から不揮発性メインメモリ3へのアクセスについて性能低下の発生が検出された場合に、プロセッサ2に例外コマンドを発する。
プロセッサ2は、例外コマンドが発生された場合に、コアプログラム7内の性能低下抑制プログラム49を実行する。
この性能低下抑制プログラム49にそって、プロセッサ2は、ガーベージコレクションなどのような性能低下を抑制する処理を実行する。
性能低下抑制プログラム49は、例えば、現在の不揮発性メインメモリ3内をサーチし、複数のエントリのうち一つにまとめられるものを一つにまとめる処理、不揮発性メインメモリ3内で有効なデータと未使用のデータ(消去されたデータ)とが混在する場合に、有効なデータのみを集めて再配置する処理、アクセス頻度の低いデータ、重要度又は優先度の低いデータ、使用頻度の低いデータを他の記憶媒体に移動させて空き領域を増やす処理などのような各種の処理、又は各種の処理の組み合わせを実行する。
以上説明した本実施形態においては、書き込み可能領域が少なくなるなどの理由で情報処理装置1の性能が低下することを防止することができる。
性能低下抑制プログラム49の処理を、通常の処理と並行して実行することで、通常の処理への影響を最小限に抑えることができる。
また、性能低下抑制プログラム49の処理を行う専用のプロセッサが備えられることで、例外処理によってプロセッサ2の能力が低下することを抑制することができる。
上記各実施形態の制御は、不揮発性半導体メモリをメインメモリではない他の目的で利用する場合にも適用可能である。
(第7の実施形態)
上記各実施形態においては、メインメモリとして、不揮発性メインメモリ3が利用されている。
上記各実施形態においては、メインメモリとして、不揮発性メインメモリ3が利用されている。
しかしながら、上記各実施形態における不揮発性メインメモリ3に代えて、性質が互いに異なる異種の半導体メモリが混合された混成メモリがメインメモリとして利用されるとしてもよい。
図15は、本実施形態に係る混成メモリを含む情報処理装置の一例を示すブロック図である。
図16は、本実施形態に係る情報処理装置に用いられるプログラム及びデータの一例を示すブロック図である。
情報処理装置54は、キャッシュメモリ55を備えた少なくとも一つのプロセッサ56、メモリ管理装置57、混成メモリ52を具備する。
プロセッサ56は、メモリ管理装置57を介して、混成メモリ52に接続されている。メモリ管理装置57は、例えば、上記各実施形態に係るアクセス制御部14,43と同様の機能を具備するアクセス制御部59を備えている。また、メモリ管理装置57は、メモリ管理ユニット12,39の機能を具備する。本実施形態において、メモリ管理装置57は、アドレス発生部16、順序情報発生部17、書き込み制御部18を具備するとする。
混成メモリ52は、複数の種別の半導体メモリを組み合わせて構成される。本実施形態では、混成メモリ52は、例えば、揮発性半導体メモリ52a、不揮発性半導体メモリ58を具備する。さらに、この不揮発性半導体メモリ58は、不揮発性半導体メモリ52b,52cを備える。
揮発性半導体メモリ52aとしては、例えば、DRAMが利用されるが、DRAMに代えて、FPM-DRAM(Fast Page Mode Dynamic Random Access Memory)、EDO-DRAM(Extended Data Out Dynamic Random Access Memory)、SDRAM(Synchronous Dynamic Random Access Memory)などを用いてもよい。DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限が無いのであれば、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリを、揮発性半導体メモリ52aに代えて、採用してもよい。
不揮発性半導体メモリ52bは、例えば、SLCタイプのNAND型フラッシュメモリである。不揮発性半導体メモリ52cは、例えばMLCタイプのNAND型フラッシュメモリである。
なお、不揮発性半導体メモリ52b,52cとして、NAND型フラッシュメモリに代えて、他の不揮発性半導体メモリを用いることもできる。
本実施形態において、揮発性半導体メモリ52aは、不揮発性半導体メモリ52bよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。また、不揮発性半導体メモリ52bは、不揮発性半導体メモリ52cよりも信頼性又は耐久性が高く、アクセス回数の上限が多いとする。
アクセス制御部59のアドレス発生部16は、揮発性半導体メモリ52aのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ52bのアクセス回数又はアクセス頻度よりも多くなり、不揮発性半導体メモリ52bのアクセス回数又はアクセス頻度が、不揮発性半導体メモリ52cのアクセス回数又はアクセス頻度よりも多くなるように、混成メモリ52における書き込み先のメモリを選択する。
このように、書き込み先のメモリは、書き込み対象データのアクセス回数、アクセス頻度、重要度などの情報に基づいてアドレス発生部16によって選択される。
アクセス頻度は、アクセスの発生する頻度を表す値である。アクセス頻度は、例えば、プロセスの優先度、ファイルの形式情報、アクセスパターン、ELFフォーマットのセグメントなどに基づいて決定される。例えば、メディアファイルに関連するデータの書き込み頻度は、低く設定される。例えば、アクセスパターンがシステムコールで指定されたパーミッションの場合には、アクセス頻度は高く設定され、アクセスパターンがファイルのパーミッションの場合には、アクセス頻度は低く設定される。例えば、リードオンリーのセクションで構成されるセグメントに対するアクセス頻度のうちの書き込み頻度は、低く設定される。アクセス頻度には、値が変化しない静的アクセス頻度と、値がアクセス状況に応じて変化する動的アクセス頻度との2種類があるとする。動的アクセス頻度は、データ配置を効果的に行うためにデータのアクセス回数に基づいて求められる値である。動的アクセス頻度としては、例えば、アクセス回数と時間に関する情報とに基づいて算出される値を用いることができる。例えば、動的アクセス頻度は、単位時間あたりのアクセス回数としてもよい。
重要度は、データの重要さを表す値であり、値が変化しない静的重要度と、値がアクセス状況に応じて変化する動的重要度との2種類があるとする。静的重要度は、例えば、データの種別(ファイル形式)、ユーザによって設定された設定情報に基づいて決定される。動的重要度は、アクセス時刻などに基づいて決定される。例えば、実行可能ファイルに関連するデータに対しては、静的重要度が高く設定される。例えば、メディアファイルに関連するデータに対しては、静的重要度が中レベルに設定される。例えば、ファイルの保存されているフォルダがゴミ箱又はメールボックスの場合、このファイルに関連するデータに対して、静的重要度は低く設定される。例えば、最終アクセス時刻から現在までの間隔に比例して、書き込み対象データの動的重要度は減少するように設定される。
情報処理装置54は、オペレーティングシステム60を実行する。このオペレーティングシステム60は、データ固有情報管理部61、メモリ使用情報管理部62を具備する。
情報処理装置54は、オペレーティングシステム60のデータ固有情報管理部61により、データ固有情報631~63nを管理する。
データ固有情報631~63nは、各データ(プログラムなどでもよい)641~64nについて、アクセス頻度、アクセス回数、重要度のうちの少なくとも一つなどのデータ固有の情報を含む。
すなわち、情報処理装置54で扱われるデータ641~64nには、そのデータ641~64nに対するデータ固有情報631~63nが関係付けられている。データ固有情報631~63nには、各データ641~64nのアクセス頻度が含まれる。データ固有情報管理部61は、データ641~64nに対する書き込み又は読み出しが発生した場合に、そのデータ641~64nのデータ固有情報631~63nを更新する。
なお、データ固有情報631~63nは、各データ641~64nから分離された状態で管理されるとしてもよい。
情報処理装置54は、オペレーティングシステム60のメモリ使用情報管理部62により、メモリ使用情報65を管理する。
メモリ使用情報65は、各メモリ52a~52cの使用量又は使用率、各メモリ52a~52cの各領域の使用量又は使用率などのようなメモリ52a~52cの使用状況を示す情報を含む。例えば、メモリ使用情報65は、各メモリ52a~52cの「アクセス回数/アクセス回数の上限」、各メモリ52a~52cの各領域の「アクセス回数/アクセス回数の上限」、各メモリ52a~52cの「使用容量/全容量」、各メモリ52a~52cの各領域のアクセス回数、アクセス頻度、などを含む。例えば、混成メモリ52へのアクセスが実行されると、メモリ使用情報管理部62は、メモリ使用情報65に対して、アクセスされたメモリの使用量又は使用率、アクセスされた領域の使用量又は使用率、アクセス回数、アクセス頻度などの情報を更新する。本実施形態において、メモリ使用情報65は、上記第4の実施形態の書き込み回数情報40を含むとする。
情報処理装置54は、オペレーティングシステム60により、メモリ固有情報66を管理する。
メモリ固有情報66は、混成メモリ52の各メモリ52a~52cのアクセス回数の上限(寿命情報、耐久性情報)などのようなメモリ固有の情報を含む。
例えば、アクセス制御部59のアドレス発生部16は、オペレーティングシステム60によって管理されているデータとファイルとの関係を示す情報、データ固有情報631~63nなどに基づいて、書き込み対象データのアクセス回数、アクセス頻度、重要度を求め、この書き込み対象データのアクセス回数、アクセス頻度、重要度に基づいて書き込み対象データの評価値を算出する。この評価値は、アクセス回数、アクセス頻度、重要度が大きいほど、大きい値となる。そして、アドレス発生部16は、書き込み対象データの評価値と、メモリ使用情報65と、メモリ固有情報66と、メモリの選択で用いられるメモリ選択しきい値とに基づいて、書き込み先のメモリを選択する。アドレス発生部16は、評価値の値が大きいデータほど、不揮発性半導体メモリ52bよりも揮発性半導体メモリ52aを優先して選択し、揮発性半導体メモリ52cよりも揮発性半導体メモリ52bを優先して選択する。なお、本実施形態において、メモリ選択しきい値は、メモリ固有情報66の一要素として予め設定されているとしてもよく、メモリ使用情報65などに基づいて動的に算出されるとしてもよい。
アクセス発生部16は、混成メモリ52における複数のメモリのうち、選択されたメモリに対して、上記第1乃至第6の実施形態で説明した追記式の書き込みを行うためのアドレスを発生させる。
メモリ管理装置57によるメモリ52a~52cの選択についてより具体的に説明する。
メモリ管理装置57は、データ641の書き込み時に、書き込み対象のデータ641のデータ固有情報631、メモリ使用情報65、メモリ固有情報66を調べ、揮発性半導体メモリ52a、不揮発性半導体メモリ52b、不揮発性半導体メモリ52cのうち書き込み耐性に余裕のあるいずれかのメモリを書き込み先のメモリとして選択する。この選択により、高性能で、安価で、大容量のメモリを、長期間使用することが可能となる。
例えば、メモリ管理装置57は、書き込み対象データ641のデータ固有情報631に基づいて、書き込み対象データ641のアクセス頻度が高い場合に書き込み先として耐久性の高いSLCタイプの不揮発性半導体メモリ52bを選択し、書き込み対象データ641のアクセス頻度が低い場合に書き込み先として耐久性の低いMLCタイプの不揮発性半導体メモリ52cを選択する。これにより、混成メモリ52のコスト、性能、アクセス速度、寿命の最適化を図ることができる。
例えば、メモリ管理装置57のアクセス制御部59は、書き込み対象データ641がストリームデータの場合、このストリームデータの書き込み先として例えばMLCタイプのNAND型フラッシュメモリ52cを選択し、格納する。ストリームデータについては、書き込み頻度が小さい傾向があるため、MLCタイプのNAND型フラッシュメモリ52cを書き込み先に用いてもメモリの性能は十分確保される。
そして、メモリ管理装置57のアクセス制御部59は、SLCタイプの不揮発性半導体メモリ52bとMLCタイプの不揮発性半導体メモリ52cとのうちのいずれかが選択された場合に、上記各実施形態で説明したように、アドレスの順次発行を行い、発行されたアドレスが未使用領域の場合に、この未使用領域に書き込み対象データ641を格納する追記式の書き込み動作を実行する。これにより、不揮発性半導体メモリ52b,52c内のアクセス回数の平滑化を実現することができる。
メモリ管理装置57によって用いられるメモリ選択しきい値についてより具体的に説明する。
本実施形態においては、アクセス回数、アクセス頻度、重要度に基づいて算出される評価値と、メモリ選択しきい値に基づいて、混成メモリ52の異機種のメモリ52a~52cの中から、書き込み先のメモリが選択される。例えば、メモリ選択しきい値は、メモリの使用率に基づいて変化される。
使用率は、「アクセス回数/アクセス回数の上限」としてもよく、「メモリ使用領域の容量/メモリの全容量」としてもよい。
オペレーティングシステム60は、揮発性半導体メモリ52aの使用率が高いほど、書き込み先として揮発性半導体メモリ52aよりも不揮発性半導体メモリ52が選択されやすくなるように、第1のメモリ選択しきい値を決定する。
オペレーティングシステム60は、不揮発性半導体メモリ52bの使用率が高いほど、書き込み先として不揮発性半導体メモリ52bよりも不揮発性半導体メモリ52cが選択されやすくなるように、第2のメモリ選択しきい値を決定する。
そして、オペレーティングシステム60及びメモリ管理装置57は、評価値と、第1のメモリ選択しきい値及び第2のメモリ選択しきい値との大小関係に基づいて、書き込み先のメモリを選択する。
本実施形態の制御は、混成メモリ52をメインメモリではない他の目的で利用する場合にも適用可能である。
以上説明した本実施形態においては、データのアクセス回数、アクセス頻度、重要度に基づいて、揮発性半導体メモリ52a、SLCタイプの不揮発性半導体メモリ52b、MLCタイプの不揮発性半導体メモリ52cを使い分けることにより、情報処理装置54で使用されるメインメモリを低コスト化でき、記憶容量を大きくすることができ、長寿命化することができる。
混成メモリ52は、揮発性半導体メモリ52aと比べて安価で大容量の不揮発性半導体メモリ52b,52cを備えるため、単に揮発性半導体メモリ52aのみをメインメモリに用いる場合よりも、安価で大容量化することができる。
また、本実施形態においては、メモリ選択後に追記式の書き込みを行うことにより、ハードウェア資源の簡素化を実現することができる。
上記各実施形態において説明した各構成要素は、自由に組み合わせることができ、自由に分割することができる。例えば、アクセス制御部14,43とメモリ管理ユニット12,39とは組み合わせてもよい。例えば、メモリ管理ユニット12、状態情報生成部13、アクセス制御部13,43の機能は、演算コア91~94のうちの少なくとも一つによって実現されるとしてもよい。オペレーティングシステム60によるシーケンシャルデータか否かの判断機能は、例えばアクセス制御部14などのようなハードウェアにより実現させてもよい。アドレス発生部16、順序情報発生部17、書き込み制御部18は、自由に組み合わせることができる。
本発明の各実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
Claims (20)
- プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断する判断部と、
前記判断部によって前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、前記判断部によって前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させるアドレス発生部と、
発生した書き込みの新しさを表わす順序情報を発生させる順序発生部と、
前記アドレス発生部によって前記第1の書き込みアドレスが発生された場合に、前記第1の書き込みアドレスに対して、前記順序発生部によって発生された順序情報を対応付けて前記通常データを書き込み、前記アドレス発生部によって前記第2の書き込みアドレスが発生された場合に、前記第2の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込む書き込み制御部と
を具備するメモリ管理装置。 - 前記アドレス発生部は、前記シーケンシャルデータを格納するための少なくとも一つのブロック領域の先頭に、前記シーケンシャルデータの先頭が格納されるように、前記第2の書き込みアドレスを発生させる、請求項1のメモリ管理装置。
- 前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータであることを示すフラグとを関連付けて管理するメモリ管理ユニットをさらに具備する、請求項1のメモリ管理装置。
- 前記メモリ管理ユニットは、さらに、前記シーケンシャルデータに対する前記論理アドレスと前記物理アドレスと前記シーケンシャルデータの連続数とを関連付けて管理する、請求項3記載のメモリ管理装置。
- 前記書き込み制御部は、前記シーケンシャルデータを、前記シーケンシャルデータであることを示すフラグと関連付けて前記不揮発性半導体メモリに書き込む、請求項1のメモリ管理装置。
- 前記アドレス発生部は、前記プロセッサから前記不揮発性半導体メモリへの前記通常データの書き込みが発生すると、シーケンシャルにアドレスを発生させ、当該発生されたアドレスが未使用の場合に、前記発生されたアドレスを前記第1の書き込みアドレスとして選択し、前記発生されたアドレスが所定値に達すると、アドレス発生を再び初期値から行う、請求項1のメモリ管理装置。
- 前記書き込み制御部は、前記プロセッサにおける状態情報生成部によって生成された状態情報を、前記順序発生部によって発生された前記順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新の状態情報を読み出し、前記最新の状態情報を用いて前記プロセッサの復元を行う復元部をさらに具備する、
請求項1のメモリ管理装置。 - 前記復元部は、前記不揮発性半導体メモリに格納されているプログラムが前記プロセッサによって実行されて実現される、請求項7のメモリ管理装置。
- 前記書き込み制御部は、メモリ管理ユニットで管理されているメモリ管理情報を、前記順序発生部によって発生された順序情報と対応付けて、前記不揮発性半導体メモリに書き込み、
前記プロセッサの復元時に、前記順序情報に基づいて、前記不揮発性半導体メモリから最新のメモリ管理情報を読み出し、前記最新のメモリ管理情報を用いて前記プロセッサの復元を行う復元部をさらに具備する、
請求項1のメモリ管理装置。 - 前記書き込み制御部は、前記不揮発性半導体メモリの領域に関する書き込み回数情報を管理し、
前記書き込み回数情報の示す書き込み回数がしきい値を超えた領域に対する書き込みを禁止する書き込み回数チェック部をさらに具備する、
請求項1のメモリ管理装置。 - 前記不揮発性半導体メモリに対するエラーの検出を行い、エラー訂正可能な場合に、前記エラーを訂正し、エラー訂正可能でない場合に、前記エラーの発生した領域に対する書き込みを禁止する異常検出部をさらに具備する、請求項1のメモリ管理装置。
- 前記不揮発性半導体メモリは、複数の種別の領域を含み、
前記アドレス発生部は、前記不揮発性半導体メモリにおける前記複数の種別の領域のうち前記データの種別に応じた領域を選択し、選択された前記領域内で、書き込みアドレスの選択を行う、
請求項1のメモリ管理装置。 - 前記プロセッサから前記不揮発性半導体メモリへのアクセスの性能低下を検出する検出部と、
前記検出部によって性能低下が検出された場合に、ガーベージコレクション処理を実行する性能低下抑制部と
を具備する、請求項1のメモリ管理装置。 - 前記不揮発性半導体メモリと、前記不揮発性半導体メモリと種別の異なる他の半導体メモリとを具備する混成メモリへのアクセスを管理し、
前記アドレス発生部は、前記混成メモリに具備されている前記不揮発性半導体メモリと前記他の半導体メモリとのうち、信頼性又は耐久性の高い第1のメモリへのアクセス回数又はアクセス頻度が、信頼性又は耐久性の低い第2のメモリへのアクセス回数又はアクセス頻度よりも多くなるように、記憶先のメモリを選択する
請求項1のメモリ管理装置。 - メモリ管理装置によって、プロセッサから不揮発性半導体メモリに書き込まれるデータが発生した場合に、前記データが、連続的にアクセスされるシーケンシャルデータであるか、前記シーケンシャルデータではない通常データであるか判断すること、
前記メモリ管理装置によって、前記データが前記通常データと判断された場合に、発生済みのアドレスの示す位置と前記通常データの書き込み位置が重ならないように第1の書き込みアドレスを発生させ、前記データが前記シーケンシャルデータと判断された場合に、前記シーケンシャルデータをシーケンシャルに格納するための書き込み位置を示す第2の書き込みアドレスを発生させること、
前記メモリ管理装置によって、発生した書き込みの新しさを表わす順序情報を発生させること、
前期メモリ管理装置によって、前記第1の書き込みアドレスが発生された場合に、前記第1の書き込みアドレスに対して、発生された前記順序情報を対応付けて前記通常データを書き込み、前記第2の書き込みアドレスが発生された場合に、前記第2の書き込みアドレスに対して、前記シーケンシャルデータをシーケンシャルに書き込むこと
を具備するメモリ管理方法。 - 前記第2の書き込みアドレスを発生させることは、前記シーケンシャルデータを格納するための少なくとも一つのブロック領域の先頭に、前記シーケンシャルデータの先頭が格納されるように、前記第2の書き込みアドレスを発生させる、請求項15のメモリ管理方法。
- 前記メモリ管理装置によって、前記シーケンシャルデータに対する論理アドレスと物理アドレスと前記シーケンシャルデータであることを示すフラグとを関連付けて管理することをさらに具備する、請求項15のメモリ管理方法。
- 前記メモリ管理装置によって、前記シーケンシャルデータに対する前記論理アドレスと前記物理アドレスと前記シーケンシャルデータの連続数とを関連付けて管理することをさらに、具備する、請求項17のメモリ管理方法。
- 前記シーケンシャルデータは、前記シーケンシャルデータが前記不揮発性半導体メモリに書き込まれる場合に、前記シーケンシャルデータであることを示すフラグと関連付けて書き込まれる、請求項15のメモリ管理方法。
- 前記第1の書き込みアドレスを発生させることは、前記プロセッサから前記不揮発性半導体メモリへの前記通常データの書き込みが発生すると、シーケンシャルにアドレスを発生させ、当該発生されたアドレスが未使用の場合に、前記発生されたアドレスを前記第1の書き込みアドレスとして選択し、前記発生されたアドレスが所定値に達すると、アドレス発生を再び初期値から行う、請求項15のメモリ管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201180004861.1A CN102667736B (zh) | 2010-01-27 | 2011-01-18 | 存储器管理装置及存储器管理方法 |
US13/560,206 US20130198437A1 (en) | 2010-01-27 | 2012-07-27 | Memory management device and memory management method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010015866A JP2011154547A (ja) | 2010-01-27 | 2010-01-27 | メモリ管理装置及びメモリ管理方法 |
JP2010-015866 | 2010-01-27 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/560,206 Continuation US20130198437A1 (en) | 2010-01-27 | 2012-07-27 | Memory management device and memory management method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011093170A1 true WO2011093170A1 (ja) | 2011-08-04 |
Family
ID=44319162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2011/050738 WO2011093170A1 (ja) | 2010-01-27 | 2011-01-18 | メモリ管理装置及びメモリ管理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20130198437A1 (ja) |
JP (1) | JP2011154547A (ja) |
CN (1) | CN102667736B (ja) |
TW (1) | TWI470426B (ja) |
WO (1) | WO2011093170A1 (ja) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI417721B (zh) * | 2010-11-26 | 2013-12-01 | Etron Technology Inc | 衰減熱資料之方法 |
JP5687649B2 (ja) * | 2012-03-16 | 2015-03-18 | 株式会社東芝 | 半導体記憶装置の制御方法 |
TWI551987B (zh) * | 2012-03-15 | 2016-10-01 | 點序科技股份有限公司 | 快閃記憶體模組的位址對應方法 |
US9547594B2 (en) | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
WO2015155103A1 (de) * | 2014-04-08 | 2015-10-15 | Fujitsu Technology Solutions Intellectual Property Gmbh | Verfahren zum verbesserten zugriff auf einen hauptspeicher eines computersystems, entsprechendes computersystem sowie computerprogramm-produkt |
US20160103431A1 (en) * | 2014-10-14 | 2016-04-14 | Honeywell International, Inc. | System and method for point by point hot cutover of controllers and ios |
TWI604307B (zh) * | 2014-10-31 | 2017-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及快閃記憶體控制方法 |
JP6420139B2 (ja) * | 2014-12-26 | 2018-11-07 | シナプティクス・ジャパン合同会社 | 半導体デバイス |
JP6320318B2 (ja) * | 2015-02-17 | 2018-05-09 | 東芝メモリ株式会社 | 記憶装置及び記憶装置を含む情報処理システム |
US9760281B2 (en) * | 2015-03-27 | 2017-09-12 | Intel Corporation | Sequential write stream management |
CN105630404A (zh) * | 2015-04-02 | 2016-06-01 | 上海磁宇信息科技有限公司 | 一种使用mram的固态硬盘及读写方法 |
KR102450556B1 (ko) * | 2015-04-17 | 2022-10-04 | 삼성전자주식회사 | 불휘발성 메모리 장치들을 제어할 수 있는 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 |
US20170153842A1 (en) * | 2015-12-01 | 2017-06-01 | HGST Netherlands B.V. | Data allocation in hard drives |
JP2018049381A (ja) * | 2016-09-20 | 2018-03-29 | 東芝メモリ株式会社 | メモリ制御回路、メモリシステムおよびプロセッサシステム |
US9747106B1 (en) * | 2016-09-30 | 2017-08-29 | International Business Machines Corporation | Allocating multiple operand data areas of a computer instruction within a program buffer |
CN106681663A (zh) * | 2016-12-29 | 2017-05-17 | 记忆科技(深圳)有限公司 | 一种固态硬盘多流写入的方法 |
US11175853B2 (en) * | 2017-05-09 | 2021-11-16 | Samsung Electronics Co., Ltd. | Systems and methods for write and flush support in hybrid memory |
US10552090B2 (en) | 2017-09-07 | 2020-02-04 | Pure Storage, Inc. | Solid state drives with multiple types of addressable memory |
US11609718B1 (en) | 2017-06-12 | 2023-03-21 | Pure Storage, Inc. | Identifying valid data after a storage system recovery |
EP3612922A1 (en) | 2017-06-12 | 2020-02-26 | Pure Storage, Inc. | Accessible fast durable storage integrated into a bulk storage device |
US10789020B2 (en) * | 2017-06-12 | 2020-09-29 | Pure Storage, Inc. | Recovering data within a unified storage element |
US11592991B2 (en) | 2017-09-07 | 2023-02-28 | Pure Storage, Inc. | Converting raid data between persistent storage types |
US10845866B2 (en) * | 2017-06-22 | 2020-11-24 | Micron Technology, Inc. | Non-volatile memory system or sub-system |
KR102398181B1 (ko) * | 2017-07-03 | 2022-05-17 | 삼성전자주식회사 | 쓰기 데이터를 위해 할당될 물리 어드레스를 미리 관리하는 스토리지 장치 |
US10401816B2 (en) | 2017-07-20 | 2019-09-03 | Honeywell International Inc. | Legacy control functions in newgen controllers alongside newgen control functions |
US10824367B2 (en) * | 2017-10-19 | 2020-11-03 | Seagate Technology Llc | Adaptive intrusion detection based on monitored data transfer commands |
KR20190056862A (ko) * | 2017-11-17 | 2019-05-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102549545B1 (ko) * | 2018-03-22 | 2023-06-29 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR20200023758A (ko) * | 2018-08-27 | 2020-03-06 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
CN110968253B (zh) * | 2018-09-29 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据存储方法、装置及系统 |
WO2021016815A1 (zh) * | 2019-07-29 | 2021-02-04 | 深圳市大疆创新科技有限公司 | 数据包写入方法及装置、控制终端和可移动平台 |
US11650742B2 (en) | 2019-09-17 | 2023-05-16 | Micron Technology, Inc. | Accessing stored metadata to identify memory devices in which data is stored |
US11494311B2 (en) * | 2019-09-17 | 2022-11-08 | Micron Technology, Inc. | Page table hooks to memory types |
US10963396B1 (en) | 2019-09-17 | 2021-03-30 | Micron Technology, Inc. | Memory system for binding data to a memory namespace |
US11269780B2 (en) | 2019-09-17 | 2022-03-08 | Micron Technology, Inc. | Mapping non-typed memory access to typed memory access |
US11216364B2 (en) * | 2020-02-18 | 2022-01-04 | Micron Technology, Inc. | Sequential read optimization in a memory sub-system that programs sequentially |
US20220382478A1 (en) * | 2021-06-01 | 2022-12-01 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for page migration in memory systems |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08214248A (ja) * | 1995-01-31 | 1996-08-20 | Asahi Optical Co Ltd | スチルビデオカメラ |
JPH1131102A (ja) * | 1997-07-14 | 1999-02-02 | Toshiba Corp | データ記憶システム及び同システムに適用するアクセス制御方法 |
JP2009116601A (ja) * | 2007-11-06 | 2009-05-28 | Sony Corp | メモリ装置、メモリ管理方法、およびプログラム |
JP2009211719A (ja) * | 2009-06-15 | 2009-09-17 | Toshiba Memory Systems Co Ltd | 情報処理システム |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0546468A (ja) * | 1991-08-09 | 1993-02-26 | Toshiba Corp | メモリカード装置 |
US5897667A (en) * | 1993-11-16 | 1999-04-27 | Intel Corporation | Method and apparatus for transferring data received from a first bus in a non-burst manner to a second bus in a burst manner |
GB2284494B (en) * | 1993-11-26 | 1998-09-09 | Hitachi Ltd | Distributed shared memory management system |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6311252B1 (en) * | 1997-06-30 | 2001-10-30 | Emc Corporation | Method and apparatus for moving data between storage levels of a hierarchically arranged data storage system |
US6034891A (en) * | 1997-12-01 | 2000-03-07 | Micron Technology, Inc. | Multi-state flash memory defect management |
JPH11194899A (ja) * | 1997-12-26 | 1999-07-21 | Toshiba Corp | ディスク記憶システム及び同システムに適用するデータ更新方法 |
US7660941B2 (en) * | 2003-09-10 | 2010-02-09 | Super Talent Electronics, Inc. | Two-level RAM lookup table for block and page allocation and wear-leveling in limited-write flash-memories |
JP2003296177A (ja) * | 2002-04-03 | 2003-10-17 | Sony Corp | 記録装置および方法、記録媒体、並びにプログラム |
US7130962B2 (en) * | 2003-12-18 | 2006-10-31 | Intel Corporation | Writing cache lines on a disk drive |
JP4412722B2 (ja) * | 2004-07-28 | 2010-02-10 | 株式会社日立製作所 | リモートコピーシステム |
US7769974B2 (en) * | 2004-09-10 | 2010-08-03 | Microsoft Corporation | Increasing data locality of recently accessed resources |
JP2006099853A (ja) * | 2004-09-29 | 2006-04-13 | Hitachi Global Storage Technologies Netherlands Bv | 記録再生装置 |
US7873596B2 (en) * | 2006-05-23 | 2011-01-18 | Microsoft Corporation | Extending cluster allocations in an extensible file system |
CA2597551A1 (en) * | 2005-02-11 | 2006-08-17 | M-Systems Flash Disk Pioneers Ltd. | Nand flash memory system architecture |
JP4748708B2 (ja) * | 2005-03-18 | 2011-08-17 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
US20070016721A1 (en) * | 2005-07-18 | 2007-01-18 | Wyse Technology Inc. | Flash file system power-up by using sequential sector allocation |
US20070083697A1 (en) * | 2005-10-07 | 2007-04-12 | Microsoft Corporation | Flash memory management |
US7761766B2 (en) * | 2005-11-15 | 2010-07-20 | I365 Inc. | Methods and apparatus for modifying a backup data stream including logical partitions of data blocks to be provided to a fixed position delta reduction backup application |
US7617361B2 (en) * | 2006-03-29 | 2009-11-10 | International Business Machines Corporation | Configureable redundant array of independent disks |
US8543792B1 (en) * | 2006-09-19 | 2013-09-24 | Nvidia Corporation | Memory access techniques including coalesing page table entries |
US8601223B1 (en) * | 2006-09-19 | 2013-12-03 | Nvidia Corporation | Techniques for servicing fetch requests utilizing coalesing page table entries |
JP4957283B2 (ja) * | 2007-02-21 | 2012-06-20 | セイコーエプソン株式会社 | メモリを制御するメモリコントローラ、メモリの制御方法。 |
US8037112B2 (en) * | 2007-04-23 | 2011-10-11 | Microsoft Corporation | Efficient access of flash databases |
KR101498673B1 (ko) * | 2007-08-14 | 2015-03-09 | 삼성전자주식회사 | 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템 |
KR101464338B1 (ko) * | 2007-10-25 | 2014-11-25 | 삼성전자주식회사 | 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템 |
US7822731B1 (en) * | 2008-03-28 | 2010-10-26 | Emc Corporation | Techniques for management of information regarding a sequential stream |
US9280466B2 (en) * | 2008-09-09 | 2016-03-08 | Kabushiki Kaisha Toshiba | Information processing device including memory management device managing access from processor to memory and memory management method |
KR101570179B1 (ko) * | 2008-12-08 | 2015-11-18 | 삼성전자주식회사 | 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템 |
JP2010165251A (ja) * | 2009-01-16 | 2010-07-29 | Toshiba Corp | 情報処理装置及びプロセッサ並びに情報処理方法 |
US20110004720A1 (en) * | 2009-07-02 | 2011-01-06 | Chun-Ying Chiang | Method and apparatus for performing full range random writing on a non-volatile memory |
US20120159098A1 (en) * | 2010-12-17 | 2012-06-21 | Microsoft Corporation | Garbage collection and hotspots relief for a data deduplication chunk store |
-
2010
- 2010-01-27 JP JP2010015866A patent/JP2011154547A/ja active Pending
-
2011
- 2011-01-18 CN CN201180004861.1A patent/CN102667736B/zh not_active Expired - Fee Related
- 2011-01-18 WO PCT/JP2011/050738 patent/WO2011093170A1/ja active Application Filing
- 2011-01-25 TW TW100102651A patent/TWI470426B/zh not_active IP Right Cessation
-
2012
- 2012-07-27 US US13/560,206 patent/US20130198437A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08214248A (ja) * | 1995-01-31 | 1996-08-20 | Asahi Optical Co Ltd | スチルビデオカメラ |
JPH1131102A (ja) * | 1997-07-14 | 1999-02-02 | Toshiba Corp | データ記憶システム及び同システムに適用するアクセス制御方法 |
JP2009116601A (ja) * | 2007-11-06 | 2009-05-28 | Sony Corp | メモリ装置、メモリ管理方法、およびプログラム |
JP2009211719A (ja) * | 2009-06-15 | 2009-09-17 | Toshiba Memory Systems Co Ltd | 情報処理システム |
Also Published As
Publication number | Publication date |
---|---|
US20130198437A1 (en) | 2013-08-01 |
TW201202926A (en) | 2012-01-16 |
CN102667736B (zh) | 2015-01-14 |
CN102667736A (zh) | 2012-09-12 |
TWI470426B (zh) | 2015-01-21 |
JP2011154547A (ja) | 2011-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2011093170A1 (ja) | メモリ管理装置及びメモリ管理方法 | |
US8255614B2 (en) | Information processing device that accesses memory, processor and memory management method | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
US8375158B2 (en) | Memory system and block merge method | |
US8966156B2 (en) | Memory device, memory system and mapping information recovering method | |
US9189325B2 (en) | Memory system and operation method thereof | |
JP5702348B2 (ja) | 不揮発性メモリを有するシステムの非正常シャットダウンの取り扱い | |
TW202011195A (zh) | 映射表更新方法 | |
US9710378B2 (en) | Writing an address conversion table for nonvolatile memory wear leveling | |
JP2013137770A (ja) | Lbaビットマップの使用 | |
JP2005301591A (ja) | 不揮発性メモリを備えた装置及びメモリコントロ−ラ | |
US8583859B2 (en) | Storage controller for wear-leveling and compaction and method of controlling thereof | |
US20150074336A1 (en) | Memory system, controller and method of controlling memory system | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN105786722B (zh) | 基于异构混合内存的nvm内存擦写控制方法和系统 | |
JP2016085677A (ja) | メモリ管理方法、メモリ管理プログラム及び情報処理装置 | |
KR101548452B1 (ko) | 비휘발성 메모리 기반의 전자 장치의 메타 데이터 복원 방법 및 장치 | |
US8898423B1 (en) | High performance caching architecture for data storage systems | |
KR20150139383A (ko) | 반도체 장치 | |
JP2013250603A (ja) | メモリ管理装置および方法、並びにプログラム | |
JP2012068764A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
US7996598B2 (en) | Memory management module | |
JP2015191295A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
JP2013200722A (ja) | 半導体記憶装置の論理ブロックの構築方法 | |
JP2013120549A (ja) | 電子計算機、メモリ管理方法、およびメモリ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 11736885 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 11736885 Country of ref document: EP Kind code of ref document: A1 |