JP2004127031A - メモリ切り替え回路 - Google Patents
メモリ切り替え回路 Download PDFInfo
- Publication number
- JP2004127031A JP2004127031A JP2002291582A JP2002291582A JP2004127031A JP 2004127031 A JP2004127031 A JP 2004127031A JP 2002291582 A JP2002291582 A JP 2002291582A JP 2002291582 A JP2002291582 A JP 2002291582A JP 2004127031 A JP2004127031 A JP 2004127031A
- Authority
- JP
- Japan
- Prior art keywords
- task
- address
- microprocessor
- memory
- bus
- 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
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
【課題】ハードリアルタイムが要求される優先度の高いタスクの実行のリアルタイム性の確保を行なうメモリ切り替え回路を提供する。
【解決手段】マイクロプロセッサ1、キャッシュコントローラ3、キャッシュメモリ4、およびメインメモリ2から構成されるマイクロプロセッサ回路において、ローカルメモリ14と、タスク切替ビット11と、タスク切替ビット11の出力によりローカルメモリ14とキャッシュコントローラ3のバスを切り替えるバス切替部13と、アドレス信号とタスク切替ビット11の出力とによりローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク切替ビット11の出力とアドレスバスからのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号とにより、タスク切替ビット11のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備える。
【選択図】 図1
【解決手段】マイクロプロセッサ1、キャッシュコントローラ3、キャッシュメモリ4、およびメインメモリ2から構成されるマイクロプロセッサ回路において、ローカルメモリ14と、タスク切替ビット11と、タスク切替ビット11の出力によりローカルメモリ14とキャッシュコントローラ3のバスを切り替えるバス切替部13と、アドレス信号とタスク切替ビット11の出力とによりローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク切替ビット11の出力とアドレスバスからのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号とにより、タスク切替ビット11のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備える。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、マイクロプロセッサ回路、特にキャッシュを利用したメモリ階層構造をとるマイクロプロセッサ回路のメモリ切り替え回路に関する。
【0002】
【従来の技術】
マイクロプロセッサ回路の技術として、マイクロプロセッサとメモリだけの構成である図5を用いて、マイクロプロセッサが命令の読み込み等、メモリアクセスを行なうことで生じる問題点を説明する。このような構成は、組み込みシステムでマイクロプロセッサを利用する場合には良く見掛けられる構成である。
マイクロプロセッサはスループットの改善のために、内部処理をブロック化(これをステージと呼ぶ)し、そのステージを並列に動作させる回路構成をとる。この回路構成をパイプラインと呼ぶ。例えば、命令読み込み、命令デコード、演算、メモリへの結果の書出しという4つのステージから構成されるパイプラインでは、命令の読み込み、命令デコード、演算、メモリへの結果の書出しを並行に行なえるため、スループットの改善になる。パイプライン構成でない場合には、これらの処理がシーケンシャルに行なわれるため、単純計算で4倍の時間がかかる。
【0003】
図5の構成において、マイクロプロセッサ1と主記憶であるメインメモリ2とのアクセススピードの差が大きい場合には、メインメモリ2からの命令の取り込みやデータの読み書きのために、マイクロプロセッサ1においてはパイプラインにインターロックが発生する。そのため、パイプラインにストール(乱れ)を生じ、各ステージの実行をクロック毎に行なえなくなるため、スループットが低下する。実際にはマイクロプロセッサ1に比べてメインメモリ2の処理速度は遅いため、メモリアクセスの際にはパイプラインストールを生じやすい。
【0004】
スループットの低下を改善するメモリの階層構造について図6に例を挙げて説明する。マイクロプロセッサ1と主記憶であるメインメモリ2との間にキャッシュコントローラ3が接続される。キャッシュコントローラ3には、比較的容量が少ないが、メインメモリ2に比べ高速なキャッシュメモリ4が接続される。最近アクセスしたデータは、キャッシュコントローラ3によりキャッシュメモリ4に取り込まれている。この際、キャッシュコントローラ3はそのデータのみでなく、ラインと呼ばれる一定のブロックでデータの取り込みを行なう。マイクロプロセッサ1が同じデータにアクセスする場合、キャッシュコントローラ3はメインメモリ2のデータではなく、キャッシュメモリ4のデータを提示する。これを、キャッシュにヒットしているという。ここで、キャッシュメモリ4はマイクロプロセッサ1のパイプランがインターロックを生じないような、高速なアクセススピードのメモリを用いる。そのため、キャッシュメモリ4にデータがヒットしている間は、パイプラインのスピードにキャッシュメモリのアクセスが追いつくのでパイプランストールが生じず、スループットを維持することができる。
【0005】
キャッシュメモリ4は命令やデータがアクセスされる際の性質である、空間的局所性と時間的局所性を利用している。命令は連続したアドレスに配置されるため空間的局所性を持ち、データは短い時間の間にアクセスされる傾向にあるため時間的局所性を持つ。この局所性を利用して、よくアクセスされる命令やデータをキャッシュメモリ4に蓄え、マイクロプロセッサ1へ高速に提示する。
上記の性質から、キャッシュメモリはUNIX(登録商標)のプロセスのように、比較的長い間マイクロプロセッサを占有するプログラムに対し相性が良い。そのため、単一プロセスのスループットの改善がシステム全体のパフォーマンスの向上につながる。
【0006】
【特許文献1】
特開平5−20059号公報
【特許文献2】
特開平5−324473号公報
【特許文献3】
特開平6−119241号公報
【0007】
【発明が解決しようとする課題】
しかしながら、リアルタイムシステムでは、短い時間でタスクの切り替えが生じ、空間的局所性や時間的局所性を満足しない状況が比較的生じ易い。そのため、キャッシュミスによるラインのリプレースが頻繁に生じることになり、パイプラインのストールを生じさせパフォーマンスの低下を引き起こす。
特に、ハードリアルタイムを要求される定周期タスクが影響を受けやすく、ハードリアルタイムを満足しない要因となる。さらに、要求される時間内に、演算を行なわなければならないリアルタイムシステムでは、タスクの実行時間の予測が不可欠である。キャッシュメモリを用いたリアルタイムシステムでは、上記のような理由により実行時間の変動があるため、実行時間の予測が困難である。
【0008】
これを改善する方法として、例えば図7に示すようにキャッシュのライン33やラインを示すタグ32に加えて、ラインをロックするためのロックビット31を加えることが行なわれる。ロックビット31が有効なラインはキャッシュのリプレースの対象とならず、常にキャッシュにデータが存在する。
しかし、この図7に示す方法では、無駄な命令やデータがキャッシュに蓄えられること、そして、実効的なキャッシュメモリの領域が減少することなど、種々の問題をもつ。
【0009】
一方、キャッシュメモリの有効利用およびプログラム処理速度の向上を図るために、例えば特許文献1には、プログラムを記憶するメインメモリと、プログラムの一部を記憶するキャッシュメモリと、初期化の際にプログラムの一部をキャッシュメモリに書き込む書き込み制御手段と、キャッシュメモリのプログラムを優先的に実行させる制御手段とを備えたマイクロプロセッサが開示されている。
【0010】
また特許文献2には、キャッシュメモリを、ダイレクトマップ方式の1次キャッシュメモリと小規模なダイレクトマップ方式の2次キャッシュメモリとで構成し、1次キャッシュメモリと2次キャッシュメモリの内容に重複がないように制御することで、小面積で高速なマイクロプロセッサの実現を図っている。
【0011】
特許文献3には、CPUとローカルメモリとの中間にキャッシュメモリを有するマイクロプロセッサにおいて、ローカルメモリには、命令コード格納エリアと、データエリア内にシステム運用中に書き換えられることのない固定データが格納された特定セグメントとを設けると共に、命令コード格納エリアと特定セグメントがCPUによってアクセスされたときのみキャッシュイネーブル信号を送出するキャッシュ制御部を設け、CPUが命令フェッチまたは固定データ読込みのためにローカルメモリにアクセスしたときに、キャッシュイネーブル信号によって当該アドレスの内容がキャッシュメモリに書き込まれるようにしたキャッシュメモリ制御方式が開示されている。
【0012】
しかしながら、このような従来の技術においては、次のような問題があった。
特許文献1に記載されたマイクロプロセッサでは、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくことはできるが、そのことにより実際のキャッシュメモリ容量が減ることにつながる。これは、キャッシュメモリに留めておくタスク以外は、キャッシュメモリの効果を受けることが少なくなり、システムのパフォーマンスが低下するという問題がある。 特許文献2に記載されたマイクロプロセッサは、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくのが困難となる。そのため、ある特定のタスクが必要なときに、キャッシュミスが発生する可能性が高く、パフォーマンスの低下を招くという問題がある。
特許文献3に記載されたマイクロプロセッサは、メモリ上のある特定の領域をキャッシュメモリに留めておくもので、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくのは困難となる。そのため、ある特定のタスクが必要なときに、キャッシュミスが発生する可能性が高く、パフォーマンスの低下を招くという問題がある。また、キャッシュメモリが有効でない領域については、パフォーマンスの低下を招くという問題がある。
【0013】
そこで本発明は、マイクロプロセッサとキャッシュとメインメモリから構成されるマイクロプロセッサ回路において、ハードリアルタイムが要求される優先度の高いタスクの実行のリアルタイム性の確保を行なうと同時に、優先度の低いタスクについては平均的なスループットを向上させ、トータルとしてシステムのパフォーマンスを改善できるメモリ切り替え回路を提供することを目的とし、併せて、優先度の高い定周期タスクに対して、静的に予測した実行時間の精度を上げることも目的とする。
【0014】
【課題を解決するための手段】
上記課題を解決するため、本発明の第1の構成は、マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、パイプライン処理を乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の決定に使われるタスク切替ビットと、前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク切替ビットの出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号と前記タスク切替ビットの出力とにより、前記ローカルメモリへのアドレスを生成するアドレス生成部と、前記タスク切替ビットの出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスク切替ビットのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部とを備えたものである。
この第1の構成においては、優先度の高いタスクの切り替えの前/後で、ローカルメモリを選択するようにタスク切替ビットをプログラムで設定/解除を行なうことで、ローカルメモリ上で優先度の高いタスクを実行させ、ハードリアルタイムを満足することができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0015】
本発明の第2の構成は、マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、パイプライン処理に乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の判定に使われるタスクテーブルと、前記タスクテーブルの出力と前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号との比較を行ないタスクの切替の判定を行なうタスク検出部と、前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク検出部の出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、前記アドレスバスと前記タスクテーブルの出力と前記タスク検出部の出力により、前記ローカルメモリへのアドレスを生成するアドレス生成部と、前記タスク検出部の出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスクテーブルのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部とを備えたものである。
この第2の構成によれば、ローカルメモリ上で動作させたい優先度の高いタスクをタスクテーブルに設定することで、タスク切替判定部では、このタスクテーブルとプロセッサの生成するアドレスを比較することにより、ローカルメモリを選択するタスクの判定を行なうことにより、自動的にローカルメモリ上で優先度の高いタスクを実行させ、ハードリアルタイムを満足することができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0016】
本発明の第3の構成は、第2の構成のタスクテーブルを、切り替えを行なうタスクもしくはそのタスクのデータ領域のベースアドレスとサイズのペアを一つの項目とし、複数の項目を持つようにしたものである。
この第3の構成によれば、複数の優先度の高いタスクを取り扱うことができるので、第2の構成の効果を複数のタスクに適用できるため、さらに厳しい要求のハードリアルタイムを満足することができる。さらに、複数のタスクの変動要因が排除できるため、さらに正確な実行時間の予測を行なうことができる。
【0017】
【発明の実施の形態】
以下、本発明の実施の形態を図1〜図4を用いて説明する。
<第1実施形態>
図1は本発明の第1実施形態を示すものである。
この第1実施形態に係るメモリ切り替え回路は、マイクロプロセッサ1、メインメモリ2、キャッシュコントローラ3、キャッシュメモリ4から構成されるマイクロプロセッサ回路において、パイプライン処理を乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリ14と、マイクロプロセッサ1からデータバスS2を通して任意に値を設定でき、タスクの切替の決定に使われるタスク切替ビット11と、マイクロプロセッサ1からのデータバスS2とローカルメモリ14のデータバスS13とキャッシュコントローラ3からのデータバスS14に接続され、データバスS11からのタスク切替ビット11の出力によりローカルメモリ14とキャッシュコントローラ3のバスS13,S14を切り替えるバス切替部13と、マイクロプロセッサ1に接続されたアドレスバスS1からのアドレス信号とタスク切替ビット13の出力とにより、ローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク切替ビット11の出力とアドレスバスS1からのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号とにより、タスク切替ビット11のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備えている。
【0018】
次に、この構成の回路の動作について説明する。
ローカルメモリ14上で優先度の高いタスクを動作させるためには、システムの初期化時にメインメモリ2上に存在するタスクをローカルメモリ14へコピーする。ローカルメモリ14へのコピーはマイクロプロセッサ1がメインメモリ2上のタスクプログラムをデータとして読み出すことから始まる。この読み出したデータをローカルメモリ14に書き込むには、タスク切替ビット11を1にセットする。
マイクロプロセッサ1がタスク切替ビット11にアクセスするには、アドレスバスS1を通してタスク切替ビット11がマップされているアドレスと、ストローブバスS3を通して読み書きを示すストローブ信号とを、マイクロプロセッサ1が出力する。デコーダ部15は、このアドレスバスS1とストローブバスS3の情報を元にタスク切替ビットセレクト信号S15を生成し、タスク切替ビット11にアクセスする。ストローブバスS3が書き込みを示す場合、タスク切替ビット11はデータバスS2から与えられる値を設定でき、読み込みを示す場合、設定されている値をデータバスS2を通して確認できる。
【0019】
本実施形態では、タスク切替ビット11の内容を1にセットした場合には、ローカルメモリ14を選択するものとして説明を行なう。タスク切替ビット11の出力S11は、バス切替部13、アドレス生成部12とデコーダ部15に接続されており、タスク切替ビット11の出力が1の場合ローカルメモリ14を選択するように、バス切替部13はデータバスS2とローカルメモリデータバスS13を接続し、アドレス生成部12はアドレスバスS1を元にローカルメモリ14に与えるアドレスを生成し、アドレスバスS12に出力する。
デコーダ部15はローカルメモリセレクト信号S16を生成する。これにより、メインメモリ2から読み込まれたデータを、ローカルメモリ14に書き込むことができる。この動作をタスクのサイズだけ繰り返した後、タスク切替ビット11を0にリセットし、初期化を完了する。タスク切替ビット11が0にリセットされている場合、バス切替部13はデータバスS2とキャッシュコントローラ3とのデータバスS14を接続する。しかし、デコーダ部15とアドレス生成部12は動作しない。
【0020】
初期化後、最初のタスクが生成されシステムが動き出す。あるイベントによりこのローカルメモリ14にコピーしたタスクがスケジューリングされ起動される前にタスク切替ビット11の出力を1にセットすることで、ローカルメモリ14からタスクが読み込まれ実行されるようになる。これにより、パイプラインを乱すことなくこのタスクの実行が行なえるため、ハードリアルタイムを満足することができるようになるのである。このタスクが処理を終え待ちに入る場合、スケジュールの前にタスク切替ビット11の出力を0にリセットし、メインメモリ2もしくはキャッシュコントローラ3を通してキャッシュメモリ4から新たなタスクを読み込めるようにする。
【0021】
<第2実施形態>
図2は本発明の第2実施形態を示すものである。
本実施形態に係るメモリ切り替え回路は、マイクロプロセッサ1、メインメモリ2、キャッシュコントローラ3、キャッシュメモリ4から構成されるマイクロプロセッサ回路において、パイプライン処理に乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリ14と、マイクロプロセッサ1からデータバスS2を通して任意に値を設定でき、タスクの切替の判定に使われるタスクテーブル112と、タスクテーブル112の出力とマイクロプロセッサ1に接続されたアドレスバスS1からのアドレス信号との比較を行ないタスクの切替の判定を行なうタスク検出部111と、マイクロプロセッサ1からのデータバスS2とローカルメモリ14のデータバスS13とキャッシュコントローラ3からのデータバスS14に接続され、タスク検出部111の出力によりローカルメモリ14とキャッシュコントローラ3のバスS13,S14を切り替えるバス切替部13と、アドレスバスS1とタスクテーブル112の出力とタスク検出部111の出力により、ローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク検出部111の出力とアドレスバスS1からのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号S3とにより、タスクテーブル112のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備えている。
【0022】
次に、この第2実施形態の動作について説明する。
第2実施形態でも、ローカルメモリ14上で優先度の高いタスクを動作させるためには、図1に示した第1実施形態の場合と同じく、システムの初期化時にメインメモリ2上に存在するタスクをローカルメモリ14にコピーする。タスクテーブル112には、優先度が高いためローカルメモリ14で動作させたいタスクのスタートアドレスを設定する。
マイクロプロセッサ1がタスクテーブル112にアクセスするには、アドレスバスS1を通してタスクテーブル112がマップされているアドレスを、ストローブバスS3を通して読み書きを示すストローブ信号を、それぞれマイクロプロセッサ1が出力する。デコーダ部15は、このアドレスバスS1とストローブバスS3の情報を元に、タスクテーブルセレクト信号S15を生成し、タスクテーブル112にアクセスできる。
【0023】
ストローブバスS3のストローブ信号が書き込みを示す場合、データバスS2から与えられる値を設定でき、読み込みを示す場合、設定されている値をデータバスを通して確認できる。第1実施形態の場合と同じような手順で、データを読み、次にタスクテーブル112を設定し、ローカルメモリ14に書き込み、書き込み後にタスクテーブル112の再設定を行なうことで初期化が行なえるが、これは手順として煩雑である。より効率的に行なうには、タスクテーブル112をメモリ等のリソースがマップされてない空間に設定する。ローカルメモリ14へのコピーはマイクロプロセッサ1がメインメモリ2上のタスクプログラムをデータとして読み出す。この読み出したデータをローカルメモリ14に書き込むには、タスクテーブル112に設定したアドレスをベースとする。
ここで、タスク検出部111では、アドレスバスS1とタスクテーブル112の出力S17を利用して、
タスクテーブル112の値≦アドレス<タスクテーブルの値+ローカルメモリ14のサイズ
の判定を行ない、目的のタスクを検出する。本実施形態では目的のタスクを検出した場合にタスク検出部は1を出力し、この時にはローカルメモリ14を選択するものとして説明を行なう。
【0024】
タスク検出部111の出力S11はバス切替部13、アドレス生成部12、およびデコーダ部15に接続されており、タスク検出部111の出力が1の場合、ローカルメモリ14を選択するように、バス切替部13はデータバスS2とローカルメモリデータバスS13を接続し、アドレス生成部12はタスクテーブル112の出力とアドレスバスS1のアドレス信号を元に、ローカルメモリ14に与えるアドレスを生成し、アドレスバスS12に出力する。デコーダ部15はローカルメモリセレクト信号S16を生成する。これにより、メインメモリ2から読み込まれたデータを、ローカルメモリ14へ書き込むことができる。
このメインメモリ2からの読み出し、ローカルメモリ14への書き込みを、タスクのサイズだけ繰り返し、ローカルメモリ14にタスクをコピーした後、タスクテーブル112を本来のタスクのベースアドレスに設定することで初期化が完了する。なお、タスク検出部111の出力が0である場合、バス切替部13はデータバスS2とキャッシュコントローラ3とのデータバスS14を接続する。しかし、デコーダ部15とアドレス生成部12は動作しない。
【0025】
初期化後、最初のタスクが生成されシステムが動き出す。あるイベントによりこのローカルメモリ14にコピーしたタスクがスケジューリングされ起動されるとき、ローカルメモリ14からタスクが読み込まれ実行されるようになる。この場合、第1実施形態のようなタスクの読み込みの前で特別な命令を発行する必要がない。
すなわち、ローカルメモリ14からタスクが読み込まれることから、パイプラインを乱すことなくこのタスクの実行が行なえるため、ハードリアルタイムを満足することができるようになるのである。このタスクが処理を終え待ちにはいる場合も、第1実施形態のような特別な命令を発行する必要がない。タスク検出部111の出力が0になるようなアドレスをマイクロプロセッサ1が生成する場合、メインメモリ2もしくはキャッシュコントローラ3を通してキャッシュメモリ4上のデータを読み込む。
【0026】
<第3実施形態>
図3は、本発明の第3実施形態を示すもので、第2実施形態におけるタスクテーブル112を、タスクのベースアドレス1121とタスクのサイズ1122とをペアとする項目を複数個持つ構造にし、分散した複数の優先度の高いタスクをローカルメモリ14上におけるようにしている。
図3のタスクテーブル112を利用したタスク検出部111の構成の一例を図4で説明する。タスクテーブル112はタスクのベースアドレス1121とタスクのサイズ1122をペアとする項目を複数個持つ構造になっている。このタスクテーブル112はデータバスS1とデコーダ部15からのストローブ信号S21,S22,・・・,S2m,S2nを利用して任意の時点でアクセスを行なえる。この例では、最初の項目としてタスクのベースアドレスに0xffff0000がタスクのサイズとして0x1000が設定されている。タスク検出部111は、このタスクテーブル112の出力とアドレスバスS30を利用してタスクの判定を行なう。
【0027】
タスクのベースアドレスからの出力S31とタスクのサイズからの出力S32は、加算器21を通りタスクの上限アドレスS33となる。この上限アドレスS33は第1比較器22でアドレスバスを利用して[1]で示す比較を行なう。
アドレスバス<上限アドレス ・・・[1]
比較の結果[1]が成り立つ場合、第1比較器22の出力S34は1を出力し、それ以外は0を出力する。第2比較器23では、タスクのベースアドレスからの出力とアドレスバスを利用して[2]で示す比較を行なう。
ベースアドレス≦アドレスバス ・・・[2]
判定の結果[2]が成り立つ場合、第2比較器23の出力S35は1を出力し、それ以外は0を出力する。論理積回路24で、この第1比較器22、第2比較器23の出力の論理積を取ることにより、その出力S36がタスクの判定結果となり、判定を行なうアドレスの範囲にアドレスバスの値があればタスクがあるとして1を出力する。それ以外は0を出力する。このタスクの判定はタスクテーブル112の項目分だけ並列に行なわれ、その論理積24の出力は論理和回路25により論理和がとられ、論理和回路25の出力S11がタスク検出部111の判定結果となる。
【0028】
【発明の効果】
以上述べたように、本発明の第1の構成のメモリ切り替え回路によれば、タスク切替ビットを操作することにより、ローカルメモリ上で優先度の高いタスクを実行させることができるために、パイプラインストールやキャッシュミスによるオーバヘッドのような、実行時間を長くすると同時に不定期にする要因を排除することができる。このため、ハードリアルタイムのサイクルタイムを確実に守ることができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0029】
本発明の第2の構成のメモリ切り替え回路によれば、タスクテーブルを設定することにより、自動的にローカルメモリ上で優先度の高いタスクを実行させることができるため、パイプラインストールやキャッシュミスによるオーバヘッドのような、実行時間を長くすると同時に不定期にする要因を排除することができる。このため、ハードリアルタイムのサイクルタイムを確実に守ることができる。そして、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。さらに、初期化ブロックの一部を除き、タスクを実行させるオペレーティングシステムやアプリケーション等のソフトウエアの変更が必要ない。
【0030】
本発明の第3の構成のメモリ切り替え回路によれば、タスクテーブルを、切り替えたいタスクのベースアドレスとサイズのペアを一つの項目とし、複数の項目を持つようにしたことにより、複数の優先度の高いタスクを取り扱うことができるので、第2の構成の効果を複数のタスクに適用できる。そのため、さらに厳しい要求のハードリアルタイムのサイクルタイムを確実に守ることができる。さらに、複数のタスクの変動要因が排除できるため、さらに正確な実行時間の予測を行なうことができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態の構成を示すブロック図である。
【図2】本発明の第2実施形態の構成を示すブロック図である。
【図3】本発明の第3実施形態におけるタスクテーブルの構成図である。
【図4】本発明の第3実施形態のタスクテーブルを利用したタスクの判定を示すブロック図である。
【図5】従来のキャッシュを利用しない回路の構成を示すブロック図である。
【図6】従来のキャッシュ回路の構成を示すブロック図である。
【図7】従来のキャッシュコントローラのラインの構成図である。
【符号の説明】
1:マイクロプロセッサ
2:メインメモリ
3:キャッシュコントローラ
4:キャッシュメモリ
11:タスク切替ビット
12:アドレス生成部
13:バス切替部
14:ローカルメモリ
15:デコーダ部
111:タスク検出部
112:タスクテーブル
112:タスクテーブル
1121:タスクベースアドレス
1122:タスクサイズ
21:加算器
22:比較器
23:比較器
24:論理積回路
25:論理和回路
31:ロックビット
32:タグ
33:ラインデータ
S1:アドレスバス
S2:データバス
S3:ストローブバス
S11:タスク切替ビット出力
S12:ローカルメモリアドレスバス
S13:ローカルメモリデータバス
S14:キャッシュメモリデータバス
S15:タスク切替ビットセレクト信号(タスクテーブルセレクト信号)
S16:ローカルメモリセレクト信号
S17:タスクテーブル出力
S21〜S2n:ストローブバス
S31:タスクベースアドレス出力
S32:タスクサイズ出力
S33:加算器出力
S34:比較器出力
S35:比較器出力
S36:論理積出力
【発明の属する技術分野】
この発明は、マイクロプロセッサ回路、特にキャッシュを利用したメモリ階層構造をとるマイクロプロセッサ回路のメモリ切り替え回路に関する。
【0002】
【従来の技術】
マイクロプロセッサ回路の技術として、マイクロプロセッサとメモリだけの構成である図5を用いて、マイクロプロセッサが命令の読み込み等、メモリアクセスを行なうことで生じる問題点を説明する。このような構成は、組み込みシステムでマイクロプロセッサを利用する場合には良く見掛けられる構成である。
マイクロプロセッサはスループットの改善のために、内部処理をブロック化(これをステージと呼ぶ)し、そのステージを並列に動作させる回路構成をとる。この回路構成をパイプラインと呼ぶ。例えば、命令読み込み、命令デコード、演算、メモリへの結果の書出しという4つのステージから構成されるパイプラインでは、命令の読み込み、命令デコード、演算、メモリへの結果の書出しを並行に行なえるため、スループットの改善になる。パイプライン構成でない場合には、これらの処理がシーケンシャルに行なわれるため、単純計算で4倍の時間がかかる。
【0003】
図5の構成において、マイクロプロセッサ1と主記憶であるメインメモリ2とのアクセススピードの差が大きい場合には、メインメモリ2からの命令の取り込みやデータの読み書きのために、マイクロプロセッサ1においてはパイプラインにインターロックが発生する。そのため、パイプラインにストール(乱れ)を生じ、各ステージの実行をクロック毎に行なえなくなるため、スループットが低下する。実際にはマイクロプロセッサ1に比べてメインメモリ2の処理速度は遅いため、メモリアクセスの際にはパイプラインストールを生じやすい。
【0004】
スループットの低下を改善するメモリの階層構造について図6に例を挙げて説明する。マイクロプロセッサ1と主記憶であるメインメモリ2との間にキャッシュコントローラ3が接続される。キャッシュコントローラ3には、比較的容量が少ないが、メインメモリ2に比べ高速なキャッシュメモリ4が接続される。最近アクセスしたデータは、キャッシュコントローラ3によりキャッシュメモリ4に取り込まれている。この際、キャッシュコントローラ3はそのデータのみでなく、ラインと呼ばれる一定のブロックでデータの取り込みを行なう。マイクロプロセッサ1が同じデータにアクセスする場合、キャッシュコントローラ3はメインメモリ2のデータではなく、キャッシュメモリ4のデータを提示する。これを、キャッシュにヒットしているという。ここで、キャッシュメモリ4はマイクロプロセッサ1のパイプランがインターロックを生じないような、高速なアクセススピードのメモリを用いる。そのため、キャッシュメモリ4にデータがヒットしている間は、パイプラインのスピードにキャッシュメモリのアクセスが追いつくのでパイプランストールが生じず、スループットを維持することができる。
【0005】
キャッシュメモリ4は命令やデータがアクセスされる際の性質である、空間的局所性と時間的局所性を利用している。命令は連続したアドレスに配置されるため空間的局所性を持ち、データは短い時間の間にアクセスされる傾向にあるため時間的局所性を持つ。この局所性を利用して、よくアクセスされる命令やデータをキャッシュメモリ4に蓄え、マイクロプロセッサ1へ高速に提示する。
上記の性質から、キャッシュメモリはUNIX(登録商標)のプロセスのように、比較的長い間マイクロプロセッサを占有するプログラムに対し相性が良い。そのため、単一プロセスのスループットの改善がシステム全体のパフォーマンスの向上につながる。
【0006】
【特許文献1】
特開平5−20059号公報
【特許文献2】
特開平5−324473号公報
【特許文献3】
特開平6−119241号公報
【0007】
【発明が解決しようとする課題】
しかしながら、リアルタイムシステムでは、短い時間でタスクの切り替えが生じ、空間的局所性や時間的局所性を満足しない状況が比較的生じ易い。そのため、キャッシュミスによるラインのリプレースが頻繁に生じることになり、パイプラインのストールを生じさせパフォーマンスの低下を引き起こす。
特に、ハードリアルタイムを要求される定周期タスクが影響を受けやすく、ハードリアルタイムを満足しない要因となる。さらに、要求される時間内に、演算を行なわなければならないリアルタイムシステムでは、タスクの実行時間の予測が不可欠である。キャッシュメモリを用いたリアルタイムシステムでは、上記のような理由により実行時間の変動があるため、実行時間の予測が困難である。
【0008】
これを改善する方法として、例えば図7に示すようにキャッシュのライン33やラインを示すタグ32に加えて、ラインをロックするためのロックビット31を加えることが行なわれる。ロックビット31が有効なラインはキャッシュのリプレースの対象とならず、常にキャッシュにデータが存在する。
しかし、この図7に示す方法では、無駄な命令やデータがキャッシュに蓄えられること、そして、実効的なキャッシュメモリの領域が減少することなど、種々の問題をもつ。
【0009】
一方、キャッシュメモリの有効利用およびプログラム処理速度の向上を図るために、例えば特許文献1には、プログラムを記憶するメインメモリと、プログラムの一部を記憶するキャッシュメモリと、初期化の際にプログラムの一部をキャッシュメモリに書き込む書き込み制御手段と、キャッシュメモリのプログラムを優先的に実行させる制御手段とを備えたマイクロプロセッサが開示されている。
【0010】
また特許文献2には、キャッシュメモリを、ダイレクトマップ方式の1次キャッシュメモリと小規模なダイレクトマップ方式の2次キャッシュメモリとで構成し、1次キャッシュメモリと2次キャッシュメモリの内容に重複がないように制御することで、小面積で高速なマイクロプロセッサの実現を図っている。
【0011】
特許文献3には、CPUとローカルメモリとの中間にキャッシュメモリを有するマイクロプロセッサにおいて、ローカルメモリには、命令コード格納エリアと、データエリア内にシステム運用中に書き換えられることのない固定データが格納された特定セグメントとを設けると共に、命令コード格納エリアと特定セグメントがCPUによってアクセスされたときのみキャッシュイネーブル信号を送出するキャッシュ制御部を設け、CPUが命令フェッチまたは固定データ読込みのためにローカルメモリにアクセスしたときに、キャッシュイネーブル信号によって当該アドレスの内容がキャッシュメモリに書き込まれるようにしたキャッシュメモリ制御方式が開示されている。
【0012】
しかしながら、このような従来の技術においては、次のような問題があった。
特許文献1に記載されたマイクロプロセッサでは、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくことはできるが、そのことにより実際のキャッシュメモリ容量が減ることにつながる。これは、キャッシュメモリに留めておくタスク以外は、キャッシュメモリの効果を受けることが少なくなり、システムのパフォーマンスが低下するという問題がある。 特許文献2に記載されたマイクロプロセッサは、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくのが困難となる。そのため、ある特定のタスクが必要なときに、キャッシュミスが発生する可能性が高く、パフォーマンスの低下を招くという問題がある。
特許文献3に記載されたマイクロプロセッサは、メモリ上のある特定の領域をキャッシュメモリに留めておくもので、例えば優先度が高いなど、ある特定のタスクをキャッシュメモリに留めておくのは困難となる。そのため、ある特定のタスクが必要なときに、キャッシュミスが発生する可能性が高く、パフォーマンスの低下を招くという問題がある。また、キャッシュメモリが有効でない領域については、パフォーマンスの低下を招くという問題がある。
【0013】
そこで本発明は、マイクロプロセッサとキャッシュとメインメモリから構成されるマイクロプロセッサ回路において、ハードリアルタイムが要求される優先度の高いタスクの実行のリアルタイム性の確保を行なうと同時に、優先度の低いタスクについては平均的なスループットを向上させ、トータルとしてシステムのパフォーマンスを改善できるメモリ切り替え回路を提供することを目的とし、併せて、優先度の高い定周期タスクに対して、静的に予測した実行時間の精度を上げることも目的とする。
【0014】
【課題を解決するための手段】
上記課題を解決するため、本発明の第1の構成は、マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、パイプライン処理を乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の決定に使われるタスク切替ビットと、前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク切替ビットの出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号と前記タスク切替ビットの出力とにより、前記ローカルメモリへのアドレスを生成するアドレス生成部と、前記タスク切替ビットの出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスク切替ビットのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部とを備えたものである。
この第1の構成においては、優先度の高いタスクの切り替えの前/後で、ローカルメモリを選択するようにタスク切替ビットをプログラムで設定/解除を行なうことで、ローカルメモリ上で優先度の高いタスクを実行させ、ハードリアルタイムを満足することができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0015】
本発明の第2の構成は、マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、パイプライン処理に乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の判定に使われるタスクテーブルと、前記タスクテーブルの出力と前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号との比較を行ないタスクの切替の判定を行なうタスク検出部と、前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク検出部の出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、前記アドレスバスと前記タスクテーブルの出力と前記タスク検出部の出力により、前記ローカルメモリへのアドレスを生成するアドレス生成部と、前記タスク検出部の出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスクテーブルのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部とを備えたものである。
この第2の構成によれば、ローカルメモリ上で動作させたい優先度の高いタスクをタスクテーブルに設定することで、タスク切替判定部では、このタスクテーブルとプロセッサの生成するアドレスを比較することにより、ローカルメモリを選択するタスクの判定を行なうことにより、自動的にローカルメモリ上で優先度の高いタスクを実行させ、ハードリアルタイムを満足することができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0016】
本発明の第3の構成は、第2の構成のタスクテーブルを、切り替えを行なうタスクもしくはそのタスクのデータ領域のベースアドレスとサイズのペアを一つの項目とし、複数の項目を持つようにしたものである。
この第3の構成によれば、複数の優先度の高いタスクを取り扱うことができるので、第2の構成の効果を複数のタスクに適用できるため、さらに厳しい要求のハードリアルタイムを満足することができる。さらに、複数のタスクの変動要因が排除できるため、さらに正確な実行時間の予測を行なうことができる。
【0017】
【発明の実施の形態】
以下、本発明の実施の形態を図1〜図4を用いて説明する。
<第1実施形態>
図1は本発明の第1実施形態を示すものである。
この第1実施形態に係るメモリ切り替え回路は、マイクロプロセッサ1、メインメモリ2、キャッシュコントローラ3、キャッシュメモリ4から構成されるマイクロプロセッサ回路において、パイプライン処理を乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリ14と、マイクロプロセッサ1からデータバスS2を通して任意に値を設定でき、タスクの切替の決定に使われるタスク切替ビット11と、マイクロプロセッサ1からのデータバスS2とローカルメモリ14のデータバスS13とキャッシュコントローラ3からのデータバスS14に接続され、データバスS11からのタスク切替ビット11の出力によりローカルメモリ14とキャッシュコントローラ3のバスS13,S14を切り替えるバス切替部13と、マイクロプロセッサ1に接続されたアドレスバスS1からのアドレス信号とタスク切替ビット13の出力とにより、ローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク切替ビット11の出力とアドレスバスS1からのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号とにより、タスク切替ビット11のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備えている。
【0018】
次に、この構成の回路の動作について説明する。
ローカルメモリ14上で優先度の高いタスクを動作させるためには、システムの初期化時にメインメモリ2上に存在するタスクをローカルメモリ14へコピーする。ローカルメモリ14へのコピーはマイクロプロセッサ1がメインメモリ2上のタスクプログラムをデータとして読み出すことから始まる。この読み出したデータをローカルメモリ14に書き込むには、タスク切替ビット11を1にセットする。
マイクロプロセッサ1がタスク切替ビット11にアクセスするには、アドレスバスS1を通してタスク切替ビット11がマップされているアドレスと、ストローブバスS3を通して読み書きを示すストローブ信号とを、マイクロプロセッサ1が出力する。デコーダ部15は、このアドレスバスS1とストローブバスS3の情報を元にタスク切替ビットセレクト信号S15を生成し、タスク切替ビット11にアクセスする。ストローブバスS3が書き込みを示す場合、タスク切替ビット11はデータバスS2から与えられる値を設定でき、読み込みを示す場合、設定されている値をデータバスS2を通して確認できる。
【0019】
本実施形態では、タスク切替ビット11の内容を1にセットした場合には、ローカルメモリ14を選択するものとして説明を行なう。タスク切替ビット11の出力S11は、バス切替部13、アドレス生成部12とデコーダ部15に接続されており、タスク切替ビット11の出力が1の場合ローカルメモリ14を選択するように、バス切替部13はデータバスS2とローカルメモリデータバスS13を接続し、アドレス生成部12はアドレスバスS1を元にローカルメモリ14に与えるアドレスを生成し、アドレスバスS12に出力する。
デコーダ部15はローカルメモリセレクト信号S16を生成する。これにより、メインメモリ2から読み込まれたデータを、ローカルメモリ14に書き込むことができる。この動作をタスクのサイズだけ繰り返した後、タスク切替ビット11を0にリセットし、初期化を完了する。タスク切替ビット11が0にリセットされている場合、バス切替部13はデータバスS2とキャッシュコントローラ3とのデータバスS14を接続する。しかし、デコーダ部15とアドレス生成部12は動作しない。
【0020】
初期化後、最初のタスクが生成されシステムが動き出す。あるイベントによりこのローカルメモリ14にコピーしたタスクがスケジューリングされ起動される前にタスク切替ビット11の出力を1にセットすることで、ローカルメモリ14からタスクが読み込まれ実行されるようになる。これにより、パイプラインを乱すことなくこのタスクの実行が行なえるため、ハードリアルタイムを満足することができるようになるのである。このタスクが処理を終え待ちに入る場合、スケジュールの前にタスク切替ビット11の出力を0にリセットし、メインメモリ2もしくはキャッシュコントローラ3を通してキャッシュメモリ4から新たなタスクを読み込めるようにする。
【0021】
<第2実施形態>
図2は本発明の第2実施形態を示すものである。
本実施形態に係るメモリ切り替え回路は、マイクロプロセッサ1、メインメモリ2、キャッシュコントローラ3、キャッシュメモリ4から構成されるマイクロプロセッサ回路において、パイプライン処理に乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリ14と、マイクロプロセッサ1からデータバスS2を通して任意に値を設定でき、タスクの切替の判定に使われるタスクテーブル112と、タスクテーブル112の出力とマイクロプロセッサ1に接続されたアドレスバスS1からのアドレス信号との比較を行ないタスクの切替の判定を行なうタスク検出部111と、マイクロプロセッサ1からのデータバスS2とローカルメモリ14のデータバスS13とキャッシュコントローラ3からのデータバスS14に接続され、タスク検出部111の出力によりローカルメモリ14とキャッシュコントローラ3のバスS13,S14を切り替えるバス切替部13と、アドレスバスS1とタスクテーブル112の出力とタスク検出部111の出力により、ローカルメモリ14へのアドレスを生成するアドレス生成部12と、タスク検出部111の出力とアドレスバスS1からのアドレス信号とマイクロプロセッサ1からの読み書きを制御するためのストローブ信号S3とにより、タスクテーブル112のセレクト信号とローカルメモリ14のセレクト信号を生成するデコーダ部15とを備えている。
【0022】
次に、この第2実施形態の動作について説明する。
第2実施形態でも、ローカルメモリ14上で優先度の高いタスクを動作させるためには、図1に示した第1実施形態の場合と同じく、システムの初期化時にメインメモリ2上に存在するタスクをローカルメモリ14にコピーする。タスクテーブル112には、優先度が高いためローカルメモリ14で動作させたいタスクのスタートアドレスを設定する。
マイクロプロセッサ1がタスクテーブル112にアクセスするには、アドレスバスS1を通してタスクテーブル112がマップされているアドレスを、ストローブバスS3を通して読み書きを示すストローブ信号を、それぞれマイクロプロセッサ1が出力する。デコーダ部15は、このアドレスバスS1とストローブバスS3の情報を元に、タスクテーブルセレクト信号S15を生成し、タスクテーブル112にアクセスできる。
【0023】
ストローブバスS3のストローブ信号が書き込みを示す場合、データバスS2から与えられる値を設定でき、読み込みを示す場合、設定されている値をデータバスを通して確認できる。第1実施形態の場合と同じような手順で、データを読み、次にタスクテーブル112を設定し、ローカルメモリ14に書き込み、書き込み後にタスクテーブル112の再設定を行なうことで初期化が行なえるが、これは手順として煩雑である。より効率的に行なうには、タスクテーブル112をメモリ等のリソースがマップされてない空間に設定する。ローカルメモリ14へのコピーはマイクロプロセッサ1がメインメモリ2上のタスクプログラムをデータとして読み出す。この読み出したデータをローカルメモリ14に書き込むには、タスクテーブル112に設定したアドレスをベースとする。
ここで、タスク検出部111では、アドレスバスS1とタスクテーブル112の出力S17を利用して、
タスクテーブル112の値≦アドレス<タスクテーブルの値+ローカルメモリ14のサイズ
の判定を行ない、目的のタスクを検出する。本実施形態では目的のタスクを検出した場合にタスク検出部は1を出力し、この時にはローカルメモリ14を選択するものとして説明を行なう。
【0024】
タスク検出部111の出力S11はバス切替部13、アドレス生成部12、およびデコーダ部15に接続されており、タスク検出部111の出力が1の場合、ローカルメモリ14を選択するように、バス切替部13はデータバスS2とローカルメモリデータバスS13を接続し、アドレス生成部12はタスクテーブル112の出力とアドレスバスS1のアドレス信号を元に、ローカルメモリ14に与えるアドレスを生成し、アドレスバスS12に出力する。デコーダ部15はローカルメモリセレクト信号S16を生成する。これにより、メインメモリ2から読み込まれたデータを、ローカルメモリ14へ書き込むことができる。
このメインメモリ2からの読み出し、ローカルメモリ14への書き込みを、タスクのサイズだけ繰り返し、ローカルメモリ14にタスクをコピーした後、タスクテーブル112を本来のタスクのベースアドレスに設定することで初期化が完了する。なお、タスク検出部111の出力が0である場合、バス切替部13はデータバスS2とキャッシュコントローラ3とのデータバスS14を接続する。しかし、デコーダ部15とアドレス生成部12は動作しない。
【0025】
初期化後、最初のタスクが生成されシステムが動き出す。あるイベントによりこのローカルメモリ14にコピーしたタスクがスケジューリングされ起動されるとき、ローカルメモリ14からタスクが読み込まれ実行されるようになる。この場合、第1実施形態のようなタスクの読み込みの前で特別な命令を発行する必要がない。
すなわち、ローカルメモリ14からタスクが読み込まれることから、パイプラインを乱すことなくこのタスクの実行が行なえるため、ハードリアルタイムを満足することができるようになるのである。このタスクが処理を終え待ちにはいる場合も、第1実施形態のような特別な命令を発行する必要がない。タスク検出部111の出力が0になるようなアドレスをマイクロプロセッサ1が生成する場合、メインメモリ2もしくはキャッシュコントローラ3を通してキャッシュメモリ4上のデータを読み込む。
【0026】
<第3実施形態>
図3は、本発明の第3実施形態を示すもので、第2実施形態におけるタスクテーブル112を、タスクのベースアドレス1121とタスクのサイズ1122とをペアとする項目を複数個持つ構造にし、分散した複数の優先度の高いタスクをローカルメモリ14上におけるようにしている。
図3のタスクテーブル112を利用したタスク検出部111の構成の一例を図4で説明する。タスクテーブル112はタスクのベースアドレス1121とタスクのサイズ1122をペアとする項目を複数個持つ構造になっている。このタスクテーブル112はデータバスS1とデコーダ部15からのストローブ信号S21,S22,・・・,S2m,S2nを利用して任意の時点でアクセスを行なえる。この例では、最初の項目としてタスクのベースアドレスに0xffff0000がタスクのサイズとして0x1000が設定されている。タスク検出部111は、このタスクテーブル112の出力とアドレスバスS30を利用してタスクの判定を行なう。
【0027】
タスクのベースアドレスからの出力S31とタスクのサイズからの出力S32は、加算器21を通りタスクの上限アドレスS33となる。この上限アドレスS33は第1比較器22でアドレスバスを利用して[1]で示す比較を行なう。
アドレスバス<上限アドレス ・・・[1]
比較の結果[1]が成り立つ場合、第1比較器22の出力S34は1を出力し、それ以外は0を出力する。第2比較器23では、タスクのベースアドレスからの出力とアドレスバスを利用して[2]で示す比較を行なう。
ベースアドレス≦アドレスバス ・・・[2]
判定の結果[2]が成り立つ場合、第2比較器23の出力S35は1を出力し、それ以外は0を出力する。論理積回路24で、この第1比較器22、第2比較器23の出力の論理積を取ることにより、その出力S36がタスクの判定結果となり、判定を行なうアドレスの範囲にアドレスバスの値があればタスクがあるとして1を出力する。それ以外は0を出力する。このタスクの判定はタスクテーブル112の項目分だけ並列に行なわれ、その論理積24の出力は論理和回路25により論理和がとられ、論理和回路25の出力S11がタスク検出部111の判定結果となる。
【0028】
【発明の効果】
以上述べたように、本発明の第1の構成のメモリ切り替え回路によれば、タスク切替ビットを操作することにより、ローカルメモリ上で優先度の高いタスクを実行させることができるために、パイプラインストールやキャッシュミスによるオーバヘッドのような、実行時間を長くすると同時に不定期にする要因を排除することができる。このため、ハードリアルタイムのサイクルタイムを確実に守ることができる。さらに、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。
【0029】
本発明の第2の構成のメモリ切り替え回路によれば、タスクテーブルを設定することにより、自動的にローカルメモリ上で優先度の高いタスクを実行させることができるため、パイプラインストールやキャッシュミスによるオーバヘッドのような、実行時間を長くすると同時に不定期にする要因を排除することができる。このため、ハードリアルタイムのサイクルタイムを確実に守ることができる。そして、変動要因が排除できるため、正確な実行時間の予測を行なうことができる。さらに、初期化ブロックの一部を除き、タスクを実行させるオペレーティングシステムやアプリケーション等のソフトウエアの変更が必要ない。
【0030】
本発明の第3の構成のメモリ切り替え回路によれば、タスクテーブルを、切り替えたいタスクのベースアドレスとサイズのペアを一つの項目とし、複数の項目を持つようにしたことにより、複数の優先度の高いタスクを取り扱うことができるので、第2の構成の効果を複数のタスクに適用できる。そのため、さらに厳しい要求のハードリアルタイムのサイクルタイムを確実に守ることができる。さらに、複数のタスクの変動要因が排除できるため、さらに正確な実行時間の予測を行なうことができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態の構成を示すブロック図である。
【図2】本発明の第2実施形態の構成を示すブロック図である。
【図3】本発明の第3実施形態におけるタスクテーブルの構成図である。
【図4】本発明の第3実施形態のタスクテーブルを利用したタスクの判定を示すブロック図である。
【図5】従来のキャッシュを利用しない回路の構成を示すブロック図である。
【図6】従来のキャッシュ回路の構成を示すブロック図である。
【図7】従来のキャッシュコントローラのラインの構成図である。
【符号の説明】
1:マイクロプロセッサ
2:メインメモリ
3:キャッシュコントローラ
4:キャッシュメモリ
11:タスク切替ビット
12:アドレス生成部
13:バス切替部
14:ローカルメモリ
15:デコーダ部
111:タスク検出部
112:タスクテーブル
112:タスクテーブル
1121:タスクベースアドレス
1122:タスクサイズ
21:加算器
22:比較器
23:比較器
24:論理積回路
25:論理和回路
31:ロックビット
32:タグ
33:ラインデータ
S1:アドレスバス
S2:データバス
S3:ストローブバス
S11:タスク切替ビット出力
S12:ローカルメモリアドレスバス
S13:ローカルメモリデータバス
S14:キャッシュメモリデータバス
S15:タスク切替ビットセレクト信号(タスクテーブルセレクト信号)
S16:ローカルメモリセレクト信号
S17:タスクテーブル出力
S21〜S2n:ストローブバス
S31:タスクベースアドレス出力
S32:タスクサイズ出力
S33:加算器出力
S34:比較器出力
S35:比較器出力
S36:論理積出力
Claims (3)
- マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、
パイプライン処理を乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、
前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の決定に使われるタスク切替ビットと、
前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク切替ビットの出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、
前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号と前記タスク切替ビットの出力とにより、前記ローカルメモリへのアドレスを生成するアドレス生成部と、
前記タスク切替ビットの出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスク切替ビットのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部と
を備えたことを特徴とするメモリ切り替え回路。 - マイクロプロセッサ、キャッシュコントローラ、キャッシュメモリ、およびメインメモリから構成されるマイクロプロセッサ回路において、
パイプライン処理に乱れを生じないで実行できるアクセススピードを有し、かつ切り替えが必要な優先度の高いタスクとそのタスクのデータ領域を格納するのに十分な容量を持つローカルメモリと、
前記マイクロプロセッサからデータバスを通して任意に値を設定でき、タスクの切替の判定に使われるタスクテーブルと、
前記タスクテーブルの出力と前記マイクロプロセッサに接続されたアドレスバスからのアドレス信号との比較を行ないタスクの切替の判定を行なうタスク検出部と、
前記マイクロプロセッサからのデータバスと前記ローカルメモリのデータバスと前記キャッシュコントローラからのデータバスに接続され、前記タスク検出部の出力により前記ローカルメモリと前記キャッシュコントローラのバスを切り替えるバス切替部と、
前記アドレスバスと前記タスクテーブルの出力と前記タスク検出部の出力により、前記ローカルメモリへのアドレスを生成するアドレス生成部と、
前記タスク検出部の出力と前記アドレスバスからのアドレス信号と前記マイクロプロセッサからの読み書きを制御するためのストローブ信号とにより、前記タスクテーブルのセレクト信号と前記ローカルメモリのセレクト信号を生成するデコーダ部と
を備えたことを特徴とする、メモリ切り替え回路。 - 前記タスクテーブルは、切り替えを行なうタスクもしくはそのタスクのデータ領域のベースアドレスとサイズのペアを一つの項目とし、複数の項目を持つことを特徴とする請求項2に記載のメモリ切り替え回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002291582A JP2004127031A (ja) | 2002-10-03 | 2002-10-03 | メモリ切り替え回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002291582A JP2004127031A (ja) | 2002-10-03 | 2002-10-03 | メモリ切り替え回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004127031A true JP2004127031A (ja) | 2004-04-22 |
Family
ID=32283139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002291582A Pending JP2004127031A (ja) | 2002-10-03 | 2002-10-03 | メモリ切り替え回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004127031A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511224A (ja) * | 2006-11-27 | 2010-04-08 | エルエスアイ コーポレーション | 記憶装置コントローラキャッシュオフロード回路の性能および信頼性を最適化するためのシステム |
-
2002
- 2002-10-03 JP JP2002291582A patent/JP2004127031A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511224A (ja) * | 2006-11-27 | 2010-04-08 | エルエスアイ コーポレーション | 記憶装置コントローラキャッシュオフロード回路の性能および信頼性を最適化するためのシステム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6978350B2 (en) | Methods and apparatus for improving throughput of cache-based embedded processors | |
US6049867A (en) | Method and system for multi-thread switching only when a cache miss occurs at a second or higher level | |
JP6325243B2 (ja) | 保持優先度に基づくキャッシュ置換ポリシー | |
KR100933820B1 (ko) | 메모리 속성들을 사용하기 위한 기술 | |
US6055650A (en) | Processor configured to detect program phase changes and to adapt thereto | |
JP5813554B2 (ja) | 半導体装置 | |
US20070130237A1 (en) | Transient cache storage | |
US20060248280A1 (en) | Prefetch address generation implementing multiple confidence levels | |
US20060248279A1 (en) | Prefetching across a page boundary | |
US20060248281A1 (en) | Prefetching using hashed program counter | |
US6959367B2 (en) | System having read-modify-write unit | |
JP2004038798A (ja) | 縮退制御装置及び方法 | |
JP2005502120A5 (ja) | ||
JP2007011580A (ja) | 情報処理装置 | |
JP2004110786A (ja) | データ処理装置およびデータ処理方法 | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
TW201802693A (zh) | 用於偶然記憶體存取程式指令的許可控制 | |
US6434671B2 (en) | Software-controlled cache memory compartmentalization | |
US20070112998A1 (en) | Virtualized load buffers | |
JP2006518896A (ja) | 特定コード部分のキャッシュトラッシングの低減 | |
JP2020095345A (ja) | 演算処理装置、メモリ装置、及び演算処理装置の制御方法 | |
JP2008015562A (ja) | キャッシュミス/ヒット予想 | |
JP2004127031A (ja) | メモリ切り替え回路 | |
US9645825B2 (en) | Instruction cache with access locking | |
JP2005301387A (ja) | キャッシュメモリ制御装置およびキャッシュメモリ制御方法 |