(57)【要約】【課題】排他制御を考慮しない場合でもメモリー数の増加を抑制しながら処理の効率化を図ることが可能なメモリー排他制御システムを提供する。【解決手段】異なる演算処理が可能な第１コア２３及び第２コア２５と、第１コア２３及び第２コア２５からアクセス可能な共有領域６３を有するＲＡＭ３１と、第１コア２３及び第２コア２５の内の何れか一つがアクセス可能なＮＡＮＤフラッシュ２９とを備え、第１コア２３がブートローダー６９によりメインコントローラーＯＳ５５及びパネルコントローラーＯＳ４７の起動用プログラムを順次読み込んで起動処理を行わせ、第２コア２５が少なくとも第１コア２３でのパネルコントローラーＯＳ４７の起動用プログラムの読み込みに並行してメインコントローラーＯＳ５５の起動処理を行う。【選択図】図５
2014215834.tif 000002
【特許請求の範囲】
【請求項１】
異なる演算処理が可能な複数の演算部と、
前記複数の演算部からアクセス可能な共有領域を有する第１メモリーと、
前記複数の演算部の内の何れか一つがアクセス可能な第２メモリーとを備え、
前記複数の演算部は、ブートローダー及び第１オペレーティングシステムを実行する第１演算部と前記第１オペレーティングシステムとは異なる第２オペレーティングシステムを実行する第２演算部であり、
前記第１演算部は、前記ブートローダーにより前記第２オペレーティングシステム及び第１オペレーティングシステムの起動用プログラムを順次読み込んで起動処理を行わせ、
前記第２演算部は、少なくとも前記第１演算部での前記第１オペレーティングシステムの起動用プログラムの読み込みに並行して前記第２オペレーティングシステムの起動処理を行う、
ことを特徴とするメモリーアクセス制御システム。
【請求項２】
請求項１記載のメモリーアクセス制御システムであって、
前記第１演算部は、前記ブートローダーによる前記第１又は第２オペレーティングシステムの起動用プログラムの読み込み時に、前記第１オペレーティングシステム上で動作するアプリケーションプログラムを読み込んで前記第１メモリーに保持させる、
ことを特徴とするメモリーアクセス制御システム。
【請求項３】
請求項１又は２記載のメモリーアクセス制御システムであって、
前記第１メモリーは、前記共有領域に前記第１及び第２演算部の一方が取得すると前記第１及び第２演算部の他方から取得不能となる排他フラグを保持し、
前記複数の演算部は、前記排他フラグを取得した前記第１及び第２演算部の一方のみが前記第２メモリーにアクセスする、
ことを特徴とするメモリー排他制御システム。
【請求項４】
請求項１〜３の何れか一項に記載のメモリー排他制御システムを有する画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリーへのアクセスを制御するメモリーアクセス制御システム及び画像形成装置に関する。
【背景技術】
【０００２】
近年の電子機器においては、並列処理が可能な複数のコア（演算部）を備えたマルチコアプロセッサーを備えたものがある。マルチコアプロセッサーは、パーソナルコンピューター等の情報処理装置のみならず、コピー機、プリンター、それらの複合機等の画像形成装置にも幅広く適用されている。
【０００３】
画像形成装置では、操作状態の表示等を行うパネル表示部を備えるのが一般的であり、その制御用のパネルコントローラーシステムと画像形成制御用のメインコントローラーシステムとをマルチコアプロセッサーの異なるコアに割り当てている。
【０００４】
このような画像形成装置においては、メモリーへのアクセスがシングルコアプロセッサーと同様の構成となっていることがある。
【０００５】
例えば、一つのフラッシュメモリーにパネルコントローラーシステム及びメインコントローラーシステムで使用するデータを保持し、そのフラッシュメモリーに対して複数のコアが一つのメモリーコントローラーを介してアクセスする。
【０００６】
この場合、処理の効率化の観点から、複数のコアによるフラッシュメモリーへのアクセスに対する排他制御が必要となる。
【０００７】
しかし、一つのメモリーコントローラーを介して一つのフラッシュメモリーにアクセスする場合は、同時に複数のコアがフラッシュメモリーにアクセスできないので、通常の排他制御を単純に適用することはできない。
【０００８】
これに対し、特許文献１には、複数のＣＰＵ間での排他制御を考慮する必要がなく、簡単な制御で、不揮発性メモリの消去動作を実施するものが開示されている。
【０００９】
しかし、この技術は、複数のフラッシュメモリー及び複数のメモリーコントローラーが必要となり、コスト高や構造が煩雑化するといった問題がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−１５９０７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
発明が解決しようとする課題は、排他制御を考慮しない場合に、処理の効率化を図るとメモリー数が増加する点である。
【課題を解決するための手段】
【００１２】
本発明は、排他制御を考慮しない場合でもメモリー数の増加を抑制しながら処理の効率化を図るため、異なる演算処理が可能な複数の演算部と、前記複数の演算部からアクセス可能な共有領域を有する第１メモリーと、前記複数の演算部の内の何れか一つがアクセス可能な第２メモリーとを備え、前記複数の演算部は、ブートローダー及び第１オペレーティングシステムを実行する第１演算部と前記第１オペレーティングシステムとは異なる第２オペレーティングシステムを実行する第２演算部であり、前記第１演算部は、前記ブートローダーにより前記第２オペレーティングシステム及び第１オペレーティングシステムの起動用プログラムを順次読み込んで起動処理を行わせ、前記第２演算部は、少なくとも前記第１演算部での前記第１オペレーティングシステムの起動用プログラムの読み込みに並行して前記第２オペレーティングシステムの起動処理を行うことを最も主要な特徴とする。
【発明の効果】
【００１３】
本発明によれば、第２演算部による第２オペレーティングシステムの起動処理時に、これと並行して第１演算部によるブートローダーが第１オペレーティングシステムの起動用プログラムを第２メモリーから効率的に読み込むことができる。結果として、排他制御を考慮しない場合でも、メモリー数の増加を抑制しながら処理の効率化を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】画像形成装置の概略構成を示すブロック図である（実施例１）。
【図２】図１の画像形成装置に適用されるメモリーアクセス制御システムを示すブロックである（実施例１）。
【図３】図２のメモリーアクセス制御システムによるパネルアプリケーションプログラムの読み込みを示す概念図である（実施例１）。
【図４】図２のメモリーアクセス制御システムによるデータの読み込みを示す概念図である（実施例１）。
【図５】図２のメモリーアクセス制御システムによるブート処理を示すシーケンス図である（実施例１）。
【図６】画像形成装置に適用されたメモリーアクセス制御システムを示すブロック図である（実施例２）。
【図７】図６のメモリーアクセス制御システムの第１コア及び第２コアとＲＡＭとの関係を示す概念図である（実施例２）。
【図８】図６のメモリーアクセス制御システムによるメモリー排他制御時の概念図である（実施例２）。
【図９】図６のメモリーアクセス制御システムによるメモリー排他制御を示すフローチャートである（実施例２）。
【発明を実施するための形態】
【００１５】
排他制御を考慮しない場合でもメモリー数の増加を抑制しながら処理の効率化を図るという目的を、第１の演算部によるブートローダーが第１オペレーティングシステムの起動用プログラムを読み込む際に、これと並行して第２演算部で第２オペレーティングシステムの起動処理を行うことで実現した。
【実施例１】
【００１６】
［画像形成装置］
図１は、画像形成装置の概略構成を示すブロック図である。
【００１７】
図１の画像形成装置１は、例えばコピー機、プリンター、それらの複合機からなり、画像形成部３とパネル表示部５とを備えている。画像形成部３は、入力されたデータに基づいて用紙上へ画像形成を行うものである。パネル表示部５は、タッチパネル式の液晶画面等からなり、画像形成装置１に対する操作入力や操作状態の表示を行う。
【００１８】
この画像形成装置１では、主制御部７、主記憶部９、デバイス制御部１１等を備え、画像形成部３及びパネル表示部５が並列制御される構成となっている。
【００１９】
主制御部７は、例えばＳｏＣ（System-on-a-chip）として構成され、同一の半導体チップ上にプロセッサー１３と、拡張バスコントローラー１５と、ローカルバスコントローラー１７と、ＲＡＭコントローラー１９とを搭載し、各部がシステムバス２１によって接続されている。
【００２０】
プロセッサー１３は、マルチコアプロセッサーからなり、複数の演算部である第１コア２３及び第２コア２５を備えている。第１コア２３は、プログラムの実行により、パネル表示部５を制御するパネルコントローラーシステムを構成する。第２コア２５は、プログラムの実行により、主として画像形成部３を制御するメインコントローラーシステムを構成する。
【００２１】
拡張バスコントローラー１５は、ＰＣＩｅ（Peripheral Component Interconnect Express）コントローラーであり、デバイス制御部１１に対するルートコンプレックスを構成してデータの入出力を行う。
【００２２】
ローカルバスコントローラー１７は、ローカルバスを制御するコントローラーであり、ＮＡＮＤコントローラー２７を有する。ＮＡＮＤコントローラー２７は、ＮＡＮＤフラッシュ２９に対するデータの読み書きを行うＮＡＮＤ型用のメモリーコントローラーである。
【００２３】
ＲＡＭコントローラー１９は、ＤＤＲ−ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）コントローラーからなり、ＲＡＭ（Read only Memory）３１に対するデータの入出力を行うＤＤＲ−ＳＤＲＡＭ用のメモリーコントローラーである。
【００２４】
主記憶部９は、第１メモリーであるＮＡＮＤフラッシュ２９、第２メモリーであるＲＡＭ３１を備えている。
【００２５】
ＮＡＮＤフラッシュ２９は、ＮＡＮＤ型のフラッシュメモリーであり、画像形成装置１の各種の制御用プログラム等を保持している。このＮＡＮＤフラッシュ２９には、ＮＡＮＤコントローラー２７を介して単一のコアのみがアクセス可能となっている。つまり、ＮＡＮＤフラッシュ２９は、複数のコアが同時にアクセスできないようになっている。
【００２６】
ＮＡＮＤフラッシュ２９には、パネルコントローラーシステム及びメインコントローラーシステムのプログラムとして、パネルコントローラーオペレーティングシステム（以下、「パネルコントローラーＯＳ」と称する）、パネルアプリケーション（以下、「パネルアプリ」と称する）、メインコントローラーオペレーティングシステム（以下、「メインコントローラーＯＳ」と称する）、メインアプリケーション（以下、「メインアプリ」と称する）等が保持されている。
【００２７】
ＲＡＭ３１は、ＤＤＲ−ＳＤＲＡＭからなり、プログラムや各種データを一時的に記憶して作業領域等として用いられる。
【００２８】
デバイス制御部１１は、ＡＳＩＣ（Application Specific Integrated Circuit）として構成され、拡張バスインターフェース３３と、パネルコントローラー３５と、ビデオコントローラー３７とを備えている。
【００２９】
拡張バスインターフェース３３は、ＰＣＩｅバスインターフェースであり、主制御部７側の拡張バスコントローラー１５に対するエンドポイントとなってデータの入出力を行う。
【００３０】
パネルコントローラー３５は、パネルコントローラーシステムの制御によって、入力されたデータに基づくパネル表示部５に対する実際の制御を行う。ビデオコントローラー３７は、メインコントローラーシステムの制御によって、入力されたデータに基づく画像形成部３に対する実際の制御を行う。
【００３１】
このように本実施例の画像形成装置１では、第１コア２３及び第２コア２５がパネルコントローラーシステム及びメインコントローラーシステムを構成することで、パネル表示部５及び画像形成部３を並列制御することができる。
［メモリーアクセス制御システム］
図２は、図１の画像形成装置に適用されるメモリーアクセス制御システムを示すブロック図である。
【００３２】
図２のメモリーアクセス制御システム３９は、上述の並列制御やシステム起動時のブート処理において、第１コア２３及び第２コア２５の主記憶部９のＮＡＮＤフラッシュ２９に対するメモリーアクセス制御を行う。本実施例では、ブート処理でのメモリーアクセス制御について説明する。
【００３３】
第１コア２３は、上述のようにパネルコントローラーシステム４３を構成し、パネル表示部５の制御に必要な各種のパネルアプリ４５をパネルコントローラーＯＳ４７上で動作させる。このパネルコントローラーＯＳ４７は、ＮＡＮＤフラッシュ２９に対する制御を行うデバイスドライバー４９を備える。
【００３４】
第２コア２５は、上述のようにメインコントローラーシステム５１を構成し、画像形成部３の制御に必要な各種のメインアプリ５３をメインコントローラーＯＳ５５上で動作させる。メインコントローラーＯＳ５５も、パネルコントローラーＯＳ４７と同様、ＮＡＮＤフラッシュ２９に対する制御を行うデバイスドライバー５７を備える。
【００３５】
これらのパネルコントローラーＯＳ４７及びメインコントローラーＯＳ５５は、画像形成装置１のシステム起動時のブートローダー６９によるブート処理を通じて起動が行われる。
【００３６】
ブートローダー６９は、第１コア２３がＮＡＮＤフラッシュ２９内等のプログラムを実行することで構成され、ＮＡＮＤフラッシュ２９に対する制御を行うデバイスドライバー７１を備える。
【００３７】
このデバイスドライバー７１を通じ、ブートローダー６９は、パネルコントローラーＯＳ４７及びメインコントローラーＯＳ５５の起動に必要なパネル起動用プログラム及びメイン起動用プログラムをＮＡＮＤフラッシュ２９からＲＡＭ３１上に読み込む。
【００３８】
このとき、ブートローダー６９は、パネルアプリ４５もパネル起動用プログラムと共にＲＡＭ３１上に読み込む。なお、パネルアプリ４５の読み込みの概念図を図３に示す。
【００３９】
本実施例では、パネルアプリ４５及びパネル起動用プログラムのＲＡＭ３１上への読み込みに並行して、メインコントローラーＯＳ５５の起動処理の初期化が行われる。
【００４０】
パネル起動用プログラムは、パネルコントローラーＯＳの一部としてのパネルカーネルプログラム及びパネルデバイスツリープログラム等であり、メイン起動用プログラムは、メインコントローラーＯＳの一部としてのメインカーネルプログラム及びメインデバイスツリープログラム等である（図５参照）。
【００４１】
ブートローダー６９は、第１コア２３及び第２コア２５に対し、読み込んだパネル起動用プログラム及びメイン起動用プログラムによってパネルコントローラーＯＳ４７及びメインコントローラーＯＳ５５の起動を行わせる。
【００４２】
この起動としては、第１コア２３及び第２コア２５がパネルコントローラーＯＳ４７及びメインコントローラーＯＳ５５の初期化を行ってからパネルアプリ４５及びメインアプリ５３の読み込みを行う。パネルアプリ４５は、ＲＡＭ３１上から読み込まれ、メインアプリ５３は、ＮＡＮＤフラッシュ２９から読み込まれる。
【００４３】
図４は、ＲＡＭ及びＮＡＮＤフラッシュに対するデータの読み込みを示す概念図である。
【００４４】
第１コア２３は、起動したパネルコントローラーＯＳ４７によりＲＡＭ３１に対するデバイスドライバー４９を備え、ＲＡＭ３１をパネルアプリ４５のＲＡＭディスクとして使用する。
【００４５】
具体的には、第１コア２３は、デバイスドライバー４９の制御を通じ、ＲＡＭ３１内のパネルアプリ４５を同ＲＡＭ３１のパネルＯＳＨｅａｐ７３上に読み込んで実行する。これにより、パネルアプリ４５の読み込みに際してＮＡＮＤフラッシュ２９へのアクセスを省略できる。
【００４６】
すなわち、パネルコントローラーＯＳ４７でのデマンドページングによるＮＡＮＤアクセスを無くし、メインコントローラＯＳ５５にＮＡＮＤ排他待ちが発生しないようにする。
【００４７】
第２コア２５は、起動したメインコントローラーＯＳ５５によりＮＡＮＤフラッシュ２９に対するデバイスドライバー５７を備え、ＮＡＮＤフラッシュ２９にアクセスしてメインアプリ５３等の処理に必要なデータをＲＡＭ３１上のメインＯＳＨｅａｐ７５に読み込んで実行する。
【００４８】
図５は、図２のブートローダーによるブート処理を示すシーケンス図である。
【００４９】
図５のように、第１コア２３上で実行されたブートローダー６９は、まずメイン起動用プログラムであるメインカーネルプログラム、メインデバイスツリープログラムを順次読み込む（ＳＱ１及びＳＱ２）。
【００５０】
次いで、ブートローダー６９は、読み込んだメイン起動用プログラムに基づいて、第２コア２５上でメインコントローラーＯＳ５５を起動させる（ＳＱ３）。
【００５１】
これにより、第２コア２５上でメインコントローラーＯＳ５５の初期化が行われると（ＳＱ４）、これと並行して図３で説明したようにパネルアプリ４５をＲＡＭ３１上に読み込んで保持する（ＳＱ５）と共にパネル起動用プログラムであるパネルカーネルプログラム、パネルデバイスツリープログラムを順次読み込む（ＳＱ６及びＳＱ７）。
【００５２】
次いで、ブートローダー６９は、読み込んだパネル起動用プログラムに基づいて、第１コア２３上でパネルコントローラーＯＳ４７にジャンプして起動させる（ＳＱ８）。
【００５３】
これにより、第１コア２３は、パネルコントローラーＯＳ４７の初期化を行う（ＳＱ９）。
【００５４】
パネルコントローラー３５の初期化後は、上述のように第１コア２３がＲＡＭ３１内のパネルアプリ４５をＲＡＭ３１のパネルＯＳＨｅａｐ７３上に読み込んで実行する（図４参照）。
【００５５】
一方、第２コア２５は、メインコントローラーＯＳ５５の初期化後に上述のようにＮＡＮＤフラッシュ２９にアクセスしてメインアプリ５３等の処理に必要なデータをＲＡＭ３１上に読み込んで実行する（ＳＱ１０及び図４参照）。
［実施例１の効果］
本実施例のメモリーアクセス制御システム３９では、異なる演算処理が可能な第１コア２３及び第２コア２５と、第１コア２３及び第２コア２５からアクセス可能な共有領域６３を有するＲＡＭ３１と、第１コア２３及び第２コア２５の内の何れか一つがアクセス可能なＮＡＮＤフラッシュ２９とを備え、第１コア２３がブートローダー６９によりメインコントローラーＯＳ５５及びパネルコントローラーＯＳ４７の起動用プログラムを順次読み込んで起動処理を行わせ、第２コア２５が少なくとも第１コア２３でのパネルコントローラーＯＳ４７の起動用プログラムの読み込みに並行してメインコントローラーＯＳ５５の起動処理を行う。
【００５６】
従って、全てのプログラムを読み込んだ後にメイン及びパネル双方のＯＳ４７及び５５を起動する場合と比較して、メインコントローラＯＳ５５の起動待ちによる時間のロスを無くすことができる。
【００５７】
すなわち、本実施例では、メインコントローラーＯＳ５５の起動処理、特に初期化のための非アクセス時間を利用して、第１コア２３上のブートローダー６９がパネル起動用プログラムをＮＡＮＤフラッシュ２９から効率的に読み込むことができる。
【００５８】
従って、本実施例では、効率良くＮＡＮＤフラッシュ２９を使用し、各コアの待ち時間等も減少させ、起動時間を短縮を図ることができる。この結果、排他制御を考慮しない場合でも、メモリー数の増加を抑制しながら処理の効率化を図ること可能となる。
【００５９】
また、本実施例では、第１コア２３Ａでのブートローダー６９がパネルコントローラーＯＳ４７及びメインコントローラーＯＳ５５に必要なパネル及びメイン起動用プログラムを読み込んで起動処理を実行すると共に起動処理とは分離した処理に必要なパネルアプリ４５を読み込んでＲＡＭ３１に保持させる。
【００６０】
このため、本実施例では、第２コア２５がＮＡＮＤフラッシュ２９へアクセスしている間も、第１コア２３がＲＡＭ３１内に保持したデータによって処理を実行することができる。
【００６１】
結果として、本実施例では、より確実に効率良くＮＡＮＤフラッシュ２９を使用でき、各コアの待ち時間を減少させ、起動時間を短縮することができる。
【実施例２】
【００６２】
図６は、画像形成装置に適用されるメモリーアクセス制御システムを示すブロック図、図７は、図６のメモリーアクセス制御システムの第１コア及び第２コアとＲＡＭとの関係を示す概念図、図８は、図６のメモリーアクセス制御システムによるメモリー排他制御時の概念図である。なお、本実施例では、上記実施例１と基本構成が共通するため、対応する構成部分に同符号又は同符号にＡを付加したものを用いて重複した説明を省略する。
【００６３】
本実施例は、第１コア２３及び第２コア２５のＮＡＮＤフラッシュ２９へのアクセスに対する排他制御を併用したものである。なお、本実施例の排他制御は、パネルコントローラーシステム４３Ａ及びメインコントローラーシステム５１Ａの並列制御に適用した場合について説明するが、実施例１のブート処理にも適用することが可能である。
【００６４】
メモリーアクセス制御システム３９Ａは、図６〜図８のように、主記憶部９ＡのＲＡＭ３１Ａに排他フラグ４１を保持し、排他フラグ４１を取得した第１コア２３及び第２コア２５の何れか一方のみが主記憶部９ＡのＮＡＮＤフラッシュ２９にアクセス可能となる排他制御を行う。
【００６５】
第１コア２３及び第２コア２５は、パネルコントローラーＯＳ４７Ａ及びメインコントローラーＯＳ５５Ａのデバイスドライバー４９Ａ，５７Ａを通じ、スピンロックによってＲＡＭ３１Ａ内の排他フラグ４１を取得する。
【００６６】
ＲＡＭ３１Ａは、パネルコントローラーＯＳ４７Ａ用のパネルＯＳ領域５９、メインコントローラーＯＳ５５Ａ用のメインＯＳ領域６１、パネルコントローラーＯＳ４７Ａ及びメインコントローラーＯＳ５５Ａの共有領域６３がマッピングにより割り当てられている（図６及び図７）。このＲＡＭ３１Ａの共有領域６３内に排他フラグ４１が保持されている。
【００６７】
排他フラグ４１は、第１コア２３及び第２コア２５の一方が取得すると同他方から取得不能となる。具体的には、第１コア２３及び第２コア２５は、ＲＡＭ３１Ａの共有領域６３内の排他フラグ４１が取得可能か否かを監視する。取得可能な場合は、図８の第２コア２５のように排他フラグ４１を取得して、取得不能な場合は、図８の第１コア２３のようにビジーウェイト状態となってループによる排他フラグ４１の監視を続ける。
【００６８】
なお、本実施例では、第１コア２３及び第２コア２５がそれぞれキャッシュ６５，６７を有し、キャッシュ６５，６７の値によってビジーウェイト状態での排他フラグ４１に対する監視を行う。このため、キャッシュ６５，６７とＲＡＭ３１Ａとの間では、コヒーレンシーを合わせる、つまりデータ内容を一致させる必要がある。これは、キャッシュ６５，６７のフラッシュやインバリデート処理等によって行うことができる。
【００６９】
排他フラグ４１の取得は、例えばRead-Modify-Writeにより、排他フラグ４１が「０」になった瞬間に「１」を書き込んで取得を確保した後、排他フラグ４１を「０」を書き込むことで開放する等のようになる。この排他フラグ４１の取得はAtomic操作（不可分操作）によって行われ、排他フラグ情報をRead後、Writeまでの間に、他方のコアからのWriteによる不整合を抑制する。
【００７０】
排他フラグ４１を取得した第１コア２３及び第２コア２５の一方は、ＮＡＮＤフラッシュ２９に対するアクセスが可能となる。図８の例では、排他フラグ４１を取得した第２コア２５がＮＡＮＤフラッシュ２９にアクセスすることができる。
［メモリー排他制御］
以下、本実施例のメモリー排他制御について図９のフローチャートにより説明する。図９のフローチャートは、図６のメモリーアクセス制御システムによるメモリー排他制御を示す。なお、画像形成装置１及びメモリーアクセス制御システム３９Ａの構成については図１、図６〜図８を参照する。
【００７１】
メモリー排他制御では、まずステップＳ１において「ＲＡＭへのアクセス」が行われる。第１コア２３（パネルコントローラーＯＳ４７）又は第２コア２５（メインコントローラーＯＳ５５）は、自身のデバイスドライバー４９Ａ又は５７Ａの制御を通じてＲＡＭ３１Ａの共有領域６３にアクセスする。これによりステップＳ１が完了してステップＳ２へ移行する。
【００７２】
ステップＳ２では、「排他フラグ取得可能？」の処理が行われる。この処理では、第１コア２３又は第２コア２５がＲＡＭ３１Ａの共有領域６３内の排他フラグ４１が取得可能か否かを判断する。
【００７３】
図８の例では、第２コア２５の場合に排他フラグ４１が取得可能であり、第１コア２３の場合に排他フラグ４１が取得不能となっている。
【００７４】
排他フラグ４１が取得可能な場合はステップＳ３へ移行し（ＹＥＳ）、取得不能な場合はステップＳ２の処理を繰り返す（ＮＯ）。なお、ステップＳ２を再度行う場合は、ビジーウェイト状態となっているから、第１コア２３又は第２コア２５がキャッシュ６５又は６７に対してループによる排他フラグ４１の監視を続ける。
【００７５】
ステップＳ３では、「排他フラグ取得」が行われる。すなわち、第１コア２３及び第２コア２５の一方は、ＲＡＭ３１Ａの共有領域６３内の排他フラグ４１の取得を行う。この取得により、第１コア２３及び第２コア２５の他方は、排他フラグ４１の取得が不能となる。
【００７６】
図８の例では、第２コア２５が排他フラグ４１の取得を行い、ステップＳ２で説明したように第１コア２３が排他フラグ４１を取得不能となる。
【００７７】
こうしてステップＳ３が完了してステップＳ４へ移行する。
【００７８】
ステップＳ４では、「ＮＡＮＤフラッシュへのアクセス」が行われる。すなわち、排他フラグ４１を取得した第１コア２３及び第２コア２５の一方は、ＮＡＮＤコントローラー２７（図１）を介してＮＡＮＤフラッシュ２９にアクセスする。これにより、第１コア２３及び第２コア２５の一方は、ＮＡＮＤフラッシュ２９に対するデータの読み書きを行うことができる。図８の例では、第２コア２５がＮＡＮＤフラッシュ２９にアクセスしてデータの読み書きを行うことになる。
【００７９】
こうしてステップＳ４が完了してステップＳ５へ移行する。
【００８０】
ステップＳ５では、「排他フラグの開放」を行う。第１コア２３及び第２コア２５の一方は、ＮＡＮＤフラッシュ２９へのアクセスが終了するとＲＡＭ３１Ａの共有領域６３内の排他フラグ４１を開放する。これにより、第１コア２３及び第２コア２５の他方が排他フラグ４１を取得できるようになる。図８の例では、ビジーウェイト状態であった第１コア２３が排他フラグ４１を取得可能となる。
［実施例２の効果］
本実施例のメモリーアクセス制御システム３９Ａは、ＲＡＭ３１が共有領域６３に第１コア２３及び第２コア２５の何れか一方が取得すると同他方から取得不能となる排他フラグ４１を保持し、排他フラグ４１を取得した第１コア２３及び第２コア２５の何れか一方のみがＮＡＮＤフラッシュ２９にアクセスする。
【００８１】
従って、本実施例では、複数のコアが同時にアクセスできないＮＡＮＤフラッシュ２９に対する排他制御を簡単且つ確実に行うことが可能となる。これにより、より効率よくＮＡＮＤフラッシュ２９を使用でき、各コアの待ち時間等も減少することができる。
【００８２】
本実施例の排他制御を実施例１のブート処理に採用する場合は、図４のように第１コア２３がＲＡＭ３１Ａ内のパネルアプリ４５を同ＲＡＭ３１ＡのパネルＯＳＨｅａｐ７３上に読み込んで実行する際などに有利である。
【００８３】
第１コア２３は、ＮＡＮＤフラッシュ２９へのアクセスを行わずにＲＡＭ３１Ａ内のパネルアプリ４５を読み込んで実行するが、ＮＡＮＤフラッシュ２９へアクセスして書き込みを行うこともある。
【００８４】
この書き込み時に、第１コア２３が排他フラグ４１を監視して上述の排他制御を行うことで、効率よくＮＡＮＤフラッシュ２９を使用でき、各コアの待ち時間等も減少し、起動時間の短縮を図ることが可能となる。
【００８５】
また、本実施例の排他制御を実施例１の図５のシーケンスに採用する場合は、第２コア２５上でのメインコントローラーＯＳ５５の初期化を行い（ＳＱ４）、これと並行して第１コア２３上でパネルアプリ４５及びパネル起動用プログラムの読み込みを行う（ＳＱ５〜ＳＱ７）際などに有利である。
【００８６】
第１コア２３上のブートローダー６９は、上述のように第２コア２５上でのメインコントローラーＯＳ５５の初期化時に、ＮＡＮＤフラッシュ２９への非アクセス時間を利用してパネルアプリ４５及びパネル起動用プログラムをＮＡＮＤフラッシュ２９から読み込む。
【００８７】
この際、ブートローダー６９とメインコントローラーＯＳ５５との間で排他フラグ４１を監視する上述の排他制御を行うことで、ＮＡＮＤフラッシュ２９の非アクセス時間を効率的に利用することができる。従って、より確実に効率よくＮＡＮＤフラッシュ２９を使用でき、各コアの待ち時間等も減少し、起動時間の短縮を図ることが可能となる。
［その他］
上記実施例では、プロセッサー１３を、単一のマルチコアプロセッサーとしていたが、例えば複数のシングルコアプロセッサーやマルチコアプロセッサーを適宜組み合わせた構成とすることも可能である。
【符号の説明】
【００８８】
１  画像形成装置
３  画像形成部
５  パネル表示部
２３  第１コア（演算部）
２５  第２コア（演算部）
２９  フラッシュメモリー（第２メモリー）
３１  ＲＡＭ（第１メモリー）
４１  排他フラグ
４７  パネルコントローラーオペレーティングシステム（第１オペレーティングシステム）
５５  メインコントローラーオペレーティングシステム（第２オペレーティングシステム）
６３  共有領域
６９  ブートローダー
【図１】
2014215834.tif 000003
【図２】
2014215834.tif 000004
【図３】
2014215834.tif 000005
【図４】
2014215834.tif 000006
【図５】
2014215834.tif 000007
【図６】
2014215834.tif 000008
【図７】
2014215834.tif 000009
【図８】
2014215834.tif 000010
【図９】
2014215834.tif 000011