(57)【特許請求の範囲】
【請求項１】
内蔵メモリと、前記内蔵メモリに接続される内部バスと、前記内蔵メモリに対して前記内部バスを介してアクセスする内部バスマスタと、前記内部バスの動作を制御するバスインタフェースとを備えるマイクロプロセッサであって、
外部バスマスタ及び外部メモリが外部バスを介して前記マイクロプロセッサの外部に接続され、
前記マイクロプロセッサは前記内蔵メモリと前記外部メモリのデータを登録するキャッシュメモリを更に備え、
前記バスインタフェースは
（ａ）前記内部バスと等しい幅のバッファと、
前記外部バスマスタが指定する複数のアドレスが、前記バッファの容量で決まる所定のアドレス境界を跨ぐか否かを検出するアドレス比較器と、
前記複数のアドレスが前記アドレス境界を跨がない場合に、前記バッファに前記外部バスを介した前記外部バスマスタとアクセスさせる制御ブロックとを有し、
（ｂ）前記外部バスマスタからの内蔵メモリアクセス要求と前記内部バスマスタの内蔵メモリアクセス要求を調停し、
（ｃ）前記バッファと外部バスマスタとが前記外部バスを介してアクセスしている間は内部バスマスタからの前記内蔵メモリ及び前記キャッシュへのアクセス要求を受け付ける、マイクロプロセッサ。
【請求項２】
前記外部バスマスタが前記内蔵メモリをアクセスする場合と、前記内部バスマスタが前記外部メモリをアクセスする場合とで両者のアクセスを制御する制御信号が共用される、請求項１記載のマイクロプロセッサ。
【請求項３】
前記複数のアドレスが、前記アドレス境界を跨ぐ場合において、
前記外部バスマスタへと前記内蔵メモリからデータを読み出す場合には、当該データを前記内蔵メモリから前記バッファへと一旦格納し、
前記外部バスマスタから前記内蔵メモリへとデータを書き込む場合には、当該データを前記バッファに格納する前に、前記バッファに蓄えられたデータが前記内部メモリへと一旦放出される、請求項１記載のマイクロプロセッサ。
【請求項４】
前記内部バスマスタは、第１及び第２の内部バスマスタであって、
前記バスインタフェースは、前記第１の内部バスマスタの前記内部メモリに対するアクセス要求が有効である場合には前記第２の内部バスマスタの前記内部メモリに対するアクセス要求を無効にするメモリアクセス制御手段を有する、請求項１記載のマイクロプロセッサ。
【請求項５】
請求項１記載のマイクロプロセッサであって、
前記バスインタフェースは、前記内部バスマスタによる前記内蔵メモリ及び前記外部メモリに対するアクセス要求及び前記外部バスマスタによる前記内蔵メモリに対するアクセス要求、並びにキャッシュモードを指定する情報に基づいて前記キャッシュメモリのキャッシング対象を指定する登録信号を発生するマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はマイクロプロセッサに関し、特にメモリ及びキャッシュメモリを内蔵したマイクロプロセッサにおいて、そのメモリに外部からアクセスしたり、命令／データをキャッシュに登録したりするバスインタフェースに関する。
【０００２】
【従来の技術】
従来から、メモリを内蔵したマイクロプロセッサが知られている。例えば、図２７はＲＡＭを内蔵したマイクロプロセッサの構成を示すブロック図である。マイクロプロセッサ２０１はＣＰＵ１、内蔵ＲＡＭ２９、バス５９、及びバスインタフェースユニット（ＢＩＵ）３９を備えている。内蔵ＲＡＭ２９は例えばプログラムＲＡＭ（ＲＯＭを含む）であったり、データＲＡＭ（ＲＯＭを含む）であったりする。但し、１クロックでアクセスされ得るように、内蔵ＲＡＭ２９にはＳＲＡＭが使用されていた。内蔵ＲＡＭ２９のメモリ領域はアドレスで指定され、これへのアクセスは命令によって指示される。
【０００３】
またマイクロプロセッサ２０１の外部にはバス６０を介して外部メモリ４が設けられることもある。外部メモリ４には例えばＤＲＡＭが使用されており、これを制御するためにＤＲＡＭコントローラ、ＤＭＡＣ（ＤＭＡコントローラ）等がマイクロプロセッサ２０１に内蔵されている場合がある。
【０００４】
図２８はキャッシュメモリ（以下では単に「キャッシュ」とする）を内蔵したマイクロプロセッサの構成を示すブロック図である。マイクロプロセッサ２０２はＣＰＵ１、キャッシュ２８、バス５９、及びＢＩＵ３９を備えており、マイクロプロセッサ２０２の外部にはバス６０を介して外部メモリ４が設けられている。キャッシュ２８はマイクロプロセッサ２０２が使用する命令やデータを外部メモリ４からキャッシングする。
【０００５】
【発明が解決しようとする課題】
勿論、内蔵ＲＡＭ２９とキャッシュ２８との両方を内蔵し、キャッシュ２８が内蔵ＲＡＭ２９からキャッシングすることも可能である。しかし、内蔵ＲＡＭ２９はＲＯＭまたはＳＲＡＭで構成されており、１クロック程度でアクセスできるため、キャッシングする必要はなかった。
【０００６】
ＳＲＡＭは１セルの面積がＤＲＡＭに比べて大きく、大容量を集積することができない。そこでＣＰＵコアとＤＲＡＭを１チップに集積し、大容量のメモリを集積したマイクロプロセッサが必要となる。ここでＤＲＡＭはアクセススピードが遅く、メモリアクセスの時間がＣＰＵの性能を落とす大きな原因となる。
【０００７】
また、マイクロプロセッサに内蔵されたＣＰＵのみならず、外部にもバスマスタ（メモリに対してバスを介してアクセスすることができる制御手段）が存在する場合には、それぞれのバスマスタとメモリとの間の信号の伝達を別個に行えば、マイクロプロセッサに必要なピン数が増大してしまうという問題点がある。
【０００８】
本願ではかかる問題点を解決するものであり、ＤＲＡＭ及びキャッシュを内蔵し、大容量、低速のＤＲＡＭと小容量、高速のキャッシュを１チップに集積してＣＰＵの性能を引き出すことを目的とする。またそのキャッシングの態様を選択させることによりキャッシングするデータの種類を選ぶことができるマイクロプロセッサや、内蔵するメモリに対するバスマスタが外部に設けられても、あるいは外部メモリを接続し、ピン数を増大させないで内蔵メモリと外部メモリの使用方法（メインプログラム、データ等をどのメモリに格納するか）を変えることができるマイクロプロセッサや、バスマスタが内部に複数存在するマイクロプロセッサを提供することを目的とするものである。
【０００９】
【課題を解決するための手段】
この発明のうち請求項１にかかるものは、内蔵メモリと、前記内蔵メモリに接続される内部バスと、前記内蔵メモリに対して前記内部バスを介してアクセスする内部バスマスタと、前記内部バスの動作を制御するバスインタフェースとを備えるマイクロプロセッサである。そして外部バスマスタ及び外部メモリが外部バスを介して前記マイクロプロセッサの外部に接続される。前記マイクロプロセッサは前記内蔵メモリと前記外部メモリのデータを登録するキャッシュメモリを更に備える。前記バスインタフェースは（ａ）前記内部バスと等しい幅のバッファと、前記外部バスマスタが指定する複数のアドレスが、前記バッファの容量で決まる所定のアドレス境界を跨ぐか否かを検出するアドレス比較器と、前記複数のアドレスが前記アドレス境界を跨がない場合に、前記バッファに前記外部バスを介した前記外部バスマスタとアクセスさせる制御ブロックとを有し、（ｂ）前記外部バスマスタからの内蔵メモリアクセス要求と前記内部バスマスタの内蔵メモリアクセス要求を調停し、（ｃ）前記バッファと外部バスマスタとが前記外部バスを介してアクセスしている間は内部バスマスタからの前記内蔵メモリ及び前記キャッシュへのアクセス要求を受け付ける。
【００１０】
この発明のうち請求項２にかかるものは、請求項１記載のマイクロプロセッサであって、前記外部バスマスタが前記内蔵メモリをアクセスする場合と、前記内部バスマスタが前記外部メモリをアクセスする場合とで両者のアクセスを制御する制御信号が共用される。
【００１１】
この発明のうち請求項３にかかるものは、請求項１記載のマイクロプロセッサであって、前記複数のアドレスが、前記アドレス境界を跨ぐ場合において、前記外部バスマスタへと前記内蔵メモリからデータを読み出す場合には、当該データを前記内蔵メモリから前記バッファへと一旦格納し、前記外部バスマスタから前記内蔵メモリへとデータを書き込む場合には、当該データを前記バッファに格納する前に、前記バッファに蓄えられたデータが前記内部メモリへと一旦放出される。
【００１２】
この発明のうち請求項４にかかるものは請求項１記載のマイクロプロセッサであって、前記内部バスマスタは第１及び第２の内部バスマスタであって、前記バスインタフェースは、前記第１の内部バスマスタの前記内部メモリに対するアクセス要求が有効である場合には前記第２の内部バスマスタの前記内部メモリに対するアクセス要求を無効にするメモリアクセス制御手段を有する。
【００１３】
この発明のうち請求項５にかかるものは請求項１記載のマイクロプロセッサであって、前記バスインタフェースは、前記内部バスマスタによる前記内蔵メモリ及び前記外部メモリに対するアクセス要求及び前記外部バスマスタによる前記内蔵メモリに対するアクセス要求、並びにキャッシュモードを指定する情報に基づいて前記キャッシュメモリのキャッシング対象を指定する登録信号を発生する。
【００１４】
【発明の実施の形態】
実施の形態１．
図１は本発明の実施の形態１にかかるマイクロプロセッサの構成の概要を示すブロック図である。マイクロプロセッサ１０１はＤＲＡＭ２７、キャッシュ２８、ＣＰＵ１、命令キュー（ＩＱ）８、セレクタ７、積和演算部（ＭＡＣ：Multiply and ACcumulater）６、ＢＩＵ３、ＰＬＬ１１を有している。
【００１５】
ＣＰＵ１は例えば３２ビットのデータを取り扱うＲＩＳＣ型マイクロプロセッサコアであり、命令長は１６ビットあるいは３２ビットである。ＩＱ８は例えば１２８ビット×２エントリの構成を有しており、バスＩＤ〈０：１２７〉から命令を入力し、１６ビットまたは３２ビットの態様でバスＩ＜０：３１＞を介してＣＰＵ１に転送する。
【００１６】
図２は命令の構成を例示する模式図である。アドレス境界をまたぐ命令は許されないので、命令の配置としては図２に示されるように２通りしかない。
【００１７】
セレクタ７はバスＩＤ〈０：１２７〉に載る１２８ビットのデータのうち、必要な３２ビット分のみを選択してＣＰＵ１に転送したり、ＣＰＵ１から出力された３２ビットのデータをバスＩＤ〈０：１２７〉において適切な位置に出力する。これらの３２ビットのデータの伝達はバスＤＯ＜０：３１＞を介して行われる。ＭＡＣ６は例えば３２ビット×１６ビット＋５６ビットの積和演算を１クロックで処理し、ＣＰＵ１に付随して設けられる。
【００１８】
キャッシュ２８は例えばＳＲＡＭや４Ｋバイトのライトバックキャッシュで構成され、ライトバック（write back）方式では、書き込みがキャッシュに対してだけ行われ、キャッシュで変更されたデータは置き換えの対象となったときに主たる記憶装置に書き込まれる方式が採用される。ＴＡＧ部を有し、ここにはキャッシングすべきデータのアドレスの一部（ｔａｇ）とｖａｌｉｄビット、ｄｉｒｔｙビットが保持される。データがキャッシュ２８に登録（fill）されるとｖａｌｉｄビットがセットされ、登録されている領域に新たなデータがストアされればｄｉｒｔｙビットがセットされる。キャッシュヒットした場合には１クロックでデータを引き出すことができる。ＤＲＡＭ２７は例えば２Ｍｂｙｔｅの容量を有する。
【００１９】
１２８ビットの容量を有するライトバッファ５を介してセレクタ７が、またＤＲＡＭ２７、キャッシュ２８、ＩＱ８が、それぞれバスＩＤ〈０：１２７〉に接続されている。このバスＩＤ〈０：１２７〉と、マイクロプロセッサ１０１とその外部（例えば外部メモリ４、外部バスマスタ４１）とを結ぶデータバスＤ＜０：１５＞との間にＢＩＵ３が設けられている。マイクロプロセッサ１０１と、外部メモリ４、外部バスマスタ４１とはアドレスバス５８、制御バス５６，５７によっても結ばれている。
【００２０】
ＢＩＵ３はマイクロプロセッサが内蔵するメモリや、その外部に接続されるメモリに対するアクセスを制御する。１６ビットのバスＤ＜０：１５＞と１２８ビットのバスＩＤ〈０：１２７〉との整合を採るために、ＢＩＵ３は１２８ビットのバッファ３０１を有している。またＢＩＵ３はバッファ３０１とバスＩＤ〈０：１２７〉との間に介在するＩＤバスドライバ３０２をも有しており、その動作は制御ブロック３０３によって制御される。制御ブロック３０３はＤＲＡＭ２７、キャッシュ２８に対して書き込み／読み出し指令（信号Ｒ／Ｗバー）、登録指令を与える機能をも有する。
【００２１】
ＰＬＬ１１はマイクロプロセッサの動作クロックを生成する。例えば内部ＣＰＵ等の動作に入力クロックを４逓倍したクロックを生成し、外部とのアクセス用に入力クロックと同じ周波数のクロックを生成する。
【００２２】
図３（ａ）〜（ｄ）は、命令の処理を示す模式図である。命令はパイプライン制御で処理される。パイプライン制御は、例えば命令フェッチ（ＩＦ）、命令デコード（Ｄ）、実行（Ｅ）、メモリアクセス（ＭＥＭ）、汎用レジスタへのライトバック（ＷＢ）の５段階で構成される。
【００２３】
ＣＰＵ１はＲＩＳＣ型のアーキテクチャを有し、メモリに対するオペランドアクセスはｌｏａｄ／ｓｔｏｒｅ系の命令のみで発生する。図３（ａ）はｌｏａｄ命令でオペランドがキャッシュヒットし、メモリに存在したデータが１サイクルで転送できた場合を示す。同図（ｂ）はメモリに存在したデータのアクセスに複数クロックかかった場合を示す。同図（ｃ）はメモリに対するアクセスを発生しない命令の場合を示す。同図（ｄ）は実行に複数のクロックを要する命令、例えば乗算命令や除算命令の場合を示す。
【００２４】
（１）命令／データの転送．
ＣＰＵ１がフェッチする命令がキャッシュ２８にヒットした場合は、キャッシュ２８からクロック１サイクル分でバスＩＤ〈０：１２７〉を介してＩＱ８に転送される。
【００２５】
ＣＰＵ１がフェッチする命令がＤＲＡＭ２７にある場合は、１回のアクセス（例えばクロック５サイクル分を要する）でＤＲＡＭからバスＩＤ〈０：１２７〉を介してＩＱ８に転送される。
【００２６】
ＣＰＵ１がフェッチする命令が外部メモリ４にある場合は、バースト転送で外部メモリ４からフェッチし、ＢＩＵ３のバッファ３０１に順番に蓄えられる。バッファ３０１がフルになると（１２８ビット分の命令が蓄えられると）ＩＱ８に１２８ビット分の命令が転送される。またこの命令をキャッシングする場合は同時にキャッシュ２８にも転送される。
【００２７】
図４は例えばＩＱ８が２エントリ×１２８ビットの容量を有している場合の命令の転送を示すブロック図である。ＤＲＡＭ２７（或いはキャッシュ２８）からも、１２８ビットの容量を有するバッファ３０１からも命令が転送される様子が示されている。
【００２８】
図５は、ＣＰＵ１がすぐに命令を必要としている場合（ＩＱ８が空の場合）に、命令が外部メモリ４から転送される様子を示すブロック図である。ＢＩＵ３の有する制御ブロック３０３は、ＣＰＵ１から命令をフェッチする要求を示す信号ＩＦｅｔｃｈを入力し、これがアサートされると外部メモリ４に対してバススタート信号ＢＳバーをアサートする（バススタート信号ＢＳバーは例えば図１に示された制御バス５６によって伝達される）。この後、ＢＩＵ３の有するバッファ３０１にはバスＤ＜０：１５＞を介して命令が転送される。ＩＱ８から制御ブロック３０３に伝達される、ＩＱ８が空の状態を示す信号ＩＱｅｍｐｔｙがアサートされれば、ＩＤバスドライバ３０２に対してドライブ信号及びドライブサイズ信号が制御ブロック３０３から与えられる。
【００２９】
ドライブサイズ信号は１６ビットで構成され、バッファ３０１に蓄えられる１２８ビットのデータは１６個の８ビットのデータとして把握され、８ビット単位で必要な情報が指定される。そしてドライブ信号に基づいて、この指定された情報がバスＩＤ＜０：１２７＞に転送される。例えばドライブサイズ信号の２ビット分が活性化し、８×２＝１６ビット分がバスＩＤ〈０：１２７〉を通ってＩＱ８へと転送される。ＣＰＵ１が更に命令のフェッチを要求すれば、更に１６ビットがＩＱ８に転送される。その後、ＣＰＵ１がすぐに命令を必要としなくなれば（信号ＩＱｅｍｐｔｙがネゲート）、外部メモリ４からバースト転送されてきたデータがバッファ３０１をフルにし、その後にＩＱ８へ転送される。制御ブロック３０３には外部メモリ４から制御バス５６を介してデータ転送完了信号ＤＣバーも受ける。
【００３０】
勿論、ＩＱ８が空か否かのチェックをせず、常に最初の命令のみを先に転送し、バッファ３０１がフルになれば１２８ビットをキャッシュ２８へと転送して書き込んでもよい。
【００３１】
図１に戻り、ＣＰＵ１がデータをリードする場合、ＤＲＡＭ２７またはキャッシュ２８にデータが存在すれば、必要なデータを含む１２８ビットがバスＩＤ〈０：１２７〉を介してセレクタ７に転送される。セレクタ７では必要な３２ビットのデータをＣＰＵ１に送る。必要なデータが外部メモリ４にある場合には、バッファ３０１に３２ビットのデータが蓄えられ、これがバスＩＤ〈０：１２７〉を通ってＣＰＵ１に転送される。
【００３２】
データのサイズは８ビット／１６ビット／３２ビットの３種類があり、外部メモリから読み出す際、３２ビットの場合は外部アクセスが２回必要となり、８ビット／１６ビットの場合は１回のアクセスでバッファ３０１からバスＩＤ〈０：１２７〉を介してＣＰＵ１に転送される。
【００３３】
ＣＰＵ１が３２ビットのデータをメモリ（ＤＲＡＭ２７或いはキャッシュ２８）に書き込む場合、対応するバスＩＤ〈０：１２７〉の対応する位置にセレクタ７がこのデータを出力する。この際、ライトバッファ５に書き込むべきデータを蓄えてから転送することもできる。つまり、ライトバッファ５からはバスＩＤ〈０：１２７〉が空いているときにデータが転送される。外部メモリ４に出力する場合はバッファ３０１にいったんラッチされ、１６ビットずつバスＤ＜０：１５＞に出力されることになる。
【００３４】
（２）外部バスマスタからマイクロプロセッサの内蔵するＤＲＡＭへのアクセス．
マイクロプロセッサ１０１の内蔵するＤＲＡＭ２７はＣＰＵ１だけでなく外部のバスマスタからも、マイクロプロセッサ１０１の命令とは無関係に直接アクセスすることができる。バスマスタはバスを介してメモリにアクセス可能なものであり、例えばＤＭＡＣ（Direct Memory Access Controler）やプロセッサ、メモリコントローラなどが挙げられる。
【００３５】
図１に示されるように外部バスマスタ４１はデータバスＤ＜０：１５＞、アドレスバス５８、制御バス５７を介してマイクロプロセッサ１０１と接続される。外部バスマスタ４１はマイクロプロセッサ１０１に対してアクセス要求を出し、受け付けられるとＤＲＡＭ２７に対して直接アクセスすることができる。以下に、ＣＰＵ１および外部バスマスタ４１がＤＲＡＭ２７と外部メモリ４をアクセスする際の各アクセスのプロトコルについて説明する。
【００３６】
（２−ａ）ＣＰＵ１がＤＲＡＭ２７をアクセスする場合：
従来から行われているプロトコルであり、まず▲１▼ＣＰＵ１からのアクセス要求が出され、これに対して▲２▼ＢＩＵ３が許可をし、▲３▼ＢＩＵ３の制御でＩＤ〈０：１２７〉バスを使ってＤＲＡＭ２７のデータがＣＰＵ１に転送される。
【００３７】
（２−ｂ）ＣＰＵ１が外部メモリ４からデータを読み出す場合：
図６はＣＰＵ１が外部メモリ４からデータを読み出す場合のプロトコルを示すタイミングチャートである。クロックは入力クロックを示す。まず○１ＣＰＵ１からＢＩＵ３へアクセス要求が出され、○２ＢＩＵ３からＣＰＵ１へアクセス許可が送られる。そして○３制御バス５６を介してＢＩＵ３から外部メモリ４へ送られるバススタート信号ＢＳバーがアサートし、リードライト信号Ｒ／Ｗバーが外部メモリ４にリード動作を要求し、バイトコントロール信号ＢＣ（バスＤ＜０：１５＞に伝達される２つの８ビット（＝１バイト）の信号の一方または両方を指定する信号）の値が決定される。また、アドレスバス５８を介してアドレスＡ１，Ａ２，Ａ３がマイクロプロセッサ１０１から出力される。アドレスＡ１，Ａ２，Ａ３に対応して、バイトコントロール信号ＢＣは変化しても良い。
【００３８】
マイクロプロセッサ１０１からのアクセス要求を受けて、▲４▼外部メモリ４はアドレスＡ１，Ａ２，Ａ３に対応する読み出しデータＤ１，Ｄ２，Ｄ３をバスＤ＜０：１５＞に伝達させ、その度にデータ転送完了信号ＤＣバーがアサートされる。そして▲５▼データＤ１，Ｄ２，Ｄ３がバスＩＤ〈０：１２７〉を介してＣＰＵ１へ転送される。
【００３９】
（２−ｃ）ＣＰＵ１が外部メモリ４にデータを書き込む場合：
図７はＣＰＵ１が外部メモリ４にデータを書き込む場合のプロトコルを示すタイミングチャートである。工程▲１▼，▲２▼は（２−ｂ）と同様である。そして▲３▼ＣＰＵ１からバスＩＤ〈０：１２７〉を介して書き込まれるべきデータ（書き込みデータ）がＢＩＵ３へ転送される。更に▲４▼バススタート信号ＢＳバーがアサートし、リードライト信号Ｒ／Ｗバーが外部メモリ４に書き込み動作を要求し、バイトコントロール信号ＢＣの値が決定される。アドレスＡ１，Ａ２，Ａ３がアドレスバス５８を介して、またこれらに対応する書き込みデータＤ１，Ｄ２，Ｄ３がバスＤ＜０：１５＞を介して、それぞれマイクロプロセッサ１０１から出力される。
【００４０】
マイクロプロセッサ１０１からのアクセス要求を受けて、▲５▼外部メモリ４にデータＤ１，Ｄ２，Ｄ３が書き込まれ、その度にデータ転送完了信号ＤＣバーがアサートされる。
【００４１】
（２−ｄ）外部バスマスタ４１からＤＲＡＭ２７にデータを書き込む場合：
図８は外部バスマスタ４１からＤＲＡＭ２７にデータを書き込む場合のプロトコルを示すタイミングチャートである。まず▲１▼外部バスマスタ４１からの受け付け要求を示すHalt Request信号ＨＲＥＱバーがアサートする。これに対応してマイクロプロセッサ１０１から受付を許可するHREQ Acknowledge信号ＨＡＣＫバーがアサートする。そして外部バスマスタ４１からチップセレクト信号ＣＳバーがアサートする。これらは制御バス５７を介してマイクロプロセッサ１０１と外部バスマスタ４１との間を伝達する。
【００４２】
次いで▲２▼外部バスマスタ４１からマイクロプロセッサ１０１へと伝達されるリードライト信号Ｒ／ＷバーがＤＲＡＭ２７に対して書き込み動作を要求し、アドレスＡ１，Ａ２，Ａ３及びこれらに対応する書き込みデータＤ１，Ｄ２，Ｄ３がマイクロプロセッサ１０１へと伝達される。そして▲３▼マイクロプロセッサ１０１からデータ転送完了信号ＤＣバーがアサートされる。
【００４３】
図９は外部バスマスタ４１によるアクセスが終了する場合を示すタイミングチャートである。▲４▼チップセレクト信号ＣＳバー、Halt Request信号ＨＲＥＱバーがネゲートし、▲５▼マイクロプロセッサ１０１の受け付けも終了する（HREQ Ack信号ＨＡＣＫバーがネゲートする）。
【００４４】
図１０は、バッファ３０１の構成を示すブロック図である。バッファ３０１は１２８ビットの容量を有する一方、データバスＤ＜０：１５＞が１６ビットのビット幅を有する。よってバッファ３０１は容量が１６ビットの８個のラッチ３０１ａ〜３０１ｈと、それぞれに対応するセレクタ３０１ｐ〜３０１ｗとを有しており、外部バスマスタ４１の与えるアドレスの値に応じて、バスＤ＜０：１５＞に載るデータをラッチ３０１ａ〜３０１ｈに格納する。
【００４５】
例えば一つのアドレスに対して指定されるデータの幅は８ビットであり、一つのラッチにはアドレス２つ分のデータが格納できる。つまり、一対の隣接するアドレスに対応するデータが同一のラッチに格納されることになる。このような動作を実現するため、バッファ３０１はセレクタ制御部３０１ｘを更に有しており、これがアドレスの下位４ビットの内、最下位ビットを除く３ビットの値に基づいてセレクタ３０１ｐ〜３０１ｗにそれぞれセレクタ制御信号Ｂ０〜Ｂ７を与える。セレクタ制御信号Ｂ０〜Ｂ７は択一的に活性化し、バスＤ＜０：１５＞に載った８ビットのデータをラッチ３０１ａ〜３０１ｈのいずれかに格納する。
【００４６】
（２−ｅ）外部バスマスタ４１がＤＲＡＭ２７からデータを読み出す場合：
図１１は外部バスマスタ４１がＤＲＡＭ２７からデータを読み出す場合のプロトコルを示すタイミングチャートである。工程▲１▼は（２−ｄ）と同様である。そして▲２▼外部バスマスタ４１からマイクロプロセッサ１０１へと伝達されるリードライト信号Ｒ／ＷバーがＤＲＡＭ２７に対して読み出し動作を要求し、アドレスＡ１，Ａ２，Ａ３がマイクロプロセッサ１０１へと伝達される。そして▲３▼これらに対応するデータＤ１，Ｄ２，Ｄ３が読み出され、マイクロプロセッサ１０１からこれらが出力され、データ転送完了信号ＤＣバーがアサートされる。工程▲４▼，▲５▼も（２−ｄ）と同様である。
【００４７】
外部バスマスタ４１とバッファ３０１がバスＤ＜０：１５＞を介してリード／ライトしている場合に、ＣＰＵ１のキャッシュ２８、ＤＲＡＭ２７に対するアクセスをＢＩＵ３は受け付ける。外部バスマスタ４１がＤＲＡＭ２７をリードする場合、ＤＲＡＭ２７のデータ、若しくはキャッシュヒット下場合にはキャッシュ２８のデータがバッファ３０１へ転送される。バッファ３０１は１２８ビット、バスＤ＜０：１５＞は１６ビットであり、外部バスマスタ４１の要求がバッファ３０１内のいくつかのデータ読み出しである場合はバスＩＤ〈０：１２７〉は使用されない。このため、例えばＣＰＵ１がＤＲＡＭ２７から命令をフェッチしたいときにはＢＩＵ３はこの要求を受け付け、バスＩＤ〈０：１２７〉を介してＤＲＡＭ２７（キャッシュヒットした場合にはキャッシュ２８）から命令を転送する。
【００４８】
外部バスマスタ４１がＤＲＡＭ２７にライトする場合も同様に、バッファ３０１にデータを蓄積中はバスＩＤ〈０：１２７〉を使用して、ＣＰＵ１、ＤＲＡＭ２７、キャッシュ２８の間のデータの転送をすることができる。図２３は外部バスマスタ４１からのリードとＣＰＵ１のリードアクセス要求の様子を示すタイミングチャートである。外部バスマスタ４１から指定されたアドレスＡ１，Ａ２，Ａ３がアドレス境界を越えず（アドレス同士が所定の範囲内に存在する場合であり、詳細は（２−ｆ）で後述する）、それぞれに対応するデータＤ１，Ｄ２，Ｄ３が一度に読み出され（ＤＲＡＭ（キャッシュ）アクセス要求の左端のアサート）、バスＩＤ〈０：１２７〉に載り、その後バッファ３０１に蓄積される。
【００４９】
この後はバスＩＤ〈０：１２７〉が未使用となっているので、ＣＰＵからのアクセス要求に対してＤＲＡＭアクセス要求がアサートし（真ん中に位置するアサート）、この要求に対応したデータＤ＿ＣＰＵが読み出されてバスＩＤ〈０：１２７〉に載る。一方、バッファ３０１から外部バスマスタ４１へのデータＤ１，Ｄ２，Ｄ３の転送が行われることになる。
【００５０】
そしてアドレスＡ１，Ａ２，Ａ３に対してアドレス境界を越えたアドレスＡ５についてのＤＲＡＭ（キャッシュ）アクセス要求がアサートし（右端に位置するアサート）、これに対応するデータＤ５が読み出されてバスＩＤ〈０：１２７〉に載り、バッファ３０１へと蓄積される。
【００５１】
後述する図２２に示された外部アクセス制御回路３０３ｇではアドレス比較結果とアクセス種類検出結果、リフレッシュ要求を受けて、外部アクセス要求及び内部バス未使用信号を生成する。この内部バス未使用信号は外部バスアクセスに内部バスを使用していない状態、または外部バスマスタ４１のアクセスアドレスがアドレス境界を跨がないアクセスの処理中であり、内部バスが未使用であることを示す。この信号がアサートされている間はＣＰＵ１のアクセス要求を受けてＤＲＡＭ２７、キャッシュ２８がアクセスされる。
【００５２】
（２−ｆ）外部バスマスタ４１の与えるアドレスが、アドレス境界を超える場合の外部バスマスタからＤＲＡＭ２７への書き込み：
図１０を用いて説明されたように、下位４ビットが連続するアドレスに対応する１６個の８ビット幅のデータはバッファ３０１に格納される。しかし、例えばアドレスが２４ビット幅であるとすると、上位２０ビットが同一であればこれらの１６個×８ビット＝１２８ビットのデータをまとめてＤＲＡＭ２７に転送しても良いが、アドレスの上位２０ビットが異なっている場合にこれらをまとめて転送することは、誤ったアドレスにデータを与えることとなり、回避されなければならない。つまり、外部バスマスタ４１のアドレスの値が１６ビットの境界（データに換算すれば１６×８＝１２８ビットの境界：本明細書では単に「アドレス境界」ともいう）を越える場合には、それまでバッファ３０１が蓄えていたデータを一旦放出する必要がある。
【００５３】
図１２はかかる動作を行う為の手段を示すブロック図であり、マイクロプロセッサ１０１はアドレスバッファ５１と、アドレス比較器５２とを更に備えている。アドレスバッファ５１はアドレスバス５８から２４ビット幅のアドレスの上位２０ビットを受け、常に現在のアドレスの一つ前のアドレスの上位２０ビットを出力する。アドレス比較器５２はアドレスバッファ５１の出力を、現在のアドレスの上位２０ビットと比較する。
【００５４】
両者が一致すれば、外部バスマスタ４１のアドレスの値が１６ビットのアドレス境界を越えていないので、バッファ３０１に対するデータの格納は引き続いて行われる。しかし一致しない場合には、バッファ３０１に対して、現在格納しているデータをバスＩＤ＜０：１２７＞を介してＤＲＡＭ２７に転送するように制御する。この際、制御ブロック３０３はＤＲＡＭ２７に対してＤＲＡＭ２７が書き込み動作をするようにリードライト信号Ｒ／Ｗバーを与える。
【００５５】
図１３は上記の動作を示すタイミングチャートである。アドレスＡ１〜Ａ４の上位２０ビットは同一であり、アドレスＡ５の上位２０ビットがこれと異なる場合が想定されている。バッファ３０１はアドレスＡ１〜Ａ４に対応するデータＤ１〜Ｄ４を格納していたが、アドレスＡ５が与えられた時点で（アドレス境界を越えた時点で）バスＩＤ＜０：１２７＞にはこれらのデータＤ１〜Ｄ４が一挙に与えられる。なお、チップセレクト信号ＣＳバーがアサートしている間は信号ＨＲＥＱバーＨＡＣＫバーがアサートしている。
【００５６】
その後、ＤＲＡＭ２７に対するアクセス要求がアサートし、これらのデータがＤＲＡＭ２７に書き込まれ、制御ブロック３０３から外部バスマスタ４１へ与えられるデータ転送完了信号ＤＣバーがネゲートする（時刻ｔ４〜ｔ５）。
【００５７】
そして、アドレスＡ５に対応するデータＤ５がバッファ３０１に格納され、外部バスマスタ４１からのアクセス要求が終了した時点（チップセレクト信号ＣＳバーがネゲート）で、バッファ３０１の格納していたデータＡ５がバスＩＤ〈０：１２７〉を介してＤＲＡＭ２７に転送される（データ転送完了信号ＤＣバーがアサート、その後、ＤＲＡＭ２７に対するアクセス要求がネゲート：時刻ｔ５〜ｔ６）。
【００５８】
（２−ｇ）外部バスマスタ４１の与えるアドレスが、アドレス境界を超える場合の外部バスマスタ４１のＤＲＡＭ２７からの読み出し：
図１４は外部バスマスタ４１がＤＲＡＭ２７からデータを読み出す場合に、そのアドレスの上位２０ビットが変動した場合（アドレス境界を越えた場合）の動作を示すタイミングチャートである。外部バスマスタ４１のリード要求（チップセレクト信号ＣＳバーがアサートし、リードライト信号Ｒ／Ｗバーが読み出しを示す）がなされる。
【００５９】
ＤＲＡＭ２７に対するアクセス要求がアサートし、いずれも上位２０ビットが等しい２４ビットのアドレスＡ１，Ａ２，Ａ３のそれぞれに対応するデータＤ１，Ｄ２，Ｄ３がバスＩＤ＜０：１２７＞に与えられる（時刻ｔ０〜時刻ｔ１）。但し、アドレスＡ５はその上位２０ビットがアドレスＡ１，Ａ２，Ａ３とは異なるので、時刻ｔ１においてはまだバスＩＤ＜０：１２７＞には載っていない。データ転送完了信号ＤＣバーがアサートした状態のまま、データＤ１，Ｄ２，Ｄ３がバッファ３０１を介して外部へと転送される。ＤＲＡＭ２７に対するアクセス要求は一旦ネゲートする（時刻ｔ１）。
【００６０】
アドレスＡ５が外部バスマスタ４１へと転送される際、アドレス境界を越えることになるので、一旦データ転送完了信号ＤＣバーがネゲートし、ＤＲＡＭ２７に対するアクセス要求が再度アサートする（時刻ｔ２）。そしてバスＩＤ＜０：１２７＞にはＤＲＡＭ２７からアドレスＡ５に対応するデータＤ５が与えられ、これがバッファ３０１に格納される。その一方でデータＤ５が外部に転送されればアクセス要求が終了する（チップセレクト信号ＣＳバーがネゲート。時刻ｔ３）。
【００６１】
大まかに言えば、最大１２８ビットのデータがＤＲＡＭ２７から読み出され、バッファ３０１に格納される（例えば上記データＤ１，Ｄ２，Ｄ３）。データは外部バスマスタ４１から要求されるアドレスの値に応じ、対応する１６ビット（一つのラッチが格納するアドレス２つ分）のデータを出力する。外部バスマスタ４１から要求されるアドレスがアドレス境界を越えた場合に、新しいデータ（例えば上記データＤ５）がＤＲＡＭ２７からバッファ３０１に転送され、外部バスマスタへ１６ビットずつ出力される。
【００６２】
以上の様に、本実施の形態にかかるマイクロプロセッサによれば、内蔵するＤＲＡＭ２７を自身のＣＰＵ１のみならず、外部バスマスタ４１によってもアクセスすることができ、またＣＰＵ１によって外部メモリ４にアクセスすることもできる。しかも、リードライト信号Ｒ／Ｗバーやバイトコントロール信号ＢＣを共用できるので、必要なピン数が増大してしまうということはない。
【００６３】
また、内部のデータバスＩＤ＜０：１２７＞と外部のデータバスＤ＜０：１５＞とのビット幅が異なっていても、バッファ３０１を制御することで、データを内部に転送することができる。
【００６４】
また、アドレスが所定のアドレス境界を越えても、誤ったデータの転送が行われることを回避できる。
【００６５】
実施の形態２．
実施の形態２では各種モードの変更のしかたについて説明される。図１５はマイクロプロセッサ１０１のアドレス空間を示す模式図である。論理アドレスは１６進の３２ビットの数（３２／ｌｏｇ2 １６＝８桁）で表される。ユーザー空間としての論理空間００００００００〜８０００００００番地（ＳＩＤ＝０）のうち、マイクロプロセッサ１０１に内蔵されるＤＲＡＭ２７の物理空間として００００００００〜００１ＦＦＦＦＦ番地が割り当てられる。また、外部メモリ４の為の空間として００２０００００〜００ＦＦＦＦＦＦ番地が割り当てられる。よってこれら２つのメモリに対するアドレス空間は、（２）で説明されたような２４ビットのアドレス（論理アドレスの下位６桁）で指定され得ることになる。
【００６６】
また、ユーザー用のＩ／Ｏ空間としてＦＦ００００００〜ＦＦ７ＦＦＦＦＦ番地が、ＩＣＥ（In Circuit Emulator）用空間としてＦＦ８０００００〜ＦＦＢＦＦＦＦＦ番地が、そしてＦＦＣ０００００〜ＦＦＦＦＦＦＦＦ番地において内蔵制御レジスタの為の物理空間が、それぞれ割り当てられる。これらの割当は、Ｉ／Ｏ空間（ＳＩＤ＝１）において行われている。
【００６７】
図１６は内蔵制御レジスタのアドレス空間の一部を示す模式図である。番地ＦＦＦＦＦＦＦ４，ＦＦＦＦＦＦＦ８，ＦＦＦＦＦＦＦＣにおいて、それぞれキャッシュパージ制御、ＤＲＡＭリフレッシュ制御、メモリ制御の為のデータＭＳＰＲ，ＭＤＲＲ，ＭＣＣＲ（各１バイト）が格納される。
【００６８】
図１７は各データＭＳＰＲ，ＭＤＲＲ，ＭＣＣＲの構成の詳細を示す模式図である。データＭＳＰＲの第７番目のビットにはパージ制御を行うか否かを示す１ビットの値が、データＭＤＲＲの第７番目のビットにはリフレッシュ制御を行うか否かを示す１ビットの値が、データＭＣＣＲの第６番目及び第７番目のビットにはキャッシュモードの種類を示す２ビットの値が、それぞれ格納される。
【００６９】
以下の実施の形態では、これらの各データＭＳＰＲ，ＭＤＲＲ，ＭＣＣＲに基づく制御について説明する。
【００７０】
（３）キャッシュモードの変更：
上記データＭＣＣＲに基づいて制御を行うことにより、マイクロプロセッサ１０１はキャッシングするデータの種類に従って、キャッシュモードを切り替えることができる。例えばキャッシュモードとしては以下のモードを考えることができる。
【００７１】
i)キャッシュオフモード；キャッシングしないモードである。
ii)全メモリ共用キャッシュモード；ＣＰＵ１が外部メモリ４、ＤＲＡＭ２７に対してアクセスした命令／データおよび外部バスマスタ４１がＤＲＡＭ２７に対して読み／書きしたデータをキャッシングするモードである。
iii)共用キャッシュモード；外部メモリ４、ＤＲＡＭ２７を問わず、ＣＰＵ１がアクセスした命令／データをキャッシングするモードである。
iV)命令キャッシュモード；外部メモリ４、ＤＲＡＭ２７を問わず、ＣＰＵ１がアクセスした命令をキャッシングするモードである。
V)データキャッシュモード；外部メモリ４、ＤＲＡＭ２７を問わず、ＣＰＵ１がアクセスしたデータをキャッシングするモードである。
vi)内部共用キャッシュモード；ＤＲＡＭ２７にあってＣＰＵ１がアクセスした命令／データをキャッシングするモードである。
vii)内部命令キャッシュモード；ＤＲＡＭ２７にあってＣＰＵ１がアクセスした命令をキャッシングするモードである。
viii)内部データキャッシュモード；ＤＲＡＭ２７にあってＣＰＵ１がアクセスしたデータをキャッシングするモードである。
ix)外部共用キャッシュモード；外部メモリ４にありＣＰＵ１がアクセスした命令／データをキャッシングするモードである。
x)外部命令キャッシュモード；外部メモリ４にありＣＰＵ１がアクセスした命令をキャッシングするモードである。
xi)外部データキャッシュモード；外部メモリ４にありＣＰＵ１がアクセスしたデータをキャッシングするモードである。
xii)外部メモリキャッシュモード；外部メモリ４にありＣＰＵ１がアクセスした命令／データおよび外部バスマスタ４１がＤＲＡＭ２７に書き込んだデータをキャッシングするモードである。
xiii)内部メモリキャッシュモード；ＤＲＡＭ２７にあってＣＰＵ１がアクセスした命令／データおよび外部バスマスタ４１がＤＲＡＭ２７から読み出したデータをキャッシングするモードである。
xiv)外部バスマスタキャッシュモード；外部バスマスタ４１がＤＲＡＭ２７に対して読み／書きしたデータをキャッシングするモードである。
データＭＣＣＲの第６番目及び７番目のビットに格納される２ビットの値を参照することにより、これらのキャッシュモードの中から、i)キャッシュオフモードと、vi)内部共用キャッシュモードと、x)外部命令キャッシュモードと、iV)命令キャッシュモードの４種類を選択することができる。
【００７２】
図１８は制御ブロック３０３の構成の一部を示すブロック図である。図１５を用いて示されたようにＤＲＡＭ２７と外部メモリ４とのアドレス空間は区分されるので、アドレスデコーダ３０３ｂによって、両者の何れがアクセスの対象となるのかが判別される。その判別結果はアクセス種類検出回路３０３ｄに与えられる。また、アクセス主体判定部３０３ｃは、アクセスの主体がＣＰＵ１であるのか、外部バスマスタ４１であるのかを判定し、その結果をアクセス種類検出回路３０３ｄに与える。
【００７３】
アクセス種類検出回路３０３ｄは、アドレスデコーダ３０３ｂの判別結果及びアクセス主体判定部３０３ｃの判定結果に基づいて、バスＩＤ＜０：１２７＞に載った信号は、何が要求する命令であるのか、あるいはデータであるのか等の情報Ｃ３をキャッシュアクセス制御回路３０３ｅに与える。
【００７４】
一方キャッシュモードデコード回路３０３ａは、データＭＣＣＲの下位２ビットの値に基づいて、如何なるキャッシュモードが要求されるかについての情報Ｃ１をキャッシュアクセス制御回路３０３ｅに対して与える。キャッシュアクセス制御回路３０３ｅは情報Ｃ１，Ｃ３に基づいて、ＤＲＡＭ２７のデータをキャッシングするのか（vi)内部共用キャッシュモード）、外部メモリ４の命令をキャッシングするのか（x)外部命令キャッシュモード）、外部メモリ４、ＤＲＡＭ２７を問わず、ＣＰＵ１がアクセスした命令をキャッシングするのか（iV)命令キャッシュモード）、或いは全くキャッシングを行わないのか（i)キャッシュオフモード）を制御する登録信号Ｃ２をキャッシュ２８に与える。
【００７５】
図１９乃至図２１はそれぞれvi)内部共用キャッシュモード、x)外部命令キャッシュモード、iV)命令キャッシュモードを採用する場合のマイクロプロセッサ１０１の構成を模式的に示すブロック図である。キャッシュ２８は、図１９においてはＤＲＡＭ２７とバスＩＤ＜０：１２７＞との間に、図２０においてはＢＩＵ３とバスＩＤ＜０：１２７＞との間に、図２１においてはＣＰＵ１とＤＲＡＭ２７及びＢＩＵ３との間に、それぞれ介在する態様を模式的に採っている。
【００７６】
データバスＤ＜０：１５＞、制御バス５６，５７、アドレスバス５８がまとめて描かれているが、その上に示されたような各信号ＨＲＥＱ，ＨＡＣＫ，アドレス、データ（命令も含む）、その他の信号ＢＣ、Ｒ／Ｗバー、ＣＳ等の制御信号がこれらのバスを介して伝達される。
【００７７】
（３−ａ）vi)内部共用キャッシュモードについて；
ＤＲＡＭ２７に対してＣＰＵ１がアクセスした命令／データをキャッシングするモードであり、ＤＲＡＭ２７にプログラムが入っている場合に使用される（図１９）。
【００７８】
ＣＰＵ１がＤＲＡＭ２７にある命令をフェッチする場合には、ＢＩＵ３の制御でまずキャッシュヒットするかどうかがチェックされる。ヒットする場合はキャッシュ２８からバスＩＤ〈０：１２７〉にその命令が出力され、ＩＱ８（図１９ではＣＰＵ１に含んでいるものとして示されている）に転送される。
【００７９】
キャッシュミスの場合はＤＲＡＭ２７からキャッシュ２８およびＣＰＵ１に転送される。例えばキャッシュ２８は２５６（＝２8）エントリ×１２８ビット＝４Ｋバイトの容量をもつ。２４ビットのアドレスＩＡＤ〈７：３１〉の内の８ビットＩＡＤ〈２０：２７〉がエントリアドレスとなる。アドレスＩＡＤ〈７：３１〉の内の１３ビットＩＡＤ〈７：１９〉はｔａｇとして登録される。ＤＲＡＭ２７から読み出した１２８ビットのデータがキャッシュ２８に書き込まれる。このときＩＡＤ〈２０：２７〉が示すエントリについてのｖａｌｉｄビットがセットされる。
【００８０】
ＣＰＵ１がＤＲＡＭ２７のデータをリードする場合には、命令をフェッチする場合と同様にキャッシュヒットをチェックし、ヒットの場合はキャッシュ２８から、ミスの場合はＤＲＡＭ２７から読み出す。
【００８１】
ＣＰＵ１がＤＲＡＭ２７にデータを書き込む場合は、キャッシュヒットするかどうかがチェックされる。ヒットする場合は書き込みデータをキャッシュ２８の対応するエントリの１２８ビットの一部に書き込み、このエントリのｄｉｒｔｙビットがセットされる。ｄｉｒｔｙビットがセットされているエントリのデータはこのエントリに次のキャッシュデータを登録する際に書き戻される（リプレイス）。ミスする場合には書き込みデータがＤＲＡＭ２７に書き込まれる。
【００８２】
リプレイスを行う代わりに、図１７で示された信号ＭＳＰＲの７番目のビットのｐｕｒｇｅ処理でＤＲＡＭ２７に書き戻すこともできる。
【００８３】
（３−ｂ）x)外部命令キャッシュモードについて；
外部メモリ４内にある命令がキャッシュ２８にキャッシングされる。例えば外部メモリ４として命令ＲＯＭをおき、ＤＲＡＭ２７にはデータをおいた場合に採用される（図２０）。
【００８４】
ＣＰＵ１が外部メモリ４に対して命令をフェッチする場合、キャッシュヒットをチェックし、ヒットの場合はキャッシュ２８から、ミスの場合は外部メモリ４からフェッチする。外部メモリ４からフェッチされる命令は、キャッシュ２８に登録するためにバースト転送によってマイクロプロセッサ１０１に伝達され、１２８ビット分がＢＩＵ３に保持されてキャッシュ２８に転送される。
【００８５】
（３−ｃ）iV)命令キャッシュモードについて；
ＣＰＵ１がフェッチした命令をキャッシングするモードであり、ＤＲＡＭ２７および外部メモリ４に命令を置く場合に採用される（図２１）。ＣＰＵ１がフェッチを要求する命令がキャッシュヒットするかどうかをチェックし、ヒットする場合はキャッシュ２８から、ミスの場合はＤＲＡＭ２７または外部メモリ４からフェッチする。外部メモリ４からの命令のフェッチは（３−ｂ）と同様であり、ＤＲＡＭ２７からの命令のフェッチは１回の読み出しで１２８ビット分がキャッシュ２８登録される。
【００８６】
なお各キャッシュモードにおいて、ＤＲＡＭ２７、外部メモリ４のうちキャッシングされるべきでない領域（例えばキャッシングしてもライトバックが頻繁になって却って処理速度が悪化するデータを記憶する領域）をキャッシュ２８がキャッシングしないように、ノンキャッシャブルな領域をアドレスによって指定することもできる。勿論、かかる領域がアクセスされた場合に、通常マイクロプロセッサに設けられているノンキャッシャブルピンをアサートすることでキャッシングを回避することもできる。
【００８７】
以上の様に、本実施の形態にかかるマイクロプロセッサによれば、ＤＲＡＭ２７及びキャッシュ２８を内蔵し、そのキャッシングの態様を選択することができる。
【００８８】
実施の形態３．
（４）リフレッシュ：
マイクロプロセッサ１０１にリフレッシュ制御の為のリフレッシュタイマ２６を付加することもできる。図２２は制御ブロック３０３の構成と、これにリフレッシュ要求を与えるリフレッシュタイマ２６との関係を示すブロック図である。図２２においては制御ブロック３０３が図１８に示された構成に対し、更にＤＲＡＭアクセス制御回路３０３ｆ、外部アクセス制御回路３０３ｇを有している構成が示されており、リフレッシュタイマ２６は直接にはＤＲＡＭアクセス制御回路３０３ｆにリフレッシュ要求を与えている。
【００８９】
図２４はかかるリフレッシュタイマ２６や制御ブロック３０３を有するＢＩＵ３を備えたマイクロプロセッサ１０２の構成を例示するブロック図である。リフレッシュタイマ２６は所定の期間ごとにＤＲＡＭ２７をリフレッシュするように要求し、リフレッシュタイマ２６はＣＰＵ１や外部バスマスタ４１とは独立して、ＤＲＡＭ７に対するバスマスタとなる。つまり第１の内部バスマスタとしてＣＰＵ１が、第２のバスマスタとしてリフレッシュタイマ２６が、それぞれ機能する。かかるリフレッシュ要求はデータＭＤＲＲの第７番目のビットの値に基づいて行われる。
【００９０】
図２４はＤＲＡＭ２７がリフレッシュされる状態でのアクセスの態様を示している。つまりＤＲＡＭ２７のリフレッシュ中はその他のバスマスタ、例えばＣＰＵ１や外部バスマスタ４１はＤＲＡＭ２７をアクセスできない。しかしバスＩＤ＜０：１２７＞が占有されているわけではないので、ＣＰＵ１からのキャッシュ２８へのアクセスや外部メモリ４へのアクセスは可能である。また外部バスマスタ４１がＤＲＡＭ２７をアクセスし、それがキャッシュ２８にヒットした場合も処理することができる。
【００９１】
図２２に戻って説明すると、ＤＲＡＭアクセス制御回路３０３ｆはリフレッシュタイマ２６からのリフレッシュ要求がネゲートされている場合には、情報Ｃ３に基づいてＤＲＡＭアクセス要求をＤＲＡＭ２７へ与える。しかしリフレッシュ要求がアサートされている場合にはＤＲＡＭアクセス要求は無効にされ、ＤＲＡＭ２７へ与えられるリフレッシュ信号をアサートしてＲＡＭ２７をリフレッシュする。このようにしてＤＲＡＭ２７のリフレッシュ中はその他のバスマスタがＤＲＡＭ２７にアクセスすることが禁止される。
【００９２】
キャッシュアクセス制御回路３０３ｅ、外部アクセス制御回路３０３ｇも情報Ｃ３に基づいてそれぞれキャッシュ登録信号をキャッシュ２８へ、外部アクセス要求を外部メモリ４、外部バスマスタ４１へ伝達される。これらの信号により、リフレッシュ信号がアサートしている場合には、ＤＲＡＭ２７からキャッシュ２８へのキャッシングや、外部バスマスタ４１からＤＲＡＭ２７へのアクセスが禁止される。つまりリフレッシュ中はＤＲＡＭ２７へのアクセスを伴わないアクセス要求のみが受け付けられる。
【００９３】
以上のように本実施の形態にかかるマイクロプロセッサによれば、バスマスタが内部に複数（例えばＣＰＵ１とリフレッシュタイマ２６）存在してもマイクロプロセッサの動作を制御することができる。
【００９４】
（５）パージ：
データＭＳＰＲの第７番目のビットの値がパージ制御を行うことを指定してる場合、キャッシュがライトバック方式であれば、キャッシュにあってｄｉｒｔｙビットがセットされているデータがＤＲＡＭ２７に書き戻される。そしてｖａｌｉｄビットのセットが解除される。この際、キャッシュ２８からＤＲＡＭ２７へまたはキャッシュ２８から外部メモリ４へデータが転送されるため、バスＩＤ〈０：１２７〉が占有され、バスマスタはＤＲＡＭ２７や外部メモリ４にアクセスすることができない。
【００９５】
キャッシュがライトスルー方式であれば、ＤＲＡＭ２７や外部メモリ４にも更新されるデータが書き込まれ、パージ制御を行えばキャッシュ２８のエントリに対するｖａｌｉｄビットのセットが解除される。
【００９６】
その他の変形．
（６）セパレートキャッシュ：
図２５は本発明にいわゆるハーバードアーキテクチャを採用した場合の構成を例示するブロック図である。マイクロプロセッサ１０３においてキャッシュメモリは、いずれも２ＫＢの命令キャッシュ２８ｂとデータキャッシュ２８ａにセパレートして構成することができる。命令キャッシュ２８ｂは命令のみが載る命令バスＩＩ＜０：１２７＞を介して、データキャッシュ２８ａは命令以外のデータのみが載るデータバスＩＤ＜０：１２７＞を介して、それぞれＤＲＡＭ２７、ＣＰＵ１、ＢＩＵ３と接続されている。
【００９７】
キャッシュモードは各キャッシュ２８ａ，２８ｂに対して、ＤＲＡＭ２７、外部メモリ４１のいずれをキャッシングの対象とするのかを設定することができる。
【００９８】
（７）複数のマイクロプロセッサの並存．
図２６は２つのマイクロプロセッサ１０１ａ，１０１ｂ（これらはいずれもマイクロプロセッサ１０１と同じ構成を採ることができる）が、アドレスバス５８、データバスＤ＜０：１５＞を介して同一の外部バスマスタ４１、外部メモリ４に接続される態様を示すブロック図である。第１マイクロプロセッサ１０１ａ，１０１ｂは、それぞれが内蔵するＤＲＡＭ２７に存在する命令／データを使用してプログラムを処理する。
【００９９】
第１マイクロプロセッサ１０１ａに対しては、外部バスマスタ４１からHalt Request信号ＨＲＥＱ１バー、チップセレクト信号ＣＳ１バーが与えられる。また第１マイクロプロセッサ１０１ａから外部バスマスタ４１に対して、受付を許可するHREQ Ack信号ＨＡＣＫ１バーが与えられる。これらの信号のやりとりにより、第１マイクロプロセッサ１０１ａの有するＤＲＡＭ２７への書き込み、読み出しが外部バスマスタ４１によって行われる。同様にして、Halt Request信号ＨＲＥＱ２バー、チップセレクト信号ＣＳ２バー、HREQ Ack信号ＨＡＣＫ２バーのやりとりに基づいて、第２マイクロプロセッサ１０１ｂの有するＤＲＡＭ２７への書き込み、読み出しが外部バスマスタ４１によって行われる。
【０１００】
なお、外部メモリ４には第１及び第２マイクロプロセッサ１０１ａ，１０１ｂに共通のデータを格納しておき、第１及び第２マイクロプロセッサ１０１ａ，１０１ｂのアクセス要求に応じてその内容をリードすることもできる。この際、両方のマイクロプロセッサ１０１ａ，１０１ｂのアクセスが競合しないように、それぞれのマイクロプロセッサ１０１ａ，１０１ｂにマスタ／スレーブ信号ＭＳ１，ＭＳ２を与え、これらを排他的にアサートさせることにより、マイクロプロセッサの一方をマスタ、他方をスレーブとして機能させることができる。ここでマスタ／スレーブとなるマイクロプロセッサはそれぞれ外部メモリ４とアクセスができる／できないという違いを有する。
【０１０１】
勿論、マスタ／スレーブ信号ＭＳ１，ＭＳ２のアサート／ネゲートは互いに切り替えることができる。ただし現在実行中のバスオペレーションが終了してからその切り替えが行われるべきである。
【０１０２】
マイクロプロセッサ１０１ａ，１０１ｂのそれぞれが内蔵するＤＲＡＭ２７には別々のデータを格納できる。既に図１４を用いて説明したように、各マイクロプロセッサ１０１ａ，１０１ｂのアドレス空間において、ＤＲＡＭ２７は、００００００００〜００１ＦＦＦＦＦ番地に割り当てられるが、これらの物理アドレスは別々にする必要がある。
【０１０３】
例えば３２ビットのアドレス空間（アドレス一つに対して１バイトのデータが蓄えられるとして４Ｇバイトの容量を有する）のうちの００００００００〜００１ＦＦＦＦＦ番地を第１マイクロプロセッサ１０１ａの内蔵するＤＲＡＭ２７に、０１００００００〜０１１ＦＦＦＦＦ番地を第２マイクロプロセッサ１０１ｂの内蔵するＤＲＡＭ２７に、それぞれ割り当てることができる。これらはいずれも論理空間の内のユーザー空間（ＳＩＤ＝０）において割り当てられている。以上のようにアドレス空間の割り当てを行うことにより、２４ビットのアドレスを用いつつ、２つのマイクロプロセッサ１０１ａ，１０１ｂはそれぞれ自身の内蔵するＤＲＡＭ２７に対して別の処理を並行して行うことができる。
【０１０４】
【発明の効果】
以上に説明されたように、本発明によれば複数のキャッシュモードをもつことにより、様々な用途に対して１つのチップで対応可能となり、コスト削減になる。また、ピン数削減によりコストを減らせる。内部データバスよりもビット幅の狭い外部データバスに関し、バースト時のＣＰＵへの転送を制御することにより、性能を上げることができる。
【０１０５】
この発明のうち請求項１にかかるマイクロプロセッサによれば、第１の内部バスマスタのみならず、外部バスマスタも前記メモリに対するデータの読み書きを行うことができる。
【０１０６】
この発明のうち請求項２にかかるマイクロプロセッサによれば、制御信号が共用されるので、マイクロプロセッサに必要なピン数が増大することなく、内蔵メモリを第１の内部バスマスタのみならず、外部バスマスタによってもアクセスすることができ、外部メモリを第１の内部バスマスタでアクセスすることができる。
【０１０７】
この発明のうち請求項３にかかるマイクロプロセッサによれば、アドレスが所定のアドレス境界を越えても、誤ったデータが転送されることを回避できる。
【０１０８】
この発明のうち請求項４にかかるマイクロプロセッサによれば、複数の内部バスマスタを内蔵してもマイクロプロセッサの動作を制御することができる。
【０１０９】
この発明のうち請求項５にかかるマイクロプロセッサによれば、命令キャッシュモードや内部共用キャッシュモード等の複数のキャッシュモードを選択してキャッシングを行ったり、あるいはキャッシングを行わなかったりすることができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１を示すブロック図である。
【図２】  命令の構成を例示する模式図である。
【図３】  命令の処理を示す模式図である。
【図４】  命令の転送を示すブロック図である。
【図５】  命令の転送を示すブロック図である。
【図６】  ＣＰＵ１が外部メモリ４からデータを読み出す場合のプロトコルを示すタイミングチャートである。
【図７】  ＣＰＵ１が外部メモリ４にデータを書き込む場合のプロトコルを示すタイミングチャートである。
【図８】  外部バスマスタ４１からＤＲＡＭ２７にデータを書き込む場合のプロトコルを示すタイミングチャートである。
【図９】  外部バスマスタ４１によるアクセスが終了する場合を示すタイミングチャートである。
【図１０】  バッファ３０１の構成を示すブロック図である。
【図１１】  外部バスマスタ４１がＤＲＡＭ２７からデータを読み出す場合のプロトコルを示すタイミングチャートである。
【図１２】  アドレスがアドレス境界を超える場合の動作を行う手段を示すブロック図である。
【図１３】  アドレスがアドレス境界を超える場合の動作を示すタイミングチャートである。
【図１４】  アドレスがアドレス境界を超える場合の動作を示すタイミングチャートである。
【図１５】  マイクロプロセッサ１０１のアドレス空間を示す模式図である。
【図１６】  内蔵制御レジスタのアドレス空間の一部を示す模式図である。
【図１７】  データＭＳＰＲ，ＭＤＲＲ，ＭＣＣＲの構成の詳細を示す模式図である。
【図１８】  制御ブロック３０３の構成の一部を示すブロック図である。
【図１９】  マイクロプロセッサ１０１の構成を模式的に示すブロック図である。
【図２０】  マイクロプロセッサ１０１の構成を模式的に示すブロック図である。
【図２１】  マイクロプロセッサ１０１の構成を模式的に示すブロック図である。
【図２２】  リフレッシュタイマ２６の接続関係を示すブロック図である。
【図２３】  外部マスタ４１およびＣＰＵ１のリードを示すタイミングチャートである。
【図２４】  マイクロプロセッサ１０２の構成を例示するブロック図である。
【図２５】  ハーバードアーキテクチャが採用されたマイクロプロセッサの構成を例示するブロック図である。
【図２６】  ２つのマイクロプロセッサが並存する態様を示すブロック図である。
【図２７】  従来の技術を示すブロック図である。
【図２８】  従来の技術を示すブロック図である。
【符号の説明】
１  ＣＰＵ１、３  バスインタフェースユニット、４  外部メモリ、２７  ＤＲＡＭ、２８  キャッシュメモリ、４１  外部バスマスタ、１０１〜１０３  マイクロプロセッサ、３０１  バッファ、ＩＤ＜０：１２７＞，Ｄ＜０：１５＞  データバス。
【図１】
0003934710.tif 000002
【図２】
0003934710.tif 000003
【図３】
0003934710.tif 000004
【図４】
0003934710.tif 000005
【図５】
0003934710.tif 000006
【図６】
0003934710.tif 000007
【図７】
0003934710.tif 000008
【図８】
0003934710.tif 000009
【図９】
0003934710.tif 000010
【図１０】
0003934710.tif 000011
【図１１】
0003934710.tif 000012
【図１２】
0003934710.tif 000013
【図１３】
0003934710.tif 000014
【図１４】
0003934710.tif 000015
【図１５】
0003934710.tif 000016
【図１６】
0003934710.tif 000017
【図１７】
0003934710.tif 000018
【図１８】
0003934710.tif 000019
【図１９】
0003934710.tif 000020
【図２０】
0003934710.tif 000021
【図２１】
0003934710.tif 000022
【図２２】
0003934710.tif 000023
【図２３】
0003934710.tif 000024
【図２４】
0003934710.tif 000025
【図２５】
0003934710.tif 000026
【図２６】
0003934710.tif 000027
【図２７】
0003934710.tif 000028
【図２８】
0003934710.tif 000029