(57)【要約】【課題】データアクセスの効率を向上させ、命令実行速度の向上を図ることができるようにする。【解決手段】  命令仮想アドレス空間１０１は、物理アドレス空間１０３において、命令のみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスのみにより構成される。データ仮想アドレス空間１０２は、物理アドレス空間１０３において、データのみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスのみにより構成される。命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２は、相互に重複した仮想アドレスを使用している。命令アドレス変換部は、命令仮想アドレス空間１０１の仮想アドレスを、データアドレス変換部は、データ仮想アドレス空間１０２の仮想アドレスを、単一の物理アドレス空間１０３の物理アドレスに変換する。本発明は、被写体を撮像する撮像装置に適用することができる。【選択図】図７
2004326729.tif 000002
【特許請求の範囲】
【請求項１】
演算を実行する演算手段と、
前記演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段とを備える情報処理装置において、
前記演算手段と前記記憶手段との間において、前記命令または前記データを転送する複数個の転送手段と、
前記演算手段により指定される仮想アドレスを、前記記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段と
を備え、
前記転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、
前記アドレス変換手段は、前記転送手段の前記仮想アドレス空間を、単一の物理アドレス空間に変換する
ことを特徴とする情報処理装置。
【請求項２】
前記転送手段は、前記命令を転送する命令バスと、前記データを転送するデータバスの２個で構成され、
前記記憶手段へのアクセスを伴う命令の仮想アドレスと、前記命令によりアクセスされるデータの仮想アドレスとの差は、前記命令中のオペランドによって相対アドレスとして直接指定できる距離以下である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記転送手段ごとに、前記仮想アドレスをタグとして用いるキャッシュをさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記仮想アドレス空間は、前記命令の仮想アドレスと前記データの仮想アドレスの境界が、前記キャッシュのライン境界となるように仮想アドレスが配置されて構成される
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記転送手段を識別してキャッシュデータを特定するキャッシュをさらに備える
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記仮想アドレス空間は、前記命令の仮想アドレスと前記データの仮想アドレスの境界が、前記キャッシュのライン境界となるように仮想アドレスが配置されて構成される
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記アドレス変換手段により変換されるアドレスの変換単位内に、前記命令の仮想アドレスと前記データの仮想アドレスの両方が含まれる場合、前記変換単位に含まれるデータは、定数データのみである
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記アドレス変換手段は、前記転送手段の前記仮想アドレス空間を、アドレスが相互に重複しない前記単一の物理アドレス空間に変換する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記記憶手段は、書き込み禁止領域および書き込み可能領域により構成され、
前記記憶手段へのアクセスを伴う命令中のオペランドによって相対アドレスとして直接指定できる範囲の仮想アドレス空間に、前記書き込み禁止領域と書き込み可能領域の両方の仮想アドレスが配置されている
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記記憶手段は、少なくとも１つのＩ／Ｏ（Input / Output）レジスタにより構成され、
前記Ｉ／Ｏレジスタへのアクセスを伴う前記命令の仮想アドレスと、前記Ｉ／Ｏレジスタを示す仮想アドレスとの差は、前記命令中のオペランドによって相対アドレスとして直接指定できる距離以下である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
同一の前記Ｉ／Ｏレジスタを示す仮想アドレスは、前記仮想アドレス空間において複数の領域に分けて配置される
ことを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記アドレス変換手段は、前記仮想アドレスを表すn＋ｍビットのうちの、上位ｎビットを変換し、変換後の上位ｎビットと残りの下位ｍビットのうちの、少なくとも１ビット以上を入れ替えて、前記仮想アドレスを前記物理アドレスに変換する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記アドレス変換手段は、前記仮想アドレスを表すn＋ｍビットのうちの、上位ｎビットを変換し、残りの下位のｍビットのうちの、少なくとも１ビット以上を入れ替えて、前記仮想アドレスを前記物理アドレスに変換する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１４】
演算を実行する演算手段と、
前記演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、
前記演算手段と前記記憶手段との間において、前記命令または前記データを転送する複数個の転送手段と、
前記演算手段により指定される仮想アドレスを、前記記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段と
を備える情報処理装置の情報処理方法において、
前記転送手段が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、
前記アドレス変換手段には、前記転送手段の前記仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備える
ことを特徴とする情報処理方法。
【請求項１５】
前記転送手段が有する前記独立の仮想アドレス空間が、前記他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップを
さらに備えることを特徴とする請求項１４に記載の情報処理方法。
【請求項１６】
演算を実行する演算手段と、
前記演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、
前記演算手段と前記記憶手段との間において、前記命令または前記データを転送する複数個の転送手段と、
前記演算手段により指定される仮想アドレスを、前記記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段と
を備える情報処理装置のプログラムであって、
前記転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、
前記アドレス変換手段には、前記転送手段の前記仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備える
ことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
【請求項１７】
前記転送手段が有する前記独立の仮想アドレス空間が、前記他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップを
さらに備えることを特徴とする請求項１６に記載の記録媒体。
【請求項１８】
演算を実行する演算手段と、
前記演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、
前記演算手段と前記記憶手段との間において、前記命令または前記データを転送する複数個の転送手段と、
前記演算手段により指定される仮想アドレスを、前記記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段と
を備える情報処理装置を実行させるプログラムであって、
前記転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、
前記アドレス変換手段には、前記転送手段の前記仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備える
ことを特徴とするプログラム。
【請求項１９】
前記転送手段が有する前記独立の仮想アドレス空間が、前記他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップを
さらに備えることを特徴とする請求項１８に記載のプログラム。
【請求項２０】
被写体を撮像する撮像手段と、
前記撮像手段により撮像された被写体の画像データを符号化する符号化手段と、
前記符号化手段が前記画像データを符号化処理するための命令またはデータを指令する演算を実行する演算手段と、
前記演算手段により実行される演算を実行するための前記命令またはデータを記憶する記憶手段とを備える撮像装置において、
前記演算手段と前記記憶手段との間において、前記命令または前記データを転送する複数個の転送手段と、
前記演算手段により指定される仮想アドレスを、前記記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段と
を備え、
前記転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、
前記アドレス変換手段は、前記転送手段の前記仮想アドレス空間を、単一の物理アドレス空間に変換し、
前記符号化手段は、前記演算手段により指定され、前記アドレス変換手段により変換されたアドレスに対応する前記記憶手段の前記命令またはデータに基づいて、前記画像データの符号化処理を実行する
ことを特徴とする撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、プログラム、並びに撮像装置に関し、特に、データアクセスの効率を向上させ、命令実行速度の向上を図ることができるようにした情報処理装置および方法、記録媒体、プログラム、並びに撮像装置に関する。
【背景技術】
【０００２】
従来、特許文献１に示されるように、命令とデータのバスが分離された情報処理装置が存在する。このような情報処理装置においては、１つの仮想アドレス空間を用いて、メモリに、命令とデータの転送を行っていた。すなわち、ＣＰＵでは、命令は、仮想アドレス空間を用いて、命令バスで転送を行い、データは、同一の仮想アドレス空間を用いて、データバスで転送を行っていた。
【０００３】
図１は、従来の仮想アドレス空間と物理アドレス空間の構成例を示している。図１においては、仮想アドレス空間１は、ＣＰＵ（Central Processing Unit）から見えるメモリのアドレス空間であり、物理アドレス空間２は、実際のメモリの物理アドレス空間である。なお、図１の例においては、仮想アドレス空間１と物理アドレス空間２とが１対１に対応しているが、複数の仮想アドレス空間と１つの物理アドレス空間とが、複数対１で対応している場合もある。
【０００４】
図１の例の場合、仮想アドレス空間１は、アドレス順に、命令とデータの仮想アドレスが混在して配置されているアドレス領域１−１乃至１−５、およびデータのみの仮想アドレスが配置されているアドレス領域１−６乃至１−８により構成される。なお、各領域の命令またはデータは、アドレス変換の最小単位（例えば、４ｋバイト）であるページサイズ単位で配置されている。
【０００５】
仮想アドレス空間１のアドレス領域１−１に配置されている命令とデータのページは、実際には、物理アドレス空間２のアドレス領域２−１に記憶されている。仮想アドレス空間１のアドレス領域１−２に配置されている命令とデータのページは、実際には、物理アドレス空間２のアドレス領域２−２に記憶されている。仮想アドレス空間１の領域１−３に配置されている命令とデータのページは、実際には、物理アドレス空間２のアドレス領域２−６に記憶されている。仮想アドレス空間１の領域１−４に配置されている命令とデータのページは、実際には、物理アドレス空間２のアドレス領域２−４に記憶されている。
【０００６】
また、仮想アドレス空間１のアドレス領域１−５に配置されている命令とデータのページは、実際には、物理アドレス空間２のアドレス領域２−３に記憶されている。仮想アドレス空間１のアドレス領域１−６に配置されているデータのページは、実際には、物理アドレス空間２のアドレス領域２−５に記憶されている。仮想アドレス空間１のアドレス領域１−７に配置されているデータのページは、実際には、物理アドレス空間２のアドレス領域２−８に記憶されている。仮想アドレス空間１のアドレス領域１−８に配置されているデータのページは、実際には、物理アドレス空間２のアドレス領域２−７に記憶されている。
【０００７】
以上のように、仮想アドレス空間１と物理アドレス空間２において、仮想アドレスと物理アドレスが１対１に対応している。したがって、ＣＰＵが、仮想アドレス空間１を参照して、命令またはデータの仮想アドレスを指定すると、指定された仮想アドレスは、対応する物理アドレスに変換される。そして、変換された物理アドレスに対応する命令またはデータが、メモリから読み出されて、ＣＰＵに転送される。このようにして、ＣＰＵは、自分が指定した仮想アドレスの命令を実行することができる。
【０００８】
しかしながら、従来は、命令を転送する場合にも、データを転送する場合にも、図１に示される同一の仮想アドレス空間を参照しており、また、命令で使用する長いデータなどは別途データとして保持する必要があるため、命令とデータの仮想アドレスは、混在して仮想アドレス空間に配置されてしまう。
【０００９】
図２は、図１の仮想アドレス空間１のアドレス領域１−１の構成例を示す。図２の例の場合、アドレス領域１−１は、上から順に、命令１乃至４、ジャンプ命令１、データ１、データ２、および命令５乃至命令９が記憶された仮想アドレスで構成されている。ＣＰＵは、アドレス領域１−１の仮想アドレスを指定し、その仮想アドレスに記憶された命令を実行する。すなわち、ＣＰＵは、例えば、命令１乃至命令９の仮想アドレスを指定して、命令１から順に命令を実行していく。しかしながら、図２の例においては、命令４と命令５の仮想アドレスの間の仮想アドレスに、データ１およびデータ２が記憶されている。したがって、命令１から順に実行をしていくと、命令４の次に、命令５を実行するために、命令４から命令５まで無条件に分岐するためのジャンプ命令１を、命令４が記憶された仮想アドレスの直後の仮想アドレスに配置する必要がある。
【００１０】
また、図３に示されるように、命令３によって、データ３を読み出したい場合に、データ３が記憶された仮想アドレスが命令３のオペランドで指定不可能な距離ｄ２（命令３の仮想アドレスから遠い距離ｄ２）の仮想アドレスに記憶されているときには、命令３のオペランドにおいて、データ３を直接指定することができない。このためデータ３を読み出すには、データ３の相対アドレスとしてのデータ２を、命令３から直接オペランド指定可能な距離ｄ１にある仮想アドレスに一旦保持させる必要がある。この場合、命令３によって、データ２として保持されているデータ３の相対アドレスを読み出し、その相対アドレスに従って、命令４により、データ３を読み出すことができる。しかしながら、直接指定する場合と較べて、命令が２つに増えてしまい、また、命令中に保持するデータ（相対アドレス）も増えてしまう。
【００１１】
さらに、命令とデータのバスが分離している場合、情報処理装置は、図４に示されるように、通常、命令キャッシュ（メモリ）１１とデータキャッシュ（メモリ）１２を別々に備える。図４の例の場合、アドレス領域１−１において、ＣＰＵがジャンプ命令１の仮想アドレスを指定すると、ジャンプ命令１、データ１、データ２および命令５までの範囲ｅ１が、命令キャッシュ１１に登録される。また、ＣＰＵがデータ１の仮想アドレスを指定すると、同様の範囲ｅ１が、データキャッシュ１２に登録される。すなわち、命令キャッシュ１１には、ジャンプ命令１および命令５だけでなく、命令としては使用されないデータ１および２（図中ハッチ部分）も登録されてしまう。一方、データキャッシュ１２には、データ１および２だけでなく、データとしては使用されないジャンプ命令１および命令５（図中ハッチ部分）が登録されてしまう。
【００１２】
【特許文献１】特開平６−７５８５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
以上のように、命令とデータのバスが分離された情報処理装置においては、同一の仮想メモリ空間１を用いるため、仮想メモリ空間１において、命令とメモリの仮想アドレスが混在してしまう。これにより、命令中にデータを置く場合には、命令実行時に、そのデータをジャンプするためのジャンプ命令などの命令数が増加してしまい、命令実行時間がかかってしまうといった課題があった。また、命令が目的とするデータの仮想アドレスが、命令のオペランドにより指定不可能な距離ｄ２にある場合には、目的とするデータの相対アドレスを別のデータとして記憶しておく必要があり、そのアドレスを取得するための命令数と実行時間がかかってしまう課題があった。
【００１４】
さらに、命令キャッシュ１１に、データが登録され、データキャッシュ１２に命令が登録されてしまい、貴重なメモリ領域を消費してしまう課題があった。
【００１５】
本発明はこのような状況に鑑みてなされたものであり、データアクセスの効率を向上させ、命令実行速度の向上を図ることができるようにするものである。
【課題を解決するための手段】
【００１６】
本発明の情報処理装置は、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段とを備え、転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、アドレス変換手段は、転送手段の仮想アドレス空間を、単一の物理アドレス空間に変換することを特徴とする。
【００１７】
転送手段は、命令を転送する命令バスと、データを転送するデータバスの２個で構成され、記憶手段へのアクセスを伴う命令の仮想アドレスと、命令によりアクセスされるデータの仮想アドレスとの差は、命令中のオペランドによって相対アドレスとして直接指定できる距離以下であるようにすることができる。
【００１８】
転送手段ごとに、仮想アドレスをタグとして用いるキャッシュをさらに備えるようにすることができる。
【００１９】
仮想アドレス空間は、命令の仮想アドレスとデータの仮想アドレスの境界が、キャッシュのライン境界となるように仮想アドレスが配置されて構成されるようにすることができる。
【００２０】
転送手段を識別してキャッシュデータを特定するキャッシュをさらに備えるようにすることができる。
【００２１】
仮想アドレス空間は、命令の仮想アドレスとデータの仮想アドレスの境界が、キャッシュのライン境界となるように仮想アドレスが配置されて構成されるようにすることができる。
【００２２】
アドレス変換手段により変換されるアドレスの変換単位内に、命令の仮想アドレスとデータの仮想アドレスの両方が含まれる場合、変換単位に含まれるデータは、定数データのみであるようにすることができる。
【００２３】
アドレス変換手段は、転送手段の仮想アドレス空間を、アドレスが相互に重複しない単一の物理アドレス空間に変換するようにすることができる。
【００２４】
記憶手段は、書き込み禁止領域および書き込み可能領域により構成され、記憶手段へのアクセスを伴う命令中のオペランドによって相対アドレスとして直接指定できる範囲の仮想アドレス空間に、書き込み禁止領域と書き込み可能領域の両方の仮想アドレスが配置されているようにすることができる。
【００２５】
記憶手段は、少なくとも１つのＩ／Ｏ（Input / Output）レジスタにより構成され、Ｉ／Ｏレジスタへのアクセスを伴う命令の仮想アドレスと、Ｉ／Ｏレジスタの仮想アドレスとの差は、命令中のオペランドによって相対アドレスとして直接指定できる距離以下であるようにすることができる。
【００２６】
同一のＩ／Ｏレジスタを示す仮想アドレスは、仮想アドレス空間において複数の領域に分けて配置されるようにすることができる。
【００２７】
アドレス変換手段は、仮想アドレスを表すn＋ｍビットのうちの、上位ｎビットを変換し、変換後の上位ｎビットと残りの下位ｍビットのうちの、少なくとも１ビット以上を入れ替えて、仮想アドレスを物理アドレスに変換するようにすることができる。
【００２８】
アドレス変換手段は、仮想アドレスを表すn＋ｍビットのうちの、上位ｎビットを変換し、残りの下位のｍビットのうちの、少なくとも１ビット以上を入れ替えて、仮想アドレスを物理アドレスに変換するようにすることができる。
【００２９】
本発明の情報処理方法は、演算を実行する演算手段と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段とを備える情報処理装置の情報処理方法において、転送手段が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、アドレス変換手段には、転送手段の仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備えることを特徴とする。
【００３０】
転送手段が有する独立の仮想アドレス空間が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップをさらに備えるようにすることができる。
【００３１】
本発明の記録媒体に記録されているプログラムは、演算を実行する演算手段と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段とを備える情報処理装置のプログラムであって、転送手段が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、アドレス変換手段には、転送手段の仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備えることを特徴とする。
【００３２】
転送手段が有する独立の仮想アドレス空間が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップをさらに備えるようにすることができる。
【００３３】
本発明のプログラムは、演算を実行する演算手段と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段と、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段とを備える情報処理装置を実行させるプログラムであって、転送手段が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、アドレス変換手段には、転送手段の仮想アドレス空間を、単一の物理アドレス空間に変換させる変換ステップを備えることを特徴とする。
【００３４】
転送手段が有する独立の仮想アドレス空間が、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成されるように仮想アドレスを割り当てる割り当てステップをさらに備えるようにすることができる。
【００３５】
本発明の撮像装置は、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段とを備え、転送手段は、他の転送手段の仮想アドレス空間と相互に重複しているアドレスにより構成される独立の仮想アドレス空間をそれぞれ有し、アドレス変換手段は、転送手段の仮想アドレス空間を、単一の物理アドレス空間に変換し、符号化手段は、演算手段により指定され、アドレス変換手段により変換されたアドレスに対応する記憶手段の命令またはデータに基づいて、画像データの符号化処理を実行することを特徴とする。
【００３６】
本発明においては、他の仮想アドレス空間と相互に重複しているアドレスにより構成される仮想アドレス空間が、単一の物理アドレス空間に変換される。
【発明の効果】
【００３７】
本発明によれば、データアクセスの効率を向上させ、命令実行速度の向上を図ることができる。また、本発明によれば、無駄なメモリ領域が削減される。
【発明を実施するための最良の形態】
【００３８】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００３９】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００４０】
本発明によれば、演算を実行する演算手段と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段とを備える情報処理装置が提供される。この情報処理装置は、演算を実行する演算手段（例えば、図５のＣＰＵ６１）と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段（例えば、図５のメモリ６２）とを備える情報処理装置（例えば、図５の情報処理装置５１）において、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段（例えば、図５の命令バス７１およびデータバス７２）と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段（例えば、図５の命令アドレス変換部６４またはデータアドレス変換部６６）とを備え、転送手段（例えば、図５の命令バス７１）は、他の転送手段（例えば、図５のデータバス７２）の仮想アドレス空間（例えば、図６のデータ仮想アドレス空間１０２）と相互に重複しているアドレスにより構成される独立の仮想アドレス空間（例えば、図６の命令仮想アドレス空間１０１）をそれぞれ有し、アドレス変換手段（例えば、図５の命令アドレス変換部６４）は、転送手段の仮想アドレス空間（例えば、図６の命令仮想アドレス空間１０１）を、単一の物理アドレス空間（例えば、図７の物理アドレス空間１０３）に変換することを特徴とする。
【００４１】
この情報処理装置は、転送手段ごとに、仮想アドレスをタグとして用いるキャッシュ（例えば、図５の命令キャッシュ６３）をさらに備えるようにすることができる。
【００４２】
この情報処理装置は、仮想アドレス空間（例えば、図１１の仮想アドレス空間１２１）は、命令の仮想アドレスとデータの仮想アドレスの境界が、キャッシュのライン境界となるように仮想アドレスが配置されて構成されるようにすることができる。
【００４３】
この情報処理装置は、アドレス変換手段は、転送手段の仮想アドレス空間を、アドレスが相互に重複しない単一の物理アドレス空間（例えば、図７の物理アドレス空間１０３）に変換するようにすることができる。
【００４４】
この情報処理装置は、記憶手段は、書き込み禁止領域（例えば、図１３のＲＯＭのアドレス領域１６１）および書き込み可能領域（例えば、図１３のＲＡＭのアドレス領域１６２）により構成され、記憶手段へのアクセスを伴う命令中のオペランドによって相対アドレスとして直接指定できる範囲の仮想アドレス空間（例えば、図１３のデータ仮想アドレス空間１５１）に、書き込み禁止領域と書き込み可能領域の両方の仮想アドレスが配置されているようにすることができる。
【００４５】
この情報処理装置は、記憶手段は、少なくとも１つのＩ／Ｏ（Input / Output）レジスタにより構成され、Ｉ／Ｏレジスタへのアクセスを伴う命令の仮想アドレス（例えば、図１９の命令仮想アドレス空間２５２）と、Ｉ／Ｏレジスタの仮想アドレス（例えば、図１９のデータ仮想アドレス空間２５３）との差は、命令中のオペランドによって相対アドレスとして直接指定できる距離以下であるようにすることができる。
【００４６】
この情報処理装置は、同一のＩ／Ｏレジスタを示す仮想アドレスは、仮想アドレス空間（例えば、図１９のデータ仮想アドレス空間２５３）において複数の領域に分けて配置されるようにすることができる。
【００４７】
本発明によれば、演算を実行する演算手段（例えば、図５のＣＰＵ６１）と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段（例えば、図５のメモリ６２）と、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段（例えば、図５の命令バス７１およびデータバス７２）と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段（例えば、図５の命令アドレス変換部６４またはデータアドレス変換部６６）とを備える情報処理装置の情報処理方法が提供される。この情報処理方法は、転送手段（例えば、図５の命令バス７１）が、他の転送手段（例えば、図５のデータバス７２）の仮想アドレス空間（例えば、図６のデータ仮想アドレス空間１０２）と相互に重複しているアドレスにより構成される独立の仮想アドレス空間（例えば、図６の命令仮想アドレス空間１０１）をそれぞれ有し、アドレス変換手段（例えば、図５の命令アドレス変換部６４）には、転送手段の仮想アドレス空間（例えば、図６の命令仮想アドレス空間１０１）を、単一の物理アドレス空間（例えば、図７の物理アドレス空間１０３）に変換させる変換ステップ（例えば、図１６のステップＳ１３およびＳ１４）を備えることを特徴とする。
【００４８】
本発明によれば、被写体を撮像する撮像手段（例えば、図１７のＣＣＤ２１５）と、撮像手段により撮像された被写体の画像データを符号化する符号化手段（例えば、図１７のＪＰＥＧ符号化部２２３）と、符号化手段が画像データを符号化処理するための命令またはデータを指令する演算を実行する演算手段（例えば、図１８のＣＰＵ６１）と、演算手段により実行される演算を実行するための命令またはデータを記憶する記憶手段（例えば、図１８のＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１）とを備える撮像装置（例えば、図１７の撮像装置２０１）が提供される。この撮像装置は、演算手段と記憶手段との間において、命令またはデータを転送する複数個の転送手段（例えば、図１８の命令バス７１およびデータバス７２）と、演算手段により指定される仮想アドレスを、記憶手段の物理アドレスに変換する、少なくとも１個のアドレス変換手段（例えば、図１８の命令アドレス変換部６４またはデータアドレス変換部６６）とを備え、転送手段（例えば、図１８の命令バス７１）は、他の転送手段（例えば、図１８のデータバス７２）の仮想アドレス空間（例えば、図１９のデータ仮想アドレス空間２５３）と相互に重複しているアドレスにより構成される独立の仮想アドレス空間（例えば、図１９の命令仮想アドレス空間２５２）をそれぞれ有し、アドレス変換手段（例えば、図１８の命令アドレス変換部６４）は、転送手段の仮想アドレス空間（例えば、図１９の命令仮想アドレス空間２５２）を、単一の物理アドレス空間（例えば、図１９の物理アドレス空間２５１）に変換し、符号化手段は、演算手段により指定され、アドレス変換手段により変換されたアドレスに対応する記憶手段の命令またはデータに基づいて、画像データの符号化処理を実行することを特徴とする。
【００４９】
なお、本発明の記録媒体およびプログラムも、上述した本発明の情報処理方法と基本的に同様の構成であるため、繰り返しになるのでその説明は省略する。
【００５０】
以下、図を参照して本発明の実施の形態について説明する。
【００５１】
図５は、本発明を適用した情報処理装置５１の構成例を表している。ＣＰＵ（Central Processing Unit）６１は、メモリ６２に記憶されている命令やデータを取得し、その命令やデータに従って各種の演算処理を実行する。図５の例においては、情報処理装置５１は、ＣＰＵ６１からの命令の転送を行う命令バス７１とＣＰＵ６１からのデータの転送を行うデータバス７２を別々に有しており、さらに、図６を参照して後述するが、それぞれ独立した仮想アドレス空間である、命令バス７１用の命令仮想アドレス空間１０１とデータバス７２用のデータ仮想アドレス空間１０２を有している。
【００５２】
メモリ６２は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などにより構成されており、ＣＰＵ６１が演算処理を実行するための命令やデータなどを記憶している。
【００５３】
ＣＰＵ６１は、メモリ６２から命令を取得するとき、命令仮想アドレス空間１０１を通して、メモリ６２を見ることにより、命令に対応する仮想アドレスを指示する。ＣＰＵ６１は、指示した命令の仮想アドレスを、命令バス７１を介して、命令キャッシュ６３および命令アドレス変換部６４に出力する。また、ＣＰＵ６１は、メモリ６２からデータを取得するとき、データ仮想アドレス空間１０２を通して、メモリ６２を見ることにより、データに対応する仮想アドレスを指示する。ＣＰＵ６１は、指示したデータの仮想アドレスを、データバス７２を介して、データキャッシュ６５およびデータアドレス変換部６６に出力する。なお、データは、定数、変数、およびレジスタのアドレスなどにより構成される。
【００５４】
命令キャッシュ６３は、仮想アドレスをタグとして、バスコントローラ６７から出力された任意の容量（例えば、１６バイト、３２バイトのキャッシュライン単位）の命令を一時的に記録している。命令キャッシュ６３は、命令キャッシュ６３のタグを参照して、命令バス７１を介して入力された仮想アドレスと命令キャッシュ６３中のタグに記録されている命令の仮想アドレスが一致するか否かを判断し、入力された仮想アドレスと命令キャッシュ６３のタグに記録されている命令の仮想アドレスが一致すると判断した場合、仮想アドレスが一致した命令を、命令バス７１を介して、ＣＰＵ６１に出力する。
【００５５】
命令アドレス変換部６４は、命令キャッシュ６３が、入力された仮想アドレスと命令キャッシュ６３のタグに記録されている命令の仮想アドレスが一致しないと判断した場合、命令バス７１を介して入力された仮想アドレスを、メモリ６２の物理アドレスに変換し、バスコントローラ６７に出力する。
【００５６】
データキャッシュ６５は、仮想アドレスをタグとして、任意の容量（例えば、１６バイト、３２バイトのキャッシュライン単位）のデータを一時的に記録している。データキャッシュ６５は、データキャッシュ６５のタグを参照して、データバス７２を介して入力された仮想アドレスとデータキャッシュ６５のタグに記録されているデータの仮想アドレスが一致するか否かを判断し、入力された仮想アドレスとデータキャッシュ６５のタグに記録されているデータの仮想アドレスが一致すると判断した場合、一致したデータを、データバス７２を介して、ＣＰＵ６１に出力させる。
【００５７】
データアドレス変換部６６は、データキャッシュ６５が、入力された仮想アドレスとデータキャッシュ６５のタグに記録されているデータの仮想アドレスが一致しないと判断した場合、データバス７２を介して入力された仮想アドレスを、メモリ６２の物理アドレスに変換し、バスコントローラ６７に出力する。
【００５８】
また、命令アドレス変換部６４およびデータアドレス変換部６６（両方のうち、どちらか一方としてもよい）は、メモリ６２の読み書きのアクセス権の制御を、アドレス変換単位で行っており、ＣＰＵ６１から書き込み指示が入力された場合など、その仮想アドレスが書き込み不可（読み出しのみの）領域のものであれば、ＣＰＵ６１に例外信号などを通知する。
【００５９】
バスコントローラ６７は、命令アドレス変換部６４からの物理アドレスに対応する命令をメモリ６２より取得し、命令キャッシュ６３および命令バス７１を介して、ＣＰＵ６１に出力する。また、バスコントローラ６７は、データアドレス変換部６６からの物理アドレスに対応するデータをメモリ６２より取得し、データキャッシュ６５およびデータバス７２を介して、ＣＰＵ６１に出力する。
【００６０】
なお、情報処理装置５１においては、命令バス７１およびデータバス７２に対応して、命令キャッシュ６３とデータキャッシュ６５を別々に設けるようにしたが、キャッシュを１つとしてもよい。この場合、キャッシュは、命令バス７１とデータバス７２からのデータを識別して、任意の容量のデータを一時的に記録する。
【００６１】
図６は、図５の情報処理装置５１で用いられる仮想アドレス空間の構成例を示している。図６の例においては、仮想アドレス空間は、それぞれ独立した仮想アドレス空間である、命令バス７１用の命令仮想アドレス空間１０１とデータバス７２用のデータ仮想アドレス空間１０２により構成される。
【００６２】
命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２は、お互いに重複した仮想アドレスを使用している。例えば、命令仮想アドレス空間１０１は、仮想アドレス「０ｘ００００００」乃至「０ｘ１０００００」を使用しており、データ仮想アドレス空間１０２は、仮想アドレス「０ｘ００００００」乃至「０ｘ０１００００」を使用している。すなわち、仮想アドレス「０ｘ００００００」乃至「０ｘ０１００００」は、命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２において重複して用いられている。
【００６３】
このようにして構成される命令アドレス空間１０１およびデータ仮想アドレス空間１０２と、実際のメモリ６２のアドレス空間である物理アドレス空間１０３との対応関係を、図７を参照して説明する。なお、命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２において、上からの配置が同一の行にある場合は、同一の仮想アドレスが使用されているものとする。
【００６４】
図７の例においては、物理アドレス空間１０３は、アドレス順（アドレスの昇順）に、命令のみのページが記憶されているアドレス領域１０３−１乃至１０３−４、データのみのページが記憶されているアドレス領域１０３−５、命令のみのページが記憶されているアドレス領域１０３−６、並びに、データのみのページが記憶されているアドレス領域１０３−７および１０３−８により構成されている。なお、各アドレス領域は、アドレス変換の最小単位（例えば、４ｋバイト）であるページサイズ（アドレス変換）単位で構成されている。
【００６５】
命令仮想アドレス空間１０１は、物理アドレス空間１０３において、命令のみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスのみにより構成される。したがって、命令仮想アドレス空間１０１は、命令のみのページが記憶されているアドレス領域１０３−１に対応する仮想アドレスが配置されるアドレス領域１０１−１、命令のみのページが記憶されているアドレス領域１０３−２に対応する仮想アドレスが配置されるアドレス領域１０１−２、命令のみのページが記憶されているアドレス領域１０３−６に対応する仮想アドレスが配置されるアドレス領域１０１−３、命令のみのページが記憶されているアドレス領域１０３−４に対応する仮想アドレスが配置されるアドレス領域１０１−４、および、命令のみのページが記憶されているアドレス領域１０３−３に対応する仮想アドレスが配置されるアドレス領域１０１−５により構成される。
【００６６】
これに対して、データ仮想アドレス空間１０２は、物理アドレス空間１０３において、データのみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスのみにより構成される。したがって、データ仮想アドレス空間１０２は、データのみのページが記憶されているアドレス領域１０３−５に対応する仮想アドレスが配置されるアドレス領域１０２−１、データのみのページが記憶されているアドレス領域１０３−８に対応する仮想アドレスが配置されるアドレス領域１０２−２、および、データのみのページが記憶されているアドレス領域１０３−７に対応する仮想アドレスが配置されるアドレス領域１０２−３により構成される。
【００６７】
命令アドレス変換部６４は、以上のように構成された命令仮想アドレス空間１０１と物理アドレス空間１０３の対応関係を、命令アドレス変換テーブルとして設定し、記憶している。また、データアドレス変換部６６は、データ仮想アドレス空間１０２と物理アドレス空間１０３の対応関係を、データアドレス変換テーブルとして設定し、記憶している。
【００６８】
そして、命令アドレス変換部６４は、例えば、ＣＰＵ６１より、アドレス領域１０１−１の命令のみのページに対応する仮想アドレスが指定された場合、命令アドレス変換テーブルに基づいて、アドレス領域１０３−１の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−１に記憶されている命令を取得することができる。
【００６９】
同様に、データアドレス変換部６６は、例えば、ＣＰＵ６１より、アドレス領域１０２−１のデータのみのページに対応する仮想アドレスが指定された場合、データアドレス変換テーブルに基づいて、アドレス領域１０３−５の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−５に記憶されているデータを取得することができる。
【００７０】
以上のように、２つのアドレス変換テーブルを使用することにより、命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２が重複した仮想アドレスを用いていても、命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２の仮想アドレスは、相互に重複しない単一の物理アドレス空間１０３の所定のアドレスに変換される。
【００７１】
なお、いまの場合、命令アドレス変換部６４とデータアドレス変換部６６がそれぞれのアドレス変換テーブルを用いて、命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２の重複した仮想アドレスを、単一の物理アドレス空間１０３に変換するようにしたが、命令バス７１から入力された仮想アドレスであるか、データバス７２から入力された仮想アドレスであるか識別子を付加することにより、１つのアドレス変換部で、２つのアドレス変換テーブルに基づいて、アドレスを変換するようにしてもよい。
【００７２】
以上のように、命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２として、仮想アドレス空間を別々に設けるようにしたので、仮想アドレス空間において命令とデータを完全に分離することができる。これにより、データとそのデータを操作する命令を、図１に示される仮想アドレス空間よりも近い仮想アドレス（または、同一の仮想アドレス）に配置できる。また、命令で使用する長い定数などのデータを別途保持する場合も、そのデータは、データ仮想アドレス空間１０２に配置されるため、命令仮想アドレス空間１０１において、図２で上述したようなジャンプ命令１は不要であり、無駄な命令数が増えることが抑制される。
【００７３】
図８は、図７の命令アドレス空間１０１およびデータ仮想アドレス空間１０２のアドレス変換単位のアドレス領域１０１−１および１０２−１の構成例を示す。なお、アドレス領域１０１−１およびアドレス領域１０２−１において、上からの配置が同一の行にある場合は、同一の仮想アドレスが使用されているものとする。
【００７４】
図８の例の場合、命令仮想アドレス空間１０１のアドレス領域１０１−１は、命令１乃至１２に対応する仮想アドレス（命令１乃至１２が記憶された仮想アドレス）で構成されており、データ仮想アドレス空間１０２のアドレス領域１０２−１は、データ１乃至１２に対応する仮想アドレス（データ１乃至１２が記憶された仮想アドレス）により構成されている。
【００７５】
なお、厳密には、ＣＰＵ６１が仮想アドレスを指定すると、指定された仮想アドレスに対応する命令またはデータが、命令キャッシュ６３またはデータキャッシュ６５にある場合は、対応する命令またはデータがＣＰＵ６１に出力され、指定された仮想アドレスに対応する命令またはデータが、命令キャッシュ６３またはデータキャッシュ６５にない場合は、命令アドレス変換部６４またはデータアドレス変換部６６により仮想アドレスが対応する物理アドレスに変換され、バスコントローラ６７により物理アドレスに対応する命令やデータ（物理アドレスに記憶された命令やデータ）がメモリ６２から読み出されて、ＣＰＵ６１に出力されるが、説明の便宜上、ＣＰＵ６１が仮想アドレスを指定すると、その仮想アドレスに対応する命令やデータが読み出され、命令が実行される、などと記述する。
【００７６】
図８の例の場合、ＣＰＵ６１は、命令３の仮想アドレスを指定して、例えば、データ７を読み出すという命令３を実行する。このとき、命令とデータのアドレス空間を別々にし、さらに、命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２で重複した仮想アドレスを使用するようにしたことにより、命令３によって読み出されるデータ７の仮想アドレスは、データ仮想アドレス空間１０２において、命令３のオペランドにより指定可能な距離Ｄ１にある仮想アドレスとすることができる。したがって、ＣＰＵ６１は、命令３のオペランドによりデータ７の仮想アドレスを指定して、データ７を、直接読み出すことができる。
【００７７】
このように、命令仮想アドレス空間１０１とデータ仮想アドレス空間１０２においては、仮想アドレスが重複しているため、命令が指定するデータの仮想アドレスを、その命令の仮想アドレスから、命令のオペランドで指定可能な距離の仮想アドレスとすることができる頻度を極めて多くすることができる。したがって、命令が指定するデータの相対アドレスを一旦オペランドにより指定可能な距離に保持しなければならない状態が生じることを阻止することができる。
【００７８】
図９は、図５の命令キャッシュ６３およびデータキャッシュ６５の中のデータの構成例を示している。なお、図９において、図８における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【００７９】
図９の例においては、命令仮想アドレス空間１０１のアドレス領域１０１−１において、命令１乃至４までの範囲Ｅ１は、ＣＰＵ６１がアドレス領域１０１−１の命令１の仮想アドレスを指定した場合に、命令キャッシュ６３に登録される範囲を示している。命令５乃至８までの範囲Ｅ２は、ＣＰＵ６１がアドレス領域１０１−１の命令５の仮想アドレスを指定した場合に、命令キャッシュ６３に登録される範囲を示している。命令９乃至１２までの範囲Ｅ３は、ＣＰＵ６１がアドレス領域１０１−１の命令９の仮想アドレスを指定した場合に、命令キャッシュ６３に登録される範囲を示している。命令仮想アドレス空間１０１の仮想アドレスには、命令１乃至１２しか記憶されていないので、命令キャッシュ６３には、命令しか登録されない。
【００８０】
また、データ仮想アドレス空間１０２のアドレス領域１０２−１において、データ１乃至４までの範囲Ｅ１は、ＣＰＵ６１がアドレス領域１０２−１のデータ１の仮想アドレスを指定した場合に、データキャッシュ６５に登録される範囲を示している。データ５乃至８までの範囲Ｅ２は、ＣＰＵ６１がアドレス領域１０２−１のデータ５の仮想アドレスを指定した場合に、データキャッシュ６５に登録される範囲を示している。データ９乃至１２までの範囲Ｅ３は、ＣＰＵ６１がアドレス領域１０２−１のデータ９の仮想アドレスを指定した場合に、データキャッシュ６５に登録される範囲を示している。データ仮想アドレス空間１０２の仮想アドレスには、データ１乃至１２しか記憶されていないので、データキャッシュ６５には、データしか登録されない。
【００８１】
以上のように、命令キャッシュ６３には、データが登録されることはなく、データキャッシュ６５には、命令が登録されることはない。したがって、命令キャッシュ６３およびデータキャッシュ６５において、貴重なメモリ領域を有効に利用することができる。
【００８２】
なお、上述した図７の例においては、命令アドレス空間１０１を命令のみのページに対応する仮想アドレスにより構成するようにし、データアドレス空間１０２をデータのみのページに対応する仮想アドレスにより構成するようにして、命令アドレス空間１０１およびデータ仮想アドレス空間１０２の仮想アドレスが、アドレスが相互に重複しない単一の物理アドレス空間１０３の所定のアドレスに変換される例を説明したが、この場合、図１０に示されるように、空き領域が生じてしまうことがある。
【００８３】
図１０は、図７の命令アドレス空間１０１、データ仮想アドレス空間１０２および物理アドレス空間１０３の対応関係の他の例を示している。なお、図１０において、図７における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【００８４】
図１０の例において、物理アドレス空間１０３は、アドレス順（アドレスの昇順）に、命令のみのページが記憶されているアドレス領域１０３−１１乃至１０３−１４、命令のみのページが記憶されている領域と空き領域により構成されるアドレス領域１０３−１５、および、データのみのページが記憶されているアドレス領域１０３−１６乃至１０３−１８により構成されている。
【００８５】
そして、命令仮想アドレス空間１０１は、命令のみのページが記憶されているアドレス領域１０３−１１に対応する仮想アドレスが配置されるアドレス領域１０１−１１、命令のみのページが記憶されているアドレス領域１０３−１２に対応する仮想アドレスが配置されるアドレス領域１０１−１２、命令のみのページが記憶されているアドレス領域１０３−１４に対応する仮想アドレスが配置されるアドレス領域１０１−１３、命令のみのページが記憶されているアドレス領域１０３−１３に対応する仮想アドレスが配置されるアドレス領域１０１−１４、および、命令のみのページが記憶されている領域と空き領域により構成されるアドレス領域１０３−１５に対応する仮想アドレスが配置されるアドレス領域１０１−１５により構成される。
【００８６】
これに対して、データ仮想アドレス空間１０２は、データのみのページが記憶されているアドレス領域１０３−１８に対応する仮想アドレスが配置されるアドレス領域１０２−１１、データのみのページが記憶されているアドレス領域１０３−１７に対応する仮想アドレスが配置されるアドレス領域１０２−１２、および、データのみのページが記憶されているアドレス領域１０３−１６に対応する仮想アドレスが配置されるアドレス領域１０２−１３により構成される。
【００８７】
すなわち、図１０の例においては、命令アドレス変換部６４およびデータアドレス変換部６６は、各ページ単位（アドレス変換単位）の仮想アドレスを、相互に重複しない単一の物理アドレス空間１０３の所定のアドレスに変換する。したがって、物理アドレス空間１０３において、命令とデータの物理アドレスは、ページ単位（アドレス変換単位）で分割されている必要がある。すなわち、アドレス領域１０３−１５に示されるように、物理アドレス空間１０３においては、命令とデータの境界を、ページ単位（アドレス変換単位）の境界に合わせる必要があるため、命令とデータの物理アドレスの間に、空き領域が生じてしまい、メモリが余分に必要になってしまうことがある。
【００８８】
そこで、この情報処理装置５１においては、図１０の命令とデータの境界であるアドレス領域１０３−１５の空き領域に、図１１に示されるように、定数データを配置させ、このアドレス領域１０３−１５を命令とデータの両方の仮想アドレスで使用するようにするようにする。
【００８９】
図１１は、命令アドレス空間１２１、データ仮想アドレス空間１２２および物理アドレス空間１０３の対応関係の例を示している。なお、図１１の命令アドレス空間１２１、データ仮想アドレス空間１２２は、図７の命令アドレス空間１０１、データ仮想アドレス空間１０２の他の例である。
【００９０】
図１１の例の場合、物理アドレス空間１０３は、アドレス順（アドレスの昇順）に、命令のみのページが記憶されているアドレス領域１０３−１１乃至１０３−１４、命令のみと定数データのみのページが記憶されているアドレス領域１０３−１５、および、データのみのページが記憶されているアドレス領域１０３−１６により構成されている。すなわち、図１１の例においては、図１０の物理アドレス空間１０３の命令とデータの境界の領域であるアドレス領域１０３−１５の空き領域に、定数データのアドレスが配置されている。
【００９１】
命令仮想アドレス空間１２１は、命令のみのページが記憶されているアドレス領域１０３−１１に対応する仮想アドレスが配置されるアドレス領域１２１−１、命令のみのページが記憶されているアドレス領域１０３−２に対応する仮想アドレスが配置されるアドレス領域１２１−１２、命令のみのページが記憶されているアドレス領域１０３−１４に対応する仮想アドレスが配置されるアドレス領域１２１−３、命令のみのページが記憶されているアドレス領域１０３−１３に対応する仮想アドレスが配置されるアドレス領域１２１−４、および、命令のみと定数データのみのページが記憶されているアドレス領域１０３−１５に対応する仮想アドレスが配置されるアドレス領域１２１−５により構成される。すなわち、命令仮想アドレス空間１２１は、命令仮想アドレス空間１０１と同様に、基本的には、命令のみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスにより構成されるが、命令とデータの境界のアドレス領域の定数データに対応する仮想アドレスも配置されている。
【００９２】
これに対して、データ仮想アドレス空間１２２は、命令のみと定数データのみのページが記憶されているアドレス領域１０３−１５に対応する仮想アドレスが配置されるアドレス領域１２２−１、データのみのページが記憶されているアドレス領域１０３−１６に対応する仮想アドレスが配置されるアドレス領域１２２−２、および、データのみのページが記憶されているアドレス領域１０３−１６に対応する仮想アドレスが配置されるアドレス領域１２２−３により構成される。すなわち、データ仮想アドレス空間１２２は、データ仮想アドレス空間１０２と同様に、基本的には、データのみのページが記憶されているアドレス領域の物理アドレスに対応する仮想アドレスにより構成されるが、命令とデータの境界のアドレス領域の命令に対応する仮想アドレスも配置されている。
【００９３】
そして、図７を参照して上述した場合と同様に、命令アドレス変換部６４は、以上のように構成された命令仮想アドレス空間１２１と物理アドレス空間１０３の対応関係を、命令アドレス変換テーブルとして設定し、記憶している。また、データアドレス変換部６６は、データ仮想アドレス空間１２２と物理アドレス空間１０３の対応関係を、データアドレス変換テーブルとして設定し、記憶している。
【００９４】
したがって、命令アドレス変換部６４は、ＣＰＵ６１より、例えば、アドレス領域１２１−１の命令のみのページに対応する仮想アドレスが指定された場合、命令アドレス変換テーブルに基づいて、アドレス領域１０３−１１の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−１１に記憶されている命令を取得することができる。また、命令アドレス変換部６４は、ＣＰＵ６１より、例えば、アドレス領域１２１−５のうちの命令のみの部分に対応する仮想アドレスが指定された場合、命令アドレス変換テーブルに基づいて、アドレス領域１０３−１５の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−１５に記憶されている命令を取得することができる。
【００９５】
同様に、データアドレス変換部６６は、ＣＰＵ６１より、例えば、アドレス領域１２２−１のうちの定数データのみ部分に対応する仮想アドレスが指定された場合、データアドレス変換テーブルに基づいて、アドレス領域１０３−１５の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−１５に記憶されている定数データを取得することができる。また、データアドレス変換部６６は、ＣＰＵ６１より、例えば、アドレス領域１２２−２のデータのみのページに対応する仮想アドレスが指定された場合、または、アドレス領域１２２−３のデータのみのページに対応する仮想アドレスが指定された場合、データアドレス変換テーブルに基づいて、アドレス領域１０３−１６の物理アドレスに変換する。これにより、ＣＰＵ６１は、アドレス領域１０３−１６に記憶されているデータを取得することができる。
【００９６】
すなわち、図１１の例においては、命令仮想アドレス空間１２１のアドレス領域１２１−５とデータ仮想アドレス空間１２２のアドレス領域１２２−１は、共に、物理アドレス空間１０３の同じアドレス領域１０３−１５に変換される。また、データアドレス空間１２２のアドレス領域１２２−２と１２２−３は、共に、物理アドレス空間１０３の同じアドレス領域１０３−１６に変換される。
【００９７】
以上のように、命令仮想アドレス空間とデータ仮想アドレス空間を別々に設け、物理アドレス空間１０３の同じアドレス領域（例えば、アドレス領域１０３−５）を、命令仮想アドレス空間とデータ仮想アドレス空間の両方の仮想アドレスで使用させるようにしたので、図７の命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２の場合と同様に、データとそのデータを操作する命令を、図１に示される仮想アドレス空間よりも近い仮想アドレス（または、同一の仮想アドレス）に配置できるだけでなく、さらに、物理アドレス空間１０３において、同じページ（アドレス変換）単位に命令とデータを配置することができ、図１０を参照して上述した空き領域のようなメモリ６２内の無駄な領域を削減することができる。
【００９８】
また、この場合、アドレス領域１０３−５に示されるように、命令と同じページ単位内に配置されるデータを、関数のアドレスや比較対象の定数などの定数データのみするようにしたので、命令アドレス変換部６４またはデータアドレス変換部６６は、メモリ６２において、命令と定数データが配置されているページの領域を読み出しのみの領域にすることができる。これにより、プログラム時に予測されなかったバッファオーバーフローが発生しても変数が命令アドレス空間に割り当てられていないため、少なくとも任意の命令の実行を防ぐことができる。
【００９９】
さらに、図１１の物理アドレス空間１０３においては、データ仮想アドレス空間１２２の複数のページ単位の仮想アドレス（例えば、アドレス領域１２２−２および１２２−３）を、同じ物理アドレス領域（例えば、アドレス領域１０３−１６）に変換するようにしたので、メモリ６２内の領域をより効率的に使用することができる。なお、データ仮想アドレス空間１２２と同様に、命令仮想アドレス空間１２１において、複数のページ単位の仮想アドレスを、同じ物理アドレス領域に変換するようにしてもよい。
【０１００】
図１２は、図１１の命令アドレス空間１２１およびデータ仮想アドレス空間１２２の場合における図５の命令キャッシュ６３およびデータキャッシュ６５の中のデータの構成例を示す。なお、図１２の例においては、図１１の物理アドレス空間１０３の同じアドレス領域１０３−１５に対応する命令アドレス空間１２１のアドレス領域１２１−５、およびデータ仮想アドレス空間１２２のアドレス領域１２２−１を用いて説明する。
【０１０１】
図１２の例の場合、命令仮想アドレス空間１２１のアドレス領域１２１−５は、命令１乃至８および定数データ１乃至４に対応する仮想アドレス（命令１乃至８および定数データ１乃至４が記憶された仮想アドレス）で構成されており、さらに、命令１乃至４までの範囲Ｆ１、命令５乃至８までの範囲Ｆ２、定数データ１乃至４までの範囲Ｆ３は、それぞれキャッシュに登録される範囲である。すなわち、アドレス領域１２１−５において、命令と定数データの仮想アドレスは、キャッシュライン単位（例えば、１６バイトや３２バイト）で分離されている。
【０１０２】
したがって、ＣＰＵ６１がアドレス領域１２１−５の命令１の仮想アドレスを指定した場合には、範囲Ｆ１が命令キャッシュ６３に登録され、ＣＰＵ６１がアドレス領域１２１−５の命令５の仮想アドレスを指定した場合には、範囲Ｆ２が命令キャッシュ６３に登録される。ただし、命令仮想アドレス空間１２１のアドレス領域１２１−５の定数データの仮想アドレスは指定されないので、範囲Ｆ３が命令キャッシュ６３に登録されることはない。
【０１０３】
同様に、データ仮想アドレス空間１２２のアドレス領域１２２−１は、命令１乃至８および定数データ１乃至４に対応する仮想アドレス（命令１乃至８および定数データ１乃至４が記憶された仮想アドレス）で構成されており、さらに、命令１乃至４までの範囲Ｆ１、命令５乃至８までの範囲Ｆ２、定数データ１乃至４までの範囲Ｆ３は、それぞれキャッシュに登録される範囲である。すなわち、アドレス領域１２２−１において、命令と定数データの仮想アドレスは、キャッシュライン単位で分離されている。
【０１０４】
この場合も、ＣＰＵ６１がアドレス領域１２２−１の定数データ１の仮想アドレスを指定した場合には、範囲Ｆ３がデータキャッシュ６５に登録されるが、データ仮想アドレス空間１２２のアドレス領域１２２−１の命令の仮想アドレスが指定されることはないので、範囲Ｆ１またはＦ２がデータキャッシュ６５に登録されることはない。
【０１０５】
以上のように、同じページ（アドレス変換）単位内に命令とデータを配置する場合には、キャッシュライン単位で分離するようにしたので、図１０の例のように、ページ単位で分離する場合よりも、メモリ６２において、無駄なメモリ領域が削減され、さらに、命令キャッシュ６３には、データが登録されることはなく、データキャッシュ６５には、命令が登録されることはない。したがって、命令キャッシュ６３およびデータキャッシュ６５において、貴重なメモリ領域を有効に利用することができる。
【０１０６】
なお、図１１の命令仮想アドレス空間１２１およびデータ仮想アドレス空間１２２は、物理アドレス空間１０３の命令とデータの境界のアドレス領域（アドレス変換単位）において、同じページ（アドレス変換）単位内に命令とデータを、キャッシュライン単位で分離させて配置するようにしたものであり、物理アドレス空間１０３の命令とデータの境界のアドレス領域以外においては、図７の命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２のように、命令とデータ分離されている。
【０１０７】
したがって、命令仮想アドレス空間１２１およびデータ仮想アドレス空間１２２の場合も、もちろん、図７の命令仮想アドレス空間１０１およびデータ仮想アドレス空間１０２の場合と同様に、データとそのデータを操作する命令を、図１に示される仮想アドレス空間よりも近い仮想アドレス（または、同一の仮想アドレス）に配置できる。また、命令で使用する長い定数などのデータを別途保持する場合も、そのデータは、データ仮想アドレス空間１２２に配置される場合が多いため、図１に示される仮想アドレス空間に較べて、無駄な命令数が増えることが抑制される。
【０１０８】
なお、上記説明においては、メモリ６２の構成を特に特定してはいなかったが、次に、図１３を参照して、メモリ６２を、デバイスにより分けて構成する場合について説明する。なお、以降においては、図７を参照して上述した構成の仮想アドレス空間を用いて説明するが、図１１を参照して上述した構成の仮想アドレス空間を用いる場合も、基本的に同様の構成であり、繰り返しになるので、その説明は省略する。
【０１０９】
図１３の例においては、メモリ６２は、ＲＯＭとＲＡＭにより構成される。ＲＯＭは、読み出し専用の半導体メモリにより構成されており、書き換え不要の命令やその命令が指示するデータを記憶している。それに対して、ＲＡＭは、任意のアドレスを指定して読み書きすることが可能な半導体メモリにより構成されており、ＲＯＭの命令が指示するデータなどが記憶される。したがって、命令仮想アドレス空間（図示せず）は、ＲＯＭにより構成されるが、データ仮想アドレス空間１５１は、図１３に示されるように、ＲＯＭとＲＡＭにより構成される。なお、図１３においては、書き込み禁止領域としてＲＯＭ、書き込み可能領域としてＲＡＭを用いて説明するが、書き込み禁止領域には、命令アドレス変換部６４またはデータアドレス変換部６６により書き込み禁止にされているＲＡＭも含まれるようにしてもよい。
【０１１０】
図１３は、データアドレス仮想空間１５１とそれに対応する物理アドレス空間１５２の構成例を示す。図１３の例の場合、物理アドレス空間１５２は、ＲＯＭのデータが記憶されている４Ｋバイトのアドレス領域１６１、および、ＲＡＭのデータが記憶されている４Ｋバイトのアドレス領域１６２により構成される。
【０１１１】
データアドレス仮想空間１５１は、ＲＯＭのデータが記憶されている２Ｋバイトのアドレス領域１７１、ＲＡＭのデータが記憶されている２Ｋバイトのアドレス領域１７２、ＲＯＭのデータが記憶されている２Ｋバイトのアドレス領域１７３およびＲＡＭのデータが記憶されている２Ｋバイトのアドレス領域１７４の順に構成される。すなわち、データ仮想アドレス空間１５１では、物理アドレス空間１５２の４ＫバイトのＲＯＭのアドレス領域１６１に記憶されているデータを、アドレス領域１６１の半分の容量である２Ｋバイトのアドレス領域１７１および１７３に分けて記憶しており、物理アドレス空間１５２のＲＡＭの４Ｋバイトのアドレス領域１６２に記憶されているデータを、アドレス領域１６２の半分の容量である２Ｋバイトのアドレス領域１７２および１７４に分けて記憶している。
【０１１２】
このようにデータ仮想アドレス空間１５１を構成することにより、命令仮想アドレス空間において始めの方の命令に対応するデータがＲＡＭに記憶されている場合でも、命令仮想アドレス空間において後ろの方の命令に対応するデータがＲＡＭに記憶されている場合でも、データ仮想アドレス空間１５１を、物理アドレス空間１５２のままの構成にするよりも、命令に対応するデータの仮想アドレスが相対的に、命令から遠い距離になることを抑制することができる。
【０１１３】
次に、上述したデータ仮想アドレス空間１５１の仮想アドレスを、物理アドレス空間１５２の物理アドレスにアドレス変換する方法について、図１４および図１５を参照して説明する。
【０１１４】
図１４の例において、図１３の物理アドレス空間１５２に示されるように、アドレス領域が４Ｋバイトごとにデバイス（ＲＯＭとＲＡＭ）が異なっているため、物理アドレス１８２は、デバイス（例えば、ＲＯＭまたはＲＡＭ）を選択するためのデバイス選択アドレスとしての上位２０ビットと、デバイス内（例えば、ＲＯＭのアドレス領域内）のオフセット位置を指定するためのデバイス内オフセットアドレスとしての下位１２ビットの３２ビットにより構成される。
【０１１５】
ここで、図１３のデータ仮想アドレス空間１５１のうち、例えば、ＲＡＭのアドレス領域１７２の仮想アドレス１８１を、物理アドレス空間１５２のＲＡＭのアドレス領域１６２の物理アドレス１８２に変換する場合、デバイスだけでなく、さらに、そのデバイス内のオフセット位置を変換しなければならないので、図１４のハッチング部分に示されるように、デバイス選択アドレスとしての上位２０ビットだけでなく、デバイス内オフセットアドレスである下位ビットの一部（図１４の場合、１ビット）まで変換する必要がある。
【０１１６】
そこで、図１５に示されるように、データ仮想アドレス空間１５１の仮想アドレス１８１の下位１２ビットは、変換せずに、仮想アドレス１８１の上位２０ビット（図１５のハッチング部分）を、データアドレス変換テーブルに基づいて、所定のアドレス変換を行い、変換後アドレス１９１とする。その後、変換後アドレス１９１のうちの、変換した上位２０ビット（図１５のハッチング部分）の最下位１ビットと、残りの下位１２ビットの最上位１ビットを交換して、物理アドレス１８２とする。これにより、デバイス内オフセットアドレスである下位ビットをデータアドレス変換テーブルに基づいて、直接変換しなくても、デバイス選択アドレスだけでなく、デバイス内オフセットアドレスも変換された物理アドレス１８２とすることができる。
【０１１７】
すなわち、図１５のアドレス変換方法は、図１４のアドレス変換方法よりも変換するビット数も少ないため、効率よくアドレス変換することができる。なお、図１５において使用されるデータアドレス変換テーブルは、変換後の上位ビットと下位ビットのうち１ビットの交換を考慮して作成されているものとする。また、図１４および図１５において説明した上位ビット数、下位ビット数、アドレス総ビット数、および、変換後において交換する上位ビットと下位ビットのうちの所定のビット数は、これに限定するものではない。したがって、例えば、変換後において交換する上位ビットと下位ビットのうちの所定のビット数を、２ビットとしてもよいし、１０ビットとしてもよい。
【０１１８】
次に、図１６のフローチャートを参照して、図１５のアドレス変換処理について説明する。
【０１１９】
ＣＰＵ６１は、メモリ６２からデータを取得するために、データ仮想アドレス空間１５１を参照して、データに対応する仮想アドレス（例えば、図１５の仮想アドレス１８１）を、データバス７２を介して、データキャッシュ６５およびデータアドレス変換部６６に出力する。
【０１２０】
データキャッシュ６５は、ステップＳ１１において、ＣＰＵ６１から仮想アドレスが入力されるまで待機しており、ＣＰＵ６１から仮想アドレスが入力されたと判断した場合、ステップＳ１２に進み、データキャッシュ６５のタグに基づいて、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にあるか否かを判断する。
【０１２１】
ステップＳ１２において、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にないと判断された場合、データキャッシュ６５は、その結果をデータアドレス変換部６６に出力し、ステップＳ１３に進み、データアドレス変換部６６は、仮想アドレスの上位アドレス２０ビットを、所定のデータアドレス変換テーブルを参照して、変換し、ステップＳ１４に進む。なお、このとき、図１５の変換後アドレス１９１に示されるように、仮想アドレスの残りの下位１２ビットは、元のまま変換されない。
【０１２２】
ステップＳ１４において、データアドレス変換部６６は、変換された上位２０ビットのアドレスのうちの一部（図１５の場合、１ビット）と、残りの下位１２ビットのアドレスのうちの一部（図１５の場合、１ビット）を入れ替えて、物理アドレス（図１５の物理アドレス１８２）を取得し、取得した物理アドレスをバスコントローラ６７に出力し、ステップＳ１５に進む。
【０１２３】
ステップＳ１５において、バスコントローラ６７は、データアドレス変換部６６からの物理アドレスに対応するデータを、メモリ６２から取得し、データキャッシュ６５に出力し、ステップＳ１６に進み、データキャッシュ６５は、バスコントローラ６７からのデータを、データバス７２を介して、ＣＰＵ６１に出力する。
【０１２４】
一方、ステップＳ１２において、データキャッシュ６５は、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にあると判断した場合、ステップＳ１３乃至Ｓ１５の処理をスキップし、ステップＳ１６に進み、ＣＰＵ６１から入力された仮想アドレスに対応するデータを、データバス７２を介してＣＰＵ６１に出力する。
【０１２５】
以上のように、ＣＰＵ６１が指示したデータ仮想アドレス空間１５１の仮想アドレスの上位アドレスのみを変換し、変換された上位アドレスのうちの一部と、残りの下位アドレスのうちの一部を入れ替えて、物理アドレス空間の物理アドレスに変換することができるので、仮想アドレスすべてを変換するよりも、変換するビット数が少なくなる。これにより、変換効率を向上させることができる。
【０１２６】
図１７は、本発明を適用した撮像装置２０１の構成例を示す。撮像装置２０１は、例えば、カムコーダ（カメラ一体型ビデオレコーダ）またはデジタルスチルカメラ（ＤＳＣ）などにより構成される。図１７において、ＣＰＵ部２１１は、ＲＯＭ（Read  Only  Memory）２１２、またはＲＡＭ（Random  Access  Memory）２１３に記憶されている命令またはプログラムに従って各種の演算処理を実行する。
【０１２７】
レンズ２１４は、被写体からの光を入力し、ＣＣＤ（Charge-Coupled Devices）撮像素子２１５（以下、単に、ＣＣＤ２１５と称する）に結像する。ＣＣＤ２１５は、被写体の画像に対応する画像データを、Ａ／Ｄ(Analog / Digital)変換部２１６に出力する。Ａ／Ｄ変換部２１６は、ＣＣＤ２１５からの画像データをデジタルデータに変換し、信号処理部２１７に出力する。信号処理部２１７は、Ａ／Ｄ変換部２１６によりデジタルに変換された画像データを、信号処理し、メモリ制御部２１８を介して、メモリ２１９に記録する。
【０１２８】
表示制御部２２０は、メモリ制御部２１８を介して、メモリ２１９に記録された画像データを読み出し、ＬＣＤ(Liquid Crystal Display)エンコーダ２２１を制御し、メモリ２１９から読み出した画像データを、ＬＣＤ２２２用にエンコードさせ、ＬＣＤ２２２に出力させる。
【０１２９】
ＪＰＥＧ（Joint Photographic Experts Group）符号化部２２３は、メモリ制御部２１８を介して、メモリ２１９に記録された画像データを読み出し、ＪＰＥＧで符号化して、メモリ制御部２１８を介して、メモリ２１９に書き戻す。記録制御部２２４は、ＪＰＥＧ符号化部２２３により符号化された画像データを、メモリ制御部２１８を介して、メモリ２１９から読み出し、光ディスクやメモリスティック（商標）などにより構成される記録媒体２２５に記録する。
【０１３０】
なお、図１７においては図示しないが、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４は、それぞれ、ＣＰＵ部２１１の制御を受けるためのＩ／Ｏ(Input / Output)レジスタを有している。したがって、ＣＰＵ部２１１は、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４に内蔵されるＩ／Ｏレジスタのデータを読み書きすることにより、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４を制御する。
【０１３１】
図１８は、図１７のＣＰＵ部２１１の構成例を示している。なお、図１８において、図５における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので適宜省略する。
【０１３２】
ＣＰＵ６１は、ＲＯＭ２１２およびＩ／Ｏレジスタ２３１に記憶されている命令やデータを取得し、その命令やデータに従って各種の演算処理を実行する。また、ＣＰＵ６１は、ＲＡＭ２１３およびＩ／Ｏレジスタ２３１に記憶されているデータを読み出したり、書き込んだりする。Ｉ／Ｏレジスタ２３１は、ＣＰＵ６１により制御される信号処理部２１７のＩ／Ｏレジスタ、メモリ制御部２１８のＩ／Ｏレジスタ、表示制御部２２０のＩ／Ｏレジスタ、ＪＰＥＧ符号化部２２３のＩ／Ｏレジスタおよび記録制御部２２４のＩ／Ｏレジスタなどにより構成される。
【０１３３】
なお、ＲＡＭ２１３およびＩ／Ｏレジスタ２３１の読み書きのアクセス権の制御は、命令アドレス変換部６４またはデータアドレス変換部６６により実行される。したがって、命令アドレス変換部６４またはデータアドレス変換部６６は、ＣＰＵ６１から書き込み指示が入力された場合など、その仮想アドレスが書き込み不可（読み出しのみの）領域のものであれば、ＣＰＵ６１に例外信号などを通知する。
【０１３４】
図１８のＣＰＵ部２１１においては、ＣＰＵ６１からの命令の転送を行う命令バス７１とＣＰＵ６１からのデータ（定数、変数やレジスタアドレス）の転送を行うデータバス７２を別々に有している。また、ＣＰＵ部２１１においては、図１９を参照して後述するが、ＲＯＭ２１２、ＲＡＭ２１３、およびＩ／Ｏレジスタ２３１の物理アドレスにより構成される物理アドレス空間２５１の他に、それぞれ独立した仮想アドレス空間である、命令バス７１用の命令仮想アドレス空間２５２とデータバス７２用のデータ仮想アドレス空間２５３を有している。
【０１３５】
ＣＰＵ６１は、ＲＯＭ２１２から命令を取得するとき、命令仮想アドレス空間２５２を通して、ＲＯＭ２１２を見ることにより、命令に対応する仮想アドレスを指示する。ＣＰＵ６１は、指示した仮想アドレスを、命令バス７１を介して、命令キャッシュ６３および命令アドレス変換部６４に出力する。また、ＣＰＵ６１は、ＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１からデータを取得するとき、データ仮想アドレス空間２５３を通して、ＲＯＭ２１２、ＲＡＭ２１３およびＩ／Ｏレジスタ２３１を見ることにより、データに対応する仮想アドレスを指示する。ＣＰＵ６１は、指示した仮想アドレスを、データバス７２を介して、データキャッシュ６５およびデータアドレス変換部６６に出力する。
【０１３６】
バスコントローラ６７は、命令アドレス変換部６４からの物理アドレスに対応する命令をＲＯＭ２１２より取得し、命令キャッシュ６３および命令バス７１を介して、ＣＰＵ６１に出力する。また、バスコントローラ６７は、データアドレス変換部６６からの物理アドレスに対応するデータをＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１より取得し、データキャッシュ６５およびデータバス７２を介して、ＣＰＵ６１に出力する。
【０１３７】
図１９は、撮像装置２０１における物理アドレス空間２５１、命令仮想アドレス空間２５２およびデータ仮想アドレス空間２５３の構成例を示している。なお、図１９においては、命令仮想アドレス空間２５２とデータ仮想アドレス空間２５３において、上からの配置が同一の行にある場合は、同一の仮想アドレスが使用されているものとする。
【０１３８】
撮像装置２０１においては、実際には、物理アドレス空間２５１のようにハード的に結線されているが、命令アドレス変換部６４およびデータアドレス変換部６６によるアドレス変換が実行されることにより、ＣＰＵ６１には、命令仮想アドレス空間２５２およびデータ仮想アドレス空間２５３のような仮想アドレスの配置構成に見せることができる。
【０１３９】
物理アドレス空間２５１は、ＲＯＭ２１２の命令が記憶されているアドレス領域２５１−１、ＲＯＭ２１２のデータが記憶されているアドレス領域２５１−２、ＲＡＭ２１３のデータが記憶されているアドレス領域２５１−３、信号処理部２１７のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５１−４、メモリ制御部２１８のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５１−５、ＪＰＥＧ符号化部２２３のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５１−６、表示制御部２２０のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５１−７、および記録制御部２２４のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５１−８により構成される。
【０１４０】
命令仮想アドレス空間２５２は、ＲＯＭ２１２の命令が記憶されているアドレス領域２５２−１により構成される。
【０１４１】
データ仮想アドレス空間は、ＲＯＭ２１２のデータが記憶されているアドレス領域２５３−１、ＲＡＭ２１３のデータが記憶されているアドレス領域２５３−２、信号処理部２１７のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５３−３、ＲＯＭ２１２のデータが記憶されているアドレス領域２５３−４、ＲＡＭ２１３のデータが記憶されているアドレス領域２５３−５、メモリ制御部２１８のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５３−６、ＲＯＭ２１２のデータが記憶されているアドレス領域２５３−７、ＲＡＭ２１３のデータが記憶されているアドレス領域２５３−８、ＪＰＥＧ符号化部２２３のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５３−９、ＲＯＭ２１２のデータが記憶されているアドレス領域２５３−１０、ＲＡＭ２１３のデータが記憶されているアドレス領域２５３−１１、表示制御部２２０のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５３−１２、ＲＯＭ２１２のデータが記憶されているアドレス領域２５３−１３、ＲＡＭ２１３のデータが記憶されているアドレス領域２５３−１４、および記録制御部２２４のＩ／Ｏレジスタのデータが記憶されているアドレス領域２５３−１５により構成される。
【０１４２】
すなわち、物理アドレス空間２５１のアドレス領域２５１−１に記憶されているＲＯＭ２１２の命令は、命令仮想アドレス空間２５２において、アドレス領域２５２−１に記憶されている。物理アドレス空間２５１のアドレス領域２５１−２に記憶されているＲＯＭ２１２のデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−１、アドレス領域２５３−４、アドレス領域２５３−７、アドレス領域２５３−１０、およびアドレス領域２５３−１３に分けて記憶されている。物理アドレス空間２５１のアドレス領域２５１−３に記憶されているＲＡＭ２１３のデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−２、アドレス領域２５３−５、アドレス領域２５３−８、アドレス領域２５３−１１、およびアドレス領域２５３−１４に分けて記憶されている。
【０１４３】
また、物理アドレス空間２５１のアドレス領域２５１−４に記憶されている信号処理部２１７のＩ／Ｏレジスタのデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−３に記憶されている。物理アドレス空間２５１のアドレス領域２５１−５に記憶されているメモリ制御部２１８のＩ／Ｏレジスタのデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−６に記憶されている。物理アドレス空間２５１アドレス領域２５１−６に記憶されているＪＰＥＧ符号化部２２３のＩ／Ｏレジスタのデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−９に記憶されている。物理アドレス空間２５１のアドレス領域２５１−７に記憶されている表示制御部２２０のＩ／Ｏレジスタのデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−１２に記憶されている。物理アドレス空間２５１のアドレス領域２５１−８に記憶されている記録制御部２２４のＩ／Ｏレジスタのデータは、データ仮想アドレス空間２５３において、アドレス領域２５３−１５に配置されている。
【０１４４】
以上のように、図１８の撮像装置２０１においては、命令仮想アドレス空間２５２を、命令の仮想アドレスだけが配置される（記憶される）ように構成し、データ仮想アドレス空間２５３を、定数、変数やレジスタアドレスなどのデータの仮想アドレスだけが配置される（記憶される）ように構成し、それらの命令仮想アドレス空間２５２とデータ仮想アドレス空間２５３を、お互いのアドレスを重複させて、独立で持つようしたので、図７乃至図９を参照して上述したように、命令とそれに対応するデータの仮想アドレスが遠く離れることがないため、定数などのデータを配置する必要がなく、ジャンプ命令などの命令も不要であり、無駄な命令数が増えることが抑制される。
【０１４５】
また、データ仮想アドレス空間２５２において、Ｉ／Ｏレジスタ群（信号処理部２１７のＩ／Ｏレジスタ、メモリ制御部２１８のＩ／Ｏレジスタ、表示制御部２２０のＩ／Ｏレジスタ、ＪＰＥＧ符号化部２２３のＩ／Ｏレジスタおよび記録制御部２２４のＩ／Ｏレジスタ）を、複数のアドレス領域に分けて配置するようにしたので、命令とそれに対応するデータの仮想アドレスが遠く離れることが抑制され、命令が指定するデータの仮想アドレスを、その命令の仮想アドレスから、命令のオペランドで指定可能な距離の仮想アドレスとすることができる頻度を極めて多くすることができる。
【０１４６】
さらに、物理アドレス空間２５１のアドレス領域２５１−２に記憶されるＲＯＭ２１２のデータを、データ仮想アドレス空間２５３のアドレス領域２５３−１、アドレス領域２５３−４、アドレス領域２５３−７、アドレス領域２５３−１０、およびアドレス領域２５３−１３の仮想アドレスに分けて記憶し、物理アドレス空間２５１のアドレス領域２５１−３に記憶されるＲＡＭ２１３のデータを、アドレス領域２５３−２、アドレス領域２５３−５、アドレス領域２５３−８、アドレス領域２５３−１１、およびアドレス領域２５３−１４の仮想アドレスに分けて記憶するようにしたので、命令とそれに対応するデータの仮想アドレスが遠く離れることが抑制され、命令が指定するデータの仮想アドレスを、その命令の仮想アドレスから、命令のオペランドで指定可能な距離の仮想アドレスとすることができる頻度を極めて多くすることができる。
【０１４７】
なお、上記説明においては、図１９の物理アドレス空間２５１、命令仮想アドレス空間２５２およびデータ仮想アドレス空間２５３が、図７を参照して上述した仮想アドレス空間の構成例に基づいて構成される場合を説明したが、図１１の仮想アドレス空間の構成例に基づいて構成するようにしてもよい。この場合には、上述した効果の他にさらに、複数の仮想アドレスを、物理アドレス空間の同じページ（アドレス変換）単位に変換することができるので、ＲＯＭ２１２、ＲＡＭ２１３、およびＩ／Ｏレジスタなどのメモリ内の無駄な領域が削減される。
【０１４８】
また、図１９の例においては、ＲＯＭ２１２とＲＡＭ２１３のデータを、仮想アドレス空間２５３の複数のアドレス領域の仮想アドレスに分けて記憶するようにしたが、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４の各Ｉ／Ｏレジスタのデータ（同一レジスタ内のデータ）も、同様にして、仮想アドレス空間２５３の複数のアドレス領域の仮想アドレスに分けて記憶するようにしてもよい。
【０１４９】
次に、図２０と図２１のフローチャートを参照して、このようにして配置されたデータ仮想アドレス空間２５３から物理アドレス空間２５１へのアドレス変換処理を説明する。なお、図２１においては、図１６の処理と基本的に同様の処理を行うため、その詳細な説明は、繰り返しになるので適宜省略する。
【０１５０】
図２０は、データアドレス変換部６６内で実行されるアドレス変換の例を示している。ＣＰＵ６１は、ＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１からデータを取得したり、もしくは、ＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１にデータを書き込むために、データ仮想アドレス空間２５３を参照して、データに対応する仮想アドレス２６１（ｎ＋ｍビット）を、データバス７２を介して、データキャッシュ６５およびデータアドレス変換部６６に出力する。
【０１５１】
図２０の例の場合、仮想アドレス２６１は、アドレス変換の最小単位であるページにおいて、そのページの先頭アドレスを表す、ｎビットの上位アドレス、および、ページ内オフセットアドレスを表す、ｍビットの下位アドレスにより構成される。
【０１５２】
データキャッシュ６５は、図２１のステップＳ３１において、ＣＰＵ６１から仮想アドレスが入力されるまで待機しており、ＣＰＵ６１から仮想アドレスが入力されたと判断した場合、ステップＳ３２に進み、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にあるか否かを判断する。
【０１５３】
ステップＳ３２において、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にないと判断された場合、データアドレス変換部６６は、ステップＳ３３に進み、図２０に示されるように、仮想アドレス２６１の上位アドレスｎビットを、データアドレス変換テーブル２７１を参照して、変換し、ステップＳ３４に進む。
【０１５４】
図２０の例においては、ｎ＋ｍビットの仮想アドレス２６１のうちの上位アドレスｎビットは、アドレス変換の最小単位であるページにおいて、そのページの先頭アドレスを示している。データアドレス変換部６６は、ページ先頭アドレスである上位アドレスを、物理アドレスの複数のページ先頭アドレスのうちの所定のページ先頭アドレスに変換するための変換テーブル２７１を有している。したがって、データアドレス変換部６６は、データアドレス変換テーブル２７１を参照して、上位アドレスｎビットに対応するページ先頭アドレスを取得し、上位アドレスｎビットを、その対応するページ先頭アドレスに変換する。なお、このとき、残りの下位アドレスｍビットは変換されないので、変換されたページ先頭アドレス（図中ハッチング部分）と、元のままの下位アドレスにより構成される変換後アドレス２６２になる。
【０１５５】
図２１のステップＳ３４において、データアドレス変換部６６は、変換後アドレス２６２において、変換されたｎビットのページ先頭アドレスと、残りのｍビットの下位アドレスのうちの一部（例えば、３ビット）を入れ替える。これにより、図２０に示されるように、物理アドレス２６３が取得される。物理アドレス２６３は、左（上位）から順に、ページ先頭アドレスの（ｎ−３ビット）、下位アドレスの３ビット、ページ先頭アドレスの３ビット、および下位アドレスの（ｍ−３ビット）により構成される。データアドレス変換部６６は、このようにして取得した物理アドレス２６３をバスコントローラ６７に出力し、図２１のステップＳ３５に進む。
【０１５６】
ステップＳ３５において、バスコントローラ６７は、データアドレス変換部６６からの物理アドレス２６３に対応するデータを、ＲＯＭ２１２、ＲＡＭ２１３またはＩ／Ｏレジスタ２３１から取得し、データキャッシュ６５に出力し、ステップＳ３６に進む。ステップＳ３６において、データキャッシュ６５は、バスコントローラ６７からのデータを、データバス７２を介してＣＰＵ６１に出力する。
【０１５７】
一方、ステップＳ３２において、データキャッシュ６５は、ＣＰＵ６１から入力された仮想アドレスに対応するデータが、データキャッシュ６５内にあると判断した場合、ステップＳ３３乃至Ｓ３５の処理をスキップし、ステップＳ３６に進み、ＣＰＵ６１から入力された仮想アドレスに対応するデータを、データバス７２を介してＣＰＵ６１に出力する。
【０１５８】
以上のようにして、ＣＰＵ６１が指示したデータ仮想アドレス空間２５３の仮想アドレス２６１のページ先頭アドレスである上位アドレスのみを変換し、その後、変換した上位アドレスと、残りの下位アドレスを入れ替えて、物理アドレス空間２５１の物理アドレス２６３に変換するようにしたので、データ仮想アドレスの下位アドレスを変換することなしに、物理アドレスに変換できる。これにより、変換するビット数を少なくすることができ、変換速度を向上させることができる。
【０１５９】
なお、上記説明においては、図２０の変換後アドレス２６２において、変換した上位アドレスと、残りの下位アドレスのうちの一部を入れ替えるようにしたが、図２２に示されるようにして、物理アドレス２８１を取得するようにしてもよい。図２２の例の場合、変換後アドレス２６２において、データアドレス変換テーブル２７１を参照して変換されたページ先頭アドレス（上位アドレス）は入れ替えずに、残りの下位アドレス（ｍビット）のうちの一部同士（例えば、下位アドレスの最上位２ビットとその次の２ビット）を入れ替えることにより、物理アドレス２８１が取得される。この場合、物理アドレス２８１は、左（上位）から順に、ページ先頭アドレスのｎビット、下位アドレスのうち交換された４ビット（各２ビット）、および下位アドレスの（ｍ−４）ビットにより構成される。
【０１６０】
次に、図２３のフローチャートを参照して、撮像装置２０１の画像データ記録処理について説明する。
【０１６１】
レンズ２１４は、被写体からの光を入力し、ＣＣＤ２１５に結像する。ＣＣＤ２１５は、被写体の画像に対応する画像データを、Ａ／Ｄ変換部２１６に出力する。これに対応して、信号処理部２１７は、ステップＳ５１において、ＣＣＤ２１５からの画像データを、Ａ／Ｄ変換部２１６を介して入力し、ステップＳ５２に進み、ＣＣＤ２１５からの画像データに、所定の信号処理を行い、信号処理した画像データを、メモリ制御部２１８に出力する。メモリ制御部２１８は、信号処理部２１７からの画像データを、メモリ２１９に記憶させ、ステップＳ５３に進む。
【０１６２】
ＪＰＥＧ符号化部２２３は、ステップＳ５３において、メモリ２１９内の画像データのアドレスを設定し、さらに、符号化された画像データを記録するための符号化画像データのメモリ２１９内のアドレスを設定し、ステップＳ５４に進み、符号化制御値を設定し、ステップＳ５５に進む。
【０１６３】
ＪＰＥＧ符号化部２２３は、ステップＳ５５において、ステップＳ５３およびＳ５４で設定された各画像データのメモリ２１９内のアドレスおよび符号化制御値に基づいて、画像データを符号化処理する。そして、ＪＰＥＧ符号化部２２３は、メモリ制御部２１８を制御し、符号化処理した符号化画像データを、メモリ２１９に記録させ、ステップＳ５６に進む。
【０１６４】
記録制御部２２４は、ステップＳ５６において、メモリ制御部２１８を制御し、メモリ２１９より、符号化画像データを読み出させ、ステップＳ５７に進み、メモリ２１９からの符号化画像データを記録媒体２２５に記録する。
【０１６５】
以上のようにして、撮像装置２０１においては、撮像された画像データが記録媒体に記録される。なお、図２３のすべてのステップの処理は、ＣＰＵ６１により、ＲＯＭ２１２、ＲＡＭ２１３、並びに、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４に内蔵されるＩ／Ｏレジスタが制御されることにより実行されている。
【０１６６】
すなわち、ＣＰＵ６１により指定された仮想アドレスは、図２０および図２１のフローチャートを参照して上述したアドレス変換が実行されて物理アドレスに変換され、ＲＯＭ２１２、ＲＡＭ２１３、並びに、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３および記録制御部２２４に内蔵されるＩ／Ｏレジスタに出力される。これにより、ＣＰＵ６１が指示した仮想アドレスに対応する、ＲＯＭ２１２、ＲＡＭ２１３、信号処理部２１７、メモリ制御部２１８、表示制御部２２０、ＪＰＥＧ符号化部２２３または記録制御部２２４により、それぞれのステップの処理が実行される。
【０１６７】
そこで、図２４と図２５のフローチャートを参照して、上述した図２３のステップＳ５５において上述した符号化処理に対応するＣＰＵ６１の符号化開始命令処理について説明する。なお、図２４においては、ＪＰＥＧ符号化部２２３のＩ／Ｏレジスタは、ＣＰＵ６１がＪＰＥＧ符号化部２２３の起動を指示するためのＪＰＥＧ起動レジスタ、および、ＣＰＵ６１がＪＰＥＧ符号化部２２３の状態を確認するためのＪＰＥＧ状態レジスタにより構成される。
【０１６８】
図２４の例の場合、命令仮想アドレス空間は、「ＪＰＥＧ起動レジスタへ書き込む定数「0x00000100」を読み出す」動作を実行する命令「LOAD R0, jpegstart」を記憶する仮想アドレス、「ＪＰＥＧ起動レジスタjpegcodecregへ定数「0x00000100」を書き込む」動作を実行する命令「STORE R0, jpegcodecreg」を記憶する仮想アドレス、および、「ＪＰＥＧ状態レジスタjpegstatusregを読み出す（終了確認）」動作を実行する命令「LOAD R0, jpegstatusreg」を記憶する仮想アドレスにより構成される。
【０１６９】
データ仮想アドレス空間は、ラベルが「jpegstart」であり、内容が「ＪＰＥＧ起動レジスタへ書き込むデータ」であり、「0x00000100」を記憶する仮想アドレス、ラベルが「jpegcodecreg」であり、内容が「ＪＰＥＧ起動レジスタ」であり、「ＪＰＥＧ符号化部２２３が出力する値」を記憶する仮想アドレス、および、ラベルが「jpegstatusreg」であり、内容が「ＪＰＥＧ状態レジスタ」であり、データ「ＪＰＥＧ符号化部２２３が出力する値」を記憶する仮想アドレスにより構成される。
【０１７０】
なお、厳密には、ＣＰＵ６１が仮想アドレスを指定すると、指定され仮想アドレスに対応する命令またはデータが、命令キャッシュ６３またはデータキャッシュ６５にある場合は、対応する命令またはデータがＣＰＵ６１に出力され、指定され仮想アドレスに対応する命令またはデータが、命令キャッシュ６３またはデータキャッシュ６５にない場合は、命令アドレス変換部６４またはデータアドレス変換部６６により仮想アドレスに対応する物理アドレスに変換され、バスコントローラ６７により物理アドレスに対応する命令やデータが、ＲＯＭ２１２、ＲＡＭ２１３およびＩ／Ｏレジスタ２３１から読み出されて、ＣＰＵ６１に出力されるが、説明の便宜上、ＣＰＵ６１が仮想アドレスを指定すると、その仮想アドレスに対応する命令やデータが読み出され、命令が実行される、などと記述する。
【０１７１】
したがって、図２５のステップＳ７１において、ＣＰＵ６１は、命令仮想アドレス空間の命令「LOAD R0, jpegstart」を読み出し、ステップＳ７２に進み、ＣＰＵ６１は、命令「LOAD R0, jpegstart」に従って、データ仮想アドレス空間のラベル「jpegstart」の仮想アドレスの定数データ「0x00000100」を読み出し、ステップＳ７３に進む。
【０１７２】
ステップＳ７３において、ＣＰＵ６１は、命令仮想アドレス空間の命令「STORE R0, jpegcodecreg」を読み出し、ステップＳ７４に進み、ＣＰＵ６１は、命令「STORE R0, jpegcodecreg」に従って、ＪＰＥＧ符号化部２２３のＪＰＥＧ起動レジスタである、データ仮想アドレス空間のラベル「jpegcodecreg」の仮想アドレスに、定数データ「0x00000100」を書き込み、ステップＳ７５に進む。これにより、ＪＰＥＧ符号化部２２３により、図２３のステップＳ５５の符号化処理が開始される。ここで、ＪＰＥＧ符号化部２２３は、ＪＰＥＧ状態レジスタである、ラベル「jpegstatusreg」の仮想アドレスに、符号化処理を開始することを示す値を出力する。
【０１７３】
そこで、ステップＳ７５において、ＣＰＵ６１は、命令仮想アドレス空間の命令「LOAD R0, jpegstatusreg」を読み出し、ステップＳ７６に進み、ＣＰＵ６１は、命令「LOAD R0, jpegstatusreg」に従って、ＪＰＥＧ符号化部２２３のＪＰＥＧ状態レジスタである、データ仮想アドレス空間のラベル「jpegstatusreg」に記憶されている、ＪＰＥＧ符号化部２２３により出力された値を終了確認として読み出し、処理を終了する。
【０１７４】
これに対して、図２６と図２７のフローチャートを参照して、上述した図２３のステップＳ５５において実行される符号化処理に対応する、従来の符号化開始命令の例について説明する。
【０１７５】
図２６の例の場合、仮想アドレス空間は、「ＪＰＥＧ起動レジスタのアドレスデータjpegcodecregを読み出す」動作を実行する命令「LOAD R0, jpegcodec」を記憶する仮想アドレス、「ＪＰＥＧ起動レジスタへ書き込む定数「0x00000100」を読み出す」動作を実行する命令「LOAD R1, jpegstart」を記憶する仮想アドレス、「ＪＰＥＧ起動レジスタjpegcodecregへ定数「0x00000100」を書き込む」動作を実行する命令「STORE R1, [R0]」、「nextのアドレス[LOAD R0, jpegstatus]へ無条件分岐」動作を実行する命令「JMP next」を記憶する仮想アドレス、ラベルが「jpegcodec」であり、ＪＰＥＧ起動レジスタアドレスデータ「jpegcodecreg」を記憶する仮想アドレス、ラベルが「jpegstart」であり、ＪＰＥＧ起動レジスタへ書き込むデータ「0x00000100」を記憶する仮想アドレス、ラベルが「jpegstatus」であり、ＪＰＥＧ状態レジスタアドレスデータ「jpegstatusreg」を記憶する仮想アドレス、ラベルが「next」であり、「ＪＰＥＧ状態レジスタのアドレスデータjpegstatusregを読み出す」動作を実行する命令「LOAD R0, jpegstatus」を記憶する仮想アドレス、「ＪＰＥＧ状態レジスタjpegstatusregを読み出す(終了確認)」動作を実行する命令「LOAD R1, [R0]」を記憶する仮想アドレス、・・・、ラベルが「jpegcodecreg」であり、「JPEG起動レジスタ」であり、データ「ＪＰＥＧ符号化部２２３が出力する値」を記憶する仮想アドレス、および、ラベルが「jpegstatusreg」であり、「ＪＰＥＧ状態レジスタ」であり、データ「ＪＰＥＧ符号化部２２３が出力する値」を記憶する仮想アドレスにより構成される。
【０１７６】
従来の仮想アドレス空間においては、命令とデータの仮想アドレスが混在していることにより、ＪＰＥＧ符号化部２２３のＪＰＥＧ起動レジスタおよびＪＰＥＧ状態レジスタの仮想アドレスの位置が遠いため、各命令からＪＰＥＧ起動レジスタおよびＪＰＥＧ状態レジスタの仮想アドレスを直接指定することができない。これにより、従来の仮想アドレス空間の命令数は、図２４の命令仮想アドレス空間の命令数と比較して、３つも多く、従来の仮想アドレス空間のデータ数は、図２４のデータ仮想アドレス空間のデータ数と比較して、２つも多くなってしまう。
【０１７７】
したがって、図２６の従来の符号化開始命令処理について説明すると、図２７のステップＳ８１において、ＣＰＵ６１は、仮想アドレス空間の命令「LOAD R0, jpegcodec」を読み出し、ステップＳ８２に進み、ＣＰＵ６１は、命令「LOAD R0, jpegcodec」に従って、仮想アドレス空間のラベル「jpegcodec」にあるＪＰＥＧ起動レジスタアドレスデータである「jpegcodecreg」を読み出し、ステップＳ８３に進む。
【０１７８】
ステップＳ８３において、ＣＰＵ６１は、仮想アドレス空間の命令「LOAD R1, jpegstart」を読み出し、ステップＳ８４に進み、ＣＰＵ６１は、命令「LOAD R1, jpegstart」に従って、ＪＰＥＧ起動レジスタに書き込むデータである「0x00000100」を読み出し、ステップＳ８５に進む。
【０１７９】
ステップＳ８５において、ＣＰＵ６１は、仮想アドレス空間の命令「STORE R1, [R0]」を読み出し、ステップＳ８６に進み、ＣＰＵ６１は、命令「STORE R1, [R0]」に従って、仮想アドレス空間のラベル「jpegcodecreg」にあるＪＰＥＧ起動レジスタに、定数データ「0x00000100」を書き込み、ステップＳ８７に進む。これにより、ＪＰＥＧ符号化部２２３により、図２３のステップＳ５５の符号化処理が開始される。ここで、ＪＰＥＧ符号化部２２３は、ＪＰＥＧ状態レジスタである、ラベル「jpegstatusreg」の仮想アドレスに、符号化処理を開始することを示す値を出力する。
【０１８０】
ステップＳ８７において、ＣＰＵ６１は、仮想アドレス空間の命令「JUMP next」を読み出し、ステップＳ８８に進み、ＣＰＵ６１は、命令「JUMP next」に従って、ラベル「next」へ無条件分岐し、命令「LOAD R0, jpegstatus」を読み出し、ステップＳ８９に進み、ＣＰＵ６１は、命令「LOAD R0, jpegstatus」に従って、ＪＰＥＧ状態レジスタアドレスデータである「jpegstatusreg」を読み出し、ステップＳ９０に進む。
【０１８１】
ステップＳ９０において、ＣＰＵ６１は、仮想アドレス空間の命令「LOAD R1,[R0]」を読み出し、ステップＳ９１に進み、ＣＰＵ６１は、命令「LOAD R1,[R0]」に従って、JPEG状態レジスタ「jpegstatusreg」に書き込まれているＪＰＥＧ符号化部２２３により出力された値を終了確認として読み出し、処理を終了する。
【０１８２】
以上のように、図２４に示されるように仮想アドレス空間を、データと命令の仮想アドレス空間に分離させたことにより、データと命令の仮想アドレスの距離が近づくため、ヒット効率が向上する。さらに、図２５の命令仮想アドレス空間およびデータ仮想アドレス空間と比較すると、図２４の仮想アドレス空間では、命令、データの仮想アドレスがともに３つしかないのに対して、図２５の仮想アドレス空間では、命令が６つ、データが４つある。すなわち、図２４の仮想アドレス空間構成にすることにより、従来よりも、命令３つ、データ２つを削減することができる。
【０１８３】
また、図２５のフローチャートにおいては、処理数が６ステップであるのに対して、図２７の従来のフローチャートの処理数は１１ステップあり、図２４の仮想アドレス空間構成にすることにより、処理数も削減され、処理の速度を向上させることができる。
【０１８４】
なお、上記説明においては、図２５の命令仮想アドレス空間およびデータ仮想アドレス空間を、図７を参照して上述した仮想アドレス空間の構成例に基づいて構成する場合について説明したが、図１１の仮想アドレス空間の構成例に基づいて構成するようにしてもよい。
【０１８５】
また、上記説明においては、データと命令の２つに分離して、それぞれ仮想空間を持つようにしたが、２つに限定されず、複数個の仮想アドレス空間を持つようにしてもよい。また、命令アドレス変換部６４とデータアドレス変換部６６として、仮想アドレス空間毎にアドレス変換部を備えるようにしたが、１つのアドレス変換部に、複数の変換テーブルをもたせ、各バスからの仮想アドレスに識別子などを付けることにより、複数の仮想アドレスを変換させるようにしてもよいし、１つのアドレス変換部に、どちらか一方のみを変換するようにしてもよい。
【０１８６】
なお、本発明は、撮像装置２０１に限らず、パーソナルコンピュータ、ＰＤＡ、ＤＶＤプレーヤ、セットトップボックス、ルータ、ロボット、ホームサーバ、携帯端末、ゲーム機、およびネットワーク端末などに適用することもできる。
【０１８７】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。この場合、例えば、図５の情報処理装置５１は、図２８に示されるような情報処理装置３０１により構成される。なお、図示は省略するが、図１８の撮像装置２０１も、情報処理装置３０１と同様に構成される。
【０１８８】
図２８において、ＣＰＵ（Central Processing Unit）３１１は、ＲＯＭ(Read Only Memory) ３１２に記憶されているプログラム、または、記憶部３１８からＲＡＭ（Random Access Memory）３１３にロードされたプログラムに従って各種の処理を実行する。ＲＡＭ３１３にはまた、ＣＰＵ３１１が各種の処理を実行する上において必要なデータなどが適宜記憶される。
【０１８９】
ＣＰＵ３１１、ＲＯＭ３１２、およびＲＡＭ３１３は、バス３１４を介して相互に接続されている。このバス３１４にはまた、入出力インタフェース３１５も接続されている。
【０１９０】
入出力インタフェース３１５には、キーボード、マウスなどよりなる入力部３１６、ＣＲＴ(Cathode Ray Tube)，ＬＣＤ（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部３１７、ハードディスクなどより構成される記憶部３１８、モデム、ターミナルアダプタなどより構成される通信部３１９が接続されている。通信部３１９は、図示しないネットワークを介しての通信処理を行う。
【０１９１】
入出力インタフェース３１５にはまた、必要に応じてドライブ３２０が接続され、磁気ディスク３２１、光ディスク３２２、光磁気ディスク３２３、或いは半導体メモリ３２４などが適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部３１８にインストールされる。
【０１９２】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば、汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０１９３】
この記録媒体は、図２８に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク３２１（フレキシブルディスクを含む）、光ディスク３２２（CD-ROM(Compact Disk-Read Only Memory)，ＤＶＤ(Digital Versatile Disk)を含む）、光磁気ディスク３２３（MD(Mini-Disk)（商標）を含む）、もしくは半導体メモリ３２４などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているＲＯＭ３１２や、記憶部３１９に含まれるハードディスクなどで構成される。
【０１９４】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１９５】
【図１】従来の仮想アドレス空間の構成例を示す図である。
【図２】図１の従来の仮想アドレス空間の詳細な構成例を示す図である。
【図３】図１の従来の仮想アドレス空間の詳細な構成の他の例を示す図である。
【図４】従来のキャッシュの中のデータの構成例を示す図である。
【図５】本発明を適用した情報処理装置の構成例を示すブロック図である。
【図６】図５の情報処理装置の命令仮想アドレス空間とデータ仮想アドレス空間の構成例を示す図である。
【図７】図６の命令仮想アドレス空間とデータ仮想アドレス空間の詳細な構成例を示す図である。
【図８】図７の命令仮想アドレス空間とデータ仮想アドレス空間のさらに詳細な構成例を示す図である。
【図９】図７の例の場合の図５の命令キャッシュとデータキャッシュの中のデータの構成例を示す図である。
【図１０】図７の命令仮想アドレス空間とデータ仮想アドレス空間の構成の他の例を示す図である。
【図１１】図７の命令仮想アドレス空間とデータ仮想アドレス空間の構成のさらに他の例を示す図である。
【図１２】図１１の例の場合の図５の命令キャッシュとデータキャッシュの中のデータの構成例を示す図である。
【図１３】図５の情報処理装置のデータ仮想アドレス空間の他の構成例を示す図である。
【図１４】従来のアドレス変換の例を説明する図である。
【図１５】図５の情報処理装置のアドレス変換の例を説明する図である。
【図１６】図５の情報処理装置のアドレス変換処理を説明するフローチャートである。
【図１７】本発明を適用した撮像装置の構成例を示すブロック図である。
【図１８】図１７のＣＰＵ部の構成例を示すブロック図である。
【図１９】図１７の撮像装置の命令仮想アドレス空間とデータ仮想アドレス空間の構成例を示す図である。
【図２０】図１７の撮像装置のアドレス変換の例を説明する図である。
【図２１】図１７の撮像装置のアドレス変換処理を説明するフローチャートである。
【図２２】図１７の撮像装置のアドレス変換の他の例を説明する図である。
【図２３】図１７の撮像装置の画像データ記録処理を説明するフローチャートである。
【図２４】図２３のステップＳ５５を制御する命令仮想アドレス空間とデータ仮想アドレス空間の構成例を説明する図である。
【図２５】図２３のステップＳ５５を制御するＣＰＵ部の符号化開始命令処理を説明するフローチャートである。
【図２６】図２４と比較するための従来の仮想アドレス空間の構成例を説明する図である。
【図２７】図２５と比較するための従来の符号化開始命令処理を説明するフローチャートである。
【図２８】本発明を適用した情報処理装置の他の構成例を示すブロック図である。
【符号の説明】
【０１９６】
５１  情報処理装置，６１  ＣＰＵ，６２  メモリ，６３  命令キャッシュ，６４  命令アドレス変換部，６５  データキャッシュ，６６  データアドレス変換部，６７  バスコントローラ，７１  命令バス，７２  データバス，１０１  命令仮想アドレス空間，１０２  データ仮想アドレス空間，１０３  物理アドレス空間，１２１  命令仮想アドレス空間，１２２  データ仮想アドレス空間，１５１  データ仮想アドレス空間，１５２  物理アドレス空間，２０１  撮像装置，２１１  ＣＰＵ部，２１２  ＲＯＭ，２１３  ＲＡＭ，２３１  Ｉ／Ｏレジスタ ，２５１  物理アドレス空間，２５２  命令仮想アドレス空間，２５３  データ仮想アドレス空間
【図１】
2004326729.tif 000003
【図２】
2004326729.tif 000004
【図３】
2004326729.tif 000005
【図４】
2004326729.tif 000006
【図５】
2004326729.tif 000007
【図６】
2004326729.tif 000008
【図７】
2004326729.tif 000009
【図８】
2004326729.tif 000010
【図９】
2004326729.tif 000011
【図１０】
2004326729.tif 000012
【図１１】
2004326729.tif 000013
【図１２】
2004326729.tif 000014
【図１３】
2004326729.tif 000015
【図１４】
2004326729.tif 000016
【図１５】
2004326729.tif 000017
【図１６】
2004326729.tif 000018
【図１７】
2004326729.tif 000019
【図１８】
2004326729.tif 000020
【図１９】
2004326729.tif 000021
【図２０】
2004326729.tif 000022
【図２１】
2004326729.tif 000023
【図２２】
2004326729.tif 000024
【図２３】
2004326729.tif 000025
【図２４】
2004326729.tif 000026
【図２５】
2004326729.tif 000027
【図２６】
2004326729.tif 000028
【図２７】
2004326729.tif 000029
【図２８】
2004326729.tif 000030