JP2011034324A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2011034324A JP2011034324A JP2009179627A JP2009179627A JP2011034324A JP 2011034324 A JP2011034324 A JP 2011034324A JP 2009179627 A JP2009179627 A JP 2009179627A JP 2009179627 A JP2009179627 A JP 2009179627A JP 2011034324 A JP2011034324 A JP 2011034324A
- Authority
- JP
- Japan
- Prior art keywords
- access
- bus
- memory
- page
- memory access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】アクセスパターンによらず、メモリアクセス性能を向上できるようにする。
【解決手段】複数のバスマスターと、前記複数のバスマスターからのアクセスを受け取り、DRAM700へのアクセスを行うメモリアクセス回路600と、前記複数のバスマスターとメモリアクセス回路600とを接続する共有バス400と、共有バス400において前記複数のバスマスターからのメモリアクセスを調停するアービタ500と、メモリアクセス回路600がアクセスするDRAM700とを有するメモリシステムであって、DRAM700のバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持し、前記複数のバスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択するバスマスター選択回路520を有する。
【選択図】図1
【解決手段】複数のバスマスターと、前記複数のバスマスターからのアクセスを受け取り、DRAM700へのアクセスを行うメモリアクセス回路600と、前記複数のバスマスターとメモリアクセス回路600とを接続する共有バス400と、共有バス400において前記複数のバスマスターからのメモリアクセスを調停するアービタ500と、メモリアクセス回路600がアクセスするDRAM700とを有するメモリシステムであって、DRAM700のバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持し、前記複数のバスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択するバスマスター選択回路520を有する。
【選択図】図1
Description
本発明はメモリシステムに関し、特に、複数のバスマスターがメモリアクセスを行う際に用いて好適な技術に関する。
従来のメモリシステムでは、メモリアクセス回路が取り込んだアクセスの順番でメモリアクセスを行う。そのため、同一バンク内でアクティブになりページに対してアクセス対象となるページが切り替わるようなページミスが頻繁に発生し、ページのクローズ、オープンといったコマンドが必要となり、メモリアクセス性能が低下する。そこで、メモリアクセス回路にリオーダリング回路を付加することにより、ページミス回数を低減することが行われている。
しかしながら従来のメモリシステムでは、アクセスパターンによってはリオーダリングの効果が得られず、ページミスによるペナルティが発生し、メモリアクセス性能が向上しないといった問題がある。
本発明は前述の問題点に鑑み、アクセスパターンによらず、メモリアクセス性能を向上できるようにすることを目的としている。
本発明のメモリシステムは、メモリアクセスを行う複数バスマスターと、前記複数バスマスターからのアクセスを受け取り、メモリへのアクセスを行うメモリアクセス手段と、前記複数バスマスターと前記メモリアクセス手段とを接続する共有バスと、前記共有バスにおいて前記複数バスマスターからのメモリアクセスを調停するアービタと、前記メモリアクセス手段がアクセスするメモリとから構成されるメモリシステムであって、前記メモリのバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持する保持手段と、前記複数バスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択し、前記選択したバスマスターのアクセスするページを前記アクティブページテーブルに通知するバスマスター選択手段とを有することを特徴とする。
本発明によれば、メモリアクセス回路がアクセスを取り込む際にページミスによるペナルティが発生しないようにアービタがメモリアクセスを行うバスマスターを選択するため、ページミスの発生回数が低減し、メモリアクセス性能を向上することができる。
(第1の実施形態)
図2(a)は、複数バスマスターからメモリアクセスを行う従来のメモリシステムの構成例を示すブロック図である。
図2(a)において、1100、1200、1300はメモリアクセスを行うバスマスターである。1101、1201、1301はバスマスター1100、1200、1300が出力するメモリアクセスのリクエスト信号である。1102、1202、1302はバスマスター1100、1200、1300が出力するメモリアクセスのアドレス信号である。1400はバスマスター1100、1200、1300に接続された共有バスである。1401は共有バス1400が出力するメモリアクセスのリクエスト信号である。1402は共有バス1400が出力するメモリアクセスのアドレス信号である。
図2(a)は、複数バスマスターからメモリアクセスを行う従来のメモリシステムの構成例を示すブロック図である。
図2(a)において、1100、1200、1300はメモリアクセスを行うバスマスターである。1101、1201、1301はバスマスター1100、1200、1300が出力するメモリアクセスのリクエスト信号である。1102、1202、1302はバスマスター1100、1200、1300が出力するメモリアクセスのアドレス信号である。1400はバスマスター1100、1200、1300に接続された共有バスである。1401は共有バス1400が出力するメモリアクセスのリクエスト信号である。1402は共有バス1400が出力するメモリアクセスのアドレス信号である。
1500はバスマスター1100、1200、1300からのアクセスを調停し、選択するバスマスターを共有バス1400に知らせるアービタである。1501はアービタ1500が選択したバスマスターを示すバスマスター信号である。1600は共有バス1400から出力されるアクセスを取り込み、DRAMへのアクセスを行うメモリアクセス回路である。1610はメモリアクセス回路1600が取り込んだアクセスを複数保持するためのコマンドキューである。
1700はDRAM(Dynamic Random Access Memory)である。DRAM1700は通常、複数バンクから構成され、各バンクは複数のページに分割されている。DRAM1700にアクセスを発行する場合、該当ページにアクティブコマンドを発行した後にアクセスが実行可能となる。同一バンク内でアクティブになりページに対してアクセス対象となるページが切り替わる場合(以下、ページミス)、既にアクティブとなっているページを非アクティブ化(以下、クローズ)する。そして、アクセス対象のページをアクティブ化(以下、オープン)し、前記アクティブ化されたページに対するアクセスを実行する必要がある。
バスマスター1100、1200、1300がアクセスを発行すると、アービタ1500がアクセスを許可するバスマスターを決定し、共有バス1400に通知する。共有バス1400はアクセスを許可されたバスマスターからのアクセスを出力する。メモリアクセス回路1600は受信したアクセスをコマンドキュー1610に取り込む。メモリアクセス回路1600はコマンドキュー1610の先頭のアクセスをメモリコマンドに変換し、DRAM1700に発行する。
図2(b)は、前述した図2(a)のメモリシステムにおいて、メモリアクセス回路1600にリオーダリング回路1620を付加することでページミス回数を低減する従来のメモリシステムの構成例を示すブロック図である。図2(b)に示す例では、リオーダリング回路1620により、コマンドキュー1610内に保持された複数のアクセスの順番を変更することでページミスによるペナルティを低減させ、メモリアクセス性能が向上する。
図4(a)は、図2(a)に示すメモリシステムにおけるメモリアクセスの波形を示す図である。また、図4(b)は、図2(b)に示すメモリシステムにおけるメモリアクセスの波形を示す図である。図4では上から、クロック、バスマスター1100のアクセス、バスマスター1200のアクセス、バスマスター1300のアクセス、共有バス1400の選択アクセス、コマンドキュー1610の状態、メモリアクセス回路1600のメモリコマンドである。実際にDRAM1700にメモリコマンドを発行する際は各コマンドの間隔が規定されているが、説明を簡単にするためメモリコマンドの間隔は全て1サイクルとしている。
バスマスター1100はアクセスA、Bを発行し、バスマスター1200はアクセスC、Dを発行し、バスマスター1300はアクセスE、Fを発行する。アクセスA、C、Dはページ0へのアクセスであり、アクセスB、E、Fはページ1へのアクセスであるものとする。バスマスター1100、1200、1300は同一バンクにアクセスするものとする。バスのアービトレーション方式としては複数バスマスターからのアクセスを順に選択するラウンドロビン方式や複数バスマスターに優先順位を設け優先度の高いバスマスターからのアクセスを優先的に選択するプライオリティ方式が広く知られている。図4(a)、図4(b)では、アービタ1500はラウンドロビン方式を採用したものとする。よって、メモリアクセス回路1600にはアクセスA、C、E、B、D、Fの順にアクセスが取り込まれる。
図4(a)では、メモリアクセス回路1600に取り込まれたアクセスが取り込まれた順に処理されるため、アクセスAとアクセスC、アクセスEとアクセスB、アクセスBとアクセスDとの間にページの切り替わりが起き、メモリアクセス性能が低下している。それに対して図4(b)では、サイクル6において、ページミスが起きないようコマンドキュー1610のリオーダリングしている。これにより、図4(a)に比べてページミス回数が減り、メモリアクセス性能が向上している。
ところが、図2(b)のメモリシステムでは、図4(b)に示すようにページ切り替わりが2回起きている。アクセスDをアクセスCとアクセスEとの間に出せればページの切り替わりを1回に減らし、メモリアクセス性能を向上できる。しかしながら、図4(b)に示すように、アクセスDがコマンドキュー1610に取り込まれるときには、既にアクセスEがDRAM1700へ発行されているため、アクセスDがアクセスEよりも前にDRAM1700へ発行することができない。このように従来のメモリシステムでは、アクセスパターンによってはリオーダリングの効果が得られず、ページミスによるペナルティが発生し、メモリアクセス性能が向上しないといった問題がある。
このような問題点を解決するために、以下、本発明の実施形態について、図面を参照しながら説明する。
図1は、本実施形態のメモリシステムの構成例を示すブロック図である。
図1において、100、200、300はメモリアクセスを行うバスマスターである。101、201、301はバスマスター100、200、300が出力するメモリアクセスのリクエスト信号である。102、202、302はバスマスター100、200、300が出力するメモリアクセスのアドレス信号である。400はバスマスター100、200、300に接続された共有バスである。401は共有バス400が出力するメモリアクセスのリクエスト信号である。402は共有バス400が出力するメモリアクセスのアドレス信号である。
図1は、本実施形態のメモリシステムの構成例を示すブロック図である。
図1において、100、200、300はメモリアクセスを行うバスマスターである。101、201、301はバスマスター100、200、300が出力するメモリアクセスのリクエスト信号である。102、202、302はバスマスター100、200、300が出力するメモリアクセスのアドレス信号である。400はバスマスター100、200、300に接続された共有バスである。401は共有バス400が出力するメモリアクセスのリクエスト信号である。402は共有バス400が出力するメモリアクセスのアドレス信号である。
500はバスマスター100、200、300からのアクセスを調停し、選択するバスマスターを共有バス400に知らせるアービタである。501はアービタ500が選択したバスマスターを示すバスマスター信号である。510はDRAM700のバンクごとにどのページがオープンであるかの情報を保持するアクティブページテーブルである。例えばDRAM700が4バンク構成である場合、図5に示すように、4バンクのそれぞれに対してどのページがオープンであるかという情報を保持する。
511はアクティブページテーブル510から出力されるアクティブページ情報である。520はバスマスター100、200、300からのアクセスに応じてアクセスを許可するバスマスターを決定するバスマスター選択回路である。521はバスマスター選択回路520が選択したバスマスターのアクセスがどのバンクのどのページであるかを示すアクセスページ情報である。600は共有バス400から出力されるアクセスを取り込み、DRAM700へのアクセスを行うメモリアクセス回路である。700はDRAMである。
図6は、本実施形態におけるバスマスター選択回路520の詳細な構成例を示すブロック図である。
図6において、5210はページヒット判定回路であり、バスマスター100のリクエスト信号101とアドレス信号102とを監視する。そして、リクエスト信号101がアサートされるとアドレス信号102がDRAM700のどのバンク、ページへのアクセスかを判定する。ページヒット判定回路5210は、さらにアクティブページ情報511から前記アクセスがアクティブなページへのアクセスであるか否かを判定する。そして、判定結果はページヒット信号5211として出力される。
図6において、5210はページヒット判定回路であり、バスマスター100のリクエスト信号101とアドレス信号102とを監視する。そして、リクエスト信号101がアサートされるとアドレス信号102がDRAM700のどのバンク、ページへのアクセスかを判定する。ページヒット判定回路5210は、さらにアクティブページ情報511から前記アクセスがアクティブなページへのアクセスであるか否かを判定する。そして、判定結果はページヒット信号5211として出力される。
5220、5230もページヒット判定回路であり、それぞれ、バスマスター200、300からのリクエスト信号201、301、アドレス信号202、302、アクティブページ情報511からページヒットか否かを判定する。そして、それぞれページヒット信号5221、5231を出力する。5240はバスマスター決定回路であり、ページヒット信号5211、5221、5231から次に選択されるバスマスターを決定する。そして、決定したバスマスターを示すバスマスター信号501を出力する。5250はバスマスター決定回路5240で選択されたバスマスターのアクセスするページをアクティブページテーブル510に知らせるアクセスページ通知回路である。
図7は、バスマスター決定回路5240がバスマスターを決定する処理手順の一例を示すフローチャートである。
バスマスター決定回路5240は、単一バスマスターからリクエストを受けたか否かを判定する(ステップS801)。この判定の結果、リクエストを受けていない場合はそのまま処理を終了し、単一バスマスターからリクエストを受けた場合は、複数のバスマスターからのリクエストであるか否かを判定する(ステップS802)。この判定の結果、複数のバスマスターからのリクエストでない場合は、バスマスターを選択する(ステップS805)。
バスマスター決定回路5240は、単一バスマスターからリクエストを受けたか否かを判定する(ステップS801)。この判定の結果、リクエストを受けていない場合はそのまま処理を終了し、単一バスマスターからリクエストを受けた場合は、複数のバスマスターからのリクエストであるか否かを判定する(ステップS802)。この判定の結果、複数のバスマスターからのリクエストでない場合は、バスマスターを選択する(ステップS805)。
一方、複数のバスマスターからのリクエストである場合は、ページヒットするアクセスがあるか否かを判定する(ステップS803)。この判定の結果、ページヒットするアクセスがない場合は、特定の選択方法に応じてバスマスターを選択する(ステップS806)。なお、選択方法については、ラウンドロビン方式やプライオリティ方式、それ以外の方式でも構わない。
一方、ページヒットするアクセスがある場合は、ページヒットするアクセスが複数あるか否かを判定する(ステップS804)。この判定の結果、ページヒットするアクセスが1つの場合は、そのバスマスターを選択する(ステップS807)。一方、ページヒットするアクセスが複数ある場合は、ページヒットするアクセスを発行したバスマスターから特定の選択方法に応じてバスマスターを選択する(ステップS808)。なお、選択方法については、ラウンドロビン方式やプライオリティ方式、それ以外の方式でも構わない。本実施形態ではラウンドロビン方式を採用するものとする。
図3は、本実施形態のメモリシステムにおけるメモリアクセスの波形を示す図である。図3では上から順に、クロック、バスマスター100が発行するアクセス、バスマスター200が発行するアクセス、バスマスター300が発行するアクセス、共有バス400にて選択されたアクセス、メモリアクセス回路600が発行するメモリコマンドである。実際にDRAM700にメモリコマンドを発行する際は各コマンドの間隔が規定されているが、ここでは説明を簡単にするためメモリコマンドの間隔は全て1サイクルとしている。
バスマスター100はアクセスA、Bを発行し、バスマスター200はアクセスC、Dを発行し、バスマスター300はアクセスE、Fを発行する。なお、アクセスA、C、Dはページ0へのアクセスであり、アクセスB、E、Fはページ1へのアクセスであるものとする。バスマスター100、200、300は同一バンクにアクセスするものとする。アービタ500はアクセスA、C、Eからラウンドロビン方式でアクセスAを選択し、アクセスAがメモリアクセス回路600に取り込まれる。このとき、アクセスページ通知回路5250から出力されるアクセスページ情報521がページ0であるためアクティブページテーブル510のアクティブページ情報はページ0となる。そして、アービタ500はアクセスB、C、Eから唯一ページヒットであるアクセスCを選択し、共有バス400から出力される。
メモリアクセス回路600はページ0をオープンするコマンドを発行する。そして、メモリアクセス回路600はアクセスAのコマンドを発行する。さらに、共有バス400から出力されているアクセスCがメモリアクセス回路600に取り込まれ、メモリアクセス回路600はアクセスCのコマンドを発行する。アービタ500はアクセスB、D、から唯一ページヒットであるアクセスDを選択し、アクセスDが共有バス400から出力される。そして、共有バス400から出力されているアクセスCがメモリアクセス回路600に取り込まれ、メモリアクセス回路600はアクセスDのコマンドを発行する。
アービタ500はアクセスB、Eが共にページミスであるので、ラウンドロビン方式でアクセスBを選択し、アクセスBが共有バス400から出力される。そして、共有バス400から出力されているアクセスBがメモリアクセス回路600に取り込まれ、メモリアクセス回路600はページ0をクローズするコマンドを発行する。アービタ500は唯一リクエストされているアクセスEを選択し、アクセスEが共有バス400から出力される。
メモリアクセス回路600はページ1をオープンするコマンドを発行する。そして、メモリアクセス回路600はアクセスBのコマンドを発行する。さらに、共有バス400から出力されているアクセスEがメモリアクセス回路600に取り込まれ、メモリアクセス回路600はアクセスEのコマンドを発行する。アービタ500は唯一リクエストされているアクセスFを選択し、アクセスFが共有バス400から出力される。そして、共有バス400から出力されているアクセスFがメモリアクセス回路600に取り込まれ、メモリアクセス回路600はアクセスFのコマンドを発行する。
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
100、200、300 バスマスター、400 共有バス、500 アービタ、510 アクティブページテーブル、520 バスマスター選択回路、600 メモリアクセス回路、700 DRAM
Claims (1)
- メモリアクセスを行う複数のバスマスターと、前記複数のバスマスターからのアクセスを受け取り、メモリへのアクセスを行うメモリアクセス手段と、前記複数のバスマスターと前記メモリアクセス手段とを接続する共有バスと、前記共有バスにおいて前記複数のバスマスターからのメモリアクセスを調停するアービタと、前記メモリアクセス手段がアクセスするメモリとから構成されるメモリシステムであって、
前記メモリのバンクごとにどのページがアクティブであるかの情報を備えたアクティブページテーブルを保持する保持手段と、
前記複数のバスマスターから出力されるアドレスと前記アクティブページテーブルの情報とに基づいて、アクティブなページへのアクセスをしているバスマスターを優先的に選択し、前記選択したバスマスターのアクセスするページを前記アクティブページテーブルに通知するバスマスター選択手段とを有することを特徴とするメモリシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009179627A JP2011034324A (ja) | 2009-07-31 | 2009-07-31 | メモリシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009179627A JP2011034324A (ja) | 2009-07-31 | 2009-07-31 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011034324A true JP2011034324A (ja) | 2011-02-17 |
Family
ID=43763336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009179627A Pending JP2011034324A (ja) | 2009-07-31 | 2009-07-31 | メモリシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011034324A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015225458A (ja) * | 2014-05-27 | 2015-12-14 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および調停方法 |
-
2009
- 2009-07-31 JP JP2009179627A patent/JP2011034324A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015225458A (ja) * | 2014-05-27 | 2015-12-14 | 京セラドキュメントソリューションズ株式会社 | 情報処理装置および調停方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9343127B1 (en) | Memory device having an adaptable number of open rows | |
US20070226422A1 (en) | Multi-master system and data transfer system | |
US20070266196A1 (en) | Information Processing Apparatus Having Multiple Processing Units Sharing Multiple Resources | |
US20100169578A1 (en) | Cache tag memory | |
JP2002530731A (ja) | 異常メモリアクセスまたは異なる時間のメモリアクセス実行の際のデータバス上のデータ衝突を検出するための方法および装置 | |
JP2019525271A (ja) | 高速メモリインタフェースのためのコマンドアービトレーション | |
US20090204771A1 (en) | Device for controlling access from a plurality of masters to shared memory composed of a plurality of banks each having a plurality of pages | |
JP2002530743A (ja) | ページタグレジスタを使用して、メモリデバイス内の物理ページの状態を追跡すること | |
CN108139994B (zh) | 内存访问方法及内存控制器 | |
JP2007334564A (ja) | ユニファイドメモリシステム | |
JP2005339348A (ja) | 半導体装置 | |
US7636812B2 (en) | Cache memory control method and cache memory control device | |
JP2019522257A (ja) | 低電力メモリのスロットリング | |
JP2007102646A (ja) | コンテキスト切替え装置 | |
US5829010A (en) | Apparatus and method to efficiently abort and restart a primary memory access | |
JP2011034324A (ja) | メモリシステム | |
WO2010122607A1 (ja) | 記憶制御装置及びその制御方法 | |
JP5932261B2 (ja) | メモリ制御装置、メモリ制御方法 | |
JP5383159B2 (ja) | バス中継装置及び制御方法 | |
KR20050081498A (ko) | 다층 버스 시스템에서의 메모리 뱅크 인터리빙 방법 및장치 | |
JP5966759B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
US9015423B2 (en) | Reducing store operation busy times | |
JP2008009763A (ja) | 情報処理装置及びバス制御方法 | |
Zheng et al. | Design of a dynamic memory access scheduler | |
JP3956698B2 (ja) | メモリ制御装置 |