(57)【要約】【課題】ホストＣＰＵの負荷を軽減し、装置全体の性能の向上を図ることが可能なデータ処理装置を提供すること。【解決手段】演算器１０は、単一命令で複数データを処理するＳＩＭＤプロセッサ１４と、ＳＩＭＤプロセッサ１４と演算器用バス１３を介して接続され、ＳＩＭＤプロセッサ１４を制御する第２ＣＰＵ１１とを含む。ホストシステム２０は、データ処理装置１の全体的な制御を行なうホストＣＰＵ２１と、ホストＣＰＵ２１と第１バス２３を介して接続される内蔵メモリ２２および周辺回路２４と、第２バス２６に接続される周辺回路２４とを含む。第２ＣＰＵ１１は、演算器用バス１３および第１バス２３を介して外付けＦｌａｓｈ／ＲＯＭ２に対するアクセスを行ない、ＳＩＭＤプロセッサ１４は、第２バス２６を介して外付けメモリ３に対するアクセスを行なう。したがって、ホストＣＰＵの負荷を軽減し、装置全体の性能の向上を図ることが可能となる。【選択図】図１
2010003151.tif 000002
【特許請求の範囲】
【請求項１】
演算器とホストシステムとが接続されたデータ処理装置であって、
前記演算器は、単一命令で複数データを処理する第１のプロセッサと、
前記第１のプロセッサと演算器用バスを介して接続され、前記第１のプロセッサを制御する第２のプロセッサとを含み、
前記ホストシステムは、データ処理装置の全体的な制御を行なうホストプロセッサと、
前記ホストプロセッサと第１のバスを介して接続される第１のメモリおよび周辺回路と、
第２のバスに接続される第２のメモリとを含み、
前記第２のプロセッサは、前記演算器用バスおよび前記第１のバスを介して前記第１のメモリおよび前記周辺回路に対するアクセスを行ない、
前記第１のプロセッサは、前記第２のバスを介して前記第２のメモリに対するアクセスを行なう、データ処理装置。
【請求項２】
前記データ処理装置はさらに、前記第２のプロセッサから出力されるアドレスを前記ホストシステム側のアドレスマップに対応するアドレスに変換して前記第１のバスに出力するアドレス変換回路を含む、請求項１記載のデータ処理装置。
【請求項３】
前記データ処理装置はさらに、アドレス変換のマッピング情報が設定される通信レジスタを含み、
前記アドレス変換回路は、前記通信レジスタに設定されたマッピング情報に基づいて、前記第２のプロセッサから出力されるアドレスを前記ホストシステム側のアドレスマップに対応するアドレスに変換して前記第１のバスに出力する、請求項２記載のデータ処理装置。
【請求項４】
演算器とホストシステムとが接続されたデータ処理装置であって、
前記演算器は、単一命令で複数データを処理する第１のプロセッサと、
前記第１のプロセッサと演算器用バスを介して接続され、前記第１のプロセッサを制御する第２のプロセッサと、
前記第２のプロセッサのブート処理を行なうブート回路とを含み、
前記ホストシステムは、データ処理装置の全体的な制御を行なうホストプロセッサと、
前記ホストプロセッサと第１のバスを介して接続される第１のメモリおよび周辺回路とを含み、
前記第２のプロセッサは、前記ブート回路から出力される命令を実行することによりブート処理を行ない、
前記ホストプロセッサは、前記第１のメモリに記憶される命令を実行することによりブート処理を行なう、データ処理装置。
【請求項５】
前記データ処理装置はさらに、前記第１のバスに接続され、前記ホストプロセッサによって設定された値に基づいて前記ブート回路を制御する通信レジスタを含む、請求項４記載のデータ処理装置。
【請求項６】
前記第２のプロセッサは、演算器のリセット時には自己ループ命令を前記ブート回路から受けて実行し、演算器の起動時には前記通信レジスタに設定されたブート分岐アドレスにジャンプする命令を前記ブート回路から受けて実行する、請求項５記載のデータ処理装置。
【請求項７】
前記データ処理装置はさらに、前記第２のプロセッサから出力されるアドレスを前記ホストシステム側のアドレスマップに対応するアドレスに変換して前記第１のバスに出力するアドレス変換回路を含む、請求項４〜６のいずれかに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳＩＭＤ（Single Instruction Multiple Data）型プロセッサとそれを制御するホストＣＰＵ（Central Processing Unit）とを含んだデータ処理装置に関し、特に、ＳＩＭＤ型プロセッサを効率的に制御を行なうことが可能なデータ処理装置に関する。
【背景技術】
【０００２】
近年、携帯端末機器、デジタル家電機器などの普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。このようなデジタル信号処理を高速に行なう１つの方法として、ＳＩＭＤ方式のプロセッサに処理を行なわせることが挙げられる。その他、デジタル信号処理をＤＳＰ（Digital Signal Processor）を用いて行なうことも挙げられる。
【０００３】
一般に、ＳＩＭＤプロセッサは下記の特許文献１〜４に記載されているように、通常の周辺ＩＰ（Intellectual Property）などと同様にバスに接続され、ホストＣＰＵがＳＩＭＤプロセッサを制御しながら、その他の処理を行なうことが多い。また、ＤＳＰを制御するホストＣＰＵを有するプロセッサとして下記の特許文献５がある。
【特許文献１】特開２００６−９９２３２号公報
【特許文献２】特開２００６−１６４１８３号公報
【特許文献３】特開２００６−１２７４６０号公報
【特許文献４】特開２００８−４７０３１号公報
【特許文献５】特開平９−２２３７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述のようにＳＩＭＤプロセッサを搭載したシステムにおいては、ホストＣＰＵがシステム全体の制御を行なっており、ホストＣＰＵの処理量に占めるＳＩＭＤプロセッサの制御に費やす割合が多くなる。アプリケーションによってはＳＩＭＤプロセッサよりもＣＰＵの方が効率的に処理を実行できる場合もあり、ＳＩＭＤプロセッサとＣＰＵとが協調して処理を行なうことが必要な場合もある。このようなアプリケーションにおいて、ＳＩＭＤプロセッサとＣＰＵとを協調して動作させるためには、処理能力の高いＣＰＵを用意する、などの対策が必要となる。そのため、アプリケーションのプログラミングが複雑になる、消費電力が増加する、パッケージ対策などによるコストが増加する、などの問題点がある。
【０００５】
また、ＳＩＭＤプロセッサの専用ＣＰＵを用意する場合を考えると、ホストＣＰＵの起動用のメモリのほかに、ＳＩＭＤプロセッサ用のＣＰＵ起動用のメモリが必要となり、ブートメモリを２重に持たなければならなくなる。そのため、ホストシステムのブートメモリのＩ／Ｏ端子のほかに、ＳＩＭＤプロセッサ用のＣＰＵのブートメモリのＩ／Ｏ端子が必要となりコストが増加する。
【０００６】
一方、ブートメモリの２重持ちを回避するために、ブートメモリをホストＣＰＵとＳＩＭＤプロセッサ用のＣＰＵとで共用させることも考えられる。しかしながら、多くのＣＰＵはリセット解除後に最初にメモリにフェッチするアドレスが固定されており、同じアドレスであることが多い。したがって、ホストＣＰＵとＳＩＭＤプロセッサ用のＣＰＵとが異なる内容の起動プログラムを実行する場合や、ＣＰＵの種類が異なる場合には、ブートメモリを共用することができない。
【０００７】
また、ブートメモリと同様に、ホストシステム側とＳＩＭＤプロセッサ側のそれぞれに外付けメモリのインタフェースを用意する必要があるため、外付けメモリの２重持ち、インタフェース端子の増加によりコストが増加することになる。
【０００８】
ホストＣＰＵに対してＳＩＭＤプロセッサのアドレスを簡易な演算等によりアドレス変換を行ない、ブートメモリが受けるＳＩＭＤプロセッサの発行するアドレスとホストＣＰＵの発行するアドレスとを異ならせることで、ホストＣＰＵとＳＩＭＤプロセッサとでメモリを共用することは容易に考えられる。しかしながら、ホストＣＰＵとＳＩＭＤプロセッサとのデータ処理の連携においては、データ格納メモリの受けるアドレスが同じである同じデータへのアクセスであっても、ホストＣＰＵとＳＩＭＤプロセッサ夫々のプログラムでは異なるアドレスとして管理する必要が生じ、プログラム開発上において不良発生や管理の困難性の原因となる。
【０００９】
また、ＳＩＭＤプロセッサの開発環境は、ＳＩＭＤプロセッサを制御するＣＰＵの環境にＳＩＭＤプロセッサ用のデバッグ機能を追加するアドオン形式になる場合が多い。そのため、ＳＩＭＤプロセッサの開発環境は、ホストＣＰＵ毎にＳＩＭＤプロセッサの開発環境を用意する必要がある。
【００１０】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ホストＣＰＵの負荷を軽減し、装置全体の性能の向上を図ることが可能なデータ処理装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明の一実施例によれば、演算器とホストシステムとが接続されたデータ処理装置が提供される。演算器は、単一命令で複数データを処理するＳＩＭＤプロセッサと、ＳＩＭＤプロセッサと演算器用バスを介して接続され、ＳＩＭＤプロセッサを制御する第２ＣＰＵとを含む。ホストシステムは、データ処理装置の全体的な制御を行なうホストＣＰＵと、ホストＣＰＵと第１バスを介して接続される外付けＦｌａｓｈ／ＲＯＭおよび周辺回路と、第２バスに接続される外付けメモリとを含む。第２ＣＰＵは、演算器用バスおよび第１バスを介して外付けＦｌａｓｈ／ＲＯＭおよび周辺回路に対するアクセスを行ない、ＳＩＭＤプロセッサは、第２バスを介して外付けメモリに対するアクセスを行なう。
【発明の効果】
【００１２】
この実施例によれば、演算器にＳＩＭＤプロセッサを制御する第２ＣＰＵが設けられるので、ホストＣＰＵの負荷を軽減し、装置全体の性能の向上を図ることが可能となる。
【発明を実施するための最良の形態】
【００１３】
（第１の実施の形態）
図１は、本発明の第１の実施の形態におけるデータ処理装置の構成を示すブロック図である。このデータ処理装置１は、外付けＦｌａｓｈ／ＲＯＭ２および外付けメモリ３が接続されており、演算器（以下、ＭＸ−１とも呼ぶ。）１０と、ホストシステム２０とを含む。
【００１４】
演算器１０は、第２ＣＰＵ１１と、ＣＰＵ専用メモリ１２と、ＳＩＭＤプロセッサ（ＭＸコア）１４と、アドレス変換回路１５と、ブート回路１６と、通信レジスタ１７とを含む。第２ＣＰＵ１１、ＳＩＭＤプロセッサ１４、アドレス変換回路１５およびブート回路１６は、演算器用バス１３に接続される。
【００１５】
また、ホストシステム２０は、ホストＣＰＵ２１と、内蔵メモリ２２と、周辺回路２４と、バスブリッジ２５と、ＤＭＡＣ（Direct Memory Access Controller）２７とを含む。ホストＣＰＵ２１、内蔵メモリ２２、周辺回路２４およびバスブリッジ２５は、第１バス（システムバス）に接続される。この第１バス２３には、演算器１０内のアドレス変換回路１５、通信レジスタ１７および外付けＦｌａｓｈ／ＲＯＭ２も接続される。
【００１６】
また、周辺回路２４、バスブリッジ２５およびＤＭＡＣ２７は、第２バス（メディアバス）２６に接続される。この第２バス２６には、演算器１０内のＳＩＭＤプロセッサ１４および外付けメモリ３も接続される。
【００１７】
第２ＣＰＵ１１は、演算器１０全体の制御を行なうためのものであり、演算器用バス１３を介してＳＩＭＤプロセッサ１４、アドレス変換回路１５およびブート回路１６に接続される。第２ＣＰＵ１１は、ＣＰＵ専用メモリ１２に記憶されるプログラムを実行することにより、ＳＩＭＤプロセッサ１４の制御、ＳＩＭＤプロセッサ１４用命令のロードなどを行ない、ＳＩＭＤプロセッサ１４と協調してアプリケーションの実行などを行なう。なお、第２ＣＰＵ１１は図示しない命令キャッシュおよびデータキャッシュを搭載しているものとする。
【００１８】
ＣＰＵ専用メモリ１２には、第２ＣＰＵ１１によって実行されるプログラム、割込みベクタなどが記憶される。
【００１９】
ＳＩＭＤプロセッサ１４は、細粒度のＳＩＭＤ型プロセッサである。ＳＩＭＤプロセッサ１４は、第２バス２６を介して外付けメモリ３などから処理すべきデータをアクセスする。第２バス２６にはアドレス変換回路は接続されず、またＳＩＭＤプロセッサでの演算に用いるデータの転送に用いるバスのためアドレスバスがなくてもよい。そのため、第２バス２６を介するアクセスにおいては、後述のアドレス変換は行なわれない。なお、このＳＩＭＤプロセッサ１４の詳細は後述する。図１においては、ＳＩＭＤプロセッサが１つしか実装されていないが、複数のＳＩＭＤプロセッサを実装することも可能である。
【００２０】
アドレス変換回路１５は、第１のバス２３において、演算器１０側とホストシステム２０側とのアドレス空間の競合を避けるために、予め設定されたアドレス変換マップに従って、第１バスに含まれるアドレスバス（スプリットトランザクションバスでのアクセスアドレス転送期間も相当する）上のアドレスに対してアドレス変換を行なう。たとえば、第２ＣＰＵ１１が外付けＦｌａｓｈ／ＲＯＭ２に命令フェッチのためにアクセスする場合、アドレス変換回路１５が演算器用バス１３を介して第２ＣＰＵ１１からアドレスを受け、アドレス変換を行なった後のアドレスを第１バス２３に出力する。なお、アドレス変換回路１５は、演算器用バス１３のデータバスおよび第１バス２３のデータバス（スプリットトランザクションバスでのデータ転送期間も相当する）にも接続されており、演算器用バス１３と第１バス２３との間のデータ転送も行なっているが、データバス上にデータとして転送されるアドレス情報に対するアドレス変換は行なわない。
【００２１】
上記の通り、第２ＣＰＵが主に命令フェッチのために用いる第１バスのアドレスバスに対してアドレス変換を行ない、第１バスのデータバスおよびＳＩＭＤプロセッサでの演算データの転送のために用いる第２バスではアドレス変換を行なわないように構成することにより、第２ＣＰＵの発行する命令フェッチアドレスがホストＣＰＵの命令フェッチアドレスと同じであったとしても外付けＦｌａｓｈ／ＲＯＭ２の受けるアドレスは異なるものとなり、一方でＤＭＡＣ等によりデータ転送が行なわれるＳＩＭＤプロセッサでの演算データの格納アドレスはアドレス変換の対象とはならないため、演算器とホストシステムとの両方にとって同じデータを同じアドレスでアクセスすることが可能となる。
【００２２】
ブート回路１６は、演算器１０のリセット時および起動時における処理を第2ＣＰＵ１１に行なわせる回路である。後述のように、ブート回路１６は、第２ＣＰＵ１１からのアクセスに対して、リセット時には自己ループ命令（またはｗａｉｔ命令）を返し、演算器１０の起動時には通信レジスタ１７に設定されたブート分岐アドレスにジャンプする命令を返す。
【００２３】
通信レジスタ１７は、ホストシステム２０から演算器１０へのアクセス経路である。ホストシステム２０側からは、通信レジスタ１７をホストシステム２０の周辺回路の１つとして見ることができる。ホストシステム２０は、通信レジスタ１７に実装されている各種レジスタにアクセスすることで、演算器１０の制御を行なう。各種レジスタの詳細については後述する。
【００２４】
ホストＣＰＵ２１は、内蔵メモリ２２に記憶されるプログラムを実行することによりデータ処理装置１の全体的な制御を行なう。なお、ホストＣＰＵ２１は図示しない命令キャッシュおよびデータキャッシュを搭載しているものとする。
【００２５】
周辺回路２４は、第１バス２３および第２バス２６に接続されており、主にホストＣＰＵ２１による制御によって画像処理などの処理を行なう。
【００２６】
バスブリッジ２５は、主に第１バス２３と第２バス２６とのバス接続を行なうものであり、バスクロックの周波数変換などを行なう。
【００２７】
ＤＭＡＣ２７は、外付けメモリ３と、演算器１０内のＳＩＭＤプロセッサ１４やホストシステム２０内の周辺回路２４などとの間におけるＤＭＡ転送を行なう。たとえば、第２ＣＰＵ１１からの要求に従い、外付けメモリ３に記憶されるデータを第２バス２６を介してＳＩＭＤプロセッサ１４に転送する。外付けメモリ３のデータバスは第２バス２６に接続されており、ＤＭＡＣ２７を介さずに直接第２バスを介してデータを入出力することにより、高速にＤＭＡ転送が行なえるようになっている。
【００２８】
図２は、ＳＩＭＤプロセッサ１４の構成例を示す図である。ＳＩＭＤプロセッサ（ＭＸコア）１４は、ｍ個の演算器７１−１〜７１−ｍと、データレジスタ７２と、コントローラ７３と、バスインタフェース７５と、相互接続用スイッチ７６とを含む。また、コントローラ７３は、命令メモリ７４を含む。
【００２９】
データレジスタ７２は、たとえばメディアデータをサンプリングされたデータの配列として記憶する。たとえば、ＤＭＡＣ２７の制御により外付けメモリ３に記憶されるデータが第２バス２６を介してデータレジスタ７２に転送される。
【００３０】
演算器７１−１〜７１−ｍのそれぞれは、データレジスタ７２に記憶された配列データの各要素に対して演算を行うことにより並列に処理を行なう。
【００３１】
バスインタフェース７５は、演算器用バス１３または第２バス２６を介してデータの入出力を行なう。バスインタフェース７５は、第２ＣＰＵ１１から信号処理要求を受けると、その信号処理要求をコントローラ７３に出力する。また、バスインタフェース７５は、コントローラ７３から信号処理結果を受けると、その信号処理結果を演算器用バス１３または第２バス２６を介して出力する。
【００３２】
コントローラ７３は、バスインタフェース７５から信号処理要求を受けると、命令メモリ７４に格納されたマイクロコードに対応する演算を順次演算器７１−１〜７１−ｍに行なわせ、信号処理要求に対応した信号処理を行なわせる。そして、コントローラ７３は、信号処理結果をバスインタフェース７５に出力する。
【００３３】
相互接続用スイッチ７６は、演算器７１−１〜７１−ｍの接続経路を切換えることができ、演算器７１−１〜７１−ｍに異なるエントリのデータの演算を行なわせることも可能である。したがって、各エントリに異なるデータを格納しておき、演算器７１−１〜７１−ｍに並列演算を行なわせることにより高速にデータ演算を行なうことが可能である。
【００３４】
図３は、データ処理装置１におけるアドレスマップの一例を示す図である。図３において、左半分は演算器１０におけるアドレスマップ（以下、演算器側アドレスマップと呼ぶ。）を示しており、右半分はホストシステム２０におけるアドレスマップ（以下、ホストシステム側アドレスマップと呼ぶ。）を示している。
【００３５】
演算器側アドレスマップにおいて、アドレス空間Ｈ’００００＿００００〜Ｈ’１ＦＦＦ＿ＦＦＦＦが、演算器１０内のブート回路１６およびＣＰＵ専用メモリ１２に割り付けられており、命令キャッシュおよびデータキャッシュの対象となっていない。
【００３６】
演算器側アドレスマップにおいて、アドレス空間Ｈ’２０００＿００００〜Ｈ’３ＦＦＦ＿ＦＦＦＦが、ホストシステム２０側の外部Ｆｌａｓｈ／ＲＯＭ２に割り付けられており、命令キャッシュおよびデータキャッシュの対象となっている。
【００３７】
演算器側アドレスマップにおいて、アドレス空間Ｈ’４０００＿００００〜Ｈ’５ＦＦＦ＿ＦＦＦＦが、ホストシステム２０側の外部メモリ３に割り付けられており、命令キャッシュおよびデータキャッシュの対象となっている。
【００３８】
演算器側アドレスマップにおいて、アドレス空間Ｈ’Ａ０００＿００００〜Ｈ’ＤＦＦＦ＿ＦＦＦＦが、ホストシステム２０側の命令／データキャッシュ、周辺回路２４、内蔵メモリ２２などに割り付けられており、命令キャッシュおよびデータキャッシュの対象とはなっていない。
【００３９】
演算器側アドレスマップにおいて、アドレス空間Ｈ’Ｅ０００＿００００〜Ｈ’ＦＦＦＦ＿ＦＦＦＦが、演算器１０内の命令／データキャッシュ、ＳＩＭＤプロセッサ１４およびその他の演算器周辺回路に割り付けられており、命令キャッシュおよびデータキャッシュの対象とはなっていない。
【００４０】
ホストシステム側アドレスマップにおいて、アドレス空間Ｈ’００００＿００００〜Ｈ’１ＦＦＦ＿ＦＦＦＦが、外部Ｆｌａｓｈ／ＲＯＭ２に割り付けられており、命令キャッシュおよびデータキャッシュの対象となっている。
【００４１】
ホストシステム側アドレスマップにおいて、アドレス空間Ｈ’２０００＿００００〜Ｈ’３ＦＦＦ＿ＦＦＦＦが、ホストシステム２０側の外部メモリ３に割り付けられており、命令キャッシュおよびデータキャッシュの対象となっている。
【００４２】
ホストシステム側アドレスマップにおいて、アドレス空間Ｈ’Ｃ０００＿００００〜Ｈ’ＦＦＦＦ＿ＦＦＦＦが、ホストシステム側の命令／データキャッシュ、周辺回路２４、内蔵メモリ２２などに割り付けられており、命令キャッシュおよびデータキャッシュの対象とはなっていない。
【００４３】
たとえば、演算器１０内の第２ＣＰＵ１１が外部Ｆｌａｓｈ／ＲＯＭ２にアクセスする場合、アドレス変換回路１５は、第２ＣＰＵ１１から出力されたアドレス（Ｈ’２０００＿００００〜Ｈ’３ＦＦＦ＿ＦＦＦＦ）を、ホストシステム側アドレスマップに対応するアドレス（Ｈ’００００＿００００〜Ｈ’１ＦＦＦ＿ＦＦＦＦ）に変換して第１バス２３に出力する。第２ＣＰＵ１１がホストシステム２０側の他のリソースにアクセスする場合も同様にアドレス変換が行なわれる。
【００４４】
このアドレス変換は、演算器１０が第１バス２３を介してホストシステム２０側のリソースにアクセスする場合にのみ行なわれ、演算器１０が第２バス２６を介してホストシステム２０側のリソースにアクセスする場合には行なわれない。したがって、たとえばＤＭＡＣ２７によって外部メモリ３からＳＩＭＤプロセッサ１４にデータ転送を行なう場合、ホストシステム２０側のアドレスを指定する必要がある。
【００４５】
図４は、演算器１０から外付けメモリ３へのバスアクセスの一例を示す図である。演算器１０が第１バス２３を介して外付けメモリ３から命令をフェッチする場合、アドレス変換回路１５が演算器１０側のアドレス（Ｈ’４０００＿００００，Ｈ’４０００＿００１Ｃ，Ｈ’４０００＿００２０）をホストシステム２０側のアドレス（Ｈ’２０００＿００００，Ｈ’２０００＿００１Ｃ，Ｈ’２０００＿００２０）に変換する。
【００４６】
また、演算器１０が第２バスを介して外付けメモリ３からデータを読み込む場合、アドレス変換は行なわれない。したがって、ホストシステム２０側のアドレスを指定してアクセスが行なわれる。
【００４７】
図５および図６は、通信レジスタ１７に設けられたレジスタ群を説明するための図である。ブート分岐アドレスレジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０の起動時に演算器１０の初期化プログラムなどが配置される先頭アドレスを指定するのに使用される。
【００４８】
ブート起動レジスタは、ホストシステム２０側から設定されるレジスタであり、“１”が書き込まれると演算器１０（第２ＣＰＵ１１）がブート分岐アドレスレジスタで指定されたアドレスにジャンプし、演算器１０の初期化プログラムなどを実行する。
【００４９】
ＭＸ−１コマンドレジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０の処理を開始する際、ホストシステム２０から処理を行なうのに必要な情報が設定される。
【００５０】
ＭＸ−１タスク実行トリガーレジスタは、ホストシステム２０側から設定されるレジスタであり、“１”が書き込まれると演算器１０による処理が開始される。
【００５１】
ＭＸ−１完了ステータスレジスタは、演算器１０側から設定されるレジスタであり、演算器１０が処理を完了したときに処理結果などのホストシステム２０に伝えたい情報を設定するのに使用される。
【００５２】
ＭＸ−１割り込み出力レジスタは、演算器１０側から設定されるレジスタであり、演算器１０が処理を完了したときに“１”を書き込むことで、ホストシステム２０に対して演算器１０の処理が完了したことを示す割込み信号を出力する。
【００５３】
アドレスマップ０レジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０のアドレス空間「Ｈ’２０００＿００００〜Ｈ’３ＦＦＦ＿ＦＦＦＦ」に対応するホストシステム２０側のアドレス空間の先頭アドレスを指定するのに使用される。図３に示すアドレスマップの場合には、「Ｈ’００００＿００００」が設定される。
【００５４】
アドレスマップ１レジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０のアドレス空間「Ｈ’４０００＿００００〜Ｈ’５ＦＦＦ＿ＦＦＦＦ」に対応するホストシステム２０側のアドレス空間の先頭アドレスを指定するのに使用される。図３に示すアドレスマップの場合には、「Ｈ’２０００＿００００」が設定される。
【００５５】
アドレスマップ２レジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０のアドレス空間「Ｈ’Ａ０００＿００００〜Ｈ’ＢＦＦＦ＿ＦＦＦＦ」に対応するホストシステム２０側のアドレス空間の先頭アドレスを指定するのに使用される。図３に示すアドレスマップの場合には、「Ｈ’Ｃ０００＿００００」が設定される。
【００５６】
アドレスマップ３レジスタは、ホストシステム２０側から設定されるレジスタであり、演算器１０のアドレス空間「Ｈ’Ｃ０００＿００００〜Ｈ’ＤＦＦＦ＿ＦＦＦＦ」に対応するホストシステム２０側のアドレス空間の先頭アドレスを指定するのに使用される。図３に示すアドレスマップの場合には、「Ｈ’Ｅ０００＿００００」が設定される。
【００５７】
図７は、データ処理装置１における演算器１０の処理手順を説明するためのフローチャートである。まず、演算器１０およびホストシステム２０にリセット信号が入力されると、ホストシステム２０内のホストＣＰＵ２１はブートを開始する（Ｓ１）。このとき、演算器１０に対するクロック供給が開始され、第２ＣＰＵ１１はブート回路１６から自己ループ命令を受けて無限ループに入る（Ｓ２）。
【００５８】
次に、ホストシステム２０内のホストＣＰＵ２１は、演算器１０の起動を行なう（Ｓ３）。ホストＣＰＵ２１は、通信レジスタ１７のブート分岐アドレスレジスタに、第２ＣＰＵ１１が実行するプログラムの先頭アドレスを設定し、ブート起動レジスタに“１”を書き込むことによりブート起動信号（割込み信号）を第２ＣＰＵ１１に出力させる。そして、演算器１０からのスリープ割り込み待ちとなる。ホストＣＰＵ２１は、演算器１０からのスリープ割り込みが入力されるまで他の処理を行なう。
【００５９】
演算器１０内の第２ＣＰＵ１１は、ブート起動信号（割込み信号）を受けると、ブート分岐アドレスにジャンプする（Ｓ４）。そして、第２ＣＰＵ１１は、外付けＦｌａｓｈ／ＲＯＭ２からデータを読み出して演算器１０の初期化を行なう（Ｓ５）。
【００６０】
演算器１０の初期化は、割り込み設定、メインルーチンなどの必要プログラムのロード、ＳＩＭＤプロセッサ１４の初期化などである。演算器１０の初期化が終了すると、低消費電力化のために図示しないＭＸＳＬＥＥＰ＿ＳＹＳ信号をアサートして、演算器１０をスリープ状態にする（Ｓ６）。
【００６１】
ホストＣＰＵ２０は、ＭＸＳＬＥＥＰ＿ＳＹＳ信号（スリープ割り込みと兼用）がアサートされると、演算器１０に供給されるクロック信号を停止する。
【００６２】
次に、ホストシステム２０内のホストＣＰＵ２１は、演算器１０のタスク起動処理を行なう（Ｓ７）。ホストＣＰＵ２１は、共用メモリ領域に個々のタスクに必要なデータを書き込み、通信レジスタ１７のＭＸ−１コマンドレジスタにＭＸ−１コマンドを設定する。そして、ＭＸ−１タスク実行トリガーレジスタに“１”を書き込むことにより、演算器１０に割り込みを発行して起動させる。
【００６３】
演算器１０内の第２ＣＰＵ１１は、ホストシステム２０からの割り込みを受付けると、ＳＬＥＥＰ信号を自動解除して演算器１０へのクロック供給を開始する（Ｓ８）。そして、第２ＣＰＵ１１は、通信レジスタ１７のＭＸ−１コマンドレジスタに設定されたＭＸ−１コマンドを解析し、解析結果に応じて実行プログラム（タスク）にジャンプする（Ｓ９）。
【００６４】
次に、演算器１０内の第２ＣＰＵ１１は、ＳＩＭＤプロセッサ１４を制御しながら個々のタスク処理を行なう（Ｓ１０）。このとき、第２ＣＰＵ１１は、第１バス２３を介してホストシステム２０側のリソースにアクセスを行なう。また、ＳＩＭＤプロセッサ１４は、第２バスを介して外付けメモリ３に対するデータ転送を行なう。
【００６５】
タスク処理が終了すると、演算器１０内の第２ＣＰＵ１１は、通信レジスタ１７のＭＸ−１完了ステータスレジスタにタスク完了状態を設定し、ホストシステム２０にタスク完了処理を通知する（Ｓ１１）。この通知は、図示しないＭＸ−１完了割込信号をアサートすることにより行なわれる（Ｓ１２）。
【００６６】
ホストシステム２０内のホストＣＰＵ２１は、演算器１０からＭＸ−１完了割り込みを受けると、ＭＸ−１完了ステータスレジスタの内容をチェックし、ステップＳ３またはステップＳ７に戻って以降の処理を繰り返す。
【００６７】
以上説明したように、本実施の形態におけるデータ処理装置１によれば、ホストＣＰＵ２１以外にＳＩＭＤプロセッサ１４の制御用の第２ＣＰＵ１１を新たに追加したので、ホストＣＰＵ２１がＳＩＭＤプロセッサ１４の制御を行なう必要がなくなる。そのため、ホストＣＰＵ２１の負荷が削減され、他の処理を行なうことができ、データ処理装置１全体の性能の向上が可能となる。また、ホストＣＰＵ２１のクロック周波数を下げるなどのスペックダウンを行なうことができ、コストの削減が可能となる。
【００６８】
また、演算器１０とホストシステム２０とのマルチシステム構成としたため、演算器１０とホストシステム２０との間にアドレス変換回路１５を設けるだけでホストシステム２０のプラットホームに依存しない演算器１０を構築することが可能となる。
【００６９】
また、演算器１０は、ホストシステム２０側のリソースにアクセスすることができるため、演算器１０内に用途に応じた周辺機器の追加やカスタマイズを行なう必要がなくなる。さらに、ホストシステム２０と演算器１０との間のデータのやり取りは、通信レジスタ１７を介して行なうようにしてもよいし、ホストシステム２０側のリソースを介して行なうようにしてもよい。これによって、演算器１０という１つのＩＰさえ用意すれば様々なアプリケーションに対応することが可能となる。
【００７０】
また、従来の異なる複数のＣＰＵを搭載したデータ処理装置においては、各ＣＰＵ用にブートプログラムを格納した外付けのメモリが必要であった。本実施の形態においては、演算器１０内にブート回路１６を設け、起動シーケンスを定義することでホストシステム２０側のメモリを共有することができ、演算器１０のブートプログラムを格納した専用のメモリが不要となる。そのため、外付け部品数の削減、ピン数の削減などによるコスト削減を図ることが可能となる。
【００７１】
また、演算器１０がホストシステム２０側のメモリを使用することで、演算器１０側のメモリサイズを意識することなくアプリケーションソフトの開発を行なうことが可能となる。そのため、アプリケーションに応じて演算器１０のメモリ容量のカスタマイズを行う必要がなくなる。また、演算器１０がホストシステム２０側のメモリを使用するためデータアクセスが遅くなるが、演算器１０内の第２ＣＰＵ１１にキャッシュを実装することでアクセス速度を改善することが可能となる。
【００７２】
また、実施の形態に記載のＳＩＭＤプロセッサと第２ＣＰＵとの組合わせに限らず、ＤＳＰなどのデータ処理演算器であって外部に接続されるプログラムをフェッチ可能な演算器と、当該演算器を含む半導体処理装置全体の制御を行なうホストＣＰＵとを有する半導体処理装置であっても、一方が発行するアドレスをアドレス変換することで他方で実行するプログラムとの分離をすることが可能になると共に、データアクセスの際のアクセス経路を分離することでデータ格納領域の共有が可能となる。
【００７３】
また、従来のＳＩＭＤプロセッサを搭載したデータ処理装置においては、デバッガ、言語環境、ＩＣＥ（In-Circuit Emulator）などの開発環境をホストＣＰＵに合わせて用意する必要があった。本実施の形態においては、ＳＩＭＤプロセッサ１４の制御用の第２ＣＰＵ１１を設けてマルチシステム構成とすることで、ＳＩＭＤプロセッサの開発環境を第２ＣＰＵ１１に合わせて開発するだけでよくなる。そのため、ホストシステム２０のホストＣＰＵ２１に依存しなくてもよくなり、開発環境整備によるコスト削減、演算器１０のアプリケーションプログラムのポータタビリティの向上を図ることが可能となる。
【００７４】
（第２の実施の形態）
本発明の第２の実施の形態におけるデータ処理装置の構成は、図１に示す第１の実施の形態におけるデータ処理装置の構成と同様である。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００７５】
図８は、本発明の第２の実施の形態におけるデータ処理装置１のブート回路１６が出力する命令を示す図である。第１の実施の形態において説明したように、ブート回路１６は、演算器１０のリセット時には自己ループ命令（またはｗａｉｔ命令）を第２ＣＰＵ１１に返し、演算器１０の起動時には通信レジスタ１７のブート分岐アドレスレジスタに設定されたブート分岐アドレスにジャンプする命令を返す。自己ループ命令の実行では、命令フェッチ、デコード、命令実行のために回路動作が行なわれることで電力を消費することになるため、低消費電力化のためｗａｉｔ命令であってもよい。
【００７６】
図８において、Ｈ’００番地は第２ＣＰＵ１１におけるリセット時の開始アドレスであり、ブート回路１６は第２ＣＰＵ１１に自己ループ命令“ｂｒａ  ００”を返す。また、Ｈ’１０番地はブート時のアクセスアドレスであり、Ｈ’１０〜Ｈ’１８番地に通信レジスタ１７のブート分岐アドレスレジスタに設定されるブートアドレスへジャンプする命令が定義されている。
【００７７】
これらのアドレス以外のアドレス（Ｈ’０４〜Ｈ’０Ｃ番地、Ｈ’１Ｃ番地）に対するフェッチが発生した場合には、ブート回路１６は“Ｈ’００００＿００００”を第２ＣＰＵ１１に返す。
【００７８】
本実施の形態においては、自己ループ命令およびジャンプ命令をＲＯＭ化してブート回路１６としているが、これらをホストシステム２０から書き換え可能となる構成にすれば、第２ＣＰＵ１１の種類に依存することがなくなるので、さらに演算器１０のポータビリティを向上させることができる。
【００７９】
以上説明したように、本実施の形態におけるデータ処理装置によれば、ブート回路１６が自己ループ命令およびジャンプ命令を第２ＣＰＵ１１に返すようにしたので、外付けメモリが不要となった。
【００８０】
また、異なるＣＰＵで構成されたマルチシステムであっても、１つのブート用メモリを共用することができる。したがって、外付けメモリが不要になることによるコストの削減、外付けメモリ用端子が不要になることによるコストの削減を図ることが可能となった。
【００８１】
（第３の実施の形態）
図９は、本発明の第３の実施の形態におけるデータ処理装置の構成を示すブロック図である。図１に示す第１の実施の形態におけるデータ処理装置の構成と比較して、アドレス変換回路の機能のみが異なる。したがって、重複する構成および機能の詳細な説明は繰り返さない。
【００８２】
アドレス変換回路１５’は、アドレスマッピングレジスタを有しており、図６に示す通信レジスタ１７のアドレスマップ０レジスタ〜アドレスマップ３レジスタに設定された値が、アドレス変換回路１５’内のアドレスマッピングレジスタに設定される。これにより、アドレス変換のためのマッピング情報をホストシステム２０側や第２ＣＰＵ１１側からプログラマブルに設定することができる。
【００８３】
図９においては、ホストＣＰＵ２１側から通信レジスタ１７を経由してアドレス変換回路１５’のアドレスマッピングレジスタに、アドレス変換のマッピング情報をプログラマブルに設定するところを示している。
【００８４】
以上説明したように、本実施の形態におけるデータ処理装置１によれば、アドレス変換回路１５’のアドレスマッピングレジスタにマッピング情報を設定するようにしたので、演算器１０からホストシステム２０側のメモリ空間にアクセスすることができ、演算器１０側のメモリサイズを意識することなくアプリケーションソフトの開発を行なうことが可能となった。
【００８５】
また、アドレスマッピングレジスタに任意のマッピング情報を設定できるため、ホストシステム２０側のアドレスマップの変更にも対応することが可能となった。
【００８６】
（第４の実施の形態）
図１０は、本発明の第４の実施の形態におけるデータ処理装置の構成例を示すブロック図である。図１に示す第１の実施の形態におけるデータ処理装置と同じ構成および機能を有する部分には、同じ参照符号を付しており、その詳細な説明は繰り返さない。
【００８７】
演算器１０内に、タイマ（ＩＴＩＭ）３１、ＭＸ−１制御ポート３２および割込みコントローラ（ＩＣＵ）３３が追加されている。タイマ（ＩＴＩＭ）３１は、２チャンネルのインターバルタイマである。必要に応じて、その他の周辺機能も追加される。
【００８８】
ＭＸ−１制御ポート３２は演算器用バス１３に接続され、第１の実施の形態において説明したように、ホストシステム２０に対してスリープ状態を示す信号を出力する。また、ＭＸ−１制御ポート３２は、通信レジスタ１７内のＭＸ−１コマンドレジスタに設定された内容を第２ＣＰＵ１１に伝え、第２ＣＰＵ１１から受けたＭＸ−１完了ステータスを通信レジスタ１７内のＭＸ−１完了ステータスレジスタに伝える。これらのレジスタの内容を直接ホストシステム２０側に接続せずに通信レジスタ１７を介して行なうのは、ホストシステム２０が変更されてもホストシステム２０とのインタフェースを通信レジスタ１７で対応することにより、ＩＰとしてのポータビリティの向上を図るためである。
【００８９】
通信レジスタ１７は、第１の実施の形態において説明したとおりであるが、バスブリッジとしての役割も有している。
【００９０】
割り込みコントローラ３３は、演算器１０が実行するタスクに対する起動割込み、ホストシステム２０内のＤＭＡＣ２７からの割込み、ＳＩＭＤプロセッサ１４からの割込み、演算器１０外部のその他の割込みなどを受け、第２ＣＰＵ１１に対して割り込み要求を出力する。
【００９１】
ホストシステム２０内に、クロックコントローラ（ＣＬＫＣ）４１、バスインタフェースユニット（ＢＩＵ＿Ｃ）４２、割り込みコントローラ４３、バスマスタ４４、ＤＭＡＣ４５、チップセレクトコントローラ（ＣＳＣ）４６、周辺回路５１、スプリットトランザクションバスイニシエータ（SHwy Initiator）５２、メモリコントローラ５３が追加されている。また、外付けメモリとして、ＤＤＲメモリ６１およびＦ−ＲＡＭ６２が接続されている。
【００９２】
ＣＬＫＣ４１は、ＭＸ−１制御ポート３２から出力されるスリープ状態に応じて演算器１０に与えるクロックの供給を制御する。演算器１０がスリープ状態の場合には、演算器１０へのクロックの供給を停止する。
【００９３】
ＢＩＵ＿Ｃ４２は、第１バス２３に接続されている。ホストシステム２０が通信レジスタ１７を介して演算器１０にアクセスする場合、ホストシステム２０はこのＢＩＵ＿Ｃ４２を介して行なう。
【００９４】
割り込みコントローラ４３は、ＭＸ−１制御ポート３２からＳＬＥＥＰ割り込みおよび完了割り込みを受け、ホストＣＰＵ２１に対して割り込み要求を出力する。バスマスタ４４は、ホストシステム２０内におけるアクセスおよび演算器１０からのアドレス変換回路１５を経由するアクセスの調停を行なう。
【００９５】
ＤＭＡＣ４５は、ホストシステム内のモジュール間のデータ転送を行なう。ＣＳＣ４６は、ホストシステム２０内の各回路およびＦ−ＲＡＭ６２のチップセレクト信号を生成して出力する。
【００９６】
周辺回路５１は、カメラＩ／Ｆ、画像表示Ｉ／Ｆ、ＵＳＢ、イーサネット（登録商標）コントローラなどの回路を含み、スプリットトランザクションバスイニシエータ５２およびスプリットトランザクションバス（SHwy）２６を介して周辺回路５１に対するアクセスが行なわれる。
【００９７】
メモリコントローラ５３は、ＤＤＲメモリ６１に対するアクセスを制御する。
ＳＩＭＤプロセッサ１４は、シングルアドレス転送のデータ転送専用バスと接続されており、ＳＩＭＤプロセッサ１４とＤＤＲメモリ６１との間で高速にデータ転送が行なわれる。
【００９８】
以上説明したように、本実施の形態におけるデータ処理装置によれば、第１の実施の形態において説明した効果と同様の効果を奏することが可能となった。
【００９９】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１００】
【図１】本発明の第１の実施の形態におけるデータ処理装置の構成を示すブロック図である。
【図２】ＳＩＭＤプロセッサ１４の構成例を示す図である。
【図３】データ処理装置１におけるアドレスマップの一例を示す図である。
【図４】演算器１０から外付けメモリ３へのバスアクセスの一例を示す図である。
【図５】通信レジスタ１７に設けられたレジスタ群を説明するための図（その１）である。
【図６】通信レジスタ１７に設けられたレジスタ群を説明するための図（その２）である。
【図７】データ処理装置１における演算器１０の処理手順を説明するためのフローチャートである。
【図８】本発明の第２の実施の形態におけるデータ処理装置１のブート回路１６が出力する命令を示す図である。
【図９】本発明の第３の実施の形態におけるデータ処理装置の構成を示すブロック図である。
【図１０】本発明の第４の実施の形態におけるデータ処理装置の構成例を示すブロック図である。
【符号の説明】
【０１０１】
１  データ処理装置、２  外付けＦｌａｓｈ／ＲＯＭ、３  外付けメモリ、１０  演算器、１１  第２ＣＰＵ、１２  ＣＰＵ専用メモリ、１３  演算器用バス、１４  ＳＩＭＤプロセッサ、１５，１５’  アドレス変換回路、１６  ブート回路、１７  通信レジスタ、２０  ホストシステム、２１  ホストＣＰＵ、２２  内蔵メモリ、２３  第１バス、２４  周辺回路、２５  バスブリッジ、２６  第２バス、２７  ＤＭＡＣ、３１  タイマ、３２  ＭＸ−１制御ポート、３３  割込みコントローラ、４１  ＣＬＫＣ、４２  ＢＩＵ＿Ｃ、４３  割り込みコントローラ、４４  バスマスタ、４５  ＤＭＡＣ、４６  ＣＳＣ、５１  周辺回路、５２  システムハイウェイイニシエータ、５３  メモリコントローラ、６１  ＤＤＲメモリ、６２  Ｆ−ＲＡＭ、７１−１〜７１−ｍ  演算器、７２  データレジスタ、７３  コントローラ、７４  命令メモリ、７５  バスインタフェース、７６  相互接続用スイッチ。
【図１】
2010003151.tif 000003
【図２】
2010003151.tif 000004
【図３】
2010003151.tif 000005
【図４】
2010003151.tif 000006
【図５】
2010003151.tif 000007
【図６】
2010003151.tif 000008
【図７】
2010003151.tif 000009
【図８】
2010003151.tif 000010
【図９】
2010003151.tif 000011
【図１０】
2010003151.tif 000012