JP5847313B2 - Information processing device - Google Patents
Information processing device Download PDFInfo
- Publication number
- JP5847313B2 JP5847313B2 JP2014526682A JP2014526682A JP5847313B2 JP 5847313 B2 JP5847313 B2 JP 5847313B2 JP 2014526682 A JP2014526682 A JP 2014526682A JP 2014526682 A JP2014526682 A JP 2014526682A JP 5847313 B2 JP5847313 B2 JP 5847313B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- information processing
- processing apparatus
- memory
- dma transfer
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Description
本発明は、DMA転送によって記憶装置にデータを転送して処理を行う情報処理装置で、特に複数のスレッドを切替えて実行することを特徴とした情報処理装置に関する。 The present invention relates to an information processing apparatus that performs processing by transferring data to a storage device by DMA transfer, and particularly relates to an information processing apparatus that switches and executes a plurality of threads.
コンピュータは、データを格納する記憶装置と、記憶装置からデータを読み出して処理を行う中央処理装置(CPU)から構成される。一般的に記憶装置は高速なものほど、ビットあたりの価格(単価)が高価である。また、高速なものほど、単位面積ないしは単位体積あたりのビット数(記録密度)が低い。そこで、CPUの近くに高速だが高価で容量が小さい記憶装置が用意され、直近で必要なデータが配置される。そして、それだけでは収まりきらないデータは低速だが安価で容量が大きい記憶装置に配置され、必要に応じて両記憶装置間でデータが入れ替られて利用される。このように、記憶装置に速度とコスト若しくは速度と容量のトレードオフの関係があることから、性質の異なる複数種の記憶装置を階層的に利用する、いわゆる記憶階層の概念がコンピュータの世界では幅広く用いられてきた。 The computer includes a storage device that stores data and a central processing unit (CPU) that reads data from the storage device and performs processing. In general, the faster the storage device, the higher the price (unit price) per bit. Also, the higher the speed, the lower the number of bits per unit area or unit volume (recording density). Therefore, a high-speed but expensive and small-capacity storage device is prepared near the CPU, and necessary data is arranged most recently. Data that cannot be accommodated alone is placed in a low-speed but inexpensive and large-capacity storage device, and the data is exchanged between both storage devices as needed. As described above, since storage devices have a trade-off relationship between speed and cost or speed and capacity, a so-called storage hierarchy concept in which a plurality of storage devices having different properties are used hierarchically is widely used in the computer world. Has been used.
この傾向は今日でも不変であるが、コンピュータベンダーが利用可能な記憶素子の種類から、今日では主にレジスタ、キャッシュメモリ、メインメモリ、およびストレージの4階層から成る記憶階層でコンピュータは構成されている。それぞれの階層で用いられている主な記憶素子は、レジスタはフリップフロップ、キャッシュメモリはSRAM、メインメモリはDRAM、ストレージはHDDであり、各記憶素子の速度とコスト及び容量によって階層を分ける必然性が生まれている。 This trend remains unchanged today, but because of the types of storage elements available to computer vendors, today computers are mainly composed of storage hierarchies consisting of four levels: registers, cache memory, main memory, and storage. . The main storage elements used in each layer are flip-flops for registers, SRAM for cache memory, DRAM for main memory, and HDD for storage, and there is a necessity to divide the layers according to the speed, cost, and capacity of each storage element. Born.
次に、前述した記憶階層に関して、別の面から説明を行う。CPUはレジスタに格納されているデータに処理を行う。CPUは、処理すべきデータがレジスタに無い場合、キャッシュを探して、キャッシュに格納されていればキャッシュからデータをレジスタに読み込んでから処理を行う。CPUは、キャッシュにも処理すべきデータが無い場合は、メインメモリからキャッシュにデータを読み込む。メインメモリにも処理すべきデータが無い場合には、ストレージからメインメモリにデータが読み込まれる。このように、CPUから見て手近な階層にデータが無い場合、遠くの階層からデータが読み込まれ、そのペナルティは大きくなる。そして、データを読み込んでいる間、CPUは行うべき処理が出来ないのでその動作が空いてしまい、CPU利用率が低下する。データの読み込みに限らず、データの書き込みでも同様の問題が発生する。 Next, the storage hierarchy described above will be described from another aspect. The CPU processes the data stored in the register. When there is no data to be processed in the register, the CPU searches the cache and, if stored in the cache, reads the data from the cache into the register and performs processing. When there is no data to be processed in the cache, the CPU reads data from the main memory into the cache. If there is no data to be processed in the main memory, the data is read from the storage into the main memory. As described above, when there is no data in a layer close to the CPU, data is read from a far layer and the penalty increases. Then, while the data is being read, the CPU cannot perform a process to be performed, so that the operation becomes vacant, and the CPU utilization rate decreases. The same problem occurs not only in reading data but also in writing data.
ここで、データ転送にDMA(Direct Memory Access)転送を用いるとCPUの介在無しにデータ転送を行うことが出来るため、本来はデータ転送中の空き時間にCPUは他の処理を行うことが出来るはずである。例えば、プログラム上で予めデータが必要になる箇所を特定して、明示的にDMA転送の指示を埋め込むことで、プログラマーがDMA転送のタイミングとCPUが行う処理をスケジューリングするような方法も用いられている。しかし、この方法はプログラムのチューニングが煩雑になるという問題を引き起こす。 Here, if DMA (Direct Memory Access) transfer is used for data transfer, data transfer can be performed without the intervention of the CPU. Therefore, the CPU should be able to perform other processing during the idle time during data transfer. It is. For example, a method in which a programmer schedules DMA transfer timing and processing performed by a CPU by specifying a part where data is required in advance in a program and explicitly embedding a DMA transfer instruction is also used. Yes. However, this method causes a problem that program tuning becomes complicated.
これに対処するための技術として、マルチスレッドが用いられてきた。マルチスレッドでは、同時並行的に行うことが出来る処理の単位がスレッドとして定義され、あるスレッドの実行が止まったら、他の実行可能なスレッドが実行される。なお、スレッドの実行が止まるのは、当該スレッドの処理が完了したときだけでなく、当該スレッドで必要となるデータを読み込んでいる時にもスレッドの実行は止まる。つまり、先のデータ読み込みの動作と合わせて考えれば、あるスレッドを実行していて、必要なデータを読み込み始めると、その間は他のスレッドの実行を行う。このようにして、CPU利用率を高めることができる。 Multi-threading has been used as a technique for dealing with this. In multithreading, a unit of processing that can be performed concurrently is defined as a thread, and when execution of a certain thread stops, another executable thread is executed. The thread execution stops not only when the processing of the thread is completed, but also when the data required by the thread is read. That is, when considered in conjunction with the previous data reading operation, when a certain thread is executed and necessary data starts to be read, another thread is executed during that time. In this way, the CPU utilization rate can be increased.
このようなDMA転送とマルチスレッドに関する先行技術として、特許文献1に開示の技術と特許文献2に開示の技術がある。いずれも、DMA転送がCPU上のオンチップメモリ(ローカルメモリとも呼ばれる)とメインメモリ(グローバルメモリとも呼ばれる)の間で行われている。
As prior art relating to such DMA transfer and multithreading, there are a technique disclosed in
ところで、近年、インターネットや各種端末の普及で、大量のデータを容易に取得することが出来るようになってきている。このような大量のデータは、旧来のデータベース管理システムなどで取り扱うことが難しく、ビッグデータという標語の元に種々の技術が開発されている。あらゆるモノがインターネットに接続されるIoT(Internet of Things)の時代には、モノで発生したあらゆるイベントに関するデータがインターネットに送信される。つまり、大量のPOE(Point of Event)データがインターネット上に送信される。このような世界では、インターネットからPOEデータを収集し、モノとモノ、ヒトとヒト、ないしは、モノとヒトがどのような関係にあるのかを分析し、それに基づいて適切なサービスを提供したり、将来を予測したりするなどの利用がなされていくことが期待される。そのためには、コンピュータが大量のデータを高速に処理することができなければならない。 By the way, in recent years, with the spread of the Internet and various terminals, a large amount of data can be easily acquired. Such a large amount of data is difficult to handle with a conventional database management system or the like, and various technologies have been developed under the slogan of big data. In the IoT (Internet of Things) era in which every thing is connected to the Internet, data related to every event that occurs in the thing is transmitted to the Internet. That is, a large amount of POE (Point of Event) data is transmitted on the Internet. In such a world, we collect POE data from the Internet, analyze the relationship between things and things, people and people, or things and people, and provide appropriate services based on them. It is expected to be used for predicting the future. For this purpose, the computer must be able to process a large amount of data at high speed.
コンピュータが大量のデータを高速に処理するためには、処理すべきデータがメインメモリ上に載ることが望ましい。ストレージ上にデータが置かれていると、その読み出しに時間を要する。特に、様々なモノやヒトの関係性を分析しようとする場合、様々なモノやヒトのデータを読み出さなければならない。その都度ストレージへのアクセスが必要になってしまうと、ストレージの読み出しの遅さがネックとなる。しかし、前述したようなビッグデータに対して、それに見合う容量のメインメモリを実現するために大量のDRAMを並べると、様々な問題を引き起こす。 In order for a computer to process a large amount of data at high speed, it is desirable that the data to be processed be placed on the main memory. When data is placed on the storage, it takes time to read it. In particular, when trying to analyze the relationship between various things and people, the data of various things and people must be read out. If access to the storage becomes necessary each time, the slow read of the storage becomes a bottleneck. However, when a large amount of DRAMs are arranged in order to realize a main memory having a capacity corresponding to the big data as described above, various problems are caused.
DRAMはストレージに用いるHDDやフラッシュメモリ、相変化メモリなどと比較して単価が高いため、大量のDRAMでメインメモリを構成するとコスト増を引き起こす。また、DRAMは記録密度でも劣ることから、同容量のHDDやフラッシュメモリと比較して装置が巨大になってしまう。そこで、本願発明者らは、メインメモリとメインメモリからデータを退避させておく記憶領域との間でDMA転送を行うことで、必要な容量を用意しつつ、読み出し速度の問題を解決することを試みた。 Since the unit price of DRAM is higher than that of HDD, flash memory, phase change memory, etc. used for storage, if a main memory is composed of a large amount of DRAM, the cost increases. Also, since the DRAM is inferior in recording density, the device becomes huge compared to the HDD and flash memory of the same capacity. Therefore, the inventors of the present application solve the problem of reading speed while preparing the necessary capacity by performing DMA transfer between the main memory and the storage area in which data is saved from the main memory. Tried.
ここで、スレッドのスケジューリングは、実行可能なスレッドをキューから取りだして行う単純なFIFOに基づくことが多い。そのため、各スレッドの実行時間は均一なほうが効率的にスケジューリングすることができるので、処理をスレッドに分割するときには負荷が均等になるように分割することが望ましい。 Here, the scheduling of threads is often based on a simple FIFO that is executed by taking out executable threads from a queue. For this reason, uniform execution time of each thread enables efficient scheduling. Therefore, when dividing a process into threads, it is desirable to divide the processing so that the load is equal.
しかし、コンピュータが普及し、アプリケーションが多様化する中で、必ずしも均等な分割が出来ないアプリケーションもあり問題となる。たとえば、社会科学系の問題を扱うとき、グラフ処理が行われる。グラフは、頂点の集合と、頂点間を結ぶ辺の集合で構成される。社会科学系の問題では、関係性が扱われることが多い。例えば会社間の関係は会社を表現する頂点と、関係を表現する辺で示される。このようなグラフを複数のスレッドで処理するために分割しようとすると、頂点毎にスレッドを割当てて分割する形態が自然である。ところが、頂点毎に分割したときに、各頂点が繋がっている辺の数はばらつきがある。そして、各頂点の処理に要する時間は、各頂点が関係を持っている頂点の数、すなわち、辺の数に比例する。そのため、頂点毎の分割ではスレッド間に処理量のばらつきが生じてしまい、退避させておいたデータをメインメモリにDMA転送する際に、DMA転送されるデータの大きさがばらついてしまう。 However, with the spread of computers and the diversification of applications, there are some applications that cannot always be divided equally. For example, graph processing is performed when dealing with social science problems. The graph is composed of a set of vertices and a set of edges connecting the vertices. Social science issues often deal with relationships. For example, the relationship between companies is indicated by a vertex representing the company and an edge representing the relationship. When such a graph is divided to be processed by a plurality of threads, it is natural that a thread is allocated and divided for each vertex. However, when dividing each vertex, the number of sides connected to each vertex varies. The time required for processing each vertex is proportional to the number of vertices with which each vertex is related, that is, the number of sides. Therefore, in the division for each vertex, the processing amount varies between threads, and when the saved data is DMA-transferred to the main memory, the size of the DMA-transferred data varies.
中でも、社会科学系の問題で登場するグラフはスケールフリー特性と呼ばれる性質を有しているため、このばらつきがより顕著なものとなる。グラフの各頂点が接続されている辺の数を、その頂点の次数と呼ぶ。スケールフリー特性はこの次数の分布が冪乗分布になっていることが特徴で、ごく少数の頂点は極めて次数が大きいが、大多数の頂点は次数が小さいという特徴を持つ。この特徴を前述した処理量のばらつきにあてはめて考えると、社会学系のグラフを処理する時には、非常に処理量の大きい少数のスレッドと、処理量の小さい多数のスレッドを処理することになる。 Above all, graphs that appear due to social science problems have a property called scale-free characteristics, so this variation becomes more prominent. The number of edges to which each vertex of the graph is connected is called the degree of that vertex. The scale-free characteristic is characterized by the fact that the distribution of this order is a power distribution, with a very small number of vertices having a very large degree, but a large number of vertices having a small degree. When this characteristic is applied to the above-described variation in the processing amount, when processing a sociological graph, a small number of threads with a very large processing amount and a large number of threads with a small processing amount are processed.
特許文献1に開示の技術と特許文献2に開示の技術は、DMA転送がCPU上のオンチップメモリとメインメモリの間で行われるものであり、DMA転送されるのは直近でCPUが処理するデータに限られるので、上述のデータの大きさのばらつきを解決する技術ではない。
In the technique disclosed in
本発明は、データの転送量にばらつきのある状況であっても効率的なDMA転送を実現することを目的とする。 An object of the present invention is to realize efficient DMA transfer even in a situation in which the amount of data transfer varies.
本発明の情報処理装置は、マルチスレッドプロセッサと、第1の記憶装置と、第1の記憶装置との間でDMA転送を行う第2の記憶装置と、第1の記憶装置に物理アドレス空間を割当て、該物理アドレス空間上に仮想アドレス空間を提供するオペレーティングシステムと、を備え、実行予定のスレッドが該物理アドレス空間上でDMA転送に必要とする容量に応じてメモリ空間を確保し、該スレッドを実行に移し、該スレッドの処理が終了した後に確保したメモリ空間を開放することで、前述の課題を解決する。 The information processing apparatus according to the present invention includes a multi-thread processor, a first storage device, a second storage device that performs DMA transfer with the first storage device, and a physical address space in the first storage device. An operating system that allocates and provides a virtual address space on the physical address space, and secures a memory space according to a capacity required for DMA transfer on the physical address space by the thread to be executed, The above-mentioned problem is solved by releasing the memory space secured after the processing of the thread is completed.
本発明により、データの転送量にばらつきのある状況であっても効率的なDMA転送を実現することができ、ひいては情報処理装置の処理を高速化できる。 According to the present invention, efficient DMA transfer can be realized even in a situation in which the amount of data transfer varies, and the processing of the information processing apparatus can be speeded up.
以下、本発明の実施の形態を図面を用いて説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings. Note that components having the same function are denoted by the same reference symbols throughout the drawings for describing the embodiment, and the repetitive description thereof will be omitted.
本実施例では、フラッシュメモリや相変化メモリなどの不揮発メモリを利用して、アプリケーションに対して、DRAMで構成されるメモリよりも大きなメモリを提供しつつ、不揮発メモリの欠点である速度の遅さをマルチスレッドで解決する情報処理システム100を説明する。
In this embodiment, a nonvolatile memory such as a flash memory and a phase change memory is used to provide a memory larger than a memory constituted by a DRAM to an application, and the slowness that is a disadvantage of the nonvolatile memory is provided. An
図1は、本実施例の情報処理システム100の構成の例を示す図である。情報処理システム100は、少なくとも1個以上のノード110を有する。ノード110は、情報処理装置であり、例えばサーバ装置である。図1の例は、ノード0〜3(符号は110)の4ノード構成の例を示している。ノード間はノード間ネットワーク120で接続される。また、情報処理システム100は、ノード間ネットワーク120に加えて、後述する不揮発メモリ(NVM:Non−volatile memory)サブシステム間を接続するNVMサブシステムインターコネクト130をさらに備えていても良い。
FIG. 1 is a diagram illustrating an example of a configuration of an
図2は、情報処理装置であるノード110の構成の例を示す図である。ノード110は、プロセッサ210、220、DIMM230、240、I/Oハブ250、NIC260、ディスクコントローラ270、HDD280、SSD290、およびNVMサブシステム300を備える。メインメモリは、記憶装置であるDIMM230およびDIMM240で構成される。DIMM230、240は、揮発性メモリであるDRAMで構成される。なお、各ノード110が有するプロセッサの数は最小で1個あれば良く、図2のノード110は、プロセッサ210、220の2プロセッサ構成の例である。また、プロセッサ210、220はそれぞれマルチコアプロセッサであっても良い。図2の例では、各プロセッサが2個のコアを有しており、ノード110全体では4コアノードとなっている。さらに、各コアは同時マルチスレッディング(SMT:Simultaneous Multithreading)に対応していても良い。図2の例では、各コアが2SMT対応であり、よって各プロセッサは4個のスレッドを同時に処理する能力を有する。すなわち、各プロセッサはマルチスレッドプロセッサである。なお、これ以降、ハードウェアとして同時に処理することの出来るスレッドをハードウェアスレッドと称する。
FIG. 2 is a diagram illustrating an example of the configuration of the
I/Oハブ250は、NIC260、ディスクコントローラ270、NVMサブシステム300などの各種装置を接続するためのインタフェースを提供する。I/Oハブ250は、プロセッサ210、220とは、それぞれのプロセッサが提供するシステムバスで接続される。接続には、例えば、HyperTransportのようなバスが用いられる。一方、I/Oハブ250は、NIC260、ディスクコントローラ270、NVMサブシステム300のような各種装置とは、PCI Expressなどの周辺機器接続用のペリフェラルバスで接続される。本実施例では、I/Oハブ250と、NIC260、ディスクコントローラ270、およびNVMサブシステム300は、PCI Expressで接続されているものとして説明するが、他のインターコネクト手段でも本発明は実施可能である。
The I /
従来、コンピュータのメインメモリはDIMMの容量で決まっていた。そして、メインメモリに入り切らないデータは、ストレージであるHDDやSSDに格納される。ストレージはディスクコントローラを介して接続され、ハードウェア面ではSAS(Serial Attached SCSI)やSATA(Serial Advanced Technology Attachment)のようなインタフェースが用いられる。そして、ソフトウェアから見たインタフェースはファイルシステムとなる。アプリケーションはファイルに対して読書きを行うことで、ファイルシステムを経由して、オペレーティングシステムが有するデバイスドライバがディスクコントローラを制御して、HDDやSSDを読書きする。そのため、複数の階層を経由しないと読書きが出来ず、オーバヘッドが大きい。 Conventionally, the main memory of a computer is determined by the capacity of the DIMM. Data that does not fit in the main memory is stored in the HDD or SSD as storage. The storage is connected via a disk controller, and an interface such as SAS (Serial Attached SCSI) or SATA (Serial Advanced Technology Attachment) is used in terms of hardware. The interface seen from the software is a file system. The application reads / writes the file, and the device driver of the operating system controls the disk controller via the file system to read / write the HDD and SSD. For this reason, reading and writing cannot be performed without going through a plurality of hierarchies, resulting in a large overhead.
それに対して、本実施例の情報処理システム100は、DIMMに比べて大容量の不揮発メモリをHDDやSSDのストレージよりも高速に読書きするために、NVMサブシステム300を備えている。ストレージを使用するよりも高速に読み書きが必要な場合には、データをストレージからNVMサブシステム300に予め読み出しておくことで、高速な読み書きを実現する。なお、不揮発メモリ(Non−volatile Memory)を略記してNVMと記す。
On the other hand, the
図3は、NVMサブシステム300の構成の例を示す図である。NVMサブシステム300は、ハイブリッドメモリコントローラ310と、記憶装置である不揮発性メモリ(NVM)320と、記憶装置である揮発性メモリ330とを備える。NVM320は、フラッシュメモリや相変化メモリなどの不揮発メモリである。また、揮発性メモリ330はDRAMであり、DIMMを流用することができる。ハイブリッドメモリコントローラ310は、NVM320と、揮発性メモリ330と、I/Oハブ250に接続されている。ハイブリッドメモリコントローラ310は、プロセッサ210または220上で動作するソフトウェアの要求に応じて、NVM320に格納されているデータをメインメモリであるDIMM230または240にDMA転送する。また、ハイブリッドメモリコントローラ310は、メインメモリであるDIMM230または240に格納されているデータをNVM320にDMA転送する役割を担う。揮発性メモリ330は、DMA転送の際に、バッファとして用いられる。また、各ノードが有するハイブリッドメモリコントローラ310の間を、前述したようにNVMサブシステムインターコネクト130で接続することもできる。この接続により、他のノードのNVMサブシステム300に格納されているデータにもアクセスが可能になる。
FIG. 3 is a diagram illustrating an example of the configuration of the
ハイブリッドメモリコントローラ310は、メモリマップされたレジスタ(MMR:Memory Mapped Register)311を有する。MMR311は、プロセッサ210、220上で動作するソフトウェアがハイブリッドメモリコントローラ310に対してDMA転送の指示を行うためのレジスタである。PCI Expressでは周辺装置が有するレジスタを、メインメモリと同じメモリ空間上にマップすることが可能である。そのため、MMR311に対して、ソフトウェアは、メインメモリに読書きするのと同様に、プロセッサ210、220のロード・ストア命令でアクセスすることができる。
The
ノード110上では、仮想記憶に対応したオペレーティングシステムが動作する。ノード110は、前述のように複数のコアから構成されるが、全てのコアが単一のメインメモリを共有する対称型マルチプロセッシング(SMP:Symmetric Multiprocessing)の構成である。そのため、ノード110では単一のオペレーティングシステムが動作することになる。これ以降、ノード110でオペレーティングシステムを1個動作させている、シングルシステムイメージを前提として実施例を説明する。各ノード110で動作するオペレーティングシステムは、各ノード110のDIMM230、240で構成されるメインメモリに物理アドレス空間を割当て、該物理アドレス空間上に仮想アドレス空間を提供する。
On the
図4は、ノード110が持つ複数のコアと、オペレーティングシステムがユーザに提供する資源との関係を示した説明図である。各ノード110は、2プロセッサ/ノード、2コア/プロセッサ、2SMT/コアの構成であるため、それぞれのノード全体では2×2×2=8ハードウェアスレッドの資源がある。
FIG. 4 is an explanatory diagram showing a relationship between a plurality of cores of the
仮想記憶に対応したオペレーティングシステムでは、プロセッサのMMU(Memory Management Unit)が有するアドレス変換機構を活用して、アプリケーション用の仮想アドレス空間(ユーザ空間)と、オペレーティングシステムのカーネルが動くための仮想アドレス空間(カーネル空間)を分離して、システムのセキュリティや頑強性を確保している。ユーザ空間では、プロセスという単位毎に独立した仮想アドレス空間を持っている。一般的に、このようなプロセスという概念がある環境下でのスレッドは、プロセスに従属する形態をとる。すなわち、各プロセスが1個以上のスレッドを有し、各スレッドは親となるプロセスの仮想アドレス空間を共有して動作する。 In an operating system that supports virtual memory, a virtual address space (user space) for applications and a virtual address space for operating the kernel of the operating system by utilizing an address translation mechanism possessed by the MMU (Memory Management Unit) of the processor (Kernel space) is separated to ensure system security and robustness. The user space has an independent virtual address space for each unit of process. In general, a thread in an environment having such a concept of a process takes a form dependent on the process. That is, each process has one or more threads, and each thread operates by sharing the virtual address space of the parent process.
また、単一のオペレーティングシステムが複数のコアを管理するような場合、オペレーティングシステムは何らかの形でコアを抽象化し、プロセスに割当てることで、アプリケーションが複数のコアを利用可能な環境を提供しなければならない。そのような目的のためにも、スレッドという概念は用いられている。図4に示すように、オペレーティングシステムはカーネルレベルスレッドを各プロセスに提供している。 Also, when a single operating system manages multiple cores, the operating system must abstract the core in some way and assign it to a process, so that the application can provide an environment where multiple cores can be used. Don't be. For this purpose, the concept of threads is used. As shown in FIG. 4, the operating system provides a kernel level thread to each process.
一般的に、スレッドを実行するときには、実行すべきスレッドの数(N)に対して、ハードウェアスレッドの数(M)は限られる。NがM以下の場合には、両者を一対一対応させることが出来るが、NがMより大きいの場合には切替えが必要となる。この切替えが、コンテキスト切替えである。しかし、カーネルレベルスレッドでコンテキスト切替えを行うためには、仮想アドレス空間をユーザ空間からカーネル空間に切替えて、カーネルの中でコンテキスト切替えの処理を行う必要があるため、コンテキスト切替えのオーバヘッドが大きいことが問題となる。 Generally, when executing threads, the number of hardware threads (M) is limited with respect to the number of threads to be executed (N). When N is less than or equal to M, the two can be in a one-to-one correspondence, but when N is greater than M, switching is necessary. This switching is context switching. However, in order to perform context switching with a kernel-level thread, it is necessary to switch the virtual address space from the user space to the kernel space and perform context switching processing in the kernel, so the context switching overhead is large. It becomes a problem.
そこで本実施例の情報処理システム100では、図4に示すようにカーネルレベルスレッドとハードウェアスレッドを一対一に対応させて利用する。すなわち、N=Mの関係とする。しかし、このままではNの数がMの数に制約を受けてしまうため、アプリケーションが必要とするスレッド数を確保できない。スレッド数が小さいと、後述するDMA転送を隠蔽する余地も少なくなってしまうので、システム全体として効率が低下する。そのため、カーネルでのコンテキスト切替えを避けつつ、大量のスレッドを利用可能にする(Nを大きくする)方法が必要となる。
Therefore, in the
これに対処するために、本実施例の情報処理システム100では、図4のプロセス410、420の各プロセスに、図5に示すようにマスターコントロールスレッド550とユーザレベルスレッドを設けることを特徴としている。
In order to cope with this, the
図5に示したように、本実施例の情報処理システム100では、プロセス410はスレッド間共有リソース510と、カーネルから割当てられた少なくとも2個以上のカーネルレベルスレッドを持つ。そして、複数のカーネルレベルスレッドのうちの1個に、マスターコントロールスレッド550が固定的に割当てられる。また、アプリケーションが必要とするユーザレベルスレッドが時分割でカーネルレベルスレッドに割当てられる。
As shown in FIG. 5, in the
マスターコントロールスレッド550は、プロセス410が存続している期間、常にカーネルレベルスレッドを1個占有して動き続けるスレッドであり、ユーザレベルスレッドのコンテキスト切替えや、スケジューリング、及び、スレッド間共有リソースの管理などを行う。カーネルレベルスレッドとは異なり、マスターコントロールスレッド550がこれらの処理をプロセス410の中で行うことで、カーネル空間への切替えを発生させることなく、より高速にコンテキスト切替えを実現することができる。すなわち、マスターコントロールスレッド550により、大量のスレッドを利用しつつ、コンテキスト切替えの高速化を実現できる。
The
前述したように、スレッドはプロセスの資源を共有して動作する。スレッドでは、各スレッドが固有のスタックを持ち、それ以外の領域は他スレッドと共有するモデルが用いられる。本実施例の情報処理システム100では、後述のDMA転送を行うために、さらに、後述するPIN領域の資源配分をユーザレベルスレッドに対して行う。
As described above, threads operate by sharing process resources. In the thread, a model is used in which each thread has a unique stack and other areas are shared with other threads. In the
図6は、ノード110が有する物理アドレス空間610と、ノード110上で動作するプロセス410が有する仮想アドレス空間620との対応を記した説明図である。物理アドレス空間610に配置される領域は、基本的にはノード110の物理的な構成部材と一対一に対応している。DRAM領域611はDIMM230、240に対応している。また、MMIO(Memory Mapped Input/Output)領域612は、前述したMMR311が配置される領域である。これらの領域はいずれもページと呼ばれる単位で管理される。一般的には1ページが4KBの大きさである。
FIG. 6 is an explanatory diagram showing the correspondence between the
プロセス410の仮想アドレス空間620は、text領域621、data領域622、mmio領域623、およびstack領域624に大別できる。本実施例のプロセス410では、それらに加えてさらにPIN領域プール516を有する。
The
仮想アドレス空間620内の各領域に関して、図5に示すプロセス410の内部構造と、図6に示すプロセス410の仮想アドレス空間620を対応させながら以下に説明する。
Each area in the
プロセス410は、ユーザレベルスレッド間で共有する様々なリソースをスレッド間共有リソース510として有している。スレッド間共有リソース510には、プログラムコード511、グローバル変数512、ヒープ領域513、スレッド管理情報514、NVM転送要求管理情報515、およびPIN領域プール516が含まれる。プログラムコード511は、スレッドが実行すべきプログラムの命令列であり、これは仮想アドレス空間620上ではtext領域621に配置される。グローバル変数512は、プロセス410内で動作する任意のサブルーチンやスレッドが共通して利用する変数であり、data領域622に配置される。ヒープ領域513は、プログラムが動的にメモリを確保するときのリソースプールであり、data領域622に配置される。スレッド管理情報514は、詳細は後述するが、スレッドを管理するためにスレッド毎に必要な情報を記憶するためのものであり、主にマスターコントロールスレッド550に利用されるが、ユーザレベルスレッドからアクセス出来る必要があるためグローバル変数512と同様の性質を持つことになり、data領域622に配置される。NVM転送要求管理情報515は、後述するDMA転送を管理するための情報で、スレッド管理情報514と同様の理由により、data領域622に配置される。stack領域は、ローカル変数やサブルーチンのパラメータ渡しのために用いるスタックを用意するための領域であり、後述するように各スレッドに配分される。
The
図6には、物理アドレス空間610と仮想アドレス空間620との対応関係が破線で示されている。図6に示したように、ページ単位で物理アドレス空間610と仮想アドレス空間620はマッピングされるが、仮想アドレス空間620上は存在するのに、物理アドレス空間610に対応するページが存在しないような仮想アドレス空間620上のページがあることに留意されたい。これがいわゆる仮想記憶を実現している仕組みであり、仮想アドレス空間620にはページが存在していても、それは直接DRAMに載っているとは限らず、HDDやSSDの中にページアウトされている可能性がある。このようなページにアクセスすると、MMUがページフォルト例外を発生させ、オペレーティングシステムがHDDやSSDから退避されているページを読み出してページインさせる。このように、仮想記憶を採用している情報処理システム100では、プロセスから見て存在しているメモリ領域(ページ)が、必ずしも物理的なメモリ上に存在している訳ではないという特徴がある。この特徴がDMA転送に及ぼす影響について、後ほど説明する。
In FIG. 6, the correspondence between the
図7は、仮想アドレス空間620のPIN領域プール516およびstack領域624のスレッドとの関係を示している。PIN領域プール516とstack領域624は、いずれも利用されるスレッド毎に分割される。しかし、stack領域624が必ずプロセス410が有する全てのスレッド(マスターコントロールスレッド、及び、ユーザレベルスレッド)に対応したstack領域を持つのに対して、PIN領域プール516はその領域の大きさに応じて一部のスレッドに対応する領域しか持たない。これは、stack領域624は、仮想記憶の機構を利用して、仮想アドレス空間の許す限り領域を確保することが出来るのに対して、PIN領域プール516は、後述する理由で、物理アドレス空間610のDRAM領域611と対応しているページを確保できる分しか用意しないためである。
FIG. 7 shows the relationship between the
以下に、情報処理システム100のユーザレベルマルチスレッディングとDMA転送を連携させる機構について説明する。ユーザレベルマルチスレッディングとDMA転送の連携により、例えば、背景技術で述べたような大規模なグラフ処理を高速化できる。
Hereinafter, a mechanism for linking user-level multithreading and DMA transfer in the
ここで、ユーザレベルマルチスレッディングとは、プロセス410の中で複数のスレッド(ユーザレベルスレッド)を切替えながら動作させていくことを言う。スレッド切替えに必要な処理がプロセス410の中で完結するので、カーネルレベルスレッドの切替えよりも高速である。一方で、ユーザレベルマルチスレッディングでは、スレッドの管理もプロセス410の中で行われる。本実施例の情報処理システム100では、マスターコントロールスレッド550がスレッドの管理の役割を担う。
Here, the user level multithreading means that a plurality of threads (user level threads) are operated while being switched in the
図8は、マスターコントロールスレッド550によるユーザレベルスレッド、及び、DMA転送を管理するためのキューを示す図である。これらのキューはスレッド管理情報514、及び、NVM転送要求管理情報515としてメモリ上に置かれている。
FIG. 8 is a diagram showing a user level thread by the
スレッド管理情報514は、READYキュー810、IOWAITキュー811、NVMWAITキュー812、およびFINキュー813を含む。各キューにエンキューされるエントリは、図9に示すスレッド管理セル900である。スレッド管理セル900は、Validフラグ901、スレッドID902、スレッド状態903、退避コンテキスト904、退避スタックポインタ905、退避プログラムカウンタ906、バッファ要求フラグ907、バッファ要求サイズ908、バッファ割当てフラグ909、およびバッファ領域先頭アドレス910から構成される。
The
Validフラグ901は、当該スレッド管理セル900が有効であるかどうかを示すフラグである。スレッドID902は、スレッドを一意に識別するための識別子であり、後述するDMA転送とスレッドのスケジューリングを連携させるという本発明の特徴となる動作を実現させるために用いられる。スレッド状態903は、スレッドが現在どのような状態にあるかを示すための情報である。スレッドの状態に関しては後で詳しく説明する。
The
退避コンテキスト904、退避スタックポインタ905、および退避プログラムカウンタ906は、スレッドの実行に用いられる情報であり、スレッドを停止させるときにプロセッサ210、220上のレジスタからスレッド管理セル900に退避させた情報である。バッファ要求フラグ907、バッファ要求サイズ908、バッファ割当てフラグ909、およびバッファ領域先頭アドレス910は、後述するDMA転送のために用いられるものであり、詳細は後述する。
The save
READYキュー810は、実行可能なユーザレベルスレッドのスレッド管理セル900がエンキューされている。マスターコントロールスレッド550は、プロセス410が有するカーネルレベルスレッドに空きがある場合、または、他のユーザレベルスレッドが停止する場合に、READYキュー810からスレッド管理セル900をデキューする。そして、デキューしたスレッド管理セル900に含まれる退避コンテキスト904、退避スタックポインタ905、および退避プログラムカウンタ906を用いてコンテキスト切替えを行い、スレッドの実行を開始する。
In the READY queue 810, a thread management cell 900 of an executable user level thread is enqueued. The
実行中(RUN)でもなく、実行可能状態(REDAY)でも無いスレッドは、何らかの待ち状態にある。マスターコントロールスレッド550は、その待ち状態を管理するために、IOWAITキュー811とNVMWAITキュー812を用いる。特に、NVMWAITキュー812を有することが、本実施例の情報処理システム100の特徴である。
A thread that is neither executing (RUN) nor being ready (READY) is in some waiting state. The
IOWAITキュー811は、オペレーティングシステムにシステムコールで要求したI/Oの完了を待っているスレッドが格納されているキューである。ユーザレベルスレッドは、ファイルへのアクセスなどオペレーティングシステムの機能を使ったI/Oの要求を行う場合に、システムコールを発行してそれをオペレーティングシステムに伝える。その後、システムコールを発行したスレッドが当該システムコールの実行が完了するまで行うべき処理が無い場合、つまり当該システムコールの完了を待って処理を再開する場合には、マスターコントロールスレッド550は、このIOWAITキュー811にシステムコールを発行したスレッドを退避させる。システムコールの実行が完了すると、マスターコントロールスレッド550は、退避させていたスレッドをREADYキュー810に移行する。
The IOWAIT queue 811 is a queue in which threads waiting for completion of I / O requested by the system call to the operating system are stored. When a user level thread makes an I / O request using an operating system function such as access to a file, it issues a system call and informs the operating system of it. Thereafter, when there is no processing to be performed until the thread that issued the system call completes the execution of the system call, that is, when the processing is resumed after the completion of the system call, the
NVMWAITキュー812は、メインメモリと不揮発メモリ(NVM)320の間のDMA転送の完了を待っているスレッドが格納されているキューである。本実施例の情報処理システム100の想定されるユースケースでは、例えば大規模グラフ処理のために大量の頂点のそれぞれに対応するスレッドが実行される。その際、スレッドの数が膨大となるため、全てのスレッドで処理に必要なデータを一度にメインメモリに載せておくことは難しい。そこで、情報処理システム100は、データを不揮発メモリ(NVM)320に格納しておき、スレッドを実行する際にDMA転送でNVM320からメインメモリに持ってくる。メインメモリがDRAMで構成されるのに対し、NVM320はフラッシュメモリや相変化メモリで構成されるため、DRAMに比較して安価に大容量が実現される。しかし、このDMA転送にも時間を要するため、その間、DMA転送でデータを要求したスレッドで他に実行可能な処理が無い場合、マスターコントロールスレッド550は、当該スレッドをNVMWAIT812キューに退避する。DMA転送が完了すると、マスターコントロールスレッド550は、NVMWAIT812キューに退避させたスレッドをREADYキュー810に移行する。
The NVMWAIT queue 812 stores a thread waiting for completion of DMA transfer between the main memory and the non-volatile memory (NVM) 320. In the assumed use case of the
FINキュー813は、実行が完了し不要となったスレッド管理セル900を収集するためのキューである。スレッド管理セル900はスレッド毎に存在する。そのため、動的な大規模グラフ処理などで、大量のスレッドの生成と破棄を繰り返すような場合、スレッド管理セル900をその都度、ヒープ領域513からメモリの割り当てを受けて生成、ないしは、ヒープ領域513に領域を返却していては、そのオーバヘッドが大きい。そのため、マスターコントロールスレッド550は、使用済みのスレッド管理セル900をFINキュー813に収集し、必要に応じてFINキュー813からスレッド管理セル900を再利用する。
The FIN queue 813 is a queue for collecting the thread management cells 900 that have become unnecessary after execution is completed. A thread management cell 900 exists for each thread. Therefore, when a large number of threads are repeatedly generated and destroyed in dynamic large-scale graph processing or the like, the thread management cell 900 is generated by receiving memory allocation from the
図10は、ここまでに説明したスレッドの各種状態を状態遷移図としてまとめたものである。図10の(1)で新規にスレッドが生成されると、マスターコントロールスレッド550は、新規スレッドのスレッド管理セル900を、READYキュー810にエンキューする。図10の(2)で、マスターコントロールスレッド550は、スレッドを実行する資源に空きが生じた場合、すなわち、既に実行していたユーザレベルスレッドが停止(READYキュー810、IOWAITキュー811、NVMWAITキュー812、またはFINキュー813にスレッドが退避される)した場合、または、カーネルレベルスレッドにユーザレベルスレッドが割当てられておらず空いている場合に、REDAYキュー810の先頭にあるスレッド管理セル900をデキューして実行開始する。当該スレッドは実行中(RUN)となる。
FIG. 10 summarizes the various states of the threads described so far as a state transition diagram. When a new thread is created in (1) of FIG. 10, the
図10の(3)では、実行中のスレッドから自発的な資源返上(yield)があった場合に、マスターコントロールスレッド550は、当該スレッドの実行を一時中断し、当該スレッドをREADYキュー810にエンキューする。図10の(4)では、実行中のスレッドがファイルアクセスなどのためにシステムコールを発行し、システムコールの完了待ちになった場合に、マスターコントロールスレッド550は、当該スレッドの実行を一時中断し、当該スレッドをIOWAITキュー811にエンキューする。
In (3) of FIG. 10, when there is a spontaneous resource return (yield) from the executing thread, the
図10の(5)では、実行中のスレッドが、NVM320とメインメモリの間でのDMA転送の完了待ちになった場合に、マスターコントロールスレッド550は、当該スレッドの実行を一時中断し、当該スレッドをNVMWAITキュー812にエンキューする。
In (5) of FIG. 10, when the executing thread waits for completion of the DMA transfer between the
図10の(6)では、マスターコントロールスレッド550は、(4)でIOWAITキュー811にエンキューされることにより始まったシステムコール完了待ちで、システムコールの完了を検出した場合に、当該スレッドをIOWAITキュー811からREADYキュー810に移行させる。図10の(7)に関しても、図10の(6)と同様に、完了待ちに対して実際に完了した場合の動作であり、マスターコントロールスレッド550は、(4)でNVMWAITキュー812にエンキューされることにより始まったDMA転送完了待ちで、DMA転送の完了を検出した場合に、当該スレッドをNVMWAITキュー812からREADYキュー810に移行させる。(6)および(7)により、システムコール、ないしは、DMA転送の完了待ちをしていて、かつ、システムコール、ないしは、DMA転送が完了したスレッドは再度実行可能となり、次にスケジュールされて実行開始されるのを待つこととなる。なお、DMA転送の完了を検出する方法は後述する。
In (6) of FIG. 10, when the
スレッドの実行が完了した場合、または、スレッドの実行を途中で中断した場合には、マスターコントロールスレッド550は、完了または中断したスレッドのスレッド管理セル900をFINキュー813に移行する(図10の(8)、(9)に対応する)。なお、スレッドの実行中断は、スレッドがREADYキュー810、IOWAITキュー811、またはNVMWAITキュー812に入っている場合にも起こり得るので、これらの場合にも、マスターコントロールスレッド550は、中断したスレッドのスレッド管理セル900をFINキュー813に移行する。また、スレッドの実行が完了した場合、または、スレッドの実行を途中で中断した場合に、マスターコントロールスレッド550は、完了または中断して処理が終了したスレッドに後述するPIN領域を割当てていた場合には、割当てを解除、すなわちPIN領域として割当てていたメモリ空間を解放する。
When the execution of the thread is completed or when the execution of the thread is interrupted, the
FINキュー813に入っているスレッド管理セル900は、ヒープ領域513が不足する場合には、マスターコントロールスレッド550により適宜開放される。また、新しいスレッドが生成される(図10の(1)の動作)際には、FINキュー813に入っているスレッド管理セル900から優先的に使われる。それでもスレッド管理セル900が足りない場合には、マスターコントロールスレッド550は、ヒープ領域513からスレッド管理セル900用の領域を割当てる。
The thread management cell 900 in the FIN queue 813 is appropriately released by the
NVM転送要求管理情報515は、REQキュー820、WAITキュー821、COMPLETEキュー822、およびDISPOSEキュー823から構成される。各キューにエンキューされるエントリは、図11に示すNVM転送要求管理セル1100である。NVM転送要求管理セル1100は、Validフラグ1101、要求元スレッドID1102、スレッド管理セルポインタ1103、転送方向1104、転送状態1105、転送元アドレス1106、転送データ長1107、および転送先アドレス1108から構成される。
The NVM transfer
Validフラグ1101は、当該NVM転送要求管理セル1100が有効であるかどうかを示すフラグである。要求元スレッドID1102は、当該NVM転送要求を発生させたスレッドのスレッドIDを格納するものである。スレッド管理セルポインタ1103は、当該NVM転送要求を発生させたスレッドを管理するスレッド管理セル900へのポインタである。つまり、このポインタを辿って得られたスレッド管理セル900に格納されているスレッドID902は、要求元スレッドID1102と同一である。
The
転送方向1104は、NVM転送の方向を指定するための情報で、ロード、または、ストアを指定する。ロードはCPUに近い側、つまりメインメモリにNVM320からデータを読み出す方向である(もしくは、NVM320に格納されているデータをメインメモリに書込むとも言える)。ストアは、CPUに遠い側、つまりNVM320にメインメモリからデータを読み出す方向である(もしくは、メインメモリに格納されているデータをNVM320に書込むとも言える)。転送状態1105は、NVM転送が現在どのような状態にあるかを示すものである。転送の状態に関しての詳細は後述する。
The
転送元アドレス1106は、NVM転送で行うDMA転送の転送元となるアドレスである。転送方向1104がロード(NVM320からメインメモリに転送)である場合、転送元アドレス1106はNVM320で用いられる識別子となる。この識別子には、メインメモリのアドレス空間(物理アドレス空間、仮想アドレス空間)と異なる、NVM320専用のアドレス空間を用いて良い。一般的に、メインメモリのアドレス空間は、その時代でコンピュータに搭載可能と想定されるDRAMの量で制約を受けており、例えば今日の64ビットアーキテクチャのプロセッサであっても、コスト面から現実的に利用可能なDRAMの量を考慮して、48ビット程度の空間しか実装していないことが多い。そのため、大容量のNVMをメインメモリのアドレス空間にマッピングすることは難しい。転送方向1104がストア(メインメモリからNVM320に転送)である場合、転送元アドレス1106は、メインメモリのアドレス空間であり、特に後述する理由から物理アドレス空間上のアドレスで指定される。
The
転送データ長1107は、NVM転送で行うDMA転送の転送長を指定する。転送先アドレス1108は、NVM転送で行うDMA転送の転送先となるアドレスである。転送元アドレス1106と同様に、転送方向1104に応じて、NVM320で用いている識別子を指定するか、物理アドレスを指定するかのどちらかで利用される。
The
NVM転送要求の状態遷移に関して、図12の状態遷移図と、図8のキュー構成を対比させながら説明する。 The state transition of the NVM transfer request will be described while comparing the state transition diagram of FIG. 12 with the queue configuration of FIG.
まず、図12の(1)スレッドからのアクセス要求、および(2)NNMサブシステムへのDMA転送要求について説明する。スレッドがメインメモリとNVM320との間でのDMA転送を必要とする場合、マスターコントロールスレッド550は、NVM転送要求管理セル1100を生成して、生成したセル1100をREQキュー820にエンキューする。DMA転送を開始するためには、MMR311にDMA転送の開始を要求するコマンドを書込まなければならない。ここで、NVMサブシステム300にMMR311を複数セット用意して、さらなる処理の高速化のために複数のDMA転送を同時並行的に進める多重DMA転送に対応させることもできる。マスターコントロールスレッド550は、NVMサブシステム300のDMA転送に空きがある場合に、REQキュー820からNVM転送要求管理セル1100をデキューして、MMR311にコマンドを書込むことで、DMA転送を開始する。そして、マスターコントロールスレッド550は、DMA転送中となるNVM転送要求管理セル1100をWAITキュー821にエンキューして、DMA転送の完了待ちを行う。
First, (1) an access request from a thread and (2) a DMA transfer request to the NNM subsystem in FIG. 12 will be described. When the thread requires a DMA transfer between the main memory and the
次に、図12の(3)NVMシステムからのDMA転送完了通知、(4)スレッドへのアクセス完了通知、および(5)NVMアクセス管理セルの解放・再利用について説明する。DMA転送の完了は、NVMサブシステム300からプロセッサ210、220への割込みで通知される方式を取ることが可能である。また、マスターコントロールスレッド550が、MMR311をポーリングすることでDMA転送の完了を知ることも出来る。但し、割込みを用いる場合には、割込みを受けるのはオペレーティングシステムが有する割込みハンドラであり、カーネル空間への切替えが必要となり、オーバヘッドが大きい。そこで、本実施例ではMMR311にDMA転送が完了したことを示すフラグを設けて、このフラグをマスターコントロールスレッド550がポーリングする。また、特に複数のDMA転送を同時並行的に行う場合には、複数のDMA転送の完了を個別に検出することすら、オーバヘッドの要因となる。そこで、本実施例の情報処理システム100では、マスターコントロールスレッド500は、ユーザレベルスレッドやスケジューリングに支障の無い程度の間隔、換言すればマスターコントロールスレッド500において他に行うべき処理が無い場合にMMR311をポーリングし、複数のDMA転送の完了を一度のポーリングで検出する。
Next, (3) DMA transfer completion notification from the NVM system, (4) thread access completion notification, and (5) NVM access management cell release / reuse in FIG. 12 will be described. The completion of the DMA transfer can be notified by an interrupt from the
DMA転送の完了が検出されたNVM転送要求管理セル1100は、マスターコントロールスレッド550によって、WAITキュー821からデキューされて、COMPLETEキュー822にエンキューされる。なお、DMA転送の完了順序はWAITキュー821にエンキューされている順序とは限らず、WAITキュー821へのアクセスはFIFOになるとは限らない。
The NVM transfer request management cell 1100 in which the completion of the DMA transfer is detected is dequeued from the WAIT queue 821 by the
COMPLETEキュー822にエンキューされたNVM転送要求管理セル1100は、DMA転送を管理するという観点から言えば、DMA転送は既に完了しているのでもう不要な情報である。しかし、本実施例の情報処理システム100では、このCOMPLETEキュー822に格納されているNVM転送要求管理セル1100を元にして、NVMWAITキュー812に格納されているスレッド管理セル900を、NVMWAITキュー812からREADYキュー810に移行させることを特徴としている。つまり、DMA転送の完了状況に応じて、当該DMA転送要求を発生させる要因となったスレッドを、DMA転送完了待ちの状態から実行可能な状態に状態遷移させることが、本実施例におけるDMA転送とマルチスレッディングの連携という特徴的な動作となる。
From the viewpoint of managing the DMA transfer, the NVM transfer request management cell 1100 enqueued in the COMPLETE queue 822 is unnecessary information because the DMA transfer has already been completed. However, in the
マスターコントロールスレッド550は、定期的にCOMPLETEキュー822を監視し、COMPLETEキュー822にNVM転送要求管理セル1100が存在する場合にはそれをデキューして、要求元スレッドID1102をキーとして、NVMWAITキュー812の中から対応するスレッド管理セル900を探す。マスターコントロールスレッド550は、対応するスレッド管理セル900を見つけたら、該スレッド管理セル900をREADYキュー810にエンキューすると共に、NVM転送要求管理セル1100をDISPOSEキュー823にエンキューする。なお、DISPOSEキュー823は、FINキュー813と同様に、使用済みのNVM転送要求管理セル1100の再利用を行うためのものである。
The
図13は、これまでに説明してきたユーザレベルマルチスレッディングとDMA転送の連携で、プロセス410内のスレッドがどのように起動・停止するかを示す説明図である。以下に、図13に沿ってスレッドのライフサイクルと、DMA転送との連携を説明する。
FIG. 13 is an explanatory diagram showing how threads in the
プロセス410は、カーネルレベルスレッド1−1〜1−5をオペレーティングシステムから割当てられている。プロセス410は、カーネルレベルスレッド1−1〜1−5に任意のスレッドを割当てて実行することができる。ここで、本実施例の情報処理システム100では、カーネルレベルスレッド1−1上にマスターコントロールスレッド550が固定的に割当てられる。プロセス410は、起動すると、マスターコントロールスレッド550をカーネルレベルスレッド1−1で実行する。
The
例えば、大規模なグラフ処理を行う場合、マスターコントロールスレッド550はグラフの頂点毎に対応するスレッドを立てて処理を行う。図13の例では、ユーザレベルスレッドA、B、C、D、E、F、Gがそれに対応し、マスターコントロールスレッド550は、まずユーザレベルスレッドA、D、F、Gをそれぞれカーネルレベルスレッド1−2〜1−5で起動する。
For example, when large-scale graph processing is performed, the
スレッドの実行状況を時系列に見て行くと、(1)においてユーザレベルスレッドAがマスターコントロールスレッド550に対して、NVM320からのDMA転送を要求し、また該DMA転送が終わらないと他に行える処理が無いことを申告している。マスターコントロールスレッド550は、対応するNVM転送要求管理セル1100を生成してREQキュー820にエンキューすると共に、ユーザレベルスレッドAの実行を一時停止し、そのコンテキストをスレッド管理セル900に退避して、NVMWAITキュー812にエンキューする。これにより、カーネルレベルスレッド1−2には実行すべきスレッドが無くなるため、マスターコントロールスレッド550は、READYキュー810からスレッド管理セル900を1個デキューして、そのスレッドをカーネルレベルスレッド1−2で実行する(図13では、マスターコントロールスレッド550は、ユーザレベルスレッドBの実行を開始している)。
Looking at the execution status of the threads in time series, in (1), the user level thread A requests the
次に、カーネルレベルスレッド1−3上で実行されているユーザレベルスレッドDが(2)で、(1)と同様にマスターコントロールスレッド550にDMA転送の要求を出している。しかし、(2)の場合には、ユーザレベルスレッドDはマスターコントロールスレッド550に対してDMA転送の完了を待たずとも他に行える処理があることを申告しているため、マスターコントロールスレッド550は、ユーザレベルスレッドDを一時停止させることなく、実行を続行させている。例えば、ユーザレベルスレッドで必要となるデータを予めDMA転送しておき、その後別の処理を行うような場合がこのケースにあたる。つまり、DMA転送でNVM320上のデータをプリフェッチしているような動作になる。
Next, the user level thread D executed on the kernel level thread 1-3 is (2), and a DMA transfer request is issued to the
その後、ユーザレベルスレッドB、Dはそれぞれ処理が一旦停止され、REDAYキュー810に積まれていた次のスレッドの実行が開始される。図13の例では、ユーザレベルスレッドBは、ユーザレベルスレッドCの実行が完了した後に再度実行予定とされ、ユーザレベルスレッドDは、先に要求したDMA転送の完了待ちに入る。続いて図13の例では、ユーザレベルスレッドC、Eの実行が開始されている。ユーザレベルスレッドCの実行中に(3)で(1)で要求したDMA転送に対する完了が通知されたので、ユーザレベルスレッドAがREADYキュー810にエンキューされる。このユーザレベルスレッドAは、ユーザレベルスレッドCの実行が終了(ないしは一時停止)した後にスケジュールされて、カーネルスレッド1−2で動作を開始している。 Thereafter, the processing of each of the user level threads B and D is temporarily stopped, and the execution of the next thread loaded in the REDEY queue 810 is started. In the example of FIG. 13, the user level thread B is scheduled to be executed again after the execution of the user level thread C is completed, and the user level thread D waits for completion of the previously requested DMA transfer. Subsequently, in the example of FIG. 13, execution of user level threads C and E is started. Since the completion of the DMA transfer requested in (1) is notified in (3) during execution of the user level thread C, the user level thread A is enqueued in the READY queue 810. The user level thread A is scheduled after the execution of the user level thread C is finished (or suspended), and starts operating with the kernel thread 1-2.
カーネルレベルスレッド1−4では、(4)でユーザレベルスレッドFが自主的に資源を返上して停止する。その後、カーネルレベルスレッド1−4では処理すべきスレッドが無い空白の時間がしばらく発生し、その後、ユーザレベルスレッドBが再びスケジュールされる。前述したように、ユーザレベルスレッドBはユーザレベルスレッドCの完了後に再スケジュールされる予定だったが、元々利用していたカーネルスレッド1−1をユーザレベルスレッドAに取られてしまったので、カーネルスレッド1−4上で動作する。プロセス内は各スレッド間で仮想アドレス空間が共有されるので、コンピュータの構成におけるSMPのように各カーネルスレッド1−1〜1−5は対等なものとして利用可能である。 In the kernel level thread 1-4, the user level thread F voluntarily returns resources and stops in (4). Thereafter, a blank time in which there is no thread to be processed occurs for a while in the kernel level thread 1-4, and then the user level thread B is scheduled again. As described above, the user level thread B was scheduled to be rescheduled after the completion of the user level thread C. However, since the kernel thread 1-1 originally used is taken by the user level thread A, the kernel Operates on threads 1-4. Since the virtual address space is shared among the threads in the process, the kernel threads 1-1 to 1-5 can be used as equivalents like SMP in the computer configuration.
図14は、本実施例におけるスレッドコンテキスト(スレッド管理情報514)と、データのDMA転送の関係を示した概念図である。スレッドが処理すべきデータはDMA転送でNVM320からPIN領域プール516を介してメインメモリに転送され、スレッドを実行するために必要なコンテキストは、退避されていたメインメモリから各ハードウェアスレッド(カーネルレベルスレッドはハードウェアスレッドに一対一対応している)にロードされる。
FIG. 14 is a conceptual diagram showing the relationship between the thread context (thread management information 514) and the DMA transfer of data in this embodiment. Data to be processed by the thread is transferred to the main memory from the
図15は、本実施例におけるマスターコントロールスレッド550のスケジューリング動作を示すフローチャートである。ステップS1501で、マスターコントロールスレッド550は、スケジューリングを開始する。スケジューリングを開始する契機はカーネルレベルスレッドに空きが検出された時である。次に、ステップS1502で、マスターコントロールスレッド550は、READYキュー810からスレッド管理セル900をデキュー可能かどうか判定する。デキューできなければその時点でスケジューリングは終了し、マスターコントロールスレッド550は、次にスケジューリング可能となる契機を待つ。デキューできる場合には、ステップS1503で、マスターコントロールスレッド550は、スレッド管理セル900をREADYキューからデキューする。
FIG. 15 is a flowchart showing the scheduling operation of the
その後、ステップS1504で、マスターコントロールスレッド550は、PIN領域プール516にPIN領域割当てが可能かどうかを判定する。本実施例の情報処理システム100では、図15に示すスレッドのスケジューリングにおいて、PIN領域の割当ての可否を判定することを特徴としている。
Thereafter, in step S1504, the
本実施例の情報処理システム100では、スレッド毎にDMA転送を行う。DMA転送はプロセッサやオペレーティングシステムの介在なしに行われるため、基本的には物理アドレス空間内で転送が行われることになる。すなわち、仮想アドレス空間はオペレーティングシステムの管理下であるため、DMA転送からは仮想アドレス空間を用いた転送が出来ない。そこで、DMA転送を行う場合には、転送対象となるメインメモリ上の領域が物理的なメモリ上にあり、物理アドレス空間上に配置されていることが必須となる。そのため、DMA転送を行うプロセスは、プロセスの仮想アドレス空間中の一部の領域を物理アドレス空間のDRAM領域に固定的に割当て、仮想記憶によるページアウト・ページインを生じさせないようにする。この物理的な存在があるメモリに固定的に割当てられた領域が、PIN領域であり、本実施例ではプロセスに対してPIN領域プール516として用意される。なお、PIN領域516の大きさは、予めユーザが設定できる。
In the
ここで、プロセスに用意したPIN領域プール516をスレッド毎に均等に分割して利用するという方法もあり得るが、これはスレッドの必要とするデータ量が予め分かっていて、かつ、各スレッドの要求するPIN領域の大きさが均等でないと上手く利用できない。
Here, there is a method in which the
そこで、本実施例の情報処理システム100では、プロセスにPIN領域プール516を用意し、プロセスが持つPIN領域をリソースプールとして管理する。その上で、スレッドが起動時に自スレッドで必要とするPIN領域の大きさをスレッド管理セルのバッファ要求フラグ907、及び、バッファ要求サイズ908でマスターコントロールスレッド550に申告し、マスターコントロールスレッド550からPIN領域の割当てを受けて該スレッドが実行に移る。
Therefore, in the
そのため、ステップS1504では、現在のPIN領域プール516の残量と、起動しようとしているスレッドが要求している領域の量とを比較して、スレッドの起動可否を判定する。実行中のスレッドがPIN領域プール516の割当てを得ていれば、残量はその分少ない。PIN領域プール516の残量が不足すると判定された場合には、ステップS1506で、マスターコントロールスレッド550は、当該スレッドをREADYキュー810の末尾に積み、他のスレッドを優先して実行に移す。一方、PIN領域プール516から必要な領域を確保できる場合には、ステップS1505で、マスターコントロールスレッド550は、申告をしてきたスレッドにPIN領域を割当てて、スレッドの切替えを行う。マスターコントロールスレッド550は、PIN領域の割当てについて、スレッド管理セル900のバッファ割当てフラグ909とバッファ領域先頭アドレス910に書込むことで、申告をしてきたスレッドに割当てた領域を通知する。
Therefore, in step S1504, the current remaining amount of the
このように、実行予定のスレッドがメインメモリの物理アドレス空間上でDMA転送に必要とする容量に応じてメモリ空間を確保することで、各スレッドの要求するPIN領域の大きさのばらつきに対して柔軟に対応することが可能となる。ひいては、効率的なDMA転送を実現でき、情報処理システム100の処理を高速化できる。
In this way, by securing the memory space according to the capacity required for DMA transfer in the physical address space of the main memory by the thread to be executed, it is possible to cope with variations in the size of the PIN area requested by each thread. It becomes possible to respond flexibly. As a result, efficient DMA transfer can be realized, and the processing of the
本実施例では、さらに大規模なグラフ処理を行うなどの状況で、スレッド管理セル900がメインメモリに収まらないほど大量のスレッドであっても実行することのできる情報処理システムの例を説明する。 In the present embodiment, an example of an information processing system that can be executed even when the thread management cell 900 does not fit in the main memory in a situation where a larger scale graph processing is performed will be described.
大規模なグラフ処理などで頂点の数が莫大になると、スレッドの数も莫大になる。その時、全てのスレッドのスレッド管理セル900をメインメモリ中に保持しておくことすら不可能になる。そこで、本実施例では、図16に示すようにスレッド管理セル900の実体をNVM320に配置し、必要に応じてメインメモリにDMA転送して利用する。さらに、マスターコントロールスレッド550がNVM320上のスレッド管理セル900を、それが必要になる以前に予めDMA転送しておく。すなわち、スレッド管理セル900に対するプリフェッチが行われる。図16に示したように、スレッドコンテキストは、メインメモリとNVMとの間でDMA転送され、退避または呼び出される。
When the number of vertices becomes enormous due to large-scale graph processing, the number of threads also becomes enormous. At that time, it becomes impossible to hold the thread management cells 900 of all the threads in the main memory. Therefore, in this embodiment, as shown in FIG. 16, the entity of the thread management cell 900 is arranged in the
スレッド管理セル900は基本的にREADYキュー810にエンキューされている順番で必要となるので、REDAYキュー810を監視して、その順序でプリフェッチを行えば良い。また、REDAYキュー810の先頭アドレスを保持し、プロセッサと並行してREADYキュー810を読み出してプリフェッチを行うDMAコントローラを別途用意しても良い。 Since the thread management cell 900 is basically required in the order enqueued in the READY queue 810, the READY queue 810 may be monitored and prefetched in that order. In addition, a DMA controller that holds the head address of the READY queue 810, reads the READY queue 810 in parallel with the processor, and performs prefetching may be separately prepared.
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。 As mentioned above, the invention made by the present inventor has been specifically described based on the embodiment. However, the present invention is not limited to the embodiment, and various modifications can be made without departing from the scope of the invention. Needless to say.
100:情報処理システム、110:ノード、120:ノード間ネットワーク、130:NVMサブシステムインターコネクト、210、220:プロセッサ、230、240:DIMM、250:I/Oハブ、260:NIC、270:ディスクコントローラ、280:HDD、290:SSD、300:NVMサブシステム、310:ハイブリッドメモリコントローラ、320:NVM(Non−volatile Memory、不揮発メモリ)、330:揮発性メモリ、311:MMR(Memory Mapped Register)、410、420:プロセス、510:スレッド間共有リソース、511:プログラムコード、512:グローバル変数、513:ヒープ領域、514:スレッド管理情報、515:NVM転送要求管理情報、516:PIN領域プール。 100: Information processing system, 110: Node, 120: Inter-node network, 130: NVM subsystem interconnect, 210, 220: Processor, 230, 240: DIMM, 250: I / O hub, 260: NIC, 270: Disk controller 280: HDD, 290: SSD, 300: NVM subsystem, 310: Hybrid memory controller, 320: NVM (Non-volatile Memory, non-volatile memory), 330: Volatile memory, 311: MMR (Memory Mapped Register), 410 420: Process 510: Shared resource between threads 511: Program code 512: Global variable 513: Heap area 514: Thread management information 515: NVM transfer required Management information, 516: PIN area pool.
Claims (11)
第1の記憶装置と、
前記第1の記憶装置との間でDMA転送を行う第2の記憶装置と、
前記第1の記憶装置に物理アドレス空間を割当て、該物理アドレス空間上に仮想アドレス空間を提供するオペレーティングシステムと、を備え、
実行予定のスレッドが前記物理アドレス空間上で前記DMA転送に必要とする容量に応じてメモリ空間を確保し、
該スレッドを実行に移し、
該スレッドの処理が終了した後に確保したメモリ空間を開放することを特徴とする情報処理装置。A multi-thread processor;
A first storage device;
A second storage device for performing a DMA transfer with the first storage device;
An operating system that allocates a physical address space to the first storage device and provides a virtual address space on the physical address space;
The thread to be executed secures a memory space according to the capacity required for the DMA transfer on the physical address space,
Move the thread to execution,
An information processing apparatus that releases a memory space secured after processing of the thread is completed.
前記DMA転送に利用される物理アドレス空間の領域が予め設定され、
予め設定された領域の内で実行中のスレッドに確保されている領域を除いた領域で、
前記メモリ空間の確保を行うことを特徴とする情報処理装置。The information processing apparatus according to claim 1,
An area of a physical address space used for the DMA transfer is preset,
An area excluding the area reserved for the executing thread in the preset area.
An information processing apparatus that secures the memory space.
実行に移されDMA転送の完了待ちとなったスレッドを一時中断することを特徴とする情報処理装置。The information processing apparatus according to claim 1,
An information processing apparatus characterized by temporarily interrupting a thread that has been transferred to execution and is waiting for completion of DMA transfer.
一時中断されたスレッドのコンテキストを前記第1の記憶装置に記憶することを特徴とする情報処理装置。The information processing apparatus according to claim 3.
An information processing apparatus that stores a context of a suspended thread in the first storage device.
一時中断されたスレッドのコンテキストを前記第2の記憶装置に記憶することを特徴とする情報処理装置。The information processing apparatus according to claim 3.
An information processing apparatus that stores a context of a suspended thread in the second storage device.
前記第1の記憶装置が主記憶装置であることを特徴とする情報処理装置。The information processing apparatus according to claim 1,
An information processing apparatus, wherein the first storage device is a main storage device.
前記第1の記憶装置は揮発性メモリを備え、
前記第2の記憶装置は不揮発性メモリを備えることを特徴とする情報処理装置。The information processing apparatus according to claim 1,
The first storage device comprises a volatile memory;
The information processing apparatus, wherein the second storage device includes a nonvolatile memory.
ハードディスクドライブを備えることを特徴とする情報処理装置。The information processing apparatus according to claim 7,
An information processing apparatus comprising a hard disk drive.
前記マルチスレッドプロセッサは複数のコアを有することを特徴とする情報処理装置。The information processing apparatus according to claim 1,
The multi-thread processor has a plurality of cores.
前記揮発性メモリはDRAMであり、
前記不揮発性メモリはフラッシュメモリであることを特徴とする情報処理装置。The information processing apparatus according to claim 1,
The volatile memory is DRAM;
An information processing apparatus, wherein the nonvolatile memory is a flash memory.
前記揮発性メモリはDRAMであり、
前記不揮発性メモリは相変化メモリであることを特徴とする情報処理装置。The information processing apparatus according to claim 1,
The volatile memory is DRAM;
An information processing apparatus, wherein the nonvolatile memory is a phase change memory.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2012/069078 WO2014016951A1 (en) | 2012-07-27 | 2012-07-27 | Information processing device |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP5847313B2 true JP5847313B2 (en) | 2016-01-20 |
| JPWO2014016951A1 JPWO2014016951A1 (en) | 2016-07-07 |
Family
ID=49996784
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2014526682A Expired - Fee Related JP5847313B2 (en) | 2012-07-27 | 2012-07-27 | Information processing device |
Country Status (2)
| Country | Link |
|---|---|
| JP (1) | JP5847313B2 (en) |
| WO (1) | WO2014016951A1 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2021210123A1 (en) * | 2020-04-16 | 2021-10-21 | 日本電信電話株式会社 | Scheduling method, scheduler, gpu cluster system, and program |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005190293A (en) * | 2003-12-26 | 2005-07-14 | Toshiba Corp | Information processing apparatus and information processing program |
| JP2008021290A (en) * | 2006-06-15 | 2008-01-31 | Hitachi Ulsi Systems Co Ltd | Storage device, storage controller, and information processing apparatus |
| JP2010152527A (en) * | 2008-12-24 | 2010-07-08 | Sony Computer Entertainment Inc | Method and apparatus for providing user level dma and memory access management |
| US20120066415A1 (en) * | 2010-09-14 | 2012-03-15 | Texas Instruments Incorporated | Methods and systems for direct memory access (dma) in-flight status |
-
2012
- 2012-07-27 WO PCT/JP2012/069078 patent/WO2014016951A1/en not_active Ceased
- 2012-07-27 JP JP2014526682A patent/JP5847313B2/en not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2005190293A (en) * | 2003-12-26 | 2005-07-14 | Toshiba Corp | Information processing apparatus and information processing program |
| JP2008021290A (en) * | 2006-06-15 | 2008-01-31 | Hitachi Ulsi Systems Co Ltd | Storage device, storage controller, and information processing apparatus |
| JP2010152527A (en) * | 2008-12-24 | 2010-07-08 | Sony Computer Entertainment Inc | Method and apparatus for providing user level dma and memory access management |
| US20120066415A1 (en) * | 2010-09-14 | 2012-03-15 | Texas Instruments Incorporated | Methods and systems for direct memory access (dma) in-flight status |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2014016951A1 (en) | 2014-01-30 |
| JPWO2014016951A1 (en) | 2016-07-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Sudan et al. | Micro-pages: increasing DRAM efficiency with locality-aware data placement | |
| US8826270B1 (en) | Regulating memory bandwidth via CPU scheduling | |
| CN101189575B (en) | Sequencer address management | |
| US20090165007A1 (en) | Task-level thread scheduling and resource allocation | |
| Jung et al. | Memorage: Emerging persistent RAM based malleable main memory and storage architecture | |
| WO2015169145A1 (en) | Memory management method and device | |
| Yu et al. | Twinpilots: A new computing paradigm for gpu-cpu parallel llm inference | |
| US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
| US10922137B2 (en) | Dynamic thread mapping | |
| WO2012026877A1 (en) | Context switching | |
| US11640305B2 (en) | Wake-up and timer for scheduling of functions with context hints | |
| Li et al. | A new disk I/O model of virtualized cloud environment | |
| CN115617542A (en) | Memory exchange method, device, computer equipment and storage medium | |
| Li et al. | Improving preemptive scheduling with application-transparent checkpointing in shared clusters | |
| CN115421924A (en) | Memory allocation method, device and equipment | |
| CN111897651A (en) | Memory system resource management method based on tags | |
| CN115981833A (en) | Task processing method and device | |
| US20140047452A1 (en) | Methods and Systems for Scalable Computing on Commodity Hardware for Irregular Applications | |
| CN119422130A (en) | Adaptive thread management for heterogeneous computing architectures | |
| Weiland et al. | Exploiting the performance benefits of storage class memory for HPC and HPDA workflows | |
| JP5847313B2 (en) | Information processing device | |
| CN108845969B (en) | Operation control method and operation system suitable for incompletely symmetrical multi-processing microcontroller | |
| Akram et al. | NUMA implications for storage I/O throughput in modern servers | |
| Zhu et al. | EBIO: An Efficient Block I/O Stack for NVMe SSDs With Mixed Workloads | |
| US8010963B2 (en) | Method, apparatus and program storage device for providing light weight system calls to improve user mode performance |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20151027 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151124 |
|
| R151 | Written notification of patent or utility model registration |
Ref document number: 5847313 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
| LAPS | Cancellation because of no payment of annual fees |