(57)【特許請求の範囲】
【請求項１】
複数の要求元によって共有される共有メモリに対して、各要求元からのアクセス要求をスケジューリングするための装置であって、
前記各要求元からのアクセス要求を受け付けるアクセス要求受け付け部と、
前記アクセス要求受け付け部が受け付けたアクセス要求のうち、アクセス要求選択の基準となる最初のアクセス要求を選択し、前記最初のアクセス要求に対して、バンク・インターリーブ・モード（以下、ＢＩモードという）で転送可能なアクセス要求を選択し、前記ＢＩモードで転送可能なアクセス要求がない場合、または先行アクセス要求がＢＩモードもしくは連続リード／ライト・モード（以下、ＣＮモードという）の場合に、ＣＮモードで転送可能なアクセス要求を選択する、アクセス要求選択部と、
を含み、
前記アクセス要求選択部は、前記ＣＮモードで転送可能なアクセス要求がない場合に、まだ選択されていないアクセス要求を対象に、前記最初のアクセス要求、前記ＢＩモードで転送可能なアクセス要求、および前記ＣＮモードで転送可能なアクセス要求の選択を繰り返す、スケジューリング装置。
【請求項２】
前記アクセス要求受け付け部は、前記各要求元からのアクセス要求を到着順にＦＩＦＯバッファに保管し、
前記アクセス要求選択部は、前記ＦＩＦＯバッファに保管されているアクセス要求のうち、最も待ち時間の長いアクセス要求を前記最初のアクセス要求として選択する、
請求項１に記載のスケジューリング装置。
【請求項３】
前記アクセス要求選択部は、前記ＦＩＦＯバッファに保管されているアクセス要求を待ち時間の長いものから順に走査することにより、前記ＢＩモードまたは前記ＣＮモードで転送可能なアクセス要求があるかどうかを判断する、請求項２に記載のスケジューリング装置。
【請求項４】
前記スケジューリング装置に対してあらかじめ決められたアクセスタイムが割り当てられており、前記アクセス要求選択部は、前記アクセスタイムの制限内で、前記最初のアクセス要求、前記ＢＩモードで転送可能なアクセス要求、および前記ＣＮモードで転送可能なアクセス要求の選択を繰り返す、請求項１乃至３のいずれか１項に記載のスケジューリング装置。
【請求項５】
前記アクセス要求選択部は、アクセス要求の選択のたびに、選択したアクセス要求のプロトコルオーバーヘッドを累算し、その累算値を前記アクセスタイムと比較することによって前記累算値が前記アクセスタイムの制限を超えたかどうかを判断する、請求項４に記載のスケジューリング装置。
【請求項６】
複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするための方法であって、
前記各要求元からのアクセス要求を受け付けるステップと、
前記受け付けるステップで受け付けたアクセス要求のうち、アクセス要求選択の基準となる最初のアクセス要求を選択するステップと、
前記最初のアクセス要求に対して、ＢＩモードで転送可能なアクセス要求を選択するステップと、
前記ＢＩモードで転送可能なアクセス要求がない場合、または先行アクセス要求がＢＩモードもしくはＣＮモードの場合に、ＣＮモードで転送可能なアクセス要求を選択するステップと、
を含み、
前記ＢＩモードで転送可能なアクセス要求または前記ＣＮモードで転送可能なアクセス要求がない場合に、まだ選択されていないアクセス要求を対象に、前記最初のアクセス要求を選択するステップ、前記ＢＩモードで転送可能なアクセス要求を選択するステップ、および前記ＣＮモードで転送可能なアクセス要求を選択するステップを繰り返す、スケジューリング方法。
【請求項７】
前記アクセス要求を受け付けるステップは、前記各要求元からのアクセス要求を到着順にＦＩＦＯバッファに保管し、
前記最初のアクセス要求を選択するステップは、前記ＦＩＦＯバッファに保管されているアクセス要求のうち、最も待ち時間の長いアクセス要求を前記最初のアクセス要求として選択する、
請求項６に記載のスケジューリング方法。
【請求項８】
前記ＢＩモードで転送可能なアクセス要求を選択するステップおよび前記ＣＮモードで転送可能なアクセス要求を選択するステップは、前記ＦＩＦＯバッファに保管されているアクセス要求を待ち時間の長いものから順に走査することにより、前記ＢＩモードで転送可能なアクセス要求があるかどうか、および前記ＣＮモードで転送可能なアクセス要求があるかどうかをそれぞれ判断する、請求項７に記載のスケジューリング方法。
【請求項９】
当該スケジューリング方法を実行する装置に対してあらかじめ決められたアクセスタイムが割り当てられており、前記最初のアクセス要求を選択するステップ、前記ＢＩモードで転送可能なアクセス要求を選択するステップ、および前記ＣＮモードで転送可能なアクセス要求を選択するステップは、前記アクセスタイムの制限内で、前記最初のアクセス要求、前記ＢＩモードで転送可能なアクセス要求、および前記ＣＮモードで転送可能なアクセス要求の選択をそれぞれ繰り返す、請求項６乃至８のいずれか１項にスケジューリング方法。
【請求項１０】
前記最初のアクセス要求を選択するステップ、前記ＢＩモードで転送可能なアクセス要求を選択するステップ、および前記ＣＮモードで転送可能なアクセス要求を選択するステップは、アクセス要求の選択のたびに、選択したアクセス要求のプロトコルオーバーヘッドを累算し、その累算値を前記アクセスタイムと比較することによって前記累算値が前記アクセスタイムの制限を超えたかどうかを判断する、請求項９に記載のスケジューリング方法。
【請求項１１】
複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするためのコンピュータプログラムであって、請求項６乃至１０のいずれか１項に記載のスケジューリング方法の各ステップをコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリのアクセス制御に関し、特に、複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータやストレージデバイスを含む様々な情報処理装置では、電力消費およびコストの削減が重要な課題になっている。例えば、最近のテープドライブは、プロセッサ（ＣＰＵ）を含む複数の装置によって、ＤＲＡＭのような外部メモリを共有する構成を採用している。メモリを共有すると、各装置が固有のメモリを持つ場合に比べて、メモリのチップ数を減らすことができ、ひいては、電力消費およびコストの削減や、回路ボードの縮小に役立つ。
【０００３】
しかしながら、共有メモリシステムを使用すると、プロセッサ等の要求元のメモリアクセスのターンアラウンドタイムが長くなって、パフォーマンスに悪影響を及ぼすことがある。パフォーマンスは、共有メモリシステムのバスの利用効率が悪い場合にも低下する。従って、共有メモリシステムにおいては、ターンアラウンドタイムの短縮と、バス利用効率の改善が急務になっている。
【０００４】
プロセッサからのアクセス要求が外部ＤＲＡＭに送られる場合、アクセス要求のターンアラウンドタイムは、少なくともＤＲＡＭのプロトコルオーバーヘッド（アクセス対象のアドレスが有効化されてから、アクセスが終わって無効化されるまでの時間）に依存する。また、最初のアクセス要求が処理されているときに、第２のプロセッサが別のアクセス要求を出すと、第２のプロセッサは最初のアクセス要求の処理が終わるまで、自身のアクセス要求が処理されるのを待たなければならない。これは、第２のプロセッサのターンアラウンドタイムを増加させる。共有メモリシステムにおいてターンアラウンドタイムを改善するための手法として、バンクインターリーブモード（以下、ＢＩモードという）および連続リード／ライトモード（以下、ＣＮモードという）が知られている。
【０００５】
ＢＩモードでは、例えばアクティブコマンドによって、ＤＲＡＭの複数のバンクを同時に開く、すなわち有効化することができる。コントローラは、異なるバンクアドレスを持つ複数のアクセス要求を、それらの有効化された複数のバンクに対してインターリーブ式に送り、それによりターンアラウンドタイムを短くすることができる。
【０００６】
ＣＮモードでは、コントローラは、前のアクセス要求で指定されたバンクアドレスおよびロウアドレスと同じバンクアドレスおよびロウアドレスを持つライトコマンドまたはリードコマンドを発行することによって、アクセスサイクルを連続させることができ、それによりプロトコルオーバーヘッドおよびターンアラウンドタイムの短縮が可能になる。
【０００７】
ＢＩモードおよびＣＮモードは、プロトコルオーバーヘッドの低減およびＤＲＡＭバス利用効率の改善に寄与するが、アクセス要求のアドレスが、ＢＩモードおよびＣＮモードの条件を満たさない場合は、ノーマルモードの転送が行われることになる。ノーマルモードでは、リードまたはライトのコマンド毎に、アドレスの有効化および無効化が実行される。
【０００８】
ＤＲＡＭとしてＤＤＲ３  ＳＤＲＡＭを用いた場合に、２つのリードコマンドを連続的に処理する場合のプロトコルオーバーヘッドの例を図１に示す。図１中の１文字のアルファベットは、下記非特許文献１に記載のコマンドを表しており、Ａはアクティブコマンド、Ｒはリードコマンド、Ｐはプリチャージコマンドである。また、ＤＱはデータ信号、ＤＱＳはデータストローブ信号を表している。
【０００９】
（Ａ）ノーマル転送
ノーマル転送では、リードコマンドＲごとに、アクティブコマンドＡでバンクアドレス及びロウアドレスの有効化を開始してから、プリチャージコマンドＰでそれらの無効化を終了するまでに２６クロックを要し、従って、２つのリードコマンドＲを連続的に処理する場合のプロトコルオーバーヘッドは５２クロックである。
【００１０】
（Ｂ）ＢＩモード
ＢＩモードでは、２つのバンクからのリードが実行されるので、まずそれらをアクティブコマンドＡで有効化した後２つのリードが連続的に実行され、最後にプリチャージコマンドが１度だけ実行される。トータルのプロトコルオーバーヘッドは３５クロックである。
【００１１】
（ｃ）ノーマル＋ＣＮモード
ＣＮモードの転送は、先行コマンド（ここではノーマルモードのリードコマンド）と同じバンクアドレス及びロウアドレスに対して行われるので、アクティブコマンドＡによるそれらのアドレスの有効化は最初だけでよく、プリチャージコマンドも最後に１度だけ実行すればよいので、プロトコルオーバーヘッドは最短の２８クロックである。プロトコルオーバーヘッドだけを考えれば、ＣＮモードがベストということになる。
【００１２】
下記の特許文献１には、１回のバスサイクルで複数のアクセス要求を処理するようにしたメモリアクセス装置が記載されている。このメモリアクセス装置は、メモリをメインメモリとして使用する複数のＣＰＵと、メモリをバッファとして使用する他の機能ブロックとに接続され、メモリへの複数のＣＰＵからのアクセス転送を制御するＣＰＵインターフェースと、メモリへのアクセス転送の調停を行うＤＲＡＭコントローラとを含んでいる。ＣＰＵインターフェースは、複数のＣＰＵからのアクセス要求を待機させ、かつ各アクセスのアドレス、データ転送モード及びデータサイズを受取り保管し、ＤＲＡＭコントローラにアクセス要求を知らせ、アクセス要求に対して許可信号を受けた場合に、許可信号に応じてＤＲＡＭコントローラに情報を送り、ＤＲＡＭコントローラは、アクセス要求信号を受取り、アクセス調停に基づいて転送を許可されたＣＰＵを指定して許可信号をＣＰＵインターフェースに送るようになっている。
【００１３】
また、下記の特許文献２には、共有メモリシステムを使用する複数の要求元の待ち時間を均等にするための手法が記載されており、それによれば、複数の要求元からのアクセス要求のうち、最も待ち時間の長い要求を選択して、その最長待ち時間要求を他のアクセス要求の後で共有メモリシステムに送り、最長待ち時間要求を出した要求元は、許可された最長待ち時間要求に続けて追加のアクセス要求を共有メモリシステムへ送ることができるようになっている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国特許出願公開第２０１４／００５９２８６Ａ１
【特許文献２】米国特許出願公開第２０１３／０１７９６４５Ａ１
【非特許文献】
【００１５】
【非特許文献１】DDR3 SDRAM STANDARD, JESD79-3F, July 2012 (http://www.jedec.org/standards-documents/docs/jesd-79-3d)
【発明の概要】
【発明が解決しようとする課題】
【００１６】
共有メモリシステムのパフォーマンスの面からは、バス利用効率、すなわち、共有メモリに対するインターフェースの帯域幅（単位時間あたりの転送バイト数）を増大することが重要であり、そのためには、各インターフェースに割り当てられている許容可能なアクセスタイムの制限内で複数のアクセス要求のバースト転送サイズを最大化する必要がある。しかし、特許文献２では、転送の先頭でＢＩモードができない場合、共有メモリアクセスの要求元であるＮ台のプロセッサからのアクセス要求がノーマル転送されるため、オーバーヘッドが大きい。また、特許文献２では、１つの転送サイクルで転送可能なアクセス要求の数が制限されているが、上述のように、転送モードによってオーバーヘッドは異なるため、割り当て済みの許容可能なアクセスタイムに余裕がある場合にも転送が打ち切られることがある。従って、特許文献２に記載の手法はバースト転送サイズの最大化には向いていない。
【００１７】
従って、本発明の目的は、共有メモリに対する複数のアクセス要求をうまくスケジューリングすることによって、ターンアラウンドタイムおよびバス利用効率を改善することにある。
【課題を解決するための手段】
【００１８】
本発明の第１の態様は、複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするための装置を提供し、該装置は、
前記各要求元からのアクセス要求を受け付けるアクセス要求受け付け部と、
前記アクセス要求受け付け部が受け付けたアクセス要求のうち、アクセス要求選択の基準となる最初のアクセス要求を選択し、前記最初のアクセス要求に対して、ＢＩモードで転送可能なアクセス要求を選択し、前記ＢＩモードで転送可能なアクセス要求がない場合、または先行アクセス要求がＢＩモードもしくはＣＮモードの場合に、ＣＮモードで転送可能なアクセス要求を選択する、アクセス要求選択部と、
を含み、
前記アクセス要求選択部は、前記ＢＩモードで転送可能なアクセス要求または前記ＣＮモードで転送可能なアクセス要求がない場合に、まだ選択されていないアクセス要求を対象に、前記最初のアクセス要求、前記ＢＩモードで転送可能なアクセス要求、および前記ＣＮモードで転送可能なアクセス要求の選択を繰り返すように構成される。
【００１９】
本発明の第２の態様は、複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするための方法を提供し、該方法は、
前記各要求元からのアクセス要求を受け付けるステップと、
前記受け付けるステップで受け付けたアクセス要求のうち、アクセス要求選択の基準となる最初のアクセス要求を選択するステップと、
前記最初のアクセス要求に対して、ＢＩモードで転送可能なアクセス要求を選択するステップと、
前記ＢＩモードで転送可能なアクセス要求がない場合、または先行アクセス要求がＢＩモードもしくはＣＮモードの場合に、ＣＮモードで転送可能なアクセス要求を選択するステップと、
を含み、
前記ＢＩモードで転送可能なアクセス要求または前記ＣＮモードで転送可能なアクセス要求がない場合に、まだ選択されていないアクセス要求を対象に、前記最初のアクセス要求を選択するステップ、前記ＢＩモードで転送可能なアクセス要求を選択するステップ、および前記ＣＮモードで転送可能なアクセス要求を選択するステップを繰り返すように構成される。
【００２０】
本発明の第３の態様は、複数の要求元によって共有されるメモリに対して、各要求元からのアクセス要求をスケジューリングするためのコンピュータプログラムを提供し、該コンピュータプログラムは、コンピュータに前記第２の態様に係る方法の各ステップを実行させる。
【００２１】
いずれの態様においても、アクセス要求選択の基準となる最初のアクセス要求は、ＦＩＦＯバッファに保管されているアクセス要求のうち、最も待ち時間の長いアクセス要求であってもよい。
【００２２】
また、ＢＩモードで転送可能なアクセス要求の選択、およびＣＮモードで転送可能なアクセス要求の選択は、ＦＩＦＯバッファに保管されているアクセス要求を待ち時間の長いものから順に走査することにより、ＢＩモードで転送可能なアクセス要求があるかどうか、およびＣＮモードで転送可能なアクセス要求があるかどうかをそれぞれ判断するようにしてもよい。
【００２３】
また、スケジューリング装置に対してあらかじめ決められたアクセスタイムを割り当て、最初のアクセス要求、ＢＩモードで転送可能なアクセス要求、およびＣＮモードで転送可能なアクセス要求を選択するときは、このアクセスタイムの制限内で、それぞれのアクセス要求の選択を繰り返すようにしてもよい。
【００２４】
また、最初のアクセス要求、ＢＩモードで転送可能なアクセス要求、およびＣＮモードで転送可能なアクセス要求を選択するときは、アクセス要求の選択のたびに、選択したアクセス要求のプロトコルオーバーヘッドを累算し、その累算値を割り当て済みのアクセスタイムと比較することによって累算値がアクセスタイムの制限を超えたかどうかを判断するようにしてもよい。
【図面の簡単な説明】
【００２５】
【図１】２つのリードコマンドをノーマルモード、ＢＩモードおよびＣＮモードで処理したときのプロトコルオーバーヘッドを示す図。
【図２】本発明に従うスケジューリング装置を含む共有メモリシステムの構成例を示すブロック図。
【図３】本発明に従うスケジューリング装置として機能するプロセッサインターフェースの詳細を示すブロック図。
【図４】プロセッサインターフェースのアクセス要求受け付け部に含まれる要求ＦＩＦＯのエントリの一例を示すブロック図
【図５】要求ＦＩＦＯの内容の具体例を示す図。
【図６】本発明に従うスケジューリング方法の実施形態を示すフローチャート。
【図７】図６の実施形態におけるアクセス要求を選択するステップの詳細を示すフローチャート。
【図８】図７の実施形態においてアクセス要求が選択されるたびに実行される動作を示すフローチャート。
【図９】ＤＲＡＭコントローラへ送るために本発明の実施態様に従って作成されたアクセス要求の転送パッケージの一例を示す図。
【発明を実施するための形態】
【００２６】
本発明に従うスケジューリング装置を含む共有メモリシステムの一構成例を図２に示す。図２において、本発明に従うスケジューリング装置として機能するのはプロセッサインターフェース１１である。プロセッサインターフェース１１には、それぞれのローカルバスを介して複数のプロセッサ１２（プロセッサ１、プロセッサ２・・・プロセッサｍ）が接続されており、これらのプロセッサ１２は共有ＤＲＡＭ１４に対する要求元となる。プロセッサインターフェース１１は、以下で説明するスケジューリングにより、各プロセッサ１２からのアクセス要求を１つの転送パッケージにまとめて、ＤＲＡＭコントローラ１３に送る。ＤＲＡＭコントローラ１３は、この転送パッケージに含まれるアクセス要求（リードまたはライト）に従って共有ＤＲＡＭ１４をアクセスする。
【００２７】
プロセッサインターフェース１１の詳細を図３に示す。図示のように、プロセッサインターフェース１１は、各プロセッサからローカルバスを介してアクセス要求を受け付けるアクセス要求受け付け部３１と、アクセス要求受け付け部３１が受け付けたアクセス要求を所定の基準に従って選択し、１つの転送パッケージにまとめるアクセス要求選択部３２と、プロセッサローカルバスとＤＲＡＭコントローラ１３との間でリードデータまたはライトデータを転送するデータ転送部３３と、ＤＲＡＭコントローラ１３へのインターフェースを提供するＤＲＡＭコントローラインターフェース３４とを含んでいる。
【００２８】
アクセス要求受け付け部３１は、ローカルバスの要求ライン、Ｒ／Ｗラインおよびアドレスラインに接続されており、アクセス要求を持つプロセッサが要求ラインを上げたことに応答して、リードまたはライトを示すＲ／Ｗライン上の信号と、アドレスライン上のアドレス信号、すなわち共有ＤＲＡＭ１４のバンクアドレス、ロウアドレスおよびカラムアドレスを保管する。本実施形態では、アクセス要求受け付け部３１はＦＩＦＯバッファ（以下、要求ＦＩＦＯという）を含み、そのエントリの一例を図４に示す。
【００２９】
図４に示すように、要求ＦＩＦＯの各エントリは、アクセス要求を出したプロセッサを識別するプロセッサＩＤと、上述のアドレス信号およびＲ／Ｗ信号とを含む。アクセス要求を出したプロセッサは、ローカルバスから識別することができる。すなわち、図２に示すように、各プロセッサ１２には専用のローカルバスが接続されているので、アクセス要求受け付け部３１は、要求ラインが上がったローカルバスにより、アクセス要求を出したプロセッサを識別することができる。アクセス要求受け付け部３１は、識別したプロセッサのＩＤ（図２に示すように、各プロセッサの番号１、２・・・ｍでもよい）を要求ＦＩＦＯに保管する。アクセス要求受け付け部３１は、プロセッサ１２からのアクセス要求を受け付けると、そのことをＤＲＡＭコントローラインターフェース３４に知らせる。
【００３０】
アクセス要求選択部３２は、後で詳しく説明するように、ＤＲＡＭコントローラ１３によって許可されると、アクセス要求受け付け部３１の要求ＦＩＦＯに保管されているアクセス要求から、所定の基準に従ってアクセス要求を選択し、それらのアクセス要求を含む転送パッケージを作成して、ＤＲＡＭコントローラインターフェース３４へ送る。
【００３１】
データ転送部３３は、共有ＤＲＡＭ１４から読み出したリードデータ及び共有ＤＲＡＭ１４に書き込むライトデータを一時的に保管して、リードデータを要求元のプロセッサに転送し、ライトデータをＤＲＡＭコントローラ１３へ転送する回路で、本実施形態においては、アクセス要求受け付け部３１と同様に、ＦＩＦＯバッファを使用して、それらのデータを保管する。図には示していないが、このＦＩＦＯバッファは、リードデータ用のＦＩＦＯバッファ（以下、リードＦＩＦＯという）およびライトデータ用のＦＩＦＯバッファ（以下、ライトＦＩＦＯという）を含む。
【００３２】
ＤＲＡＭコントローラインターフェース３４は、ＤＲＡＭコントローラ１３へのインターフェースを提供するもので、アクセス要求受け付け部３１からアクセス要求の受け付けを通知されると、ＤＲＡＭコントローラ１３に要求信号を送り、ＤＲＡＭコントローラ１３からの許可信号を待つ。ＤＲＡＭコントローラ１３は、共有ＤＲＡＭ１４のアクセスが可能であれば、ＤＲＡＭコントローラインターフェース３４に許可信号を返す。ＤＲＡＭコントローラインターフェース３４は、許可信号を受け取ると、アクセス要求選択部３２にアクセス要求の選択および転送パッケージの作成を開始させ、そしてアクセス要求選択部３２からの転送パッケージに含まれる各アクセス要求に応じて、必要なモード信号およびアドレス信号をＤＲＡＭコントローラ１３に送る。モード信号には、上述のＲ／Ｗ信号の他に、ＢＩモードまたはＣＮモードを示す信号も含まれる。ＤＲＡＭコントローラ１３は、これらの信号に応じて、共有ＤＲＡＭのアクセスを実行する。
【００３３】
図３に示す各構成要素は、アクセス要求選択部３２を除き、上記の特許文献１に記載の対応する構成要素と同じものでもよい。
【００３４】
なお、図２および図３には示していないが、ＤＲＡＭコントローラ１３は、プロセッサインターフェース１１の他にも、共有ＤＲＡＭ１４を使用する他の機能装置（例えば、テープドライブでは、サーボ回路、エラー訂正回路などが共有ＤＲＡＭを使用する）のインターフェースに接続することも可能である。その場合、ＤＲＡＭコントローラ１３は、特許文献１にも記載されているように、各インターフェースからの要求を調停するためのアービタを含み、このアービタにより許可されたインターフェースに許可信号を送る。ＤＲＡＭコントローラ１３に複数のインターフェースが接続されている構成では、一般に、あらかじめ決められた許容可能なアクセスタイムが各インターフェースに割り当てられ、各インターフェースは、その制限内で複数のアクセス要求を時分割的にＤＲＡＭコントローラ１３に送ることができる。
【００３５】
次に、アクセス要求受け付け部３１に含まれる要求ＦＩＦＯの具体的な内容を示す図５と、図６〜図８のフローチャートを参照しながら、本発明に従うスケジューリング装置、すなわちプロセッサインターフェース１１の動作について説明する。なお、図６〜図８のフローチャートにおいては、「アクセス要求」を単に「要求」と表記している。
【００３６】
図５に示す要求ＦＩＦＯは、各プロセッサ１２からのアクセス要求に関する情報、すなわちプロセッサＩＤ、アドレスおよびリード／ライト（Ｒ／Ｗ）信号を、アクセス要求の到着順に、上から下に向かって順に保管するよう構成されている。「プロセッサＩＤ」の欄に示されているＰｉ（ｊ）は、ｉ番目（ｉ＝１、２・・・ｍ）のプロセッサＰｉからのｊ番目（ｊ＝１、２・・・ｎ）のアクセス要求に係るプロセッサＩＤである。なお、図５の要求ＦＩＦＯの場合は、これらの情報がアクセス要求の到着順に上から順に保管されるので、アクセス要求の順番を示す情報（ｊ）を保管しておかなくても、その順番を特定することは可能である。以下では、説明の便宜上、「プロセッサＩＤ」の欄に示されているＰｉ（ｊ）がアクセス要求も識別するものとする。
【００３７】
「アドレス」の欄に示されているＢａｎｋはバンクアドレス、Ｒｏｗはロウアドレスを表している。実際には、共有ＤＲＡＭ１４はこれら２つのアドレスと、カラムアドレスとを用いてアクセスされるが、後述のように、本発明は、これら３つのアドレスのうち、バンクアドレスおよびロウアドレスだけを用いて、アクセス要求の転送をスケジューリングするので、図５ではカラムアドレスの表記を省略している。
【００３８】
「Ｒ／Ｗ」の欄に示されているＲは、アクセス要求がリードであることを表し、Ｗは、アクセス要求がライトであることを表している。
【００３９】
図５は、最初にプロセッサ１（Ｐ１）がＢａｎｋ１、Ｒｏｗ１０に対してリードのアクセス要求を出したことを示す。アクセス要求受け付け部３１は、図６のステップＳ６１でこのアクセス要求Ｐ１（１）を受け付け、そのことをＤＲＡＭコントローラインターフェース３４に通知する。ＤＲＡＭコントローラインターフェース３４は、この通知に応答して、ＤＲＡＭコントローラ１３に要求信号を送り、許可されるのを待つ（ステップＳ６２）。ＤＲＡＭコントローラ１３は、要求信号を受け取ったとき、共有ＤＲＡＭがアクセス中でなければ、ＤＲＡＭコントローラインターフェース３４に許可信号を送るが、アクセス中の場合は、アクセスが終了するまで許可信号の返送を遅らせる。その間、アクセス要求受け付け部３１の要求ＦＩＦＯには、後続のアクセス要求が到着順に保管され続ける（Ｓ６２からの「いいえ」のパス）。ここでは、ＤＲＡＭコントローラ１３によって許可されるまでに、プロセッサｍ（Ｐｍ）のｎ番目のアクセス要求Ｐｍ（ｎ）までが要求ＦＩＦＯに保管されているものとする（図５参照）。ＤＲＡＭコントローラ１３から許可されると、ＤＲＡＭコントローラインターフェース３４は、それに応答して、アクセス要求選択部３２にアクセス要求の選択を開始させる。
【００４０】
アクセス要求選択部３２は、要求ＦＩＦＯに保管されている複数のアクセス要求から、以下で説明する所定の基準に従って、アクセス要求を順に選択し、それらを含む転送パッケージを作成する（ステップＳ６３）。次に、アクセス要求選択部３２は、選択した１つまたは複数のアクセス要求を含む転送パッケージを、ＤＲＡＭコントローラインターフェース３４を介してＤＲＡＭコントローラ１３に転送する（ステップＳ６４）。最後に、データ転送部３３は、アクセス要求がリードの場合には、共有ＤＲＡＭ１４から読み出されたデータをＤＲＡＭコントローラ１３から受け取って、リードＦＩＦＯに保管し、要求元のプロセッサにリードデータがあることをレディ信号で知らせ、リードデータを要求元プロセッサに転送する（ステップＳ６５）。また、データ転送部３３は、アクセス要求がライトの場合には、共有ＤＲＡＭ１４に書き込むべきライトデータを要求元プロセッサに要求して、ライトＦＩＦＯに保管し、次いでそれをＤＲＡＭコントローラ１４へ転送する（ステップＳ６５）。
【００４１】
上記の各ステップのうち、アクセス要求を選択するステップＳ６３以外は、例えば特許文献１にも記載のように、よく知られているので、それらの詳細については省略する。
【００４２】
アクセス要求選択部３２が実行するステップＳ６３の詳細を図７および図８に示す。
【００４３】
アクセス要求選択部３２は、まず、アクセス要求受け付け部３１の要求ＦＩＦＯに保管されている複数のアクセス要求から、あとのアクセス要求選択の基準となる最初のアクセス要求を選択する（ステップＳ７１）。この最初のアクセス要求は、要求ＦＩＦＯにおいて最も待ち時間が長いものが好ましい。その場合、図５の例では、アクセス要求選択部は、プロセッサ１からのリードのアクセス要求Ｐ１（１）を選択することになる。
【００４４】
次に、プロセッサインターフェース１１に割り当てられている許容可能なアクセスタイムの制限を超えたかどうかを判断するために、アクセス要求選択部３２は、最初のアクセス要求Ｐ１（１）の選択に続いて、図８のステップＳ８１に進み、プロトコルオーバーヘッドを累算する。最初のアクセス要求Ｐ１（１）は、図５の例ではリードであるので、そのプロトコルオーバーヘッドは、例えば２６クロックである（図１参照）。次に、アクセス要求選択部３２は、プロトコルオーバーヘッドの累算値を許容可能なアクセスタイムと比較することによって、その制限（例えば、１０００クロック）を超えたかどうかを判断し（ステップＳ８２）、超えていなければ選択したアクセス要求を転送パッケージに含めて（ステップＳ８３）、次のステップ（今の場合は、図７のステップＳ７２）に進む。最初のアクセス要求Ｐ１（１）の場合は、上の例では、累算値は制限を超えていないが、図８のフローは、後述のように、アクセス要求の選択のたびに実行されるので、複数のアクセス要求が選択されて、それらのプロトコルオーバーヘッドの累算値が制限を超えると、アクセス要求選択部３２は、直前に選択したアクセス要求を廃棄して、アクセス要求選択プロセスを終了し（ステップＳ８４）、図６のステップＳ６４に進んで、作成した転送パッケージをＤＲＡＭコントローラインターフェース３４に転送する。ステップＳ８４で廃棄されたアクセス要求は要求ＦＩＦＯには残っているので、図７のフローを再び実行するときは、選択の対象となる。
【００４５】
アクセス要求選択部３２は、次のステップＳ７２で、要求ＦＩＦＯのエントリを上から順に、すなわち、待ち時間が長いものから順に走査することにより、最初のアクセス要求に対してＢＩモードで転送可能なアクセス要求があるかどうかを判断する。図５の例では、最初のアクセス要求のバンクアドレスはＢａｎｋ１であり、これと異なるバンクアドレスを持つアクセス要求として、プロセッサ３（Ｐ３）からの２番目のアクセス要求Ｐ３（２）が見つかるので、アクセス要求選択部はこのアクセス要求を選択する（ステップＳ７３）。もし見つからなければ、ステップＳ７４に進む。
【００４６】
前述のように、従来は、最初のアクセス要求に対してＣＮモードで転送可能なアクセス要求（図５の例では、同じプロセッサ１（Ｐ１）からの２番目のアクセス要求Ｐ１（２））が次に選択されていたが、本発明はＢＩモードを優先する。ＢＩモードでは、少なくとも２つの異なった（Ｂａｎｋ、Ｒｏｗ）の組み合わせが使用されるため、それらの組み合わせに対して、後続のアクセス要求をＣＮモードで転送できるようになるからである。
【００４７】
アクセス要求選択部３２は、ＢＩモードで転送可能なアクセス要求の選択に続いて、図８のプロセスを前述のようにして実行し、累算値が制限を超えていなければ、選択したアクセス要求を転送パッケージに含めた後、ステップＳ７２に戻って、ステップＳ７３で前に選択したアクセス要求の次のアクセス要求（図５の例では、Ｐ２（１））のところから順に走査することにより、ＢＩモードで転送可能なアクセス要求がまだあるかどうか、すなわちＢａｎｋ１およびＢａｎｋ８以外のバンクアドレスを持つアクセス要求があるかどうかを判断する。このように、ステップＳ７２では、要求ＦＩＦＯのエントリを上から順に、すなわち待ち時間が長いものから順に走査されるので、ステップＳ７３で選択されるアクセス要求が複数の場合には、それらは待ち時間の長い順に選択されることになる。
【００４８】
アクセス要求選択部３２は、ＢＩモードで転送可能なアクセス要求がなければ、ステップＳ７４に進んで、要求ＦＩＦＯにおいて選択済みのアクセス要求の次のアクセス要求から順に走査し、選択済みアクセス要求のバンクアドレスおよびロウアドレスの組み合わせを、まだ選択されていない他のアクセス要求のバンクアドレスおよびロウアドレスの組み合わせと比較することによって、ＣＮモードで転送可能なアクセス要求があるかどうかを判断する。図５の例では、最初に選択したアクセス要求Ｐ１（１）は、バンクアドレスおよびロウアドレスの組み合わせが（Ｂａｎｋ１、Ｒｏｗ１０）であり、これと同じ組み合わせを持つアクセス要求は、上から順に、すなわち待ち時間の長いものから順に、Ｐ１（２）〜Ｐ１（ｎ）、Ｐ２（２）、Ｐｍ（３）である。また、２番目に選択したアクセス要求Ｐ３（２）は、バンクアドレスおよびロウアドレスの組み合わせが（Ｂａｎｋ８、Ｒｏｗ６）であり、これと同じ組み合わせを持つアクセス要求はＰ３（３）である。このように、本発明によれば、ＣＮモードに優先して、ＢＩモードで転送可能なアクセス要求を選択しているので、その後でＣＮモードで転送可能なアクセス要求を少なくとも２組選択することができる。
【００４９】
アクセス要求選択部３２は、要求ＦＩＦＯにおいて選択済みのアクセス要求の次のアクセス要求から順に走査することによって、ＣＮモードで転送可能なアクセス要求を見つけると（図５の例では、最初にＰ１（２）が見つかる）、それを選択し（ステップＳ７５）、続いて図８のプロセスを実行する。図８のプロセスで累算値が制限を超えていなければ、選択したアクセス要求を転送パッケージに含めた後、ステップＳ７４に戻って、ＣＮモードで転送可能なアクセス要求の選択を繰り返す。ステップＳ７４およびＳ７５を繰り返すことにより、アクセス先のバンクが異なる２つのアクセス要求Ｐ１（１）およびＰ３（２）に対してＣＮモードで転送可能なアクセス要求が待ち時間の長い順に選択されることになる。
【００５０】
上記の説明から明らかなように、ＣＮモードで転送可能なアクセス要求が選択されるのは、ＢＩモードで転送可能なアクセス要求がない場合（図７のステップＳ７２の「いいえ」からステップＳ７４を経由してステップＳ７５に至るパス）、先行アクセス要求がＢＩモードの場合（ステップＳ７３からステップＳ７４を経由してステップＳ７５に至るパス）、または先行アクセス要求がＣＮモードの場合（図８のステップＳ８３から図７のステップＳ７４を経由してステップＳ７５に至るパス）である。
【００５１】
アクセス要求選択部３２は、ＣＮモードで転送可能なアクセス要求がない場合は、ステップＳ７１に戻って、まだ選択されていないアクセス要求を対象として、アクセス要求選択の基準となる次のアクセス要求（図５の例では、Ｐｍ（１））を選択し、上述の各ステップを繰り返す。
【００５２】
図９は、このようにして選択された複数のアクセス要求からなる転送パッケージの例を示す。図９の転送パッケージにおいて、アクセス要求Ｐ１（１）からアクセス要求Ｐ１（ｎ）までは、図７のステップＳ７４において「いいえ」のパスに出るまでに選択されたアクセス要求であり、アクセス要求Ｐｍ（１）からアクセス要求Ｐｍ（ｎ）までは、ステップＳ７４からステップＳ７１に戻って開始される２回目の選択プロセスで選択されたアクセス要求である。アクセス要求Ｐｍ（１）の直後のアクセス要求Ｐ２（１）は、それまでに選択されなかったアクセス要求のうちで、アクセス要求Ｐｍ（１）に対してＢＩモードで転送可能なアクセス要求、すなわち、アクセス要求Ｐｍ（１）とは異なるバンクアドレスを持つアクセス要求であり、その後ろには、アクセス要求Ｐｍ（１）と同じバンクアドレスおよびロウアドレスを持つアクセス要求Ｐｍ（２）およびＰｍ（ｎ）が、ＣＮモードで転送可能なアクセス要求として、待ち時間の長い順に選択されている。
【００５３】
アクセス要求選択部３２は、この転送パッケージをＤＲＡＭコントローラインターフェース３４に送る。ＤＲＡＭコントローラインターフェース３４は、受け取った転送パッケージに含まれる各アクセス要求に応じて、モード信号（Ｒ／Ｗと、ＢＩモードまたはＣＮモードを示す信号）およびアドレスをＤＲＡＭコントローラ１３に順次供給し、アクセス要求がライトの場合は、データ転送部３３からライトデータをＤＲＡＭコントローラ１３に転送させ、アクセス要求がリードの場合は、ＤＲＡＭコントローラ１３から送られてきたリードデータをデータ転送部３３に受け取らせる。
【００５４】
ＤＲＡＭコントローラ１３は、ＤＲＡＭコントローラインターフェース３４からのモード信号に応じて適切なコマンドシーケンスを共有ＤＲＡＭに送り、リードまたはライトを実行する。例えば、図９の例では、最初のリードアクセス要求Ｐ１（１）に対して次のリードアクセス要求Ｐ３（２）がＢＩモードになっているので、ＤＲＡＭコントローラ１３は、図１の（Ｂ）に示されるようなコマンドシーケンスを発行する。ただし、３番目のアクセス要求Ｐ１（２）からＰ１（ｎ）まではＣＮモードになっているので、プリチャージコマンドＰは、ＣＮモードの最後のアクセス要求Ｐ１（ｎ）まで発行されない。その次のＰｍ（１）からは、前と同様のコマンドシーケンスが繰り返される。
【００５５】
以上のように、本発明によれば、基準となる最初のアクセス要求が選択された後は、ＣＮモードに優先して、ＢＩモードで転送可能なアクセス要求が選択される。従って、その後、ＣＮモードで転送可能なアクセス要求を選択する際には、バンクアドレスが異なる少なくとも２つのアクセス要求に対して連続的にアクセス要求を選択できるので、バースト転送サイズの最大化を図ることができる。ただし、最初にＢＩモードで転送可能なアクセス要求を選択すると、ＦＩＦＯの順番外の選択になることがあるので、例えば、要求ＦＩＦＯの対応するエントリに選択済みのタグをつけておけば、２回目以降のアクセス要求選択プロセスにおいて、当該アクセス要求が再度選択されるという不都合を回避することができる。
【００５６】
以上、本発明の好ましい実施形態について説明してきたが、本発明は上述の実施形態に限定されるものではなく、本発明の範囲および趣旨から逸脱することなく様々な変更や修正を行うことが可能である。例えば、上述の実施形態では、あらかじめ決められた許容可能なアクセスタイムがプロセッサインターフェース１１に割り当てられていたが、ＤＲＡＭコントローラ１３に接続されているのがプロセッサインターフェース１１だけであれば、そのような割り当てを行わなくてもよい。その場合は、図８のフローは不要になるため、ステップＳ８４に代わって、どのようなときに転送を打ち切るかをあらかじめ定義しておく必要があるが、それは任意に決めてよい。
【符号の説明】
【００５７】
１１：プロセッサインターフェース
１２：プロセッサ
１３：ＤＲＡＭコントローラ
１４：共有ＤＲＡＭ
３１：アクセス要求受け付け部
３２：アクセス要求選択部
３３：データ転送部
３４：ＤＲＡＭコントローラインターフェース
【要約】
【課題】共有メモリに対する複数のアクセス要求をうまくスケジューリングすることによって、ターンアラウンドタイムおよびバス利用効率を改善すること
【解決手段】本発明に従うスケジューリング装置は、各要求元からのアクセス要求を受け付けるアクセス要求受け付け部と、アクセス要求受け付け部が受け付けたアクセス要求のうち、アクセス要求選択の基準となる最初のアクセス要求を選択し、この最初のアクセス要求に対して、ＢＩモードで転送可能なアクセス要求を選択し、ＢＩモードで転送可能なアクセス要求がない場合、または先行アクセス要求がＢＩモードもしくはＣＮモードの場合に、ＣＮモードで転送可能なアクセス要求を選択する、アクセス要求選択部とを含み、アクセス要求選択部は、ＣＮモードで転送可能なアクセス要求がない場合に、まだ選択されていないアクセス要求を対象に、最初のアクセス要求、ＢＩモードで転送可能なアクセス要求、およびＣＮモードで転送可能なアクセス要求の選択を繰り返すように構成される。
【選択図】  図３【図１】
0005911548.tif 000002
【図２】
0005911548.tif 000003
【図３】
0005911548.tif 000004
【図４】
0005911548.tif 000005
【図５】
0005911548.tif 000006
【図６】
0005911548.tif 000007
【図７】
0005911548.tif 000008
【図８】
0005911548.tif 000009
【図９】
0005911548.tif 000010