WO2021079535A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
WO2021079535A1
WO2021079535A1 PCT/JP2020/004179 JP2020004179W WO2021079535A1 WO 2021079535 A1 WO2021079535 A1 WO 2021079535A1 JP 2020004179 W JP2020004179 W JP 2020004179W WO 2021079535 A1 WO2021079535 A1 WO 2021079535A1
Authority
WO
WIPO (PCT)
Prior art keywords
access
data
information processing
control unit
request
Prior art date
Application number
PCT/JP2020/004179
Other languages
English (en)
French (fr)
Inventor
活志 大塚
Original Assignee
株式会社ソニー・インタラクティブエンタテインメント
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社ソニー・インタラクティブエンタテインメント filed Critical 株式会社ソニー・インタラクティブエンタテインメント
Priority to JP2021554050A priority Critical patent/JP7403554B2/ja
Priority to US17/627,895 priority patent/US11768628B2/en
Publication of WO2021079535A1 publication Critical patent/WO2021079535A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Definitions

  • the present invention relates to an information processing device, an information processing method, and a program for reading data from a storage device.
  • Information processing devices such as home-use game machines, personal computers, and smartphones generally include a plurality of storage devices for storing information such as flash memory, and store data in these storage devices and store the stored data. Operates while reading.
  • storage devices such as NAND flash memories are known to have a limit on the number of times the memory cells can be rewritten (memory cell life), and the distribution and leveling of the memory cells to be used, that is, consideration of wear leveling. Is required.
  • management access that reads the written data, aggregates it in another area, writes it, secures the original area that can be erased continuously in block units, and then erases it, that is, defragmentation. Processing called fragmentation and garbage collection is required from time to time.
  • Such management access is indispensable for the use of NAND flash memory, but when this management access conflicts with normal data access, the latency of normal data access varies, and it is necessary for access. It can be difficult to predict the time.
  • the present invention has been made in consideration of such circumstances, and one of the objects thereof is necessary to eliminate the influence of other competing accesses such as management access when reading data from a storage device. It is an object of the present invention to provide an information processing device, an information processing method, and a program capable of ensuring the required performance.
  • the information processing device is an information processing device that controls access to a plurality of storage devices, and is a reception unit that receives access requests to the plurality of storage devices and responds to the received access requests.
  • the access control unit includes an access control unit that executes access to any one of the plurality of storage devices, and the access control unit performs the access according to the performance required for reading the target data that is the target of the access request. It is characterized by changing the aspect of.
  • the information processing method is an information processing method that controls access to a plurality of storage devices, in response to a step of receiving access requests to the plurality of storage devices and the received access requests.
  • the access control step includes an access control step for executing access to any one of the plurality of storage devices, and the access control step includes, depending on the performance required for reading the target data subject to the access request. It is characterized by changing the mode.
  • the program according to one aspect of the present invention includes a step of receiving an access request for the plurality of storage devices to a computer that controls access to the plurality of storage devices, and a step of receiving the received access request of the plurality of storage devices.
  • a program for executing an access control step for executing access to any one of them, and in the access control step, the access is performed according to the performance required for reading the target data to be the target of the access request. It is characterized by changing the aspect of.
  • the program may be provided stored in a computer-readable, non-temporary information storage medium.
  • the information processing device 1 is a home-use game machine, a server computer, or the like, and as shown in FIG. 1, a plurality of calculation units 11, a main memory 12, a device control circuit 13, and the like.
  • the storage device 14 and the communication unit 15 are included.
  • the arithmetic unit 11 includes a program control device such as a CPU, and executes various information processing according to a program such as an operating system or an application program stored in the main memory 12.
  • the main memory 12 is configured to include a volatile storage element such as a RAM, and temporarily holds various programs executed by the arithmetic unit 11 and data used in those programs.
  • the device control circuit 13 is an integrated circuit or the like, and executes a process for controlling the operation of the storage device 14 according to a firmware program held therein.
  • the device control circuit 13 receives access requests such as a data read request, a write request, and a delete request from the arithmetic unit 11, and executes access to the storage device 14 according to the request contents, as will be described later.
  • various control processes necessary for managing the storage device 14, such as garbage collection and wear leveling, are executed.
  • Each of the plurality of storage devices 14 is a device composed of a non-volatile storage element, and stores programs and various data used by the information processing device 1.
  • the storage device 14 may be, for example, a NAND flash memory or the like.
  • the data stored in the storage device 14 is used by being stored in the main memory 12 in response to a request from the calculation unit 11.
  • the plurality of storage devices 14 can be accessed independently. That is, when a plurality of access requests are made to one storage device 14, those accesses cannot be executed at the same time and conflict with each other. On the other hand, access to different storage devices 14 does not conflict with each other and can be executed in parallel.
  • the communication unit 15 is an interface for transmitting and receiving data to and from an external communication network wirelessly or by wire.
  • the information processing device 1 exchanges data with other communication devices via the communication unit 15.
  • the information processing device 1 is functionally configured to include an access request unit 21, an access control unit 22, a device allocation control unit 23, and an information storage unit 24.
  • the access request unit 21 is realized by the arithmetic unit 11 executing a program such as an operating system stored in the main memory 12.
  • the access control unit 22, the device allocation control unit 23, and the information storage unit 24 are realized by executing the firmware program built in the device control circuit 13.
  • the access request unit 21 issues a data access request to the device control circuit 13 in response to a request from a higher-level application program or the like.
  • the access request issued by the access request unit 21 may include a request for writing data to the storage device 14, a request for reading data stored in the storage device 14, and a request for deleting data.
  • the access request unit 21 controls the device together with the access request for information on the performance required when reading the data subject to the access request. Notify circuit 13.
  • the information regarding the required read performance is referred to as the required performance information.
  • the required performance information may include, for example, information that specifies the size of the required bandwidth (the amount of data read per unit time) and information that specifies the allowable read delay (latency). .. Alternatively, whether or not reading in a wide band (that is, a predetermined data reading speed or higher) is required, and whether or not reading in a low delay (that is, latency within a predetermined value) is required, respectively. It may be the specified information.
  • the required performance information may include information that specifies that reading at best effort is permitted. In this case, the required performance for delay and bandwidth is not specified.
  • the access request unit 21 may notify each individual access request by adding the required performance information for the data targeted by the access request to the access request.
  • the required performance information for the data may be added to each series of data that is the target of the access request.
  • the access request may be a burst access request, a block access request, a chain list access request, or the like, and a plurality of data accesses may be executed separately in response to one access request.
  • the access request unit 21 may specify the required performance information for each data access to be executed separately.
  • a plurality of data accesses may be executed separately in response to an access request for one file, such as an access request linked with a file system. Even in such a case, the access request unit 21 may specify the required performance information for each of the plurality of data accesses.
  • the access request unit 21 may determine the content of the required performance information according to the designation from the application program of the access request source. Alternatively, the content of the required performance information may be automatically determined according to the type of the application program of the access request source. As an example, in a game program or the like, there is a case where it is desired to read data necessary for drawing a game screen in real time during execution of game processing. In such a case, the required performance information that specifies that reading with low delay is required is specified.
  • the access request unit 21 may notify the required performance information that specifies the performance required when the data is read later. Further, when making a data read request, the required performance information specifying the performance required for reading the data subject to the read request may be notified.
  • the access control unit 22 receives the access request issued by the access request unit 21 and executes access control to the storage device 14 according to the content of the request.
  • the access control unit 22 when the access control unit 22 receives a data read request accompanied by the required performance information, the access control unit 22 performs the control necessary to realize the read with the required performance. Further, when the access control unit 22 receives a data writing request accompanied by the required performance information, the access control unit 22 changes the storage device 14 to which the data is written according to the content of the required performance information.
  • control contents to be executed when the access control unit 22 receives the access request accompanied by the required performance information will be described.
  • the control executed by the access control unit 22 when a data read request accompanied by the required performance information for specifying read with low delay is received will be described.
  • the read request R1 that requires reading with a low delay is accepted for the data D1 stored in the storage device 14-1 among the plurality of storage devices 14.
  • the access control unit 22 controls so that the access according to the access request R2 does not interfere with the reading of the data D1. Therefore, the access control unit 22 prevents access to the storage device 14-1 in which the data D1 is stored when performing processing in response to the access request R2. As a result, it is possible to avoid contention for access to the storage device 14-1 and prevent delay in the read access of the data D1.
  • the access control unit 22 sets the write destination of the data D2, which is the target of the access request R2, to a storage device 14-1 other than the storage device 14-1 in which the data D1 is stored. Change to storage device 14.
  • Such control can be realized by address translation that maps the logical address designated as the storage destination to the physical address of another storage device 14.
  • FIG. 3 is a diagram for explaining such a change of the access destination.
  • a logical address relatively close to the storage location of the data D1 is specified as the write destination of the data D2, but the write destination of the data D2 is changed to another storage device 14-2 by the address translation. ing.
  • this address translation may be executed by a page method or the like.
  • the access control unit 22 responds to the access request R2 until the reading of the data D1 is completed.
  • the deletion process of the corresponding data D3 is delayed. Specifically, when the deletion request is received, the access control unit 22 controls to change the data D3 on the logical address to the deleted status, and returns a reply to the deletion request that the data D3 has been deleted. , The data D3 is not actually accessed.
  • FIG. 4 shows a state in which such deletion is reserved. When the access request for the data D3 is received in this state, the access control unit 22 returns a response indicating that the data D3 does not exist.
  • the process of actually deleting the data D3 in the storage device 14-1 is executed after the reading of the data D1 is completed. This makes it possible to avoid contention for access to the storage device 14-1.
  • the access control unit 22 may execute the deletion process of the data D3 immediately after the completion of reading the data D1, but may also execute the deletion process at a predetermined timing.
  • the access control unit 22 may execute the deletion process at a predetermined time zone such as nighttime when access to the storage device 14 is assumed to be small. Further, when there is a timing when a part of the storage device 14 is deactivated, the deletion process may be executed at the timing when the storage device 14 to be deleted is deactivated.
  • the access control unit 22 restricts access to the storage device 14-1 other than the access in response to the access request while the data D1 is being read.
  • the access to the storage device 14 required for the operation of each storage device 14 executed by the access control unit 22 in addition to the access in response to the access request is referred to as a management access.
  • management access for performing garbage collection, defragmentation, and the like is required.
  • ECC data error detection and correction data
  • the access control unit 22 performs a refresh operation such as recharging / rewriting the same memory cell value, or moves the value held in one memory cell to another memory cell. May perform administrative access such as.
  • the access control unit 22 limits the execution of the management access during the reading of the data required to be read with a low delay, and executes the restricted management access after the reading is completed.
  • the access control unit 22 may also execute the management access at a predetermined timing after the completion of the read access that requires a low delay, as in the deletion process described above.
  • the access control unit 22 of the write destination can secure the performance required when reading the data later.
  • the storage device 14 is determined.
  • the access control unit 22 reads the data targeted for the write request with low delay. It is stored in the storage device 14 assigned for the purpose. Here, the allocation of usage to the storage device 14 is executed by the device allocation control unit 23, which will be described later. On the contrary, when a request for writing data without a request for latency is received, the access control unit 22 writes the data to the storage device 14 to which the general-purpose allocation is made. As a result, data that needs to be read with low delay and data that does not need to be read can be stored in different storage devices 14, and access conflict between the two can be avoided.
  • the access control unit 22 When the band designation is included in the required performance information, the access control unit 22 identifies a plurality of storage devices 14 to which the designated data is to be written, and distributes them to the specified plurality of storage devices 14. The specified data will be written. As a result, when the access control unit 22 later reads the data, the access control unit 22 can read the data in parallel from the plurality of storage devices 14 by using the interleaving method, so that the data can be read in a wide band.
  • the number of storage devices 14 for distributed writing may be determined according to the size of the requested band.
  • the access control unit 22 distributes and writes to many storage devices 14 as the size of the requested band increases.
  • the storage capacity (number of bits) per cell is determined by a storage method called SLC (single level cell), MLC (multi-level cell), or the like.
  • SLC single level cell
  • MLC multi-level cell
  • the storage capacity per cell increases, the data transfer speed and read delay performance tend to deteriorate, and if the storage method is different for each device, the data read performance will also differ.
  • the access control unit 22 holds information on the data read speed of each storage device 14 in advance, and when it receives a data write request that requires reading in a wide band, the data read speed of each storage device 14 In consideration of the above, the number of storage devices 14 for securing the required bandwidth will be determined.
  • the access control unit 22 when a data write request that is required to be read in a wide band is received, the access control unit 22 writes data by targeting a predetermined number of SLC storage devices 14 having a relatively high data read speed as a write target. I do. For example, when the requested band is 10 GB / s and the data read speed of the SLC storage device 14 is 1 GB / s, the data can be read in the requested band by distributing and writing to the 10 storage devices 14. Is possible.
  • the device allocation control unit 23 assigns the number of storage devices 14 required for read in the requested band to read with low delay. It is assigned to the purpose, and the access control unit 22 writes data to the plurality of storage devices 14 assigned to the low delay. At this time, as will be described later, the device allocation control unit 23 reads the storage device 14 (for example, the storage device 14 that reads / writes data by the SLC method) capable of ensuring the required performance for the read delay in the requested band. Allocate as many as necessary for low-latency read applications.
  • the delay required for the procedure and transfer of read access control by the access control unit 22 is 150 ⁇ s
  • the read delay of the SLC type storage device 14 is 50 ⁇ s
  • the read delay of the MLC method is 100 ⁇ s.
  • the required performance information that requires the read delay to be 200 ⁇ s or less is specified when it is known that the reading delay is 200 ⁇ s or less.
  • the access control unit 22 writes the requested data to the SLC type storage device 14.
  • the required delay performance can be ensured by performing control for suppressing access contention as described above at the time of reading.
  • the access control unit 22 may write the requested data to the storage device 14 of the MLC system. Information about the read performance for each storage device 14 as illustrated here is held by the information storage unit 24.
  • the access control unit 22 stores the required performance information specified at the time of writing the data, and when the read request for the written data is received, the access control unit 22 refers to the stored required performance information to perform read control. You may go. For example, when a write request for data D1 is received together with the required performance information indicating that reading with low delay is required, the access control unit 22 sends the data D1 to the storage device 14 assigned to read with low delay as described above. Is stored, and it is stored that the data D1 needs to be read out with a low delay. Then, when the read request for the data D1 is received, the read is executed with a low delay regardless of whether or not the required performance information is added to the read request.
  • the data D1 is read while avoiding access contention, as in the case where the read request is made together with the required performance information requesting the read with low delay described above.
  • the required performance information that specifies the read performance of the data is added at the time of writing, the data can be read with the required performance without having to specify the required performance information each time the data is read. ..
  • the access control unit 22 when the access control unit 22 receives a write request for data that is required to be read with a low delay, the data subject to the write request is sent to a plurality of different storage devices 14. It is assumed that the data is written in advance with a multiplicity of two or more (multiple degrees).
  • the access control unit 22 when it is requested to read a certain target data (here, data D4) with a delay within a predetermined value, the access control unit 22 reads the data D4 as described above. In the meantime, low delay read is guaranteed by restricting non-read access to the storage device 14 to be read. Then, when a low-delay read request for another data (here, data D5) is simultaneously received during the read access execution of the data D4, the access control unit 22 determines which storage device 14 the data D5 is. Check if it is multiplexed and written in. If the data required to be read with low delay is redundantly written as described above, the data D5 should also be redundantly written to two or more storage devices 14.
  • the access control unit 22 receives data from a storage device 14 different from the storage device 14 that is reading the data D4 (that is, the storage device 14 whose access is restricted) among the plurality of storage devices 14 to which the data D5 is written. Read D5. While reading the data D5, other access to the storage device 14 to be read from the data D5 is restricted in the same manner as the storage device 14 reading the data D4.
  • the access control unit 22 stores the data D4 specified to be read with the low delay as the storage device. Write redundantly to both 14-1 and 14-2. Similarly, the data D5 is also written in both the storage devices 14-1 and 14-2. Then, when a read request for the data D5 is received while reading the data D4 from the storage device 14-1, the data D5 is read from the storage device 14-2. As a result, read access to the data D4 and the data D5 can be prevented from conflicting.
  • the access control unit 22 stores each data in the storage devices 14-1 and 14-2. In addition to the distributed writing to the two storage devices 14, the same data may be distributed and written to the two storage devices 14 of the storage devices 14-3 and 14-4. In this case, when the access control unit 22 receives the read request for the data D4, the access control unit 22 distributes and reads the data D4 from the two storage devices 14 of the storage devices 14-1 and 14-2. Further, when a read request for the data D5 is received during this distributed read, the access control unit 22 distributes and reads the data D5 from the two storage devices 14 of the storage devices 14-3 and 14-4. As described above, if each data is written to the plurality of storage devices 14 with a multiplicity of two or more and each is distributed, the plurality of data can be read in parallel and all of them can be read by distributed reading.
  • the device allocation control unit 23 allocates applications to a plurality of storage devices 14 subject to access control. In this case, the device allocation control unit 23 allocates a part of the plurality of storage devices 14 to the low-latency access use and another part to the general-purpose access use.
  • the access control unit 22 receives the data writing request, the access control unit 22 distributes the data writing destination storage device 14 according to the allocation result. As a result, the data for which low-latency access is required can be stored in the storage device 14 different from the other data, and access conflict does not occur when reading the data for which low-latency access is required. Can be.
  • the read performance of each storage device 14 may differ depending on the storage method or the like.
  • the device allocation control unit 23 preferentially allocates the storage device 14 having a small delay (for example, the SLC type storage device 14) to the application for low delay access.
  • the information storage unit 24 stores in advance information indicating how much delay occurs when reading data from each storage device 14.
  • the read delay that finally occurs includes the read delay that occurs in the storage device 14 itself, and the delay that occurs due to the read control procedure by the access control unit 22 and the data transfer.
  • the delay required for the read control procedure and the data transfer differs depending on the connection mode and communication path of each storage device 14, and is not always common to the plurality of storage devices 14. Therefore, the information storage unit 24 holds in advance not only information on the pure read performance of each storage device 14, but also information on delays caused by such actual access procedures and transfers, and the device allocation control unit 23 Such information may be taken into consideration to determine the storage device 14 allocation for achieving the required low latency access.
  • the device allocation control unit 23 may dynamically allocate the storage device 14 when the access control unit 22 receives a data write request that requires low-delay access. In this case, first, the device allocation control unit 23 allocates the storage device 14 for low delay access in response to the request from the access control unit 22. After that, the access control unit 22 stores the data that is the target of the write request for the assigned storage device 14.
  • the device allocation control unit 23 may also allocate the storage device 14 for general-purpose access.
  • the storage device 14 for general-purpose access As described above, when executing data read with low delay, it is desirable to write another access request generated at the same time to another storage device 14 in order to avoid access contention. Therefore, when the storage device 14 for low-delay access is secured, the storage device 14 for general-purpose access is also secured, so that access conflict can be less likely to occur.
  • the number of storage devices 14 for general-purpose access secured in this case may be determined according to a predetermined ratio with respect to the number of storage devices 14 for low-delay access.
  • the storage device 14 for each purpose is secured by a rule such as adding one storage device 14 for general-purpose access every time n storage devices 14 for low-delay access are secured. ..
  • the required number of storage devices 14 may be allocated for low-latency access applications and the remaining storage devices 14 may be allocated for general-purpose access applications according to the requested bandwidth.
  • the usage allocation performed by the device allocation control unit 23 is not fixed, but may be dynamically changed. For example, when the free space of the storage device 14 allocated to the low-latency access is insufficient when a new write request for data requiring low-latency reading is received, the storage device 14 allocated to the general-purpose access is lowered. You may switch to lazy access applications. On the contrary, when the free space of the storage device 14 allocated to the general-purpose access is insufficient when the write request of the data having no performance requirement is received, the storage device 14 allocated to the low-latency access is used for the general-purpose access. You may switch to. In such a case, processing such as garbage collection is executed to relocate the data at a timing that does not conflict with other access requests. Further, in order to avoid concentration of access to the specific storage device 14, the allocation may be changed by exchanging data among the plurality of storage devices 14.
  • the required performance information specifies the performance required at the time of reading data, but the required performance information may include information specifying the performance required at the time of writing.
  • the required performance information may include information that specifies the band (data write amount per unit time) required at the time of writing.
  • the access control unit 22 performs the requested band and each storage device in the same manner as in the case of writing data in which a wide band read is required.
  • the storage device 14 to be written is specified in consideration of the data writing speed of 14. Then, writing is performed in parallel to the specified storage device 14. As a result, it is possible to write data that guarantees the required bandwidth.
  • the device allocation control unit 23 may switch the assignment of roles to the plurality of storage devices 14 according to each of the plurality of operation modes.
  • the device allocation control unit 23 switches between three operation modes of high-speed read mode, high-speed write mode, and parallel mode according to the type of application program being executed by the calculation unit 11. ..
  • the control content in this case will be described with reference to FIG.
  • the information processing device 1 includes five storage devices 14 of storage devices 14-1 to 14-5.
  • the device allocation control unit 23 performs allocation suitable for high-speed reading (low-delay / wideband reading) (high-speed reading). mode).
  • the storage device 14-1 is assigned to general-purpose access, and the other four storage devices 14-2 to 14-5 are assigned to high-speed reading.
  • the access control unit 22 reads data from the four storage devices 14-2 to 14-5 in parallel when a request to read the data written in the storage devices 14-2 to 14-5 is received. I do. As a result, it is possible to read out data in a wide band.
  • the access control unit 22 restricts access to the storage devices 14-2 to 14-5 when an access request other than the read request from the application program P1 is received, and accesses the storage devices 14-2 to 14-5. Control so that there is no conflict.
  • another write request for example, a write request accompanied by the required performance information specifying write or read at best effort.
  • the writing destination is set to the storage device 14-1 assigned to the general-purpose access.
  • An example of a write request that does not require such a low delay is a save data write request that records the progress of the game while the game program is being executed.
  • the execution of the process is delayed for the deletion process and the execution of management access in response to the data deletion request.
  • the data used by the specific application program P1 can be guaranteed to be read with low delay.
  • the access control unit 22 can execute all of these read accesses with low delay by performing the following controls. Specifically, in this example, it is assumed that all the data required to be read with a low delay are distributed and written to the storage devices 14-2 to 14-5 assigned to the high-speed read. In the following, the case where the two data A and the data B are both distributed and written in the storage devices 14-2 to 14-5 and the read requests for these data are sequentially received will be described as an example. To do.
  • the access request unit 21 requests to read the data A stored in each of the storage devices 14-2 to 14-5.
  • the access control unit 22 sequentially accesses the storage devices 14-2 to 14-5, and reads out a part of the data (here, referred to as a data fragment) constituting the data A from each of the storage devices 14-2 to 14-5.
  • the access request unit 21 requests the reading of the data B after the reading of the data A is completed.
  • the access control unit 22 sequentially accesses the storage devices 14-3 to 14-5 and 14-2, and reads the data fragments constituting the data B from the respective storage devices 14.
  • the access control unit 22 assumes that both the data A and the data B are sequentially read from one storage device 14 at a time, but the reading of the data fragments constituting the data A and the data B are performed.
  • the reading of the data fragments constituting the above is executed in parallel for the storage devices 14 different from each other. For example, while reading the data fragment of the data A stored in the storage device 14-2, the data fragment of the data B stored in the storage device 14-3 is read in parallel.
  • the respective reads are executed in parallel so as not to conflict with each other. Can be done.
  • each data is read out sequentially here, data fragments distributed and stored in a plurality of storage devices 14 may be read out in parallel at a timing that does not conflict with other access requests.
  • the storage devices 14-2 to 14-5 assigned to the high-speed read in the high-speed read mode are assigned to the high-speed write access.
  • This mode is used in a state where write access is the main, such as when the arithmetic unit 11 downloads relatively large size data such as a program or content from an external network via the communication unit 15.
  • the access control unit 22 distributes and writes the data requested to be written at high speed to the storage devices 14-2 to 14-5. As a result, data writing in a wide band can be realized.
  • the access control unit 22 is assigned general-purpose access when there is a write request for data that is not subject to high-speed writing (for example, a write request with request performance information that specifies write or read at best effort).
  • the data is written to the storage device 14-1.
  • the access request unit 21 makes a write request for data for which a predetermined program such as a download program is a request source, together with required performance information indicating that the data is subject to high-speed writing.
  • the parallel mode is a mode that achieves both high-speed reading and high-speed writing. This mode is used when the application program P2 that executes reading and writing at the same time is executed, for example, when recording the video while executing a game or the like.
  • the storage device 14-1 is assigned general-purpose access as in the other modes, while the storage devices 14-2, 14-3 are assigned high-speed reads, and the storage devices 14-4, 14- High-speed writing is assigned to 5.
  • data requiring high-speed reading is read in parallel from the two storage devices 14-2 and 14-3, and data requiring high-speed writing is read to the two storage devices 14-4 and 14-5. Writing is done in parallel.
  • high-speed read and high-speed write can be executed in parallel at the same time.
  • the data to be written at high speed in this example is, for example, recorded data of a game that should be recorded in real time without dropping frames.
  • general-purpose access is assigned to data access requests that do not require high-speed read or high-speed write (for example, write requests with performance information that specifies write or read at best effort). It is executed for the storage device 14-1.
  • mere video recording data that does not require real-time performance may be written to the storage device 14-1 as general-purpose access. With such control, access contention between general purpose access, high speed read and high speed write can be avoided.
  • the data to be read at high speed in the parallel mode (that is, the data to be read by the application program P2 assuming the use of the parallel mode) is assigned to the high speed read in advance in the parallel mode. It is stored in the storage devices 14-2 and 14-3. Although the same number of storage devices 14 are assigned to high-speed read and high-speed write here, the number of storage devices 14 allocated to each application includes the required read / write bandwidth and each storage device 14. It may be determined according to the data transfer rate.
  • the access for deleting data and the management access such as garbage collection to the storage devices 14-2 to 14-5 to which the uses of high-speed read and high-speed write are assigned are performed during the execution of high-speed read and high-speed write. May be restricted.
  • the access control unit 22 is expected to not generate a high-speed read or high-speed write access request, for example, at a specific time zone such as at night or when the arithmetic unit 11 is not executing a specific application program. You may then perform such performance-free access.
  • the access control unit 22 may execute the management access for moving the data between the plurality of storage devices 14 as needed. For example, data for which high-speed writing is required needs to be written to a storage device 14 capable of satisfying a specified request, such as an SLC format storage device 14. However, depending on the required read performance specified for such data, the required performance may be ensured even if the data is read from another storage device 14 (for example, an MLC format storage device 14) at the time of reading. is there. In such a case, it is desirable to secure free space in the high-performance storage device 14 in preparation for future high-speed write demands and higher-level high-speed read demands. Therefore, the access control unit 22 may perform management access to move the data once written with the required performance to another storage device 14. Such management access makes it possible to flexibly respond to various access performance requirements that may occur in the future.
  • the access control unit 22 when the access control unit 22 has a timing when some of the storage devices 14 are not operated among the plurality of storage devices 14, the access control unit 22 performs data deletion processing for the storage device 14 which is not operated at that timing. Various management accesses may be performed. In a server computer or the like, control for deactivating the storage device 14 may be executed for each domain or drive. If the data deletion process, management access, and the like that have been delayed at such timing are executed, access contention can be made less likely to occur.
  • the access control unit 22 may temporarily write data to the volatile memory that can be used as a cache. In this case, the access control unit 22 performs management access to move the data written in the volatile memory to the storage device 14 at a time zone in which access contention is not expected to occur later. Further, when the access control unit 22 receives the read request, the access control unit 22 may transfer the requested data to the access request unit 21 and temporarily write the same data to the volatile memory used as a cache. In this case, when the access control unit 22 subsequently receives a read request for the same data, the access control unit 22 reads the data written in the volatile memory. In this case, the written data is deleted when the free space of the volatile memory used as the cache is insufficient or when the data written in the volatile memory is not accessed for a certain period of time.
  • the access control unit 22 limits writing to the storage device 14 that is the target of the reading in order to avoid access contention while executing the data reading with low delay. I will do it. Therefore, while executing data reading with such a low delay, the free capacity of the storage device 14 that is the target of the reading may be excluded from the count of the writable capacity. According to such control, during data read execution with low delay, the writeable free space of the entire plurality of storage devices 14 from the access request unit 21 side is equal to the free space for which writing is restricted at that timing. Is perceived as decreasing.
  • a storage capacity that can accept write access even during data read with low delay may be counted as writable free space. Such presentation of free space may be realized via a file system.
  • the access request unit 21 specifies the performance required for access by notifying the performance request information.
  • the access request unit 21 does not need to add the performance request information to the access request each time.
  • the performance required for access may be specified by specifying the address range.
  • the access control unit 22 sets a plurality of address ranges in advance in the address space for designating access destinations in the plurality of storage devices 14. Then, the access control unit 22 stores the required performance to be realized in advance in association with each of the plurality of address ranges. Further, the access control unit 22 notifies the access request unit 21 in advance of the correspondence between the set address range and the required performance.
  • the access request unit 21 When issuing an access request, the access request unit 21 issues an access request by designating an address range selected according to the request performance for the target data of the access as an access destination from a plurality of address ranges. ..
  • the access control unit 22 that has received the access request uses various methods as described above to access the access according to the access request so as to satisfy the request performance associated with the address range specified in the access request. To execute. As a result, access control that satisfies the required performance becomes possible without the access request unit 21 notifying the performance request information each time.
  • FIG. 6 is a diagram showing an example of performance allocation for the address space.
  • the same storage device 14 is multiplely assigned to the address space by the segment method.
  • one of three types of required performance that is, required performance A, B, C
  • the upper address bit that is, required performance A, B, C
  • the lower address bit offset address
  • the access request unit 21 can specify the required performance and the storage device 14 to be accessed and the access position by the combination of the upper address bit and the lower address bit.
  • FIG. 7 shows another example of performance allocation for the address space.
  • the same storage device 14 is multiplely assigned to the address space by the page method.
  • one of the three types of required performance that is, required performance A, B, C
  • the upper address bit page address
  • the lower address bit offset address
  • control contents of writing and reading are changed according to the performance such as delay and bandwidth required for the data to be accessed. It will be possible to guarantee the performance required for reading and writing.
  • the access control unit 22 receives an access request to the storage device 14 from the access request unit 21 realized by the arithmetic unit 11 executing the program stored in the main memory 12.
  • the present invention is not limited to this, and an access request issued from another data transfer subject may be accepted based on a remote DMA (Direct Memory Access) architecture or the like, and access may be executed according to the request.
  • the access control unit 22 similarly to the access request received from the access request unit 21, the access control unit 22 receives the access request including the required performance information from another data transfer subject, and the access control is performed according to the control content according to the request. To execute.
  • the processing determined to be executed by the device control circuit 13 in the above description may be realized by software by the arithmetic unit 11 executing a program such as an operating system.
  • the assignment of the role to each storage device 14 is determined by the arithmetic unit 11 itself according to the type of the application program currently being executed, and the determined content is notified to the device control circuit 13. May be good.
  • the device control circuit 13 determines the storage device 14 to which the requested data is written when the write request is received, according to the notified decision content.
  • the plurality of storage devices 14 are physically independent NAND flash memories, but the storage device 14 is not limited to this, and the storage devices 14 include MRAM, FeRAM, FRAM (registered trademark), and PCM. , Xpoint, ReRAM, RRAM® and other non-volatile memories, and solid state drives (SSDs) and other devices may be included.
  • the information processing device 1 may use a volatile memory together as at least a part of the plurality of storage devices 14. In this case, the volatile memory can be used as the storage device 14 that meets the performance requirements of wide band and low delay.
  • the storage device 14 may be a plurality of printed circuit boards built in one device or a semiconductor package.
  • the plurality of storage devices 14 may be a plurality of semiconductor packages mounted on one printed circuit board.
  • the plurality of storage devices 14 may be a plurality of silicon dies enclosed in one semiconductor package. Further, it may be a plurality of layers, banks, planes, etc., which are integrated in a three-dimensional stack in one silicon die and each storage element group is divided and assigned. Further, it may be a plurality of banks or planes that are integrated in a two-dimensional single layer in one silicon die and each storage element group is divided and assigned.
  • the information processing apparatus 1 executes the control as described above for a plurality of storage devices 14 configured by mixing elements and devices having different particle sizes as illustrated above. May be good.
  • the plurality of storage devices 14 may have different performances such as delays and access routes.
  • the plurality of storage devices 14 are provided with access routes individually prepared for each storage device 14, so that conflicts in access processing with other storage devices 14 can be avoided. May be good.
  • the information processing device 1 according to the present embodiment uses a plurality of storage areas 14 capable of executing different types of access in parallel as a plurality of storage devices 14, and as described above, to each storage device 14. Access will be controlled.
  • FIG. 8 shows a hardware configuration example of a game console (household game machine or the like) according to an embodiment of the present invention.
  • This game console includes a main SOC that functions as a calculation unit 11, a NAND flash controller that functions as a device control circuit 13, and a plurality of NAND flash memories that function as a storage device 14 (abbreviated as NAND flash in the figure). Is built-in.
  • the main SOC may include a DMA engine or a Crypt engine.
  • the DMA engine supports remote DMA, which transfers data directly between the main memory and the NAND flash controller without the management of an operating system.
  • the remote DMA it is possible to reduce the delay caused when accessing the NAND flash memory as compared with the case where the CPU executing the operating system issues an access request.
  • the Crypt engine may perform encryption of data written to the NAND flash memory and decryption of the read data.
  • the error detection and correction circuit in the NAND flash controller detects and corrects garbled memory cell data in the NAND flash memory. Access for error detection and correction is also included in the management access described above.
  • This game console provides management access to the storage device 14 such as garbage collection mentioned above, and downloads and installs data for new game applications during times when the user is not running the game (non-operating hours). You may. Data access is performed by scheduling such processing in cooperation with the access control unit 22 and the device allocation control unit 23 realized by the NAND flash controller and the operating system executed by the arithmetic unit 11. The degree of parallelism of the storage device 14 required to satisfy the performance requirements of the above can be suppressed.
  • FIG. 9 shows an example of such an embodiment.
  • the configuration of a server system including a plurality of computing servers and a plurality of storage servers mounted on a data center rack is shown. These servers are connected to each other via a switch.
  • each server is connected by Ethernet (registered trademark) here, the server may be connected by various interfaces such as Fiber Channel, InfiniBand, and PCIe.
  • the physical layer of the connection path between each server may be various, such as a CEI standard or an optical fiber.
  • the storage server is shared by a plurality of computing servers, and simultaneously processes a large number of access requests received from each of the plurality of computing servers.
  • the storage server includes one or more bridge controllers, and a plurality of SSD drives are connected to each bridge controller.
  • Each SSD drive is configured to include an SSD controller and a plurality of NAND flash memories connected to the SSD controller.
  • This NAND flash memory functions as the storage device 14 in the present embodiment.
  • This server system may be used, for example, to provide a cloud gaming service to users of client machines.
  • each computing server executes a different game application, encodes a drawn image, and sends it to a client machine via a network.
  • the data for these game applications is enormous and can exceed 100 GB per game, for example.
  • the storage server holds the data of many game applications, and each computing server loads and executes the data of the corresponding game application in response to the request from the user of the client machine.
  • the game application data may hold required performance information regarding the performance required for accessing the data. For example, required performance information indicating the required performance is added to data of a game application that is required to be read with a required bandwidth of 10 GB / s and an allowable delay of 0.2 ⁇ s.
  • the computing server may refer to this required performance information when downloading or installing (that is, writing) the data of each game application to the storage device of the storage server.
  • the amount of storage devices included in the storage server may be redundant. This allows you to perform administrative access such as garbage collection, download and install data for new game applications, and some for regular maintenance, even when your compute or storage server is up and running. Access such as deactivating the storage device can be realized by assigning a storage device with redundancy.
  • the computing server and the storage server may each have a built-in DMA engine or Crypt engine.
  • the DMA engine supports remote DMA, which transfers data between the compute server and the storage server without the management of the operating system, so that it can be stored as compared to the case where the CPU intervenes to process the access request.
  • the access delay to the device 14 is reduced.
  • the Crypt engine may encrypt and decrypt the data written to the storage device 14.
  • FIG. 10 to 12 are diagrams showing the software hierarchy configuration of the game console and the server system described here, FIG. 10 shows the correspondence between the two, and FIG. 11 shows an example of the software configuration of the game console.
  • FIG. 12 shows an example of software configuration of the server system.
  • the operating system game OS
  • the server OS executed by the computing server are the issuers of access requests (that is, so far). It functions as an access request unit 21) in the description.
  • Access requests are processed by a local NVMe subsystem that runs a real-time OS. This local NVMe subsystem corresponds to a NAND flash controller in the case of a game console and to each SSD controller in the case of a server system.
  • the game OS and the computing server OS make an access request to the storage device 14 via the NVMe (NVM Express) interface via the file system.
  • NVMe abstraction layer is a layer having a so-called HAL (Hardware Abstract Layer) function that abstracts the lower physical interface with respect to the processing layer operating in the upper NVMe standard.
  • HAL Hardware Abstract Layer
  • Device drivers corresponding to various network interfaces are connected below this abstraction layer.
  • the DMA driver implements user-level DMA. Specifically, user-level DMA is realized by operating the main memory management layer of an operating system (not shown) and the DMA driver in cooperation with each other.
  • the functions of the access control unit 22 and the device allocation control unit 23 described so far are realized by the control policy local layer on the real-time OS side.
  • the control policy control layer on the game OS side realizes the function on the access request side for linking with this function.
  • at least some of the functions that the control policy local layer has decided to perform here may be performed by the control policy control layer.
  • This control policy control layer may operate integrally with the file system of the game OS.
  • the storage server OS that relays the connection between the computing server OS and the real-time OS may also have the function of the control policy local layer.
  • the SSD side NVMe low-level processing layer implements management access, address translation, detection and correction of garbled memory cell data, and so on.
  • the overprovisioning area is also managed in cooperation with the access control unit 22 and the device allocation control unit 23.
  • the compute server OS may implement an abstraction layer compliant with the NVMe-oF (NVMe over Fabrics) standard instead of the NVMe abstraction layer.
  • the computing server OS issues an access request in compliance with NVMe-oF, and the storage server OS mediates and dispatches this access request and sends it to the SSD controller.
  • the real-time OS / firmware of the SSD controller receives this access request and executes low-level control for the NAND flash memory.
  • the upper processing layer issues an access request without considering what the lower logical device interface is and whether the storage is connected locally or remotely by interposing the abstraction layer. be able to.
  • 1 information processing device 11 arithmetic unit, 12 main memory, 13 device control circuit, 14 storage device, 21 access request unit, 22 access control unit, 23 device allocation control unit, 24 information storage unit.

