(57)【要約】【課題】１バイトより短いデータ値を効率的に処理して、データ処理システムのメモリの必要な記憶容量を減らす装置と方法とを提供する。【解決手段】データ処理システム２はベース・データ領域２４とビット・バンド・データ領域２８とを有する。ビット・バンド・データ領域２８へのメモリ・アクセスはベース・データ領域２４へのメモリ・アクセスに変換される。この変換の過程で、読取り・変更・書込みの動作によるアクセスであるか、またはマスクされた読取り動作によるアクセスであるかに従って、ベース・データ領域２４内の特殊のビットがアクセスのために取り出される。この場合、ビット・バンド・データ領域２８内の特定のアドレス位置をアドレス指定することにより、ベース・データ領域２４内のデータ値にビット・アクセスすることができる。【選択図】図３
2005222519.tif 000002
【特許請求の範囲】
【請求項１】
データ値を記憶するメモリと、
メモリ・アクセス命令に応じて、前記メモリ内に記憶されたデータ値にアクセスするためのメモリ・アクセス論理と、
を備えたデータ処理装置であって、
前記メモリは第１のメモリ・アドレス領域と第２のメモリ・アドレス領域とを有し、
前記メモリ・アクセス論理は、前記第１のメモリ・アドレス領域内の第１のデータ値への第１のメモリ・アクセスを指定するメモリ・アクセス命令に応じて、前記第１のメモリ・アクセスを前記第２のメモリ・アドレス領域内の第２のデータ値へのアクセスである第２のメモリ・アクセスに変換可能であり、
前記第１のメモリ・アクセスがメモリ書込みのときは、前記第１のデータ値内のＹ個のビットは前記第２のデータ値内のＹ個のビットに書き込まれ、前記Ｙ個のビット以外の前記第２のデータ値内のビットは変わらず、前記第２のメモリ・アクセスが読取り・変更・書込みのメモリ・アクセスであって、
前記第１のメモリ・アクセスがメモリ読取りのときは、前記第２のメモリ・アクセスはマスクされたメモリ読取りアクセスであって、前記第１のデータ値のＹ個のビットは前記第２のデータ値のＹ個のビットから読み取られ、前記Ｙ個のビット以外の前記第１のデータ値内のビットは前記Ｙ個のビット以外の前記第２のデータ値のビットに依存しない事前に決められた値に設定される、
データ処理装置。
【請求項２】
Ｙはユーザがプログラム可能な値である、請求項１記載のデータ処理装置。
【請求項３】
Ｙが１と８との間である、請求項１記載のデータ処理装置。
【請求項４】
前記第１のデータ値がＮビット・データ値であり、Ｎが３２、１６および８のいずれか１つである、請求項１記載のデータ処理装置。
【請求項５】
前記第２のデータ値がＭビット・データ値であり、Ｍが３２、１６および８のいずれか１つである、請求項１記載のデータ処理装置。
【請求項６】
前記第１のメモリ・アドレス領域と前記第２のメモリ・アドレス領域とは共通の物理メモリ記憶回路にマップする、請求項１記載のデータ処理装置。
【請求項７】
前記Ｙ個のビットが前記第１のデータ値内の連続するビットである、請求項１記載のデータ処理装置。
【請求項８】
前記Ｙ個のビットは前記第１のデータ値の最下位のＹ個のビットである、請求項１記載のデータ処理装置。
【請求項９】
前記メモリはバイト・アドレス指定可能であり、Ｙが８より小さい、請求項１記載のデータ処理装置。
【請求項１０】
前記読取り・変更・書込みのメモリ・アクセスは微少の読取り・変更・書込みのメモリ・アクセスとして実行される、請求項１記載のデータ処理装置。
【請求項１１】
前記第１のメモリ・アクセスが調整されていない場合は、前記第２のメモリ・アクセスが再調整される、請求項１記載のデータ処理装置。
【請求項１２】
データ処理方法であって、
メモリ内にデータ値を記憶するステップと、
メモリ・アクセス命令に応じて、前記メモリ内に記憶されたデータ値にアクセスするステップとを含み、
前記メモリは第１のメモリ・アドレス領域と第２のメモリ・アドレス領域とを有し、
前記第１のメモリ・アドレス領域内の第１のデータ値への第１のメモリ・アクセスを指定するメモリ・アクセス命令に応じて、前記第１のメモリ・アクセスを前記第２のメモリ・アドレス領域内の第２のデータ値へのアクセスである第２のメモリ・アクセスに変換し、
前記第１のメモリ・アクセスがメモリ書込みのときは、前記第２のメモリ・アクセスは読取り・変更・書込みのメモリ・アクセスで、前記第１のデータ値内のＹ個のビットは前記第２のデータ値内のＹ個のビットに書き込まれ、前記Ｙ個のビット以外の前記第２のデータ値内のビットは変わらず、
前記第１のメモリ・アクセスがメモリ読取りのときは、前記第２のメモリ・アクセスはマスクされた読取りメモリ・アクセスで、前記第１のデータ値のＹ個のビットは前記第２のデータ値のＹ個のビットから読み取られ、前記Ｙ個のビット以外の前記第１のデータ値内のビットは前記Ｙ個のビット以外の前記第２のデータ値のビットに依存しない事前に決められた値に設定される、
データ処理方法。
【請求項１３】
Ｙはユーザがプログラム可能な値である、請求項１２記載のデータ処理方法。
【請求項１４】
Ｙが１と８との間である、請求項１２記載のデータ処理方法。
【請求項１５】
前記第１のデータ値はＮビット・データ値であり、Ｎが３２、１６および８のいずれか１つである、請求項１２記載のデータ処理方法。
【請求項１６】
前記第２のデータ値はＭビット・データ値であり、Ｍが３２、１６および８のいずれか１つである、請求項１２記載のデータ処理方法。
【請求項１７】
前記第１のメモリ・アドレス領域と前記第２のメモリ・アドレス領域とは共通の物理メモリ記憶回路にマップする、請求項１２記載のデータ処理方法。
【請求項１８】
前記Ｙ個のビットが前記第１のデータ値内の連続するビットである、請求項１２記載のデータ処理方法。
【請求項１９】
前記Ｙ個のビットが前記第１のデータ値の最下位のＹ個のビットである、請求項１２記載のデータ処理方法。
【請求項２０】
前記メモリはバイト・アドレス指定可能であり、Ｙが８より小さい、請求項１２記載のデータ処理方法。
【請求項２１】
前記読取り・変更・書込みのメモリ・アクセスは微少の読取り・変更・書込みのメモリ・アクセスとして実行される、請求項１２記載のデータ処理方法。
【請求項２２】
前記第１のメモリ・アクセスが調整されていない場合は、前記第２のメモリ・アクセスは再調整される、請求項１２記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システムの分野に関するものである。特に、本発明はメモリに記憶されたデータワード内のビット値へのアクセスに関するものである。
【背景技術】
【０００２】
処理されるデータ値を記憶するメモリを持つデータ処理システムは周知である。かかるメモリは一般にデータ値を８ビットのバイト値として記憶する。かかる８ビットのバイト値（またはそれ以上）は同時に書き込まれ、また同時に読み取られる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
多くのデータ処理システム内には、長さが１バイトより短いデータ値を記憶する必要がある。メモリの記憶装置のバイトをいっぱいに用いて1ビットまたは数ビットだけのデータを記憶するのは、回路面積やコストや電力消費やその他の点において効率が悪い。また、メモリ以外の多くの装置は制御および状態レジスタ内の特定のビットにアクセスする必要がある。
【０００４】
メモリの必要な記憶容量を減らす方法として、記憶装置の１バイト内に複数のデータ値を記憶することは周知である。しかしこの方法の問題点は、１バイトの中にかかるデータを書き込みまたは読み取ろうとするときに、メモリ内のアクセスするバイトからデータ値の関係する部分を抽出しまたはデータ値の関係する部分を挿入するのに追加の処理ステップが必要なことである。このように命令を追加すると実行速度が遅くなり、コード・サイズが大きくなる。
【０００５】
この問題に対処する１つの公知の方法は、或るビットを挿入しまたは或るビットを抽出するための専用の命令を、メモリ内に記憶されたバイト値またはワード値に追加することである。しかし、命令ビット空間をかかる専用の命令で消費するのは不利である。また、これは一般にロードやストアに加えて用いられる命令なので、追加の処理時間が必要である。かかる追加の命令は、別個の命令であってもロードやストアの命令の一部であっても、割込みを行って読取りを変更と分離して書込みをするために、読取り・変更・書込みの問題を招くことがある。
公知の別の方法はＳＨＡＲＣプロセッサの方法であって、同じ基本のメモリを１６ビット語、または３２ビット語、または４０ビット語としてアクセスすることができる。
公知の更に別の方法はインテル８０５１である。これはビット・メモリを備えるが、通常のメモリシステムが有する柔軟性に欠ける。
【課題を解決するための手段】
【０００６】
１つの形態では、本発明が提供するデータ処理装置は、
データ値を記憶するメモリと、
メモリ・アクセス命令に応じて、前記メモリ内に記憶されたデータ値にアクセスするためのメモリ・アクセス論理と、
を備え、
前記メモリは第１のメモリ・アドレス領域と第２のメモリ・アドレス領域とを有し、
前記メモリ・アクセス論理は、前記第１のメモリ・アドレス領域内の第１のデータ値への第１のメモリ・アクセスを指定するメモリ・アクセス命令に応じて、前記第１のメモリ・アクセスを前記第２のメモリ・アドレス領域内の第２のデータ値へのアクセスである第２のメモリ・アクセスに変換可能であり、
前記第１のメモリ・アクセスがメモリ書込みのときは、前記第１のデータ値内のＹ個のビットは前記第２のデータ値内のＹ個のビットに書き込まれ、前記Ｙ個のビット以外の前記第２のデータ値内のビットは変わらず、前記第２のメモリ・アクセスが読取り・変更・書込みのメモリ・アクセスであって、
前記第１のメモリ・アクセスがメモリ読取りのときは、前記第２のメモリ・アクセスがマスクされたメモリ読取りアクセスであって、前記第１のデータ値のＹ個のビットは前記第２のデータ値のＹ個のビットから読み取られ、前記Ｙ個のビット以外の前記第１のデータ値内のビットは前記Ｙ個のビット以外の前記第２のデータ値のビットに依存しない事前に決められた値に設定される。
【０００７】
本発明の方法は、標準のメモリ・アクセス命令を用いて、記憶されたデータ値内の選択されたビット値を専用のメモリ・アドレス領域を用いることによりアドレス指定して、異なるメモリ位置を別のメモリ・アドレス領域内に記憶されたデータ値の種々のビット部にマップする方法を提供する。この方法は、専用のメモリ領域内でアクセスされるメモリ・アドレスが標準のメモリ・アクセス命令内に追加のビット・アドレス指定情報を実質的に符号化することにより、そして関係するビットが実際に記憶されているデータ値内の望ましいビット・アクセス動作にこれをマップすることにより、専用のビット・アクセス命令を必要としなくなると考えてよい。生成されたビット値へのメモリ・アクセスは本質的に標準のメモリ・アクセスではなく、書込み動作では関係するメモリ位置内に記憶されている他のデータを変えることなく必要な読取り・変更・書込みのアクセスを行い、読取りアクセスではマスクされた読取りを行って必要なビット値だけを取り出す。
【０００８】
認識されるように、データワード内のアクセスしようとするビット数は変わることがあり、好ましい実施の形態では、ユーザがプログラム可能な１から８までの範囲内の値でよい。
メモリ・アクセスによりアドレス指定されるデータ値の大きさは変わることがあるが、一般にその長さは３２ビットか、１６ビットか、あるいは８ビットである。
【０００９】
データ値内でアクセスするビットはデータ値全体の任意の位置に分散してよいが、一緒にアクセスするビットは関係するデータ値内で連続している方が簡単である。この場合、第１のアドレスの下位３，４，あるいは５ビットが全ての場合の開始ビットを符号化する。
記憶されたデータ値内のビットに書き込まれ、または読み取られたデータ値の処理は、かかるビット値が第１のデータ値の最下位ビットを形成していると簡単である。
メモリがバイト・アドレス指定可能なメモリであり、また１動作でアクセスするビット数が８ビットより小さいときに、この方法は特に優れている。
【００１０】
割込み状態を簡単にするために、好ましい実施の形態では読取り・変更・書込みのメモリ・アクセスを微少の(atomic)動作として実行する。
認識されるように、第１のメモリ・アクセスは関連するメモリ・バス構造に物理的に出される前に別の形式に変換されるので、第１のメモリ・アクセスは、与えられたバス構造と合うように再調整された第２のメモリ・アクセスと合わないことがある。
【００１１】
別の形態では、本発明が提供する方法は、
データ値をメモリ内に記憶するステップと、
メモリ・アクセス命令に応じて、前記メモリ内に記憶されたデータ値にアクセスするステップとを含み、
前記メモリは第１のメモリ・アドレス領域と第２のメモリ・アドレス領域とを有し、
前記第１のメモリ・アドレス領域内の第１のデータ値への第１のメモリ・アクセスを指定するメモリ・アクセス命令に応じて、前記第１のメモリ・アクセスを前記第２のメモリ・アドレス領域内の第２のデータ値へのアクセスである第２のメモリ・アクセスに変換し、
前記第１のメモリ・アクセスがメモリ書込みのときは、前記第２のメモリ・アクセスは読取り・変更・書込みのメモリ・アクセスで、前記第１のデータ値内のＹ個のビットは前記第２のデータ値内のＹ個のビットに書き込まれ、前記Ｙ個のビット以外の前記第２のデータ値内のビットは変わらず、
前記第１のメモリ・アクセスがメモリ読取りのときは、前記第２のメモリ・アクセスはマスクされた読取りメモリ・アクセスで、前記第１のデータ値のＹ個のビットは前記第２のデータ値のＹ個のビットから読み取られ、前記Ｙ個のビット以外の前記第１のデータ値内のビットは前記Ｙ個のビット以外の前記第２のデータ値のビットとは無関係の所定の値に設定される。
【００１２】
本発明の上記またはその他の目的や特徴や利点は、添付の図面を参照して例示の実施の形態の詳細な説明を読めば明らかである。
【実施例】
【００１３】
図１は、プロセッサ・コア４と、データ・メモリ６と、命令メモリ８とを含むデータ処理システム２の略図である。
プロセッサ・コア４は、レジスタ・バンク１０と、乗算器１２と、シフタ１４と、加算器１６とを含む処理論理を含む。処理論理１０，１２，１４，１６は命令復号器１８が生成する制御信号の制御の下で動作し、命令復号器１８自体は命令パイプライン２０内の命令に応じる。パイプライン２０にロードする命令は命令メモリ８から検索する。
【００１４】
命令復号器１８はメモリ・アクセス命令に応じて制御信号を生成する。制御信号はプロセッサ・コア4内のロード・ストア・ユニット２２を制御する。ロード・ストア・ユニット２２はデータ・メモリ6内でデータ値の読取り動作と書込み動作とを行う。後で説明する方法に従って、ロード・ストア・ユニット２２は、またはロード・ストア・ユニット２２とデータ・メモリ６との間の別個のユニットは、第１のメモリ・アドレス領域に行われるメモリ・アクセスを第２のメモリ・アドレス領域へのメモリ・アクセスに変換してデータ・メモリ６内に記憶されたデータ値内の特定のビットを取り出す。
【００１５】
図２は図１のシステムのメモリ・アドレス・マップの一部の略図である。これはデータ・アドレス・マップであって、ベース・データ領域２４と、特別データ領域２６と、ビット・バンド・データ領域２８とを含む。ロード・ストア・ユニット２２はビット・バンド・データ領域２８へのメモリ・アクセス命令をベース・データ領域２４へのメモリ・アクセスに翻訳／変換する。この例のビット・バンド・データ領域２８内の各バイトはベース・データ領域２４内のバイト値内の或るビットにマップする。図１の例示のプロセッサではデータ・アクセスは８ビットのデータ・アクセスで、ビット・バンド・データ領域２８へのデータ・アクセスの最下位ビットをベース・データ領域２４のバイト・データ値内の或るビットにマップする。このように、ビット・バンド・データ領域２８内の該当するバイトをアドレス指定することにより、プログラマはベース・データ領域２４内のデータ値内の個別のビットに実質的にアクセスすることができる。
【００１６】
図３は、ビット・バンド・データ領域２８へのデータ・アクセスとベース・データ領域２４とのこの関係の詳細を示す略図である。図に示すように、ビット・バンド・データ領域２８への第１のデータ・アクセスは８ビットのデータ・アクセスである。このデータ・アクセスの最下位ビットＹはベース・データ領域２４内のビットにマップするビットである。このマッピングは図１のロード・ストア・ユニット回路２２が行い、図３の下側の数式で示す変換を行って、ビット・バンド・データ領域２８内のバイト・アドレスとベース・データ領域２４内でアクセスされるバイトおよびビットとの間でマップする。
【００１７】
ビット・バンド・データ領域へのアクセスが３２ビット語のアクセスである別の実施の形態では、この動作の一部として、アクセスを３２ビットの・アクセスから８ビットのアクセスに変換する。ただし、このアクセス・サイズの変更はオプションであって、或る実施の形態では、既存のバス構造に合わせるためまたはその他の理由で、データ・アクセスを３２ビットのデータ・アクセスのままにする方が便利なことがある。またデータ・アクセスはバス構造の任意の制約に合わせるように必要に応じて再調整してよい。例えば、３２ビットの調整されないアクセスを３２ビットの調整されたアクセスにマップしてよい。
【００１８】
ビット・バンド・データ領域２８に書込みを行う場合は、これをベース・データ領域２４への微少の読取り・変更・書込み動作にマップする。この読取り・変更・書込みの動作が微少の性質であることは、この動作に部分的にでも割り込むことはできないことと、割込み処理を行うときにこれがデータの完全性と一貫性を保持するのに重要であることを意味する。ビット・バンド・データ領域２８への読取り動作はベース・データ領域２４からのマスクされた読取り動作にマップして、ベース・データ領域２４のバイト内の該当するビットを取り出して８ビットの結果の中の最下位ビットとして返す。プログラムには、これはビット・バンド・データ領域２８から検索されたように見える。この取り出されたビットは、ベース・データ領域２４のバイト内のその位置にかかわらず、返されたデータ値の最下位ビット位置に現れる。書込みアクセスの場合に書き込まれるビットもビット・バンド・データ領域２８に書き込まれるデータワード内の最下位ビット位置に現れる。ただし、これはベース・データ領域２４のバイト内の任意の位置にマップする。
【００１９】
図４は、ビット・バンド・データ領域２８内でアクセスしたデータ値と、ベース・データ領域２４内でアクセスしたデータ値との関係を双方向で示す略図である。図から分かるように、かかる２つの領域内のデータ値は、特定の要求に適するようにまたは関係するシステムの現在の要求に合うように選択された、異なる、実質的に任意の長さＮ、Ｍを有して良い。アクセスされるビットは図に示すようにマップされ、その関係は実質的にじょうご形に見える。動作が読取りか書込みかに従って、アクセスされるＹ個のビット以外のビットは所定の値に設定するか、またはそのままで変えない。認識されるように、或るビット値の読取りの場合は、返されたデータ値はアドレス指定された選択されたビット以外のビット位置を所定の値（例えば、０）に設定してよい。その代わりに、ビット位置を用いて、返されたデータ値の拡張の標識としてよい。
【００２０】
本発明の例示の実施の形態について、添付の図面を参照して詳細に説明したが、理解されるように、本発明はかかる実施の形態そのままに限定されるものではなく、添付のクレームに定義される本発明の範囲と精神から逸れることなく、当業者は種々の修正や変更を行うことができる。
【図面の簡単な説明】
【００２１】
【図１】データ値を記憶するためのメモリを含むデータ処理システムの概要を示す。
【図２】図１のシステムのメモリ・アドレス空間／マップの一部の概要を示す。
【図３】第１のメモリ・アドレス領域と第２のメモリ・アドレス領域との間のマッピングの概要を示す。
【図４】第１のデータ値と第２のデータ値との関係の概要を示す。
【符号の説明】
【００２２】
２  データ処理システム
２４  ベース・データ領域
２８  ビット・バンド・データ領域
【図１】
2005222519.tif 000003
【図２】
2005222519.tif 000004
【図３】
2005222519.tif 000005
【図４】
2005222519.tif 000006