JP6701650B2 - 情報処理装置および画像形成装置 - Google Patents

情報処理装置および画像形成装置 Download PDF

Info

Publication number
JP6701650B2
JP6701650B2 JP2015180603A JP2015180603A JP6701650B2 JP 6701650 B2 JP6701650 B2 JP 6701650B2 JP 2015180603 A JP2015180603 A JP 2015180603A JP 2015180603 A JP2015180603 A JP 2015180603A JP 6701650 B2 JP6701650 B2 JP 6701650B2
Authority
JP
Japan
Prior art keywords
core
data
partial data
cache
request
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.)
Active
Application number
JP2015180603A
Other languages
English (en)
Other versions
JP2017058738A (ja
Inventor
俊治 綱島
俊治 綱島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2015180603A priority Critical patent/JP6701650B2/ja
Publication of JP2017058738A publication Critical patent/JP2017058738A/ja
Application granted granted Critical
Publication of JP6701650B2 publication Critical patent/JP6701650B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、情報処理装置および画像形成装置に関する。
画像処理装置等の情報処理装置において、外部メモリから読み出したデータを用いた処理が行われる。しかし、メモリアクセス中はコアの処理はストール(待機)するため、外部メモリへのアクセスが頻繁になると処理の高速化を阻害する要因となる。例えば特許文献1には、外部メモリのデータをプロセッサ内部のキャッシュメモリにあらかじめコピー(プリロード)しておき、プロセッサのコアはキャッシュメモリからデータを読み出して処理を行う技術が記載されている。
特開2011−223145号公報
近年プロセッサのコアはマルチコア化している。マルチコアは並列的に処理を行うことで高速化を図るものであるが、外部メモリに記憶されているデータをプリロードする時間を短縮することはできなかった。
本発明は、複数コアを有する情報処理装置において、外部メモリに記憶されているデータをプリロードする時間を短縮する技術を提供する。
本発明は、第1コアと、前記第1コアと並列処理を行う第2コアと、前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、それぞれにアドレスが対応付けられている複数個のエントリ値を含むデータを記憶した外部メモリとを有し、前記第1コアは、前記データの一部であって1個又は複数個の前記エントリ値からなる第1部分データのプリロードを要求する第1要求手段を有し、前記第2コアは、前記データのうち前記第1部分データと異なる一部であって1個又は複数個の前記エントリ値からなる第2部分データのプリロードを要求する第2要求手段を有し、前記キャッシュメモリは、前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、前記第1コアおよび前記第2コアは、それぞれ、前記キャッシュメモリに記憶されている前記第1部分データおよび前記第2部分データの少なくとも一部を用いた処理を行う情報処理装置を提供する。
この情報処理装置は、前記第1コアおよび前記第2コアを含むN個のコアと、前記データを、各々前記アドレスが連続した1個又は複数個の前記エントリ値からなる部分であるN個の部分データに等分し、各部分データを前記N個のコアのいずれかに割り当てる割り当て手段とを有してもよい。
この情報処理装置は、前記第1コアおよび前記第2コアを含むN個のコアと、前記データを、各々前記アドレスが連続した1個又は複数個の前記エントリ値からなる部分を複数含むN個の部分データに等分し、各部分データを前記N個のコアのいずれかに割り当てる割り当て手段とを有し、前記部分データに含まれる一の部分と他の部分とはアドレスが連続していない構成であってもよい。
前記外部メモリはDRAMを含み、前記アドレスが連続した部分のデータサイズは、前記読み出し手段が前記DRAMからデータを読み出す際の1回当たりのデータ読み出し量以下であってもよい。
前記第1コアおよび前記第2コアにおける処理は、画素に対応するインデックスを画素値に変換する処理であり、前記データは、前記インデックスを前記画素値に変換するためのテーブルであってもよい。
また、本発明は、第1コアと、前記第1コアと並列処理を行う第2コアと、前記第1コア専用の第1キャッシュメモリと、前記第2コア専用の第2キャッシュメモリと、前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、それぞれにアドレスが対応付けられている複数個のエントリ値を含むデータを記憶した外部メモリとを有し、前記第1コアは、前記データの一部であって1個又は複数個の前記エントリ値からなる第1部分データのプリロードを要求する第1要求手段を有し、前記第2コアは、前記データのうち前記第1部分データと異なる一部であって1個又は複数個の前記エントリ値からなる第2部分データのプリロードを要求する第2要求手段を有し、前記キャッシュメモリは、前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、前記第1キャッシュメモリは、前記第1要求手段からの要求に応じて、前記第1部分データを前記キャッシュメモリから取得する第1取得手段を有し、前記第2キャッシュメモリは、前記第2要求手段からの要求に応じて、前記第2部分データを前記キャッシュメモリから取得する第2取得手段を有し、前記第1コアは、前記第1キャッシュメモリに記憶されている前記第1部分データを用いた処理を行い、前記第2コアは、前記第2キャッシュメモリに記憶されている前記第2部分データを用いた処理を行う情報処理装置を提供する。
さらに、本発明は、上記いずれかの情報処理装置と、前記第1コアおよび前記第2コアで処理された結果に応じて画像を形成する画像形成手段とを有する画像形成装置を提供する。
また、本発明は、第1コアと、前記第1コアと並列処理を行う第2コアと、前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、データを記憶した外部メモリと、を有し、前記第1コアは、前記データの一部である第1部分データのプリロードを要求する第1要求手段を有し、前記第2コアは、前記データのうち前記第1部分データと異なる一部である第2部分データのプリロードを要求する第2要求手段を有し、前記第1コアおよび前記第2コアにおける処理は、画素に対応するインデックスを画素値に変換する処理であり、前記データは、前記インデックスを前記画素値に変換するためのテーブルであり、前記キャッシュメモリは、前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、前記第1コアおよび前記第2コアは、それぞれ、前記キャッシュメモリに記憶されている前記第1部分データおよび前記第2部分データの少なくとも一部を用いた処理を行う情報処理装置を提供する。
請求項1に係る情報処理装置によれば、外部メモリに記憶されているデータ全体を第1コアおよび第2コアそれぞれがプリロードする場合と比較して、外部メモリに記憶されているデータをプリロードする時間を短縮することができる。
請求項2に係る情報処理装置によれば、外部メモリに記憶されているデータ全体を第1コアおよび第2コアそれぞれがプリロードする場合と比較して、各コアからのデータ要求の回数を1/Nに低減することができる。
請求項3に係る情報処理装置によれば、データを単純にN等分する場合と比較して、外部メモリからのデータの読み出し時間を短縮することができる。
請求項4に係る情報処理装置によれば、アドレスが連続した部分のデータサイズが細切れである場合と比較して、外部メモリへのアクセス回数を低減することができる。
請求項5に係る情報処理装置によれば、インデックスを画素値に変換する画像処理に用いるテーブルをプリロードする時間を短縮することができる。
請求項6に係る情報処理装置によれば、外部メモリに記憶されているデータ全体を第1コアおよび第2コアそれぞれがプリロードする場合と比較して、外部メモリに記憶されているデータをプリロードする時間を短縮することができる。
請求項7に係る画像形成装置によれば、外部メモリに記憶されているデータ全体を第1コアおよび第2コアそれぞれがプリロードする場合と比較して、外部メモリに記憶されているデータをプリロードする時間を短縮することができる。
関連技術に係るCPU90のキャッシュメモリ構成を例示する図 単一のコアによるプリロード処理を例示するシーケンスチャート 複数のコアによるプリロード処理を例示するシーケンスチャート 一実施形態に係る画像形成装置1の構成を例示する図 データのプリロードに関する画像形成装置1の機能構成を例示する図 画像形成装置1における画像処理を例示するフローチャート LUTの分割の概要を示す模式図 LUTの分割の具体例を示す図 LUTの分割の別の具体例を示す図 画像形成装置1におけるプリロード処理を例示するシーケンスチャート 変形例に係るLUTの分割の概要を示す模式図
1.概要
まず一例として以下の画像処理を考える。入力画像の画素値からインデックス値が算出される。ルックアップテーブルから、インデックス値で指示されるエントリ値が取得される。取得されたエントリ値から出力画素値が算出される。このような画像処理を高速化する方法の一つに、いわゆるマルチコアのCPUを用い、異なる領域(例えば奇数行と偶数行)の画素をそれぞれ別のコアで並列処理させる方法がある。
具体的に、各コアは、(1)入力画素の読み込み、(2)インデックス値の算出、(3)ルックアップテーブルからエントリ値の読み込み、(4)出力画素値の算出、および(5)出力画素値の記憶、という処理を行う。このうち処理(1)、(3)、および(5)は外部メモリへのアクセスを伴う。外部メモリとは、CPUと異なるチップに形成されたメモリをいい、例えばコンピュータの主記憶装置(メインメモリ)がこれに該当する。外部メモリにアクセスしているときはコアの命令実行はストール(待機状態となる)する。外部メモリへのアクセスは相対的に遅いため、外部メモリへのアクセスが頻繁に発生すると、それは高速化を阻む要因となる。
この問題に対処するため、外部メモリに記憶されているルックアップテーブルを、画像処理に先立ってキャッシュメモリにコピーすなわちプリロードする技術が知られている。LUT(Look Up Table)をキャッシュメモリにプリロードすることによって処理(3)における外部メモリへのアクセスをなくすことができる。
図1は、関連技術に係るCPU90のキャッシュメモリ構成を例示する図である。CPU90は、複数のコア、この例ではコア901〜904の4つのコアを有する。ここで、プロセッサの「コア」とは、プロセッサのうち命令の実行および演算を行う部分をいう。CPU90は、さらに、キャッシュメモリ911〜914およびキャッシュメモリ921を有する。キャッシュメモリ911〜914は一次キャッシュ(いわゆるL1キャッシュ)であり、それぞれ、コア901〜904に専用のものである。キャッシュメモリ921は二次キャッシュ(いわゆるL2キャッシュ)である。キャッシュメモリ921はコア901〜904で共用される。なお一般にはL1キャッシュまで含めて「コア」という場合があるが、ここでは「コア」にL1キャッシュは含まれない。
一次キャッシュとはコアから最優先にアクセスされるキャッシュメモリをいい、二次キャッシュとは一次キャッシュの次の優先順位でアクセスされるキャッシュメモリをいう。一次キャッシュは、二次キャッシュよりも高速でかつ容量が小さい。メインメモリ(外部メモリ)へのアクセス要求が発生すると、コアはまずアクセス先のアドレスのデータが一次キャッシュに格納されているか調べる。アクセス先のアドレスのデータ(以下単に「アクセス先のデータ」という)が一次キャッシュに格納されていた場合、コアは一次キャッシュからデータを読み出す。アクセス先のデータがキャッシュメモリに格納されていることを「ヒット」といい、ヒットが発生する割合を「ヒット率」という。アクセス先のデータが一次キャッシュに格納されていなかった場合、コアは、アクセス先のデータが二次キャッシュに格納されていないか調べる。アクセス先のデータが二次キャッシュに格納されていた場合、コアは二次キャッシュからデータを読み出す。アクセス先のデータが二次キャッシュに格納されていなかった場合、コアは外部メモリである主記憶装置30からデータを読み出す。
コアは、メモリ空間上のアドレスからデータを読み出す際、まずそのコア専用のL1キャッシュに対して読み出し要求を行う。L1キャッシュは、指定されたアドレスのデータがL1キャッシュ内に記憶されているか確認する。指定されたアドレスのデータがL1キャッシュ内に記憶されている場合、L1キャッシュは、指定されたアドレスのデータを要求元のコアに出力する。指定されたアドレスのデータがL1キャッシュ内に記憶されていない場合、L1キャッシュは、L2キャッシュに対して読み出し要求を行う。L2キャッシュは、指定されたアドレスのデータがL2キャッシュ内に記憶されているか確認する。指定されたアドレスのデータがL2キャッシュ内に記憶されている場合、L2キャッシュは、指定されたアドレスのデータを要求元のL1キャッシュに出力する。指定されたアドレスのデータがL2キャッシュ内に記憶されていない場合、L2キャッシュは、主記憶装置30に対して読み出し要求を行う。データの読み出し要求を受けると、主記憶装置30は、要求されたデータをL2キャッシュに出力する。L2キャッシュは、主記憶装置30から読み出されたデータを自身で記憶し、さらに、そのデータの要求元であるL1キャッシュに出力する。
次に、図1のCPU90を用いたLUTのプリロードについて説明する。マルチコアによるLUTのプリロードの説明に先立ち、まずは単一のコアによるLUTのプリロードについて説明する。ここでは、LUTのデータサイズが、L1キャッシュ(1つ)の記憶容量よりは大きく、かつL2キャッシュの記憶容量よりは小さい例を説明する。
図2は、単一のコア(コア#1。例えば図1のコア901)によるLUTの関連技術に係るプリロード処理を例示するシーケンスチャートである。以下においては、LUTのデータのうちアドレスkのデータ(エントリ値)をP[k]と表す。また、コア#1に対応するL1キャッシュをL1キャッシュ#1(図面においてはL1#1)と表す。この例で、図2のフローの開始前においては、L1キャッシュおよびL2キャッシュにはLUTのデータは記憶されていない。
まず、コア#1は、L1キャッシュ#1に対し、P[0]の読み出しを要求する(ステップS801)。L1キャッシュ#1は、L2キャッシュに対し、P[0]の読み出しを要求する(ステップS802)。L2キャッシュは、外部メモリ(主記憶装置30)に対してP[0]の読み出しを要求する(ステップS803)。外部メモリは、記憶しているデータのうちP[0]をL2キャッシュに出力する(ステップS804)。L2キャッシュは、P[0]をL1キャッシュ#1に出力する(ステップS805)。L1キャッシュ#1は、P[0]をコア#1に出力する(ステップS806)。
次に、コア#1は、L1キャッシュ#1に対し、P[1]の読み出しを要求する(ステップS807)。L1キャッシュ#1は、L2キャッシュに対し、P[1]の読み出しを要求する(ステップS808)。L2キャッシュは、外部メモリに対してP[1]の読み出しを要求する(ステップS809)。外部メモリは、記憶しているデータのうちP[1]をL2キャッシュに出力する(ステップS810)。L2キャッシュは、P[1]をL1キャッシュ#1に出力する(ステップS811)。L1キャッシュ#1は、P[1]をコア#1に出力する(ステップS812)。
P[2]以降のデータについても同様に処理される。このように、LUTのデータを順次プリロードすることにより、L2キャッシュにLUTのデータが記憶される。
図3は、複数のコア(コア#1およびコア#2。例えば図1のコア901およびコア902)によるLUTの関連技術に係るプリロード処理を例示するシーケンスチャートである。この例では、複数のコアの各々において、それぞれ並列的にプリロードが行われる。コア#2に対応するL1キャッシュをL1キャッシュ#2(図面においてはL1#2)と表す。この例で、図3のフローの開始前においては、L1キャッシュおよびL2キャッシュにはLUTのデータは記憶されていない。
まず、コア#1は、L1キャッシュ#1に対し、P[0]の読み出しを要求する(ステップS901)。L1キャッシュ#1は、L2キャッシュに対し、P[0]の読み出しを要求する(ステップS902)。L2キャッシュは、外部メモリ(主記憶装置30)に対してP[0]の読み出しを要求する(ステップS903)。外部メモリは、記憶しているデータのうちP[0]をL2キャッシュに出力する(ステップS906)。
コア#2は、L1キャッシュ#2に対し、P[0]の読み出しを要求する(ステップS904)。L1キャッシュ#2は、L2キャッシュに対し、P[0]の読み出しを要求する(ステップS905)。コア#2によるステップS904〜S905の処理は、コア#1によるステップS901〜S902の処理と並列で行われるが、ここでは便宜上、ステップS904〜S905の処理がステップS901〜S902の処理の後で行われるように記載している。
L2キャッシュは、P[0]をL1キャッシュ#1に出力する(ステップS907)。L1キャッシュ#1は、P[0]をコア#1に出力する(ステップS908)。さらに、L2キャッシュは、P[0]をL1キャッシュ#2に出力する(ステップS909)。L1キャッシュ#2は、P[0]をコア#2に出力する(ステップS910)。以上で、P[0]のプリロードが完了する。
次に、コア#1は、L1キャッシュ#1に対し、P[1]の読み出しを要求する(ステップS911)。L1キャッシュ#1は、L2キャッシュに対し、P[1]の読み出しを要求する(ステップS912)。L2キャッシュは、外部メモリ(主記憶装置30)に対してP[1]の読み出しを要求する(ステップS913)。外部メモリは、記憶しているデータのうちP[1]をL2キャッシュに出力する(ステップS916)。
コア#2は、L1キャッシュ#2に対し、P[1]の読み出しを要求する(ステップS914)。L1キャッシュ#2は、L2キャッシュに対し、P[1]の読み出しを要求する(ステップS915)。コア#2によるステップS914〜S915の処理は、コア#1によるステップS911〜S912の処理と並列で行われるが、ここでは便宜上、ステップS914〜S915の処理がステップS911〜S912の処理の後で行われるように記載している。
L2キャッシュは、P[1]をL1キャッシュ#1に出力する(ステップS917)。L1キャッシュ#1は、P[1]をコア#1に出力する(ステップS918)。さらに、L2キャッシュは、P[1]をL1キャッシュ#2に出力する(ステップS919)。L1キャッシュ#2は、P[1]をコア#2に出力する(ステップS920)。以上で、P[1]のプリロードが完了する。
図3の処理を図2の処理と対比すると、マルチコアを使用しているにもかかわらず、P[0]およびP[1]をプリロードするのに要する時間は図2の処理と変わらない。これは、図3の処理ではデータのプリロードに関しマルチコアの性能を発揮できていないことを意味する。本実施形態は、プリロードに要する時間を短縮する技術を提供する。
2.構成
図4は、一実施形態に係る画像形成装置1の構成を例示する図である。画像形成装置1は、画像を形成する機能を有する情報処理装置の一例であり、例えばいわゆる複合機である。画像形成装置1は、CPU10、メモリコントローラー20、主記憶装置(メインメモリ)30、IOコントローラー40、補助記憶装置41、画像読み取りユニット42、画像形成ユニット43、および通信ユニット44を有する。
CPU10は、画像形成装置1の各部を制御する制御装置であり、各々異なる処理を実行するN個のコア(Nは2以上の自然数)を含む処理手段の一例である。この例ではN=4である。CPU10は、コア101〜104、キャッシュメモリ111〜114、およびキャッシュメモリ121〜122を有する。キャッシュメモリ111〜114は一次キャッシュ(L1キャッシュ)であり、それぞれコア101〜104に専用のものである。キャッシュメモリ121〜122は二次キャッシュ(L2キャッシュ)である。キャッシュメモリ121はコア101および102で共用され、キャッシュメモリ122はコア103および104で共用される。
メモリコントローラー20は、主記憶装置30に対するデータの読み書きを制御する。主記憶装置30は主記憶装置であり、例えばDRAM(Dynamic Random Access Memory)を含む。主記憶装置30は、CPU10がプログラムを実行する際のワークエリアとして機能し、種々のデータを記憶する記憶手段の一例である。
IOコントローラー40は、周辺装置をCPU10に接続して制御する装置である。この例で、IOコントローラー40には、補助記憶装置41、画像読み取りユニット42、画像形成ユニット43、および通信ユニット44が接続されている。補助記憶装置41はデータおよびプログラムを記憶する不揮発性の記憶装置であり、例えばHDD(Hard Disk Drive)を含む。画像読み取りユニット42は、原稿を光学的に読み取る装置であり、例えばいわゆるスキャナーを含む。画像形成ユニット43は、媒体(例えば紙)に画像を形成する装置であり、例えば電子写真技術またはインクジェット技術により画像形成を行う。通信ユニット44は、他の機器と通信を行うインターフェースである。
図5は、外部メモリからのデータのプリロードに関する画像形成装置1の機能構成を例示する図である。補助記憶装置41は、画像形成装置1のOS(Operating System)を機能させるためのプログラム(以下「OSプログラム」という)を記憶している。CPU10がOSプログラムを実行することにより、画像形成装置1にOS50が実装される。
OS50は、割り当て手段51を有する。割り当て手段51は、プリロードの対象となるデータ(この例ではLUT)を、N個のデータに分割する。分割されたデータを「部分データ」という。さらに、割り当て手段51は、各部分データをN個のコアのいずれかに割り当てる。コア101〜コア104は、それぞれ要求手段を有する。例えばコア101の要求手段(第1要求手段の一例)は、N個の部分データのうち1つ(第1部分データの一例)の読み出しをキャッシュメモリに要求する。また、コア102の要求手段(第2要求手段の一例)は、N個の部分データのうち別の1つ(第2部分データの一例)の読み出しをキャッシュメモリに要求する。なお図5ではL1キャッシュは図示を省略している。
キャッシュメモリ121は読み出し手段1211を有する。読み出し手段1211は、コアからの要求に応じて主記憶装置30からデータを読み出す。読み出し手段1211により、キャッシュメモリ121には、コア101〜コア104により要求された部分データが記憶される。なお、コア101〜コア104の要求手段は、OSの機能の一部である。すなわち、OSプログラムを実行している各コアが、要求手段の一例である。また、キャッシュメモリ121はデータの読み出しを制御するコントローラー(図示略)を有している。このコントローラーが読み出し手段の一例である。
3.動作
図6は、画像形成装置1における画像処理を例示するフローチャートである。図6のフローは、例えば、アプリケーションプログラムによりLUTのプリロードが指示されたことを契機として開始される。以下の説明においてOS50等のソフトウェアを処理の主体として記載することがあるが、これは、そのソフトウェアを実行しているCPU10が他のハードウェア資源と共働して処理を実行することを意味する。
ステップS100において、OS50は、複数のスレッドを生成する。ここで、「スレッド」とは、プログラムにおける処理のことをいう。これらのスレッドは、LUTを分割した部分データを複数のコアに割り当てる処理、各コアに部分データの読み出しを要求させる処理、入力画像を分割し、分割された画像を各コアに割り当てる処理、および各コアに、割り当てられた部分画像のインデックス値を出力画素値に変換させる処理を含む。
図7は、LUTの分割の概要を示す模式図である。図4の例ではN=4なので、LUTは4つの部分データに分割される。この例では、LUTは4等分される。すなわち、4つの部分データはデータサイズが等しく、かつ他の部分データと重複していない。
図8は、LUTの分割の具体例を示す図である。この例で、LUTは、P[0]〜P[K−1]のk個のエントリ値を含んでいる。LUTは、それぞれアドレスが連続した部分のみから構成される4つの部分データ(以下「部分データ#1〜#4」という)に分割される。例えば、部分データ#1はP[0]〜P[K/4−1]のK/4個のエントリ値を含んでおり、部分データ#2はP[K/4]〜P[2K/4−1]のK/4個のエントリ値を含んでおり、部分データ#3はP[2K/4]〜P[3K/4−1]のK/4個のエントリ値を含んでおり、部分データ#4はP[3K/4]〜P[K−1]のK/4個のエントリ値を含んでいる。
図9は、LUTの分割の他の具体例を示す図である。この例で、LUTは、各々アドレスが不連続な部分を含む4つの部分データに分割される。例えば、部分データ#1は、P[0]〜P[15]、P[64]〜P[79]、…、P[K−64]〜P[K−49]の合計K/4個のエントリ値を含んでいる。部分データ#2は、P[16]〜P[31]、P[80]〜P[95]、…、P[K−48]〜P[K−33]の合計K/4個のエントリ値を含んでいる。部分データ#3は、P[32]〜P[47]、P[96]〜P[111]、…、P[K−32]〜P[K−17]の合計K/4個のエントリ値を含んでいる。部分データ#4は、P[48]〜P[63]、P[112]〜P[127]、…、P[K−16]〜P[K−1]の合計K/4個のエントリ値を含んでいる。
この例で、各部分データは、アドレスが連続した16個のエントリ値のセットを複数、含んでいる。エントリ値16個分のデータサイズは、キャッシュラインサイズに等しい。キャッシュラインサイズとは、L2キャッシュと外部メモリとの間の1回あたりの最大データ転送量(データ読み出し量)をいう。例えばDRAMにおいては、メモリセルが「バンク」と呼ばれるブロックに区分されており、異なるバンクに属するメモリセルにアクセスするには、アクセスするバンクを切り替える処理が必要である。外部メモリがDRAMを含んでいる場合において図8で例示した連続するK/4個のエントリ値が複数のバンクにまたがって記憶されているときは、外部メモリ(DRAM)は、複数のコアから並列的に発生するアクセスに対して、バンクを切り替えながらエントリ値を読み出さなければならない。
いま、外部メモリを構成するDRAMが4つのバンクを含んでいる例を考える。図8の例では、まず、コア101からの要求によりP[0]〜P[15]が、コア102からの要求によりP[K/4]〜P[K/4+15]が、コア103からの要求によりP[2K/4]〜P[2K/4+15]が、コア104からの要求によりP[3K/4]〜P[3K/4+15]が、それぞれ読み出される。しかし、これらのエントリ値はそれぞれ異なるバンクに記憶されているので、DRAMは並列的にバンクを切り替えながらデータを読み出さなければならない。そのた、バンク切り替えの分だけデータ読み出しに時間がかかる。
これに対し図9の例では、まず、コア101からの要求によりP[0]〜P[15]が、コア102からの要求によりP[16]〜P[31]が、コア103からの要求によりP[32]〜P[47]が、コア104からの要求によりP[48]〜P[63]が、それぞれ読み出される。これらのデータは同一のバンクに記憶されているので、DRAMはバンクを切り替えることなく高速にデータを読み出すことができる。
再び図6を参照する。ステップS101、S111、S121、およびS141において、コア101〜コア104は、それぞれ自身に割り当てられた部分データをプリロードする。すなわち、コア101は部分データ#1を、コア102は部分データ#2を、コア103は部分データ#3を、コア104は部分データ#4を、それぞれプリロードする。各コアにおけるプリロードは並列的に行われる。その結果、L2キャッシュにはLUTがコピーされる。
以下、コア101〜コア104において処理が並列的に行われるが、ここではコア101の処理だけ説明する。コア102〜104の処理(ステップS111〜S116,S121〜S126,S141〜S146)については、コア101の処理と同様なので説明を省略する。ステップS102において、コア101は、対象画素のデータを外部メモリから読み出す。ステップS103において、コア101は、対象画素のデータから、インデックス値を算出する。ステップS104において、コア101は、L2キャッシュに記憶されているLUTを用いて、算出されたインデックス値に対応するエントリ値を取得する。ステップS105において、コア101は、エントリ値から出力画素値を算出する。ステップS106において、コア101は、出力画素値を外部メモリに書き込む。
ステップS107において、OS50は、全てのスレッドが完了するまで待機する。コア101〜コア104に割り当てられたスレッドが全て完了した場合、OS50は、図6のフローを終了する。
図10は、画像形成装置1におけるプリロード処理を例示するシーケンスチャートである。ここでは説明を簡単にするため、コア#1およびコア#2(例えばコア101およびコア102)の2つのコアの処理のみ図示している。
まず、コア#1は、L1キャッシュ#1に対し、P[0]の読み出しを要求する(ステップS201)。L1キャッシュ#1は、L2キャッシュに対し、P[0]の読み出しを要求する(ステップS202)。L2キャッシュは、外部メモリ(主記憶装置30)に対してP[0]の読み出しを要求する(ステップS203)。
ステップS201〜S203の処理と並列的に以下の処理が行われる。コア#2は、L1キャッシュ#2に対し、P[1]の読み出しを要求する(ステップS204)。L1キャッシュ#2は、L2キャッシュに対し、P[1]の読み出しを要求する(ステップS205)。L2キャッシュは、外部メモリ(主記憶装置30)に対してP[1]の読み出しを要求する(ステップS206)。
外部メモリは、コア#1からの要求に応じて、記憶しているデータのうちP[0]をL2キャッシュに出力する(ステップS207)。L2キャッシュは、P[0]をL1キャッシュ#1に出力する(ステップS208)。L1キャッシュ#1は、P[0]をコア#1に出力する(ステップS209)。
ステップS207〜S209の処理と並列的に以下の処理が行われる。外部メモリは、コア#2からの要求に応じて、記憶しているデータのうちP[1]をL2キャッシュに出力する(ステップS210)。L2キャッシュは、P[1]をL1キャッシュ#に出力する(ステップS211)。L1キャッシュ#は、P[1]をコア#に出力する(ステップS212)。以上で、P[0]およびP[1]のプリロードが完了する。
図3のフローと対比すると、図10のフローではP[0]およびP[1]のプリロードが完了するまでの時間が短縮されていることがわかる。
4.変形例
本発明は上述の実施形態に限定されず、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下の変形例のうち2つ以上のものが組み合わせて用いられてもよい。
4−1.変形例1
図11は、変形例1に係るLUTの分割方法の概要を示す図である。LUTの分割方法は実施形態で説明した例に限定されない。この例では、4つの分割データのデータサイズは等しくなく、また互いに一部が重複している。さらに、4つの分割データを合わせても主記憶装置30に記憶されているLUTは完全に再現されず、一部のエントリ値が欠落している。これは以下の場合に有効である。例えば、アプリケーションプログラム等のソフトウェアコンポーネントが、LUTのうち、対象画像を画像処理する際に用いられる部分を特定する。OS50は、こうして特定された部分をカバーするようにLUTを分割する。
4−2.変形例2
変形例1においてさらに、アプリケーションプログラム等のソフトウェアコンポーネントは、LUTのうち画像処理で用いられる部分が、コア毎に特定されてもよい。この場合、OS50は、コア毎に用いられる部分を含むようにLUTを分割する。図11の例で、部分データ#1は対象画像のうちコア101が担当する領域の画像処理に用いられるエントリ値をカバーしている。同様に、部分データ#2は対象画像のうちコア102が担当する領域の、部分データ#3は対象画像のうちコア103が担当する領域の、部分データ#4は対象画像のうちコア104が担当する領域の、画像処理に用いられるエントリ値をカバーしている。各部分データのサイズがL1キャッシュの容量よりも小さければ、各コアは必要なエントリ値をL1キャッシュから直に読み取ることができ、処理がより高速化される。
4−3.変形例3
主記憶装置30に記憶されるデータおよびこれを用いた処理は実施形態で例示したものに限定されない。主記憶装置30に記憶されるデータは、例えば各コアで実行されるコード(命令)であってもよい。この場合、コアは、指定されるアドレスに記憶されているコードを読み出し、読み出したコードを実行する。このコードキャッシュメモリにプリロードされる。
4−4.他の変形例
CPU10の構成は図2に例示したものに限定されない。コアの数やキャッシュメモリの階層構造はあくまで例示である。CPU10は、少なくとも、第2キャッシュメモリを共用する2つのコアを有して入ればよい。CPU10は、L2キャッシュの下層にL3キャッシュを有していてもよい。
また、CPU10は、物理的に1つのチップに複数のコアおよびキャッシュメモリを搭載したものに限定されない。複数のCPUチップで1つのキャッシュメモリを共用する情報処理装置に対し、本発明が適用されてもよい。
さらに、実施形態における「複数のコア」は物理的に異なる複数のコアに限定されない。物理的に1つのコアが、時分割で論理的に(擬似的に)複数のコアとして用いられてもよい。
また、CPU10は、物理的に1つのチップに複数のコアおよびキャッシュメモリを搭載したものに限定されない。複数のCPUチップで1つのキャッシュメモリを共用する情報処理装置に対し、本発明が適用されてもよい。
本発明に係る情報処理装置は、図2に例示した画像形成装置1に限定されない。CPU10を用いて複数の処理を並列実行するものであれば、情報処理装置はどのような装置であってもよい。例えば、情報処理装置は、パーソナルコンピュータ、スマートフォン、またはタブレット端末であってもよい。
1…画像形成装置、10…CPU、20…メモリコントローラー、30…主記憶装置、40…IOコントローラー、41…補助記憶装置、42…画像読み取りユニット、43…画像形成ユニット、44…通信ユニット、50…OS、51…割り当て手段、90…CPU、101〜104…コア、111〜114…キャッシュメモリ(L1)、121…キャッシュメモリ(L2)、901〜904…コア、911〜914…キャッシュメモリ(L1)、921…キャッシュメモリ(L2)

Claims (8)

  1. 第1コアと、
    前記第1コアと並列処理を行う第2コアと、
    前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、
    それぞれにアドレスが対応付けられている複数個のエントリ値を含むデータを記憶した外部メモリと
    を有し、
    前記第1コアは、
    前記データの一部であって1個又は複数個の前記エントリ値からなる第1部分データのプリロードを要求する第1要求手段を有し、
    前記第2コアは、
    前記データのうち前記第1部分データと異なる一部であって1個又は複数個の前記エントリ値からなる第2部分データのプリロードを要求する第2要求手段を有し、
    前記キャッシュメモリは、
    前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、
    前記第1コアおよび前記第2コアは、それぞれ、前記キャッシュメモリに記憶されている前記第1部分データおよび前記第2部分データの少なくとも一部を用いた処理を行う
    情報処理装置。
  2. 前記第1コアおよび前記第2コアを含むN個のコアと、
    前記データを、各々前記アドレスが連続した1個又は複数個の前記エントリ値からなる部分であるN個の部分データに等分し、各部分データを前記N個のコアのいずれかに割り当てる割り当て手段と
    を有する請求項1に記載の情報処理装置。
  3. 前記第1コアおよび前記第2コアを含むN個のコアと、
    前記データを、各々前記アドレスが連続した1個又は複数個の前記エントリ値からなる部分を複数含むN個の部分データに等分し、各部分データを前記N個のコアのいずれかに割り当てる割り当て手段と
    を有し、
    前記部分データに含まれる一の部分と他の部分とはアドレスが連続していない
    請求項1に記載の情報処理装置。
  4. 前記外部メモリはDRAMを含み、
    前記アドレスが連続した部分のデータサイズは、前記読み出し手段が前記DRAMからデータを読み出す際の1回当たりのデータ読み出し量以下である
    ことを特徴とする請求項2または3に記載の情報処理装置。
  5. 前記第1コアおよび前記第2コアにおける処理は、画素に対応するインデックスを画素値に変換する処理であり、
    前記データは、前記インデックスを前記画素値に変換するためのテーブルである
    ことを特徴とする請求項1ないし4のいずれか一項に記載の情報処理装置。
  6. 第1コアと、
    前記第1コアと並列処理を行う第2コアと、
    前記第1コア専用の第1キャッシュメモリと、
    前記第2コア専用の第2キャッシュメモリと、
    前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、
    それぞれにアドレスが対応付けられている複数個のエントリ値を含むデータを記憶した外部メモリと
    を有し、
    前記第1コアは、
    前記データの一部であって1個又は複数個の前記エントリ値からなる第1部分データのプリロードを要求する第1要求手段を有し、
    前記第2コアは、
    前記データのうち前記第1部分データと異なる一部であって1個又は複数個の前記エントリ値からなる第2部分データのプリロードを要求する第2要求手段を有し、
    前記キャッシュメモリは、
    前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、
    前記第1キャッシュメモリは、
    前記第1要求手段からの要求に応じて、前記第1部分データを前記キャッシュメモリから取得する第1取得手段を有し、
    前記第2キャッシュメモリは、
    前記第2要求手段からの要求に応じて、前記第2部分データを前記キャッシュメモリから取得する第2取得手段を有し、
    前記第1コアは、前記第1キャッシュメモリに記憶されている前記第1部分データを用いた処理を行い、
    前記第2コアは、前記第2キャッシュメモリに記憶されている前記第2部分データを用いた処理を行う
    情報処理装置。
  7. 請求項1ないし6のいずれか一項に記載の情報処理装置と、
    前記第1コアおよび前記第2コアで処理された結果に応じて画像を形成する画像形成手段と
    を有する画像形成装置。
  8. 第1コアと、
    前記第1コアと並列処理を行う第2コアと、
    前記第1コアおよび前記第2コアで共用されるキャッシュメモリと、
    データを記憶した外部メモリと、
    を有し、
    前記第1コアは、
    前記データの一部である第1部分データのプリロードを要求する第1要求手段を有し、
    前記第2コアは、
    前記データのうち前記第1部分データと異なる一部である第2部分データのプリロードを要求する第2要求手段を有し、
    前記第1コアおよび前記第2コアにおける処理は、画素に対応するインデックスを画素値に変換する処理であり、
    前記データは、前記インデックスを前記画素値に変換するためのテーブルであり、
    前記キャッシュメモリは、
    前記第1要求手段からの要求および前記第2要求手段からの要求に応じて、前記第1部分データおよび前記第2部分データを前記外部メモリから読み出す読み出し手段を有し、
    前記第1コアおよび前記第2コアは、それぞれ、前記キャッシュメモリに記憶されている前記第1部分データおよび前記第2部分データの少なくとも一部を用いた処理を行う
    情報処理装置。
JP2015180603A 2015-09-14 2015-09-14 情報処理装置および画像形成装置 Active JP6701650B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015180603A JP6701650B2 (ja) 2015-09-14 2015-09-14 情報処理装置および画像形成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015180603A JP6701650B2 (ja) 2015-09-14 2015-09-14 情報処理装置および画像形成装置

Publications (2)

Publication Number Publication Date
JP2017058738A JP2017058738A (ja) 2017-03-23
JP6701650B2 true JP6701650B2 (ja) 2020-05-27

Family

ID=58391592

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015180603A Active JP6701650B2 (ja) 2015-09-14 2015-09-14 情報処理装置および画像形成装置

Country Status (1)

Country Link
JP (1) JP6701650B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7000748B2 (ja) * 2017-09-04 2022-01-19 富士フイルムビジネスイノベーション株式会社 画像処理装置、半導体装置及びプログラム
JP7476638B2 (ja) 2020-04-15 2024-05-01 株式会社デンソー マルチプロセッサシステム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0844678A (ja) * 1994-07-29 1996-02-16 Canon Inc 画像処理装置及びシステム
JPH11259318A (ja) * 1998-03-13 1999-09-24 Hitachi Ltd ディスパッチ方式
JP3889195B2 (ja) * 1999-02-03 2007-03-07 株式会社東芝 画像処理装置、画像処理システムおよび画像処理方法
JP2003179923A (ja) * 2001-12-12 2003-06-27 Nec Corp 動画像圧縮符号化信号の復号システム及び復号方法,復号用プログラム
JP4374221B2 (ja) * 2003-08-29 2009-12-02 パナソニック株式会社 コンピュータシステムおよび記録媒体
JP2005286625A (ja) * 2004-03-29 2005-10-13 Canon Inc 画像処理装置及びその方法
WO2014132608A1 (ja) * 2013-02-26 2014-09-04 日本電気株式会社 並列処理装置、並列処理方法、および並列処理プログラム記憶媒体

Also Published As

Publication number Publication date
JP2017058738A (ja) 2017-03-23

Similar Documents

Publication Publication Date Title
JP6069031B2 (ja) 計算機及びメモリ管理方法
CN112368677B (zh) 基于分支指令的类型选择性地执行提前分支预测
US20130036426A1 (en) Information processing device and task switching method
KR20080017292A (ko) 내장 시스템들을 위한 저장 아키텍쳐
CN110781016B (zh) 一种数据处理方法、装置、设备及介质
JP6244949B2 (ja) 情報処理装置、制御方法、および制御プログラム
JP2009020696A (ja) 情報処理装置及びシステム
JP6701650B2 (ja) 情報処理装置および画像形成装置
WO2010024071A1 (ja) キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム
US8274521B2 (en) System available cache color map
JP2008299648A (ja) プログラムおよび情報処理装置
JP2015158894A (ja) 画像形成装置、画像形成処理用データ転送制御方法、及び画像形成処理用データ転送制御プログラム
JP5254710B2 (ja) データ転送装置、データ転送方法およびプロセッサ
JP2012155561A (ja) 情報処理装置及び書き込み制御方法
JP2008090455A (ja) マルチプロセッサ信号処理装置
JP2009020695A (ja) 情報処理装置及びシステム
JP7225904B2 (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JP2010026969A (ja) データ処理装置
JP2011039790A (ja) 仮想マシンイメージ転送装置及び方法及びプログラム
JP2008210280A (ja) 半導体装置及びdmaコントローラ
JP7346883B2 (ja) ベクトルプロセッサ装置及び生成方法
JP2010237770A (ja) 情報処理装置、ブリッジ装置および情報処理方法
CN112579481B (zh) 数据处理方法、数据处理装置和计算装置
CN107025144B (zh) 用于写入以及读取数据集的方法
JP5338452B2 (ja) メモリ管理システム、メモリ管理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180717

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190910

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191018

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: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200420

R150 Certificate of patent or registration of utility model

Ref document number: 6701650

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350