Abstract

複数の記憶デバイスに対するアクセス要求を受け付け、受け付けたアクセス要求に応じて複数の記憶デバイスのいずれかに対するアクセスを実行する情報処理装置であって、アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、アクセスの態様を変化させる情報処理装置である。

Description

情報処理装置
 本発明は、記憶デバイスからデータを読み出す情報処理装置、情報処理方法、及びプログラムに関する。
 家庭用ゲーム機やパーソナルコンピュータ、スマートホン等の情報処理装置は、一般に、フラッシュメモリ等の情報を記憶する記憶デバイスを複数備えており、これらの記憶デバイスに対するデータの格納、及び格納されたデータの読み出しを行いながら動作する。
 同じ記憶デバイスに対する複数のアクセス要求が競合すると、記憶デバイスからデータを読み出す際にその読み出しアクセスに遅延(レイテンシ)が生じることがある。例えば映像等のストリーミングデータや、リアルタイムでの描画更新に使用するゲームのデータを読み出す場合など、所定の要求水準を満たすレイテンシでの読み出しが期待されている場合、このようなアクセス遅延が生じると要求水準を確保することができなくなってしまい、好ましくない。
 特にNAND型フラッシュメモリ等の記憶デバイスは、メモリセルの書き換え可能回数(メモリセルの寿命)に制限があることが知られており、利用するメモリセルの分散・平準化、すなわち、ウェアレベリングの考慮が必要となる。また、読み出し・書き込みはページ単位(例えば16キロバイト単位)、消去はページよりも大きなサイズであるブロック単位(例えば1.2メガバイト単位)でしか行えない制約がある。このような中で、記憶デバイスの運用において、書き込みを繰り返していると、各ブロック内に未使用領域が断片的に発生し、記憶デバイスの利用効率やアクセス性能が低下してくる。また、各メモリセルの利用頻度の偏りにより、各メモリセルの書き換え可能寿命にも偏りが生じる。このような問題に対する対策として、書き込み済みデータを読み出して、別領域に集約して書き込み、消去可能な元領域をブロック単位で連続して確保したうえで消去をおこなう、という管理アクセス、すなわち、デフラグメンテーションやガベージコレクションと呼ばれる処理が随時必要となる。NAND型フラッシュメモリの利用においては、このような管理アクセスが不可欠であるが、この管理アクセスが通常のデータアクセスと競合することにより、通常のデータアクセスのレイテンシにばらつきが生じてしまい、アクセスに必要な時間を予測することが難しくなることがある。
 本発明はこのような事情を考慮してなされたものであって、その目的の一つは、記憶デバイスからデータを読み出す際に、管理アクセス等の競合する他のアクセスの影響を排除し、必要な要求性能を確保することのできる情報処理装置、情報処理方法、及びプログラムを提供することにある。
 本発明の一態様に係る情報処理装置は、複数の記憶デバイスへのアクセスを制御する情報処理装置であって、前記複数の記憶デバイスに対するアクセス要求を受け付ける受付部と、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御部と、を含み、前記アクセス制御部は、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。
 本発明の一態様に係る情報処理方法は、複数の記憶デバイスへのアクセスを制御する情報処理方法であって、前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、を含み、前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。
 本発明の一態様に係るプログラムは、複数の記憶デバイスへのアクセスを制御するコンピュータに、前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、を実行させるためのプログラムであって、前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させることを特徴とする。このプログラムは、コンピュータ読み取り可能で非一時的な情報記憶媒体に格納されて提供されてよい。
