(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、
前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるＮビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記命令デコーダは、前記複数のレジスタにより提供されるＭビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記命令デコーダは、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタの第１のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタの第２のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第２のマッピングとを提供するように構成され、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタが、前記第２のセットのレジスタに対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し（前記共通レジスタの非共有部分は前記第１の命令セットのプログラム命令を使用することによってはアクセス不可である）、前記第２のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングであり、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの１つにおいて動作するように構成され、前記命令デコーダは、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記命令デコーダは前記マッピングを提供する、データ処理装置。
【請求項２】
Ｍ＝２Ｎである、請求項１に記載の装置。
【請求項３】
前記第１のセットおよび前記第２のセットは、同数のレジスタを含む、請求項１または２に記載の装置。
【請求項４】
前記複数のレジスタは、複数のＭビットレジスタを備え、前記第１の命令セットのプログラム命令は、前記Ｍビットレジスタの最下位Ｎビットにアクセスするためのものである、請求項１、２および３のいずれか一項に記載の装置。
【請求項５】
Ｎ＝３２である、請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記複数のレジスタは、ヌル値レジスタを含み、
前記第２の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記レジスタの第１のセットは、前記ヌル値レジスタにマッピングされたアーキテクチャレジスタを有さない、請求項６に記載の装置。
【請求項８】
前記第１の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第２のセットのレジスタにマッピングされる前記第１のセットの外にある、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記共通レジスタが前記第１の命令セットのプログラム命令によりアクセスされる時に、前記非共有部分をゼロ化するか、前記非共有部分の値を不変のままとするか、または、前記非共有部分の値を未定義値に設定するかのうちのいずれか１つを行う、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理手段を制御するための命令デコーディング手段と、を備え、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるＮビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるＭビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタ手段の少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記命令デコーディング手段は、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタ手段の第１のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタ手段の第２のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第２のマッピングとを提供するように構成され、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタ手段が、前記第２のセットのレジスタ手段に対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタ手段と、前記複数のレジスタ手段内の共通レジスタ手段の共有部分を共有し（前記共通レジスタ手段の非共有部分は前記第１の命令セットを使用することによってはアクセス不可である）、前記第２のセットのレジスタ手段を使用してアクセス可能である値を格納するようなマッピングであり、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの１つにおいて動作するように構成され、前記命令デコーディング手段は、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記命令デコーディング手段は前記マッピングを提供する、データ処理装置。
【請求項１１】
データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
プログラム命令のストリームをデコードするステップと、
前記デコードするステップによりデコードされる前記プログラム命令に基づいて制御されるデータ処理操作であって、前記複数のレジスタに格納されたデータ値に対するデータ処理操作を実行するステップとを含み、
前記デコードするステップは、前記複数のレジスタにより提供されるＮビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記デコードするステップは、前記複数のレジスタにより提供されるＭビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記デコードするステップは、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタの第１のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタの第２のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第２のマッピングとを提供し、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタが、前記第２のセットのレジスタに対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し（前記共通レジスタの非共有部分は前記第１の命令セットを使用することによってはアクセス不可である）、前記第２のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングであり、
前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの１つにおいて動作し、前記デコードするステップは、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードし、前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記デコードするステップは前記マッピングを提供する、データ処理方法。
【請求項１２】
Ｍ＝２Ｎである、請求項１１に記載の方法。
【請求項１３】
前記第１のセットおよび前記第２のセットは、同数のレジスタを含む、請求項１１または１２に記載の方法。
【請求項１４】
前記複数のレジスタは、複数のＭビットレジスタを備え、前記第１の命令セットのプログラム命令は、前記Ｍビットレジスタの最下位Ｎビットにアクセスするためのものである、請求項１１、１２および１３のいずれか一項に記載の方法。
【請求項１５】
Ｎ＝３２である、請求項１１から１４のいずれか一項に記載の方法。
【請求項１６】
前記複数のレジスタは、ヌル値レジスタを含み、
前記第２の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み
出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項１１から１５のいずれか一項に記載の方法。
【請求項１７】
前記レジスタの第１のセットは、前記ヌル値レジスタにマッピングされたアーキテクチャレジスタを有さない、請求項１６に記載の方法。
【請求項１８】
前記第１の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第２のセットのレジスタにマッピングされるレジスタの前記第１のセットの外にある、請求項１１から１７のいずれか一項に記載の方法。
【請求項１９】
前記共通レジスタが前記第１の命令セットのプログラム命令によりアクセスされる時に、前記非共有部分をゼロ化するか、前記非共有部分の値を不変のままとするか、または、前記非共有部分の値を未定義値に設定するかのうちのいずれか１つを行う、請求項１１から１８のいずれか一項に記載の方法。
【請求項２０】
データ処理装置上で実行されるコンピュータプログラムにより提供される仮想機械であって、請求項１から９のいずれか一項に記載の装置に対応する命令実行環境を提供する仮想機械。
【請求項２１】
データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、
前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第１の命令セットのプログラム命令に応答し、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの１つにおいて動作するように構成され、前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第２の命令セットのプログラム命令に応答し、
前記第１のセットのアーキテクチャレジスタの各レジスタと、前記第２のセットのアーキテクチャレジスタの各レジスタが、所定の１対１のマッピングを有することにより、前記第１の命令セットのプログラム命令と前記第２の命令セットのプログラム命令が前記複数のレジスタの少なくともいくつかを共有するものであり、
前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記命令デコーダはマッピングを提供する、データ処理装置。
【請求項２２】
前記第１のセットおよび前記第２のセットは、同数のレジスタを含む、請求項２１に記載の装置。
【請求項２３】
前記複数のレジスタは、複数の２Ｎビットレジスタを備え、前記第１の命令セットのプログラム命令は、前記２Ｎビットレジスタの最下位Ｎビットにアクセスするためのものである、請求項２１または２２に記載の装置。
【請求項２４】
Ｎ＝３２である、請求項２３に記載の装置。
【請求項２５】
前記複数のレジスタは、ヌル値レジスタを含み、
前記第２の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項２１から２４のいずれか一項に記載の装置。
【請求項２６】
前記第１のセットは、前記ヌル値レジスタに対応するアーキテクチャレジスタを有さない、請求項２５に記載の装置。
【請求項２７】
前記第１の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第２のセットのレジスタに対応する前記第１のセットの外にある、請求項２１から２６のいずれか一項に記載の装置。
【請求項２８】
データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理手段を制御するための命令デコーダ手段と、を備え、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第１の命令セットのプログラム命令に応答し、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態の１つにおいて動作するように構成され、前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第２の命令セットのプログラム命令に応答し、
前記第１のセットのアーキテクチャレジスタの各レジスタと、前記第２のセットのアーキテクチャレジスタの各レジスタが、所定の１対１のマッピングを有することにより、前記第１の命令セットのプログラム命令と前記第２の命令セットのプログラム命令が前記複数のレジスタ手段の少なくともいくつかを共有するものであり、
前記命令デコーダ手段は、アーキテクチャレジスタのどれを使用するかを決定する時に、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記命令デコーダ手段はマッピングを提供する、データ処理装置。
【請求項２９】
データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
プログラム命令のストリームをデコードするステップと、
前記デコードするステップによりデコードされる前記プログラム命令に基づいて制御されるデータ処理操作であって、前記複数のレジスタに格納されたデータ値に対するデータ処理操作を実行するステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第１の命令セットのプログラム命令に応答し、
前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの１つにおいて動作し、
前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定するために、前記複数の例外状態のうちの現在の例外状態とともに、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするステップを含み、
前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第２の命令セットのプログラム命令に応答し、
前記第１のセットのアーキテクチャレジスタの各レジスタと、前記第２のセットのアーキテクチャレジスタの各レジスタが、所定の１対１のマッピングを有することにより、前記第１の命令セットのプログラム命令と前記第２の命令セットのプログラム命令が前記複数のレジスタの少なくともいくつかを共有するものであり、
前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記第１のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第１のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
前記所定の１対１のマッピングが為されている前記第１のセットのレジスタと前記第２のセットのレジスタのある範囲について、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている前記第２の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が１ずつ増える昇順であるのに対し、その範囲内の第２のセットのレジスタの一群の各レジスタにマッピングされている、前記第１のセットのレジスタの一群の各レジスタにマッピングされている前記第１の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、２つの値が交互に現れるものであるように、前記デコードするステップはマッピングを提供する、データ処理方法。
【請求項３０】
前記第１のセットおよび前記第２のセットは、同数のレジスタを含む、請求項２９に記載の方法。
【請求項３１】
前記複数のレジスタは、複数の２Ｎビットレジスタを備え、前記第１の命令セットのプログラム命令は、前記２Ｎビットレジスタの最下位Ｎビットにアクセスするためのものである、請求項２９または３０に記載の方法。
【請求項３２】
Ｎ＝３２である、請求項３１に記載の方法。
【請求項３３】
前記複数のレジスタは、ヌル値レジスタを含み、
前記第２の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項２９から３２のいずれか一項に記載の方法。
【請求項３４】
前記第１のセットは、前記ヌル値レジスタに対応するアーキテクチャレジスタを有さない、請求項３３に記載の方法。
【請求項３５】
前記第１の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第２のセットのレジスタに対応する前記第１のセットの外にある、請求項２９から３４のいずれか一項に記載の方法。
【請求項３６】
データ処理装置上で実行されるコンピュータプログラムにより提供される仮想機械であって、請求項２１から２７のいずれか一項に記載の装置に対応する命令実行環境を提供する仮想機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、複数の命令セットをサポートするデータ処理システム、およびそれらの複数の命令セットが提供され得る手法に関する。
【背景技術】
【０００２】
複数の命令セットをサポートするデータ処理システムを提供することが知られている。そのようなデータ処理システムのいくつかの例は、ＡＲＭ  Ｌｉｍｉｔｅｄ（Ｃａｍｂｒｉｄｇｅ、Ｅｎｇｌａｎｄ）により製造されているプロセッサ設計であり、これはＡＲＭ命令セットおよびＴｈｕｍｂ命令セットの両方をサポートしている。ＡＲＭ命令は、３２ビットでエンコードされ、３２ビットレジスタ内に保持されるデータ値に対して実行される３２ビットデータ処理操作（例えば、ＡＤＤ、ＳＵＢ、ＬＤＲ、ＳＴＲ等）を指定する。Ｔｈｕｍｂ命令は、１６ビットでエンコードされ、３２ビットレジスタ内に格納される３２ビットデータ値に対して実行される３２ビットデータ処理操作を指定する。
【０００３】
ＡＲＭ  Ｌｉｍｉｔｅｄにより設計されたＮｅｏｎおよびＶＦＰアーキテクチャ拡張は、それぞれ、プログラム制御下で指定されたサイズを有するレジスタ内に格納されるデータ値に対して動作するＳＩＭＤおよび浮動小数点命令を提供する。
【０００４】
プロセッサを提供する際、必要とされる回路リソースの量を低減することが望ましい。レジスタを形成するための回路要素の提供は、１つのそのような回路リソースを表している。
【発明の概要】
【課題を解決するための手段】
【０００５】
一態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるＮビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記命令デコーダは、前記複数のレジスタにより提供されるＭビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記命令デコーダは、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタの第１のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタの第２のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第２のマッピングとを提供し、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタが、前記第２のセットのレジスタに対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し（前記共通レジスタの非共有部分は前記第１の命令セットを使用してアクセス不可である）、前記第２のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングである、データ処理装置を提供する。
【０００６】
本発明の技術は、異なる幅のアーキテクチャレジスタに対して異なる命令セットが動作する場合であっても、命令セットは、複数のレジスタのリソースを共有することができることを認識する。さらに、２つの命令セットにより使用されるレジスタ識別子間の所定の１対１のマッピングに対応することにより、命令セットの少なくとも１つは、他の命令セットによりレジスタ内に格納される値の全てにアクセスすることが可能である。これは、２つの命令セットに書き込まれるプログラムの相互操作、例えば２つの命令セットの異なる一方を使用して書き込まれるプログラム間のデータ値の共有に有益である。命令は、典型的には、２つ以上のレジスタ指定フィールドを含み得ることが理解される。いくつかの命令はまた、特定のレジスタの使用を暗に指定してもよく、例えばＰＵＳＨおよびＰＯＰ命令は、スタックポインタレジスタの使用を暗に指定する。
【０００７】
第１の命令セットに提示されるようなレジスタの第１のセットは、第２の命令セットに提示されるようなレジスタの第２のセットとは数が異なっていてもよいことが可能であるが、少なくとも好ましい実施形態において、第１のセットおよび第２のセットは、同数のレジスタを含む。これは、提供されるレジスタリソースの高レベルの再使用に役立つだけでなく、２つの命令セット間の効率的な相互運用性を促進する。
【０００８】
Ｍビットアーキテクチャレジスタは、２Ｎビットアーキテクチャレジスタであってもよい。
【０００９】
複数のレジスタは、第２の命令セットによる２Ｎビットデータ値の操作を容易化するために、２Ｎビットレジスタであってもよい。この場合、第１の命令セットは、２Ｎビットレジスタの最下位Ｎビットにアクセスするように構成されてもよい。
【００１０】
レジスタサイズおよびデータ幅は変動し得るが、少なくともいくつかの好ましい実施形態において、Ｎ＝３２である。
【００１１】
アクセスされるレジスタは、プログラム命令内のレジスタ指定フィールドにより完全に指定されてもよい。代替として、どのアーキテクチャレジスタが処理されるべきかを決定するために、現在の例外状態等の追加的状態が、レジスタ指定フィールドの値と組み合わされてもよい。本発明の少なくともいくつかの好ましい実施形態において、第１の命令セットがこのように動作する。
【００１２】
例外状態が、所与の値のレジスタ指定フィールドに対してどのアーキテクチャレジスタが使用されるべきかを指定する上での追加的な自由度を提供する場合、レジスタ指定フィールドの共通の値および異なる例外状態でアクセスされるアーキテクチャレジスタのグループは、レジスタのバンクグループと呼ばれる。そのような構成は、迅速な実行処理の補助に有用となり得る。
【００１３】
例えばアウトオブオーダー処理を容易化するためにレジスタリネーミングを使用する実施形態において、アーキテクチャレジスタにマッピングされる物理レジスタは変化すること、および、処理の所与の時点において、同じアーキテクチャレジスタに対応する複数の物理レジスタが存在し得るが、プログラム順序においては別の点であることが理解される。
【００１４】
命令デコーディングおよび使用される正しいアーキテクチャレジスタの識別を単純化するために、命令デコーダにより使用されるマッピングは、レジスタのバンクグループ内において、そのようなバンクレジスタの１つを指定する第１の命令セットのプログラム命令内のレジスタ指定フィールドの最下位ビットの値は、同じアーキテクチャレジスタにマッピングする第２の命令セットのプログラム命令のレジスタ指定フィールドの最下位ビットと共通の値であるように構成されるようなマッピングであってもよい。これは、デコーディングを単純化する。
【００１５】
バンクレジスタに関連した上述の構成を利用するいくつかの実施形態の特徴は、命令デコーダが、第２のセットのプログラムインストラクション内のレジスタ指定フィールドの増分値のシーケンスに対応する前記第２のセットのレジスタの部分に対して、第１の命令セットのプログラム命令内のレジスタ指定フィールドの対応する値が２つの値で交互するように、マッピングを提供するように構成されることである。
【００１６】
提供される複数のレジスタは、第２の命令セットのプログラム命令にアクセスした時に所定のヌル値を格納するヌル値レジスタを含んでもよく、第１の命令セットは、ヌル値レジスタにマッピングされるレジスタを有さない。そのようなヌル値レジスタは、読み出された時にヌル値を返すことができ、書き込むレジスタとしてヌル値レジスタを指定する命令は、結果が廃棄されたものとして解釈される。
【００１７】
いくつかの実施形態において、ヌル値はゼロである。
【００１８】
いくつかの実施形態において、第１の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、プログラムカウンタレジスタは、第２のセットのレジスタにマッピングされる第１のセットの外にある。したがって、上述のように命令デコーダにより提供される１対１のマッピングは、プログラムカウンタレジスタを含まない。
【００１９】
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理回路を制御するための命令デコーディング手段と、を備え、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるＮビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるＭビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタ手段の少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記命令デコーディング手段は、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタ手段の第１のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタ手段の第２のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第２のマッピングとを提供するように構成され、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタ手段が、前記第２のセットのレジスタ手段に対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタ手段と、前記複数のレジスタ手段内の共通レジスタ手段の共有部分を共有し（前記共通レジスタ手段の非共有部分は前記第１の命令セットを使用してアクセス不可である）、前記第２のセットのレジスタ手段を使用してアクセス可能である値を格納するようなマッピングである、データ処理装置を提供する。
【００２０】
別の態様から見れば、本発明は、データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するステップと、前記データ処理操作を実行する前記ステップを制御するためのプログラム命令のストリームをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供されるＮビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第１の命令セットのプログラム命令に応答し、Ｎは、正の整数値であり、
前記デコードするステップは、前記複数のレジスタにより提供されるＭビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第２の命令セットのプログラム命令に応答し、Ｍは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第１の命令セットのプログラム命令および前記第２の命令セットのプログラム命令により共有され、
前記デコードするステップは、前記第１の命令セットのプログラム命令による使用に提示されるＮビットアーキテクチャレジスタの第１のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第１の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第２の命令セットのプログラム命令による使用に提示されるＭビットアーキテクチャレジスタの第２のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第１のマッピングと、前記第２の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第２のマッピングとを提供し、前記第１のマッピングは、前記第２のマッピングとは異なり、前記第１のマッピングおよび前記第２のマッピングは、前記第１のセットの各レジスタが、前記第２のセットのレジスタに対し所定の１対１のマッピングを有し、前記第２のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し（前記共通レジスタの非共有部分は前記第１の命令セットを使用してアクセス不可である）、前記第２のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングである、データ処理方法を提供する。
【００２１】
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、
前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第１の命令セットのプログラム命令に応答し、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態において動作するように構成され、前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態の現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記複数のレジスタにより提供され、前記第１の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第２の命令セットのプログラム命令に応答し、
前記命令デコーダは、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、どのアーキテクチャレジスタを使用するかを決定するように構成される、データ処理装置を提供する。
【００２２】
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理回路を制御するための命令デコーディング手段と、を備え、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第１の命令セットのプログラム命令に応答し、
前記装置は、前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態において動作するように構成され、前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態の現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供され、前記第１の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第２の命令セットのプログラム命令に応答し、
前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成される、データ処理装置を提供する。
【００２３】
さらなる態様から見れば、本発明は、データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するステップと、前記データ処理操作を実行する前記ステップを制御するためのプログラム命令のストリームをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第１のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第１の命令セットのプログラム命令に応答し、
前記第１の命令セットのプログラム命令を実行する時に、複数の例外状態において動作し、どのアーキテクチャレジスタを使用するかを決定するために、前記複数の例外状態の現在の例外状態とともに、前記第１の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供され、前記第１の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第２のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第２の命令セットのプログラム命令に応答し、
前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第２の命令セットのプログラム命令内のレジスタ指定フィールドをデコードする、データ処理方法を提供する。
【００２４】
ここで、例示のみを目的として、添付の図面を参照しながら本発明の実施形態を説明する。
【図面の簡単な説明】
【００２５】
【図１】３２ビットデータ値に対し動作する第１の命令セットおよび６４ビットデータ値に対し動作する第２の命令セットをサポートするデータ処理システムを概略的に示す図である。
【図２】図２のデータ処理システムの６４ビット汎用レジスタを概略的に示す図である。
【図３】図２の汎用レジスタを使用して３２ビットデータ処理値に対し動作するデータ処理命令のアクションを概略的に示す図である。
【図４】図２の汎用レジスタを使用して６４ビットデータ処理値に対し動作するデータ処理命令のアクションを概略的に示す図である。
【図５】３２ビットデータ処理値に対し動作し、レジスタ指定フィールドを含む命令の例を概略的に示す図である。
【図６】６４ビットデータ処理値に対し動作し、レジスタ指定フィールドを含む命令の例を概略的に示す図である。
【図７】３２ビットデータ処理値に対し動作するプログラム命令の第１の命令セットに提示されるレジスタを概略的に示す図である。
【図８】６４ビットデータ処理値に対し動作する第２の命令セットに提示されるレジスタを概略的に示す図である。
【図９】図７および８のレジスタ間のマッピングを概略的に示す図である。
【図１０】命令のデコーディングを概略的に示すフロー図である。
【図１１】異なる命令セットからのプログラム命令のレジスタ指定フィールドのデコーディングを概略的に示す図である。
【図１２】仮想機械実装を概略的に示す図である。
【発明を実施するための形態】
【００２６】
図１は、メモリ６に結合されたプロセッサ４を含むデータ処理システムを概略的に示している。プロセッサ４は、３１  ６４ビット汎用レジスタとして形成された複数のレジスタ８、および常にゼロ値を返すヌルレジスタを含む。これらは、一実施形態においてレジスタリネーミングを使用しないプロセッサ４のハードウェアにより提供されるレジスタである。レジスタリネーミングを使用する一実施形態において、アーキテクチャレジスタ（例えば命令により指定され、プログラマーのモデルにおいて考慮されるようなレジスタ）は、異なる物理レジスタにマッピングされてもよく、複数の物理レジスタは、プログラム順序において異なる時間に同じアーキテクチャレジスタに対応する値を同時に保有してもよい。
【００２７】
レジスタ８の使用は、３２ビットでエンコードされ３２ビットデータ値（３２ビット命令）に対し動作する命令を含む第１の命令セットに提示されるレジスタの第１のセット（３２ビットアーキテクチャレジスタのセット）を介するもの、および３２ビットでエンコードされ６４ビットデータ値（６４ビット命令）に対し動作する命令を含む第２の命令セットに提示されるレジスタの第２のセット（６４ビットアーキテクチャレジスタ）を介するものである。これらの両方の命令セット内の命令は、３２ビットを有するものとしてエンコードされるが、これらの命令セットに影響されるデータ値の幅は異なる。
【００２８】
処理回路１０は、複数のレジスタ８に結合され、乗算器１２、シフター１４および加算器１６を含むデータパスの形態をとる。命令デコーダ１８（レジスタマッピング回路を含む）は、命令デコーダ１８によりデコードされたプログラム命令に応答して制御信号２０を生成する。これらの制御信号２０は、処理回路１０を制御および構成するとともに、複数の汎用レジスタ８内のレジスタへのアクセスを制御する。処理回路１０は明確性を改善するために単純化された形態で示されていること、また実際にはより多くの回路要素が存在し得ることが理解される。
【００２９】
データ処理システム２は、状態データ（ユーザ可読であってもよく、またはユーザ可読でなくてもよい）を使用して、プログラム命令が第１の命令セットのプログラム命令としてデコードされるか、または第２の命令セットのプログラム命令としてデコードされるかを制御し、例えば、モードビットまたはモード状態は、どの命令セットが使用されているかを示すように設定されてもよい。異なる命令セット内の命令のエンコーディングは、同じ命令ビットパターンが両方の命令セットにおいて生じてもよく、それらの命令セット内の異なる命令に対応してもよいという点で非直交であってもよい。
【００３０】
デコードされるプログラム命令は、第１の命令セットのプログラム２４および第２の命令セットのプログラム２６の両方を格納するメモリ６から、命令パイプライン２２にフェッチされる。プログラム命令が命令パイプライン２２内のデコード段階に達すると、次いでそれらは、命令デコーダ１８に受け渡され、デコードされて制御信号２０が生成される。命令デコーダ１８はまた、どの命令セットが現在使用されているか、およびそれに伴い命令パイプライン２２によるデコーディングに提示されるプログラム命令が、第１の命令セットの３２ビット命令として、または第２の命令セットの６４ビット命令としてデコードされるべきか否かを示す、命令セット選択回路２８からの信号に応答する。命令デコーダ１８が第１の命令セットからの命令（３２ビット命令）をデコードしている場合、命令デコーダはまた、プロセッサ４が現在どのモードで動作しているかを示す３２ビット例外モード回路３０からの信号に応答する。第１の命令セットのプログラム命令を実行する時の現在の例外モードは、以下で説明されるように、第１の命令セットに提示されるレジスタの第１のセットのレジスタのどれが使用されるべきかを指定するために必要である。
【００３１】
図２は、図１からの複数の汎用レジスタ８の１つを示す。この汎用レジスタは、６４ビットレジスタである。第１の命令セット（３２ビット命令）のプログラム命令を実行する場合、図２のレジスタの最下位ビット部がアクセスされ、操作される。好ましい実施形態において、最上位ビット部は、そのような操作中不変のまま維持されるが、ゼロ化されるか、またはある未定義値に設定されてもよい。図２のレジスタが第２の命令セットのプログラム命令によりアクセスされる場合、レジスタの６４ビット全てが利用される。したがって、２つの命令セットが異なるデータ幅に対して動作するとしても、図１の複数のレジスタ８に提供される物理レジスタの使用を共有することができる。レジスタの最上位３２ビットは、２つの命令セット間で共有されないレジスタの部分である。
【００３２】
図３は、第１の命令セットからの加算操作の実行におけるレジスタの使用を概略的に示す。図から分かるように、各レジスタの下位部分が、入力オペランドまたは実行される処理操作の宛先を提供するために利用される。レジスタの上位部分は無視され、好ましい実施形態においては不変のままである。
【００３３】
図４において、第２の命令セット（６４ビット命令）の加算操作が同様の様式で示されている。図４から、この場合の入力オペランドおよび宛先は、全て図２のレジスタの全幅を利用することが分かる。
【００３４】
図５は、３つのレジスタ指定フィールドを含む第１の命令セットの命令（３２ビット命令）を概略的に示す。これらのレジスタ指定フィールドは、各レジスタ指定フィールドにより１６個の異なる値を指定することができる４ビットフィールドである。２つのソースレジスタ指定フィールド、すなわちＲｍおよびＲｎが示されている。１つの宛先レジスタ指定フィールド、すなわちＲｄが示されている。図５に概略的に示されている命令の残りは、どのデータ処理操作が実行されるべきかを示すために使用されるオペコードである。レジスタ指定フィールドはまた、不連続であってもよく、レジスタ指定子のいくつかのビットは、レジスタ指定子の他のビットから分離されてもよい。
【００３５】
図６は図５に類似しているが、ただしこの場合第２の命令セットからの命令（６４ビット命令）が示されている。この場合、レジスタ指定フィールドは、各レジスタ指定フィールドに対し最大３２個の異なる値を示すことができる５ビットフィールドである。ソースレジスタ指定フィールドは、ＸｍおよびＸｎであり、宛先レジスタ指定フィールドは、Ｘｄである。
【００３６】
図７は、第１の命令セットに提示されるようなアーキテクチャレジスタの第１のセットを示す。これは、ＡＲＭ  Ｌｉｍｉｔｅｄ（Ｃａｍｂｒｉｄｇｅ、Ｅｎｇｌａｎｄ）により設計されたプロセッサにおけるＡＲＭ命令セットに提示されるアーキテクチャレジスタのセットである。レジスタ指定フィールドは、０から１５の値を指定することができる４ビットフィールドである。レジスタＲ１５は、プログラムカウンタとしての使用に確保される。プログラムカウンタとしてのＲ１５の使用は、特殊目的の使用であり、プログラムカウンタは、後述のように、６４ビット命令に提示されるアーキテクチャレジスタの第２のセットにマッピングされるＡＲＭ命令セット（第１の命令セット）に提示されるアーキテクチャレジスタの第１のセットの１つを形成しない。
【００３７】
図７に示されるように、ユーザおよびシステムモードは、１５の汎用レジスタＲ０からＲ１４を有する。実行されているデータ処理操作の一部としてこれらのレジスタのうちどれがアクセスされるべきかを指定するために、図５に示されるような命令内のレジスタ指定フィールドが使用される。多くのデータ処理操作が、アクセスされる複数のレジスタを指定することが理解される。
【００３８】
実際には、レジスタＲ１３がスタックポインタとしての使用に確保され、レジスタＲ１４が、例えば機能呼び出しに関するリターンアドレスの格納のために、リターンアドレスレジスタとして使用される。
【００３９】
図７は、プロセッサ４が例外モードの１つで動作している場合（３２ビット例外モード回路３０により命令デコーダ１８に示されるように）、特定のレジスタ指定値を使用する際に異なるアーキテクチャレジスタが第１の命令セットに提供されることを示している。したがって、一例として、レジスタ指定値が「１３」である場合、使用することができる７個の異なるアーキテクチャレジスタがある（任意のレジスタリネーミングの前に）。これらのアーキテクチャレジスタの１番目は、ユーザまたはシステムモードで使用される。ユーザまたはシステムモードで使用されるアーキテクチャレジスタの代わりに有効に置換される、これらのアーキテクチャレジスタの残りの６個は、現在の例外モードまたはプロセッサがハイパーバイザモードで実行されているか否かに基づいて選択される。プロセッサ４がハイパーバイザモードで実行されている場合、これは、図１に示されるように、命令デコーダ１８への信号入力により示される。
【００４０】
ユーザまたはシステムモードのＲ１３の代替となることができる６個のアーキテクチャレジスタは、バンク例外レジスタと呼ばれるグループとしてのレジスタである。異なるアーキテクチャレジスタは、異なる数のバンク化相当物を有し、全てのアーキテクチャレジスタがバンク化相当物を有するわけではないことが分かる。これらのバンクレジスタの提供は、いくつかの状況において、より迅速な例外処理を促進することができる。
【００４１】
図８は、第２の命令セットに提示されるようなアーキテクチャレジスタの第２のセットを概略的に示す。このアーキテクチャレジスタの第２のセットは、図７に示されるアーキテクチャレジスタの第１のセットと比較して、単純化された構造を有する。アーキテクチャレジスタの第２のセットは、それぞれ６４ビットレジスタである３１個の汎用レジスタを備える。これらは、Ｘ０からＸ３０と指定される。図６に示される５ビットレジスタ指定フィールドは、これらのアーキテクチャレジスタのどれがアクセスされるべきかを指定するために使用される。図８に示されるアーキテクチャレジスタは、６４ビットレジスタとしてアクセスされ、６４ビット全てが、指定されるデータ処理操作により操作される。対照的に、図７のアーキテクチャレジスタは、基底物理レジスタが図２に示されるような６４ビットレジスタであるとしても、３２ビットレジスタとしてアクセスされる。
【００４２】
また、図８には、ヌル値（例えば０）を格納するヌルレジスタＸ３１が示されている。このヌルレジスタが読み出される時は必ず、ヌル値が返される。このレジスタが書き込まれる時は必ず、書き込みの試行に関わらずヌル値がヌルレジスタに格納されたままとなる。図７に示されるような第１の命令セットに提示されるアーキテクチャレジスタにおいては、図８のヌルレジスタの相当物は存在しない。したがって、ヌルレジスタは、第１のセットおよび第２のセットのレジスタ間の１対１マッピングに供されるアーキテクチャレジスタの第２のセット内には含まれない。
【００４３】
図９は、第１のセットのレジスタと第２のセットのレジスタとの間のマッピングを示す。図示されるように、レジスタＸ０からＸ７は、レジスタＲ０からＲ７と同様に、それぞれ同じ６４ビットレジスタにアクセスする。これは、図示されるようなマッピングについてさらなるレジスタに対して継続される。留意すべき特徴は、レジスタＲ１３およびＲ１４の場合、第１の命令セットにおいて使用されるレジスタ指定子の最下位ビットが、第２の命令セットの対応するレジスタに対して使用されるレジスタ指定子の最下位ビットに対応する点である。これは、物理レジスタを選択するためのレジスタ指定子および例外モードのデコーディングを単純化する。このマッピングのさらなる特徴は、レジスタＸ１６からＸ２３に対するレジスタ指定子の増分順序が、値が交互するＲ１４およびＲ１３の第１の命令セットにおけるレジスタ値に対応する点である。
【００４４】
図９から、第１の命令セットに提示されるレジスタの第１のセットと、第２の命令セットに提示されるレジスタの第２のセットとの間の１対１マッピングが存在することが分かる。第１のセットのレジスタは全て、第２の命令セットのプログラム命令にアクセス可能である。これは、命令セット間の相互運用性を促進する。したがって、第１の命令セットの命令を実行している間、バンクレジスタ内に保持されるある特定の値は、現在の例外モードがそれらのバンクレジスタを使用にマッピングしないため、プログラム命令に利用可能ではない可能性がある。しかしながら、第２の命令セットの命令の実行へのスイッチは、第１のセットのレジスタの全てを、それらが現在のモードとは独立して全てアクセス可能となるように、第２のセットのレジスタにマッピングする。
【００４５】
図１０は、命令デコーダ１８の動作を概略的に示すフロー図である。ステップ３２において、処理は、命令が受信されるまで待機する。ステップ３４において、命令が第２の命令セットからのものか否か、すなわち命令が６４ビット命令か否かに関して決定がなされる。命令が６４ビット命令である場合、ステップ３６は、６４ビット命令をデコードする。ステップ３８は、使用されるレジスタを、５ビットフィールドであるレジスタ指定フィールドにマッピングする。次いで、ステップ４０は、５ビットレジスタ指定フィールドにより指定されたレジスタにアクセスする。ステップ４２は、命令を実行する。
【００４６】
ステップ３４における決定が、命令が６４ビット命令ではないという決定である場合、ステップ４４は、命令を３２ビット命令としてデコードする。ステップ４６は、４ビットレジスタ指定フィールド、ならびに上述のような現在の例外モード（およびハイパーバイザ状態）を使用して、使用されるレジスタをマッピングする。次いで、ステップ４０および４２は、識別されたレジスタにアクセスし、命令を実行する。
【００４７】
図１１は、命令デコーダ１８の一部により実行されるような、異なる命令セットからのプログラム命令のデコーディングを概略的に示す。これらの命令セットは、３２ビットデータ値を操作する３２ビット命令としてエンコードされるＡＲＭ命令セット、３２ビットデータ値を操作する１６ビット命令としてエンコードされるＴｈｕｍｂ命令セット、および６４ビットデータ値を操作する３２ビット命令としてエンコードされる６４ビット命令セットである。ＡＲＭ命令は、ｙビット、例えば１６個の異なるアーキテクチャレジスタを指定することができる４ビットの長さのレジスタフィールドを含む。Ｔｈｕｍｂ命令は、いくつかの命令に使用されるＨビットで拡張されたｘビット、例えば、８個のアーキテクチャレジスタが通常アドレスされ、いくつかの命令において１６個のアーキテクチャレジスタのアドレスを可能とするＨビットにより拡張され得る３ビットのレジスタ指定フィールドを使用する。６４ビット命令は、ｚビットレジスタ指定フィールド、例えば、３２個のアーキテクチャレジスタがアドレスされ得る５ビットレジスタ指定フィールドを使用する。
【００４８】
プロセッサ４内の状態は、どの命令セットが現在使用されているかを制御する。この状態は、いくつかの実施形態において、プログラマーに可視であってもよい。現在使用中の命令セットは、命令セット選択命令を使用して選択することができ、これは、分岐動作、例えば、命令セットのスイッチを有するブランチ等に関連付けられる場合がある。異なる命令セットの命令エンコーディングは非直交であり、その結果、ＡＲＭ命令を指定する同じ３２ビットパターンが、６４ビット命令セット内の異なる命令に対応し得る。この３２ビットパターンの正しいデコーディングは、どの命令セットが現在使用中かを識別する状態と組み合わせて実行することができる。
【００４９】
Ｔｈｕｍｂ命令のレジスタ指定フィールドのデコーディングは、まず変換回路５０を使用してｘビットおよびＨビットをｙビットフィールドに変換することにより行われる。このｙビットフィールドは、ＡＲＭ命令におけるｙビットフィールドに対応する。次いで、マルチプレクサ５２が、ＡＲＭまたはＴｈｕｍｂ命令セットのどれが現在使用中かに基づいて、変換回路５０からのｙビットレジスタ指定フィールド、またはＡＲＭ命令から読み出されたｙビット指定フィールドを、バンクレジスタマッピング回路５４に受け渡すことを選択する。
【００５０】
図７に関連して上述したように、ＡＲＭ命令セット（およびＴｈｕｍｂ命令セットも）は、バンクレジスタを提供する。特定のアーキテクチャレジスタにアクセスするために、ｙビットレジスタ指定フィールドおよび現在の例外モードの両方がバンクレジスタマッピング回路５４によりデコードされ、ｚビットのアーキテクチャフラットレジスタ数（ＡＦＲＮ）を生成する必要がある。ＡＲＭ命令またはＴｈｕｍｂ命令から生成された所与のｙビットレジスタ指定フィールドは、例えば、レジスタＲ１３を指定することができる。しかしながら、図７に示されるように、それぞれこのｙビットフィールドに対応する７個のアーキテクチャレジスタが存在し、対応するアーキテクチャフラットレジスタ数を生成するために、現在の例外モードを使用して、これらの７個の異なるアーキテクチャレジスタのうちから選択する。
【００５１】
６４ビット命令セットは、バンクレジスタを使用しない。したがって、アクセスされるアーキテクチャレジスタを指定するためにｚビットレジスタ指定フィールドをアーキテクチャフラットレジスタ数として直接使用することができる。マルチプレクサ５６は、レジスタリネーミング回路５８に受け渡されるアーキテクチャフラットレジスタ数を提供するために、６４ビット命令から読み出されたアーキテクチャフラットレジスタ数、またはバンクレジスタマッピング回路５４により生成されたアーキテクチャフラットレジスタ数のいずれかを選択する。レジスタリネーミング回路は、複数のレジスタ６０内の物理レジスタをアドレスするために使用されるレジスタ指定子ｚ’を生成するために、既知のアウトオブオーダー処理技術に従い、レジスタリネーミング操作を実行することができる。
【００５２】
図１１の構成は、レジスタリネーミング回路５８が異なる命令セット間で共有されることを可能とするだけでなく、複数のレジスタ６０の共有を可能とする。アーキテクチャフラットレジスタ数の共通の生成は、複数のレジスタ６０のデコーディングおよび共有を単純化する。レジスタリネーミング回路５８は、全ての実施形態に提供される必要はない。
【００５３】
図１２は、使用可能な仮想機械実装を示す。前述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを操作するための装置および方法に関して、本発明を実施するものであるが、ハードウェアデバイスのいわゆる仮想機械実装を提供することも可能である。これらの仮想機械実装は、仮想機械プログラム５１０をサポートするホストオペレーティングシステム５２０を実行しているホストプロセッサ５３０上で行われる。典型的には、妥当な速度で実行する仮想機械実装を提供するためには、大型の強力なプロセッサが必要であるが、そのような手法は、例えば、適合性または再使用の理由から、別のプロセッサにネイティブなコードを実行することが求められる場合等、ある特定の状況においては正当化され得る。仮想機械プログラム５１０は、アプリケーションプログラム５００に対して、仮想機械プログラム５１０によりモデル化されているデバイスである実際のハードウェアにより提供されるようなアプリケーションプログラムインターフェースと同じアプリケーションプログラムインターフェースを提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想機械ハードウェアとのインタラクションをモデル化するための仮想機械プログラム５００を使用して、アプリケーションプログラム５００内から実行することができる。
【符号の説明】
【００５４】
２  データ処理システム
４  プロセッサ
６  メモリ
８  汎用レジスタ
１０  処理回路
１２  乗算器
１４  シフター
１６  加算器
１８  命令デコーダ
２０  制御信号
２２  命令パイプライン
２４  プログラム
２６  プログラム
２８  命令セット選択回路
３０  ビット例外モード回路
５０  変換回路
５２  マルチプレクサ
５４  バンクレジスタマッピング回路
５６  マルチプレクサ
５８  レジスタリネーミング回路
６０  複数のレジスタ
５００  アプリケーションプログラム
５１０  仮想機械プログラム
５２０  ホストオペレーティングシステム
５３０  ホストプロセッサ
【図１】
0005646656.tif 000002
【図２】
0005646656.tif 000003
【図３】
0005646656.tif 000004
【図４】
0005646656.tif 000005
【図５】
0005646656.tif 000006
【図６】
0005646656.tif 000007
【図７】
0005646656.tif 000008
【図８】
0005646656.tif 000009
【図９】
0005646656.tif 000010
【図１０】
0005646656.tif 000011
【図１１】
0005646656.tif 000012
【図１２】
0005646656.tif 000013