(57)【要約】      （修正有）【課題】動作速度の異なる主記憶装置を効率よく利用する。【解決手段】画像形成装置１００は、ＲＡＭ１０５と、ＲＡＭ１０５よりも高速に動作するＳＲＡＭ１０３と、ＲＯＭ１０４とを有する。ＲＯＭ１０４は、ブートローダと、第１の実行プログラムと、第２の実行プログラムとを記憶する。ブートローダは、画像形成装置１００の起動直後、第１の実行プログラムをＲＡＭ１０５に、第２の実行プログラムをＳＲＡＭ１０３にロードする。第１の実行プログラム及び第２の実行プログラムは、画像形成装置１００の組み込み制御プログラムである。第２の実行プログラムが前記組み込み制御プログラムを構成する要素のうち所定のマーキングがされた要素だけで構成され、第１の実行プログラムが残りの要素で構成される。【選択図】図１
2013114488.tif 000002
【特許請求の範囲】
【請求項１】
第１の主記憶装置と、
前記第１の主記憶装置よりも高速に動作する第２の主記憶装置と、
二次記憶装置とを有する情報処理装置であって、
前記二次記憶装置は、ブートローダと、第１の実行プログラムと、第２の実行プログラムとを記憶し、
前記ブートローダは、前記情報処理装置の起動直後、前記第１の実行プログラムを前記第１の主記憶装置に、前記第２の実行プログラムを前記第２の主記憶装置にロードし、
前記第１及び第２の実行プログラムは、前記情報処理装置の組み込み制御プログラムであり、前記第２の実行プログラムが前記組み込み制御プログラムを構成する要素のうち所定のマーキングがされた要素だけで構成されたものであり、前記第１の実行プログラムが残りの要素で構成されたものである
ことを特徴とする情報処理装置。
【請求項２】
前記第１及び第２の実行プログラムは、前記組み込み制御プログラムのソースコードに記載されている前記要素のうち前記第２の実行プログラムに組み入れる要素に前記所定のマーキングが施された後、コンパイラがコンパイルし、リンカがリンク処理をして生成され、
前記リンカは、前記所定のマーキングが施された要素をまとめて前記第２の実行プログラムを生成し、残りから前記第１の実行プログラムを生成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記所定のマーキングには、優先度が設定され、
前記リンカは、前記第２の主記憶装置の容量に合わせて、前記優先度の高いマーキングが施された要素を優先して前記第２の実行プログラムを生成することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記第１及び第２の実行プログラムは、前記二次記憶装置に圧縮された状態で記憶されており、
前記ブートローダは、圧縮ファイルの展開機能を備え、前記情報処理装置の起動時に、前記圧縮ファイルの展開機能により圧縮された状態の前記第１及び第２の実行プログラムを展開して、前記第１の実行プログラムを前記第１の主記憶装置に、前記第２の実行プログラムを前記第２の主記憶装置にロードすることを特徴とする請求項１から３のいずれか１項記載の情報処理装置。
【請求項５】
前記要素が、複数の関数及び複数の変数の集合であり、前記第２の実行プログラムは、前記要素のうち、前記所定のマーキングがされた前記関数だけで構成されたものであることを特徴とする請求項１から４のいずれか１項記載の情報処理装置。
【請求項６】
前記第２の主記憶装置がＳｏＣに内蔵のＳＲＡＭであることを特徴とする請求項１から５のいずれか１項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、動作速度の異なる主記憶装置を備える装置において当該主記憶装置を効率よく利用する技術に関する。
【背景技術】
【０００２】
特許文献１には、複数種類のメモリを搭載する画像形成装置における高速メモリの使用方法に関する方法が開示されている。しかしながら、この特許文献１の方法では、高速メモリに配置されるプログラムは、性能に大きく影響を与える部分だけではなく、性能への寄与が小さい部分も高速メモリに配置されてしまうため、高速メモリを効率よく使用できているとは言えなかった。
【０００３】
また、特許文献２には、スワップアウトの制御を行う方法が開示されている。しかしながら、大容量メモリを搭載しない場合にはそのような制御をそもそも実施することができない。
【０００４】
また、特許文献３には、メモリデバイスの制御方法とＤＭＡコントローラの制御方法に関する提案がなされているが、既存の高速メモリの有効活用を行うものではなかった。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
画像形成装置のような組み込み機器の開発において、新しい機器を出す毎に高機能化、高性能化の要求が高まっている。一方で、価格への要求も強いため、高性能化するからといって高価格な部品をふんだんに使用することは難しい。そのため、いかに機器に搭載されている部品の性能を引き出すか、効率よく使用するかが機器開発における課題となっている。
【０００６】
機器に搭載されている部品の中でも、メモリ（主記憶装置）の効率的な使用が高性能化に大きく寄与する。高速なメモリデバイスだけを用いると容量が足りず低速な二次記憶装置へのアクセスが必要となる。そこで動作速度が低速なメモリデバイスも具備するが、その場合、性能への寄与が小さいプログラムを高速なメモリに配置するというような非効率的なメモリの使用が起きてしまうという課題がある。
【０００７】
本発明は、上記課題に鑑みてなされたものであって、動作速度の異なる主記憶装置を備える情報処理装置において当該主記憶装置を効率よく利用することが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は、第１の主記憶装置と、前記第１の主記憶装置よりも高速に動作する第２の主記憶装置と、二次記憶装置とを有する情報処理装置であって、前記二次記憶装置は、ブートローダと、第１の実行プログラムと、第２の実行プログラムとを記憶し、前記ブートローダは、前記情報処理装置の起動直後、前記第１の実行プログラムを前記第１の主記憶装置に、前記第２の実行プログラムを前記第２の主記憶装置にロードし、前記第１及び第２の実行プログラムは、前記情報処理装置の組み込み制御プログラムであり、前記第２の実行プログラムが前記組み込み制御プログラムを構成する要素のうち所定のマーキングがされた要素だけで構成されたものであり、前記第１の実行プログラムが残りの要素で構成されたものであることを特徴とする情報処理装置を提供する。
【発明の効果】
【０００９】
本発明によれば、動作速度の異なる主記憶装置を備える情報処理装置において当該主記憶装置を効率よく利用することが可能な情報処理装置を提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態のハードウェア構成を示すブロック図である。
【図２】図１のＲＯＭ１０４の記憶内容を示すブロック図である。
【図３】図１の画像形成装置１００の制御プログラムのＣ言語ソースコード例である。
【図４】上記実施形態のｅｌｆフォーマット形式の概念図である。
【図５】上記実施形態における実行プログラムの生成工程の流れを示す図である。
【図６】図５のリンカによる実行プログラム生成部分を詳細に示す図である。
【図７】上記実施形態におけるリンカスクリプトの内容の一部を示す図である。
【図８】図７のリンカスクリプトにおいて、マーキングされた関数等を集約するための記述が追加されたリンカスクリプトの内容の一部を示す図である。
【図９】上記実施形態において、実行プログラムから実行プログラム１及び実行プログラム２を生成するコマンドを示す図である。
【図１０】上記実施形態におけるメモリ空間と実行プログラムの配置に関する概念図である。
【図１１】上記実施形態の変形例１において、実行プログラムから実行プログラム１及び実行プログラム２を生成するコマンドを示す図である。
【図１２】上記実施形態の変形例２における画像形成装置１００の制御プログラムのＣ言語ソースコード例である。
【図１３】上記実施形態の変形例２において、マーキングに優先度が設定されており、関数のみをＳＲＡＭに配置する場合のＳＲＡＭ配置用リンカスクリプトの内容の一部を示す図である。
【発明を実施するための形態】
【００１１】
図１に、本実施形態に係る組み込み機器としての画像形成装置１００のハードウェア構成を示す。組み込み機器としての画像形成装置１００は、システムバスを介してＳｏＣ（System-on-a-Chip）１０１とＲＯＭ（読み出し専用メモリ）１０４とＲＡＭ（ランダムアクセスメモリ）１０５が接続されており、ＳｏＣ１０１は、チップ上にＣＰＵ（中央演算装置）１０２とＳＲＡＭ（Static RAM）１０３を備える。図示の他に、大容量の記憶装置を備えてもよい。
【００１２】
図２に、ＲＯＭ１０４の記憶内容を示す。ＲＯＭ１０４には、画像形成装置１００への電源投入時に最初に実行されるソフトウェアプログラムであるブートローダと、実行プログラム１と、実行プログラム２が保存されている。実行プログラム１と実行プログラム２は、圧縮された状態で保存されていてもよい。また、ブートローダは、圧縮ファイルを展開する機能を備えている。
【００１３】
実行プログラム１と実行プログラム２は、画像形成装置１００の組み込み制御プログラムである。これらが実行される際には、短期的な記憶装置上にプログラムが配置される。実行プログラム１が比較的安価なＲＡＭ１０５に配置される一方、実行プログラム２が高価であるが高速なＳＲＡＭ１０３に配置される。このような起動時の動作の説明の前に、まず、実行プログラム１と実行プログラム２の生成工程を以下に説明する。
【００１４】
（実行プログラムの生成工程）
実行プログラムの生成（プログラミングやコンパイル等）は、画像形成装置１００で行ってもよいが、図示しない汎用のコンピュータで行ってもよい。以下では、画像形成装置１００で行うものとする。
【００１５】
図３は画像形成装置の実行プログラムのＣ言語ソースコード例である。ソースコードは、アセンブリ言語、Ｃ言語、Ｃ＋＋言語にて記述されることが多いが、他の言語を使用することもある。実行プログラム２に含めたい関数には、図中下線部のように関数のマーキングを行う。マーキングには、GCCの拡張機能である関数や変数の属性設定機能（attribute）を使用する。図３にて示されているのは、関数をfast＿memセクションに配置するという属性の設定である。
【００１６】
ソースコードはコンパイラによってオブジェクトファイルに変換される。このオブジェクトファイルはｅｌｆというフォーマットをとっており、複数のセクションから構成されている。図４に、ｅｌｆフォーマット形式の概念図を示す。
【００１７】
図４に示すように、ｅｌｆフォーマット形式には、代表的には、プログラムの実行コードを含むtextセクション、初期化済みの変数を含むdataセクション、未初期化のデータを含むbssセクションがある。関数属性の設定を行っていない関数は通常textセクションに含まれる。
【００１８】
図３中に示される関数のように、関数属性の設定によりfasttextセクションを指定した関数はfasttextセクションに配置される。また、fastdataセクションを指定した関数はfastdataセクションに配置される。
【００１９】
図５は、画像形成装置１００の実行プログラムの生成の全体のフローである。図５に示すように、ソースコードは、コンパイラ（アセンブラ処理までを含む）によってオブジェクトファイルに変換される。ここで生成されたオブジェクトファイルは、先述の通りｅｌｆフォーマットのものであり、元になったソースコードにマーキングを施された関数があれば、その関数はfasttextセクションに配置されている。コンパイラはそれぞれのソースコードに対して処理を行い、オブジェクトファイルを生成する。
【００２０】
実行プログラムを生成するために必要なオブジェクトファイルの生成が完了すると、次にリンカによるリンク処理を行うことで実行プログラムが生成される。図６は、図５中のリンク処理に関して拡大して詳細に示すものである。
【００２１】
リンカはプログラムを構成する１つ又は複数のオブジェクトファイル並びにライブラリを入力として受け取り、実行プログラムを出力する。リンカは各入力ファイルに含まれる、それぞれのセクションをまとめたものを実行プログラムのセクションとして生成する。この時、リンカにはリンカスクリプトを使用して、入力となるオブジェクトファイル内の情報をどのように配置して実行プログラムを生成するかを指示することができる。
【００２２】
図７は、リンカスクリプトの内容の一部である。図７に図示したスクリプトでは先頭から、実行コードの配置される.textセクション、読み出し専用データの配置される.rodataセクション、初期化済みデータの配置される.dataセクションなどが記載されている。その他、実行プログラムを構成するために必要なセクションの配置に関する記述がつづく。マーキングされた関数群を一連の領域に集約して実行プログラムを生成する工程は、リンカスクリプトを使用して実現される。
【００２３】
図８は、実行プログラム生成のために使用するオブジェクトファイルに含まれるfasttextセクション、fastdataセクション、及びfastbssセクションに含まれる関数を一カ所に集約するための記述を追加したスクリプトである。この記述により、リンカは入力となる各オブジェクトファイル内にfasttext、fastdata、fastbssの各セクションが存在した場合にはその内容を実行プログラム中のfast＿memセクションに配置して実行プログラムを生成する。
【００２４】
図９は、実行プログラムから実行プログラム１及び実行プログラム２を生成するコマンドである。実行プログラム１はソースコードにて、マーキングされていなかった関数や変数の集合である。実行プログラム２はソースコードにて、マーキングを行った関数や変数の集合である。ここで使用するobjcopyコマンドは、実行プログラムをｅｌｆフォーマットから他の形式に変換したり、実行プログラムの一部だけを取り出す機能を持っている。その両方を同時に行うことも可能である。
【００２５】
実行プログラムから実行プログラム１を生成するためにはobjcopyコマンドを使用し、.fast＿memセクション以外のセクションを取り出し、主メモリに配置された形式に変換を行う。同様に、実行プログラム２を生成するためにはobjcopyコマンドを使用し、.fast＿memセクションのみを取り出す。この工程により、実行プログラムより実行プログラム１及び実行プログラム２が生成される。
【００２６】
（画像形成装置の起動時の動作）
図１０は、画像形成装置１００における実行プログラム１、実行プログラム２、ブートローダの配置と、画像形成装置１００の動作時のメモリ空間に関する図である。画像形成装置１００は恒久的な記憶装置としてＲＯＭ１０４、短期的な記憶装置としてＲＡＭ１０５とＳＲＡＭ１０３を持つ（図１）。画像形成装置には通常、高価なＳＲＡＭは少量の搭載であり、安価なＲＡＭは多量に搭載されている。実行プログラム１、実行プログラム２、ブートローダは画像形成装置１００に搭載のＲＯＭ１０４に保存されている（図２）。
【００２７】
ブートローダはＲＯＭ１０４上にて実行される。
実行プログラム１、実行プログラム２はブートローダにより、それぞれＲＡＭ１０５、ＳＲＡＭ１０３にロードされる。したがって、図１０中における「ＲＡＭ実行プログラム」が実行プログラム１であり、「ＳＲＡＭ実行プログラム」が実行プログラム２である。ブートローダは実行プログラム１をロードした位置にジャンプし実行プログラム１の実行を開始する。
【００２８】
これらの工程を踏まえた実行プログラムの生成工程により、容易に実行プログラム内の各関数や変数の配置をＲＡＭ、ＳＲＡＭで切り替えできるようになり、また、ＲＡＭ、ＳＲＡＭ上で動作させたいものだけをＳＲＡＭ上に配置するため、ＳＲＡＭ容量を効率的に使用できるようになる。
【００２９】
すなわち、本実施形態によれば、画像形成装置の組み込み制御プログラムのうち高速に動作させたい部分だけを高速に動作する主記憶上に配置することが容易にできるようになるので、高価なメモリを効率的に使用することができ、また、製品価格を抑えたまま製品の高性能化を図ることができる。
【００３０】
（非動作時の実行プログラム１、２を圧縮する場合）
実行プログラム１、２が圧縮されている場合の、画像形成装置１００の起動時の動作は次のようになる。このとき、実行プログラム１、実行プログラム２が圧縮された形式で画像形成装置１００の二次記憶装置であるＲＯＭ１０４に保存されている。実行プログラム１、実行プログラム２の生成にいたる工程は上述の工程の通りである。
【００３１】
objdcopyコマンドにより生成された実行プログラム１、実行プログラム２は、それぞれファイル圧縮コマンドにより圧縮され、ＲＯＭ１０４に保存される。ファイルの圧縮はｚｉｐ方式やｂｚｉｐ方式など一般的に使用されるものが使用できる。図１０に示されるように、ブートローダ、実行プログラム１、実行プログラム２は画像形成装置１００に搭載のＲＯＭ１０４に保存される。このとき、実行プログラム１および実行プログラム２は先述のとおり、圧縮された状態で保存される。
【００３２】
画像形成装置１００の電源投入により、ＲＯＭ１０４に保存されたブートローダが実行される。ブートローダは図２に示すように圧縮ファイルの展開機能を備える。ブートローダは実行プログラム１をＲＯＭ１０４より読み出し、実行プログラム１が圧縮されていれば自身の持つ圧縮ファイル展開機能を使用し、実行プログラム１を展開する。展開した実行プログラム１は主メモリであるＲＡＭ１０５に配置される。
【００３３】
次にブートローダは実行プログラム２を読み出し、実行プログラム２が圧縮されていれば同様に圧縮ファイル展開機能を使用し、実行プログラム２を展開する。展開した実行プログラム２はサブメモリであるＳＲＡＭ１０３に配置される。ブートローダは実行プログラム１をロードした位置にジャンプし実行プログラム１の実行を開始する。
【００３４】
このように非動作時の実行プログラム１、２を圧縮した形式で記憶する場合においては、実行プログラム１、実行プログラム２が圧縮された状態でＲＯＭ１０４に保存されているため、保存に必要なＲＯＭ１０４の容量が小さくなり、画像形成装置１００の価格を下げることができるようになる。
【００３５】
（上記実施形態の変形例１）
上述した実施形態は、以下の変形例１、２のように変形して実施することもできる。本変形例１においては、実行プログラム２をマーキングした関数のみで構成する例を示す。
【００３６】
実行プログラムを生成するまでの手順に関しては、上記実施形態の通りである。実行プログラムには、マーキングされていない関数、変数、マーキングされた関数、変数がｅｌｆ形式にて含まれている。実行プログラム１には、マーキングされていない関数、変数、マーキングされた変数を含むので、図１１（１）のコマンドにてマーキングされた関数以外の部分を抽出し、メモリに配置した際の形式で作成する。実行プログラム２には、マーキングされた関数のみを含むので、図１１（２）のコマンドにてマーキングされた関数のみを抽出し、メモリに配置した際の形式で作成する。
【００３７】
上記手順にて作成した実行プログラム１及び実行プログラム２をそのまま画像形成装置１００のＲＯＭ１０４に保存する場合、プログラム生成後の流れは上記実施形態の通りである。また、実行プログラム１及び実行プログラム２のどちらか一方、もしくは両方を圧縮して画像形成装置１００のＲＯＭ１０４に保存する場合、プログラム生成後の流れは上記実施形態における「非動作時の実行プログラム１、２を圧縮する場合」の通りである。
【００３８】
この変形例１によれば、マーキングした関数及び変数の中から、実行プログラム２の作成を関数のみで作成するので、限られた高速メモリをどのように使用すればより効率的かを検証することが容易に行えるようになる。
【００３９】
（上記実施形態の変形例２）
本変形例２においては、上記実施形態におけるマーキングに優先度を持たせる。画像形成装置１００の性能向上のためにＳＲＡＭ１０３に配置したい関数や変数には、それぞれをＳＲＡＭ１０３に配置したときの効果が異なっている。つまり、それぞれどのぐらいの性能向上が見込まれるかが異なっている。
【００４０】
性能向上のためにＳＲＡＭ１０３に配置したいものの中でも優先度があるため、図１２のように、マーキングにも複数種類を準備することができる。図１２は、本変形例２における画像形成装置１００の組み込み制御プログラム（実行プログラム）のＣ言語のソースコード例である。関数や変数に対してマーキングを行う際には、それぞれの効果の大きさから優先度を割り振ったマーキングを適用する。図１２においては、数字の小さいマークを優先度が高いものとしている。
【００４１】
図１３に、マーキングに優先度が設定されており、関数のみをＳＲＡＭに配置する場合のＳＲＡＭ配置用リンカスクリプトを示す。リンカは、リンカスクリプトにのっとり各優先度毎に、入力されたオブジェクトファイルから各セクションを収集する。図１２と図１３に示した例では、.fasttextセクションには、優先度３のものまでが収集され、実行プログラムが生成される。生成された実行プログラムから、実行プログラム１、実行プログラム２を生成する手順からそれ以後の手順に関しては先述の実施形態の通りである。
【００４２】
本変形例２によれば、優先度により高速メモリに配置する関数や変数を変更することができるので、高速メモリの容量変化の際の対応が容易になる。
【００４３】
なお、上述した実施形態（変形例を含む）では、高速動作する主記憶装置としてＳｏＣ１０１が内蔵するＳＲＡＭ１０３を利用した。高速動作する主記憶装置としてＳｏＣ１０１が内蔵するＳＲＡＭ１０３を利用することで、別部品として高価なメモリを搭載する必要がなくなり、製品に搭載の部品を有効活用することができる。
【符号の説明】
【００４４】
１００    画像形成装置
１０１    ＳｏＣ
１０２    ＣＰＵ
１０３    ＳＲＡＭ
１０４    ＲＯＭ
１０５    ＲＡＭ
【先行技術文献】
【特許文献】
【００４５】
【特許文献１】特開平１１−１９４９７３号公報
【特許文献２】特開２０１０−００３０７６号公報
【特許文献３】特開２００５−０２５７２４号公報
【図１】
2013114488.tif 000003
【図２】
2013114488.tif 000004
【図３】
2013114488.tif 000005
【図４】
2013114488.tif 000006
【図５】
2013114488.tif 000007
【図６】
2013114488.tif 000008
【図７】
2013114488.tif 000009
【図８】
2013114488.tif 000010
【図９】
2013114488.tif 000011
【図１０】
2013114488.tif 000012
【図１１】
2013114488.tif 000013
【図１２】
2013114488.tif 000014
【図１３】
2013114488.tif 000015