JP2019219984A - メモリモジュール - Google Patents
メモリモジュール Download PDFInfo
- Publication number
- JP2019219984A JP2019219984A JP2018117712A JP2018117712A JP2019219984A JP 2019219984 A JP2019219984 A JP 2019219984A JP 2018117712 A JP2018117712 A JP 2018117712A JP 2018117712 A JP2018117712 A JP 2018117712A JP 2019219984 A JP2019219984 A JP 2019219984A
- Authority
- JP
- Japan
- Prior art keywords
- context
- storage unit
- context information
- bus
- cpu
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】割り込みからの復帰時に、コンテキスト情報を復帰するのに時間を要する。【解決手段】アクセス制御回路1140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスBS2を通じてCPU1130から1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にCPU1130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第1の記憶部1150に書込む。アクセス制御回路1140は、第1の記憶部1150への書込み後、第1の記憶部1150に記憶されているコンテキスト番号に対応させて、第1の記憶部1150に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを内部バスBS4を通じて複数サイクルで第2の記憶部1160に転送する。【選択図】図1
Description
本発明は、メモリモジュールに関し、たとえば、コンテキストを退避するためのメモリモジュールの制御技術に関する。
コンテキストスイッチの機能を有するCPUは、コンテキスト情報を格納する複数のレジスタバンクを有する。CPUは、参照するレジスタバンクを切り替えることによって、実行するタスクを切り替える。
実行するタスク数がレジスタバンクの実装数より大きい場合、レジスタバンク間と外部のメモリ間でコンテキストの退避処理および復帰処理を行う必要がある。特許文献1には、コンテキストの退避処理および復帰処理を高速化するための手法が記載されている。
特許文献1では、実行しているタスク以降に実行される可能性が高いコンテキストの情報(リンクコンテキスト情報)をコンテキスト情報の一部として扱う。現在、実行しているタスクのコンテキスト情報のリンクコンテキストを用いて、実行の可能性が高いコンテキストをレジスタバンクに格納する。次に、CPUが新たなタスクを実行する時、想定していたタスクを実行する場合、参照するレジスタバンクを切り替えるだけで済むので、高速にコンテキストスイッチを行うことができる。
しかしながら、特許文献1では、次に起こる可能性が高いタスクを知る必要がある。割り込み処理では、現在実行されるタスクと関連性が低いタスクが次に実行されることになるので、次に起こる可能性が高いタスクを知ることが困難である。そのため、割り込みに備えて、割り込み後に実行されるタスクのコンテキスト情報をレジスタバンクに保持しておくことができない。その結果、割り込みからの復帰時に、コンテキスト情報を復帰するのに時間を要する。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
一実施形態のメモリモジュールでは、アクセス制御回路は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、第1のバスを通じてCPUから1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時にCPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第1の記憶部に書込む。
一実施の形態のメモリモジュールによれば、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
以下、実施の形態について、図面を参照して説明する。
[第1の実施形態]
図1は、第1の実施形態のメモリモジュール1000の構成を表わす図である。
[第1の実施形態]
図1は、第1の実施形態のメモリモジュール1000の構成を表わす図である。
このメモリモジュール1000は、アクセス制御回路1140と、第1の記憶部1150と、第2の記憶部1160とを備える。
第1の記憶部1150は、CPU1130と第1のビット幅のバスBS2を通じて接続される。
第2の記憶部1160は、第1の記憶部1150と第1のビット幅よりも小さな第2のビット幅の内部バスBS4を通じて接続される。
アクセス制御回路1140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスBS2を通じてCPU1130から1サイクルで転送されるコンテキスト情報を第1の記憶部1150に書込む。アクセス制御回路1140は、さらに、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にCPU1130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とを第1の記憶部1150に書込む。
アクセス制御回路1140は、第1の記憶部1150への書込み後、第1の記憶部1150に記憶されているコンテキスト番号に対応させて、第1の記憶部1150に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを内部バスBS4を通じて複数サイクルで第2の記憶部1160に転送する。
以上のように、本実施の形態によれば、割込みによるコンテキスト情報の退避時に、割り込みの前にCPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群に書込むので、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
[第2の実施形態]
図2は、第2の実施形態の半導体装置100の構成を表わす図である。
図2は、第2の実施形態の半導体装置100の構成を表わす図である。
半導体装置100は、割り込み制御回路120と、CPU(Central Processing Unit)130と、メモリモジュール110とを備える。
割り込み制御回路120は、CPU130による割り込み処理を制御する。
CPU130は、特許文献1に記載されているような複数のタスクのコンテキストを保持するためのレジスタバンクを有さない。CPU130は、1つのタスクのコンテキストを保持するためのレジスタを有する。割り込みの発生によるコンテキスト退避動作時、CPU130は、メモリモジュール110にコンテキスト情報とコンテキスト情報を識別するためのコンテキスト番号とを出力する。メモリモジュール110は、割り込みの発生によってCPU130から退避されたコンテキスト情報とコンテキスト番号とを記憶し、その後の復帰時に、記憶しているコンテキスト情報をCPU130に転送する。CPU130は、メモリモジュール110から転送されたコンテキスト情報でレジスタを書き換える。
CPU130は、特許文献1に記載されているような複数のタスクのコンテキストを保持するためのレジスタバンクを有さない。CPU130は、1つのタスクのコンテキストを保持するためのレジスタを有する。割り込みの発生によるコンテキスト退避動作時、CPU130は、メモリモジュール110にコンテキスト情報とコンテキスト情報を識別するためのコンテキスト番号とを出力する。メモリモジュール110は、割り込みの発生によってCPU130から退避されたコンテキスト情報とコンテキスト番号とを記憶し、その後の復帰時に、記憶しているコンテキスト情報をCPU130に転送する。CPU130は、メモリモジュール110から転送されたコンテキスト情報でレジスタを書き換える。
コンテキスト退避とは、CPU130からメモリモジュール110にコンテキスト情報を転送することをいう。コンテキスト復帰とは、メモリモジュール110からCPU130にコンテキスト情報を転送することをいう。
メモリモジュール110は、アクセス制御回路140と、バッファ群150と、RAM(Random Access Memory)160とを備える。
CPU130とアクセス制御回路140とは、Lビット幅のバスBS1で接続される。CPU130とバッファ群150とは、Nビット幅のバスBS2で接続される。CPU130とRAM160とは、Mビット幅のバスBS3で接続される。バッファ群150とRAM160とは、(M+α)ビット幅の内部バスBS4で接続される。ここで、L<M<Nである。また、N=(n−1)×Mとしてもよい。
アクセス制御回路140は、CPU130からバスBS1を通じて、コンテキスト退避要求SREQ、およびコンテキスト復帰要求RREQを受け、これらの要求に基づいて、バッファ群150およびRAM160を制御する。
コンテキスト情報は、タスクの実行中の状態を示すCPU130内のプログラムカウンタの値、CPU130内のレジスタに保持されたアドレス、データ、またはスタータスなどを含む。コンテキスト情報は、n個のMビットのサブコンテキスト情報(0)〜(n−1)に分割されるものとする。
CPU130からRAM160へ、バスBS3を通じて、サブコンテキスト情報(0)が転送される。RAM160からCPU130へ、バスBS3を通じて、サブコンテキスト情報(0)が転送される。
CPU130からバッファ群150へ、バスBS2を通じて、サブコンテキスト情報(1)〜(n−1)が1サイクルで転送される。バッファ群150からCPU130へ、バスBS2を通じて、サブコンテキスト情報(1)〜(n−1)が1サイクルで転送される。
バッファ群150から、RAM160へサブコンテキスト情報(1)とリンクコンテキスト番号が1サイクルで転送され、サブコンテキスト情報(i)(i=2〜(n−1))が1サイクルで順番に転送される。
図3は、第2の実施形態のバッファ群150に格納されるデータを表わす図である。
バッファ群150は、n個のバッファ(0)〜バッファ(n−1)を含む。バッファ(0)〜バッファ(n−1)は、(M+α)ビットのデータを格納できる領域を有する。つまり、バッファ群150は、n×(M+α)ビットのサイズを有する。
バッファ群150は、n個のバッファ(0)〜バッファ(n−1)を含む。バッファ(0)〜バッファ(n−1)は、(M+α)ビットのデータを格納できる領域を有する。つまり、バッファ群150は、n×(M+α)ビットのサイズを有する。
バッファ(0)には、コンテキスト番号が保存される。コンテキスト番号は、コンテキスト情報を識別するための番号である。バッファ(1)には、リンクコンテキスト番号とサブコンテキスト情報(1)が保存される。リンクコンテキスト番号は、1回前にCPU130から転送されてバッファ群150に格納されていたコンテキスト情報を識別するための識別子である。コンテキスト退避が一度も行われていない時、コンテキスト番号とリンクコンテキスト番号は無効な値を保持する。バッファ(2)〜バッファ(n−1)には、サブコンテキスト情報(2)〜サブコンテキスト情報(n−1)が保存される。バッファ(1)以外のバッファに、リンクコンテキスト番号が保持されるものとしてもよい。
以下の説明において、バッファ群150に記憶されるコンテキスト番号、リンクコンテキスト番号、サブコンテキスト情報(1)〜(n−1)をコンテキストデータという場合がある。
図4は、RAM160に格納されるデータを表わす図である。
RAM160は、プログラムの実行開始以降にCPU130から直接またはバッファ群150を介して転送されたすべてのコンテキスト情報と、バッファ群150から転送されたリンクコンテキスト番号を記憶する。RAM160のアドレスとコンテキスト番号とが対応する。
RAM160は、プログラムの実行開始以降にCPU130から直接またはバッファ群150を介して転送されたすべてのコンテキスト情報と、バッファ群150から転送されたリンクコンテキスト番号を記憶する。RAM160のアドレスとコンテキスト番号とが対応する。
図4の例では、RAM160のアドレスADD(k)は、コンテキスト番号=kに対応するアドレスである。
アドレスADD(k)を始点としたn×(M+α)ビットのブロックにコンテキスト番号=kのコンテキスト情報(サブコンテキスト情報(0)〜(n−1))およびリンクコンテキスト番号が記憶される。
n×(M+α)ビットのブロックは、n個の(M+α)ビットの領域0〜領域(n−1)に分割される。先頭の領域0にCPU130から直接転送されたサブコンテキスト情報(0)が記憶される。2番目の領域1にバッファ群150のバッファ(1)から転送されたリンクコンテキスト番号とサブコンテキスト情報(1)が記憶される。領域i(i>1)にバッファ群150のバッファ(i)から転送されたサブコンテキスト情報(i)が記憶される。
(コンテキスト退避)
アクセス制御回路140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスBS2を通じてCPU130から1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号とをバッファ群150に書込む。
アクセス制御回路140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、バスBS2を通じてCPU130から1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号とをバッファ群150に書込む。
また、アクセス制御回路140は、割り込みの前にCPU130から転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群150に書込む。具体的には、アクセス制御回路140は、退避する要求を受ける前にバッファ群150に記憶されていたコンテキスト番号が所定の無効な値でないときに、バッファ群150に記憶されていたコンテキスト番号によってリンクコンテキスト番号を更新する。アクセス制御回路140は、退避する要求を受ける前にバッファ群150に記憶されていたコンテキスト番号が所定の無効な値のときに、所定の無効な値でリンクコンテキスト番号を更新する。
その後、アクセス制御回路140は、バッファ群150に記憶されているコンテキスト番号に対応させて、バッファ群150に記憶されているコンテキスト情報とリンクコンテキスト番号とからなるデータを複数サイクルで、内部バスBS4を通じてRAM160に転送する。
図5は、第2の実施形態のコンテキスト退避時におけるデータの流れを表わす図である。図6は、第2の実施形態のコンテキスト退避時におけるタイミングチャートである。図6において、RAM160の書き込み期間は、IDLE信号の活性化で示されている。
図5および図6を参照して、CPU130は、バスBS1を通じてコンテキスト退避要求SREQを出力する。アクセス制御回路140は、コンテキスト退避要求SREQを受ける。
アクセス制御回路140は、バスBS1を通じて、コンテキスト退避受付SACKを出力する。CPU130は、コンテキスト退避受付SACKを受ける。
CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(ここでは、「1」)を出力する。アクセス制御回路140は、コンテキスト番号CTX_IDを受ける。
アクセス制御回路140は、バッファ(0)内のコンテキスト番号とバッファ(1)内のリンクコンテキスト番号とが無効な値であれば、バッファ(1)内のリンクコンテキスト番号を入力されたコンテキスト番号CTX_IDで更新する。アクセス制御回路140は、バッファ(0)内のコンテキスト番号とバッファ(1)内のリンクコンテキスト番号とが有効な値であれば、バッファ(0)内のコンテキスト番号でバッファ(1)内のリンクコンテキスト番号を更新する。アクセス制御回路140は、バッファ(0)内のコンテキスト番号を入力されたコンテキスト番号CTX_IDで更新する。
CPU130は、バスBS2を通じて、1サイクルでサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150へ同時に出力する。同時に、CPU130は、バスBS3を通じて、サブコンテキスト情報(0)を1サイクルでRAM160へ出力する。アクセス制御回路140は、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ(1)〜バッファ(n−1)に書き込む。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点するブロックの第0領域にサブコンテキスト情報(0)を書き込む。
その後、アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックにバッファ(1)〜バッファ(n−1)に格納された情報を内部バスBS4を通じて順番に複数サイクルで出力させる。
第1番目のサイクルで、バッファ(1)に格納されたリンクコンテキスト番号とサブコンテキスト情報(1)がRAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第1領域に送られる。その後の第i(i>2)番目のサイクルで、バッファ(i)に格納されたサブコンテキスト情報(i)がRAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第i領域に送られる。
(コンテキスト復帰)
アクセス制御回路140は、CPU130から割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号がバッファ(0)に記憶されているコンテキスト番号と一致するときに、以下を実行する。アクセス制御回路140は、バッファ(0)に記憶されているコンテキスト番号で識別されるバッファ(1)〜(n−1)のサブコンテキスト情報(1)〜(n−1)をバスBS2を通じて1サイクルでCPU130へ転送する。
アクセス制御回路140は、CPU130から割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号がバッファ(0)に記憶されているコンテキスト番号と一致するときに、以下を実行する。アクセス制御回路140は、バッファ(0)に記憶されているコンテキスト番号で識別されるバッファ(1)〜(n−1)のサブコンテキスト情報(1)〜(n−1)をバスBS2を通じて1サイクルでCPU130へ転送する。
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号がバッファ(0)に記憶されているコンテキスト番号と一致しないときに、以下の処理を行なう。アクセス制御回路140は、バッファ(0)のコンテキスト番号を復帰するコンテキスト情報を識別するコンテキスト番号で更新する。アクセス制御回路140は、更新されたコンテキスト番号に対応させてRAM160に記憶されているサブコンテキスト情報(1)〜(n−1)およびリンクコンテキスト番号を含むデータを複数サイクルでバッファ群150へ転送する。アクセス制御回路140は、その後、バッファ(1)〜(n−1)内の転送されたサブコンテキスト情報(1)〜(n−1)をバスBS2を通じて、CPU130へ1サイクルで転送する。
アクセス制御回路140は、復帰するコンテキスト情報を識別するコンテキスト番号がいずれであるかに係らず、コンテキスト番号に対応させてRAM160に記憶されているサブコンテキスト情報(0)をバスBS3を通じて1サイクルでCPU130へ転送する。
図7は、第2の実施形態のコンテキスト復帰時におけるデータの流れの一例を表わす図である。図8は、第2の実施形態のコンテキスト復帰時におけるタイミングチャートの一例である。図7および図8には、バッファ(0)内のコンテキスト番号と入力されたコンテキスト番号CTX_IDとが一致するときの例が示されている。
図7および図8を参照して、CPU130は、バスBS1を通じてコンテキスト復帰要求RREQを出力する。アクセス制御回路140は、コンテキスト復帰要求RREQを受ける。
アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、コンテキスト復帰受付RACKを受ける。
CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(ここでは、「1」)を出力する。アクセス制御回路140は、コンテキスト番号CTX_IDを受ける。
アクセス制御回路140は、バッファ(0)内のコンテキスト番号と入力されたコンテキスト番号CTX_IDとが一致するときに、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第0領域に保持されたサブコンテキスト情報(0)をバスBS3を通じて、1サイクルでCPU130へ出力させる。
それと同時に、アクセス制御回路140は、図8におけるCTX_RDで示されるように、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を1サイクルでCPU130へ出力させる。
アクセス制御回路140は、サブコンテキスト情報(0)〜サブコンテキスト情報(n−1)の出力と同時に、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。CPU130は、コンテキスト復帰終了ENDを受ける。
図9は、第2の実施形態のコンテキスト復帰時におけるデータの流れの別の例を表わす図である。図10は、第2の実施形態のコンテキスト復帰時におけるタイミングチャートの別の例である。図9および図10には、バッファ(0)内のコンテキスト番号と入力されたコンテキスト番号CTX_IDとが不一致のときの例が示されている。
図9および図10を参照して、CPU130は、バスBS1を通じてコンテキスト復帰要求RREQを出力する。アクセス制御回路140は、コンテキスト復帰要求RREQを受ける。
アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、コンテキスト復帰受付RACKを受ける。
CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(ここでは、「1」)を出力する。アクセス制御回路140は、コンテキスト番号CTX_IDを受ける。
アクセス制御回路140は、バッファ(0)内のコンテキスト番号と入力されたコンテキスト番号CTX_IDとが一致しないときに、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックを特定する。アクセス制御回路140は、特定したブロックの第1〜第(n−1)領域に保持されたリンクコンテキスト番号およびサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150のバッファ(1)〜バッファ(n−1)へ順番に出力させる。
第1番目のサイクルで、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第(n−1)領域に保持されたサブコンテキスト情報(n−1)がバッファ(n−1)へ送られる。第i(1<i<n−1)番目のサイクルで、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第(n−i)領域に保持されたサブコンテキスト情報(i)がバッファ(i)へ送られる。最後に、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第1領域に保持されたリンクテキスト番号とサブコンテキスト情報(i)とがバッファ(1)へ送られる。
その後、アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックの第0領域に保持されたサブコンテキスト情報(0)をバスBS3を通じて、CPU130へ出力させる。
それと同時に、アクセス制御回路140は、図8におけるCTX_RDで示されるように、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を1サイクルでCPU130へ出力させる。
アクセス制御回路140は、サブコンテキスト情報(0)〜サブコンテキスト情報(n−1)の出力と同時に、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。CPU130は、コンテキスト復帰終了ENDを受ける。
(プリフェッチ)
アクセス制御回路140は、コンテキスト復帰の後のプリフェッチにおいて、バッファ群150に記憶されているリンクコンテキスト番号に対応して、RAM160に記憶されているコンテキスト情報およびリンクコンテキスト番号を含むデータを複数サイクルで内部バスBS4を通じてバッファ群150へ転送する。
アクセス制御回路140は、コンテキスト復帰の後のプリフェッチにおいて、バッファ群150に記憶されているリンクコンテキスト番号に対応して、RAM160に記憶されているコンテキスト情報およびリンクコンテキスト番号を含むデータを複数サイクルで内部バスBS4を通じてバッファ群150へ転送する。
図11は、第2の実施形態のプリフェッチ時におけるバッファ制御を説明するための図である。
コンテキスト復帰の終了後にプリフェッチが実行される。
アクセス制御回路140は、バッファ(1)内のリンクコンテキスト番号によって、バッファ(0)内のコンテキスト番号を更新する。アクセス制御回路140は、RAM160内の更新されたコンテキスト番号に対応するアドレスを起点とするブロックからリンクコンテキスト番号、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を複数サイクルで内部バスBS4を通じてバッファ(1)〜バッファ(n−1)へ転送する。
アクセス制御回路140は、バッファ(1)内のリンクコンテキスト番号によって、バッファ(0)内のコンテキスト番号を更新する。アクセス制御回路140は、RAM160内の更新されたコンテキスト番号に対応するアドレスを起点とするブロックからリンクコンテキスト番号、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を複数サイクルで内部バスBS4を通じてバッファ(1)〜バッファ(n−1)へ転送する。
アクセス制御回路140は、バッファ(0)内のコンテキスト番号とバッファ(1)内のリンクコンテキストが同じ値の時、プリフェッチ動作は行わずに、バッファ(0)内のコンテキスト番号とバッファ(1)内のリンクコンテキスト番号を所定の無効な値で更新する。
また、アクセス制御回路140は、プリフェッチ動作中にCPU130からコンテキスト退避要求SREQを受けた場合、プリフェッチ動作を停止し、コンテキスト退避要求SREQを受け付けて、通常のコンテキスト退避動作を実施する。
図12は、多重割り込みの例を表わす図である。
タスク(1)の実行中に割り込み(1)が発生し、タスク(1)が途中で実行を停止し、タスク(2)が実行される。このときには、CPU130からタスク(1)のコンテキスト情報がメモリモジュール110へ転送される。このコンテキスト情報のコンテキスト番号は「1」である。
タスク(1)の実行中に割り込み(1)が発生し、タスク(1)が途中で実行を停止し、タスク(2)が実行される。このときには、CPU130からタスク(1)のコンテキスト情報がメモリモジュール110へ転送される。このコンテキスト情報のコンテキスト番号は「1」である。
タスク(2)の実行中に割り込み(2)が発生し、タスク(2)が途中で実行を停止し、タスク(3)が実行される。このときには、CPU130からタスク(2)のコンテキスト情報がメモリモジュール110へ転送される。このコンテキスト情報のコンテキスト番号は「2」である。
タスク(3)の実行中に割り込み(3)が発生し、タスク(3)が途中で実行を停止し、タスク(4)が実行される。このときには、CPU130からタスク(3)のコンテキスト情報がメモリモジュール110へ転送される。このコンテキスト情報のコンテキスト番号は「3」である。
タスク(4)の終了後に復帰(1)が行われ、タスク(3)の実行が再開される。このときには、メモリモジュール110からタスク(3)のコンテキスト情報がCPU130へ転送される。
タスク(3)の終了後に復帰(2)が行われ、タスク(2)の実行が再開される。このときには、メモリモジュール110からタスク(2)のコンテキスト情報がCPU130へ転送される。
タスク(2)の終了後に復帰(3)が行われ、タスク(1)の実行が再開される。このときには、メモリモジュール110からタスク(1)のコンテキスト情報がCPU130へ転送される。
図13は、第2の実施形態のプリフェッチ機能がない場合に、図12の多重割り込みが発生したときの動作タイミングを表わす図である。
割り込み(1)が発生したときに、CPU130は、バスBS1を通じて、コンテキスト退避要求SREQを出力する。アクセス制御回路140は、バスBS1を通じて、コンテキスト退避受付SACKを出力する。CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「1」)を出力する。アクセス制御回路140は、バッファ(0)内のコンテキスト番号を入力されたコンテキスト番号CTX_ID(=「1」)で更新する。CPU130は、バスBS2を通じて、タスク(1)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ(1)〜バッファ(n−1)に1サイクルで出力するとともに、バスBS3を通じて、タスク(1)のサブコンテキスト情報(0)をRAM160へ出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_ID(=「1」)に対応するアドレスを起点するブロックにタスク(1)のサブコンテキスト情報(0)を書き込ませる。その後、アクセス制御回路140は、RAM160内のコンテキスト番号CTX_ID(=「1」)に対応するアドレスを起点とするブロックにバッファ(1)〜バッファ(n−1)に格納されたサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を内部バスBS4を通じて複数サイクルで出力させる。
次いで、割り込み(2)が発生し、割り込み(1)が発生したときと同様の処理が実行されて、バッファ群150のバッファ(0)にコンテキスト番号CTX_ID(=「2」)が保存され、バッファ群150のバッファ(1)〜バッファ(n−1)にタスク(2)のサブコンテキスト情報(1)〜コンテキスト情報(n−1)が保存される。また、RAM160内のコンテキスト番号CTX_ID(=「2」)に対応するアドレスを起点とするブロックにタスク(2)のサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)が保存される。
次いで、割り込み(3)が発生し、割り込み(1)が発生したときと同様の処理が実行されて、バッファ群150のバッファ(0)にコンテキスト番号CTX_ID(=「3」)が保存され、バッファ群150のバッファ(1)〜バッファ(n−1)にタスク(3)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保存される。また、RAM160内のコンテキスト番号CTX_ID(=「3」)に対応するアドレスを起点とするブロックにタスク(3)のサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)が保存される。
次に、復帰(1)が発生した場合に、CPU130は、バスBS1を通じて、コンテキスト復帰要求RREQを出力する。アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「3」)を出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックに保持されたタスク(3)のサブコンテキスト情報(0)をバスBS3を通じて、CPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているタスク(3)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を1サイクルでPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。バッファ群150に復帰するタスク(3)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持されているので、1サイクルでタスク(3)のすべてのサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)がメモリモジュールからCPU130へ転送される。
次に、復帰(2)が発生した場合に、CPU130は、バスBS1を通じて、コンテキスト復帰要求RREQを出力する。アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「2」)を出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックに保持されたサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150のバッファ(1)〜バッファ(n−1)へ順番に複数サイクルで出力させる。その後、アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とする領域に保持されたコンテキスト情報(0)をバスBS3を通じて、CPU130へ1サイクルで出力させる。それと同時に、アクセス制御回路140は、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているタスク(2)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を1サイクルでCPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。
図14は、第2の実施形態のプリフェッチ機能がある場合に、図12の多重割り込みが発生したときの動作タイミングを表わす図である。
以下、図13の動作との相違点について説明する。
割り込み(1)が発生したときに、バッファ(0)に保持されているコンテキスト番号は、無効な値なので、アクセス制御回路140は、バッファ(1)のリンクコンテキスト番号を無効な値に設定する。
割り込み(1)が発生したときに、バッファ(0)に保持されているコンテキスト番号は、無効な値なので、アクセス制御回路140は、バッファ(1)のリンクコンテキスト番号を無効な値に設定する。
割り込み(2)が発生したときに、バッファ(0)に保持されているコンテキスト番号が「1」なので、アクセス制御回路140は、バッファ(1)内のリンクコンテキスト番号を「1」に更新する。
割り込み(3)が発生したときに、バッファ(0)に保持されているコンテキスト番号が「2」なので、アクセス制御回路140は、バッファ(1)内のリンクコンテキスト番号を「2」に更新する。
復帰(1)が発生したときには、RAM160からバッファ群150にサブコンテキスト情報およびリンクテキスト番号と転送されないので、バッファ(1)内のリンクコンテキスト番号が「2」に維持される。
復帰(1)の終了後に、プリフェッチが実行される。アクセス制御回路140は、復帰(1)の終了後にバッファ(1)に格納されているリンクコンテキスト番号が「2」なので、バッファ(0)のコンテキスト番号を「2」に更新する。アクセス制御回路140は、RAM160内のコンテキスト番号(=「2」)に対応するアドレスを起点とするブロックに保持されたタスク(2)のリンクコンテキスト番号(=1)、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150のバッファ(1)〜バッファ(n−1)へ内部バスBS4を通じて複数サイクルで出力させる。
次に、復帰(2)が発生した場合に、CPU130は、バスBS1を通じて、コンテキスト復帰要求RREQを出力する。アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「2」)を出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックに保持されたタスク(2)のサブコンテキスト情報(0)をバスBS3を通じて、1サイクルでCPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているタスク(2)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を1サイクルでCPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。バッファ群150に復帰するタスク(2)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持されているので、1サイクルでタスク(2)のすべてのサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)がメモリモジュールからCPU130へ転送される。
以上のように、本実施の形態によれば、割り込みによるコンテキスト情報の退避時に、割り込みの前にCPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号をバッファ群に書込む。このリンクコンテキスト番号を用いて、コンテキスト情報をバッファ群にプリフェッチすることによって、割り込みからの復帰時に、短い時間でコンテキスト情報を復帰できる。
なお、本実施の形態では、コンテキスト情報の退避および復帰のための時間を低減するために、サブコンテキスト情報(0)は、CPUからRAMに直接転送されるものとしたが、これに限定するものではない。サブコンテキスト情報(0)も、CPUからバッファ群を介してRAMに転送されるものとしてもよい。
また、本実施の形態では、コンテキスト番号とコンテキスト情報とを対応させるために、RAM内のアドレスADD(k)を始点としたブロックにコンテキスト番号=kのコンテキスト情報(サブコンテキスト情報(0)〜(n−1))およびリンクコンテキスト番号が記憶されるものとしたが、これに限定されるものではない。RAM内に、コンテキスト番号と、そのコンテキスト番号に対応するコンテキスト情報およびリンクコンテキスト番号とが記憶されるものとしてもよい。
[第3の実施形態]
図15は、第3の実施形態のメモリモジュール210の構成を表わす図である。
図15は、第3の実施形態のメモリモジュール210の構成を表わす図である。
第3の実施形態のメモリモジュール210が、第2の実施形態のメモリモジュール110と相違する点について説明する。
メモリモジュール210は、拡張バッファ群250を備える。
拡張バッファ群250も、バッファ群150と同様に、CPU130とバスBS2を通じて接続される。
拡張バッファ群250も、バッファ群150と同様に、CPU130とバスBS2を通じて接続される。
図16は、第3の実施形態の拡張バッファ群250に格納される情報を表わす図である。拡張バッファ群250は、バッファ(0)〜バッファ(n−1)を含む。バッファ(i)は、Mビットの記憶領域を有する。
拡張バッファ群250のバッファ(0)には、コンテキスト番号が保持される。バッファ(1)〜バッファ(n−1)には、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持される。
第2の実施形態では、図12に示される復帰(1)において、タスク(3)に復帰せずに、最先の割り込み時に実行を停止したタスク(1)に復帰する場合に、RAM160からサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)を読み出さなければならない。これによって、タスク(1)へ復帰するのに時間を要する。
まず、比較のために、第2の実施形態のメモリモジュール110の動作を説明する。
図17は、第2の実施形態のコンテキスト退避および復帰時における動作タイミングを表わす図である。
図17は、第2の実施形態のコンテキスト退避および復帰時における動作タイミングを表わす図である。
図14と同様に、割り込み(1)、割り込み(2)、および割り込み(3)が発生し、バッファ群150のバッファ(0)には、コンテキスト番号(=「3」)が保持され、バッファ(1)には、リンクテキスト番号(=「2」)が保持され、バッファ(1)〜バッファ(n−1)には、タスク(3)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持されている。
次に、タスク(1)に復帰する復帰(1)が発生した場合に、CPU130は、バスBS1を通じて、コンテキスト復帰要求RREQを出力する。アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰受付RACKを出力する。CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「1」)を出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_ID(=「1」)に対応するアドレスを起点とするブロックに保持されたタスク(1)のリンクコンテキスト番号、サブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150のバッファ(1)〜バッファ(n−1)へ内部バスBS4を通じて複数サイクルで出力させる。その後、アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックに保持されたサブコンテキスト情報(0)をバスBS3を通じて、CPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS2を通じて、バッファ(1)〜バッファ(n−1)に保持されているタスク(2)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバスBS2を通じて1サイクルでCPU130へ出力させる。それと同時に、アクセス制御回路140は、バスBS1を通じて、コンテキスト復帰終了ENDを出力する。
以上のように、第2の実施形態では、タスク(1)に復帰する場合に、RAM160からバッファ群150へのタスク(1)のコンテキスト情報の転送が必要となる。
本実施の形態では、プログラムの開始後、最先の割り込みが発生したとき、またはすべての割り込みに対する復帰が終了されている状態で、割り込みが発生したときに、実行を停止したタスク(1)に復帰する場合に、RAM160からのサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)の読出しを不要にすることによって、復帰する時間を短縮できる。タスク(1)のコンテキスト情報を保存するのは、複数の割り込みが入れ子になって発生する場合に、最先の割り込みで実行を停止した最初のタスクに戻る可能性が高いことを考慮したものである。
拡張バッファ群250のバッファ(0)に格納されるコンテキスト番号は、初期状態では、所定の無効な値である。
(コンテキスト退避)
アクセス制御回路140は、割り込みによってコンテキスト情報を退避する要求を受けたときに、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号が所定の無効な値のとき、または拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号が退避するコンテキスト情報を識別するコンテキスト番号と一致するときに、以下の処理を行なう。
アクセス制御回路140は、割り込みによってコンテキスト情報を退避する要求を受けたときに、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号が所定の無効な値のとき、または拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号が退避するコンテキスト情報を識別するコンテキスト番号と一致するときに、以下の処理を行なう。
アクセス制御回路140は、バスBS2を通じてCPU130から1サイクルで転送されるコンテキスト情報をバッファ群150だけでなく、拡張バッファ群250にも出力させる。アクセス制御回路140は、コンテキスト情報を識別するコンテキスト番号をバッファ群150のバッファ(0)だけでなく、拡張バッファ群250のバッファ(0)にも書込む。アクセス制御回路140は、バッファ群150のバッファ(1)にリンクコンテキスト番号を書き込むが、拡張バッファ群250にリンクコンテキスト番号を書き込まない。
(コンテキスト復帰)
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号と一致するときに、以下の転送を制御する。すなわち、アクセス制御回路140は、拡張バッファ群250に記憶されているコンテキスト情報(サブコンテキスト情報(1)〜(n−1))をバスBS2を通じて、1サイクルでCPU130へ転送する。アクセス制御回路140は、拡張バッファ群250のバッファ(0)のコンテキスト番号を所定の無効な値で更新する。
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号と一致するときに、以下の転送を制御する。すなわち、アクセス制御回路140は、拡張バッファ群250に記憶されているコンテキスト情報(サブコンテキスト情報(1)〜(n−1))をバスBS2を通じて、1サイクルでCPU130へ転送する。アクセス制御回路140は、拡張バッファ群250のバッファ(0)のコンテキスト番号を所定の無効な値で更新する。
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号と一致せず、バッファ群150のバッファ(0)に記憶されているコンテキスト番号と一致するときに、以下の転送を制御する。すなわち、アクセス制御回路140は、バッファ群150のバッファ(0)に記憶されているコンテキスト情報(サブコンテキスト情報(1)〜(n−1))をバスBS2を通じて、1サイクルでCPU130へ転送する。
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、拡張バッファ群250のバッファ(0)に記憶されているコンテキスト番号と一致せず、バッファ群150のバッファ(0)に記憶されているコンテキスト番号と一致しないときに、以下を実行する。アクセス制御回路140は、第2の実施形態と同様に、通常のコンテキスト復帰動作を行う。すなわち、アクセス制御回路140は、コンテキスト番号と対応させて、RAM160に記憶されているコンテキスト情報(サブコンテキスト情報(1)〜(n−1))およびリンクコンテキスト番号を含むデータを複数サイクルで内部バスBS4を通じてバッファ群150へ転送する。アクセス制御回路140は、その後、バッファ群150の転送されたコンテキスト情報(サブコンテキスト情報(1)〜(n−1))をバスBS2を通じて1サイクルでCPU130へ転送する。
アクセス制御回路140は、復帰するコンテキスト情報を識別するコンテキスト番号がいずれであるかに係らず、コンテキスト番号に対応させてRAM160に記憶されているサブコンテキスト情報(0)をバスBS3を通じて1サイクルでCPU130へ転送する。
図18は、第3の実施形態のコンテキスト退避および復帰時における動作タイミングを説明するための図である。
図18で示される動作が、図17で示される動作と相違する点について説明する。
割り込み(1)が発生したときに、図17の実施形態と同様に、バッファ群150のバッファ(0)にコンテキスト番号(=「1」)が保持され、バッファ(1)〜バッファ(n−1)にサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持される。RAM160内のコンテキスト番号CTX_ID(=「1」)に対応するアドレスを起点するブロックにタスク(1)のサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)が保持される。
割り込み(1)が発生したときに、図17の実施形態と同様に、バッファ群150のバッファ(0)にコンテキスト番号(=「1」)が保持され、バッファ(1)〜バッファ(n−1)にサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持される。RAM160内のコンテキスト番号CTX_ID(=「1」)に対応するアドレスを起点するブロックにタスク(1)のサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)が保持される。
プログラムを起動後、最初の割り込み(1)が発生したときに、アクセス制御回路140は、バスBS1を通じて送られてきたコンテキスト番号CTX_ID(=1)をバッファ群150のバッファ(0)に書き込むだけでなく、拡張バッファ群250のバッファ(0)に書き込む。
アクセス制御回路140は、第2の実施形態と同様に、バッファ群150のバッファ(1)にリンクコンテキスト番号を書き込む。アクセス制御回路140は、バスBS2を通じて送られてきたサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバッファ群150のバッファ(1)〜バッファ(n−1)に書き込むだけでなく、拡張バッファ群250のバッファ(1)〜バッファ(n−1)に書き込む。
復帰(1)が発生した場合に、CPU130は、バスBS1を通じてコンテキスト番号CTX_ID(=「1」)を出力する。アクセス制御回路140は、RAM160内のコンテキスト番号CTX_IDに対応するアドレスを起点とするブロックに保持されたタスク(1)のサブコンテキスト情報(0)をバスBS3を通じて、CPU130へ出力させる。同時にアクセス制御回路140は、バスBS2を通じて、拡張バッファ群250に保持されているバッファ(1)〜バッファ(n−1)に保持されているタスク(1)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)をバスBS2を通じて1サイクルでCPU130へ出力させる。拡張バッファ群250に復帰するタスク(1)のサブコンテキスト情報(1)〜サブコンテキスト情報(n−1)が保持されているので、1サイクルでタスク(1)のすべてのサブコンテキスト情報(0)〜サブコンテキスト情報(n−1)がメモリモジュールからCPU130へ転送される。
(プリフェッチ)
アクセス制御回路140は、復帰後のプリフェッチにおいて、バッファ群150のバッファ(1)のリンクコンテキスト番号が拡張バッファ群250のバッファ(0)のコンテキスト番号と一致するときに、RAM160からバッファ群150へコンテキスト情報(サブコンテキスト情報(1)〜(n−1))およびリンクコンテキスト番号を含むデータの転送を実行しない。
アクセス制御回路140は、復帰後のプリフェッチにおいて、バッファ群150のバッファ(1)のリンクコンテキスト番号が拡張バッファ群250のバッファ(0)のコンテキスト番号と一致するときに、RAM160からバッファ群150へコンテキスト情報(サブコンテキスト情報(1)〜(n−1))およびリンクコンテキスト番号を含むデータの転送を実行しない。
アクセス制御回路140は、バッファ群150のバッファ(1)のリンクコンテキスト番号が拡張バッファ群250のバッファ(0)のコンテキスト番号と不一致のときに、RAM160に記憶されているコンテキスト情報(サブコンテキスト情報(1)〜(n−1))およびリンクコンテキスト番号を含むデータを内部バスBS4を通じて複数サイクルでバッファ群150へ転送する。
以上のように、本実施の形態によれば、図12に示されるような多重割込みが発生した場合に、最初の復帰(1)において、最先の割り込み時に実行を停止したタスクに復帰する場合に、RAMからではなく、拡張バッファ群からサブコンテキスト情報(1)〜(n−1)をCPUに転送することができる。これによって、タスクの復帰時間を短くすることができる。
[第4の実施形態]
第3の実施形態では、図12で示す復帰(1)によってタスク(1)に復帰する場合に拡張バッファ群250からタスク(1)のコンテキスト情報をCPU130へ転送することができた。
第3の実施形態では、図12で示す復帰(1)によってタスク(1)に復帰する場合に拡張バッファ群250からタスク(1)のコンテキスト情報をCPU130へ転送することができた。
しかしながら、図12に示す復帰(1)によって、タスク(2)に復帰する場合に、RAM160からタスク(2)のコンテキスト情報の読出しが必要となり、復帰のために時間を要する。
本実施の形態では、図12に示す復帰(1)によって、タスク(2)に復帰する場合に、復帰のための時間を第2および第3の実施形態よりも低減する。
本実施の形態では、バッファ群150には、複数のタスクのコンテキスト番号およびコンテキスト情報が保持される。プリフェッチによって、優先度の高いタスクに対して大きな記憶領域が割り当てられる。復帰する可能性が高いタスクほど、高い優先度が割り当てられる。
バッファ群150は、複数の割り込みの各々に対して、コンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時に転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される。
図19は、第4の実施形態におけるRAM160およびバッファ群150に格納される情報を表わす図である。
RAM160には、タスク(1)〜タスク(3)の情報が記憶されている。RAM160には、タスク(i)のコンテキスト番号(=i)に対応するアドレスで示されるブロックに、タスク(i)のサブコンテキスト情報(0)〜(3)およびリンクコンテキスト番号が記憶されている。i=1〜4である。
アクセス制御回路140は、プリフェッチにおいて、バッファ群150の最も優先度の高いタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、RAM160に記憶されている複数のタスクについてのコンテキスト情報の一部または全部とリンクコンテキスト番号とを含むデータを内部バスBS4を通じてバッファ群150へ転送する。
優先度の高い順に、タスク(3)、タスク(2)、タスク(1)とする。プリフェッチによって、タスク(3)のデータが4個のバッファに格納され、タスク(2)のデータが3個のバッファに格納され、タスク(1)のデータが2個のバッファに格納される。
バッファ(0)に、コンテキスト番号(=「3」)が保持される。バッファ(1)に、タスク(3)のリンクコンテキスト番号(=「2」)とタスク(3)のサブコンテキスト情報(1)がRAM160から転送される。バッファ(2)に、タスク(3)のサブコンテキスト情報(2)がRAM160から転送される。バッファ(3)に、タスク(3)のサブコンテキスト情報(3)がRAM160から転送される。
バッファ(4)に、コンテキスト番号(=「2」)が保持される。バッファ(5)に、タスク(2)のリンクコンテキスト番号(=「1」)とタスク(2)のサブコンテキスト情報(1)がRAM160から転送される。バッファ(6)に、タスク(2)のサブコンテキスト情報(2)がRAM160から転送される。
バッファ(7)に、コンテキスト番号(=「1」)が保持される、バッファ(8)に、タスク(1)のリンクコンテキスト番号(=「1」)とタスク(1)のサブコンテキスト情報(1)がRAM160から転送される。
図20は、第4の実施形態のコンテキスト復帰時の動作タイミングの第1例を表わす図である。
CPU130から送られるコンテキスト番号CTX_IDが「4」である。バッファ群150にコンテキスト番号(=「4」)のコンテキスト情報が保持されていないので、RAM160からコンテキスト番号(=「4」)のサブコンテキスト情報(3)、(2)、(1)およびリンクコンテキスト番号が内部バスBS4を通じて、順次バッファ群150へ出力される。RAM160からコンテキスト情報(0)がバスBS3を通じて1サイクルでCPU130へ出力されるとともに、バッファ群150のサブコンテキスト情報(3)、(2)、(1)がバスBS2を通じて1サイクルでCPU130へ出力される。
図21は、第4の実施形態のコンテキスト復帰時の動作タイミングの第2例を表わす図である。
CPU130から送られるコンテキスト番号CTX_IDが「3」である。バッファ群150にコンテキスト番号(=「3」)のリンクコンテキスト番号と、サブコンテキスト情報(1)、(2)、(3)が保持されているので、RAM160からサブコンテキスト情報(0)がバスBS3を通じて1サイクルでCPU130へ出力される。さらに、バッファ群150のサブコンテキスト情報(3)、(2)、(1)がバスBS2を通じて1サイクルでCPU130へ出力される。
図22は、第4の実施形態のコンテキスト復帰時の動作タイミングの第3例を表わす図である。
CPU130から送られるコンテキスト番号CTX_IDが「2」である。バッファ群150にコンテキスト番号(=「2」)のリンクコンテキスト番号と、サブコンテキスト情報(1)、(2)が保持されている。RAM160からコンテキスト番号(=「3」)のサブコンテキスト情報(3)が内部バスBS4を通じて1サイクルでバッファ群150へ出力される。RAM160からサブコンテキスト情報(0)がバスBS3を通じて1サイクルでCPU130へ出力されるとともに、バッファ群150のサブコンテキスト情報(3)、(2)、(1)がバスBS2を通じて1サイクルでCPU130へ出力される。
図23は、第4の実施形態のコンテキスト復帰時の動作タイミングの第4例を表わす図である。
CPU130から送られるコンテキスト番号CTX_IDが「1」である。バッファ群150にコンテキスト番号(=「1」)のリンクコンテキスト番号と、サブコンテキスト情報(1)が保持されている。RAM160からコンテキスト番号(=「3」)のサブコンテキスト情報(3)、(2)が内部バスBS4を通じて2サイクルでバッファ群150へ出力される。RAM160からサブコンテキスト情報(0)がバスBS3を通じて1サイクルでCPU130へ出力されるとともに、バッファ群150のサブコンテキスト情報(3)、(2)、(1)がバスBS2を通じて1サイクルでCPU130へ出力される。
以上のように、本実施の形態によれば、プリフェッチによって、復帰する可能性が高いタスクほど、多くのサブコンテキスト情報をバッファ群に転送しておくことによって、復帰する時間を短くできる可能性を高くすることができる。
[第5の実施形態]
バッファ群150は、複数の割り込みの各々に対して、コンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時にCPU130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される。
バッファ群150は、複数の割り込みの各々に対して、コンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時にCPU130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される。
バッファ群150は、バッファ(1−0)、バッファ(1−1)、バッファ(1−2)、バッファ(1−3)、バッファ(2−0)、バッファ(2−1)、バッファ(2−2)、バッファ(3−0)、およびバッファ(3−1)を含む。
バッファ(1−0)〜(1−3)には、第1のタスクのコンテキストデータが格納され、バッファ(2−0)〜(2−2)には、第2のタスクのコンテキストデータが格納され、バッファ(3−0)〜(3−1)には、第3のタスクのコンテキストデータが格納される。
(コンテキスト退避)
アクセス制御回路140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、CPU130から1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にCPU130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなる最新のコンテキストデータを記憶する領域の大きさを特定する。アクセス制御回路140は、特定した領域の大きさがバッファ群150に存在するかどうかを調べる。アクセス制御部は、記憶する領域が存在しない場合に、記憶する領域を作るために、バッファ群150に記憶されているいずれかのコンテキストデータを構成するコンテンツ情報およびリンクコンテキスト番号とからなるデータをバッファ群150から削除する。その後、アクセス制御回路140は、最新のコンテキストデータをバッファ群150に書込む。アクセス制御回路は、バッファ群150に書込まれた最新のコンテキストデータを構成するコンテキスト情報とリンクコンテキスト番号とからなるデータを1または複数のサイクルで内部バスBS4を通じてRAM160に転送する。
アクセス制御回路140は、割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、CPU130から1サイクルで転送されるコンテキスト情報と、コンテキスト情報を識別するコンテキスト番号と、割り込みの前にCPU130から転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなる最新のコンテキストデータを記憶する領域の大きさを特定する。アクセス制御回路140は、特定した領域の大きさがバッファ群150に存在するかどうかを調べる。アクセス制御部は、記憶する領域が存在しない場合に、記憶する領域を作るために、バッファ群150に記憶されているいずれかのコンテキストデータを構成するコンテンツ情報およびリンクコンテキスト番号とからなるデータをバッファ群150から削除する。その後、アクセス制御回路140は、最新のコンテキストデータをバッファ群150に書込む。アクセス制御回路は、バッファ群150に書込まれた最新のコンテキストデータを構成するコンテキスト情報とリンクコンテキスト番号とからなるデータを1または複数のサイクルで内部バスBS4を通じてRAM160に転送する。
以下の説明では、1つのタスクのコンテキスト情報は、CPU130から直接RAM160へ転送されるサブコンテキスト情報(0)と、CPU130からバッファ群150に転送されるサブコンテキスト情報(1)〜(3)に分割されるものとする。
図24は、第5の実施形態のコンテキスト退避時におけるバッファ制御を説明するための図である。
アクセス制御回路140は、バッファ(1−0)、(2−0)、(3−0)に保持されているコンテキスト番号が、退避するコンテキスト情報を識別するコンテキスト番号と一致する場合に、保持されている一致したコンテキスト番号を所定の無効な値に変更する。
アクセス制御回路140は、以下のようにしてバッファ群150のデータを右へシフトさせる。
アクセス制御回路140は、バッファ(3−0)、(3−1)のデータを破棄し、バッファ(2−0)、(2−1)のデータをバッファ(3−0)、(3−1)へ転送し、バッファ(2−2)のデータを破棄する。アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)のデータをバッファ(2−0)、(2−1)、(2−2)へ転送し、バッファ(1−3)のデータを破棄する。アクセス制御回路140は、CPU130からのデータをバッファ(1−0)、(1−1)、(1−2)、(1−3)へ転送する。アクセス制御回路140は、バッファ(1−1)、(1−2)、(1−3)のデータを1または複数のサイクルでRAM160に転送する。バッファ(1−1)とバッファ(1−2)とバッファ(1−3)のサイズの和が、内部バスBS4の幅である(M+α)ビット以下の場合には、バッファ(1−1)、(1−2)、(1−3)のデータは1サイクルでRAM160へ転送される。バッファ(1−1)とバッファ(1−2)とバッファ(1−3)のサイズの和が、内部バスBS4の幅である(M+α)ビットを超える場合には、バッファ(1−1)、(1−2)、(1−3)のデータは複数サイクルでRAM160へ転送される。
図25(a)は、図12に示す割り込み(1)が発生したときに、コンテキスト退避によって、バッファ群150に格納されるデータを表わす図である。
割り込み(1)が発生したときに、アクセス制御回路140は、バッファ(1−0)にコンテキスト番号(=1)を書き込む。アクセス制御回路140は、バッファ(1−1)、(1−2)、(1−3)にタスク(1)のリンクコンテキスト番号とサブコンテキスト情報(1)〜(3)を書き込む。アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)、(1−3)のデータを1または複数のサイクルで内部バスBSを通じてRAM160に転送する。
図25(b)は、割り込み(2)が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
割り込み(2)が発生したときに、アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)に保持されたタスク(1)のコンテキスト番号(=1)、リンクコンテキスト番号およびサブコンテキスト情報(1)、(2)をバッファ(2−0)、(2−1)、(2−2)に転送する(右へシフト)。バッファ(1−3)に保持されているタスク(1)のサブコンテキスト情報(3)は破棄される。アクセス制御回路140は、バッファ(1−0)にコンテキスト番号(=2)を書き込む。アクセス制御回路140は、バッファ(1−1)、(1−2)、(1−3)にタスク(2)のリンクコンテキスト番号、およびサブコンテキスト情報(1)〜(3)を書き込む。アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)、(1−3)のデータを1または複数のサイクルで内部バスBS4を通じてRAM160に転送する。
図25(c)は、割り込み(3)が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
割り込み(3)が発生したときに、アクセス制御回路140は、バッファ(2−0)、(2−1)に保持されたタスク(1)のコンテキスト番号(=1)、リンクコンテキスト番号およびサブコンテキスト情報(1)をバッファ(3−0)、(3−1)に転送する(右へシフト)。バッファ(2−2)に保持されているタスク(1)のサブコンテキスト情報(2)は破棄される。
アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)に保持されたタスク(2)のコンテキスト番号(=2)、リンクコンテキスト番号およびサブコンテキスト情報(1)、(2)をバッファ(2−0)、(2−1)、(2−2)に転送する(右へシフト)。バッファ(1−3)に保持されているタスク(2)のコンテキスト情報(3)は破棄される。
アクセス制御回路140は、バッファ(1−0)にコンテキスト番号(=3)を書き込む。アクセス制御回路140は、バッファ(1−1)、(1−2)、(1−3)にタスク(3)のリンクコンテキスト番号、およびサブコンテキスト情報(1)〜(3)を書き込む。アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)、(1−3)のデータを1または複数のサイクルで内部バスBS4を通じてRAM160に転送する。
図25(d)は、割り込み(4)が発生したときに、コンテキスト退避時のバッファ内に格納されるデータを表わす図である。
割り込み(4)が発生したときに、アクセス制御回路140は、バッファ(3−0)に保持されたタスク(1)のコンテキスト番号(=1)を消去し、バッファ(3−1)に保持されたリンクコンテキスト番号およびサブコンテキスト情報(1)をRAM160に転送する。
アクセス制御回路140は、バッファ(2−0)、(2−1)に保持されたタスク(1)のコンテキスト番号(=2)、リンクコンテキスト番号およびサブコンテキスト情報(1)をバッファ(3−0)、(3−1)に転送する(右へシフト)。バッファ(2−2)に保持されているタスク(1)のコンテキスト情報(2)は破棄される。
アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)に保持されたタスク(3)のコンテキスト番号(=3)、リンクコンテキスト番号およびサブコンテキスト情報(1)、(2)をバッファ(2−0)、(2−1)、(2−2)に転送する(右へシフト)。バッファ(1−3)に保持されているタスク(3)のコンテキスト情報(3)は破棄される。
アクセス制御回路140は、バッファ(1−0)にコンテキスト番号(=4)を書き込む。アクセス制御回路140は、バッファ(1−1)、(1−2)、(1−3)にタスク(4)のリンクコンテキスト番号およびサブコンテキスト情報(1)〜(3)を書き込む。アクセス制御回路140は、バッファ(1−0)、(1−1)、(1−2)、(1−3)のデータを1または複数のサイクルで内部バスBS4を通じてRAM160に転送する。
(コンテキスト復帰)
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、バッファ群150に記憶されているコンテキスト番号のいずれかと一致するときに、以下を実行する。アクセス制御回路140は、バッファ群150に記憶されている復帰するコンテキスト情報をCPU130へ転送するとともに、バッファ群150に記憶されている復帰するコンテキスト情報よりも後に書込まれたコンテキストデータをバッファ群150から削除する。
アクセス制御回路140は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、バッファ群150に記憶されているコンテキスト番号のいずれかと一致するときに、以下を実行する。アクセス制御回路140は、バッファ群150に記憶されている復帰するコンテキスト情報をCPU130へ転送するとともに、バッファ群150に記憶されている復帰するコンテキスト情報よりも後に書込まれたコンテキストデータをバッファ群150から削除する。
図26は、第5の実施形態のコンテキスト復帰時におけるバッファ制御を説明するための図である。図27は、第5の実施形態のコンテキスト復帰の処理手順を表わすフローチャートである。
ステップS101において、アクセス制御回路140にバスBS1を通じて転送されたコンテキスト番号がバッファ(1−0)に保持されているコンテキスト番号と一致するときに、処理がステップS117に進む。
ステップS102において、アクセス制御回路140にバスBS1を通じて転送されたコンテキスト番号がバッファ(2−0)に保持されているコンテキスト番号と一致するときに、処理がステップS104に進む。
ステップS103において、アクセス制御回路140にバスBS1を通じて転送されたコンテキスト番号がバッファ(3−0)に保持されているコンテキスト番号と一致するときに、処理がステップS107に進む。
アクセス制御回路140にバスBS1を通じて転送されたコンテキスト番号がバッファ(1−0)、バッファ(2−0)またはバッファ(3−0)に保持されているコンテキスト番号のいずれとも一致しないときに、処理がステップS111に進む。
ステップS104において、アクセス制御回路140は、バッファ(2−0)〜(2−2)のデータを左へシフトさせる。これによって、バッファ(2−0)〜(2−2)のコンテキストデータよりも後に書込まれたバッファ(1−0)〜(1−2)のコンテキストデータは、削除されて、バッファ(2−0)〜(2−2)のコンテキストデータに置き換えられる。
ステップS105において、アクセス制御回路140は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報(3)をRAM160から内部バスBS4を通じてバッファ(1−3)へ転送させる。
ステップS107において、アクセス制御回路140は、バッファ(3−0)〜(3−1)のデータを左へシフトさせる。これによって、バッファ(3−0)〜(3−1)のコンテキストデータよりも後に書込まれたバッファ(2−0)〜(2−1)のコンテキストデータは、削除されて、バッファ(3−0)〜(3−1)のコンテキストデータに置き換えられる。
ステップS108において、アクセス制御回路140は、転送されてきたコンテキスト番号のサブコンテキスト情報(2)をRAM160から内部バスBS4を通じてバッファ(2−2)へ転送させる。
ステップS109において、アクセス制御回路140は、バッファ(2−0)〜(2−2)のデータを左へシフトさせる。これによって、バッファ(2−0)〜(2−2)のコンテキストデータよりも後に書込まれたバッファ(1−0)〜(1−2)のコンテキストデータは、削除されて、バッファ(2−0)〜(2−2)のコンテキストデータに置き換えられる。
ステップS110において、アクセス制御回路140は、転送されてきたコンテキスト番号のサブコンテキスト情報(3)をRAM160から内部バスBS4を通じてバッファ(1−3)へ転送させる。
ステップS111において、アクセス制御回路140は、バッファ(3−0)のコンテキスト番号を転送されてきたコンテキスト番号に置き換える。
ステップS112において、アクセス制御回路140は、転送されてきたコンテキスト番号に対応するリンクコンテキスト番号およびサブコンテキスト情報(1)をRAM160から内部バスBS4を通じてバッファ(3−1)へ転送する。
ステップS113において、アクセス制御回路140は、バッファ(3−0)〜(3−1)のデータを左へシフトさせる。これによって、バッファ(3−0)〜(3−1)のコンテキストデータよりも後に書込まれたバッファ(2−0)〜(2−1)のコンテキストデータは、削除されて、バッファ(3−0)〜(3−1)のコンテキストデータに置き換えられる。
ステップS114において、アクセス制御回路140は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報(2)をRAM160から内部バスBS4を通じてバッファ(2−2)へ転送させる。
ステップS115において、アクセス制御回路140は、バッファ(2−0)〜(2−2)のデータを左へシフトさせる。これによって、バッファ(2−0)〜(2−2)のコンテキストデータよりも後に書込まれたバッファ(1−0)〜(1−2)のコンテキストデータは、削除されて、バッファ(2−0)〜(2−2)のコンテキストデータに置き換えられる。
ステップS116において、アクセス制御回路140は、転送されてきたコンテキスト番号に対応するサブコンテキスト情報(3)をRAM160から内部バスBS4を通じてバッファ(1−3)へ転送させる。
ステップS117において、アクセス制御回路140は、バッファ(1−1)〜(1−3)のサブコンテキスト情報(1)〜(3)をバスBS2を通じて、1サイクルでCPU130へ転送する。
(プリフェッチ)
アクセス制御回路140は、コンテキスト復帰後のプリフェッチにおいて、コンテキスト復帰によってCPU130へ転送したコンテキスト情報に対応するリンクコンテキスト番号をコンテキスト番号とするタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるようにする。そのために、アクセス制御回路140は、RAM160内の複数のタスクについてのコンテキスト情報の全部および一部とリンクコンテキスト番号とを含むデータを内部バスBS4を通じてバッファ群150へ転送する。
アクセス制御回路140は、コンテキスト復帰後のプリフェッチにおいて、コンテキスト復帰によってCPU130へ転送したコンテキスト情報に対応するリンクコンテキスト番号をコンテキスト番号とするタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるようにする。そのために、アクセス制御回路140は、RAM160内の複数のタスクについてのコンテキスト情報の全部および一部とリンクコンテキスト番号とを含むデータを内部バスBS4を通じてバッファ群150へ転送する。
図28は、第5の実施形態のプリフェッチの処理手順を表わすフローチャートである。
ステップS201において、バッファ(1−1)に保持されているリンクコンテキスト番号がバッファ(2−0)に保持されているコンテキスト番号と一致するときに、処理がステップS201に進む。一致しないときに、処理がステップS202に進む。
ステップS201において、バッファ(1−1)に保持されているリンクコンテキスト番号がバッファ(2−0)に保持されているコンテキスト番号と一致するときに、処理がステップS201に進む。一致しないときに、処理がステップS202に進む。
ステップS206において、バッファ(2−1)に保持されているリンクコンテキスト番号がバッファ(3−0)に保持されているコンテキスト番号と一致するときに、処理がステップS209に進む。一致しないときに、処理がステップS207に進む。
ステップS202において、アクセス制御回路140は、バッファ(2−0)に保持されているコンテキスト番号をバッファ(1−1)に保持されているリンクコンテキスト番号で更新する。
ステップ203において、アクセス制御回路140は、更新したバッファ(2−0)に保持されているコンテキスト番号に対応して、RAM160に記憶されているリンクコンテキスト番号およびサブコンテキスト情報(1)、(2)をバッファ(2−1)、バッファ(2−2)に転送する。
ステップS204において、アクセス制御回路140は、バッファ(3−0)に保持されているコンテキスト番号をバッファ(2−1)に保持されているリンクコンテキスト番号で更新する。
ステップ206において、アクセス制御回路140は、更新したバッファ(3−0)に保持されているコンテキスト番号に対応して、RAM160に記憶されているリンクコンテキスト番号およびサブコンテキスト情報(1)をバッファ(3−1)に転送する。
ステップS207において、アクセス制御回路140は、バッファ(3−0)に保持されているコンテキスト番号をバッファ(2−1)に保持されているリンクコンテキスト番号で更新する。
ステップ208において、アクセス制御回路140は、更新したバッファ(3−0)に保持されているコンテキスト番号に対応して、RAM160に記憶されているリンクコンテキスト番号およびサブコンテキスト情報(1)をバッファ(3−1)に転送する。
ステップS205およびS208の後、ステップS209が実行される。
ステップS209において、アクセス制御回路140は、バッファ(2−0)〜(2−2)のデータを左へシフトしてバッファ(1−0)〜(1−2)へ転送する。アクセス制御回路140は、バッファ(1−0)へ転送されたコンテキスト番号に対応するサブコンテキスト情報(3)をRAM160からバッファ(1−3)に転送する。
ステップS209において、アクセス制御回路140は、バッファ(2−0)〜(2−2)のデータを左へシフトしてバッファ(1−0)〜(1−2)へ転送する。アクセス制御回路140は、バッファ(1−0)へ転送されたコンテキスト番号に対応するサブコンテキスト情報(3)をRAM160からバッファ(1−3)に転送する。
ステップS210において、アクセス制御回路140は、バッファ(3−0)〜(3−1)のデータを左へシフトしてバッファ(2−0)〜(2−1)へ転送する。アクセス制御回路140は、バッファ(2−0)へ転送されたコンテキスト番号に対応するサブコンテキスト情報(2)をRAM160からバッファ(2−2)に転送する。
ステップS211において、アクセス制御回路140は、バッファ(3−0)のコンテキスト番号をバッファ(2−1)のリンクコンテキスト番号で更新する。
ステップS212において、アクセス制御回路140は、更新したバッファ(3−0)に保持されているコンテキスト番号に対応して、RAM160に記憶されているリンクコンテキスト番号およびサブコンテキスト情報(1)をバッファ(3−1)に転送する。
以上のように、本実施の形態によれば、多重割込みが発生した場合に、新しく(後のタイミングで)実行を停止した高いタスクほど、多くのサブコンテキスト情報をバッファ群に記憶させることによって、復帰する時間を短くできる可能性を高くすることができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
100 半導体装置、110,210,1000 メモリモジュール、120 割り込み制御回路、130,1130 CPU、140,1140 アクセス制御回路、150 バッファ群、160 RAM,250 拡張バッファ群、1150 第1の記憶部、1160 第2の記憶部、BS1,BS2,BS3,BS4 バス。
Claims (17)
- CPUと第1のビット幅の第1のバスを通じて接続される第1の記憶部と、
前記第1の記憶部と前記第1のビット幅よりも小さなビット幅の第2のバスを通じて接続される第2の記憶部と、
割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、前記第1のバスを通じて前記CPUから1サイクルで転送されるコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時に前記CPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを前記第1の記憶部に書込むアクセス制御回路とを備え、
前記アクセス制御回路は、前記第1の記憶部への前記書込み後、前記第1の記憶部に記憶されているコンテキスト番号に対応させて、前記第1の記憶部に記憶されている前記コンテキスト情報と前記リンクコンテキスト番号とからなるデータを複数のサイクルで前記第2のバスを通じて前記第2の記憶部に転送する、メモリモジュール。 - 前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第1の記憶部に記憶されているコンテキスト番号と一致するときに、前記第1の記憶部に記憶されている前記コンテキスト番号で識別されるコンテキスト情報を前記第1のバスを通じて1サイクルで前記CPUへ転送する、請求項1記載のメモリモジュール。
- 前記アクセス制御回路は、前記復帰する要求を受けたときに、前記復帰するコンテキスト情報を識別するコンテキスト番号が、前記第1の記憶部に記憶されているコンテキスト番号と一致しないときに、前記第1の記憶部の前記コンテキスト番号を前記復帰するコンテキスト情報を識別するコンテキスト番号で更新し、前記更新されたコンテキスト番号に対応させて前記第2の記憶部に記憶されている前記コンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第2のバスを通じて複数サイクルで前記第1の記憶部へ転送し、その後、前記第1の記憶部に転送されたコンテキスト情報を前記第1のバスを通じて1サイクルで前記CPUへ転送する、請求項2記載のメモリモジュール。
- 前記アクセス制御回路は、前記復帰の後のプリフェッチにおいて、前記第1の記憶部に記憶されている前記リンクコンテキスト番号に対応して前記第2の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第2のバスを通じて複数サイクルで前記第1の記憶部へ転送する、請求項3記載のメモリモジュール。
- 前記アクセス制御回路は、前記割り込みによってコンテキスト情報を退避する要求を受けたときに、前記要求を受ける前に前記第1の記憶部に記憶されていたコンテキスト番号が所定の無効な値でないときに、前記コンテキスト番号によって前記リンクコンテキスト番号を更新する、請求項1記載のメモリモジュール。
- 前記CPUと前記第1のバスを通じて接続される第3の記憶部を備え、
前記アクセス制御回路は、割り込みによってコンテキスト情報を退避する要求を受けたときに、前記第3の記憶部に記憶されているコンテキスト番号が所定の無効な値のときに、前記第1のバスを通じて前記CPUから1サイクルで転送されるコンテキスト情報を前記第3の記憶部にも出力させるとともに、前記コンテキスト情報を識別するコンテキスト番号を前記第3の記憶部にも書込む、請求項1記載のメモリモジュール。 - 前記アクセス制御回路は、前記退避する要求を受けたときに、前記第3の記憶部に記憶されているコンテキスト番号が前記割り込みによって退避するコンテキスト情報を識別するコンテキスト番号と一致するときに、前記第1のバスを通じて前記CPUから1サイクルで転送されるコンテキスト情報を前記第3の記憶部にも出力させる、請求項6記載のメモリモジュール。
- 前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第3の記憶部に記憶されているコンテキスト番号と一致するときに、前記第3の記憶部に記憶されているコンテキスト情報を前記第1のバスを通じて1サイクルで前記CPUへ転送する、請求項7記載のメモリモジュール。
- 前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、復帰するコンテキスト情報を識別するコンテキスト番号が、前記第3の記憶部に記憶されているコンテキスト番号と一致せず、かつ前記第1の記憶部に記憶されているコンテキスト番号と一致するときに、前記第1の記憶部に記憶されているコンテキスト情報を前記第1のバスを通じて1サイクルで前記CPUへ転送する、請求項8記載のメモリモジュール。
- 前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、
復帰するコンテキスト情報を識別するコンテキスト番号が、前記第3の記憶部に記憶されているコンテキスト番号と一致せず、かつ前記第1の記憶部に記憶されているコンテキスト番号と一致しないときに、前記復帰するコンテキスト情報を識別するコンテキスト番号と対応させて、前記第2の記憶部に記憶されている前記コンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第2のバスを通じて複数サイクルで前記第1の記憶部へ転送し、その後、前記第1の記憶部に転送されたコンテキスト情報を前記第1のバスを通じて1サイクルで前記CPUへ転送する、請求項9記載のメモリモジュール。 - 前記アクセス制御回路は、前記復帰後のプリフェッチにおいて、前記第1の記憶部に記憶されている前記リンクコンテキスト番号が前記第3の記憶部に記憶されているコンテキスト番号と一致しないときに、前記第2の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを前記第2のバスを通じて複数サイクルで前記第1の記憶部へ転送する、請求項10記載のメモリモジュール。
- 前記第1の記憶部は、複数の割り込みの各々で停止したタスクに対して、コンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時に転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成され、
前記アクセス制御回路は、プリフェッチにおいて、前記第1の記憶部における最も優先度の高いタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、前記第2の記憶部に記憶された複数のタスクについてのコンテキスト情報の一部または全部と前記リンクコンテキスト番号とを含むデータを前記第2のバスを通じて前記第1の記憶部へ転送する、請求項1記載のメモリモジュール。 - 前記CPUと前記第2の記憶部は、前記第1のビット幅よりも小さなビット幅の第3のバスで接続され、
前記CPUと前記第2の記憶部との間で、前記コンテキスト情報のうち第2のビットのデータが前記第3のバスを通じて、1サイクルで転送され、
前記CPUと前記第1の記憶部との間で、前記コンテキスト情報のうち前記第2のビットのデータを除くデータが、前記第1のバスを通じて、1サイクルで転送される、請求項1記載のメモリモジュール。 - CPUと第1のビット幅の第1のバスを通じて接続され、複数の割り込みの各々で実行を停止したタスクに対して、コンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時に前記CPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなるコンテキストデータを記憶するように構成される第1の記憶部と、
前記第1の記憶部と前記第1のビット幅よりも小さなビット幅の第2のバスを通じて接続される第2の記憶部と、
割り込みによってタスクのコンテキスト情報を退避する要求を受けたときに、前記第1のバスを通じて前記CPUから1サイクルで転送されるコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、前記割り込みの前に前記CPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とからなる最新のコンテキストデータを記憶する領域が前記第1の記憶部に存在しないときには、前記第1の記憶部に記憶されているいずれかのコンテキストデータを構成する前記コンテキスト情報および前記リンクコンテキスト番号からなるデータの少なくとも1部を前記第1の記憶部から削除し、その後前記最新のコンテキストデータを前記第1の記憶部に書込むアクセス制御回路とを備え、
前記アクセス制御回路は、前記第1の記憶部に記憶された前記最新のコンテキストデータを構成する前記コンテキスト情報と前記リンクコンテキスト番号とからなるデータを1または複数のサイクルで前記第2のバスを通じて前記第2の記憶部に転送する、メモリモジュール。 - 前記アクセス制御回路は、割り込みによって退避したコンテキスト情報を復帰する要求を受けたときに、
復帰するコンテキスト情報を識別するコンテキスト番号が、前記第1の記憶部に記憶されているコンテキスト番号のいずれかと一致するときに、前記第1の記憶部に記憶されている前記復帰するコンテキスト情報を前記CPUへ転送するとともに、前記第1の記憶部に記憶されている前記復帰するコンテキスト情報よりも後に書込まれたコンテキストデータを前記第1の記憶部から削除する、請求項14記載のメモリモジュール。 - 前記アクセス制御回路は、前記復帰後のプリフェッチにおいて、前記復帰によって前記CPUへ転送したコンテキスト情報に対応する前記リンクコンテキスト番号をコンテキスト番号とするタスクのコンテキスト情報のデータ量が、他のタスクのコンテキスト情報のデータ量よりも多くなるように、前記第2の記憶部に記憶された複数のタスクについての前記コンテキスト情報の一部または全部と前記リンクコンテキスト番号とを含むデータを前記第2のバスを通じて前記第1の記憶部へ転送する、請求項15記載のメモリモジュール。
- CPUと第1のビット幅の第1のバスを通じて接続される第1の記憶部と、
前記第1の記憶部と前記第1のビット幅よりも小さなビット幅の第2のバスを通じて接続される第2の記憶部とを備え、
前記第1の記憶部は、最新の割り込みに対して、前記CPUから転送されたコンテキスト情報と、前記コンテキスト情報を識別するコンテキスト番号と、1つ前の割り込み時に前記CPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを記憶し、
前記第2の記憶部は、複数回の割り込みに対して、前記CPUから転送されたコンテキスト情報と、1つ前の割り込み時に前記CPUから転送されたコンテキスト情報を識別するリンクコンテキスト番号とを前記コンテキスト情報を識別するコンテキスト番号に対応して記憶し、
プリフェッチにおいて、前記第1の記憶部に記憶されている前記リンクコンテキスト番号に対応して前記第2の記憶部に記憶されているコンテキスト情報および前記リンクコンテキスト番号を含むデータを複数サイクルで前記第2のバスを通じて前記第1の記憶部へ転送するアクセス制御回路とを備える、メモリモジュール。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018117712A JP2019219984A (ja) | 2018-06-21 | 2018-06-21 | メモリモジュール |
CN201910485242.7A CN110633132A (zh) | 2018-06-21 | 2019-06-05 | 存储器模块 |
US16/433,860 US10853123B2 (en) | 2018-06-21 | 2019-06-06 | Memory module |
EP19181235.3A EP3588319B1 (en) | 2018-06-21 | 2019-06-19 | Memory module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018117712A JP2019219984A (ja) | 2018-06-21 | 2018-06-21 | メモリモジュール |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019219984A true JP2019219984A (ja) | 2019-12-26 |
Family
ID=66999588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018117712A Pending JP2019219984A (ja) | 2018-06-21 | 2018-06-21 | メモリモジュール |
Country Status (4)
Country | Link |
---|---|
US (1) | US10853123B2 (ja) |
EP (1) | EP3588319B1 (ja) |
JP (1) | JP2019219984A (ja) |
CN (1) | CN110633132A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11281473B2 (en) * | 2019-04-05 | 2022-03-22 | Arm Limited | Dual wakeup interrupt controllers |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205467B1 (en) * | 1995-11-14 | 2001-03-20 | Advanced Micro Devices, Inc. | Microprocessor having a context save unit for saving context independent from interrupt requests |
US5784649A (en) * | 1996-03-13 | 1998-07-21 | Diamond Multimedia Systems, Inc. | Multi-threaded FIFO pool buffer and bus transfer control system |
JP3605978B2 (ja) * | 1997-01-17 | 2004-12-22 | 松下電器産業株式会社 | マイクロコンピュータ |
US6275749B1 (en) | 1998-12-22 | 2001-08-14 | Philips Electronics North America Corporation | Interrupt-controlled thread processing |
US6553487B1 (en) * | 2000-01-07 | 2003-04-22 | Motorola, Inc. | Device and method for performing high-speed low overhead context switch |
JP2004220070A (ja) * | 2003-01-09 | 2004-08-05 | Japan Science & Technology Agency | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
JP2006092042A (ja) | 2004-09-21 | 2006-04-06 | Sanyo Electric Co Ltd | 情報処理装置及びコンテキスト切り替え方法 |
KR20090006707A (ko) * | 2007-07-11 | 2009-01-15 | 주식회사 비즈모델라인 | 광고 데이터 처리장치 |
US8479284B1 (en) * | 2007-12-20 | 2013-07-02 | Symantec Corporation | Referrer context identification for remote object links |
JP2009272912A (ja) * | 2008-05-08 | 2009-11-19 | Fujitsu Ltd | Ipデータ処理装置 |
US8364857B2 (en) * | 2009-08-31 | 2013-01-29 | Qualcomm Incorporated | Wireless modem with CPU and auxiliary processor that shifts control between processors when in low power state while maintaining communication link to wireless network |
US20130019053A1 (en) * | 2011-07-14 | 2013-01-17 | Vinay Ashok Somanache | Flash controller hardware architecture for flash devices |
JP5803721B2 (ja) * | 2012-02-13 | 2015-11-04 | 株式会社デンソー | データ処理装置 |
KR20150128680A (ko) | 2013-03-12 | 2015-11-18 | 마이크로칩 테크놀로지 인코포레이티드 | 프로그램 가능한 cpu 레지스터 하드웨어 컨텍스트 스왑 메커니즘 |
CN103593606B (zh) * | 2013-11-20 | 2016-06-01 | 北京经纬恒润科技有限公司 | 上下文信息管理方法及*** |
-
2018
- 2018-06-21 JP JP2018117712A patent/JP2019219984A/ja active Pending
-
2019
- 2019-06-05 CN CN201910485242.7A patent/CN110633132A/zh active Pending
- 2019-06-06 US US16/433,860 patent/US10853123B2/en active Active
- 2019-06-19 EP EP19181235.3A patent/EP3588319B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10853123B2 (en) | 2020-12-01 |
EP3588319A2 (en) | 2020-01-01 |
EP3588319B1 (en) | 2021-08-04 |
EP3588319A3 (en) | 2020-03-25 |
US20190391840A1 (en) | 2019-12-26 |
CN110633132A (zh) | 2019-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10038571B2 (en) | Method for reading and writing forwarding information base, and network processor | |
CN105512054B (zh) | 主机接口控制器以及储存装置控制方法 | |
JP2009193430A (ja) | 通信制御装置、情報処理装置およびプログラム | |
JP5024899B2 (ja) | データ処理装置 | |
US7477641B2 (en) | Providing access to data shared by packet processing threads | |
US8812783B2 (en) | Operation apparatus, cache apparatus, and control method thereof | |
WO2011099048A1 (ja) | 伝送制御装置、メモリ制御装置、及び前記伝送制御装置を備えたplc | |
JP4817834B2 (ja) | 割り込み制御装置及び割り込み制御方法 | |
EP3588319B1 (en) | Memory module | |
US10963402B1 (en) | Using age matrices for managing entries in sub-queues of a queue | |
JP5108690B2 (ja) | Dma装置及びdma転送方法 | |
JP2019159846A (ja) | 情報処理装置、情報処理システム及び情報処理装置の制御方法 | |
JP2009199384A (ja) | データ処理装置 | |
KR19980056298A (ko) | 환형 큐를 이용한 동적 데이터 블럭 전송 장치 및 방법 | |
US10120819B2 (en) | System and method for cache memory line fill using interrupt indication | |
EP3299965B1 (en) | Method and physical device for managing linked lists | |
US20140297958A1 (en) | System and method for updating an instruction cache following a branch instruction in a semiconductor device | |
JP2003044354A (ja) | メモリ制御装置 | |
JP6256088B2 (ja) | ベクトルプロセッサ、情報処理装置および追い越し制御方法 | |
JP6747680B1 (ja) | データ転送装置、データ転送方法及びコンピュータプログラム | |
US20150278095A1 (en) | Data processing device | |
JP5387155B2 (ja) | Dma転送制御装置およびdma転送制御方法 | |
JP4520949B2 (ja) | 並列演算処理装置および並列演算処理方法 | |
JP2635863B2 (ja) | 中央処理装置 | |
JP2007188357A (ja) | データ転送装置 |