(57)【要約】【課題】ＣＰＵの回路規模を削減することができ、その結果として、処理速度を向上させることができる半導体集積回路を提供する。【解決手段】ＣＰＵは、変数が記憶されている実アドレスの一部を表す変数名のアドレス、変数が記憶されている実アドレスから、アクセスしようとする実アドレスまでのバイト数を表すバイト位置の情報、および、変数のワード数を表すワード数の情報を含むＴＡＧを、ＴＡＧ／アドレス変換器に出力する。ＴＡＧ／アドレス変換器は、変数変換テーブルに記憶され、変数が記憶されている実アドレスの内のＴＡＧに含まれる変数名のアドレス以外の部分を表す変数ベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して、変数が記憶されている実アドレスを生成し、ＴＡＧに含まれる変数名のアドレスに対応する実アドレス、バイト位置の情報およびワード数の情報を使用して、バスを介して各種のデバイスをアクセスする。【選択図】図４
2009032150.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを含む各種のデバイスが半導体チップ上に搭載され、各々の前記デバイスがバスを介して相互に接続された半導体集積回路であって、
前記プロセッサと前記バスとの間にＴＡＧ／アドレス変換器が配置され、
前記プロセッサは、変数が記憶されている実アドレスの一部を表す変数名のアドレス、前記変数が記憶されている実アドレスから、アクセスしようとする実アドレスまでのバイト数を表すバイト位置の情報、および、前記変数のワード数を表すワード数の情報を含むＴＡＧを、前記ＴＡＧ／アドレス変換器に出力し、
前記ＴＡＧ／アドレス変換器は、変数変換テーブルに記憶され、前記変数が記憶されている実アドレスの内の前記ＴＡＧに含まれる変数名のアドレス以外の部分を表す変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを生成し、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレス、前記バイト位置の情報および前記ワード数の情報を使用して、前記バスを介して前記各種のデバイスをアクセスすることを特徴とする半導体集積回路。
【請求項２】
前記プロセッサおよび前記ＴＡＧ／アドレス変換器を複数個ずつ備え、
各々の前記プロセッサと前記バスとの間に前記ＴＡＧ／アドレス変換器が１つずつ配置され、前記ＴＡＧが、各々の前記プロセッサから各々対応するＴＡＧ／アドレス変換器に出力されることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記プロセッサと前記ＴＡＧ／アドレス変換器との間に配置された外部キャッシュを備え、
前記ＴＡＧが、前記プロセッサから前記外部キャッシュに出力され、前記プロセッサから入力されたＴＡＧが、前記外部キャッシュから前記ＴＡＧ／アドレス変換器に出力されることを特徴とする請求項１に記載の半導体集積回路。
【請求項４】
前記プロセッサを複数個備え、さらに、各々の前記プロセッサと前記ＴＡＧ／アドレス変換器との間に配置された外部キャッシュを備え、
前記ＴＡＧが、各々の前記プロセッサから前記外部キャッシュに出力され、各々の前記プロセッサから入力されたＴＡＧが、前記外部キャッシュから前記ＴＡＧ／アドレス変換器に出力されることを特徴とする請求項１に記載の半導体集積回路。
【請求項５】
前記プロセッサおよび前記ＴＡＧ／アドレス変換器を複数個ずつ備え、さらに、複数の外部キャッシュを備え、各々の前記プロセッサと各々対応するＴＡＧ／アドレス変換器との間に前記外部キャッシュが１つずつ配置され、
前記ＴＡＧが、各々の前記プロセッサから各々対応する外部キャッシュに出力され、各々の前記プロセッサから入力されたＴＡＧが、各々の前記外部キャッシュから各々対応するＴＡＧ／アドレス変換器に出力されることを特徴とする請求項１に記載の半導体集積回路。
【請求項６】
前記ＴＡＧ／アドレス変換器は、所定数の変数名のアドレスと、各々の前記変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶されたＴＡＧキャッシュを備え、
前記ＴＡＧキャッシュは、前記ＴＡＧに含まれる変数名のアドレスと、当該ＴＡＧキャッシュに記憶された各々の前記変数名のアドレスとを比較して、前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスを出力することを特徴とする請求項１〜５のいずれかに記載の半導体集積回路。
【請求項７】
前記ＴＡＧ／アドレス変換器は、さらに、前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを発生するアドレス発生部を備えることを特徴とする請求項６に記載の半導体集積回路。
【請求項８】
前記ＴＡＧ／アドレス変換器は、さらに、前記ＴＡＧに含まれる変数名のアドレスに一致する変数名のアドレスが前記ＴＡＧキャッシュに記憶されていない場合に、前記変数変換テーブルが記憶されている実アドレスを表す変数変換テーブルベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレスを発生し、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレスによって指定される変数変換テーブルから、前記ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスを取得して前記ＴＡＧキャッシュ内に格納するアドレス取得部を備えることを特徴とする請求項６または７に記載の半導体集積回路。
【請求項９】
前記プロセッサは、前記ＴＡＧに含まれる変数名のアドレスとして、プログラムの中で使用される関数を表すＴＡＳＫで使用する変数名のアドレスだけを含む前記ＴＡＧと、前記ＴＡＳＫを識別するＴＡＳＫ番号とを、前記ＴＡＧ／アドレス変換器に出力し、
前記ＴＡＧ／アドレス変換器は、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを生成することを特徴とする請求項１に記載の半導体集積回路。
【請求項１０】
前記ＴＡＧ／アドレス変換器は、所定数のＴＡＳＫ番号および変数名のアドレスと、各々の前記ＴＡＳＫ番号および前記変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶されたＴＡＧキャッシュを備え、
前記ＴＡＧキャッシュは、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスと、当該ＴＡＧキャッシュに記憶された各々の前記ＴＡＳＫ番号および前記変数名のアドレスとを比較して、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスを出力することを特徴とする請求項９に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（プロセッサ）を含む半導体集積回路の高速化に関するものである。
【背景技術】
【０００２】
ＣＰＵを含むバスマスター、周辺デバイスなどの各種のデバイスが半導体チップ上に搭載され、その各々のデバイスがバスを介して相互に接続された半導体集積回路において、ＣＰＵはさらなる高速化を要求されている。また、バスにも多くのバスマスターが接続されるなどチップ上への集積は今後もさらに加速していく傾向にある。これによって、チップ内部の動作速度や性能は、単純にプロセス技術の進化で期待されるほど回路の動作速度が伸びないという現状がある。
【０００３】
図１６に示すように、従来の半導体集積回路５２では、ＣＰＵ１３、ＤＭＡ（ダイレクト・メモリ・アクセス）１８、内部ＲＡＭ（ランダム・アクセス・メモリ）２０、ＵＡＲＴ（ユニバーサル・アシンクロナス・レシーバ／トランスミッタ）２２、Ｆｌａｓｈ／ＳＲＡＭ  Ｉ／Ｆ（フラッシュ／スタティックＲＡＭインタフェイス）２４、ＤＤＲ  Ｉ／Ｆ（ダブル・データ・レート（メモリ）インタフェイス）２６、割り込みコントローラ２８、ＴＩＭＥＲ（タイマー）３０、ＧＰＩＯ（汎用入出力）３２などの、各種のデバイスがバス１４を介して相互に接続されている。この例では、Ｌ１（レベル１）キャッシュ３４はＣＰＵ１３に内蔵されている。
【０００４】
図１７および図１８も、従来の半導体集積回路の構成を表す別の例の概念図である。図１７は、図１６に示す半導体集積回路５２において、さらに、ＣＰＵ１３とバス１４との間にＬ２（レベル２）キャッシュ４２を設けた例である。また、図１８は、図１７に示す半導体集積回路において、さらに、もう１つ別のＣＰＵ４４を設け、２つのＣＰＵ１３，４４をＬ２キャッシュ４２に接続した例である。これらの例では、Ｌ２キャッシュ４２は、ＣＰＵ１３の外部に設けられている。
【０００５】
従来技術の問題点は、全てのデータアクセス（リードまたはライト）がアドレスを基本としているため、例えば、周辺デバイスから出力されたデータがＣＰＵ１３内部のレジスタに取り込まれるまでは、アドレスの全ビットとデータがセットでバス１４上を伝わることである。また、ＣＰＵ１３内部のアドレスジェネレータはアドレス全ビットの演算を常に行わなければならない。これによって、ＣＰＵ１３内部の回路が増大する。
【０００６】
また、キャッシュメモリも全アドレスビットを取り扱うことが前提である。これがメモリ容量の増大、回路の増大を招く。その結果、速度低下が発生し、高速化を目指すＲＩＳＣ  ＣＰＵは、パイプライン化により回路を分断し、高速化を目指している。
【０００７】
しかし、パイプライン化を進めることにより、回路内部のステートが複雑化し、パイプラインの増大によるレイテンシー（遅延）の増大の問題や、ハザード（例えば、分岐命令などによって、パイプライン内のデータが使用できなくなり、分岐先に応じたデータの取り直しが必要となる状況）の対策が複雑化するという問題がある。これらの問題を回避するための回路を追加することによって、さらに回路が増大する。
【０００８】
本発明に関連する先行技術文献としては、例えば、特許文献１がある。特許文献１には、バスを介して複数のＤＲＡＭに接続したＣＰＵを含むデータ処理装置において、ＣＰＵからベース・アドレスとタグ・アドレスを出力し、各ＤＲＡＭにおいて、ベース・アドレスを比較し、それが、そのＤＲＡＭに記憶されたアドレスのレンジ内にある場合に、タグ・アドレスを、複数のあらかじめ記憶されたタグ・アドレスと比較し、それが整合した場合に、データをアクセスすることが開示されている。
【０００９】
【特許文献１】特開平１−２２９３４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の目的は、前記従来技術に基づく問題点を解消し、ＣＰＵの回路規模を削減することができ、その結果として、処理速度を向上させることができる半導体集積回路を提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明は、プロセッサを含む各種のデバイスが半導体チップ上に搭載され、各々の前記デバイスがバスを介して相互に接続された半導体集積回路であって、
前記プロセッサと前記バスとの間にＴＡＧ／アドレス変換器が配置され、
前記プロセッサは、変数が記憶されている実アドレスの一部を表す変数名のアドレス、前記変数が記憶されている実アドレスから、アクセスしようとする実アドレスまでのバイト数を表すバイト位置の情報、および、前記変数のワード数を表すワード数の情報を含むＴＡＧを、前記ＴＡＧ／アドレス変換器に出力し、
前記ＴＡＧ／アドレス変換器は、変数変換テーブルに記憶され、前記変数が記憶されている実アドレスの内の前記ＴＡＧに含まれる変数名のアドレス以外の部分を表す変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを生成し、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレス、前記バイト位置の情報および前記ワード数の情報を使用して、前記バスを介して前記各種のデバイスをアクセスすることを特徴とする半導体集積回路を提供するものである。
【００１２】
ここで、前記プロセッサおよび前記ＴＡＧ／アドレス変換器を複数個ずつ備え、
各々の前記プロセッサと前記バスとの間に前記ＴＡＧ／アドレス変換器が１つずつ配置され、前記ＴＡＧが、各々の前記プロセッサから各々対応するＴＡＧ／アドレス変換器に出力されることが好ましい。
【００１３】
ないしは、前記プロセッサと前記ＴＡＧ／アドレス変換器との間に配置された外部キャッシュを備え、
前記ＴＡＧが、前記プロセッサから前記外部キャッシュに出力され、前記プロセッサから入力されたＴＡＧが、前記外部キャッシュから前記ＴＡＧ／アドレス変換器に出力されることが好ましい。
【００１４】
ないしは、前記プロセッサを複数個備え、さらに、各々の前記プロセッサと前記ＴＡＧ／アドレス変換器との間に配置された外部キャッシュを備え、
前記ＴＡＧが、各々の前記プロセッサから前記外部キャッシュに出力され、各々の前記プロセッサから入力されたＴＡＧが、前記外部キャッシュから前記ＴＡＧ／アドレス変換器に出力されることが好ましい。
【００１５】
ないしは、前記プロセッサおよび前記ＴＡＧ／アドレス変換器を複数個ずつ備え、さらに、複数の外部キャッシュを備え、各々の前記プロセッサと各々対応するＴＡＧ／アドレス変換器との間に前記外部キャッシュが１つずつ配置され、
前記ＴＡＧが、各々の前記プロセッサから各々対応する外部キャッシュに出力され、各々の前記プロセッサから入力されたＴＡＧが、各々の前記外部キャッシュから各々対応するＴＡＧ／アドレス変換器に出力されることが好ましい。
【００１６】
また、前記ＴＡＧ／アドレス変換器は、所定数の変数名のアドレスと、各々の前記変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶されたＴＡＧキャッシュを備え、
前記ＴＡＧキャッシュは、前記ＴＡＧに含まれる変数名のアドレスと、当該ＴＡＧキャッシュに記憶された各々の前記変数名のアドレスとを比較して、前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスを出力することが好ましい。
【００１７】
また、前記ＴＡＧ／アドレス変換器は、さらに、前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを発生するアドレス発生部を備えることが好ましい。
【００１８】
また、前記ＴＡＧ／アドレス変換器は、さらに、前記ＴＡＧに含まれる変数名のアドレスに一致する変数名のアドレスが前記ＴＡＧキャッシュに記憶されていない場合に、前記変数変換テーブルが記憶されている実アドレスを表す変数変換テーブルベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレスを発生し、前記ＴＡＧに含まれる変数名のアドレスに対応する実アドレスによって指定される変数変換テーブルから、前記ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスを取得して前記ＴＡＧキャッシュ内に格納するアドレス取得部を備えることが好ましい。
【００１９】
また、前記プロセッサは、前記ＴＡＧに含まれる変数名のアドレスとして、プログラムの中で使用される関数を表すＴＡＳＫで使用する変数名のアドレスだけを含む前記ＴＡＧと、前記ＴＡＳＫを識別するＴＡＳＫ番号とを、前記ＴＡＧ／アドレス変換器に出力し、
前記ＴＡＧ／アドレス変換器は、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスと前記ＴＡＧに含まれる変数名のアドレスとを合成して、前記変数が記憶されている実アドレスを生成することが好ましい。
【００２０】
また、前記ＴＡＧ／アドレス変換器は、所定数のＴＡＳＫ番号および変数名のアドレスと、各々の前記ＴＡＳＫ番号および前記変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶されたＴＡＧキャッシュを備え、
前記ＴＡＧキャッシュは、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスと、当該ＴＡＧキャッシュに記憶された各々の前記ＴＡＳＫ番号および前記変数名のアドレスとを比較して、前記ＴＡＳＫ番号および前記ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスが当該ＴＡＧキャッシュに記憶されている場合に、一致する前記変数名のアドレスに対応する変数ベースアドレスを出力することが好ましい。
【発明の効果】
【００２１】
本発明によれば、プロセッサが、実アドレスではなく、実アドレスよりも短いビット長の変数名のアドレスで動作する。従って、その回路規模を削減することができ、その結果、動作速度も向上させることができる。また、プロセッサとバスとの間に外部キャッシュを設ける場合、外部キャッシュも変数名のアドレスで動作する。従って、その容量、つまり、回路規模を削減することができ、その結果、動作速度も向上させることができる。
【００２２】
また、ＴＡＳＫ番号を使用すれば、プログラムをＴＡＳＫ毎に分割して処理することができる。これによって、ＴＡＧだけを使用する場合よりも、プログラムコード内の変数名のアドレスのビット長をさらに削減することができる。従って、ＴＡＧだけを使用する場合よりも、プロセッサの回路規模をさらに削減することができ、その結果、動作速度もさらに向上させることができる。
【００２３】
本発明では、プログラムの内部のアドレスは、変数名のアドレスないしはＴＡＳＫ番号＋変数名のアドレスとなる。つまり、プログラム内部のアドレスのビット長が短くできるので、プログラムサイズを小さくすることができる。また、プロセッサの回路規模も削減できるので、高速化に貢献でき、パイプライン化に伴う問題や、それを回避するための回路の複雑化を低減することができる。
【発明を実施するための最良の形態】
【００２４】
以下に、添付の図面に示す好適実施形態に基づいて、本発明の半導体集積回路を詳細に説明する。
【００２５】
図１は、本発明の半導体集積回路の構成を表す一実施形態の概念図である。同図に示す半導体集積回路１０には、ＣＰＵ１２を含むバスマスター、周辺デバイスなどの各種のデバイスが半導体チップ上に搭載され、各々のデバイスがバス１４を介して相互に接続されている。半導体集積回路１０は、図１６に示す従来の半導体集積回路５２において、さらに、ＣＰＵ１２とバス１４との間にＴＡＧ／アドレス変換器１６が配置され、ＣＰＵ１２の内部構成がＣＰＵ１３とは異なるものである。
【００２６】
半導体集積回路１０では、ＣＰＵ１２がＴＡＧ／アドレス変換器１６を介してバス１４と相互に接続され、さらに、ＤＭＡ１８、内部ＲＡＭ２０、ＵＡＲＴ２２、Ｆｌａｓｈ／ＳＲＡＭ  Ｉ／Ｆ２４、ＤＤＲ  Ｉ／Ｆ２６、割り込みコントローラ２８、ＴＩＭＥＲ３０、ＧＰＩＯ３２などの各デバイスがバス１４と相互に接続されている。この例においても、Ｌ１キャッシュ３４はＣＰＵ１２に内蔵されている。
【００２７】
以下、ＣＰＵ１２と、ＴＡＧ／アドレス変換器１６を中心に説明を行う。なお、以下の説明では、１ワードのデータのビット長は３２ビット（４バイト）であり、アクセスするデータの位置を指定する実アドレスのビット長も３２ビットであるとする。
【００２８】
ＣＰＵ１２は、３２ビットの実アドレスよりもビット長の短い、ＴＡＧ（タグ）に含まれる変数名に対応するアドレス（以下、変数名のアドレスと表現する）で動作する。ＴＡＧの構造は、プログラミング言語の中では、図２に示すように、変数名、バイト位置、ワード数で表される。ＣＰＵ１２は、ＴＡＧを使用して、ＴＡＧ／アドレス変換器１６を介して、バス１４に接続された各種のデバイスとの間でデータのアクセスを行う。
【００２９】
変数名は、ＣＰＵ１２で実行されるプログラムコードを生成するプログラミング言語の中で使用される変数の名前であって、プログラムコードの中では、図３に示すように、その変数が記憶されているメモリ空間内の実アドレス（先頭アドレス）の一部を表す。この変数が記憶されているメモリ空間内の実アドレスは、ＴＡＧに含まれる変数名のアドレスに対応する実アドレスを意味する。
【００３０】
変数の先頭アドレスは、変数ベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して生成される。変数ベースアドレスは、変数が記憶されている実アドレスの内のＴＡＧに含まれる変数名のアドレス以外の部分を表すものである。変数ベースアドレスは、後述するように、メモリ空間内の変数変換テーブルに記憶され、必要に応じて、ＴＡＧ／アドレス変換器１６のＴＡＧキャッシュ３６内に記憶（格納）される。
【００３１】
バイト位置は、変数が記憶されている実アドレスＡから、アクセスしようとする実アドレスまでのバイト数を表す。図３の例では、斜線部分がアクセスしようとする実アドレスであるとすると、バイト数は実アドレスＡ＋９となる。例えば、実アドレスＡ＋８を指定して１ワード分のデータにアクセスすることによって、バイト位置で指定される実アドレスＡ＋９のデータにアクセスすることができる。
【００３２】
また、ワード数は、変数のワード数を表す。図３は、変数が３ワードの場合の例である。ワード数が１の場合はＳＩＮＧＬＥ転送モード（１ワードの転送）、２以上の場合はＢＵＲＳＴ転送モード（複数ワードの連続転送）となる。
【００３３】
以下の説明では、ＴＡＧを、プログラミング言語の中での表現（変数名、バイト位置、ワード数）で表すが、実際には、プログラムコードの中での表現（変数名のアドレス、バイト位置の情報、ワード数の情報）でやり取りされる。
【００３４】
続いて、ＴＡＧ／アドレス変換器１６について概略説明する。ＴＡＧ／アドレス変換器１６は、図４に示すように、ＴＡＧキャッシュ３６と、アドレス発生部３８と、アドレス取得部４０とによって構成されている。ＴＡＧ／アドレス変換器１６は、変数ベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して、変数が記憶されている実アドレスを生成し、ＴＡＧに含まれる変数名のアドレスに対応する実アドレス、バイト位置の情報およびワード数の情報を使用して、バス１４を介して各種のデバイスをアクセスする。
【００３５】
ＴＡＧキャッシュ３６には、ＣＰＵ１２からＴＡＧに含まれる変数名のアドレスが入力される。ＴＡＧキャッシュ３６の中には、所定数の変数名のアドレスと、その各々の変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶されている。ＴＡＧキャッシュ３６は、ＣＰＵ１２から入力されたＴＡＧに含まれる変数名のアドレスと、ＴＡＧキャッシュ３６に記憶された各々の変数名のアドレスとを比較して、ＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスがＴＡＧキャッシュ３６に記憶されている場合（Ｈｉｔ）に、一致する変数名のアドレスに対応する変数ベースアドレスを出力する。
【００３６】
アドレス発生部３８には、ＴＡＧキャッシュ３６から、変数名のアドレスに対応する変数ベースアドレスが入力される。また、アドレス発生部３８には、図示していないが、ＴＡＧに含まれる変数名のアドレスも入力される。アドレス発生部３８は、上記Ｈｉｔの場合に、図５（Ａ）に示すように、一致する変数名のアドレスに対応する変数ベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して、変数が記憶されている３２ビットの実アドレスを発生する。この実アドレスはバス１４上に出力される。
【００３７】
アドレス取得部４０には、ＣＰＵ１２から変数名のアドレスと、メモリ空間内の所定のアドレスから変数変換テーブルベースアドレスが入力される。アドレス取得部４０は、ＣＰＵ１２から入力されたＴＡＧに含まれる変数名のアドレスに一致する変数名のアドレスがＴＡＧキャッシュ３６に記憶されていない場合（Ｍｉｓｓ）に、図５（Ｂ）に示すように、変数変換テーブルが記憶されているメモリ空間内の実アドレス（先頭アドレス）を表す変数変換テーブルベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して、ＴＡＧに含まれる変数名のアドレスに対応する３２ビットの実アドレスを発生し、図６に示すように、ＴＡＧに含まれる変数名のアドレスに対応する実アドレスによって指定されるメモリ空間内の変数変換テーブルから、ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスを取得してＴＡＧキャッシュ３６内に記憶（格納）する。
【００３８】
ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスがＴＡＧキャッシュ３６に格納されると、再度、ＴＡＧキャッシュ３６において、ＣＰＵ１２から入力されたＴＡＧに含まれる変数名のアドレスと、ＴＡＧキャッシュ３６に記憶されている各々の変数名のアドレスとの比較が行われる。アドレス取得部４０によって、ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスを取得して、それをＴＡＧキャッシュ３６に記憶した後は、上記比較結果は必ずＨｉｔとなるので、これ以後の動作はＨｉｔの時の動作と同じである。
【００３９】
図７（Ａ）および（Ｂ）は、いずれも図１に示す半導体集積回路におけるＣＰＵ周辺の状態を表す概念図である。同図（Ａ）は、ＣＰＵ１２の外部にＬ２キャッシュがない場合、同図（Ｂ）はＬ２キャッシュ４２がある場合である。一方、図８（Ａ）および（Ｂ）は、いずれも従来の半導体集積回路におけるＣＰＵ周辺の状態を表す概念図である。同図（Ａ）は、ＣＰＵ１３の外部にＬ２キャッシュがない場合、同図（Ｂ）はＬ２キャッシュ４２がある場合を表す。
【００４０】
従来の半導体集積回路では、Ｌ２キャッシュがない場合、図８（Ａ）に示すように、アドレス（３２ビットの実アドレス）、書き込みデータ、ＲＥＡＤ／ＷＲＩＴＥ（リード／ライト）、転送コマンド、ＢＹＴＥ位置（バイト位置）、ＢＵＲＳＴ／ＳＩＮＧＬＥ（バースト／シングル）の各信号が、ＣＰＵ１３からバス１４に出力される。一方、読み出しデータが、バス１４からＣＰＵ１３に出力される。
【００４１】
また、Ｌ２キャッシュ４２がある場合も、ＣＰＵ１３とバス１４との間にＬ２キャッシュ４２が配置されるだけで、Ｌ２キャッシュ４２がない場合と同様である。つまり、ＣＰＵ１３およびＬ２キャッシュ４２は、３２ビットの実アドレスで動作する。
【００４２】
一方、本実施形態の半導体集積回路１０では、Ｌ２キャッシュがない場合、図７（Ａ）に示すように、ＴＡＧ、書き込みデータ、ＲＥＡＤ／ＷＲＩＴＥ、転送コマンドの各信号が、ＣＰＵ１２からＴＡＧ／アドレス変換器１６に出力される。続いて、アドレス（３２ビットの実アドレス）、書き込みデータ、ＲＥＡＤ／ＷＲＩＴＥ、転送コマンド、ＢＹＴＥ位置、ＢＵＲＳＴ／ＳＩＮＧＬＥの各信号が、ＴＡＧ／アドレス変換器１６からバス１４に出力される。一方、読み出しデータが、バス１４からＴＡＧ／アドレス変換器１６に出力され、続いて、ＴＡＧ／アドレス変換器１６からＣＰＵ１２に出力される。
【００４３】
ＴＡＧ／アドレス変換器１６では、ＴＡＧキャッシュ３６から出力される変数ベースアドレスとＴＡＧに含まれる変数名のアドレスとを合成して、変数が記憶されている３２ビットの実アドレスが生成され、ＴＡＧに含まれるバイト位置の情報がそのままＢＹＴＥ位置の信号として出力される。また、ＴＡＧに含まれるワード情報からＢＵＲＳＴ／ＳＩＮＧＬＥの信号が生成される。
【００４４】
また、Ｌ２キャッシュ４２がある場合も、ＣＰＵ１２とＴＡＧ／アドレス変換器１６との間にＬ２キャッシュ４２が配置されるだけで、Ｌ２キャッシュがない場合と同様である。つまり、ＣＰＵ１２およびＬ２キャッシュ４２は、３２ビットの実アドレスではなく、それよりもビット長の短いＴＡＧの変数名のアドレスで動作する。
【００４５】
次に、図９のフローチャートを参照して、ＣＰＵ１２およびＴＡＧ／アドレス変換器１６の動作を説明する。
【００４６】
ＣＰＵ１２は、ＴＡＧを使用してデータをアクセスする（Ｓ１１）。ＴＡＧはＴＡＧ／アドレス変換器１６に入力され、ＴＡＧに含まれる変数名のアドレスを、ＴＡＧキャッシュ３６のアドレスとしてＴＡＧキャッシュ３６がチェックされる。
【００４７】
ＴＡＧキャッシュ３６にアクセスした結果（Ｓ１２）、ＴＡＧに含まれる変数名のアドレスに一致する変数名のアドレスがＴＡＧキャッシュ３６に記憶されていれば（Ｈｉｔ）、ＴＡＧ／アドレス変換器１６から、前述の（変数ベースアドレス＋変数名のアドレス）で表される３２ビットの実アドレス、書き込みデータ（データライト時）、ＲＥＡＤ／ＷＲＩＴＥ、転送コマンド、バイト位置、ＢＵＲＳＴ／ＳＩＮＧＬＥの各信号が出力される（Ｓ１３）。そして、バス１４に対してデータ転送要求が行われる（Ｓ１４）。
【００４８】
一方、ＴＡＧに含まれる変数名のアドレスに一致する変数名のアドレスがＴＡＧキャッシュ３６に記憶されていなければ（Ｍｉｓｓ）、ＴＡＧ／アドレス変換器１６から、前述の（変数変換テーブルベースアドレス＋変数名のアドレス）で表される３２ビットの実アドレス等が出力される。そして、バス１４に対して、ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスを取得するためのテーブル転送要求が行われ（Ｓ１５）、変数変換テーブルが記憶されている外部のメモリ空間から、ＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスが取得される（Ｓ１６）。
【００４９】
取得された変数ベースアドレスはＴＡＧキャッシュ３６に記憶され、再度、ＴＡＧキャッシュ３６がアクセスされ（Ｓ１２）、前述の通り、必ずＨｉｔとなる。これ以後の動作は、Ｈｉｔの場合と同じである。
【００５０】
３２ビットの実アドレスによって指定されるメモリ空間は４ＧＢ（ギガバイト）である。これに対して、変数名のアドレスの個数は、メモリ空間全体の個数（バイト数）よりも必然的に少なくなる。ＣＰＵ１２は、３２ビットの実アドレスではなく、３２ビットよりも短いビット長の変数名のアドレスで動作する。従って、その回路規模を削減することができ、その結果として、動作速度も向上させることができる。
【００５１】
また、ＣＰＵ１２とバス１４との間にＬ２キャッシュ４２を設ける場合、Ｌ２キャッシュ４２も変数名のアドレスで動作する。従って、その容量、つまり、回路規模を削減することができ、その結果として、動作速度も向上させることができる。
【００５２】
なお、半導体集積回路１０の構成は図１のものに限定されない。
【００５３】
例えば、図７（Ｂ）に示すように、ＣＰＵ１２とＴＡＧ／アドレス変換器１６との間にＬ２キャッシュ４２を配置する構成としても良い。この場合、ＴＡＧは、ＣＰＵ１２からＬ２キャッシュ４２に出力され、続いて、Ｌ２キャッシュ４２からＴＡＧ／アドレス変換器１６に出力される。
【００５４】
また、図１０は、図１に示す半導体集積回路１０において、もう１つ別のＣＰＵ４４を設け、追加したもう１つのＣＰＵ４４とバス１４との間にも、もう１つ別のＴＡＧ／アドレス変換器４６を設けた例である。つまり、ＣＰＵおよびＴＡＧ／アドレス変換器を複数個ずつ備えて、各々のＣＰＵとバスとの間にＴＡＧ／アドレス変換器を１つずつ配置しても良い。この場合、ＴＡＧは、各々のＣＰＵから各々対応するＴＡＧ／アドレス変換器に出力される。
【００５５】
また、図１１は、図１に示す半導体集積回路１０において、もう１つ別のＣＰＵ４４を設け、さらに、合計２つのＣＰＵ１２，１４とＴＡＧ／アドレス変換器１６との間に１つのＬ２キャッシュ４２を設けた例である。つまり、ＣＰＵを複数個備えて、さらに、各々のＣＰＵとＴＡＧ／アドレス変換器１６との間にＬ２キャッシュを備える構成としても良い。この場合、ＴＡＧは、各々のＣＰＵからＬ２キャッシュに出力され、さらに、Ｌ２キャッシュからＴＡＧ／アドレス変換器に出力される。
【００５６】
また、図示は省略するが、図１０の半導体集積回路において、各々のＣＰＵと各々対応するＴＡＧ／アドレス変換器１６との間にＬ２キャッシュを配置しても良い。つまり、ＣＰＵおよびＴＡＧ／アドレス変換器を複数個ずつ備え、さらに、複数の外部キャッシュを備え、各々のＣＰＵと各々対応するＴＡＧ／アドレス変換器との間に外部キャッシュが１つずつ配置された構成としても良い。この場合、ＴＡＧは、各々のＣＰＵから各々対応する外部キャッシュに出力され、続いて、各々の外部キャッシュから各々対応するＴＡＧ／アドレス変換器に出力される。
【００５７】
また、図１２は、図１１に示す半導体集積回路において、もう１つ別のＣＰＵ４８を設け、追加したもう１つのＣＰＵ４８とバス１４との間にも、もう１つ別のＴＡＧ／アドレス変換器５０を設けた例である。この例は、図１０の例と図１１の例とを組み合わせた構成である。このように、必要に応じて、上記のような各種構成のものを適宜組み合わせることも可能である。
【００５８】
すなわち、ＣＰＵの個数、Ｌ２キャッシュ（外部キャッシュ）の有無および個数（ＣＰＵに対して個別に設けるか、共用するか）などは適宜変更しても良い。また、バス１４に接続されるデバイスの種類や個数等も何ら限定されない。
【００５９】
上記実施形態では、３２ビットのデータを、３２ビットの実アドレスで指定してアクセスする例を挙げて説明したが、本発明はこれに限定されない。つまり、データのビット数は１ビット以上であれば何ビットでも良いし、実アドレスも２ビット以上であれば何ビットでも良いが、通常は、バイト単位のビット数であるのが望ましい。また、ＴＡＧに含まれる変数名、バイト位置、ワード数の並び順も限定されず、適宜順序を変えても良い。
【００６０】
また、ＣＰＵは、図１３に示すように、ＴＡＧに加えて、ＴＡＳＫ（タスク）番号を使用することも可能である。ＴＡＳＫは、プログラムの中で使用される関数を表す。図１３の例では、図７（Ａ）の例において、さらに、ＣＰＵ１２からＴＡＧ／アドレス変換器１６へＴＡＳＫ番号が入力されている。ＴＡＳＫ番号は、各々のＴＡＳＫを識別し、図１４に示すように、ＴＡＧに含まれる変数名の一部に相当するもの（関数のアドレス）であるが、ＴＡＳＫ毎に、そのＴＡＳＫで使用する変数名を制限する役割を果たす。
【００６１】
ＴＡＳＫ番号を使用する場合、ＴＡＧに含まれる変数名のアドレスには、ＴＡＳＫ番号で指定されるＴＡＳＫで使用する変数名のアドレスだけが含まれる。また、ＴＡＧ／アドレス変換器１６のＴＡＧキャッシュ３６の中には、所定数のＴＡＳＫ番号および変数名のアドレスと、その各々のＴＡＳＫ番号および変数名のアドレスに対応する変数ベースアドレスの対応テーブルが記憶される。
【００６２】
ＴＡＧキャッシュ３６は、ＴＡＳＫ番号およびＴＡＧに含まれる変数名のアドレスと、ＴＡＧキャッシュに記憶された各々のＴＡＳＫ番号および変数名のアドレスとを比較して、ＴＡＳＫ番号およびＴＡＧに含まれる変数名のアドレスと一致する変数名のアドレスがＴＡＧキャッシュ３６に記憶されている場合（Ｈｉｔ）に、一致する変数名のアドレスに対応する変数ベースアドレスを出力する。
【００６３】
ＴＡＧ／アドレス変換器１６は、ＴＡＳＫ番号およびＴＡＧに含まれる変数名のアドレスに対応する変数ベースアドレスと、ＴＡＧに含まれる変数名のアドレスとを合成して、変数が記憶されている実アドレスを生成する。
【００６４】
ここで、ＴＡＧに含まれる変数名は、プログラムによっては数千、数万、ないしはそれ以上使用されることもある。この場合、それだけの変数名に対応する変数ベースアドレスを記憶するメモリ領域は膨大なものとなる。
【００６５】
一方、各々のＴＡＳＫの中で使用される変数名は、通常、数十、ないしは、数百程度であり、少なくともプログラム全体で使用される変数名の数よりは遙かに少ない数となる。また、変数名は、各々のＴＡＳＫの中でのみ使用される内部変数と、複数のＴＡＳＫで共通に使用される外部変数がある。従って、外部変数をＴＡＧキャッシュ３６に記憶する方がＨｉｔする確率を向上させることができる。また、一度だけしか使用しない内部変数を使用した後は、その内部変数をＴＡＧキャッシュ３６に記憶しておく必要はない。
【００６６】
ＴＡＳＫ番号を使用しない場合、プログラム全体で使用される変数名を扱うことになる。これに対して、ＴＡＳＫ番号を使用すれば、プログラムをＴＡＳＫ毎に分割して処理することができる。ＴＡＳＫ番号を使用する場合、ＴＡＳＫ毎に、そのＴＡＳＫで使用される変数名に対応する変数変換テーブルを生成する必要があるが、各々の変数変換テーブルには、ＴＡＳＫ毎に、そのＴＡＳＫで使用される変数名だけが含まれているので、そのチェックは短時間で完了する。
【００６７】
ＴＡＧに加えて、ＴＡＳＫ番号を使用する場合の動作は、図１５のフローチャートに示すように、図９のフローチャートに示すＴＡＧだけを使用する場合の動作と同様である。両者の違いは、前述の通り、プログラムで使用される変数名を、分割せずに一括処理するか（ＴＡＧだけを使用する場合）、ＴＡＳＫ毎に分割して処理するか（ＴＡＧに加えて、ＴＡＳＫ番号を使用する場合、）の違いである。
【００６８】
どのＴＡＳＫにどの変数名が含まれるのかは、プログラムを生成する、プログラミング言語のコンパイラが理解している。ＣＰＵ１２の内部には、通常、ＴＡＳＫ番号を管理するテーブルがある。ＣＰＵ１２は、このＴＡＳＫ番号管理テーブルからＴＡＳＫ番号を出力し、ＴＡＧ／アドレス変換器１６へ出力する。ＴＡＧ／アドレス変換器１６は、変数名のアドレスが同じであっても、ＴＡＳＫ番号によって、どのＴＡＳＫの変数名なのかを区別することができる。
【００６９】
また、コンパイラは、前述の、ＴＡＳＫ毎に、各々のＴＡＳＫで使用される変数名だけを含む変数変換テーブルを生成する。これによって、ＴＡＧだけを使用する場合よりも、プログラムコード内の変数名のアドレスのビット長をさらに削減することができる。従って、ＴＡＧだけを使用する場合よりも、ＣＰＵ１２の回路規模をさらに削減することができ、その結果として、動作速度もさらに向上させることができる。
【００７０】
本発明では、コンパイラによって生成されるプログラムの内部のアドレスは、実アドレスではなく変数名のアドレスないしはＴＡＳＫ番号＋変数名のアドレスとなる。つまり、プログラム内部のアドレスのビット長が短くできるので、プログラムのサイズを小さくすることができる。また、ＣＰＵ１２の回路規模も削減できるので、高速化に貢献でき、従来のパイプライン化に伴う問題や、それを回避するための回路の複雑化を低減することができる。
【００７１】
本発明は、基本的に以上のようなものである。
以上、本発明の半導体集積回路について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００７２】
【図１】本発明の半導体集積回路の構成を表す一実施形態の概念図である。
【図２】ＴＡＧの構成を表す概念図である。
【図３】ＴＡＧに含まれる変数名、バイト位置、ワード数の関係を表すメモリ空間の概念図である。
【図４】ＴＡＧ／アドレス変換器の構成を表す概念図である。
【図５】（Ａ）および（Ｂ）は、それぞれＨｉｔの時の実アドレスおよびＭｉｓｓの時の実アドレスの構成を表す概念図である。
【図６】変数変換テーブルの構成を表すメモリ空間の概念図である。
【図７】（Ａ）および（Ｂ）は、いずれも図１に示す半導体集積回路におけるＣＰＵ周辺の状態を表す概念図である。
【図８】（Ａ）および（Ｂ）は、いずれも従来の半導体集積回路におけるＣＰＵ周辺の状態を表す概念図である。
【図９】ＣＰＵおよびＴＡＧ／アドレス変換器の動作を表すフローチャートである。
【図１０】本発明の半導体集積回路の構成を表す別の実施形態の概念図である。
【図１１】本発明の半導体集積回路の構成を表す別の実施形態の概念図である。
【図１２】本発明の半導体集積回路の構成を表す別の実施形態の概念図である。
【図１３】図１に示す半導体集積回路におけるＣＰＵ周辺の状態を表す別の概念図である。
【図１４】ＴＡＧに含まれる変数名と、ＴＡＳＫ番号を使用する場合のＴＡＧに含まれるＴＡＳＫ番号および変数名との関係を表す概念図である。
【図１５】ＣＰＵおよびＴＡＧ／アドレス変換器の動作を表す別のフローチャートである。
【図１６】従来の半導体集積回路の構成を表す一例の概念図である。
【図１７】従来の半導体集積回路の構成を表す別の例の概念図である。
【図１８】従来の半導体集積回路の構成を表す別の例の概念図である。
【符号の説明】
【００７３】
１０  半導体集積回路
１２、１３、４４、４８、５２  ＣＰＵ
１４  バス
１６、４６、５０  ＴＡＧ／アドレス変換器
１８  ＤＭＡ
２０  内部ＲＡＭ
２２  ＵＡＲＴ
２４  Ｆｌａｓｈ／ＳＲＡＭ  Ｉ／Ｆ
２６  ＤＤＲ  Ｉ／Ｆ
２８  割り込みコントローラ
３０  ＴＩＭＥＲ
３２  ＧＰＩＯ
３４  Ｌ１キャッシュ
３６  ＴＡＧキャッシュ
３８  アドレス発生部
４０  アドレス取得部
４２  Ｌ２キャッシュ
【図１】
2009032150.tif 000003
【図２】
2009032150.tif 000004
【図３】
2009032150.tif 000005
【図４】
2009032150.tif 000006
【図５】
2009032150.tif 000007
【図６】
2009032150.tif 000008
【図７】
2009032150.tif 000009
【図８】
2009032150.tif 000010
【図９】
2009032150.tif 000011
【図１０】
2009032150.tif 000012
【図１１】
2009032150.tif 000013
【図１２】
2009032150.tif 000014
【図１３】
2009032150.tif 000015
【図１４】
2009032150.tif 000016
【図１５】
2009032150.tif 000017
【図１６】
2009032150.tif 000018
【図１７】
2009032150.tif 000019
【図１８】
2009032150.tif 000020