JP5870043B2 - 起動制御装置、情報機器および起動制御方法 - Google Patents

起動制御装置、情報機器および起動制御方法 Download PDF

Info

Publication number
JP5870043B2
JP5870043B2 JP2012555582A JP2012555582A JP5870043B2 JP 5870043 B2 JP5870043 B2 JP 5870043B2 JP 2012555582 A JP2012555582 A JP 2012555582A JP 2012555582 A JP2012555582 A JP 2012555582A JP 5870043 B2 JP5870043 B2 JP 5870043B2
Authority
JP
Japan
Prior art keywords
instruction
page
transfer
volatile memory
interrupt
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.)
Expired - Fee Related
Application number
JP2012555582A
Other languages
English (en)
Other versions
JPWO2012104950A1 (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.)
Socionext Inc
Original Assignee
Socionext Inc
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 Socionext Inc filed Critical Socionext Inc
Priority to JP2012555582A priority Critical patent/JP5870043B2/ja
Publication of JPWO2012104950A1 publication Critical patent/JPWO2012104950A1/ja
Application granted granted Critical
Publication of JP5870043B2 publication Critical patent/JP5870043B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、命令が記憶されている不揮発性メモリと、不揮発性メモリよりも高速にアクセス可能な揮発性メモリとを備える情報機器の起動を制御する起動制御装置等に関する。
従来、電源投入からシステムが起動するまでの時間を短縮するための装置が種々提案されている。
例えば、特許文献1に開示されている起動高速化装置は、1回目のシステム起動時に、キャッシュメモリから主記憶装置へのアクセスを監視して、電源投入からアクセスが行われるまでのアクセス時間とアクセス先の主記憶装置のアドレスを取得し、取得したアクセス時間とアドレスをテーブルデータとして作成する。起動高速化装置は、2回目以降のシステム起動時に、テーブルデータに含まれるアクセス時間の順序に従って、対応するテーブルデータのアドレスに対応する主記憶装置のアドレスからデータを読み出し、読み出しデータをキャッシュメモリに書き込む。つまり、起動高速化装置は、初期化プログラムを2回目以降に実行する場合、前回の実行時に作成したテーブルデータに含まれるアクセス時間を参照して、順次、テーブルデータに含まれるアドレスに対応する主記憶装置のアドレスからデータを読み出してキャッシュメモリへ書き込む。そのため、基本的に、CPUから主記憶装置へのアクセスは発生せず、初期化プログラムの実行が高速化され、システムの起動時間を短縮することができる。
また、特許文献2に開示されているプログラム起動制御装置では、DMA制御部がフラッシュメモリからシステム起動用のプログラムを読み出し、読み出したシステム起動用のプログラムをダイレクトに外部メモリへ転送する。また、CPUは、DMA制御部によるシステム起動用のプログラムの転送が完了したときに、外部メモリから読み出したシステム起動用のプログラムに従ってシステムの起動を行う。その一方、システム起動と同時並行的に、DMA制御部は、フラッシュメモリからシステム制御用のプログラムを読み出し、読み出したシステム制御用のプログラムを外部メモリへ転送する。このように、システム起動動作とプログラム読み出し動作とを同時並行的に処理するので、システムの起動時間を短縮することができる。
特開2010−231701号公報 特開2008−65434号公報 特開2008−135051号公報
しかし、特許文献1に開示されている起動高速化装置では、前回のシステム起動時に作成したテーブルデータに基づいて、システム起動の高速化のための制御が行われる。このため、1回目のシステム起動時には起動の高速化を図ることができないという課題がある。また、2回目以降のシステム起動時であっても、前回のシステム起動時のキャッシュメモリから主記憶装置へのアクセス順序と異なるアクセス順序でアクセスが行われた場合には、キャッシュミスが発生し、起動の高速化を図ることができないという課題がある。
また、特許文献2に開示されているプログラム起動制御装置では、システム起動用のプログラムをシステム制御用のプログラムよりも優先させて外部メモリに転送し、システム起動用のプログラムを実行することによりシステム起動の高速化を図っている。高速化を行うためには、システム起動用のプログラムとシステム制御用のプログラムとを予め切り分ける必要がある。しかし、大規模システム等においてはそれらのプログラムの切り分けが困難であるという課題がある。
また、特許文献3に開示される電子機器、データ処理方法、及びコンピュータプログラムでは、データコピーが未だ行なわれていないエリアに対するアクセスを検出するとNMI割り込みハンドラ処理によりデータコピーを行なうが、アクセスを検出するにはMMU(Memory Management Unit)のようなメモリ保護ユニットがハードウェアとして実装されていなければ実現できないという課題がある。
本発明は上述の課題を解決するためになされたものであり、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる起動制御装置等を提供することを目的とする。
上記目的を達成するために、本発明のある局面に係る起動制御装置は、命令が記憶されている不揮発性メモリと、前記不揮発性メモリよりも高速にアクセス可能な揮発性メモリとを備える情報機器の起動を制御する起動制御装置であって、前記不揮発性メモリに記憶されている前記命令が書き込まれる前記揮発性メモリの領域である命令領域に含まれるページのうち、命令が書き込まれていないページに、ソフトウェア割り込みを発生させるためのコードである割り込み発生コードを書き込むコード書き込み部と、前記割り込み発生コードによるソフトウェア割り込みの発生時に、当該ソフトウェア割り込みを発生させた前記割り込み発生コードが記憶されているページである該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送する命令転送部と、前記命令領域に記憶されている命令を実行するとともに、前記割り込み発生コードが実行された場合に、ソフトウェア割り込みを発生させる命令実行部とを備える。
この構成によると、コード書き込み部により、命令領域に含まれるページのうち、命令が書き込まれていないページに割り込み発生コードが書き込まれる。このため、命令領域に命令が記憶されている場合には、その命令が実行されるが、命令が記憶されていない場合には、上記コードが実行されることによりソフトウェア割り込みが発生する。ソフトウェア割り込み処理では、該当ページに命令の転送が行なわれる。このため、割り込み処理後には、正常に命令を実行することができる。このように、命令実行と命令転送とを同時並行的に行うことができる。このため、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる。なお、ここで言うシステムとは、情報機器のことである。
好ましくは、前記揮発性メモリは、さらに、前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページを示す転送管理テーブルデータを記憶しており、前記命令転送部は、前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を未転送であると判断することができる場合、前記該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送し、前記転送管理テーブルデータを更新する。
この構成によると、転送管理テーブルデータを参照することにより、命令の転送の有無を判断することができる。例えば、デバッグ作業におけるブレークポイントを指定するためなどのように、割り込みを発生させるのとは異なる目的でプログラム中に割り込み発生コードが埋め込まれている場合がある。このような場合には、ブレークポイントにおけるコードを実行することにより命令を転送する必要はないが、命令の転送の有無を判断する手段がない場合には、命令が転送されてしまう。このような場合に、転送管理テーブルデータを参照することにより、命令を転送すべきであるのか否かを適切に判断することができる。
また、前記命令転送部は、(i)命令を未転送のページに配置された前記割り込み発生コードによるソフトウェア割り込みの発生時に、前記該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送するとともに、前記該当ページの直後に隣接するページに命令が未転送の場合には、前記該当ページと前記直後に隣接するページとの間に跨って配置される命令に前記割り込み発生コードを書き込み、(ii)前記跨って配置される命令に書き込まれた前記割り込み発生コードによるソフトウェア割り込みの発生時に、前記跨って配置される命令の直後のページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記跨って配置される命令の直後のページに転送してもよい。
具体的には、前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)ページを跨って配置される命令であるページ境界命令の、前記揮発性メモリ上でのアドレスとを示す転送管理テーブルデータを記憶しており、前記命令転送部は、(i)前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を未転送であると判断することができる場合、前記該当ページを転送対象ページとし、(ii)前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を転送済みであると判断することができる場合、前記該当ページの直後に隣接するページを転送対象ページとし、(iii)前記転送対象ページとされた前記該当ページまたは前記該当ページの直後に隣接するページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記転送対象ページに転送し、前記転送管理テーブルデータを更新する転送部と、前記転送部による処理の後に、前記転送管理テーブルデータを参照することにより、前記転送対象ページのアドレスにページ境界命令のアドレスが含まれ、かつ前記転送対象ページの直後に隣接するページである直後ページに命令を未転送であると判断することができる場合、割り込み発生コードを、前記転送対象ページのページ境界命令のアドレスに書き込む第1コード書き込み部と、前記転送部による処理の後に、前記転送管理テーブルデータを参照することにより、前記転送対象ページの直前に隣接するページである直前ページのアドレスにページ境界命令のアドレスが含まれ、かつ前記直前ページに命令を転送済みであると判断することができる場合、前記直前ページのページ境界命令のアドレスに、ページ境界命令を書き込む第2コード書き込み部とを有する。
転送対象ページに命令が転送された場合に、隣接するページに命令が未転送であれば、転送対象ページと隣接するページとの間に跨って配置されているページ境界命令は、本来のページ境界命令とは異なる命令となっている。このため、そのページ境界命令のアドレスに割り込み発生コードを記憶しておくことにより、誤ったページ境界命令が実行されるのを防止することができる。
また、前記命令転送部は、さらに、前記命令実行部がアイドル状態である場合に、命令を未転送であるページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記命令を未転送であるページに転送してもよい。
具体的には、前記揮発性メモリは、さらに、前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページを示す転送管理テーブルデータを記憶しており、前記命令転送部は、さらに、前記命令実行部がアイドル状態である場合に前記転送管理テーブルデータを参照することにより、命令を未転送であるページを検出し、検出したページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記検出したページに転送し、前記転送管理テーブルデータを更新する。
命令実行部がアイドル状態である場合に先回りして命令を転送することにより、ソフトウェア割り込みの発生回数を少なくすることができる。よって、システム起動を高速化することができる。
また、前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)前記不揮発性メモリから前記揮発性メモリへのページ単位の命令の転送順序とを示す転送管理テーブルデータを記憶しており、前記命令転送部は、前記転送管理テーブルデータを参照することにより、前記命令実行部がアイドル状態である場合または命令の実行が開始されるよりも前に、前記転送管理テーブルデータが示す転送順序に従って、命令を未転送であるページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記命令を未転送であるページに転送し、前記転送管理テーブルデータを更新してもよい。
不揮発性メモリから揮発性メモリへの命令の転送順序に従って、命令を転送することにより、命令の実行順序がある程度決まっているようなプログラムについては、先回りした命令の転送を効果的に行うことができる。つまり、先回りして転送した命令が実行されずに他の割り込み発生コードが実行されることによるソフトウェア割り込みの発生を低減させることができ、先回りして転送した命令がその命令の転送時から早い段階で実行されることになり、システム起動を高速化することができる。
また、前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)ページごとに前記不揮発性メモリから前記揮発性メモリへの命令の転送時点において割り込みを禁止していたか否かを示す状態である割り込み禁止状態とを示す転送管理テーブルデータを記憶しており、前記命令転送部は、前記転送管理テーブルデータを参照することにより、命令の転送時に割り込み禁止状態であったページである割り込み禁止ページについては、当該割り込み禁止ページに記憶されるべき命令が実行されるよりも前に、当該割り込み禁止ページに記憶されるべき命令を、前記揮発性メモリから前記揮発性メモリの前記割り込み禁止ページに転送し、前記転送管理テーブルデータを更新してもよい。
割り込み禁止ページに記憶される命令を、その命令が実行されるよりも前に転送することにより、割り込み発生コードの実行によるソフトウェア割り込みの発生時に、割り込み禁止期間が本来の期間に加え、ソフトウェア割り込み処理、及びソフトウェア割り込み処理内で行なわれる転送処理分、増加することによる割り込み応答性の劣化を防ぐことができる。このため、システムの割り込み応答性を劣化させることなくシステム起動を高速化することができる。
また、上述の起動制御装置は、さらに、前記命令転送部が実行する処理のプログラムを、前記命令転送部による処理の開始前に前記揮発性メモリに書き込む割り込み処理プログラム転送部を備えていてもよい。
また、前記割り込み発生コードは、前記命令実行部に実装される命令セットに含まれるソフトウェア割り込み命令であってもよい。
また、前記割り込み発生コードは、前記命令実行部に実装される命令セットには含まれない、例外処理を引き起こす未定義のコードであってもよい。
命令の転送処理を例外処理として取り扱うことができる。
また、上述の起動制御装置は、さらに、前記命令実行部による前記命令の実行開始前に、前記不揮発性メモリに記憶されている定数データを、前記揮発性メモリに転送するデータ転送部を備えていてもよい。
本発明の他の局面に係る情報機器は、命令が記憶されている不揮発性メモリと、不揮発性メモリよりも高速にアクセス可能な揮発性メモリと、上述の起動制御装置とを備える。
この構成によると、コード書き込み部により命令領域に含まれるページのうち、命令が書き込まれていないページに割り込み発生コードが書き込まれる。このため、命令領域に命令が記憶されている場合には、その命令が実行されるが、命令が記憶されていない場合には、上記コードが実行されることによりソフトウェア割り込みが発生する。ソフトウェア割り込み処理では、該当ページに命令の転送が行なわれる。このため、割り込み処理後には、正常に命令を実行することができる。このように、命令実行と命令転送とを平行して行うことができるため、同時並行的に行うことができる。このため、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる。なお、ここで言うシステムとは、情報機器のことである。情報機器は、デジタルスチルカメラ、デジタルテレビ、携帯電話機、PDA(Personal Digital Assistant)など、不揮発性メモリに記憶されている命令を揮発性メモリに転送した上で実行する機器であればどのような機器であっても良い。
なお、本発明は、このような特徴的な処理部を備える転送制御装置として実現することができるだけでなく、転送制御装置に含まれる特徴的な処理部が実行する処理をステップとする転送制御方法として実現することができる。また、転送制御装置に含まれる特徴的な処理部としてコンピュータを機能させるためのプログラムまたは転送制御方法に含まれる特徴的なステップをコンピュータに実行させるプログラムとして実現することもできる。そして、そのようなプログラムを、CD−ROM(Compact Disc−Read Only Memory)等のコンピュータ読取可能な非一時的な記録媒体やインターネット等の通信ネットワークを介して流通させることができるのは、言うまでもない。
本発明によると、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる。
図1は、本発明の実施の形態1に係る情報機器の機能的な構成を示すブロック図である。 図2は、情報機器の起動時の処理のフローチャートである。 図3は、データ転送部が実行するデータ転送処理を説明するための図である。 図4は、コード書き込み部が実行するソフトウェア割り込み命令の書き込み処理を説明するための図である。 図5は、プログラム実行処理(図2のS104)の詳細なフローチャートである。 図6は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。 図7は、命令領域に記憶されている命令の一例を示す図である。 図8は、命令領域に記憶されている命令の一例を示す図である。 図9は、命令領域に記憶されている命令の一例を示す図である。 図10は、本発明の実施の形態2に係る情報機器の機能的な構成を示すブロック図である。 図11は、転送管理テーブルデータの一例を示す図である。 図12は、情報機器の起動時の処理のフローチャートである。 図13は、転送管理テーブルデータの一例を示す図である。 図14は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。 図15は、転送管理テーブルデータの一例を示す図である。 図16は、転送管理テーブルデータの一例を示す図である。 図17は、ページ境界命令について説明するための図である。 図18は、本発明の実施の形態3に係る情報機器の機能的な構成を示すブロック図である。 図19は、転送管理テーブルデータの一例を示す図である。 図20は、境界命令アドレスデータの一例を示す図である。 図21は、情報機器の起動時の処理のフローチャートである。 図22は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。 図23は、ソフトウェア割り込み命令実行時の処理を説明するための図である。 図24は、ソフトウェア割り込み命令実行時の処理を説明するための図である。 図25は、命令転送処理(図22のS306)の詳細なフローチャートである。 図26は、転送管理テーブルデータの一例を示す図である。 図27は、転送管理テーブルデータの一例を示す図である。 図28は、転送管理テーブルデータの一例を示す図である。 図29は、命令実行部がアイドル状態のときに実行される処理を示すフローチャートである。 図30は、命令領域に記憶されている命令の一例を示す図である。 図31は、転送管理テーブルデータの一例を示す図である。 図32は、命令領域に記憶されている命令の一例を示す図である。 図33は、転送管理テーブルデータの一例を示す図である。 図34は、命令領域に記憶されている命令の一例を示す図である。 図35は、転送管理テーブルデータの一例を示す図である。 図36は、本発明の実施の形態5に係る情報機器の機能的な構成を示すブロック図である。 図37は、転送管理テーブルデータの一例を示す図である。 図38は、命令の転送順序の一例を示す図である。 図39は、転送順序データの一例を示す図である。 図40は、情報機器の起動時の処理のフローチャートである。 図41は、転送管理テーブルデータの一例を示す図である。 図42は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。 図43は、2回目以降の起動時に命令実行部がアイドル状態のときに命令転送部が実行する処理を示すフローチャートである。 図44は、命令領域に記憶されている命令の一例を示す図である。 図45は、実施の形態5の変形例に係る情報機器の起動時の処理のフローチャートである。 図46は、本発明の実施の形態6に係る情報機器の機能的な構成を示すブロック図である。 図47は、転送管理テーブルデータの一例を示す図である。 図48は、命令転送時の割り込み禁止状態の一例を示す図である。 図49は、割り込み禁止状態データの一例を示す図である。 図50は、情報機器の起動時の処理のフローチャートである。 図51は、転送管理テーブルデータの一例を示す図である。 図52は、割り込み禁止ページに命令をすべて転送した後の命令領域に記憶されている命令の一例を示す図である。 図53は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
以下、本発明の実施の形態に係る情報機器について説明する。なお、以下で説明する実施の形態は、いずれも本発明の好ましい一具体例を示すものである。以下の実施の形態で示される数値、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。本発明は、請求の範囲だけによって限定される。よって、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、本発明の課題を達成するのに必ずしも必要ではないが、より好ましい形態を構成するものとして説明される。
(実施の形態1)
図1は、本発明の実施の形態1に係る情報機器の機能的な構成を示すブロック図である。
情報機器10は、プログラムを実行する装置であり、CPU100と、揮発性メモリ200と、不揮発性メモリ300とを備える。CPU100、揮発性メモリ200および不揮発性メモリ300は、バス400を介して相互に接続される。
CPU100は、プログラムを実行する処理部であり、情報機器10の起動を制御する起動制御装置としての役割を果たす。揮発性メモリ200は、CPU100で実行されるプログラムを記憶する揮発性メモリであり、例えば、DRAM(Dynamic Random Access Memory)等である。不揮発性メモリ300は、揮発性メモリ200に転送されCPU100で実行されるプログラムを記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリまたはNOR型フラッシュメモリ等である。揮発性メモリ200は、不揮発性メモリ300よりも高速にアクセス可能である。
揮発性メモリ200は、命令領域202とデータ領域203とを含む。命令領域202には、CPU100の命令実行部102で実行される命令が記憶され、データ領域203には、CPU100の命令実行部102で実行されるプログラムによってアクセスされるデータが記憶される。
不揮発性メモリ300は、命令領域302とデータ領域303とを含む。命令領域302には、CPU100の命令実行部102で実行されるプログラムのうち、命令領域202に転送される命令が記憶され、データ領域303には、CPU100の命令実行部102で実行されるプログラムのうち、データ領域203に転送されるデータが記憶される。
CPU100は、機能的にコード書き込み部101と、命令実行部102と、命令転送部103と、割り込み処理プログラム転送部104と、データ転送部105とを備える。つまり、CPU100がプログラムを実行することにより、各処理がコード書き込み部101と、命令実行部102と、命令転送部103と、割り込み処理プログラム転送部104と、データ転送部105としての役割を果たす。
コード書き込み部101は、不揮発性メモリ300に記憶されている命令が書き込まれる揮発性メモリ200の領域である命令領域202に含まれるページのうち、命令が書き込まれていないページに、ソフトウェア割り込みを発生させるためのコードである割り込み発生コードを書き込む。
命令実行部102は、命令領域202に記憶されている命令を実行するとともに、割り込み発生コードが実行された場合に、ソフトウェア割り込みを発生させる。
命令転送部103は、割り込み発生コードによるソフトウェア割り込みの発生時に、当該ソフトウェア割り込みを発生させた割り込み発生コードが記憶されているページである該当ページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリの該当ページに転送する。
割り込み処理プログラム転送部104は、命令転送部103が実行する処理のプログラムを、命令転送部103による処理の開始前に揮発性メモリ200に書き込む。
データ転送部105は、命令実行部102による命令の実行開始前に、不揮発性メモリ300に記憶されている定数データを、揮発性メモリ200に転送する。
以下、具体例を示しながら、情報機器10の起動時の処理について説明する。
図2は、情報機器10の起動時の処理のフローチャートである。
情報機器10に電源が投入されると、割り込み処理プログラム転送部104は、命令転送部103が実行する処理のプログラムを、命令転送部103による処理の開始前に揮発性メモリ200に書き込む(S101)。命令転送部103が実行する処理については後で詳述する。命令転送部103が実行する処理のプログラムは、不揮発性メモリ300に記憶されており、割り込み処理プログラム転送部104がそのプログラムを不揮発性メモリ300から揮発性メモリ200に転送するようにしてもよい。また、命令転送部103が実行する処理のプログラムが情報機器10内のROMまたはフラッシュメモリに記憶されており、割り込み処理プログラム転送部104がそのプログラムをROMから揮発性メモリ200に転送するようにしてもよい。
次に、データ転送部105は、命令実行部102による命令の実行開始前に、不揮発性メモリ300に記憶されている定数データを、揮発性メモリ200に転送する(S102)。図3に示されるように、不揮発性メモリ300の命令領域302には、CPU100の命令実行部102で実行されるプログラムのうち、命令領域202に転送される命令が記憶され、データ領域303には、CPU100の命令実行部102で実行されるプログラムのうち、データ領域203に転送されるデータが記憶されている。データ転送部105は、このうち、データ領域303に記憶されているデータを読み出し、読み出したデータを揮発性メモリ200のデータ領域203に書き込む。データ領域203に書き込まれるデータは、変数の初期値データなどの定数データなどである。この時点では、命令領域202には何も命令が書き込まれていない。
再度図2を参照して、コード書き込み部101は、不揮発性メモリ300に記憶されている命令が書き込まれる揮発性メモリ200の領域である命令領域202に含まれるページのうち、命令が書き込まれていないページに、割り込み発生コードを書き込む(S103)。以下の説明では、割り込み発生コードが、命令実行部102(CPU100)に実装される命令セットに含まれるソフトウェア割り込み命令であるものとする。
例えば、図3に示すように命令領域202には何も命令が書き込まれていない状態であるとする。この場合には、図4に示すように、コード書き込み部101は、命令領域202のすべてのページ(例えば、ページA〜F)にソフトウェア割り込み命令を書き込む。以降の説明ではソフトウェア割り込み命令を「pi」で示すものとし、ソフトウェア割り込み命令piは、典型的には命令セットにおいて表現可能な最小命令長の命令であるものとする。以降、ソフトウェア割り込み命令piは機械語コード「ff」であらわされる1バイト命令として説明する。コード書き込み部101は、ページA〜Fのすべてのバイトにソフトウェア割り込み命令piを書き込む。なお、命令領域202の一部に他のプログラムの命令やデータなどが予め記憶されている場合には、その部分にはソフトウェア割り込み命令piを書き込まないようにする。また、不揮発性メモリ300の命令領域302に記憶されている命令中にはソフトウェア割り込み命令piは登場しないものとする。
再度図2を参照して、命令実行部102は、命令領域202に記憶されている命令を実行するとともに、ソフトウェア割り込み命令piが実行された場合に、ソフトウェア割り込みを発生させる(S104)。プログラム実行処理(S104)の詳細については、後述する。
図5は、プログラム実行処理(図2のS104)の詳細なフローチャートである。
命令実行部102は、プログラムカウンタが示す揮発性メモリ200のアドレスに記憶されている命令をデコードする(S201)。
デコードした命令がソフトウェア割り込み命令piの場合には(S202でYES)、命令実行部102は、ソフトウェア割り込みを発生させ、ソフトウェア割り込みに応答し、命令転送部103がソフトウェア割り込み処理を実行する(S203)。
図6は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
命令転送部103は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に、ソフトウェア割り込みを発生させたソフトウェア割り込み命令piが記憶されているページである該当ページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリの該当ページに転送する(S301)。
例えば、図7に示すように命令領域202のページAに命令が転送済みであり、その他のページ(ページB〜F)にはソフトウェア割り込み命令piが書き込まれている状態を考える。この状態で、ページAの最後のjmp命令によりページAからページDへジャンプしたとする。すると、図8に示されるようにページDのソフトウェア割り込み命令piがデコードされるので、命令実行部102はソフトウェア割り込みを発生させる。このソフトウェア割り込みに応答して、命令転送部103がページDに命令を転送するので、図9に示すようにページDに命令が転送された状態となる。
ここで本実施の形態では、プログラムカウンタの値は、ソフトウェア割り込み発生時にスタックに書き込まれているものとし、ソフトウェア割り込み処理終了後にはスタックからプログラムカウンタに書き戻されるものとするが、プログラムカウンタ退避用のレジスタが用意されている場合には、そのレジスタを用いた退避、復帰を行なってもよい。再度図5を参照して、ソフトウェア割り込み処理(S203)の後、プログラムが終了するまで命令デコード処理(S201)以降の処理が繰り返される。つまり、プログラムカウンタはソフトウェア割り込みを行ったソフトウェア割り込み命令piが記憶されていたアドレスを記憶しているので、そのアドレスに記憶されている命令のデコードから処理が再開される。
デコードした命令が通常の命令の場合には(S202でNO)、命令実行部102は、デコードした命令を実行する(S204)。命令実行後にプログラムカウンタの値は次の命令のアドレスに書き換えられる。その後、プログラムが終了するまで命令コード処理(S201)以降の処理が繰り返される。
以上説明したように、実施の形態1に係る情報機器10によると、コード書き込み部101により、命令領域202に含まれるページのうち、命令が書き込まれていないページに割り込み発生コード(ソフトウェア割り込み命令pi)が書き込まれる。このため、命令領域202にソフトウェア割り込み命令pi以外の命令が記憶されている場合には、その命令が実行されるが、ソフトウェア割り込み命令piが記憶されている場合には、上記ソフトウェア割り込み命令piが実行されることによりソフトウェア割り込みが発生する。ソフトウェア割り込み処理では、該当ページに命令の転送が行なわれる。このため、割り込み処理後には、正常に命令を実行することができる。このように、命令実行と命令転送とを同時並行的に行うことができる。このため、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる。
なお、コード書き込み部101と、命令転送部103と、割り込み処理プログラム転送部104と、データ転送部105はCPU内にハードウェアとして実装されている必要は必ずしもなく、同等の機能を果たすソフトウェアとして実装することとしてもよい。
(実施の形態2)
次に、本発明の実施の形態2に係る情報機器について説明する。
実施の形態1では、不揮発性メモリ300の命令領域302に記憶されている命令中にはソフトウェア割り込み命令piは登場しないものとした。これに対して、実施の形態2では、命令領域302に記憶されている命令中にソフトウェア割り込み命令piが登場してもよいものとする。これは、デバッグ作業におけるブレークポイントを指定するためなどのように、割り込みを発生させるのとは異なる目的でプログラム中にソフトウェア割り込み命令piが埋め込まれている場合を想定したものである。つまり、以下に説明する転送管理テーブルを用いることにより、実行対象とされているソフトウェア割り込み命令piが、割り込みを発生させる目的でコード書き込み部101により書き込まれたものであるのか否かを判断する点が実施の形態1とは異なる。
図10は、本発明の実施の形態2に係る情報機器の機能的な構成を示すブロック図である。以下の説明では、実施の形態1と同様の構成部については同一の参照符号を付す。その機能および名称も同一であるため適宜説明を省略する。
情報機器20は、プログラムを実行する装置であり、CPU110と、揮発性メモリ210と、不揮発性メモリ300とを備える。CPU110、揮発性メモリ210および不揮発性メモリ300は、バス400を介して相互に接続される。
CPU110は、プログラムを実行する処理部であり、情報機器20の起動を制御する起動制御装置としての役割を果たす。揮発性メモリ210は、CPU110で実行されるプログラムを記憶する揮発性メモリであり、例えば、DRAM等である。揮発性メモリ210は、不揮発性メモリ300よりも高速にアクセス可能である。
揮発性メモリ210は、命令領域202と、データ領域203とを含み、その他に転送管理テーブルデータ204を記憶している。転送管理テーブルデータ204は、不揮発性メモリ300から揮発性メモリ200に命令を転送済みである、命令領域202に含まれるページを示すデータである。図11は、転送管理テーブルデータ204の一例を示す図である。転送管理テーブルデータ204は、ページごとに転送管理フラグを記憶しており、転送管理フラグが1のページには、不揮発性メモリ300から揮発性メモリ200に命令を転送済みであることを示し、転送管理フラグが0のページには、不揮発性メモリ300から揮発性メモリ200に命令を未転送であることを示す。図11の例では、ページA、B、EおよびFには、不揮発性メモリ300から揮発性メモリ200に命令を転送済みであることが示され、ページCおよびDには、不揮発性メモリ300から揮発性メモリ200に命令を未転送であることが示されている。転送管理テーブルデータ204は、図10の例には限定されず、例えば、転送管理テーブルデータ204が命令を転送済みのページ名のみを含んでいても良いし、命令を未転送のページ名のみを含んでいても良い。
CPU110は、コード書き込み部101と、命令実行部102と、命令転送部113と、割り込み処理プログラム転送部104と、データ転送部105とを備える。
命令転送部113は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ204を参照することにより、ソフトウェア割り込みを発生させたコードである割り込み発生コードが記憶されているページである該当ページに命令を未転送であると判断することができる場合、上記該当ページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリ200の上記該当ページに転送し、転送管理テーブルデータ204を更新する。
以下、具体例を示しながら情報機器20の起動時の処理について説明する。以下の説明では、実施の形態1と同様のステップについては同一のステップ番号を付し、適宜説明を省略する。
図12は、情報機器20の起動時の処理のフローチャートである。
処理の流れは、図2に示した情報機器10の起動時と同じである。ただし、プログラム実行処理(S104)が開始されるまでの間に、命令実行部102は、転送管理テーブルデータ204の初期化を行う(S105)。つまり、命令実行部102は、転送管理テーブルデータ204において、命令が未転送のページの転送管理フラグを0に設定する。例えば、命令領域202にページA〜Fが含まれ、すべてのページに命令を未転送であれば、命令実行部102は、図13に示すようにページA〜Fの転送管理フラグを0に設定する。
プログラム実行処理(S104)の詳細は、図5に示したものと同様である。ただし、プログラム実行処理(S104)中で実行されるソフトウェア割り込み処理(図5のS203)が実施の形態1とは異なる。
図14は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
命令転送部113は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ204を参照することにより、該当ページに命令を未転送であるか否かを判断する(S302)。
該当ページに命令を未転送であれば(S302でYES)、命令転送部113は、該当ページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリの該当ページに転送する(S301)。その後、命令転送部113は、転送管理テーブルデータ204を更新する(S303)。つまり、該当ページの転送管理フラグを0から1に変更する。例えば、図7に示した命令領域202の状態では、転送管理テーブルデータ204は図15のようになる。その後、図9に示すようにページDのソフトウェア割り込み命令piによりソフトウェア割り込みが発生し、ページDに命令が転送された後は、転送管理テーブルデータ204は図16のようになる。つまり、ページDの転送管理フラグが1から0に変更される。
該当ページに命令を転送済みであれば(S302でNO)、命令転送部113は、割り込み処理を終了する。該当ページに命令を転送済みであるということは、デバッグ作業におけるブレークポイントを指定するためにプログラム中に埋め込まれたソフトウェア割り込み命令piによりソフトウェア割り込みが行われた状況を示している。このような状況では、既に命令を転送済みであり、命令を転送する必要がないため、命令を転送しないようにする。
以上説明したように、実施の形態2に係る情報機器20によると、転送管理テーブルデータ204を参照することにより、命令の転送の有無を判断することができる。例えば、デバッグ作業におけるブレークポイントを指定するためなどのように、割り込みを発生させるのとは異なる目的でプログラム中にソフトウェア割り込み命令piが埋め込まれている場合がある。このような場合には、ブレークポイントにおけるソフトウェア割り込み命令piを実行することにより命令を転送する必要はないが、命令の転送の有無を判断する手段がない場合には、命令が転送されてしまう。このような場合に、転送管理テーブルデータ204を参照することにより、命令を転送すべきであるのか否かを適切に判断することができる。
また、情報機器20は、実施の形態1に係る情報機器10と同様に、命令実行と命令転送とを同時並行的に行うことができる。このため、プログラムの種別に応じたプログラムの切り分けを必要とせず、1回目のシステム起動時からシステム起動を高速化することができる。
なお、ソフトウェア割り込み命令piの代わりに割り込み発生コードとしてシステムコール例外を発生させるための命令を用いる場合においては、プログラム中にシステムコール例外を発生させるための命令が登場する場合がある。このような場合にも、転送管理テーブルを用いることにより、実行対象とされているシステムコール例外を発生させるための命令が、システムコール例外を発生させる目的でコード書き込み部101により書き込まれたものであるのか否かを判断することができる。
なお、ソフトウェア割り込み命令piを割り込みを発生させる目的のみに使用する場合には、転送管理テーブルデータ204は不要である。このため、そのような場合には、実施の形態1に示した情報機器10を用いればよい。
(実施の形態3)
次に、本発明の実施の形態3に係る情報機器について説明する。
例えば、図17(a)に示すように、揮発性メモリの命令領域に、2つのページ(例えば、ページAとページB)のページ境界に跨って命令が配置される場合がある。このような命令を、以下ではページ境界命令と言う。図17(a)の例では、ページ境界命令は、「sub 100,d0」である。このとき、図17(b)に示すように、一方のページ(例えば、ページA)のみに命令が転送され、他方のページ(例えば、ページB)に命令が転送されていないとすると、ページ境界命令の一部の値がソフトウェア割り込み命令piで書き換えられていることとなる。このため、本来のページ境界命令とは異なるページ境界命令「sub 0xffff,a3」が命令領域に記憶されることとなり、このようなページ境界命令を実行してしまうと誤った結果が導き出されたり、情報機器の誤作動を引き起こしたりしてしまう。このため、実施の形態3では、本来のページ境界命令とは異なるページ境界命令が実行されてしまうのを防止する仕組みを備えている。なお、ページ境界命令は、命令が可変長命令である場合や、固定長命令であっても先頭の命令がアラインメントされていない位置に配置されるためにページ間を跨って命令が配置される場合に生じる。換言すれば、命令領域に固定長命令がアラインメントされて配置されていれば、このような問題は生じない。このため、このような場合には、実施の形態1または2で説明した情報機器を用いることができる。
図18は、本発明の実施の形態3に係る情報機器の機能的な構成を示すブロック図である。以下の説明では、上述の実施の形態と同様の構成部については同一の参照符号を付す。その機能および名称も同一であるため適宜説明を省略する。
情報機器30は、プログラムを実行する装置であり、CPU120と、揮発性メモリ220と、不揮発性メモリ310とを備える。CPU120、揮発性メモリ220および不揮発性メモリ310は、バス400を介して相互に接続される。
CPU120は、プログラムを実行する処理部であり、情報機器30の起動を制御する起動制御装置としての役割を果たす。揮発性メモリ220は、CPU120で実行されるプログラムを記憶する揮発性メモリであり、例えば、DRAM等である。不揮発性メモリ310は、揮発性メモリ220に転送されCPU120で実行されるプログラムを記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリまたはNOR型フラッシュメモリ等である。揮発性メモリ220は、不揮発性メモリ310よりも高速にアクセス可能である。
揮発性メモリ220は、命令領域202と、データ領域203とを含み、その他に転送管理テーブルデータ205を記憶している。転送管理テーブルデータ205は、(i)不揮発性メモリ310から揮発性メモリ220に命令を転送済みである、命令領域202に含まれるページと、(ii)ページ境界命令の、揮発性メモリ220上でのアドレスとを示すデータである。図19は、転送管理テーブルデータ205の一例を示す図である。転送管理テーブルデータ205は、ページごとに、転送管理フラグと、境界命令有無フラグと、境界命令アドレスと、先頭コードとを記憶している。転送管理フラグは、実施の形態2に示したものと同様であるため説明は繰り返さない。境界命令有無フラグは、1がそのページと次のページに跨るページ境界命令が存在することを示し、0が存在しないことを示す。境界命令アドレスは、ページ境界命令の先頭アドレスを示す。先頭コードは、ページ境界命令の先頭コードを示す。本実施の形態ではページサイズを256バイトとして説明するが、任意のページサイズでも同様の方法で実施可能である。
不揮発性メモリ310は、命令領域302と、データ領域303を含み、その他に境界命令アドレスデータ304を記憶している。境界命令アドレスデータ304は、ページ境界命令の、揮発性メモリ220上でのアドレスを示すデータである。例えば、図20に示すように、境界命令アドレスデータ304は、ページごとに、境界命令有無フラグと境界命令アドレスとを記憶している。境界命令有無フラグと境界命令アドレスとは図19で説明したものと同様である。なお、本実施の形態では、命令領域302に記憶される命令中には割り込み発生コードは含まれないものとする。なお、境界命令アドレスデータ304は、予め作成されており、例えば、コンパイラが、命令領域302に記憶される命令に対応するプログラムのコンパイル時に作成するようにしてもよい。なお、境界命令アドレスデータ304を転送管理テーブルデータ205に転送するのではなく、境界命令アドレスデータ304を動的に生成するようにしてもよい。この場合には、ページ境界のアドレスから所定バイト数前のアドレスからページ境界のアドレスまでの範囲に含まれる命令のみをデコードし、ページ境界命令が含まれるか否かの判断を行うようにしても良い。このとき、所定バイト数は、1命令の最大バイト数とすればよい。
CPU120は、コード書き込み部101と、命令実行部102と、命令転送部114と、割り込み処理プログラム転送部104と、データ転送部105とを備える。
命令転送部114は、(i)命令を未転送のページに配置された割り込み発生コード(ソフトウェア割り込み命令pi)によるソフトウェア割り込みの発生時に、該当ページに記憶されるべき命令を、不揮発性メモリ310から揮発性メモリ220の該当ページに転送するとともに、該当ページの直後に隣接するページに命令が未転送の場合には、該当ページと直後に隣接するページとの間に跨って配置されるプログラム境界命令にソフトウェア割り込み命令piを書き込み、(ii)プログラム境界命令に書き込まれたソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に、プログラム境界命令の直後のページに記憶されるべき命令を、不揮発性メモリ310から揮発性メモリ220の上記プログラム境界命令の直後のページに転送する。
命令転送部114は、転送部115と、第1コード書き込み部116と、第2コード書き込み部117とを備える。
転送部115は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ205を参照することにより、該当ページに命令を未転送であると判断することができる場合、該当ページを転送対象ページとし、(ii)ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ205を参照することにより、該当ページに命令を転送済みであると判断することができる場合、該当ページの直後に隣接するページを転送対象ページとし、(iii)転送対象ページとされた該当ページまたは該当ページの直後に隣接するページに記憶されるべき命令を、不揮発性メモリ310から揮発性メモリ220の転送対象ページに転送し、転送管理テーブルデータ205を更新する。
第1コード書き込み部116は、転送部115による処理の後に、転送管理テーブルデータ205を参照することにより、転送対象ページのアドレスにページ境界命令のアドレスが含まれ、かつ転送対象ページの直後に隣接するページである直後ページに命令を未転送であると判断することができる場合、ソフトウェア割り込み命令piを、転送対象ページのページ境界命令のアドレスに書き込む。
第2コード書き込み部117は、転送部115による処理の後に、転送管理テーブルデータ205を参照することにより、転送対象ページの直前に隣接するページである直前ページのアドレスにページ境界命令のアドレスが含まれ、かつ直前ページに命令を転送済みであると判断することができる場合、直前ページのページ境界命令のアドレスに、ページ境界命令を書き込む。
なお、データ転送部105は、さらに、不揮発性メモリ310に記憶されている境界命令アドレスデータ304を、揮発性メモリ220の転送管理テーブルデータ205に転送する。
以下、具体例を示しながら情報機器30の起動時の処理について説明する。以下の説明では、上述の実施の形態と同様のステップについては同一のステップ番号を付し、適宜説明を省略する。
図21は、情報機器30の起動時の処理のフローチャートである。
処理の流れは、図12に示した情報機器20の起動時の処理の流れと同じである。ただし、プログラム実行処理(S104)が開始されるまでの間に、データ転送部105は、不揮発性メモリ310に記憶されている境界命令アドレスデータ304を、揮発性メモリ220の転送管理テーブルデータ205に転送する。例えば、図20に示す境界命令アドレスデータ304を、転送管理テーブルデータ205に転送することにより、図19に示す転送管理テーブルデータ205が得られる。
プログラム実行処理(S104)の詳細は、図5に示したものと同様である。ただし、プログラム実行処理(S104)中で実行されるソフトウェア割り込み処理(図5のS203)が実施の形態1とは異なる。
図22は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
転送部115は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ205を参照することにより、該当ページに命令を未転送であるか否かを判断する(S302)。
該当ページに命令を未転送であれば(S302でYES)、転送部115は、該当ページを転送対象ページと決定する(S304)。例えば、図23(a)に示すように、ページCのソフトウェア割り込み命令1801(ソフトウェア割り込み命令pi)の実行によりソフトウェア割り込みが発生した場合には、該当ページであるページCが命令の転送対象ページと決定される。
該当ページに命令を転送済みであれば(S302でNO)、該当ページの直後に隣接するページを転送対象ページと決定する(S305)。例えば、図24(a)に示すように、ページCのページ境界命令1802の先頭アドレス1803に位置するソフトウェア割り込み命令piの実行によりソフトウェア割り込みが発生し、ページCに命令を転送済みであれば、後述するようにページCの先頭アドレス1803に位置するソフトウェア割り込み命令piは、元々、ページ境界命令であったものがソフトウェア割り込み命令piに書き換えられたものである。このため、ページCの直後に隣接するページDが命令の転送対象ページと決定される。このように転送対象ページを決定する理由については後述する。
転送部115、第1コード書き込み部116および第2コード書き込み部117は、転送対象ページとされた該当ページまたは該当ページの直後に隣接するページに記憶されるべき命令を、不揮発性メモリ310から揮発性メモリ220の転送対象ページに転送し、転送管理テーブルデータ205を更新する(S306)。
命令転送処理(図22のS306)の詳細について、次に説明する。図25は、命令転送処理(図22のS306)の詳細なフローチャートである。
転送部115は、転送対象ページとされた該当ページまたは該当ページの直後に隣接するページに記憶されるべき命令を、不揮発性メモリから揮発性メモリの転送対象ページに転送し(S401)、転送管理テーブルデータ205を更新する(S402)。図23(a)に示す例の場合、転送対象ページがページCであるため、ページCに命令が転送され、図23(b)に示すような状態になる。その後、転送管理テーブルデータ205のページCの転送管理フラグが0から1に書き換えられ、図26に示すような状態になる。
第1コード書き込み部116は、転送管理テーブルデータ205を参照することにより、転送対象ページのアドレスにページ境界命令のアドレスが含まれるか否かを判断する(S403)。つまり、転送管理テーブルデータ205において転送対象ページの境界命令有無フラグが1であれば、転送対象ページのアドレスにページ境界命令のアドレスが含まれていると判断し、0であれば含まれていないと判断する。転送対象ページのアドレスにページ境界命令のアドレスが含まれる場合には(S403でYES)、第1コード書き込み部116は、転送管理テーブルデータ205を参照することにより、転送対象ページの直後に隣接するページである直後ページに命令を未転送であるか否かを判断する(S404)。つまり、転送管理テーブルデータ205において直後ページの転送管理フラグが0であれば直後ページに命令を未転送であると判断し、1であれば転送済みであると判断する。図23(b)に示す例では、転送対象ページであるページCのアドレスにページ境界命令1802のアドレスが含まれ、直後ページであるページDには命令が未転送である。このような状況は、ページ境界命令1802が本来のコードとは異なるものになっていることを示すため、以降の処理でページ境界命令1802を実行しないような手当が行われる。
直後ページに命令を未転送である場合(S404でYES)、第1コード書き込み部116は、転送対象ページに含まれるページ境界命令の先頭アドレスのコードをバッファに退避する(S405)。その後、第1コード書き込み部116は、ソフトウェア割り込み命令piを、転送対象ページのページ境界命令のアドレスに書き込む(S406)。図23(b)に示す例の場合、ページ境界命令1802の先頭アドレス1803のコード「da」がバッファに退避され、図23(c)に示すように先頭アドレス1803にソフトウェア割り込み命令piが書き込まれる。これにより、プログラムカウンタが先頭アドレス1803を示した場合であっても、本来の命令とは異なるページ境界命令が実行されるのを防ぐことができる。なお、本実施の形態ではバッファとして転送管理テーブルデータ205の先頭コードの欄を用いる。このため、図23(c)に示す状態では、転送管理テーブルデータ205は、図27のような状態になる。つまり、ページCの先頭コードの欄に先頭アドレス1803のコード「da」が書き込まれている。
なお、転送対象ページのアドレスにページ境界命令のアドレスが含まれていない場合には(S403でNO)、S404〜S406の処理は実行されない。また、転送対象ページのアドレスにページ境界命令のアドレスが含まれているが、直後ページに命令を転送済みである場合には(S403でYES、S404でNO)、ページ境界命令は本来あるべき命令となっており、ページ境界命令を実行しても情報機器30の誤作動等の問題は生じないため、S405およびS406の処理は実行されない。
次に、第2コード書き込み部117は、転送管理テーブルデータ205を参照することにより、転送対象ページの直前に隣接するページである直前ページのアドレスにページ境界命令のアドレスが含まれているか否かを判断する(S407)。つまり、転送管理テーブルデータ205において直前ページの境界命令有無フラグが1であれば、直前ページのアドレスにページ境界命令のアドレスが含まれていると判断し、0であれば含まれていないと判断する。直前ページのアドレスにページ境界命令のアドレスが含まれている場合(S407でYES)、第2コード書き込み部117は、転送管理テーブルデータ205を参照することにより、直前ページに命令を転送済みであるか否かを判断する(S408)。つまり、転送管理テーブルデータ205において直前ページの転送管理フラグが1であれば直前ページに命令を転送済みであると判断し、0であれば命令を未転送であると判断する。図23(c)に示す例では、直前ページであるページBのアドレスにはページ境界命令1804のアドレスが含まれており、ページBには命令を転送済みである。このような状況では、過去にページ境界命令1804に対してS405およびS406の処理が行なわれているため、ページ境界命令1804の先頭アドレスにソフトウェア割り込み命令piが書き込まれている。また、ページBおよびページCの双方に命令を転送済みである。このため、ページ境界命令1804のソフトウェア割り込み命令piを本来のコードに書き戻すことによりページ境界命令1804を実行可能な状態にすることができる。
直前ページに命令を転送済みである場合(S408でYES)、第2コード書き込み部117は、直前ページのページ境界命令のアドレスに、バッファに退避しているページ境界命令を書き込む。図23(c)に示す例では、直前ページであるページBに命令を転送済みであるため、図27に示す転送管理テーブルデータ205に記載されているページBの先頭コード「b0」をページ境界命令1804の先頭アドレス1805に書き込む。
なお、直前ページのアドレスにページ境界命令のアドレスが含まれていない場合には(S407でNO)、S408およびS409の処理は実行されない。また、直前ページのアドレスにページ境界命令のアドレスが含まれているが、直前ページに命令を未転送である場合には(S407でYES,S408でYES)、直前ページのページ境界命令の先頭アドレスに書き込むべきコードがないため、S409の処理は実行されない。
次に、S305において該当ページの直後に隣接するページが転送対象ページと決定された場合の具体例について説明する。例えば、図24(a)に示すように、ページCのページ境界命令1802の先頭アドレス1803に書き込まれているソフトウェア割り込み命令piが実行されることにより、ソフトウェア割り込みが発生し、ページCの直後に隣接するページDが転送対象ページとされたものとする(図22のS302でNO、S305)。このとき、図24(b)に示すように、ページDに命令が転送される(図25のS401)。また、ページDの直後ページであるページEに命令を未転送であるため、ページDのページ境界命令1901の先頭アドレス1902のコード「b0」がバッファに退避される(図25のS405)。この時点で、転送管理テーブルデータ205は、図28に示す状態になる。その後、図24(c)に示すように、ページ境界命令1901の先頭アドレス1902にソフトウェア割り込み命令piが書き込まれる(図25のS406)。また、ページDの直前ページのアドレスにページ境界命令1802のアドレスが含まれており、かつ、ページCには命令を転送済みであるため(図25のS407でYES、S408でYES)、図24(d)に示すように、図28に示す転送管理テーブルデータ205に記載されているページCの先頭コード「da」がページCのページ境界命令1802の先頭アドレス1803に書き込まれる。これにより、本来のページ境界命令1802を実行可能な状態に変更される。
以上説明したように、実施の形態3に係る情報機器30によると、転送対象ページに命令が転送された場合に、隣接するページに命令が未転送であれば、転送対象ページと隣接するページとの間に跨って配置されているページ境界命令のアドレスにソフトウェア割り込み命令piを記憶する。これにより、本来のページ境界命令とは異なる命令が実行されるのを防止することができる。
(実施の形態4)
次に、本発明の実施の形態4に係る情報機器について説明する。
実施の形態2に係る情報機器20は、転送管理テーブルデータ204を参照して、命令を未転送の揮発性メモリ210のページに不揮発性メモリ300から命令を転送することとしていた。ただし、命令の転送は、ソフトウェア割り込み命令piを実行することによる割り込み発生時に限定されていた。実施の形態4では、命令の転送を、ソフトウェア割り込み命令piによる割り込み発生時に加え、命令実行部102がアイドル状態の場合にも行う点が実施の形態2とは異なる。ここで、命令実行部102がアイドル状態の場合とは、例えば、入力待ち状態などが含まれる。
実施の形態4に係る情報機器の機能的な構成は、図10に示した実施の形態2に係る情報機器20の機能的な構成と同様である。ただし、命令転送部113が実行する処理が異なる。つまり、命令転送部113は、実施の形態2に示したようにソフトウェア割り込み命令piによるソフトウェア割り込み発生時に命令を転送する処理のほかに、命令実行部102がアイドル状態である場合に、命令を未転送であるページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリ210の命令を未転送であるページに転送する。
以下、具体例を示しながら情報機器20の起動時の処理について説明する。
情報機器20は、実施の形態2に示したのと同様の動作を行う。それに加えて、命令実行部102がアイドル状態の場合に、以下の処理を行なう。
図29は、命令実行部102がアイドル状態のときに実行される処理を示すフローチャートである。
命令転送部113は、命令実行部102がアイドル状態のときに転送管理テーブルデータ204を参照して、命令を未転送のページを検出する(S501)。つまり、転送管理テーブルデータ204の転送管理フラグが0になっているページを検出する。例えば、図30に示すように命令領域202のページB、C、EおよびFに命令を未転送であれば、転送管理テーブルデータ204は、図31に示すようになる。このため、命令転送部113は、転送管理テーブルデータ204の転送管理フラグが0になっているページを1つ検出する。上から順にページを検出しても良いし、ランダムにページを検出しても良い。例えば、ページBが検出されたものとする。
命令転送部113は、命令を未転送のページを検出した場合には(S502でYES)、命令を未転送のページである該当ページに記憶されるべき命令を、不揮発性メモリ300から揮発性メモリ210の該当ページに転送し(S503)、転送管理テーブルデータ204を更新する(S504)。例えば、図32に示すようにページBに命令が転送され、図33に示すように転送管理テーブルデータ204が更新される。つまり、ページBの転送管理フラグが0から1に変更される。
命令を未転送のページが検出されなかった場合には(S502でNO)、命令転送部113は処理を終了する。
命令転送部113は、S501〜S504の処理を、命令実行部102がアイドル状態のときに繰返し実行する。例えば、図33の転送管理テーブルデータ204を参照することによりページCが該当ページとされ、図34に示すようにページCに命令が転送された後、図35に示すように転送管理テーブルデータ204が更新される。つまり、ページCの転送管理フラグが0から1に変更される。
以上説明したように、実施の形態4に係る情報機器20によると、命令実行部102がアイドル状態である場合に、命令転送部113が先回りして命令を転送することにより、ソフトウェア割り込みの発生回数を少なくすることができる。よって、システム起動を高速化することができる。
なお、命令実行部102のアイドル状態時において割り込み処理プログラム転送部104により実行される割り込み処理実行時には、他の割り込みが禁止されているものとする。これにより、アイドル状態における命令転送を行っている最中にアイドル状態が解消されてしまい、該当ページのソフトウェア割り込み命令piが実行されてしまうことを禁止することができる。
(実施の形態5)
次に、本発明の実施の形態5に係る情報機器について説明する。
実施の形態4に係る情報機器20は、命令実行部102がアイドル状態のときに、命令を未転送の揮発性メモリ210のページに不揮発性メモリ300から命令を転送することとしていた。このとき、命令の転送対象となるページは、上から順、またはランダムに検出されていた。本実施の形態では、1回目の情報機器の起動時のページ単位の命令の転送順序に従って、命令の転送対象となるページを検出する点が実施の形態4とは異なる。
図36は、本発明の実施の形態5に係る情報機器の機能的な構成を示すブロック図である。以下の説明では、上述の実施の形態と同様の構成部については同一の参照符号を付す。その機能および名称も同一であるため適宜説明を省略する。
情報機器40は、プログラムを実行する装置であり、CPU130と、揮発性メモリ230と、不揮発性メモリ320とを備える。CPU130、揮発性メモリ230および不揮発性メモリ320は、バス400を介して相互に接続される。
CPU130は、プログラムを実行する処理部であり、情報機器40の起動を制御する起動制御装置としての役割を果たす。揮発性メモリ230は、CPU130で実行されるプログラムを記憶する揮発性メモリであり、例えば、DRAM等である。不揮発性メモリ320は、揮発性メモリ230に転送されCPU130で実行されるプログラムを記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリまたはNOR型フラッシュメモリ等である。揮発性メモリ230は、不揮発性メモリ320よりも高速にアクセス可能である。
揮発性メモリ230は、命令領域202と、データ領域203とを含み、その他に転送管理テーブルデータ206を記憶している。転送管理テーブルデータ206は、(i)不揮発性メモリ320から揮発性メモリ230に命令を転送済みである、命令領域202に含まれるページと、(ii)不揮発性メモリ320から揮発性メモリ230へのページ単位の命令の転送順序とを示すデータである。図37は、転送管理テーブルデータ206の一例を示す図である。転送管理テーブルデータ206は、ページごとに、転送管理フラグと、転送順序とを記憶している。転送管理フラグは、実施の形態2に示したものと同様であるため説明は繰り返さない。転送順序は、1回目の情報機器40の起動時の、不揮発性メモリ320から揮発性メモリ230へのページ単位の命令の転送順序を示す。例えば、図38に示すようにページA、D、E、B、C、Fの順に命令が転送されたとすると、転送管理テーブルデータ206の転送順序は、図37に示すようになる。
不揮発性メモリ320は、命令領域302と、データ領域303とを含み、その他に転送順序データ305を記憶している。転送順序データ305は、1回目の情報機器40の起動時の不揮発性メモリ320から揮発性メモリ230へのページ単位の命令の転送順序を示すデータである。例えば、図39に示すように、転送順序データ305は、ページごとに転送順序を記憶している。図39の転送順序データ305は、ページA、D、E、B、C、Fの順に命令が転送されたことを示している。
CPU130は、コード書き込み部101と、命令実行部102と、命令転送部118と、割り込み処理プログラム転送部104と、データ転送部105とを備える。
命令転送部118は、転送管理テーブルデータ206を参照することにより、命令実行部102がアイドル状態である場合、転送管理テーブルデータ206が示す転送順序に従って、命令を未転送であるページに記憶されるべき命令を、不揮発性メモリ320から揮発性メモリ230の命令を未転送であるページに転送し、転送管理テーブルデータ206を更新する。
なお、データ転送部105は、さらに、不揮発性メモリ320に記憶されている転送順序データ305を、揮発性メモリ230の転送管理テーブルデータ206に転送する。
以下、具体例を示しながら情報機器40の起動時の処理について説明する。以下の説明では、上述の実施の形態と同様のステップについては同一のステップ番号を付し、適宜説明を省略する。
図40は、情報機器40の起動時の処理のフローチャートである。
S101、S102、S105およびS103の処理の流れは、図12に示した情報機器20の起動時の処理の流れと同じである。ソフトウェア割り込み命令書き込み処理(S103)の後、データ転送部105は、情報機器40の起動が2回目以降か否かを判断し(S107)、2回目以降の起動であれば、転送順序データ305を転送管理テーブルデータ206に転送する(S108)。つまり、不揮発性メモリ320に記憶されている転送順序データ305を、揮発性メモリ230の転送管理テーブルデータ206に転送する。例えば、図39に示す転送順序データ305を、転送管理テーブルデータ206に転送することにより、図41に示す転送管理テーブルデータ206が得られる。2回目以降の起動か否かの判断は、不揮発性メモリ320内に起動回数を保持しておき、データ転送部105がその起動回数を参照することにより、判断しても良い。または、1回目の起動時には不揮発性メモリ320には転送順序データ305を記憶しないようにしておき、不揮発性メモリ320に転送順序データ305が記憶されていなければ1回目の起動であると判断し、不揮発性メモリ320に転送順序データ305が記憶されていれば2回目以降の起動であると判断しても良い。
その後、プログラム実行処理が行なわれる(S104)。プログラム実行処理(S104)の詳細は、図5に示したものと同様である。ただし、プログラム実行処理(S104)中で実行されるソフトウェア割り込み処理(図5のS203)が実施の形態1とは異なる。
プログラム実行処理(S104)の後、データ転送部105は、情報機器40の起動が1回目か否かを判断し(S109)、1回目の起動であれば(S109でYES)、転送管理テーブルデータ206に含まれる転送順序データを不揮発性メモリ320に書き込む(S110)。つまり、転送管理テーブルデータ206のうち、転送管理フラグを除く、ページと転送順序とを転送順序データ305として不揮発性メモリ320に書き込む。これにより、1回目の処理のページ単位の命令の転送順序が不揮発性メモリ320に記憶される。1回目の起動か否かの判断は、S107と同様に行われる。
図42は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
命令転送部118は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ206を参照することにより、該当ページに命令を未転送であるか否かを判断する(S302)。
該当ページに命令を未転送であれば(S302でYES)、命令転送部118は、該当ページに記憶されるべき命令を、不揮発性メモリ320から揮発性メモリ230の該当ページに転送する(S301)。その後、命令転送部118は、転送管理テーブルデータ206を更新する(S307)。つまり、該当ページの転送管理フラグを0から1に変更する。また、情報機器40の起動が1回目の場合には、該当ページの転送順序を書き込む。書き込まれた転送順序は、上述した図40のS110の処理により、転送順序データ305として不揮発性メモリ320に書き込まれる。
なお、命令実行部102は、2回目以降の起動時に命令実行部102がアイドル状態となっている場合に、以下の処理を行なう。
図43は、2回目以降の起動時に命令実行部102がアイドル状態のときに命令転送部118が実行する処理を示すフローチャートである。
命令転送部118は、転送管理テーブルデータ206を参照することにより、命令を未転送のページのうち、最も転送順序が早いものを検出する(S505)。例えば、図44に示すように命令領域202のうち、ページB、C、Fに命令を未転送であるとする。このとき、転送管理テーブルデータ206は、図37に示すようになっている。このため、命令転送部118は、転送管理テーブルデータ206において、転送管理フラグが0のページのうち、転送順序が一番小さいページを検出する。つまり、図37の例では、ページBが検出される。
命令転送部118は、未転送ページが検出されたか否かを判断し(S502)、検出されている場合には(S502でYES)、検出された未転送ページである該当ページに記憶されるべき命令を命令領域302から命令領域202の該当ページに転送し(S503)、転送管理テーブルデータ206の転送管理フラグを更新する(S504)。例えば、該当ページとされたページBの転送管理フラグが0から1に変更される。
命令を未転送のページが検出されなかった場合には(S502でNO)、命令転送部118は処理を終了する。
命令転送部118は、S505、S502〜S504の処理を、命令実行部102がアイドル状態のときに繰返し実行する。
以上説明したように、実施の形態5に係る情報機器40によると、不揮発性メモリ320から揮発性メモリ230への命令の転送順序に従って、命令を転送することにより、命令の実行順序がある程度決まっているようなプログラムについては、先回りした命令の転送を効果的に行うことができる。つまり、先回りして転送した命令が実行されずに他のソフトウェア割り込み命令piが実行されることによるソフトウェア割り込みの発生を低減させることができ、先回りして転送した命令がその命令の転送時から早い段階で実行されることになり、システム起動を高速化することができる。
(実施の形態5の変形例)
なお、実施の形態5では、命令実行部102がアイドル状態の場合に先回りして命令を転送することとしたが、情報機器40の起動直後の、命令実行部102による命令の実行開始前に先回りして所定ページ数の命令の転送を行い、その後に、命令の実行を開始するようにしても良い。
図45は、実施の形態5の変形例に係る情報機器40の起動時の処理のフローチャートである。
基本的な処理の流れは、図40に示した情報機器40の起動時の処理と同じであるが、S108の処理の後であって、S104の処理の前に、ループ処理(ループA)が加わっている。
ループAにおいては、まず、命令転送部118は、転送管理テーブルデータ206を参照することにより、命令を未転送のページのうち、最も転送順序が早いものを検出する(S111)。次に、命令転送部118は、未転送ページが検出されたか否かを判断し(S112)する。未転送ページが検出された場合には(S112でYES)、命令転送部118は、検出された未転送ページである該当ページに記憶されるべき命令を命令領域302から命令領域202の該当ページに転送し(S113)、転送管理テーブルデータ206の転送管理フラグを更新する(S114)。命令転送部118は、S111〜S114の処理を所定回数繰り返す(ループA)。なお、S111〜S114の処理は、図43に示した2回目以降の起動時に命令実行部102がアイドル状態のときに命令転送部118が実行する処理と同様である。
(実施の形態6)
次に、本発明の実施の形態6に係る情報機器について説明する。
実施の形態6に係る情報機器は、1回目の起動時における命令転送時の割り込み禁止状態をページごとに記憶しておき、割り込みが禁止されている状態でソフトウェア割り込み命令piを実行することによるソフトウェア割り込みが発生したページについては、プログラム実行処理(S104)の開始前に命令を揮発性メモリに転送する。これにより、ソフトウェア割り込み命令piの実行によるソフトウェア割り込みの発生時に、割り込み禁止期間がソフトウェア割り込み処理分、増加することによるシステムの割り込み応答性の劣化を防ぐ。
図46は、本発明の実施の形態6に係る情報機器の機能的な構成を示すブロック図である。以下の説明では、上述の実施の形態と同様の構成部については同一の参照符号を付す。その機能および名称も同一であるため適宜説明を省略する。
情報機器50は、プログラムを実行する装置であり、CPU140と、揮発性メモリ240と、不揮発性メモリ330とを備える。CPU140、揮発性メモリ240および不揮発性メモリ330は、バス400を介して相互に接続される。
CPU140は、プログラムを実行する処理部であり、情報機器50の起動を制御する起動制御装置としての役割を果たす。揮発性メモリ240は、CPU140で実行されるプログラムを記憶する揮発性メモリであり、例えば、DRAM等である。不揮発性メモリ330は、揮発性メモリ240に転送されCPU140で実行されるプログラムを記憶する不揮発性メモリであり、例えば、NAND型フラッシュメモリまたはNOR型フラッシュメモリ等である。揮発性メモリ240は、不揮発性メモリ330よりも高速にアクセス可能である。
揮発性メモリ240は、命令領域202と、データ領域203とを含み、その他に転送管理テーブルデータ207を記憶している。転送管理テーブルデータ207は、(i)不揮発性メモリ330から揮発性メモリ240に命令を転送済みである、命令領域202に含まれるページと、(ii)ページごとに不揮発性メモリ330から揮発性メモリ240への命令の転送時点において割り込みを禁止していたか否かを示す状態である割り込み禁止状態とを示すデータである。図47は、転送管理テーブルデータ207の一例を示す図である。転送管理テーブルデータ207は、ページごとに、転送管理フラグと、割り込み禁止状態とを記憶している。転送管理フラグは、実施の形態2に示したものと同様であるため説明は繰り返さない。割り込み禁止状態は、1回目の起動時における命令の転送時点において割り込みが禁止されていれば1であり、禁止されていなければ0である。例えば、図48に示すようにページA〜Fへの命令転送時における割り込み禁止フラグをPSW.IMで表すこととし、PSW.IMが7以外の場合には割り込みが禁止されている状態であるとすると、転送管理テーブルデータ207の割り込み禁止状態は図47に示すようになる。なお、PSW.IMは割り込み禁止レベルであり、例えばPSW.IMが2であるとすると割り込みレベルが0と1の割り込みは割り込み可能であるが、それ以外の割り込みレベルの割り込みは割り込み禁止であるとする。なお、割り込み禁止状態としてPSW.IMの値をそのまま用いてもよい。
不揮発性メモリ330は、命令領域302と、データ領域303とを含み、その他に割り込み禁止状態データ306を記憶している。割り込み禁止状態データ306は、ページごとに不揮発性メモリ330から揮発性メモリ240への命令の転送時の割り込み禁止状態を示すデータである。図49は、割り込み禁止状態データ306の一例を示す図である。割り込み禁止状態データ306は、ページごとに、割り込み禁止状態を記憶している。例えば、ページBおよびCが1回目の起動時の命令転送時に割り込みが禁止されていたことを示している。
CPU140は、コード書き込み部101と、命令実行部102と、命令転送部119と、割り込み処理プログラム転送部104と、データ転送部105とを備える。
命令転送部119は、転送管理テーブルデータ207を参照することにより、命令の転送時に割り込み禁止状態であった割り込み禁止ページについては、当該割り込み禁止ページに記憶されるべき命令が実行されるよりも前に、割り込み禁止ページに記憶されるべき命令を、不揮発性メモリ330から揮発性メモリ240の割り込み禁止ページに転送し、転送管理テーブルデータ207を更新する。
なお、データ転送部105は、さらに、不揮発性メモリ330に記憶されている割り込み禁止状態データ306を、揮発性メモリ240の転送管理テーブルデータ207に転送する。
以下、具体例を示しながら情報機器50の起動時の処理について説明する。以下の説明では、上述の実施の形態と同様のステップについては同一のステップ番号を付し、適宜説明を省略する。
図50は、情報機器50の起動時の処理のフローチャートである。
S101、S102、S105およびS103の処理の流れは、図12に示した情報機器20の起動時の処理の流れと同じである。ソフトウェア割り込み命令書き込み処理(S103)の後、データ転送部105は、情報機器50の起動が2回目以降か否かを判断し(S107)、2回目以降の起動であれば、割り込み禁止状態データ306を転送管理テーブルデータ207に転送する(S115)。つまり、不揮発性メモリ330に記憶されている割り込み禁止状態データ306を、揮発性メモリ240の転送管理テーブルデータ207に転送する。例えば、図49に示す割り込み禁止状態データ306を、転送管理テーブルデータ207に転送することにより、図51に示す転送管理テーブルデータ207が得られる。2回目以降の起動か否かの判断は、不揮発性メモリ330内に起動回数を保持しておき、データ転送部105がその起動回数を参照することにより、判断しても良い。または、1回目の起動時には不揮発性メモリ330には割り込み禁止状態データ306を記憶しないようにしておき、不揮発性メモリ330に割り込み禁止状態データ306が記憶されていなければ1回目の起動であると判断し、不揮発性メモリ330に割り込み禁止状態データ306が記憶されていれば2回目以降の起動であると判断しても良い。
その後、命令転送部119は、転送管理テーブルデータ207を参照することにより、命令を未転送の割り込み禁止ページがあるか否かを判断する(S116)。つまり、命令転送部119は、転送管理フラグが0であり、かつ割り込み禁止フラグが1のページがあれば、命令を未転送の割り込み禁止ページがあると判断する。割り込み禁止状態としてPSW.IMの値をそのまま用いる場合には、その値が一定値以下の場合のみ転送処理を行なうようにしてもよい。例えば、割り込み禁止状態として残したPSW.IMの値が4以下の場合(割り込み禁止レベルが0〜4の場合)のみ割り込み禁止ページとして判断する等である。命令を未転送の割り込み禁止ページがあれば(S116でYES)、命令転送部119は、命令を未転送の割り込み禁止ページに記憶されるべき命令を、不揮発性メモリ330の命令領域302から揮発性メモリ240の命令領域202の割り込み禁止ページに転送し(S117)、転送管理テーブルデータ207を更新する(S118)。つまり、転送管理テーブルデータ207における割り込み禁止ページの転送管理フラグの値を0から1に変更する。命令転送部119は、S117およびS118の処理を未転送の割り込み禁止ページが無くなるまで繰り返す。図52は、割り込み禁止ページに命令をすべて転送した後の命令領域202の状態を示しており、このときの転送管理テーブルデータ207は、図47のようになる。
次に、プログラム実行処理(S104)が実行される。プログラム実行処理(S104)の詳細は、図5に示したものと同様である。ただし、プログラム実行処理(S104)中で実行されるソフトウェア割り込み処理(図5のS203)が実施の形態1とは異なる。
プログラム実行処理(S104)の後、データ転送部105は、情報機器50の起動が1回目か否かを判断し(S109)、1回目の起動であれば(S109でYES)、転送管理テーブルデータ207に含まれる割り込み禁止状態データを不揮発性メモリ330に書き込む(S119)。つまり、転送管理テーブルデータ207のうち、転送管理フラグを除く、ページと割り込み禁止状態とを割り込み禁止状態データ306として不揮発性メモリ330に書き込む。これにより、1回目の起動時の割り込み禁止状態が不揮発性メモリ330に記憶される。1回目の起動か否かの判断は、S107と同様に行われる。
図53は、ソフトウェア割り込み処理(図5のS203)の詳細なフローチャートである。
命令転送部119は、ソフトウェア割り込み命令piによるソフトウェア割り込みの発生時に転送管理テーブルデータ207を参照することにより、該当ページに命令を未転送であるか否かを判断する(S302)。
該当ページに命令を未転送であれば(S302でYES)、命令転送部119は、該当ページに記憶されるべき命令を、不揮発性メモリ330から揮発性メモリ240の該当ページに転送する(S301)。その後、命令転送部119は、転送管理テーブルデータ207を更新する(S308)。つまり、該当ページの転送管理フラグを0から1に変更する。また、情報機器50の起動が1回目の場合には、該当ページへの命令転送時における命令実行部102の割り込み禁止状態を書き込む。書き込まれた割り込み禁止状態は、上述した図50のS119の処理により、割り込み禁止状態データ306として不揮発性メモリ330に書き込まれる。
以上説明したように、実施の形態6に係る情報機器50によると、割り込み禁止ページに記憶される命令を、その命令が実行されるよりも前に揮発性メモリ240の命令領域202に転送している。これにより、ソフトウェア割り込み命令piの実行によるソフトウェア割り込みの発生時に、割り込み禁止期間がソフトウェア割り込み分、増加することによる割り込み応答性の劣化を防ぐことができる。このため、システムの割り込み応答性を劣化させることなく情報機器50のシステム起動を高速化することができる。
以上、本発明の実施の形態に係る情報機器について説明したが、本発明は、この実施の形態に限定されるものではない。
本発明は、上述の実施の形態に示した情報機器または起動制御装置として実現することができる。起動制御装置に必須の構成要素は、コード書き込み部と、命令転送部と、命令実行部とである。情報機器に必須の構成要素は、不揮発性メモリと、揮発性メモリと、コード書き込み部と、命令転送部と、命令実行部とである。
また、上述した情報機器は、デジタルスチルカメラ、デジタルテレビ、携帯電話機、PDA(Personal Digital Assistant)など、不揮発性メモリに記憶されている命令を揮発性メモリに転送した上で実行する機器であればどのような機器であっても良い。
また、上述の実施の形態では、割り込み発生コードの一例として、ソフトウェア割り込み命令を用いて説明したが、割り込み発生コードは、これに限定されるものではない。例えば、前記命令実行部に実装される命令セットには含まれない、例外処理を引き起こす未定義のコードであってもよい。
なお、不揮発性メモリがNAND型フラッシュメモリの場合には、一般的に512バイトまたは2Kバイト単位のように決められたサイズ単位でしか読み書き出来ないため、本発明によって転送、または管理するページサイズはNAND型フラッシュメモリが読み書き可能なサイズの整数倍にするのが良いが、不揮発性メモリがNOR型フラッシュメモリなどのように1バイト単位で読み書き可能な場合には、本発明によって転送、または管理するページサイズはシステムに応じた任意のページサイズで良い。
また、上述の実施の形態では割り込み処理プログラム転送部は、命令転送部が実行する処理のプログラムを揮発性メモリに書き込むこととしたが、命令転送部がROMまたはフラッシュメモリからプログラムを直接読み出して実行するようにしても良い。また、命令転送部が専用のハードウェアにより構成されていてもよい。これらの場合には、割り込み処理プログラム転送部は情報機器に備えられていなくても良い。
また、上記実施の形態および上記変形例をそれぞれ組み合わせるとしても良い。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明は、不揮発性メモリから揮発性メモリに命令を転送した上で揮発性メモリに記憶されている命令を実行する情報機器またはその情報機器の起動を制御する起動制御装置等に適用でき、特に、デジタルスチルカメラ、デジタルテレビ、携帯電話機、PDA等に適用できる。
10、20、30、40、50 情報機器
100、110、120、130、140 CPU
101 コード書き込み部
102 命令実行部
103、113、118、119 命令転送部
104 割り込み処理プログラム転送部
105 データ転送部
114 命令転送部
115 転送部
116 第1コード書き込み部
117 第2コード書き込み部
200、210、220、230、240 揮発性メモリ
202、302 命令領域
203、303 データ領域
204、205、206、207 転送管理テーブルデータ
300、310、320、330 不揮発性メモリ
304 境界命令アドレスデータ
305 転送順序データ
306 割り込み禁止状態データ
400 バス
1801 ソフトウェア割り込み命令
1802、1804、1901 ページ境界命令
1803、1805、1902 先頭アドレス