本発明の実施の形態に係る情報処理装置の構成例を表すブロック図である。 本発明の実施の形態に係る情報処理装置の機能を表す機能ブロック図である。 デバイス制御回路が実行するアクセス制御の一例について説明する図である。 デバイス制御回路が実行するアクセス制御の別の例について説明する図である。 デバイス制御回路が実行する記憶デバイスの用途割り当ての一例について説明する図である。 アドレス空間に対する性能割り当ての一例を示す図である。 アドレス空間に対する性能割り当ての別の例を示す図である。 本発明の一実施形態をゲームコンソールに適用した場合の構成例を示す図である。 本発明の一実施形態をサーバシステムに適用した場合の構成例を示す図である。 ソフトウェア階層構成の概要を示す図である。 ゲームコンソールのソフトウェア階層構成を示す図である。 サーバシステムのソフトウェア階層構成を示す図である。
 以下、本発明の実施の形態について図面を参照しながら説明する。
 本発明の一実施形態に係る情報処理装置1は、家庭用ゲーム機やサーバコンピュータなどであって、図1に示すように、演算部11と、メインメモリ12と、デバイス制御回路13と、複数の記憶デバイス14と、通信部15と、を含んで構成されている。
 演算部11は、CPU等のプログラム制御デバイスを含み、メインメモリ12に格納されたオペレーティングシステムやアプリケーションプログラムなどのプログラムに従って、各種の情報処理を実行する。メインメモリ12は、RAM等の揮発性記憶素子を含んで構成されており、演算部11が実行する各種のプログラムや、それらのプログラムで利用されるデータを一時的に保持する。
 デバイス制御回路13は、集積回路等であって、その内部に保持されているファームウェアプログラムに従って、記憶デバイス14の動作を制御するための処理を実行する。特にデバイス制御回路13は、後述するように、演算部11からデータの読み出し要求、書き込み要求、削除要求などのアクセス要求を受け付けて、その要求内容に応じた記憶デバイス14へのアクセスを実行する。また、ガベージコレクションやウェアレベリングなど、記憶デバイス14の管理に必要な各種の制御処理を実行する。
 複数の記憶デバイス14は、それぞれ不揮発性記憶素子によって構成されるデバイスであって、情報処理装置1が使用するプログラムや各種のデータを記憶する。記憶デバイス14は、例えばNAND型フラッシュメモリ等であってよい。記憶デバイス14に記憶されているデータは、演算部11からの要求に応じてメインメモリ12に格納されるなどして利用される。
 本実施形態において、複数の記憶デバイス14は、それぞれ独立にアクセス可能であるものとする。すなわち、一つの記憶デバイス14に対して複数のアクセス要求があった場合、それらのアクセスは同時に実行することができず、互いに競合することになる。これに対して、互いに別の記憶デバイス14に対するアクセスは競合せず、並列に実行することが可能になっている。
 通信部15は、無線又は有線で外部の通信ネットワークとの間でデータを送受信するためのインタフェースである。情報処理装置1は、通信部15を介して他の通信機器との間でデータを授受する。
 以下、本実施形態に係る情報処理装置1が実現する機能について、図2を参照して説明する。図2に示すように、情報処理装置1は、機能的に、アクセス要求部21と、アクセス制御部22と、デバイス割り当て制御部23と、情報記憶部24と、を含んで構成される。アクセス要求部21は、演算部11がメインメモリ12に格納されているオペレーティングシステム等のプログラムを実行することで実現される。アクセス制御部22、デバイス割り当て制御部23及び情報記憶部24は、デバイス制御回路13が内蔵するファームウェアプログラムを実行することによって実現される。
 アクセス要求部21は、上位のアプリケーションプログラムからの要求等に応じて、デバイス制御回路13に対してデータのアクセス要求を発行する。アクセス要求部21が発行するアクセス要求には、記憶デバイス14へのデータの書き込み要求、記憶デバイス14に格納されたデータの読み出し要求、及びデータの削除要求が含まれ得る。さらに本実施形態において、アクセス要求部21は、少なくとも一部のアクセス要求を発行する際に、そのアクセス要求の対象となったデータを読み出す際に要求される性能に関する情報を、アクセス要求とともにデバイス制御回路13に通知する。以下では、この要求される読み出し性能に関する情報を、要求性能情報という。
 具体的に要求性能情報は、例えば要求される帯域(単位時間あたりに読み出されるデータ量)の大きさを指定する情報や、許容される読み出し時の遅延(レイテンシ)を指定する情報を含んでもよい。あるいは、単に広帯域(すなわち、所定のデータ読み出し速度以上)での読み出しが要求されるか否か、及び低遅延(すなわち、所定値以内のレイテンシ)での読み出しが要求されるか否かのそれぞれを指定する情報であってもよい。また、要求性能情報は、ベストエフォートでの読み出しが許容される旨を指定する情報を含んでもよい。この場合には、遅延や帯域に対する要求性能は指定されないことになる。
 アクセス要求部21は、個々のアクセス要求ごとに、そのアクセス要求の対象となったデータに対する要求性能情報をそのアクセス要求に付加して通知することとしてもよい。あるいは、アクセス要求の対象とされる一連のデータごとに、そのデータに対する要求性能情報を付加してもよい。具体的に、アクセス要求がバーストアクセス要求やブロックアクセス要求、チェーンリストアクセス要求などであって、一つのアクセス要求に応じて複数のデータアクセスが分割実行される場合がある。このような場合、アクセス要求部21は、分割実行されるそれぞれのデータアクセスに対して要求性能情報を指定してもよい。また、ファイルシステムと連携したアクセス要求など、一つのファイルに対するアクセス要求に応じて複数のデータアクセスが分割実行される場合がある。このような場合にも、アクセス要求部21は、複数のデータアクセスのそれぞれに対して要求性能情報を指定してもよい。
 アクセス要求部21は、アクセス要求元のアプリケーションプログラムからの指定に応じて、要求性能情報の内容を決定してもよい。あるいは、アクセス要求元のアプリケーションプログラムの種類に応じて自動的に要求性能情報の内容を決定してもよい。一例として、ゲームプログラムなどにおいては、ゲーム画面の描画に必要なデータをゲーム処理の実行中にリアルタイムに読み出したい場合がある。このような場合、低遅延での読み出しが要求される旨を指定する要求性能情報が指定される。
 なお、アクセス要求部21は、データの書き込み要求時に、後にそのデータを読み出す際に要求される性能を指定する要求性能情報を通知してもよい。また、データの読み出し要求を行う際に、その読み出し要求の対象となったデータの読み出しに要求される性能を指定する要求性能情報を通知してもよい。
 アクセス制御部22は、アクセス要求部21が発行するアクセス要求を受け付けて、その要求内容に応じた記憶デバイス14へのアクセス制御を実行する。特に本実施形態において、アクセス制御部22は、要求性能情報を伴うデータの読み出し要求を受け付けた場合、その要求された性能での読み出しを実現するために必要な制御を行う。また、アクセス制御部22は、要求性能情報を伴うデータの書き込み要求を受け付けた場合、その要求性能情報の内容に応じて、データの書き込み先の記憶デバイス14を変化させる。
 以下、アクセス制御部22が要求性能情報を伴うアクセス要求を受け付けた場合に実行する制御内容のいくつかの具体例について、説明する。
 まず、低遅延での読み出しを指定する要求性能情報を伴うデータの読み出し要求を受け付けた場合にアクセス制御部22が実行する制御について、説明する。ここでは具体例として、複数の記憶デバイス14のうち、記憶デバイス14-1に格納されているデータD1に対して、低遅延での読み出しを必要とする読み出し要求R1が受け付けられたものとする。この場合、アクセス制御部22は、データD1の読み出しを実行中に別のアクセス要求R2を受け付けた際に、そのアクセス要求R2に応じたアクセスがデータD1の読み出しを妨げないよう制御する。そのためにアクセス制御部22は、アクセス要求R2に応じた処理を行う際に、データD1が格納されている記憶デバイス14-1に対するアクセスが生じないようにする。これにより、記憶デバイス14-1へのアクセスの競合を避け、データD1の読み出しアクセスに遅延が生じないようにすることができる。
 具体的にアクセス制御部22は、アクセス要求R2が書き込み要求であった場合、このアクセス要求R2の対象となったデータD2の書き込み先を、データD1が格納されている記憶デバイス14-1以外の記憶デバイス14に変更する。このような制御は、格納先として指定された論理アドレスを別の記憶デバイス14の物理アドレスにマッピングするアドレス変換によって実現できる。図3は、このようなアクセス先の変更を説明する図である。この図の例では、データD2の書き込み先として、データD1の格納場所と比較的近い論理アドレスが指定されているが、アドレス変換によってデータD2の書き込み先が別の記憶デバイス14-2に変更されている。これにより、データD1の読み出しとデータD2の書き込みが並列に実行され、データD1の読み出しに必要なレイテンシ性能を確保することができる。なお、このアドレス変換は、ページ方式などで実行されるものであってもよい。
 また、アクセス要求R2が、データD1と同じ記憶デバイス14-1に格納されたデータD3の削除要求であった場合、アクセス制御部22は、データD1の読み出しが完了するまで、このアクセス要求R2に応じたデータD3の削除処理を遅延させる。具体的にアクセス制御部22は、削除要求を受け付けたタイミングでは、論理アドレス上のデータD3を削除済みのステータスに変化させる制御を行い、削除要求に対して削除済みである旨の返答を返すが、実際にデータD3へのアクセスは行わない。図4は、このような削除の予約が行われた状態を示している。この状態でデータD3に対するアクセス要求を受け付けた場合、アクセス制御部22はデータD3が存在しない旨の応答を返す。一方、記憶デバイス14-1内のデータD3を実際に削除する処理は、データD1の読み出しが完了した後に実行する。これにより、記憶デバイス14-1へのアクセスの競合を回避できる。
 なお、アクセス制御部22は、データD1の読み出し完了後、直ちにデータD3の削除処理を実行してもよいが、予め定められたタイミングで実行してもよい。具体例として、アクセス制御部22は、記憶デバイス14に対するアクセスが少ないと想定される夜間等の予め定められた時間帯に削除処理を実行してもよい。また、記憶デバイス14の一部が非稼働になるタイミングが存在する場合、削除処理の対象となる記憶デバイス14が非稼働とされるタイミングで削除処理を実行してもよい。
 さらにアクセス制御部22は、データD1の読み出し中は、アクセス要求に応じたアクセス以外の記憶デバイス14-1へのアクセスも制限する。以下では、アクセス要求に応じたアクセス以外にアクセス制御部22が実行する、各記憶デバイス14の運用上必要となる記憶デバイス14へのアクセスを、管理アクセスという。具体的に、NAND型フラッシュメモリ等の記憶デバイスを使用する場合、ガベージコレクションやデフラグメンテーションなどを行うための管理アクセスが必要となる。また、キャッシュ領域、冗長領域、オーバープロビジョニング領域など、読み出し速度等に差がある他の記憶領域と記憶デバイス14との間でデータを移動させる管理アクセスが行われる場合がある。また、誤り検出訂正用データ(ECCデータ)の書き込みや読み出しの管理アクセスが行われる場合もある。また、記憶デバイス14のメモリセル構造によっては、メモリセルの保持内容が時間の経過や外部要因によって徐々に失われ、データ化けを起こすおそれがある。そのためアクセス制御部22は、このような状態の発生を避けるため、同一メモリセル値の再チャージ・再書き込みなどのリフレッシュ動作や、あるメモリセルに保持されている値を別のメモリセルに移動させるなどの管理アクセスを実行する場合がある。
 以上例示したような各種の管理アクセスも、他のアクセスを遅延させる要因となる。そのためアクセス制御部22は、低遅延での読み出しが要求されるデータの読み出し中は、管理アクセスの実行を制限し、読み出しが完了した後に制限されていた管理アクセスを実行することとする。アクセス制御部22は、この管理アクセスの実行についても、前述した削除処理と同様に、低遅延が要求される読み出しアクセスの完了後、予め定められたタイミングで実行してもよい。
 次に、要求性能情報を伴う書き込み要求を受け付けた場合の制御について、説明する。広帯域や低遅延での読み出しが必要である旨の要求性能情報を伴う書き込み要求を受け付けた場合、アクセス制御部22は、後にそのデータを読み出す際に必要な性能を確保できるように、書き込み先の記憶デバイス14を決定する。
 具体的に、所定値以内のレイテンシ(低遅延)での読み出しを要求する要求性能情報が書き込み要求に含まれる場合、アクセス制御部22は、その書き込み要求の対象となったデータを低遅延の読み出し用に割り当てられた記憶デバイス14に格納する。ここで、記憶デバイス14への用途の割り当ては、後述するデバイス割り当て制御部23によって実行される。逆にレイテンシについての要求がないデータの書き込み要求が受け付けられた場合、アクセス制御部22は、汎用の割り当てがなされた記憶デバイス14にそのデータを書き込むこととする。これにより、低遅延での読み出しが必要なデータとそうではないデータを別の記憶デバイス14に格納することができ、両者の間でのアクセスの競合を避けることができる。
 また、帯域の指定が要求性能情報に含まれる場合、アクセス制御部22は、指定されたデータを書き込む対象となる複数の記憶デバイス14を特定し、特定された複数の記憶デバイス14に分散して指定されたデータを書き込むこととする。これによりアクセス制御部22は、後にそのデータを読み出す際に、インターリーブの手法を用いて複数の記憶デバイス14から並列にデータを読み出すことによって、広帯域でのデータ読み出しが可能になる。
 ここで、分散して書き込みを行う記憶デバイス14の数は、要求された帯域の大きさに応じて決定されてよい。具体的に、アクセス制御部22は、要求された帯域の大きさが大きいほど、多くの記憶デバイス14に分散して書き込みを行うこととする。ここで、記憶デバイス14がNAND型フラッシュメモリの場合、1セルあたりの記憶容量(ビット数)は、SLC(シングルレベルセル)やMLC(マルチレベルセル)などと呼ばれる記憶方式によって決定される。一般に、1セルあたりの記憶容量が大きくなるほど、データ転送速度や読み出し遅延の性能は悪化する傾向があり、デバイスごとの記憶方式が異なると、データの読み出し性能にも相違が生じることになる。そこでアクセス制御部22は、各記憶デバイス14のデータ読み出し速度の情報を予め保持しておくこととし、広帯域での読み出しが必要なデータの書き込み要求を受け付けた場合、各記憶デバイス14のデータ読み出し速度を考慮して、必要な帯域を確保するための記憶デバイス14の数を決定することとする。
 具体例として、広帯域での読み出しが要求されるデータの書き込み要求を受付けた場合、アクセス制御部22は、比較的データ読み出し速度が早いSLC方式の記憶デバイス14を所定数書き込み対象にしてデータの書き込みを行う。例えば要求された帯域が10GB/sであってSLC方式の記憶デバイス14のデータ読み出し速度が1GB/sの場合、10個の記憶デバイス14に分散して書き込むことで、要求された帯域での読み出しが可能となる。
 なお、低遅延かつ広帯域の読み出しが要求されるデータの書き込み要求が受付けられた場合には、要求された帯域での読み出しに必要な数の記憶デバイス14をデバイス割り当て制御部23が低遅延の読み出し用途に割り当てることとし、アクセス制御部22はこの低遅延に割り当てられた複数の記憶デバイス14にデータを書き込むこととする。このときデバイス割り当て制御部23は、後述するように、読み出し遅延について要求された性能を確保可能な記憶デバイス14(例えばSLC方式でデータを読み書きする記憶デバイス14)を、要求された帯域での読み出しに必要な数だけ低遅延の読み出し用途に割り当てることとする。一例として、アクセス制御部22による読み出しアクセス制御の手続や転送に要する遅延(記憶デバイス14外で発生する遅延)が150μs、SLC方式の記憶デバイス14の読み出し遅延が50μs、MLC方式の読み出し遅延が100μsであることが既知である場合において、読み出し遅延が200μs以下であることを要求する要求性能情報が指定されたものとする。この場合アクセス制御部22は、SLC方式の記憶デバイス14に要求されたデータを書き込むこととする。これにより、読み出し時に前述したようなアクセス競合を抑制する制御を行うことで、要求された遅延性能を確保することができる。一方、要求された読み出し遅延が250μs以下であれば、アクセス制御部22は要求されたデータをMLC方式の記憶デバイス14に書き込んでもよい。なお、ここで例示したような各記憶デバイス14に対する読み出し性能に関する情報は、情報記憶部24によって保持される。
 また、アクセス制御部22は、データ書き込み時に指定された要求性能情報を記憶しておき、書き込まれたデータの読み出し要求を受け付けた際に、記憶されている要求性能情報を参照して読み出し制御を行ってもよい。例えば低遅延での読み出しが必要である旨の要求性能情報とともにデータD1の書き込み要求を受け付けた場合、アクセス制御部22は、前述したように低遅延の読み出しに割り当てられた記憶デバイス14にデータD1を格納するとともに、データD1について低遅延での読み出しが必要である旨を記憶しておく。そして、データD1に対する読み出し要求を受け付けた際には、その読み出し要求に要求性能情報が付加されているか否かにかかわらず、低遅延での読み出しを実行する。具体的には、前述した低遅延での読み出しを要求する要求性能情報とともに読み出し要求が行われた場合と同様に、アクセス競合を避けながらデータD1を読み出す制御を行う。これにより、書き込み時にそのデータの読み出し性能を指定する要求性能情報を付加しておけば、読み出し時に都度要求性能情報を指定する必要なく、そのデータを要求された性能で読み出すことができるようになる。
 なお、これまで説明した例では、低遅延での読み出しが要求される複数のデータが、同じ記憶デバイス14に書き込まれる可能性がある。その場合、同じ記憶デバイス14に書き込まれた複数のデータに対する読み出し要求が競合した場合、その両者を低遅延で同時に読み出すことは困難になる。そのような場合に備えてアクセス制御部22は、低遅延での読み出しが要求されるデータの書き込み要求を受け付けた場合に、このデータを複数の記憶デバイス14に冗長化させて書き込むこととしてもよい。こうすれば、そのデータに対する読み出し要求が他の読み出し要求と競合した場合に、要求されたデータが冗長化して書き込まれている複数の記憶デバイス14のうち、他の読み出し要求と競合しないような一部の記憶デバイス14から要求されたデータを読み出すことにより、一つの記憶デバイス14に対するアクセスの競合による読み出し遅延を回避することができる。
 具体的に、この例においてアクセス制御部22は、低遅延での読み出しが要求されるデータの書き込み要求を受け付けた場合に、この書き込み要求の対象となったデータを、異なる複数の記憶デバイス14へ2重以上の多重度(複数度)であらかじめ書き込むこととする。
 このような前提の下で、ある対象データ(ここではデータD4とする)を所定値以内の遅延で読み出すことが要求された場合、アクセス制御部22は、前述したように、データD4を読み出している間、読み出し対象となる記憶デバイス14に対する当該読み出し以外のアクセスを制限することで、低遅延リードを保証する。そして、このデータD4の読み出しアクセス実行中に別のデータ(ここではデータD5とする)に対する低遅延での読み出し要求が同時に受け付けられた場合、アクセス制御部22は、このデータD5がどの記憶デバイス14に多重化されて書き込まれているかを調べる。前述したように低遅延での読み出しが要求されるデータが冗長化して書き込まれていれば、データD5も2以上の記憶デバイス14に冗長に書き込まれているはずである。アクセス制御部22は、データD5が書き込まれた複数の記憶デバイス14のうち、データD4を読み出し中の記憶デバイス14(すなわち、アクセスが制限されている記憶デバイス14)と異なる記憶デバイス14から、データD5を読み出す。なお、このデータD5の読み出し中は、データD4を読み出し中の記憶デバイス14と同様に、データD5の読み出し対象となった記憶デバイス14に対するそれ以外のアクセスを制限する。
 例えば記憶デバイス14-1,14-2の2つの記憶デバイス14が低遅延アクセス用途に割り当てられている場合、アクセス制御部22は、低遅延での読み出しが指定されたデータD4を、この記憶デバイス14-1,14-2の双方に冗長に書き込む。データD5についても同様に、記憶デバイス14-1,14-2の双方に書き込んでおく。そして、データD4を記憶デバイス14-1から読み出し中にデータD5に対する読み出し要求が受け付けられた場合、このデータD5を記憶デバイス14-2から読み出すこととする。これにより、データD4及びデータD5に対する読み出しアクセスが競合しないようにすることができる。
 また、記憶デバイス14-1~14-4の4つの記憶デバイス14がデータD4及びデータD5の書き込みに利用可能な場合、アクセス制御部22は、各データを記憶デバイス14-1,14-2の2つの記憶デバイス14に分散書き込みするとともに、記憶デバイス14-3,14-4の2つの記憶デバイス14にも同じデータを分散書き込みしてもよい。この場合、アクセス制御部22は、データD4の読み出し要求が受け付けられると、そのデータD4を記憶デバイス14-1,14-2の2つの記憶デバイス14から分散読み出しする。さらに、この分散読み出しの最中にデータD5の読み出し要求が受け付けられた場合、アクセス制御部22はデータD5を記憶デバイス14-3,14-4の2つの記憶デバイス14から分散読み出しする。このように、各データが複数の記憶デバイス14に2重以上の多重度で、かつそれぞれ分散書き込みされていれば、複数のデータを並列に、かついずれも分散読み出しで読み出すことができる。
 本発明の一実施態様において、デバイス割り当て制御部23は、アクセス制御の対象となる複数の記憶デバイス14に対して、用途の割り当てを行う。この場合、デバイス割り当て制御部23は、複数の記憶デバイス14の一部を低遅延アクセス用途に割り当て、別の一部を汎用アクセス用途に割り当てる。アクセス制御部22は、データの書き込み要求を受け付けた場合に、この割り当て結果に応じてデータの書き込み先の記憶デバイス14を振り分けることとする。これにより、低遅延のアクセスが要求されるデータをそれ以外のデータと別の記憶デバイス14に記憶することができ、低遅延のアクセスが要求されるデータを読み出す際にアクセスの競合が生じないようにすることができる。
 なお、前述したNAND型フラッシュメモリの例のように、記憶方式等によって各記憶デバイス14の読み出し性能には差があることがある。この場合、デバイス割り当て制御部23は、遅延の少ない記憶デバイス14(例えばSLC方式の記憶デバイス14)を優先的に低遅延アクセスの用途に割り当てることとする。
 このような制御を実現するために、情報記憶部24は、各記憶デバイス14からのデータ読み出しの際に生じる遅延がどの程度かを示す情報を、予め記憶しているものとする。前述したように、最終的に生じる読み出し遅延には、記憶デバイス14自体で発生する読み出し遅延と、アクセス制御部22による読み出し制御の手続やデータ転送によって発生する遅延とが含まれることになる。また、読み出し制御の手続やデータ転送に要する遅延は、各記憶デバイス14の接続態様や通信経路によって異なり、複数の記憶デバイス14について共通であるとは限らない。そのため情報記憶部24は、各記憶デバイス14の純粋な読み出し性能に関する情報だけでなく、このような実際のアクセスの手続や転送によって生じる遅延に関する情報を予め保持することとし、デバイス割り当て制御部23はこのような情報を考慮して要求された低遅延アクセスを実現するための記憶デバイス14割り当てを決定することとしてもよい。
 デバイス割り当て制御部23は、低遅延のアクセスが必要なデータの書き込み要求をアクセス制御部22が受け付けた際に、動的に記憶デバイス14の割り当てを行ってもよい。この場合、まずアクセス制御部22からの要求に応じてデバイス割り当て制御部23が低遅延アクセスのための記憶デバイス14を割り当てる。その後、アクセス制御部22は割り当てられた記憶デバイス14に対して書き込み要求の対象となったデータを格納する。
 さらにこの場合、デバイス割り当て制御部23は、低遅延アクセスのための記憶デバイス14を割り当てた際に、併せて汎用アクセスのための記憶デバイス14を割り当ててもよい。前述したように、低遅延でのデータ読み出しを実行する際には、アクセスの競合を回避するために同時期に発生した別のアクセス要求については別の記憶デバイス14に書き込むことが望ましい。そのため、低遅延アクセスのための記憶デバイス14を確保する際に、併せて汎用アクセスのための記憶デバイス14を確保しておくことで、アクセスの競合を生じにくくすることができる。
 なお、この場合に確保する汎用アクセスのための記憶デバイス14の数は、低遅延アクセスのための記憶デバイス14の数に対して予め定められた割合に応じて決定されてよい。例えば、低遅延アクセスのための記憶デバイス14をn個確保するごとに汎用アクセスのための記憶デバイス14の数を1個追加するなどのルールでそれぞれの用途の記憶デバイス14を確保することとする。また、前述したように広帯域、かつ低遅延での読み出しが要求されるデータの書き込み要求が受け付けられた場合、比較的多くの記憶デバイス14を低遅延アクセス用途に確保する必要が生じる。この場合、要求された帯域に応じて必要な数の記憶デバイス14を低遅延アクセス用途に割り当て、残りの記憶デバイス14を汎用アクセス用途に割り当ててもよい。
 なお、デバイス割り当て制御部23が行う用途の割り当ては固定的なものではなく、動的に変更されるものであってよい。例えば新たに低遅延の読み出しが必要なデータの書き込み要求を受け付けた際に低遅延アクセスに割り当てた記憶デバイス14の空き容量が不足している場合、汎用アクセスに割り当てられていた記憶デバイス14を低遅延アクセス用途に切り替えてもよい。逆に、性能に関する要求のないデータの書き込み要求を受付けた際に汎用アクセスに割り当てた記憶デバイス14の空き容量が不足している場合、低遅延アクセスに割り当てられていた記憶デバイス14を汎用アクセス用途に切り替えてもよい。このような場合、他のアクセス要求と競合しないタイミングで、ガベージコレクション等の処理を実行してデータの再配置を行うこととする。また、特定の記憶デバイス14へのアクセス集中を回避するために、複数の記憶デバイス14の間でデータを入れ替えるなどして割り当てを変更してもよい。
 以上の説明では、要求性能情報はデータ読み出し時に要求される性能を指定するものとしたが、要求性能情報は書き込み時に要求される性能を指定する情報を含んでもよい。具体例として、要求性能情報は、書き込み時に要求される帯域(単位時間あたりのデータ書き込み量)を指定する情報を含んでもよい。広帯域での書き込みを要求する要求性能情報を伴うデータ書き込み要求が受け付けられた場合、アクセス制御部22は、広帯域の読み出しが要求されるデータを書き込む場合と同様に、要求された帯域と各記憶デバイス14のデータ書き込み速度を考慮して、書き込み対象の記憶デバイス14を特定する。そして、特定された記憶デバイス14に対して並列に書き込みを行う。これにより、要求された帯域を保証したデータの書き込みを実現できる。
 別の割り当て制御方法として、デバイス割り当て制御部23は、複数の記憶デバイス14に対する役割の割り当てを、複数の動作モードのそれぞれに従って切り替えてもよい。以下では具体例として、デバイス割り当て制御部23は、演算部11が実行中のアプリケーションプログラムの種類などに応じて、高速読み出しモード、高速書き込みモード、及び並列モードの3つの動作モードを切り替えることとする。この場合の制御内容について、図5を参照して説明する。ここでは具体例として、情報処理装置1は記憶デバイス14-1~14-5の5個の記憶デバイス14を備えるものとする。
 具体的に、演算部11がゲーム等の所定のアプリケーションプログラムP1を実行している間、デバイス割り当て制御部23は、高速読み出し(低遅延・広帯域での読み出し)に適した割り当てを行う(高速読み出しモード)。このモードでは、複数の記憶デバイス14のうち、記憶デバイス14-1が汎用アクセスに割り当てられ、その他の4個の記憶デバイス14-2~14-5が高速読み出しに割り当てられている。そして、アプリケーションプログラムP1で利用されるデータは、予め高速読み出しに割り当てられた記憶デバイス14-2~14-5に分散して書き込まれているものとする。この例においてアクセス制御部22は、記憶デバイス14-2~14-5に書き込まれたデータの読み出し要求が受け付けられた場合、4個の記憶デバイス14-2~14-5から並列にデータの読み出しを行う。これにより、広帯域でのデータの読み出しを実現できる。
 さらに、この高速読み出しモードにおいては、アクセス制御部22は、アプリケーションプログラムP1からの読み出し要求以外のアクセス要求が受け付けられた場合に、記憶デバイス14-2~14-5へのアクセスを制限し、アクセスの競合が生じないように制御する。具体的には、前述した低遅延での読み出しを要求する要求性能情報が指定された場合と同様に、別の書き込み要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)が受け付けられた場合にはその書き込み先を汎用アクセスに割り当てられた記憶デバイス14-1に設定する。なお、このような低遅延が要求されない書き込み要求の例としては、ゲームプログラムを実行中におけるゲームの途中経過を記録するセーブデータの書き込み要求などがある。また、データの削除要求に応じた削除処理や管理アクセスの実行などについては、処理の実行を遅延させる。これにより、特定のアプリケーションプログラムP1が利用するデータについては、低遅延での読み出しを保証できる。
 記憶デバイス14-2~14-5に対する読み出しアクセスが競合する場合、アクセス制御部22は以下のような制御を行うことでこれらの読み出しアクセスをいずれも低遅延で実行することができる。具体的に、この例では、低遅延での読み出しが要求されるデータは、いずれも高速読み出しに割り当てられた記憶デバイス14-2~14-5に分散して書き込まれているものとする。以下では、データA、及びデータBの2つのデータがいずれも記憶デバイス14-2~14-5に分散して書き込まれており、これらのデータに対する読み出し要求が順次受け付けられた場合を例として説明する。
 この場合、アクセス要求部21は、記憶デバイス14-2~14-5のそれぞれに格納されているデータAの読み出しを要求する。この要求に応じてアクセス制御部22は、記憶デバイス14-2~14-5に順次アクセスして、そのそれぞれからデータAを構成する一部のデータ(ここではデータフラグメントという)を読み出す。その後、データAの読み出し完了前に続いてアクセス要求部21がデータBの読み出しを要求したとする。アクセス制御部22は、データA読み出しに続行して、記憶デバイス14-3~14-5、14-2に順次アクセスして、このデータBを構成するデータフラグメントをそれぞれの記憶デバイス14から読み出す。
 ここでアクセス制御部22は、データA、及びデータBのいずれもシーケンシャルに、すなわち一度に一つの記憶デバイス14から読み出しが行われることとしているが、データAを構成するデータフラグメントの読み出しとデータBを構成するデータフラグメントの読み出しは、互いに別の記憶デバイス14を対象として並列に実行する。例えば記憶デバイス14-2に格納されているデータAのデータフラグメントを読み出している間、並行して記憶デバイス14-3に格納されているデータBのデータフラグメントを読み出す。このような制御によれば、データAとデータBは全体として同じ記憶デバイス14-2~14-5に格納されているにもかかわらず、それぞれの読み出しを互いに競合しないように並列に実行することができる。なお、ここでは各データをシーケンシャルに読み出すこととしたが、他のアクセス要求と競合しないタイミングでは複数の記憶デバイス14に分散して格納されたデータフラグメントを並列に読み出してもよい。
 なお、ここではそれぞれ分散して記憶された複数のデータを高速読み出しモードにおいて並列に読み出す例について説明した。しかしながらこれに限らず、前述したように動作モードによらずにアクセス要求部21から指定される性能要求情報に応じてアクセスの競合を回避する制御が必要になる場合においても、読み出し対象となる各データが予め分散して複数の記憶デバイス14に格納されている場合には、ここで説明した制御を行うこととしてもよい。これにより、同じ記憶デバイス14に対するアクセス競合を回避しながら複数のデータを並列に読み出すことが可能になる。
 高速書き込みモードでは、高速読み出しモードにおいて高速読み出しに割り当てることとした記憶デバイス14-2~14-5を高速書き込みアクセスに割り当てる。このモードは、演算部11が通信部15を介して外部のネットワークからプログラムやコンテンツなどの比較的大きなサイズのデータをダウンロードする場合など、書き込みアクセスがメインとなる状態において利用される。このモードにおいてアクセス制御部22は、高速での書き込みを要求されたデータを、記憶デバイス14-2~14-5に分散して書き込むこととする。これにより、広帯域でのデータ書き込みが実現できる。
 このモードにおいてアクセス制御部22は、高速書き込みの対象とされないデータの書き込み要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)があった場合、汎用アクセスを割り当てられた記憶デバイス14-1にそのデータを書き込むこととする。これにより、アクセス競合を生じさせずに、高速書き込みが要求されたデータを広帯域で記憶デバイス14-2~14-5に書き込むことができる。なお、アクセス要求部21は、ダウンロードプログラムなど所定のプログラムが要求元となるデータについて、高速書き込みの対象となる旨の要求性能情報とともに書き込み要求を行うこととする。
 並列モードは、高速読み出しと高速書き込みを両立させるモードである。このモードは、例えばゲーム等を実行しながらその映像を記録する場合など、読み出しと書き込みを同時に実行するアプリケーションプログラムP2が実行される場合に利用される。この並列モードにおいては、他のモードと同様に記憶デバイス14-1に汎用アクセスが割り当てられる一方で、記憶デバイス14-2,14-3に高速読み出しが割り当てられ、記憶デバイス14-4,14-5に高速書き込みが割り当てられる。これにより、高速読み出しが必要なデータについて2個の記憶デバイス14-2,14-3から並列に読み出しが行われ、高速書き込みが必要なデータについて2個の記憶デバイス14-4,14-5に並列に書き込みが行われる。これにより、高速読み出しと高速書き込みを同時期に並列して実行できる。この例における高速書き込みの対象となるデータは、例えばリアルタイムでかつフレーム落ちがないように記録すべきゲームの録画データなどである。なお、他のモードと同様に、高速読み出しや高速書き込みが要求されないデータのアクセス要求(例えばベストエフォートでの書き込みや読み込みを指定する要求性能情報を伴う書き込み要求)については、汎用アクセスが割り当てられた記憶デバイス14-1に対して実行される。具体例として、リアルタイム性が要求されない単なる映像記録データについては、汎用アクセスとして記憶デバイス14-1に対して書き込みを行ってよい。このような制御によれば、汎用アクセス、高速読み出し及び高速書き込みの間のアクセス競合を回避できる。
 このような制御を実現するために、並列モードにおいて高速読み出しの対象となるデータ(すなわち、並列モードの利用を想定したアプリケーションプログラムP2が読み出し対象とするデータ)は、予め並列モードにおいて高速読み出しが割り当てられる記憶デバイス14-2,14-3に格納しておくこととする。なお、ここでは高速読み出しと高速書き込みに同数の記憶デバイス14が割り当てられることとしたが、各用途に割り当てられる記憶デバイス14の数は、要求される読み出しや書き込みの帯域と、各記憶デバイス14のデータ転送速度とに応じて決定されてよい。
 以上説明したように、図5の例では動作モードに応じて各記憶デバイス14に割り当てられる用途を切り替えることで、それぞれの状況において要求される読み出しや書き込みの性能を確保できる。ただし、複数の記憶デバイス14のうち一部の記憶デバイス14(ここでは記憶デバイス14-1)は、どの動作モードにおいても汎用アクセスの用途を割り当てている。これにより、性能に関する要求がないデータについては、どのタイミングで書き込み要求を受け付けたとしても、常に汎用アクセスを割り当てられた記憶デバイス14に書き込むよう制御することができる。こうすれば、どの動作モードにおいても、高速読み出しや高速書き込みを要求されるデータへのアクセスが、性能に関する要求がないデータへのアクセスによって妨げられないようにすることができる。
 さらにこの例では、高速読み出しや高速書き込みの用途が割り当てられる記憶デバイス14-2~14-5に対するデータ削除のためのアクセスやガベージコレクション等の管理アクセスは、高速読み出しや高速書き込みの実行中には制限されてよい。アクセス制御部22は、例えば夜間などの特定の時間帯や、演算部11が特定のアプリケーションプログラムを実行していない状態のときなど、高速読み出しや高速書き込みのアクセス要求が発生しないと想定されるタイミングで、このような性能に関する要求のないアクセスを実行してもよい。
 これまで説明したような制御を実現するために、アクセス制御部22は、必要に応じて複数の記憶デバイス14間でデータを移動させる管理アクセスを実行してもよい。例えば高速書き込みが要求されたデータは、SLC形式の記憶デバイス14など、指定された要求を満たすことが可能な記憶デバイス14に対して書き込みを行う必要がある。しかしながら、このようなデータに対して指定される読み出しの要求性能によっては、読み出し時には別の記憶デバイス14(例えばMLC形式の記憶デバイス14)から読み出しを行っても要求された性能を確保できる場合がある。このような場合、将来の高速書き込みの要求やより高水準の高速読み出しの要求に備えて高性能な記憶デバイス14の空き容量を確保することが望ましい。そこでアクセス制御部22は、一旦要求された性能で書き込みを終えたデータを、別の記憶デバイス14に移動させる管理アクセスを行ってもよい。このような管理アクセスにより、将来的に発生し得る様々なアクセス性能の要求に対して柔軟に対応することが可能になる。
 また、アクセス制御部22は、複数の記憶デバイス14のうち、一部の記憶デバイス14が非稼働になるタイミングがある場合、そのタイミングで非稼働になる記憶デバイス14に対してデータの削除処理や各種の管理アクセスを実行することとしてもよい。サーバコンピュータ等においては、ドメインやドライブ単位で記憶デバイス14を非稼働にする制御を実行する場合がある。このようなタイミングで遅延させていたデータの削除処理や管理アクセス等を実行することとすれば、アクセスの競合をより生じにくくさせることができる。
 また、アクセス制御部22は、高速書き込み等を要求する書き込み要求を受け付けた場合、キャッシュとして利用可能な揮発性メモリに一時的にデータの書き込みを行ってもよい。この場合アクセス制御部22は、後にアクセス競合が生じないと想定される時間帯に揮発性メモリに書き込まれたデータを記憶デバイス14に移動させる管理アクセスを行う。また、アクセス制御部22は、読み出し要求を受け付けた場合に、要求されたデータをアクセス要求部21に対して転送するとともにキャッシュとして利用する揮発性メモリに同じデータを一時的に書き込んでもよい。この場合アクセス制御部22は、その後に同じデータに対する読み出し要求を受付けた場合、揮発性メモリに書き込まれたデータを読み出すこととする。この場合、キャッシュとして利用する揮発性メモリの空き容量が不足した場合や揮発性メモリに書き込まれたデータへのアクセスが一定時間なかった場合などにおいて、書き込まれたデータを削除することとする。
 以上説明したように、アクセス制御部22は、低遅延でのデータ読み出しを実行している間、アクセス競合を回避するために、当該読み出しの対象となっている記憶デバイス14への書き込みを制限することとする。そこで、このように低遅延でのデータ読み出しを実行中には、当該読み出しの対象となっている記憶デバイス14の空き容量を、書き込み可能な容量のカウントから除外することとしてもよい。このような制御によれば、低遅延でのデータ読み出し実行中は、そのタイミングで書き込みが制限される空き容量の分だけアクセス要求部21側からは複数の記憶デバイス14全体の書き込み可能な空き容量が減少したように認識される。
 なお、前述したキャッシュとして利用可能な記憶領域や、冗長性のあるデータを書き込むための別の記憶デバイスなどを確保することで、低遅延でのデータ読み出し中にも書き込みアクセスを受け付け可能な記憶容量が存在する場合、その記憶容量は書き込み可能な空き容量としてカウントすることとしてもよい。このような空き容量の提示は、ファイルシステムを介在して実現されてもよい。
 ここまでの説明では、アクセス要求部21は性能要求情報を通知することによってアクセスに要求される性能を指定するものとした。しかしながら、これに限らず、アクセス先を特定するアドレス空間内の範囲(アドレス範囲)に要求される性能を予め対応づけることによって、アクセス要求部21はアクセス要求に都度性能要求情報を付加せずとも、アドレス範囲を指定することによってアクセスに要求される性能を指定することとしてもよい。この場合、アクセス制御部22は、予め複数の記憶デバイス14内のアクセス先を指定するためのアドレス空間内に、複数のアドレス範囲を設定する。そして、アクセス制御部22はこの複数のアドレス範囲のそれぞれに予め実現すべき要求性能を対応づけて記憶しておく。さらにアクセス制御部22は、設定されたアドレス範囲と要求性能の対応関係を予めアクセス要求部21に対して通知する。
 アクセス要求部21は、アクセス要求を発行する際に、複数のアドレス範囲のうち、当該アクセスの対象データに対する要求性能に応じて選択されるアドレス範囲をアクセス先として指定して、アクセス要求を発行する。アクセス要求を受け付けたアクセス制御部22は、アクセス要求で指定されたアドレス範囲に対応づけられた要求性能を満たすように、これまで説明したような各種の手法を用いて当該アクセス要求に応じたアクセスを実行する。これにより、アクセス要求部21が都度性能要求情報を通知せずとも、要求される性能を満たすアクセス制御が可能になる。
 図6は、アドレス空間に対する性能割り当ての一例を示す図である。この図の例では、セグメント方式によって同じ記憶デバイス14が多重にアドレス空間に割り当てられている。具体的にこの図では、上位アドレスビット(セグメントアドレス)によって3種類の要求性能(すなわち、要求性能A、B、C)のいずれかが指定される。そして、下位アドレスビット(オフセットアドレス)によってどの記憶デバイス14を使うか、また記憶デバイス14内のアクセス位置が指定される。アクセス要求部21は、上位アドレスビットと下位アドレスビットの組み合わせによって、要求性能を指定するとともに、アクセス対象の記憶デバイス14及びアクセス位置を指定することができる。
 図7は、アドレス空間に対する性能割り当ての別の例を示している。この図の例では、ページ方式によって同じ記憶デバイス14が多重にアドレス空間に割り当てられている。この図においても、上位アドレスビット(ページアドレス)によって3種類の要求性能(すなわち、要求性能A、B、C)のいずれかが指定される。そして、下位アドレスビット(オフセットアドレス)によってどの記憶デバイス14を使うか、また記憶デバイス14内のアクセス位置が指定される。
 以上説明した本実施形態に係る情報処理装置1によれば、アクセス対象となるデータに対して要求される遅延や帯域などの性能に応じて、書き込み、及び読み出しの制御内容を変化させることで、読み出しや書き込みの際に必要な性能を保証することができるようになる。
 本発明の実施の形態は、以上説明したものに限られない。例えば以上の説明では、アクセス制御部22は、演算部11がメインメモリ12に格納されたプログラムを実行することによって実現されるアクセス要求部21から記憶デバイス14に対するアクセス要求を受け付けることとした。しかしながらこれに限らず、リモートDMA(Direct Memory Access)のアーキテクチャーなどに基づいてその他のデータ転送主体から発行されるアクセス要求を受け付けて、その要求に応じたアクセスを実行してもよい。この場合にも、アクセス要求部21から受け付けるアクセス要求と同様に、アクセス制御部22は要求性能情報を含んだアクセス要求を別のデータ転送主体から受け付けて、その要求に応じた制御内容でアクセス制御を実行する。
 また、以上の説明においてデバイス制御回路13が実行することとした処理の少なくとも一部は、演算部11がオペレーティングシステム等のプログラムを実行することによってソフトウェア的に実現されることとしてもよい。具体的に、例えば各記憶デバイス14への役割の割り当ては、現在実行中のアプリケーションプログラムの種類に応じて演算部11自身が決定することとし、その決定内容をデバイス制御回路13に通知することとしてもよい。この場合、デバイス制御回路13は、通知された決定内容に応じて、書き込み要求を受け付けた際に要求されたデータを書き込む対象となる記憶デバイス14を決定する。
 また、以上の説明では複数の記憶デバイス14は、物理的に互いに独立したNAND型フラッシュメモリであることとしたが、これに限らず記憶デバイス14は、MRAM、FeRAM、FRAM(登録商標)、PCM、Xpoint、ReRAM、RRAM(登録商標)等の各種の不揮発性メモリや、ソリッドステートドライブ(SSD)等の各種のデバイスを含んでもよい。また、本実施形態に係る情報処理装置1は、複数の記憶デバイス14の少なくとも一部として揮発性メモリを併用してもよい。この場合、揮発性メモリを広帯域・低遅延の性能要求に対応する記憶デバイス14として利用できる。また、記憶デバイス14は、一つのデバイスに内蔵される複数のプリント基板や、半導体パッケージであってもよい。また、一つのプリント基板に搭載された複数の半導体パッケージであってもよい。あるいは、複数の記憶デバイス14は、一つの半導体パッケージに封入される複数のシリコンダイであってもよい。また、一つのシリコンダイ内において三次元積層で集積され、それぞれ記憶素子群が分割して割り当てられた複数のレイヤーやバンク、プレーンなどであってもよい。また、一つのシリコンダイ内において二次元単層で集積され、それぞれ記憶素子群が分割して割り当てられた複数のバンクやプレーンなどであってもよい。さらに本実施形態に係る情報処理装置1は、以上例示したような互いに異なる粒度の素子やデバイスが混在して構成される複数の記憶デバイス14を対象として、以上説明したような制御を実行してもよい。複数の記憶デバイス14は、遅延などの性能やアクセス経路が互いに異なってよい。特に、複数の記憶デバイス14は、それぞれの記憶デバイス14に対して個別に用意されたアクセス経路を備え、これにより他の記憶デバイス14との間でアクセス処理の競合が避けられる構成となっていてもよい。いずれの場合も、本実施形態に係る情報処理装置1は、互いに異なる種類のアクセスを並列に実行可能な複数の記憶領域を複数の記憶デバイス14として、以上説明したように各記憶デバイス14へのアクセスを制御することとする。
 また、本発明の実施の形態は各種の態様で実現可能である。図8は本発明の一実施形態であるゲームコンソール(家庭用ゲーム機等)のハードウェア構成例を示している。このゲームコンソールは、演算部11として機能するメインSOC、デバイス制御回路13として機能するNANDフラッシュコントローラ、及び記憶デバイス14として機能する複数のNAND型フラッシュメモリ(図中ではNANDフラッシュと略記されている)を内蔵している。メインSOCは、DMAエンジンやCryptエンジンを内蔵してもよい。DMAエンジンは、メインメモリとNANDフラッシュコントローラとの間でオペレーティングシステムの管理を介さずに直接データ転送を行うリモートDMAに対応する。リモートDMAによれば、オペレーティングシステムを実行するCPUがアクセス要求を発行する場合と比較して、NAND型フラッシュメモリに対するアクセスの際に生じる遅延を低減させることができる。Cryptエンジンは、NAND型フラッシュメモリに書き込むデータの暗号化と読み出したデータの復号化を実行してもよい。また、NANDフラッシュコントローラ内の誤り検出訂正回路は、NAND型フラッシュメモリ内のメモリセルデータ化けの検出と訂正を行う。この誤り検出と訂正のためのアクセスも前述した管理アクセスに含まれる。
 このゲームコンソールは、ユーザーがゲームを実行していない時間帯(非稼働時間)に、前述したガベージコレクションなどの記憶デバイス14に対する管理アクセスを実行したり、新しいゲームアプリケーションのデータダウンロードやインストールを行ったりしてもよい。このような処理のスケジューリングを、NANDフラッシュコントロ-ラによって実現されるアクセス制御部22、及びデバイス割り当て制御部23と、演算部11が実行するオペレーティングシステムとが連携して実施することで、データアクセスの性能要求を満たすために必要な記憶デバイス14の並列度を抑制することができる。
 また、以上の説明では、アクセス要求を発行する演算部11と当該アクセス要求を受け付けて複数の記憶デバイス14に対するアクセス制御を行うデバイス制御回路13とは同一筐体内に存在することとしたが、両者は互いに独立した情報処理装置であってもよい。図9は、このような実施形態の一例を示している。この図においては、データセンターラックに搭載された複数のコンピューティングサーバと複数のストレージサーバを含むサーバシステムの構成が示されている。これらのサーバ群は、互いにスイッチを介して接続されている。なお、ここでは各サーバはイーサネット(登録商標)で接続されることとしているが、これに限らずファイバーチャネルやInfiniBand、PCIe等各種のインタフェースで接続されてよい。また、各サーバ間の接続経路の物理層についても、CEI規格や光ファイバー等、各種のものであってよい。
 ストレージサーバは、複数のコンピューティングサーバから共有されており、複数のコンピューティングサーバのそれぞれから受け付けた多数のアクセス要求を同時に処理する。ストレージサーバは1以上のブリッジコントローラを含み、各ブリッジコントローラには複数のSSDドライブが接続される。各SSDドライブは、SSDコントローラと、SSDコントローラに接続された複数のNAND型フラッシュメモリを含んで構成されている。このNAND型フラッシュメモリが本実施形態における記憶デバイス14として機能する。このような構成により、ストレージサーバに接続される記憶デバイス14の並列度を極めて大きくすることができる(例えば数百~数千)。これにより、複数のコンピューティングサーバから低遅延・広帯域が必要なアクセス要求が同時に発生しても、ストレージサーバによって実現されるアクセス制御部22及びデバイス割り当て制御部23が、その要求に応じたアクセスを適切に処理することができる。
 このサーバシステムは、例えばクライアントマシンのユーザーに対するクラウドゲーミングサービスの提供に利用されてよい。具体例として、各コンピューティングサーバは、それぞれ異なるゲームアプリケーションを実行し、描画した画像をエンコードしてネットワークを介してクライアントマシンに送信する。これらのゲームアプリケーションのデータは巨大であり、例えば1ゲームあたり100GBを超えることがある。ストレージサーバは多数のゲームアプリケーションのデータを保持しておき、各コンピューティングサーバはクライアントマシンのユーザーからの要求に応じて対応するゲームアプリケーションのデータをロードして実行する。ゲームアプリケーションのデータは、そのデータのアクセスに要求される性能に関する要求性能情報を保持していてもよい。たとえば、必要帯域10GB/s、許容遅延0.2μsで読み出すことが要求されるゲームアプリケーションのデータに対して、その要求性能を示す要求性能情報が付加される。コンピューティングサーバは、ストレージサーバの記憶デバイスに各ゲームアプリケーションのデータをダウンロードやインストールする(すなわち書き込む)ときに、この要求性能情報を参照してもよい。
 この例において、ストレージサーバが備える記憶デバイスの量には、冗長性を持たせてもよい。これにより、コンピューティングサーバやストレージサーバが稼働中であっても、ガベージコレクションなどの管理アクセスを実行したり、新しいゲームアプリケーションのデータをダウンロードしてインストールしたり、定期的なメンテナンスのため一部の記憶デバイスを非稼働にしたり、といったアクセスを、冗長性を持つ記憶デバイスを割り当てることで実現できる。
 コンピューティングサーバ及びストレージサーバは、それぞれDMAエンジンやCryptエンジンを内蔵していてもよい。DMAエンジンは、コンピューティングサーバとストレージサーバとの間でオペレーティングシステムの管理を介さずにデータ転送をおこなうリモートDMAに対応することで、CPUが介在してアクセス要求を処理する場合に比べて、記憶デバイス14へのアクセス遅延を低減させる。Cryptエンジンは記憶デバイス14に書き込むデータの暗号化と復号化をおこなってもよい。
 図10から図12は、ここで説明したゲームコンソールやサーバシステムのソフトウェア階層構成を示す図であって、図10は両者の対応関係を示しており、図11はゲームコンソールのソフトウェア構成例を、図12はサーバシステムのソフトウェア構成例を、それぞれ示している。図10に示されるように、ゲームコンソールではメインSOCが実行するオペレーティングシステム(ゲームOS)が、サーバシステムにおいてはコンピューティングサーバが実行するサーバOSが、それぞれアクセス要求の発行元(すなわち、これまでの説明におけるアクセス要求部21)として機能する。アクセス要求はリアルタイムOSを実行するローカルNVMeサブシステムによって処理される。このローカルNVMeサブシステムは、ゲームコンソールの場合NANDフラッシュコントローラに対応し、サーバシステムの場合は各SSDコントローラに対応する。
 これらの図に示されるように、ゲームOSやコンピューティングサーバOSが、ファイルシステムを介してNVMe(NVM Express)インタフェースで記憶デバイス14へのアクセス要求を行う。ここでNVMe抽象化レイヤーは、上位のNVMe規格で動作する処理レイヤーに対して、下位の物理インタフェースを抽象化するいわゆるHAL(Hardware Abstract Layer)の機能を持つレイヤーである。この抽象化レイヤーの下位に、各種のネットワークインタフェースに応じたデバイスドライバが接続される。DMAドライバは、ユーザーレベルDMAを実現する。具体的には、図示しないオペレーティングシステムのメインメモリ管理レイヤーとDMAドライバが連携して動作することによって、ユーザーレベルDMAが実現される。
 これらの図において、これまで説明したアクセス制御部22及びデバイス割り当て制御部23の機能は、リアルタイムOS側の制御ポリシーローカルレイヤーによって実現される。ゲームOS側の制御ポリシー統括レイヤーは、この機能と連携するためのアクセス要求側の機能を実現する。ただし、ここで制御ポリシーローカルレイヤーが実行することとした機能の少なくとも一部は、制御ポリシー統括レイヤーによって実行されてもよい。この制御ポリシー統括レイヤーは、ゲームOSのファイルシステムと一体で動作してよい。なお、図12には図示されていないが、コンピューティングサーバOSとリアルタイムOSとの間の接続を中継するストレージサーバOSも、制御ポリシーローカルレイヤーの機能を備えることとしてもよい。
 SSDサイドNVMeローレベル処理レイヤーは、管理アクセス、アドレス変換、メモリセルデータ化けの検出と訂正などを実施する。オーバープロビジョニング領域の管理も、アクセス制御部22とデバイス割り当て制御部23と連携して行う。
 なお、コンピューティングサーバOSは、NVMe抽象化レイヤーに代えて、NVMe-oF(NVMe over Fabrics)規格に準拠した抽象化レイヤーを実装してもよい。その場合、コンピューティングサーバOSは、NVMe-oF準拠でアクセス要求を発行し、ストレージサーバOSがこのアクセス要求を仲介・ディスパッチして、SSDコントローラに送信する。SSDコントローラのリアルタイムOS/ファームウェアは、このアクセス要求を受けて、NAND型フラッシュメモリに対するローレベル制御を実行する。このとき上位の処理レイヤーは、抽象化レイヤーを介在させることによって、下位の論理デバイスインタフェースが何なのかやストレージがローカル/リモートのいずれで接続されているかなどを考慮せずにアクセス要求を発行することができる。
 1 情報処理装置、11 演算部、12 メインメモリ、13 デバイス制御回路、14 記憶デバイス、21 アクセス要求部、22 アクセス制御部、23 デバイス割り当て制御部、24 情報記憶部。

