(57)【要約】【課題】キャッシュのヒット率が高い半導体装置を提供する。【解決手段】半導体装置はビット幅がＮビットである命令メモリ８と、Ｌ（Ｎ×Ｘ：Ｘは２以上の整数）ビット幅のキャッシュラインを有するキャッシュメモリ３と、キャッシュ制御部８１を備える。キャッシュ制御部８１は、命令メモリ８に記憶されているＭビット（２×Ｍ≦Ｌ）の命令をキャッシュメモリ３に登録する場合に、命令の先頭が含まれるＮビットの読出し単位データと、後続する（Ｘ−１）個のＮビットの読出し単位データを１つのキャッシュラインに登録する。【選択図】図１
2014006685.tif 000002
【特許請求の範囲】
【請求項１】
ビット幅がＮビットであるメインメモリと、
Ｌ（Ｎ×Ｘ：Ｘは２以上の自然数）ビット幅のキャッシュラインを有するキャッシュメモリと、
前記メインメモリに記憶されているＭビット（２×Ｍ≦Ｌ）の命令を前記キャッシュメモリに登録する場合に、前記命令の先頭が含まれるＮビットの読出し単位データと、後続する（Ｘ−１）個のＮビットの読出し単位データを１つのキャッシュラインに登録するキャッシュ制御部とを備えた、半導体装置。
【請求項２】
前記メインメモリの各読出し単位データ内の命令の位置がｓビットで指定される場合に、
前記キャッシュ制御部は、前記命令を指定するアドレスの下位のｓ個のビットを０とした第１のアドレスで指定されるＮビットの読出し単位データと、次の（Ｘ−１）個のＮビットの読出し単位データを前記キャッシュラインに登録する、請求項１記載の半導体装置。
【請求項３】
前記キャッシュ制御部は、前記第１のアドレスの下位ｓビットを除いた部分を前記キャッシュラインを指定するタグアドレスとして前記キャッシュメモリに登録する、請求項２記載の半導体装置。
【請求項４】
前記命令は、分岐命令で指定される分岐先命令である、請求項３記載の半導体装置。
【請求項５】
前記キャッシュ制御部は、分岐命令で指定される前記分岐先命令のアドレスにジャンプする場合に、前記アドレスの下位ｓビットを除いた部分と前記タグアドレスとが一致する場合に、前記タグアドレスに対応するキャッシュラインのデータを読み出す、請求項４記載の半導体装置。
【請求項６】
Ｘ＝２である、請求項４記載の半導体装置。
【請求項７】
前記キャッシュ制御部は、分岐命令で指定される前記分岐先命令のアドレスにジャンプする場合に、前記アドレスの下位ｓビットを除いた部分と前記タグアドレスの次のアドレスが一致する場合に、前記タグアドレスに対応するキャッシュラインのデータを読み出す、請求項４記載の半導体装置。
【請求項８】
前記キャッシュ制御部は、前記読み出したキャッシュラインのデータのうち、次のアドレスに対応するＮビットのデータをＣＰＵコアへ出力する、請求項６記載の半導体装置。
【請求項９】
前記メインメモリは、可変長命令を記憶する、請求項１記載の半導体装置。
【請求項１０】
前記キャッシュ制御部は、前記キャッシュラインに登録された各読出し単位データが有効かを否かを表わすデータを前記キャッシュメモリに登録する、請求項１記載の半導体装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、たとえば、キャッシュメモリを有する半導体装置に関する。
【背景技術】
【０００２】
従来から、メモリアクセスを高速化する方式が知られている。
特許文献１（特開２００１−１４２６９８号公報）のメモリアクセス方式では、主記憶装置が、複数の命令コードにより記述されたプログラムを記憶し、中央演算処理装置が、記主記憶装置に記憶されたプログラムを読み込み、読み込んだプログラムに記述された命令コードに従って命令を実行する。命令用メモリは、主記憶装置と比べて高速に読み込み可能であり、中央演算処理装置が実行中の命令の次に実行する次命令の命令コードが記憶されているアドレスが、実行中の命令の命令コードが記憶されているアドレスと連続していないアドレス不連続命令について、アドレス不連続命令の命令コードを記憶する。高速アクセス制御部が、次命令がアドレス不連続命令であることを検出し、アドレス不連続命令の場合には、命令用メモリに記憶されたアドレス不連続命令の命令コードを検索して命令用メモリからアドレス不連続命令の命令コードを取得し、取得した命令コードを中央演算処理装置に転送する。
【０００３】
また、特許文献２（特開２００６−２９３７４８号公報）には、情報処理モジュールの入力インターフェースにスキップビット数を設定できるようにすることで、先頭アドレスに対して設定されたスキップビット数分を読み飛ばしてから、処理を開始することできるため、ｎビットアライメントされていない領域からも正しく入力データを与えることを可能とした情報処理装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１４２６９８号公報
【特許文献２】特開２００６−２９３７４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１および特許文献２の方式では、分岐先命令などの命令が複数のキャッシュラインに跨って登録されてしまうことがあり、キャッシュのヒット率が上がらず、メモリアクセス待ちが発生するという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
【課題を解決するための手段】
【０００７】
一実施の形態の半導体装置は、ビット幅がＮビットであるメインメモリと、Ｌ（Ｎ×Ｘ：Ｘは２以上の整数）ビット幅のキャッシュラインを有するキャッシュメモリと、キャッシュ制御部を備える。キャッシュ制御部は、メインメモリに記憶されているＭビット（２×Ｍ≦Ｌ）の命令をキャッシュメモリに登録する場合に、命令の先頭が含まれるＮビットの読出し単位データと、後続する（Ｘ−１）個のＮビットの読出し単位データを１つのキャッシュラインに登録する。
【発明の効果】
【０００８】
一実施の形態によれば、キャッシュのヒット率を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の半導体装置の構成を表わす図である。
【図２】第２の実施形態の半導体装置の構成を表わす図である。
【図３】第２の実施形態の命令メモリに記憶される命令を表わす図である。
【図４】（ａ）は、Ｖビットメモリに記憶されるバリッドビット（Ｖ０，Ｖ１）と、タグメモリに記憶されるタグアドレス（Ａ３〜Ａ２４）を表わす図である。（ｂ）は、キャッシュデータメモリに記憶される１つのキャッシュラインのデータを表わす図である。
【図５】アドレス比較器の一構成例を表わす図である。
【図６】従来のキャッシュ方式において、分岐先命令がキャッシュされる例を説明するための図である。
【図７】従来のキャッシュ方式において、分岐先命令がキャッシュされる別の例を説明するための図である。
【図８】第２の実施形態のキャッシュ方式において、分岐先命令がキャッシュされる例を説明するための図である。
【図９】第２の実施形態のキャッシュ方式において、分岐先命令がキャッシュされる別の例を説明するための図である。
【図１０】分岐先命令をキャッシュメモリへ登録する処理を制御するシーケンサの動作を説明するための図である。
【図１１】分岐先命令がヒットする場合の動作例を示す図である。
【図１２】分岐先命令がミスする場合の動作例を示す図である。
【図１３】第３の実施形態のアドレス比較器の構成を表わす図である。
【図１４】第３の実施形態の入出力制御部を表わす図である。
【図１５】１つのキャッシュラインに２つの分岐先命令が格納されている場合の格納状態を表わす図である。
【図１６】第４の実施形態の半導体装置の構成を表わす図である。
【図１７】第４の実施形態の命令メモリに記憶される命令を表わす図である。
【図１８】（ａ）は、Ｖビットメモリに記憶されるバリッドビット（Ｖ０，Ｖ１，Ｖ２）と、タグメモリに記憶されるタグアドレス（Ａ２〜Ａ２４）を表わす図である。（ｂ）は、キャッシュデータメモリに記憶される１つのキャッシュラインのデータを表わす図である。
【図１９】分岐先命令をキャッシュメモリへ登録する処理を制御するシーケンサの動作を説明するための図である。
【図２０】第５の実施形態の半導体装置の構成を表わす図である。
【図２１】キャッシュデータメモリへの登録を説明するための図である。
【図２２】キャッシュデータメモリからの読出しを説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図面を用いて説明する。
［第１の実施形態］
図１は、第１の実施形態の半導体装置の構成を表わす図である。
【００１１】
図１を参照して、この半導体装置１は、メインメモリである命令メモリ８と、ＣＰＵ２とを備える。
【００１２】
ＣＰＵ２は、ＣＰＵコア４と、キャッシュメモリ３と、キャッシュ制御部８１とを備える。
【００１３】
命令メモリ８は、Ｎビットのビット幅を有する。Ｎビットの読出し単位データ内で命令の位置がｓビットで指定されるものとする。たとえば、ｓ＝ｌｏｇ2（Ｎ／８）とする。Ｎ＝６４の場合には、３である。
【００１４】
キャッシュメモリ３は、Ｌ（Ｎ×Ｘ：Ｘは２以上の自然数）ビット幅のキャッシュラインを有する。キャッシュメモリ３は、各キャッシュラインのデータの命令メモリ内での格納位置を表わすタグアドレスとを記憶する。
【００１５】
キャッシュ制御部８１は、命令メモリ８に記憶されているＭビット（２×Ｍ≦Ｌ）の命令をキャッシュメモリに登録する場合に、命令の先頭が含まれるＮビットの読出し単位データと、後続する（Ｘ−１）個のＮビットの読出し単位データを１つのキャッシュラインに登録する。ただし、Ｘは２以上の自然数である。
【００１６】
より具体的には、キャッシュ制御部８１は、命令を指定するアドレスの下位のｓ個のビットを０とした第１のアドレスで指定されるＮビットの読出し単位データと、次の（Ｘ−１）個のＮビットの読出し単位データをキャッシュラインに登録する。また、キャッシュ制御部８１は、第１のアドレスの下位ｓビットを除いた部分をキャッシュラインを指定するタグアドレスとしてキャッシュメモリ３に登録する。
【００１７】
以上のように、本実施の形態によれば、１つのキャッシュラインに命令の全体が登録されるので、キャッシュのヒット率を向上させることができる。
【００１８】
［第２の実施形態］
第２の実施形態では、分岐先命令をキャッシュする好適な構成を説明する。
【００１９】
図２は、第２の実施形態の半導体装置の構成を表わす図である。
図２を参照して、この半導体装置１は、ＣＰＵ（Central Processing Unit）２と、ＲＯＭ（Read Only Memory)５と、ＲＡＭ（Random Access Memory）７と、ＣＩＦ（Cpu InterFace)６とを備える。
【００２０】
ＣＩＦ６は、ＲＡＭ７およびＲＯＭ５と、ＣＰＵ２との間でデータおよび命令のやりとりを制御する。ＲＯＭ５は、命令を記憶する命令メモリ８を含む。
【００２１】
ＣＰＵコア４とＲＯＭ５との間、ＣＰＵコア４とＲＡＭ７との間は、ＣＩＦ６を介して６４ビットのバスで接続される。
【００２２】
ＣＰＵ２は、ＣＰＵコア４と、キャッシュメモリ３と、キャッシュ制御部８１とを有する。
【００２３】
ＣＰＵコア４は、命令をデコードし、実行する。
キャッシュメモリ３は、キャッシュデータメモリ９と、タグメモリ１１と、Ｖビットメモリ１３とを有する。
【００２４】
キャッシュ制御部８１は、ＬＲＵ（Least Recently Used）１５と、入出力制御部１０と、アドレス比較器１２と、Ｖビット制御部１４と、ＬＲＵ制御部１６と、第１キュー１７と、第２キュー１８と、シーケンサ１９とを有する。
【００２５】
命令メモリ８は、６４ビットのビット幅を有する。６４ビットの読出し単位データ内で命令の位置が３ビット（Ａ０〜Ａ２）で指定される。命令メモリ８内の命令の位置は、２５ビットのアドレス（Ａ０〜Ａ２４）で指定される。命令メモリ８内の読出し単位データのアドレスは、２２ビットのアドレス（Ａ３〜Ａ２４）で指定される。
【００２６】
キャッシュデータメモリ９は、１２８ビット幅のキャッシュラインを有する。すなわち、命令メモリ８内の連続する２つの読出し単位データを記憶する。キャッシュラインの２つの読出し単位データのうち、命令メモリ８においてアドレスが小さい方に記憶されていた読出し単位データを前半の６４ビットデータ、命令メモリ８においてアドレスが大きい方に記憶されていた読出し単位データを後半の６４ビットデータと呼ぶことにする。
【００２７】
タグメモリ１１は、タグアドレス（Ａ３〜Ａ２４）を記憶する。タグアドレスは、対応するキャッシュラインの前半の６４ビットデータの命令メモリ８におけるアドレスを表わす。
【００２８】
Ｖビットメモリ１３は、バリッドビットＶ０、Ｖ１を記憶する。バリッドビットＶ０が、「１」の場合には、対応するキャッシュラインの前半の６４ビットデータが有効であり、「０」の場合には、対応するキャッシュラインの前半の６４ビットデータが無効である。バリッドビットＶ１が、「１」の場合には、対応するキャッシュラインの後半の６４ビットデータが有効であり、「０」の場合には、対応するキャッシュラインの後半の６４ビットデータが無効である。
【００２９】
１つのキャッシュラインと、そのキャッシュラインに対応するタグアドレスと、そのキャッシュラインに対応するバリッドビットとが１つのエントリを構成する。
【００３０】
ＬＲＵ１５は、最近使用されていないラインを表わす情報を記憶する。
入出力制御部１０は、命令メモリ８に記憶されている分岐先命令をキャッシュデータメモリ９に登録する場合に、分岐先命令の先頭が含まれる６４ビットの読出し単位データと、後続する６４ビットの読出し単位データとを１つのキャッシュラインに登録する。具体的には、入出力制御部１０は、分岐先命令を指定するアドレスの下位の３個のビットを０とした第１のアドレスで指定される６４ビットの読出し単位データと、次の６４ビットの読出し単位データをキャッシュラインに登録する。また、入出力制御部１０は、第１のアドレスの下位３ビットを除いた部分をキャッシュラインを指定するタグアドレスとしてタグメモリ１１に登録する。
【００３１】
また、入出力制御部１０は、キャッシュデータメモリ９から、指定されたキャッシュラインの１２８ビットのデータを読み出す。
【００３２】
アドレス比較器１２は、タグメモリ１１に記憶されているタグアドレス（Ａ３〜Ａ２４）と、分岐先命令のアドレスＪＡＤＤＲのうち下位３ビットを除くアドレスＪＡＤＤＲ［２４：３］とを比較する。
【００３３】
Ｖビット制御部１４は、Ｖビットメモリ１３におけるバリッドビットＶ０，Ｖ１の更新を制御する。
【００３４】
ＬＲＵ制御部１６は、ＬＲＵ１５内のデータの更新を制御する。
第１キュー１７は、キャッシュのヒット時に、キャッシュデータメモリ９から読みだされたキャッシュラインの前半の６４ビットデータを一時的に保持する。第２キュー１８は、キャッシュのヒット時に、キャッシュデータメモリ９から読みだされたキャッシュラインの後半の６４ビットデータを一時的に保持する。
【００３５】
図３は、命令メモリ８に記憶される命令を表わす図である。
命令メモリ８は、可変長の命令、すなわち８ビット、１６ビット、２４ビット、３２ビット、４０ビット、４８ビット、５６ビット、または６４ビットの命令を記憶する。命令メモリ８からは、６４ビットの命令バスを通じて、６４ビット単位でデータが読みだされる。命令メモリ８からのデータの読み出し位置を指定するアドレス（Ａ３〜Ａ２４）は、６４ビットの読出し単位データ＃０、データ＃１、データ＃２・・・の先頭を表わす０ｂ０・・・００００００００、０ｂ０・・・００００１０００、０ｂ０・・・０００１００００、・・・で与えられる。
【００３６】
図４（ａ）は、Ｖビットメモリ１３に記憶されるバリッドビット（Ｖ０，Ｖ１）と、タグメモリに記憶されるタグアドレス（Ａ３〜Ａ２４）を表わす図である。
【００３７】
図４（ｂ）は、キャッシュデータメモリ９に記憶される１つのキャッシュラインのデータを表わす図である。
【００３８】
１つのキャッシュラインのデータは、１２８ビットのデータ（Ｄ０〜Ｄ１２７）からなる。１つのキャッシュラインのデータのうち、６４ビットのデータ（Ｄ０〜Ｄ６３）が前半の６４ビットデータを構成し、６４ビットのデータ（Ｄ６４〜Ｄ１２７）が後半の６４ビットデータを構成する。
【００３９】
図５は、アドレス比較器１２の構成を表わす図である。
図５を参照して、アドレス比較器１２は、比較器２１＿１〜２１＿Ｎと、論理積回路２２＿１〜２２＿Ｎと、論理和回路２３とを含む。ただし、Ｎは、キャッシュデータメモリに格納可能なラインの総数である。
【００４０】
比較器２１＿ｉ（ｉ＝１〜Ｎ）は、第ｉエントリのタグアドレスＡ３〜Ａ２４と、分岐先命令のアドレスＪＡＤＤＲのうち下位３ビットを除くアドレスＪＡＤＤＲ［２４：３］とを比較して、一致する場合には「Ｈ」レベルの信号を出力し、不一致の場合には「Ｌ」レベルの信号を出力する。
【００４１】
論理積回路２２＿ｉは、比較器２１＿ｉの出力と、バリッドビットＶ０の論理積を出力する。論理和回路２３は、論理積回路２２＿１〜２２＿Ｎの論理和を出力する。この出力は、キャッシュのヒットまたはミスを示す信号であり、「Ｈ」レベルのときに、キャッシュがヒットしたことを表わし、「Ｌ」レベルのときに、キャッシュがミスしたことを表わす。また、ヒットしたエントリのタグアドレスに対応するキャッシュラインが、入出力制御部１０によって読出される。
（従来のキャッシュ方式）
図６は、従来のキャッシュ方式において、分岐先命令がキャッシュされる例を説明するための図である。
【００４２】
従来のキャッシュ方式は、命令メモリからのデータの読み出し箇所（アライメント境界）が固定されている。図６に示すように、分岐先命令１００をキャッシュデータメモリへ登録する場合には、アライメント境界である０ｂ０・・・０００１００００を先頭アドレスとした１２８ビットのデータがキャッシュデータメモリの１つのキャッシュラインのデータとして登録される。
【００４３】
図７は、従来のキャッシュ方式において、分岐先命令がキャッシュされる別の例を説明するための図である。
【００４４】
図７に示すように、分岐先命令２００をキャッシュデータメモリへ登録する場合には、まず、アライメント境界である０ｂ０・・・００００００００を先頭アドレスとした１２８ビットのデータがキャッシュデータメモリの１つのキャッシュラインのデータとして登録されるが、この場合には、分岐先命令２００の一部のみしか、キャッシュデータメモリに登録されない。したがって、分岐先命令へのジャンプ時に、分岐先命令２００がキャッシュにヒットしたとしても、メモリアクセス待ちとなり性能が上がらないという問題がある。
（本実施の形態のキャッシュ方式）
図８は、本実施の形態のキャッシュ方式において、分岐先命令がキャッシュされる例を説明するための図である。
【００４５】
本実施の形態のキャッシュ方式では、命令メモリ８からのデータの読み出し境界（アライメント境界）が固定されていない。図８に示すように、分岐先命令１００をキャッシュデータメモリ９へ登録する場合には、分岐先命令１００の先頭が含まれる６４ビットの読出し単位データ（アドレス０ｂ０・・・０００１００００で指定される）がキャッシュラインの前半に登録されて、前半の６４ビットデータ（Ｄ０〜Ｄ６３）となる。さらに、その次の６４ビットの読出し単位データ（０ｂ０・・・０００１１０００で指定される）がキャッシュラインの後半に登録されて、後半６４ビットデータ（Ｄ６４〜Ｄ１２７）となる。
【００４６】
図９は、本実施の形態のキャッシュ方式において、分岐先命令がキャッシュされる別の例を説明するための図である。
【００４７】
図９に示すように、分岐先命令２００をキャッシュデータメモリ９へ登録する場合には、まず、分岐先命令２００の先頭が含まれる６４ビットの読出し単位データ（アドレス０ｂ０・・・００００１０００で指定される）がキャッシュラインの前半に登録されて、前半の６４ビットデータ（Ｄ０〜Ｄ６３）となる。さらに、その次の６４ビットの読出し単位データ（０ｂ０・・・０００１００００で指定される）がキャッシュラインの後半に登録されて、後半の６４ビットデータ（Ｄ６４〜Ｄ１２７）となる。この場合には、分岐先命令２００の全部が、キャッシュデータメモリ９に登録されるので、従来のようなメモリアクセス待ちが発生しない。
（分岐先命令キャッシュメモリへの登録）
図１０は、分岐先命令をキャッシュメモリへ登録する処理を制御するシーケンサ１９の動作を説明するための図である。
【００４８】
シーケンサ１９は、以下の（１）〜（３）の処理を制御する。
（１）  タグアドレスを登録、バリッドビットをクリア、ＬＲＵ更新。
（２）  前半の６４ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ０の書き込み。
（３）  後半の６４ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ１の書き込み。
【００４９】
シーケンサ１９は、通常”ＩＤＬＥ状態”にあり、キャッシュミスしたときに登録を開始する。シーケンサ１９は、登録開始によって、上記の（１）を実行し、”Ｄ０待ち状態”に移行する。その後、シーケンサ１９は、データの前半を受け付けると、（２）を実行し、”Ｄ１待ち状態”に移行する。最後に、シーケンサ１９は、データの後半を受け付けると（３）を実行し、”ＩＤＬＥ”状態に戻る。
【００５０】
なお、シーケンサ１９は、登録データを待っているときに分岐を行って、分岐先の命令がキャッシュにヒットしたときは、１つのキャッシュラインが埋まらないまま登録を終了する場合がある。また、シーケンサ１９は、登録データを待っているときに分岐を行って、分岐先の命令がキャッシュにミスしたときには、別のキャッシュラインの登録を開始する場合がある。
【００５１】
（ヒット時の動作）
図１１は、分岐先命令がヒットする場合の動作例を示す図である。
【００５２】
図１１を参照して、ＣＰＵコア４は、分岐先アドレスＪＡＤＤＲ（ここでは、命令Ａのアドレス＠Ａ）を指定した分岐命令ＪＵＭＰを実行する。
【００５３】
アドレス比較器１２は、分岐先アドレスの下位３ビットを除く部分ＪＡＤＤＲ［２４：３］といずれかのタグアドレスが一致するので、キャッシュヒット信号ｂｒａｈｉｔを「Ｈ」レベルとする。
【００５４】
シーケンサ１９は、バリッドビットＶ０が有効を示す「１」であるため、キャッシュデータメモリの中のヒットしたキャッシュラインの前半の６４ビットデータｂｒａｄａｔ０［６３：０］を第１キュー１７に送る。ここでは、前半の６４ビットデータには、命令Ａと命令Ｂが含まれるものとする。
【００５５】
また、シーケンサ１９は、バリッドビットＶ１が有効を示す「１」であるため、キャッシュデータメモリの中のヒットしたキャッシュラインの後半の６４ビットデータｂｒａｄａｔ１［１２７：６４］を第２キュー１８に送る。こでは、後半の６４ビットのデータには、命令Ｃと命令Ｄが含まれるものとする。
【００５６】
ＬＲＵ制御部１６は、ＬＲＵの先頭に命令Ａのアドレスを登録する。
シーケンサ１９は、第１キュー１７、第２キュー１８の命令を順番にＣＰＵコア４に送り、ＣＰＵコア４によって命令がデコードされる。命令Ｃがデコードされた後、ＣＰＵコア４は、分岐先アドレスＪＡＤＤＲ（ここでは、命令Ｅのアドレス＠Ｅ）を指定した分岐命令ＪＵＭＰを実行する。
【００５７】
アドレス比較器１２は、分岐先アドレスの下位３ビットを除く部分ＪＡＤＤＲ［２４：３］といずれかのタグアドレスが一致するので、キャッシュヒット信号ｂｒａｈｉｔを「Ｈ」レベルとする。
【００５８】
シーケンサ１９は、バリッドビットＶ０が有効を示す「１」であるため、キャッシュデータメモリの中のヒットしたキャッシュラインの前半の６４ビットデータｂｒａｄａｔ０［６３：０］を第１キュー１７に送る。ここでは、前半の６４ビットのデータには、命令Ｅと命令Ｆが含まれるものとする。
【００５９】
シーケンサ１９は、バリッドビットＶ１が無効を示す「０」であるため、キャッシュデータメモリの中のヒットしたキャッシュラインの後半の６４ビットデータｂｒａｄａｔ１［１２７：６４］を第２キュー１８に送らない。
【００６０】
ＬＲＵ制御部１６は、ＬＲＵの先頭に命令Ｅのアドレスを登録する。
シーケンサ１９は、第１キュー１７の命令を順番にＣＰＵコア４に送り、ＣＰＵコア４によって命令がデコードされる。
【００６１】
（ミス時の動作）
図１２は、分岐先命令がミスする場合の動作例を示す図である。
【００６２】
図１２を参照して、ＣＰＵコア４は、分岐先アドレスＪＡＤＤＲ（ここでは、命令Ａのアドレス＠Ａ）を指定した分岐命令ＪＵＭＰが実行する。
【００６３】
アドレス比較器１２は、分岐先アドレスの下位３ビットを除く部分ＪＡＤＤＲ［２４：３］がいずれかのタグアドレスとも一致しないので、キャッシュヒット信号ｂｒａｈｉｔが「Ｈ」レベルとしない。
【００６４】
シーケンサ１９は、分岐先アドレスＪＡＤＤＲの下位３ビットを除いた部分を、タグアドレスＡ３〜Ａ２４としてタグメモリに書き込む。
【００６５】
ＬＲＵ制御部１６は、ＬＲＵの先頭に命令Ａのアドレスを登録する。
ＣＰＵコア４は、要求信号ＲＥＱを出力し、これに応答して命令メモリ８から送信される応答信号ＡＣＱを受け取る。Ｖビット制御部１４は、バリッドビットＶ０，Ｖ１を「０」，「０」にクリアする。
【００６６】
ＣＰＵコア４は、命令メモリ８から前半の６４ビットデータＤ０を受けると、キャッシュデータメモリの対応するキャッシュラインの前半の位置に前半の６４ビットデータＤ０を書き込む。Ｖビット制御部１４は、命令メモリ８から完了信号ＥＮＤを受けると、バリッドビットＶ０を「１」に設定する。
【００６７】
ＣＰＵコア４は、さらに要求信号ＲＥＱを出力し、これに応答して命令メモリ８から送信される応答信号ＡＣＱを受け取る。ＣＰＵコア４は、命令メモリ８から後半６４ビットのデータＤ１を受けると、キャッシュデータメモリの対応するキャッシュラインの後半の位置に後半の６４ビットデータＤ１を書き込む。Ｖビット制御部１４は、命令メモリ８から完了信号ＥＮＤを受けると、バリッドビットＶ１を「１」に設定する。
【００６８】
以上のように、本実施の形態によれば、分岐先命令の先頭が命令メモリのどこにあろうと、分岐先命令の全体を１つのキャッシュラインに保持することができる。これにより、キャッシュヒット時は、メモリアクセスを待つことなく分岐先命令の実行を開始することができる。
【００６９】
［第３の実施形態］
第２の実施形態では、ジャンプ時にキャッシュラインの前半にある分岐先命令の先頭が検索される。しかしながら、キャッシュラインの後半にも、別の分岐先命令が格納されている場合がある。この分岐先命令も検索の対象とすることによって、ヒット率を向上させることができる。第３の実施形態では、後半の６４ビットデータに対応するアドレスをタグアドレスから算出して、ヒット判定に使用する。
【００７０】
図１３は、第３の実施形態のアドレス比較器の構成を表わす図である。
図１３を参照して、アドレス比較器５１２は、比較器２１＿１〜２１＿Ｎ，２５＿１〜２５＿Ｎと、論理積回路２２＿１〜２２＿Ｎ，２６＿１〜２６＿Ｎと、論理和回路２３，２７と、加算器２４＿１〜２４＿Ｎと、論理和回路２８と、論理積回路２９とを備える。ただし、Ｎは、キャッシュデータメモリに格納可能なキャッシュラインの総数である
比較器２１＿ｉ（ｉ＝１〜Ｎ）は、第ｉエントリのタグアドレスＡ３〜Ａ２４と、分岐先命令のアドレスＪＡＤＤＲのうち下位３ビットを除くアドレスＪＡＤＤＲ［２４：３］とを比較して、一致する場合には「Ｈ」レベルの信号を出力し、不一致の場合には「Ｌ」レベルの信号を出力する。
【００７１】
論理積回路２２＿ｉは、比較器２１＿ｉの出力と、バリッドビットＶ０の論理積を出力する。この出力は、キャッシュラインの前半のヒットまたはミスを示す信号であり、「Ｈ」レベルのときに、いずれかのキャッシュラインの前半がヒットしたことを表わし、「Ｌ」レベルのときに、すべてのキャッシュラインの前半がミスしたことを表わす。
【００７２】
論理和回路２３は、論理積回路２２＿１〜２２＿Ｎの出力の論理和を出力する。
加算器２４＿ｉは、第ｉエントリのタグアドレスＡ３〜Ａ２４に「１」を加算することによって、タグアドレスの次のアドレスを出力する。タグアドレスがあるキャッシュラインの前半の６４ビットデータの命令メモリ８内でのアドレスを示すので、タグアドレスの次のアドレスは、同一のキャッシュラインの後半の６４ビットデータの命令メモリ８内でのアドレスを示す。
【００７３】
比較器２５＿ｉは、加算器２４＿ｉから出力される第ｉエントリのタグアドレスＡ３〜Ａ２４の次のアドレスと、分岐先命令のアドレスＪＡＤＤＲのうち下位３ビットを除くアドレスＪＡＤＤＲ［２４：３］とを比較して、一致する場合には「Ｈ」レベルの信号を出力し、不一致の場合には「Ｌ」レベルの信号を出力する。
【００７４】
論理積回路２６＿ｉは、比較器２５＿ｉの出力と、バリッドビットＶ１の論理積を出力する。
【００７５】
論理和回路２７は、論理積回路２６＿１〜２６＿Ｎの出力の論理和を出力する。この出力は、キャッシュラインの後半のヒットまたはミスを示す信号であり、「Ｈ」レベルのときに、いずれかのキャッシュラインの後半がヒットしたことを表わし、「Ｌ」レベルのときに、すべてのキャッシュラインの後半がミスしたことを表わす。
【００７６】
論理和回路２８は、論理和回路２３の出力と論理和回路２８の出力の論理和を出力する。この出力は、キャッシュラインのヒットまたはミスを示す信号であり、「Ｈ」レベルのときに、いずれかのキャッシュラインが前半または後半でヒットしたことを表わし、「Ｌ」レベルのときに、すべてのキャッシュラインがミスしたことを表わす。また、ヒットしたエントリのタグアドレスに対応するキャッシュラインが、入出力制御部１０によって読出される。
【００７７】
図１４は、第３の実施形態の入出力制御部を表わす図である。
入出力制御部１０は、セレクタ７０とシフタ５１を含む。
【００７８】
セレクタ７０は、ヒットしたキャッシュラインの１２８ビットのデータ「Ｄ０〜Ｄ１２７」を出力する。
【００７９】
キャッシュラインの前半のデータがヒットしたときには、第２の実施形態と同様に、セレクタ７０の出力が、ＣＰＵコア４に送られる。
【００８０】
キャッシュラインの後半のデータがヒットしたときには、セレクタ７０から出力される「Ｄ０〜Ｄ１２７」をシフタ５１が６４ビット右シフトする。その結果、第０ビット目〜第６３ビット目が「Ｄ６４〜Ｄ１２７」（後半の６４ビットのデータ）で、第６４ビット目〜第１２７ビット目がダミーのデータがＣＰＵコア４に送られる。
【００８１】
図１５は、１つのキャッシュラインに２つの分岐先命令が格納されている場合の格納状態を表わす図である。
【００８２】
キャッシュラインの前半には、分岐先命令１００の先頭が位置し、キャッシュラインの後半には、分岐先命令２００の先頭が位置する。
【００８３】
第２の実施形態では、１つのキャッシュラインに２つの分岐先命令が登録されていても、キャッシュラインの前半の６４ビットデータに先頭が含まれる分岐先命令１００のみがキャッシュのヒット判定の対象となる。これに対して、本実施の形態では、キャッシュラインの後半の６４ビットデータに先頭が含まれる分岐先命令２００もキャッシュのヒット判定の対象となる。
【００８４】
以上のように、本実施の形態によれば、タグアドレスに１を加算したアドレスも、アドレス比較の対処に加えることによって、第２の実施形態よりもキャッシュのヒット率を増加させることができる。
【００８５】
［第４の実施形態］
本実施の形態では、命令メモリからのデータの読み出し単位が、第２の実施形態よりも小さい場合について説明する。  
【００８６】
図１６は、第４の実施形態の半導体装置の構成を表わす図である。
図１６の半導体装置１０１が、図２の半導体装置１と相違する点は以下である。
【００８７】
ＣＰＵコア４とＲＯＭ５との間、ＣＰＵコア４とＲＡＭ７との間は、ＣＩＦ６を介して３２ビットの命令バスで接続される。
【００８８】
命令メモリ１０８は、３２ビットのビット幅を有する。３２ビットの読出し単位データ内で命令の位置が２ビット（Ａ０〜Ａ１）で指定される。命令メモリ１０８内の命令の位置は、Ａ０〜Ａ２４の２５ビットのアドレスで指定される。
【００８９】
キャッシュデータメモリ９は、１２８ビット幅のキャッシュラインを有する。すなわち、キャッシュデータメモリ９は、命令メモリ１０８内の連続する４つの読出し単位データを記憶する。キャッシュラインの４つの読出し単位データについて、命令メモリ１０８においてアドレスが小さい方に記憶されていた読出し単位データから順番に第１番目の３２ビットデータ、第２番目の３２ビットデータ、第３番目の３２ビットデータ、第４番目の３２ビットデータと呼ぶことにする。
【００９０】
Ｖビットメモリ１１３は、バリッドビットＶ０、Ｖ１、Ｖ２を記憶する。バリッドビットＶ０は、キャッシュラインの第１番目の３２ビットデータが有効か無効かを表わすビットである。バリッドビットＶ１は、キャッシュラインの第２番目の３２ビットデータが有効か無効かを表わすビットである。バリッドビットＶ２は、キャッシュラインの第３番目の３２ビットデータが有効か無効かを表わすビットである。バリッドビットＶ３は、キャッシュラインの第４番目の３２ビットデータが有効か無効かを表わすビットである。
【００９１】
タグメモリ１１１は、キャッシュデータメモリ９の各キャッシュラインのタグアドレス（Ａ２〜Ａ２４）を記憶する。タグアドレスは、対応するキャッシュラインの第１の３２ビットデータの命令メモリ８におけるアドレスを表わす。
【００９２】
入出力制御部１１０は、命令メモリ１０８に記憶されている分岐先命令をキャッシュデータメモリ９に登録する場合に、分岐先命令の先頭が含まれる３２ビットの読出し単位データと、後続する３個の３２ビットの読出し単位データとを１つのキャッシュラインに登録する。具体的には、入出力制御部１１０は、分岐先命令を指定するアドレスの下位の２個のビットを０とした第１のアドレスで指定される３２ビットの読出し単位データと、次の３個の３２ビットの読出し単位データとをキャッシュラインに登録する。また、入出力制御部１１０は、第１のアドレスの下位２ビットを除いた部分をキャッシュラインを指定するタグアドレスとしてタグメモリ１１１に登録する。
【００９３】
また、入出力制御部１１０は、キャッシュデータメモリ９から、指定されたキャッシュラインの１２８ビットのデータを読み出す。
【００９４】
図１７は、命令メモリ１０８に記憶される命令を表わす図である。
命令メモリ１０８は、可変長の命令、すなわち８ビット、１６ビット、２４ビット、３２ビット、４０ビット、４８ビット、５６ビット、または６４ビットの命令を記憶する。命令メモリ１０８からは、３２ビットの命令バスを通じて、３２ビット単位でデータが読みだされる。命令メモリ１０８からのデータの読み出し位置を指定するアドレスは、３２ビットのデータ＃０、データ＃１、データ＃２・・・の先頭を表わす０ｂ０・・・０００００００、０ｂ０・・・００００１００、０ｂ０・・・０００１０００、・・・で与えられる。
【００９５】
図１８（ａ）は、Ｖビットメモリ１１３に記憶されるバリッドビット（Ｖ０，Ｖ１，Ｖ２）と、タグメモリ１１１に記憶されるタグアドレス（Ａ２〜Ａ２４）を表わす図である。
【００９６】
図１８（ｂ）は、キャッシュデータメモリ９に記憶される１つのキャッシュラインのデータを表わす図である。
【００９７】
１キャッシュラインのデータは、１２８ビットのデータ（Ｄ０〜Ｄ１２７）からなる。１キャッシュラインのデータのうち、３２ビットのデータ（Ｄ０〜Ｄ３１）が第１番目の３２ビットデータを構成し、３２ビットのデータ（Ｄ３２〜Ｄ６３）が第２番目の３２ビットデータを構成し、３２ビットのデータ（Ｄ６４〜Ｄ９５）が第３番目の３２ビットデータを構成し、３２ビットのデータ（Ｄ９６〜Ｄ１２７）が第４番目の３２ビットデータを構成する。
【００９８】
（分岐先命令キャッシュメモリへの登録）
図１９は、分岐先命令をキャッシュメモリへ登録する処理を制御するシーケンサ１１９の動作を説明するための図である。
【００９９】
シーケンサ１１９は、以下の（１）〜（５）の処理を制御する。
（１）  タグアドレスを登録、バリッドビットをクリア、ＬＲＵ更新。
（２）  第１番目の３２ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ０の書き込み。
（３）  第２番目の３２ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ１の書き込み。
（４）  第３番目の３２ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ２の書き込み。
（５）  第４番目の３２ビットデータのキャッシュデータメモリへの書き込み、バリッドビットＶ３の書き込み。
【０１００】
シーケンサ１１９は、通常”ＩＤＬＥ状態”にあり、キャッシュミスしたときに登録を開始する。シーケンサ１１９は、登録開始によって、上記の（１）を実行し、”Ｄ０待ち状態”に移行する。その後、シーケンサ１１９は、第１番目の３２ビットのデータを受け付けると、（２）を実行し、”Ｄ１待ち状態”に移行するその後、シーケンサ１１９は、第２番目の３２ビットのデータを受け付けると、（３）を実行し、”Ｄ２待ち状態”に移行する。その後、シーケンサ１１９は、第３番目の３２ビットのデータを受け付けると、（４）を実行し、”Ｄ３待ち状態”に移行する。最後に、シーケンサ１１９は、第４番目の３２ビットのデータを受け付けると、（５）を実行し、”ＩＤＬＥ”状態に戻る。
【０１０１】
以上のように、本実施の形態では、命令メモリのビット幅がキャッシュラインのビット幅の１／４で、命令の最大長の１／２の場合であっても、第２の実施形態と同様に、分岐先命令の先頭が命令メモリのどこにあろうと、分岐先命令の全体を１つのキャッシュラインに保持することができる。これにより、キャッシュヒット時は、メモリアクセスを待つことなく分岐先命令の実行を開始することができる。
【０１０２】
［第５の実施形態］
第５の実施形態では、分岐先命令をキャッシュメモリにシフトして格納する。
【０１０３】
本実施の形態では、第１の実施形態と異なり、命令メモリから読み出した分岐先命令をシフトしてつめてキャッシュメモリに格納することで、キャッシュメモリの少ない面積で分岐先命令を格納することができる。
【０１０４】
図２０は、第５の実施形態の半導体装置の構成を表わす図である。
図２０の半導体装置２０１が、図２の半導体装置１と相違する点は以下である。
【０１０５】
キャッシュデータメモリ２０９は、６４ビット幅のキャッシュラインを有する。すなわち、命令メモリ８内の１つの読出し単位データを記憶する。
【０１０６】
分岐先命令アドレスメモリ２１１は、分岐先命令アドレス（Ａ０〜Ａ２４）を記憶する。分岐先命令アドレスは、タグアドレス（Ａ３〜Ａ２４）と、読出しデータ単位内の分岐先命令の位置を表わすアドレス（Ａ０〜Ａ２）からなる。
【０１０７】
Ｖビットメモリ２１３は、バリッドビットＶ０を記憶する。バリッドビットＶ０が、「１」の場合には、対応するキャッシュラインの６４ビットデータが有効であり、「０」の場合には、対応するキャッシュラインの６４ビットデータが無効である。
【０１０８】
１つのキャッシュラインと、そのキャッシュラインに対応する分岐先命令アドレスと、そのキャッシュラインに対応するバリッドビットとが１つのエントリを構成する。
【０１０９】
入出力制御部２１０は、命令メモリ８に記憶されている分岐先命令をキャッシュデータメモリ２０９に登録する場合に、分岐先命令を指定するアドレスの下位の３個のビットを０とした第１のアドレスで指定される６４ビットの読出し単位データと、次の６４ビットの読出し単位データとを読み出す。入出力制御部２１０は、分岐先命令の先頭がキャッシュラインの先頭にくるように、読み出された１２８ビットのデータをシフトして、キャッシュラインに登録する。
【０１１０】
また、入出力制御部２１０は、第１のアドレスの下位３ビットを除いた部分をキャッシュラインを指定するタグアドレスとし、分岐先命令のアドレスの下位３ビットを読出し単位データ内の分岐先命令の位置を表わすアドレスとして分岐先命令アドレスメモリ２１１に記憶する。
【０１１１】
また、入出力制御部２１０は、キャッシュデータメモリ２０９から、指定されたキャッシュラインの６４ビットのデータを読み出す。
【０１１２】
アドレス比較器２１２は、分岐先命令アドレスメモリ２１１に記憶されているタグアドレス（Ａ３〜Ａ２４）と、分岐先命令のアドレスＪＡＤＤＲのうち下位３ビットを除くアドレスＪＡＤＤＲ［２４：３］とを比較する。
【０１１３】
Ｖビット制御部２１４は、Ｖビットメモリ２１３におけるバリッドビットＶ０の更新を制御する。
【０１１４】
図２１は、キャッシュデータメモリへの登録を説明するための図である。
入力制御部２１０は、シフタ６１を含み、シフタ６１は、分岐先命令のアドレスＪＡＤＤＲの下位３ビットの値だけ、命令メモリ８から読みだされた１２８ビットの読出しデータをシフトして、６４ビット幅のキャッシュラインに出力する。
【０１１５】
たとえば、分岐先命令のアドレスの下位３ビットが、「０００」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータをシフトせずに、６４ビット幅のキャッシュラインに登録する。
【０１１６】
分岐先命令のアドレスの下位３ビットが、「００１」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを８ビットだけ右シフトして６４ビットのキャッシュラインに登録する。同様に、分岐先命令のアドレスの下位３ビットが、「０１０」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを１６ビットだけ右シフトして６４ビットのキャッシュラインに登録する。分岐先命令のアドレスの下位３ビットが、「０１１」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを２４ビットだけ右シフトして６４ビットのキャッシュラインに登録する。分岐先命令のアドレスの下位３ビットが、「１００」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを３２ビットだけ右シフトして６４ビットのキャッシュラインに登録する。分岐先命令のアドレスの下位３ビットが、「１０１」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを４０ビットだけ右シフトして６４ビットのキャッシュラインに登録する。分岐先命令のアドレスの下位３ビットが、「１１０」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを４８ビットだけ右シフトして６４ビットのキャッシュラインに登録する。分岐先命令のアドレスの下位３ビットが、「１１１」の場合には、シフタ６１は、読み出された１２８ビットの読出しデータを５６ビットだけ右シフトして６４ビットのキャッシュラインに登録する。
【０１１７】
これによって、分岐先命令が最大（６４ビット長）であっても１つのキャッシュラインに登録することができる。
【０１１８】
図２２は、キャッシュデータメモリからの読出しを説明するための図である。
入力制御部２１０は、シフタ６２を含み、シフタ６２は、分岐先命令アドレスメモリ２１１に記憶されている分岐先命令の下位３ビット（Ａ０〜Ａ２）の値だけ、キャッシュデータメモリ２０９から読みだされた６４ビットのデータをシフトして、ＣＰＵコア４へ出力する。
【０１１９】
たとえば、分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「０００」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令をシフトせずに、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「００１」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を８ビットだけ左シフトして、ＣＰＵコア４へ出力する。同様に、分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「０１０」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を１６ビットだけ左シフトして、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「０１１」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を２４ビットだけ左シフトして、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「１００」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を３２ビットだけ左シフトして、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「１０１」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を４０ビットだけ左シフトして、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「１１０」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を４８ビットだけ左シフトして、ＣＰＵコア４へ出力する。分岐先命令のアドレスの下位３ビット（Ａ０〜Ａ２）が、「１１１」の場合には、シフタ６２は、キャッシュデータメモリ２０９から出力された分岐先命令を５６ビットだけ左シフトして、ＣＰＵコア４へ出力する。
【０１２０】
以上のように、本実施の形態によれば、データの入出力時に命令をシフトさせて格納することによって、第１〜第４の実施形態よりも分岐先命令を格納するキャッシュメモリの領域を削減することができる。
【０１２１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１２２】
その他、実施の形態に記載された内容の一部を以下に記載する。
（１）半導体装置は、ビット幅がＮビットであるメインメモリと、ビット幅がＮビットのキャッシュラインを有するキャッシュメモリとを備える。さらに、半導体装置は、前記メインメモリに記憶されているＭビット（Ｍ≦Ｎ）の命令を前記キャッシュメモリに登録する場合に、前記命令の先頭が含まれるＮビットの読出し単位データと後続のＮビットの読出し単位データとを読み出して、命令の先頭がキャッシュラインの先頭になるように、読出した２Ｎビットのデータをシフトして登録するキャッシュ制御部とを備える。
【符号の説明】
【０１２３】
１，１０１，２０１  半導体装置、２  ＣＰＵ、３  キャッシュメモリ、４  ＣＰＵコア、５  ＲＯＭ、６  ＣＩＦ、７  ＲＡＭ、８，１０８  命令メモリ、９，２０９  キャッシュデータメモリ、１０，１１０，２１０  入出力制御部、１１，１１１  タグメモリ、１２，２１２，５１２  アドレス比較器、１３，１１３，２１３  Ｖビットメモリ、１４，１１４，２１４  Ｖビット制御部、１５  ＬＲＵ、１６  ＬＲＵ制御部、１７  第１キュー、１８  第２キュー、１９，１１９  シーケンサ、８１  キャッシュ制御部、２１＿１〜２１＿Ｎ，２５＿１〜２５＿Ｎ  比較器、２４＿１〜２４＿Ｎ  加算器、２２＿１〜２２＿Ｎ，２６＿１〜２６＿Ｎ  論理積回路、６１，６２  シフタ、７０，９０  セレクタ、２３，２７，２８  論理和回路、２１１  分岐先命令アドレスメモリ。
【図１】
2014006685.tif 000003
【図２】
2014006685.tif 000004
【図３】
2014006685.tif 000005
【図４】
2014006685.tif 000006
【図５】
2014006685.tif 000007
【図６】
2014006685.tif 000008
【図７】
2014006685.tif 000009
【図８】
2014006685.tif 000010
【図９】
2014006685.tif 000011
【図１０】
2014006685.tif 000012
【図１１】
2014006685.tif 000013
【図１２】
2014006685.tif 000014
【図１３】
2014006685.tif 000015
【図１４】
2014006685.tif 000016
【図１５】
2014006685.tif 000017
【図１６】
2014006685.tif 000018
【図１７】
2014006685.tif 000019
【図１８】
2014006685.tif 000020
【図１９】
2014006685.tif 000021
【図２０】
2014006685.tif 000022
【図２１】
2014006685.tif 000023
【図２２】
2014006685.tif 000024