Claims (14)

  1. 命令が記憶されている不揮発性メモリと、前記不揮発性メモリよりも高速にアクセス可能な揮発性メモリとを備える情報機器の起動を制御する起動制御装置であって、
    前記不揮発性メモリに記憶されている前記命令が書き込まれる前記揮発性メモリの領域である命令領域に含まれるページのうち、命令が書き込まれていないページに、ソフトウェア割り込みを発生させるためのコードである割り込み発生コードを書き込むコード書き込み部と、
    前記割り込み発生コードによるソフトウェア割り込みの発生時に、当該ソフトウェア割り込みを発生させた前記割り込み発生コードが記憶されているページである該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送する命令転送部と、
    前記命令領域に記憶されている命令を実行するとともに、前記割り込み発生コードが実行された場合に、ソフトウェア割り込みを発生させる命令実行部と
    を備える起動制御装置。
  2. 前記揮発性メモリは、さらに、前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページを示す転送管理テーブルデータを記憶しており、
    前記命令転送部は、前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を未転送であると判断することができる場合、前記該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送し、前記転送管理テーブルデータを更新する
    請求項1に記載の起動制御装置。
  3. 前記命令転送部は、(i)命令を未転送のページに配置された前記割り込み発生コードによるソフトウェア割り込みの発生時に、前記該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送するとともに、前記該当ページの直後に隣接するページに命令が未転送の場合には、前記該当ページと前記直後に隣接するページとの間に跨って配置される命令に前記割り込み発生コードを書き込み、(ii)前記跨って配置される命令に書き込まれた前記割り込み発生コードによるソフトウェア割り込みの発生時に、前記跨って配置される命令の直後のページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記跨って配置される命令の直後のページに転送する
    請求項1に記載の起動制御装置。
  4. 前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)ページを跨って配置される命令であるページ境界命令の、前記揮発性メモリ上でのアドレスとを示す転送管理テーブルデータを記憶しており、
    前記命令転送部は、
    (i)前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を未転送であると判断することができる場合、前記該当ページを転送対象ページとし、(ii)前記ソフトウェア割り込みの発生時に前記転送管理テーブルデータを参照することにより、前記該当ページに命令を転送済みであると判断することができる場合、前記該当ページの直後に隣接するページを転送対象ページとし、(iii)前記転送対象ページとされた前記該当ページまたは前記該当ページの直後に隣接するページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記転送対象ページに転送し、前記転送管理テーブルデータを更新する転送部と、
    前記転送部による処理の後に、前記転送管理テーブルデータを参照することにより、前記転送対象ページのアドレスにページ境界命令のアドレスが含まれ、かつ前記転送対象ページの直後に隣接するページである直後ページに命令を未転送であると判断することができる場合、割り込み発生コードを、前記転送対象ページのページ境界命令のアドレスに書き込む第1コード書き込み部と、
    前記転送部による処理の後に、前記転送管理テーブルデータを参照することにより、前記転送対象ページの直前に隣接するページである直前ページのアドレスにページ境界命令のアドレスが含まれ、かつ前記直前ページに命令を転送済みであると判断することができる場合、前記直前ページのページ境界命令のアドレスに、ページ境界命令を書き込む第2コード書き込み部とを有する
    請求項3に記載の起動制御装置。
  5. 前記命令転送部は、さらに、前記命令実行部がアイドル状態である場合に、命令を未転送であるページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記命令を未転送であるページに転送する
    請求項1に記載の起動制御装置。
  6. 前記揮発性メモリは、さらに、前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページを示す転送管理テーブルデータを記憶しており、
    前記命令転送部は、さらに、前記命令実行部がアイドル状態である場合に前記転送管理テーブルデータを参照することにより、命令を未転送であるページを検出し、検出したページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記検出したページに転送し、前記転送管理テーブルデータを更新する
    請求項5に記載の起動制御装置。
  7. 前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)前記不揮発性メモリから前記揮発性メモリへのページ単位の命令の転送順序とを示す転送管理テーブルデータを記憶しており、
    前記命令転送部は、前記転送管理テーブルデータを参照することにより、前記命令実行部がアイドル状態である場合または命令の実行が開始されるよりも前に、前記転送管理テーブルデータが示す転送順序に従って、命令を未転送であるページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記命令を未転送であるページに転送し、前記転送管理テーブルデータを更新する
    請求項1に記載の起動制御装置。
  8. 前記揮発性メモリは、さらに、(i)前記不揮発性メモリから前記揮発性メモリに命令を転送済みである、前記命令領域に含まれるページと、(ii)ページごとに前記不揮発性メモリから前記揮発性メモリへの命令の転送時点において割り込みを禁止していたか否かを示す状態である割り込み禁止状態とを示す転送管理テーブルデータを記憶しており、
    前記命令転送部は、前記転送管理テーブルデータを参照することにより、命令の転送時に割り込み禁止状態であったページである割り込み禁止ページについては、当該割り込み禁止ページに記憶されるべき命令が実行されるよりも前に、当該割り込み禁止ページに記憶されるべき命令を、前記揮発性メモリから前記揮発性メモリの前記割り込み禁止ページに転送し、前記転送管理テーブルデータを更新する
    請求項1に記載の起動制御装置。
  9. さらに、前記命令転送部が実行する処理のプログラムを、前記命令転送部による処理の開始前に前記揮発性メモリに書き込む割り込み処理プログラム転送部を備える
    請求項1〜8のいずれか1項に記載の起動制御装置。
  10. 前記割り込み発生コードは、前記命令実行部に実装される命令セットに含まれるソフトウェア割り込み命令である
    請求項1〜9のいずれか1項に記載の起動制御装置。
  11. 前記割り込み発生コードは、前記命令実行部に実装される命令セットには含まれない、例外処理を引き起こす未定義のコードである
    請求項1〜9のいずれか1項に記載の起動制御装置。
  12. さらに、前記命令実行部による前記命令の実行開始前に、前記不揮発性メモリに記憶されている定数データを、前記揮発性メモリに転送するデータ転送部を備える
    請求項1〜11のいずれか1項に記載の起動制御装置。
  13. 命令が記憶されている不揮発性メモリと、
    不揮発性メモリよりも高速にアクセス可能な揮発性メモリと、
    請求項1〜12のいずれか1項に記載の起動制御装置と
    を備える情報機器。
  14. 命令が記憶されている不揮発性メモリと、前記不揮発性メモリよりも高速にアクセス可能な揮発性メモリとを備える情報機器の起動を制御する起動制御方法であって、
    前記不揮発性メモリに記憶されている前記命令が書き込まれる前記揮発性メモリの領域である命令領域に含まれるページのうち、命令が書き込まれていないページに、ソフトウェア割り込みを発生させるためのコードである割り込み発生コードを書き込むコード書き込みステップと、
    前記割り込み発生コードによるソフトウェア割り込みの発生時に、当該ソフトウェア割り込みを発生させた前記割り込み発生コードが記憶されているページである該当ページに記憶されるべき命令を、前記不揮発性メモリから前記揮発性メモリの前記該当ページに転送する命令転送ステップと、
    前記命令領域に記憶されている命令を実行するとともに、前記割り込み発生コードが実行された場合に、ソフトウェア割り込みを発生させる命令実行ステップと
    を含む起動制御方法。