Claims (26)

  1.  複数の記憶デバイスへのアクセスを制御する情報処理装置であって、
     前記複数の記憶デバイスに対するアクセス要求を受け付ける受付部と、
     前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御部と、
     を含み、
     前記アクセス制御部は、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させる
     ことを特徴とする情報処理装置。
  2.  請求項1に記載の情報処理装置において、
     前記アクセス要求には、前記対象データの読み出しの際に要求される性能に関する要求性能情報が含まれ、
     前記アクセス制御部は、前記要求性能情報に応じて、前記アクセスの態様を変化させる
     ことを特徴とする情報処理装置。
  3.  請求項2に記載の情報処理装置において、
     前記要求性能情報は、前記アクセス要求に付加されて送信される情報であって、当該アクセス要求に応じたアクセス、又は当該アクセス要求の対象となるデータを後に読み出すアクセスのいずれか少なくとも一方に要求される性能に関する情報である
     ことを特徴とする情報処理装置。
  4.  請求項3に記載の情報処理装置において、
     前記要求性能情報は、前記アクセス要求の対象となる複数のデータのそれぞれに対するアクセスに要求される性能に関する情報である
     ことを特徴とする情報処理装置。
  5.  請求項2から4のいずれか一項に記載の情報処理装置において、
     前記要求性能情報は、読み出し遅延に関する要求を指定する情報、読み出し速度に関する要求を指定する情報、及びベストエフォートでの読み出しを指定する情報のいずれか少なくとも一つを含む
     ことを特徴とする情報処理装置。
  6.  請求項2から5のいずれか一項に記載の情報処理装置において、
     前記アクセス要求は、前記対象データの書き込み要求であって、
     前記アクセス制御部は、前記要求性能情報に応じて、前記対象データの書き込み先の記憶デバイスを変化させる
     ことを特徴とする情報処理装置。
  7.  請求項6に記載の情報処理装置において、
     前記アクセス制御部は、前記要求性能情報に前記対象データを所定値以内の遅延で読み出すことを要求する要求性能情報が含まれる場合、前記複数の記憶デバイスのうち、前記所定値以内の遅延での読み出し用に割り当てられた記憶デバイスに前記対象データを書き込み、前記所定値以内の遅延での読み出しが要求されないデータの書き込み要求が受け付けられた場合、前記所定値以内の遅延での読み出し用に割り当てられた記憶デバイスとは別の記憶デバイスに当該データを書き込む
     ことを特徴とする情報処理装置。
  8.  請求項6又は7に記載の情報処理装置において、
     前記要求性能情報には、前記対象データの読み出しに要求される帯域に関する要求性能情報が含まれ、
     前記アクセス制御部は、前記帯域に応じて特定される複数の前記記憶デバイスに対して、前記対象データを分散して書き込む
     ことを特徴とする情報処理装置。
  9.  請求項1から8のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを所定値以内の遅延で読み出すことが要求される場合、前記対象データを読み出している間、当該対象データが格納される記憶デバイスに対する当該読み出し以外のアクセスを制限する
     ことを特徴とする情報処理装置。
  10.  請求項9に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを読み出している間、他のデータの書き込み要求が受け付けられた場合に、当該他のデータの書き込み先を前記対象データが格納されている記憶デバイスとは別の記憶デバイスに変更する
     ことを特徴とする情報処理装置。
  11.  請求項10に記載の情報処理装置において、
     前記アクセス制御部は、前記他のデータの書き込み要求において指定された書き込み先アドレスを別のアドレスに変換することによって、前記他のデータの書き込み先を前記別の記憶デバイスに変更する
     ことを特徴とする情報処理装置。
  12.  請求項11に記載の情報処理装置において、
     前記アクセス制御部は、ページ方式のアドレス変換によって前記書き込み先アドレスを前記別のアドレスに変換する
     ことを特徴とする情報処理装置。
  13.  請求項10から12のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを読み出している間に当該対象データが格納されている記憶デバイスに対する書き込みアクセスを制限する場合、当該書き込みアクセスが制限されている間、当該対象データが格納されている記憶デバイスの空き容量を、前記複数の記憶デバイス全体の空き容量のカウントから除外する
     ことを特徴とする情報処理装置。
  14.  請求項13に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを読み出している間に当該対象データが格納されている記憶デバイスに対する書き込みアクセスを制限する場合において、当該対象データが格納されている記憶デバイスに対して書き込むべき他のデータを一時的に格納する記憶領域を保持している場合、当該記憶領域の空き容量を前記複数の記憶デバイス全体の空き容量に追加してカウントする
     ことを特徴とする情報処理装置。
  15.  請求項9から14のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを読み出している間、前記対象データが格納されている記憶デバイスに格納されている他のデータの削除要求が受け付けられた場合に、当該他のデータの削除処理の実行を制限し、前記対象データの読み出し完了後に当該削除処理を実行する
     ことを特徴とする情報処理装置。
  16.  請求項15に記載の情報処理装置において、
     前記アクセス制御部は、前記他のデータの削除処理を、前記対象データの読み出し完了後、予め定められたタイミングで実行する
     ことを特徴とする情報処理装置。
  17.  請求項15又は16に記載の情報処理装置において、
     前記アクセス制御部は、前記他のデータの削除要求が受け付けられた場合に、当該他のデータの削除処理を実行する前に、前記削除要求に対して当該他のデータを削除済みである旨の応答を返す
     ことを特徴とする情報処理装置。
  18.  請求項9から17のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記対象データを読み出している間、前記対象データが格納されている記憶デバイスに対する当該記憶デバイスの運用上必要な管理アクセスの実行を制限し、前記対象データの読み出し完了後に当該管理アクセスを実行する
     ことを特徴とする情報処理装置。
  19.  請求項18に記載の情報処理装置において、
     前記アクセス制御部は、前記管理アクセスの実行を、前記対象データの読み出し完了後、予め定められたタイミングで実行する
     ことを特徴とする情報処理装置。
  20.  請求項9から19のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記複数の記憶デバイスに対してデータを冗長化して書き込むこととし、前記対象データを読み出している間に他のデータの読み出し要求が受け付けられた場合、当該他のデータが冗長化して書き込まれた、前記対象データが格納されている記憶デバイスとは別の記憶デバイスから、当該他のデータを読み出す
     ことを特徴とする情報処理装置。
  21.  請求項9から19のいずれか一項に記載の情報処理装置において、
     前記アクセス制御部は、前記複数の記憶デバイスに対してデータを分散して書き込むこととし、前記対象データを読み出している間に他のデータの読み出し要求が受け付けられた場合、前記対象データを構成する部分を前記複数の記憶デバイスのうちのいずれかの記憶デバイスから読み出す処理と、前記他のデータを構成する部分を前記複数の記憶デバイスのうちの別の記憶デバイスから読み出す処理とを並列に実行する
     ことを特徴とする情報処理装置。
  22.  請求項1から21のいずれか一項に記載の情報処理装置において、
     前記アクセス要求は前記対象データの書き込み要求であり、かつ、当該書き込みの際に要求される帯域性能に関する要求性能情報が含まれ、
     前記アクセス制御部は、前記帯域性能に応じて特定される複数の前記記憶デバイスに対して、前記対象データを分散して書き込む
     ことを特徴とする情報処理装置。
  23.  請求項1から22のいずれか一項に記載の情報処理装置において、
     当該情報処理装置は、複数の動作モードのいずれかで動作し、
     前記複数の動作モードに応じて、前記複数の記憶デバイスのそれぞれに対する用途を切り替えるデバイス割り当て制御部をさらに含み、
     前記アクセス要求は、前記対象データの書き込み要求であって、
     前記アクセス制御部は、前記割り当てられた用途に応じて前記対象データの書き込み先を決定する
     ことを特徴とする情報処理装置。
  24.  請求項1に記載の情報処理装置において、
     前記アクセス要求のアクセス先を指定するために用いられるアドレス空間は、複数のアドレス範囲を含み、当該複数のアドレス範囲のそれぞれについて、予め実現すべき要求性能が対応づけられ、
     前記アクセス要求の要求元は、前記複数のアドレス範囲のうち、当該アクセス要求に要求される性能に応じて選択されるアドレス範囲を指定して前記アクセス要求を行い、
     前記アクセス制御部は、前記アクセス要求において指定されたアドレス範囲に対応づけられた要求性能を満たすように、当該アクセス要求に応じたアクセスを実行する
     ことを特徴とする情報処理装置。
  25.  複数の記憶デバイスへのアクセスを制御する情報処理方法であって、
     前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、
     前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、
     を含み、
     前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させる
     ことを特徴とする情報処理方法。
  26.  複数の記憶デバイスへのアクセスを制御するコンピュータに、
     前記複数の記憶デバイスに対するアクセス要求を受け付けるステップと、
     前記受け付けたアクセス要求に応じて前記複数の記憶デバイスのいずれかに対するアクセスを実行するアクセス制御ステップと、
     を実行させるためのプログラムであって、
     前記アクセス制御ステップでは、前記アクセス要求の対象となる対象データの読み出しに要求される性能に応じて、前記アクセスの態様を変化させる
     ことを特徴とするプログラム。
