(57)【特許請求の範囲】
【請求項１】
複数のアプリケーション（Ａ〜Ｇ）を実行するプロセッサ（１０１）に接続されたメモリ（１２０）に格納されたデータのデータ転送期間における破壊を防止するメモリ保護システム（１００）であって、
前記複数のアプリケーション（Ａ〜Ｇ）の各々が、ｍ個の上位アドレス・ビットの一義的な組み合わせにより識別される前記メモリ（１２０）の複数のセグメント（３００〜３０７）のうちの１つのセグメントにデータを格納し、
前記プロセッサ（１０１）が、前記複数のアプリケーションのうちの１つのアプリケーションを実行して、前記メモリの前記複数のセグメントのうちの前記１つのセグメントをアクセスするための、ｍ個の上位アドレス・ビットとｎ個の下位アドレス・ビットとを含むアドレスを生成して前記ｎ個の下位アドレス・ビットを下位アドレス・バス（１２１）に印加するよう動作し、
前記ｎ個の下位アドレス・ビットが前記複数のセグメントのうちの前記１つのセグメントにおける記憶場所を示すメモリ保護システムにおいて、
前記プロセッサから前記ｍ個の上位アドレス・ビットを受取って前記ｍ個の上位アドレス・ビットを格納するメモリ・レジスタ（１０２）であって、前記ｍ個の上位アドレス・ビットは、前記複数のアプリケーション（Ａ〜Ｇ）のうちの前記１つのアプリケーションに対するデータを格納するために前記複数のセグメント（３００〜３０７）のうちの前記１つのセグメントを識別するメモリ・レジスタ（１０２）と、
前記ｍ個の上位アドレス・ビットを前記メモリ・レジスタ（１０２）及び前記プロセッサ（１０１）から受け取り、前記複数のアプリケーションのうちの前記１つのアプリケーションを前記プロセッサ（１０１）が実行していることを示す第１の信号に応答して、前記メモリ・レジスタ（１０２）からの前記ｍ個の上位アドレス・ビットを上位アドレス・バスへ選択的に印加すると共に、前記プロセッサ（１０１）がオペレーティング・システムを実行していることを示す第２の信号の受取りに応答して、前記プロセッサ（１０１）からの前記ｍ個の上位アドレス・ビットを前記上位アドレス・バスへ選択的に印加するマルチプレクサ（１３０）であって、前記複数のアプリケーションのうちの前記１つのアプリケーションは、前記プロセッサによって実行されるとき、定数に等しい前記ｍ個の上位アドレス・ビットを生成するものであるマルチプレクサ（１３０）と、
前記プロセッサから前記ｍ個の上位アドレス・ビットを受取り、前記プロセッサ（１０１）からの前記ｍ個の上位アドレス・ビットが前記定数に等しくないことを決定して、該決定に応答して誤り信号を生成する誤り検出回路と、
を備えることを特徴とするメモリ保護システム（１００）。
【請求項２】
前記誤り検出回路から前記誤り信号を受取り、前記誤り信号に応答して前記データ転送を禁止する禁止回路（１３４〜１３５）を更に備えることを特徴とする、請求項１記載のシステム（１００）。
【請求項３】
前記誤り信号が前記プロセッサ（１０１）へ伝送され、該プロセッサが前記誤り信号の受取りに応答して誤り割込みを実行する、請求項１記載のシステム（１００）。
【請求項４】
前記誤り検出回路（１３２）が、前記１つのアプリケーションの実行期間に前記プロセッサ（１０１）からの前記ｍ個の上位アドレス・ビットを比較することを特徴とする、請求項１記載のシステム（１００）。
【請求項５】
前記誤り検出回路が前記メモリ・レジスタ（１０２）から前記ｍ個の上位アドレス・ビットを受取る、請求項１記載のシステム（２００）。
【請求項６】
前記誤り検出回路が、オペレーティング・システムが前記プロセッサによって実行されていることに応答して使用禁止される、請求項１記載のシステム（２００）。
【請求項７】
複数のアプリケーション（Ａ〜Ｇ）を実行するプロセッサ（１０１）に接続されたメモリ（１２０）に格納されたデータの、アプリケーション（Ａ）の実行期間におけるデータ転送での破壊を防止する方法（６００、７００）であって、
前記複数のアプリケーションのそれぞれが、ｍ個の上位アドレス・ビットの一義的な組み合わせにより識別される前記メモリの複数のセグメント（３００〜３０７）のうちの１つのセグメントにデータを記憶し、
前記プロセッサが、前記アプリケーション（Ａ）を実行して（６０１）、データ転送の必要に応答して前記メモリの前記複数のセグメントのうちの前記１つのセグメントをアクセスするための、ｍ個の上位アドレス・ビットとｎ個の下位アドレス・ビットとを含むアドレスを生成し、前記ｎ個の下位アドレス・ビットを下位アドレス・バス（１２１）に印加して前記メモリに伝送する（６０４）よう動作し、
前記ｎ個の下位アドレス・ビットが前記複数のセグメントのうちの前記１つのセグメントにおける記憶場所を示す方法において、
前記アプリケーションを実行して、定数に等しい前記ｍ個の上位アドレス・ビットを生成するステップ（６０３）と、
前記プロセッサが前記アプリケーションの実行を開始したのに応答して、前記複数のアプリケーション（Ａ〜Ｇ）のうちのそのとき実行されているアプリケーションのデータを記憶するために前記複数のセグメント（３００〜３０２）のうちの１つのセグメントを識別する、前記プロセッサによって生成される前記ｍ個の上位アドレス・ビットをメモリ・レジスタにおいて受取って記憶するステップと、
前記プロセッサが前記複数のアプリケーションのうちの前記１つのアプリケーションを実行しているとき、前記メモリ・レジスタ（１０２）に記憶された前記ｍ個の上位アドレス・ビットを選択して上位アドレス・バス（１２２〜１２４）に印加するステップと、
前記プロセッサがオペレーティング・システムを実行しているとき、前記プロセッサ（１０１）によって生成された前記ｍ個の上位アドレス・ビットを選択して上位アドレス・バス（１２２〜１２４）に印加するステップと、
前記プロセッサ（１０１）によって生成された前記ｍ個の上位アドレス・ビットを誤り検出回路に印加するステップ（６０５）と、
前記プロセッサ（１０１）によって生成された前記ｍ個の上位アドレス・ビットが前記定数に等しいか否かを決定するステップ（７０１）と、
前記プロセッサ（１０１）によって生成された前記ｍ個の上位アドレス・ビットが前記定数に等しくない場合に誤り信号を生成するステップ（７０２）と、
を備えることを特徴とする方法。
【請求項８】
前記誤り信号の生成に応答して前記データ転送を禁止するステップ（７０３）を更に備えることを特徴とする、請求項７記載の方法。
【請求項９】
前記誤り信号を前記プロセッサ（１０１）へ伝送するステップ（７０４）を更に備えることを特徴とする、請求項７記載の方法。
【請求項１０】
前記誤り信号の受取りに応答して前記プロセッサ（１０１）において誤り割込みを生成するステップ（７０５）を更に備えることを特徴とする、請求項９記載の方法。
【請求項１１】
前記ｍ個の上位アドレス・ビットが前記定数に等しいか否かを決定するステップ（７０１）が、前記プロセッサによる前記アプリケーションの実行期間において、前記ｍ個の上位アドレス・ビットが前記定数に等しいか否かを決定するステップを含む、請求項７記載の方法（４００）。
【請求項１２】
前記ｍ個の上位アドレス・ビットを誤り検出回路に印加するステップが、前記ｍ個の上位アドレス・ビットを格納するメモリ・レジスタ（１０２）から前記ｍ個の上位アドレス・ビットを印加するステップを更に備えることを特徴とする、請求項７記載の方法（４００）。
【請求項１３】
前記ｍ個の上位アドレス・ビットを誤り検出回路に印加するステップが、前記プロセッサ（１０１）からの前記ｍ個の上位アドレス・ビットを印加するステップを更に備えることを特徴とする、請求項７記載の方法（４００）。
【請求項１４】
前記プロセッサによるオペレーティング・システムの実行に応答して前記誤り検出回路を使用禁止するステップを更に備えることを特徴とする、請求項７記載の方法。
【発明の詳細な説明】
発明の分野
本発明は、マルチタスク・システムのためのメモリ保護システムに関する。特に、本発明は、アプリケーションが別のアプリケーションのためのデータを記憶するメモリ・セグメントへ書込むことを防止するシステムに関する。また、本発明のメモリ保護システムは、１つのアプリケーションが別のアプリケーションのメモリ・セグメントへの書込みを試みる時点を検出する。
【０００１】
課題
マルチタスク・システムは、コンピューティング技術において広く知られている。マルチタスク・システムにおいては、プロセッサによって多数のアプリケーションが同時に実行される。マルチタスク・システムの利点は、多数の機能を実施するのに要するリソースの量を最小化するため単一のプロセッサが同時に多数の機能を実施できることである。
【０００２】
典型的なマルチタスク・システムは、プロセッサと、プロセッサに関連するメモリ、及び、アプリケーションの処理スケジュールをたてると共にメモリに対するデータの読出し及び書込みを管理するオペレーティング・システムを必要とする。当該システムは、複数のアプリケーションを走らせる。各アプリケーションは、予め定めた時間量だけプロセッサにより実行される。アプリケーションの実行の結果として得るデータは、メモリへ書込まれて将来の使用のため格納される。プロセッサは、格納されたデータを用いて、後におけるアプリケーションの実行を再開する。マルチタスク・システムは、第１のアプリケーションが第２のアプリケーションのデータに重ね書きすることを防止するメモリ保護方式を含む。さもなければ、アプリケーションの一方又は両方に対するデータが壊され、アプリケーションが動かないことになる。このようなプロセッサの一例は、インテル社による３８６ＤＸプロセッサ・マニュアルに記載されるような３８６ＤＸプロセッサである。
【０００３】
マルチタスク・システムの一例は、パーソナル・コンピュータ上で走るウインドウズ・オペレーティング・システムである。ウインドウズ・オペレーティング・システムにおいて開かれる各ウインドウは、そのときシステムにより走らせられている別のソフトウエア・アプリケーションである。当該オペレーティング・システムは、予め定めた時間量だけ各アプリケーションを実行する中央処理装置において各アプリケーションに対する処理時間をスケジュール化する。結果として得るデータは、将来使用されるようにランダム・アクセス・メモリ（ＲＡＭ）に格納される。ウインドウズ・システムにおいては、オペレーティング・システムが、１つのアプリケーションに対するデータを記憶しているＲＡＭの１つの場所へ別のアプリケーションがデータを書込むことを防止するメモリ管理方式を備える。
【０００４】
マルチタスク・システムは、マイクロプロセッサを用いて更に小さなスケールで動作させられる。より小さなマルチタスク・システムの一例は、流量計を流れる流体の異なる特性を監視して複数のアプリケーションを同時に実行するマイクロプロセッサである。このようなマルチタスク・システムのオペレーティング・システムは、一般に、マイクロプロセッサの能力に依存して、厳密なシステム動作に限定される。これらの小さなシステムにおいては、プロセッサと関連するメモリは、一般に、複数のセグメントに分割される。各メモリ・セグメントは、オペレーティング・システムにより要求されるメモリ管理を簡単にするため１つのアプリケーションに対するデータを格納する。１つのアプリケーションが別のアプリケーションのデータを格納するメモリ・セグメントへデータを書込むことを防止することが課題である。
【０００５】
このような課題に対処するため、幾つかのマイクロプロセッサは、内部又は外部のメモリ保護機構を設けて、アプリケーションがその割当てられたメモリ・セグメント外のアドレスへデータを書込むことを防止する。しかし、メモリ保護機構を備えるマイクロプロセッサは非常に高価であり、かつ単一のマイクロプロセッサよりも複雑な回路を有する。コストと設計の配慮から、メモリ保護システムを持たない高価でないマイクロプロセッサを使用することが望ましい。従って、当技術分野には、メモリ保護機構を備えないマイクロプロセッサを含むマルチタスク・システムにメモリ保護を提供する、安価且つ簡単な方式に対する要求が存在する。
【０００６】
解決法
上記及び他の問題は、プロセッサが制御するマルチタスク・システムに対するメモリ保護システムに関する本発明により解決され、当技術分野における進歩が達成される。本発明によれば、プロセッサにより実行されるソフトウエアと該プロセッサの外にある回路との組合わせによって、メモリ保護システムが提供される。本発明は、内部メモリ保護能力を持たないプロセッサと関連して使用されるべき、比較的簡単且つ安価なメモリ保護システムを提供する。
【０００７】
マルチタスク・システムは、マイクロプロセッサと、該マイクロプロセッサと関連するメモリと、オペレーティング・システムとを備える。メモリにおける各場所は、ｎ個の下位アドレス・ビットとｍ個の上位アドレス・ビットとにより規定される。該メモリは複数のメモリ・セグメントへ分割され、各セグメントはｍ個の上位アドレス・ビットの一義的な組合わせにより規定される。プロセッサにより実行されている各アプリケーションには、当該アプリケーションに対するデータを格納する１つのメモリ・セグメントが割当てられる。オペレーティング・システムはプロセッサによるアプリケーションの実行を管理する。
【０００８】
本発明によると、メモリ保護システムは、メモリ・アドレス・レジスタと、該メモリ・レジスタからメモリへ延びる上位アドレス・バスと、プロセッサからメモリへ延びる下位アドレス・バスと、誤り検出回路とを備える。メモリ・レジスタはｍ個のビットを格納する。マイクロプロセッサによりアプリケーションが実行される前に、アプリケーションのメモリ・セグメントに対するｍ個の上位アドレス・ビットがメモリ・レジスタへ書込まれる。アプリケーションが実行されている間に、メモリ・レジスタに格納されたｍ個の上位ビットが上位アドレス・バスを介してメモリへ送られる。メモリ・レジスタからのｍ個の上位アドレス・ビットの伝送は、アプリケーションがその割当てられたメモリ・セグメントの外にあるアドレスへの書込みを防止する。
【０００９】
各アプリケーションは、全ゼロのような定数に等しくセットされたｍ個の上位アドレス・ビットとｎ個の下位アドレス・ビットとを持つ、読出し／書込み操作のためのアドレスを生成するようにコンパイルされる。ｍ個の上位アドレス・ビットは誤り検出のため用いられ、ｎ個の下位アドレス・ビットはアプリケーションの割当てられたメモリ・セグメントにおける記憶場所を示す。
【００１０】
アプリケーションにより生成されるｎ個の下位アドレス・ビットは、下位アドレス・バスを介してメモリへ伝送される。このｎ個の下位アドレス・ビットは、メモリ・レジスタからのｍ個のアドレス・ビットと組合わされてアプリケーションの割当てられたメモリ・セグメントにおける記憶場所を指定する。結果として生じるアドレスが読出し／書込み操作を行うために用いられる。
【００１１】
メモリ・レジスタからのｍ個の上位アドレス・ビットは選択されたアプリケーションがその割当てられたメモリ・セグメント外での読出し／書込み操作を防止するけれども、選択されたアプリケーションは、或る条件下では、その割当てられたメモリ・セグメント外での読出し／書込み操作を試みることがある。こうした条件の１つは、アプリケーションがそのメモリ・セグメントの容量を越えてデータを格納することを必要とするスタック・オーバーフロー誤りである。データを格納するために、アプリケーションは、その割当てられたメモリ・セグメント外のアドレスへの書込みを試みて、定数に等しくないｍ個の上位アドレス・ビットを持つアドレスを生成する。しかし、メモリ・レジスタからのｍ個の上位アドレス・ビットと生成されたｎ個の下位アドレス・ビットとの組合わせは、有効データを含むアプリケーションの割当てられたメモリ・セグメントにおけるアドレスとなる。読出し／書込み操作が進行すると、選択されたアプリケーションに対する有効データが壊されることになる。
【００１２】
アプリケーションの割当てられたメモリ・セグメントにおける有効データが壊されるのを防ぐため、誤り検出回路は、アプリケーションにより生成されるｍ個の上位アドレス・ビットが定数に等しいか否かを決定する。生成されたｍ個の上位アドレス・ビットが定数に等しくなければ、本発明は誤り信号を生成する。この誤り信号に応答して読出し／書込み操作を停止することができ、又は、誤り信号により誤り割込みを行うことができる。
【００１３】
メモリ・レジスタにおける誤りは、アプリケーションの実行が完了した後にオペレーティング・システムによって検出される。メモリ・レジスタにおけるｍ個の上位アドレス・ビットは、オペレーティング・システムにより読出される。メモリ・レジスタからのｍ個の上位アドレス・ビットは、完了したアプリケーションのメモリ・セグメントを規定するｍ個の上位アドレス・ビットと比較される。完了したアプリケーションとメモリ・レジスタとのｍ個の上位アドレス・ビットが等しくなければ、オペレーティング・システムは誤り割込みを生成する。このテストは、メモリ・レジスタにおける誤動作によってはデータが壊されなかったことを保証する。
【００１４】
発明の態様
本発明の１つの態様は、複数のアプリケーションを実行するプロセッサに接続されたメモリに格納されたデータの破壊を防止するメモリ保護システムであって、前記複数のアプリケーションの各々が、ｍ個の上位アドレス・ビットの一義的な組合わせにより識別される前記メモリの複数のセグメントの１つにデータを格納し、前記プロセッサが、前記メモリの複数の前記セグメントの前記１つをアクセスするアドレスを生成し、且つ、前記プロセッサが、そのとき実行されているアプリケーションがメモリ・アクセスを要求するのに応答して前記アドレスを１つのアドレス・バスへ印加するメモリ保護システムを含み、該メモリ保護システムは、
前記プロセッサから、そのとき実行されている前記アプリケーションに対するｍ個の上位アドレス・ビットの前記一義的な組合わせを受取り、そのとき実行されている前記アプリケーションに対するデータを格納する前記複数のセグメントの前記１つを識別するｍ個の上位アドレス・ビットの前記一義的な組合わせを格納するメモリ・レジスタと、
前記複数のアプリケーションの１つが前記プロセッサにより実行されていることを示す第１の信号に応答して、前記ｍ個の上位アドレス・ビットを前記メモリ・レジスタから前記メモリへ選択的に印加すると共に、前記プロセッサにより生成され、オペレーティング・システムが該プロセッサにより実行されていることを示す第２の信号の受取りに応答して前記アドレス・バスへ印加される前記ｍ個の上位アドレス・ビットを選択的に印加するマルチプレクサと、
前記プロセッサにより前記アドレス・バスへ印加されるｍ個の上位アドレス・ビットを受取り、前記データ転送を行うため前記プロセッサにより前記アドレス・バスへ印加された前記ｍ個の上位アドレス・ビットにおける誤りを検出し、該ｍ個の上位アドレス・ビットにおける前記誤りの検出に応答して誤り信号を生成する検出回路と、
を備えることを特徴とする。
【００１５】
前記検出回路から前記誤り信号を受取る禁止回路が、生成されている前記誤り信号に応答して前記データ転送を禁止することが好ましい。
前記検出回路からの前記誤り信号が前記プロセッサへ伝送され、該プロセッサが前記誤り信号の受取りに応答して誤り割込みを実行することが好ましい。
【００１６】
前記検出回路が、前記１つのアプリケーションの実行期間に前記プロセッサにより生成されるｍ個の上位アドレス・ビットを、そのとき実行されている前記アプリケーションに対するデータを格納する前記メモリにおける前記複数のセグメントの前記１つを識別する前記ｍ個の上位アドレス・ビットと比較する比較回路を備えることを特徴とすることが好ましい。
【００１７】
前記比較回路が前記メモリ・レジスタから前記ｍ個の上位アドレス・ビットを受取ることが好ましい。
前記比較回路が、実行中の前記オペレーティング・システムに応答して使用禁止されることが好ましい。
【００１８】
本発明の他の態様は、プロセッサに接続されたメモリの複数のセグメントに格納されたデータの破壊を防止する方法であって、前記複数のセグメントの各々はｍ個の上位アドレス・ビットの一義的な組合わせにより識別され、前記複数のセグメントの各々は、前記プロセッサにより実行されている前記複数のアプリケーションの別の１つに対するデータを格納するものであり、前記プロセッサが、データ転送に対する必要に応答して前記データ転送のためのアドレスを生成し、該アドレスを１つのアドレス・バスへ印加する防止方法を含む。該防止方法は、
前記プロセッサが前記アプリケーションの実行を開始するのに応答して、前記複数のアプリケーションのそのとき実行されている１つに対するｍ個の上位アドレス・ビットを前記プロセッサから受取るステップと、
受取られた前記ｍ個の上位アドレス・ビットをメモリ・レジスタに格納するステップと、
前記プロセッサが前記複数のアプリケーションのそのとき実行されている前記１つに対する前記データ転送を実行するのに応答して、前記メモリ・レジスタに格納された前記ｍ個の上位アドレス・ビットを前記メモリへ印加するステップと、
前記プロセッサにより前記アドレス・バスへ印加された前記データ転送のためのｎ個の下位アドレス・ビットを前記メモリへ伝送するステップと、
前記データ転送のため前記プロセッサにより前記メモリ・バスへ印加された前記アドレスの前記ｍ個の上位アドレス・ビットにおける誤りを検出するステップと、
前記誤りの検出に応答して誤り信号を生成するステップと、
を備えることを特徴とする。
【００１９】
前記誤り信号の生成に応答して前記データ転送を禁止することが好ましい。
前記誤り信号を前記プロセッサへ伝送することが好ましい。
前記誤り信号の受取りに応答して前記プロセッサにおいて誤り割込みを生成することが好ましい。
【００２０】
前記誤りを検出する前記ステップが、前記データ転送のため前記プロセッサにより前記アドレス・バスへ印加されるｍ個の上位アドレス・ビットを、前記複数のアプリケーションのそのとき実行されている前記１つに対するデータを格納する前記複数のセグメントの前記１つを識別する前記ｍ個の上位アドレス・ビットと比較するステップを含むことが好ましい。
【００２１】
前記検出するステップが、前記ｍ個の上位アドレス・ビットを格納するメモリ・レジスタから前記ｍ個の上位アドレス・ビットを受取るステップを更に備えることを特徴とすることが好ましい。
【００２２】
実行中のオペレーティング・システムに応答して前記プロセッサにより前記アドレス・バスへ印加される前記ｍ個の上位アドレス・ビットを伝送することが好ましい。
【００２３】
実行中の前記オペレーティング・システムに応答して前記誤り検出を禁止することが好ましい。
詳細な記述
図１は、本発明のメモリ保護機構を備えるマルチタスク・システム１００の望ましい実施の形態を示している。プロセッサ１０１は複数のアプリケーションに対する指令を実行する。指令は読出し専用メモリ（ＲＯＭ）１５０に格納される。プロセッサ１０１は、バス１５１によりＲＯＭ１５０に接続されるデータ・バス１０４を介してＲＯＭ１５０から指令を受取る。ＲＡＭ１２０のようなメモリが、複数のアプリケーションの各々を実行するため必要なデータを格納するようにプロセッサ１０１と関連させられる。ＲＡＭ１２０における各アドレスは、ｍ個の上位アドレス・ビットとｎ個の下位アドレス・ビットとにより規定される。ＲＡＭ１２０は望ましい実施の形態においては６４キロバイトのメモリであるが、本発明は任意のサイズのメモリを用い得るようスケーリングすることが可能である。
【００２４】
メモリ・レジスタ１０２はｍビットを格納し、ｍ個の経路１１２〜１１４によりマルチプレクサ１３０に接続される。望ましい実施の形態において、メモリ・レジスタ１０２はプロセッサ１０１の内部にある。しかし、メモリ・レジスタ１０２をプロセッサ１０１の外部に置いてもよい。保護信号は、アプリケーション又はオペレーティング・システムが実行されているかどうかを示すため、メモリ・レジスタ１０２により経路１１５上に出力される。望ましい実施の形態においては、オペレーティング・システムが実行されているとき、保護信号は経路１１５においてハイ、即ち１である。アプリケーションが実行されているとき、経路１１５上の保護信号はロー、即ち０である。望ましい実施の形態においては、経路１１５上の保護信号はマルチプレクサ１３０がどの経路をＲＡＭ１２０に接続するかを決定する。ハイの保護信号は、オペレーティング・システムが実行されているとき誤り検出回路を不動作状態にし、誤り信号が生成されることを防止する。
【００２５】
保護信号が経路１１５上でローであるとき、マルチプレクサ１３０は、メモリ・レジスタ１０２からのｍ個の経路１１２〜１１４をそれぞれｍ個の上位アドレス線１２２〜１２４に接続する。経路１１５上の保護信号がハイであるとき、マルチプレクサ１３０は、バス１０５からのｍ個の経路１０６〜１０８をｍ個の上位アドレス線１２２〜１２４に接続する。バス１０５はアドレス・バス１２１から分岐し、ｍ個の上位アドレス・ビットをプロセッサ１０１から経路１０６〜１０８を介してマルチプレクサ１３０へ直接与える。ｍ個の経路１０９〜１１１は、バス１０５からｍ個の上位アドレス・ビットを受取り、ｍ個の上位アドレス・ビットをマルチタスク・システム１００の誤り検出回路へ印加する。
【００２６】
データ・バス１０４はプロセッサ１０１をＲＡＭ１２０と接続しており、データをプロセッサ１０１とＲＡＭ１２０との間で転送する。ＲＡＭ１２０により行われるデータ操作の形式は、プロセッサ１０１から読出し／書込み経路１０３を介してＲＡＭ１２０へ伝送される読出し／書込み信号により決定される。或るアドレスのｎ個の下位アドレス・ビットは、プロセッサ１０１により下位アドレス・バス１２１を介してＲＡＭ１２０へ伝送される。ｍ個の上位アドレス線１２２〜１２４により表わされる上位アドレス・バスは、ｍ個の上位アドレス・ビットをマルチプレクサ１３０からＲＡＭ１２０へ与える。望ましい実施の形態においては、下位アドレス・バス１２１は或るアドレスの１３個の下位ビットを運び、上位アドレス・バスは６５キロバイト・メモリにおける１６ビット・アドレスの３つの上位アドレス・ビットを運ぶ。しかし、ｎ個の下位アドレス・ビットとｍ個の上位アドレス・ビットの数は、異なる設計パラメータにより動作するよう変更することができる。
【００２７】
誤り検出回路は、プロセッサ１０１により実行されているアプリケーションによる、割当てられたメモリ・セグメント外でのデータの読出し／書込みの試みを検出する。アプリケーションがその割当てられたメモリ・セグメント外での読出し／書込みを試みるならば、誤り検出回路は誤り信号を生成する。誤り信号の生成は、データ操作を実施不能にするか、あるいは、プロセッサ１０１へ伝送されて、アプリケーションが読出し／書込み操作を完了することを防止する誤り割込みを生じさせる。
【００２８】
ソフトウエア・アプリケーションは、定数に等しいｍ個の上位アドレス・ビットを持つ読出し／書込み操作のためのメモリ・アドレスを生成するようにコンパイルされる。誤り検出回路は、ｍ個の上位アドレス・ビットが当該定数に等しいかどうかを決定する。ｍ個の上位アドレス・ビットと当該定数とが等しくないとき、誤り検出回路により誤り信号が生成される。
【００２９】
望ましい実施の形態においては、アプリケーションにより生成されるｍ個の上位アドレス・ビットの各々に対する定数は０である。誤り検出回路は、ｍ個のビットのどれかが１である時点を検出する。誤り検出回路は、ＯＲゲート１３１、１３３、１３５と、ラッチ１３２と、インバータ１３４とを備える。ＯＲゲート１３１は、プロセッサ１０１からｍ個の経路１０９〜１１１を介してｍ個の上位アドレス・ビットを受取り、経路１４０を介して信号を印加する。ラッチ１３２は、ＯＲゲート１３１からの信号を経路１４０を介して受取り、プロセッサ１０１からのアドレス有効信号を経路１４１を介して受取る。アドレス有効信号は、アプリケーションがメモリ・アドレスの生成を完了したならば、プロセッサ１０１によりラッチ１４１へ送られる。ラッチ１３２は、経路１４２を介してＯＲゲート１３３へ信号を送る。ＯＲゲート１３３は、経路１１５を介して保護信号を受取り、ラッチ１３２から経路１４２を介して信号を受取る。ＯＲゲート１３３からの出力信号は、経路１４３上をプロセッサ１０１へ送られる。経路１４７は経路１４３から分岐し、ＯＲゲート１３３からの信号をインバータ１３４へ印加する。反転された信号は経路１４６を介してＯＲゲート１３５へ送られる。ＯＲゲート１３５は、経路１４６上で信号を受取り、経路１４４を介してチップ選択信号を受取る。ＯＲゲート１３５から結果として生じた信号は、経路１４５を介してＲＡＭ１２０へ印加される。
【００３０】
アプリケーションが無効アドレスを生成するならば、誤り検出回路は以下のように動作する。ＯＲゲート１３１がｍ個の経路１０９〜１１１から信号を受取る。受取られた信号の少なくとも１つが１を表わすハイであり、ハイの信号が経路１４０を介してラッチ１３２へ印加される。ラッチ１３２は、経路１４１を介してプロセッサ１０１からハイのアドレス有効信号を受取ることにより、ハイの信号を出力するようにセットされる。有効アドレス信号は、アプリケーションが読出し／書込み操作に対するアドレスの生成を完了したことを示す。経路１４０を介するハイ信号の受取りはラッチ１３２をストローブし、経路１４２にローの信号を印加させる。ＯＲゲート１３３は、プロセッサ１０１から経路１１５上でローの保護信号を受取り、ラッチ１３２から経路１４２上でローの信号を受取る。保護信号１１５はローであり、プロセッサ１０１によりアプリケーションが実行されていることを示す。このローの保護信号１１５は、ＯＲゲート１３３によりローのラッチ信号へＯＲ出力される。結果として得られるローの信号は、ローの誤り信号としてプロセッサ１０１へ経路１４２上で送られる。経路１４７は経路１４３から分岐し、ローの信号をインバータ１３４へ印加する。インバータ１３４からのハイの信号は、ＯＲゲート１３５へ印加される。読出し／書込み操作を完了させるローのチップ選択信号は、経路１４４を介してＯＲゲート１３５により受取られる。ＯＲゲート１３５は、ローのチップ選択信号とハイの信号とをＯＲ処理する。ハイの信号が経路１４５を介してＲＡＭ１２０へ送られる。このハイの信号は、読出し／書込み操作が完了されることを防止する。
【００３１】
アプリケーションにより生成されるアドレスから誤りが生じなければ、誤り検出回路は以下のように動作する。ＯＲゲート１３１がｍ個の経路１０９〜１１１から信号を受取る。受取られた全ての信号はローであり、ローの信号が経路１４０を介してラッチ１３２へ印加される。ラッチ１３２は、経路１４１を介してプロセッサ１０１からハイの有効信号を受取ることにより、ハイの信号を出力するようにセットされる。ローの信号が経路１４０上で受取られるので、経路１４２上の信号を、生成されたアドレスに誤りがないことを示すハイに維持する。ＯＲゲート１３３は、経路１１５を介してプロセッサ１０１からローの保護信号を受取り、経路１４２を介してラッチ１３２からハイの信号を受取る。ローの保護信号１１５は、ＯＲゲート１３３により経路１４２からのハイのラッチ信号に対してＯＲ処理される。結果として生じるハイの信号は経路１４３を介してプロセッサ１０１へ送られ、アドレスが有効であることを示す。経路１４７は経路１４３から分岐し、ハイの信号をインバータ１３４へ印加する。インバータ１３４からローの信号がＯＲゲート１３５へ印加される。読出し／書込み操作を完了させるローのチップ選択信号は、経路１４４を介してＯＲゲート１３５により受取られる。ＯＲゲート１３５は、ローのチップ選択信号とローの信号とをＯＲ処理する。結果として得るローの信号は、ＯＲゲート１３５により経路１４５を介してＲＡＭ１２０へ送られる。このローの信号は読出し／書込み操作を完了させる。
【００３２】
図２は、本発明の代替的な実施の形態を示している。マルチタスク・システム２００はマルチタスク・システム１００と同じ要素からなるが、ＯＲゲート１３１の前側に誤り検出回路に付加される、「より大きな」の比較器２０２を規定する論理ユニットと、「より小さな」の比較器２０３を規定する論理ユニットとを有する。バス１０５は、少なくともｍ個の上位アドレス・ビットを誤り検出回路に与える。ｎ個の下位アドレス・ビットの全て又はその一部もまた、誤り検出回路へ与えられる。「より大きな」の比較器２０２は、経路２１０上で少なくともｍ個の上位アドレス・ビットを受取り、「より小さな」の比較器２０３は、経路２１１上で少なくともｍ個の上位アドレス・ビットを受取る。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、バス２１３上で誤り検出回路へ送られる。「より大きな」の比較器２０２は経路２１４を介してバス２１３からｍ個の上位アドレス・ビットを受取り、「より小さな」の比較器２０３は経路２１５を介してバス２１３からｍ個の上位アドレス・ビットを受取る。「より大きな」の比較器２０２は信号を経路２０５を介してＯＲゲート１３１へ印加し、「より小さな」の比較器２０３は信号を経路２０６を介してＯＲゲート１３１へ印加する。
【００３３】
代替的な実施の形態においては、アプリケーションにより生成される各アドレスのｍ個の上位アドレス・ビットは、アプリケーションに対するデータを格納するメモリ・セグメントを規定するｍ個の上位アドレス・ビットの一義的な組合わせに等しい。代替的な実施の形態で生成することができる３つの形式のアドレス、即ち、アプリケーション・メモリ・セグメントにおける最下位アドレスより小さいアドレス、アプリケーション・メモリ・セグメント間のアドレス、及びアプリケーションのメモリ・セグメントの最上位アドレスより大きいアドレスが存在する。生成されたアドレスがアプリケーション・メモリ・セグメントの最上位アドレスより大きいか、あるいはアプリケーション・メモリ・セグメントの最下位アドレスより小さいときに、誤りが生じる。
【００３４】
メモリ・セグメントの最下位アドレスより小さなアドレスが生成されるとき、誤り検出回路は以下のように動作する。生成されたｍ個の上位アドレス・ビットは、経路２１０を介して「より大きな」の比較器２０２により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１４を介して「より小さな」の比較器２０２により受取られる。「より大きな」の比較器２０３は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットはメモリ・レジスタのｍ個の上位アドレス・ビットより小さいので、ローの信号が経路２０５を介してＯＲゲート１３１へ送られる。このローの信号は、生成されたアドレスがメモリ・セグメントの最上位アドレスより小さく且つ有効アドレスであることを示す。生成されたｍ個の上位アドレス・ビットは、経路２１１を介して「より小さな」の比較器２０３により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１５を介して「より小さな」の比較器２０３により受取られる。「より小さな」の比較器２０３は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットはメモリ・レジスタのｍ個の上位アドレス・ビットより小さく、ハイの信号が経路２０６を介してＯＲゲート１３１へ送られる。このハイの信号は、生成されたアドレスがアドレス・セグメントにおける最下位アドレスと無効アドレスより小さいことを示す。経路２０５からのハイの信号と経路２０４からのローの信号とが、ＯＲゲート１３１によりＯＲ処理される。結果として生じるハイの信号は経路１４０上に送られ、誤り検出回路の残りの部分は、図１において先に述べた如く、誤りに対する操作を完了する。
【００３５】
メモリ・セグメントにおける最上位アドレスより大きなアドレスが生成されるとき、誤り検出回路は以下のように動作する。生成されるｍ個の上位アドレス・ビットは、経路２１０を介して「より大きな」の比較器２０２により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１４を介して「より大きな」の比較器２０２により受取られる。「より大きな」の比較器２０２は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットはメモリ・レジスタのｍ個の上位アドレス・ビットより大きく、ハイの信号が経路２０５を介してＯＲゲート１３１へ送られる。このハイの信号は、生成されたｍ個のアドレスが最上位のメモリ・セグメント・アドレスと無効アドレスより大きいことを示す。また、生成されたｍ個の上位アドレス・ビットは、経路２１１を介して「より小さな」の比較器２０３により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１５を介して「より小さな」の比較器２０３により受取られる。「より小さな」の比較器２０３は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットはメモリ・レジスタのｍ個の上位アドレス・ビットより大きく、ローの信号が経路２０６を介してＯＲゲート１３１へ送られる。このローの信号は、生成されたアドレスが最下位メモリ・セグメント・アドレスより大きいことを示す。経路２０５からのハイの信号と経路２０６からのローの信号とはＯＲ処理される。結果として得るハイの信号は経路１４０上で送られ、誤り検出回路の残りの部分は、図１において先に述べたように、誤りに対する操作を完了する。
【００３６】
最下位メモリ・セグメント・アドレスより大きく且つ最上位メモリ・セグメント・アドレスより小さなアドレスが生成されるとき、誤り検出回路は以下のように動作する。生成されたｍ個の上位アドレス・ビットは、経路２１０を介して「より大きな」の比較器２０２により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１４を介して「より大きな」の比較器２０２により受取られる。「より大きな」の比較器２０２は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットは、メモリ・レジスタのｍ個の上位アドレス・ビットより小さく、ローの信号が経路２０５上でＯＲゲート１３１へ送られる。このローの信号は、生成されたアドレスが最上位セグメント・アドレスより小さく且つ有効アドレスであることを示す。また、生成されたｍ個の上位アドレス・ビットも、経路２１１を介して「より小さな」の比較器２０３により受取られる。メモリ・レジスタ１０２からのｍ個の上位アドレス・ビットは、経路２１５を介して「より小さな」の比較器２０３により受取られる。「より小さな」の比較器２０３は、生成されたｍ個の上位アドレス・ビットとメモリ・レジスタ１０２からのｍ個の上位アドレス・ビットとを比較する。生成されたｍ個の上位アドレス・ビットはメモリ・レジスタのｍ個の上位アドレス・ビットより小さく、ローの信号が経路２０６上をＯＲゲート１３１へ送られる。このローの信号は、生成されたアドレスが最下位セグメント・アドレスより大きく且つ有効アドレスであることを示す。経路２０５からのローの信号と経路２０４からのローの信号とがＯＲ処理される。結果として得るローの信号が経路１４０上で送られ、誤り検出回路の残りの部分は、図１において先に述べたように、適切な生成アドレスに対する動作を完了する。
【００３７】
図３は、複数のセグメント３００〜３０７へ分割されるＲＡＭ１２０を示す。セグメント３００〜３０７の各々は、ｍ個の上位アドレス・ビットの一義的な組合わせにより規定される。要求されるｍビットの数は、メモリにおけるセグメント数により決定される。例えば、ＲＡＭ１２０は６４キロバイトであり、８つのセグメントに分割される。ｍは３に等しく、各セグメントは上位３ビットの一義的な組合わせで規定される。この例においては、セグメント３００〜３０７の上位３ビットは、それぞれ０００、００１、０１０、０１１、１００、１０１、１１０及び１１１である。
【００３８】
マルチタスク・システム１００は、プロセッサ１０１により実行されるオペレーティング・システムと複数のアプリケーションＡ〜Ｇとを走らせる。各アプリケーションＡ〜Ｇとオペレーティング・システムは、図３に示されるように、ＲＡＭ１２０のセグメント３００〜３０７の１つにデータを格納する。本発明は、定数にセットされたｍ個の上位アドレス・ビットを有する、データ操作のためのアドレスを生成するように、各アプリケーションがコンパイルされることを必要とする。例えば、アプリケーションＡ〜Ｇは、望ましい実施の形態においては、ｍ個の上位アドレス・ビットが０であるアドレスを生成する。本発明におけるオペレーティング・システムは、本発明におけるアプリケーションＡ〜Ｇの実行をスケジューリングすると共に、メモリ全体にアクセスしてデータをアプリケーション間で転送する。
【００３９】
本発明によるメモリ保護機構を備えるマルチタスク・システムの動作の概要が、図４に示される。プロセス４００は、アプリケーションＡ〜Ｇの１つを実行するようにオペレーティング・システムがシステムを初期設定するステップ４０１から始まる。ステップ４０２において、アプリケーションＡのような選択されたアプリケーションがプロセッサ１０１により実行される。オペレーティング・システムは、ステップ４０３において、メモリ・レジスタ１０２におけるｍ個の上位アドレス・ビットがアプリケーションＡのｍ個の上位アドレス・ビットと等しいことを検査する。アプリケーションＡ〜Ｇがプロセッサ１０１により実行される毎に、プロセス４００が反復される。
【００４０】
ステップ４０１においてオペレーティング・システムにより行われるマルチタスク・システム１００の初期設定は、図５におけるプロセス５００によって示される。第一に、オペレーティング・システムはステップ５０１において、実行されるべきアプリケーション、例えばアプリケーションＡを選択する。ステップ５０２において、アプリケーションＡに対するデータを格納するため割当てられるメモリ・セグメントのｍ個の上位アドレス・ビット００１が、オペレーティング・システムによりメモリ・レジスタ１０２へ書込まれる。ステップ５０３において、保護信号１１５がローにセットされ、アプリケーションＡがプロセッサ１０１により実行されていることを示す。次いで、プロセス５００は、図４におけるプロセス４００のステップ４０１へ戻る。
【００４１】
図６は、プロセス４００のステップ４０２においてアプリケーションＡを実行するプロセス６００を示す。プロセス６００は、アプリケーションＡが実行されているステップ６０１で始まる。ステップ６０２において、アプリケーションＡはＲＡＭ１２０に対する読出し／書込み操作を行わなければならない。ステップ６０３において、読出し／書込み操作を行うため、アドレスがアプリケーションＡにより生成される。生成されたアドレスは、定数にセットされるｍ個の上位アドレス・ビットを有する。望ましい実施の形態においては、ｍ個の上位アドレス・ビットの各々は０である。生成されたｎ個の下位アドレス・ビットは、ステップ６０４において下位アドレス・バス１２１を介してＲＡＭ１２０へ送られる。読出し／書込み操作のためのアドレスのｍ個の上位ビットは、経路１２２〜１２４により表わされる上位アドレス・バスを介してメモリ・レジスタ１０２からＲＡＭ１２０に入力される。
【００４２】
ステップ６０３において生成されたｍ個の上位アドレス・ビットは、ステップ６０５において、プロセッサ１０１によりバス１０５と経路１０９〜１１１とを介して誤り検出回路へ送られる。誤り検出回路は無効アドレスが生成されたかどうかを決定する。読出し／書込み操作はステップ６０６において完了する。プロセス６００は、アプリケーションの実行が完了したかどうかを決定するステップ６０７において完了される。アプリケーションの実行が完了しなければ、ステップ６０７が、ステップ６０１から始まるプロセス６００を反復する。実行が完了されると、プロセス６００は図４のプロセス４００のステップ４０２へ戻る。
【００４３】
誤り検出回路は、ステップ６０５においてｍ個の上位アドレス・ビットを受取り、図７に示されるプロセス７００を完了する。プロセス７００は、プロセス６００において実行されているアプリケーションのためのデータを格納するメモリ・セグメントにおけるデータを保護する。メモリ・レジスタ１０２は、実行されているアプリケーションのメモリ・セグメントのための固有のｍビットを伝送し、アプリケーションがそのメモリ・セグメント外でデータを書込むことを防止する。スタック・オーバーフロー誤りのような或る条件に応答して、アプリケーションは、そのメモリ・セグメント外のアドレスを生成しようと試みる。しかし、無効アドレスからのｎビットとメモリ・レジスタ１０２からのｍビットとの組合わせが、有効データを含む、アプリケーションのメモリ・セグメント内のアドレスを生成する。誤り検出回路は、無効の上位アドレス・ビットを検出して、アプリケーションのメモリ・セグメントにおける有効データの破壊を防止するためデータ操作を禁止しなければならない。
【００４４】
プロセス７００は、ｍ個の上位ビットが定数に等しいかどうかを決定するステップ７０１から始まる。望ましい実施の形態においては、アプリケーションにより生成されたｍビットがそれぞれゼロであり、誤り検出回路はゼロに等しくないビットを検出する。ｍ個のビットが定数に等しければ、プロセス７００は図６に示されるプロセス６００のステップ６０５へ戻る。ｍ個の上位アドレス・ビットが当該定数に等しくなければ、プロセス７００はステップ７０２において誤り信号を生成する。誤り信号に応答して、ステップ７０３はチップ選択信号を禁止状態にして読出し／書込み操作を止め、アプリケーションのメモリ・セグメントにおけるデータの破壊を防止する。望ましい実施の形態においては、ステップ７０１〜７０３は、図１において先に述べた如き誤り検出回路により実行される。
【００４５】
図７のステップ７０４において、ステップ７０２で生成された誤り信号がプロセッサ１０１へ送られる。ステップ７０５において、プロセッサ１０１は誤り割込みを生じ、あるいは、誤り信号の受取りに応答して誤りフラグをセットする。プロセッサ１０１の応答はオペレーティング・システムにより決定され、本発明の製造者の設計上の選択である。誤り回復は本発明の範囲に含まれないため、ステップ７０３及びステップ７０４からの誤り回復については論述しない。
【００４６】
図８は、プロセス４００のステップ４０３においてオペレーティング・システムにより実行される誤り検出プロセス８００を示す。まず、保護信号１１５はステップ８０１においてハイの信号へセットされ、オペレーティング・システムが実行中であることを示す。ステップ８０２において、メモリ・レジスタ１０２がオペレーティング・システムにより読出される。ステップ８０３においてオペレーティング・システムにより、メモリ・レジスタ１０２から読出されるｍ個の上位アドレス・ビットが、完了したアプリケーションのメモリ・セグメントに対するｍ個の上位アドレス・ビットと比較される。ｍ個の上位アドレス・ビットが等しくなければ、ステップ８０４において誤り信号がオペレーティング・システムにより生成される。さもなければ、プロセス８００は図４のプロセス４００のステップ４０３へ戻る。
【００４７】
本発明は、マルチタスク・システムにおけるメモリ保護の提供に関するものである。本明細書では特定の例が例示的に開示されているが、当業者であれば、請求項に含まれる代替的なメモリ保護システムを文言とおり又は均等論の下で設計できることができよう。
【図面の簡単な説明】
【図１】  本発明のメモリ保護機構を備えたプロセッサ制御マルチタスク・システムの一つの望ましい実施の形態を示すブロック図である。
【図２】  本発明のメモリ保護機構を備えたプロセッサ制御マルチタスク・システムの代替的な実施の形態を示すブロック図である。
【図３】  複数のセグメントに分割された、マルチタスク・システムにおけるメモリを示すブロック図である。
【図４】  図１の望ましい実施の形態の動作の概要を示すフロー図である。
【図５】  アプリケーションを望ましい実施の形態において実行するよう用意するプロセスのフロー図である。
【図６】  望ましい実施の形態におけるアプリケーション実行期間での読出し／書込み操作を実行するプロセスのフロー図である。
【図７】  望ましい実施の形態においてアプリケーションが無効アドレスを生成したかどうかを決定するプロセスのフロー図である。
【図８】  望ましい実施の形態においてアプリケーションの実行が完了した後にメモリ・レジスタに格納されたｍ個の上位アドレス・ビットの変化を検出するプロセスのフロー図である。
【図１】
0003995883.tif 000002
【図２】
0003995883.tif 000003
【図３】
0003995883.tif 000004
【図４】
0003995883.tif 000005
【図５】
0003995883.tif 000006
【図６】
0003995883.tif 000007
【図７】
0003995883.tif 000008
【図８】
0003995883.tif 000009