(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-20
(45)【発行日】2022-04-28
(54)【発明の名称】コプロセッサ処理の高速化の方法とプログラム
(51)【国際特許分類】
G06F 9/38 20060101AFI20220421BHJP
G06F 12/06 20060101ALI20220421BHJP
G06F 15/173 20060101ALI20220421BHJP
【FI】
G06F9/38 370C
G06F12/06 530C
G06F15/173 670
(21)【出願番号】P 2020126673
(22)【出願日】2020-07-27
【審査請求日】2020-11-27
【早期審査対象出願】
(73)【特許権者】
【識別番号】515325575
【氏名又は名称】海外 浩平
(74)【代理人】
【識別番号】100139778
【氏名又は名称】栗原 潔
(72)【発明者】
【氏名】海外 浩平
【審査官】漆原 孝治
(56)【参考文献】
【文献】特開2016-152001(JP,A)
【文献】国際公開第2016/194401(WO,A1)
【文献】特開2017-010515(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 12/06
G06F 15/173
(57)【特許請求の範囲】
【請求項1】
第1のプロセッサと第2のプロセッサとI/Oバスとを備え、
前記第1のプロセッサは、
ホスト・メモリにアクセス可能であり、
前記第2のプロセッサは、並列処理手段を備え、
デバイス・メモリにアクセス可能であり、前記
デバイス・メモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存する、
コンピューター上で実行されるメモリ管理方法であって、
前記第1のプロセッサが、前記
ホスト・メモリ上の第1の更新ログにデータを追加するステップと、
前記第1のプロセッサが、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリ上の第2の更新ログに反映するステップと、
前記第2のプロセッサが、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映するステップとを含み、
前記並列処理用データ構造は、列指向のデータ形式であり、
前記第2の更新ログは、行指向のデータ形式である、
メモリ管理方法。
【請求項2】
前記
ホスト・メモリに保存されたプログラムが、所定の時間間隔ごとに、前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリ上の
前記第2の更新ログに反映するステップを実行させる、請求項1に記載の方法。
【請求項3】
前記ホスト・メモリは不揮発性メモリ領域を含み、前記第1の更新ログは前記不揮発性メモリ領域に保存される、請求項1、または、請求項2に記載の方法。
【請求項4】
前記
ホスト・メモリに保存された前記
第1の更新ログはインデックスを含む、請求項1、請求項2、または、請求項3に記載の方法。
【請求項5】
前記
デバイス・メモリに保存された前記
第2の更新ログはインデックスを含む、請求項1、請求項2、請求項3、または、請求項4に記載の方法。
【請求項6】
第1のプロセッサと第2のプロセッサとI/Oバスとを備え、
前記第1のプロセッサは、
ホスト・メモリにアクセス可能であり、
前記第2のプロセッサは、並列処理手段を備え、
デバイス・メモリにアクセス可能であり、
前記
デバイス・メモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存する、
コンピューター上で実行されるメモリ管理プログラムであって、
前記第1のプロセッサに、前記
ホスト・メモリ上の第1の更新ログにデータを追加させる命令群と、
前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリ上の第2の更新ログに反映させる命令群と、
前記第2のプロセッサに、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映させる命令群とを含み、
前記並列処理用データ構造は、列指向のデータ形式であり、
前記第2の更新ログは、行指向のデータ形式である、
メモリ管理プログラム。
【請求項7】
所定の時間間隔ごとに、前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリの
前記第2の更新ログに反映させる命令群を含む請求項6に記載の
プログラム。
【請求項8】
前記ホスト・メモリは不揮発性メモリ領域を含み、前記第1の更新ログは前記不揮発性メモリ領域に保存される、請求項6、または、請求項7に記載のプログラム。
【請求項9】
前記
ホスト・メモリに保存された前記
第1の更新ログはインデックスを含む、請求項6、請求項7、または、請求項8に記載のプログラム。
【請求項10】
前記
デバイス・メモリに保存された前記
第2の更新ログはインデックスを含む、請求項6、請求項7、請求項8、または、請求項9に記載の
プログラム。
【請求項11】
第1のプロセッサと第2のプロセッサとI/Oバスとを備え、
前記第1のプロセッサは、
ホスト・メモリにアクセス可能であり、
前記第2のプロセッサは、並列処理手段を備え、
デバイス・メモリにアクセス可能であり、
前記
デバイス・メモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存し、
前記第1のプロセッサが、前記
ホスト・メモリ上の第1の更新ログにデータを追加し、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリ上の第2の更新ログに反映し、
前記第2のプロセッサが、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映し、
前記並列処理用データ構造は、列指向のデータ形式であり、
前記第2の更新ログは、行指向のデータ形式である、
コンピューター装置。
【請求項12】
前記第1のプロセッサが、所定の時間間隔ごとに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記
デバイス・メモリ上の前記第2の更新ログに反映する、請求項11に記載のコンピューター装置。
【請求項13】
前記ホスト・メモリは不揮発性メモリ領域を含み、前記第1の更新ログは前記不揮発性メモリ領域に保存される、請求項11、または、請求項12に記載のコンピューター装置。
【請求項14】
前記
ホスト・メモリに保存された前記
第1の更新ログはインデックスを含む、請求項11、請求項12、または、請求項13に記載のコンピューター装置。
【請求項15】
前記
デバイス・メモリに保存された前記
第2の更新ログはインデックスを含む、請求項11、請求項12、請求項13、または、請求項14に記載のコンピューター装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、GPU(Graphical Processing Unit)等のコプロセッサの処理高速化のための方法、プログラム、および、コンピューター装置、より詳細にはデータがランダムに更新される場合の高速化のための方法と方法、プログラム、および、コンピューター装置に関する。
【背景技術】
【0002】
GPU等のコプロセッサが提供する並列処理機能により、コンピューター・システムを高速化する手法は公知である(たとえば、特許文献1)。一般的に、GPUが備える並列処理ユニットはホスト・システムとは別のデバイス・メモリを持ち、処理すべきデータを事前にデバイス・メモリ上にロードしておく必要がある。デバイス・メモリ上のデータ形式は、GPUの並列処理ユニットで実行されるデバイス・プログラムが任意に定義することができるが、表形式のように、均一なデータ構造を持ち数万個から数億個の要素を含む構造化データを共通の形式で管理することが広く行なわれている。このような並列処理用データ構造を一般にデータストアと呼ぶ。
【0003】
データストア上に、たとえばモバイル機器、自動車、情報家電等のデバイスが備えるセンサーから収集したデータを保持する場合、これら外部デバイスの状態変化に応じてデータストアの内容を更新する必要がある。このようなワークロードはIoT(Internet of Things)やM2M(Machine-to-Machine)と呼ばれる応用分野では一般的に見られるものだが、通常、数秒単位の一定時間内で見たときに更新が必要なデータ要素は全体のごく一部であるため、データストアを書き換えるために、その内容全体を再度GPUへロードすることは効率が悪い。一般に、コプロセッサとホスト・システム間を接続するI/Oバスの帯域幅は、コンピューター・システム性能のボトルネックとなることが多い貴重なリソースであるため、この点が特に問題となる。
【0004】
この課題に対応するために、デバイス・メモリを固定サイズのページに分割し、更新があったページだけをオンデマンドで書き換える技術が知られている(たとえば、特許文献2、特許文献3、非特許文献1)。この技術では、ホスト・メモリとデバイス・メモリ双方の論理アドレス空間を確保し、並列処理ユニットによるデバイス・メモリのページに対する実際のアクセス時まで、デバイス・メモリに対する物理メモリのページの割り当てを遅延させる。並列処理ユニットまたはホスト・プロセッサによる最初のアクセスの時に、ページ・フォールト機構によりゼロ・ページが割り当てられる。次回以降のアクセスでは、デバイス・メモリ側に割り当て済みページがあり、ホスト側で当該領域にメモリアクセスがあった場合、あるいは、ホスト側に割り当て済みページがありGPU側で当該領域にメモリアクセスがあった場合、実行中のプログラムを一時停止して、4キロバイトや64キロバイトといった大きさのページフレームをPCI-EなどのI/Oバスを介して転送し、物理ページを割り当てた上でプログラムの実行を再開する。
【0005】
これはデータストア上で更新されるデータが連続的であれば効率的であるが、IoTやM2M等の応用分野では外部機器やセンサー等から送出されるデータの到着はランダムであることが多く、したがって、データストア上で散逸した不連続な領域が更新されることを考慮する必要がある。たとえば、データストア上の6ヵ所を更新する場合、個々のデータ長は十分に小さく(たとえば、100バイト)とも、それらが離れた位置の更新であれば、ページサイズ(たとえば、4キロバイト)×6回分のデータ転送が必要となり、効率がきわめて悪化していた(600バイトのデータの更新のために24キロバイトのデータ転送を行なわなければならなかった)。また、仮に1つのデータ項目の更新であってもページ全体を転送しなければならないことから、貴重なリソースであるI/Oバスの帯域幅を過剰に消費してしまうと言う課題があった。
【先行技術文献】
【特許文献】
【0006】
【文献】公表特許公報 再表2017/085985
【文献】特許公開公報 特開2008-033928
【文献】特許公開公報 特開2019-71122
【非特許文献】
【0007】
【文献】CUDA Programming Guide - K. Unified Memory Programming (https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#um-data-migration)
【発明の概要】
【発明が解決しようとする課題】
【0008】
データストア上の不連続な領域が更新される場合でも効率的な処理が行なえるコプロセッサのメモリ管理機能を提供する。
【課題を解決するための手段】
【0009】
本願発明は、第1のプロセッサと第2のプロセッサとI/Oバスとを備え、前記第1のプロセッサは、第1のメモリにアクセス可能であり、前記第2のプロセッサは、並列処理手段を備え、第2のメモリにアクセス可能であり、前記第2のメモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存する、コンピューター上で実行されるメモリ管理方法であって、前記第1のプロセッサが、前記第1のメモリ上の第1の更新ログにデータを追加するステップと、前記第1のプロセッサが、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映するステップと、前記第2のプロセッサが、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映するステップとを含むメモリ管理方法を提供することで上記課題を解決する。
【0010】
また、本願発明は、前記第1のメモリに保存されたプログラムが、所定の時間間隔ごとに、前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映するステップを実行させる、段落0009に記載の方法を提供することで上記課題を解決する。
【0011】
また、本願発明は、前記第1のメモリは不揮発性メモリである、段落0009、または、段落0010に記載の方法を提供することで上記課題を解決する。
【0012】
また、本願発明は、前記第1のメモリに保存された前記更新ログはインデックスを含む、段落0009、段落0010、または、段落0011に記載の方法を提供することで上記課題を解決する。
【0013】
また、本願発明は、前記第2のメモリに保存された前記更新ログはインデックスを含む、段落0009、段落0010、段落0011、または、段落0012に記載の方法を提供することで上記課題を解決する。
【0014】
また、本願発明は、第1のプロセッサと第2のプロセッサとI/Oバスとを備え、前記第1のプロセッサは、第1のメモリにアクセス可能であり、前記第2のプロセッサは、並列処理手段を備え、第2のメモリにアクセス可能であり、前記第2のメモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存する、コンピューター上で実行されるメモリ管理プログラムであって、前記第1のプロセッサに、前記第1のメモリ上の第1の更新ログにデータを追加させる命令群と、前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映させる命令群と、前記第2のプロセッサに、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映させる命令群とを含むメモリ管理プログラムを提供することで上記課題を解決する。
【0015】
また、本願発明は、所定の時間間隔ごとに、前記第1のプロセッサに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映させる命令群を含む段落0014に記載のメモリ管理プログラムを提供することで上記課題を解決する。
【0016】
また、本願発明は、前記第1のメモリは不揮発性メモリである、段落0014、または、段落0015に記載のプログラムを提供することで上記課題を解決する。
【0017】
また、本願発明は、前記第1のメモリに保存された前記更新ログはインデックスを含む、段落0014、段落0015、または、段落0016に記載のプログラムを提供することで上記課題を解決する。
【0018】
また、本願発明は、前記第2のメモリに保存された前記更新ログはインデックスを含む、段落0014、段落0015、段落0016、または、段落0017に記載の方法を提供することで上記課題を解決する。
【0019】
また、本願発明は、第1のプロセッサと第2のプロセッサとI/Oバスとを備え、前記第1のプロセッサは、第1のメモリにアクセス可能であり、前記第2のプロセッサは、並列処理手段を備え、第2のメモリにアクセス可能であり、前記第2のメモリは、前記並列処理手段が並列処理を行なうための並列処理用データ構造を保存し、前記第1のプロセッサが、前記第1のメモリ上の第1の更新ログにデータを追加し、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映し、前記第2のプロセッサが、前記第2の更新ログ上に反映されたデータを前記並列処理用データ構造に反映するコンピューター装置を提供することで上記課題を解決する。
【0020】
また、本願発明は、前記第1のプロセッサが、所定の時間間隔ごとに、前記第1の更新ログ上に追加されたデータを前記I/Oバスを介して前記第2のメモリ上の第2の更新ログに反映する、段落0019に記載のコンピューター装置を提供することで上記課題を解決する。
【0021】
また、本願発明は、前記第1のメモリは不揮発性メモリである、段落0019、または、段落0020に記載のコンピューター装置を提供することで上記課題を解決する。
【0022】
また、本願発明は、前記第1のメモリに保存された前記更新ログはインデックスを含む、段落0019、段落0020、または、段落0021に記載のコンピューター装置を提供することで上記課題を解決する。
【0023】
また、本願発明は、前記第2のメモリに保存された前記更新ログはインデックスを含む、段落0019、段落0020、段落0021、または、段落0022に記載のコンピューター装置を提供することで上記課題を解決する。
【発明の効果】
【0024】
データストア上の不連続な領域が更新される場合でも効率的な処理が行なえるコプロセッサのメモリ管理機能が提供される。
【図面の簡単な説明】
【0025】
【
図1】本願発明に係る方法が実施されるコンピューター・システムの構成の例である。
【
図2】本願発明に係る方法の第1の実施例の構成を示す全体的概念図である。
【
図3】本願発明に係る方法で使用されるデータ形式の例を示す概念図である。
【
図4】本願発明に係る方法の第2の実施例の構成を示す全体的概念図である。
【
図5】本願発明に係る方法の第3の実施例の構成を示す全体的概念図である。
【
図6】本願発明に係る方法の第4の実施例の構成を示す全体的概念図である。
【
図7】本願発明に係る方法の第5の実施例の構成を示す全体的概念図である。
【発明を実施するための形態】
【0026】
以下に図を参照しながら本願発明の実施例について説明する。
【0027】
図1に、本願発明に係る方法およびプログラムが実行されるコンピューター・システム(100)の構成例を示す。ホスト・システム(110)はCPU(Central Processing Unit)(111)とホスト・メモリ(112)を備える。加えて、ホスト・システムは外部とデータをやり取りするためにネットワーク受信部(113)を介して、センサー等の外部デバイスと接続されている。GPU等のコプロセッサ(以下、「GPU」と総称する)(120)は、並列処理ユニット(121)とデバイス・メモリ(122)とを備える。ホスト・システム(110)とGPU(120)との間は、PCI-E等のI/Oバス(130)で接続されている。ホスト・メモリ(112)とデバイス・メモリ(122)との間は、DMA(Direct Memory Access)によるデータ転送が可能になっていることが好ましい。本コンピューター・システム(100)上で実行されるプログラムはホスト・プログラム(図示せず)とデバイス・プログラム(図示せず)に分割され、実行される。ホスト・プログラムは、ホスト・メモリ(112)上に格納され、CPU(111)により実行される。デバイス・プログラムは、デバイス・メモリ(122)に格納され、並列処理ユニット(121)により実行される。デバイス・プログラムは並列処理ユニット(121)が提供する並列処理により高速化が可能な設計であることが望ましい。
【0028】
図2に本願発明の第1の実施例の全体構成を示す。並列処理ユニット(121)による並列処理の対象となるデータであるデータストア(210)は、デバイス・メモリ(122)に格納されている。外部デバイスが生成したデータは、ネットワーク受信部(113)を介してログ受信プログラム(221)に渡され、ログ受信プログラム(221)はこれをホスト・メモリ(112)上のホスト側更新ログ(222)に書き込む。ログ受信プログラム(221)は独立したプログラムであっても、ホスト・プログラムの一部であってもよい。この処理は、ホスト・メモリ(112)上のデータの更新(追記)のみであるため、処理はきわめて短時間で終わる。その後、別の常駐プログラム(223)が(たとえば、1秒間隔など)定期的にホスト側更新ログ(222)をチェックし、1件以上の要素の追加を発見した場合には、ホスト側更新ログ(222)の内容をI/Oバス(130)を介してGPU(120)のデバイス・メモリ(122)上の更新ログ(211)へ転送し、次いでデータストア更新プログラム(212)を実行する。データストア更新プログラム(212)は、GPU(120)の並列処理ユニット(121)(典型的には数100コアから数1000コアを備える)で並列に実行されるため、更新ログ(211)に記録された要素数が多い場合でもデータ更新の遅延は起こりにくい(I/Oバス(130)を通じたデータ転送以上にボトルネックとなることはない)。
【0029】
図3に本願発明に係るデータストア(210)と更新ログ(211)のデータ形式の例を示す。データストア(210)のデータ形式は、GPU(120)の並列処理ユニット(121)の仕様およびデバイス・プログラムのロジックにより自由に決定してよいが、典型的な並列処理では、多数の行の共通の列を並列処理することが多いことから、各行に属するデータ要素を列ごとにまとめた列指向のデータ形式となる。各列の先頭データを示すポインターをヘッダー情報として格納してもよい。このようなデータ形式であるがゆえに、従来技術では、データ更新が不連続に行なわれる場合には効率が悪かった。なお、データストア(210)の項目の更新や削除を効率的に行なうために、各レコードに行属性を設け、無効フラグを設定できるようにし、デバイス・プログラムが無効フラグのあるレコードを読み飛ばすようなロジックを採用してよい。こうすることで、更新ログ(211)の差分適用による更新処理を削除(無効フラグの設定)と末尾への行追加により実現でき、効率化できる可能性がある。
【0030】
更新ログ(211)も更新すべき行を識別する情報と対象となる更新情報を効率的に格納できる任意のデータ形式を使用してよいが、
図3に示すようにデータストア(210)上の位置を示す行ID(あるいは行をユニークに識別する主キー)と更新すべき値が記録された、行指向のデータ形式を使用することが望ましい。また、ホスト側更新ログ(222)には更新ログ(211)と同一のデータ形式を使用してもよいが、異なったデータ形式を使用してもよい。更新ログ(211)上では、行を識別する情報と更新情報をメモリ上の隣接した位置に保持することができるため、更新すべき差分データが10要素であろうとも、100万要素であろうとも、その差分自体を記録するために必要な分量のデータだけをI/Oバス(130)を介して転送すればよく、更新と直接関係ないデータ転送のオーバーヘッドがないため、コンピューター・ハードウェアにおける貴重な
資源であるI/Oバス(130)の帯域幅を効率的に使用できる。また、この手法により、外部デバイスから受け取った更新データの書き込みは、GPU(120)との間のデータ転送の完了を待つことなく、ホスト側更新ログ(222)への書き込みをもって完了とすることができ、応答時間の短縮という技術的優位性も得られる。加えて、I/Oバス(130)を通じて、ホスト・システム(110)とGPU(120)との間で転送しなければならないデータ量を削減することができることから、データ転送の待ち時間を短縮することもできる。
【0031】
図4に本願発明に係る方法の第2の実施例の構成を表す全体的概念図を示す。本実施例では、ホスト・プログラム(410)自身が、並列計算のために呼び出すデバイス・プログラムの実行前に、更新ログの転送とデータストア更新プログラム(212)の起動を行なう。この場合でも、第1の実施例と同様に、常駐プログラム(223)が、更新ログ(211)の更新、旧データの削除によるスペース開放、バックアップ、ガーベジ・コレクション等のために、データストア更新プログラム(212)を一定間隔ごとに起動することが好ましい。アプリケーションのロジックを実装したホスト・プログラム(410)自身が更新ログの適用処理を起動できることで、常に最新の外部デバイスの状態を反映したデータに対して、デバイス・プログラムを実行することができるようになる。第2の実施例に係る方法と第1の実施例に係る方法とを組み合わせて、ホスト・プログラム(410)上のアプリケーション・ロジックと常駐プログラム(223)によるタイマー制御の両方が、更新ログの転送、データストア更新プログラム(212)の起動、または、その両方を行なうようにしてもよい。こうするとことで、常駐プログラム(223)が定期的にホスト側更新ログ(222)をGPU(120)に転送する間にデータストアが更新されていたとしても、デバイス・プログラムが最新のデータに対して分析処理を行なえるようになる。また、デバイス・プログラム実行開始時点のスナップショットに対して分析処理を行なうことができるため、プログラム実行中にデータストア(210)が更新されていた場合でも、整合性の取れた処理を行なうことができる。
【0032】
図5に本願発明に係る方法の第3の実施例の構成を表す全体的概念図を示す。本実施例では、ホスト側の更新ログ領域を不揮発メモリ(510)上に確保する。ログ受信プログラム(221)は、外部デバイスから受け取った更新データを更新ログ領域に書き込むと共に、CPUキャッシュのフラッシュを行なう。これにより、デバイス・メモリ(122)上のデータストア(210)を更新するだけでなく、その更新履歴を時系列で保持することができるようになる。更新ログはデータストアの更新・追記・削除の履歴を全て保持しているため、これらの情報を不揮発メモリ(510)に保存しておくことで、システム障害時に備えたリアルタイムのバックアップを保持するのと同一の効果を得られる。
【0033】
図6に本願発明に係る方法の第4の実施例の構成を表す全体的概念図を示す。本実施例では、データストアの主キーをデータストア上の物理位置を示す行IDに変換するためのインデックス(610)が追加されている。データベース設計上の制約により、外部デバイスの生成する更新データからは、データストア上の物理位置は必ずしも自明でないこともある。その場合、たとえば、デバイスIDなどの主キーを用いてインデックス(610)を検索し、行IDを得ることができる。また、インデックス(610)を参照することで、当該デバイスのデータが既にデータストア上に存在するため更新処理が必要であるのか、それとも、新規にデータを追加する挿入の処理であるのかを、データストア更新プログラムの実行を待たずに判別することができ、処理の効率化が可能となる。
【0034】
図7に本願発明に係る方法の第5の実施例の構成を表す全体的概念図を示す。本実施例では、上記第4の実施例におけるインデックス(610)に相当するインデックス(710)を、デバイス・メモリ(122)上に配置し、データストア更新プログラム(212)がインデックス(710)を参照して主キーから行IDへの変換を行なう。データストア更新プログラム(212)は、並列処理ユニット(121)によって、ホスト・システム(110)のCPU(111)よりもはるかに高い並列度で実行されるため、インデックス(71-0)の探索に要する処理時間を短縮することができる。
【0035】
(本願発明による技術的に顕著な効果)
本願発明により、GPU等の並列処理性能に優れたコプロセッサを備えたコンピューター・システムにおいて、今後ますますの普及が予測されるIoT/M2Mの分野で典型的な、データの不連続な領域の更新が頻繁に発生するタイプのワークロードに対しても、コプロセッサとホスト・システムを接続するI/Oバスのボトルネックを発生させることなく、コプロセッサの並列処理能力を最大限に活用することができるようになるという技術的に顕著な効果が得られる。ページングに依存する従来技術においては、データの更新領域が連続である場合には適切であっても、不連続である場合には、きわめて効率が悪かった。