(57)【要約】【課題】  システム開発段階でプログラムコードとデータコードを格納するメモリのメモリサイズの比率変更が可能で、パフォーマンスやコード効率を低下させないでマイクロコンピュータのメモリ拡張を可能とする。【解決手段】  アドレス変換回路１０２を設け、入力したＣＰＵ１０１からのアドレスとバイアス値１３０を加算して生成されたたアドレスとを、ＣＰＵ１０１の命令フェッチ／データアクセスを識別する識別信号１０５によりいずれか一方のアドレスを選択して、メモリ１０３のプログラムコード領域又はデータコード領域をアドレッシングすることで、メモリ１０３のメモリサイズを拡張する。【選択図】  図１
2008003867.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵからの第１のメモリアドレスとステータス信号とが入力され、前記第１のメモリアドレスで指定できるメモリ空間よりも大きなメモリ空間を指定できる第２のメモリアドレスを前記ステータス信号に基づいて出力するアドレス変換手段と、
前記アドレス変換手段から出力される前記第２のメモリアドレスによってアドレッングされ、命令コードまたはデータコードを読み出すメモリと
を備え前記第２のメモリアドレスの少なくとも一部の値は、前記第１のメモリアドレスの値と同一となることを特徴とするマイクロコンピュータ。
【請求項２】
前記アドレス変換手段は、
前記第１のメモリアドレスとあらかじめ定められた値とを加算する加算回路と、
前記第１のメモリアドレスの上位側に１桁以上のビット「０」を付加してビット幅を拡張したメモリアドレスと前記加算回路の加算出力であるメモリアドレスとが入力され、前記ステータス信号によって前記入力された２つのメモリアドレスのいずれか一方が前記第２のメモリアドレスとして出力されるセレクタと
を備えることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項３】
前記アドレス変換手段は、
あらかじめ定められた値と「０」とが入力され、前記ステータス信号によって前記入力された２つの値のいずれか一方が出力されるセレクタと、
前記セレクタの出力値と前記第１のメモリアドレスとを加算して前記第２のメモリアドレスを生成する加算回路と、
を備えることを特徴とする請求項１に記載のマイクロコンピュータ。
【請求項４】
前記ＣＰＵから出力される前記ステータス信号は、命令フェッチであるかデータアクセスであるかが識別可能な信号であることを特徴とする請求項２又は請求項３に記載のマイクロコンピュータ。
【請求項５】
ＣＰＵと、
前記ＣＰＵから出力される第１のメモリアドレスと、０より大きく前記第１のメモリアドレスの最大値より小さな固定値とを加算して生成されたメモリアドレスと、前記第１のメモリアドレスの上位側に少なくとも１桁以上のビット「０」を付加してビット幅を拡張したメモリアドレスのいずれか一方を前記ＣＰＵから出力される命令フェッチであるかデータアクセスであるかが識別可能なステータス信号によって選択するか、または前記固定値と「０」のいずれか一方を前記ステータス信号によって選択し、その出力値と前記第１のメモリアドレスと加算するかして前記第２のメモリアドレスを生成する変換回路と、
前記変換回路から出力された前記第２のメモリアドレスによってアドレッシングされ、前記第１のメモリアドレスで指定できるメモリ容量よりも大きなメモリ容量のメモリと、を備え、
前記ＣＰＵが前記命令フェッチ時にアクセスできる前記メモリのアドレス領域と、前記データアクセス時にアクセスできる前記メモリのアドレス領域が一部重複することを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス領域拡張回路技術に係わり、マイクロコンピュータに適用するのに好適な構成に関する。
【背景技術】
【０００２】
マイクロコンピュータを搭載するシステムの機能向上に伴い、マイクロコンピュータの制御プログラムサイズが増加している。このため、マイクロコンピュータで使用できるメモリのサイズ拡張が求められている。
【０００３】
メモリサイズの拡張をＣＰＵのアドレス信号のビット数を増加させて実現する方法は、命令コードを含むシステム変更を伴うため変更作業量が多く、開発期間やコストが増加するなどの問題がある。
【０００４】
このため、コスト増加を抑制しながらメモリサイズの拡張を実現する方法が提案され実装されている。
【０００５】
図５は、メモリサイズの拡張を行なう従来のマイクロコンピュータの回路構成例の主要部分を示すブロック図である。このマイクロコンピュータ９００は、ＣＰＵ９０１と、制御レジスタ９０２と、アドレス変換器９０３と、プログラムやデータを格納するメモリ９０４等から構成される。ＣＰＵ９０１から出力されるアドレスバス出力信号９０５は、制御レジスタ９０２とアドレス変換器９０３に入力される。制御レジスタ９０２から出力されるアドレス変換制御信号９０６は、アドレス変換器９０３に入力される。また、アドレス変換器９０３から出力されるメモリアドレスバス入力信号９０７は、メモリ９０４に入力される。データバス９０８は、ＣＰＵ９０１と制御レジスタ９０２とメモリ９０４とに接続される。
【０００６】
図６は、図５のマイクロコンピュータ９００のメモリマップを示す。ＣＰＵ９０１のアドレスによって指定可能なメモリ空間が９１１であるのに対し、メモリ９０４の物理メモリ空間は９１２である。この拡張されたメモリ９０４の物理メモリ空間９１２は、ＣＰＵ９０１が直接アクセス可能なメモリ空間９１１よりも大きい。
【０００７】
したがって、ＣＰＵ９０１から出力されるアドレスによって、メモリ９０４の物理メモリ空間９１２のうち領域９１４に対してはアドレス変換せずに直接アクセスすることができる。しかしながら、メモリ９０４の物理メモリ空間９１２の領域９１５に対しては直接アクセスすることができないため、ＣＰＵ９０１が出力するアドレスを領域９１５に対応するアドレスに変換する動作を必要とする。
【０００８】
図７は、マイクロコンピュータ９００のメモリアクセス動作波形を示す。ここでは、図６において、物理メモリ空間９１２の領域９１４をアクセスした後に領域９１５をアクセスして、さらに領域９１４をアクセスする場合を説明する。
【０００９】
ＣＰＵ９０１は、アドレス変換せずにアクセスできる領域９１４の例えばメモリアドレスＡ０、Ａ１にアクセスした後、制御レジスタ９０２のアドレスＤ０にアクセスし、アドレス変換制御信号９０６をＨｉｇｈレベルにする。
【００１０】
このアドレス変換制御信号９０６がＨｉｇｈレベルの間は、ＣＰＵ９０１から出力される例えばアドレスバス出力信号Ｂ０、Ｂ１は、アドレス変換器９０３で領域９１５をアクセスする例えばアドレスＣ０、Ｃ１にアドレス変換される。次に、ＣＰＵ９０１は、制御レジスタ９０２のアドレスＤ０にアクセスし、アドレス変換制御信号９０６をＬｏｗレベルにする。その後、ＣＰＵ９０１は、アドレス変換せずにアクセスできる領域９１４の例えばメモリアドレスＡ２、Ａ３にアクセスする。
【００１１】
このように、上述した従来の方式では、図６における物理メモリ空間９１２の領域９１５にアクセスする際には制御レジスタ９０２へのアクセスが必要となり、パフォーマンスの低下、コード効率の低下を招いてしまう問題があった。
【００１２】
また、複数のメモリを異なるアドレスに割り付けるのではなく、少なくとも一部が重複するアドレスに割り付け、ＣＰＵのステータス信号を用いてメモリの選択することでパフォーマンスを低下させないようにしたメモリ拡張を行なう技術がある（例えば、特許文献１参照。）。
【特許文献１】特開平８−６３３９２号公報（第４頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１のようにメモリの総容量を増加させるメモリ拡張方式では、ステータス信号で選択する個々のメモリ容量（メモリサイズ）をシステム開発段階において必要なプログラムコードやデータコードのサイズが変動する時に柔軟に変更するのが困難となる。このため、それぞれのメモリに増設のメモリ容量を設けることになり、チップ面積の増加を招きコストアップとなる問題があった。
【００１４】
本発明は、上記問題を解決するためになされたもので、システム開発段階でプログラムコードとデータコードを格納するメモリのメモリサイズの比率変更が可能で、パフォーマンスやコード効率を低下させないでメモリ拡張を行なうマイクロコンピュータを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明のマイクロコンピュータは、ＣＰＵと、前記ＣＰＵからの第１のメモリアドレスとステータス信号とが入力され、前記第１のメモリアドレスで指定できるメモリ空間よりも大きなメモリ空間を指定できる第２のメモリアドレスを前記ステータス信号に基づいて出力するアドレス変換手段と、前記アドレス変換手段から出力する前記第２のメモリアドレスによってアドレッシングされ、命令コードまたはデータコードを読み出すメモリとを備え前記第２のメモリアドレスの少なくとも一部の値は、前記第１のメモリアドレスの値と同一となることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、システム開発段階でプログラムコードとデータコードを格納するメモリのメモリサイズの比率変更が可能で、メモリアクセスのパフォーマンスやコード効率を低下させないで、ＣＰＵが直接アクセスできるメモリサイズに比べてメモリサイズの拡張を可能とするマイクロコンピュータを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施例を説明する。
【実施例】
【００１８】
本発明の実施例に係るマイクロコンピュータを、図１乃至図４を参照して説明する。
【００１９】
図１は、本発明の実施例に係るメモリ拡張機能を有するマイクロコンピュータの回路構成を示すブロック図である。図２は、メモリ拡張機能を実現するアドレス変換回路の構成を示すブロック図である。図３は、本発明の実施例に係るマイクロコンピュータのメモリマップ図である。図４は、本発明の実施例に係るマイクロコンピュータのメモリアクセス動作の動作波形図である。この実施例に用いる図は、説明に必要な範囲に省略模式化されている。
【００２０】
図１に示すマイクロコンピュータ１００は、プログラムを実行するＣＰＵ１０１と、ＣＰＵ１０１から出力されるメモリアドレスをＣＰＵ１０１からのステータス信号に従ってアドレス変換するアドレス変換回路１０２と、プログラムコードやデータコードが格納されているメモリ１０３から構成される。
【００２１】
ＣＰＵ１０１から出力されるＣＰＵアドレスバス出力信号１０４と、命令フェッチ／データアクセスを識別するアクセス識別信号１０５は、アドレス変換回路１０２に入力される。また、アドレス変換回路１０２から出力されるメモリアドレスバス入力信号１０６は、メモリ１０３のアドレス入力に入力される。データバス１０７は、ＣＰＵ１０１とメモリ１０４とに接続される。
【００２２】
図２（Ａ）は、アドレス変換回路１０２の構成を示し、加算器１１０と、２入力１出力のセレクタ１２０と、あらかじめ設定された拡張サイズを示すバイアス値１３０とから構成される。
【００２３】
ＣＰＵ１０１から出力されるアドレスバス出力信号１０４は、加算器１１０とセレクタ１２０のデータ入力にそれぞれ入力される。加算器１１０は、入力されたアドレスバス出力信号１０４とバイアス値１３０からの出力信号１１１とを入力して加算し、加算結果をアドレス信号１１２として出力する。
【００２４】
セレクタ１２０は、加算器１１０からのアドレス信号１１２と、アドレスバス出力信号１０４の上位側に「０」を付加して拡張した信号１１３（アドレス信号１１２と同じビット幅）とがデータ入力され、ＣＰＵ１０１から出力される命令フェッチ／データアクセスを識別するアクセス識別信号１０５により、２つのアドレスのいずれか一方のアドレスデータを選択出力して、メモリアドレスバス入力信号１０６としてメモリ１０３に出力する。アドレス変換回路１０２のバイアス値１３０には、メモリ１０３に対しＣＰＵ１０１が直接アドレス可能なメモリサイズより拡張されたサイズをアクセス出来る値があらかじめ設定される。
【００２５】
次に、図３および図４を参照しながら、ＣＰＵ１０１がメモリ１０３からプログラムコードやデータコードをアクセスする時のアドレス変換回路１０２の動作の詳細を説明する。
【００２６】
ユーザが開発するアプリケーションプログラムがＣＰＵ１０１のアクセスできるメモリサイズより大きくなった時、そのプログラムを格納できるようにメモリ１０３のサイズ拡張が行われる。その結果、図３のメモリマップに示すように、ＣＰＵ１０１が直接アクセスできるメモリ空間２０１より大きい物理メモリ空間２０２がメモリ１０３に形成される。
【００２７】
このメモリ１０３の物理メモリ空間２０２には、プログラムコードが領域２０４に、データコードが領域２０５に格納される。また、この発明ではプログラムコードおよびデータコードが重複する領域２０６が設けられている。
【００２８】
そして、ＣＰＵ１０１から出力されるアドレスバス出力信号１０４によって直接アクセスできる領域は、メモリ１０３の物理メモリ空間２０２の領域２０４である。一方、メモリ１０３の物理メモリ空間２０２の領域２０５をアクセスする場合は、ＣＰＵ１０１から出力されるアドレスバス出力信号１０４は、アドレス変換回路１０２によって領域２０５に対応するアドレス変換される。
【００２９】
例えば、ＣＰＵ１０１のアドレスバス出力信号１０４のアドレスバス幅が１６ビットであり、拡張されたメモリ１０３のメモリ容量が９６Ｋワード（主領域６４Ｋ＋拡張部３２Ｋ）の時、図３のプログラムコードが格納される領域２０４の先頭アドレスＮ１は”０００００”Ｈ（Ｈ：１６進数を示す）であり、最終アドレスＮ３は”０ＦＦＦＦ”Ｈとなる。また、データコードを格納する領域２０５の先頭アドレスＮ２は例えば”０８０００”Ｈであるとすると、最終アドレスＮ４は”１７ＦＦＦ”Ｈとなる。したがって、この例ではバイアス値１３０には”８０００”Ｈの値が設定されることになる。
【００３０】
次に、実施例に係るマイクロコンピュータ１００の動作を、図４を参照して説明する。
【００３１】
図４のメモリアクセス動作遷移は、マイクロコンピュータ１００のＣＰＵ１０１がメモリ１０３の領域２０４に格納されるプログラムコードの読み出しアクセスを行った後に、データコードが格納された領域２０５の読み出しアクセスを行って、再び領域２０４のプログラムコードの読み出しを行う例を示している。
【００３２】
まず、第１および第２サイクルでＣＰＵ１０１は、アドレスバス出力信号１０４として例えばアドレスＡ０、Ａ１を出力するとともに、プログラムコードを読み出すため命令フェッチ／データアクセスを識別するＬｏｗレベルのアクセス識別信号１０５を出力する。
【００３３】
アドレス変換回路１０２のセレクタ１２０は、アクセス識別信号１０５がＬｏｗであるので、ＣＰＵ１０１からのアドレスバス出力信号１０４に上位アドレスに「０」を付与した信号１１３を選択して、メモリアドレスバス入力信号１０６としてメモリ１０３に出力する。このため、ＣＰＵ１０１からのアドレスバス出力信号１０４は、アドレス変換されることなくメモリ１０３のアドレス入力に入力される。そして、メモリ１０３ではアドレスＡ０，Ａ１に従ってアドレッシングされ、領域２０４に格納されたプログラムコードがデータバス１０７を介してＣＰＵ１０１に読み込まれる。
【００３４】
次に、第３および第４サイクルでＣＰＵ１０１は、例えばアドレスＢ０、Ｂ１を出力するとともに、データコードを読み出すため命令フェッチ／データアクセスを識別するＨｉｇｈレベルのアクセス識別信号１０５を出力する。
【００３５】
アドレス変換回路１０２のセレクタ１２０は、命令フェッチ／データアクセス識別信号１０５がＨｉｇｈであるので、ＣＰＵ１０１からのアドレスバス出力信号１０４のアドレス値とバイアス値１３０の出力信号１１１の値とを入力して加算する加算器１１０から出力されるアドレス１１２を選択して、メモリアドレスバス入力１０６としてメモリ１０３に出力する。これにより、ＣＰＵ１０１から出力されたアドレスＢ０、Ｂ１はアドレス変換回路１０２によって例えばアドレスＣ０、Ｃ１に変換されて、メモリ１０３のアドレス入力に入力される。そして、メモリ１０３ではアドレスＣ０、Ｃ１に従ってアドレッシングされ、領域２０５に格納されたデータコードがデータバス１０７を介してＣＰＵ１０１に読み込まれる。
【００３６】
また、第５および第６サイクルでＣＰＵ１０１は、例えばアドレスＡ２、Ａ３を出力するとともに、プログラムコードを読み出すため命令フェッチ／データアクセスを識別するＬｏｗレベルのアクセス識別信号１０５を出力する。
【００３７】
アドレス変換回路１０２のセレクタ１２０は、命令フェッチ／データアクセスを識別するアクセス識別信号１０５がＬｏｗであるので、第１および第２サイクルと同様にＣＰＵ１０１からのアドレスバス出力信号１０４のアドレスＡ２，Ａ３は、アドレス変換せずにメモリ１０３のアドレス入力に入力される。そして、メモリ１０３ではアドレスＡ２、Ａ３に従ってアドレッシングされ、領域２０４に格納されたプログラムコードがデータバス１０７を介してＣＰＵ１０１に読み込まれる。
【００３８】
このようにして、マイクロコンピュータ１００は、プログラムコード領域とデータコード領域にアクセスする時、アドレス変換回路１０２に対して特別な設定のための命令実行やその為のアクセスサイクルを必要とせずにメモリ１０３をアクセスすることができ、パフォーマンスの低下やコード効率の低下を回避できる。
【００３９】
また上述した本実施例のアドレス変換回路１０２を備えるマイクロコンピュータ１００を用いると、ユーザはプログラム開発で、プログラム（命令）コード領域とデータコード領域を区別してアプリケーションプログラムを開発することで、ＣＰＵ１０１の直接アクセスするメモリサイズを越えたサイズのアプリケーションプログラムをメモリ１０３に格納することが可能になる。
【００４０】
また、ユーザが開発段階でプログラムを変更してプログラムコードの領域サイズが変更となっても、データコードの領域との総和がメモリ１０３のメモリ容量のサイズを越えない限りアドレス変換回路などを変更する必要がなく、ユーザのプログラム開発が容易になる。
【００４１】
データコード領域に音声データ、文字コードの画像データなどの定数やパターンデータを格納するだけでなく、たとえばサイン波のテーブル（時間と振幅値）を格納すれば、モータ制御における電流値を計算する時などに参照することで高速応答を実現するとともに、計算のためのプログラムコードを減らすことができて、プログラムコードとデータコードの領域比率調整が容易になる。
【００４２】
本発明は、上記実施例に限定されるものではなく、発明の要旨を逸脱しない範囲で、種々、変形して実施できることは勿論である。
【００４３】
たとえば、図２（Ｂ）に示すアドレス変換回路１０２のように、セレクタ１２０を、加算器１１０の入力側に設け、セレクタ１２０にはバイアス値１３０の出力信号１１１と値が０（ゼロ）である信号１１４とが入力され、命令フェッチ／データアクセスを識別するアクセス識別信号１０５によってどちらか一方の入力を選択して信号１１５に出力させ、加算器１１０に入力させるようにしてもよい。この場合、加算器１１０の出力はメモリアドレスバス入力１０６となりメモリ１０３のメモリアドレスに入力される。このようにすることでＣＰＵアドレスバス出力信号１０４の入力先がアドレス変換回路１０２内では加算器１１０の１箇所となってＣＰＵ１０１のアドレス出力ドライバの負荷が減ってマイクロプロセッサの高速化や低消費電力化が図れるとともに、セレクタ１２０のビット幅が１ビット減って回路規模が削減できる。
【図面の簡単な説明】
【００４４】
【図１】本発明に係るマイクロコンピュータの実施例の構成を示すブロック図。
【図２】本実施例のアドレス変換回路の第１および第２の構成を示すブロック図。
【図３】本実施例のマイクロコンピュータのメモリマップを示す図。
【図４】本実施例のマイクロコンピュータの動作遷移の一例を示す図。
【図５】従来のマイクロコンピュータの構成を示すブロック図。
【図６】従来のマイクロコンピュータのメモリマップを示す図。
【図７】従来のマイクロコンピュータの動作遷移の一例を示す図。
【符号の説明】
【００４５】
１００、９００  マイクロコンピュータ
１０１、９０１  ＣＰＵ
１０２  アドレス変換回路
１０３、９０４  メモリ
１０４、９０５  ＣＰＵアドレスバス出力信号
１０５  命令フェッチ／データアクセス識別信号
１０６、９０７  メモリアドレスバス入力信号
１０７、９０８  データバス信号
９０２  制御レジスタ
９０３  アドレス変換器
９０６  アドレス変換制御信号
１１０  加算器
１２０  セレクタ
１３０  バイアス値
２０１  ＣＰＵのメモリ空間
２０２  メモリのメモリ空間
２０３  ＣＰＵが直接アクセスできるメモリ空間
２０４  プログラムコード領域
２０５  データコード領域
【図１】
2008003867.tif 000003
【図２】
2008003867.tif 000004
【図３】
2008003867.tif 000005
【図４】
2008003867.tif 000006
【図５】
2008003867.tif 000007
【図６】
2008003867.tif 000008
【図７】
2008003867.tif 000009