(57)【要約】【課題】メモリアクセス装置において、複数プロセッサ（ＣＰＵ）内のあるＣＰＵの負荷が急激に高くなり、メモリアクセス回数が急激に増えた場合、高負荷ＣＰＵの優先度が常に高い状態になり、他のＣＰＵからのメモリアクセスが不可能となったり、メモリアクセス速度の遅延が急激に増加するようになる。これにより、マルチプロセッサシステム全体のスループットが低下する恐れがある。【解決手段】メモリアクセス装置２０は、複数のコマンドキュー８０〜８ｍと、スケジューラ部６０と、前記スケジューラ部からの管理情報を用いてメモリアクセスを実行するメモリアクセス部４０と、一つのコマンドキューへのメモリアクセス要求の発信頻度を用いて、前記スケジューラ部に対して帯域変更を要求する制御部５０と、インタフェース部７０とから構成される。これにより、各プロセッサの負荷変動に追随したメモリアクセス処理が可能となる。【選択図】　　　図１
2004126694.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサから共有メモリにアクセスを行うメモリアクセス装置であって、
前記メモリアクセス装置は、
前記共有メモリへのメモリアクセス要求を保存する複数のコマンドキューへのメモリアクセスの帯域を管理するスケジューラ部と、
前記スケジューラ部からの管理情報を用いて、前記複数のコマンドキューの内の一つのコマンドキューからメモリアクセス要求を読み出し、当該メモリアクセスを実行するメモリアクセス部と、
前記複数のコマンドキューの内の一つのコマンドキューへのメモリアクセス要求の発信頻度に対応して、前記スケジューラ部に帯域変更を要求する制御部と、
から構成されることを特徴とするメモリアクセス装置。
【請求項２】
前記メモリアクセス装置は、
前記制御部からの帯域変更要求に従い、当該帯域変更要求に対応したプロセッサからのメモリアクセス要求を、前記コマンドキューへ振り分けるインタフェース部を、さらに備えることを特徴とする請求項１記載のメモリアクセス装置。
【請求項３】
前記共有メモリへの前記メモリアクセス要求の優先度が、前記複数のプロセッサからの当該メモリアクセス要求の発信頻度に応じて決定され、当該優先度ごとにメモリアクセス帯域を割り当てることを特徴とする請求項１記載のメモリアクセス装置。
【請求項４】
前記共有メモリへの前記メモリアクセス要求の優先度が、前記複数のプロセッサ内の各処理タスクまたは各処理スレッドからの当該メモリアクセス要求の発信頻度に応じて決定され、当該優先度ごとにメモリアクセス帯域を割り当てることを特徴とする請求項１記載のメモリアクセス装置。
【請求項５】
前記共有メモリへの前記メモリアクセス要求の前記発信頻度が、当該共有メモリに対する一定時間当たりの読み出しコマンド数，書き込みコマンド数，あるいは当該読み出しコマンド数と当該書き込みコマンド数の総計の内のいずれかであることを特徴とする請求項３または請求項４記載のメモリアクセス装置。
【請求項６】
前記共有メモリへの前記メモリアクセス要求の前記発信頻度が、ある特定の優先度に集中した場合に、前記優先度に割り当てたメモリアクセス帯域を動的に変更可能とすることを特徴とする請求項１から請求項５記載のメモリアクセス装置。
【請求項７】
前記制御部は、前記プロセッサからの一定時間あたりのメモリアクセス要求の前記発信頻度に対して複数の閾値を持ち、前記複数の閾値への当該発信頻度の有無を用いて、前記優先度に割り当てたメモリアクセス帯域の割り当てを変更することを特徴とする請求項１から請求項６記載のメモリアクセス装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はメモリアクセス装置に関し、特に、マルチプロセッサシステムにおいて、プロセッサから発信されるメモリアクセス要求の頻度に応じてメモリアクセス要求の優先度を決定し、各優先度に割り当てたメモリアクセス帯域を動的に変化させることにより、メモリアクセス要求に対する応答特性の良いメモリアクセス装置に関する。
【０００２】
【従来の技術】
共有メモリ型のマルチプロセッサシステムにおいては、複数のプロセッサから共有メモリへのアクセス要求があるため、それらのアクセス要求の競合を防ぐ必要がある。
【０００３】
従来のメモリアクセスを行うためのマルチプロセッサシステムとしては、図２に示すような構成例がある。
【０００４】
この従来構成例において、複数のＣＰＵ１０１ａ〜１０３ｃから発信された各々の共有メモリ要求信号における発信回数は、要求カウント回路１０５でカウントされる。この要求カウント回路１０５は、共有メモリ要求信号の発信回数に応じて共有メモリ要求信号の優先度を決定し、その優先度を調停回路１０６に通知する。そして、調停回路１０６は、最も高い優先度を持つＣＰＵからの共有メモリ要求を優先的に処理するようになっている。（例えば、特許文献１参照）
【０００５】
また、優先度のクラス分け方法と、クラス分けされた各優先度に対する帯域割り当て方法としては、例えば、ＩＰｖ４プロトコルにおけるＴＯＳ（Ｔｙｐｅ　Ｏｆ　Ｓｅｒｖｉｃｅ）情報によるクラス分け方法と、そのＴＯＳ情報単位の帯域割り当て方法がある。具体的には、ＴＯＳ情報によるクラス分け方法においては、あらかじめＩＰプロトコル上のアプリケーション単位やＩＰ端末単位にＴＯＳのクラスを割り当てる。その上で、それらの各ＴＯＳ情報単位に帯域を割り当てていく方法がとられている。（例えば、非特許文献１参照）
【０００６】
【特許文献１】
特開平１−２６３７６２号公報（第４頁、第１図）
【非特許文献１】
Ｕｎｉｖｅｒｓｉｔｙ　ｏｆ　Ｓｏｕｔｈｅｒｎ　Ｃａｌｉｆｏｒｎｉａ、“ＩＥＴＦ　ＲＦＣ７９１”、［ｏｎｌｉｎｅ］、Ｓｅｐｔｅｍｂｅｒ　１９８１、Ｉｎｔｅｒｎｅｔ　Ｅｎｇｉｎｅｅｒｉｎｇ　Ｔａｓｋ　Ｆｏｒｃｅ、［平成１４年８月２６日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ０７９１．ｔｘｔ？ｎｕｍｂｅｒ＝７９１＞
【０００７】
【発明が解決しようとする課題】
特許文献１に記載されたマルチプロセッサシステムにおける問題点は、マルチプロセッサの内のあるプロセッサ（ＣＰＵ）の負荷が急激に高くなり、メモリアクセス回数が急激に増えた場合、高負荷ＣＰＵの優先度が常に高い状態になってしまう点である。この結果、高負荷ＣＰＵへのアクセスが常に優先的に処理されるようになり、他のＣＰＵからのメモリアクセスが不可能となったり、またはメモリアクセス速度の遅延が急激に増加するようになる。そして、マルチプロセッサシステム全体のスループットが低下する恐れがある。
【０００８】
また、非特許文献１記載のＩＰｖ４プロトコルにおけるＴＯＳ（Ｔｙｐｅ　Ｏｆ　Ｓｅｒｖｉｃｅ）情報によるクラス分け方法と、そのＴＯＳ情報単位の帯域割り当て方法における問題点について以下に述べる。ここで、これらのクラス分けおよび帯域割り当て方法を特許文献１に記載されたマルチプロセッサシステムに適用した場合、各プロセッサはＩＰプロトコル上のアプリケーションやＩＰ端末相当と考えられ、それらのプロセッサ単位に優先クラスを割り当て、その優先クラスに従って帯域を割り当てることとなる。
【０００９】
この場合、各プロセッサの負荷に関わらず、常に高い優先度を持つプロセッサからのメモリアクセス要求が処理されてしまう。その結果、優先度が低いプロセッサの負荷が高くなったとしても、そのプロセッサのメモリアクセス要求が受け付けられることが少なく、そのプロセッサの処理を高速化することができない。そのため、低優先度かつ高負荷のプロセッサにおける処理がボトルネックとなり、やはりマルチプロセッサシステム全体のスループットが低下してしまうという問題が発生する。
【００１０】
そこで、本発明の目的は上記の問題を解消した、メモリアクセス装置を提供することにある。
【００１１】
【課題を解決するための手段】
上記課題を解決するために、本発明のメモリアクセス装置では、前記メモリアクセス要求を保存する複数のコマンドキューへのメモリアクセスの帯域を管理するスケジューラ部と、前記スケジューラ部からの管理情報を用いて、前記複数のコマンドキューの内の一つのコマンドキューからメモリアクセス要求を読み出し、当該メモリアクセスを実行するメモリアクセス部と、前記複数のコマンドキューの内の一つのコマンドキューへのメモリアクセス要求の発信頻度に対応して、前記スケジューラ部に帯域変更を要求する制御部と、から構成されることを特徴とする。
【００１２】
このような構成を採用することにより、本発明のメモリアクセス装置では、各プロセッサの負荷変動に追随したメモリアクセス処理が可能となり、メモリアクセス要求に対する高い応答特性を実現している。
【００１３】
【発明の実施の形態】
以下では、図１に示す本願発明のメモリアクセス装置２０の内部構成を参照しつつ、本発明の実施例について説明する。
【００１４】
プロセッサ１０〜１ｎは、メモリアクセス装置２０に接続される複数（ｎ個）のプロセッサである。プロセッサ１０〜１ｎは、メモリアクセス装置２０を介して、共有メモリ３０に対してデータの読み書きを行っている。
【００１５】
メモリアクセス装置２０内のメモリアクセス部４０は、メモリアクセス装置２０と共有メモリ３０とのインタフェース機能を持っている。メモリアクセス部４０は、コマンドキュー８０〜８ｍ内でスケジューラ部６０から指示されたコマンドキューからメモリアクセス要求を読み出し、そのコマンドを実行する。
【００１６】
スケジューラ部６０は、各コマンドキュー８０〜８ｍに対するメモリアクセスの帯域を管理している。
【００１７】
インタフェース部７０は、制御部５０からの指示に従い、プロセッサ１０〜１ｎからのメモリアクセス要求を、コマンドキュー８０〜８ｍへ振り分ける。
【００１８】
コマンドキュー８０〜８ｍは、インタフェース部７０経由でプロセッサ１０〜１ｎから発信されたメモリアクセス要求を保存する。
【００１９】
制御部５０は、あるコマンドキューへのメモリアクセス要求の発信頻度が一定量を超えたり下回ったりした場合、スケジューラ部６０に対して帯域変更を要求する。
【００２０】
以下では、上記の構成を持つメモリアクセス装置２０の詳細動作について、一例として、ＩＰパケットの処理を行う場合で説明する。
【００２１】
ＩＰパケットのデータは共有メモリ３０に格納されており、プロセッサ１０〜１ｎは共有メモリ３０から必要なデータを読み書きしてＩＰパケット処理を行っている。ここで、ＩＰパケット処理におけるプロセッサ１０〜１ｎの負荷は、処理内容やトラヒックの増減によって変化する。それらの変動によって、プロセッサ１０〜１ｎから共有メモリ３０へのメモリアクセス要求の発信頻度が変化する。
【００２２】
ここで、制御部５０は、インタフェース部７０を通過するメモリアクセス要求の発信頻度を、プロセッサ１０〜１ｎ単位でモニターしている。そして、制御部５０は、発信頻度の高いプロセッサからのメモリアクセス要求が、例えば、コマンドキュー８０に投入されるようにインタフェース部７０を制御する。逆に、発信頻度が低いプロセッサからのメモリアクセス要求は、例えば、コマンドキュー８ｍに投入されるように、制御部５０はインタフェース部７０を制御する。
【００２３】
すなわち、制御部５０は、メモリアクセス要求の発信頻度に応じて、プロセッサ１０〜１ｎからのメモリアクセス要求がコマンドキュー８０〜８ｍに振り分けられるように、インタフェース部７０を制御する。ここで、制御部５０は、各プロセッサからの一定時間あたりのメモリアクセス要求発信数に対して、複数の閾値を持ち、その閾値を用いてメモリアクセス要求の振り分け先を決定している。
【００２４】
一例として、メモリへの１回当たりのアクセス時間を１００ｎｓと仮定すると、このメモリには１秒当たり最大１０の７乗回（１０Ｍ回／ｓ）のアクセスが可能となる。よって、閾値として、「４Ｍ回／ｓ以上」「３Ｍ回／ｓ以上〜４Ｍ回／ｓ未満」「２Ｍ回／ｓ以上〜３Ｍ回／ｓ未満」…というような設定を行う。その上で、「メモリアクセス要求発信数が４Ｍ回／ｓ以上の場合には、コマンドキュー８０へアクセス要求を投入」「メモリアクセス要求発信数が３Ｍ回／ｓ以上〜４Ｍ回／ｓ未満の場合には、コマンドキュー８１へアクセス要求を投入」「メモリアクセス要求発信数が２Ｍ回／ｓ以上〜３Ｍ回／ｓ未満の場合には、コマンドキュー８２へアクセス要求を投入」…というような振り分けを行うようにする。
【００２５】
前述したように、プロセッサ１０〜１ｎからのメモリアクセス要求の発信頻度は、プロセッサの負荷や処理内容によって動的に変化する。例えば、プロセッサ１０からのメモリアクセス要求の送信先は、負荷の高いときにはコマンドキュー８０となるが、負荷が低くなるとコマンドキュー８１〜８ｍのいずれかに変更される。
【００２６】
以上に述べた動作により、コマンドキュー８０〜８ｍには、メモリアクセス要求の発信頻度に応じて、メモリアクセス要求がキューイングされる。
【００２７】
スケジューラ部６０は、メモリアクセス装置２０と共有メモリ３０との間のメモリアクセス帯域を、コマンドキュー単位に分割して管理している。そして、コマンドキュー８０〜８ｍへの帯域割り当ては、例えば、共有メモリ３０への一定時間あたりのメモリアクセス回数を用いて行う。本実施例では、スケジューラ部６０は、コマンドキュー８０に最も多くの帯域を割り当て、コマンドキュー８ｍに最も少ない帯域を割り当てる。スケジューラ部６０は、割り当てた帯域に従って、メモリアクセス部４０にどのコマンドキューからメモリアクセス要求を読み出すかを指示する。
【００２８】
メモリアクセス部４０は、スケジューラ部６０からの指示に従って、コマンドキューからメモリアクセス要求を読み出し、メモリアクセスを実行する。すなわち、メモリアクセス部４０は、メモリアクセス要求の発信元であるプロセッサからのデータ書き込み、または同プロセッサへのデータ読み出しを行う。
【００２９】
ここで、ある優先度クラスのコマンドキューより優先度が高いコマンドキューにメモリアクセス要求が滞留していなければ、メモリアクセス部４０は、そのコマンドキューからメモリアクセス要求を取り出し、そのメモリアクセス要求の発信元となるプロセッサからのデータ書き込み、または同プロセッサへのデータ読み出しを行う。
【００３０】
また、プロセッサ１０〜１ｎのすべての負荷が高くなった場合、コマンドキュー８０へのメモリアクセス要求の発信頻度が高くなる。その結果、コマンドキュー８０にメモリアクセス要求が滞留することになる。このように、ある特定コマンドキューへのメモリアクセス要求の発信頻度が高くなった場合、制御部５０は、スケジューラ部６０へ、そのコマンドキューへの帯域変更を要求する。そして、スケジューラ部６０は、制御部５０からの要求に従って各コマンドキューへの帯域割り当ての再配分を行い、コマンドキュー８０への帯域を増加させる。このように、メモリアクセス帯域を動的に変化させると、その時点で、最も負荷の高いプロセッサからのメモリアクセスが優先的に処理される。
【００３１】
ここで、同じパケット処理でも、パケット長やパケット種別によって処理内容が異なってくるため、メモリアクセス数も変動することになる。例えば、ＵＤＰ（Ｕｓｅｒ　Ｄａｔａｇｒａｍ　Ｐｒｏｔｏｃｏｌ）における誤りチェック処理は全体のパケットデータをチェック対象とするため、パケット長によってメモリアクセス数が変動する。また、ＩＰパケットのヘッダ部分にオプションが付加されると、パケット処理内容が通常処理と変わるために、メモリアクセス数が変動する。
【００３２】
よって、動的にメモリアクセス帯域を変更することができれば、一定時間あたりに発行できるメモリアクセス数を変動させることが可能となり、上記のようなメモリアクセス数の変動に追随でるようになる。従って、複数のプロセッサ内のあるプロセッサのメモリアクセスだけが遅くなってしまうことがなくなり、マルチプロセッサシステム全体のメモリアクセスに対する応答性能が向上する。
【００３３】
なお、上記の第１の実施例では、プロセッサ１０〜１ｎからのメモリアクセス要求の発信頻度により優先クラス分けを行ったが、第２の実施例として、各プロセッサ内の処理タスク単位または処理スレッド単位におけるメモリアクセス要求の発信頻度により、優先クラス分けを行っても良い。
【００３４】
また、第３の実施例として、プロセッサと、そのプロセッサ内の処理タスク単位または処理スレッド単位との組み合わせを作り、それら組み合わせ単位におけるメモリアクセス要求の発信頻度により優先クラス分けを行っても良い。
【００３５】
さらに、第４の実施例として、メモリアクセス要求の発信頻度のカウントは、メモリ読み出しコマンドとメモリ書き込みコマンドを区別せずにカウントしても良いし、また各々のコマンドを区別してカウントしても良い。そして、区別を行った場合には、メモリ読み出しとメモリ書き込みに対して別々の優先度を与えてクラス分けを行っても良い。
【００３６】
【発明の効果】
本発明は、以下に記載するような効果を奏する。
【００３７】
第１の効果は、コマンドキューへのメモリアクセス要求の発信頻度に対応して、メモリアクセス帯域を動的に変化させることにより、メモリアクセス要求に対する応答特性を向上させることが可能となり、マルチプロセッサシステムにおけるメモリアクセス競合というボトルネックを解消できることである。
【００３８】
第２の効果は、優先度に応じてメモリアクセス帯域を動的に変化させることにより、負荷の高いプロセッサ内の処理の高速化、および負荷の低いプロセッサへのメモリアクセスの保証が可能となり、マルチプロセッサシステム全体のスループットを向上させられることである。
【００３９】
第３の効果は、メモリアクセス帯域を動的に変化させることにより、各プロセッサへのトラヒック変動を吸収することが可能となり、各プロセッサに対応したメモリアクセス方法のプログラミングを簡易にできることである。
【図面の簡単な説明】
【図１】本発明のメモリアクセス装置の構成例を示すブロック図である。
【図２】従来のメモリアクセス装置の構成例を示すブロック図である。
【符号の説明】
１０〜１ｎ　プロセッサ
２０　メモリアクセス装置
３０　共有メモリ
４０　メモリアクセス部
５０　制御部
６０　スケジューラ部
７０　インタフェース部
８０〜８ｍ　コマンドキュー
【図１】
2004126694.tif 000003
【図２】
2004126694.tif 000004