(57)【要約】【課題】アクセスパターンによらず、メモリアクセス性能を向上できるようにする。【解決手段】複数のバスマスターと、前記複数のバスマスターからのアクセスを受け取り、ＤＲＡＭ７００へのアクセスを行うメモリアクセス回路６００と、前記複数のバスマスターとメモリアクセス回路６００とを接続する共有バス４００と、共有バス４００において前記複数のバスマスターからのメモリアクセスを調停するアービタ５００と、メモリアクセス回路６００がアクセスするＤＲＡＭ７００とを有するメモリシステムであって、ＤＲＡＭ７００のバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持し、前記複数のバスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択するバスマスター選択回路５２０を有する。【選択図】図１
2011034324.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセスを行う複数のバスマスターと、前記複数のバスマスターからのアクセスを受け取り、メモリへのアクセスを行うメモリアクセス手段と、前記複数のバスマスターと前記メモリアクセス手段とを接続する共有バスと、前記共有バスにおいて前記複数のバスマスターからのメモリアクセスを調停するアービタと、前記メモリアクセス手段がアクセスするメモリとから構成されるメモリシステムであって、
前記メモリのバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持する保持手段と、
前記複数のバスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択し、前記選択したバスマスターのアクセスするページを前記アクティブページテーブルに通知するバスマスター選択手段とを有することを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリシステムに関し、特に、複数のバスマスターがメモリアクセスを行う際に用いて好適な技術に関する。
【背景技術】
【０００２】
従来のメモリシステムでは、メモリアクセス回路が取り込んだアクセスの順番でメモリアクセスを行う。そのため、同一バンク内でアクティブになりページに対してアクセス対象となるページが切り替わるようなページミスが頻繁に発生し、ページのクローズ、オープンといったコマンドが必要となり、メモリアクセス性能が低下する。そこで、メモリアクセス回路にリオーダリング回路を付加することにより、ページミス回数を低減することが行われている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２６３６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら従来のメモリシステムでは、アクセスパターンによってはリオーダリングの効果が得られず、ページミスによるペナルティが発生し、メモリアクセス性能が向上しないといった問題がある。
【０００５】
本発明は前述の問題点に鑑み、アクセスパターンによらず、メモリアクセス性能を向上できるようにすることを目的としている。
【課題を解決するための手段】
【０００６】
本発明のメモリシステムは、メモリアクセスを行う複数バスマスターと、前記複数バスマスターからのアクセスを受け取り、メモリへのアクセスを行うメモリアクセス手段と、前記複数バスマスターと前記メモリアクセス手段とを接続する共有バスと、前記共有バスにおいて前記複数バスマスターからのメモリアクセスを調停するアービタと、前記メモリアクセス手段がアクセスするメモリとから構成されるメモリシステムであって、前記メモリのバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持する保持手段と、前記複数バスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択し、前記選択したバスマスターのアクセスするページを前記アクティブページテーブルに通知するバスマスター選択手段とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、メモリアクセス回路がアクセスを取り込む際にページミスによるペナルティが発生しないようにアービタがメモリアクセスを行うバスマスターを選択するため、ページミスの発生回数が低減し、メモリアクセス性能を向上することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態のメモリシステムの構成例を示すブロック図である。
【図２】従来のメモリシステムの構成例を示すブロック図である。
【図３】メモリシステムにおけるメモリアクセスの波形を示す図である。
【図４】メモリシステムにおけるメモリアクセスの波形を示す図である。
【図５】アクティブページテーブルの一例を示す図である。
【図６】バスマスター選択回路の詳細な構成例を示すブロック図である。
【図７】バスマスターを決定する処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
図２（ａ）は、複数バスマスターからメモリアクセスを行う従来のメモリシステムの構成例を示すブロック図である。
図２（ａ）において、１１００、１２００、１３００はメモリアクセスを行うバスマスターである。１１０１、１２０１、１３０１はバスマスター１１００、１２００、１３００が出力するメモリアクセスのリクエスト信号である。１１０２、１２０２、１３０２はバスマスター１１００、１２００、１３００が出力するメモリアクセスのアドレス信号である。１４００はバスマスター１１００、１２００、１３００に接続された共有バスである。１４０１は共有バス１４００が出力するメモリアクセスのリクエスト信号である。１４０２は共有バス１４００が出力するメモリアクセスのアドレス信号である。
【００１０】
１５００はバスマスター１１００、１２００、１３００からのアクセスを調停し、選択するバスマスターを共有バス１４００に知らせるアービタである。１５０１はアービタ１５００が選択したバスマスターを示すバスマスター信号である。１６００は共有バス１４００から出力されるアクセスを取り込み、ＤＲＡＭへのアクセスを行うメモリアクセス回路である。１６１０はメモリアクセス回路１６００が取り込んだアクセスを複数保持するためのコマンドキューである。
【００１１】
１７００はＤＲＡＭ（Dynamic Random Access Memory）である。ＤＲＡＭ１７００は通常、複数バンクから構成され、各バンクは複数のページに分割されている。ＤＲＡＭ１７００にアクセスを発行する場合、該当ページにアクティブコマンドを発行した後にアクセスが実行可能となる。同一バンク内でアクティブになりページに対してアクセス対象となるページが切り替わる場合（以下、ページミス）、既にアクティブとなっているページを非アクティブ化（以下、クローズ）する。そして、アクセス対象のページをアクティブ化（以下、オープン）し、前記アクティブ化されたページに対するアクセスを実行する必要がある。
【００１２】
バスマスター１１００、１２００、１３００がアクセスを発行すると、アービタ１５００がアクセスを許可するバスマスターを決定し、共有バス１４００に通知する。共有バス１４００はアクセスを許可されたバスマスターからのアクセスを出力する。メモリアクセス回路１６００は受信したアクセスをコマンドキュー１６１０に取り込む。メモリアクセス回路１６００はコマンドキュー１６１０の先頭のアクセスをメモリコマンドに変換し、ＤＲＡＭ１７００に発行する。
【００１３】
図２（ｂ）は、前述した図２（ａ）のメモリシステムにおいて、メモリアクセス回路１６００にリオーダリング回路１６２０を付加することでページミス回数を低減する従来のメモリシステムの構成例を示すブロック図である。図２（ｂ）に示す例では、リオーダリング回路１６２０により、コマンドキュー１６１０内に保持された複数のアクセスの順番を変更することでページミスによるペナルティを低減させ、メモリアクセス性能が向上する。
【００１４】
図４（ａ）は、図２（ａ）に示すメモリシステムにおけるメモリアクセスの波形を示す図である。また、図４（ｂ）は、図２（ｂ）に示すメモリシステムにおけるメモリアクセスの波形を示す図である。図４では上から、クロック、バスマスター１１００のアクセス、バスマスター１２００のアクセス、バスマスター１３００のアクセス、共有バス１４００の選択アクセス、コマンドキュー１６１０の状態、メモリアクセス回路１６００のメモリコマンドである。実際にＤＲＡＭ１７００にメモリコマンドを発行する際は各コマンドの間隔が規定されているが、説明を簡単にするためメモリコマンドの間隔は全て１サイクルとしている。
【００１５】
バスマスター１１００はアクセスＡ、Ｂを発行し、バスマスター１２００はアクセスＣ、Ｄを発行し、バスマスター１３００はアクセスＥ、Ｆを発行する。アクセスＡ、Ｃ、Ｄはページ０へのアクセスであり、アクセスＢ、Ｅ、Ｆはページ１へのアクセスであるものとする。バスマスター１１００、１２００、１３００は同一バンクにアクセスするものとする。バスのアービトレーション方式としては複数バスマスターからのアクセスを順に選択するラウンドロビン方式や複数バスマスターに優先順位を設け優先度の高いバスマスターからのアクセスを優先的に選択するプライオリティ方式が広く知られている。図４（ａ）、図４（ｂ）では、アービタ１５００はラウンドロビン方式を採用したものとする。よって、メモリアクセス回路１６００にはアクセスＡ、Ｃ、Ｅ、Ｂ、Ｄ、Ｆの順にアクセスが取り込まれる。
【００１６】
図４（ａ）では、メモリアクセス回路１６００に取り込まれたアクセスが取り込まれた順に処理されるため、アクセスＡとアクセスＣ、アクセスＥとアクセスＢ、アクセスＢとアクセスＤとの間にページの切り替わりが起き、メモリアクセス性能が低下している。それに対して図４（ｂ）では、サイクル６において、ページミスが起きないようコマンドキュー１６１０のリオーダリングしている。これにより、図４（ａ）に比べてページミス回数が減り、メモリアクセス性能が向上している。
【００１７】
ところが、図２（ｂ）のメモリシステムでは、図４（ｂ）に示すようにページ切り替わりが２回起きている。アクセスＤをアクセスＣとアクセスＥとの間に出せればページの切り替わりを１回に減らし、メモリアクセス性能を向上できる。しかしながら、図４（ｂ）に示すように、アクセスＤがコマンドキュー１６１０に取り込まれるときには、既にアクセスＥがＤＲＡＭ１７００へ発行されているため、アクセスＤがアクセスＥよりも前にＤＲＡＭ１７００へ発行することができない。このように従来のメモリシステムでは、アクセスパターンによってはリオーダリングの効果が得られず、ページミスによるペナルティが発生し、メモリアクセス性能が向上しないといった問題がある。
【００１８】
このような問題点を解決するために、以下、本発明の実施形態について、図面を参照しながら説明する。
図１は、本実施形態のメモリシステムの構成例を示すブロック図である。
図１において、１００、２００、３００はメモリアクセスを行うバスマスターである。１０１、２０１、３０１はバスマスター１００、２００、３００が出力するメモリアクセスのリクエスト信号である。１０２、２０２、３０２はバスマスター１００、２００、３００が出力するメモリアクセスのアドレス信号である。４００はバスマスター１００、２００、３００に接続された共有バスである。４０１は共有バス４００が出力するメモリアクセスのリクエスト信号である。４０２は共有バス４００が出力するメモリアクセスのアドレス信号である。
【００１９】
５００はバスマスター１００、２００、３００からのアクセスを調停し、選択するバスマスターを共有バス４００に知らせるアービタである。５０１はアービタ５００が選択したバスマスターを示すバスマスター信号である。５１０はＤＲＡＭ７００のバンクごとにどのページがオープンであるかの情報を保持するアクティブページテーブルである。例えばＤＲＡＭ７００が４バンク構成である場合、図５に示すように、４バンクのそれぞれに対してどのページがオープンであるかという情報を保持する。
【００２０】
５１１はアクティブページテーブル５１０から出力されるアクティブページ情報である。５２０はバスマスター１００、２００、３００からのアクセスに応じてアクセスを許可するバスマスターを決定するバスマスター選択回路である。５２１はバスマスター選択回路５２０が選択したバスマスターのアクセスがどのバンクのどのページであるかを示すアクセスページ情報である。６００は共有バス４００から出力されるアクセスを取り込み、ＤＲＡＭ７００へのアクセスを行うメモリアクセス回路である。７００はＤＲＡＭである。
【００２１】
図６は、本実施形態におけるバスマスター選択回路５２０の詳細な構成例を示すブロック図である。
図６において、５２１０はページヒット判定回路であり、バスマスター１００のリクエスト信号１０１とアドレス信号１０２とを監視する。そして、リクエスト信号１０１がアサートされるとアドレス信号１０２がＤＲＡＭ７００のどのバンク、ページへのアクセスかを判定する。ページヒット判定回路５２１０は、さらにアクティブページ情報５１１から前記アクセスがアクティブなページへのアクセスであるか否かを判定する。そして、判定結果はページヒット信号５２１１として出力される。
【００２２】
５２２０、５２３０もページヒット判定回路であり、それぞれ、バスマスター２００、３００からのリクエスト信号２０１、３０１、アドレス信号２０２、３０２、アクティブページ情報５１１からページヒットか否かを判定する。そして、それぞれページヒット信号５２２１、５２３１を出力する。５２４０はバスマスター決定回路であり、ページヒット信号５２１１、５２２１、５２３１から次に選択されるバスマスターを決定する。そして、決定したバスマスターを示すバスマスター信号５０１を出力する。５２５０はバスマスター決定回路５２４０で選択されたバスマスターのアクセスするページをアクティブページテーブル５１０に知らせるアクセスページ通知回路である。
【００２３】
図７は、バスマスター決定回路５２４０がバスマスターを決定する処理手順の一例を示すフローチャートである。
バスマスター決定回路５２４０は、単一バスマスターからリクエストを受けたか否かを判定する（ステップＳ８０１）。この判定の結果、リクエストを受けていない場合はそのまま処理を終了し、単一バスマスターからリクエストを受けた場合は、複数のバスマスターからのリクエストであるか否かを判定する（ステップＳ８０２）。この判定の結果、複数のバスマスターからのリクエストでない場合は、バスマスターを選択する（ステップＳ８０５）。
【００２４】
一方、複数のバスマスターからのリクエストである場合は、ページヒットするアクセスがあるか否かを判定する（ステップＳ８０３）。この判定の結果、ページヒットするアクセスがない場合は、特定の選択方法に応じてバスマスターを選択する（ステップＳ８０６）。なお、選択方法については、ラウンドロビン方式やプライオリティ方式、それ以外の方式でも構わない。
【００２５】
一方、ページヒットするアクセスがある場合は、ページヒットするアクセスが複数あるか否かを判定する（ステップＳ８０４）。この判定の結果、ページヒットするアクセスが１つの場合は、そのバスマスターを選択する（ステップＳ８０７）。一方、ページヒットするアクセスが複数ある場合は、ページヒットするアクセスを発行したバスマスターから特定の選択方法に応じてバスマスターを選択する（ステップＳ８０８）。なお、選択方法については、ラウンドロビン方式やプライオリティ方式、それ以外の方式でも構わない。本実施形態ではラウンドロビン方式を採用するものとする。
【００２６】
図３は、本実施形態のメモリシステムにおけるメモリアクセスの波形を示す図である。図３では上から順に、クロック、バスマスター１００が発行するアクセス、バスマスター２００が発行するアクセス、バスマスター３００が発行するアクセス、共有バス４００にて選択されたアクセス、メモリアクセス回路６００が発行するメモリコマンドである。実際にＤＲＡＭ７００にメモリコマンドを発行する際は各コマンドの間隔が規定されているが、ここでは説明を簡単にするためメモリコマンドの間隔は全て１サイクルとしている。
【００２７】
バスマスター１００はアクセスＡ、Ｂを発行し、バスマスター２００はアクセスＣ、Ｄを発行し、バスマスター３００はアクセスＥ、Ｆを発行する。なお、アクセスＡ、Ｃ、Ｄはページ０へのアクセスであり、アクセスＢ、Ｅ、Ｆはページ１へのアクセスであるものとする。バスマスター１００、２００、３００は同一バンクにアクセスするものとする。アービタ５００はアクセスＡ、Ｃ、Ｅからラウンドロビン方式でアクセスＡを選択し、アクセスＡがメモリアクセス回路６００に取り込まれる。このとき、アクセスページ通知回路５２５０から出力されるアクセスページ情報５２１がページ０であるためアクティブページテーブル５１０のアクティブページ情報はページ０となる。そして、アービタ５００はアクセスＢ、Ｃ、Ｅから唯一ページヒットであるアクセスＣを選択し、共有バス４００から出力される。
【００２８】
メモリアクセス回路６００はページ０をオープンするコマンドを発行する。そして、メモリアクセス回路６００はアクセスＡのコマンドを発行する。さらに、共有バス４００から出力されているアクセスＣがメモリアクセス回路６００に取り込まれ、メモリアクセス回路６００はアクセスＣのコマンドを発行する。アービタ５００はアクセスＢ、Ｄ、から唯一ページヒットであるアクセスＤを選択し、アクセスＤが共有バス４００から出力される。そして、共有バス４００から出力されているアクセスＣがメモリアクセス回路６００に取り込まれ、メモリアクセス回路６００はアクセスＤのコマンドを発行する。
【００２９】
アービタ５００はアクセスＢ、Ｅが共にページミスであるので、ラウンドロビン方式でアクセスＢを選択し、アクセスＢが共有バス４００から出力される。そして、共有バス４００から出力されているアクセスＢがメモリアクセス回路６００に取り込まれ、メモリアクセス回路６００はページ０をクローズするコマンドを発行する。アービタ５００は唯一リクエストされているアクセスＥを選択し、アクセスＥが共有バス４００から出力される。
【００３０】
メモリアクセス回路６００はページ１をオープンするコマンドを発行する。そして、メモリアクセス回路６００はアクセスＢのコマンドを発行する。さらに、共有バス４００から出力されているアクセスＥがメモリアクセス回路６００に取り込まれ、メモリアクセス回路６００はアクセスＥのコマンドを発行する。アービタ５００は唯一リクエストされているアクセスＦを選択し、アクセスＦが共有バス４００から出力される。そして、共有バス４００から出力されているアクセスＦがメモリアクセス回路６００に取り込まれ、メモリアクセス回路６００はアクセスＦのコマンドを発行する。
【００３１】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３２】
１００、２００、３００  バスマスター、４００  共有バス、５００  アービタ、５１０  アクティブページテーブル、５２０  バスマスター選択回路、６００  メモリアクセス回路、７００  ＤＲＡＭ
【図１】
2011034324.tif 000003
【図２】
2011034324.tif 000004
【図３】
2011034324.tif 000005
【図４】
2011034324.tif 000006
【図５】
2011034324.tif 000007
【図６】
2011034324.tif 000008
【図７】
2011034324.tif 000009