(57)【要約】【課題】メモリサイズの増加を最小限に抑え、各スレッドのキャッシュ検索を効率化する。【解決手段】所定のデータを変換するデータ変換において、所定のデータの種類を含む属性に対し、データ変換に必要な計算を並列で実行する複数のスレッドと、属性と計算によって得られた変換値とを対応付けて記憶する記憶手段と、を含み、記憶手段は、複数のスレッドのそれぞれに対して設けられた属性の記憶領域と、複数のスレッドのすべてにおいて共有される変換値の記憶領域と、から構成され、属性の記憶領域は、属性と属性に対応する変換値が格納されている番地を示す値とを対応付けて記憶し、変換値の記憶領域は、属性と計算によって得られた変換値とを対応付けて記憶する。【選択図】図６
2017033446.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを変換するデータ変換において、前記所定のデータの種類を含む属性に対し、前記データ変換に必要な計算を並列で実行する複数のスレッドと、
前記属性と前記計算によって得られた変換値とを対応付けて記憶する記憶手段と、
を含み、
前記記憶手段は、
前記複数のスレッドのそれぞれに対して設けられた前記属性の記憶領域と、
前記複数のスレッドのすべてにおいて共有される前記変換値の記憶領域と、
から構成され、
前記属性の記憶領域は、前記属性と前記属性に対応する変換値が格納されている番地を示す値とを対応付けて記憶し、
前記変換値の記憶領域は、前記属性と前記計算によって得られた変換値とを対応付けて記憶することを特徴とする情報処理システム。
【請求項２】
前記所定のデータは画像データであり、前記データ変換は、前記画像データをビットマップ画像に変換するビットマップ変換であることを特徴とする請求項１に記載の情報処理システム。
【請求項３】
新たな属性が前記属性の記憶領域に存在するか否かを判断する第１の判断手段を含み、前記第１の判断手段により前記新たな属性が前記属性の記憶領域に存在すると判断されると、前記計算を実行することなく、前記属性に対応する変換値が格納されている番地を示す値に対応する前記変換値の記憶領域に記憶されている変換値を使用することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記第１の判断手段により前記新たな属性が前記属性の記憶領域に存在しないと判断されると、前記新たな属性が前記変換値の記憶領域に存在するか否かを判断する第２の判断手段をさらに含み、前記第２の判断手段により、前記新たな属性が前記変換値の記憶領域に存在すると判断されると、前記計算を実行することなく、前記新たな属性に対応付けて前記変換値の記憶領域に記憶されている変換値を使用することを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記第２の判断手段により、前記新たな属性が前記変換値の記憶領域に存在しないと判断されると、前記新たな属性に対し、前記データ変換に必要な計算を実行することを特徴とする請求項４に記載の情報処理システム。
【請求項６】
前記新たな属性に対し、前記データ変換に必要な計算を実行することにより得られた新たな変換値を、前記変換値の記憶領域に記憶されている最も使用頻度が少ない変換値に代えて、前記新たな属性と対応付けて記憶することを特徴とする請求項５に記載の情報処理システム。
【請求項７】
前記属性の記憶領域において、前記新たな属性と、前記新たな属性に対応する前記新たな変換値が格納されている番地を示す値とを対応付けて記憶することを特徴とする請求項６に記載の情報処理システム。
【請求項８】
所定のデータを変換するデータ変換において、前記所定のデータの種類を含む属性に対し、前記データ変換に必要な計算を並列で実行する複数のスレッドと、
前記属性と前記計算によって得られた変換値とを対応付けて記憶する記憶手段と、を含み、
前記記憶手段は、
前記複数のスレッドのそれぞれに対して設けられた前記属性の記憶領域と、
前記複数のスレッドのすべてにおいて共有される前記変換値の記憶領域と、から構成され、
前記属性の記憶領域は、前記属性と前記属性に対応する変換値が格納されている番地を示す値とを対応付けて記憶し、
前記変換値の記憶領域は、前記属性と、前記計算によって得られた変換値とを対応付けて記憶する情報処理システムの制御方法であって、
新たな属性が前記属性の記憶領域に存在するか否かを判断する工程により、前記新たな属性が前記属性の記憶領域に存在すると判断されると、前記計算を実行することなく、前記属性に対応する変換値が格納されている番地を示す値に対応する前記変換値の記憶領域に記憶されている変換値を使用する工程を含むことを特徴とする情報処理システムの制御方法。
【請求項９】
所定のデータを変換するデータ変換において、前記所定のデータの種類を含む属性に対し、前記データ変換に必要な計算を並列で実行する複数のスレッドと、
前記属性と前記計算によって得られた変換値とを対応付けて記憶する記憶手段と、を含み、
前記記憶手段は、
前記複数のスレッドのそれぞれに対して設けられた前記属性の記憶領域と、
前記複数のスレッドのすべてにおいて共有される前記変換値の記憶領域と、から構成され、
前記属性の記憶領域は、前記属性と前記属性に対応する変換値が格納されている番地を示す値とを対応付けて記憶し、
前記変換値の記憶領域は、前記属性と前記計算によって得られた変換値とを対応付けて記憶する情報処理システムのコンピュータに、
新たな属性が前記属性の記憶領域に存在するか否かを判断する処理により、前記新たな属性が前記属性の記憶領域に存在すると判断されると、前記計算を実行することなく、前記属性に対応する変換値が格納されている番地を示す値に対応する前記変換値の記憶領域に記憶されている変換値を使用する処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理システムの制御方法、及びプログラムに関する。
【背景技術】
【０００２】
処理性能を向上させるために、元の値（以下、タグ値ともいう。）から変換処理が行われた場合、その変換結果をタグ値と対応付けてキャッシュしておく。そして、後の処理において同じタグ値が使用された場合、当該キャッシュしておいた変換結果を使用することにより、変換処理を省略することができる。このことは、マルチスレッド処理においても、キャッシュ管理を行うことにより、処理性能を向上することができる。
【０００３】
マルチスレッド処理において、各スレッドで取り扱うタグ値が同じ傾向にある場合、すべてのスレッドで一個のキャッシュを共有する方法が有効である。ここで、スレッドとは、ソフトウェアやプログラミング等の分野において、並列処理に対応したＯＳ（Operation System）上でのプログラムの最小単位をいい、複数のスレッドを同時に実行して並列に処理を進めることをマルチスレッドという。
【０００４】
例えば、ＭＴＲ（Multi Threaded Rendering）では、バンドをスレッド数で領域分割したミニバンドに対して並列に描画処理を行っている。通常の画像データでは、近傍の座標のオブジェクト属性（タグ値）は同じになる場合が多い。しかしながら、ＭＴＲでは、スレッド毎に分割された座標領域の異なるミニバンドに対して描画処理を行うため、スレッド毎に取り扱うオブジェクト属性（タグ値）の傾向が異なる場合が多い。このような条件の下では、各スレッドで別々に独自のキャッシュを設ける方法が有効となる。
【０００５】
マルチスレッド処理では、取り扱うタグ値の傾向にしたがって、すべてのスレッドにおいて共有のキャッシュのみを使用する方法、各スレッド専用のキャッシュのみを使用する方法、これ等２種類の何れかを有効とする方法が既に知られている。
【０００６】
特許文献１には、複数モジュール間のキャッシュ効率の低下を防ぐことを目的として、複数のモジュールにおいて一個のキャッシュを共有する方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来、マルチスレッド処理において行われていた２種類の何れかのキャッシュを有効とするキャッシュ管理方法では、タグ値の傾向が処理データに依存するため一定ではないという問題があった。また、すべてのスレッドにおいて共有のキャッシュのみを使用する方法では、処理するタグ値の傾向が偏る場合、各スレッド専用のタグ値も共有することになるため、検索に無駄が発生してしまうという問題があった。さらに、各スレッド専用のキャッシュのみを使用する方法では、処理するタグ値が同じ傾向の場合、本来であれば共有できる同じタグ値に対して、別々のキャッシュを確保する必要があるため、メモリサイズに無駄が出てしまうという問題があった。
【０００８】
また、特許文献１に記載された印刷文書変換装置では、マルチスレッド処理において共有のキャッシュデータを利用している。しかしながら、この共有キャッシュのみを利用する方法では、処理するタグ値の傾向が偏る場合、各スレッドのみで使用する可能性のある専用のタグ値についてもすべてのスレッドにおいて検索対象となってしまう。したがって、キャッシュの検索効率が低下するという問題は依然として解決されていない。
【０００９】
そこで、本発明は、上記従来技術の問題点に鑑みてなされたものであって、マルチスレッド処理におけるキャッシュの検索効率とメモリサイズとを両立させ、最適なキャッシュ構成を提供することが可能な情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明における情報処理システムは、所定のデータを変換するデータ変換において、前記所定のデータの種類を含む属性に対し、前記データ変換に必要な計算を並列で実行する複数のスレッドと、前記属性と前記計算によって得られた変換値とを対応付けて記憶する記憶手段と、を含み、前記記憶手段は、前記複数のスレッドのそれぞれに対して設けられた前記属性の記憶領域と、前記複数のスレッドのすべてにおいて共有される前記変換値の記憶領域と、から構成され、前記属性の記憶領域は、前記属性と前記属性に対応する変換値が格納されている番地を示す値とを対応付けて記憶し、前記変換値の記憶領域は、前記属性と前記計算によって得られた変換値とを対応付けて記憶することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、マルチスレッド処理のキャッシュ管理において、必要となるメモリサイズの増加を最小限に抑えつつ、各スレッドのキャッシュ検索を効率化することが可能な情報処理システムを得ることができる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態の画像処理システムの概略構成について説明する機能ブロック図の一例である。
【図２】本実施形態の画像処理システムの概略構成について説明するハードウェアブロック図の一例である。
【図３】本実施形態の画像処理システムを構成する画像形成制御部におけるマルチスレッド処理とキャッシュ管理の一例について説明する図である。
【図４】従来の画像処理システムにおいて、すべてのスレッドにおいて共有のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する図である。
【図５】従来の画像処理システムにおいて、各スレッド専用のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する図である。
【図６】本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の一例について説明する図である。
【図７】本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の動作について説明するフロー図である。
【発明を実施するための形態】
【００１３】
次に、本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図中、同一又は相当する部分には同一の符号を付しており、その重複説明は適宜に簡略化乃至省略する。以下、本発明について説明するが、本発明は、以下に説明する実施形態に限定されるものではない。以下の実施形態では、マルチスレッド処理におけるキャッシュ管理として、画像処理システムを一例に挙げて説明を行っている。しかしながら、マルチスレッド処理におけるキャッシュ管理を行う様々なシステムについて本発明を適用可能である。
【００１４】
本発明は、マルチスレッド処理のキャッシュ管理に際し、以下の特徴を有する。具体的には、所定のデータをデータ変換するに際し、必要な計算を並列で行う複数のスレッド処理で得られた変換値におけるキャッシュ管理である。なお、ここでいうマルチスレッド処理とは、複数の数のスレッドを並列処理することによってデータ変換を行う処理を指すものとする。
【００１５】
まず、所定のデータの種類等を含む属性に対し、データ変換に必要な計算を実行する。その際、属性と、データ変換に必要な計算によって得られた変換値とを対応付けてキャッシュメモリ等の記憶部に記憶しておく。そして、新たな属性が現れたとき、この新たな属性が記憶部に記憶されているか否かを判断する。
【００１６】
さらに、この新たな属性が記憶部に記憶されていると判断すると、データ変換に必要な計算を実行することなく、この新たな属性に対応付けて記憶部に記憶されている変換値を使用するのである。そして、記憶部の記憶領域として、各スレッド専用のタグ値配列（タグ値とキャッシュデータ値配列の番地を示す値）と、すべてのスレッド共有のキャッシュデータ値配列との２種類の配列を用いる。これにより、マルチスレッドのキャッシュ管理を効率良く管理する。
【００１７】
各スレッド専用のタグ値配列を用いることにより、各スレッドに最適なキャッシュを提供し、従来行っていたすべてのスレッド共有のキャッシュのみを用いる方法と比較し、高速な検索が可能となる。また、同じタグ値のデータを共通に格納するキャッシュデータ値配列を用いることにより、メモリサイズを最小限に抑えることができる。
【００１８】
従来行っていたすべてのスレッド共有のキャッシュのみを用いる方法と比較すると、各スレッド専用のタグ値配列の分だけメモリサイズは大きくなるが、通常の場合はキャッシュデータ値配列と比較してタグ値配列のサイズは小さくなる。例えば、タグ値配列の１エントリが２バイトに対して、キャッシュデータ値配列の１エントリは数１０バイトであり、従来行っていた各スレッド専用のキャッシュのみ使用する方法と比較し、メモリサイズを抑えることができる。
【００１９】
また、従来行っていた各スレッド専用のキャッシュのみを用いる方法では、同じタグ値であっても、スレッド毎に別々に管理しているため、各スレッドそれぞれにおいて、同じタグ値からの変換結果への計算コストが掛かってしまう。これに対して、本発明では、キャッシュデータ値配列によって変換結果を共有することとしているため、タグ値からの変換結果への計算が最初の１回で済むことが特徴になっている。上記記載の本発明の特徴について、以下の図面を用いて詳細に解説する。
【００２０】
まず、本実施形態の画像処理システムの概略構成について説明する。図１は、本実施形態の画像処理システムの概略構成について説明する機能ブロック図の一例である。
【００２１】
図１において、画像処理システム１は、ページ記述言語で記述された印刷データに対し、そのデータを解釈し、ビットマップ画像に変換し、記録用紙に印刷する。画像処理システム１は、全体の処理を制御する情報処理部１１と、作業領域として使用するメモリ１２と、大容量の記憶装置を持ち、画像データの蓄積やプログラムを格納するために用いる記憶部１３とを有する。
【００２２】
各制御部として、ＬＡＮ（Local Area Network）経由で画像データ等のコマンドを受信すると共に、コマンドに応答してデータを送信する通信制御部１４を有する。また、受信したコマンド等のデータを解釈し、描画データ等の処理を行う印刷制御部１５を有する。さらに、描画データにより記録用紙に画像を形成するプリンタエンジンを制御する画像形成制御部１６を有する。それぞれの制御部間で、バスを介してデータを転送することが可能である。
【００２３】
上記通信制御部１４、印刷制御部１５、及び画像形成制御部１６は、制御に必要なモジュールを駆動することにより、それぞれの動作を実行している。また、各制御部のモジュールは、制御の効率化を図るため、マルチスレッド処理を採用する場合もある。
【００２４】
次に、本実施形態の画像処理システムの概略構成について説明する。図２は、本実施形態の画像処理システムの概略構成について説明するハードウェアブロック図の一例である。
【００２５】
図２において、画像処理システム１は、画像処理システム１の全体の動作を制御するＣＰＵ（Central Processing Unit）３１と、ＣＰＵ３１が実行するプログラムを格納するＲＯＭ（Read Only Memory）３２とを有している。また、ＣＰＵ３１が実行するプログラムの作業メモリであるＲＡＭ（Random Access Memory）３３と、画像データ等を格納するＨＤＤ（Hard Disk Drive）３４とを有している。
【００２６】
そして、画像処理システム１の操作部であり、ユーザインタフェースとなる入力装置３６と、ＬＣＤ（Liquid Crystal Display）ディスプレイ等から構成される表示装置３５とを有している。なお、表示装置３５は、入力装置３６がタッチパネル構成である時は、ユーザインタフェースにもなるものである。
【００２７】
さらに、ＬＡＮ等を介してデータの送受信を行う通信インタフェース部３７と、描画データ等の処理を行い、描画データにより記録用紙に画像を形成する印刷装置３８とを有している。そして、画像処理システム１を構成する各部は、バス３９を介して接続されている。
【００２８】
なお、図１で説明した情報処理部１１は、ＣＰＵ３１で実現され、通信制御部は、通信インタフェース部３７で実現される。また、図１で説明した画像形成制御部１６及び印刷制御部は、ＣＰＵ３１と印刷装置３８で実現され、メモリ１２は、ＲＯＭ３２、ＲＡＭ３３で実現され、記憶部１３は、ＨＤＤ３４で実現される。
【００２９】
次に、本実施形態の画像処理システムを構成する画像形成制御部におけるマルチスレッド処理とキャッシュ管理の一例について説明する。図２は、本実施形態の画像処理システムを構成する画像形成制御部におけるマルチスレッド処理とキャッシュ管理の一例について説明する図である。
【００３０】
ここでは、図１の画像形成制御部１６のマルチスレッド処理を具体例に挙げて説明するが、任意の制御部（モジュール）のマルチスレッド処理とキャッシュ管理についても適用可能である。画像データを受信した画像形成制御部１６は、メモリ１２を作業領域として、画像データをビットマップ画像に変換する。画像形成制御部１６の制御モジュールは、制御の効率化を図るため、マルチスレッド処理を採用する。
【００３１】
画像形成制御部１６の制御モジュールは、Ｎ個の描画スレッド２１−１、２１−２、…、２１−Ｎを実行し、それらの各描画スレッドにおいてビットマップ画像を並列処理によって作成する。このような描画処理は、ＭＴＲ（Multi Threaded Rendering）と呼ばれる。
【００３２】
描画スレッド２１−１、２１−２、…、２１−Ｎは、画像データをビットマップ画像に変換する過程において、種類（フォント、グラフィック、イメージ）、描画色値等のオブジェクト属性（タグ値）に対し、ビットマップ変換に必要な変換計算を実行する。そして、その変換結果を再利用するため、オブジェクト属性（タグ値）と対応付けてメモリ１２のキャッシュ２２に保存する。
【００３３】
キャッシュの種類には、フォントキャッシュ、グラフィックキャッシュ、イメージキャッシュ等がある。描画スレッド２１−１、２１−２、…、２１−Ｎは、オブジェクト属性（タグ値）のオブジェクトを描画する前に、そのオブジェクト属性（タグ値）に対する変換結果が、キャッシュ２２に存在するか否かを検索する。
【００３４】
検索した結果、キャッシュ２２に存在する場合、その変換結果を再利用する。この際、描画スレッド２１−１、２１−２、…、２１−Ｎは、オブジェクト属性（タグ値）に対して、ビットマップ変換に必要な変換計算を省略することができる。
【００３５】
検索の結果、キャッシュ２２に存在しない場合、描画スレッド２１−１、２１−２、…、２１−Ｎは、オブジェクト属性（タグ値）に対して、ビットマップ変換に必要な変換計算を実行する。そして、その変換結果を再利用するため、オブジェクト属性（タグ値）と対応付けてキャッシュ２２に保存する。
【００３６】
従来行われていたマルチスレッド処理のキャッシュ管理としては、すべてのスレッド共有のキャッシュのみ使用するキャッシュ管理と、各スレッド専用のキャッシュのみ使用するキャッシュ管理との２種類が存在する。
【００３７】
次に、従来の画像処理システムにおいて、すべてのスレッドにおいて共有のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する。図４は、従来の画像処理システムにおいて、すべてのスレッドにおいて共有のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する図である。
【００３８】
なお、図４においては、２スレッドの場合を例に挙げて説明するが、任意のＮスレッドの場合についても適用可能である。このキャッシュ管理方法では、すべてのスレッドに対して一個のキャッシュ配列を共有する。キャッシュ配列の登録順は、すべてのスレッドにより使用された頻度に依存し、使用頻度が高いキャッシュ値が上位となり、先に検索されるように更新する。
【００３９】
図４において、タグ２、３、及び８は、スレッド１のみで使用するキャッシュ配列である。スレッド２のキャッシュ配列を検索する際、スレッド２で使用していない（スレッド１のみで使用する）タグ２、３、及び８のキャッシュ配列も検索対象となるため、無駄な検索が発生する。
【００４０】
また、タグ５、６はスレッド２のみで使用するキャッシュ配列である。スレッド１のキャッシュ配列を検索する際、スレッド１で使用していない（スレッド２のみで使用する）タグ５、６のキャッシュ配列も検索対象となるため、無駄な検索が発生する。
【００４１】
タグ１、４、及び７は、すべてのスレッドで使用するキャッシュ配列である。タグ１、４、７については、スレッド１、スレッド２の両方の使用頻度により、登録順が更新される。タグ１、４、及び７は、スレッド１又はスレッド２それぞれに対する使用頻度にしたがっていないため、各スレッドに対する最適な登録順となっていない。
【００４２】
マルチスレッド処理において、各スレッドで取り扱うタグ値が同じ傾向にある場合、このキャッシュ管理方法は有効となる。しかし、各スレッドで取り扱うタグ値の傾向が偏っている場合、キャッシュ配列の検索時間が長くなるという欠点がある。
【００４３】
次に、従来の画像処理システムにおいて、各スレッド専用のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する。図５は、従来の画像処理システムにおいて、各スレッド専用のキャッシュ配列のみを使用するキャッシュ管理の一例について説明する図である。
【００４４】
なお、図５においては、２スレッドの場合を例に挙げて説明するが、任意のＮスレッドの場合についても適用可能である。このキャッシュ管理方法では、各スレッドにおいて専用のキャッシュ配列を別々に管理する。
【００４５】
タグ１、４、及び７は、すべてのスレッドで使用するキャッシュ配列であるが、スレッド１専用のキャッシュ配列と、スレッド２専用のキャッシュ配列とは別々に管理する。したがって、それぞれスレッドにおいてキャッシュ配列がメモリに確保されており、メモリサイズが大きくなっている。
【００４６】
また、タグ１、４、及び７は、スレッド１とスレッド２との共有のキャッシュ配列にすれば、タグ値から変換結果への計算が最初の１回で済む。しかしながら、各スレッドにおいて別々に管理されているため、各スレッドにおいて変換結果へ計算するためのコストが掛かるという欠点がある。
【００４７】
マルチスレッド処理において、各スレッドで取り扱うタグ値の傾向が偏っている場合、図５に示すキャッシュ管理方法が有効である。しかし、各スレッドで取り扱うタグ値が同じ傾向にある場合、メモリサイズが大きくなり、タグ値から変換結果のキャッシュデータを計算するときの計算量が多くなるという欠点がある。
【００４８】
次に、本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の一例について説明する。図６は、本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の一例について説明する図である。
【００４９】
なお、図６においては、２スレッドの場合を例に挙げて説明するが、任意のＮスレッドの場合についても適用可能である。このキャッシュ管理方法では、各スレッド専用のタグ値配列により、各スレッドに最適なキャッシュデータを提供することができる。このタグ値配列には、そのスレッドにおいて過去に使用したタグ値のみが登録され、その登録順、すなわち、検索順は、そのスレッドの使用頻度にしたがって最適化されている。そのため、図４で説明した、従来の画像処理システムにおいて、すべてのスレッドにおいて共有のキャッシュ配列のみを使用するキャッシュ管理方法と比較して、高速な検索が可能である。
【００５０】
図６のキャッシュ管理方法によれば、同じタグ値のデータを共通に格納するキャッシュデータ値配列により、メモリサイズを最小限に抑えることができる。図４で説明した、すべてのスレッドにおいて共有のキャッシュ配列のみを使用するキャッシュ管理方法と比較すると、タグ値配列の分だけメモリサイズは大きくなる。しかしながら、通常の場合はキャッシュデータ値配列と比較して、タグ値配列のサイズは小さくなる。例えば、タグ値配列の１エントリが２バイトであるのに対して、キャッシュデータ値配列の１エントリは数１０バイトである。
【００５１】
また、図５で説明した、従来の画像処理システムにおいて、各スレッド専用のキャッシュ配列のみを使用するキャッシュ管理方法と比較すると、メモリサイズを抑えることができる。さらに、図５で説明した、各スレッド専用のキャッシュ配列のみを使用するキャッシュ管理方法では、同じタグ値に対しても各スレッドで別々に管理している。したがって、各スレッドそれぞれに同じタグ値から変換結果のキャッシュデータを計算するときのコストが掛かるという欠点がある。
【００５２】
これに対して、図６に示す方法では、キャッシュデータ値配列によって変換結果を共有することとしているため、タグ値から変換結果を求めるための計算が最初の１回で済む。マルチスレッド処理において、各スレッドで取り扱うタグ値が同じ傾向の場合や、各スレッドで取り扱うタグ値の傾向が偏っている場合の両方のケースにおいて最適なキャッシュ構成を提供することができる。
【００５３】
次に、本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の動作について説明する。図７は、本実施形態の画像処理システムにおいて、各スレッド専用のタグ値配列と、すべてのスレッドにおいて共有のキャッシュデータ値配列との２種類を使用するキャッシュ管理の動作について説明するフロー図である。ここでは、マルチスレッド処理のスレッドｎにおいて、タグ値から変換処理を行い、その変換結果を返す処理を行うものとする。
【００５４】
ステップＳ１の処理において、タグ値がスレッドｎ専用のタグ値配列にあるか否かが判断される。換言すれば、スレッドｎのタグ値配列に対し、タグ値の変換結果がキャッシュ済みであるか否かが検索される。
【００５５】
このとき、タグ値配列はスレッドｎ専用の配列（図６の左側の配列）であり、スレッドｎが過去に使用したタグ値のみが登録され、その登録順、すなわち、検索順は、スレッドｎの使用頻度にしたがって最適化されている。そのため、検索に要するループ数が最小となり、高速に検索することができる。
【００５６】
ステップＳ１の処理において、タグ値がスレッドｎ専用のタグ値配列にある（ステップＳ１：ＹＥＳ）、すなわち、スレッドｎのタグ値配列に変換結果がキャッシュ済みである場合、キャッシュされた変換結果を使用することにより、変換処理を省略することができる。そして、ステップＳ２の処理において、スレッドｎの専用のタグ値配列に対し、現在のタグ値配列のエントリをより上位に移動する。
【００５７】
さらに、ステップＳ３の処理において、共有のキャッシュデータ値配列に対して、現在のタグ値のエントリをより上位に移動する。ステップＳ２及びステップＳ３の処理により、そのタグ値のエントリは、各配列のより上位へ移動することとなり、次回の検索時には、より優先的に検索され、かつ、キャッシュ配列がすべて使用済みになった場合でも破棄対象となり難くなる。
【００５８】
ステップＳ１の処理において、タグ値がスレッドｎ専用のタグ値配列にない（ステップＳ１：ＮＯ）、すなわち、スレッドｎのタグ値配列に変換結果がキャッシュ済みでない場合、ステップＳ４の処理へ移行する。ステップＳ４の処理において、タグ値がキャッシュデータ値配列にあるか否かが判断される。換言すれば、共有のキャッシュデータ値配列に対し、タグ値の変換結果がキャッシュ済みであるか否かが検索される。
【００５９】
ステップＳ４の処理において、タグ値がキャッシュデータ値配列にある（ステップＳ４：ＹＥＳ）、すなわち、共有のキャッシュデータ値配列に対し、タグ値の変換結果がキャッシュ済みである場合、他のスレッドにおいてキャッシュされた変換結果を使用する。これにより、変換処理を省略することができる。各スレッド専用のキャッシュのみを使用する方法では、同じタグ値に対して各スレッドで別々に管理されているため、各スレッドそれぞれにおいて、同じタグ値から変換結果のキャッシュデータを計算するためコストが掛かる。
【００６０】
これに対し、この方法では、キャッシュデータ値配列により変換結果を共有することとしているため、タグ値から変換結果への計算が最初の１回で済む。そして、ステップＳ５の処理において、共有のキャッシュデータ値配列に対し、現在のタグ値のエントリをより上位に移動する。これにより、次回の検索優先度を上げ、キャッシュ配列がすべて使用済みになった場合でも破棄対象となり難くする。
【００６１】
ステップＳ４の処理において、タグ値がキャッシュデータ配列にない（ステップＳ４：ＮＯ）、すなわち、共有のキャッシュデータ値配列に変換結果がキャッシュ済みではない場合、ステップＳ６の処理へ移行する。ステップＳ６の処理において、タグ値に対する変換処理を実行し、変換結果を計算する。そして、ステップＳ６で得た変換結果を、共有のキャッシュデータ値配列に格納することを試みる。そして、ステップＳ７の処理において、共有のキャッシュデータ値配列のエントリがフル状態、すなわち、キャッシュデータ値配列がすべて使用済みあるか否かを判断する。
【００６２】
ステップＳ７の処理において、キャッシュデータ値配列すべてが使用済みである（ステップＳ７：ＹＥＳ）と判断すると、ステップＳ８の処理へ移行する。ステップＳ８の処理において、共有のキャッシュデータ値配列のうち、登録順が最下位、すなわち、使用頻度が最下位であるキャッシュデータ値配列を再利用する。これにより、再利用するエントリの以前の変換結果（キャッシュデータ値配列）は参照できなくなるため、ステップＳ９の処理において、このエントリを指している全スレッドのタグ値配列の対応エントリを未使用に変更する。
【００６３】
ステップＳ７、Ｓ８、及びＳ９の処理により、共有のキャッシュデータ値配列のうち、未使用を含む、最も使用頻度が少ないエントリが決定される。したがって、ステップＳ１０の処理において、この最下位のキャッシュデータ値配列に対して、タグ値と、ステップＳ６の処理において得られた変換結果とを対応付けてキャッシュに保存する。このとき、同じタグ値の変換結果を、スレッド毎に別々に登録せず、すべてのスレッドにおいて共有のキャッシュデータ値配列に登録することにより、メモリサイズを最小限に抑えることができる。
【００６４】
そして、タグ値に対するキャッシュデータ値配列のエントリを、スレッドｎのタグ値配列に紐付けることを試みる。ステップＳ１１の処理において、スレッドｎのタグ値配列のエントリがフル、すなわち、すべて使用済みであるか否かを判断する。ステップＳ１１の処理において、スレッドｎのタグ値配列がすべて使用済みである（ステップＳ１１：ＹＥＳ）場合、ステップＳ１２の処理へ移行する。ステップＳ１２の処理において、スレッドｎのタグ値配列のうち、登録順が最下位、すなわち、使用頻度が最下位のスレッドｎ専用のタグ値配列を再利用する。
【００６５】
ステップＳ１１、Ｓ１２の処理により、スレッドｎのタグ値配列のうち、未使用を含む、最も使用頻度が少ないエントリが決定される。したがって、ステップＳ１３の処理において、スレッドｎ専用のタグ値配列に、共有のキャッシュデータ値配列の番地を示す値（Index）を設定する。すなわち、使用頻度が最下位のエントリに、タグ値と、共有のキャッシュデータ値配列において当該タグ値に対応するキャッシュデータが格納されている番地を示す値（Index）とを対応付けてキャッシュに保存する。
【００６６】
ステップＳ１からＳ３の処理により、タグ値に対するキャッシュされたタグ値配列のエントリが決定される。ステップＳ１４の処理において、スレッドｎ専用のタグ値配列の、タグ値に対応するキャッシュデータが記憶されている番地を示す値（Index）が示すキャッシュデータ値配列を返す。すなわち、タグ値配列のエントリの、タグ値に対応するキャッシュデータが記憶されている番地を示す値（Index）が指す共有のキャッシュデータ値配列の変換結果（図６の右側の配列）が求める値である。
【００６７】
そして、図７に示した本実施形態に係る画像処理システムを構成する各機能ブロックの各動作は、コンピュータ上のプログラムに実行させることもできる。すなわち、画像処理システムのＣＰＵ３１が、ＲＯＭ３２に格納されたプログラムをロードする。そして、プログラムの各処理ステップが順次実行されることによって実現される。
【００６８】
なお、この形態は本発明の範囲を限定するものではなく、印刷制御部が描画スレッドを実行し、それらの各描画スレッドにおいてビットマップ画像を並列処理によって作成するマルチスレッド処理を実行する機能を備えても良い。また。通信制御部が描画スレッドを実行し、それらの各描画スレッドにおいてビットマップ画像を並列処理によって作成するマルチスレッド処理を実行する機能を備えても良い。
【００６９】
また、画像処理システムを構成する画像形成装置は複数台でも良く、どの画像形成装置に機能を備えさせても良い。なお、この実施形態で説明する画像処理システムの構成は一例であり、用途や目的に応じて様々なシステム構成例があることはいうまでもない。
【００７０】
本実施形態では、各スレッド専用のタグ値配列と、すべてのスレッドに共有のキャッシュデータ値配列との２種類の配列を用いてマルチスレッドのキャッシュ管理を効率良く管理している。各スレッド専用のタグ値配列は、タグ値と、当該タグ値に対応するキャッシュデータが格納されている番地を示す値とからなる。すべてのスレッドに共有のキャッシュデータ値配列は、タグ値と、当該タグ値に対応するキャッシュデータ値とからなる。
【００７１】
各スレッド専用のタグ値配列により、各スレッドに最適なキャッシュデータを提供でき、従来用いられてきた、すべてのスレッドに共有のキャッシュのみを使用する方法と比較して、高速な検索が可能となる。また、同じタグ値のデータを共通に格納するキャッシュデータ値配列により、メモリサイズを最小限に抑えると共に、タグ値から変換結果への計算処理が１回で済むようになる。
【００７２】
本発明によれば、マルチスレッド処理のキャッシュ管理において、必要となるメモリサイズの増加を最小限に抑えつつ、各スレッドのキャッシュ検索を効率化することが可能な情報処理システム、情報処理システムの制御方法、及びプログラムが得られる。
【００７３】
以上、これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではない。すなわち、他の実施形態、追加、変更、削除等、当業者が想到することができる範囲内で変更することができ、何れの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００７４】
１    画像処理システム
１１    情報処理部
１２    メモリ
１３    記憶部
１４    通信制御部
１５    印刷制御部
１６    画像形成制御部
２１−１、２１−２、…、２１−Ｎ    描画スレッド１、描画スレッド２、…、描画スレッドＮ
２２    キャッシュ
３１    ＣＰＵ
３２    ＲＯＭ
３３    ＲＡＭ
３４    ＨＤＤ
３５    表示装置
３６    入力装置
３７    通信インタフェース部
３８    印刷装置
３９    バス
【先行技術文献】
【特許文献】
【００７５】
【特許文献１】特開２０１１−２３０４７０号公報
【図１】
2017033446.tif 000003
【図２】
2017033446.tif 000004
【図３】
2017033446.tif 000005
【図４】
2017033446.tif 000006
【図５】
2017033446.tif 000007
【図６】
2017033446.tif 000008
【図７】
2017033446.tif 000009