PCT/JP2020/004179 2019-10-23 2020-02-04 情報処理装置 WO2021079535A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021554050A JP7403554B2 (ja) 2019-10-23 2020-02-04 情報処理装置
US17/627,895 US11768628B2 (en) 2019-10-23 2020-02-04 Information processing apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019193023 2019-10-23
JP2019-193023 2019-10-23

Publications (1)

Publication Number Publication Date
WO2021079535A1 true WO2021079535A1 (ja) 2021-04-29

Family

ID=75619398

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/004179 WO2021079535A1 (ja) 2019-10-23 2020-02-04 情報処理装置

Country Status (3)

Country Link
US (1) US11768628B2 (ja)
JP (1) JP7403554B2 (ja)
WO (1) WO2021079535A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113495684A (zh) * 2020-04-08 2021-10-12 华为技术有限公司 一种数据管理装置及数据管理方法、数据存储设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008026497A1 (fr) * 2006-08-28 2008-03-06 Nec Corporation Dispositif de commande de matrice de disques, procédé de commande de matrice de disques et programme de commande de matrice de disques
JP2008242503A (ja) * 2007-03-23 2008-10-09 Canon Inc メモリ管理装置及び方法、並びにプログラム
WO2011117925A1 (ja) * 2010-03-25 2011-09-29 株式会社日立製作所 ストレージ装置及びその制御方法
JP2013541765A (ja) * 2010-09-15 2013-11-14 ピュア・ストレージ・インコーポレイテッド ストレージ環境における再構成i/o読み込み動作のスケジューリング
US20150134857A1 (en) * 2013-11-14 2015-05-14 Sandisk Technologies Inc. System and Method for I/O Optimization in a Multi-Queued Environment
JP2015176378A (ja) * 2014-03-14 2015-10-05 株式会社リコー 記憶媒体制御装置、記憶媒体制御方法およびプログラム
JP2018116329A (ja) * 2017-01-16 2018-07-26 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
JP2019049787A (ja) * 2017-09-08 2019-03-28 コニカミノルタ株式会社 情報処理装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204702A1 (en) 2002-04-30 2003-10-30 Adc Dsl Systems, Inc. Flexible memory architecture for an embedded processor
DE102009015738B4 (de) 2009-03-31 2016-02-11 Siemens Aktiengesellschaft Hydraulischer Hubübersetzer und Injektor zur Dossierung von Fluiden
US8935203B1 (en) * 2012-03-29 2015-01-13 Amazon Technologies, Inc. Environment-sensitive distributed data management
WO2015008356A1 (ja) 2013-07-17 2015-01-22 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム、半導体記憶装置
US9747040B1 (en) * 2015-06-30 2017-08-29 EMC IP Holding Company LLC Method and system for machine learning for write command selection based on technology feedback
WO2017139973A1 (zh) * 2016-02-19 2017-08-24 华为技术有限公司 一种闪存设备的访问方法和装置
US10719247B2 (en) * 2018-03-20 2020-07-21 Kabushiki Kaisha Toshiba Information processing device, information processing method, estimation device, estimation method, and computer program product

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008026497A1 (fr) * 2006-08-28 2008-03-06 Nec Corporation Dispositif de commande de matrice de disques, procédé de commande de matrice de disques et programme de commande de matrice de disques
JP2008242503A (ja) * 2007-03-23 2008-10-09 Canon Inc メモリ管理装置及び方法、並びにプログラム
WO2011117925A1 (ja) * 2010-03-25 2011-09-29 株式会社日立製作所 ストレージ装置及びその制御方法
JP2013541765A (ja) * 2010-09-15 2013-11-14 ピュア・ストレージ・インコーポレイテッド ストレージ環境における再構成i/o読み込み動作のスケジューリング
US20150134857A1 (en) * 2013-11-14 2015-05-14 Sandisk Technologies Inc. System and Method for I/O Optimization in a Multi-Queued Environment
JP2015176378A (ja) * 2014-03-14 2015-10-05 株式会社リコー 記憶媒体制御装置、記憶媒体制御方法およびプログラム
JP2018116329A (ja) * 2017-01-16 2018-07-26 富士通株式会社 ストレージ制御装置、およびストレージ制御プログラム
JP2019049787A (ja) * 2017-09-08 2019-03-28 コニカミノルタ株式会社 情報処理装置

