以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部分には原則として同一の符号を付し、その繰り返しの説明は、原則省略する。
(実施の形態1)
<電子装置>
図1は、実施の形態1に係わる電子装置の構成を示すブロック図である。図1において、1000は、電子装置を示している。電子装置1000は、例えばパーソナルコンピューター、スマートフォン、プリンタ、複合機、テレビ、カメラ等の情報家電である。これらの電子装置1000には、プロセッサ1001が搭載されており、プロセッサ1001は、ソフトウェアを実行することにより、所定の機能を達成する。図1において、1002は、プロセッサ1001に結合され、プロセッサ1001によって実行されるソフトウェアを格納するソフトウェア(以下、SWとも称する)記憶部を示している。プログラムを実行すると言う観点で見た場合、プロセッサ1001は、実行部と見なすことができる。
図1において、1003は、ライセンス情報を格納するライセンス記憶部を示しており、1004は、ライセンス管理部を示している。また、1005は、電子装置1000の外部に配置されたソフトウェア提供装置を示している。図1は、ライセンス管理システムを示していると見なすことができる。この場合、ライセンス管理の対象となる有償ソフトウェアは、ソフトウェア提供装置1005から、電子装置1000へ提供されることになる。
電子装置1000は、上記したプロセッサ1001、ソフトウェア記憶部1002、ライセンス記憶部1003およびライセンス管理部1004以外に、それぞれの電子装置に応じた複数の部分を備えている。例えば、スマートフォンであれば、通信に関する送受信部等を備えており、カメラであれば、オートフォーカス用の制御部等を備えている。しかしながら、図1においては、図面が複雑になるのを避けるために、上記したプロセッサ1001、ソフトウェア記憶部1002、ライセンス記憶部1003およびライセンス管理部1004以外の部分は省略されている。
ソフトウェア提供装置1005は、ソフトウェアを提供するソフトウェア配信元に設置され、インターネット等の通信回線を介して電子装置1001に接続され、通信回線を介して、有償ソフトウェアおよび/または無償ソフトウェアを、電子装置1001を所有するユーザに提供する。
また、ソフトウェア提供装置1005は、例えば光デイスク再生装置と光デイスクのような記憶媒体とによって構成してもよい。この場合、光デイスク再生装置は、例えば、電子装置1000を所有するユーザ側に設置され、ケーブルによって電子装置1000に接続されることになる。また、光デイスクには、例えば複数の有償ソフトウェアと無償ソフトウェアが格納されている。光デイスク再生装置によって、記憶媒体である光デイスクを再生することにより、光デイスク再生装置から、電子装置1000へ、有償ソフトウェアおよび/または無償ソフトウェアが提供されることになる。
ライセンス記憶部1003には、予めライセンス情報が記憶されている。例えば、ユーザが電子装置1000を購入する際に、所定のライセンス料金を含めて、電子装置1000の販売価格として、電子装置1000の販売者(製造者)へ支払う。すなわち、このときの販売価格は、電子装置1000自体のハードウェアの価格と所定のライセンス料金とを含んでいることになる。この場合、電子装置1000の販売者が、上記した所定のライセンス料金に応じたライセンス情報を、ライセンス記憶部1003に格納して、ユーザへ提供する。勿論、販売者が、互いに異なるライセンス情報を予め格納したライセンス記憶部1003を搭載した複数種類の電子装置1000を用意しておき、ユーザが選択して、購入するようにしてもよい。この場合、ライセンス情報が異なるため、電子装置毎にライセンス料金も異なることになる。
ライセンス管理部1004は、ユーザが、ソフトウェア提供装置1005から、ソフトウェア記憶部1002へ、ソフトウェアをダウンロードする際に、機能する。すなわち、ライセンス管理部1004は、ユーザからのダウンロードの要求に対して、ソフトウェア提供装置1005から提供されたソフトウェアが、有償ソフトウェア(ライセンスの許諾が要求されるライセンス許諾のソフトウェア)であるか、無償ソフトウェア(ライセンスの許諾が要求されないソフトウェア)であるかを判定する。判定の結果、無償ソフトウェアであった場合、ソフトウェア提供装置1005から提供されたソフトウェアを、ソフトウェア記憶部1002へ格納する。ソフトウェア記憶部1002に格納された無償ソフトウェアは、実行部1001によって実行され、この無償ソフトウェアによって規定されている動作が実施される。
これに対して、有償ソフトウェアであると、ライセンス管理部1004が判定した場合、ライセンス管理部1004は、ライセンス記憶部1003からライセンス情報を読み出し、読み出したライセンス情報に基づいて、提供された有償ソフトウェアをソフトウェア記憶部1002に格納するか否かを制御する。
ライセンス記憶部1003には、前記したように、予めライセンス料金に応じたライセンス情報が格納されている。この実施の形態1においては、ライセンス料金に応じた数が、ライセンス情報として用いられている。ライセンス管理部1004は、読み出したライセンス情報によって示されている数が、例えば1以上であれば、提供された有償ソフトウェアを、ソフトウェア記憶部1002へ格納する。また、ライセンス管理部1004は、有償ソフトウェアを、ソフトウェア記憶部1002へ格納した場合、ライセンス情報によって示されている数を、例えば1減算し、減算によって得られた数をライセンス情報として、ライセンス記憶部1003へ格納する。ソフトウェア記憶部1002に格納された有償ソフトウェアは、実行部1001によって実行が可能となる。
これに対して、ライセンス情報によって示されている数が、0であれば、ライセンス管理部1004は、提供された有償ソフトウェアを、ソフトウェア記憶部1002へ格納しない。これにより、予め支払われていたライセンス料金が、不足している場合には、有償ソフトウェアの実行が禁止されることになる。見方を変えると、対価の支払いなしに、不正に有償ソフトウェアが実行されるのを防ぐことが可能となり、ソフトウェア配信元がライセンス料金の回収漏れを防ぐことが可能となる。
ライセンス記憶部1003は、販売者がライセンス情報を格納したあとは、ライセンス管理部1004によってのみ、変更が可能にされる。図1では、特に制限されないが、ライセンス管理部1004は、プロセッサ1001とは異なるプロセッサによって構成されている。この場合、ライセンス管理部1004の機能は、ライセンス管理部1004を構成するプロセッサによって実行されるソフトウェアにより実現されることになる。勿論、プロセッサ1001が、実行部の機能とライセンス管理部1004の機能の両方を実現するようにしてもよい。
<半導体装置>
図2は、実施の形態1に係わる半導体装置の構成を示すブロック図である。同図には、半導体装置1100としてマイクロプロセッサ(以下、マイクロプロセッサ1100とも記載する)が示されている。マイクロプロセッサ1100は、ソフトウェアを実行するプロセッサ(中央処理装置、以下実行ユニットとも称する)1101、ソフトウェア記憶ユニット1102、ライセンス記憶ユニット1103、ライセンス管理ユニット1104を備えている。図面が複雑になるのを避けるために、図2では省略されているが、マイクロプロセッサ1100は、上記したプロセッサ(実行ユニット)1101、ソフトウェア記憶ユニット1102、ライセンス記憶ユニット1103およびライセンス管理ユニット1104以外の回路ユニットも備えている。例えば、上記したユニット以外に、マイクロプロセッサ1100の外部との間で信号の送受信を行う周辺回路ユニットを、マイクロプロセッサ1100は備えている。
上記したそれぞれのユニットは、特に制限されないが、周知の半導体製造技術によって、1個の半導体チップに形成され、1個のパッケージに封止されている。このマイクロプロセッサ1100を、販売者(製造者)が、ユーザへ提供(販売)する際には、パッケージに封止された状態で、販売されることになる。勿論、パッケージに封止せずに、半導体チップを単位として販売するようにしてもよい。
ソフトウェア記憶ユニット1102は、実行ユニット1101に結合されており、ソフトウェアを格納する。実行ユニット1101は、ソフトウェア記憶ユニット1102からソフトウェアを読み出し、読み出したソフトウェアを実行する。実行ユニット1101がソフトウェアを実行することにより、マイクロプロセッサ1100は、ソフトウェアによって規定された所定の動作を実行することになる。
ライセンス記憶ユニット1103は、図1に示したライセンス記憶部1003と同様に、ライセンス情報が、予め格納される。すなわち、マイクロプロセッサ1100を、販売者(製造者)からユーザに提供する前に、販売者がライセンス記憶ユニット1103へライセンス情報を格納する。図1で説明したのと同様に、ユーザは、マイクロプロセッサ1100を購入する際、所定のライセンス料金を含めて、マイクロプロセッサ1100の販売代金を、販売者へ支払う。そのため、このときの販売代金は、マイクロプロセッサ1100自体のハードウェア価格と、所定のライセンス料金とを含んでいることになる。マイクロプロセッサ1100の販売者は、上記した所定のライセンス料金に応じたライセンス情報を、ライセンス記憶ユニット1103へ格納して、ユーザへ提供する。
ライセンス管理ユニット1104は、図1に示したライセンス管理部1004と同様に、ライセンス記憶ユニット1103からのライセンス情報に基づいて、マイクロプロセッサ1100の外部から提供されるソフトウェアを、ソフトウェア記憶ユニット1102へ格納するか否かの制御を実施する。マイクロプロセッサ1100の外部から提供されたソフトウェアが、有償ソフトウェアであるか、無償ソフトウェアであるかを判定する。判定の結果、提供されているソフトウェアが、無償ソフトウェアであった場合、ライセンス管理部1004(図1)と同様に、ライセンス管理ユニット1104は、提供された無償ソフトウェアを、ソフトウェア記憶ユニット1102に格納する。この場合、実行ユニット1101は、ソフトウェア記憶ユニット1102から、無償ソフトウェアを読み出して、実行する。
これに対して、提供されたソフトウェアが、有償ソフトウェアであると判定した場合、ライセンス管理ユニット1104は、ライセンス記憶ユニット1103からライセンス情報を読み出し、読み出したライセンス情報に基づいて、提供された有償ソフトウェアをソフトウェア記憶ユニット1102に格納するか否かを制御する。
ここでも、ライセンス料金に応じた数が、ライセンス情報によって示されるものとして説明する。ライセンス管理ユニット1004は、読み出したライセンス情報によって示されている数が、例えば1以上であれば、提供された有償ソフトウェアを、ソフトウェア記憶ユニット1102へ格納する。また、ライセンス管理ユニット1104は、有償ソフトウェアをソフトウェア記憶ユニット1102へ格納した場合、ライセンス情報によって示されている数を、例えば1減算し、減算によって得られた数をライセンス情報として、ライセンス記憶ユニット1103へ格納する。ソフトウェア記憶ユニット1102に格納された有償ソフトウェアは、実行ユニット1101によって実行が可能となる。
これに対して、ライセンス情報によって示されている数が、0であれば、ライセンス管理ユニット1104は、提供された有償ソフトウェアを、ソフトウェア記憶ユニット1102へ格納しない。これにより、予め支払われていたライセンス料金が、不足している場合には、有償ソフトウェアの実行が禁止されることになる。見方を変えると、対価の支払いなしに、不正に有償ソフトウェアが実行されるのを防ぐことが可能となり、ソフトウェア配信元がライセンス料金の回収漏れを防ぐことが可能となる。
図2では、マイクロプロセッサ1101に含まれているソフトウェア記憶ユニット1102が、特に制限されないが、電気的に書換え可能な不揮発性メモリであるフラッシュメモリによって構成されている。そのため、マイクロプロセッサ1100へソフトウェアを提供するソフトウェア提供装置としては、フラッシュライタ1105が用いられている。勿論、ソフトウェア提供装置は、フラッシュライタ1105に限定されない。例えば、USB(Universal Serial Bus)メモリ、SDメモリカード等の記憶媒体であってもよい。また、図1で述べた光デイスク再生装置と光デイスクとを用いたソフトウェア提供装置であってもよい。いずれの場合であっても、ソフトウェア提供装置は、有償ソフトウェアおよび/または無償ソフトウェアを格納しており、マイクロプロセッサ1100へ、ソフトウェアを提供する。さらに、図1で述べたように、通信回線を介して、マイクロプロセッサ1100へ、ソフトウェアを提供するようにしてもよい。
また、図2に示したライセンス記憶ユニット1103もフラッシュメモリによって構成されている。ソフトウェア記憶ユニット1102およびライセンス記憶ユニット1103は、フラッシュメモリにより構成されている例を示しているが、これに限定されるものではなく、スタテック型メモリ等の揮発性メモリであってもよい。ただし、ライセンス記憶ユニット1103を揮発性メモリで構成する場合、電源電圧が供給されていないときでも、ライセンス情報が保持されるようにバッテリ等によりバックアップが行われる。
ライセンス記憶ユニット1103は、販売者(製造者)がライセンス情報を格納したあとは、ライセンス管理ユニット1104によってのみ、変更が可能にされる。図2では、特に制限されないが、ライセンス管理ユニット1104は、実行ユニット1101とは異なる実行ユニットによって構成されている。この場合、ライセンス管理ユニット1104の機能は、ライセンス管理ユニット1104を構成する実行ユニットによって実行されるソフトウェアにより実現されることになる。勿論、実行ユニット1001が、実行ユニットの機能とライセンス管理ユニット1104の機能の両方を実現するようにしてもよい。
実施の形態1に係わる電子装置1000および半導体装置1100について、外部から提供された有償ソフトウェアを、ソフトウェア記憶部1002および1102に格納する場合を、図1および図2を用いて説明した。すなわち、提供された有償ソフトウェアを、ソフトウェア記憶部1002(記憶ユニット1102)へダウンロードする場合を説明した。ダウンロードによって、ソフトウェア記憶部1002(記憶ユニット1102)に格納されたソフトウェアは、実行部1001(実行ユニット1101)によって実行可能となる。そのため、本明細書において、ダウンロードとは、ソフトウェア記憶部1002(記憶ユニット1102)へソフトウェアを格納することを意味するだけでなく、広義では、ソフトウェアを実行可能にすることも意味している。
また、インストールとは、ソフトウェアが、実行部1001(実行ユニット1100)によって実行可能にすることを意味している。インストールに対向する用語として、アンインストールがある。アンインストールは、ソフトウェアが、実行部1001(実行ユニット1100)によって実行することが不可能となるようにすることを意味している。
有償ソフトウェアが提供(ダウンロード)される毎に、ライセンス管理部1004(ライセンス管理ユニット1104)は、上記したように、ライセンス情報を減算し、ライセンス記憶部1003(ライセンス記憶ユニット1103)に格納されているライセンス情報を更新する。すなわち、有償ソフトウェアをダウンロードする毎に、予め支払われているライセンス料金が減り、予め支払われたライセンス料金を使い切ると、有償ソフトウェアのダウンロードが禁止されることになる。
ダウンロードした有償ソフトウェアを、実行不可能にする場合、すなわちアンインストールする場合、あとで詳しく説明するが、ライセンス管理部1004(ライセンス管理ユニット1104)は、ライセンス情報を変更してもよいし、更新しなくてもよい。
<ライセンス管理ユニット1104の動作>
図3は、実施の形態1に係わるライセンス管理ユニット1104の動作を示すフローチャート図である。
先ず、ユーザから、ソフトウェアをインストールする指示が、ステップS00において、ライセンス管理ユニット1104に与えられる。このとき、ユーザは、インストールするソフトウェアを指定する。
ユーザの指定したソフトウェアが、有償ソフトウェアの場合、ライセンス管理ユニット1104は、ステップS01において、ライセンス記憶ユニット1103からライセンス情報を読み出す。この実施の形態1においては、ライセンス料金に応じた数が、ライセンス情報として用いられている。言い換えると、ライセンス情報は、有償ソフトウェア(SW)のインストール可能数を示している。ステップS02において、ライセンス管理ユニット1104は、ライセンス情報によって示されている有償ソフトウェアインストール可能数(図では、SWインストール可能数と記載)が、1以上か否かの判定を行う。有償ソフトウェアインストール可能数が、1未満(例えば0)であると判定すると、ライセンス管理ユニット1104は、ステップS08を実行する。ステップS08において、ライセンス管理ユニット1104は、例えばインストールが失敗した旨を、ユーザに知らせる。
一方、ステップS02において、ライセンス管理ユニット1104が、有償ソフトウェアインストール可能数が、1以上であると判定すると、ライセンス管理ユニット1104は、次にステップS03を実行する。ステップS03において、ユーザが指定したソフトウェアを、フラッシュライタ1105から受け取る。受け取ったソフトウェアを、ライセンス管理ユニット1104は、ステップS04において、ソフトウェア記憶ユニット(フラッシュメモリ)1102へ供給し、ソフトウェア記憶ユニット1102へ書き込む(格納する)。
次に、ステップS05において、ライセンス管理ユニット1104は、有償ソフトウェアインストール可能数を1減算し、減算した有償ソフトウェアインストール可能数をライセンス情報として更新する。その後で、ライセンス管理ユニット1104は、更新したライセンス情報を、ライセンス記憶ユニット1103へ供給し、書き込む(格納する)。これにより、ライセンス記憶ユニット1103に格納されているライセンス情報が更新されることになる。
最後に、ステップS07において、ライセンス管理ユニット1104は、インストールが成功した旨を、ユーザに知らせる。
有償ソフトウェアを、マイクロプロセッサ1100へインストールする毎に、上記したステップS00〜S07を繰り返す。繰り返すことにより、ライセンス情報によって示される有償ソフトウェアインストール可能数は、減算され、1未満(例えば0)に到達する。有償ソフトウェアインストール可能数が、1未満になると、ライセンス管理ユニット1104は、ステップS08を実行し、インストールに失敗した旨が、ユーザに知らされる。
すなわち、半導体装置を購入する際に予め支払ったライセンス料金に応じた有償ソフトウェアインスト−ル可能数に到達するまで、有償ソフトウェアを、ソフトウェア記憶ユニット1103へ格納することが可能となる。ソフトウェア記憶ユニット1103へ格納されたソフトウェアは、実行ユニット1101によって実行可能であるため、購入の際に支払ったライセンス料金に応じた個数の有償ソフトウェアを実行することが可能となる。
インストールするソフトウェアが有償ソフトウェアである場合を説明したが、インストールするソフトウェアには、無償ソフトウェアも存在する。そのため、有償ソフトウェアを、マイクロプロセッサ1100にインストールするとき、ユーザが、ライセンス管理ユニット1104に対して、図3に示したステップを実施するように指示すればよい。
また、図23に示すように、インストールされるべきソフトウェア部分SBに属性情報部分ATBを付加し、ソフトウェア部分SBと属性情報部分ATBとによってソフトウェアを構成するようにしてもよい。この場合、図1および図2で説明したソフトウェア提供装置1005およびフラッシュライタ1105に格納される有償ソフトウェアのそれぞれが、図23に示すように、インストールされるべきソフトウェア部分SBと属性情報部分ATBとを備えるようにする。この属性情報部分ATBに、ソフトウェア部分SBが、有償ソフトウェアであるか否かを示す属性情報を格納しておく。
このように、属性情報部分ATBを付加している場合、ライセンス管理ユニット1104は、例えば図3に示したステップS00において、ユーザが指定したソフトウェアを、フラッシュライタ1105から受け取る。ステップS00において、ライセンス管理ユニット1104は、受け取ったソフトウェアにおいて、属性情報部分ATBに、有償ソフトウェアであることを示す属性情報が格納されているか否かを判定する。属性情報が、有償ソフトウェアであることを示している場合、図3に示したステップS01、S02、S04〜S08を実施する。この場合、ステップS00において、ライセンス管理ユニット1104は、ソフトウェア部分SBを受け取っているため、ステップS03は実行しなくてもよい。
一方、ステップS00において、属性情報部分ATBに格納されている属性情報が、無償ソフトウェアであることを示している場合、あるいは属性情報部分ATBが、ソフトウェアSWに含まれていない場合には、インストールするソフトウェアは、無償ソフトウェアであると判定し、ライセンス管理ユニット1104は、図3に示したステップS01〜S08を実行しない。
<アンインストール>
次に、有償ソフトウェアをインストールした後、有償ソフトウェアをアンインストールする場合のライセンス管理ユニット1104の動作を説明する。ここでは、有償ソフトウェアをアンインストールした場合、ライセンス情報によって示される有償ソフトウェアインストール可能数を変更する例と、変更しない例を説明する。有償ソフトウェアインストール可能数を変更する場合と変更しない場合とで、それぞれ効果が存在するため、所望する効果によって、いずれの例を採用するようにしてもよい。
まず、有償ソフトウェアインストール可能数を変更する例を、図4を用いて説明する。図4は、有償ソフトウェアをアンインストールする場合のライセンス管理ユニット1104の動作を示すフローチャート図である。
ステップS10において、ユーザがアンインストールする有償ソフトウェアを指定し、アンインストールをライセンス管理ユニット1104へ指示する。これにより、アンインストールが開始される。ライセンス管理ユニット1104は、ステップS11において、ライセンス記憶ユニット1103から、ライセンス情報を読み出す。次に、ステップS12において、ライセンス管理ユニット1104は、ソフトウェア記憶ユニット1102から、アンインストールが指定されたソフトウェアを消去する。次のステップS13において、ステップS11において読み出したライセンス情報によって示されている有償ソフトウェアインストール可能数を1増加させて、有償ソフトウェアインストール可能数を更新する。
更新された有償ソフトウェアインストール可能数を示すライセンス情報を、ライセンス管理ユニット1104は、ステップS14において、ライセンス記憶ユニット1103へ書き込み、ステップS15において、アンインストールを完了する。
このように、有償ソフトウェアをアンインストールしたとき、有償ソフトウェアインストール可能数を増加させるようにすることによって、誤った有償ソフトウェアをインストールした場合でも、ライセンス料金を減らすことなく、希望の有償ソフトウェアをインストールし直すことが可能となる。
次に、アンインストールを行ったとき、有償ソフトウェアインストール可能数を更新しない例を、図5を用いて説明する。図5は、有償ソフトウェアをアンインストールする場合のライセンス管理ユニット1104の動作を示すフローチャート図である。
図4のステップS10と同様に、ユーザが、ステップS20において、アンインストールする有償ソフトウェアを指定し、アンインストールを指示することにより、アンインストールの動作が開始する。
ライセンス管理ユニット1104は、アンインストールの指示を受けると、指定された有償ソフトウェアを、ソフトウェア記憶ユニット1102から消去する。その後、ステップS22において、ライセンス管理ユニット1104は、アンインストールの動作を完了する。この場合、ライセンス管理ユニット1104は、ライセンス記憶ユニット1103からライセンス情報を読み出さない。そのため、ライセンス情報は更新されず、維持されることになる。これにより、ライセンス情報によって示される有償ソフトウェアインストール可能数は、増減されず、維持されることになる。
図5の例では、有償ソフトウェアのアンインストールが指示された場合、アンインストールの動作のみが行われる。これにより、有償ソフトウェアを、無限にインストールすることが可能となることを防ぐことができる。
図4および図5においては、アンインストールの動作として、ソフトウェア記憶ユニット1102からソフトウェアを消去する例を示したが、アンインストールの動作は、これに限定されるものではない。また、消去の動作は、所定の状態を上書きする動作も含んでいる。
この実施の形態では、ライセンス情報が、有償ソフトウェアのインストール可能数を示している例を説明したが、これに限定されるものではない。例えば、ライセンス情報は、有償ソフトウェアのインストール可能なポイントを示してもよいし、インストール可能な記憶容量を示してもよい。
また、ライセンス情報が示す有償ソフトウェアインストール可能数を、有償ソフトウェアをインストールする毎に、1減算する例を示したが、これに限定されるものではない。例えば、インストールする毎に、2以上を減算するようにしてもよい。さらに、インストールする有償ソフトウェアの金額に応じて、減算する数を変更するようにしてもよい。この場合、例えば、図23で説明した属性情報部ATBに、有償ソフトウェアの価格に応じた減算数を格納しておけばよい。この場合、ライセンス管理ユニット1104は、有償ソフトウェアインストール可能数を減算するとき、属性情報部ATBに格納されている減算数を減算すればよい。
ライセンス情報が、有償ソフトウェアのインストール可能なポイントを示している場合も同様に、インストール毎に、1ポイントあるいは2以上のポイントを減算してもよいし、有償ソフトウェアの価格に応じてポイント数を減算するようにしてもよい。
ライセンス情報が、有償ソフトウェアのインストール可能な記憶容量を示している場合も同様である。この場合、ライセンス情報が示すインストール可能な記憶容量は、ソフトウェア記憶ユニット1102の記憶容量を示している。すなわち、ソフトウェア記憶ユニット1102が有する記憶容量のうち、有償ソフトウェアを格納することが可能な記憶容量を示している。ライセンス管理ユニット1104は、フラッシュライタ1105から、インストールする有償ソフトウェアを読み込んだとき、有償ソフトウェアの容量を把握することができるため、ライセンス情報によって示されている有償ソフトウェアのインストール可能容量と、把握した有償ソフトウェアの容量とから、有償ソフトウェアをインストールすることが可能であるか否かの判定をすることが可能である。また、インストール可能容量から、把握した有償ソフトウェアの容量を減算することによって得た記憶容量を、ライセンス情報として、更新することが可能である。
ライセンス情報は、有償ソフトウェアのインストール可能なライセンス数を示す情報であると見なすことができる。この場合、実施の形態においては、ソフトウェアに対してライセンス数が設定されているのではなく、半導体装置1100に対してライセンス数が設定されていることになる。そのため、インストールする有償ソフトウェアは、種別を問わず、任意であり、互いに異なる種類の有償ソフトウェアを、ライセンス情報によって示されているライセンス数まで、インストールすることが可能である。
図2においては、半導体装置1101が、ライセンス記憶ユニット1103およびライセンス管理ユニット1104を備えている。ライセンス管理ユニット1104には、予めインストール可能なライセンス数を示すライセンス情報が格納されて、半導体装置1100は提供される。これにより、半導体装置1100を購入したユーザは、ライセンス情報によって示されているライセンス数まで、有償ソフトウェアを、半導体装置1100へインストールすることが可能となる。すなわち、半導体装置1100の内部で、ライセンスの管理が行われる。これにより、ユーザは、ライセンス管理装置を導入することなく、ライセンスの管理を行うことが可能となり、ユーザの負担を低減することが可能となる。また、ライセンス管理装置を監視する必要がなくなるため、ソフトウェア配信元の負担を低減することが可能となる。言い換えるならば、ユーザの利便性を損なうことなく、ライセンスの管理を行うことが可能となる。すなわち、ライセンス管理に適した半導体装置1100を提供することができる。
(実施の形態2)
図6は、実施の形態2に係わる電子装置の構成を示すブロック図である。実施の形態2においては、電子装置として、パーソナルコンピューターが示されている。先に図1を用いて、実施の形態1に係わる電子装置の構成を説明しているので、ここでは、図1に示した電子装置との相違点を主に説明する。図6も、ライセンス管理システムを示していると見なすことができる。ここでも、ライセンス管理の対象となる有償ソフトウェアが、ソフトウェア提供装置から電子装置(パーソナルコンピューター)へ提供されることになる。
<パーソナルコンピューターの構成>
図6において、1300は、パーソナルコンピューターを示している。パーソナルコンピューター1300には、CD−ROM等の光デイスク再生装置、ディスプレイ等の表示装置、キーボード等の入力装置、無線通信等の通信装置等の周辺装置が接続されるが、同図には、説明に必要な光デイスク再生装置1305を除いて、周辺装置は省略されている。ここで、光デイスク再生装置(CD−ROM)1305には、光デイスクのような記憶媒体が装着されて、用いられる。光デイスクには、複数種類のソフトウェアが格納されており、光デイスク再生装置1305によって、再生することにより、光デイスクに格納されているソフトウェアが、パーソナルコンピューター1300へ提供される。そのため、光デイスク再生装置1305と光デイスクとによって、図1に示したソフトウェア提供装置1005が構成されていると見なすことができる。
パーソナルコンピューター1300は、プロセッサ(CPU)1301、ハードディスク1302、ライセンス記憶部1303およびライセンス管理部1304を備えている。これら以外に、パーソナルコンピューター1300は、例えば周辺装置とプロセッサ1301との間に設けられた周辺部を備えているが、図6では省略されている。また、パーソナルコンピューター1300は、プロセッサ1301がソフトウェアを実行する際に、例えば作業用として用いる揮発性メモリを備えている。図6では、この揮発性メモリは、プロセッサ1301に内蔵されているものとして、説明する。
パーソナルコンピューター1300を製造または販売するとき、製造者または販売者が、所定のライセンス情報を、ライセンス記憶部1303へ格納して、製造または販売を行う。このとき格納されるライセンス情報は、有償ソフトウェアインストール可能数を示している。パーソナルコンピューター1300を購入するユーザが希望するライセンス数に応じた有償ソフトウェアインストール可能数が、ライセンス情報として、製造者または販売者によって、ライセンス記憶部1303へ格納されることになる。この場合、ユーザが希望するライセンス数に対応したライセンス料金が、パーソナルコンピューター1300のハード(本体)の価格に加算され、パーソナルコンピューター1300の製造または販売価格として、ユーザは購入することになる。
プロセッサ1301は、ハードディスク1302に結合され、ハードディスク1302からソフトウェアを読み出し、読み出したソフトウェアを実行する。このソフトウェアの実行により、パーソナルコンピューター1300は、ユーザが所望する機能を達成することになる。
ライセンス管理部1304は、光デイスク再生装置1305から有償ソフトウェアが提供されたとき、ライセンス記憶部1303からライセンス情報を読み出し、読み出したライセンス情報に基づいて、有償ソフトウェアのハードディスク1302への格納を制御する。
すなわち、ライセンス管理部1304は、ライセンス情報が示している有償ソフトウェアインストール可能数が、インストールする有償ソフトウェアの規定数以上の場合には、提供されている有償ソフトウェアを、ハードディスク1302へ格納する。また、このとき、ライセンス情報によって示されているインストール可能数から有償ソフトウェアの規定数を減算し、減算によって得られたインストール可能数を、ライセンス情報として、ライセンス記憶部1303へ格納する。これに対して、有償ソフトウェアの規定数が、ライセンス情報によって示されているインストール可能数を超えていた場合、ライセンス管理部1304は、提供された有償ソフトウェアを、ハードディスク1302へ格納しない。また、このときには、インストール可能数を変更せず、維持する。
ハードディスクに格納された有償ソフトウェアは、プロセッサ1301が読み出し、実行する。これにより、パーソナルコンピューター1300は、有償ソフトウェアに従った動作を行うことになる。
有償ソフトウェアの規定数は、実施の形態1と同様に、複数種類の有償ソフトウェアに対して一定の値、例えば実施の形態1と同様に、1であってもよいし、有償ソフトウェア毎に異なる値となるようにしてもよい。例えば、インストールする有償ソフトウェア毎に、規定数は、有償ソフトウェアの価格、その大きさ(容量)に比例した値であってもよい。
ライセンス記憶部1303は、製造者または販売者によって、ライセンス情報が記憶されたあとは、ライセンス管理部1304によってのみ、変更が可能な構成にされる。
ライセンス管理部1304は、例えば、プロセッサ1301とは異なるプロセッサによって構成される。この場合、ライセンス管理部1304を構成するプロセッサは、ソフトウェアに従って動作することになる。しかしながら、これに限定されるものではない。例えば、プロセッサ1301が、ハードディスク1302からのソフトウェアを実行するとともに、ライセンス管理部1304の機能も達成するようにしてもよい。
<ライセンス管理部1304の動作>
図7は、ライセンス管理部1304の動作を示すフローチャート図である。ここでは、有償ソフトウェアの規定値が、1の場合を例にして説明する。
まず、ユーザが、ステップS30において、キーボード(図示しない)等を用いて、インストールする有償ソフトウェアを特定し、有償ソフトウェアのインストールであることを指定する。キーボードからの指定および指示は、プロセッサ1301によって識別され、プロセッサ1301は、ライセンス管理部1304および光デイスク再生装置1305を動作させる。これにより、ステップS30において、インストール動作が開始する。
ライセンス管理部1304は、動作を開始することにより、ステップS31において、ライセンス記憶部1303からライセンス情報を読み出す。次に、ステップS32において、ライセンス管理部1304は、読み出したライセンス情報によって示されている有償ソフトウェアインストール可能数が、規定数以上か否かの判定を行う。ここでは、規定数は1としているため、インストール可能数が、1以上か否かを判定する。
ステップS32において、ライセンス情報によって示されている有償ソフトウェアインストール可能数が、規定数(1)未満であると判明した場合、ライセンス管理部1304は、次にステップS38を実行する。ステップS38において、ライセンス管理部1304は、インストールに失敗したことを、プロセッサ1301へ通知する。この通知により、プロセッサ1301は、例えばディスプレイに、インストール失敗の旨の表示を行い、インストールの動作を終了する。
これに対して、ステップS32において、ライセンス情報によって示されている有償ソフトウェアインストール可能数が、規定数(1)以上であると判明した場合、ライセンス管理部1304は、次にステップS33を実行する。ステップS33において、光デイスク再生装置1305から、有償ソフトウェアが読み出される。ステップS33において読み出された有償ソフトウェアを、ステップS34において、ライセンス管理部1304は、ハードディスク1302へ書き込む(格納する)。
その後、ステップS35において、ライセンス管理部1304は、ライセンス情報によって示されている有償ソフトウェアインストール可能数から、規定数分を減らす。図7の例では、規定数1を減算することになる。ステップS35に続く、ステップS36において、ライセンス管理部1304は、ステップS35における減算によって得られた有償ソフトウェアインストール可能数を、ライセンス情報として、ライセンス記憶部1303へ書き込む(格納する)。その後、ステップS37において、ライセンス管理部1304は、インストールが成功した旨を、プロセッサ1301へ通知する。これを受けてプロセッサ1301は、ディスプレイに、インストール成功の旨の表示を行い、インストールの動作を終了する。
有償ソフトウェアを、インストールする毎に、図7に示したステップが実行される。実行される毎に、ライセンス記憶部1303に格納されているライセンス情報が示す有償ソフトウェアインストール可能数が、減算される。ユーザが購入した際に、格納されたライセンス情報によって示されている有償ソフトウェアインストール可能数までは、ハードディスク1303へ有償ソフトウェアが書き込まれる。すなわち、予め格納されたライセンス情報によって示されているインストール可能数までは、有償ソフトウェアを、プロセッサ1301が実行可能となる。これに対して、予め格納されたライセンス情報によって示されている有償ソフトウェアインストール可能数を超えると、図7のステップS38が実行されることになり、有償ソフトウェアは、ハードディスク1303に書き込まれず、プロセッサ1301によって実行することが不可能となる。
この実施の形態2においても、実施の形態1と同様に、ライセンス情報は、有償ソフトウェアのインストール可能なポイントを示してもよいし、インストール可能な記憶容量を示してもよく、ライセンス情報は、インストール可能なライセンス数を示していると見なすことができる。ライセンス情報をポイントで示す場合、ライセンス数に相当するポイントがライセンス情報によって示されていると見ることができる。また、ライセンス情報を記憶容量で示す場合、ライセンス数に相当する記憶容量がライセンス情報によって示されていると見ることができる。
また、有償ソフトウェアの構成を、実施の形態1で述べたのと同様に、図23に示すような構成にしてもよい。なお、図23に示した属性情報部ATBに、有償ソフトウェアであることを示す属性情報を格納するようにした場合には、インストール開始(図7のステップS30)のとき、ユーザは、インストールするソフトウェアを特定するだけで済む。
また、実施の形態1で述べたのと同様に、有償ソフトウェアをアンインストールした場合には、ライセンス情報を、図4で説明したように、更新してもよいし、図5で説明したように、維持してもよい。
(実施の形態3)
図1および図6では、プロセッサ1001(実行ユニット1301)を組み込んだ電子装置を説明したが、ソフトウェアを記憶する記憶部とプロセッサを備えたマイクロプロセッサ(例えば、図2のマイクロプロセッサ1100)を用いて電子装置を構成し、提供することもできる。この場合には、例えば、ユーザがマイクロプロセッサを販売者(製造者)から購入し、電子装置に組み込み、マイクロコンピュータを組み込んだ電子装置を、ユーザが提供することになる。
マイクロプロセッサを組み込んだ電子装置を提供する場合、提供するまでの段階は、大別すると、開発段階と、量産段階に分けられる。開発段階で、マイクロプロセッサにインストールされるソフトウェアの開発を行い、開発段階で開発されたソフトウェアを、量産段階では、複数のマイクロプロセッサのそれぞれにインストールする。このようにして開発段階で開発されたソフトウェアがインストールされたマイクロプロセッサが、電子装置に組み込まれて、提供されることになる。そのため、量産段階では、ソフトウェアのインストールは、原則1回で済む。
これに対して、開発段階では、マイクロプロセッサに対して、ソフトウェアのインストール、アンインストールおよび再インストールが、繰り返されることがある。すなわち、同一のソフトウェアについて、インストール、アンインストール、再びインストール(再インストール)を繰り返すこともある。図2に示したマイクロプロセッサ1100を用いて、一例を説明すると、次のような場合である。
ソフトウェア記憶ユニット1102へ有償ソフトウェアと無償ソフトウェアのそれぞれをインストールする。その後、インストールした無償ソフトウェアを改良した結果、無償ソフトウェアのサイズ(容量)が大きくなってしまい、既にインストールしてある有償ソフトウェアを、ソフトウェア記憶ユニット1102内の別の領域に移動させることが必要となる。この場合、有償ソフトウェアを、インストールしたあと、アンインストールし、さらにインストール(再インストール)することになる。また、別の例を述べると、開発段階の初期で、有償ソフトウェアをインストールしたあと、開発が進むに従い、当該有償ソフトウェアが不要となり、アンインストールする。その後、開発がさらに進み、やはり、当該有償ソフトウェアをインストールすることが必要となり、インストール(再インストール)することがある。この場合においても、同じ有償ソフトウェアを、インストールし、アンインストールし、さらに再インストールすることになる。
そのため、ソフトウェアを自由に書換ることが可能なマイクロプロセッサを、マイクロプロセッサを提供する販売者(製造者)が、電子装置を開発するユーザへ提供することが考えられる。しかしながら、このように、ソフトウェアを自由に書換ることが可能なマイクロプロセッサを提供した場合、量産段階で、許諾なしにコピーしたソフトウェアを、マイクロプロセッサにインストールすることが可能となってしまう。
この対策として、開発段階で用いられるマイクロプロセッサ(以下、開発用マイクロプロセッサとも称する)と、量産段階で用いられるマイクロプロセッサ(以下、量産用マイクロプロセッサとも称する)とを分けて、販売者(製造者)が提供することが考えられる。この場合、開発用マイクロプロセッサは、量産用マイクロプロセッサの機能と同じ機能を有し、さらに開発に適した追加機能を備えるようにする。また、開発用マイクロプロセッサは、ソフトウェアの書換えを自由に行うことが可能となるようにし、量産用マイクロプロセッサは、ソフトウェアの書換えを、不可能または制限する。なお、ここでの書換えは、ソフトウェアをインストールしたあと、再び同じソフトウェアを再インストールすることを意味している。
この場合、開発用マイクロプロセッサと量産用マイクロプロセッサとの切替えは、販売者(製造者)が提供したあとでは困難となるようにする。この切替えを行う方法としては、例えば次の方法(1)〜(6)がある。
(1)マイクロプロセッサに、1回限りの書き込みが可能な不揮発性メモリを設ける。この不揮発性メモリに書き込みを行うことにより、マイクロプロセッサは、例えば開発用マイクロプロセッサとして機能し、書き込みを行わなければ、量産用マイクロプロセッサとして機能する。
(2)マイクロプロセッサに不揮発性メモリが設けられている場合、この不揮発性メモリにおいて、特別の方法によってのみ書き込みを行うことが可能な特別領域を設定する。特別領域に、書き込みを行うことによって、マイクロプロセッサは、例えば開発用マイクロプロセッサとして機能し、書き込みを行わなければ、量産用マイクロプロセッサとして機能する。この場合の特別な方法とは、例えば、半導体チップをパッケージで封止した状態では、外部に接続されない端子を、半導体チップに設け、特定のコードを、この端子に供給したときのみ、書き込みが可能となるようにする方法が考えられる。
(3)マイクロプロセッサにメタルスイッチを設ける。マイクロプロセッサを製造する製造工程において、メタルスイッチをオン状態またはオフ状態にする。この場合、例えば、メタルスイッチがオン状態にされたマイクロプロセッサが、開発用マイクロプロセッサとして機能し、メタルスイッチがオフ状態にされたマイクロプロセッサが、量産用マイクロプロセッサとして機能する。
(4)マイクロプロセッサに内蔵されている不揮発性メモリを、開発用マイクロプロセッサと量産用マイクロプロセッサで異なるようにする。
(5)マイクロプロセッサの半導体チップとそれを封止するパッケージから突出するリードとの間の接続を、変えることにより、開発用マイクロプロセッサと、量産用マイクロプロセッサとを切替える。
(6)開発用マイクロプロセッサと量産用マイクロプロセッサのパッケージを変えることにより、開発用マイクロプロセッサと、量産用マイクロプロセッサとを切替える。
図8は、このような方法によって切替えられた開発用マイクロプロセッサと量産用マイクロプロセッサの関係を示す図である。図8において、左側が開発用マイクロプロセッサを示し、右側が量産用マイクロプロセッサを示している。開発用マイクロプロセッサは、ソフトウェアの書換えが自由(フリー)となる。これに対して、量産用マイクロプロセッサは、ソフトウェアの書換えが制限される。例えば、量産用マイクロプロセッサでは、インストールは可能であるが、再インストールはできないようにされる。開発用マイクロプロセッサは、量産用マイクロプロセッサの機能を包含しているが、開発用の追加機能も備えている。そのため、開発用マイクロプロセッサのハードウェア価格は、量産用マイクロプロセッサのハードウェア価格(価格固定)に比べて追加機能の価格(α)分、高価になる。なお、ここでの価格は、ライセンス料金を含んでいない。すなわち、マイクロプロセッサの本体(ハードウェア)の価格を示している。
この実施の形態3においては、上記した方法により、開発用マイクロプロセッサとされたか、量産用マイクロプロセッサとされたかを示す情報を基にして、書換え制限情報が形成される。例えば方法(1)によって、切替えを実施した場合、1回限りの書き込み可能な不揮発性メモリからの出力に基づいた値が、書換え制限情報として用いられる。
また、実施の形態3においては、実施の形態1で示した図2のライセンス記憶ユニット1103に、過去にインストールした有償ソフトウェアの履歴情報が記憶される。ここで、履歴情報は、例えば、インストールした有償ソフトウェアを特定するユニーク番号IDである。もし、有償ソフトウェアを特定するユニーク番号IDが、有償ソフトウェアに存在しない場合には、図23で説明した属性情報部ATBに有償ソフトウェアを特定するユニーク番号IDの情報を格納する。
実施の形態3においては、実施の形態1の図2に対して、さらにライセンス管理ユニット1104が変更される。すなわち、インストールした有償ソフトウェアをアンインストールし、さらに再インストールする際、実施の形態3に係わるライセンス管理ユニット1104は、書換え制限情報、履歴情報および有償ソフトウェアのユニーク番号IDに基づいて、ソフトウェア記憶ユニット1102への有償ソフトウェアの格納を制御するとともに、有償ソフトウェアインストール可能数を更新するか否かを制御する。例えば、実施の形態3に係わるライセンス管理ユニットは、書換え制限情報が、開発用マイクロプロセッサであることを示している場合、すなわち書換えフリーを示している場合、過去にインストールした有償ソフトウェアを再インストールするとき、有償ソフトウェアインストール可能数を更新せずに、有償ソフトウェアを、ソフトウェア記憶ユニット1102へ格納する。すなわち、インストール可能数を更新せずに、再インストールを可能とするように機能する。
実施の形態3に係わるマイクロプロセッサは、実施の形態1で説明したマイクロプロセッサ1100(図2)と類似している。すなわち、図2に示したマイクロプロセッサ1100と異なるのは、ライセンス記憶ユニット1103およびライセンス管理ユニット1104である。先に述べたように、実施の形態3に係わるライセンス記憶ユニットは、図2に示したライセンス記憶ユニット1103に履歴情報が追加されている。実施の形態3に係わるライセンス管理ユニットの動作については、あとで説明する。さらに、実施の形態3においては、フラッシュライタ1105から有償ソフトウェアか提供されるとき、その有償ソフトウェアを特定するユニーク番号IDが供給される。
なお、実施の形態3に係わるライセンス管理ユニットは、以下、ライセンス管理ユニット1104(3)と記載し、ライセンス記憶ユニットは、以下、ライセンス記憶ユニット1103(3)と記載する。
<ライセンス管理ユニット1104(3)の動作>
次に、実施の形態3に係わるライセンス管理ユニット1104(3)の動作を、図9を用いて説明する。図9は、ライセンス管理ユニット1104(3)の動作を示すフローチャート図である。ステップS40において、ユーザは、インストールする有償ソフトウェアを指定し、有償ソフトウェアのインストールであることを指示する。この指示を受けて、ライセンス管理ユニット1104(3)が動作を開始する。また、フラッシュライタ1105は、特定された有償ソフトウェアを、マイクロプロセッサ1100へ提供する。すなわち、インストールを開始する。
ステップS41において、ライセンス管理ユニット1104(3)は、書換え制限情報を判定する。書換え制限情報が、書換え制限あり(量産用マイクロプロセッサ)を示していた場合、ライセンス管理ユニット1104(3)は、次にステップS43を実行する。一方、書換え制限情報が、書換えフリー(開発用マイクロプロセッサ)を示していた場合、ライセンス管理ユニット1104(3)は、次にステップS42を実行する。
ステップS42において、ライセンス管理ユニット1104(3)は、ライセンス記憶ユニット1103(3)から、過去にインストールした有償ソフトウェアの履歴情報を読み出す。ライセンス管理ユニット1104(3)は、提供された有償ソフトウェアに含まれているユニーク番号IDと、ライセンス記憶ユニット1103(3)から読み出した履歴情報とを比較する(図では、SW−ID履歴一致?と記載)。比較の結果、一致していれば、ライセンス管理ユニット1104(3)は、次にステップS45を実行し、不一致であれば、ステップS43を実行する。
例えば、有償ソフトウェアは、図23に示した構成にされ、属性情報部ATBに、その有償ソフトウェアを特定するユニーク番号IDが格納されている。ライセンス管理ユニット1104(3)は、この属性情報部ATBに格納されているユニーク番号IDを、履歴情報と比較することによって、過去にインストールした有償ソフトウェアを、再度、インストール(再インストール)するのか否かを判定することができる。
ステップS43において、ライセンス管理ユニット1104(3)は、ライセンス記憶ユニット1103(3)からライセンス情報を読み出す。読み出したライセンス情報によって示されている有償ソフトウェアインストール可能数が、規定数(1)以上か否かを、ステップS44において、ライセンス管理ユニット1104(3)が判定する。有償ソフトウェアインストール可能数が、規定値(1)未満であると、ステップS44において判定されると、ライセンス管理ユニット1104(3)は、次にステップS40−Fを実行し、有償ソフトウェアインストール可能数が、規定値(1)以上であると判定すると、ライセンス管理ユニット1104(3)は、次にステップS45を実行する。
ステップS40−Fにおいて、ライセンス管理ユニット1104(3)は、インストールに失敗した旨を、ユーザに通知する。これにより、書換え制限がなく(書換えフリー)、再インストールの場合を除いて、有償ソフトウェアインストール可能数が規定数未満の場合、有償ソフトウェアのインストールが禁止されることになる。
ステップS45において、ライセンス管理ユニット1104(3)は、フラッシュライタ1105から提供されている有償ソフトウェアのソフトウェア部分SBを読み込む。読み込んだソフトウェア部分SBを、ライセンス管理ユニット1104(3)は、ステップS46において、ソフトウェア記憶ユニット1102へ書き込む(格納する)。
次に、ステップS47において、ライセンス管理ユニット1104(3)は、ステップS43で読み出したライセンス情報によって示されている有償ソフトウェアインストール可能数を、規定数(1)だけ減算し、減算によって得た有償ソフトウェアインストール可能数を示すライセンス情報を生成する。また、ステップS48において、ライセンス管理ユニット1104(3)は、ステップS46で、ソフトウェア記憶ユニット1102へ書き込んだソフトウェア部分SBに対応する属性情報部ATBに格納されているユニーク番号IDを、履歴情報として、ライセンス記憶ユニット1103(3)に記録する。
また、ステップS49において、ライセンス管理ユニット1104(3)は、ステップS47で生成したライセンス情報を、ライセンス記憶ユニット1103(3)へ書き込む(格納する)。
なお、ライセンス管理ユニット1104(3)が、ステップS42のあとに、ステップS45〜S49を実施する場合、ステップS43を実施していないため、ライセンス管理ユニット1104(3)は、ライセンス記憶ユニット1103(3)からライセンス情報を読み出していない。そのため、この場合には、ステップS47での有償ソフトウェアインストール可能数の減算は行われない。また、ステップS49でのライセンス記憶ユニット1103(3)へのライセンス情報の書き込みも行われない。
最後に、ステップS40−Cにおいて、ライセンス管理ユニット1104(3)は、有償ソフトウェアのインスト−ルが成功した旨をユーザに通知する。
上記したステップが、有償ソフトウェアをインストールする毎に実施される。
この実施の形態3においては、書換え制限が設定されていても、すなわち量産用マイクロプロセッサであっても、実施の形態1と同様に、ライセンス情報によって示されている有償ソフトウェアインストール可能数まで、有償ソフトウェアを、ソフトウェア記憶ユニット1102に書き込むことが可能となる。すなわち、量産用マイクロプロセッサであっても、予め支払ったライセンス料金に応じた分だけ、有償ソフトウェアをインストールすることが可能となる。
また、この実施の形態3においては、書換え制限が無い場合(書換えフリー)、すなわち開発用マイクロプロセッサについては、新たな有償ソフトウェアをインストールするときには、実施の形態1と同様に、ライセンス情報によって示されている有償ソフトウェアインストール可能数まで、有償ソフトウェアを、ソフトウェア記憶ユニット1102に書き込むことが可能となる。さらに、開発用マイクロプロセッサについては、一度、有償ソフトウェアをインストールすると、インストールした履歴(ユニーク番号ID)がライセンス記憶ユニット1103に格納される。アンインストールしても、インストールした履歴が、ライセンス記憶ユニット1103(3)に残っているため、同一の有償ソフトウェアを、再インストールする場合、有償ソフトウェアインストール可能数は、減算されない。すなわち、更新されず、維持される。言い換えるならば、有償ソフトウェアインストール可能数を減らすことなしに、有償ソフトウェアを、ソフトウェア記憶ユニット1103へ、再度書き込むことが可能となり、実行ユニット1101によって実行することが可能となる。
このことは、見方と変えると、有償ソフトウェアインストール可能数が、規定数(1)未満であっても、有償ソフトウェアの再インストールが可能となる。そのため、開発段階において、開発用マイクロプロセッサを用いる場合には、有償ソフトウェアインストール可能数を考慮せずに、有償ソフトウェアを、任意に、アンインストールし、その後、同じソフトウェアを、再びインストール(再インストール)することが可能となる。
マイクロプロセッサ1100を例にして説明したが、これに限定されるものではない。マイクロプロセッサ1100の代わりに、パーソナルコンピューターあるいはスマートフォンのような携帯端末を用いてもよい。また、フラッシュライタ1105の代わりに、光デイスク再生装置あるいは通信回線を介して有償ソフトウェアを提供するソフトウェア記憶装置を用いてもよい。さらに、ソフトウェア記憶ユニット1102は、ハードディスクあるいはメモリカードを用いるようにしてもよい。このように、マイクロプロセッサ、フラッシュライタおよびソフトウェア記憶ユニットを変更しても、同様の効果が得られるものである。
<変形例>
有償ソフトウェアに、問題、例えばバグがあった場合、ソフトウェア配信元が、バグの対策を図った有償ソフトウェア(対策済み有償ソフトウェア)を提供することがある。この場合、既にインストールしている有償ソフトウェアと、対策済み有償ソフトウェアとは、同じユニーク番号IDとなる。
ユニーク番号IDが同じであるため、書換え制限が設定されていない(書換えフリー)開発用マイクロプロセッサにおいては、有償ソフトウェアインストール可能数に影響されずに、ユーザは、対策済み有償ソフトウェアを再インストールすることが可能である。
これに対して、書換え制限ありとされている量産用マイクロプロセッサにおいては、有償ソフトウェアインストール可能数が、規定数以上でない限り、対策済み有償ソフトウェアをインストールすることが困難となる。
この変形例においては、例えば、図23に示した属性情報部ATBに、ソフトウェア部SBに格納されている有償ソフトウェアは、ソフトウェアのバグを対策する対策済み有償ソフトウェアであることを示す情報(コード)が格納される。また、図9に示したステップS41において、ライセンス管理ユニット1104(3)は、書換え制限ありと判定したあと、属性情報部ATBに、対策済み有償ソフトウェアであることを示す情報が格納されているか否かを判定する。対策済み有償ソフトウェアであることを示す情報が、格納されていると判定した場合、ライセンス管理ユニット1104(3)は、次にステップS42を実行するようにする。これにより、量産用マイクロプロセッサであっても、対策済み有償ソフトウェアについては、開発用マイクロプロセッサと同様に、有償ソフトウェアインストール可能数を減らすことなく、対策済み有償ソフトウェアを再インストールすることが可能となる。見方を変えると、有償ソフトウェアインストール可能数が、規定数未満となっていても、量産用マイクロプロセッサおよび開発用マイクロプロセッサの両方が、対策済み有償ソフトウェアを、再インストールすることが可能となる。
ライセンス管理ユニット1104は、属性情報部ATBに、対策済み有償ソフトウェアであることを示す情報が、格納されていると判定した場合、上記した書換え制限情報を、強制的に、書換え制限フリーを示すように、変更するようにしてもよい。
この変形例によれば、有償ソフトウェアインストール可能数に依存せずに、対策済み有償ソフトウェアをインストールすることが可能となる。すなわち、ユーザに負担を掛けずに、有償ソフトウェアをアップデートすることが可能となる。
(実施の形態4)
実施の形態3において、量産用マイクロプロセッサと開発用マイクロプロセッサを説明した。実施の形態3で説明したように、開発用マイクロプロセッサは、量産用マイクロプロセッサに比べて、開発用の機能が付加されている場合が多い。そのため、ライセンス料金を除いたハードウェア価格において、開発用マイクロプロセッサの方が、量産用マイクロプロセッサに比べて高価になる。見方を変えると、開発用の機能を削減することにより、量産用マイクロプロセッサのハードウェア価格は、低くなるようにされている。
開発用マイクロプロセッサは、量産用マイクロプロセッサに比べると高価になるため、開発用マイクロプロセッサを量産段階で用いることは考え難いが、用いることも可能である。開発用マイクロプロセッサを量産段階で用いた場合、有償ソフトウェアを許諾なしで、コピーすることが可能である。コピーした場合に発生する被害を低減するために、この実施の形態4においては、有償ソフトウェアの起動回数に制限が設定される。
有償ソフトウェアの起動回数を制限するか、起動回数を自由(フリー)にするかを定める方法は、実施の形態3において説明した方法(1)〜(6)のいずれかを用いる。すなわち、実施の形態3で説明した書換え制限情報が、起動回数制限情報として用いられる。このようにすることにより、マイクロプロセッサを、販売者(製造者)が提供したあとは、起動回数制限情報を変更することが困難となり、起動回数制限を有するマイクロプロセッサまたは起動回数フリーのマイクロプロセッサとして提供されることになる。
図10は、実施の形態4に係わるマイクロプロセッサ1100の動作を示すフローチャート図である。実施の形態4に係わるマイクロプロセッサ1100の構成は、図2に示したマイクロプロセッサの構成に、有償ソフトウェアの起動回数を記憶する起動回数記憶ユニット(図示せず)と、有償ソフトウェアの実行済みを示す実行済フラグflag(ビット)と、有償ソフトウェアの実行回数を設定する実行回数ユニットとが追加される。ここで、起動回数記憶ユニットは、リセットされても値を保持するように構成されており、実行済フラグflagは、リセットされると、リセットの解除の際に、未実行(false)に設定される。また、実行回数ユニットには、予め、起動を許可する回数が、設定される。例えば、販売者(製造者)が、所定の実行回数nを、実行回数ユニットに設定して、ユーザへ提供する。
図10では、マイクロプロセッサ1100は、MCUとして示されている。ステップS50において、例えば、リセット(reset)が解除されることによって、マイクロプロセッサMCUが起動する。このとき、実行済フラグFlagは、未実行(false)に設定されている。
ステップS51において、マイクロプロセッサMCU内の実行ユニット1101は、マイクロプロセッサMCUを備えた電子装置が所定の機能を達成するように、所定のソフトウェアを実行する。この所定のソフトウェアが、有償ソフトウェア(SW)あるいは有償ソフトウェア(SW)を呼び出すソフトウェアであるとする。図10は、上記した所定のソフトウェアが、有償ソフトウェア(SW)を呼び出す場合を示している。図10のステップS51には、有償ソフトウェア(SW)を呼び出す命令として、命令(jump、call、etc)が例示されている。
ライセンス管理ユニット1104は、ステップS52において、マイクロプロセッサMCUによって実行されるソフトウェアが、有償ソフトウェア(起動に回数の制限を設けたソフトウェア)であるか否かを判定する。これは、例えばソフトウェア記憶ユニット1102の特定の領域におけるソフトウェアが読み出された場合、ライセンス管理ユニット1102は、有償ソフトウェアが実行されるものとして判定する。ステップS52において、有償ソフトウェアでは無いと判定した場合(No)、ライセンス管理ユニット1104は、ステップS56を実行し、有償ソフトウェアであると判定した場合(Yes)、ステップS53を実行する。図10では、ステップS52は、「起動回数制限ありSWか」と記載されている。
ステップS53において、ライセンス管理ユニット1104は、実行済フラグflagが、実行済み(ture)か否かを判定する。すなわち、ステップS53において、有償ソフトウェアが、既に実行済みか否かを判定している。既に実行済みの場合(Yes)、ライセンス管理ユニット1104は、次にステップS56を実行し、実行済みでない場合(No)、ステップS54を実行する。
ステップS54において、ライセンス管理ユニット1104は、起動回数記憶ユニットに格納されている起動回数が、実行回数ユニットに格納されている実行回数nを超えているか否かを判定する。ここでは、実行回数ユニットには、予め制限する実行回数として、nが設定されているものとする。起動回数記憶ユニットに格納されている起動回数が、実行回数nを超えていた場合(No)、ライセンス管理ユニット1104は、次にステップS57を実行し、起動回数が、実行回数nを超えていない場合(Yes)、次にステップS55を実行する。
ステップS55において、ライセンス管理ユニット1104は、起動回数を増加させる。例えば、1インクリメントし、起動回数記憶ユニットに格納する。例えば、起動回数記憶ユニットに格納されている起動回数が1から2へ更新される。また、ステップS55において、実行済フラグflagを実行済み(true)に設定する。その後、ステップS56において、ライセンス管理ユニット1104は、マイクロプロセッサMCU内の実行ユニット1101が、ステップS51において呼び出した有償ソフトウェアを実行するのを許可する。その後、再び、ステップS51へ戻り、有償ソフトウェアが呼び出された場合、ステップS52〜S53を実行する。この場合、最初(1回目)に、有償ソフトウェアを実行したとき、ステップS55において、実行済フラグflagが、未実行(false)から実行済み(true)へ変更されているため、ライセンス管理ユニット1104は、ステップS53のあと、ステップS56を実行する。その結果、ステップS50において、マイクロプロセッサMUCを起動した後は、同一の有償ソフトウェアを繰り返し、起動しても、起動回数記憶ユニットに格納されている起動回数は増加せず、ステップS57は実行されない。
その後、リセットが行われ、そのリセットが解除されることにより、マイクロプロセッサMCUが、再び、ステップS50を実行すると、ステップS50において、実行済フラグflagは、未実行(false)となる。そのため、ステップS55において、ライセンス管理ユニット1104は、起動回数記憶ユニットに格納されている起動回数をインクリメントする。すなわち、起動回数記憶ユニットに格納されている起動回数が、2から3へ更新される。以降、ステップS51、S52、S53およびS56が実行される。その結果、この場合にも、有償ソフトウェアが、マイクロプロセッサMCUにおいて、実行されることになる。
さらに、リセットが行われ、そのリセットが解除されると、マイクロプロセッサMCUが、再び、ステップS50を実行する。ステップS50において、実行済フラグflagは、未実行(false)とされ、ステップS54において、起動回数記憶ユニットに格納されている起動回数と、実行回数nとの比較が行われる。ここで、例えば、実行回数nが、2であった場合、前回、ステップS50において、マイクロプロセッサMCUを起動したとき、起動回数記憶ユニットには、起動回数として3が格納されている。そのため、ステップS54において、起動回数(3)が、実行回数n(2)を超えているため、ライセンス管理ユニット1104は、ステップS57を実行することになる。
ステップS57において、ライセンス管理ユニット1104は、実行ユニット1101が、ソフトウェア記憶ユニット1102からのソフトウェアを実行するのを禁止する。これにより、マクロプロセッサMCUが、同一の有償ソフトウェアを、実行回数nを超えて、実行することが禁止され、当該有償ソフトウェアは起動しないようにされる。なお、ステップS57において、ライセンス管理ユニット1104は、例えば、エラーが発生したことを、実行ユニット1101に通知する。
このようにして、起動回数に制限があるソフトウェア、例えば有償ソフトウェアについては、ステップS50において起動する毎に、起動回数記憶ユニットに格納されている起動回数が、インクリメントされ、起動回数が、予め設定した実行回数を超えると、そのソフトウェアの実行が禁止される。言い換えるならば、リセットをせずに、電子装置あるいはマイクロプロセッサMCUを継続的に動作させているときは、起動回数に制限のあるソフトウェアは、継続して実行される。これに対して、電子装置あるいはマイクロプロセッサMCUに対して、リセット等の起動が掛けられると、起動回数がカウントされ、所定の回数(実行回数)に到達すると、電子装置あるいはマイクロプロセッサがソフトウェアを起動するのが停止されることになる。
この実施の形態4に係わるマイクロプロセッサは、開発用マイクロプロセッサとして用いられる。これにより、開発用マイクロプロセッサを量産用マイクロプロセッサとして用いるようにした場合、許諾されていないソフトウェア(コピー等によって複製された有償ソフトウェア)が、実行回数を超えて、起動されるのを防ぐことが可能となり、被害の低減を図ることが可能となる。
マイクロプロセッサMCU(1100)を例にして説明したが、これに限定されるものではない。マイクロプロセッサMCUの代わりに、パーソナルコンピューターあるいはスマートフォンのような携帯端末を用いてもよい。また、フラッシュライタ1105の代わりに、光デイスク再生装置あるいは通信回線を介して有償ソフトウェアを提供するソフトウェア記憶装置を用いてもよい。さらに、ソフトウェア記憶ユニット1102は、ハードディスクあるいはメモリカードを用いるようにしてもよい。このように、マイクロプロセッサ、フラッシュライタおよびソフトウェア記憶ユニットを変更しても、同様の効果が得られるものである。
<変形例>
実施の形態3と実施の形態4とを組み合わせる。図11は、実施の形態3と実施の形態4とを組み合わせたときの状態を示す説明図である。
上記した書換え制御情報によって、開発用マイクロプロセッサは、実施の形態3で述べた書換えフリーの状態にされ、実施の形態4で述べた起動回数制限を有するような状態に設定される。これに対して、量産用マイクロプロセッサは、書換え制御情報によって、実施の形態3で述べた書換え制限を有する状態にされ、実施の形態4で述べた起動回数フリーの状態に設定される。起動回数制限が、開発用マイクロプロセッサに設定されていても、書換えフリーとなっているため、開発段階であれば、書換えることにより、有償ソフトウェアを再インストールすることが可能である。そのため、ユーザが、製品開発段階で、開発用プロセッサを用いる際に、不自由を掛けることなく、開発用マイクロプロセッサが、量産段階で用いられるのを防ぐことが可能となる。
(実施の形態5)
図12は、実施の形態5に係わる半導体装置の構成を示すブロック図である。ここでは、半導体装置として、マイクロプロセッサを例として説明する。図12において、1400は、マイクロプロセッサを示している。マイクロプロセッサ1400は、ソフトウェアを実行する実行ユニット1401、実行ユニット1401に結合され、ソフトウェアを格納するソフトウェア記憶ユニット1402およびライセンス管理ユニット1403を備えている。実施の形態1で述べたのと同様に、マイクロプロセッサは、上記した実行ユニット1401、ソフトウェア記憶ユニット1402およびライセンス管理ユニット1403以外に、周辺回路ユニット等を備えているが、図12においても省略されている。また、実施の形態1と同様に、各ユニットは、1個の半導体チップに周知の半導体製造技術によって形成され、特に制限されないが、1個のパッケージに封止されている。販売者(製造者)は、半導体チップまたは半導体チップを封止したパッケージの状態で、マイクロプロセッサをユーザに提供する。
この実施の形態5において、ソフトウェア記憶ユニット1402は、電気的に書換え可能な不揮発性メモリ(フラッシュメモリ)によって構成されている。図12において、1105は、図2で説明したフラッシュライタであり、ソフトウェアをマイクロプロセッサ1400へ提供する。
実行ユニット1401は、ソフトウェア記憶ユニット1402からソフトウェアを読み出し、実行する。ソフトウェア記憶ユニット1402は、ライセンス管理ユニット1403を介して、フラッシュライタ1105からソフトウェアが提供され、書き込まれる(格納される)。
ライセンス管理ユニット1403は、ソフトウェア記憶ユニット1402が有する領域(アドレス空間)を、複数の領域として管理する。ここでは、2個の領域として管理する例を説明する。すなわち、ソフトウェア記憶ユニット1402の領域を、有償ソフトウェアが格納されるダウンロード領域(以下、DLアプリ領域とも称する)と、それ以外の領域(以下、ユーザ領域とも称する)に分けて、管理する。図13は、ソフトウェア記憶ユニット1402のアドレス空間を示す説明図である。図13において、ARは、ソフトウェア記憶ユニット1402の領域(アドレス空間)を示しており、UARは、ユーザ領域を示しており、DRAは、DLアプリ領域を示している。
特定の有償ソフトウェアは、DLアプリ領域DRAにのみインストールすることが可能とされ、ユーザ領域UARへのインストールは許可されない。また、ユーザが別途購入したソフトウェア、無償ソフトウェアおよび/またはユーザが作成したソフトウェアは、DLアプリ領域およびユーザ領域のいずれにもインストール可能にされる。言い換えるならば、特定の有償ソフトウェアは、DLアプリ領域DRAにのみ格納することが許可され、ユーザ領域UARへの格納は許可されない。
ソフトウェア記憶ユニット1402のどの領域を、DLアプリ領域DARとし、どの領域を、ユーザ領域UARとするかは、ライセンス管理ユニット1403が記憶している。すなわち、ライセンス管理ユニット1403に記憶されている設定情報に従って、DLアプリ領域DARとユーザ領域UARが定められる。ライセンス管理ユニット1403へのDLアプリ領域およびユーザ領域の設定は、マイクロプロセッサ1400を販売者(製造者)が、ユーザへ提供する際に行う。販売者(製造者)が提供した後は、DLアプリ領域およびユーザ領域の設定を変更することが困難となるようにする。例えば、実施の形態1で述べた方法(1)〜(6)のいずれかの方法で、設定することが可能である。
DLアプリ領域DARおよびユーザ領域UARを定める設定情報は、ライセンス情報と見なすことができる。そのため、図12に示したライセンス管理ユニット1403が、ライセンス情報を格納したライセンス記憶ユニットを備えていると見なすことができる。
なお、方法(2)を採用する場合、上記した特定のコードは、ユーザへ提供されないが、販売者(製造者)は保持している。そのため、例えば、DLアプリ領域DARとユーザ領域UARとの記憶容量比率を変更することを、ユーザが希望した場合、あるいはユーザに提供したあと、返品され、返品されたマイクロプロセッサを別のユーザに提供する場合、販売者(製造者)が、特定のコードを用いて、記憶容量比率を変更して、提供することが可能である。
図14は、販売者(製造者)が、ユーザに提供するマイクロプロセッサ1400の記憶容量比率を示した説明図である。図14において、1400−1〜1400−4のそれぞれは、マイクロプロセッサを示している。マイクロプロセッサ1400−1〜1400−4のそれぞれの構成は、図12に示したマイクロプロセッサ1400と同じ構成を有しており、ソフトウェア記憶ユニット1402における記憶容量比率のみが異なっている。
すなわち、マイクロプロセッサ1400−1においては、ソフトウェア記憶ユニット1402における領域ARが、DLアプリ領域DARとして1Mバイト(1MB)に割り当てられ、ユーザ領域UARとして7Mバイトに割り当てられている。マイクロプロセッサ1400−2においては、ソフトウェア記憶ユニット1402における領域ARが、DLアプリ領域DARとして2Mバイト(2MB)に割り当てられ、ユーザ領域UARとして6Mバイトに割り当てられている。また、マイクロプロセッサ1400−3においては、ソフトウェア記憶ユニット1402における領域ARが、DLアプリ領域DARとして4Mバイト(4MB)に割り当てられ、ユーザ領域UARとして4Mバイトに割り当てられている。同様に、マイクロプロセッサ1400−4においては、ソフトウェア記憶ユニット1402における領域ARの全ての領域が、DLアプ領域DAR(8Mバイト)に割り当てられている。
このように、割り当てる領域の容量比率を、変更することにより、同じ構成を有したマイクロプロセッサを多種類提供することが、容易に可能となる。この場合、DLアプリ領域DARの容量(記憶容量)が、大きい程、多くの有償ソフトウェアを記憶(格納)あるいはより大きなサイズの有償ソフトウェアを記憶することが可能となる。すなわち、DLアプリ領域DARが大きい程、高いライセンス料金が、マイクロプロセッサ1400の価格(ハードウェア価格)に付加されて、マイクロプロセッサの価格となる。その結果、図14に示すように、マイクロプロセッサ1400−1から1400−4へ向けて、マイクロプロセッサの販売価格が高額になる。この場合、ユーザは、インストールする有償ソフトウェアの種類、サイズ等を考量して、マイクロプロセッサ1400−1〜1400−4から、任意のマイクロプロセッサを選択し、購入することになる。
<ライセンス管理ユニット1402>
次に、ライセンス管理ユニット1402の動作を、説明する。ここでは、ライセンス管理ユニット1402の機能が、実行ユニット1401とは異なる実行ユニット(図示せず)と、図示しない実行ユニットにより実施されるソフトウェアによって達成する場合を説明する。
図15は、ライセンス管理ユニット1402の動作を示すフローチャート図である。図15において、ステップS60で、ダウンロードするソフトウェアの指定と、ソフトウェアのダウンロードが指示される。これにより、フラッシュライタ1105から、指定されたソフトウェアが、マイクロプロセッサ1400へ提供される。図15では、ステップS60は、ダウンロード開始として示されている。
ライセンス管理ユニット1403は、ステップS61において、提供されたソフトウェアが、特定の有償ソフトウェアであるか否かを判定する。すなわち、ダウンロードするソフトウェアが、DLアプリ領域DARに格納される特定の有償ソフトウェア(以下、特定のDLアプリとも称する)であるかを判定する。判定の結果、特定のDLアプリではないと判定した場合(No)、ライセンス管理ユニット1403は、ステップS64を実行する。この場合、ステップS64において、ライセンス管理ユニット1403は、提供されているソフトウェアを、ソフトウェア記憶ユニット1402内のユーザ領域UARへ書き込む(格納する)。ユーザ領域UARへ格納することにより、実行ユニット1401が、実行可能となるため、ステップS64においてダウンロードが開始されたことになる。
これに対して、ステップS61において、ライセンス管理ユニット1401が、特定のDLアプリであると判定した場合、次にステップS62が、ライセンス管理ユニット1401によって実行される。ステップS62において、ライセンス管理ユニット1403は、フラッシュライタ1105から提供された特定のDLアプリが、DLアプリ領域DARにダウンロード可能かを判定する。ライセンス管理ユニット1403は、例えば、DLアプリ領域DARに、既に別のDLアプリが格納されており、提供された特定のDLアプリを格納する領域の記憶容量が不足している場合には、ダウンロード不可能と判定する(No)。この場合、ライセンス管理ユニット1403は、次にステップS63を実施する。これに対して、ダウンロード可能と判定した場合(Yes)、ライセンス管理ユニット1403は、ステップS64を実施する。
ステップS62に続いて、ステップS64を実施する場合、ライセンス管理ユニット1403は、ユーザ領域UARではなく、DLアプリ領域DARへ提供されたソフトウェア(特定のDLアプリ)を書き込む(格納する)。すなわち、ステップS64において、DLアプリ領域DARへ、特定のDLアプリのダウンロードが開始する。
一方、ステップS62において、ダウンロード不可能と判定した場合(No)、ステップS63において、ライセンス管理ユニット1403は、ダウンロード失敗として、ソフトウェア記憶ユニット1402へのソフトウェアの書き込みを実施しない。また、エラーが発生したことを、実行ユニット1401へ通知する。
このように、ライセンス管理ユニット1403によって、ダウンロードするソフトウェアの判定とソフトウェア記憶ユニット1402への書き込みを、ダウンロードするソフトウェア毎に実施することにより、DLアプリ領域DARには、特定の有償ソフトウェア(DLアプリ)が格納され、実行ユニット1401によって実行可能にされる。
<ハードウェアによる制御>
図15では、ソフトウェアによって、ソフトウェア記憶ユニット1402を制御する例を説明したが、ソフトウェア記憶ユニット1402の制御は、ハードウェアで実現してもよい。すなわち、論理回路等のハードウェアを用いて、ソフトウェア記憶ユニット1402を制御するようにしてもよい。図16は、ソフトウェア記憶ユニット1402をハードウェアによって制御する場合の構成を示すブロック図である。
図16には、ソフトウェア記憶ユニット1402に関連する部分の構成のみが示されている。図16において、1500は、フラッシュメモリを示している。図16においては、フラッシュメモリ1500が、ソフトウェア記憶ユニット1402において、ソフトウェアを格納する部分に該当する。フラッシュメモリ1500は、アドレス端子、ライト端子、リード端子およびデータ端子を備えている。図16には、これらの端子のうち、アドレス端子ADTとライト端子WTのみが示されており、リード端子およびデータ端子は省略されている。フラッシュメモリ1500においては、アドレス端子ADTにアドレス信号が供給され、ライト端子WTにハイレベルのライト信号が供給されることにより、アドレス端子ADTに供給されているアドレス信号によって指定されている領域に、データ端子からのデータが、電気的に書き込まれ、格納される。
ライセンス管理ユニット1402は、DLアプリ領域DARとして割り当てられたアドレスの範囲を指定するDL領域指定信号DLDと、ダウンロードするソフトウェアが、特定のDLアプリであるか否かを示すDLアプリ検出信号DLTを形成する。DL領域指定信号DLDは、先に説明した方法(1)〜(6)によって設定された情報に基づいて、形成される。また、このDL領域指定信号DLDによって、指定される領域が、図14に示したように、マイクロプロセッサ1400−1〜1400−4によって異なっている。DLアプリ検出信号DLTは、例えば図23に示した属性情報部ATBに格納されている情報によって、特定のDLアプリであることが示されていた場合、ライセンス管理ユニット1403が形成する。ライセンス管理ユニット1402が形成するDL領域指定信号DLDは、マイクロプロセッサの価格によって変わるため、ライセンス情報と見なすことができる。
図16の例では、アドレス信号ADおよびライト信号WEは、実行ユニット1401が形成する。すなわち、フラッシュメモリ1500に対して、ソフトウェアを書き込む領域を示すアドレス信号ADは、実行ユニット1401から出力され、書き込みを指示するライト信号WEも、実行ユニット1401から出力される。勿論、アドレス信号ADおよびライト信号WEも、ライセンス管理ユニット1403から出力されるようにしてもよい。
図16において、1501は、比較回路である。比較回路1501は、アドレス信号ADとDL指定領域信号DLDとを比較する。DL指定領域信号DLDによって示されているアドレスの範囲内を、アドレス信号ADが示しているとき、比較回路1501は、ハイレベルを出力する。一方、DL指定領域信号DLDによって示されているアドレスの範囲外を、アドレス信号ADが示しているとき、比較回路1501は、ロウレベルを出力する。ライセンス管理ユニット1403は、フラッシュライタ1105から特定のDLアプリが提供されたとき、DLアプリ検出信号DLTをハイレベルにし、特定のDLアプリでない場合には、DLアプリ検出信号DLTをロウレベルにする。また、ライト信号WEは、書き込みを行う場合、ハイレベルとなる。
比較回路1501の出力は、位相反転してアンド回路1502の一方の端子に供給され、アンド回路1502の他方の端子には、DLアプリ検出信号DLTが供給される。アンド回路1502の出力は、位相反転され、アンド回路1503の一方の入力に供給され、アンド回路1503の他方の入力には、ライト信号WEが供給される。ここで、アンド回路1502の出力は、エラー信号として実行ユニット1401へ供給される。また、フラッシュメモリ1500のアドレス端子ADTには、アドレス信号ADが供給され、ライト端子WTには、アンド回路1503の出力が供給される。
特定のDLアプリが、フラッシュライタ1105から提供されると、そのDLアプリを書き込むアドレスが、アドレス信号ADとして供給される。このとき、特定のDLアプリであるため、ライセンス管理ユニット1403は、ハイレベルのDLアプリ検出信号DLTを出力する。このときのアドレス信号ADが、DL指定領域信号DLDによって示されているアドレスの範囲内であれば、比較回路1501の出力信号はハイレベルとなる。アンド回路1502には、比較回路1501の出力信号が位相反転して、ロウレベルが供給されるため、アンド回路1502の出力信号はロウレベルとなる。そのため、エラー信号も、ロウレベルとなる。図16の例では、エラー信号がハイレベルのとき、エラーであると判定される。そのため、この状態では、実行ユニット1401は、エラーとして認識しない。
アンド回路1502の出力信号がロウレベルとなることにより、アンド回路1503には、位相反転されたアンド回路1502の出力信号であるハイレベルと、書き込みを指示するハイレベルのライト信号WEが供給される。これにより、アンド回路1503は、ハイレベルの信号を、フラッシュメモリ1500のライト端子WTに供給する。その結果、フラッシュメモリ1500には、アドレス端子ADTに供給されているアドレス信号ADによって指定される領域に、書き込みが行われることになる。
これに対して、ライセンス管理ユニット1403が、特定のDLアプリであることを示すハイレベルのDLアプリ検出信号DLTを出力しているときに、アドレス信号ADが、DL指定領域信号DLDによって示されているアドレスの範囲外を指定していた場合には、アンド回路1502の出力信号はハイレベルとなる。すなわち、エラー信号がハイレベルとなり、実行ユニット1401は、エラーが発生したことを認識する。また、アンド回路1502の出力信号がハイレベルとなることによって、アンド回路1503の出力信号はロウレベルとなる。その結果、フラッシュメモリ1500のライト端子WTにはロウレベルが供給され、書き込みが禁止される。
このようにして、特定のDLアプリをダウンロードするとき、特定のDLアプリのアドレスが、DL指定領域信号DLDによって示されているアドレスの範囲内にあり、特定のDLアプリであると判定された場合に、特定のDLアプリは、フラッシュメモリ1500内のDLアプリ領域DARに書き込まれることになる。これに対して、特定のDLアプリのアドレスが、DL指定領域信号DLDによって示されているアドレスの範囲の外を示している場合には、特定のDLアプリは、フラッシュメモリ1500に書き込まれず、エラーを示すエラー信号が発生する。
図17は、ソフトウェア記憶ユニット1402をハードウェアによって制御する場合の他の構成を示すブロック図である。図16と同様に、図17には、上記したソフトウェア記憶ユニット1402に関連する部分のみが示されている。図17において、1604は、フラッシュメモリを示しており、1600は、ライトバッファを示している。図17に示した例においても、ソフトウェア記憶ユニット1402において、ソフトウェアを格納する部分が、フラッシュメモリ1604に該当する。フラッシュメモリ1604は、書き込み速度が比較的遅い。そのため、図17では、ライトバッファ1600が設けられている。
ライトバッファ1600は、例えばスタテック型メモリによって構成され、フラッシュメモリ1600に比べて高速に動作する。ライトバッファ1600は、アドレス端子、バリッドフラグ端子、データ端子を備えている。図17には、アドレス端子およびバリッドフラグ端子が、ADTおよびV−Fとして示されており、データ端子は省略されている。提供されたソフトウェアは、フラッシュメモリ1604ではなく、ライトバッファ1600へ先ず書き込まれる。ライトバッファ1600は、領域に対応したバリッドビットを備えており、バリッドビットは、対応する領域に書き込まれたデータが有効データであるか否かによって設定される。例えば、対応する領域に書き込まれたデータが有効データであった場合、バリッドビットはハイレベルに設定され、無効データであった場合には、ロウレベルに設定される。
バリッドビットが有効データであることを示している場合(ハイレベル)、ライトバッファ1600は、適切なタイミングで、バリッドビットに対応する領域に書き込まれているデータを、フラッシュメモリ1604へ転送し、フラッシュメモリ1604へ書き込み、格納する。ライトバッファ1600が、比較的高速に動作するため、書き込みの高速化を図ることが可能となる。なお、バリッドビットが無効データであることを示している場合(ロウレベル)、このバリッドビットに対応する領域に格納されているデータは、フラッシュメモリ1604へ転送されず、フラッシュメモリ1604への書き込みは実施されない。
図16に示した例と同様に、図17に示した例においても、ライセンス管理ユニット1403から、DL領域指定信号DLDおよびDLアプリ検出信号DLTが出力される。また、実行ユニット1401からアドレス信号ADが出力される。図17において、1601は、比較回路であり、比較回路1601は、アドレス信号ADとDL領域指定信号DLDとを比較する。比較回路1601は、アドレス信号ADが、DL領域指定信号DLDによって指定されている領域内を指定しているとき、出力信号をハイレベルにし、DL領域指定信号DLDによって指定されている領域外を指定しているとき、出力信号をロウレベルにする。
比較回路1601の出力信号は、位相反転され、アンド回路1602の一方の入力に供給され、アンド回路1602の他方の入力には、DLアプリ検出信号DLTが供給される。アンド回路1602の出力信号は、ナンド回路1603の一方の入力に供給されるとともに、エラー信号として、実行ユニット1401へ供給される。ナンド回路1603の他方の入力には、ライトバッファ1600からバリッドビットの状態を示すバリッドフラグVFGが位相反転されて、供給されている。このナンド回路1603の出力信号は、ライトバッファ1600のバリッドフラグ端子V−Fに供給される。
フラッシュライタ1105から、特定のDLアプリが提供されると、ライセンス管理ユニット1403は、DLアプリ検出信号DLTをハイレベルにする。このとき、アドレス信号ADは、DLアプリが格納されるフラッシュメモリ1604の領域を指定するアドレス信号である。アドレス信号ADによって指定されている領域が、DL領域指定信号DLDによって指定されている範囲内であれば、比較回路1601の出力信号がハイレベルとなる。比較回路1601からのハイレベルの出力信号は、位相反転されて、アンド回路1602へ供給されるため、アンド回路1602の出力信号は、ロウレベルとなる。その結果、エラー信号は、エラーが発生していないことを示すロウレベルとなり、実行ユニット1401へエラーが発生していないことが通知される。
このとき、アドレス信号ADTによって指定されているライトバッファ1600の領域に有効なデータが格納されていなければ、ライトバッファ1600は、ロウレベルのバリッドフラグVFGを出力する。これにより、ナンド回路1603には、アンド回路1602からのロウレベルの出力信号と、位相反転により形成されたハイレベルのバリッドフラグVFGが供給されることになり、ナンド回路1603は、ハイレベルの信号をバリッドフラグ端子V−Fへ供給する。その結果、このときのアドレス信号ADTによって指定されているライトバッファ1600内の領域に、DLアプリであるソフトウェアが格納されるとともに、アドレス信号ADTによって指定されている領域に対応するバリッドビットに、有効データであることを示すハイレベルが格納される。バリッドビットが、ハイレベルに設定されることにより、格納したDLアプリは、適切なタイミングで、フラッシュメモリ1604へ転送され、格納される。
これに対して、例えば、アドレス信号ADによって指定されている領域が、DL領域指定信号DLDによって指定されている領域外の場合、比較回路1601の出力信号はロウレベルとなる。このとき、DLアプリ検出信号DLTがハイレベルとなると、アンド回路1602の出力信号は、ハイレベルとなる。これにより、ハイレベルのエラー信号が、実行ユニット1401に供給され、実行ユニット1401は、エラーが発生したことを認識することができる。ナンド回路1603には、アンド回路1602からハイレベルの出力信号と、位相反転により形成されたハイレベルのバリッドフラグVFGが供給されるため、ナンド回路1603の出力信号は、ロウレベルとなる。その結果、このとき、アドレス信号ADによって指定されている領域に対応するバリッドフラグは、ロウレベルに設定されることになる。バリッドフラグがロウレベルに設定されることにより、このときのアドレス信号ADによって指定された領域に格納されたデータは、フラッシュメモリ1604へ転送されず、フラッシュメモリ1604へは書き込まれない。
このようにして、特定のDLアプリをダウンロードするとき、特定のDLアプリのアドレスが、DL指定領域信号DLDによって示されているアドレスの範囲内にあり、特定のDLアプリであると判定された場合に、バリッドビットが有効データとして設定される。有効データとして設定された領域に書き込まれたDLアプリが、フラッシュメモリ1604のDLアプリ領域DARに書き込まれることになる。ライトバッファ1600を用いることにより、書き込みの高速化を図ることが可能となる。これに対して、特定のDLアプリのアドレスが、DL指定領域信号DLDによって示されているアドレスの範囲の外を示している場合には、特定のDLアプリは、フラッシュメモリ1604に書き込まれず、エラーを示すエラー信号が発生する。
半導体装置としてマイクロプロセッサ1401を例にして説明したが、半導体装置は、これに限定されるものではない。
さらに、マイクロプロセッサ1401の代わりに、パーソナルコンピューターあるいはスマートフォンのような携帯端末を用いてもよい。また、フラッシュライタ1105の代わりに、光デイスク再生装置あるいは通信回線を介して有償ソフトウェアを提供するソフトウェア記憶装置を用いてもよい。また、ソフトウェア記憶ユニット1402は、ハードディスクあるいはメモリカードを用いるようにしてもよい。このように、マイクロプロセッサ、フラッシュライタおよびソフトウェア記憶ユニットを変更しても、同様の効果が得られるものである。
<変形例>
実施の形態5は、例えば実施の形態1または実施の形態2と組み合わせてもよい。すなわち、図2に示したライセンス記憶ユニット1103(図6に示したライセンス記憶部1305)を、実施の形態5で説明した構成に追加する。この場合、ライセンス管理ユニット1403によって、ライセンス記憶ユニット1103に格納されているライセンス情報の更新を実施するとともに、ライセンス情報によって示されている有償ソフトウェアインストール可能数の確認も実施する。
その結果、インストール可能数とDLアプリ領域DARの記憶容量の両方によって、ソフトウェア記憶ユニット1402内のDLアプリ領域DARへのソフトウェアの格納が制御されることになる。この場合、ライセンス記憶ユニット1303に格納されているライセンス情報が、例えば不正に変更されたとしても、DLアプリ領域DARの記憶容量が、制限されているため、被害の低減を図ることが可能である。
(実施の形態6)
この実施の形態6においては、実施の形態1〜5と異なり、ライセンス管理ユニットによって、実行ユニットによる有償ソフトウェアの実行が制御される。
実施の形態6に係わるマイクロプロセッサの構成は、実施の形態5で説明したマイクロプロセッサの構成と類似している。主に異なる部分は、ライセンス管理ユニットである。図12を参照にして説明すると、実施の形態6に係わるマイクロプロセッサ1400は、実行ユニット1401と、ソフトウェア記憶ユニット1402およびライセンス管理ユニット1403を備えている。実施の形態5と同様に、この実施の形態に係わるマイクロプロセッサ1400は、上記したユニット以外に複数のユニットを備えているが、ここでも省略する。
また、この実施の形態6においても、実施の形態5と同様に、ソフトウェア記憶ユニット1402の領域(アドレス空間)ARは、図13に示すように、ユーザ領域UARとDLアプリ領域DARに分けられており、図14に示したように、ユーザ領域UARとDLアプリ領域DARとの記憶容量比率が、互いに異なるマイクロプロセッサが、販売者(製造者)から提供される。ユーザ領域UARおよびDLアプリ領域DARの容量比率は、実施の形態5と同様に、実施の形態1で説明した方法(1)〜(6)によって定める。
次に、実施の形態6に係わるライセンス管理ユニット1403の動作を、図18を用いて説明する。図18は、この実施の形態に係わるライセンス管理ユニット1403の動作を示すフローチャート図である。
ステップS70において、実行ユニット1401が、ソフトウェア記憶ユニット1402からソフトウェアSWを読み込む(呼び出す)。例えば、所定のソフトウェアを、実行ユニット1401が実行する過程において、呼び出しに関する命令(例えば、ジャンプ命令jump、コール命令call等)によって、ソフトウェア(SW)を呼び出す。
ライセンス管理ユニット1403は、実行ユニット1401によって呼び出されたソフトウェア(対象SW)が、DLアプリ(有償ソフトウェア)か否かを、ステップS71において判定する。DLアプリか否かの判定は、例えば、次のように実施する。すなわち、このDLアプリを、ソフトウェア記憶ユニット1402へ格納するとき、このソフトウェアの属性情報部ATBに格納されている情報、例えばユニーク番号IDを、ライセンス管理ユニット1403に格納しておく。このとき、このソフトウェアのアドレス、例えば開始アドレスを、ユニーク番号IDと対応するように、ライセンス管理ユニット1403に格納しておく。ステップS71において、ライセンス管理ユニット1403は、呼び出しに関する命令から、ソフトウェアの開始アドレスを取得し、取得した開始アドレスを基にして、ライセンス管理ユニット1403に格納されている開始アドレスを検索する。検索によって一致した開始アドレスに対応したユニーク番号IDが見つかれば、DLアプリ(有償ソフトウェア)であると判定し、見つからなければ、DLアプリではないと判定する。
ステップS71において、ソフトウェアが、DLアプリであると判定した場合(Yes)、ライセンス管理ユニット1403は、次にステップS72を実行する。これに対して、ステップS71において、ソフトウェアが、DLアプリでないと判定した場合(No)、ライセンス管理ユニット1403は、次にステップS74を実行する。
ステップS72において、実行ユニット1401がDLアプリを実行するときのアドレス(実行アドレス)が、DLアプリ領域DRA内か否かを、ライセンス管理ユニット1403が判定する。ここで、DLアプリ領域DRAの範囲は、図14に示したように、マイクロプロセッサの種類(1400−1〜1400−4)によって、異なっている。ステップS72において、実行アドレスが、DLアプリ領域DRA内と判定した場合(Yes)、ライセンス管理ユニット1403は、次にステップS74を実行する。これに対して、ステップS72において、実行アドレスは、DLアプリ領域DRAの外であると判定した場合(No)、ライセンス管理ユニット1403は、次にステップS73を実行する。
ステップS73において、ライセンス管理ユニット1403は、実行ユニット1401が、当該ソフトウェアを実行するのを禁止する。また、ステップS73において、ライセンス管理ユニット1403は、実行ユニット1401に対してエラーを通知する。
ステップS74においては、ライセンス管理ユニット1403は、実行ユニット1401が、当該ソフトウェアの呼び出しおよび実行を許可する。これにより、実行ユニット1401は、所定のソフトウェアを実行することが可能となる。
ステップS70において、呼び出されたソフトウェアが、DLアプリであった場合、ステップS72が実行される。ステップS72において、DLアプリの実行アドレスが、DLアプリ領域内であれば、ステップS74において、実行ユニット1401がDLアプリを実行することが許可される。これに対して、DLアプリの実行アドレスが、DLアプリ領域の外であれば、ステップS73が実行される。この場合には、実行ユニット1401によってDLアプリを実行することが禁止されることになる。また、DLアプリでなければ、ステップS74において、実行ユニット1401による実行が許可されることになる。
このようにして、ライセンス管理ユニット1403によって、実行ユニット1401によるDLアプリ(有償ソフトウェア)の実行が制御される。これにより、例えば、ユーザ領域UARにDLアプリ(有償ソフトウェア)を格納する等、不正を行った場合に、DLアプリが実行されてしまうのを防ぐことが可能となる。
<ハードウェアによる制御>
図18では、ソフトウェアによって、DLアプリの実行を制御する例を説明したが、DLアプリの実行の制御は、ハードウェアで実現してもよい。すなわち、論理回路等のハードウェアを用いて、制御するようにしてもよい。図19は、DLアプリの実行を、ハードウェアによって制御する場合の構成を示すブロック図である。
図19において、1700は、フラッシュメモリを示している。このフラッシュメモリ1700が、ソフトウェア記憶ユニット1401に相当する。そのため、フラッシュメモリ1700の記憶領域が、ソフトウェア記憶ユニット1401の記憶領域ARとなり、フラッシュメモリ1400の記憶領域が、ユーザ領域UARとDLアプリ領域DARに分けられることになる。
フラッシュメモリは、図16において説明したように、アドレス端子、ライト端子、リード端子およびデータ端子を備えている。図19には、アドレス端子がADTとして示され、リード端子がRTとして示されている。図19では、ライト端子およびデータ端子は省略されている。
フラッシュメモリ1700は、アドレス端子ADTに供給されたアドレス信号によって指示された領域に格納されているデータが、リード端子RTにハイレベルのリード信号REが供給されることにより、読み出される。読み出されたデータは、図示しないデータ端子を介して、実行ユニット1401へ供給される。実行ユニット1401は、供給されたデータを命令として実行する。これにより、マイクロプロセッサ1400が所定の動作を行うことになる。
ライセンス管理ユニット1403は、DLアプリ領域DARを指定するDL領域指定信号DLDと、DLアプリか否かを示すDLアプリ検出信号DLTとを出力する。ここで、DL領域指定信号DLDは、フラッシュメモリ1700において割り当てられたDLアプリ領域DRAの範囲を示すアドレス信号である。また、DLアプリ検出信号DLTは、図18のステップS71において、説明したようにして形成される信号であって、DLアプリであった場合、ハイレベルになり、DLアプリでない場合には、ロウレベルとなる。また、図19において、アドレス信号ADは、実行ユニット1401によって形成され、リード信号REも、実行ユニット1401によって形成される。
図19において、1701は、比較回路であり、比較回路1701は、実行ユニット1401からのアドレス信号ADと、ライセンス管理ユニット1403からのDL領域指定信号DLDとを比較する。比較により、アドレス信号ADによって指定される領域が、DL領域指定信号DLDによって指定される領域内に存在するとき、比較回路1701は出力信号をハイレベルにする。一方、アドレス信号ADによって指定される領域が、DL領域指定信号DLDによって指定される領域の外に存在するとき、比較回路1701は出力信号をロウレベルにする。
比較回路1701からの出力信号は、位相反転されて、アンド回路1702の一方の入力に供給される。アンド回路1702の他方の入力には、DLアプリ検出信号DLTが供給され、アンド回路1702の出力信号は、位相反転して、アンド回路1703の一方の入力に供給される。また、アンド回路1702の出力信号は、エラー信号として、実行ユニット1401へ供給される。アンド回路1703の他方の入力には、実行ユニット1401からのリード信号REが供給され、アンド回路1703の出力信号は、フラッシュメモリ1700のリード端子RTに供給される。
実行ユニット1401が、ソフトウェアを実行するとき、実行ユニット1401は、ソフトウェアの実行アドレスを、アドレス信号ADをして出力する。また、ソフトウェアをフラッシュメモリ1700から読み出すために、リード信号REをハイレベルにする。
実行ユニット1401から出力されている実行アドレスであるアドレス信号ADが、DL領域指定信号DLDによって指定されている領域内を指定していれば、比較回路1701からは、ハイレベルの出力信号が出力される。アンド回路1702の一方の入力には、このハイレベルが、位相反転されて、ロウレベルが供給されることになる。その結果、アンド回路1702の出力信号はロウレベルとなる。実行ユニット1401は、エラー信号がハイレベルのとき、エラーが発生しているとして認識する。そのため、ロウレベルのエラー信号が供給されている状態では、エラーは発生していないと認識する。
アンド回路1702から出力されているロウレベルの出力信号は、再び位相反転され、アンド回路1703の一方の入力に供給される。このとき、実行ユニット1401は、ソフトウェアを読み出すために、リード信号をハイレベルにしている。その結果、アンド回路1703は、ハイレベルの出力信号を、フラッシュメモリ1700のリード端子RTに供給する。これにより、フラッシュメモリ1700は、実行アドレスであるアドレス信号ADによって指定された領域に格納されているデータを、実行ユニット1401へ供給する。実行ユニット1400は、供給されたデータをソフトウェアの命令として実行する。
これによって、DLアプリ(有償ソフトウェア)を、DL領域指定信号DLDによって指定される領域から読み出して、実行ユニット1401は実行することが可能とされる。
これに対して、実行ユニット1401からのアドレス信号ADが、DL領域指定信号DLDによって指定される領域の外を指定していた場合、比較回路1701の出力信号は、ロウレベルとなる。DLアプリ検出信号DLTがハイレベルであれば、アンド回路1702の出力信号は、ハイレベルとなる。その結果、実行ユニット1401は、エラーが発生したと認識する。また、アンド回路1702の出力信号がハイレベルとなることによって、アンド回路1703の出力信号はロウレベルとなる。すなわち、フラッシュメモリ1700のリード端子RTにロウレベルのリード信号が供給されることになる。その結果、フラッシュメモリ1700からは、データが出力されず、実行ユニット1401へのソフトウェアの供給が停止される。すなわち、実行ユニット1401によるDLアプリ(有償ソフトウェア)の実行が禁止される。
このように、DLアプリ(有償ソフトウェア)が、DL領域指定信号DLDによって指定される領域から読み出された場合には、実行ユニット1401による実行が許可され、DL領域指定信号DLDによって指定される領域の外から読み出された場合には、実行ユニット1401による実行が禁止されることになる。
図20は、DLアプリの実行をハードウェアによって制御する場合の他の構成を示すブロック図である。
図20において、1800は、命令キューを示している。命令キュー1800には、ソフトウェア記憶ユニット1403から、順次命令が格納され、実行ユニット1401へ、供給される。命令キュー1800は、フラッシュ端子FLTを備えている。このフラッシュ端子FLTにハイレベルのフラッシュ信号を供給することにより、命令キュー1800に格納されている全ての命令が消去される。なお、図20では、ソフトウェア記憶ユニット1402から命令キュー1800への経路は省略されている。
図20に示したアドレス信号AD、DL領域指定信号DLD、DLアプリ検出信号DLTおよびエラー信号は、図19に示したそれぞれの信号と同じであるため、説明は省略する。
図20において、1801は、比較回路であり、比較回路1801は、実行ユニット1401からのアドレス信号ADと、DL領域指定信号DLDとを比較する。比較回路1801は、アドレス信号ADが、DL領域指定信号DLDによって指定されている領域の外を指定して場合、ロウレベルの出力信号を出力する。これに対して、アドレス信号ADが、DL領域指定信号DLDによって指定されている領域内を指定して場合、比較回路1801は、ハイレベルの出力信号を出力する。比較回路1801の出力信号は、位相反転され、アンド回路1802の一方の入力に供給され、アンド回路1802の他方の入力には、DLアプリ検出信号DLTが供給される。アンド回路1802の出力信号は、命令キュー1800のフラッシュ端子FLTにフラッシュ信号として供給されるとともに、エラー信号として、実行ユニット1401へ供給される。
実行ユニット1401が、DLアプリ(有償ソフトウェア)を実行する場合、DLアプリ検出信号DLTがハイレベルとなる。実行ユニット1401が、実行するDLアプリを、DLアプリ領域DARの外、すなわちユーザ領域UARから読み出す場合、アドレス信号ADは、DL領域指定信号DLDによって指定されている領域の外を指定することになる。その結果、比較回路1801の出力信号は、ロウレベルとなり、アンド回路1802の出力信号はハイレベルとなる。すなわち、フラッシュ信号がハイレベルとなり、命令キュー1800に格納されていた全ての命令が削除される。これにより、実行ユニット1401が、DLアプリを実行することが禁止される。また、このときには、エラー信号がハイレベルとなるため、実行ユニット1401は、エラーが発生したことを認識することができる。
これに対し、DLアプリを、DLアプリ領域DARから読み出す場合には、アドレス信号ADは、DL領域指定信号DLDによって指定されている領域内を指定することになる。その結果、比較回路1801の出力信号はハイレベルとなり、命令キュー1800のフラッシュ端子FLTには、ロウレベルのフラッシュ信号が供給され、実行ユニット1401には、ロウレベルのエラー信号が供給されることになる。これにより、命令キュー1800に格納されている命令は削除されず、実行ユニット1401へ供給され、実行されることになる。すなわち、実行ユニットによるDLアプリ(有償ソフトウェア)の実行が許可される。また、実行ユニット1401は、エラー信号がロウレベルであるため、エラーは発生していないことを認識することができる。
図20に示した例では、命令キュー1800に格納されている命令を削除することにより、実行ユニット1401がDLアプリを実行することが禁止されることになる。
実行ユニット1401は、エラー信号によってエラーが発生したことを認識した場合、エラー処理用のソフトウェアを実行する。このエラー処理用のソフトウェアを実行することにより、種々のエラー対策を行うことが可能である。例えば、図20に示した例では、エラーが発生したとき、命令キュー1800に格納されている全ての命令を消去することを説明したが、エラー処理のソフトウェアにより、種々の対策を実施することが可能である。例えば、命令キュー1800に、格納されている命令が有効であるか否かを示すバリッドビットが設け、エラー処理用のソフトウェアを実行することにより、バリッドビットを、命令が無効であることを示すインバリッドへ変更するようにしてもよい。また、命令キュー1800において、命令を格納する場所を指定するライトポインタの更新を、エラー処理用のソフトウェアを実行することにより、停止させるようにしてもよい。
半導体装置としてマイクロプロセッサ1401を例にして説明したが、半導体装置は、これに限定されるものではない。
さらに、マイクロプロセッサ1401の代わりに、パーソナルコンピューターあるいはスマートフォンのような携帯端末を用いてもよい。また、フラッシュライタ1105の代わりに、光デイスク再生装置あるいは通信回線を介して有償ソフトウェアを提供するソフトウェア記憶装置を用いてもよい。また、ソフトウェア記憶ユニット1402は、ハードディスクあるいはメモリカードを用いるようにしてもよい。このように、マイクロプロセッサ、フラッシュライタおよびソフトウェア記憶ユニットを変更しても、同様の効果が得られるものである。
<変形例1>
実施の形態6を、例えば実施の形態1または実施の形態2と組み合わせる。すなわち、図2に示したライセンス記憶ユニット1103(図6に示したライセンス記憶部1305)を、実施の形態6で説明した構成に追加する。この場合、ライセンス管理ユニット1403によって、ライセンス記憶ユニット1103に格納されているライセンス情報の更新を実施するとともに、ライセンス情報によって示されている有償ソフトウェアインストール可能数の確認も実施する。
その結果、インストール可能数とDLアプリ領域DARの記憶容量の両方によって、ソフトウェア記憶ユニット1402内のDLアプリ領域DARへのソフトウェアの格納が制御されることになる。この場合、ライセンス記憶ユニット1303に格納されているライセンス情報が、例えば不正に変更されたとしても、DLアプリ領域DARの記憶容量が、制限されているため、被害の低減を図ることが可能である。
<変形例2>
実施の形態6を、実施の形態5と組み合わせる。これにより、DLアプリをダウンロードするときと、DLアプリを実行するときの両方において、不正か否かの確認を行うことが可能となり、より強固に不正に対抗することが可能となる。
<変形例3>
実施の形態6を、実施の形態1または2と、実施の形態5と組み合わせる。これにより、不正による被害の低減を図ることが可能になるとともに、より強固に不正に対抗することが可能となる。
(実施の形態7)
実施の形態5および6においては、ソフトウェア記憶ユニット1402の領域ARの一部の領域が、DLアプリ領域DARに割り当てられ、DLアプリ領域DARを除く領域が、ユーザ領域UARに割り当てられた。この実施の形態7においては、実行ユニット1401によって、ユーザ領域UARにおけるソフトウェアを実行しているとき、DLアプリ領域DARへのアクセスを制限する。
図21は、実施の形態7に係わるマイクロプロセッサの動作を示す概念図である。実行ユニット1401が、ユーザ領域UARにおけるソフトウェアを実行しているとき、DLアプリ領域DARへのデータの書き込みおよび読み出しを禁止する。この場合、ユーザ領域UARにおけるソフトウェアで、DLアプリ領域DARにおけるソフトウェアの実行は可能とする。
このようにすることにより、ユーザ領域UARにおけるソフトウェアの実行によって、DLアプリ領域DARに格納されているソフトウェアの解析および/またはコピーが実施されるのを防ぐことが可能となる。その結果、DLアプリ領域DARに格納されている有償ソフトウェアの保護(解析、コピーを防ぐ)を行うことが可能となる。
この実施の形態7によれば、メモリマネージメント機能(MMU)あるいはメモリプロテクション機能のような高機能(高コスト)を、マイクロプロセッサに設けなくても、ソフトウェアの解析、コピーを防ぐことが可能である。すなわち、ユーザにマイクロプロセッサを提供する際に、DLアプリ領域DARとユーザ領域UARとを割り当てるが、このときに、上記したようなアクセスの制限を設定するだけで済み、低コストでセキュリティを高めることが可能となる。
なお、DLアプリ領域におけるソフトウェアを実行しているときには、ユーザ領域UARへのデータの書き込みおよび読み出しは可能とされている。また、ユーザ領域UARにおけるソフトウェアとDLアプリ領域におけるソフトウェアとの間のデータの受け渡しは、ユーザ領域UARにおける領域あるいは、実行ユニット1401が備えているレジスタを用いて、実施する。
なお、図21に示すように、データの読み出しおよび書き込みを禁止し、ソフトウェアの実行を可能にする構成としては、例えば実行ユニット1401が備えているプログラムカウンタが、DLアプリ領域DARをアクセスする場合は、アクセスを許可し、それ以外の場合には、アクセスを禁止するようにすればよい。
(実施の形態8)
実施の形態5および6においては、ソフトウェア記憶ユニット1402の領域ARの一部の領域が、DLアプリ領域DARに割り当てられ、DLアプリ領域DARを除く領域が、ユーザ領域UARに割り当てられた。この実施の形態8においては、例えば一次的にデータを格納するために用いられるデータ用の記憶ユニットも、DLアプリ用とユーザ用に分けられる。
図22は、実施の形態8に係わるマイクロプロセッサの動作を示す概念図である。図22において、DAR−Dは、DLアプリ用データ領域を示し、UAR−Dは、ユーザ用データ領域を示しており、データ用の記憶ユニットが、DLアプリ用データ領域DAR−Dとユーザ用データ領域UAR−Dに分けられている。この実施の形態8においては、ユーザ領域UARにおけるソフトウェアを、実行ユニット1401が実行しているとき、DLアプリ用データ領域DAR−Dへのデータの書き込みおよび読み出しが禁止される。これに対して、DLアプリ領域DARにおけるソフトウェアを、実行ユニット1401が実行しているとき、ユーザ用データ領域UAR−Dへのデータの書き込みおよび読み出しは許可される。
これにより、ユーザ領域UARにおけるソフトウェアを実施することにより、不正にDLアプリ用データ領域DAR−Dにおけるデータを解析および/またはコピーするのを防ぐことが可能となり、実施の形態7と同様に、有償ソフトウェアを、さらに強固に保護することが可能となる。また、実施の形態7と同様に、低コストで、セキュリティを高めることが可能である。
なお、DLアプリ用データ領域DAR−Dとユーザ用データ領域UAR−Dとしては、マイクロプロセッサ1400に内蔵されたスタテック型メモリを用いてもよいし、マイクロプロセッサ1400の外部に設けた揮発性メモリを用いるようにしてもよい。
勿論、実施の形態7と実施の形態8とは組み合わせて用いるようにしてもよいし、別々に用いるようにしてもよい。
(実施の形態9)
実施の形態9は、実施の形態1〜8で説明した半導体装置および電子装置を用いて、ライセンス料金を回収するライセンス料金回収システムを提供する。図24は、ライセンス料金回収システムの構成を示すシステム図である。図24に示したシステムでは、半導体装置または電子装置と、有償ソフトウェアを、販売者および/または製造者が、ユーザへ提供し、販売者および/または製造者が、ユーザから、これらの対価を回収する。そのため、図24は、販売者(製造者)とユーザとの間のビジネスモデルを示していると見なすこともできる。この場合、販売者および/または製造者は、複数であってもよい。
図24において、1900は、ユーザを示しており、1910は、販売者および/または製造者を示している。販売者(製造者)1910は、実施の形態1〜8で説明した半導体装置(マイクロプロセッサ)または電子装置と有償ソフトウェアを、ユーザ1900へ提供する。同図において、1911は、販売者(製造者)1910が、製造し、販売する装置を示しており、1901は、販売者(製造者)1910からユーザ1900へ提供1915された装置を示している。ここでは、実施の形態1〜8において説明した半導体装置および電子装置を総称して、装置と表現している。すなわち、ここで述べている装置1901および1911は、実施の形態で説明した半導体装置または電子装置である。
図24において、1920−1および1920−2のそれぞれは、有償ソフトウェアを示している。有償ソフトウェア1920−1および/または1920−2は、例えばユーザ1900の要求に応じて、販売者(製造者)から、ユーザ1900へ提供1921される。ここでは、説明の都合上、同一の販売者(製造者)が、装置1911と有償ソフトウェア1920−1、1920−2を提供1915、1921する場合を、先ず説明するが、勿論、装置1911を提供する販売者(製造者)と、有償ソフトウェア1920−1、1920−2を提供する販売者(製造者)は、同一である必要はない。さらに、有償ソフトウェア1920−1と1920−2とが、別々の販売者(製造者)によって提供されてもよい。また、複数の有償ソフトウェア1920−1、1920−2のうちの少なくとも1つを、装置1911を提供する販売者(製造者)が提供するようにしてもよい。
図24において、装置1901、1911の構成は、実施の形態1〜8において説明した構成を有しているが、同図には、説明に必要な構成のみが描かれ、その他の構成は省略されている。同図において、1912は、ソフトウェア記憶装置を示しており、1913は、ライセンス記憶装置を示しており、1914は、ライセンス管理装置を示している。ここでも、ソフトウェア記憶装置1912は、実施の形態で説明したソフトウェア記憶部(図1では、1002)とソフトウェア記憶ユニット(図2では、1102)の総称である。また、ライセンス記憶装置1913は、ライセンス記憶部(図1では、1003)とライセンス記憶ユニット(図2では、1103)の総称である。同様に、ライセンス管理装置1914は、ライセンス管理部(図1では、1004)とライセンス管理ユニット(図2では、1104)の総称である。
販売者(製造者)1910は、装置1911をユーザ1900へ提供する前に、実施の形態で説明したライセンス情報を、ライセンス記憶装置1913に格納する。販売者(製造者)が、装置1911をユーザ1900へ提供する際には、ライセンス情報が格納されたライセンス記憶装置1913を備えた装置1911が提供1915されることになる。販売者(製造者)1910が、ライセンス記憶装置1913に格納するライセンス情報は、実施の形態で説明したように、有償ソフトウェアインストール可能数、インストール可能なポイント、インストール可能な記憶容量等を示す情報である。
このとき、販売者(製造者)1910は、ユーザ1900へ提供する装置1911の価格、すなわち販売価格を、装置1911のハードウェア価格(HW価格)に、ライセンス情報によって示されるインストール可能な量、すなわちライセンス数に相当するライセンス料金を付加して定める。すなわち、装置1911のHW価格に、ライセンス数に相当するライセンス料金を付加(加算)して定めた販売価格で、販売者(製造者)1910は、ユーザ1900へ装置1911を提供1915する。この場合、ライセンス記憶装置1913へ格納するライセンス情報によって、販売価格が変わることになる。
ユーザ1900は、装置1911を購入したあと、ユーザ1900が望む機能を実現するために、必要に応じて、購入した装置(図24では、購入した装置は1901として示されている)に、ソフトウェア提供装置1904を介して、有償ソフトウェアをダウンロードする。この場合、実施の形態1〜8で説明したように、有償ソフトウェアのダウンロード、すなわちソフトウェア記憶装置1912への格納または実行は、ライセンス記憶装置1913に格納されているライセンス情報によって示されるライセンス数まで、ライセンス管理装置1914によって許可されることになる。そのため、ユーザ1900は、有償ソフトウェアの許諾に要求されるライセンス料金を、ダウンロードする前に、支払っていることになる。なお、図24では、ライセンス情報によって示されるライセンス数まで、ダウンロードを許可するために、ライセンス管理部1914が、ダウンロードを監視していることが示されている。
なお、ライセンス情報によって示されているライセンス数を超えた場合、ライセンス管理装置1914は、ダウンロードまたは実行を制限する。そのため、ライセンス情報は、ダウンロードまたは実行を制限する制限情報であると見なすこともできる。
すなわち、この実施の形態においては、ライセンス料金をプリペイドしていることになる。そのため、ユーザ1900は、販売者(製造者)1910からの装置1911の提供1915に対して。装置のハードウェア価格(HW価格)1931と、ライセンス料金のプリペイド価格1930(図24では、プリペイドと記載)とを合わせて、購入価格として支払うことになる。なお、ここでは、販売者(製造者)1910の定めた販売価格と、ユーザ1900が支払う購入価格は同じであるとする。
ライセンス記憶装置1913に格納されたライセンス情報によって、販売価格(購入価格)が変わる例を、次に示しておく。
ライセンス情報が、有償ソフトウェアインストール可能数を示す場合を例にして、先ず説明する。ここでは、装置1911のハードウェア価格(HW価格)が、例えば10ドルであり、有償ソフトウェアが1本当たり、30ドルであるとする。この場合、有償ソフトウェアインストール可能数が0を示すライセンス情報を格納した装置1911の販売価格は、10ドルとなる。これに対して、有償ソフトウェアインストール可能数が1を示すライセンス情報を格納した装置1911の販売価格は、40ドルとなり、有償ソフトウェアインストール可能数が2を示すライセンス情報を格納した装置1911の販売価格は、70ドルとなる。以降、有償ソフトウェアインストール可能数が1増える毎に、装置1911の販売価格は、30ドルずつ高くなる。
また、ライセンス情報が、有償ソフトウェアのインストール可能なポイントを示す場合を説明する。ここでも、装置1911のハードウェア価格(HW価格)は、10ドルであり、1ポイントが、1ドルであるとする。この場合、ポイント数が0を示すライセンス情報を格納した装置1911の販売価格は、10ドルとなる。これに対して、ポイント数が50を示すライセンス情報を格納した装置1911の販売価格は、60ドルとなり、ポイント数が100を示すライセンス情報を格納した装置1911の販売価格は、110ドルとなる。以降、ポイント数が1増える毎に、装置1911の販売価格は、1ドルずつ高くなる。この場合、1本の有償ソフトウェアのライセンス許諾に要求されるポイント数が、例えば50ポイントであれば、販売価格が60ドルの装置1911に対しては、1本の有償ソフトウェアをダウンロードすることが許可され、販売価格が110ドルの装置1911に対しては、2本の有償ソフトウェアをダウンロードすることが許可される。許可される本数以上の有償ソフトウェアについては、ダウンロードが失敗することになる。すなわち、ダウンロードが制限されることになる。
さらに、ライセンス情報が、有償ソフトウェアのインストール可能な記憶容量(DLアプリ領域DARの記憶容量)を示す場合を説明する。ここでも、装置1911のハードウェア価格(HW価格)は、10ドルであるとする。この場合、ソフトウェア記憶装置1912の領域(アドレス空間)ARは、全てユーザ領域UARに割り当てられていると見なすこともできる。ソフトウェア記憶装置1911の領域ARのうち、DLアプリ領域DARに、1Mビット(1MB)が割り当てられた場合、販売価格は例えば60ドル、DLアプリ領域DARに2Mビット(2MB)を割り当てられた場合、販売価格は110ドル、DLアプリ領域DARに4Mビット(4MB)を割り当てられた場合、販売価格は210ドルとする。このように、例えば1Mビット割り当てる記憶容量が多くなるのに従って、例えば50ドルずつ高価にする。この場合、DLアプリ領域DARに割り当てられた記憶容量が、有償ソフトウェアによって、不足となるまで有償ソフトウェアのダウンロードが可能となる。DLアプリ領域DARに不足が発生するまでにダウンロードした有償ソフトウェア数が、ライセンス情報によって示されるライセンス数となり、このライセンス数に対応したライセンス料金が、プリペイドされていることになる。
ライセンス料金回収システムとして見た場合、ライセンス情報は、プリペイドされたライセンス料金に相当していることになる。すなわち、プリペイドされたライセンス料金に応じた値を、ライセンス情報は示すことになる。一例を述べると、プリペイドされたライセンス料金に応じて、ライセンス情報が示す有料ソフトウェアインストール可能数は変わる。ライセンス管理装置1914は、有償ソフトウェアを格納または実行するとき、そのときのライセンス情報によって表されるライセンス料金が、その有償ソフトウェアのライセンス料金を満たすとき、すなわちその有償ソフトウェアのライセンス料金を支払うことが可能なとき、有償ソフトウェアの格納または実行を許可することになる。また、ライセンス管理装置1914は、有償ソフトウェアの格納または実行を許可した場合、この有償ソフトウェアのライセンス料金を、ライセンス情報によって示される料金(ライセンス料金)から減算し、減算により得られるライセンス料金に相当するライセンス情報を、ライセンス記憶装置に格納する。
また、実施の形態1で述べたように、有償ソフトウェアをアンインストールした場合、ライセンス管理装置1914は、ライセンス情報を更新することが可能である。これを、ライセンス料金回収システムとして見た場合、アンインストールした有償ソフトウェアのライセンス料金を、そのときライセンス記憶装置が格納しているライセンス情報によって示される料金(ライセンス料金)に加算することにより得られるライセンス料金に相当するライセンス情報を、ライセンス記憶装置に格納することを意味している。
図14に示したように、ソフトウェア記憶装置の領域ARを、DLアプリ領域DAR(第1記憶領域)とユーザ領域(第2領域)UARとに分ける場合には、第1記憶領域が大きくなるほど、プリペイドされたライセンス料金が高額になるため、第1記憶領域が大きい装置ほど、高額になる。
販売者(製造者)1910からユーザ1900への有償ソフトウェアの提供1921については、種々の方法が存在する。販売者(製造者)が、有償ソフトウェアを提供1921する際に、有償ソフトウェアに対する対価を、ユーザ1900へ要求しなくてもよい。これは、装置1911をユーザ1900が購入する際に、装置1911にダウンロードすることが可能な有償ソフトウェアに応じた料金(ライセンス料金)が、装置1911の販売価格に含まれ、プリペイドで、販売者(製造者)に支払われているためである。そのため、有償ソフトウェアの提供1921の方法は、種々の方法を採用することが可能である。
例えば、有償ソフトウェア1920−1および1920−2を、販売者(製造者)1910が、光デイスク等の記憶媒体に格納し、この光デイスク等の記憶媒体を、ユーザ1910へ提供1921する。この場合、ソフトウェア提供装置1904は、例えば光デイスク再生装置によって構成されることになる。ユーザ1900は、この光デイスク再生装置を用いて、提供された光デイスクを再生することにより、購入した装置1901へ有償ソフトウェアを提供する。勿論、有償ソフトウェアのライセンスを許諾するライセンス料金が、プリペイドされているだけであって、光デイスク等の記憶媒体の費用および格納に掛かる費用に関して、販売者(製造者)1910が、ユーザ1900へ請求することを制限するものではない。
また、販売者(製造者)1910側が備えているサーバ装置に、有償ソフトウェア1920−1、1920−2を格納しておき、インターネット等の通信回線を介して、ユーザ1900が、販売者(製造者)1910側のサーバ装置から、有償ソフトウェアを入手し、装置1901へ提供するようにしてもよい。この場合、ソフトウェア提供装置1904は、例えばユーザ1900側のサーバ装置を含み、ユーザ1900側のサーバ装置から装置1901へのダウンロードが行われることになる。
例えば、ユーザ1900が、購入した装置1901を搭載した製品を、工場の製造ラインで製造する場合、工場の製造ラインに、有償ソフトウェアをインストールする工程が存在すると考えられる。この場合、インストール工程にある製造装置(例えば、フラッシュライタ、ROMライタ等)あるいは製造装置に接続されたパーソナルコンピューター等の情報処理装置が、ソフトウェア提供装置1904とされ、このソフトウェア提供装置1904に有償ソフトウェア1920−1、1920−2が格納される。格納された有償ソフトウェア1920−1、1920−2が、インストール工程において、装置1901へ提供されることになる。この場合、製造装置、情報処理装置へ、有償ソフトウェアを格納することに関して、特に制限を設ける必要はない。そのため、例えば通信回線を介して、ユーザ1900は、予め有償ソフトウェアを、製造装置および/または情報処理装置に格納しておくようにすれば、装置1901へ有償ソフトウェアをダウンロードする度に、毎回通信回線を介して、ダウンロードする必要はない。また、製品を製造する計画に応じて、ユーザ1900が、製造ラインを増やす場合も、予め格納してある有償ソフトウェアをコピーして、利用することが可能である。反対に、製造ラインを減らす場合には、余った有償ソフトウェアについても、自由に破棄することが可能である。そのため、ユーザ1900の手間を低減し、煩雑性を減らすことが可能となる。
ユーザ1900が購入した装置1901は、実施の形態1〜8において述べたように、ライセンス情報によって示されたライセンス数までしか、有償ソフトウェアをダウンロードすることができない。言い換えるならば、購入価格(販売価格)に応じたライセンス数の有償ソフトウェアしか、装置1901には、ダウンロードすることができず、このライセンス数を超えた有償ソフトウェアのダウンロードは、制限される。従って、ユーザ1900は、ライセンスの許諾を受けるためのライセンス料金を支払わずに、有償ソフトウェアを、装置1901へダウンロードすることはできず、販売者(製造者)1910は、確実にライセンス料金を回収することが可能となる。
ユーザ1900は、製造する製品の数に応じて、ライセンス料金を別途支払うための処理が不要となる。
また、有償ソフトウェアのインストール数にかかわらず、ユーザ1900は、一定のライセンス料金を支払わなくてもよい。一定のライセンス料金を支払うようにした場合、インストール数が少ないユーザにとっては、割高になることが考えられる。実施の形態によれば、インストール数にかかわらず、一定のライセンス料金の支払いような手続きをしなくても済むため、割高になることを防ぐことが可能となる。
さらに、高額なライセンス管理装置を、ユーザ1900は、導入する必要はなく、製造ラインには、上記したような製造装置および/または情報処理装置を設けるだけで済み、ユーザの負担を低減することが可能となる。また、販売者(製造者)1910は、ユーザ1900が導入したライセンス管理装置が、適切に運用されているかを監視する必要が無いため、販売者(製造者)の負担の低減も図ることが可能である。
ライセンス料金が、プリペイドされており、プリペイドされたライセンス料金を超えて有償ソフトウェアをインストールすることが、ライセンス管理装置1914によって制限される。そのため、有償ソフトウェアの提供方法は、種々の方法を採用することが可能である。例えば、インターネット等の通信回線がなくても、ライセンス管理が可能である。また、許諾の無い状態で有償ソフトウェアが不正に使用されるのを防ぐことが、可能であり、ライセンス料金の回収漏れを防ぐことが可能である。
有償ソフトウェア1920−1、1920−2と装置1911とを、同一の販売者(製造者)1910が、ユーザ1900へ提供する場合を説明したが、これに限定されない。有償ソフトウェア1920−1、1920−2を、ユーザ1900へ提供する提供者(ソフトウェア配信元)と、装置1911を、ユーザ1900へ提供する提供者(販売者、製造者)とは、異なっていてもよい。
例えば、有償ソフトウェア1920−1をソフトウェア配信元(提供者)Aが、ユーザ1900へ提供し、有償ソフトウェア1920−2をソフトウェア配信元(提供者)Bが、ユーザ1900へ提供し、装置1911を、販売者および/または製造者(提供者)1910が、ユーザ1900へ提供するようにしてもよい。すなわち、有償ソフトウェアを提供する配信元と、装置1911を提供する販売者(製造者)が異なる場合である。
この場合も、販売者(製造者)1910は、ライセンス数に相当する情報であるライセンス情報を格納して、装置1911を、ユーザ1900へ販売する。ユーザ1900は、装置1911のハードウェア価格(HW価格1931)に、ライセンス情報によって示されるライセンス数に応じたライセンス料金(プリペイド価格1930)を付加した金額(販売金額、購入金額)を、販売者(製造者)1910へ支払う。販売者(製造者)1910は、ユーザ1900から支払われた金額のうち、ライセンス料金(プリペイド価格1930)のうちの一部を、有償ソフトウェア1920−1のライセンス料金1932−1として、ソフトウェア配信元Aに分配し、残りのライセンス料金を、有償ソフトウェア1920−2のライセンス料金1932−2として、ソフトウェア配信元Bへ分配する。これにより、ソフトウェア配信元AおよびBのそれぞれが、有償ソフトウェアの対価としてライセンス料金を回収することが可能となる。
なお、ライセンス料金(プリペイド価格1930)を分配する際の分配比率は、一定にしてもよいし、例えば、ユーザ1900から人気のある有償ソフトウェアを確認し、人気のある有償ソフトウェアに対する分配金が高額になるようにしてもよい。
この場合、ソフトウェア配信元A、Bも、販売者(製造者)1910と同様に、ユーザ1900側に導入されるライセンス管理装置を監視する必要がなくなるため、負担の低減を図ることが可能となる。また、ライセンス料金の回収漏れを防ぐことが可能となる。
勿論、例えば、ソフトウェア配信元Bが、販売者(製造者)1910であった場合には、ライセンス料金1932−1のみを、ソフトウェア配信元Aへ分配するだけでよい。
実施の形態1〜9において説明した電子装置は、ライセンス情報に基づいて、有償ソフトウェアのダウンロードを管理するダウンロード管理機能を備えた電子装置と見なすことができる。ダウンロード管理機能を備えた電子装置と見なした場合、有償ソフトウェアの対価であるライセンス料金を求めるダウンロード課金システムが、本明細書には記載されていると見なすことができる。このように見なした場合、ダウンロード課金システムにおいては、ライセンス記憶部に、ライセンス料金に相当するライセンス情報が、予め記憶される。記憶されたライセンス情報に基づいて、有償ソフトウェアのソフトウェア記憶部への格納が制御され、予め記憶されたライセンス情報によって表されるライセンス料金によってライセンスが許諾される有償ソフトウェアの実行が、許可されることになる。
また、実施の形態1〜9において説明した半導体装置(マイクロプロセッサ)は、ライセンス情報に基づいて、ダウンロードを管理するダウンロード管理機能を備えた半導体装置と見なすことができる。ダウンロード管理機能を備えた半導体装置と見なした場合、ダウンロード課金システムが、本明細書には記載されていると見なすことができる。このように見なした場合、ダウンロード課金システムにおいては、ライセンス記憶ユニットに、ライセンス料金に相当するライセンス情報が、予め記憶される。記憶されたライセンス情報に基づいて、有償ソフトウェアのソフトウェア記憶ユニットへの格納または実行が制御され、予め記憶されたライセンス情報によって表されるライセンス料金によってライセンスが許諾される有償ソフトウェアの実行が、許可されることになる。ここで、記憶されたライセンス情報に基づいて、有償ソフトウェアのソフトウェア記憶ユニットへの格納の制御は、例えば実施の形態1および実施の形態5で述べているようにして実行される。また、記憶されたライセンス情報に基づいて、有償ソフトウェアの実行の制御は、例えば実施の形態6で述べているようにして実行される。
本明細書においては、実施の形態9で用いたように、実行ユニットおよび実行部を総称して、実行装置と称し、ソフトウェア記憶ユニットおよびソフトウェア記憶部を総称して、ソフトウェア記憶装置と称し、ライセンス記憶ユニットおよびライセンス記憶部を総称して、ライセンス記憶装置と称し、ライセンス管理ユニットおよびライセンス管理部を総称して、ライセンス管理装置と称する場合がある。
本明細書には、有償ソフトウェアのライセンスを管理するライセンス管理方法が開示されていると見なすことができる。この場合、ライセンス管理方法は、実行装置とソフトウェア記憶装置とを備えている。このライセンス管理方法は、有償ソフトウェアをダウンロードするとき、ライセンス管理装置に格納されているライセンス情報に基づいて、ダウンロードする有償ソフトウェアのソフトウェア記憶装置への格納または実行を制御する工程(ライセンス管理工程)を備えていると見なすことができる。ライセンス管理工程で、ライセンス情報に基づいて格納または実行が制御されることにより、ライセンス情報によって表されるライセンス料金によってライセンスが許諾された有償ソフトウェアの実行が許可されることになる。ここでも、記憶されたライセンス情報に基づいて、有償ソフトウェアのソフトウェア記憶ユニットへの格納を制御することは、例えば実施の形態1および実施の形態5に示されている。また、記憶されたライセンス情報に基づいて、有償ソフトウェアの実行を制御することは、例えば実施の形態6に示されている。
また、ライセンス管理方法として把握した場合、ライセンス記憶装置へライセンス情報を記憶させるのは、販売者(製造者)が行うため、ライセンス管理工程の前に行われる工程(記憶工程)である。
ライセンス情報は、ソフトウェア記憶装置に格納可能な有償ソフトウェアのライセンス数を示す情報であると見なした場合、有償ソフトウェアを格納する毎に、ラインセンス管理装置によってライセンス数が減少されると見なすことができる。このように見なした場合、アンインストールでは、ライセンス数が増加または維持されると見なすことができる。また、ライセンス情報は、実行装置によって実行可能な有償ソフトウェアのライセンス数を示す情報であると見なした場合、実行可能な有償ソフトウェアが増えることにより、ライセンス管理装置によってライセンス数が減少されると見なすことができる。
<付記>
本明細書には、複数の発明が開示されており、その内のいくつかは、請求の範囲に記載しているが、これ以外の発明も開示しており、その代表的なものを次に列記する。
(A)ダウンロード管理機能を備えた電子装置を用いたダウンロード課金システムであって、
前記電子装置は、
ソフトウェアを実行する実行部と、
前記実行部に結合されたソフトウェア記憶部と、
ソフトウェアのライセンスを許諾するライセンス数を示すライセンス情報を記憶するライセンス記憶部と、
ライセンスの許諾が要求されるソフトウェアをダウンロードするとき、前記ライセンス記憶部に格納されているライセンス情報に基づいて、ダウンロードするソフトウェアの前記ソフトウェア記憶部への格納を制御するライセンス管理部と、
を備え、
前記ライセンス記憶部に、ライセンスを許諾するライセンス数を示すライセンス情報が予め記憶され、記憶されたライセンス情報に基づいて、ライセンスの許諾が要求されるソフトウェアの前記ソフトウェア記憶部への格納が制御される、ダウンロード課金システム。
(B)前記(A)に記載のダウンロード課金システムにおいて、
前記ライセンス記憶部には、複数のソフトウェアのライセンスを許諾するライセンス数を示すライセンス情報が、予め記憶され、
前記ライセンス管理部は、予め記憶されたライセンス情報によって示されるライセンス数まで、ライセンスの許諾が要求されるソフトウェアを前記ソフトウェア記憶部へ格納する、ダウンロード課金システム。
(C)前記(B)に記載のダウンロード課金システムにおいて、
前記ライセンス管理部は、ライセンスの許諾が要求されるソフトウェアを、前記ソフトウェア記憶部に格納したとき、前記ライセンス情報によって示されるライセンス数を減少させる、ダウンロード課金システム。
(D)前記(C)に記載のダウンロード課金システムにおいて、
ライセンスの許諾が要求されるソフトウェアがアンインストールされたとき、前記ライセンス管理部は、前記ライセンス情報によって示されるライセンス数を増加させる、ダウンロード課金システム。
(E)前記(C)に記載のダウンロード課金システムにおいて、
ライセンスの許諾が要求されるソフトウェアがアンインストールされたとき、前記ライセンス管理部は、前記ライセンス情報によって示されるライセンス数を維持する、ダウンロード課金システム。
(F)ダウンロード管理機能を備えた半導体装置を用いたダウンロード課金システムであって、
前記半導体装置は、
ソフトウェアを実行する実行ユニットと、
前記実行ユニットに結合されたソフトウェア記憶ユニットと、
ソフトウェアのライセンスを許諾するライセンス数を示すライセンス情報を記憶するライセンス記憶ユニットと、
ライセンスの許諾が要求されるソフトウェアをダウンロードするとき、前記ライセンス記憶ユニットに格納されているライセンス情報に基づいて、ダウンロードするソフトウェアの前記ソフトウェア記憶ユニットへの格納または前記実行ユニットによる実行を、制御するライセンス管理ユニットと、
を備え、
前記ライセンス記憶ユニットに、ライセンス情報が予め記憶され、記憶されたライセンス情報に基づいて、ライセンスの許諾が要求されるソフトウェアの前記ソフトウェア記憶ユニットへの格納または前記実行ユニットによる実行が制御される、ダウンロード課金システム。
(G)前記(F)に記載のダウンロード課金システムにおいて、
前記ライセンス記憶ユニットには、複数のソフトウェアのライセンスを許諾するライセンス数を示すライセンス情報が、予め記憶されて、前記半導体装置は提供され、
前記ライセンス管理ユニットは、予め記憶されたライセンス情報によって示されるライセンス数まで、ライセンスの許諾が要求されるソフトウェアを、前記ソフトウェア記憶ユニットへ格納または前記実行ユニットによって実行することを許可する、ダウンロード課金システム。
(H)ソフトウェアを実行する実行部と、
前記実行部に結合されたソフトウェア記憶部と、
ライセンス情報を格納するライセンス記憶部と、
ライセンスの許諾が要求されるソフトウェアの前記ソフトウェア記憶部への格納を、前記ライセンス情報に基づいて制御するライセンス管理部と、
を備え、
ソフトウェアを提供する提供装置から、ライセンスの許諾が要求されるソフトウェアの提供を受けるとき、前記ライセンス管理部が、前記ライセンス情報に基づいて、前記ソフトウェア記憶部への前記ソフトウェアの格納を制御し、
前記ライセンスの許諾が要求されるソフトウェアは、ライセンスの許諾が要求されることを示す属性情報を備え、
前記ライセンス管理部が、ソフトウェアが備える属性情報に基づいて、ライセンスの許諾が要求されるソフトウェアか否かを判定する、ライセンス管理システム。
(I)前記(H)に記載のライセンス管理システムにおいて、
前記提供装置は、ライセンスの許諾を要求するソフトウェアを格納した記憶媒体を備える、ライセンス管理システム。
(J)前記(I)に記載のライセンス管理システムにおいて、
前記提供装置は、通信回線を介して、ライセンスの許諾を要求するソフトウェアを提供する、ライセンス管理システム。
(K)ソフトウェアを実行する実行装置を備えた装置において、ライセンス許諾が要求されるソフトウェアを実行する場合に、ライセンス許諾の対価として支払われるライセンス料金を回収する、ライセンス料金回収システムであって、
前記装置は、前記実行装置に結合されたソフトウェア記憶装置と、ライセンス記憶装置と、前記ライセンス記憶装置に記憶されたライセンス情報に基づいて、ライセンス許諾が要求されるソフトウェアの前記ソフトウェア記憶装置への格納または前記実行装置による実行を制御するライセンス管理装置とを備え、
前記ライセンス記憶装置には、所定のライセンス料金に相当するライセンス情報が、予め記憶され、前記装置は、前記所定のライセンス料金を含めた価格で、提供され、
購入された前記装置において、ライセンス許諾が要求されるソフトウェアを格納または実行するとき、前記ライセンス管理装置は、前記ライセンス記憶装置に記憶されているライセンス情報によって示される料金が、ソフトウェアのライセンス料金を満たすとき、ソフトウェアを前記ソフトウェア記憶装置に格納または前記実行装置によって実行することを許可する、
ライセンス料金回収システム。
(L)前記(K)に記載のライセンス料金回収システムにおいて、
前記所定のライセンス料金は、複数のソフトウェアのライセンス料金を超える料金であり、
前記ライセンス管理装置は、前記ライセンス記憶装置に記憶されているライセンス情報によって示される料金が、ソフトウェアのライセンス料金を満たすとき、前記ライセンス記憶装置に記憶されているライセンス情報によって示される料金から、ソフトウェアのライセンス料金を減算することにより得られる料金に相当するライセンス情報を、前記ライセンス記憶装置に記憶させる、
ライセンス料金回収システム。
(M)前記(L)に記載のライセンス料金回収システムにおいて、
前記装置の提供者から、ライセンス許諾が要求されるソフトウェアを提供する提供者へ、ライセンス料金に応じた料金の支払いが行われる、ライセンス料金回収システム。
(N)前記(L)に記載のライセンス料金回収システムにおいて、
ライセンス許諾が要求されるソフトウェアがアンインストールされたとき、前記ライセンス管理装置は、アンインストールされたソフトウェアのライセンス料金を、前記ライセンス記憶装置に記憶されているライセンス情報によって示される料金へ加算することにより得られる料金に相当するライセンス情報を、前記ライセンス記憶装置に記憶させる、
ライセンス料金回収システム。
(O)前記(L)に記載のライセンス料金回収システムにおいて、
前記ソフトウェア装置は、ライセンス許諾が要求されるソフトウェアの記憶が許可される第1記憶領域と、ライセンス許諾が要求されるソフトウェアの記憶が許可されない第2記憶領域とを備え、前記ライセンス情報によって、第1記憶領域と第2記憶領域の大きさが変わり、前記第1記憶領域の大きさが大きくなるのに従って、高価になる、
ライセンス料金回収システム。
(P)ソフトウェアを実行する実行装置と、
前記実行装置に結合されたソフトウェア記憶装置と、
前記ソフトウェア記憶装置の領域のうち、ライセンスの許諾が要求されるソフトウェアの格納または実行が可能な領域を指定する領域指定信号を出力するライセンス管理装置と、
を備え、ライセンスの許諾が要求されるソフトウェアが、前記領域指定信号によって指定される領域外への格納または前記領域指定信号によって指定される領域外に格納されているライセンスの許諾が要求されるソフトウェアの実行を禁止する、装置。
(Q)前記(P)に記載の装置において、
前記装置は、半導体装置である。
(R)前記(Q)に記載の装置において、
前記ソフトウェア記憶装置は、フラッシュメモリである。
(S)前記(P)に記載の装置において、
前記装置は、電子装置である。
以上本発明者によってなされた発明を、前記実施形態に基づき具体的に説明したが、本発明は、前記実施形態に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。