JP2012555582A 2011-01-31 2011-12-16 起動制御装置、情報機器および起動制御方法 Expired - Fee Related JP5870043B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012555582A JP5870043B2 (ja) 2011-01-31 2011-12-16 起動制御装置、情報機器および起動制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011018653 2011-01-31
JP2011018653 2011-01-31
PCT/JP2011/007056 WO2012104950A1 (ja) 2011-01-31 2011-12-16 起動制御装置、情報機器および起動制御方法
JP2012555582A JP5870043B2 (ja) 2011-01-31 2011-12-16 起動制御装置、情報機器および起動制御方法

Publications (2)

Publication Number Publication Date
JPWO2012104950A1 JPWO2012104950A1 (ja) 2014-07-03
JP5870043B2 true JP5870043B2 (ja) 2016-02-24

Family

ID=46602198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012555582A Expired - Fee Related JP5870043B2 (ja) 2011-01-31 2011-12-16 起動制御装置、情報機器および起動制御方法

Country Status (4)

Country Link
US (1) US9442724B2 (ja)
JP (1) JP5870043B2 (ja)
CN (1) CN103329099B (ja)
WO (1) WO2012104950A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6413813B2 (ja) * 2015-02-04 2018-10-31 富士ゼロックス株式会社 電子機器、制御装置及びプログラム
JP6751057B2 (ja) * 2017-07-04 2020-09-02 日立オートモティブシステムズ株式会社 電子制御システム
US10860346B2 (en) * 2017-08-15 2020-12-08 Sap Se Server-side internationalization framework for web applications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
WO2010140403A1 (ja) * 2009-06-02 2010-12-09 株式会社ユビキタス プログラム、制御方法、並びに制御装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3310990B2 (ja) * 1991-04-15 2002-08-05 キヤノン株式会社 電子機器
JPH10171665A (ja) * 1996-12-09 1998-06-26 Toshiba Corp ジャンプコード・ジェネレータ、割り込みプログラム選択装置、割り込みプログラム選択方式、及び計算機
TWI226997B (en) * 2003-07-01 2005-01-21 Benq Corp System and method preventing exceptional execution of central processing unit and the computer readable storage medium
JP4732432B2 (ja) 2004-12-24 2011-07-27 キヤノン株式会社 デジタルカメラ、デジタルカメラのデータ処理方法、及びコンピュータプログラム
JP2008065434A (ja) 2006-09-05 2008-03-21 Matsushita Electric Ind Co Ltd プログラム起動制御装置
US9652241B2 (en) * 2007-04-10 2017-05-16 Cambridge Consultants Ltd. Data processing apparatus with instruction encodings to enable near and far memory access modes
JP2009009186A (ja) * 2007-06-26 2009-01-15 Nec Electronics Corp Dma転送制御装置及びdma転送方法
JP4916576B2 (ja) * 2008-03-14 2012-04-11 三菱電機株式会社 マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
JP2010231701A (ja) 2009-03-30 2010-10-14 Kawasaki Microelectronics Inc システムの起動高速化装置
KR101702390B1 (ko) * 2009-04-09 2017-02-06 삼성전자주식회사 컴퓨터 시스템의 부팅 방법
JP2011192139A (ja) * 2010-03-16 2011-09-29 Panasonic Corp 情報端末装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006202252A (ja) * 2004-12-24 2006-08-03 Canon Inc 電子機器、データ処理方法、及びコンピュータプログラム
WO2010140403A1 (ja) * 2009-06-02 2010-12-09 株式会社ユビキタス プログラム、制御方法、並びに制御装置