Also Published As

Publication number Publication date
US11768628B2 (en) 2023-09-26
JP7403554B2 (ja) 2023-12-22
JPWO2021079535A1 (ja) 2021-04-29
US20220276804A1 (en) 2022-09-01

Similar Documents

Publication Publication Date Title
JP5855200B2 (ja) データストレージシステム、およびデータアクセス要求を処理する方法
US9043542B2 (en) Concurrent content management and wear optimization for a non-volatile solid-state cache
KR101841997B1 (ko) 순응적 존속을 위한 시스템, 방법 및 인터페이스
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
CN112930520B (zh) 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的系统及方法
US8397016B2 (en) Efficient use of hybrid media in cache architectures
US9940028B2 (en) Multimode storage device
JP6114397B2 (ja) 複合型ストレージシステム及び記憶制御方法
WO2014102886A1 (en) Information processing apparatus and cache control method
JP6785204B2 (ja) メモリシステムおよび制御方法
WO2013175529A1 (en) Storage system and storage control method for using storage area based on secondary storage as cache area
JP2020123041A (ja) メモリシステムおよび制御方法
JP2020123038A (ja) メモリシステムおよび制御方法
JP7381678B2 (ja) メモリシステム
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
JP2021033847A (ja) メモリシステムおよび制御方法
JP7392080B2 (ja) メモリシステム
WO2021079535A1 (ja) 情報処理装置
US20220121563A1 (en) Adaptive endurance tuning of solid-state storage system
JP7102482B2 (ja) メモリシステムおよび制御方法
US20240012579A1 (en) Systems, methods, and apparatus for data placement in a storage device
KR20230166803A (ko) 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법
KR20240006450A (ko) 스토리지 장치에서 리클레임 유닛 형성 및 선택을 위한시스템들, 방법들 및 장치
WO2019021415A1 (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: 20880246

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021554050

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20880246

Country of ref document: EP

Kind code of ref document: A1