JP2023127985A - 情報処理装置、情報処理方法、及びプログラム - Google Patents
情報処理装置、情報処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2023127985A JP2023127985A JP2022031998A JP2022031998A JP2023127985A JP 2023127985 A JP2023127985 A JP 2023127985A JP 2022031998 A JP2022031998 A JP 2022031998A JP 2022031998 A JP2022031998 A JP 2022031998A JP 2023127985 A JP2023127985 A JP 2023127985A
- Authority
- JP
- Japan
- Prior art keywords
- bank
- command
- state
- time
- control command
- 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
- 230000010365 information processing Effects 0.000 title claims description 13
- 238000003672 processing method Methods 0.000 title description 2
- 238000001514 detection method Methods 0.000 claims abstract description 27
- 230000007704 transition Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims 1
- 230000000284 resting effect Effects 0.000 abstract 1
- 238000000034 method Methods 0.000 description 45
- 238000012545 processing Methods 0.000 description 42
- 230000008569 process Effects 0.000 description 31
- 238000004458 analytical method Methods 0.000 description 11
- 238000004088 simulation Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000000630 rising effect Effects 0.000 description 6
- 230000003111 delayed effect Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】 本発明は、DRAMのバンクの状態を分類する精度を向上させることを目的とする。【解決手段】 本発明の情報処理装置は、DRAMを構成する少なくとも1つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、前記検出手段が検出したイベントに基づいて、前記少なくとも1つ以上のバンクの状態を、動作状態、動作不可状態、休止状態の少なくともいずれか1つに分類する分類手段と、を有し、前記分類手段は、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出された場合は、前記所定のバンクは動作不可状態であると分類することを特徴とする。【選択図】 図1
Description
本発明は、DRAMの状態を解析するための情報処理装置、情報処理方法及びプログラムに関する。
従来からシステムLSIのDRAMの性能を解析する技術は広く使用されている。性能解析技術について説明する前に、DRAMについて説明する。DRAMとはDynamic Random Access Memoryの略で、PC(Personal Computer)やスマートフォン、デジタルテレビ、デジタルカメラなど近年のデジタル機器の多くで使用されている記憶装置の一つである。DRAMとよく比較される記憶装置として、SRAM(Static Random Access Memory)がある。DRAMはSRAMに比べ、リフレッシュと呼ばれる定期的な記憶保持動作を必要とするため、消費電力が一般的に高い。一方、その構造上高集積化が実現しやすく、大容量を安価に提供できるという利点があり、大容量の記憶装置として古くから使用されている。昨今の4K(縦4000画素、横2000画素前後の画像サイズ)、8K(縦8000画素、横4000画素前後の画像サイズ)といった高画素化に伴い、静止画像、動画像のデジタルデータのサイズは増え続けており、DRAMの適用範囲は未だ衰えを知らない。このようにDRAMはデジタル機器の主な記憶装置であるため、そのアクセス速度向上の要求も高い。これに対しDRAMはSDRAM(Synchronous DRAM)やRDRAM(Rambus DRAM)などの構造の進化や、同一構造におけるクロック周波数向上による速度向上、及び様々な高速化を実現する機能をもってその要求に対応してきた。ここではSDRAMを例にとって説明する。SDRAMはクロック信号の立上りのみで動作するSDR(Single Data Rate)から、クロック信号の立上りと立下りの両方で動作するDDR(Dual Data Rate)へ進化し、そのアクセスレートを理論上2倍に引き上げた。更にDDR、DDR2、DDR3、DDR4と主にクロック周波数と容量の向上を規格の定義とともに進化してきた。またその省電力版としてLP(Low Power)を冠したLPDDR2、LPDDR3、LPDDR4、LPDDR5も規格化されている。規格はJEDEC半導体技術協会(JEDEC Solid State Technology Association)によって定義し標準化されたもので、DRAM製造を担う企業が独自の規格を使用しないように進化してきた。
上述のようにSDRAMのアクセス性能は進化を遂げているが、その制御方法はSDR、DDR、LPDDRなど全てにおいて基本的に変わりなく、コマンドと呼ばれる制御信号によって制御する。コマンドによる制御方法についてDDR3を例にとって説明する。ただし前述したように制御方法は、SDR、DDR、DDR2、DDR3、DDR4、LPDDR2、LPDDR3、LPDDR4、LPDDR5でも大きな違いはない。図5はDDR3のコマンドのリストを示している。図5において、501及び502はそれぞれ、503乃至513の各信号がその状態に一致した場合に対応するコマンドの意味及びコマンド表記を示している。ACTコマンドはDRAMの行アドレスを選択するコマンドである。この動作をアクティベート、及び同一行アドレスの記憶空間をページと見たてページへのアクセス準備をすることからページオープンと呼ぶ。ACTコマンドで行アドレスを選択した後、RDコマンド及びWRコマンドで列アドレスを選択してDRAMの記憶素子のデータをリード及びライトする。DRAMの記憶素子を選択するアドレスには行アドレスと列アドレスの2つがある。基本的なリード及びライト動作は、先にACTコマンドにより行アドレスを選択し、次にRD及びWRコマンドにより列アドレスを選択し対象の記憶素子のアドレスを決定する。SDRAMではデータアクセスの高速化のため、同一行アドレスで列アドレスが違うデータを次々にリード及びライトするページモードと呼ばれる方法が考案されている。これにより、同一行アドレスであれば列アドレスが違っても高速にアクセスすることができる。一方、行アドレスが異なる場合は、一旦アクティベート済みの行アドレスをPREコマンドによるプリチャージと呼ばれる動作によって行アドレスを非選択状態に戻してから再度アクティベートする必要がある。このプリチャージはアクティベートのページオープンに対してページクローズと呼ばれる。このページクローズ(プリチャージ)とページオープン(アクティベート)の一連の動作は、DRAMの構造上時間短縮することが難しく、規格の進化によってもあまり短縮化されていない。一般的にこの一連の動作をページミスと呼ぶ。ページミスは行アドレスが変わると必ず発生するため、それ自体は避けることはできない。しかしながら、このページミスを隠ぺいしてアクセス効率を向上させる構造が考案されている。仕組みは単純で、行アドレス及び列アドレスで選択する記憶空間全体をバンクと呼ばれる単位で構築し、このバンクを複数実装することでページミスの隠ぺいを実現する。すなわち、一つのバンクでページミスが発生しアクセスできない期間に、他のバンクへのアクセスを並行して行うことで実質ページミス全体若しくは一部を隠ぺいするという仕組みである。ただし、バンクは行アドレス、列アドレス及びデータが流れる信号線を共有しており、DRAMの基板配線上の拡張は不要なまま機能拡張を実現できる。図10はページミスによるペナルティと、それを隠ぺいする他のバンクの動作を示している。図10において、1001はバンク0へのRDコマンドである。DDR3-SDRAMの規格上はデータを4回連続アクセスする4ビートアクセスと8回連続アクセスする8ビートアクセスがある。連続アクセスは、クロックの立上りと立下りで1回ずつアクセスを行うため、4ビートアクセスでは2クロックサイクル、8ビートアクセスでは4クロックサイクル消費する。本例では、8ビートアクセスのみが発行されることを前提とし、RDコマンド発行後に4クロックサイクル後に次のRDコマンドが発行できることとなる。1002はバンク0へのRDコマンドであり、1001から4クロックサイクル空いて発行されており、8ビートアクセスを考慮すると最短のタイミングで発行している。その後、バンク0ではページミスが発生し、1003のPREコマンド、1004のACTコマンドが連続して発行され、その後別ページへのRDコマンド1005が発行されている。すなわち、RDコマンド1002の4クロックサイクル後からRDコマンド1005までがページミスによるペナルティであると判別できる。一方、RDコマンド1002から4クロックサイクル後にバンク1で1006のRDコマンドが発行されている。バンクに関わらず4クロックサイクルが最短のタイミングとなるため、RDコマンド1002からRDコマンド1006は最短のタイミングでアクセスできていることを意味する。同様に、RDコマンド1007、1008、1009もそれぞれ4クロックサイクル間隔で発行されており、この間も最短のタイミングでアクセスできている。結果、次のRDコマンドが発行できるのは、RDコマンド1009の4クロックサイクル後となる。これをバンク0だけで見ると、RDコマンド1002の4クロックサイクル後からRDコマンド1005までの18クロックサイクルがページミスによるペナルティである。一方DRAM全体でみると、RDコマンド1002、1006、1007、1008、1009は全て最速のタイミングで発行されているため、ペナルティとはならない。すなわち、RDコマンド1002の4クロックサイクル後からRDコマンド1009の4クロックサイクル後までの16クロックサイクルはページミスによるペナルティを隠ぺいできたとみなすことができる。結果として、DRAM全体では、RDコマンド1009の4クロックサイクル後から、RDコマンド1005までの2クロックサイクルのみがページミスによるペナルティであるとみなされる。
もう一つDRAMの代表的な制御がある。リフレッシュと呼ばれる記憶保持動作であり、REFコマンドによって実現する。DRAMの記憶素子は蓄えられた電荷によってその値を表現する。この蓄えられた電荷は、記憶素子内部の漏れ電流によって徐々に失われていき、電荷のない状態と判別が困難になる。そこで定期的に電荷を補充する操作が必要になる。これがリフレッシュである。リフレッシュは基本的にバンク単位で行うが、対象のバンクは行アドレスが非選択状態となっている必要があり、事前にページクローズする必要がある。また、リフレッシュ動作は構造上一定時間かかる操作であり、リフレッシュコマンド発行後アクセスできない期間が存在する。
この他にも、DRAMにはキャリブレーション(信号線とクロックの位相関係を定期的に調整する)機能もあり、この機能もコマンドを発行することで実現されている。これらのコマンドでもページミスによるペナルティやリフレッシュによるペナルティと同様にコマンド発行後に一定期間アクセスできない期間が存在する。
特許文献1では、DRAMの制御コマンドを元に各バンクの状態を、データを転送している動作状態、所定の制約によりデータの転送ができない動作不可状態、制約はないがデータの転送していない休止状態のいずれか1つに分類する。更に、特許文献1には、バンク状態からDRAMの状態を分類する技術が開示されている。一部DRAM制御コマンド間には発行間隔に対する制約がDRAM規格にて定められている。先行文献1では、発行間隔に対する制約が存在する2つの制御コマンドの発行間隔が、規格で定められた制約と一致する場合、コマンド発行間隔に対する制約によりコマンド発行が遅れたと判断し制御コマンド間を動作不可状態と分類する例が紹介されている。
一般的に、DRAMに対するコマンド発行はメモリコントローラと呼ばれるHWブロックを用いて行う。メモリコントローラは、複数のバンクへコマンド発行が可能な場合、主にペナルティを最小化するようにコマンドを発行する。例えば、RD及びWRコマンドが発行可能なバンクAと、ページミスによりPREコマンド、ACTコマンドを発行する必要のあるバンクBがある場合を考える。この場合、ページミスによるペナルティを最小化するため、先にページミスしているバンクBに対して、PREコマンドやACTコマンドを発行し、ページミスペナルティの期間にバンクAに対するRD及びWRコマンドを優先して発行することが考えられる。こうすることで、バンクBにおけるページミスによるペナルティ期間を、バンクAに対するRD及びWRコマンドに基づく転送期間で隠ぺいすることができる。このようにメモリコントローラは、ペナルティ期間を最小化するため、複数バンクの発行可能なコマンドの中から意図的にコマンドを選択して発行する。メモリコントローラがいずれのコマンドを優先するかは様々な手法が考案されているが、その手法自体は本提案と直接関係しないため詳細には説明しない。本稿では、メモリコントローラは様々な手法により、同時発行可能なコマンドの内いずれかを優先して発行すること、言い換えると、いずれかのコマンドの発行が本来発行可能なタイミングに対して遅れて発行され得ることを明記しておく。
図11のバンクとコマンド発行状態を例にとり説明する。DRAMの規格により図10と同様にACTコマンドとRDコマンドの間を8サイクル以上空けなければならない制約がある場合を考える。バンク1においてACTコマンド1106は3サイクル目に発行されているので、RDコマンド1107は11サイクル目で本来発行できる。しかし、ページクローズおよびページオープンを早期に完了させバンク0へのRDコマンド1105を1サイクルでも早く発行するために、メモリコントローラがバンク0へのPREコマンド1103の発行をRDコマンド1107よりも優先することがある。
先行文献1におけるバンクを動作不可状態と分類する手法では、コマンド発行間隔制約が要因にも関わらず動作不可状態と分類できないケースがある。具体的には図11を用いて説明したようにメモリコントローラが他バンクへのコマンド発行を優先したケースである。本来、図11のRDコマンド1107は、PREコマンド1103によっても遅れているが、ACTコマンドとRDコマンド間のコマンド発行間隔制約により発行が遅れている。よって、ACTコマンド1106、RDコマンド1107の間は動作不可状態とすべきである。しかし、先行文献1ではコマンド発行間隔制約よりも大きくなり、休止状態と分類されてしまう。本発明は、上記課題を鑑みてなされたものであり、DRAMのバンクの状態を分類する精度を向上させることを目的とする。
本発明の情報処理装置は、DRAMを構成する少なくとも1つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、前記検出手段が検出したイベントに基づいて、前記少なくとも1つ以上のバンクの状態を、動作状態、動作不可状態、休止状態の少なくともいずれか1つに分類する分類手段と、を有し、前記分類手段は、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出された場合は、前記所定のバンクは動作不可状態であると分類することを特徴とする。
本発明によれば、本発明は、上記課題を鑑みてなされたものであり、DRAMのバンクの状態を分類する精度を向上させることが出来る。
(第一の実施形態)
第一の実施形態の情報処理装置を、図1から図9を使って説明する。
第一の実施形態の情報処理装置を、図1から図9を使って説明する。
図2は本実施形態におけるシミュレーション対象のシステムLSI及び周辺モジュールを含むテストベンチの構成図である。図2において、200はシステムLSIである。CPU201はシステムLSI200の各種制御を実行するためのものである。画像処理部202はシステムLSI200内で取り扱う静止画像及び動画像データの画像処理を行う。音声処理部203はシステムLSI200内で取り扱う音声データの音声処理を行う。ネットワーク処理部204はシステムLSI200と外部ネットワークを介しデータ送受信を行う。ROM210はCPU201の起動時に実行されるブートプログラムや各種データを格納するためのものであり、ROMC206を介してアクセスする。DRAM209は主にCPU201が処理するための制御プログラムを格納するとともに、CPU201が各種制御を実行する際の作業領域を提供する。その他、画像処理部202が扱う静止画像及び動画像データ、音声処理部203が扱う音声データ、及びネットワーク処理部204が扱う外部通信用データが格納される。DRAM209はそれを構成する8つのバンク220乃至227を内部に備えている。バンクの番号はバンク0からバンク7がそれぞれバンク220乃至227に当たる。画像処理部202、音声処理部203、ネットワーク処理部204はそれぞれのデータへDMA(Dynamic Memory Access)によってアクセスする。DRAM209へのアクセスは、メモリコントローラ205がアクセス要求を受け制御コマンドに変換し、それをPHY207がアナログ信号に変換して外部に発行してアクセスを行う。具体的なアクセス方法は、背景技術に記載した通りであり割愛する。その他、画像処理部202、音声処理部203、ネットワーク処理部204からDRAMへアクセスする場合も同様となる。バス208は、アクセス要求を発行するCPU201、画像処理部202、音声処理部203、ネットワーク処理部204と、当該アクセス要求を受けるメモリコントローラ205、ROMC206を相互接続する。本実施形態においては、DRAM209はDDR3-SDRAM規格に準拠するSDRAMであるものとする。システムLSI200とDRAM209の間の制御信号にはモニタ211が接続されており、シミュレーション実行中に制御信号上に発生したコマンドを監視する機能を持つ。モニタ211によって監視されている信号は図4に示すDDR3-SDRAMインタフェース信号としている。システムLSI200、DRAM209、ROM210、モニタ211はテストベンチ212の中に配置され、それぞれ信号によって接続される。
図3はテストベンチ212のシミュレーション処理を含む性能解析処理を行うコンピュータ装置の構成図である。図3において、CPU301は、コンピュータ装置における各種制御を実行するためのものである。ROM302は、コンピュータ装置の起動時に実行されるブートプログラムや各種データを格納するためのものである。RAM303は、CPU301が処理するための制御プログラムを格納するとともに、CPU301が各種制御を実行する際の作業領域を提供する。キーボード304及びマウス305は、ユーザによる各種入力操作環境を提供するためのものである。306はHDD(ハードディスク)であり各種データを格納する。
307はディスプレイであり性能解析結果を表示する。ネットワークインタフェース308は、外部ネットワークとLANケーブルを介した通信を可能とする。バス309は、上記の各構成を接続するためのものである。なお、CPU、ROM、バスは前記システムLSI200内にも存在しているが、これらは別物であることを注記しておく。
ここから、本実施形態の性能解析について説明する。性能解析処理は前記コンピュータ装置上で実行される。図1は性能解析処理の全体を示す処理概念図である。図1において、101は検出手段であり、性能解析対象であるDRAM209を構成するバンク220乃至227の状態遷移を発生させるイベントを検出する。イベントはより具体的にはシステムLSI200内のメモリコントローラ205が発行するDRAM209を制御するためのコマンドである。検出手段によって検出したイベント情報102は一時的にHDD306へ格納され、次のバンク状態分類手段103に入力される。バンク状態分類手段103は、発生したイベントに基づいてバンク220乃至227の状態を遷移させる。これにより、時系列にバンク220乃至227の状態が決定する。バンク状態分類手段103によって分類したバンク220乃至227のバンク状態情報104はイベント情報102と同様にHDD306へ格納さる。以上が本実施形態の性能解析処理の全体フローである。以下、図1の性能解析処理における各要素について詳細に説明する。
検出手段101は前記コンピュータ装置によるテストベンチ212のシミュレーション処理におけるモニタ211によって実現する。コンピュータ装置によるシミュレーション処理は、CPU301がRAM303をワーク領域として使用し、HDD306に格納されているシミュレーションソフトウェアを実行することで実現する。従来技術にも記載した通り、シミュレーションソフトウェアには代表的なものとしてIncisive(Cadence社の登録商標)、VCS(Synopsys社の登録商標)、Questasim(Mentor社の登録商標)などがある。これらのシミュレーションソフトウェアにより、システムLSI200が実際に動作するのと同じ動作をシミュレーションし、その結果がHDD306に格納される。具体的にはシミュレーションソフトウェアが出力するシミュレーションログファイル、波形ファイル、及びモニタ211が出力するイベント情報などである。
モニタ211によるシステムLSI200とDRAM209間の信号線の監視、すなわち本実施形態の検出手段101について説明する。モニタ211は、シミュレーション処理においてシステムLSI200とDRAM209間の信号線を監視する。具体的には、図4に示すDDR3-SDRAMインタフェースを構成する信号線である。401はクロックであり、全ての信号の基準となる。すなわちクロック401の立上り(0→1への変化)のタイミングで、クロック401以外の信号の状態を評価しいずれのコマンドが発行されているかを検出する。具体的には、図5に示すテーブルに基づいてコマンドを検出する。図5において、503乃至513は図4に示す信号線の値を示している。504乃至513は各信号の所定のクロック401の立上りタイミングにおける状態を示しているが、503だけは該タイミングの一つ前のクロック401の立上りタイミングにおける状態を示しており注意が必要である。図5においてLはLow=0を意味し、HはHigh=1を意味する。XはDon’t Careであり0/1いずれの値であっても良い。RFUはReserved for Future Useの略でXと同様にいずれの値であっても良い。VはValidであり対象のコマンドで該当の信号が所望の意味を持つことを意味する。具体的な意味は本発明の説明に関係しないため割愛する。BA、RA、CAはそれぞれバンクアドレス、行アドレス、列アドレスを意味しており、これら以外の信号によってコマンドが検出されたときにアドレスとして判定するという意味となる。501及び502はそれぞれ、503乃至513の各信号がその状態に一致した場合に対応するコマンドの意味及びコマンド表記を示している。ACTコマンドを例にして検出手段について説明する。503に基づいてCKE信号が一つ前のクロック401の立上りタイミングでHであるかを判定する。次に504に基づいてCKE信号が現在のクロック401の立上りタイミングでHであるかを判定する。同様にして、CS=L、RAS=L、CAS=H、WE=Hを判定し、これらの条件が全て合致した場合にACTコマンドを検出する。このときのBA信号はバンクアドレス、A信号はRAすなわち列アドレスを意味している。ACTコマンド以外も同じように信号線の値に応じて図5のテーブルに基づいて判定し、発行されているコマンドを検出する。特殊なコマンドであるNOPコマンド540を更に説明する。NOPコマンド540は、CKE=H→H(一つ前のクロックの立上りがHで現在のクロックの立上りがHを意味する)、CS=L、RAS/CAS/WEがいずれもHの場合に検出する。当該NOPコマンド540はNo Operationの略で、コマンドが発生していないことを意味する。本実施形態においてはNOPコマンドは検出対象外とし、これ以外のコマンドを検出対象とする。以上が検出手段101の説明となる。本実施形態においては、DDR3-SDRAMの規格に基づいたコマンドを検出することを例に検出手段を説明したが、規格の種類に限定することはない。すなわち、他のDDR2、DDR4、DDR5、LPDDR2、LPDDR3、LPDDR4であってもコマンドは同様に信号線の値に基づいて定義されているためこれをイベントとして検出手段を実現することができる。更に検出手段が検出するイベントはコマンドに限定されない。検出手段はシステムLSI200とDRAM209間の信号線を監視することでイベントを検出するものであり、監視対象の信号の値が規格上で定義されているかいないかに関わらず、信号線のいずれの変化であってもイベントとして定義することは可能である。
検出手段101を実現するモニタ211によって、シミュレーション期間中に検出されたコマンドをログ情報として出力したものが、前記イベント情報102となる。図6はモニタ211によって出力されたイベント情報102の内容を示す例である。図6において、601は発生時刻でありシミュレーション上の経過時刻である。本実施形態においては単位はps(ピコ秒=0.000000000001秒)とする。602はコマンドであり、前記検出手段によって検出されたコマンドを示す。603、604、605はそれぞれバンクアドレス、行アドレス、列アドレスであり、各コマンドを検出した際のBA及びA信号によって示される内容となる。コマンドによって、バンクアドレス、行アドレス、列アドレスそれぞれ示されない場合と示される場合があるため、イベント情報102内でもそれに基づいて表示される。
次のバンク状態分類手段103自体の処理内容を説明する前に、バンク状態分類手段103によって分類するバンク220乃至227のバンク状態の種類を先に説明する。本実施形態では以下の3つのバンク状態を定義する。
状態1 動作状態
状態2 休止状態
状態3 動作不可状態
状態1 動作状態
状態2 休止状態
状態3 動作不可状態
動作状態は、対象のバンクへリードもしくはライトのデータアクセスを実行している状態である。具体的には、RDコマンド発行後の4クロックサイクル及びWRコマンド発行後の4クロックサイクル期間を動作状態とする。DDR3-SDRAMの規格上はデータを4回連続アクセスする4ビートアクセスと8回連続アクセスする8ビートアクセスがある。連続アクセスは、クロックの立上りと立下りで1回ずつアクセスを行うため、4ビートアクセスでは2クロックサイクル、8ビートアクセスでは4クロックサイクル消費する。本実施形態では、8ビートアクセスのみが発行されることを前提とし、RD及びWRコマンド発行後に4クロックサイクル分を動作状態としている。リードを連続して行う場合、規格上8ビートアクセスでは4クロックサイクル後に次のRDコマンドを発行することができる。すなわち、4クロックサイクルの動作状態が連続して発生することとなる。これはライトを連続して行う場合も同様である。
動作不可状態とは、所定の制約によりバンクへのリードもしくはライトのデータアクセスを行うことができずに待っている状態である。例えば、DDR3-SDRAM規格上ではREF(リフレッシュ)コマンド発行後tREFパラメータで定義される時間分はいずれのコマンドも発行することができない。これは従来技術でも説明した通り、リフレッシュ動作に伴って必ず発生する制約であり、DRAMの種類を問わず適用される。本実施形態においては、REFコマンド発行後のtREFパラメータ期間分を動作不可状態の一つと定義する。このときのtREFパラメータは500クロックサイクルであるものとする。ただし、REFコマンドはRDもしくはWRコマンドの発行を待たせた場合のみ動作不可状態と定義するという方法もあり得る。すなわち、REFコマンド発行後tREFパラメータ期間後すぐにACTコマンドが発行された場合にのみ動作不可状態と定義するという方法である。本実施形態ではACTコマンドの有無に関わらず動作不可状態と定義するが、ACTコマンドが発生した場合のみ動作不可状態と定義する場合でも本発明を適用できることは言うまでもない。また、DDR3-SDRAM規格上ではACTコマンド発行後、RDもしくはWRコマンドを発行するまでにtRCDパラメータで定義される時間分空けなければならない。これと同じように通常のデータアクセスで一般的に発生するACT、PRE、RD、WRコマンド間には図8のテーブルで定義される制約があるものとする。DDR3-SDRAM規格上は図5に示した通り、他にも多くのコマンドがありそのコマンド間にも制約がある。しかしながら本実施形態では図8のテーブルに示した制約のみがあることを前提とし、各コマンド間が制約されたクロックサイクル分空いている場合、この期間を動作不可期間の一つと定義する。ただし、本前提は本発明の適用範囲を限定するものではなく、図8に示したコマンド間以外にも制約がある場合でも、その制約が所定のコマンド発行後の一定期間、及び所定のコマンド間の一定期間として定義される場合は本発明できることは言うまでもない。更に、同様に図8には示していないが、所定の3つ以上のコマンド列によって定義される制約があった場合でもそれを条件分岐で判定できる限り本発明を適用できる。例えば、PREコマンド、ACTコマンド、RDコマンドが順番に発生した場合に、PREコマンドからRDコマンドまでをページミスによる制約期間と判定することもできる。同様にREFコマンド、ACTコマンド、WRコマンドが順番に発生した場合に、REFコマンドからWRコマンドまでをリフレッシュ及びページオープンによる制約期間と判定することもできる。いずれの場合でも、条件分岐を明確に定義できるならば本発明を適用できる。以上が動作不可状態の定義であるが、いずれかのコマンド後の一定期間、いずれか2つのコマンド間、いずれかの3つ上のコマンド列をどのように動作不可状態と定義するかは、本発明の前提とはなり得ない。前記検出手段によって検出されたイベント発生に基づいて、動作不可状態をサイクル数(もしくはそれに換算できる数値制約)によって定義できる場合は、その定義内容に関わらず本発明を適用できることは言うまでもない。また、本実施形態ではREFコマンド後の一定期間コマンドを発行できない期間をtREFパラメータで定義したが、メモリコントローラ205はREFコマンド後に発行しない期間をtREFパラメータに関係なく制御することが可能である。例えば、tREFパラメータ以下に設定することは規格違反となるためできないが、tREFパラメータ以上のクロックサイクルを空けるように制御することは可能である。この場合は、メモリコントローラ205に設定されたサイクル数を基に動作不可状態を定義することも可能である。
最後に休止状態について説明する。休止状態は前述した動作状態、及び動作不可状態のいずれでもない状態を休止状態と定義する。本実施形態においては、動作状態、動作不可状態を定義した後に、休止状態を定義したがこの相関を入れ替えて定義しても良い。すなわち、動作状態、休止状態を先に定義し、それ以外を動作不可状態とするなどである。
ここから図7を用いてバンク状態分類手段103について説明する。バンク状態分類手段103はイベント情報102を入力とし、前記シミュレーション処理後、別の処理として前記コンピュータ装置上で実行する。バンク状態分類手段103では2つのイベント間のクロックサイクル数を確認して動作不可状態を判断する場合がある。そのため、イベント発生時にそれ以降の状態を決定するのではなく、イベント発生時に一つ前のイベントから当該イベントまでの状態が決定する仕組みとなっている。図7はバンク220乃至227の状態を分類するフローチャート図である。ただし、本フローチャートは各バンクに対して独立に実行されるものとする。すなわち、前記コンピュータ装置上では図7のフローチャートに示す処理がバンク数である8個分実行されるという意味である。いずれのバンクにも対応できるフローチャートであるため、ステップ701の引数入力においてバンク番号を受け取っており、これにより対象のバンクを識別する。図7において、ステップ701でバンク番号を引数として受け取る。ステップ702、ステップ703で本処理で使用する変数を初期化する。ステップ702では状態確定時刻(FIX_TIME)をリセットする。具体的にはFIX_TIMEに0を設定する。状態確定時刻FIX_TIMEの使い方については後述するが、本値はその時刻まではバンクの状態が決定していることを意味する。ステップ703では一つ前のコマンド発生時刻と種別をリセットする。具体的には引数のバンク番号が示すバンクに対する一つ前のコマンドの発生時刻を示すSAME_PRE_TIMEに0を設定し、同種別を示すSAME_PRE_CMDに未定義を意味するUNDEFを設定する。また、引数のバンク番号以外のバンクに対する一つ前のコマンドの発生時刻を示すDIFF_PRE_TIMEに0を設定し、同種別を示すDIFF_PRE_CMDに未定義を意味するUNDEFを設定する。次にステップ704で入力となるイベント情報102から1つのイベント情報エントリを読み込む。これは、図6のイベント情報102の例における1行分に相当する。ここからステップ707乃至ステップ729によって、バンク状態を分類する。分類するバンク状態は前述した通り、動作状態、動作不可状態、休止状態の3つの状態である。
まずステップ707で、現在のイベント情報エントリのバンクアドレス603が引数のバンク番号と一致するかを判定する。一致しない場合は現在のイベント情報エントリでは対象のバンクの状態遷移は発生しない。ステップ727でDIFF_PRE_CMD、および、DIFF_PRE_TIMEを現在のイベント情報エントリのコマンド602、および、発生時刻601に基づいて更新する。すなわち、DIFF_PRE_CMDに現在のイベント情報エントリのコマンド602を設定し、DIFF_PRE_TIMEに現在のイベント情報エントリの発生時刻601を設定する。一方、現在のイベント情報エントリのバンクアドレス603が引数のバンク番号と一致した場合はステップ708へ進む。ステップ708では対象のバンクに対する一つ前のコマンド、すなわちSAME_PRE_CMDがRDコマンドもしくはWRコマンドであるかを判定する。初めてステップ708の分岐で判定を行う場合はSAME_PRE_CMDにはUNDEFが設定されているため、必ずNoと判定される。SAME_PRE_CMDがRDコマンドもしくはWRコマンドであった場合、ステップ709でFIX_TIMEから4クロックサイクル分を動作状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルである4サイクルと合わせてバンク状態情報104として出力する。その後ステップ710でFIX_TIMEに4クロックサイクル加算し状態が確定した時刻を更新する。一方、ステップ708でNoと判定された場合、ステップ711で対象のバンクに対する一つ前のコマンド、すなわちSAME_PRE_CMDがREFコマンドであるかを判定する。初めてステップ711の分岐で判定を行う場合は、SAME_PRE_CMDにはUNDEFが設定されているため、必ずNoと判定される。SAME_PRE_CMDがREFコマンドであった場合、ステップ712でFIX_TIMEから500クロックサイクル分を動作不可状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルである500サイクルと合わせてバンク状態情報104として出力する。その後ステップ713でFIX_TIMEに500クロックサイクル加算し状態が確定した時刻を更新する。ステップ710、ステップ713を処理した場合、及びステップ711でNoと判定された場合は、ステップ714に進む。ステップ714では対象バンクに対する一つ前のコマンド、すなわちSAME_PRE_CMDと、現在のイベント情報エントリのコマンド602を用いて、図8のテーブルに合致する条件に設定されているサイクルと一致するかを判定する。例えば、現在のイベント情報エントリのコマンド602がACTコマンドで、SAME_PRE_CMDがPREコマンドである場合、図8のテーブルに基づくと40サイクルが設定されている。この場合、一つ前のPREコマンドの発生時刻であるSAME_PRE_TIMEから、対象のACTコマンドの発生時刻、すなわち現在のイベント情報エントリの発生時刻601までの期間が30サイクルに一致するかを判定することとなる。他のコマンドでも同様に図8のテーブルに基づいて判定する。図8のテーブルでクロックサイクル数が設定されていない場合、Noと判定される。判定の結果がYesの場合は、ステップ715でFIX_TIMEから現在のイベント情報エントリの発生時刻601までの期間を動作不可状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルと合わせてバンク状態情報104として出力する。このとき、対象バンクに対する一つ前のコマンドの発生時刻であるSAME_PRE_TIMEから現在のイベント情報エントリの発生時刻601までの期間ではないことに注意が必要である。この理由を、現在のイベント情報エントリのコマンド602がPREコマンドで、SAME_PRE_CMDがRDコマンドの場合を例に説明する。本例では、図8のテーブルに基づくと50サイクルが設定されている。そのため、RDコマンドの発生時刻であるSAME_PRE_TIMEから、現在のPREコマンドの発生時刻601までの期間が50サイクルであるかを判定する。このとき、FIX_TIMEとSAME_PRE_TIMEは時刻が一致しない。なぜならば、FIX_TIMEはSAME_PRE_CMDがRDコマンドであるため、ステップ710にて既に4クロックサイクル加算されているためである。そのため、SAME_PRE_TIMEから現在のイベント情報エントリの発生時刻601までの50サイクルを動作不可状態と分類してしまうと、SAME_PRE_TIMEからの4クロックサイクルを2重に分類することとなる。これを避けるため、FIX_TIMEからの差引き46クロックサイクルを動作不可状態と分類する。さて、ステップ715で動作不可状態と分類した後、続くステップ716でFIX_TIMEに現在のイベント情報エントリの発生時刻601までの差分を加算し、状態が確定した時刻を更新する。結果として、FIX_TIME=現在のイベント情報エントリの発生時刻601となる。一方、ステップ714で図8のテーブルに制約が設定されていない、もしくは設定されている制約とSAME_PRE_TIMEから現在のイベント情報エントリの発生時刻601までの期間が一致しなかった場合、ステップ729に進む。ステップ729は、図8のテーブルに設定されている制約のタイミングで引数のバンクへコマンド発行されていて、引数以外のバンクへのコマンド発行を優先したために発行ができなかったことを検出する処理である。このケースがどのような場合に発生するかを、図11を例として説明する。本例ではACTコマンドとRDコマンドの間に8サイクル空ける制約が存在することを前提とする。また同様にRDコマンドとRDコマンドの間は4サイクル、RDコマンドとPREコマンドの間は6サイクル、PREコマンドとACTコマンドの間は8サイクル空ける制約が存在することを前提とする。この場合、バンク1に対するRDコマンド1107は、ACTコマンド1106から8サイクル空いた11サイクル目に発行可能である。一方、バンク0に対するPREコマンド1103は、RDコマンド1102から6サイクル空いた11サイクル目に発行可能である。すなわち、11サイクル目にはバンク1に対するRDコマンド1107とバンク0に対するPREコマンド1103の両方が発行可能な状態にある。この状況下で、本例ではバンク0に対するPREコマンド1103が発行され、同サイクルに発行可能であったバンク1に対するRDコマンド1107は次サイクルに発行されている。この発行結果から、11サイクル目ではバンク0に対するPREコマンド1103が優先され、その結果バンク1に対するRDコマンド1107が遅延したとみなすことができる。この発行結果において、バンク1に対するACTコマンド1106からRDコマンド1107の間をどのような状態と分類するかを説明する。ACTコマンドからRDコマンドの間は、8サイクル空けるという制約であるが9サイクル空いている。結果として、制約と比較する点においては動作不可状態ではなく、休止状態と分類される。しかしながら、上記説明したようにRDコマンド1107はACTコマンド1106から8サイクル空いた11サイクル目で発行できる状態にあったにもかかわらず、バンク0に対するPREコマンド1103の発行を優先したことにより遅延したとみなすことができる。すなわち、ACTコマンド1106からRDコマンド1107の間は、動作不可状態と分類することができるという意味である。本提案では、上記の状態を検出した場合、動作不可状態と分類ことを特徴とする。
以上説明したケースを検出するためのステップ729の処理を説明する。まず一つ前の引数以外のバンクに対するコマンドDIFF_PRE_CMDと引数のバンクに対する一つ前のコマンドDIFF_SAME_CMDの発行間隔が図8のテーブルに設定されているコマンド発行間隔制約のタイミングで発行されているか判定する。次に、引数以外のバンクに対する一つ前のコマンドの発行直後のサイクルに現在のイベント情報エントリのコマンド602が発行されているか判定する。具体的な処理について説明する。まず、引数のバンクに対する一つ前のコマンド、すなわちSAME_PRE_CMDと、現在のイベント情報エントリのコマンド602と、引数以外のバンクに対する一つ前のコマンドの発生時刻すなわちDIFF_PRE_TIMEを用いて、図8のテーブルに合致する条件に設定されているサイクルと一致するかを判定する。例えば、現在のイベント情報エントリのマンド602がRDコマンドで、SAME_PRE_CMDがACTコマンドである場合、図8のテーブルに基づくと30サイクルが設定されている。この場合、SAME_PRE_TIMEからDIFF_PRE_TIMEまでの期間が30サイクルに一致するかを判定することとなる。一致する場合、現在のイベント情報エントリ発生時刻601がDIFF_PRE_TIMEの1サイクル後がどうか判定する。ステップ729がYesの場合、ステップ715に進む。Noの場合、ステップ717へ進む。ステップ717からはステップ714からステップ716で引数のバンクに対する一つ前のコマンドからの制約を確認したのと同様に、対象のバンク以外に対する一つ前のコマンドからの制約を確認する。制約の確認を行う前に、対象のバンク以外に対する一つ前のコマンドの発生時刻、すなわちDIFF_PRE_TIMEがFIX_TIMEより後になっていないか確認する。本フローチャートでは、ステップ707で分岐したように現在のイベント情報エントリのコマンド602が対象のバンクの場合のみバンクの状態遷移を確認しバンクの状態を分類する。結果として、対象のバンクに対するコマンドの発生時刻であるSAME_PRE_TIMEは、必ずステップ707の時点でFIX_TIMEと一致する。またその後の処理でもFIX_TIMEが加算される可能性しかないため、常にFIX_TIME>=SAME_PRE_TIMEが成り立っていた。ところが、現在のイベント情報エントリのコマンド602が対象のバンク以外に対する一つ前のコマンドである場合はステップ707で分岐し状態遷移が行われない。結果として、FIX_TIME<DIFF_PRE_TIMEが起こり得る。当該条件(FIX_TIME<DIFF_PRE_TIME)が成り立つ場合は、対象のバンク以外に対する一つ前のコマンドからの制約を分析する前に、当該コマンドまでの期間を休止状態に設定する必要がある。ステップ718では、FIX_TIMEから対象のバンク以外に対する一つ前のコマンドの発生時刻、すなわちDIFF_PRE_TIMEまでの期間を休止状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルと合わせてバンク状態情報104として出力する。続いてステップ719で、FIX_TIMEにDIFF_PRE_TIMEまでの差分を加算し、状態が確定した時間を進める。結果として、FIX_TIME=DIFF_PRE_TIMEとなる。さて、ステップ717でFIX_TIME<DIFF_PRE_TIMEが成り立たなかった場合、及びステップ719を処理した後はステップ720へ進む。ステップ720では対象バンク以外に対する一つ前のコマンド、すなわちDIFF_PRE_CMDと、現在のイベント情報エントリのコマンド602を用いて、図8のテーブルに合致する条件に設定されているサイクルと一致するかを判定する。例えば、現在のイベント情報エントリのコマンド602がWRコマンドで、DIFF_PRE_CMDがRDコマンドである場合、図8のテーブルに基づくと15サイクルが設定されている。この場合、RDコマンドの発生時刻であるDIFF_PRE_TIMEから、対象のWRコマンドの発生時刻、すなわち現在のイベント情報エントリの発生時刻601までの期間が15サイクルに一致するかを判定することとなる。他のコマンドでも同様に図8のテーブルに基づいて判定する。図8のテーブルでクロックサイクル数が設定されていない場合、Noと判定される。判定の結果がYesの場合は、ステップ721でFIX_TIMEから現在のイベント情報エントリの発生時刻601までの期間を動作不可状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルと合わせてバンク状態情報104として出力する。このとき、対象のバンク以外に対する一つ前のコマンドの発生時刻であるDIFF_PRE_TIMEから現在のイベント情報エントリの発生時刻601までの期間ではないことに注意が必要である。この理由はステップ715の説明で前述したのと同じである。さて、ステップ721で動作不可状態と分類した後、続くステップ722でFIX_TIMEに現在のイベント情報エントリの発生時刻601までの差分を加算し、状態が確定した時刻を更新する。結果として、FIX_TIME=現在のイベント情報エントリの発生時刻601となる。一方、ステップ720で図8のテーブルに制約が設定されていない、もしくは設定されている制約とDIFF_PRE_TIMEから現在のイベント情報エントリの発生時刻601までの期間が一致しなかった場合、ステップ723に進む。ステップ723では、FIX_TIMEから現在のイベント情報エントリの発生時刻601までの期間を休止状態と分類する。分類した結果は、発生時刻(このときのFIX_TIME)と発生サイクルと合わせてバンク状態情報104として出力する。続くステップ724ではFIX_TIMEに現在のイベント情報エントリの発生時刻601までの差分を加算し、状態が確定した時刻を更新する。結果として、FIX_TIME=現在のイベント情報エントリの発生時刻601となる。さて、ステップ716、ステップ722、もしくはステップ724を処理した場合は、ステップ725へ進む。ステップ725では、SAME_PRE_CMDとSAME_PRE_TIMEを現在のイベント情報エントリのコマンド602と発生時刻601に基づいて更新する。すなわち、SAME_PRE_CMDに現在のイベント情報エントリのコマンド602を設定し、SAME_PRE_TIMEに現在のイベント情報エントリの発生時刻601を設定する。最後にステップ726で入力であるイベント情報102に次のイベント情報エントリがあるか否かを判定し、ある場合にはステップ704に戻って処理を繰り返す。一方、イベント情報エントリがない場合は処理を終了する。以上が本実施形態におけるバンク状態分類手段103の内容である。本実施形態では、各コマンド間の制約において、同時に複数の制約が発生しない前提で説明をした。しかしながら、実際には処理対象のイベント情報エントリが示すコマンドに対し、それより以前に発行された複数のコマンドから同時に制約がかかるケースが起こり得る。例えば、ACTコマンド、RDコマンド、PREコマンドが順番に発行されたとする。この場合、最後のPREコマンドを処理する際、ACTコマンドの間にはtRASパラメータで定義される制約がある。同様にRDコマンドとの間にも別の制約が存在する。多くの場合はいずれか一方の制約によりPREコマンドのタイミングが決定するが、場合によっては同時に制約がかかる場合もあり得る。いずれにしても、本実施形態のバンク状態分類手段103では直前に発行された1つのコマンドのみを履歴(SAME_PRE_TIME及びSAME_PRE_CMD)として情報を残しているのみである。よって、上記例ではACTコマンドからの制約は判定することができない。しかしながら、本前提は何ら本発明を制限するものではない。すなわち、履歴を少なくとも2つ以上持ち、各々の制約をステップ714にてそれぞれ判定すれば上記の例に対応できる。それ以外にも解析対象のSDRAMの規格やメモリコントローラ205の制約によって発生し得る制約をリストアップし、それらすべてに対応可能な分の履歴を残すように変更すれば対応できない制約は存在しえない。
以下、バンク220すなわちバンク番号0に対して、図6のイベント情報エントリ610乃至615を実際の入力としたときを例としてバンク状態分類手段103の処理を具体的に説明する。本例では1クロックサイクル=1000psを前提とする。図9の1001乃至1016はイベント情報エントリ610乃至615を入力した場合の処理結果を示している。以下処理結果を参照しながらイベント情報エントリ610乃至615の処理を説明する。まずイベント情報エントリの入力前に、ステップ701でバンク番号0が入力される。ステップ702、703ではFIX_TIME=0、SAME_PRE_TIME=0、SAME_PRE_CMD=UNDEF、DIFF_PRE_TIME=0、DIFF_PRE_CMD=UNDEFがそれぞれリセットされる。次にステップ704でイベント情報エントリ610を読み込む。イベント情報エントリのバンクアドレス603は0となっており、引数のバンク番号と一致する。よって、ステップ707ではYesと判定される。この時点のSAME_PRE_CMDはUNDEFのため、ステップ708、ステップ711、ステップ714ではいずれもNoと判定される。更にこの時点ではFIX_TIME=0、DIFF_PRE_TIME=0、DIFF_PRE_CMD=UNDEFのためステップ717、ステップ720ではいずれもNoと判定される。その結果、ステップ723でFIX_TIME=0から現在のイベント情報エントリ610の発生時刻1000までの1クロックサイクル分を休止状態に分類する。続いてステップ724でFIX_TIMEを1000に設定する。図99においては、901の休止状態、1サイクルが確定したこととなり、その後、ステップ725でSAME_PRE_CMD=ACT、SAME_PRE_TIME=1000に設定し、ステップ726を経由してステップ704に戻る。
次にイベント情報エントリ611を読み出し、その処理に移る。イベント情報エントリ611のバンクアドレス603は1となっており引数のバンク番号と一致しない。よって、ステップ707でNoと判定される。この場合はステップ727でDIFF_PRE_CMD=ACT、DIFF_PRE_TIME=31000に設定し、ステップ726を経由してステップ704に戻る。
イベント情報エントリ612の処理では、バンクアドレス603は0となっており引数のバンク番号と一致する。よって、ステップ707でYesと判定される。この時点のSAME_PRE_CMDはACTコマンドであるため、ステップ708、ステップ711はいずれもNoと判定される。ステップ714では図8のテーブルにおいて、SAME_PRE_CMD=ACTコマンド、現在のイベント情報エントリ612のコマンド602がRDコマンドであるため30サイクルが該当する。一方、現在のイベント情報エントリ612の発生時刻601は31000のためSAME_PRE_TIMEからの期間は32000-1000=31000となり、31クロックサイクルであると分かる。結果が一致しないため、ステップ714の判定はNoとなり、ステップ729に進む。DIFF_PRE_TIME=31000であるため、SAME_PRE_TIMEとの差は31000-1000=30000となり、30クロックサイクルであるとわかり、図8のテーブルに設定されている30クロックサイクルとも一致する。さらに、イベント情報エントリ612の発生時刻32000とSAME_PRE_TIMEとの差は33000-32000=1000となり、1クロックサイクルであるとわかり、ステップ729でYesと判定される。次に、ステップ715でFIX_TIME=1000から現在のイベント情報エントリ612の発生時刻601の32000までの31クロックサイクル分を動作不可状態に分類する。続いてステップ716でFIX_TIMEを32000に設定する。図9においては、902の動作不可状態、31サイクルが確定したこととなる。その後、ステップ725でSAME_PRE_CMD=RD、SAME_PRE_TIME=32000に設定し、ステップ726を経由してステップ704に戻る。
イベント情報エントリ613の処理では、バンクアドレス603は0となっており引数のバンク番号と一致する。よって、ステップ707でYesと判定される。この時点のSAME_PRE_CMD=RDコマンドのため、ステップ708でYesと判定される。これに伴い、ステップ709でFIX_TIMEの32000から4クロックサイクル分を動作状態に分類する。続いてステップ710でFIX_TIMEを36000に設定する。その後のステップ714、および、ステップ729ではNoと判定される。更にこの時点ではFIX_TIME=36000、DIFF_PRE_TIME=31000、DIFF_PRE_CMD=ACTのためステップ717、ステップ720ではいずれもNoと判定される。その結果、ステップ723でFIX_TIME=36000から現在のイベント情報エントリ613の発生時刻601の36000までを休止状態に分類しようとするが、差分は0のため結局分類は行われない。そのため、ステップ724でもFIX_TIME=36000は現在のイベント情報エントリ613の発生時刻601の36000と一致するため実質更新はされない。図9においては、903の動作状態、4サイクルが確定したこととなる。その後、ステップ725でSAME_PRE_CMD=RD、SAME_PRE_TIME=36000に設定し、ステップ726を経由してステップ704に戻る。
イベント情報エントリ614の処理では、バンクアドレス603は0となっており引数のバンク番号と一致する。よって、ステップ707でYesと判定される。この時点のSAME_PRE_CMD=RDコマンドのため、ステップ708でYesと判定される。これに伴い、ステップ709でFIX_TIMEの36000から4クロックサイクル分を動作状態に分類する。続いてステップ710でFIX_TIMEを40000に設定する。その後のステップ714、および、ステップ729ではNoと判定される。更にこの時点ではFIX_TIME=40000、DIFF_PRE_TIME=31000、DIFF_PRE_CMD=ACTのためステップ717、ステップ720ではいずれもNoと判定される。その結果、ステップ723ではイベント情報エントリ613の場合と異なり、FIX_TIME=40000から現在のイベント情報エントリ614の発生時刻601の41000までの1クロックサイクル分を休止状態に分類する。続いてステップ724でFIX_TIMEを41000に設定する。図9においては、904の動作状態、4サイクル、及び905の休止状態、1サイクルが確定したこととなる。その後、ステップ725でSAME_PRE_CMD=RD、SAME_PRE_TIME=41000に設定し、ステップ726を経由してステップ704に戻る。
以降バンク221の処理は既にバンク220の処理で説明したものと同様に処理される。結果として、図9における908乃至909が確定する。バンク222乃至バンク227に対しては、図6のイベント情報102ではいずれの制御コマンドも発生していないため全て休止状態となる。
本実施形態では、引数のバンク以外のバンクへのコマンドの情報を過去一つのみ保持する。従って、引数のバンク以外のバンクへの二つ以上のコマンドが優先され現在のイベント情報エントリのコマンド602と引数のバンクに対する一つ前のコマンドDIFF_SAME_CMDの発行間隔が図8のテーブルに設定されているコマンド発行間隔制約よりも2サイクル以上長い場合、動作不可状態に分類できない。しかし、引数のバンク以外のバンクへのコマンドの情報を過去二つ以上保持することで引数バンク以外のバンクへのコマンドが優先され発行間隔が2サイクル以上長い場合も同様に、動作不可状態と定義することも可能である。
また、本実施形態では引数のバンクと引数のバンク以外のバンクへのコマンドの情報をそれぞれ過去一つのみ保持するため、引数のバンク以外のバンクへのコマンドが優先された時は引数以外のバンクに対する二つ以上前のコマンドと現在のイベント情報エントリのコマンド602の間を動作不可状態に分類できない。しかし、引数のバンク以外のバンクへのコマンドの情報を過去二つ以上保持することで引数のバンク以外のバンクに対するに対する二つ以上前のコマンドと現在のイベント情報エントリのコマンド602の間を同様に動作不可状態と定義することができる。
また、本実施形態では図7のフローチャートに示されているように引数のバンクに発行された2つのコマンドによる動作不可状態分類が、引数の以外のバンクに発行されたコマンドと引数のバンクに発行されたコマンドによる動作不可状態分類よりも先に処理され、かつ、どちらか一方のみ処理されるため、同時に発生した場合、引数のバンクに発行された2つのコマンドによる動作不可状態分類が優先される。しかし、処理順を変更することで引数の以外のバンクに発行されたコマンドと引数のバンクに発行されたコマンドによる動作不可状態分類を優先させることができる。また、動作不可状態分類状態に関わらず、二つの処理を実行することで2つの分類による期間を合計することも可能である。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
101 検出手段
102 イベント情報
103 バンク状態分類手段
104 バンク状態情報
102 イベント情報
103 バンク状態分類手段
104 バンク状態情報
Claims (9)
- DRAMを構成する少なくとも1つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、
前記検出手段が検出したイベントに基づいて、前記少なくとも1つ以上のバンクの状態を、動作状態、動作不可状態、休止状態の少なくともいずれか1つに分類する分類手段と、を有し、
前記分類手段は、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、
先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、
前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出された場合は、前記所定のバンクは動作不可状態であると分類することを特徴とする情報処理装置。 - 前記分類手段は、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、
先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、
前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出されない場合は、前記所定のバンクは休止状態であると分類することを特徴とする請求項1に記載の情報処理装置。 - 前記動作状態は、データを転送している状態であることを特徴とする請求項1または請求項2に記載の情報処理装置。
- 前記動作不可状態は、所定の制約によりデータの転送ができない状態であることを特徴とする請求項1乃至請求項3のいずれか1項に記載の情報処理装置。
- 前記休止状態は、制約はないがデータの転送をしていない状態であることを特徴とする請求項1乃至請求項4のいずれか1項に記載の情報処理装置。
- 前記分類手段により分類された結果を表示手段に表示させる制御手段を更に有することを特徴とする請求項1乃至請求項5のいずれか1項に記載の情報処理装置。
- 前記第一の制御コマンドおよび前記第二の制御コマンドは、DRAMにアクセスするためのコマンドであることを特徴とする請求項1乃至請求項6のいずれか1項に記載の情報処理装置。
- 検出手段が、DRAMを構成する少なくとも1つ以上のバンクの状態を遷移させるイベントを検出する検出工程と、
前記検出工程で検出したイベントに基づいて、前記少なくとも1つ以上のバンクの状態を、動作状態、動作不可状態、休止状態の少なくともいずれか1つに分類する分類工程と、を有し、
前記分類工程では、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、
先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、
前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出された場合は、前記所定のバンクは動作不可状態であると分類することを特徴とする情報処理装置。 - コンピュータを、
DRAMを構成する少なくとも1つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、
前記検出手段が検出したイベントに基づいて、前記少なくとも1つ以上のバンクの状態を、動作状態、動作不可状態、休止状態の少なくともいずれか1つに分類する分類手段と、を有し、
前記分類手段は、前記少なくとも1つ以上のバンクに含まれる所定のバンクに対して、
先行する第一の制御コマンドと、前記第一の制御コマンドから所定の期間よりも長い間隔を空けた後に続く第二の制御コマンドとが、検出された場合であって、
前記所定の期間の内に前記所定のバンクとは異なるバンクへの制御コマンドが検出された場合は、前記所定のバンクは動作不可状態であると分類することを特徴とする情報処理装置として機能させるためのコンピュータのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022031998A JP2023127985A (ja) | 2022-03-02 | 2022-03-02 | 情報処理装置、情報処理方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022031998A JP2023127985A (ja) | 2022-03-02 | 2022-03-02 | 情報処理装置、情報処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023127985A true JP2023127985A (ja) | 2023-09-14 |
Family
ID=87972902
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022031998A Pending JP2023127985A (ja) | 2022-03-02 | 2022-03-02 | 情報処理装置、情報処理方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2023127985A (ja) |
-
2022
- 2022-03-02 JP JP2022031998A patent/JP2023127985A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221772B2 (en) | Self refresh state machine mop array | |
US5835435A (en) | Method and apparatus for dynamically placing portions of a memory in a reduced power consumtion state | |
US6141283A (en) | Method and apparatus for dynamically placing portions of a memory in a reduced power consumption state | |
US9343127B1 (en) | Memory device having an adaptable number of open rows | |
US5889714A (en) | Adaptive precharge management for synchronous DRAM | |
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
US9281046B2 (en) | Data processor with memory controller for high reliability operation and method | |
US10198216B2 (en) | Low power memory throttling | |
US11099786B2 (en) | Signaling for heterogeneous memory systems | |
WO2004053879A2 (en) | Memory device and method having low-power, high write latency mode and high-power, low write latency mode and/or independently selectable write latency | |
US20050289319A1 (en) | Memory control apparatus and method for scheduling commands | |
US20060195665A1 (en) | Access control device, method for changing memory addresses, and memory system | |
JP2000194596A (ja) | メモリ制御装置、キャッシュ装置、メモリ制御システムおよび方法、記録媒体 | |
JP2023127985A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US6948046B2 (en) | Access controller that efficiently accesses synchronous semiconductor memory device | |
KR101022473B1 (ko) | 다층 버스 시스템에서의 메모리 뱅크 인터리빙 방법 및장치 | |
US20180181335A1 (en) | Apparatus and method to speed up memory frequency switch flow | |
JP2023127986A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP7271294B2 (ja) | 情報処理装置および情報処理方法 | |
Kang et al. | An architecture of sparse length sum accelerator in axdimm | |
US20080098153A1 (en) | Memory access controller | |
CN217588059U (zh) | 处理器系统 | |
JP2022068789A (ja) | 情報処理装置および情報処理方法 | |
WO2024072725A1 (en) | Directed refresh management for dram | |
JPH01290186A (ja) | メモリのアクセス方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20231213 |