(57)【要約】      （修正有）【課題】サイクル数に関わらず、ＤＲＡＭの状態を効率的に解析する。【解決手段】情報処理装置は、ＤＲＡＭを構成する少なくとも１つ以上のバンクの状態を遷移させるイベントを検出する検出手段１０１と、検出手段が検出したイベントに基づいて、少なくとも１つ以上のバンクの状態を分類する第一の分類手段１０３と、少なくとも１つ以上のバンクの状態に基づいてＤＲＡＭの状態を分類する第二の分類手段１０５と、所定の単位時間に対して少なくとも１つ以上のバンクの状態もしくはＤＲＡＭの状態に基づく統計情報を表示させる表示手段１０８とを備える。バンクの状態及びＤＲＡＭの状態は、データを転送している動作状態、所定の制約によりデータの転送ができない動作不可状態、制約はないがデータの転送していない休止状態の少なくともいずれか１つである。【選択図】図１
2020181334.tif 000002
【特許請求の範囲】
【請求項１】
ＤＲＡＭを構成する少なくとも１つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、
前記検出手段が検出したイベントに基づいて、前記少なくとも１つ以上のバンクの状態を分類する第一の分類手段と、
前記少なくとも１つ以上のバンクの状態に基づいて、前記ＤＲＡＭの状態を分類する第二の分類手段と、
所定の単位時間に対して、前記少なくとも１つ以上のバンクの状態もしくは前記ＤＲＡＭの状態に基づく統計情報を表示させる表示手段と、を備え、
前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態は、データを転送している動作状態、所定の制約によりデータの転送ができない動作不可状態、制約はないがデータの転送していない休止状態の少なくともいずれか１つであることを特徴とする情報処理装置。
【請求項２】
前記第二の分類手段は、前記少なくとも１つ以上のバンクが前記動作状態である場合は、
前記ＤＲＡＭの状態を前記動作状態とし、
前記少なくとも１つ以上のバンクに含まれる全てのバンクが前記動作状態ではなく、かつ前記少なくとも１つ以上のバンクが動作不可状態の場合は、前記ＤＲＡＭ状態を動作不可状態とし、
前記少なくとも１つ以上のバンクに含まれる全てのバンクが休止状態の場合は、前記ＤＲＡＭの状態を休止状態とすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第一の分類手段は、
前記少なくとも１つ以上のバンクに含まれる所定のバンクに対する制御コマンドが前記検出手段により検出されたタイミングから、当該制御コマンドに係るデータ信号を占有する期間を前記動作状態とすることを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記第一の分類手段は、
前記少なくとも１つ以上のバンクに含まれる所定のバンクに対する制御コマンドが前記検出手段により検出されたタイミングから、当該制御コマンドに係るコマンドが発行できない期間を動作不可状態とすることを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項５】
前記第一の分類手段は、前記少なくとも１つ以上のバンクに含まれる所定のバンクに対して、先行する第一の制御コマンドと後続の第二の制御コマンドとが前記検出手段により検出され、
前記第一の制御コマンドと前記第二の制御コマンドとの間に所定の期間だけ空けるべき制約が存在する場合に、前記第一の制御コマンドから前記第二の制御コマンドまでの期間を動作不可状態とする
ことを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記第一の分類手段は、前記少なくとも１つ以上のバンクに含まれる所定のバンクに対して３つ以上の制御コマンドが前記検出手段により検出され、
前記３つ以上の制御コマンドに含まれる制御コマンドが予め定義された順番で発生し、かつ全ての連続する２つの制御コマンドの間に所定の期間だけ空けるべき制約が存在する場合に、
最初に検出した制御コマンドから最後に検出した制御コマンドまでの期間を動作不可状態とする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記第一の分類手段は、前記少なくとも１つ以上のバンクに含まれる所定の異なる２つのバンクに対する制御コマンドが前記検出手段により検出され、
先行する第一の制御コマンドと後続の第二の制御コマンドの間に所定の期間だけ空けるべき制約が存在する場合に、前記第一の制御コマンドから前記第二の制御コマンドまでの期間を動作不可状態とすることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記第一の分類手段は、前記少なくとも１つ以上のバンクに含まれる２つ以上のバンクに対する３つ以上の制御コマンドが前記検出手段により検出され、
前記３つ以上の制御コマンドに含まれる制御コマンドが予め定義された順番で発生し、かつ全ての連続する２つの制御コマンドの間に所定の期間だけ空けるべき制約が存在する場合に、最初に検出された制御コマンドから最後に検出された制御コマンドまでの期間を動作不可状態とすることを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記表示手段により表示される統計情報は、前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態の発生回数であることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記表示手段により表示される統計情報は、前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態の発生の期間もしくはクロックサイクル数であることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１１】
前記表示手段は、前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態の時系列の変化を波形で表示させることを特徴とする請求項１乃至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記検出手段は、バスのマスタのイベントを検出し、
前記少なくとも１つ以上のバンクの状態を遷移させるイベントと、前記バスのマスタのイベントとを関連付ける関連付け手段をさらに有し、
前記第一の分類手段は、前記関連付けに基づき、前記少なくとも１つ以上のバンクの状態を分類することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記検出手段は、バスのマスタのイベントを検出し、前記少なくとも１つ以上のバンクの状態を遷移させるイベントと、前記バスのマスタのイベントとを関連付け、
前記第一の分類手段は、前記関連付けに基づき、前記少なくとも１つ以上のバンクの状態を分類することを特徴とする請求項１乃至１１のいずれか１項に記載の情報処理装置。
【請求項１４】
前記表示手段により表示される統計情報は、前記バスのマスタごとの前記少なくとも１つ以上のバンクの状態もしくは前記ＤＲＡＭの状態の発生回数であることを特徴とする請求項１２または請求項１３に記載の情報処理装置。
【請求項１５】
前記表示手段により表示される統計情報は、前記バスのマスタごとの前記少なくとも１つ以上のバンクの状態もしくは前記ＤＲＡＭの状態の発生の期間もしくはクロックサイクル数であることを特徴とする請求項１２または請求項１３に記載の情報処理装置。
【請求項１６】
前記表示手段は、前記バスのマスタに関する情報の時系列の変化を波形で表示させることを特徴とする請求項１２または請求項１３に記載の情報処理装置。
【請求項１７】
前記動作状態には、データのリードの状態またはライトの状態が含まれ、
前記動作不可状態には、リフレッシュ動作不可状態、Ｒｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態、Ｗｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態、アクティベート動作不可状態、プリチャージ動作不可状態、Ｗｒｉｔｅ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態、およびＲｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態の少なくともいずれか１つが含まれることを特徴とする請求項１に記載の情報処理装置。
【請求項１８】
検出手段が、ＤＲＡＭを構成する少なくとも１つ以上のバンクの状態を遷移させるイベントを検出する検出工程と、
第一の分類手段が、前記検出工程で検出したイベントに基づいて、前記少なくとも１つ以上のバンクの状態を分類する第一の分類工程と、
第二の分類手段が、前記少なくとも１つ以上のバンクの状態に基づいて、前記ＤＲＡＭの状態を分類する第二の分類工程と、
表示手段が、所定の単位時間に対して、前記少なくとも１つ以上のバンクの状態もしくは前記ＤＲＡＭの状態に基づく統計情報を表示させる表示工程と、を備え、
前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態は、データを転送している動作状態、所定の制約によりデータの転送ができない動作不可状態、制約はないがデータの転送していない休止状態の少なくともいずれか１つであることを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＲＡＭの状態を解析するための情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
従来からシステムＬＳＩのＤＲＡＭの性能を解析及び解析結果を表示する技術は広く使用されている。性能解析及び性能解析結果表示技術について説明する前に、ＤＲＡＭについて説明する。ＤＲＡＭとはＤｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙの略で、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やスマートフォン、デジタルテレビ、デジタルカメラなど近年のデジタル機器の多くで使用されている記憶装置の一つである。ＤＲＡＭとよく比較される記憶装置として、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）がある。ＤＲＡＭはＳＲＡＭに比べ、リフレッシュと呼ばれる定期的な記憶保持動作を必要とするため、消費電力が一般的に高い。一方、その構造上高集積化が実現しやすく、大容量を安価に提供できるという利点があり、大容量の記憶装置として古くから使用されている。昨今の４Ｋ（縦４０００画素、横２０００画素前後の画像サイズ）、８Ｋ（縦８０００画素、横４０００画素前後の画像サイズ）といった高画素化に伴い、静止画像、動画像のデジタルデータのサイズは増え続けており、ＤＲＡＭの適用範囲は未だ衰えを知らない。このようにＤＲＡＭはデジタル機器の主な記憶装置であるため、そのアクセス速度向上の要求も高い。これに対しＤＲＡＭはＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）やＲＤＲＡＭ（Ｒａｍｂｕｓ  ＤＲＡＭ）などの構造の進化や、同一構造におけるクロック周波数向上による速度向上、及び様々な高速化を実現する機能をもってその要求に対応してきた。ここではＳＤＲＡＭを例にとって説明する。ＳＤＲＡＭはクロック信号の立上りのみで動作するＳＤＲ（Ｓｉｎｇｌｅ  Ｄａｔａ  Ｒａｔｅ）から、クロック信号の立上りと立下りの両方で動作するＤＤＲ（Ｄｕａｌ  Ｄａｔａ  Ｒａｔｅ）へ進化し、そのアクセスレートを理論上２倍に引き上げた。更にＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４と主にクロック周波数と容量の向上を規格の定義とともに進化してきた。またその省電力版としてＬＰ（Ｌｏｗ  Ｐｏｗｅｒ）を冠したＬＰＤＤＲ２、ＬＰＤＤＲ３、ＬＰＤＤＲ４も規格化されている。規格はＪＥＤＥＣ半導体技術協会（ＪＥＤＥＣ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｓｓｏｃｉａｔｉｏｎ）によって定義し標準化されたもので、ＤＲＡＭ製造を担う企業が独自の規格を使用しないように進化してきた。
【０００３】
上述のようにＳＤＲＡＭのアクセス性能は進化を遂げているが、その制御方法はＳＤＲ、ＤＤＲ、ＬＰＤＤＲなど全てにおいて基本的に変わりなく、コマンドと呼ばれる制御信号によって制御する。コマンドによる制御方法についてＬＰＤＤＲ４を例にとって説明する。ただし前述したように制御方法は、ＳＤＲ、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４、ＬＰＤＤＲ２、ＬＰＤＤＲ３でも大きな違いはない。図５はＤＤＲ３のコマンドのリストを示している。図５において、５０１及び５０２はそれぞれ、５０３乃至５１３の各信号がその状態に一致した場合に対応するコマンドの意味及びコマンド表記を示している。ＡＣＴコマンドはＤＲＡＭの行アドレスを選択するコマンドである。この動作をアクティベート、及び同一行アドレスの記憶空間をページと見たてページへのアクセス準備をすることからページオープンと呼ぶ。ＡＣＴコマンドで行アドレスを選択した後、ＲＤコマンド及びＷＲコマンドで列アドレスを選択してＤＲＡＭの記憶素子のデータをリード及びライトする。ＤＲＡＭの記憶素子を選択するアドレスには行アドレスと列アドレスの２つがある。基本的なリード及びライト動作は、先にＡＣＴコマンドにより行アドレスを選択し、次にＲＤ及びＷＲコマンドにより列アドレスを選択し対象の記憶素子のアドレスを決定する。ＳＤＲＡＭではデータアクセスの高速化のため、同一行アドレスで列アドレスが違うデータを次々にリード及びライトするページモードと呼ばれる方法が考案されている。これにより、同一行アドレスであれば列アドレスが違っても高速にアクセスすることができる。一方、行アドレスが異なる場合は、一旦アクティベート済みの行アドレスをＰＲＥコマンドによるプリチャージと呼ばれる動作によって行アドレスを非選択状態に戻してから再度アクティベートする必要がある。このプリチャージはアクティベートのページオープンに対してページクローズと呼ばれる。このページクローズ（プリチャージ）とページオープン（アクティベート）の一連の動作は、ＤＲＡＭの構造上時間短縮することが難しく、規格の進化によってもあまり短縮化されていない。一般的にこの一連の動作をページミスと呼ぶ。ページミスは行アドレスが変わると必ず発生するため、それ自体は避けることはできない。しかしながら、このページミスを隠ぺいしてアクセス効率を向上させる構造が考案されている。仕組みは単純で、行アドレス及び列アドレスで選択する記憶空間全体をバンクと呼ばれる単位で構築し、このバンクを複数実装することでページミスの隠ぺいを実現する。すなわち、一つのバンクでページミスが発生しアクセスできない期間に、他のバンクへのアクセスを並行して行うことで実質ページミスペナルティ全体もしくは一部を隠ぺいするという仕組みである。ただし、バンクは行アドレス、列アドレス及びデータが流れる信号線を共有しており、ＤＲＡＭの基板配線上の拡張は不要なまま機能拡張を実現できる。図２９はページミスによるペナルティと、それを隠ぺいする他のバンクの動作を示している。図２９において、２９０１はバンク０へのＲＤコマンドである。ＤＤＲ３−ＳＤＲＡＭの規格上はデータを４回連続アクセスする４ビートアクセスと８回連続アクセスする８ビートアクセスがある。連続アクセスは、クロックの立上りと立下りで１回ずつアクセスを行うため、４ビートアクセスでは２クロックサイクル、８ビートアクセスでは４クロックサイクル消費する。本例では、８ビートアクセスのみが発行されることを前提とし、ＲＤ及びＷＲコマンド発行後に４クロックサイクル後に次のＲＤコマンドが発行できることとなる。２９０２はバンク０へのＲＤコマンドであり、２９０１から４クロックサイクル空いて発行されており、８ビートアクセスを考慮すると最短のタイミングで発行している。その後、バンク０ではページミスが発生し、２９０３のＰＲＥコマンド、２９０４のＡＣＴコマンドが連続して発行され、その後別ページへのＲＤコマンド２９０５が発行されている。すなわち、ＲＤコマンド２９０２の４クロックサイクル後からＲＤコマンド２９０５までがページミスによるペナルティであると判別できる。一方、ＲＤコマンド２９０２から４クロックサイクル後にバンク１で２９０６のＲＤコマンドが発行されている。バンクに関わらず４クロックサイクルが最短のタイミングとなるため、ＲＤコマンド２９０２からＲＤコマンド２９０６は最短のタイミングでアクセスできていることを意味する。同様に、ＲＤコマンド２９０７、２９０８、２９０９もそれぞれ４クロックサイクル間隔で発行されており、この間も最短のタイミングでアクセスできている。結果、次のＲＤコマンドが発行できるのは、ＲＤコマンド２９０９の４クロックサイクル後となる。これをバンク０だけで見ると、ＲＤコマンド２９０２の４クロックサイクル後からＲＤコマンド２９０５までの１８クロックサイクルがページミスによるペナルティである。一方ＤＲＡＭ全体でみると、ＲＤコマンド２９０２、２９０６、２９０７、２９０８、２９０９は全て最速のタイミングで発行されているため、ペナルティとはならない。すなわち、ＲＤコマンド２９０２の４クロックサイクル後からＲＤコマンド２９０９の４クロックサイクル後までの１６クロックサイクルはページミスによるペナルティを隠ぺいできたとみなすことができる。結果として、ＤＲＡＭ全体では、ＲＤコマンド２９０９の４クロックサイクル後から、ＲＤコマンド２９０５までの２クロックサイクルのみがページミスによるペナルティであるとみなされる。
【０００４】
もう一つＤＲＡＭの代表的な制御がある。リフレッシュと呼ばれる記憶保持動作であり、ＲＥＦコマンドによって実現する。ＤＲＡＭの記憶素子は蓄えられた電荷によってその値を表現する。この蓄えられた電荷は、記憶素子内部の漏れ電流によって徐々に失われていき、電荷のない状態と判別が困難になる。そこで定期的に電荷を補充する操作が必要になる。これがリフレッシュである。リフレッシュは基本的にバンク単位で行うが、対象のバンクは行アドレスが非選択状態となっている必要があり、事前にページクローズする必要がある。また、リフレッシュ動作は構造上一定時間かかる操作であり、リフレッシュコマンド発行後アクセスできない期間が存在する。この他にも、低消費電力やキャリブレーション（信号線とクロックの位相関係を定期的に調整する）などＤＲＡＭには様々な機能があり、これらもコマンドを発行することで実現されている。これらのコマンドでもページミスペナルティやリフレッシュペナルティと同様にコマンド発行後に一定期間アクセスできない期間が存在する。
【０００５】
上述したＤＲＡＭの性能、すなわちアクセス効率を解析、表示する方法として、波形表示がある。波形とはＤＲＡＭとそれを記憶装置として使用するシステムＬＳＩの間の信号線の変化を時系列に表示するもので、システムＬＳＩの開発においては一般的に使用されている。例えば、システムＬＳＩ及びＤＲＡＭなどの周辺装置を含めてワークステーション上でその動作をシミュレーションするソフトウェアシミュレータがＥＤＡ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ）ツールベンダ各社から提供されている。特許文献１には、システムＬＳＩのソフトウェアシミュレータが開示されている。主なソフトウェアシミュレータでは波形表示機能が提供されている。波形表示上でコマンドの制御信号を解析することで、データアクセス期間や、ページミス、リフレッシュなどにより一定期間アクセスできない期間を特定することができる。一方、波形表示による詳細解析とは別に、よりマクロな単位で解析を行う目的で、発生したデータアクセス量を統計データとして表示することで解析を行う手法も広く用いられている。統計データでは一般的にＤＲＡＭに対して発行したアクセス量をリード及びライトで分けて表示する。更に設定した単位時間毎にリード及びライトのアクセス量を統計解析することで、時系列にリード及びライトのアクセス量の変化を解析することが可能となる。また統計データではページミスやリフレッシュによる一定期間アクセスできない期間を解析するため、ＡＣＴコマンドやＰＲＥコマンド、ＲＥＦコマンドの発生回数をカウントしアクセスできない期間を計算することも一般的に行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２６６２３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、前述の波形表示による解析及び統計解析には課題がある。波形表示による解析では詳細に解析できるものの、一度に表示できる期間は基準クロックの数百サイクル程度である。もちろんズームイン、ズームアウト機能は実装されているが、数千サイクルを超える表示を行うと基準クロックサイクルが非常に細かくなり現実的に解析は難しい。実際のデジタル機器においてＤＲＡＭの性能解析を行う場合、ミクロな単位だけでなくマクロな単位で行う必要がある。例えばデジタルテレビやデジタルビデオカメラであれば３０ｆｐｓ〜１２０ｆｐｓ（Ｆｒａｍｅ  Ｐｅｒ  Ｓｅｃｏｎｄ）などの１秒間に３０〜１２０フレーム取得及び表示するのが一般的である。すなわち、１フレームは３０ｆｐｓであれば３３．３ｍｓ、１２０ｆｐｓであれば８．３３ｍｓとなる。これを現行の最新の規格であるＬＰＤＤＲ４−３２００（データレート３．２Ｇｂｐｓ）で考えると、基準クロックの１サイクルは０．６２５ｎｓとなる。１フレームは３０ｆｐｓであれば５０００万サイクル以上、１２０ｆｐｓであっても１３００万サイクル以上であり、波形表示でフレーム全体を解析対象にはできない。他方、統計解析では単位時間を調整することで解析時間によらずリード及びライトのアクセス量やページミスやリフレッシュの要因となるコマンドの発生回数及びアクセスできない期間を計算することはできる。しかしながら波形表示のような詳細な解析はできない。例えば、前述した隠ぺいされたページミスではアクセスできない期間は特定のバンクに限定され、他のバンクには影響していない。結果としてＤＲＡＭ全体では性能影響はない、もしくは一部しか影響していないが、コマンドの発生回数及びそれに基づいた計算では実際の影響を詳細解析することはできない。
【０００８】
本発明は、上記課題を鑑みてなされたものであり、サイクル数に関わらず、ＤＲＡＭの状態を効率的に解析することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、ＤＲＡＭを構成する少なくとも１つ以上のバンクの状態を遷移させるイベントを検出する検出手段と、前記検出手段が検出したイベントに基づいて、前記少なくとも１つ以上のバンクの状態を分類する第一の分類手段と、前記少なくとも１つ以上のバンクの状態に基づいて、前記ＤＲＡＭの状態を分類する第二の分類手段と、所定の単位時間に対して、前記少なくとも１つ以上のバンクの状態もしくは前記ＤＲＡＭの状態に基づく統計情報を表示させる表示手段と、を備え、前記少なくとも１つ以上のバンクの状態及び前記ＤＲＡＭの状態は、データを転送している動作状態、所定の制約によりデータの転送ができない動作不可状態、制約はないがデータの転送していない休止状態の少なくともいずれか１つであることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、サイクル数に関わらず、ＤＲＡＭの状態を効率的に解析することが出来る。
【図面の簡単な説明】
【００１１】
【図１】本発明の性能解析処理及び解析結果表示処理の全体を示す処理概念図である。
【図２】シミュレーション対象のテストベンチの構成図である。
【図３】性能解析処理及び解析結果表示処理を行うコンピュータ装置の構成図である。
【図４】ＤＤＲ３−ＳＤＲＡＭインタフェースを構成する信号線である。
【図５】ＤＤＲ３−ＳＤＲＡＭのコマンドのリストである。
【図６】第一の実施形態における検出手段１０１の出力結果の例である。
【図７】第一の実施形態におけるバンク状態分類手段１０３の処理を示すフローチャート図である。
【図８】第一の実施形態におけるコマンド間の制約を示すテーブルである。
【図９】第一の実施形態におけるＤＲＡＭ状態分類手段１０５の処理を示すフローチャート図である。
【図１０】図６の出力結果に対するバンク状態分類手段１０３及びＤＲＡＭ状態分類手段１０５の処理結果である。
【図１１】表示手段１０８によるテーブル形式の表示例である。
【図１２】表示手段１０８によるパイチャート形式の表示例である。
【図１３】表示手段１０８による積み上げ棒グラフ形式（サイクル数）の表示例である。
【図１４】表示手段１０８による積み上げ棒グラフ形式（パーセント）の表示例である。
【図１５】表示手段１０８による時系列の折れ線グラフ形式の表示例である。
【図１６】表示手段１０８による時系列の積み上げ棒グラフ形式の表示例である。
【図１７】第一の実施形態における統計処理１０７の処理を示すフローチャート図である。
【図１８】第二の実施形態におけるバンク状態分類手段１０３が分類するバンク状態の詳細分類である。
【図１９】第二の実施形態における表示手段１０８によるパイチャート形式の表示例である。
【図２０】第三の実施形態におけるシミュレーション対象のテストベンチの構成図である。
【図２１】第三の実施形態における性能解析処理及び解析結果表示処理の全体を示す処理概念図である。
【図２２】ＡＭＢＡ３インタフェースを構成する信号線である。
【図２３】第三の実施形態における関連付け手段２１０３の処理を示すフローチャート図である。
【図２４】第三の実施形態におけるマスタイベント検出手段２１０１の出力結果の例である。
【図２５】第三の実施形態におけるコマンドキューの例である。
【図２６】第三の実施形態における関連付け手段２１０３の出力結果の例である。
【図２７】第三の実施形態におけるバンク状態分類手段２１０６の処理を示すフローチャート図である。
【図２８】第三の実施形態におけるバンク状態分類手段２１０６及びＤＲＡＭ状態分類手段２１０８の処理結果である。
【図２９】ＤＤＲ３−ＳＤＲＡＭにおけるページミスによるペナルティと、それを隠ぺいする動作を示す図である。
【図３０】第三の実施形態における表示手段２１１０によるテーブル形式の表示例である。
【図３１】第三の実施形態における表示手段２１１０によるパイチャート形式の表示例である。
【図３２】第三の実施形態における表示手段２１１０による棒グラフ形式（サイクル数）の表示例である。
【図３３】第四の実施形態における性能解析処理及び解析結果表示処理の全体を示す処理概念図である。
【図３４】第五の実施形態におけるマスタ情報及びバンク状態及びＤＲＡＭ状態の波形表示例である。
【発明を実施するための形態】
【００１２】
（第一の実施形態）
第一の実施形態の表示装置（情報処理装置）を、図１から図１６を使って説明する。
【００１３】
図２は本実施形態におけるシミュレーション対象のシステムＬＳＩ及び周辺モジュールを含むテストベンチの構成図である。図２において、２００はシステムＬＳＩである。ＣＰＵ２０１はシステムＬＳＩ２００の各種制御を実行するためのものである。画像処理部２０２はシステムＬＳＩ２００内で取り扱う静止画像及び動画像データの画像処理を行う。音声処理部２０３はシステムＬＳＩ２００内で取り扱う音声データの音声処理を行う。ネットワーク処理部２０４はシステムＬＳＩ２００と外部ネットワークを介しデータ送受信を行う。ＲＯＭ２１０はＣＰＵ２０１の起動時に実行されるブートプログラムや各種データを格納するためのものであり、ＲＯＭＣ２０６を介してアクセスする。ＤＲＡＭ２０９は主にＣＰＵ２０１が処理するための制御プログラムを格納するとともに、ＣＰＵ２０１が各種制御を実行する際の作業領域を提供する。その他、画像処理部２０２が扱う静止画像及び動画像データ、音声処理部２０３が扱う音声データ、及びネットワーク処理部２０４が扱う外部通信用データが格納される。ＤＲＡＭ２０９はそれを構成する８つのバンク２２０乃至２２７を内部に備えている。バンクの番号はバンク０からバンク７がそれぞれバンク２２０乃至２２７に当たる。画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４はそれぞれのデータへＤＭＡ（Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によってアクセスする。ＤＲＡＭ２０９へのアクセスは、メモリコントローラ２０５がアクセス要求を受け制御コマンドに変換し、それをＰＨＹ２０７がアナログ信号に変換して外部に発行してアクセスを行う。具体的なアクセス方法は、背景技術に記載した通りであり割愛する。その他、画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４からＤＲＡＭへアクセスする場合も同様となる。バス２０８は、アクセス要求を発行するＣＰＵ２０１、画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４と、当該アクセス要求を受けるメモリコントローラ２０５、ＲＯＭＣ２０６を相互接続する。本実施形態においては、ＤＲＡＭ２０９はＤＤＲ３−ＳＤＲＡＭ規格に準拠するＳＤＲＡＭであるものとする。システムＬＳＩ２００とＤＲＡＭ２０９の間の制御信号にはモニタ２１１が接続されており、シミュレーション実行中に制御信号上に発生したコマンドを監視する機能を持つ。システムＬＳＩ２００、ＤＲＡＭ２０９、ＲＯＭ２１０、モニタ２１１はテストベンチ２１２の中に配置され、それぞれ信号によって接続される。
【００１４】
図３はテストベンチ２１２のシミュレーション処理を含む性能解析処理及び解析結果表示処理を行うコンピュータ装置の構成図である。図３において、ＣＰＵ３０１は、コンピュータ装置における各種制御を実行するためのものである。ＲＯＭ３０２は、コンピュータ装置の起動時に実行されるブートプログラムや各種データを格納するためのものである。ＲＡＭ３０３は、ＣＰＵ３０１が処理するための制御プログラムを格納するとともに、ＣＰＵ３０１が各種制御を実行する際の作業領域を提供する。キーボード３０４及びマウス３０５は、ユーザによる各種入力操作環境を提供するためのものである。３０６はＨＤＤ（ハードディスク）であり各種データを格納する。
【００１５】
３０７はディスプレイであり処理結果等をユーザに対して表示する。本実施形態では特にシミュレーション結果、波形、及び性能解析処理結果を表示する。ネットワークインタフェース３０８は、外部ネットワークとＬＡＮケーブルを介した通信を可能とする。バス３０９は、上記の各構成を接続するためのものである。なお、ＣＰＵ、ＲＯＭ、バスは前記システムＬＳＩ２００内にも存在しているが、これらは別物であることを注記しておく。
【００１６】
ここから、本実施形態の性能解析及び解析結果表示処理について説明する。性能解析処理及び解析結果表示処理は前記コンピュータ装置上で実行される。図１は性能解析処理及び解析結果表示処理の全体を示す処理概念図である。図１において、１０１は検出手段であり、性能解析対象であるＤＲＡＭ２０９を構成するバンク２２０乃至２２７の状態遷移を発生させるイベントを検出する。イベントはより具体的にはシステムＬＳＩ２００内のメモリコントローラ２０５が発行するＤＲＡＭ２０９を制御するためのコマンドである。検出手段によって検出したイベント情報１０２は一時的にＨＤＤ３０６へ格納され、次のバンク状態分類手段１０３に入力される。バンク状態分類手段１０３は、発生したイベントに基づいてバンク２２０乃至２２７の状態を遷移させる。これにより、時系列にバンク２２０乃至２２７の状態が決定する。バンク状態分類手段１０３によって分類したバンク２２０乃至２２７のバンク状態情報１０４はイベント情報１０２と同様にＨＤＤ３０６へ格納され、次のＤＲＡＭ状態分類手段１０５に入力される。ＤＲＡＭ状態分類手段１０５は、同一時刻のバンク２２０乃至２２７の状態に基づいてＤＲＡＭ２０９の状態を分類する。これにより、時系列にＤＲＡＭ２０９の状態が決定する。ＤＲＡＭ状態分類手段１０５によって分類したＤＲＡＭ２０９のＤＲＡＭ状態情報１０６も同様にＨＤＤ３０６へ格納される。ＤＲＡＭ２０９のＤＲＡＭ状態情報１０６及びバンク２２０乃至２２７のバンク状態情報１０４は統計処理１０７を介して表示手段１０８に入力される。統計処理１０７ではバンク状態情報１０４、及びＤＲＡＭ状態情報１０６に対して、各状態の発生回数及び発生クロックサイクル数を所定時間単位で統計解析する。表示手段１０８は、ＤＲＡＭ２０９及びバンク２２０乃至２２７それぞれに対し各状態の発生回数、発生クロックサイクル数をカウントし性能解析結果としてディスプレイ３０７へ表示する。以上が本実施形態の性能解析処理及び解析結果表示処理の全体フローである。以下、図１の性能解析処理及び解析結果表示処理における各要素について詳細に説明する。
【００１７】
検出手段１０１は前記コンピュータ装置によるテストベンチ２１２のシミュレーション処理におけるモニタ２１１によって実現する。コンピュータ装置によるシミュレーション処理は、ＣＰＵ３０１がＲＡＭ３０３をワーク領域として使用し、ＨＤＤ３０６に格納されているシミュレーションソフトウェアを実行することで実現する。従来技術にも記載した通り、シミュレーションソフトウェアには代表的なものとしてＩｎｃｉｓｉｖｅ（Ｃａｄｅｎｃｅ社の登録商標）、ＶＣＳ（Ｓｙｎｏｐｓｙｓ社の登録商標）、Ｑｕｅｓｔａｓｉｍ（Ｍｅｎｔｏｒ社の登録商標）などがある。これらのシミュレーションソフトウェアにより、システムＬＳＩ２００が実際に動作するのと同じ動作をシミュレーションし、その結果がＨＤＤ３０６に格納される。具体的にはシミュレーションソフトウェアが出力するシミュレーションログファイル、波形ファイル、及びモニタ２１１が出力するイベント情報などである。
【００１８】
モニタ２１１によるシステムＬＳＩ２００とＤＲＡＭ２０９間の信号線の監視、すなわち本実施形態の検出手段１０１について説明する。モニタ２１１は、シミュレーション処理においてシステムＬＳＩ２００とＤＲＡＭ２０９間の信号線を監視する。具体的には、図４に示すＤＤＲ３−ＳＤＲＡＭインタフェースを構成する信号線である。４０１はクロックであり、全ての信号の基準となる。すなわちクロック４０１の立上り（０→１への変化）のタイミングで、クロック４０１以外の信号の状態を評価しいずれのコマンドが発行されているかを検出する。具体的には、図５に示すテーブルに基づいてコマンドを検出する。図５において、５０３乃至５１３は図４に示す信号線の値を示している。５０４乃至５１３は各信号の所定のクロック４０１の立上りタイミングにおける状態を示しているが、５０３だけは該タイミングの一つ前のクロック４０１の立上りタイミングにおける状態を示しており注意が必要である。図５においてＬはＬｏｗ＝０を意味し、ＨはＨｉｇｈ＝１を意味する。ＸはＤｏｎ’ｔ  Ｃａｒｅであり０／１いずれの値であっても良い。ＲＦＵはＲｅｓｅｒｖｅｄ  ｆｏｒ  Ｆｕｔｕｒｅ  Ｕｓｅの略でＸと同様にいずれの値であっても良い。ＶはＶａｌｉｄであり対象のコマンドで該当の信号が所望の意味を持つことを意味する。具体的な意味は本発明の説明に関係しないため割愛する。ＢＡ、ＲＡ、ＣＡはそれぞれバンクアドレス、行アドレス、列アドレスを意味しており、これら以外の信号によってコマンドが検出されたときにアドレスとして判定するという意味となる。５０１及び５０２はそれぞれ、５０３乃至５１３の各信号がその状態に一致した場合に対応するコマンドの意味及びコマンド表記を示している。ＡＣＴコマンドを例にして検出手段について説明する。５０３に基づいてＣＫＥ信号が一つ前のクロック４０１の立上りタイミングでＨであるかを判定する。次に５０４に基づいてＣＫＥ信号が現在のクロック４０１の立上りタイミングでＨであるかを判定する。同様にして、ＣＳ＝Ｌ、ＲＡＳ＝Ｌ、ＣＡＳ＝Ｈ、ＷＥ＝Ｈを判定し、これらの条件が全て合致した場合にＡＣＴコマンドを検出する。このときのＢＡ信号はバンクアドレス、Ａ信号はＲＡすなわち列アドレスを意味している。ＡＣＴコマンド以外も同じように信号線の値に応じて図５のテーブルに基づいて判定し、発行されているコマンドを検出する。特殊なコマンドであるＮＯＰコマンド５４０を更に説明する。ＮＯＰコマンド５４０は、ＣＫＥ＝Ｈ→Ｈ（一つ前のクロックの立上りがＨで現在のクロックの立上りがＨを意味する）、ＣＳ＝Ｌ、ＲＡＳ／ＣＡＳ／ＷＥがいずれもＨの場合に検出する。当該ＮＯＰコマンド５４０はＮｏ  Ｏｐｅｒａｔｉｏｎの略で、コマンドが発生していないことを意味する。本実施形態においてはＮＯＰコマンドは検出対象外とし、これ以外のコマンドを検出対象とする。以上が検出手段１０１の説明となる。本実施形態においては、ＤＤＲ３−ＳＤＲＡＭの規格に基づいたコマンドを検出することを例に検出手段を説明したが、規格の種類に限定することはない。すなわち、他のＤＤＲ２、ＤＤＲ４、ＤＤＲ５、ＬＰＤＤＲ２、ＬＰＤＤＲ３、ＬＰＤＤＲ４であってもコマンドは同様に��号線の値に基づいて定義されているためこれをイベントとして検出手段を実現することができる。更に検出手段が検出するイベントはコマンドに限定されない。検出手段はシステムＬＳＩ２００とＤＲＡＭ２０９間の信号線を監視することでイベントを検出するものであり、監視対象の信号の値が規格上で定義されているかいないかに関わらず、信号線のいずれの変化であってもイベントとして定義することは可能である。
【００１９】
検出手段１０１を実現するモニタ２１１によって、シミュレーション期間中に検出されたコマンドをログ情報として出力したものが、前記イベント情報１０２となる。図６はモニタ２１１によって出力されたイベント情報１０２の内容を示す例である。図６において、６０１は発生時刻でありシミュレーション上の経過時刻である。本実施形態においては単位はｐｓ（ピコ秒＝０．０００００００００００１秒）とする。６０２はコマンドであり、前記検出手段によって検出されたコマンドを示す。６０３、６０４、６０５はそれぞれバンクアドレス、行アドレス、列アドレスであり、各コマンドを検出した際のＢＡ及びＡ信号によって示される内容となる。コマンドによって、バンクアドレス、行アドレス、列アドレスそれぞれ示されない場合と示される場合があるため、イベント情報１０２内でもそれに基づいて表示される。
【００２０】
次のバンク状態分類手段１０３自体の処理内容を説明する前に、バンク状態分類手段１０３によって分類するバンク２２０乃至２２７のバンク状態の種類を先に説明する。本実施形態では以下の３つのバンク状態を定義する。
【００２１】
状態１  動作状態
状態２  休止状態
状態３  動作不可状態
動作状態は、対象のバンクへリードもしくはライトのデータアクセスを実行している状態である。具体的には、ＲＤコマンド発行後の４クロックサイクル及びＷＲコマンド発行後の４クロックサイクル期間を動作状態とする。ＤＤＲ３−ＳＤＲＡＭの規格上はデータを４回連続アクセスする４ビートアクセスと８回連続アクセスする８ビートアクセスがある。連続アクセスは、クロックの立上りと立下りで１回ずつアクセスを行うため、４ビートアクセスでは２クロックサイクル、８ビートアクセスでは４クロックサイクル消費する。本実施形態では、８ビートアクセスのみが発行されることを前提とし、ＲＤ及びＷＲコマンド発行後に４クロックサイクル分を動作状態としている。リードを連続して行う場合、規格上８ビートアクセスでは４クロックサイクル後に次のＲＤコマンドを発行することができる。すなわち、４クロックサイクルの動作状態が連続して発生することとなる。これはライトを連続して行う場合も同様である。
【００２２】
動作不可状態とは、所定の制約によりバンクへのリードもしくはライトのデータアクセスを行うことができずに待っている状態である。例えば、ＤＤＲ３−ＳＤＲＡＭ規格上ではＲＥＦ（リフレッシュ）コマンド発行後ｔＲＥＦパラメータで定義される時間分はいずれのコマンドも発行することができない。これは従来技術でも説明した通り、リフレッシュ動作に伴って必ず発生する制約であり、ＤＲＡＭの種類を問わず適用される。本実施形態においては、ＲＥＦコマンド発行後のｔＲＥＦパラメータ期間分を動作不可状態の一つと定義する。このときのｔＲＥＦパラメータは５００クロックサイクルであるものとする。ただし、ＲＥＦコマンドはＲＤもしくはＷＲコマンドの発行を待たせた場合のみ動作不可状態と定義するという方法もあり得る。すなわち、ＲＥＦコマンド発行後ｔＲＥＦパラメータ期間後すぐにＡＣＴコマンドが発行された場合にのみ動作不可状態と定義するという方法である。本実施形態ではＡＣＴコマンドの有無に関わらず動作不可状態と定義するが、ＡＣＴコマンドが発生した場合のみ動作不可状態と定義する場合でも本発明を適用できることは言うまでもない。また、ＤＤＲ３−ＳＤＲＡＭ規格上ではＡＣＴコマンド発行後、ＲＤもしくはＷＲコマンドを発行するまでにｔＲＣＤパラメータで定義される時間分空けなければならない。これと同じように通常のデータアクセスで一般的に発生するＡＣＴ、ＰＲＥ、ＲＤ、ＷＲコマンド間には図８のテーブルで定義される制約があるものとする。ＤＤＲ３−ＳＤＲＡＭ規格上は図５に示した通り、他にも多くのコマンドがありそのコマンド間にも制約がある。しかしながら本実施形態では図８のテーブルに示した制約のみがあることを前提とし、各コマンド間が制約されたクロックサイクル分空いている場合、この期間を動作不可期間の一つと定義する。ただし、本前提は本発明の適用範囲を限定するものではなく、図８に示したコマンド間以外にも制約がある場合でも、その制約が所定のコマンド発行後の一定期間、及び所定のコマンド間の一定期間として定義される場合は本発明できることは言うまでもない。更に、同様に図８には示していないが、所定の３つ以上のコマンド列によって定義される制約があった場合でもそれを条件分岐で判定できる限り本発明を適用できる。例えば、ＰＲＥコマンド、ＡＣＴコマンド、ＲＤコマンドが順番に発生した場合に、ＰＲＥコマンドからＲＤコマンドまでをページミスによる制約期間と判定することもできる。同様にＲＥＦコマンド、ＡＣＴコマンド、ＷＲコマンドが順番に発生した場合に、ＲＥＦコマンドからＷＲコマンドまでをリフレッシュ及びページオープンによる制約期間と判定することもできる。ところで、所定の２つのコマンドが連続して発生した場合に、後続のコマンドが図８に示した制約期間を超えて発行される場合がある。例えば、ＡＣＴコマンド後にＲＤコマンドが発行される場合、図８に示される制約期間分のクロックサイクルあける必要があるが、制約期間以上のクロックサイクル空いて発行されたというケースである。この場合は、ＲＤコマンドは制約によって待たされた訳ではなく、次のアクセス要求がないために発行されなかったと判断し、本実施形態においては動作不可状態とはみなさないものとする。ただし、上述のＲＥＦ（リフレッシュ）コマンドと同様にＡＣＴコマンド発行後、ＲＤもしくはＷＲコマンドの有無に関わらず制約期間分を動作不可状態と定義することも可能である。いずれの場合でも、条件分岐を明確に定義できるならば本発明を適用できる。以上が動作不可状態の定義であるが、いずれかのコマンド後の一定期間、いずれか２つのコマンド間、いずれかの３つ上のコマンド列をどのように動作不可状態と定義するかは、本発明の前提とはなり得ない。前記検出手段によって検出されたイベント発生に基づいて、動作不可状態をサイクル数（もしくはそれに換算できる数値制約）によって定義できる場合は、その定義内容に関わらず本発明を適用できることは言うまでもない。また、本実施形態ではＲＥＦコマンド後の一定期間コマンドを発行できない期間をｔＲＥＦパラメータで定義したが、メモリコントローラ２０５はＲＥＦコマンド後に発行しない期間をｔＲＥＦパラメータに関係なく制御することが可能である。例えば、ｔＲＥＦパラメータ以下に設定することは規格違反となるためできないが、ｔＲＥＦパラメータ以上のクロックサイクルを空けるように制御することは可能である。この場合は、メモリコントローラ２０５に設定されたサイクル数を基に動作不可状態を定義することも可能である。
【００２３】
最後に休止状態について説明する。休止状態は前述した動作状態、及び動作不可状態のいずれでもない状態を休止状態と定義する。本実施形態においては、動作状態、動作不可状態を定義した後に、休止状態を定義したがこの相関を入れ替えて定義しても良い。すなわち、動作状態、休止状態を先に定義し、それ以外を動作不可状態とするなどである。
【００２４】
ここから図７を用いてバンク状態分類手段１０３について説明する。バンク状態分類手段１０３はイベント情報１０２を入力とし、前記シミュレーション処理後、別の処理として前記コンピュータ装置上で実行する。バンク状態分類手段１０３では２つのイベント間のクロックサイクル数を確認して動作不可状態を判断する場合がある。そのため、イベント発生時にそれ以降の状態を決定するのではなく、イベント発生時に一つ前のイベントから当該イベントまでの状態が決定する仕組みとなっている。図７はバンク２２０乃至２２７の状態を分類するフローチャート図である。ただし、本フローチャートは各バンクに対して独立に実行されるものとする。すなわち、前記コンピュータ装置上では図７のフローチャートに示す処理がバンク数である８個分実行されるという意味である。いずれのバンクにも対応できるフローチャートであるため、ステップ７０１の引数入力においてバンク番号を受け取っており、これにより対象のバンクを識別する。図７において、ステップ７０１でバンク番号を引数として受け取る。ステップ７０２、ステップ７０３で本処理で使用する変数を初期化する。ステップ７０２では状態確定時刻（ＦＩＸ＿ＴＩＭＥ）をリセットする。具体的にはＦＩＸ＿ＴＩＭＥに０を設定する。状態確定時刻ＦＩＸ＿ＴＩＭＥの使い方については後述するが、本値はその時刻まではバンクの状態が決定していることを意味する。ステップ７０３では一つ前のコマンド発生時刻と種別をリセットする。具体的には引数のバンク番号が示すバンクに対する一つ前のコマンドの発生時刻を示すＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥに０を設定し、同種別を示すＳＡＭＥ＿ＰＲＥ＿ＣＭＤに未定義を意味するＵＮＤＥＦを設定する。更に、引数のバンク番号以外のバンクに対する一つ前のコマンドの発生時刻を示すＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥに０を設定し、同種別を示すＤＩＦＦ＿ＰＲＥ＿ＣＭＤに未定義を意味するＵＮＤＥＦを設定する。次にステップ７０４で入力となるイベント情報１０２から１つのイベント情報エントリを読み込む。これは、図６のイベント情報１０２の例における１行分に相当する。ここからステップ７０７乃至ステップ７２２によって、バンク状態を分類する。分類するバンク状態は前述した通り、動作状態、動作不可状態、休止状態の３つの状態である。
【００２５】
まずステップ７０７で、現在のイベント情報エントリのバンクアドレス６０３が引数のバンク番号と一致するかを判定する。一致しない場合は現在のイベント情報エントリでは対象のバンクの状態遷移は発生しない。よってステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤとＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥを現在のイベント情報エントリのコマンド６０２と発生時刻６０１に基づいて更新する。すなわち、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤに現在のイベント情報エントリのコマンド６０２を設定し、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥに現在のイベント情報エントリの発生時刻６０１を設定する。一方、現在のイベント情報エントリのバンクアドレス６０３が引数のバンク番号と一致した場合はステップ７０８へ進む。ステップ７０８では対象のバンクに対する一つ前のコマンド、すなわちＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドもしくはＷＲコマンドであるかを判定する。初めてステップ７０８の分岐で判定を行う場合はＳＡＭＥ＿ＰＲＥ＿ＣＭＤにはＵＮＤＥＦが設定されているため、必ずＮｏと判定される。ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドもしくはＷＲコマンドであった場合、ステップ７０９でＦＩＸ＿ＴＩＭＥから４クロックサイクル分を動作状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルである４サイクルと合わせてバンク状態情報１０４として出力する。その後ステップ７１０でＦＩＸ＿ＴＩＭＥに４クロックサイクル加算し状態が確定した時刻を更新する。一方、ステップ７０８でＮｏと判定された場合、ステップ７１１で対象のバンクに対する一つ前のコマンド、すなわちＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＥＦコマンドであるかを判定する。初めてステップ７１１の分岐で判定を行う場合は、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤにはＵＮＤＥＦが設定されているため、必ずＮｏと判定される。ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＥＦコマンドであった場合、ステップ７１２でＦＩＸ＿ＴＩＭＥから５００クロックサイクル分を動作不可状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルである５００サイクルと合わせてバンク状態情報１０４として出力する。その後ステップ７１３でＦＩＸ＿ＴＩＭＥに５００クロックサイクル加算し状態が確定した時刻を更新する。ステップ７１０、ステップ７１３を処理した場合、及びステップ７１１でＮｏと判定された場合は、ステップ７１４に進む。ステップ７１４では対象バンクに対する一つ前のコマンド、すなわちＳＡＭＥ＿ＰＲＥ＿ＣＭＤと、現在のイベント情報エントリのコマンド６０２を用いて、図８のテーブルに合致する条件に設定されているサイクルと一致するかを判定する。例えば、現在のイベント情報エントリのコマンド６０２がＡＣＴコマンドで、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＰＲＥコマンドである場合、図８のテーブルに基づくと４０サイクルが設定されている。この場合、一つ前のＰＲＥコマンドの発生時刻であるＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥから、対象のＡＣＴコマンドの発生時刻、すなわち現在のイベント情報エントリの発生時刻６０１までの期間が３０サイクルに一致するかを判定することとなる。他のコマンドでも同様に図８のテーブルに基づいて判定する。図８のテーブルでクロックサイクル数が設定されていない場合は制約がないことを意味するためＮｏと判定される。判定の結果がＹｅｓの場合は、ステップ７１５でＦＩＸ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間を動作不可状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルと合わせてバンク状態情報１０４として出力する。このとき、対象バンクに対する一つ前のコマンドの発生時刻であるＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間ではないことに注意が必要である。この理由を、現在のイベント情報エントリのコマンド６０２がＰＲＥコマンドで、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドの場合を例に説明する。本例では、図８のテーブルに基づくと５０サイクルが設定されている。そのため、ＲＤコマンドの発生時刻であるＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥから、現在のＰＲＥコマンドの発生時刻６０１までの期間が５０サイクルであるかを判定する。このとき、ＦＩＸ＿ＴＩＭＥとＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥは時刻が一致しない。なぜならば、ＦＩＸ＿ＴＩＭＥはＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドであるため、ステップ７１０にて既に４クロックサイクル加算されているためである。そのため、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの５０サイクルを動作不可状態と分類してしまうと、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの４クロックサイクルを２重に分類することとなる。これを避けるため、ＦＩＸ＿ＴＩＭＥからの差引き４６クロックサイクルを動作不可状態と分類する。さて、ステップ７１５で動作不可状態と分類した後、続くステップ７１６でＦＩＸ＿ＴＩＭＥに現在のイベント情報エントリの発生時刻６０１までの差分を加算し、状態が確定した時刻を更新する。結果として、ＦＩＸ＿ＴＩＭＥ＝現在のイベント情報エントリの発生時刻６０１となる。一方、ステップ７１４で図８のテーブルに制約が設定されていない、もしくは設定されている制約とＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間が一致しなかった場合、ステップ７１７へ進む。ステップ７１７からはステップ７１４からステップ７１６で対象バンクに対する一つ前のコマンドからの制約を確認したのと同様に、対象のバンク以外に対する一つ前のコマンドからの制約を確認する。制約の確認を行う前に、対象のバンク以外に対する一つ前のコマンドの発生時刻、すなわちＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥがＦＩＸ＿ＴＩＭＥより後になっていないが確認する。本フローチャートでは、ステップ７０７で分岐したように現在のイベント情報エントリのコマンド６０２が対象のバンクの場合のみバンクの状態遷移を確認しバンクの状態を分類する。結果として、対象のバンクに対するコマンドの発生時刻であるＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥは、必ずステップ７０７の時点でＦＩＸ＿ＴＩＭＥと一致する。またその後の処理でもＦＩＸ＿ＴＩＭＥが加算される可能性しかないため、常にＦＩＸ＿ＴＩＭＥ＞＝ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥが成り立っていた。ところが、現在のイベント情報エントリのコマンド６０２が対象のバンク以外に対する一つ前のコマンドである場合はステップ７０７で分岐し状態遷移が行われない。結果として、ＦＩＸ＿ＴＩＭＥ＜ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥが起こり得る。当該条件（ＦＩＸ＿ＴＩＭＥ＜ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ）が成り立つ場合は、対象のバンク以外に対する一つ前のコマンドからの制約を分析する前に、当該コマンドまでの期間を休止状態に設定する必要がある。ステップ７１８では、ＦＩＸ＿ＴＩＭＥから対象のバンク以外に対する一つ前のコマンドの発生時刻、すなわちＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥまでの期間を休止状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルと合わせてバンク状態情報１０４として出力する。続いてステップ７１９で、ＦＩＸ＿ＴＩＭＥにＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥまでの差分を加算し、状態が確定した時間を進める。結果として、ＦＩＸ＿ＴＩＭＥ＝ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥとなる。さて、ステップ７１７でＦＩＸ＿ＴＩＭＥ＜ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥが成り立たなかった場合、及びステップ７１９を処理した後はステップ７２０へ進む。ステップ７２０では対象バンク以外に対する一つ前のコマンド、すなわちＤＩＦＦ＿ＰＲＥ＿ＣＭＤと、現在のイベント情報エントリのコマンド６０２を用いて、図８のテーブルに合致する条件に設定されているサイクルと一致するかを判定する。例えば、現在のイベント情報エントリのコマンド６０２がＷＲコマンドで、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤがＲＤコマンドである場合、図８のテーブルに基づくと１５サイクルが設定されている。この場合、ＲＤコマンドの発生時刻であるＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥから、対象のＷＲコマンドの発生時刻、すなわち現在のイベント情報エントリの発生時刻６０１までの期間が１５サイクルに一致するかを判定することとなる。他のコマンドでも同様に図８のテーブルに基づいて判定する。図８のテーブルでクロックサイクル数が設定されていない場合は制約がないことを意味するためＮｏと判定される。判定の結果がＹｅｓの場合は、ステップ７２１でＦＩＸ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間を動作不可状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルと合わせてバンク状態情報１０４として出力する。このとき、対象のバンク以外に対する一つ前のコマンドの発生時刻であるＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間ではないことに注意が必要である。この理由はステップ７１５の説明で前述したのと同じである。さて、ステップ７２１で動作不可状態と分類した後、続くステップ７２２でＦＩＸ＿ＴＩＭＥに現在のイベント情報エントリの発生時刻６０１までの差分を加算し、状態が確定した時刻を更新する。結果として、ＦＩＸ＿ＴＩＭＥ＝現在のイベント情報エントリの発生時刻６０１となる。一方、ステップ７２０で図８のテーブルに制約が設定されていない、もしくは設定されている制約とＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間が一致しなかった場合、ステップ７２３へ進む。ステップ７２３では、ＦＩＸ＿ＴＩＭＥから現在のイベント情報エントリの発生時刻６０１までの期間を休止状態と分類する。分類した結果は、発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクルと合わせてバンク状態情報１０４として出力する。続くステップ７２４ではＦＩＸ＿ＴＩＭＥに現在のイベント情報エントリの発生時刻６０１までの差分を加算し、状態が確定した時刻を更新する。結果として、ＦＩＸ＿ＴＩＭＥ＝現在のイベント情報エントリの発生時刻６０１となる。さて、ステップ７１６、ステップ７２２、もしくはステップ７２４を処理した場合は、ステップ７２５へ進む。ステップ７２５では、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤとＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥを現在のイベント情報エントリのコマンド６０２と発生時刻６０１に基づいて更新する。すなわち、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤに現在のイベント情報エントリのコマンド６０２を設定し、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥに現在のイベント情報エントリの発生時刻６０１を設定する。最後にステップ７２６で入力であるイベント情報１０２に次のイベント情報エントリがあるか否かを判定し、ある場合にはステップ７０４に戻って処理を繰り返す。一方、イベント情報エントリがない場合は処理を終了する。以上が本実施形態におけるバンク状態分類手段１０３の内容である。本実施形態では、各コマンド間の制約において、同時に複数の制約が発生しない前提で説明をした。しかしながら、実際には処理対象のイベント情報エントリが示すコマンドに対し、それより以前に発行された複数のコマンドから同時に制約がかかるケースが起こり得る。例えば、ＡＣＴコマンド、ＲＤコマンド、ＰＲＥコマンドが順番に発行されたとする。この場合、最後のＰＲＥコマンドを処理する際、ＡＣＴコマンドの間にはｔＲＡＳパラメータで定義される制約がある。同様にＲＤコマンドとの間にも別の制約が存在する。多くの場合はいずれか一方の制約によりＰＲＥコマンドのタイミングが決定するが、場合によっては同時に制約がかかる場合もあり得る。いずれにしても、本実施形態のバンク状態分類手段１０３では直前に発行された１つのコマンドのみを履歴（ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ及びＳＡＭＥ＿ＰＲＥ＿ＣＭＤ）として情報を残しているのみである。よって、上記例ではＡＣＴコマンドからの制約は判定することができない。しかしながら、本前提は何ら本発明を制限するものではない。すなわち、履歴を少なくとも２つ以上持ち、各々の制約をステップ７１４にてそれぞれ判定
すれば上記の例に対応できる。それ以外にも解析対象のＳＤＲＡＭの規格やメモリコントローラ２０５の制約によって発生し得る制約をリストアップし、それらすべてに対応可能な分の履歴を残すように変更すれば対応できない制約は存在しえない。
【００２６】
以下、バンク２２０すなわちバンク番号０に対して、図６のイベント情報エントリ６１０乃至６３８を実際の入力としたときを例としてバンク状態分類手段１０３の処理を具体的に説明する。本例では１クロックサイクル＝１０００ｐｓを前提とする。図１０の１００１乃至１０１６はイベント情報エントリ６１０乃至６３８を入力した場合の処理結果を示している。以下処理結果を参照しながらイベント情報エントリ６１０乃至６３８の処理を説明する。まずイベント情報エントリの入力前に、ステップ７０１でバンク番号０が入力される。ステップ７０２、７０３ではＦＩＸ＿ＴＩＭＥ＝０、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝０、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＵＮＤＥＦ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝０、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＵＮＤＥＦがそれぞれリセットされる。次にステップ７０４でイベント情報エントリ６１０を読み込む。イベント情報エントリのバンクアドレス６０３は０となっており、引数のバンク番号と一致する。よって、ステップ７０７ではＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤはＵＮＤＥＦのため、ステップ７０８、ステップ７１１、ステップ７１４ではいずれもＮｏと判定される。更にこの時点ではＦＩＸ＿ＴＩＭＥ＝０、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝０、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＵＮＤＥＦのためステップ７１７、ステップ７２０ではいずれもＮｏと判定される。その結果、ステップ７２３でＦＩＸ＿ＴＩＭＥ＝０から現在のイベント情報エントリ６１０の発生時刻１０００までの１クロックサイクル分を休止状態に分類する。続いてステップ７２４でＦＩＸ＿ＴＩＭＥを１０００に設定する。図１０においては、１００１の休止状態、１サイクルが確定したこととなり、その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝１０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００２７】
次にイベント情報エントリ６１１を読み出し、その処理に移る。イベント情報エントリ６１１のバンクアドレス６０３は１となっており引数のバンク番号と一致しない。よって、ステップ７０７でＮｏと判定される。この場合はステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝５０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００２８】
イベント情報エントリ６１２の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤはＡＣＴコマンドであるため、ステップ７０８、ステップ７１１はいずれもＮｏと判定される。ステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴコマンド、現在のイベント情報エントリ６１２のコマンド６０２がＲＤコマンドであるため３０サイクルが該当する。一方、現在のイベント情報エントリ６１２の発生時刻６０１は３１０００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は３１０００−１０００＝３００００となり、３０クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝１０００から現在のイベント情報エントリ６１２の発生時刻６０１の３１０００までの３０クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを３１０００に設定する。図１０においては、１００２の動作不可状態、３０サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝３１０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００２９】
イベント情報エントリ６１３の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの３１０００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを３５０００に設定する。その後のステップ７１４ではＮｏと判定される。更にこの時点ではＦＩＸ＿ＴＩＭＥ＝３５０００、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝５０００、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴのためステップ７１７、ステップ７２０ではいずれもＮｏと判定される。その結果、ステップ７２３でＦＩＸ＿ＴＩＭＥ＝３５０００から現在のイベント情報エントリ６１３の発生時刻６０１の３５０００までを休止状態に分類しようとするが、差分は０のため結局分類は行われない。そのため、ステップ７２４でもＦＩＸ＿ＴＩＭＥ＝３５０００は現在のイベント情報エントリ６１３の発生時刻６０１の３５０００と一致するため実質更新はされない。図１０においては、１００３の動作状態、４サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝３５０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３０】
イベント情報エントリ６１４の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの３５０００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを３９０００に設定する。その後のステップ７１４ではＮｏと判定される。更にこの時点ではＦＩＸ＿ＴＩＭＥ＝３９０００、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝５０００、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴのためステップ７１７、ステップ７２０ではいずれもＮｏと判定される。その結果、ステップ７２３ではイベント情報エントリ６１３の場合と異なり、ＦＩＸ＿ＴＩＭＥ＝３９０００から現在のイベント情報エントリ６１４の発生時刻６０１の４００００までの１クロックサイクル分を休止状態に分類する。続いてステップ７２４でＦＩＸ＿ＴＩＭＥを４００００に設定する。図１０においては、１００４の動作状態、４サイクル、及び１００５の休止状態、１サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝４００００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３１】
ここからイベント情報エントリ６１５乃至６２０の処理では、バンクアドレス６０３は１となっており引数のバンク番号と一致しない。よって、ステップ７０７でＮｏと判定される。この場合はステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥを更新するだけで処理を終える。イベント情報エントリ６２０の処理終了時点では、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝８９０００となる。
【００３２】
イベント情報エントリ６２１の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの４００００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを４４０００に設定する。その後のステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンド、現在のイベント情報エントリ６２１のコマンド６０２がＰＲＥコマンドであり５０サイクルが該当する。一方、現在のイベント情報エントリ６２１の発生時刻６０１は９００００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は９００００−４００００＝５００００となり、５０クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝４４０００から現在のイベント情報エントリ６２１の発生時刻６０１の９００００までの４６クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを９００００に設定する。図１０においては、１００６の動作状態、４サイクル、及び１００７の動作不可状態、４６サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＰＲＥ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝９００００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３３】
ここからイベント情報エントリ６２２乃至６３１の処理では、バンクアドレス６０３は１となっており引数のバンク番号と一致しない。よって、ステップ７０７でＮｏと判定される。この場合はステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥを更新するだけで処理を終える。イベント情報エントリ６３１の処理終了時点では、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１２９０００となる。
【００３４】
イベント情報エントリ６３２の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＰＲＥコマンドのため、ステップ７０８、ステップ７１１はいずれもＮｏと判定される。ステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＰＲＥコマンド、現在のイベント情報エントリ６３２のコマンド６０２がＡＣＴコマンドであり４０サイクルが該当する。一方、現在のイベント情報エントリ６３２の発生時刻６０１は１３００００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は１３００００−９００００＝４００００となり、４０クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝９００００から現在のイベント情報エントリ６３２の発生時刻６０１の１３００００までの４０クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを１３００００に設定する。図１０においては、１００８の動作不可状態、４０サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝１３００００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３５】
イベント情報エントリ６３３の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴコマンドのため、ステップ７０８、ステップ７１１はいずれもＮｏと判定される。ステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴコマンド、現在のイベント情報エントリ６３３のコマンド６０２がＷＲコマンドであり３０サイクルが該当する。一方、現在のイベント情報エントリ６３３の発生時刻６０１は２０００００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は２０００００−１３００００＝７００００となり、７０クロックサイクルであると分かる。結果一致しないため、ステップ７１４の判定はＮｏとなる。更にこの時点ではＦＩＸ＿ＴＩＭＥ＝１３００００、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１２９０００、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤのためステップ７１７、ステップ７２０ではいずれもＮｏと判定される。その結果、ステップ７２３でＦＩＸ＿ＴＩＭＥ＝１３００００から現在のイベント情報エントリ６３３の発生時刻６０１の２０００００までの７０クロックサイクル分を休止状態に分類する。続いてステップ７２４でＦＩＸ＿ＴＩＭＥを２０００００に設定する。図１０においては、１００９の休止状態、７０サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝２０００００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３６】
イベント情報エントリ６３４の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの２０００００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを２０４０００に設定する。その後のステップ７１４ではＮｏと判定される。更にこの時点ではＦＩＸ＿ＴＩＭＥ＝２０４０００、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１２９０００、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤのためステップ７１７、ステップ７２０ではいずれもＮｏと判定される。その結果、ステップ７２３でＦＩＸ＿ＴＩＭＥ＝２０４０００から現在のイベント情報エントリ６３４の発生時刻６０１の２０４０００までを休止状態に分類しようとするが、差分は０のため結局分類は行われない。そのため、ステップ７２４でもＦＩＸ＿ＴＩＭＥ＝２０４０００は現在のイベント情報エントリ６３４の発生時刻６０１の２０４０００と一致するため実質更新はされない。図１０においては、１０１０の動作状態、４サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝２０４０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３７】
イベント情報エントリ６３５の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの２０４０００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを２０８０００に設定する。その後のステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲコマンド、現在のイベント情報エントリ６３５のコマンド６０２がＲＤコマンドであり１０サイクルが該当する。一方、現在のイベント情報エントリ６３５の発生時刻６０１は２１４０００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は２１４０００−２０４０００＝１００００となり、１０クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝２０８００００から現在のイベント情報エントリ６３５の発生時刻６０１の２１４０００までの６クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを２１４０００に設定する。図１０においては、１０１１の動作状態、４サイクル、及び１０１２の動作不可状態、６サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝２１４０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３８】
イベント情報エントリ６３６の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０８でＦＩＸ＿ＴＩＭＥの２１４０００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを２１８０００に設定する。その後のステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンド、現在のイベント情報エントリ６３６のコマンド６０２がＷＲコマンドであり１５サイクルが該当する。一方、現在のイベント情報エントリ６３６の発生時刻６０１は２２９０００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は２２９０００−２１４０００＝１５０００となり、１５クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝２１８００００から現在のイベント情報エントリ６３６の発生時刻６０１の２２９０００までの１１クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを２２９０００に設定する。図１０においては、１０１３の動作状態、４サイクル、及び１０１４の動作不可状態、１１サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝２２９０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００３９】
イベント情報エントリ６３７の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致する。よって、ステップ７０７でＹｅｓと判定される。この時点のＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲコマンドのため、ステップ７０８でＹｅｓと判定される。これに伴い、ステップ７０９でＦＩＸ＿ＴＩＭＥの２２９０００から４クロックサイクル分を動作状態に分類する。続いてステップ７１０でＦＩＸ＿ＴＩＭＥを２３３０００に設定する。その後のステップ７１４では図８のテーブルにおいて、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲコマンド、現在のイベント情報エントリ６３７のコマンド６０２がＷＲコマンドであり６０サイクルが該当する。一方、現在のイベント情報エントリ６３７の発生時刻６０１は２８９０００のためＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥからの期間は２８９０００−２２９０００＝６００００となり、６０クロックサイクルであると分かる。結果一致するため、ステップ７１４の判定はＹｅｓとなり、ステップ７１５でＦＩＸ＿ＴＩＭＥ＝２３３００００から現在のイベント情報エントリ６３７の発生時刻６０１の２８９０００までの５６クロックサイクル分を動作不可状態に分類する。続いてステップ７１６でＦＩＸ＿ＴＩＭＥを２８９０００に設定する。図１０においては、１０１５の動作状態、４サイクル、及び１０１６の動作不可状態、５６サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝２２９０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００４０】
イベント情報エントリ６３８の処理では、バンクアドレス６０３は１となっており引数のバンク番号と一致しない。よって、ステップ７０７でＮｏと判定される。この場合はステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝５０００に設定する。更にステップ７２６でこれ以上イベント情報エントリはないため処理を終了する。
【００４１】
以上がバンク状態分類手段１０３によるバンク番号０のバンク２２０の状態分類処理である。次にバンク番号１のバンク２２１に図６のイベント情報エントリ６１０乃至６３８を入力したときのバンク状態分類手段１０３の処理を同様に説明する。
【００４２】
まずイベント情報エントリの入力前に、ステップ７０１でバンク番号１と単位時間１０，０００，０００ｐｓが入力される。続くステップ７０２、７０３、７０５、７０６の処理はバンク２２０と同様であるため詳細は割愛する。
【００４３】
イベント情報エントリ６１０の処理では、バンクアドレス６０３は０となっており引数のバンク番号と一致しない。よって、ステップ７０７でＮｏと判定される。この場合はステップ７２７でＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１０００に設定し、ステップ７２６を経由してステップ７０４へ戻る。
【００４４】
イベント情報エントリ６１１の処理では、バンクアドレス６０３は１のためステップ７０７でＹｅｓと判定される。この時点ではＦＩＸ＿ＴＩＭＥ＝０、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＵＮＤＥＦ、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＵＮＤＥＦ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１０００のため、ステップ７０８、７１１、７１４はいずれもＮｏと判定される。次のステップ７１７ではＦＩＸ＿ＴＩＭＥ＜ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥが成立するためＹｅｓと判定され、ステップ７１８ではＦＩＸ＿ＴＩＭＥ＝０から１クロックサイクル分を休止状態に分類する。その後ステップ７１９でＦＩＸ＿ＴＩＭＥを１０００に設定する。続いてステップ７２０では図８のテーブルにおいて、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴコマンド、現在のイベント情報エントリ６１１のコマンド６０２がＡＣＴコマンドであり４サイクルが該当する。これに対し、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝１０００とイベント情報エントリ６１１の発生時刻６０１の５０００から条件に一致するためＹｅｓと判定される。その結果、ステップ７２１でＦＩＸ＿ＴＩＭＥ＝１０００から４クロックサイクル分を動作不可状態に分類する。その後ステップ７２４でＦＩＸ＿ＴＩＭＥを５０００に設定する。図１０においては、１０１７の休止状態、１サイクル、及び１０１８の動作不可状態、４サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝５０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００４５】
イベント情報エントリ６１２、６１３、６１４では、バンクアドレス６０３が引数のバンク番号と一致しないため、ステップ７２６でＤＩＦＦ＿ＰＲＥ＿ＣＭＤとＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥを更新する。結果、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝４００００となる。
【００４６】
イベント情報エントリ６１５の処理では、バンクアドレス６０３は１のためステップ７０７でＹｅｓと判定される。この時点ではＦＩＸ＿ＴＩＭＥ＝５０００、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＡＣＴ、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤ、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝４００００のため、ステップ７０８、７１１、７１４はいずれもＮｏと判定される。次のステップ７１７ではＦＩＸ＿ＴＩＭＥ＜ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥが成立するためＹｅｓと判定され、ステップ７１８でＦＩＸ＿ＴＩＭＥ＝０から３５クロックサイクル分を休止状態に分類する。その後ステップ７１９でＦＩＸ＿ＴＩＭＥを４００００に設定する。続いてステップ７２０では図８のテーブルにおいて、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤ＝ＲＤコマンド、現在のイベント情報エントリ６１５のコマンド６０２がＷＲコマンドであり１５サイクルが該当する。これに対し、ＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥ＝４００００とイベント情報エントリ６１１の発生時刻６０１の５５０００から条件に一致するためＹｅｓと判定される。その結果、ステップ７２１でＦＩＸ＿ＴＩＭＥ＝４００００から１５クロックサイクル分を動作不可状態に分類する。その後ステップ７２４でＦＩＸ＿ＴＩＭＥを５５０００に設定する。図１０においては、１０１９の休止状態、３５サイクル、及び１０１９の動作不可状態、１５サイクルが確定したこととなる。その後、ステップ７２５でＳＡＭＥ＿ＰＲＥ＿ＣＭＤ＝ＷＲ、ＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥ＝５５０００に設定し、ステップ７２６を経由してステップ７０４に戻る。
【００４７】
以降の処理は既に説明したものと同様に処理される。結果として、図１０における１０２０乃至１０３８が確定する。バンク２２２乃至バンク２２７に対しては、図６のイベント情報１０２ではいずれの制御コマンドも発生していないため全て休止状態であるものとする。
【００４８】
さて各ステップで分類されたバンク状態は発生時刻（このときのＦＩＸ＿ＴＩＭＥ）と発生サイクル数と一緒にバンク状態情報１０４へ出力される。バンク状態情報１０４にはバンク２２０乃至２２７の８つ分の情報が分けて格納されている。ここから、バンク２２０乃至２２７の状態に基づいてＤＲＡＭ２０９の状態を分類するＤＲＡＭ状態分類手段１０５について説明する。最初にＤＲＡＭ状態分類手段１０５によって分類するＤＲＡＭ２０９の状態の種類を先に説明する。本実施形態ではバンク状態と同様に動作状態、休止状態、動作不可状態の３つをＤＲＡＭ状態とする。ＤＲＡＭ状態は以下の通り分類する。
【００４９】
動作状態：  少なくとも１つのバンクの状態が動作状態の場合
動作不可状態：  全てのバンクの状態が動作状態ではなく、かつ少なくとも１つのバンクの状態が動作不可状態の場合
休止状態：  全てのバンクの状態が休止状態の場合
これにより各バンクが異なる状態であった場合でもＤＲＡＭとしての状態を分類することができる。
【００５０】
図９はＤＲＡＭ状態分類手段１０５の手順を示すフローチャート図である。これを用いてＤＲＡＭ状態分類手段１０５を詳細に説明する。まずステップ９０１で状態確定時刻（ＦＩＸ＿ＴＩＭＥ）をリセットする。具体的にはＦＩＸ＿ＴＩＭＥに０を設定する。状態確定時刻ＦＩＸ＿ＴＩＭＥの使い方については後述するが、本値はその時刻まではＤＲＡＭ２０９の状態が決定していることを意味する。次にステップ９０２でバンク状態情報１０４からバンク２２０乃至２２７の分類結果を一つずつ読み出し、各バンクの状態を設定する。前述した通り、分類結果はバンクの状態と発生時刻、発生サイクルがセットとなっている。ここから、ステップ９０３、９０４、９０５、９０６、９０７を使ってＤＲＡＭ状態を分類する。すなわち、ステップ９０３ではバンク２２０から２２７の中に一つでも動作状態があるかを判定する。Ｙｅｓと判定された場合はステップ９０４でＤＲＡＭ状態を動作状態に設定する。一方Ｎｏと判定された場合はステップ９０５でバンク２２０から２２７の中に一つでも動作不可状態があるかを判定する。Ｙｅｓと判定された場合はステップ９０６でＤＲＡＭ状態を動作不可状態に設定する。一方Ｎｏと判定された場合は、全てのバンクが休止状態となるため、ステップ９０７でＤＲＡＭ状態を休止状態に設定する。ステップ９０４、ステップ９０６、ステップ９０７でＤＲＡＭ状態を設定した結果は、ＤＲＡＭ状態情報１０６へ出力する。設定した結果は、発生時刻を示すこのときのＦＩＸ＿ＴＩＭＥとバンク２２０乃至２２７の発生サイクルの内もっとも小さい値分を発生サイクルとして関連付けられる。その後動作状態、動作不可状態、休止状態のいずれの状態に設定された場合でもステップ９０８に進む。ステップ９０８ではバンク２２０乃至２２７の分類結果がバンク状態情報１０４内に残っているかを判定する。もう残っていない場合は処理を終了する。まだ残っている場合は続くステップ９０９でＦＩＸ＿ＴＩＭＥをバンク２２０乃至２２７の発生サイクルの内もっとも小さい値分進める。次にステップ９１０でバンク２２０乃至２２７の発生サイクルの内もっとも小さい値となっているバンクの次の分類結果を読み出し、同バンクの状態を更新する。その後９０３に戻って処理を繰り返す。以上が本実施形態におけるＤＲＡＭ状態分類手段１０５の内容である。本実施形態においては、ＤＲＡＭ状態分類手段１０５によるＤＲＡＭ状態の分類は動作状態、動作不可状態、休止状態という順番で優先度が高いという前提に基づいた前述の分類方法を用いて説明したが、分類方法の内容は本発明を限定するものではない。例えば、動作不可状態、動作状態、休止状態という順番で優先度が高いという前提で分類方法を適用することもできる。この場合は、少なくとも一つのバンクが動作不可状態である場合は動作不可状態と判定し、これに合致せず、かつ少なくとも一つのバンクが動作状態である場合は動作状態と判定する。いずれにも合致しない場合は休止状態となる。これに限らず優先順位や判断条件は論理的に説明できる限り、いずれの内容でも適用することができる。また本実施形態においては、バンク状態分類手段１０３、ＤＲＡＭ状態分類手段１０５は順次処理を前提として説明したが、処理順番は本発明を限定しない。例えば、バンク状態分類手段１０３によって分類された結果を、順次ＤＲＡＭ状態分類手段１０５に入力することで、並行してかかる２つの処理を実行することも可能である。
【００５１】
以下、図１０に示すバンク２２０乃至２２７の分類結果を例としてＤＲＡＭ状態分類手段１０５の処理を具体的に説明する。図１０の１０４１乃至１０７６はＤＲＡＭ状態分類手段１０５の処理結果を示している。
【００５２】
まずステップ９０１でＦＩＸ＿ＴＩＭＥ＝０にリセットする。続くステップ９０２でバンク２２０乃至２２７の分類結果をそれぞれ読み出しバンク状態を設定する。バンク２２０は休止状態に１クロックサイクル分設定する。バンク２２１は休止状態に１クロックサイクル分設定する。バンク２２２乃至２２７は休止状態に全処理サイクルである２８９クロックサイクル分設定する。この時点では全バンクが休止状態のためステップ９０３、９０５でそれぞれＮｏと判定され、ステップ９０７でＤＲＡＭ状態を休止状態に設定する。図１０においては１０４１の休止状態、１サイクルが決定したこととなる。その後、ステップ９０８を経由し、ステップ９０９でＦＩＸ＿ＴＩＭＥ＝１０００に設定する。続くステップ９１０ではバンク２２０、バンク２２１のバンク状態をそれぞれ動作不可状態に設定して、ステップ９０３に戻る。
【００５３】
続くＦＩＸ＿ＴＩＭＥ＝１０００のタイミングの処理では、バンク２２０、２２１が動作不可状態で、バンク２２２乃至２２７は休止状態のため、ステップ９０３、９０５でそれぞれＮｏ、Ｙｅｓと判定される。そして、ステップ９０６でＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０４２の動作不可状態、４サイクルが確定したこととなる。その後、ステップ９０８を経由し、ステップ９０９でＦＩＸ＿ＴＩＭＥ＝５０００に設定する。続くステップ９１０ではバンク２２１のバンク状態を休止状態に設定して、ステップ９０３に戻る。
【００５４】
続くＦＩＸ＿ＴＩＭＥ＝５０００のタイミングの処理では、バンク２２０が動作不可状態で、バンク２２１乃至２２７は休止状態のため、ステップ９０３、９０５でそれぞれＮｏ、Ｙｅｓと判定され、ステップ９０６でＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０４３の動作不可状態、２６サイクルが確定したこととなる。その後、ステップ９０８を経由し、ステップ９０９でＦＩＸ＿ＴＩＭＥ＝３１０００に設定する。続くステップ９１０ではバンク２２０のバンク状態を動作状態に設定して、ステップ９０３に戻る。
【００５５】
続くＦＩＸ＿ＴＩＭＥ＝３１０００のタイミングの処理では、バンク２２０が動作状態で、バンク２２１乃至２２７は休止状態のため、ステップ９０３でＹｅｓと判定され、ステップ９０５でＤＲＡＭ状態を動作状態に設定する。図１０においては１０４４の動作状態、４サイクルが確定したこととなる。その後、ステップ９０８を経由し、ステップ９０９でＦＩＸ＿ＴＩＭＥ＝３５０００に設定する。続くステップ９１０ではバンク２２０のバンク状態を動作状態に設定（結果変更なし）して、ステップ９０３に戻る。
【００５６】
ここからは詳細を割愛し、判定内容のみを説明する。
【００５７】
続くＦＩＸ＿ＴＩＭＥ＝３５０００のタイミングの処理は、ＦＩＸ＿ＴＩＭＥ＝３１０００のタイミングの処理と同様にステップ９０６でＤＲＡＭ状態を動作状態に設定する。図１０においては１０４５の動作状態、４サイクルが確定したこととなる。
【００５８】
続くＦＩＸ＿ＴＩＭＥ＝３９０００のタイミングの処理では、全てのバンクが休止状態のため、ＤＲＡＭ状態を休止状態に設定する。図１０においては１０４６の休止状態、１サイクルが確定したこととなる。
【００５９】
続くＦＩＸ＿ＴＩＭＥ＝４００００のタイミングの処理では、バンク２２０が動作状態、バンク２２１が動作不可状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０４７の動作状態、４サイクルが確定したこととなる。
【００６０】
続くＦＩＸ＿ＴＩＭＥ＝４４０００のタイミングの処理では、バンク２２０、２２１が動作不可状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０４８の動作不可状態、１１サイクルが確定したこととなる。
【００６１】
続くＦＩＸ＿ＴＩＭＥ＝５５０００、５９０００、６３０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０４９、１０５０、１０５１の動作状態、それぞれ４サイクルが確定したこととなる。
【００６２】
続くＦＩＸ＿ＴＩＭＥ＝６７０００のタイミングの処理では、バンク２２０、２２１が動作不可状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０５２の動作不可状態、６サイクルが確定したこととなる。
【００６３】
続くＦＩＸ＿ＴＩＭＥ＝７３０００、７７０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０５３、１０５４の動作状態、それぞれ４サイクルが確定したこととなる。
【００６４】
続くＦＩＸ＿ＴＩＭＥ＝８１０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０５５の動作不可状態、８サイクルが確定したこととなる。
【００６５】
続くＦＩＸ＿ＴＩＭＥ＝８９０００、９００００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０５６、１０５７の動作状態、それぞれ１サイクル、３サイクルが確定したこととなる。
【００６６】
続くＦＩＸ＿ＴＩＭＥ＝９３０００から１２９０００までの４０００毎の処理では、バンク２２０が動作不可状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０５８乃至１０６６の動作状態、それぞれ４サイクルが確定したこととなる。
【００６７】
続くＦＩＸ＿ＴＩＭＥ＝１３３０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０６７の動作状態、１サイクルが確定したこととなる。
【００６８】
続くＦＩＸ＿ＴＩＭＥ＝１３１０００のタイミングの処理では、バンク２２０が休止状態、バンク２２１が動作状態、バンク２２２乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０６８の動作状態、３サイクルが確定したこととなる。
【００６９】
続くＦＩＸ＿ＴＩＭＥ＝１３４０００のタイミングの処理では、全てのバンクが休止状態のため、ＤＲＡＭ状態を休止状態に設定する。図１０においては１０６９の休止状態、６７サイクルが確定したこととなる。
【００７０】
続くＦＩＸ＿ＴＩＭＥ＝２０００００、２０４０００のタイミングの処理では、バンク２２０が動作状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０７０、１０７１の動作状態、各４サイクルが確定したこととなる。
【００７１】
続くＦＩＸ＿ＴＩＭＥ＝２０８０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０７２の動作不可状態、６サイクルが確定したこととなる。
【００７２】
続くＦＩＸ＿ＴＩＭＥ＝２１４０００のタイミングの処理では、バンク２２０が動作状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０７３の動作状態、４サイクルが確定したこととなる。
【００７３】
続くＦＩＸ＿ＴＩＭＥ＝２１８０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０７４の動作不可状態、１１サイクルが確定したこととなる。
【００７４】
続くＦＩＸ＿ＴＩＭＥ＝２２９０００のタイミングの処理では、バンク２２０が動作状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作状態に設定する。図１０においては１０７５の動作状態、４サイクルが確定したこととなる。
【００７５】
続くＦＩＸ＿ＴＩＭＥ＝２３３０００のタイミングの処理では、バンク２２０が動作不可状態、バンク２２１乃至２２７は休止状態のため、ＤＲＡＭ状態を動作不可状態に設定する。図１０においては１０７６の動作不可状態、５６サイクルが確定したこととなる。
【００７６】
以上が図１０に示すバンク２２０乃至２２７の分類結果を例としてＤＲＡＭ状態分類手段１０５の処理の説明となる。
【００７７】
続いて、本実施形態における統計処理１０７について説明する。統計処理１０７は入力としてバンク状態情報１０４、及びＤＲＡＭ状態情報１０６を受ける。ただしその処理はそれぞれ別々に実行される。図１７は統計処理１０７の手順を示すフローチャート図であるが、これはバンク状態情報１０４及びＤＲＡＭ状態情報１０６いずれにも適用できる。ただし、バンク状態情報においてはバンク毎に別々に実行するため、いずれか一つのバンクに関するバンク状態情報が入力されることを前提とする。図１７を用いて統計処理１０７を詳細に説明する。
【００７８】
まずステップ１７０１で単位時間を引数として入力する。次にステップ１７０２で入力となるバンク状態情報１０４、もしくはＤＲＡＭ状態情報１０６からデータを一つ読み込む。続くステップ１７０３で入力データの発生時刻を確認し、発生時刻がステップ１７０１で受け取った引数の単位時間を更新したか判定する。例えば、ステップ１７０１で受け取った単位時間を１０，０００，０００ｐｓ（＝１０ｕｓ）とする。これに対し、ステップ１７０２で発生時刻９，９９９，０００ｐｓのデータを読み込んだ後、次のラウンドで発生時刻１０，０００，０００ｐｓのデータを読み込んだとする。この場合、単位時間１０，０００，０００ｐｓの区切りを跨いだためステップ１７０３の判定ではＹｅｓと判定される。同様に、２０，０００，０００ｐｓ、３０，０００，０００ｐｓの時刻を跨いだ場合など単位時間１０，０００，０００ｐｓの整数倍を跨いだ場合にＹｅｓと判定する。また、最初のデータを処理する場合も単位時間を跨いだとみなしＹｅｓと判定する。ステップ１７０３の判定に用いる発生時刻はバンク状態分類手段１０３、もしくはＤＲＡＭ状態分類手段１０５で状態が分類された際に関連付けられている。ステップ１７０３でＹｅｓと判定された場合、ステップ１７０４で新しい出力となる統計情報のデータエントリを作成する。データエントリとは、バンク状態及びＤＲＡＭ状態毎の発生回数と発生サイクルの累積を単位時間毎に保持するためのデータエントリである。
【００７９】
ステップ１７０３でいずれの判定をされた場合でも、ステップ１７０５へ進む。ステップ１７０５ではステップ１７０２で読み込んだデータのＤＲＡＭ状態及びバンク状態に対し、発生回数を１回、発生サイクルを関連付けられた発生サイクル数分加算する。発生サイクルは発生時刻と同様に、バンク状態分類手段１０３、もしくはＤＲＡＭ状態分類手段１０５で状態が分類された際に関連付けられている。続いてステップ１７０６でデータが残っているか確認し、あればステップ１７０２に戻り処理を繰り返す。一方、もうデータがなければステップ１７０７で処理を終了する。以上が統計処理１０７の内容である。
【００８０】
続いて、本実施形態における表示手段１０８について説明する。表示手段１０８は統計処理１０７の処理結果、すなわち単位時間毎のデータエントリを入力として、前記コンピュータ装置で処理を行い、様々な形態の出力結果をディスプレイ３０７に出力する。以下図１１乃至１６で説明する表示例は全てバンク状態、ＤＲＡＭ状態いずれも同様の出力が可能である。同時に出力する場合は、最大でバンク２２０乃至２２７のバンク状態、ＤＲＡＭ２０９のＤＲＡＭ状態の計９つ分を出力する。
【００８１】
図１１のテーブルは表示手段１０８による表示例の１つを示している。図１１のテーブルでは、動作状態、動作不可状態、休止状態の３つの状態それぞれにおける発生回数、発生サイクル数を示している。
【００８２】
図１２のパイチャートは表示手段１０８の表示例の１つを示している。図１２において、１２０１は総発生サイクル数における動作状態の発生サイクル数が占める割合を示している。同様に、１２０２は動作不可状態の発生サイクル数が占める割合、１２０３は休止状態の発生サイクル数が占める割合である。
【００８３】
図１３の積み上げ棒グラフは表示手段１０８の表示例の１つを示している。図１３において、１３０１は動作状態の発生サイクル数を示している。同様に、１３０２は動作不可状態の発生サイクル数、１３０３は休止状態の発生サイクル数であり、全体は総発生サイクル数となっている。
【００８４】
図１４の積み上げ棒グラフは表示手段１０８の表示例の１つを示している。図１４において、１４０１は総発生サイクル数における動作状態の発生サイクル数が占める割合を示している。同様に、１４０２は動作不可状態の発生サイクル数が占める割合、１４０３は休止状態の発生サイクル数が占める割合である。図１３との違いは、全体が総発生サイクル数か、１００％かの違いである。
【００８５】
図１５の折れ線グラフは表示手段１０８の表示例の１つを示している。図１５において、１５０１は単位時間の総発生サイクル数における動作状態の発生サイクル数が占める割合を示しており、単位時間毎の変化を折れ線でつないで示している。同様に、１５０２は動作不可状態の発生サイクル数が占める割合、１５０３は休止状態の発生サイクル数が占める割合である。単位時間毎に並べて示すことで、その変化を容易に解析することができる。
【００８６】
図１６の積み上げ棒グラフは表示手段１０８の表示例の１つを示している。図１６において、１６０１、１６０２、１６０３は、図１４の１４０１、１４０２、１４０３と同じである。違いは、図１６では単位時間毎に積み上げ棒グラフを並べており、結果図１５と同様に単位時間毎の変化を解析することが可能となる。
【００８７】
（第二の実施形態）
第二の実施形態を図１、図２、図３、図７、図８、図９、及び図１８、図１９を使って説明する。本実施形態は第一の実施形態とバンク状態、ＤＲＡＭ状態の種類の詳細度が異なる。より具体的には、本実施形態でも第一の実施形態で用いた動作状態、動作不可状態、休止状態の３つの状態を用いる点は変わらない。一方、本実施形態では、これらの３つの状態を解析目的に応じた更に細かい状態に分類する点が異なる。
【００８８】
ところで、本実施形態の表示装置の構成は、図１に示す第一の実施形態と同一であるため、構成についての詳細な説明は割愛する。更に、本実施形態のシミュレーション対象のテストベンチの構成、シミュレーション処理を含む性能解析処理及び解析結果表示処理を行うコンピュータ装置も、それぞれ図２、図３と同一であるため、詳細な説明は割愛する。
【００８９】
さて、ここから図１８を用いて本実施形態のバンク状態分類手段１０３が分類するバンク状態の詳細分類について説明する。図１８において、１８０１はリード動作状態であり、動作状態の中でもＲＤコマンドを受信した後のデータ信号が占有される期間、すなわち８ビートアクセス前提ならば４クロックサイクルを意味する。一方１８０２はライト動作状態であり、動作状態の中でもＷＲコマンドを受信した後のデータ信号が占有される期間、すなわち８ビートアクセス前提ならば４クロックサイクルを意味する。これら２つが動作状態の詳細分類である。
【００９０】
これらの詳細分類をバンク状態に適用する場合、動作状態と同様にバンク状態分類手段１０３によって分類する。具体的には、図７のステップ７０９において動作状態と分類すると同時に、対象のバンクに対する一つ前のコマンド、すなわちＳＡＭＥ＿ＰＲＥ＿ＣＭＤを確認する。一つ前のコマンドがＲＤコマンドであった場合はリード動作状態を詳細分類状態とし、ＷＲコマンドであった場合はライト動作状態を詳細分類とする。更に、ステップ７１０このように図７のステップ７０９の処理を追加することで、動作状態に対する詳細分類を行うことができる。
【００９１】
次に動作不可状態に対する詳細分類について説明する。図１８において、１８０３はアクティベート動作不可状態であり、動作不可状態の中でもＡＣＴコマンドからＲＤもしくはＷＲコマンドまでの制約による期間を意味する。１８０４はプリチャージ動作不可状態であり、動作不可状態の中でもＰＲＥコマンドからＡＣＴコマンドまでの制約による期間を意味する。１８０５はＷｒｉｔｅ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態であり、動作不可状態の中でもＷＲコマンドからＰＲＥコマンドまでの制約による期間を意味する。１８０６はＲｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態であり、動作不可状態の中でもＲＤコマンドからＰＲＥコマンドまでの制約による期間を意味する。１８０７はリフレッシュ動作不可状態であり、動作不可状態の中でもＲＥＦコマンドから他のコマンドを発行できない期間を意味する。１８０８はＲｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態であり、動作不可状態の中でもＲＤコマンドからＷＲコマンドまでの制約による期間を意味する。１８０９はＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態であり、動作不可状態の中でもＷＲコマンドからＲＤコマンドまでの制約による期間を意味する。１８０３から１８０６までは同一バンクに対するコマンドのみを対象としている。一方、Ｒｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態１８０８、及びＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態１８０９は、先行するコマンドと後続のコマンドは同一バンク、異バンク問わず対象とする。
【００９２】
以上７つの動作不可状態に対する詳細分類は、動作不可状態と同様にバンク状態分類手段１０３によって分類する。まずリフレッシュ動作不可状態１８０７は、図７のステップ７１２において動作不可状態と分類すると同時に、リフレッシュ動作不可状態を詳細分類とする。１８０３から１８０６までの４つに対しては、図７のステップ７１５において詳細分類を行う。ステップ７１５動作不可状態と分類すると同時に、詳細分類としていずれに合致するかを判定する。例えば、対象バンクに対する一つ前のコマンドがＡＣＴコマンドで、現在のイベント情報エントリのコマンド６０２がＲＤコマンドの場合、アクティベート動作不可状態１８０３を詳細分類と判定する。また別の例として、対象バンクに対する一つ前のコマンドがＲＤコマンドで、現在のイベント情報エントリのコマンド６０２がＰＲＥコマンドの場合、Ｒｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態１８０６を詳細分類と判定する。Ｒｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態１８０８、及びＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態１８０９は、二つの箇所で判定するケースがある。一つ目は１８０３から１８０６までと同様にステップ７１５で分類するケースである。この場合は、既に説明したのと同じ方法で詳細分類を判定する。２つ目はステップ７２１で詳細分類を判定するケースである。この場合でも先行するコマンドが対象バンク以外に対する一つ前のコマンドになるだけでステップ７１５での判定方法と違いはない。以上の方法で、動作不可状態の詳細分類を行うことができる。ところで、バンク状態分類手段１０３は図８のテーブルに基づき先行するコマンドがＡＣＴコマンドで、後続のコマンドが別バンクに対するＡＣＴコマンドで、コマンド間が４サイクルの場合は動作不可状態に分類する。しかしながら、この動作不可状態は対応する詳細分類がない。本実施形態では、この場合詳細分類は該当なしとする。このように詳細分類はより詳細に分析したい項目に絞り込んで分類するということも可能である。
【００９３】
次に本実施形態におけるＤＲＡＭ状態分類手段１０５について説明する。ＤＲＡＭ状態分類手段１０５によって分類されるＤＲＡＭ状態の詳細分類は２種類ある。１つ目は既に説明したバンク状態と同じ詳細分類、すなわち図１８に示す分類を用いる。２つ目はバンク状態とは異なる詳細分類、すなわちＤＲＡＭ状態独自の詳細分類を用いる。まず１つ目のバンク状態と同じ詳細分類を用いる場合を説明する。この場合は、動作状態、動作不可状態、休止状態の優先順位、判断条件と同様に詳細分類同士の優先順位を決定する必要がある。本実施形態においては、第一の実施形態と同じ決定条件を用いて動作状態、動作不可状態、休止状態を決定し、その後詳細分類は各状態内での詳細分類同士の優先順位に基づいて決定する。具体的には、動作状態ではリードとライトは同時に発生し得ないため優先順位は設定しない。動作不可状態は、以下の順番で優先順位が高いものとする。
【００９４】
リフレッシュ動作不可状態１８０７
Ｒｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態１８０８及びＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態１８０９（同時に発生しないため）
アクティベート動作不可状態１８０３
プリチャージ動作不可状態１８０４
Ｗｒｉｔｅ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態１８０５
Ｒｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態１８０６
（該当なし）
この優先順位に基づいたＤＲＡＭ状態分類手段１０５の詳細分類の実行について説明する。まず、動作状態の詳細分類について説明する。図９におけるステップ９０４で、ＤＲＡＭ状態を動作状態に設定すると同時に動作状態にあるバンクの詳細分類をそのままＤＲＡＭ状態の詳細分類とする。例えば、バンク２２０の詳細分類がリード動作状態であった場合、ＤＲＡＭ２０９の詳細分類もリード動作状態と判定する。データ転送の信号線を共有している関係上、２つ以上のバンクが同時に動作状態になることはないため、リード動作状態とライト動作状態は同時に起こりえない。次に動作不可状態の詳細分類について説明する。図９におけるステップ９０５で、ＤＲＡＭ状態を動作不可状態に設定すると同時に動作不可状態にあるバンクの詳細分類を前述の優先順位に基づいて判定し、詳細分類を判定する。例えば、バンク２２０の詳細分類がＲｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態で、バンク２２１の詳細分類がアクティベート動作不可状態であった場合を想定する。この場合には優先順位に基づいてＤＲＡＭ２０９の詳細分類はＲｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態と判定する。このとき休止状態は比較対象としない。以上の方法でＤＲＡＭ状態分類手段１０５により詳細分類を行うことができる。
【００９５】
次に、ＤＲＡＭ状態分類手段１０５によって分類する２つ目の詳細分類について説明する。２つ目の詳細分類はバンク状態とは異なる詳細分類である。本実施形態では動作状態に対してのみ２つ目の詳細分類を用いる。具体的には、（１）他のバンクに動作不可状態がある動作状態と、（２）他のバンクが全て休止状態の動作状態の２つである。（１）は他のバンクに動作不可状態があるが動作状態が優先されて動作状態と判定された場合の動作状態である。一方（２）は他のバンクに動作不可状態はなく全て休止状態で動作状態と判定された場合の動作状態である。ＤＲＡＭのデータアクセスにおいては、動作不可状態は、他のバンクのデータアクセス、すなわち動作状態に隠ぺいされることで見かけ上アクセス効率が高まる。すなわち、性能解析においては（１）の詳細分類と（２）の詳細分類の意味は大きく違う。例えば、（１）の詳細分類がほとんどなく、１８０３、１８０４の詳細分類が多く存在する場合は、アクセス効率が低い状態であることが解析できる。一方、（１）が多くあるものの、１８０３、１８０４の詳細分類がほとんどない場合は動作不可状態を隠ぺいできており、アクセス効率を落とさずにアクセスできている状態であることが解析できる。
【００９６】
（１）、（２）の詳細分類の判定方法について説明する。一つ目の詳細分類と同様に図９におけるステップ９０４で、ＤＲＡＭ状態を動作状態に設定すると同時に他のバンクの状態を確認し、一つでも動作不可状態がある場合は（１）と判定し、全てが休止状態の場合は（２）と判定する。これにより２つ目の詳細分類も判定できる。
【００９７】
ここから、説明した詳細分類を適用した場合の表示手段１０８の表示例を図１９を使って説明する。
【００９８】
図１９のパイチャートは表示手段１０８の表示例の１つを示している。図１２のパイチャートに対し、更に各状態の詳細分類で分類している。詳細分類と３状態の分類は総数が必ず一致するため、並べて比較するとより効率的に性能解析が実施できる。
【００９９】
以上説明した方法で、第一の実施形態に対してより細かい詳細分類を用いてバンク状態の分類、ＤＲＡＭ状態の分類を行い、表示手段１０８により表示することができる。
【０１００】
（第三の実施形態）
第三の実施形態を、図１乃至図３、図６、図７、図９、図２０乃至図２８、図３０乃至図３２を使って説明する。本実施形態でも第一の実施形態で用いた動作状態、動作不可状態、休止状態の３つの状態を用いる点は変わらない。本実施形態は第一の実施形態で用いている動作状態及び一部の動作不可状態にマスタ情報を関連付ける点が異なる。
【０１０１】
本実施形態におけるマスタ情報について説明する前に、本実施形態で性能解析の対象とするシステムＬＳＩ内部のデータアクセスの仕組みについて説明する。一般的にシステムＬＳＩ内部に実装されるバスにおいて、当該バスを介してデータアクセスを要求するブロックをマスタ（及びイニシエータ）と呼び、データアクセスの要求を受けるブロックをスレーブ（及びターミネータ）と呼ぶ。図２０は本実施形態におけるシミュレーション対象のシステムＬＳＩ及び周辺モジュールを含むテストベンチの構成図である。本実施形態においては、図２０のＣＰＵ２０１、画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４がマスタである。一方、ＲＯＭＣ２０６、メモリコントローラ２０５がスレーブとなる。各マスタはバス２０８を介して各スレーブへデータアクセス要求を発行する。図２０は第一の実施形態の図２のテストベンチ構成図に対して、マスタモニタ２００１が追加されている点が異なる。マスタモニタ２００１については後述する。
【０１０２】
マスタに相当するＣＰＵ２０１、画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４がデータアクセス要求を発行する場合、いずれのスレーブに対する要求であるかを意識する必要はない。データアクセス要求の割り当てはバス２０８によってバスアドレスと呼ばれるアクセスする領域の番地（アドレス）を特定する情報を基に実現される。バスアドレスは一般的に３２ビットもしくはそれ以上のビット数のデータで構成される。本実施形態においては、バスアドレスは３２ビットのデータで構成するものとする。以下バスアドレスは頭に’０ｘ’を付加し、１６進数で表記する。
【０１０３】
各マスタはデータアクセス要求時にバスアドレスを付加して発行する。バス２０８はデータアクセス要求に付加されたバスアドレスを解析し、それに基づいてアクセス先であるスレーブを決定する。本実施形態においてはＲＯＭＣ２０６もしくはメモリコントローラ２０５のいずれかである。一般的にはバスアドレスのデータの一部の値に基づいてアクセス先のスレーブを決定する。本実施形態においては、バスアドレスのビット３０を使って決定することとする。バスアドレスのビット３０が０の場合はメモリコントローラ２０５へのデータアクセス要求であるものとし、１の場合はＲＯＭＣ２０６へのデータアクセス要求であるものとする。バス２０８はバスアドレスのビット３０の値を基にデータアクセス要求を振り分ける。
【０１０４】
さて、バス２０８からデータアクセス要求を受けた各スレーブでは、同様にバスアドレスを解析し、アクセス先のアドレスを特定する。ＲＯＭＣ２０６においてはＲＯＭ２１０内のアドレスであり、メモリコントローラ２０５においては、ＤＲＡＭ２０９内のアドレスである。メモリコントローラ２０５におけるＤＲＡＭ２０９内のアドレスの特定の仕組みについてより詳細に説明する。従来技術で説明したように、ＤＲＡＭは複数のバンクで構成され、各バンク内は列アドレスと行アドレスを指定することでアクセスするアドレスを指定する。すなわち、バスアドレスからバンク番号、行アドレス、列アドレスへ変換することでＤＲＡＭ内のアドレスを特定することができる。本実施形態においては、ＤＲＡＭ２０９内のデータ単位サイズは１バイト（＝８ビット）を前提とし、バスアドレス３２ビットを以下の通り割り当てることとする。
【０１０５】
バスアドレス  ビット２７〜ビット２９  ＝  バンク番号
バスアドレス  ビット１１〜ビット２６  ＝  行アドレス
バスアドレス  ビット０〜ビット１０  ＝  列アドレス
例えば、メモリコントローラ２０５が、バスアドレス＝０ｘ３ＦＥＤ＿ＣＢＡ８が付加されたデータアクセス要求を受けたものとする。この場合、ビット２７〜２９は全て１のため、バンク番号は７となる。ビット１１〜２６は、上位ビットから順に２進数では１１１１１１０１１０１１１００１となり、１６進数では０ｘＦＤＢ９となる。ビット０〜ビット１０は、上位ビットから順に２進数では０１１１０１０１０００となり、１６進数では０ｘ３Ａ８となる。よって、バンク番号＝７、行アドレス＝０ｘＦＤＢ９、列アドレス＝０ｘ３Ａ９を用いてＤＲＡＭ２０９へアクセスすることとなる。以上説明した方法で、バスアドレスを付加したデータアクセス要求により、各マスタからバス２０８を介した各スレーブへのデータアクセスの割り当てを実現する。
【０１０６】
さらに、バスはマスタからのデータアクセス要求を蓄積するバッファを持つことが可能であり、優先順位の高いデータアクセス要求が優先度の低い同一スレーブへのデータアクセス要求を追い越す機能を有することがある。また、メモリコントローラも、内部にデータアクセス要求を蓄積するバッファを持ち、効率の良いＤＲＡＭアクセスをするために、アクセス要求を並び替える機能を有することがある。効率の良いＤＲＡＭアクセスとは、例えば、ページミスの発生を抑えるコマンド群を指す。同一ページに連続でＲＤもしくはＷＲコマンドが続く場合、ページミスは発生しないが、途中で異なるページへのＲＤもしくはＷＲコマンドが発行されると前後で２回のページミスが発生し、アクセス効率を落とす。ページミスの発生を抑えるコマンド群とは同一ページへの連続するＲＤもしくはＷＲコマンドを指し、連続する回数が長いほど効率の良いＤＲＡＭアクセスとなる。また、第二の実施形態で述べたＲｅａｄ−ｔｏ−ＷｒｉｔｅもしくはＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチングの発生を抑えることも効率の良いＤＲＡＭアクセスを実現する一つの方法である。例えばＲＤコマンド５回とＷＲコマンド５回が存在する場合、ＲＤコマンドとＷＲコマンドを交互に発行するとスイッチングは１０回発生する。一方ＲＤコマンド５回とＷＲコマンド５回をそれぞれ連続して発行するとスイッチングは１回となる。上記で一般的なバス及びメモリコントローラがデータの並び替えをすることを述べたが、本実施形態では説明の簡略化のため、バス２０８及びメモリコントローラ２０５でのデータアクセス要求の並び替えは発生しないものとする。
【０１０７】
ここから、図２０のマスタモニタ２００１が監視する各マスタとバス２０８の間の制御信号の動作について説明する。本実施形態においては、バス２０８はＡＭＢＡ４（ＡＲＭ社の登録商標）のプロトコルに準拠しているものとする。ＡＭＢＡ４では以下の４つのチャネルで構成され、各チャネルが独立に動作するように定義されている。
【０１０８】
アドレスチャネル
ライトデータチャネル
ライトレスポンスチャネル
リードデータチャネル
図２２はＡＭＢＡ４に準拠したアドレスチャネルの制御信号の一部を示している。アドレスチャネルにはこれ以外にもいくつかの制御信号が存在するが、本発明には不要であるため割愛する。図において２２０１はクロックであり、全ての信号の基準となる。すなわちクロック２２０１の立ち上がり（０→１への変化）のタイミングでクロック２２０１以外の信号の状態を評価しデータアクセス要求が発行されているか検出する。具体的には、ａｒｒｅａｄｙ２２０３とａｒｖａｌｉｄ２２０４がクロック２２０１の立ち上がりでいずれも１になっている場合、リードのデータアクセス要求が発行されたことを意味する。一方、ａｗｒｅａｄｙ２２０９とａｗｖａｌｉｄ２２１０がクロック２２０１の立ち上がりでいずれも１になっている場合、ライトのデータアクセス要求が発行されたことを意味する。これらの信号以外、すなわち２２０２、２２０５、２２０６、２２０７及び２２０８、２２１１、２２１２、２２１３はそれぞれリード及びライトのデータアクセス要求に付加されている属性情報を意味する。ａｒａｄｄｒ２２０２は３２ビットの信号でリードのデータアクセス要求におけるバスアドレスを示す。ａｒｂｕｒｓｔ２２０５はリードのデータアクセス要求のアクセスタイプを示す。ａｒｌｅｎ２２０６はリードのデータアクセス要求の連続アクセス数（＝ビートサイズ）を示すが、実際のアクセス数より１小さい値である。すなわち、０ならば１回、１ならば２回アクセスすることを意味する。ａｒｓｉｚｅ２２０７はリードのデータアクセス要求の単位アクセスサイズを示すが、２の乗数が値となっており実際の単位アクセスサイズは値をｎとすると２のｎ乗がアクセスサイズとなる。すなわち、０ならば１バイト単位、１ならば２バイト単位、２ならば４バイト単位、３ならば８バイト単位となる。アクセスタイプには、ＩＮＣＲ、ＷＲＡＰ、ＦＩＸＥＤの３種類が存在する。ＩＮＣＲはａｒａｄｄｒ２２０２が示すバスアドレスから、ａｒｓｉｚｅ２２０７が示すアクセスサイズをａｒｌｅｎ２２０６が示すアクセス数分、バスアドレスを順次加算しながら連続アクセスする場合に使用するアクセスタイプである。ＷＲＡＰはアクセス空間をａｒｓｉｚｅ２２０７とａｒｌｅｎ２２０６によって定まるアクセスサイズ単位で分割し、ａｒａｄｄｒ２２０２が含まれる分割された領域にアクセスする。ただし、ＩＮＣＲがアクセスする領域の先頭からアクセスするのに対し、ＷＲＡＰはアクセスする領域の途中、すなわちａｒａｄｄｒ２２０２からアクセスする。その後アクセスする領域の終端に達すると、先頭に戻ってアクセスする。一方、ＦＩＸＥＤはａｒａｄｄｒ２２０２が示すバスアドレスに対してａｒｓｉｚｅ２２０７とａｒｌｅｎ２２０６によって定まるアクセスサイズと回数分アクセスする。すなわち、ＩＮＣＲ、ＷＲＡＰがａｒｌｅｎ２２０６が示す回数分バスアドレスを加算（ＷＲＡＰでは戻る場合のみ減算）しながらアクセスするのに対し、ＦＩＸＥＤではバスアドレスを変更せず同一アドレスに対しアクセスする。例えば、ａｒａｄｄｒ２２０２＝０ｘ０８０１＿００００、ａｒｂｕｒｓｔ２２０５＝ＩＮＣＲ、ａｒｌｅｎ２２０６＝７、ａｒｓｉｚｅ２２０７＝３であったとする。この場合は、単位アクセスサイズを８バイトとして、連続８回、０ｘ０８０１＿００００からリードアクセスする。すなわち、０ｘ０８０１＿００００〜０ｘ０８０１＿００３Ｆの６４バイト分の領域にアクセスすることとなる。以上がリードのデータアクセス要求時のアクセス内容の説明である。ライトのデータアクセス要求時は、バスアドレスとしてａｗａｄｄｒ２２０８、アクセスタイプとしてａｗｂｕｒｓｔ２２１１、連続アクセス回数としてａｗｌｅｎ２２１２、単位アクセスサイズとしてａｗｓｉｚｅ２２１３を用いる。それ以外はリードのデータアクセス要求と同様に処理する。以上説明したように、ＡＭＢＡ４のプロトコルにおいては、２２０２、２２０５、２２０６、２２０７及び２２０８、２２１１、２２１２、２２１３を参照することで、アクセスする領域を特定することができる。結果的に、データアクセス要求に付加された属性情報を解析することで、アクセス先のスレーブ内でのアクセス領域を特定することが可能となる。例えば、上記の例と同様にａｒａｄｄｒ２２０２＝０ｘ０８０１＿００００、ａｒｂｕｒｓｔ２２０５＝ＩＮＣＲ、ａｒｌｅｎ２２０６＝７、ａｒｓｉｚｅ２２０７＝３であったとする。この場合は、説明したように０ｘ０８０１＿００００〜０ｘ０８０１＿００３Ｆの６４バイト分の領域にアクセスすることとなる。バスアドレスのビット３０は０であるため、これらはメモリコントローラ２０５を介してＤＲＡＭ２０９へアクセスすることとなる。ＤＲＡＭ２０９に対するアドレスは、前述したようにバンク番号＝１、行アドレス＝０ｘ００４０、列アドレス＝０ｘ０００〜０ｘ０３Ｆとなり、これらの領域へアクセスすることとなる。上述したようにデータアクセス要求は、その属性情報を解析することでアクセス領域を特定することができるが、本実施形態では説明を簡略化するため、アクセスタイプ＝ＩＮＣＲ、アクセスサイズ＝８バイト固定であるものとする。ただし、本限定は説明の簡略化のためであり本発明の適用範囲を限定するものではない。すなわち、各マスタとバス２０８の間のアクセス要求が如何に複雑であっても、属性情報からアクセス先のスレーブのアクセス領域を特定することができるならば本発明を適用できる。例えば、１回のアクセス要求ではなく複数のアクセス要求に分けてアクセス要求を発行するような実施形態も容易に想像できる。この場合でもアクセス要求を履歴に残しておき、最終的にアクセス要求が確定するタイミングでアクセス領域を特定すれば良い。複数のアクセス要求の実施形態には、レジスタアクセスのようなメモリコントローラ２０５のアドレス割り当て方法の設定のためのアクセスを含んでいることは言うまでも無い。補足するが、属性情報からアクセス先のスレーブのアクセス領域を特定することができないならば、それはバス２０８、もしくはメモリコントローラ２０５においても同様であるため当該アクセス要求自体が成り立たないことを意味する。さて、マスタモニタ２００１は上記のＡＭＢＡ４のプロトコルに則って各マスタとバス２０８の間の制御信号を監視し、データアクセス要求とそれに付加された属性情報をマスタイベントとして検出する。更にマスタモニタ２００１は検出したデータアクセス要求に対して本実施形態の冒頭で紹介したマスタ情報を関連付ける。マスタ情報とは、マスタ毎に一意に設定されている情報であり、関連付けたデータアクセス要求がいずれのマスタから発行されたものであるかを示すために用いる。本実施形態におけるマスタ情報は、０から３までの番号とし、順にＣＰＵ２０１、画像処理部２０２、音声処理部２０３、ネットワーク処理部２０４へそれぞれ割り当てられているものとする。例えば、マスタモニタ２００１がＣＰＵ２０１からデータアクセス要求が発行されたことを検出すると、属性情報と共にマスタ情報＝０を関連付けて出力する。
【０１０９】
ここから、本実施形態の性能解析及び解析結果表示処理について説明する。性能解析及び解析結果表示処理は図３のコンピュータ装置上で実行される。図２１は性能解析及び解析結果表示処理の全体を示す処理概念図である。図２１において、検出手段１０１、イベント情報１０２は第一の実施形態と同様であるため説明を割愛する。２１０１はマスタイベント検出手段であり、マスタのマスタイベントをマスタモニタ２００１によって検出しマスタイベント情報２１０２を出力する。マスタイベントはシステムＬＳＩ２００内のマスタのデータアクセス要求発行を指す。マスタイベント検出手段２１０１からマスタイベント情報２１０２を出力する具体的な方法については後述する。検出手段１０１によって検出されたイベント情報１０２と、マスタイベント検出手段２１０１によって検出されたマスタイベント情報２１０２は、次の関連付け手段２１０３に入力される。イベントとは第一の実施形態で説明したようにＤＲＡＭ２０９を制御するためのコマンドである。関連付け手段２１０３はイベントであるＤＲＡＭ制御コマンドがいずれのマスタからのデータアクセス要求によって発生したかを関連付け、イベント情報１０２に対し、マスタ情報を付加したマスタ情報付きイベント情報２１０４を出力する。関連付け手段２１０３についても詳細は後述する。マスタ情報付きイベント情報２１０４はバンク状態分類手段２１０５に入力される。バンク状態分類手段２１０５乃至表示手段２１１０は第一の実施形態のバンク状態分類手段１０３乃至表示手段１０８とフローは同じである。異なる箇所は動作状態と一部の動作不可状態に対し、それらの状態がいずれのマスタからのデータアクセス要求が要因となったかを示すため、マスタ情報を関連付けることである。バンク状態分類手段２１０５乃至表示手段２１１０の第一の実施形態との差分の詳細については後述する。
【０１１０】
以上が本実施形態の性能解析及び解析結果表示処理の全体フローである。以下、マスタイベント検出手段２１０１乃至表示手段２１１０の詳細を説明する。
【０１１１】
マスタイベント検出手段２１０１は前記コンピュータ装置によるテストベンチ２００２のシミュレーション処理におけるマスタモニタ２００１によって実現する。マスタモニタ２００１が出力するマスタイベント情報は第一の実施形態のモニタ２１１が出力するイベント情報と同様にＨＤＤ３０６に格納される。システムＬＳＩ２００内のマスタとバス２０８間の信号線の監視するマスタモニタ２００１、すなわち本実施形態のマスタイベント検出手段２１０１について説明する。マスタモニタ２００１はシステムＬＳＩ２００内の全てのマスタとバス２０８の信号線を監視する。本実施形態では、ＣＰＵ２０１、画像処理部２０２、音声処理部２０３及びネットワーク処理部２０４とバス２０８の間の信号線が対象となる。具体的には、それぞれのマスタ毎に前述した図２２のＡＭＢＡ４の信号線を監視し、マスタイベントとなるデータアクセス要求の発行を検出する。ＡＭＢＡ４のデータアクセス要求の発行の仕組みは既に述べているため省略する。マスタモニタ２００１はマスタイベント検出時にデータアクセス要求に付加されている属性情報を出力する。具体的にはリードのデータアクセス要求の場合はａｒａｄｄｒ２２０２、ａｒｂｕｒｓｔ２２０５、ａｒｌｅｎ２２０６、ａｒｓｉｚｅ２２０７である。また、ライトのデータアクセス要求の場合はａｗａｄｄｒ２２０８、ａｗｂｕｒｓｔ２２１１、ａｗｌｅｎ２２１２、ａｗｓｉｚｅ２２１３である。マスタイベント情報とは上記属性情報に対しデータアクセス要求発行のシミュレーション上の時刻及びマスタ情報を加えたものである。図２４にマスタイベント情報の例を示す。本実施形態においても第一の実施形態と同様に時刻の単位はｐｓ（ピコ秒＝０．０００００００００００１秒）とする。マスタ情報は前述したようにマスタ毎に一意に設定されている情報であり、データアクセス要求がいずれのマスタから発行されたものであるかを示す。ここからマスタイベント情報エントリ２４１０について具体的に説明する。２４１０は時刻３０００ｐｓにおいてＣＰＵ２０１（マスタ情報＝０）からデータアクセス要求が発生されていることを示している。また、このデータアクセス要求のアドレスは０ｘ０００８００１０（ａｒａｄｄｒ）でバーストタイプはＩＮＣＲ（ａｒｂｕｒｓｔ）、連続アクセス回数は２（ａｒｌｅｎ＝１）、単位アクセスサイズは８バイト（ａｒｓｉｚｅ＝３）であることを示している。ａｒａｄｄｒ，  ａｒｂｕｒｓｔ，  ａｒｌｅｎ，  ａｒｓｉｚｅが出力される場合はリード、ａｗａｄｄｒ，  ａｗｂｕｒｓｔ，  ａｗｌｅｎ，  ａｗｓｉｚｅが出力される場合はライトのデータアクセス要求であると識別できる。そのため、２４１０のマスタイベント情報エントリはリードであることが分かる。本実施形態においてはＡＭＢＡ４の規格に基づいたマスタイベントを検出することを例に説明したが、マスタイベント検出手段が検出するマスタイベントは規格の種類に限定することはない。他の規格であってもデータアクセス要求発行は信号線の値に基づいて定義されているため、マスタイベント検出手段を実現することができる。
【０１１２】
ここから図６、図２０、図２３及び図２６を用いて関連付け手段２１０３について説明する。関連付け手段２１０３はイベント情報１０２とマスタイベント情報２１０２を入力とし、前記シミュレーション処理後、別の処理として前記コンピュータ装置上で実行する。関連付け手段２１０３ではイベントであるＤＲＡＭ制御コマンドが、いずれのマスタのデータアクセス要求によって発生したかを関連付ける。既に述べたように、データアクセス要求に付加された属性情報を解析すると、アクセス先のスレーブ内のアクセス領域を特定することが可能である。ＤＲＡＭ２０９を例にすると、スレーブ内のアクセス領域はバンク番号、列アドレス及び行アドレスで表される。コマンドで言うとＡＣＴコマンドではバンク番号と行アドレスを指定し、該当する行アドレスをオープンする。ＲＤもしくはＷＲコマンドではバンク番号と列アドレスを指定し、オープンしている行アドレスとこれら二つのアドレスの組み合わせでデータを読み書きする領域が決定される。ＲＤ及びＷＲコマンドは行アドレスを指定しないが、コマンド発行時には既にＡＣＴコマンドで行アドレスは指定済みであり、ＲＤ及びＷＲコマンド発行時はバンク番号、行アドレス、列アドレスが指定された状態となる。そのためデータアクセス要求がいずれのマスタから発行されたかを識別することができれば、ＲＤ及びＷＲコマンドがいずれのマスタのデータアクセス要求によって発生したかを特定することができる。また、関連付け手段２１０３はＲＤ及びＷＲコマンド以外のコマンドについてもマスタ情報を関連付ける。本実施形態ではＰＲＥコマンド及びＡＣＴコマンドをマスタ情報と関連付け、それ以外のコマンドはマスタ情報との関連付けは行わない。ＰＲＥコマンド及びＡＣＴコマンドは背景技術で述べたようにＤＲＡＭのバンクの行アドレスに対するページオープンやクローズの切り替えを行う。つまりＰＲＥ及びＡＣＴコマンドはＲＤもしくはＷＲコマンドの前準備もしくは後処理を行うために発行される。そのため、ＰＲＥ及びＡＣＴコマンドは、同一バンクの直前もしくは直後に発生したＲＤもしくはＷＲコマンドに起因して発行されると考えることができる。本実施形態では、ＰＲＥ及びＡＣＴコマンドと同一バンクで発生した直前にＲＤもしくはＷＲコマンドに関連付いたマスタ情報を、ＰＲＥ及びＡＣＴコマンドと関連付ける。
【０１１３】
図２３は関連付け手段２１０３のフローチャート図である。このフローチャートはステップ２３０２からステップ２３０４までの前段処理とスタップ２３０５からステップ２３１８までの後段処理に分かれる。前段処理では、マスタイベントであるデータアクセス要求を解析してアクセス先のＤＲＡＭ２０９のバンク番号、行アドレス及、列アドレス、リード／ライト属性、マスタ情報を特定する。特定された上記情報は、後段処理で実施するイベント情報とマスタ情報の関連付けに使用する。また、前述したようにＲＤもしくはＷＲコマンド発行時はバンク番号、行アドレス及び列アドレスが指定された状態となっているため、上記情報はデータアクセス要求によって発生するＲＤもしくはＷＲコマンドを特定する処理と同義となる。但し、データアクセス要求のデータサイズはＲＤもしくはＷＲコマンド１回のアクセスサイズ（８バイト）より大きくなることがあるため、１回のデータアクセス要求は１つ以上のＲＤもしくはＷＲコマンドに特定される。図２４のマスタイベント情報エントリ２４１０を例に説明する。マスタイベント情報エントリ２４１０はバスアドレスが０ｘ０００８００１０（ａｒａｄｄｒ）、アクセス回数が２（ａｒｌｅｎ＝１）でアクセスタイプはＩＮＣＲ（ａｒｂｕｒｓｔ）、単位アクセスサイズは８バイト（ａｒｓｉｚｅ＝３）を示している。また、要求元はＣＰＵ２０１（マスタ情報＝０）であることを示している。アクセスサイズは１６バイトであり、具体的にはバスアドレス０ｘ０００８００１０から０ｘ０００８００１Ｆまでの１６バイト分の転送となる。ＲＤアクセスは８ビート固定のため、１回のＲＤコマンドのアクセスサイズは、ＤＲＡＭ幅８ビット（１バイト）を８ビート（回）繰り返す８バイト（６４ビット）となる。マスタイベント情報エントリ２４１０のデータアクセス要求のサイズが１６バイトであるのに対し、１回のＲＤコマンドのアクセスサイズは８バイトのため、このマスタイベント情報エントリ２４１０を解析すると２回のＲＤコマンドに特定される。具体的な解析の手順は前述した通りとなり、バスアドレスの０ｘ０００８００１０を解析すると「バンク番号＝０ｘ０、行アドレス＝０ｘ０１００、列アドレス＝０ｘ００１０」となる。これが一つ目のＲＤコマンドで指定されるＤＲＡＭ内のアドレスとなる。一つ目のＲＤコマンドで８バイト分の転送となるため、残りの８バイトを転送するＲＤコマンドも特定する。一つ目のＲＤコマンドではバスアドレス０ｘ０００８００１０から０ｘ０００８００１７までの８バイト分のデータアクセスであり、残りの８バイト分は０ｘ０００８００１８から０ｘ０００８００１Ｆまでのデータアクセスとなる。バスアドレス０ｘ０００８００１８を解析すると、「バンク番号＝０ｘ０、行アドレス０ｘ０１００、列アドレス０ｘ００１８」となり、これが二つ目のＲＤコマンドで指定されるＤＲＡＭ内のアドレスとなる。これらＲＤコマンドがＣＰＵ２０１からのデータアクセス要求で発生することを特定することができる。本実施形態では、全てのデータアクセス要求を解析して発生するＲＤもしくはＷＲコマンドを蓄積する。この処理がステップ２３０２からステップ２３０４で示される前段処理となる。ＲＤもしくはＷＲコマンドの蓄積には、データを先入れ先出しのリスト構造で保持するキューを用いる。本実施形態では、このキューをコマンドキューと呼び、プッシュ操作はキューの最後段にコマンドを登録し、ポップ操作は最前段からコマンドを取り出すこととする。具体的なコマンドキューの一要素はコマンド（ＲＤもしくはＷＲ）、バンク番号、行アドレス、列アドレス及びマスタ情報となる。後段処理のステップ２３０５からステップ２３１８はイベントであるＤＲＡＭ制御コマンドに対し、マスタ情報を関連付けるステップである。具体的には入力するイベント情報内のコマンドに応じて、ＲＤ及びＷＲコマンド、ＰＲＥ及びＡＣＴコマンド、それ以外のコマンドで処理が分かれる。ステップ２３０８乃至ステップ２３１０はＲＤ及びＷＲコマンドに対する処理である。ステップ２３１２、２３１３及び２３１６はＰＲＥ及びＡＣＴコマンドに対する処理である。ステップ２３１５及び２３１６はＲＤ，ＷＲ，ＰＲＥ，ＡＣＴ以外のコマンドに対する処理である。それぞれのコマンドに対するマスタ情報の関連付け方針は前述した通りである。
【０１１４】
ここから各ステップについて説明する。ステップ２３０１は処理開始を示している。ステップ２３０２はマスタイベント情報エントリを発生時刻順に読み込むステップである。図２４のマスタイベント情報を例にすると、１行読み込むステップとなる。ステップ２３０３はマスタイベントであるデータアクセス要求を解析して、ＤＲＡＭのバンク番号、列アドレス及び行アドレスを持つＲＤもしくはＷＲコマンドを特定し、そのコマンドをコマンドキューにプッシュする。特定されたＲＤ及びＷＲコマンドは解析対象のデータアクセス要求から、マスタ情報を識別することが可能であるため、コマンドキューにコマンドをプッシュする際はマスタ情報も付加する。本実施形態ではデータアクセス要求を解析してＲＤ及びＷＲコマンドを特定する手順は既に述べた。次のステップ２３０４ではマスタイベント情報エントリがこれ以上存在しないかを判定する。存在する場合はステップ２３０２に戻り次のマスタイベント情報エントリを読み込み、存在しない場合はステップ２３０５に進みイベントであるＤＲＡＭ制御コマンドにマスタ情報を関連付ける手順を開始する。ステップ２３０４がＹｅｓと判定された時点で全てのデータアクセス要求の解析と、マスタ情報付きのＲＤ及びＷＲコマンドが蓄積されたコマンドキューの作成が完了した状態となる。コマンドキューはステップ２３０７以降のマスタ情報を関連付ける手順の中で使用する。次のステップ２３０５はＰＲＥ＿ＩＤ［ＢＡＮＫ］を全てＵＮＤＥＦへ設定する。ＰＲＥ＿ＩＤはバンク数分の配列データであり、ＢＡＮＫはバンク番号を指す。本実施形態においては、ＤＲＡＭは図２０のバンク２２０からバンク２２７で構成されるため、ＢＡＮＫは０から７の数値となる。つまりＰＲＥ＿ＩＤ［０］からＰＲＥ＿ＩＤ［７］までをＵＮＤＥＦに設定する。このＰＲＥ＿ＩＤ［ＢＡＮＫ］はそれぞれのバンクで発生した最後のＲＤもしくはＷＲコマンドに関連付けられたマスタ情報を保持し、ＰＲＥ及びＡＣＴコマンドとマスタ情報を関連付けるために使用する。次にステップ２３０６に進む。ステップ２３０６ではイベント情報エントリを発生時刻順に読み込む。図６の１行を読み込むステップに相当する。次のステップ２３０７ではコマンドがＲＤもしくはＷＲコマンドかどうかを判定する。Ｙｅｓと判定されるとステップ２３０８へ進む。ステップ２３０８ではコマンドキューの最前段をポップする。既に述べたように本実施形態ではバス２０８及びメモリコントローラ２０５でデータアクセス要求の並び替えは発生しない。そのため、ステップ２３０２からステップ２３０４でマスタイベントであるデータアクセス要求を発生した順に解析を行うと、コマンドキューのＲＤ及びＷＲコマンドも先頭から発生する順番通りに並ぶ。つまり、ステップ２３０６で読み込んだイベント情報エントリがＲＤもしくはＷＲコマンドならば、必ずコマンドキューの先頭のコマンドと一致する。ステップ２３０９ではステップ２３０８でポップしたコマンドのマスタ情報をイベント情報エントリに関連付けて出力する。図２６にマスタ情報付イベント情報の例を示す。ステップ２３０９ではＲＤ及びＷＲコマンドのイベント情報に対しマスタ情報を付加しており、例えば図２６の２６１２ではマスタ情報＝０のＣＰＵ２０１が関連付いていることを意味する。次のステップ２３１０では、ポップしたコマンドの対象バンクのＰＲＥ＿ＩＤ［ＢＡＮＫ］を、ポップしたコマンドのマスタ情報に更新しステップ２３１７へ進む。先ほどの図２６の２６１２を出力した後を例にすると、ポップしたＲＤコマンドはバンク番号＝０、マスタ情報＝０であるため、ＰＲＥ＿ＩＤ［０（バンク番号）］＝０（マスタ情報）となる。ステップ２３０７でＲＤもしくはＷＲコマンドと判定されなかった場合はステップ２３１１へ進む。
【０１１５】
ステップ２３１１ではコマンドがＰＲＥもしくはＡＣＴコマンドかどうかを判定し、ＰＲＥもしくはＡＣＴコマンドだった場合はステップ２３１２へ進む。ステップ２３１２ではＰＲＥ＿ＩＤ［ＢＡＮＫ］がＵＮＤＥＦでないかを判定し、ＵＮＤＥＦでない場合はステップ２３１３へ進む。ＰＲＥ＿ＩＤ［ＢＡＮＫ］がＵＮＤＥＦになるのはステップ２３０５の初期化時及び後述するステップ２３１５のＲＤ，ＷＲ，ＰＲＥ，ＡＣＴ以外のコマンド検出時である。ステップ２３１３ではそれぞれのバンクで発生した最後のＲＤもしくはＷＲコマンドに関連付けられたマスタ情報を解析対象のＰＲＥやＡＣＴコマンドと関連付けることを意図している。ステップ２３１３の後はステップ２３１７へ進む。ステップ２３１２でＰＲＥ＿ＩＤ［ＢＡＮＫ］がＵＮＤＥＦでＮｏと判定されると、ステップ２３１６に進む。ステップ２３１６では、ＰＲＥ及びＡＣＴには関連付けられるマスタ情報が存在しないため、マスタ情報を関連付けずに出力する。本実施形態においては関連付けられないことを意味するＮＯをマスタ情報として出力する。図２６を例にすると２６１０はＡＣＴコマンドに関連付くマスタ情報がないことを意味するマスタ情報＝ＮＯが設定されている。ステップ２３１１でＡＣＴもしくはＰＲＥコマンドと判定されなかった場合、ステップ２３１５へ進む。ステップ２３１５では前述したようにＰＲＥ＿ＩＤ［ＢＡＮＫ］をＵＮＤＥＦに設定し、ステップ２３１６へ進む。例えば、ＲＥＦコマンドはＤＲＡＭの記憶保持動作であるリフレッシュを実施するためのコマンドで、ＤＤＲ３−ＳＤＲＡＭの規格上、ＤＲＡＭ２０９の全てのバンクがクローズされていなければ実行できない。つまり、リフレッシュ実行が原因で発生するページクローズはデータアクセス要求とは無関係となる。また、ＲＥＦコマンド自体もデータアクセス要求とは無関係となる。リフレッシュ以外にもパワーダウンやセルフリフレッシュなど、全てのバンクがクローズされていなければ実行できないコマンドは、ＲＥＦコマンドと同様に扱う。ステップ２３１５はＲＤ，ＷＲ，ＡＣＴ，ＰＲＥ以外のコマンドが発生した場合はバンクの状態がリセットされ以前のコマンド履歴が初期状態に戻ることを意味する。ステップ２３１５でＰＲＥ＿ＩＤ［ＢＡＮＫ］をＵＮＤＥＦに設定した後は２３１６へ進む。ステップ２３１６では読み込んだコマンドにマスタ情報を関連付けずに出力する。前述したが、本実施形態においては関連付けられないことを意味するＮＯをマスタ情報として出力する。ステップ２３１７ではイベント情報１０２を最後まで読み込んだかを判定する。ステップ２３１７でデータが存在する場合はステップ２３０６へ戻り次のデータを読み込む。ステップ２３１７でデータが存在しない場合はステップ２３１８へ進み終了する。以上が関連付け手段２１０３の詳細である。
【０１１６】
以下、図６のイベント情報と図２４のマスタイベント情報を実際に入力したときを例として関連付け手段２１０３の処理を図２３、図２５、図２６を用いて具体的に説明する。図２６の２６１０乃至２６３８、２６５１、２６５２は図６のイベント情報と図２４のマスタイベント情報を図２３のフローチャートで処理した結果であり、マスタ情報を関連付けた後のマスタ情報付きイベント情報２１０４を示している。
【０１１７】
まずステップ２３０２からステップ２３０４を図２４の２４１０から２４５２まで繰り返して、ＲＤ及びＷＲコマンドをコマンドキューに蓄積するフローを説明する。初めにステップ２３０２でマスタイベント情報エントリ２４１０を読み込み、ステップ２３０３へ進む。ステップ２３０３でマスタイベント情報エントリ２４１０を解析しＲＤコマンドを特定する。マスタイベント情報エントリ２４１０からＲＤコマンドを特定する説明は前述したため省略する。図２５は図２４のマスタコマンド情報エントリ２４１４乃至２４２０、２４５１及び２４５２を解析した後のコマンドキューの状態を示している。２５０１はキュー番号を示しており、キュー番号が小さいほどキューの先頭に近いことを意味する。また、２５０２はマスタ情報で、ＲＤ及びＷＲコマンドが、いずれのマスタのデータアクセス要求によって発生したのかを示している。マスタイベント情報エントリ２４１０の処理が完了した際のコマンドキューは、図２５の２５１０及び２５１１が存在する状態となる。ステップ２３０３でコマンドキューにコマンドをプッシュしたら、ステップ２３０４に進む。ステップ２３０４ではまだ読み込むマスタイベント情報エントリが存在するためＮｏと判定されステップ２３０２に戻る。
【０１１８】
次のステップ２３０２でマスタイベント情報エントリ２４１１を読み込み、ステップ２３０３へ進む。ステップ２３０３ではでマスタイベント情報エントリ２４１１を解析しＲＤコマンドを特定する。上記で説明したマスタイベント情報エントリ２４１０を解析してＲＤコマンドに特定した方法と同様の考えで解析し、「バンク番号＝０ｘ０、行アドレス＝０ｘ０１００、列アドレス＝０ｘ００８０」の１つのＲＤコマンドに特定される。このコマンドに解析対象のマスタイベント情報エントリ２４１１のマスタ情報＝０を付加する。結果としてマスタイベント情報エントリ２４１１の処理が完了した際のコマンドキューは、図２５の２５１０乃至２５１２が存在する状態となる。ステップ２３０３でコマンドキューにコマンドをプッシュしたら、ステップ２３０４に進み、読み込むマスタイベント情報エントリが存在するため２３０２へ戻る。
【０１１９】
次のステップ２３０２でマスタイベント情報エントリ２４１２を読み込み、ステップ２３０３へ進む。ステップ２３０３はでマスタイベント情報エントリ２４１２を解析しＷＲコマンドを特定する。上記で説明したマスタイベント情報エントリ２４１０を解析してＲＤコマンドに特定した方法と同様の考えで解析する。解析の結果「バンク番号＝０ｘ１、行アドレス＝０ｘ００１０、列アドレス＝０ｘ００２０」と「バンク番号＝０ｘ１、行アドレス＝０ｘ００１０、列アドレス＝０ｘ００２８」の二つのＷＲコマンドに特定される。これらのコマンドに解析対象のマスタイベント情報エントリ２４１２のマスタ情報＝３を付加する。結果としてマスタイベント情報エントリ２４１２の処理が完了した際のコマンドキューは、図２５の２５１０乃至２５１４が存在する状態となる。ステップ２３０３でコマンドキューにコマンドをプッシュしたら、ステップ２３０４に進み、読み込むマスタイベント情報エントリが存在するため２３０２へ戻る。
【０１２０】
次のステップ２３０２でマスタイベント情報エントリ２４１３を読み込み、ステップ２３０３へ進む。ステップ２３０３でマスタイベント情報エントリ２３１３を解析しＷＲコマンドを特定する。上記で説明したマスタイベント情報エントリ２４１０を解析してＲＤコマンドに特定した方法と同様の考えで解析し、「バンク番号＝０ｘ１、行アドレス＝０ｘ００１０、列アドレス＝０ｘ００３０」の１つのＷＲコマンドに特定される。このコマンドに解析対象のマスタイベント情報エントリ２４１３のマスタ情報＝３を付加する。結果としてマスタイベント情報エントリ２４１３の処理が完了した際のコマンドキューは、図２５の２５１０乃至２５１５が存在する状態となる。
【０１２１】
上記の説明と同様に図２４のマスタコマンド情報エントリ２４１４乃至２４２０、２４５１及び２４５２に対し、ステップ２３０２及びステップ２３０３を繰り返すとコマンドキューは図２５に示す通りとなる。
【０１２２】
最後のマスタイベント情報エントリ２４５２を解析しＲＤコマンドを特定してコマンドキューにプッシュした後、ステップ２３０４でＹｅｓと判定されステップ２３０５へ進む。
【０１２３】
次にステップ２３０５からステップ２３１７を図６の６１０から６５２まで繰り返して、イベントであるＤＲＡＭ制御コマンドにマスタ情報を関連付けるフローを説明する。まず、ステップ２３０５でＰＲＥ＿ＩＤ［０］からＰＲＥ＿ＩＤ［７］までをＵＮＤＥＦに設定する。ＰＲＥ＿ＩＤ［ＢＡＮＫ］は前述したように該当するバンクで直前に発生したＲＤもしくはＷＲコマンドのマスタ情報を保持するために使用する。
【０１２４】
次にステップ２３０６でイベント情報エントリ６１０を読み込みステップ２３０７へ進む。イベント情報エントリ６１０はＡＣＴコマンドであるため、ステップ２３０７からステップ２３１１と進む。ステップ２３１１ではＹｅｓと判定され、ステップ２３１２へ進む。イベント情報エントリ６１０のＡＣＴコマンドの対象バンクは０であるため、ステップ２３１２ではＰＲＥ＿ＩＤ［０］がＵＮＤＥＦでないかを判定する。判定の結果、ＵＮＤＥＦであるため、ステップ２３１２でＮｏと判定され、ステップ２３１６へ進む。ステップ２３１６では前述のように関連付けるマスタ情報が無いことを意味するＮＯをマスタ情報として付加し、図２６の２６１０を出力する。図２６は図６のイベント情報に対しマスタ情報を付加したフォーマットになっている。マスタ情報付きイベントを出力後はステップ２３１７に進み、まだ読み込むデータが存在するためステップ２３０６へ戻る。
【０１２５】
次のステップ２３０６でイベント情報エントリ６１１を読み込みステップ２３０７へ進む。イベント情報エントリ６１１はＡＣＴコマンドであるため、ステップ２３０７からステップ２３１１と進む。ステップ２３１１ではＹｅｓと判定され、ステップ２３１２へ進む。イベント情報エントリ６１１のＡＣＴコマンドの対象バンクは１であるため、ステップ２３１２ではＰＲＥ＿ＩＤ［１］がＵＮＤＥＦでないかを判定する。判定の結果、ＵＮＤＥＦであるため、ステップ２３１２でＮｏと判定され、ステップ２３１６へ進む。ステップ２３１６では関連付けるマスタ情報が無いことを意味するＮＯをマスタ情報として付加し、図２６の２６１１を出力する。マスタ情報付イベントを出力後はステップ２３１７に進み、まだ読み込むデータが存在するためステップ２３０６へ戻る。
【０１２６】
次のステップ２３０６でイベント情報エントリ６１２を読み込み、ステップ２３０７へ進む。イベント情報エントリ６１２はＲＤコマンドであるため、ステップ２３０７でＹｅｓと判定され、ステップ２３０８へ進む。ステップ２３０８では、コマンドキューの先頭である２５１０のマスタ情報付きコマンドをポップし、ステップ２３０９へ進む。ステップ２３０９ではポップしたコマンドのマスタ情報＝０をイベント情報エントリ６１２に関連付けて図２６の２６１２を出力する。その後、ステップ２３１０ではポップしたコマンドのバンク番号＝０とマスタ情報＝０を参照し、ＰＲＥ＿ＩＤ［０］を０（マスタ情報）に更新し、ステップ２３１７へ進む。ステップ２３１７ではまだ読み込むデータが存在するためステップ２３０６へ戻る。
【０１２７】
上記で説明したイベント情報エントリ６１２に対する手順をＲＤ及びＷＲコマンドのイベント情報エントリ６１３乃至６２０まで繰り返し、図２６の２６１３乃至２６２０のマスタ情報付きイベント情報として出力する。
【０１２８】
次のステップ２３０６でイベント情報エントリ６２１を読み込み、ステップ２３０７へ進む。イベント情報エントリ６２１はＰＲＥコマンドであるため、ステップ２３０７からステップ２３１１と進む。ステップ２３１１ではＹｅｓと判定され、ステップ２３１２へ進む。イベント情報エントリ６２１のＰＲＥコマンドの対象バンクは０であるため、ステップ２３１２ではＰＲＥ＿ＩＤ［０］がＵＮＤＥＦでないかを判定する。ＰＲＥ＿ＩＤ［０］はイベント情報エントリ６１４に対する処理のステップ２３１０でマスタ情報＝０として更新される。イベント情報エントリ６１５乃至６２０はバンク番号＝１を対象としているためＰＲＥ＿ＩＤ［０］は更新されない。そのため、ステップ２３１２では判定の結果、Ｙｅｓと判定されステップ２３１３へ進む。ステップ２３１３ではＰＲＥ＿ＩＤ［０］＝０をマスタ情報として付加し、図２６の２６２１を出力する。マスタ情報付きイベントを出力後はステップ２３１７に進み、まだ読み込むデータが存在するためステップ２３０６へ戻る。
【０１２９】
イベント情報エントリ６２２乃至６３１のＲＤコマンドに対しても、上記で説明したイベント情報エントリ６１２に対する手順を繰り返し、図２６の２６２２乃至２６３１のマスタ情報付きイベント情報として出力する。
【０１３０】
次のステップ２３０６でイベント情報エントリ６３２を読み込み、ステップ２３０７へ進む。イベント情報エントリ６２１はＡＣＴコマンドであるため、ステップ２３０７からステップ２３１１と進む。ステップ２３１１ではＹｅｓと判定され、ステップ２３１２へ進む。イベント情報エントリ６３２のＡＣＴコマンドの対象バンクは０であるため、ステップ２３１２ではＰＲＥ＿ＩＤ［０］がＵＮＤＥＦでないかを判定する。前述のようにイベント情報エントリ６２１に対する処理完了時点でＰＲＥ＿ＩＤ［０］＝０である。イベント情報エントリ６２２乃至６３１はバンク番号＝１を対象としているためＰＲＥ＿ＩＤ［０］は更新されない。そのため、ステップ２３１２では判定の結果、Ｙｅｓと判定されステップ２３１３へ進む。ステップ２３１３ではＰＲＥ＿ＩＤ［０］＝０をマスタ情報として付加し、図２６の２６３２を出力する。マスタ情報付きイベントを出力後はステップ２３１７に進み、まだ読み込むデータが存在するためステップ２３０６へ戻る。
【０１３１】
上記で説明した手順をイベント情報エントリ６３３乃至６３８、６５１及び６５２まで繰り返し、図２６の２６３３乃至２６３８、２６５１及び２６５２のマスタ情報付きイベント情報として出力する。本実施形態での最終的なマスタ情報付きイベント情報２１０４は図２６となる。
【０１３２】
本実施形態では、ＡＣＴ及びＰＲＥコマンドへのマスタ情報の関連付けは、該当するバンクの直前のＲＤもしくはＷＲコマンドのマスタ情報とした。ＡＣＴ及びＰＲＥコマンドはＤＲＡＭのページミスに伴うページオープン及びクローズをするためのコマンドである。ページオープン及びクローズは直前のＲＤもしくはＷＲコマンドだけが関係しているのではなく、直後のＲＤもしくはＷＲコマンドも関係して発生する。そのため、ＡＣＴ及びＰＲＥコマンドに対しては、直前のＲＤもしくはＷＲコマンドのマスタ情報ではなく、直後のＲＤもしくはＷＲコマンドのマスタ情報と関連付けてもよい。その場合はＡＣＴ、ＰＲＥコマンドを読み込んだ際に一旦バッファに格納して、同バンクのＲＤもしくはＷＲコマンドが検出されたタイミングでマスタ情報を関連付けて出力する。また、直前のＲＤもしくはＷＲコマンドのマスタ情報と直後のＲＤもしくはＷＲコマンドのマスタ情報の両方を関連付けてもよい。この方法だと、イベント情報エントリの読み込みでＲＤもしくはＷＲコマンドを読み込んだ際に、バンク毎にまとめて（ＰＲＥコマンドやＡＣＴコマンドと一緒に）マスタ情報付きイベントを出力する。そのため、出力されるイベントが時系列に並ばなくなるが、全てのイベント情報に対する処理が終わった後に、発生時間順にイベントを並び替えれば図２６と同等の時系列のマスタ情報付きイベント情報が生成される。
【０１３３】
また、本実施形態では関連付け手段２１０３のフローでは事前に全てのマスタイベント情報を解析してＲＤ及びＷＲコマンドを特定してからイベント情報にマスタ情報を関連付けている。しかし、マスタイベント情報とイベント情報を発生時刻順に読み込んで、順次処理をしてもマスタ情報付きイベント情報を作成できる。このフローだと、コマンドキューに蓄積されたコマンドがイベント情報を読み込んだタイミングで一つポップされるため、コマンドキューで使用する資源（ハードディスクやメモリ）を最小限に抑えることができる。
【０１３４】
また、本実施形態では、バス２０８及びメモリコントローラ２０５はデータアクセス要求を内部で並び替えない前提を設けた。しかし、並び替えが起こってもマスタ情報付イベント情報を作成することは可能である。例えば、同一アドレスに対しての並び替えが無いならば、ステップ２３０９で、読み込んだイベント情報エントリのマスタ情報以外の各項目と一致するコマンドを、コマンドキューの先頭から順に探し、ポップすればよい。上記では同一アドレスに対しての並び替えが無い前提を設けた。しかし、同一アドレスに対しての並べ替えがあっても、並び替えのルールが決まっている限り、そのルールに基づいてデータアクセス要求からコマンドの特定をすることができるため、マスタ情報付きイベント情報を作成することは可能である。
【０１３５】
また、本実施形態においては関連付け手段２１０３を、シミュレーション後別の処理として前記コンピュータ装置上で実行するとしたが、シミュレーション処理内でマスタ情報をイベントと関連付けることも可能である。例えばマスタモニタ２００１とモニタ２１１で検出される情報を受けて、マスタ情報付きイベント情報を作成する機能を持つ関連付けモジュールをテストベンチ内で実装する。モジュールとは機能的にまとまった部分を意味する。関連付け手段２１０３をテストベンチ内でモジュールとして実装することでシミュレーション内にてマスタ情報付きイベント情報を作成することができる。
【０１３６】
マスタ情報付きイベント情報２１０４はバンク状態分類手段２１０５に入力され、バンク毎に状態を分類する。本実施形態ではバンク状態分類手段２１０５は第一の実施形態と同様の状態に分類するが、動作状態と一部の動作不可状態はマスタ情報を関連付ける。そのため、第一の実施形態で使用した図７のフローに対しマスタ情報を関連付けるためのステップを追加した図２７のフローを用いる。本実施形態では図７のフローと重複する箇所の説明は割愛し、追加されたステップのみを説明する。第一の実施形態で説明したように、動作状態はＲＤもしくはＷＲコマンドによって分類されるため、ＲＤもしくはＷＲコマンドのマスタ情報と関連付ける。一方、動作不可状態は同一バンクで直前に発生したＲＤもしくはＷＲコマンドのマスタ情報と関連付ける。動作不可状態は二つのコマンド間の時間制約に基づいて分類されるため、第一のコマンドと第二のコマンドのどちらも動作不可状態を引き起こす原因となるが、本実施形態では第一のコマンドのマスタ情報を動作不可状態と関連付けるものとする。ただし、前記関連付け手段２１０３の説明で述べたようにＲＥＦコマンドはマスタ情報とは無関係でマスタ情報が関連付けられていない。そのため、ＲＥＦコマンドにより分類される動作不可状態にはマスタ情報は関連付けない。
【０１３７】
ここから図２７のフローのうち、図７のとの差分を説明する。まず、ステップ２７０１はＳＡＭＥ＿ＰＲＥ＿ＩＤとＤＩＦＦ＿ＰＲＥ＿ＩＤをＵＮＤＥＦに設定し初期化する。ＳＡＭＥ＿ＰＲＥ＿ＩＤはステップ７０１で指定されたバンク番号の直前のコマンドのマスタ情報を意味する。ＤＩＦＦ＿ＰＲＥ＿ＩＤはステップ７０１で指定されたバンク以外の直前のコマンドに関連づいたマスタ情報を意味する。ステップ２７０１はステップ７０３の直後に挿入される。ＳＡＭＥ＿ＰＲＥ＿ＩＤはステップ２７０６で更新される。ステップ２７０６はステップ７２５の直後に挿入され、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤとＳＡＭＥ＿ＰＲＥ＿ＴＩＭＥの更新と共に、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤと関連付いたマスタ情報をＳＡＭＥ＿ＰＲＥ＿ＩＤに設定する。ＤＩＦＦ＿ＰＲＥ＿ＩＤはステップ２７０７で更新される。ステップ２７０７はステップ７２７の直後に挿入され、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤとＤＩＦＦ＿ＰＲＥ＿ＴＩＭＥの更新と共に、ＤＩＦＦ＿ＰＲＥ＿ＣＭＤと関連付いたマスタ情報をＤＩＦＦ＿ＰＲＥ＿ＩＤに設定する。
【０１３８】
動作状態に対するマスタ情報の関連付けはステップ２７０２で行われる。ステップ２７０２はステップ７０９の直後に挿入され、ステップ７０９で設定した４ｃｙｃｌｅ分の動作状態に対してＳＡＭＥ＿ＰＲＥ＿ＩＤをマスタ情報として関連付ける。また動作不可状態に対するマスタ情報の関連付けはステップ２７０４及びステップ２７０５で行われる。ステップ２７０４はステップ７１５の直後に挿入される。ステップ２７０４では、同バンクのコマンド間のサイクル数と一致する制約が存在し、該当するサイクル数分を動作不可状態に設定（ステップ７１５）した後、該当するサイクル数分の動作不可状態とＳＡＭＥ＿ＰＲＥ＿ＩＤをマスタ情報として関連付ける。ステップ２７０５はステップ７２１の直後に挿入される。ステップ２７０５では、異なるバンクのコマンド間のサイクル数と一致する制約が存在し、該当するサイクル数分を動作不可状態に設定（ステップ７２１）した後、該当するサイクル数分の動作不可状態とＤＩＦＦ＿ＰＲＥ＿ＩＤをマスタ情報として関連付ける。前述したようにＲＥＦコマンドによって分類される動作不可状態に対してはマスタ情報を関連付けないが、関連付けをしないことを明確にするため、ステップ２７０３をステップ７１２の直後に挿入している。ただし、本実施形態では関連付けできるマスタが存在しないことを意味するＮＯをマスタ情報とするものとする。
【０１３９】
以下、図２６のマスタ情報付きイベント情報エントリ２６１０乃至２６３８、２６５１及び２６５２を実際の入力としたときを例としてバンク状態分類手段２１０５の処理を具体的に説明する。図２８はマスタ情報付きイベント情報エントリ２６１０乃至２５３８を入力とし、各バンクの状態とマスタ情報と関連付けた分類結果を示している。以下、分類結果を参照しながらマスタ情報付きイベント情報エントリ２６１０乃至２６３８の処理を説明する。尚、本実施形態で使用している図２６のマスタ情報付きイベント情報は、第一の実施形態で使用した図６のイベント情報を入力として関連付け手段２１０３によって作成されているため、第一の実施形態とバンク状態の分類は同じである。本実施形態では、バンク状態の分類に関する説明は割愛し、それぞれのバンク状態に対しマスタ情報を関連付ける手順を具体的に説明する。
【０１４０】
まずはバンク番号０を対象に説明する。ステップ７０４で２６１０のマスタ情報付きイベント情報エントリを読み込む。２６１０のマスタ情報付きイベント情報エントリは最終的にステップ７２３で１サイクル分休止状態に分類される。ステップ２７０６では２６１０のマスタ情報がＮＯであるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝ＮＯに設定する。
【０１４１】
次のステップ７０４では２６１１のマスタ情報付きイベント情報エントリを読み込む。２６１１はバンク番号１を対象にしたコマンドでマスタ情報＝ＮＯあるため、ステップ２７０７でＤＩＦＦ＿ＰＲＥ＿ＩＤ＝ＮＯに設定する。
【０１４２】
次のステップ７０４では２６１２のマスタ情報付きイベント情報エントリを読み込む。２６１２のイベントはバンク番号０へのＲＤコマンドであり、ステップ７１４でテーブルに該当ありと判定されステップ７１５で３０サイクル分動作不可状態１００２に分類される。ステップ２７０４では動作不可状態１００２と関連付けるマスタ情報を決定する。ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝ＮＯであるため、動作不可状態１００２と関連付けるマスタ情報はＮＯ（２８０１）となる。その後、ステップ２７０６では２６１２のマスタ情報＝０であるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝０を設定する。
【０１４３】
次のステップ７０４では２６１３のマスタ情報付きイベント情報エントリを読み込む。２６１３はバンク番号０へのＲＤコマンドであり、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドであることからステップ７０９で４サイクル分動作状態１００３に分類しステップ２７０２へ進む。ステップ２７０２では動作状態１００３に関連づけるマスタ情報をＳＡＭＥ＿ＰＲＥ＿ＩＤの０（２８０２）に設定する。その後、ステップ２７０６では２６１３のマスタ情報＝０であるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝０に設定する。
【０１４４】
次のステップ７０４では２６１４のマスタ情報付きイベント情報エントリを読み込む。２６１４はバンク番号０へのＲＤコマンドであり、ＳＡＭＥ＿ＰＲＥ＿ＣＭＤがＲＤコマンドであることからステップ７０９で４サイクル分動作状態１００４に分類しステップ２７０２へ進む。ステップ２７０２では動作状態１００４に関連づけるマスタ情報をＳＡＭＥ＿ＰＲＥ＿ＩＤの０（２８０３）に設定する。２６１４のマスタ情報付きイベント情報エントリ読み込みではさらにステップ７２４で１サイクル分休止状態１００５を分類する。その後、ステップ２７０６では２６１４のマスタ情報＝０であるためＳＡＭＥ＿ＰＲＥ＿ＩＤ＝０に設定する。
【０１４５】
その後のマスタ情報付きイベント情報エントリ２６１５乃至２６２０まではバンク番号１を対象としたコマンドであるため、ステップ７０７はＮｏと判定される。２６２０のマスタ情報付きイベント情報エントリの処理終了時点では２６２０のマスタ情報＝４であるため、ＤＩＦＦ＿ＰＲＥ＿ＩＤ＝４に設定する。
【０１４６】
次のステップ７０４では２６２１のマスタ情報付きイベント情報エントリを読み込む。この時点でＳＡＭＥ＿ＰＲＥ＿ＣＭＤはＲＤであるため、ステップ７０９で４サイクル分動作状態１００６に分類し、ステップ２７０２へ進む。ステップ２７０２では動作状態１００６に関連付けるマスタ情報をＳＡＭＥ＿ＰＲＥ＿ＩＤの０（２８０４）に設定する。さらにステップ７１４でテーブルに該当ありと判定され、ステップ７１５で４６サイクル分動作不可状態１００７に分類し、ステップ２７０４へ進む。ステップ２７０４では動作不可状態１００７と関連付けるマスタ情報はＳＡＭＥ＿ＰＲＥ＿ＩＤの０（２８０５）に設定する。その後、ステップ２７０６では２６２１のマスタ情報＝０であるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝０に設定する。
【０１４７】
その後のマスタ情報付きイベント情報エントリ２６２２乃至２６３１まではバンク番号１を対象としたコマンドであるため、ステップ７０７はＮｏと判定される。２６３１のマスタ情報付きイベント情報エントリの処理終了時点では、２６３１のマスタ情報＝４であるため、ＤＩＦＦ＿ＰＲＥ＿ＩＤ＝４と設定する。
【０１４８】
次のステップ７０４では２６３２のマスタ情報付きイベント情報エントリを読み込む。２６３２のマスタ情報付きイベント情報エントリはバンク番号０へのＡＣＴコマンドであり、ステップ７１４でテーブルに該当ありと判定されステップ７１５で４０サイクル分動作不可状態１００８に分類し、ステップ２７０４へ進む。ステップ２７０４では動作不可状態１００８と関連付けるマスタ情報はＳＡＭＥ＿ＰＲＥ＿ＩＤの０（２８０６）に設定する。その後、ステップ２７０６では２６３２のマスタ情報＝０であるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝０に設定する。
【０１４９】
その後のマスタ情報付きイベント情報エントリ２６３３乃至２７３８までを読み込み、上記で説明した手順で動作状態及び動作不可状態に対してマスタ情報を関連付けた結果が２８０７乃至２８１３となる。
【０１５０】
バンク番号１についても、バンク番号０と同様の手順で動作状態及び動作不可状態に対してマスタ情報を関連付けることができる。但しバンク番号１では異なるバンク間の制約により動作不可状態となる１０１８と１０２０が存在するため、これらの動作不可状態に対してのマスタ情報の関連付けについてのみ具体的に説明する。
【０１５１】
まずステップ７０４で２６１０のマスタ情報付きイベント情報エントリを読み込む。２６１０はバンク番号０を対象にしたコマンドでマスタ情報＝ＮＯであるため、ステップ２７０７でＤＩＦＦ＿ＰＲＥ＿ＩＤ＝ＮＯに設定する。
【０１５２】
次のステップ７０４では２６１１のマスタ情報付きイベント情報エントリを読み込む。２６１１のイベントはバンク番号１のＡＣＴコマンドであり、ステップ７１８で１サイクル分休止状態１０１７に分類した後、ステップ７２０でテーブルに該当ありと判定され、ステップ７２１に進む。ステップ７２１では４サイクル分を動作不可状態１０１８に分類し、ステップ２７０５へ進む。ステップ２７０５では、動作不可状態１０１８と関連付けるマスタ情報をＤＩＦＦ＿ＰＲＥ＿ＩＤのＮＯ（２８１４）に設定する。その後、ステップ２７０６では、２６１１のマスタ情報＝ＮＯであるため、ＳＡＭＥ＿ＰＲＥ＿ＩＤ＝ＮＯに設定する。
【０１５３】
その後のマスタ情報付きイベント情報エントリ２６１２乃至２６１４まではバンク番号０を対象としたコマンドであるため、ステップ７０７はＮｏと判定される。２６１４のマスタ情報付イベント情報エントリの処理終了時点では２６１４のマスタ情報＝０であるため、ＤＩＦＦ＿ＰＲＥ＿ＩＤ＝０に設定する。
【０１５４】
次のステップ７０４では２６１５のマスタ情報付きイベント情報エントリを読み込む。２６１５のイベントはバンク番号１のＷＲコマンドであり、ステップ７１８で３５サイクル分休止状態１０１９に分類した後、ステップ７２０でテーブルに該当ありと判定され、ステップ７２１に進む。ステップ７２１では１５サイクル分を動作不可状態１０２０に分類し、ステップ２７０５へ進む。ステップ２７０５では、動作不可状態１０２０と関連付けるマスタ情報をＤＩＦＦ＿ＰＲＥ＿ＩＤの０（２８１５）に設定する。
【０１５５】
その後のマスタ情報付きイベント情報エントリ２６１６乃至２７３８までを読み込み、上記で説明した手順で動作状態及び動作不可状態に対してマスタ情報を関連付けた結果が２８１６乃至２８３２となる。
【０１５６】
本実施形態の動作不可状態は第一の実施形態で説明したように、ＲＥＦコマンドにより分類される動作不可状態以外は第一のコマンドと第二のコマンドの時間がコマンド間の時間制約と一致する場合に分類される。既に説明した通り、本実施形態では動作不可状態へのマスタ情報の関連付けは、第一のコマンド側に動作不可状態となった原因があるという考えに基づき、第一のコマンドのマスタ情報とした。しかし、ページミスによる動作不可状態やＲｅａｄ−ｔｏ−Ｗｒｉｔｅ及びＷｒｉｔｅ−ｔｏ−Ｒｅａｄによる動作不可状態は第二のコマンドが原因で分類されたと考えることもできる。そのため、第二のコマンドのマスタ情報を動作不可状態に関連付けることも可能である。また、第二の実施形態で説明した詳細分類された動作不可状態に対して、それぞれどのコマンドのマスタ情報を関連付けるかを決めてもよい。例えば、ページミスによる動作不可状態は以下の３つのカテゴリに分けることができる。一つ目はＷｒｉｔｅ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態とＲｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態。二つ目はプリチャージ動作不可状態。三つ目はアクティベート動作不可状態である。ページミスは同一バンクかつ別の行アドレスへのＲＤもしくはＷＲコマンドが連続して発生したときに発生する。つまり第一及び第二のどちらのＲＤもしくはＷＲコマンドもページミスを引き起こす原因となっている。ここでは動作不可状態に対しては、第一のコマンドのマスタ情報と第二のコマンドのマスタ情報のどちらにも関連付けるものとする。その場合、一つ目のカテゴリのＷｒｉｔｅ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態とＲｅａｄ−ｔｏ−Ｐｒｅｃｈａｒｇｅ動作不可状態に対しては第一のＲＤもしくはＷＲコマンドのマスタ情報を関連付けることとする。また、二つ目と三つ目のカテゴリのプリチャージ動作不可状態とアクティベート動作不可状態に対しては第二のＲＤもしくはＷＲコマンドのマスタ情報を関連付けることとする。またＲｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態とＷｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態も第一のＲＤもしくはＷＲコマンドと第二のＲＤもしくはＷＲコマンドが原因となって引き起こされている。動作不可状態に対し一つのマスタ情報しか関連付けられないとするならば、スイッチング動作不可状態は第一もしくは第二のコマンドのどちらか一方のマスタ情報を関連付ける。ここでは、第二のコマンドのマスタ情報を関連付けるものとする。例えばＲｅａｄ−ｔｏ−Ｗｒｉｔｅスイッチング動作不可状態には第二のＷＲコマンドのマスタ情報を関連付け、Ｗｒｉｔｅ−ｔｏ−Ｒｅａｄスイッチング動作不可状態には第二のＲＤコマンドのマスタ情報を関連付けることとする。上記では動作不可状態を引き起こす原因となる第一と第二のコマンドのマスタ情報と動作不可状態の関連付けの方法の一例を説明した。しかし、コマンドのマスタ情報と動作不可状態の関連付けが論理的に説明できれば、どんな条件でも動作不可状態とマスタ情報を関連付けることが可能である。
【０１５７】
ここまでの説明では第一の実施形態を基に、バンク状態分類手段２１０５でマスタ情報を関連付けたバンク状態情報２１０６を出力する例を示した。バンク状態情報２１０６にはバンク２２０乃至２２７の８つ分の情報を分けて格納されている。ここからはバンク２２０乃至２２７のマスタ情報を関連付けた状態に基づいて、ＤＲＡＭ２０９の状態をマスタ情報と関連付けて分類するＤＲＡＭ状態分類手段２１０７について説明する。ＤＲＡＭ状態分類手段２１０７は第一の実施形態の説明で用いた図９と同様のフローとなる。ただし、バンクの動作不可状態にマスタ情報が関連付けられているため、二つ以上のバンクで動作不可状態となっている場合は、どれか一つのマスタ情報を選択する。本実施形態ではより大きいバンク番号の動作不可状態が優先されるものとする。一方でＤＲＡＭの動作状態と関連付くマスタ情報は同時刻で唯一存在するバンクの動作状態に関連付いたマスタ情報とする。
【０１５８】
以下、図９及び図２８を用いて、具体的にＤＲＡＭ状態に関連づくマスタ情報を決定する手順を説明する。ＤＲＡＭの動作状態に対しては、前述のようにバンクの動作状態に関連付いたマスタ情報を関連付けるため説明は割愛する。また、図２８の１０４３、１０５５、１０７２、１０７４、１０７６のＤＲＡＭの動作不可状態は、一つのバンクが動作不可状態でそれ以外のバンクが休止状態の場合を示している。これらのＤＲＡＭの動作不可状態に対しては、バンクの動作不可状態に関連付いたマスタ情報を関連付ける。例えば１０７６のＤＲＡＭの動作不可状態はバンク番号０の１０１６の動作不可状態に起因しており、バンク番号０の動作不可状態に関連付くマスタ情報＝１を１０７６の動作不可状態に関連付ける。本実施形態では図２８に示すように、二つ以上のバンクで動作不可状態になる箇所は３つ存在する。１０４２、１０４８及び１０５２のＤＲＡＭ状態である。本実施形態では前述したように、二つ以上のバンクで動作不可状態が存在する場合のＤＲＡＭに関連付くマスタ情報は、バンク番号が大きい方が優先される。ＤＲＡＭ状態１０４２ではバンク番号１の動作不可状態に関連付いたマスタ情報＝ＮＯが、１０４８ではバンク番号１の動作不可状態に関連付いたマスタ情報＝０がそれぞれ関連付けられる。ＤＲＡＭ状態１０５２ではバンク番号１の動作不可状態に関連付いたマスタ情報＝３が関連付けられる。図９のステップで説明すると、ＤＲＡＭの動作状態に対するマスタ情報の関連付けはステップ９０４と同時に実施され、ＤＲＡＭの動作不可状態に対するマスタ情報の関連付けはステップ９０６と同時に実施される。本実施形態で、上記条件でＤＲＡＭ状態に対しマスタ情報を付加した結果が図２８の２８３３乃至２８６５となる。
【０１５９】
本実施形態では２つ以上のバンクで動作不可状態が存在する場合の、ＤＲＡＭ状態に関連付くマスタ情報はより大きいバンク番号に関連付いたマスタ情報とした。しかし、第二の実施形態のようにバンクの詳細な動作不可状態の優先順位に基づいてＤＲＡＭの動作不可状態を分類する手順と同様に、優先順位の高い動作不可状態に関連付くマスタ情報をＤＲＡＭの動作不可状態に関連付けることもできる。また、予め決められたルールに基づいてＤＲＡＭの動作不可状態にマスタ情報を関連付けることは容易に実施できるため、ＤＲＡＭの動作不可状態にマスタ情報を関連付けるルールは前述したルールのみに限定されない。
【０１６０】
続いて、本実施形態における統計処理２１０９について説明する。第一の実施形態との差分は本実施形態ではマスタ毎の統計処理が追加されることである。第一の実施形態の統計処理１０７では図１７のフローを使用しているが、本実施形態のマスタ毎の統計処理も同様に図１７を用いることができる。以下、図１７を使用したマスタ毎の統計処理２１０９を２パタン説明する。
【０１６１】
一つ目は図１７のフロー処理をマスタ数と同じ回数分実行する方法である。この場合はステップ１７０１での入力で単位時間だけでなくマスタ情報も指定する。次のステップ１７０２での状態情報読み込みで指定されたマスタ情報に関連付いた状態のみを読み込む。この処理を全てのマスタに対して実施することでマスタ毎の統計処理を実施することができる。
【０１６２】
二つ目は、図１７のフロー処理を１回のみ実行する方法である。ステップ１７０５では該当する状態の発生回数及びクロックサイクル数をカウントアップしているが、この方法では、ステップ１７０５でマスタ別に発生回数とクロックサイクル数をカウントアップする。マスタ数分の発生回数及びクロックサイクル数を保持する必要があるため、一つ目の方法よりもデータを保持する領域が増えるが１回のフロー処理でマスタ毎の統計処理を実施することができる。
【０１６３】
続いて、本実施形態における表示手段２１１０の表示例を図３０乃至図３２を使って説明する。図３０乃至図３２は、図２８のマスタ情報と関連付けたＤＲＡＭ状態の具体的な表示例である。
【０１６４】
図３０のテーブルは表示手段２１１０の表示例の一つを示している。図３０のテーブルでは、各マスタが関連付けられたＤＲＡＭの動作状態及び動作不可状態の発生回数と発生サイクル数を示している。
【０１６５】
図３１のパイチャートは表示手段２１１０の表示例の一つを示している。図３１のパイチャートはＤＲＡＭの動作状態と動作不可状態がどのマスタと関連付けられているかの割合を示している。
【０１６６】
図３２の棒グラフは表示手段２１１０の表示例の一つを示している。図３２の棒グラフはマスタ毎に関連付けられたＤＲＡＭの動作状態及び動作不可状態のサイクル数を並べて表示している。マスタ毎に並べることでマスタ毎の転送効率を視覚的に確認することができ、効率的に性能のボトルネックとなるマスタを判別することができる。
【０１６７】
以上、説明した方法で、第一の実施形態に対してバンク状態及びＤＲＡＭ状態とマスタ情報を関連付け、表示手段２１１０により表示することができる。
【０１６８】
（第四の実施形態）
第四の実施形態を図２、図４、図２１、図３３を使って説明する。本実施形態は第三の実施形態に対し、マスタ情報との関連付け手段２１０３を検出手段１０１に含める点が異なる。より具体的にはモニタ２１１が監視する信号でイベントに関連づくマスタ情報が識別できるように、システムＬＳＩ２００を構成する。
【０１６９】
ここから、本実施形態の性能解析及び解析結果表示処理について説明する。図３３は性能解析及び解析結果表示処理の全体を示す処理概念図である。ここでは第三の実施形態との差分のみを説明する。第三の実施形態と異なるのはマスタイベント検出手段２１０１及び関連付け手段２１０３を使わずに、検出手段１０１のみでマスタ情報付きイベント情報２１０４を出力することである。本実施形態におけるテストベンチ構成図は第一の実施形態で用いた図２と同じとなる。ただし、モニタ２１１ではマスタ情報と関連付いたイベントを検出する。マスタ情報とイベントを関連付けるために、モニタ２１１はイベントを検出に必要なハードウェア信号を監視するだけでなく、そのイベントに関連付けられたマスタ情報を示す信号も監視する。
【０１７０】
具体的に監視する信号を説明する前に、図２のバス２０８がマスタに応答を返す仕組みについて説明する。第三の実施形態の説明では、マスタからスレーブへのデータアクセス要求する際に、どのスレーブへアクセスするかは、バス２０８でバスアドレスを解析してアクセス先のスレーブを決定することを述べた。また、ＡＭＢＡ４を例にするとマスタとバス２０８の間の制御信号は、アドレスチャネル、ライトデータチャネル、ライトレスポンスチャネル、リードデータチャネルの４つのチャネルで構成されることを述べた。前記チャネルのライトレスポンスチャネル及びリードデータチャネルはデータアクセス要求元へアクセスが完了したことを通知するために使用される。バス２０８はスレーブからのアクセス完了通知を、データアクセス要求元のマスタへ通知する役割を持つ。例えば、ＣＰＵ２０１からバス２０８へのデータアクセス要求をＡとし、バス２０８がデータアクセス要求Ａを解析してアクセス先がメモリコントローラ２０５だったとする。この場合、バス２０８はメモリコントローラ２０５へデータアクセス要求を発行するが、そのデータアクセス要求をＡ‘とする。メモリコントローラ２０５はＤＲＡＭ２０９へのデータアクセスが完了するとデータアクセス完了通知をバス２０８へ返す。このデータアクセス完了通知をＢ’とする。バス２０８はＢ’のデータアクセス完了通知を受けるとＢ’を解析してＣＰＵ２０１へデータアクセス完了を通知する。このデータアクセス完了通知をＢとする。つまりバス２０８はＣＰＵ２０１からＡを受けて解析しメモリコントローラ２０５へＡ’を発行し、次にメモリコントローラ２０５からＢ‘を受けて解析しＣＰＵ２０１へＢを通知する。これがバス２０８を介してマスタからのデータアクセス要求が完了するまでのフローである。バス２０８はＡのデータアクセス要求を解析してＡ’を発行するが、どのマスタのアドレスチャネルからのデータアクセス要求であるかを判別することができるため、Ａ’にマスタ情報を付加することが可能である。ＡＭＢＡ４を例にすると、アドレスチャネルの属性情報となるａｒｉｄやａｗｉｄもしくはａｒｕｓｅｒやａｗｕｓｅｒの一部のビットにマスタ情報を割り当てることで、バス２０８からスレーブへのデータアクセス要求にマスタ情報を付加することができる。つまり、スレーブは受けたデータアクセス要求がどのマスタからの要求なのかを判別することができる。
【０１７１】
スレーブはデータアクセス要求を受けると、付加された属性情報を解析してスレーブ内でのアクセス領域の特定が可能となることは第三の実施形態で既に述べた。メモリコントローラ２０５ではＤＲＡＭ２０９のバンク番号、行アドレス及び列アドレスがＤＲＡＭ２０９内のアクセス領域となる。メモリコントローラ２０５はアクセス領域を特定すると、アクセスするためのＤＲＡＭ制御コマンドを発行する。例えば、バンク番号０はクローズ状態であるときに、メモリコントローラ２０５がバンク番号＝０、行アドレス＝０ｘ０１００、列アドレス＝０ｘ００１０へのリードアクセスを特定すると、以下の２つのコマンドを発行する。１つ目はバンク番号＝０、行アドレス０ｘ０１００を指定するＡＣＴコマンド、２つ目はバンク番号＝０、列アドレス０ｘ００１０を指定するＲＤコマンドである。メモリコントローラ２０５は、データアクセス要求の要求元のマスタ情報を判別することができるため、前述のＡＣＴ及びＲＤコマンドに対しマスタ情報を関連付けることができる。もし、バンク番号０がオープン状態で行アドレス＝０ｘ００００が指定されていたタイミングで、上記アクセス領域へのリードアクセスが特定されると、ページミスが発生するためＰＲＥコマンド、ＡＣＴコマンド、ＲＤコマンドの順でコマンドが発行される。この場合、ＰＲＥコマンドにもマスタ情報を関連付けることができる。上記で説明したように、メモリコントローラ２０５は、データアクセス要求を解析した結果とＤＲＡＭの状態（各バンクのオープン／クローズ）の関係を受けて、ＰＲＥ及びＡＣＴコマンドを発行する。つまり、メモリコントローラ２０５はＰＲＥ及びＡＣＴコマンドがいずれのデータアクセス要求によって発行されたかを特定できるため、いずれのマスタによって発行されたかを関連付けることができる。ただし、ＰＲＥコマンドは必ずしもマスタ情報と関連付けないことがある。例えば、ＲＥＦコマンドのように全てのバンクがクローズ状態でなければ実行できないコマンドに対しては、メモリコントローラ２０５はＲＥＦコマンドの前にバンクをクローズするＰＲＥコマンドを発行する。ＲＥＦコマンドはデータアクセス要求とは無関係に発行されるため、ＲＥＦコマンド前のＰＲＥコマンドに対してはマスタ情報を関連付ける必要がない。上記ではＰＲＥ及びＡＣＴに対する説明をしたが、メモリコントローラ２０５はＲＤ及びＷＲコマンドに対しても前述の例のように同様にマスタ情報を関連付けることができる。本実施形態では第三の実施形態と同様にＲＤ，ＷＲ，ＰＲＥ，ＡＣＴ以外のコマンドはデータアクセス要求とは無関係に発行されるものとし、マスタ情報を関連付けない。
【０１７２】
第一乃至第三の実施形態では、モニタ２１１によって監視される信号は図４に示すＤＤＲ３−ＳＤＲＡＭインタフェース信号としており、モニタ２１１でマスタ情報は検出することができない。しかし、メモリコントローラ２０５がバス２０８から受け取ったマスタ情報をＰＨＹ２０７及びＤＲＡＭ２０９に伝搬するようにシステムＬＳＩを構成すれば、モニタ２１１でイベントと関連付くマスタ情報を検出することが可能である。具体的には上記で説明したようにメモリコントローラ２０５は、受け取ったマスタ情報付きのデータアクセス要求をＰＨＹ２０７へ伝達する際にマスタ情報を付加するように実装する。さらにＰＨＹ２０７も同様にメモリコントローラ２０５から受け取ったマスタ情報付きデータアクセス要求を受けＤＲＡＭへコマンド発行する際にマスタ情報を付加するように実装する。上記を実施し、モニタ２１１でマスタ情報を示す信号も監視対象に含めることで、モニタ２１１からマスタ情報付きイベントを出力することができる。
【０１７３】
また、図２ではモニタ２１１はＰＨＹ２０７とＤＲＡＭ２０９の間のインタフェースを監視しているが、イベント検出はメモリコントローラ２０５とＰＨＹ２０７の間のインタフェースを監視しても可能である。そのため、必ずしもＰＨＹ２０７とＤＲＡＭ２０９間にマスタ情報が必要ではなく、メモリコントローラ２０５とＰＨＹ２０７間のインタフェースにマスタ情報があればよい。
【０１７４】
マスタ情報付きイベント情報２１０４が出力された後のバンク状態分類手段２１０５、ＤＲＡＭ状態分類手段２１０７、統計処理２１０９、表示手段２１１０については第三の実施形態と同様になるため説明は割愛する。
【０１７５】
以上、説明した方法で、第三の実施形態と同様にバンク状態及びＤＲＡＭ状態とマスタ情報を関連付け、表示手段２１１０により表示することができる。
【０１７６】
（第五の実施形態）
第五の実施形態を図９、図２７、図２８、図３４を使って説明する。本実施形態は第三の実施形態に対し、マスタ情報、バンク状態及びＤＲＡＭ状態を波形で表示する。
【０１７７】
既に述べたように、波形とはシステムＬＳＩ及びその周辺回路の信号線の変化を時系列に表示するもので、システムＬＳＩの開発においては一般的に使用されている。波形はＥＤＡツールベンダ各社が提供している波形表示ツール（波形ビューアー）で表示することが可能である。各社、波形ビューアーで高速に処理するために独自の波形ファイルフォーマットが存在する。例えば、ＶＣＤ（Ｖａｌｕｅ  Ｃｈａｎｇｅ  Ｄｕｍｐ、ＩＥＥＥ  １３６４  ｓｔａｎｄａｒｄ）ファイルフォーマットは、ＡＳＣＩＩ形式で記述され、どの波形ビューアーでも表示可能である。ＶＣＤファイルフォーマットはヘッダーセクション、変数定義セクション、初期値設定セクション及び値変化セクションの４つのセクションで構成される。ヘッダーセクションはファイル作成時刻や時間単位定義等を記載する。変数定義セクションでは波形変化を記録する対象の信号やポートを記載する。初期値設定セクションでは、定義した変数の初期値を記載する。値変化セクションでは、どの時刻でどの変数が何の値に変化するかを記載する。これらの情報をＶＣＤファイルフォーマットに従って記載することで波形ビューアーでの表示が可能となる。
【０１７８】
ここから、第三の実施形態で説明したマスタ情報、バンク状態及びＤＲＡＭ状態を波形で表示する手順を説明する。図２８は第三の実施形態で説明した各バンクの状態と関連付けたマスタ情報及びＤＲＡＭの状態と関連付けたマスタ情報を示している。図２８に示す各バンクの状態と関連付けたマスタ情報は図２７に示すフローで決定される。このフローではどのサイクル（時刻）でバンクの状態及び関連付くマスタ情報が変化するかを以下のステップで決定している。
・ステップ７０９及びステップ２７０２（動作状態）
・ステップ７１２及びステップ２７０３（動作不可状態）
・ステップ７１５及びステップ２７０４（動作不可状態）
・ステップ７１８、ステップ７２３（休止状態）
・ステップ７２１及びステップ２７０５（動作不可状態）
前述したようにＶＣＤファイルフォーマットでは記録する変数とその値変化の情報が必要である。図２７のフローを用いることで、波形表示対象のバンク状態及び関連付くマスタ情報がどの時刻で何の値に変化するかを記録することが可能である。同様の考えでＤＲＡＭの状態及び関連付くマスタ情報も図９のフローのステップ９０４（動作状態）、ステップ９０６（動作不可状態）、ステップ９０７（休止状態）で、どの時刻に何の値に変化するかを記録することが可能である。図３４は図２８の各バンク状態と関連付くマスタ情報及びＤＲＡＭ状態と関連付くマスタ情報を波形ビューアーで波形表示した例である。ＤＲＡＭ＿ＳｔａｔｅはＤＲＡＭ状態、ＤＲＡＭ＿Ｍａｓｔｅｒ＿Ｉｎｆｏは同時刻のＤＲＡＭ状態と関連付くマスタ情報を示している。ＢａｎｋＸ＿Ｓｔａｔｅ（Ｘ＝０〜７の整数）は各バンクの状態、ＢａｎｋＸ＿Ｍａｓｔｅｒ＿Ｉｎｆｏ（Ｘ＝０〜７の整数）は同時刻の各バンクの状態に関連付くマスタ情報を示す。一般的な波形ビューアーでは変数の値を文字列に置き換えて表示することが可能である。本実施形態ではＤＲＡＭ＿Ｓｔａｔｅ及びＢａｎｋＸ＿Ｓｔａｔｅ（Ｘ＝０〜７の整数）は２ビットの変数で０から３までの値を取ることができ、０は動作状態、１は動作不可状態、２は休止状態とし、３は使用しない。波形ビューアーで０に「ＴＲ」、１に「ＯＨ」、２に「ＩＤＬＥ」という文字列を割り当て表示させる。同様にＤＲＡＭ＿Ｍａｓｔｅｒ＿Ｉｎｆｏ及びＢａｎｋＸ＿Ｍａｓｔｅｒ＿Ｉｎｆｏ（Ｘ＝０〜７の整数）は１６ビットの変数で、０から０ｘＦＦＦＦまでの値を取ることができる。０ｘＦＦＦＦは割り当てるマスタ情報がないこと、０ｘＦＦＦＥは休止状態でのマスタ情報を示すものとし、０〜０ｘＦＦＦＤまではマスタ情報を示すものとする。本実施形態では０ｘＦＦＦＦは「ＮＯ」、０ｘＦＦＦＥは「ＮＡ」という文字列を割り当て表示させる。図３４の波形は数値を上記文字列で置き換えた結果を示している。また、波形ビューアーは文字列や値に対して表示する色を割り当てることができる。本実施形態では「ＴＲ」に緑、「ＯＨ」に橙、「ＩＤＬＥ」に灰色を割り当てることで、各バンクやＤＲＡＭの状態を視覚的により分かりやすく表示する。
【０１７９】
本実施形態ではＶＣＤファイルフォーマットを例に波形ファイルを作成する例を示した。しかし、ＶＣＤ以外の波形ファイルフォーマットでも、変数がどの時刻で何の値に変化するかをフォーマットに準拠して記録することは可能であり、ＶＣＤファイルフォーマットに限定されることはない。
【０１８０】
また、本実施形態では、各バンクの状態及びＤＲＡＭ状態は動作状態、動作不可状態、休止状態の３状態としたが、第二の実施形態で示したように動作不可状態をより詳細な動作不可状態に分類して波形で表示することも可能である。
【０１８１】
以上、説明した方法で、マスタ情報、バンク状態及びＤＲＡＭ状態を波形で表示することができる。
【符号の説明】
【０１８２】
１０１  検出手段
１０２  イベント情報
１０３  バンク状態分類手段
１０４  バンク状態情報
１０５  ＤＲＡＭ状態分類手段
１０６  ＤＲＡＭ状態情報
１０７  統計処理
【図１】
2020181334.tif 000003
【図２】
2020181334.tif 000004
【図３】
2020181334.tif 000005
【図４】
2020181334.tif 000006
【図５】
2020181334.tif 000007
【図６】
2020181334.tif 000008
【図７】
2020181334.tif 000009
【図８】
2020181334.tif 000010
【図９】
2020181334.tif 000011
【図１０】
2020181334.tif 000012
【図１１】
2020181334.tif 000013
【図１２】
2020181334.tif 000014
【図１３】
2020181334.tif 000015
【図１４】
2020181334.tif 000016
【図１５】
2020181334.tif 000017
【図１６】
2020181334.tif 000018
【図１７】
2020181334.tif 000019
【図１８】
2020181334.tif 000020
【図１９】
2020181334.tif 000021
【図２０】
2020181334.tif 000022
【図２１】
2020181334.tif 000023
【図２２】
2020181334.tif 000024
【図２３】
2020181334.tif 000025
【図２４】
2020181334.tif 000026
【図２５】
2020181334.tif 000027
【図２６】
2020181334.tif 000028
【図２７】
2020181334.tif 000029
【図２８】
2020181334.tif 000030
【図２９】
2020181334.tif 000031
【図３０】
2020181334.tif 000032
【図３１】
2020181334.tif 000033
【図３２】
2020181334.tif 000034
【図３３】
2020181334.tif 000035
【図３４】
2020181334.tif 000036