Also Published As

Publication number Publication date
US9442724B2 (en) 2016-09-13
CN103329099B (zh) 2016-03-16
WO2012104950A1 (ja) 2012-08-09
US20130318331A1 (en) 2013-11-28
JPWO2012104950A1 (ja) 2014-07-03
CN103329099A (zh) 2013-09-25

Similar Documents

Publication Publication Date Title
JP5680679B2 (ja) 例外イベントを取り扱うための装置および方法
JP5655677B2 (ja) ハイパーバイザ置き換え方法および情報処理装置
US7827395B2 (en) Update-startup apparatus and update-startup control method
JP5093259B2 (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
JP2010541105A (ja) ファームウェアイメージの更新および管理
US9043806B2 (en) Information processing device and task switching method
US9740636B2 (en) Information processing apparatus
JP5870043B2 (ja) 起動制御装置、情報機器および起動制御方法
JP2009258985A (ja) 情報処理装置およびエラー訂正方法
CN113127263A (zh) 一种内核崩溃恢复方法、装置、设备及存储介质
JP2013246630A (ja) ブートシステムおよびシステム初期化方法
JP7184424B2 (ja) 更新処理装置、更新処理方法、及びプログラム
JP2008140124A (ja) データ処理装置
JP7418670B2 (ja) コンピュータ、制御方法及び制御プログラム
JP6217386B2 (ja) マルチプロセッサ用プログラム生成方法
TWI682323B (zh) 伺服器及其設定方法
JP2005209178A (ja) メモリ保護装置、メモリ保護方法及びメモリ保護プログラム
KR101014524B1 (ko) 데이터 일관성을 유지하는 임베디드 시스템의 데이터 리드 방법
WO2009144383A1 (en) Memory management method and apparatus
JP7069870B2 (ja) 情報処理装置
JP2015115052A (ja) マイクロプロセッサ、コンピュータ、異常対応方法、及び異常対策プログラム
CN116804927A (zh) 快闪存储器的实时固件更新
JP2015022373A (ja) 制御装置及びその起動処理方法、並びにその制御装置を備えた画像形成装置
JP2020525957A (ja) コンテキスト・データ管理
JP2007018071A (ja) マルチプロセッサシステム、マルチプロセッサシステムの起動方法、ブートプログラムおよび携帯端末

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140925

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20150603

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151118

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160108

R150 Certificate of patent or registration of utility model

Ref document number: 5870043

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees