(57)【要約】【課題】制御ＬＳＩがＭＰＵのメモリからデータを高速に読み出すことができるシステムＬＳＩを得る。【解決手段】コントロール回路がアドレスとリードアクセス要求信号を出力すると、そのアドレスをデコードし、そのアドレスがメモリの領域内のアドレスである場合には、そのアドレスとリードアクセス要求信号をデータインタフェース回路に出力して、そのデータインタフェース回路からデータを取得するアクセス回路を制御ＬＳＩに内蔵する。【選択図】図３
2008226280.tif 000002
【特許請求の範囲】
【請求項１】
メモリを内蔵するとともに、そのメモリの領域内のアドレスとアクセス要求信号を受けると、そのメモリからデータを読み込むデータインタフェース回路を内蔵するＭＰＵと、コントロール回路を内蔵する制御ＬＳＩとを搭載するシステムＬＳＩにおいて、上記コントロール回路がアドレスとリードアクセス要求信号を出力すると、そのアドレスをデコードし、そのアドレスが上記メモリの領域内のアドレスである場合には、そのアドレスとリードアクセス要求信号を上記データインタフェース回路に出力して、そのデータインタフェース回路からデータを取得するアクセス回路を制御ＬＳＩに内蔵することを特徴とするシステムＬＳＩ。
【請求項２】
メモリを内蔵するとともに、そのメモリの領域内のアドレスとライトアクセス要求信号とデータを受けると、そのメモリにデータを書き込むデータインタフェース回路を内蔵するＭＰＵと、コントロール回路を内蔵する制御ＬＳＩとを搭載するシステムＬＳＩにおいて、上記コントロール回路がアドレスとライトアクセス要求信号とデータを出力すると、そのアドレスをデコードし、そのアドレスが上記メモリの領域内のアドレスである場合には、そのアドレスとアクセス要求信号とデータを上記データインタフェース回路に出力して、そのデータを上記メモリに格納させるアクセス回路を制御ＬＳＩに内蔵することを特徴とするシステムＬＳＩ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、相互に独立して動作可能なＭＰＵと制御ＬＳＩがワンチップ化されたシステムＬＳＩに関するものである。
【背景技術】
【０００２】
図４は従来のシステムＬＳＩを示す構成図であり、図において、１はＣＰＵ３等を内蔵するＭＰＵ、２はＭＰＵ１と独立して動作可能な制御ＬＳＩであるハードディスクコントローラ（以下、ＨＤＣという）、３はＭＰＵ１のＣＰＵ、４はＲＯＭ７又はＳＲＡＭ８に格納されているプログラムコードをリードするコードインタフェース回路（以下、ＣＩＵという）、５はＲＯＭ７又はＳＲＡＭ８から読み出したプログラムコードを蓄積するリングバッファ、６はＲＯＭ７，ＳＲＡＭ８又はレジスタ９に格納されているデータをリードする一方、データをＲＯＭ７，ＳＲＡＭ８又はレジスタ９にライトするデータインタフェース回路（以下、ＤＩＵという）、７はＲＯＭ、８はＳＲＡＭ、９はレジスタである。
【０００３】
１０はＨＤＣ２のコントロール回路（以下、ＨＤＣ＿ＣＵという）、１１はＲＯＭ１３，ＳＲＡＭ１４，レジスタ群１５及びＤＲＡＭ１６をアクセスするデータインタフェース回路、１２はＤＲＡＭ１６を制御するＤＲＡＭ制御回路（以下、ＤＲＡＭＣという）、１３はＲＯＭ、１４はＳＲＡＭ、１５はレジスタ群、１５ａ，１５ｂはレジスタ、１６はＤＲＡＭである。なお、図５及び  図６は従来のシステムＬＳＩの動作を示すフローチャートである。
【０００４】
次に動作について説明する。最初に、ＭＰＵ１のＣＰＵ３がＨＤＣ２内のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に保持されているプログラムコードをフェッチする動作について述べる。まず、ＣＰＵ３は、プログラムアドレス分岐時に分岐要求信号ＲＣＬＲと、分岐アドレスＡＤ＿ＣＰＵをＣＩＵ４に出力する。
【０００５】
そして、ＣＩＵ４は、ＣＰＵ３から分岐要求信号ＲＣＬＲと分岐アドレスＡＤ＿ＣＰＵを受けると、分岐アドレスＡＤ＿ＣＰＵをコードアドレスバスＣ＿ＡＤに出力するとともに、コード読み出し信号ＣＲＥを出力する（図７を参照）。ここで、分岐アドレスＡＤ＿ＣＰＵの値が、例えば、ＨＤＣ２内のＲＯＭ１３のアドレス範囲内にある場合には、ＲＯＭ１３が、プログラムコードをコードバスＣＢに出力する（図７を参照）。
【０００６】
これにより、ＣＩＵ４は、コードバスＣＢからプログラムコードを取得して、プログラムコードをリングバッファ５に蓄積する。そして、ＣＩＵ４は、リングバッファ５に空きがある限り、コードアドレスバスＣ＿ＡＤの値を自動的にインクリメントして、ＲＯＭ１３に対する読み出し動作を繰り返し実行する（以下、かかる動作を「コード先取り動作」と称する）。
【０００７】
また、ＣＩＵ４は、上記の「コード先取り動作」とは独立して、ＣＰＵ３にプログラムコードを与える動作を実行する（以下、「コード出力動作」と称する）。即ち、ＣＩＵ４は、ＣＰＵ３からコード要求信号ＲＯＰＣを受けると、リングバッファ５に蓄積されているプログラムコードのうち、最古のプログラムコードから順番に所定の分だけＣＰＵ３に出力する。
【０００８】
そして、ＣＰＵ３は、ＣＩＵ４からプログラムコードを受けると、そのプログラムコードをデコードして、そのプログラムコードが意味する命令を実行する。ＣＩＵ４が、以上の「コード先取り動作」と「コード出力動作」を並列的に処理していくことによって、ＣＰＵ３は、ＨＤＣ２内のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に格納されているプログラムコードを獲得し、命令を実行していくことができる。
【０００９】
次に、ＨＤＣ２がＭＰＵ１内のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）に保持されているデータを読み出す動作について述べる。まず、ＨＤＣ２のＨＤＣ＿ＣＵ１０は、必要とするデータが格納されているアドレス（以下、説明の便宜上、ここではレジスタ９のアドレスとする）と、ステップＳＴ２で出力するメモリアクセス要求信号がデータのリードを要求する信号であることを示す情報をレジスタ１５ａに格納する（ステップＳＴ１）。ただし、ＣＰＵ３がＨＤＣ２のメモリアクセス要求を認識する方法として、以下の方法を採用することもできる。即ち、ＣＰＵ３が定期的にＨＤＣ２内のレジスタ１５ａを読み出すようにし、その定期的な読み出し時にレジスタ１５ａ内のデータがアクセス要求を示す情報に変化していたら、ＣＰＵ３がＨＤＣ２のメモリアクセス要求を認識するという方法である。
【００１０】
さて、ステップＳＴ１の後、ＨＤＣ２は、ＭＰＵ１内のメモリに対して直接アクセスすることができないので（ＨＤＣ２はＭＰＵ１と異なり、外部メモリに対するインタフェース回路を有していない為）、ＭＰＵ１内のメモリに格納されているデータをリードする場合、ＨＤＣ２のＨＤＣ＿ＣＵ１０がメモリアクセス要求信号をＣＰＵ３に出力する（ステップＳＴ２）。
【００１１】
そして、ＣＰＵ３は、ＨＤＣ＿ＣＵ１０からメモリアクセス要求信号を受けると、データリード要求信号ＲＤＲをＤＩＵ６に出力し、同時にＡＤ＿ＣＰＵにＨＤＣ２内のレジスタ１５ａを指すアドレスを出力する（ここで、ＣＰＵ３は、メモリアクセス要求信号を受けた場合、レジスタ１５ａの格納内容を読み出すものとして、予め取り決められているものとする）。
【００１２】
そして、ＤＩＵ６は、ＣＰＵ３からデータリード要求信号ＲＤＲを受け、ＡＤ＿ＣＰＵからレジスタ１５ａを指すアドレスを受けると、データアドレスバスＤ＿ＡＤにレジスタ１５ａを指すアドレスを出力するとともに、データ読み出し信号ＤＲＥを出力する（図８を参照）。
【００１３】
そして、レジスタ１５ａは、レジスタ１５ａを指すアドレスとデータ読み出し信号ＤＲＥを受けると、格納しているデータ（データの格納先を示すアドレス（この例では、レジスタ９を指すアドレス）と、今回のメモリアクセス要求信号がデータのリードを要求する信号であることを示す情報）をデータバスＤＢに出力する（図８を参照）。
【００１４】
そして、ＤＩＵ６は、レジスタ１５ａが上記のデータをデータバスＤＢに出力すると、一旦、データバスＤＢからデータを取得して（図８を参照）、そのデータをＤ＿ＢＵＳに出力し、そのデータをＣＰＵ３に供給する（ステップＳＴ３）。これにより、ＣＰＵ３は、ＨＤＣ２のリード要求と、読み出したいメモリのアドレスを取得することができる。
【００１５】
そして、ＣＰＵ３は、上記のデータを受けると、データリード要求信号ＲＤＲをＤＩＵ６に出力し、同時にＡＤ＿ＣＰＵにＭＰＵ１内のレジスタ９を指すアドレスを出力する。そして、ＤＩＵ６は、ＣＰＵ３からデータリード要求信号ＲＤＲを受け、ＡＤ＿ＣＰＵからレジスタ９を指すアドレスを受けると、データアドレスバスＤ＿ＡＤにレジスタ９を指すアドレスを出力するとともに、データ読み出し信号ＤＲＥを出力する（図８を参照）。
【００１６】
そして、レジスタ９は、レジスタ９を指すアドレスとデータ読み出し信号ＤＲＥを受けると、格納しているデータ（ＨＤＣ２が必要とするデータ）をデータバスＤＢに出力する（図８を参照）。そして、ＤＩＵ６は、レジスタ９がデータをデータバスＤＢに出力すると、一旦、データバスＤＢからデータを取得して（図８を参照）、そのデータをＤ＿ＢＵＳに出力し、そのデータをＣＰＵ３に供給する（ステップＳＴ４）。
【００１７】
そして、ＣＰＵ３は、Ｄ＿ＢＵＳからデータを取得すると、データライト要求信号ＲＤＷをＤＩＵ６に出力し、同時にＡＤ＿ＣＰＵにＨＤＣ２内のレジスタ１５ｂを指すアドレスを出力する（ここで、ＣＰＵ３は、ＨＤＣ２のリード要求に従ってメモリを読み出した場合には、そのリードデータをＨＤＣ２のレジスタ１５ｂに書き込むものとして、予め取り決められているものとする）。
【００１８】
そして、ＤＩＵ６は、ＣＰＵ３からデータライト要求信号ＲＤＷを受け、ＡＤ＿ＣＰＵからレジスタ１５ｂを指すアドレスを受けると、データアドレスバスＤ＿ＡＤにレジスタ１５ｂを指すアドレスを出力すると同時に、ＣＰＵ３に供給したデータをデータバスＤＢに出力し、また、データ書き込み信号ＤＷＥを出力する（図９を参照）。
【００１９】
そして、レジスタ１５ｂは、レジスタ１５ｂを指すアドレスと、データと、データ書き込み信号ＤＷＥを受けると、データバスＤＢからデータを取得して格納する（ステップＳＴ５）。そして、ＨＤＣ＿ＣＵ１０は、データインタフェース回路１１を用いて、レジスタ１５ｂに格納されたデータを読み出すことにより、ＭＰＵ１内のレジスタ９に格納されたデータを取得することができる（ステップＳＴ６）。
【００２０】
最後に、ＨＤＣ２がＭＰＵ１内のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）に保持されているデータを書き換える動作について述べる。まず、ＨＤＣ２のＨＤＣ＿ＣＵ１０は、メモリに書き込むデータと、格納先のメモリのアドレス（以下、説明の便宜上、ここではレジスタ９のアドレスとする）と、ステップＳＴ１２で出力するメモリアクセス要求信号がデータのライトを要求する信号であることを示す情報をレジスタ１５ａに格納する（ステップＳＴ１１）。
【００２１】
そして、ＨＤＣ２は、ＭＰＵ１内のメモリに対して直接アクセスすることができないので、ＭＰＵ１内のメモリにデータをライトする場合、ＨＤＣ２のＨＤＣ＿ＣＵ１０がメモリアクセス要求信号をＣＰＵ３に出力する（ステップＳＴ１２）。
【００２２】
そして、ＣＰＵ３は、ＨＤＣ＿ＣＵ１０からメモリアクセス要求信号を受けると、データリード要求信号ＲＤＲをＤＩＵ６に出力し、同時にＡＤ＿ＣＰＵにＨＤＣ２内のレジスタ１５ａを指すアドレスを出力する（ここで、ＣＰＵ３は、メモリアクセス要求信号を受けた場合、レジスタ１５ａの格納内容を読み出すものとして、予め取り決められているものとする）。
【００２３】
そして、ＤＩＵ６は、ＣＰＵ３からデータリード要求信号ＲＤＲを受け、ＡＤ＿ＣＰＵからレジスタ１５ａを指すアドレスを受けると、データアドレスバスＤ＿ＡＤにレジスタ１５ａを指すアドレスを出力するとともに、データ読み出し信号ＤＲＥを出力する（図８を参照）。
【００２４】
そして、レジスタ１５ａは、レジスタ１５ａを指すアドレスとデータ読み出し信号ＤＲＥを受けると、格納しているデータ（データの格納先を示すアドレス（この例では、レジスタ９を指すアドレス）と、今回のメモリアクセス要求信号がデータのライトを要求する信号であることを示す情報と、レジスタ９への書き込みデータ）をデータバスＤＢに出力する（図８を参照）。
【００２５】
そして、ＤＩＵ６は、レジスタ１５ａが上記のデータをデータバスＤＢに出力すると、一旦、データバスＤＢからデータを取得して（図８を参照）、そのデータをＤ＿ＢＵＳに出力し、そのデータをＣＰＵ３に供給する。これにより、ＣＰＵ３は、ＨＤＣ２のライト要求と、書き込みたいメモリのアドレスと、レジスタ９への書き込みデータとを取得することができる（ステップＳＴ１３）。
【００２６】
そして、ＣＰＵ３は、上記のデータを受けると、ＡＤ＿ＣＰＵにＭＰＵ１内のレジスタ９を指すアドレスを出力すると同時に、データライト要求信号ＲＤＷをＤＩＵ６に出力する。
【００２７】
そして、ＤＩＵ６は、ＣＰＵ３からデータライト要求信号ＲＤＷを受け、ＡＤ＿ＣＰＵからレジスタ９を指すアドレスを受けると、データアドレスバスＤ＿ＡＤにレジスタ９を指すアドレスを出力すると同時に、ＣＰＵ３からＤ＿ＢＵＳを介して受け取った書き込みデータをデータバスＤＢに出力し、また、データ書き込み信号ＤＷＥを出力する（図９を参照）。
【００２８】
そして、レジスタ９は、レジスタ９を指すアドレスと、書き込みデータと、データ書き込み信号ＤＷＥを受けると、データバスＤＢから書き込みデータを取得して格納する（ステップＳＴ１４）。
【発明の開示】
【発明が解決しようとする課題】
【００２９】
従来のシステムＬＳＩは以上のように構成されているので、ＭＰＵ１のＣＰＵ３がＨＤＣ２のメモリ（ＲＯＭ１３等）からプログラムコードを読み出す場合、ＭＰＵ１のＣＩＵ４を介して読み出す必要があり、ＭＰＵ１のメモリ（ＲＯＭ７等）からプログラムコードを読み出す場合に比べて、アクセススピードが遅くなるという課題があった。
【００３０】
アクセススピードが遅くなる理由は以下の通りである。ＭＰＵ１のＣＩＵ４は、ＭＰＵ１のメモリに対して、高速にアクセスできるように最適化され、ＨＤＣ２のメモリは、ＨＤＣ２のＨＤＣ＿ＣＵ１０が高速にアクセスできるように最適化されている。したがって、ＭＰＵ１のＣＩＵ４がＨＤＣ２のメモリをアクセスする場合、ＭＰＵ１のメモリからプログラムコードを読み出す場合に比べて、アクセススピードが遅くなる。
【００３１】
そこで、ＨＤＣ２のメモリを改定して、ＭＰＵ１のＣＩＵ４が高速にアクセスできるように最適化する方法も考えられるが、この方法では、ＨＤＣ２のＨＤＣ＿ＣＵ１０がＨＤＣ２のメモリに対して、最高速でアクセスできなくなり、システムＬＳＩ全体のパフォーマンス能力の向上が期待できなくなる。
【００３２】
一方、ＭＰＵ１のＣＩＵ４を改定して、ＨＤＣ２のメモリを高速にアクセスできるように最適化する方法も考えられるが、この方法では、ＭＰＵ１のＣＩＵ４がＭＰＵ１のメモリに対して、最高速にアクセスできなくなり、システムＬＳＩ全体のパフォーマンス能力の向上が同様に期待できなくなる。
【００３３】
また、従来のシステムＬＳＩは、ＨＤＣ２に特化されたメモリ（例えば、ＤＲＡＭ１６）に対しては、ＭＰＵ１のＣＩＵ４がアクセスできないという課題もあった。その理由は、ＭＰＵ１にはＤＲＡＭコントローラが存在しないからである。改善案として、ＭＰＵ１がＤＲＡＭコントローラを内蔵化する方式も考えられるが、この場合、ＤＲＡＭコントローラを増設する分だけチップ面積が増大する。仮に、チップ面積の増大には目をつぶってＤＲＡＭコントローラを内蔵しても、既述したアクセススピードの遅延は解消することができない。
【００３４】
さらに、従来のシステムＬＳＩは、ＨＤＣ２が外部メモリに対するインタフェース回路を内蔵していないため、ＨＤＣ２のＨＤＣ＿ＣＵ１０がＭＰＵ１のメモリに格納されたデータを読み出す必要がある場合、直接、ＭＰＵ１のメモリをアクセスすることができず、そのため、ＨＤＣ２のＨＤＣ＿ＣＵ１０は、一旦、メモリアクセス要求信号をＭＰＵ１のＣＰＵ３に出力することにより、間接的にデータを読み出す必要があり（ＣＰＵ３がＤＩＵ６を介して、ＭＰＵ１のメモリからデータを読み出してから、ＨＤＣ２の所定のレジスタに書き込むことにより、データをＨＤＣ２に伝達する）、データを高速に読み出すことができないという課題があった。
【００３５】
その改善案として、ＨＤＣ２にＭＰＵ１のメモリを読み出すためのＤＩＵを設ける方式も考えられるが、この場合、ＨＤＣ２に新たにＤＩＵを増設する分、チップ面積が増大する問題が生じる。また、ＨＤＣ２がＭＰＵ１のメモリの内容を書き換えたい時も、読み出し時と同様に、ＭＰＵ１のＣＰＵ３を介するので、データを高速に書き込むことができないという課題があった。
【００３６】
この発明は上記のような課題を解決するためになされたもので、ＭＰＵのＣＰＵが制御ＬＳＩのメモリからプログラムコードを高速に読み出すことができるシステムＬＳＩを得ることを目的とする。また、この発明は、制御ＬＳＩがＭＰＵのメモリからデータを高速に読み出すことができるシステムＬＳＩを得ることを目的とする。さらに、この発明は、制御ＬＳＩがデータをＭＰＵのメモリに高速に書き込むことができるシステムＬＳＩを得ることを目的とする。
【課題を解決するための手段】
【００３７】
この発明に係るシステムＬＳＩは、コントロール回路がアドレスとリードアクセス要求信号を出力すると、そのアドレスをデコードし、そのアドレスがメモリの領域内のアドレスである場合には、そのアドレスとリードアクセス要求信号をデータインタフェース回路に出力して、そのデータインタフェース回路からデータを取得するアクセス回路を制御ＬＳＩに内蔵するようにしたものである。
【００３８】
この発明に係るシステムＬＳＩは、コントロール回路がアドレスとライトアクセス要求信号とデータを出力すると、そのアドレスをデコードし、そのアドレスがメモリの領域内のアドレスである場合には、そのアドレスとライトアクセス要求信号とデータを上記データインタフェース回路に出力して、そのデータをメモリに格納させるアクセス回路を制御ＬＳＩに内蔵するようにしたものである。
【発明の効果】
【００３９】
以上のように、この発明によれば、コントロール回路がアドレスとリードアクセス要求信号を出力すると、そのアドレスをデコードし、そのアドレスがメモリの領域内のアドレスである場合には、そのアドレスとリードアクセス要求信号をデータインタフェース回路に出力して、そのデータインタフェース回路からデータを取得するアクセス回路を制御ＬＳＩに内蔵するように構成したので、制御ＬＳＩがＭＰＵのメモリからデータを高速に読み出すことができる効果がある。
【００４０】
この発明によれば、コントロール回路がアドレスとライトアクセス要求信号とデータを出力すると、そのアドレスをデコードし、そのアドレスがメモリの領域内のアドレスである場合には、そのアドレスとライトアクセス要求信号とデータを上記データインタフェース回路に出力して、そのデータをメモリに格納させるアクセス回路を制御ＬＳＩに内蔵するように構成したので、制御ＬＳＩがデータをＭＰＵのメモリに高速に書き込むことができる効果がある。
【発明を実施するための最良の形態】
【００４１】
以下、この発明の実施の一形態を説明する。
実施の形態１．図１はこの発明の実施の形態１によるシステムＬＳＩを示す構成図であり、図において、１はＣＰＵ３等を内蔵するＭＰＵ、２はＭＰＵ１と独立して動作可能な制御ＬＳＩであるハードディスクコントローラ（以下、ＨＤＣという）、３はＭＰＵ１のＣＰＵ、４はＲＯＭ７又はＳＲＡＭ８に格納されているプログラムコードをリードするコードインタフェース回路（以下、ＣＩＵという）、５はＲＯＭ７又はＳＲＡＭ８から読み出したプログラムコードを蓄積するリングバッファ、６はＲＯＭ７，ＳＲＡＭ８又はレジスタ９に格納されているデータをリードする一方、データをＲＯＭ７，ＳＲＡＭ８又はレジスタ９にライトするデータインタフェース回路（以下、ＤＩＵという）、７はＲＯＭ（メモリ）、８はＳＲＡＭ（メモリ）、９はレジスタ（メモリ）である。
【００４２】
１０はＨＤＣ２のコントロール回路（以下、ＨＤＣ＿ＣＵという）、１１はＲＯＭ１３，ＳＲＡＭ１４，レジスタ１５及びＤＲＡＭ１６をアクセスするデータインタフェース回路、１２はＤＲＡＭ１６を制御するＤＲＡＭ制御回路（以下、ＤＲＡＭＣという）、１３はＲＯＭ（メモリ）、１４はＳＲＡＭ（メモリ）、１５はレジスタ、１６はＤＲＡＭである。
【００４３】
２１はＣＰＵ３がアドレスを出力すると、そのアドレスをデコードし、そのアドレスがメモリ（ＲＯＭ１３，ＳＲＡＭ１４）の領域内のアドレスである場合には、そのメモリに格納されているプログラムコードをＣＰＵ３に供給するコードインタフェース回路（以下、ＣＩＵという）、２２はＲＯＭ１３等から読み出したプログラムコードを蓄積するリングバッファである。なお、ＣＩＵ２１は、基本的にＭＰＵ１のＣＩＵ４と同じ動作をするが、異なる点は、ＣＩＵ４がＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８）からプログラムコードを読み出すのに対して、ＣＩＵ２１はＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）からプログラムコードを読み出す点である。
【００４４】
次に動作について説明する。まず、ＭＰＵ１のＣＰＵ３は、プログラムアドレス分岐時に分岐要求信号ＲＣＬＲと分岐アドレスＡＤ＿ＣＰＵをＣＩＵ４とＣＩＵ２１の両方に出力する。そして、ＣＩＵ４とＣＩＵ２１は、ＣＰＵ３から分岐アドレスＡＤ＿ＣＰＵを受けると、分岐アドレスＡＤ＿ＣＰＵをデコードして、そのアドレスが自己の受け持つアドレス範囲か否かを判定する。
【００４５】
もし、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８）の領域内にあれば、以後、ＣＩＵ４が動作して、ＣＩＵ２１は動作しないことになる。一方、そのアドレスがＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）の領域内にあれば、以後、ＣＩＵ２１が動作し、ＣＩＵ４は動作しないことになる。この実施の形態１では、ＣＩＵ２１が動作する場合について述べる。
【００４６】
そして、ＣＩＵ２１は、分岐アドレスＡＤ＿ＣＰＵの値が自己の受け持つアドレス範囲である場合には、分岐アドレスＡＤ＿ＣＰＵの値をＨＤＣ２のアドレスバス（アドレスバスは、ＨＤＣ２のバス群に含まれるものとする）に出力するとともに、コード読み出し信号をＨＤＣ２のバス（バスは、ＨＤＣ２のバス群に含まれるものとする）に出力する。
【００４７】
そして、ＨＤＣ２のメモリ（ＲＯＭ１３又はＳＲＡＭ１４）は、ＣＩＵ２１からコード読み出し信号を受けると、分岐アドレスＡＤ＿ＣＰＵで指定される番地に格納されたプログラムコードをＨＤＣ２のデータバス（データバスは、ＨＤＣ２のバス群に含まれるものとする）に出力する。
【００４８】
そして、ＣＩＵ２１は、ＨＤＣ２のメモリがプログラムコードをデータバスに出力すると、データバスからプログラムコードを取得し、そのプログラムコードをリングバッファ２２に蓄積する。ただし、ＣＩＵ２１のプログラムコードの読み出し動作は、ＨＤＣ２のデータインタフェース回路１１と同一の動作方式とする。これにより、ＨＤＣ２のメモリに対して、ＣＩＵ２１は最適にアクセスすることができる。
【００４９】
そして、ＣＩＵ２１は、リングバッファ２２に空きがある限り、ＨＤＣ２のバス群に出力するアドレスの値を自動的にインクリメントして、メモリ（ＲＯＭ１３又はＳＲＡＭ１４）に対する読み出し動作を繰り返し実行する（以下、かかる動作を「コード先取り動作」と称する）。
【００５０】
また、ＣＩＵ２１は、上記の「コード先取り動作」とは独立して、ＣＰＵ３にプログラムコードを与える動作を実行する（以下、「コード出力動作」と称する）。即ち、ＣＩＵ２１は、ＣＰＵ３からコード要求信号ＲＯＰＣを受けると、リングバッファ２２に蓄積されているプログラムコードのうち、最古のプログラムコードから順番に所定の分だけＣＰＵ３に出力する。
【００５１】
そして、ＣＰＵ３は、ＣＩＵ２１からプログラムコードを受けると、そのプログラムコードをデコードし、そのプログラムコードが意味する命令を実行する。ＣＩＵ２１が、以上の「コード先取り動作」と「コード出力動作」を並列的に処理していくことによって、ＣＰＵ３は、ＨＤＣ２内のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に格納されているプログラムコードを獲得し、命令を実行していくことができる。
【００５２】
ここで、特記しておきたいのは以下の点である。従来例におけるＣＰＵ３のＣＩＵ４を介したＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に対するプログラムコードの読み出しに比べて、この実施の形態１におけるＣＰＵ３のＣＩＵ２１を介したＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に対するプログラムコードの読み出しの方が早くなる点である。
【００５３】
その理由は、ＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４）に対するＣＩＵ２１のインタフェース方式をデータインタフェース回路１１と同一として、プログラムコードの取り込みを高速化する一方、ＣＩＵ２１からＣＰＵ３にプログラムコードを出力するインタフェース方式をＭＰＵ１のＣＩＵ４の方式と同一にしたからである。
【００５４】
以上で明らかなように、この実施の形態１によれば、ＣＰＵ３がアドレスを出力すると、そのアドレスをデコードし、そのアドレスがメモリ（ＲＯＭ１３，ＳＲＡＭ１４）の領域内のアドレスである場合には、そのメモリに格納されているプログラムコードをＣＰＵ３に供給するＣＩＵ２１をＨＤＣ２に内蔵するように構成したので、ＣＰＵ３がＨＤＣ２のメモリからプログラムコードを高速に読み出すことができる効果を奏する。
【００５５】
実施の形態２．上記実施の形態１では、ＣＩＵ２１をＤＲＡＭＣ１２と別個に設置するものについて示したが、図２に示すように、ＣＩＵ２１が、ＤＲＡＭ１６を制御するＤＲＡＭＣ１２を内蔵するようにしてもよい。
【００５６】
これにより、ＣＩＵ２１は、ＤＲＡＭＣ１２を制御することにより、ＤＲＡＭ１６に格納されたプログラムコードも読み出して、リングバッファ２２に蓄積することができる。よって、ＭＰＵ１のＣＰＵ３は、特別な回路を付加することなく、ＨＤＣ２のＤＲＡＭ１６に格納されたプログラムコードを高速に読み出すことができる効果を奏する。
【００５７】
実施の形態３．図３はこの発明の実施の形態３によるシステムＬＳＩを示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。２３はＨＤＣ＿ＣＵ１０がアドレスとリード要求信号（アクセス要求信号）を出力すると、そのアドレスをデコードし、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内のアドレスである場合には、そのアドレスとデータリード要求信号ＲＤＲ＿ＨＤＣ（アクセス要求信号）をＤＩＵ６に出力して、そのＤＩＵ６からデータを取得する一方、ＨＤＣ＿ＣＵ１０がアドレスとライト要求信号（アクセス要求信号）とデータを出力すると、そのアドレスをデコードし、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内のアドレスである場合には、そのアドレスとデータライト要求信号ＲＤＷ＿ＨＤＣ（アクセス要求信号）とデータをＤＩＵ６に出力して、そのデータをメモリ（ＲＯＭ７，ＳＲＡＭ８又はレジスタ９）に格納させるデータアクセス要求信号発生回路（アクセス回路）である。
【００５８】
次に動作について説明する。この実施の形態３は、ＨＤＣ２がデータアクセス要求信号発生回路２３を内蔵する点で従来例と相違するが、データアクセス要求信号発生回路２３を内蔵することにより、ＨＤＣ２のＨＤＣ＿ＣＵ１０は、ＭＰＵ１のＤＩＵ６を介して、ＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）に格納されているデータを高速に読み出すことができるとともに、データをＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）に高速に書き込むことができる。
【００５９】
最初に、ＨＤＣ２のＨＤＣ＿ＣＵ１０がＭＰＵ１のレジスタ９に格納されているデータ読み出す動作について説明する（以下の読み出し動作は、ＲＯＭ７，ＳＲＡＭ８からデータを読み出す場合と同様である）。
【００６０】
まず、ＨＤＣ＿ＣＵ１０は、ＭＰＵ１のレジスタ９を指すアドレスとリード要求信号をデータインタフェース回路１１とデータアクセス要求信号発生回路２３に出力する。ただし、ＨＤＣ＿ＣＵ１０とデータインタフェース回路１１とデータアクセス要求信号発生回路２３を接続するバス群のデータ形式やタイミングは、通常、ＨＤＣ＿ＣＵ１０がＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４，レジスタ１５，ＤＲＡＭ１６）からデータをリードする時に、データインタフェース回路１１に出力するものと同一である。
【００６１】
そして、データアクセス要求信号発生回路２３は、ＨＤＣ＿ＣＵ１０からレジスタ９を指すアドレスとリード要求信号を受けると、そのアドレスをデコードして、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内にあるか否かを判定する。
【００６２】
ここで、もし、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内にあれば、以後、データアクセス要求信号発生回路２３が動作して、データインタフェース回路１１は動作しないことになる。一方、そのアドレスがＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４，レジスタ１５，ＤＲＡＭ１６）の領域内にあれば、以後、データインタフェース回路１１が動作し、データアクセス要求信号発生回路２３は動作しないことになる。
【００６３】
そして、データアクセス要求信号発生回路２３は、ＨＤＣ＿ＣＵ１０からレジスタ９を指すアドレスを受けた場合には、そのアドレスをアドレスバスＡＤ＿ＣＰＵ＿ＨＤＣに出力すると同時に、データリード要求信号ＲＤＲ＿ＨＤＣをＤＩＵ６に出力する。
【００６４】
そして、ＤＩＵ６は、レジスタ９を指すアドレスとデータリード要求信号ＲＤＲ＿ＨＤＣを受けると、ＡＤ＿ＣＰＵ，ＲＤＲ，ＲＤＷ及びＤ＿ＢＵＳの使用を伴う動作を実行していない限り、レジスタ９を指すアドレスをデータアドレスバスＤ＿ＡＤに出力し、データ読み出し信号ＤＲＥを出力する（図８を参照）。
【００６５】
なお、ＤＩＵ６が動作中である場合、または、データアクセス要求信号発生回路２３からのデータリード要求信号ＲＤＲ＿ＨＤＣと同時に、ＣＰＵ３からアクセス要求を受けた場合、ＤＩＵ６は、ＣＰＵ３のデータアクセスを優先して実行する。ＣＰＵ３のデータアクセス期間中、データアクセス要求信号発生回路２３は、レジスタ９を指すアドレスとデータリード要求信号ＲＤＲ＿ＨＤＣの出力を継続する。そして、ＣＰＵ３の一連のデータアクセスが終了すると、ＤＩＵ６は、データアクセス要求信号発生回路２３の要求に答えて、レジスタ９を指すアドレスをデータアドレスバスＤ＿ＡＤに出力し、データ読み出し信号ＤＲＥを出力する。
【００６６】
そして、レジスタ９は、レジスタ９を指すアドレスとデータ読み出し信号ＤＲＥを受けると、格納しているデータ（ＨＤＣ２が必要とするデータ）をデータバスＤＢに出力する（図８を参照）。そして、ＤＩＵ６は、レジスタ９がデータをデータバスＤＢに出力すると、一旦、データバスＤＢからデータを取得して（図８を参照）、そのデータをバスＤ＿ＢＵＳ＿ＨＤＣに出力することにより、そのデータをデータアクセス要求信号発生回路２３に供給する。また、その際、ＤＩＵ６は、アクセス完了識別信号ＨＤＣ＿ＡＣＫをデータアクセス要求信号発生回路２３に出力する。
【００６７】
そして、データアクセス要求信号発生回路２３は、ＤＩＵ６からアクセス完了識別信号ＨＤＣ＿ＡＣＫを受けると、データリードの完了が解るので、レジスタ９を指すアドレスとデータリード要求信号ＲＤＲ＿ＨＤＣの出力を停止し、ＤＩＵ６によりバスＤ＿ＢＵＳ＿ＨＤＣに出力されたデータを取得する。そして、データアクセス要求信号発生回路２３は、バスＤ＿ＢＵＳ＿ＨＤＣからデータを取得すると、そのデータをＨＤＣ＿ＣＵ１０に出力する。この時点で、ＨＤＣ＿ＣＵ１０は、ＭＰＵ１のレジスタ９からデータを読み出せたことになる。
【００６８】
次に、ＨＤＣ２のＨＤＣ＿ＣＵ１０がＭＰＵ１のレジスタ９にデータを書き込む動作について説明する（以下の書き込み動作は、ＲＯＭ７，ＳＲＡＭ８にデータを書き込む場合と同様である）。
【００６９】
まず、ＨＤＣ＿ＣＵ１０は、ＭＰＵ１のレジスタ９を指すアドレスとライト要求信号と所望の書き込みデータをデータインタフェース回路１１とデータアクセス要求信号発生回路２３に出力する。ただし、ＨＤＣ＿ＣＵ１０とデータインタフェース回路１１とデータアクセス要求信号発生回路２３を接続するバス群のデータ形式やタイミングは、通常、ＨＤＣ＿ＣＵ１０がＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４，レジスタ１５，ＤＲＡＭ１６）にデータをライトする時に、データインタフェース回路１１に出力するものと同一である。
【００７０】
そして、データアクセス要求信号発生回路２３は、ＨＤＣ＿ＣＵ１０からレジスタ９を指すアドレスとライト要求信号とデータを受けると、そのアドレスをデコードして、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内にあるか否かを判定する。
【００７１】
ここで、もし、そのアドレスがＭＰＵ１のメモリ（ＲＯＭ７，ＳＲＡＭ８，レジスタ９）の領域内にあれば、以後、データアクセス要求信号発生回路２３が動作して、データインタフェース回路１１は動作しないことになる。一方、そのアドレスがＨＤＣ２のメモリ（ＲＯＭ１３，ＳＲＡＭ１４，レジスタ１５，ＤＲＡＭ１６）の領域内にあれば、以後、データインタフェース回路１１が動作し、データアクセス要求信号発生回路２３は動作しないことになる。
【００７２】
そして、データアクセス要求信号発生回路２３は、ＨＤＣ＿ＣＵ１０からレジスタ９を指すアドレスを受けた場合には、そのアドレスをアドレスバスＡＤ＿ＣＰＵ＿ＨＤＣに出力すると同時に、データライト要求信号ＲＤＷ＿ＨＤＣをＤＩＵ６に出力する。また、その際、所望の書き込みデータをバスＤ＿ＢＵＳ＿ＨＤＣ（Ｄ＿ＢＵＳ＿ＨＤＣは双方向バスとする）。
【００７３】
そして、ＤＩＵ６は、レジスタ９を指すアドレスとデータライト要求信号ＲＤＷ＿ＨＤＣとデータを受けると、ＡＤ＿ＣＰＵ，ＲＤＲ，ＲＤＷ及びＤ＿ＢＵＳの使用を伴う動作を実行していない限り、レジスタ９を指すアドレスをデータアドレスバスＤ＿ＡＤに出力すると同時に、書き込みデータをデータバスＤＢに出力し、また、データ書き込み信号ＤＷＥをレジスタ９に出力する（図９を参照）。
【００７４】
なお、ＤＩＵ６が動作中である場合、または、データアクセス要求信号発生回路２３からのデータライト要求信号ＲＤＷ＿ＨＤＣと同時に、ＣＰＵ３からアクセス要求を受けた場合、ＤＩＵ６は、ＣＰＵ３のデータアクセスを優先して実行する。ＣＰＵ３のデータアクセス期間中、データアクセス要求信号発生回路２３は、レジスタ９を指すアドレスとデータライト要求信号ＲＤＷ＿ＨＤＣの出力を継続する。そして、ＣＰＵ３の一連のデータアクセスが終了すると、ＤＩＵ６は、データアクセス要求信号発生回路２３の要求に答えて、レジスタ９を指すアドレスをデータアドレスバスＤ＿ＡＤに出力し、データ書き込み信号ＤＷＥを出力し、書き込みデータをデータバスＤＢに出力する。
【００７５】
そして、レジスタ９は、レジスタ９を指すアドレスと、書き込みデータと、データ書き込み信号ＤＷＥを受けると、データバスＤＢから書き込みデータを取得して格納する。
【００７６】
これにより、書き込みデータの格納が完了するが、ＤＩＵ６は、データ書き込み信号ＤＷＥの出力が完了すると（図９を参照）、レジスタ９に対するデータの書き込みが完了したものと判断し、アクセス完了識別信号ＨＤＣ＿ＡＣＫをデータアクセス要求信号発生回路２３に出力する。
【００７７】
そして、データアクセス要求信号発生回路２３は、ＤＩＵ６からアクセス完了識別信号ＨＤＣ＿ＡＣＫを受けると、データライトの完了が解るので、レジスタ９を指すアドレスとデータライト要求信号ＲＤＷ＿ＨＤＣとＤ＿ＢＵＳ＿ＨＤＣの出力を停止する。
【００７８】
最後に強調しておきたいのは以下の点である。ＨＤＣ２がＭＰＵ１のメモリを直接読み出す（書き込む）方法として、容易に考えつくのが、ＭＰＵのメモリに対するデータインタフェース回路をＨＤＣ２内に設ける方法である。この方法の場合、ＭＰＵ１のＤＩＵ６と同等の回路規模のデータインタフェース回路をＨＤＣ２内に設ける必要があるので、チップ面積が増大する。
【００７９】
一方、実施の形態３（図３）の構成は、従来例（図４）の構成にデータアクセス要求信号発生回路２３を追加したものであるが、データアクセス要求信号発生回路２３は、ＤＩＵ６と比べて小規模回路であるので、チップ面積の増加は比較的少なくてすむ。
【００８０】
データアクセス要求信号発生回路２３の回路規模が小規模である理由は、データアクセスに必要な信号（アドレス、データ、書き込み要求、読み出し要求）は元々図４のバス群に揃っているので、データアクセス時のデータアクセス要求信号発生回路２３の役割は、バス群から受け取ったデータをＤＩＵ６に対して、ほぼ、そのままの形で出力して、ＤＩＵ６からアクセス完了識別信号ＨＤＣ＿ＡＣＫが返ってくるまで保持することぐらいだからである（データアクセス要求信号発生回路２３の動作の単純さに比べて、ＤＩＵ６はメモリアクセスの複雑なバスタイミングを制御しなければならないので、ＤＩＵ６の回路規模は大きくなる）。よって、この実施の形態３によれば、小規模な回路を従来例に追加するだけで、ＨＤＣ２がＭＰＵ１のメモリに対して、直接的にアクセスすることができる。
【００８１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８２】
【図１】この発明の実施の形態１によるシステムＬＳＩを示す構成図である。
【図２】この発明の実施の形態２によるシステムＬＳＩを示す構成図である。
【図３】この発明の実施の形態３によるシステムＬＳＩを示す構成図である。
【図４】従来のシステムＬＳＩを示す構成図である。
【図５】従来のシステムＬＳＩの動作を示すフローチャートである。
【図６】従来のシステムＬＳＩの動作を示すフローチャートである。
【図７】ＣＩＵ４によるプログラムコードの読み出しタイミングを示すタイミング図である。
【図８】ＤＩＵ６によるデータの読み出しタイミングを示すタイミング図である。
【図９】ＤＩＵ６によるデータの書き込みタイミングを示すタイミング図である。
【符号の説明】
【００８３】
１  ＭＰＵ、２  ＨＤＣ（制御ＬＳＩ）、３  ＣＰＵ、７，１３  ＲＯＭ（メモリ）、８，１４  ＳＲＡＭ（メモリ）、９  レジスタ（メモリ）、１０  ＨＤＣ＿ＣＵ（コントロール回路）、１２  ＤＲＡＭＣ（ＤＲＡＭ制御回路）、１６  ＤＲＡＭ、２１  ＣＩＵ（コードインタフェース回路）、２３  データアクセス要求信号発生回路（アクセス回路）。
【図１】
2008226280.tif 000003
【図２】
2008226280.tif 000004
【図３】
2008226280.tif 000005
【図４】
2008226280.tif 000006
【図５】
2008226280.tif 000007
【図６】
2008226280.tif 000008
【図７】
2008226280.tif 000009
【図８】
2008226280.tif 000010
【図９】
2008226280.tif 000011