(57)【要約】【課題】外部メモリから読み出されバッファに記憶されたデータに対して連続して処理を行うプロセッサおよびそれを有する演算装置の性能向上。【解決手段】プロセッサ40と、メモリアクセスコントローラ50と、メモリ60と、を有する演算装置で、プロセッサは、一定のアドレス間隔のメモリアドレスのデータに対して処理を実行する実行ユニット41を有し、メモリアクセスコントローラは、プロセッサからの基準アドレスおよびアドレス間隔に基づいてメモリへのアクセスを行うアドレス生成部54と、メモリから読み出したデータを一時保存するバッファ51と、を有し、プロセッサは、パラメータ設定命令と、基準アドレスを指示してメモリへのアクセスを起動するアクセス起動命令と、バッファにデータが揃ったかを確認し、データが不足している場合に揃うまで待機する確認命令と、データが揃ったことを確認後データをロードするロード命令と、を有する。【選択図】図３
2014067376.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリアクセスコントローラと、メモリと、を備える演算装置であって、
前記プロセッサは、前記メモリのデータであって、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータに対して処理を実行する実行ユニットを備え、
前記メモリアクセスコントローラは、前記プロセッサから指示された基準アドレスおよび前記アドレス間隔からメモリアドレスを生成して前記メモリへのアクセスを行うアドレス生成部と、前記アドレス生成部の前記メモリへのアクセスにより読み出したデータを一時保存するバッファと、を備え、
前記プロセッサは、
前記アドレス生成部に、前記アドレス間隔を含む前記設定パラメータを設定するパラメータ設定命令と、
前記アドレス生成部に前記基準アドレスを指示し、前記アドレス生成部が前記基準アドレスおよび前記アドレス間隔に基づいて生成した前記メモリアドレスに応じて前記メモリへのアクセスを起動するアクセス起動命令と、
前記バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する確認命令と、
前記バッファに設定したデータが揃ったことを確認した後に、前記実行ユニットに前記データをロードするロード命令と、を有することを特徴とする演算装置。
【請求項２】
メモリに記憶されたデータであって、１回の処理で使用する、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータが、メモリアクセスコントローラのバッファに揃った後、処理を実行する実行ユニットを備え、
前記アドレス間隔を含む前記設定パラメータを設定するパラメータ設定命令と、
前記メモリアクセスコントローラに基準アドレスを指示し、前記メモリアクセスコントローラが前記基準アドレスおよび前記アドレス間隔に基づいて生成した前記メモリアドレスに応じて前記メモリへのアクセスを起動するアクセス起動命令と、
前記バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する確認命令と、
前記バッファに設定したデータが揃ったことを確認した後に、前記実行ユニットに前記データをロードするロード命令と、を有することを特徴とするプロセッサ。
【請求項３】
前記アクセス起動命令を出してから、前記メモリから前記バッファへのデータ転送時間を考慮した余裕時間後に、前記確認命令を出力する請求項２記載のプロセッサ。
【請求項４】
前記ロード命令でロードするデータの前記バッファにおけるロード位置を記憶しており、前記ロード命令実行時に、前記ロード位置を更新する請求項２または３記載のプロセッサ。
【請求項５】
実行ユニットにおける１回の処理で処理可能なデータ量に上限を有し、前記ロード命令でロードするデータ量は前記上限以下であり、
１回の処理で前記実行ユニットで実行するデータ量が前記上限を超えている場合には、前記ロード命令実行後に、前記ロード位置を、前記ロード命令の前記ロード位置に前記上限を加えた位置とする請求項４記載のプロセッサ。
【請求項６】
複数の実行ユニットを備え、
前記設定パラメータは、前記アドレス間隔に加えて、各実行ユニットが処理するデータの前記基準アドレスの差分であるアドレス差分と、を有する請求項２から５のいずれか１項記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置およびプロセッサに関する。
【背景技術】
【０００２】
プロセッサには、メモリに随時アクセスして処理対象のデータロードするタイプと、処理対象の一連のデータをバッファに格納し、バッファに処理対象のデータがすべて格納された後に処理を開始するタイプがある。ここでは、例えば、前者をメモリアクセスタイプ、後者をバッファタイプと称する。メモリアクセスタイプは、通常のプロセッサであり、キャッシュメモリ等を利用するものも、基本的にはこれに分類される。バッファタイプは、パイプライン構成のプロセッサなどであり、パイプラインで効率的な処理を行うために、処理対象のデータが揃った後に処理が開始される。記載する実施形態のプロセッサは、バッファタイプであり、ロード／ストア・アーキテクチャ型など称される場合もある。なお、バッファタイプのプロセッサで処理されたデータは、出力データバッファに格納され、メモリに転送されるか、入力データバッファに転送して繰り返し利用する場合もある。記載する実施形態のプロセッサは、出力データバッファは、一般的なものと同じであり、以下の説明では、出力データバッファについての説明は省略する。
【０００３】
バッファタイプのプロセッサは、所定の処理を繰り返し高速で行うことが求められる応用に広く使用される。例えば、無線通信は、さまざまな規格が存在している。様々な規格に対応するために、ソフトウェアを用いて無線処理を行う方法が検討されている。ソフトウェアで各種の無線処理を行うことは、リリース後に発生したバグなども、ソフトウェアの更新によって回避することができる。このように、ソフトウェアを使用して無線処理を行うことはその柔軟性という点においてハードウェアによる無線処理に対して優位性がある。しかし、無線処理では非常に多くの演算処理を行うものが多く、現在のところＤＳＰを用いても処理をすべて実行するのに十分でない場合が起きる。特に、多くの演算は、メモリからデータを取り出して処理を開始する。そのためメモリアクセスに関する処理が終了しないと、それに続く演算処理を行わない。そのため、メモリアクセスで性能を落とさずに行う方法が求められている。
【０００４】
特に、携帯電話機器等の無線通信機器では、小型で低消費電力であることが求められており、大規模なキャッシュメモリを使用しない。そのため、バッファタイプのプロセッサを利用することが考えられており、そのような応用でのバッファタイプのプロセッサの処理速度の向上が望まれている。
【０００５】
バッファタイプのプロセッサは、実行ユニットにおける１回の処理で処理される一連のデータがバッファに揃った後に、バッファからプロセッサへのデータのロードを開始する。ここで、実行ユニットにおける１回の処理は、例えば、入力されるデータに対して同一の処理を連続して行う処理であり、パイプライン処理の場合には、同一の処理は、１以上のステップから形成される。
【０００６】
バッファタイプのプロセッサには、複数の実行ユニットを有し、複数の実行ユニットで並列に処理を実行することにより、処理速度を高めたものがある。この種のプロセッサには、複数の実行ユニットが同一の処理を行うＳＩＭＤ(Single Instruction Multiple Data)型プロセッサと、複数の実行ユニットがそれぞれ指示された処理を行うＶＬＩＷ(Very Long Instruction Word)型がある。実施形態のプロセッサは、実行ユニットが１個の場合にも、複数の場合（ＳＩＭＤ型およびＶＬＩＷ型）にも適用可能である。
【０００７】
バッファタイプのプロセッサは、異なる複数のアドレスに対するメモリアクセスを一度に（一命令で）行う機能を有する。また、異なる複数のアドレスを先頭アドレスとして読み取るデータ幅を設定する。さらに、上記のように、複数の実行ユニットを有する場合には、複数の実行ユニットのそれぞれに対応して異なる複数のアドレスを設定する。
【０００８】
一般的なバッファタイプのプロセッサがメモリにアクセスする命令は、アドレス通知命令と、確認命令と、ロード命令と、を有する。アドレス通知命令は、異なる複数のアドレスを知らせる命令である。確認命令は、メモリからすべてのデータを取得しバッファへの保存が完了するまで命令を中断する命令である。ロード命令は、実際にデータをプロセッサ内に取得する命令である。
【０００９】
一般的なバッファタイプのプロセッサでは、メモリにおいて一定のアドレス間隔に記憶されたデータを処理する場合にも、上記の３つの命令を順番に発行することで処理を行う。しかし、アドレス通知命令から確認命令までに挿入される命令が少ない場合には、２つの命令の間の処理時間が短く、確認命令が出された時には、まだメモリからすべてのデータを読み出してバッファへの保存が完了していないという事態が生じる。このような場合には、プロセッサの処理が中断される。もし、同様の処理を繰り返し行う場合には、頻繁にプロセッサの処理の中断が発生し、処理性能が低下する問題があった。以下、この問題について説明する。
【００１０】
図１は、バッファタイプのプロセッサを含む演算装置の構成を示す図である。
図１に示すように、演算装置は、バッファタイプのプロセッサ１０と、メモリアクセスコントローラ２０と、メモリ（ＲＡＭ）３０と、を有する。プロセッサ１０は、パイプラインプロセッサ等のバッファタイプの複数（ここでは４個）の実行ユニット１１Ａ−１１Ｄを有する。メモリアクセスコントローラ２０は、図示していないが、複数の実行ユニット１１Ａ−１１Ｄに対応して複数の入力データバッファを有し、プロセッサから指示されたメモリ３０の異なるメモリアドレスのデータを読み出して対応する入力データバッファに記憶する。なお、メモリアクセスコントローラ２０は、複数の実行ユニット１１Ａ−１１Ｄが処理したデータを出力する複数の出力データバッファも有し、複数の出力データバッファに出力された処理済みのデータをメモリ３０の所定のアドレスに書き込む。さらに、メモリアクセスコントローラ２０は、出力データバッファに出力された処理済みのデータを入力データバッファに転送して、再度実行ユニットに供給することもある。ここで、出力データバッファ、実行ユニットから出力データバッファへの処理済みデータの出力、およびメモリアクセスコントローラ２０による出力データバッファからメモリ３０へのデータの転送は、実施形態には直接関係しないので、説明は省略する。
【００１１】
例えば、プロセッサ１０の実行ユニット１１Ａ−１１Ｄは、図１に示すように、Ｐ、Ｑ、ＲおよびＳを先頭アドレスとして、Ｐ＋Ｌ、Ｑ＋Ｌ、Ｒ＋ＬおよびＳ＋Ｌまでのデータを処理対象とする。そこで、プロセッサ１０は、メモリアクセスコントローラ２０に対して、Ｐ、Ｑ、Ｒ、ＳおよびＬを指定し、Ｐ〜Ｐ＋Ｌ、Ｑ〜Ｑ＋Ｌ、Ｒ〜Ｒ＋ＬおよびＳ〜Ｓ＋Ｌのデータを入力データバッファに記憶するように指示する命令Ａを出力する。なお、Ｌはあらかじめ指定されていてもよい。さらに、プロセッサ１０は、入力データバッファにデータが揃っているかを確認し、揃うまで命令を中断する命令Ｂを出力する。なお、命令Ｂを有さず、命令Ａを実行した後、メモリアクセスコントローラ２０の入力データバッファにデータが揃うまで命令を中断するようにする場合もある。
【００１２】
メモリアクセスコントローラ２０は、命令Ａに応じて、メモリ３０から、Ｐ〜Ｐ＋Ｌ、Ｑ〜Ｑ＋Ｌ、Ｒ〜Ｒ＋ＬおよびＳ〜Ｓ＋Ｌのデータを読み出し、入力データバッファに記憶する。そして、メモリアクセスコントローラ２０は、プロセッサ１０に対して、入力データバッファにデータが揃ったことを通知する。プロセッサ１０は、これに応じて入力データバッファのデータを複数の実行ユニットに取り込み、処理を開始する命令Ｃを実行する。
【００１３】
図２は、図１の演算装置で、上記の命令Ａ、ＢおよびＣを実行する場合の処理の流れを示す図である。図示のように、プロセッサ１０は、命令Ａ、Ｂ、Ｃの順で命令を実行する。図２において、ｌｏｏｐ処理は、同じ命令列を所定回数繰り返し実行する処理である。
【００１４】
ここで、例えば、命令Ａから命令Ｂまでの時間を、４命令分の時間と仮定する。図２の左に示すような命令コードの場合、ｌｏｏｐ処理において、命令Ａと命令Ｂの間には２命令分しかない。そのため、図２の右に示すように、２命令分だけウェイト（ｗａｉｔ）処理を入れて処理を実行することになる。その結果、本来５命令の処理サイクルで十分であるが、実際に実行するには７命令分の処理サイクルを要する。その結果、プロセッサが２命令分停止してしまうという問題が発生する。一度に多くのデータをプロセッサに渡す場合には、命令Ａと命令Ｂの間の時間が長くなるため、ｗａｉｔ処理が多くなる場合があり、演算速度が低下する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００６−３３８５４５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
実施形態によれば、外部メモリから読み出されメモリアクセスコントローラのバッファに記憶されたデータに対して連続して処理を行うプロセッサおよびそのようなプロセッサを有する演算装置の処理速度の低下が抑制される。
【課題を解決するための手段】
【００１７】
発明の第１の観点によれば、演算装置は、プロセッサと、メモリアクセスコントローラと、メモリと、を有する。プロセッサは、メモリのデータであって、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータに対して処理を実行する実行ユニットを有する。メモリアクセスコントローラは、アドレス生成部と、バッファと、を有する。アドレス生成部は、プロセッサから指示された基準アドレスおよびアドレス間隔からメモリアドレスを生成してメモリへのアクセスを行う。バッファは、アドレス生成部のメモリへのアクセスにより読み出したデータを一時保存するバッファと、を有する。プロセッサは、パラメータ設定命令と、アクセス起動命令と、確認命令と、ロード命令と、を有する。パラメータ設定命令は、アドレス生成部に、アドレス間隔を含む設定パラメータを設定する。アクセス起動命令は、アドレス生成部に基準アドレスを指示し、アドレス生成部が基準アドレスおよびアドレス間隔に基づいて生成したメモリアドレスに応じてメモリへのアクセスを起動する。確認命令は、バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する。ロード命令は、バッファに設定したデータが揃ったことを確認した後に、実行ユニットにデータをロードする。
【００１８】
発明の第２の観点によれば、プロセッサは、実行ユニットを有する。実行ユニットは、メモリに記憶されたデータであって、１回の処理で使用する、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータが、メモリアクセスコントローラのバッファに揃った後、処理を実行する。プロセッサは、パラメータ設定命令と、アクセス起動命令と、確認命令と、ロード命令と、を有する。パラメータ設定命令は、アドレス間隔を含む設定パラメータを設定する。アクセス起動命令は、メモリアクセスコントローラに基準アドレスを指示し、メモリアクセスコントローラが基準アドレスおよびアドレス間隔に基づいて生成したメモリアドレスに応じてメモリへのアクセスを起動する。確認命令は、バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する。ロード命令は、バッファに設定したデータが揃ったことを確認した後に、実行ユニットにデータをロードする。
【発明の効果】
【００１９】
実施形態によれば、外部メモリから読み出されメモリアクセスコントローラのバッファに記憶されたデータに対して連続して処理を行うバッファタイプのプロセッサおよびそれを有する演算装置の性能が向上する。
【図面の簡単な説明】
【００２０】
【図１】図１は、バッファタイプのプロセッサを含む演算装置の構成を示す図である。
【図２】図２は、図１の演算装置での命令Ａ、ＢおよびＣを実行する場合の処理の流れを示す図である。
【図３】図３は、実施形態の演算装置の概略構成を示す図である。
【図４】図４は、複数の実行ユニットを有する場合の実施形態の演算装置の概略構成を示す図である。
【図５】図５は、入力データバッファ５１内のデータの記憶状態の例を示す図である。
【図６】図６は、実施形態の演算装置で、メモリから処理対象のデータを読み出して入力データバッファに格納した後、プロセッサにロードする処理の流れを示す図である。
【図７】図７は、命令（Ｓ）に関する処理フローを示す図である。
【図８】図８は、アクセス起動命令（Ａ’）に関する処理フローを示す図である。
【図９】図９は、確認命令（Ｂ）に関する処理フローを示す図である。
【図１０】図１０は、データ取得命令（Ｃ）に関する処理フローを示す図である。
【図１１】図１１は、アクセス命令（Ａ’’）に関する処理フローを示す図である。
【図１２】図１２は、次にロードする位置にロードデータが確保されているか否かを判定する判定方法を説明する図である。
【発明を実施するための形態】
【００２１】
図３は、実施形態の演算装置の概略構成を示す図である。
実施形態の演算装置は、バッファタイプのプロセッサ４０と、メモリアクセスコントローラ５０と、メモリ（ＲＡＭ）６０と、を有する。プロセッサ４０は、実行ユニット４１と、プロセッサ制御部４２と、を有する。実行ユニット４１は、パイプラインプロセッサ等の一連の処理を連続して行う。プロセッサ４０は、メモリ６０から処理対象のデータをロードするための一連の命令が異なる以外一般的なバッファタイプのプロセッサと同じ構成および機能を有する。
【００２２】
メモリアクセスコントローラ５０は、入力データバッファ５１と、出力データバッファ５２と、コントローラ制御部５３と、を有する。入力データバッファ５１は、プロセッサ４０の実行ユニット４１が１回の一連の処理を実行するのに使用するデータを記憶する。一連の処理で処理するデータ量の上限が決められているが、入力データバッファ５１は、この上限より大きなデータ容量を有しており、前の処理のデータがプロセッサ４０にロードされている間に、次に処理するデータを記憶するようになっている。出力データバッファ５２は、実行ユニット４１が処理した処理済みデータを記憶する。出力データバッファ５２に記憶された処理済みデータは、メモリ６０の所定アドレスに書き込まれるか、入力データバッファ５１に転送され、再度プロセッサ４０での処理に使用される。前述のように、出力データバッファ５２は、一般的なものと同じであり、実施形態には直接関係しないので、説明は省略する。
【００２３】
コントローラ制御部５３は、入力データバッファ５１および出力データバッファ５２の状態を監視し、入力データバッファ５１からプロセッサ４０へのロードデータおよびプロセッサ４０から出力データバッファ５２への処理済みデータの入出力を制御する。
【００２４】
さらに、コントローラ制御部５３は、プロセッサ４０からのアドレス間隔を含む設定パラメータおよび基準アドレスを受けて、メモリ６０から読み出すデータのメモリアドレスを算出し、メモリ６０へのアクセスを行うアドレス生成部５４を有する。
【００２５】
プロセッサ４０は、入力データバッファ５１に記憶するデータを記憶したメモリ６０の異なる複数のアドレスを指定する。ただし、まったくランダムなアドレスの場合、アドレスを指定するのに要する時間が長くなるため、あらかじめ設定パラメータとしてアドレス間隔を設定しておく。また、設定パラメータは、別途レジスタ等に記憶しておいてもよい。なお、基準アドレスから連続したメモリアドレスのデータを読み出す場合には、アドレス間隔は１である。
【００２６】
そして、プロセッサ４０は、メモリアクセスコントローラ５０にアクセス命令を出力する時に、先頭アドレスである基準アドレスを設定する。メモリアクセスコントローラ５０は、基準アドレスにアドレス間隔を順次加えた一定間隔の設定アドレスを算出し、メモリ６０の設定アドレスのデータを読み出して入力データバッファ５１に転送する。  一定のアドレス間隔をいくつ算出するかは、あらかじめ決められており、設定パラメータで設定するか、またはレジスタ等に記憶しておく。
【００２７】
図３では、明確に図示されていないが、実行ユニット４１は、複数の実行ユニットを有することも可能である。
図４は、実行ユニット４１が複数の実行ユニットを有する場合の実施形態の演算装置の概略構成を示す図である。
【００２８】
図４に示すように、実行ユニット４１は、複数（ここでは４個）の実行ユニット４１Ａ−４１Ｄを有する。入力データバッファ５１は、複数の実行ユニット４１Ａ−４１Ｄに対応して複数の入力データバッファ５１Ａ−５１Ｄを有する。また、出力データバッファ５２は、複数の実行ユニット４１Ａ−４１Ｄに対応して複数の出力データバッファ５２Ａ−５２Ｄを有する。
【００２９】
アドレス生成部５４は、プロセッサ４０から、複数の入力データバッファ５１Ａ−５１Ｄのそれぞれに記憶するデータの４個の基準アドレスの指定を受ける。そして、各基準アドレスにアドレス間隔を加えて所定個数の設定アドレスを算出する。この場合、アドレス間隔は４個のベースアドレスごとに異なってもよいが、実施形態ではアドレス間隔の指定を容易にするため、アドレス間隔は同一であるとする。
【００３０】
まったくランダムな基準アドレスを指定する場合、基準アドレスを指定するのに要する時間が長くなるため、あらかじめ設定パラメータとしてユニット差分を設定しておいてもよい。ユニット差分が設定されている場合の設定アドレスの算出方法は、アドレス間隔の場合と同様であるので、説明は省略する。また、ユニット差分は、設定パラメータで設定しても、レジスタ等に記憶しておいてもよい。
【００３１】
実行ユニット、入力データバッファおよび出力データバッファが複数組も受けられる場合も、基本的な動作は、１組の場合と同様であるので、以下１組の場合を例として説明する。
【００３２】
図５は、入力データバッファ５１内のデータの記憶状態の例を示す図である。
命令から求められるロードデータ量は一定のため、入力データバッファ５１内では、一定のロードデータ量ごとにアドレスの差分を変えるように記憶する。図５の例では、１２個のデータを１回の命令で取得すると仮定する。この場合、Ｘ軸方向には１２個のデータが保存されている。Ｙ軸方向には、複数回命令が呼ばれてもロード処理ができるように、アドレスの差分だけ変えてロードデータが保存されている。もし、メモリ６０のアドレスマップにおいても、一定のロードデータ量ごとに、基準アドレスがベース差分ずつ異なる場合には、図５において、Ｙ軸方向に隣接するデータは、ベース差分ずつ異なるデータになる。
【００３３】
メモリ（ＲＡＭ）６０は、分割された複数のＲＡＭを有し、同時に複数のＲＡＭから並列にデータを取得できるようにすることが望ましい。
【００３４】
図６は、実施形態の演算装置で、メモリ６０から処理対象のデータを読み出して入力データバッファ５１に格納した後、プロセッサ４０にロードする処理の流れを示す図である。
【００３５】
実施形態の演算装置では、メモリアクセスを行うために、アドレス間隔およびベース差分を設定し、ロードする位置情報をリセットするための命令（Ｓ）を発行する。
図７は、命令（Ｓ）に関する処理フローを示す図である。
【００３６】
ステップＳ１１では、プロセッサ４０が、設定パラメータとして、アドレス間隔およびベース差分を、メモリアクセスコントローラ５０に出力する。これに応じて、メモリアクセスコントローラ５０は、内部のレジスタにアドレス間隔およびベース差分を記憶する。
ステップＳ１２では、基準アドレスをリセットする。
【００３７】
図６に戻り、その後、ロードデータを取得するようにアクセス起動命令（Ａ’）を発行する。アクセス起動命令（Ａ’）では、基準アドレスを引数などで設定の上、アドレス生成部５４を動作させる。
図８は、アクセス起動命令（Ａ’）に関する処理フローを示す図である。
【００３８】
ステップＳ２１では、プロセッサ４０が、メモリアクセスコントローラ５０のコントローラ制御部５３に基準アドレスを設定する。
ステップＳ２２では、コントローラ制御部５３内のアドレス生成部５４が、プロセッサ４０の動作と関係なく、メモリアクセス動作を開始する。メモリアクセス動作では、アドレス生成部５４は、基準アドレスおよび設定パラメータに含まれるアドレス間隔およびベース差分を使用してアクセスするメモリアドレスを算出する。そして、アドレス生成部５４は、メモリ６０にアクセスして、算出したメモリアドレスのデータを読み出して入力データバッファ５１の対応箇所に記憶する。
【００３９】
図６に戻り、プロセッサ４０は、アクセス起動命令（Ａ’）を実行した後、しばらく他の処理を行い、入力データバッファ５１に記憶するロードデータがすべて記憶されたかの確認命令（Ｂ）を発行する。アクセス起動命令（Ａ’）を実行してから確認命令（Ｂ）を実行するまでの時間は、アドレス生成部５４がメモリ６０から入力データバッファ５１へのデータ転送時間を考慮した余裕時間後に基づいて決定される。
【００４０】
図９は、確認命令（Ｂ）に関する処理フローを示す図である。
ステップＳ３１では、プロセッサ４０が、入力データバッファ５１にロードデータがすべて記憶されたかをメモリアクセスコントローラ５０に確認する。メモリアクセスコントローラ５０は、揃っていればロードデータの記憶が完了していることをプロセッサ４０に通知し、揃っていなければロードデータの記憶が完了していないことをプロセッサ４０に通知する。プロセッサ４０は、ロードデータの記憶完了を通知された場合には確認命令（Ｂ）終了し、ロードデータの記憶が完了していないことを通知された場合にはステップＳ３２に進む。
ステップＳ３２では、ロードデータの記憶完了が通知されるまで、確認命令（Ｂ）の次の命令を実行しないようにし、ロードデータの記憶完了が通知されたら、次の命令に進む。
【００４１】
図６に戻り、プロセッサ４０は、その後、データ取得（ロード）命令（Ｃ）を発行する。
図１０は、データ取得命令（Ｃ）に関する処理フローを示す図である。
【００４２】
ステップＳ４１では、プロセッサ４０は、メモリアクセスコントローラ５０により入力データバッファ５１に記憶されたロードデータを、実行ユニット４１にロードする。
【００４３】
ステップＳ４２では、プロセッサ４０は、入力データバッファ５１におけるロードデータの記憶位置を、次のロードの記憶位置に変更する。
【００４４】
もし、アクセス起動命令（Ａ’）からデータ取得命令（Ｃ）までの間に、アクセス起動命令（Ａ’）でのアクセスメモリアドレスを書き換えるような処理が発生した場合には、すでにロードして入力データバッファに保存した値に対しても書き換え処理を行う。この場合も、確認命令（Ｂ）によって、データ取得命令（Ｃ）でロードするデータは、メモリ６０からすでに入力データバッファ５１に保存されているため、データ取得命令（Ｃ）によってプロセッサ４０が待たされることはない。
【００４５】
図６に戻り、プロセッサ４０は、ループ（ｌｏｏｐ）処理において、データ取得命令（Ｃ）、アクセス命令（Ａ’’）および確認命令（Ｂ）を繰り返す。アクセス命令（Ａ’’）は、入力データバッファ５１における次にロードするロードデータの位置を確認し、データが存在していれば何もしない。次にロードするロードデータが不足していれば、アドレス生成部５４に対してロードデータを取得するように依頼し、ロードデータの位置情報を入力データバッファ５１の保存できる最大の位置情報に変更する。
【００４６】
図１１は、アクセス命令（Ａ’’）に関する処理フローを示す図である。
ステップＳ５１では、入力データバッファ５１におけるロードデータの記憶位置が入力データバッファ５１に保存できる最大の位置を超えているか判定し、超えていればステップＳ５２に進み、超えていなければ終了する。
【００４７】
ステップＳ５２では、プロセッサ４０が、アドレス生成部５４に対して、次のロードで使用するロードデータのメモリ６０におけるアドレスの作成を指示する。これに応じて、アドレス生成部５４は、メモリアクセスを開始する。
ステップＳ５３では、次回ロードするロードデータの位置情報（記憶位置）を保存できる最大の位置情報にセットし、終了する。
【００４８】
図６に示すように、例えば、データ取得命令（Ｃ）を繰り返し行うことによって、アクセス命令（Ａ’’）によって確保したロードデータをすべて提供してしまう場合が起きる。この場合には、1つ前のデータ取得命令（Ｃ）が発行された時点で、次にロードするロードデータの記憶位置に、確保されているロードデータがないことが判明する。
【００４９】
図１２は、次にロードするロードデータの記憶位置にロードデータが確保されているか否かを判定する判定方法を説明する図である。
【００５０】
転送したロードデータを入力データバッファ５１に保存できる最大の位置を示す位置情報と、記憶したロードデータの記憶位置までを示す位置情報を比較し、最大の位置を超えているかどうかで判定する。超えている場合には、アクセス命令（Ａ’’）にて入力データバッファ５１に保存できる最大の位置を示す位置情報にまで位置情報を戻す。アクセス命令（Ａ’’）は、同時に、現在示している入力データバッファ５１に保存できる最大の位置を示す位置情報を、次に発行されるデータ取得命令（Ｃ）でアドレス生成部５４がメモリ６０のデータを転送する位置を示すために保存する。ロードデータを入力データバッファ５１に保存できる最大の位置を示す位置情報は、別途命令で変更できるようにしても構わないし、固定値でも構わない。その後、確認命令（Ｂ）によって、ロードデータがすべて入力データバッファ５１に記憶されているのかを確認し、すべて記憶されていなければ、後続の命令の処理を中断する。この処理を繰り返し行うことで、アクセス起動命令（Ａ’）による入力データバッファ５１に保存してあるデータが不足した場合においても、問題なく処理を継続して行うことができる。
【００５１】
メモリ６０からのロードデータの読み出し処理を上記のように行うことで、データ取得命令（Ｃ）から次のデータ取得命令（Ｃ）の間の処理サイクルが短いプログラムにおいても、プロセッサ４０を止めることなく連続して処理を行うことができる。そのため、性能の低下を抑えることができ、入力データバッファ５１に記憶したデータが不足した場合においても適時データを取得できるため、プログラムを継続して実行することができる。
【００５２】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【００５３】
以下、実施形態に関し、更に以下の付記を開示する。
（付記１）
プロセッサと、メモリアクセスコントローラと、メモリと、を備える演算装置であって、
前記プロセッサは、前記メモリのデータであって、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータに対して処理を実行する実行ユニットを備え、
前記メモリアクセスコントローラは、前記プロセッサから指示された基準アドレスおよび前記アドレス間隔からメモリアドレスを生成して前記メモリへのアクセスを行うアドレス生成部と、前記アドレス生成部の前記メモリへのアクセスにより読み出したデータを一時保存するバッファと、を備え、
前記プロセッサは、
前記アドレス生成部に、前記アドレス間隔を含む前記設定パラメータを設定するパラメータ設定命令と、
前記アドレス生成部に前記基準アドレスを指示し、前記アドレス生成部が前記基準アドレスおよび前記アドレス間隔に基づいて生成した前記メモリアドレスに応じて前記メモリへのアクセスを起動するアクセス起動命令と、
前記バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する確認命令と、
前記バッファに設定したデータが揃ったことを確認した後に、前記実行ユニットに前記データをロードするロード命令と、を有することを特徴とする演算装置。（１）
（付記２）
前記プロセッサは、前記アクセス起動命令を出してから、前記メモリから前記バッファへのデータ転送時間を考慮した余裕時間後に、前記確認命令を出力する付記１記載の演算装置。
（付記３）
前記プロセッサは、前記ロード命令でロードするデータの前記バッファにおけるロード位置を記憶しており、前記ロード命令実行時に、前記ロード位置を更新する付記１または２記載の演算装置。
（付記４）
前記実行ユニットにおける１回の処理で処理可能なデータ量に上限を有し、前記ロード命令でロードするデータ量は前記上限以下であり、
前記プロセッサは、１回の処理で前記実行ユニットが実行するデータ量が前記上限を超えている場合には、前記ロード命令実行後に、前記ロード位置を、前記ロード命令の前記ロード位置に前記上限を加えた位置とする付記３記載の演算装置。
（付記５）
前記プロセッサは、複数の実行ユニットを備え、
前記メモリアクセスコントローラは、前記複数の実行ユニットに対応した複数のバッファを備え、
前記設定パラメータは、前記アドレス間隔に加えて、各実行ユニットが処理するデータの前記基準アドレスの差分であるアドレス差分と、を有する付記１から４のいずれか１つに記載の演算装置。
（付記６）
前記プロセッサは、前記複数の実行ユニットが同一の命令を実行するＳＩＭＤ型である付記１から５のいずれか１つに記載の演算装置。
（付記７）
前記プロセッサは、前記複数の実行ユニットが異なる命令を実行するＶＬＩＷ型である付記１から５のいずれか１つに記載の演算装置。
（付記８）
前記複数の実行ユニットは、パイプライン型実行ユニットである付記１から７のいずれか１つに記載の演算装置。
（付記９）
メモリに記憶されたデータであって、１回の処理で使用する、設定パラメータにより指定される一定のアドレス間隔のメモリアドレスのデータが、メモリアクセスコントローラのバッファに揃った後、処理を実行する実行ユニットを備え、
前記アドレス間隔を含む前記設定パラメータを設定するパラメータ設定命令と、
前記メモリアクセスコントローラに基準アドレスを指示し、前記メモリアクセスコントローラが前記基準アドレスおよび前記アドレス間隔に基づいて生成した前記メモリアドレスに応じて前記メモリへのアクセスを起動するアクセス起動命令と、
前記バッファに設定したデータが揃ったかを確認し、データが不足している場合に揃うまで待機する確認命令と、
前記バッファに設定したデータが揃ったことを確認した後に、前記実行ユニットに前記データをロードするロード命令と、を有することを特徴とするプロセッサ。（２）
（付記１０）
前記アクセス起動命令を出してから、前記メモリから前記バッファへのデータ転送時間を考慮した余裕時間後に、前記確認命令を出力する付記９記載のプロセッサ。（３）
（付記１１）
前記ロード命令でロードするデータの前記バッファにおけるロード位置を記憶しており、前記ロード命令実行時に、前記ロード位置を更新する付記９または１０記載のプロセッサ。（４）
（付記１２）
実行ユニットにおける１回の処理で処理可能なデータ量に上限を有し、前記ロード命令でロードするデータ量は前記上限以下であり、
１回の処理で前記実行ユニットで実行するデータ量が前記上限を超えている場合には、前記ロード命令実行後に、前記ロード位置を、前記ロード命令の前記ロード位置に前記上限を加えた位置とする付記１１記載のプロセッサ。（５）
（付記１３）
複数の実行ユニットを備え、
前記設定パラメータは、前記アドレス間隔に加えて、各実行ユニットが処理するデータの前記基準アドレスの差分であるアドレス差分と、を有する付記９から１２のいずれか１つに記載のプロセッサ。（６）
（付記１４）
前記複数の実行ユニットが同一の命令を実行するＳＩＭＤ型である付記９から１３のいずれか１つに記載のプロセッサ。
（付記１５）
前記複数の実行ユニットが異なる命令を実行するＶＬＩＷ型である付記９から１３のいずれか１つに記載のプロセッサ。
（付記１６）
前記複数の実行ユニットは、パイプライン型実行ユニットである付記９から１５のいずれか１つに記載のプロセッサ。
【符号の説明】
【００５４】
４０    プロセッサ
４１、４１Ａ−４１Ｄ    実行ユニット
４２    プロセッサ制御部
５０    メモリアクセスコントローラ
５１    入力データバッファ
５２    出力データバッファ
５３    コントローラ制御部
５４    アドレス生成部
６０    メモリ（ＲＡＭ）
【図１】
2014067376.tif 000003
【図２】
2014067376.tif 000004
【図３】
2014067376.tif 000005
【図４】
2014067376.tif 000006
【図５】
2014067376.tif 000007
【図６】
2014067376.tif 000008
【図７】
2014067376.tif 000009
【図８】
2014067376.tif 000010
【図９】
2014067376.tif 000011
【図１０】
2014067376.tif 000012
【図１１】
2014067376.tif 000013
【図１２】
2014067376.tif 000014