(57)【特許請求の範囲】
【請求項１】
スタックポインタと、
スタック領域が設定される第１メモリと、
保護領域を含む第２メモリと、
該スタックポインタの内容を設定値と比較しその結果に応じて該第２メモリに対するメモリアクセスを許可／禁止する信号を出力するアクセス許可／禁止判定回路と、
を有することを特徴とするマイクロプロセッサ。
【請求項２】
上記アクセス許可／禁止判定回路は、アドレスバス上のアドレス値が所定範囲内の値であるときに、上記比較結果に応じてメモリアクセスを許可／禁止する信号を出力することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
上記アクセス許可／禁止判定回路は、
上記スタックポインタの内容を上記設定値と比較する比較回路と、
該比較回路の比較結果に応じて、該第２メモリのライトイネーブル信号を有効／無効にすることによりメモリへの書き込みを許可／禁止する信号を出力する論理回路と、
を有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項４】
上記アクセス許可／禁止判定回路は、
上記スタックポインタの内容を上記設定値と比較する比較回路と、
該比較回路の比較結果に応じて、該第２メモリのリードイネーブル信号を有効／無効にすることにより該第２メモリからの読み出しを許可／禁止する信号を出力する論理回路と、
を有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項５】
スタックポインタと、
スタック領域が設定されるメモリと、
該スタックポインタの内容を設定値と比較しその結果に応じて外部メモリに対するメモリアクセスを許可／禁止する信号を出力するアクセス許可／禁止判定回路と、
を有することを特徴とするマイクロプロセッサ。
【請求項６】
上記メモリアクセスを許可／禁止する信号が上記第１メモリに供給されないことを特徴とする請求項１に記載のマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリアクセスを許可／禁止する機能を備えたマイクロプロセッサに関する。
【０００２】
【従来の技術】
携帯電話などの電子機器では、ローエンドのマイクロプロセッサが用いられている。例えばウエブサイトから携帯電話にダウンロードしたプログラム（以下、アプリケーションプログラム）を実行すると、ユーザが設定したデータが不本意に書き換えられることもあり得る。ハイエンドのマイクロプロセッサを用いた場合には、メインプログラム（例えばＯＳ）を特権レベルとして、メモリライトアクセス権や実行命令にレベルを付けることにより、アプリケーションプログラムによるデータ破壊を防止することができる。
【０００３】
【発明が解決しようとする課題】
しかし、ローエンドマイクロプロセッサをハイエンドマイクロプロセッサに置き換えると、コスト高になるとともに、開発済のＯＳを含むソフトウエアを最初から構築し直したり、ハードウエアシステムを変更したりする必要がある。また、ＯＳの記憶容量が膨大になる。
【０００４】
本発明の目的は、このような問題点に鑑み、簡単なハードウエア構成を付加することにより特定プログラムによるメモリアクセスを許可／禁止することが可能なマイクロプロセッサを提供することにある。
【０００５】
【課題を解決するための手段及びその作用効果】
本発明によるマイクロプロセッサでは、スタックポインタと、該スタックポインタの内容を設定値と比較しその結果に応じてメモリアクセスを許可／禁止する信号を出力するアクセス許可／禁止判定回路とを有する。
【０００６】
このマイクロプロセッサによれば、スタックの深さに応じてメモリアクセスが許可又は禁止されるので、例えば、予め格納されているメインプログラム実行時にはスタックポインタ値が所定値より小さく、ユーザの操作により追加されたアプリケーションプログラムの実行開始時にはスタックポインタ値が該所定値になるようにすることにより、メインプログラム実行時にはユーザがデータをアクセスでき、アプリケーションプログラム実行時にはこのデータをアクセスできないようにすることができる。
【０００７】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【０００８】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【０００９】
［第１実施形態］
図１は、本発明の第１実施形態のマイクロプロセッサ１０の概略ブロック図である。
【００１０】
マイクロプロセッサ１０はローエンドであり、例えば、データバス幅及びアドレスバス幅はそれぞれ１６ビット及び３２ビットであって携帯電話に用いられる。
【００１１】
ＣＰＵ１１は、演算回路、レジスタファイル及び制御回路を備えて、各種演算及び制御を行なう。マイクロプロセッサ１０には、ＲＡＭ１２及びＲＡＭ１３が内蔵されている。ＣＰＵ１１と、ＲＡＭ１２及びＲＡＭ１３との間は、アドレスバス１４及びデータバス１５で接続されている。例えばアドレスＡＤＲの最上位ビットが‘１’のとき、ＲＡＭ１２がイネーブル状態、ＲＡＭ１３がディセーブル状態になり、これが‘０’のとき、ＲＡＭ１２がディセーブル状態、ＲＡＭ１３がイネーブル状態になる。
【００１２】
ＣＰＵ１１は、ＲＡＭ１２又はＲＡＭ１３に書き込みを行なう場合、ライト要求信号ＷＲを高レベルにする。ＣＰＵ１１のライト要求信号出力端ＷＲは、アンドゲート１６の一方の入力端及びＲＡＭ１３のライトイネーブル信号入力端ＷＥに接続されている。ＲＡＭ１２のライトイネーブル信号入力端ＷＥには、アンドゲート１６の出力端が接続されている。
【００１３】
ＣＰＵ１１は、プログラムカウンタＰＣ及びプログラムステータス（レジスタ）ＰＳを備えている。ＣＰＵ１１は、上記レジスタファイル内のレジスタとしてスタックポインタ１８を備えているが、図１では便宜上、スタックポインタ１８がＣＰＵ１１の外部に記載されている（他図も同様）。
【００１４】
ＣＰＵ１１は、割込ルーチン又はサブルーチンを実行する際に、本来の処理の前処理として、スタックポインタ１８の内容ＳＰＶで指定されるスタック領域１３１のアドレスに、プログラムカウンタＰＣの内容を格納（退避）し、スタックポインタ１８の内容ＳＰＶをインクリメントし、同様に、スタックポインタ１８の内容ＳＰＶで指定されるスタック領域１３１のアドレスに、プログラムステータスＰＳの内容を格納し、スタックポインタ１８の内容ＳＰＶをインクリメントする。
【００１５】
ＣＰＵ１１は、割込ルーチン又はサブルーチンから元のプログラムに戻る際に、後処理として上記の場合と逆に、スタックポインタ１８の内容ＳＰＶをデクリメントし、スタックポインタ１８の内容ＳＰＶで指定されるスタック領域１３１のアドレスからデータを読み出してこれをプログラムステータスＰＳに格納（復帰）し、同様に、スタックポインタ１８の内容ＳＰＶをデクリメントし、スタックポインタ１８の内容ＳＰＶで指定されるスタック領域１３１のアドレスからデータを読み出してこれをプログラムカウンタＰＣに格納する。
【００１６】
比較器１７は、スタックポインタ値ＳＰＶと、予め設定されているアドレス値ＡＤＲ１とを比較し、ＳＰＶ≧ＡＤＲ１であれば比較結果ＣＰを高レベルにし、そうでなければ比較結果ＣＰを低レベルにする。この比較結果ＣＰは、インバータ１９を介してアンドゲート１６の他方の入力端に供給される。
【００１７】
ＲＡＭ１２には、ユーザが設定したモードや電話番号などのデータが書き込まれている。ＲＡＭ１３は、スタック領域１３１とワークエリアとからなる。
【００１８】
マイクロプロセッサ１０内の不図示のプログラムメモリには、例えば図２に示すようなプログラムが格納されている。メインプログラム３０は、初期設定ルーチン３１と、入力情報に応じた処理を行なう実行制御プログラム３３とを備えている。サブルーチン３４及び３５は任意のルーチンで利用可能である。アプリケーション設定ルーチン３６は、アプリケーションプログラム３７に対し初期設定を行いこれを実行する。アプリケーションプログラム３７は、例えばウエブサイトからダウンロードされたものである。
【００１９】
次に、上記の如く構成された本第１実施形態の動作を説明する。
【００２０】
図３（Ａ）は、スタックポインタ値ＳＰＶの変化を示している。
【００２１】
ＳＰＶの初期値はＨ８０００＿００００である。ここに、先頭のＨは１６進数であることを示し、アンダーバー＿は１６ビットの区切りを示している。ＡＤＲ１はＨ８０００＿０００４である。
【００２２】
例えば、ユーザが携帯電話のキーを操作し、これにより実行制御プログラム３３でサブルーチンコール命令ＣＡＬＬ  ＡＰＳＥＴが実行されると、アプリケーション設定ルーチン３６へ移り、その前処理で上述のようにスタック領域１３１にプログラムカウンタＰＣ及びプログラムステータスＰＳの内容が格納されて、スタックポインタ値ＳＰＶがＨ８０００＿０００２になる。アプリケーション設定ルーチン３６の本処理でサブルーチンコール命令ＣＡＬＬ  ＡＰＲＩが実行されると、アプリケーションプログラム３７へ移り、その前処理で上述のようにスタック領域１３１にプログラムカウンタＰＣ及びプログラムステータスＰＳの内容が格納されて、スタックポインタ値ＳＰＶがＨ８０００＿０００４になる。
【００２３】
これにより、比較結果ＣＰが図３（Ｂ）に示す如く高レベルとなり、ライト要求信号ＷＲのレベルによらずアンドゲート１６の出力が低レベルとなる。したがって、アプリケーションプログラム３７においてＲＡＭ１３の内容を書き換えることは可能であるが、ＲＡＭ１２の内容を書き換えることはできない。これにより、ユーザが設定したデータがアプリケーションプログラム３７の実行により不本意に書き換えられるのが防止される。
【００２４】
アプリケーションプログラム３７の後処理において、スタック領域１３１に退避されている内容がＣＰＵ１１のプログラムステータスＰＳ及びプログラムカウンタＰＣに復帰されて、スタックポインタ値ＳＰＶがＨ８０００＿０００２になり、比較結果ＣＰが低レベルに戻って、ＲＡＭ１２の内容を書き換え可能になる。アプリケーションプログラム３７の処理が終了し、ＣＡＬＬ  ＡＰＲＩの次の命令が実行される。アプリケーション設定ルーチン３６の後処理において、上記同様に、スタック領域１３１に退避されている内容がＣＰＵ１１のプログラムステータスＰＳ及びプログラムカウンタＰＣに復帰され、スタックポインタ値ＳＰＶがＨ８０００＿００００になる。アプリケーション設定ルーチン３６の処理が終了し、ＣＡＬＬ  ＡＰＳＥＴの次の命令が実行される。
【００２５】
［第２実施形態］
図４は、本発明の第２実施形態のマイクロプロセッサ１０Ａの概略ブロック図である。
【００２６】
ＲＡＭ１２は、アプリケーションプログラムで書き換えが禁止されている領域１２１と、書き換えが許可されている領域１２２とからなる。アドレスＡＤＲが書込保護領域１２１のアドレス範囲内であるかどうかがアドレス範囲判定回路２０で判定され、範囲内であると判定されると、アドレス範囲判定回路２０の出力が高レベルとなる。この出力は、アンドゲート１６Ａに供給される。
【００２７】
マイクロプロセッサ１０Ａの他の構成は、上記第１実施形態と同一である。
【００２８】
本第２実施形態によれば、書込保護領域１２１がアドレス指定され、かつ、ＳＰＶ≧ＡＤＲ１であるとき、書込保護領域１２１への書き込みが禁止される。
【００２９】
［第３実施形態］
図５は、本発明の第３実施形態のマイクロプロセッサ１０Ｂの概略ブロック図である。
【００３０】
このマイクロプロセッサ１０Ｂでは、ＣＰＵ１１のライト要求信号出力端ＷＲとアンドゲート１６Ａの出力端とがイクスクルーシブオアゲート２１の一方及び他方の入力端に接続され、イクスクルーシブオアゲート２１の出力端がＣＰＵ１１の割込要求信号入力端ＩＲＱに接続されている。また、基準値ＡＤＲ１を設定するレジスタ２２がマイクロプロセッサ１０Ｂに備えられており、この内容を変えることにより、アプリケーションプログラムで書込保護領域１２１を書き換え可能にすることができる。
【００３１】
他の点は上記第２実施形態と同一である。
【００３２】
ＲＡＭ１２及びＲＡＭ１３のライトイネーブル信号ＷＥが共に低レベル又は高レベルのときには、割込要求信号ＩＲＱが低レベルである。ＲＡＭ１３のライトイネーブル信号ＷＥが高レベルでＲＡＭ１２のライトイネーブル信号ＷＥが低レベルのときには、割込要求信号ＩＲＱが高レベルとなり、その遷移の際に、ＣＰＵ１１に対し割込要求が行なわれる。ＣＰＵ１１はこれに応答して、例えば携帯電話の表示パネルに、書込保護領域１２１に対する書き込みがアプリケーションプログラムにより実行されようとしたができなかったために処理が正常に実行されないことを表示する。ユーザがこの書き込みを許可したいと判断した場合には、キーを操作してレジスタ２２の内容を例えばＨ８０００＿１０００に変えることにより、書き換え可能にする。
【００３３】
［第４実施形態］
図６は、本発明の第４実施形態のマイクロプロセッサ１０Ｃの概略ブロック図である。
【００３４】
この第４実施形態では、ＲＡＭ１２Ａがマイクロプロセッサ１０Ｃに外付けされている。その他の点は上記第３実施形態と同一である。
【図面の簡単な説明】
【図１】本発明の第１実施形態のマイクロプロセッサの概略ブロック図である。
【図２】図１のマイクロプロセッサに格納されているプログラムの概略説明図である。
【図３】スタックポインタ値ＳＰＶの変化を示す図である。
【図４】本発明の第２実施形態のマイクロプロセッサの概略ブロック図である。
【図５】本発明の第３実施形態のマイクロプロセッサの概略ブロック図である。
【図６】本発明の第４実施形態のマイクロプロセッサの概略ブロック図である。
【符号の説明】
１０、１０Ａ〜１０Ｄ  マイクロプロセッサ
１１  ＣＰＵ
１２、１２Ａ、１３  ＲＡＭ
１２１  書込保護領域
１２２  書込許可領域
１３１  スタック領域
１４  アドレスバス
１５  データバス
１６、１６Ａ  アンドゲート
１７  比較器
１８  スタックポインタ
１９  インバータ
２０  アドレス範囲判定回路
２１  イクスクルーシブオアゲート
２２  レジスタ
３０  メインプログラム
３１  初期設定ルーチン
３２  状態確認ルーチン
３３  実行制御プログラム
３４、３５  サブルーチン
３６  アプリケーション設定ルーチン
３７  アプリケーションプログラム
ＷＲ  ライト要求信号
ＷＥ  ライトイネーブル信号
ＡＤＲ  アドレス
ＤＡＴ  データ
ＣＰ  比較結果
ＰＣ  プログラムカウンタ
ＰＳ  プログラムステータス
【図１】
0004605871.tif 000002
【図２】
0004605871.tif 000003
【図３】
0004605871.tif 000004
【図４】
0004605871.tif 000005
【図５】
0004605871.tif 000006
【図６】
0004605871.tif 000007