(57)【要約】【課題】  メモリ競合時間を正確に計測できるメモリ競合時間計測装置等を提供することである。【解決手段】  メモリ競合カウンタＭＣＣｋは、中央処理ユニットＣＰＵｋのネットワークユニットＮＵｋが、メモリ管理ユニットへのアクセスを開始してからメモリ管理ユニットより応答を受けるまでのターンアラウンドタイムのうち、他の中央処理ユニットとの競合がない場合のターンアラウンドタイムを超過している超過期間を、演算制御部ＯＣｋが実行する命令毎に特定する。そして、少なくともいずれかの命令について超過期間であった期間の累計を、メモリ競合時間として特定する。【選択図】図２
2005258617.tif 000002
【特許請求の範囲】
【請求項１】
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶するための無競合時ターンアラウンドタイムデータ記憶手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定する個別超過時間特定手段と、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する全体超過時間特定手段と、
を備えることを特徴とするメモリ競合時間計測装置。
【請求項２】
前記個別超過時間特定手段は、前記命令がベクトル命令である場合、当該ベクトル命令を構成する最後の要素に従って前記計測対象のプロセッサが前記メモリへのアクセスを開始してから当該計測対象のプロセッサが前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している期間を、当該ベクトル命令についての超過期間として特定するものである、
ことを特徴とする請求項１に記載のメモリ競合時間計測装置。
【請求項３】
無競合時ターンアラウンドタイムデータ記憶手段は複数の記憶領域を有しており、各々の当該記憶領域は、前記無競合時ターンアラウンドタイムデータと、フラグとを記憶するための記憶領域であり、
前記個別超過時間特定手段は、
前記計測対象のプロセッサが、前記命令を受け付けた旨の信号を発したとき、当該信号に応答して、前記無競合時ターンアラウンドタイムデータ記憶手段の記憶領域のいずれかを当該命令に割り当てる手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始した旨の信号を発したとき、当該信号に応答し、応答して以降、当該命令に割り当てられている記憶領域が記憶する前記無競合時ターンアラウンドタイムデータの値が０になるまでの間、当該無競合時ターンアラウンドタイムデータを、経過した時間に相当する量減算された状態へと更新する手段と、
前記命令に割り当てられている記憶領域が記憶する前記無競合時ターンアラウンドタイムデータの値が０になったことに応答して、当該記憶領域が記憶するフラグを、当該命令についての超過期間内であることを示す値へと更新する手段と、
前記命令に従って開始されたアクセスに前記メモリが応答したことを検知して、当該命令に割り当てられている記憶領域が記憶するフラグを、当該命令についての超過期間外であることを示す値へと更新する手段と、を備え、
前記全体超過時間特定手段は、少なくともいずれかのフラグが超過期間内であることを示す値をとっていた期間の長さを計測し、計測結果を、メモリ競合時間の計測結果として特定する手段を備える、
ことを特徴とする請求項１又は２に記載のメモリ競合時間計測装置。
【請求項４】
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶し、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定し、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する、
ことを特徴とするメモリ競合時間計測方法。
【請求項５】
コンピュータを、
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶するための無競合時ターンアラウンドタイムデータ記憶手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定する個別超過時間特定手段と、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する全体超過時間特定手段と、
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ等がメモリにアクセスする時間が他の装置との競合のために遅延する量を計測するためのメモリ競合時間計測装置及びメモリ競合時間計測方法に関する。
【背景技術】
【０００２】
互いに対等な立場で共通のメモリに読み書きのリクエストを行う複数のＣＰＵ（中央処理ユニット）からなる、共有メモリ型ＳＭＰ（Symmetric Multi-Processor）が、従来より利用されている。
共有メモリ型ＳＭＰのような、複数のＣＰＵが共通のメモリにアクセスするシステムの動作を効率的にするには、複数のＣＰＵによるメモリへのアクセスが競合することによるアクセス時間の遅延量、すなわちメモリ競合時間を知り、このメモリ競合時間をできるだけ短縮することが重要である。
【０００３】
メモリ競合時間あるいはこれに関連する情報を得る手法としては、メモリへのアクセスの競合のためにメモリアクセス要求の送出が遅延することに着目し、この遅延量を計測する手法が知られている（特許文献１参照）。
【特許文献１】特開平２−２３６６９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１の手法は、メモリ競合時間自体を計測するものではないため、メモリ競合時間を正確に知ることができない。
本発明は、上記実状に鑑みてなされたもので、メモリ競合時間を正確に計測できるメモリ競合時間計測装置、メモリ競合時間計測方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
この目的を達成するため、本発明の第１の観点に係るメモリ競合時間計測装置は、
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶するための無競合時ターンアラウンドタイムデータ記憶手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定する個別超過時間特定手段と、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する全体超過時間特定手段と、
を備えることを特徴とする。
このようなメモリ競合時間計測装置によれば、メモリ競合時間が正確に計測される。
【０００６】
前記個別超過時間特定手段は、前記命令がベクトル命令である場合、当該ベクトル命令を構成する最後の要素に従って前記計測対象のプロセッサが前記メモリへのアクセスを開始してから当該計測対象のプロセッサが前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している期間を、当該ベクトル命令についての超過期間として特定するものであってもよい。
このような構成を有していれば、一般に１個当たり数百個の要素を有するベクトル命令のすべての要素について超過期間を求めることによる処理の複雑化を避けることができる。
【０００７】
無競合時ターンアラウンドタイムデータ記憶手段は、例えば複数の記憶領域を有していてもよく、この場合、各々の当該記憶領域は、前記無競合時ターンアラウンドタイムデータと、フラグとを記憶するための記憶領域であってもよい。
そしてこの場合、前記個別超過時間特定手段は、例えば、
前記計測対象のプロセッサが、前記命令を受け付けた旨の信号を発したとき、当該信号に応答して、前記無競合時ターンアラウンドタイムデータ記憶手段の記憶領域のいずれかを当該命令に割り当てる手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始した旨の信号を発したとき、当該信号に応答し、応答して以降、当該命令に割り当てられている記憶領域が記憶する前記無競合時ターンアラウンドタイムデータの値が０になるまでの間、当該無競合時ターンアラウンドタイムデータを、経過した時間に相当する量減算された状態へと更新する手段と、
前記命令に割り当てられている記憶領域が記憶する前記無競合時ターンアラウンドタイムデータの値が０になったことに応答して、当該記憶領域が記憶するフラグを、当該命令についての超過期間内であることを示す値へと更新する手段と、
前記命令に従って開始されたアクセスに前記メモリが応答したことを検知して、当該命令に割り当てられている記憶領域が記憶するフラグを、当該命令についての超過期間外であることを示す値へと更新する手段と、を備えていてもよく、
前記全体超過時間特定手段は、少なくともいずれかのフラグが超過期間内であることを示す値をとっていた期間の長さを計測し、計測結果を、メモリ競合時間の計測結果として特定する手段を備えるものであってもよい。
【０００８】
また、本発明の第２の観点に係るメモリ競合時間計測方法は、
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶し、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定し、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する、
ことを特徴とする。
このようなメモリ競合時間計測方法によっても、メモリ競合時間が正確に計測される。
【０００９】
また、本発明の第３の観点に係るプログラムは、
コンピュータを、
計測対象のプロセッサが、メモリへのアクセスを指示する命令を実行することにより前記メモリへのアクセスを開始してから、前記メモリにアクセスする他の装置が存在しない状態で当該計測対象のプロセッサが前記メモリより応答を受けるまでの時間を表す無競合時ターンアラウンドタイムデータを記憶するための無競合時ターンアラウンドタイムデータ記憶手段と、
前記計測対象のプロセッサが、前記命令を実行することにより前記メモリへのアクセスを開始してから前記メモリより応答を受けるまでの期間のうち、前記無競合時ターンアラウンドタイムデータが示す時間を超過している超過期間を、命令毎に特定する個別超過時間特定手段と、
少なくともいずれかの前記命令について前記超過期間と特定された期間を、メモリ競合時間の計測結果として特定する全体超過時間特定手段と、
して機能させるためのものであることを特徴とする。
このようなプログラムを実行するコンピュータによっても、メモリ競合時間が正確に計測される。
【発明の効果】
【００１０】
本発明によれば、メモリ競合時間を正確に計測できるメモリ競合時間計測装置、メモリ競合時間計測方法及びプログラムが実現される。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態を、演算システムを例とし、図面を参照して説明する。
【００１２】
図１は、この発明の実施の形態に係る演算システムの構成を示す図である。図示するように、この演算システムは、α個の中央処理ユニットＣＰＵ１〜ＣＰＵαと、β個のメモリ管理ユニットＭＭＵ１〜ＭＭＵβとより構成されている。中央処理ユニットＣＰＵ１〜ＣＰＵαは互いに実質的に同一の構成を有しており、メモリ管理ユニットＭＭＵ１〜ＭＭＵβは互いに実質的に同一の構成を有している。そしてこの演算システムは、中央処理ユニットＣＰＵ１〜ＣＰＵαがメモリ管理ユニットＭＭＵ１〜ＭＭＵβに対等にアクセスできるＳＭＰ（Symmetric Multi-Processor）を形成している。
【００１３】
中央処理ユニットＣＰＵｋ（ｋは１以上α以下の整数）は、図１及び図２に示すように、演算制御部ＯＣｋと、アドレス制御部ＡＣｋと、ネットワークユニットＮＵｋと、メモリ競合カウンタＭＣＣｋと、水晶発振器等からなる図示しないクロック生成部とを備えている。
【００１４】
演算制御部ＯＣｋ、アドレス制御部ＡＣｋ及びネットワークユニットＮＵｋは互いに接続されており、メモリ競合カウンタＭＣＣｋは、アドレス制御部ＡＣｋ及びネットワークユニットＮＵｋに接続されている。また、ネットワークユニットＮＵｋは、バスを介し、メモリ管理ユニットＭＭＵ１〜ＭＭＵβの後述するメモリ制御部ＭＣ１〜ＭＣβに接続されている。クロック生成部はクロック信号を生成し、このクロック信号を、演算制御部ＯＣｋ、アドレス制御部ＡＣｋ、ネットワークユニットＮＵｋ及びメモリ競合カウンタＭＣＣｋに連続的に供給する。
【００１５】
演算制御部ＯＣｋは、論理演算の処理やデータの一時記憶などを行う論理回路などより構成されている。演算制御部ＯＣｋは、ネットワークユニットＮＵｋより供給されるコマンドやオペランドに従った演算を実行し、実行の結果生成されるデータを出力しあるいは一時記憶する。
演算制御部ＯＣｋが出力するデータとしては、例えば、メモリ管理ユニットＭＭＵ１〜ＭＭＵβにストアするデータや、アドレス制御部ＡＣｋに向けて発するメモリアクセス（メモリ管理ユニットＭＭＵ１〜ＭＭＵβへのデータのストア、又はメモリ管理ユニットＭＭＵ１〜ＭＭＵβからのデータのロード）のリクエストや、メモリ管理ユニットＭＭＵ１〜ＭＭＵβが有するアクセス対象の記憶領域のアドレスなどがある。
【００１６】
アドレス制御部ＡＣｋは、アドレスの一時記憶や加減算等の演算及び入出力を行う論理回路などより構成されている。アドレス制御部ＡＣｋは、演算制御部ＯＣｋより供給されるメモリアクセスのリクエストを取得して、このリクエストに従い、ネットワークユニットＮＵｋに、メモリ管理ユニットＭＭＵ１〜ＭＭＵβのいずれかであるアクセス対象のメモリ管理ユニットへのメモリアクセスを要求する制御信号や、アクセスの対象となる記憶位置のアドレス等を供給する。また、このリクエストに応答して、メモリ競合カウンタＭＣＣｋに、メモリアクセスのリクエストを受け付けた旨を通知する信号を供給する。この信号は、当該リクエストが、演算制御部ＯＣｋが実行するどの命令に基づいて発せられたものかを特定する情報も含まれているものとする。
【００１７】
ネットワークユニットＮＵｋは、論理回路等より構成されており、アドレス制御部ＡＣｋが制御信号を供給するとこの制御信号に応答して、メモリ競合カウンタＭＣＣｋに、リクエストを実行してメモリアクセスを開始する旨を通知する信号を供給する。一方でネットワークユニットＮＵｋは、この制御信号に従い、バスを介し、アクセス対象のメモリ管理ユニットにメモリアクセスを行うことにより、リクエストを実行する。このメモリアクセスを行う際、ネットワークユニットＮＵｋは、バスやアクセス対象のメモリ管理ユニットが中央処理ユニットＣＰＵｋ以外の装置により利用されていないタイミングでこのメモリアクセスを行えるよう、ネゴシエーション（メモリアクセスのタイミングの調整等）を行う。また、アクセス対象のメモリ管理ユニットに、メモリアクセスの対象となる記憶位置のアドレス等を供給する。
【００１８】
また、ネットワークユニットＮＵｋは、メモリアクセスの結果として、アクセス対象のメモリ管理ユニットよりロードされたデータやその他の信号を供給されると、これらの信号等に応答して、メモリ競合カウンタＭＣＣｋに、メモリ管理ユニットＭＭＵ１〜ＭＭＵβからの応答を受け付けた旨を通知する信号を供給する。また、アクセス対象のメモリ管理ユニットよりロードされ供給されたデータを、演算制御部ＯＣｋに供給する。
【００１９】
メモリ競合カウンタＭＣＣｋは、図２に示すように、Ｒ個（Ｒは演算処理部ＯＣｋが実行し得る命令のうちメモリアクセスを伴う命令の総個数以上の数であることが望ましい）の命令割り当てレジスタＣＡＲｋ−０〜ＣＡＲｋ−（Ｒ−１）と、ＯＲ演算部ＯＲｋと、全体用カウンタＣ２ｋと、図示しないカウンタ制御部とより構成されている。このうちカウンタ制御部は、論理回路などより構成されており、命令割り当てレジスタＣＡＲｋ−０〜ＣＡＲｋ−（Ｒ−１）や全体用カウンタＣ２ｋへのデータのストアや、命令割り当てレジスタＣＡＲｋ−０〜ＣＡＲｋ−（Ｒ−１）や全体用カウンタＣ２ｋからのデータのロード、及びその他後述の処理を実行する。
【００２０】
命令割り当てレジスタＣＡＲｋ−０〜ＣＡＲｋ−（Ｒ−１）は、互いに実質的に同一の構成を有しており、それぞれ、データの一時記憶や加減算等の演算や入出力及びその他後述の処理を行う論理回路等より構成されている。
命令割り当てレジスタＣＡＲｋ−ｍ（ｍは０以上Ｒ未満の整数）は、命令有効ビット記憶部ＣＭＶｋ−ｍと、命令別カウンタＣ１ｋ−ｍと、カウンタ有効ビット記憶部ＣＴＶｋ−ｍとを備えている。なお、命令割り当てレジスタＣＡＲｋ−ｍには、レジスタ番号“ｍ”が割り当てられているものとする。
【００２１】
命令有効ビット記憶部ＣＭＶｋ−ｍは、１ビットのデータからなる命令有効ビットを記憶し、後述する処理に従って、命令有効ビットの値を“０”又は“１”にセットする。
なお、命令有効ビット記憶部ＣＭＶｋ−ｍが記憶する命令有効ビットは、命令割り当てレジスタＣＡＲｋ−ｍが特定の命令に割り当てられているか否かを示すデータである。以下では、特定の命令に割り当てられていないことを示すとき命令有効ビットは値“０”をとり、割り当てられていることを示すとき値“１”をとるものとして説明する。
【００２２】
命令別カウンタＣ１ｋ−ｍは、後述する処理に従って、後述の無競合時ターンアラウンドタイムを示す値を初期値として記憶し、次いで、オン状態にあるときはこの値のデクリメントを行い、オフ状態にあるときは源に記憶している値を保つ。
【００２３】
カウンタ有効ビット記憶部ＣＴＶｋ−ｍは、１ビットのデータからなるカウンタ有効ビットを記憶し、後述する処理に従って、カウンタ有効ビットの値を“０”又は“１”にセットする。
なお、カウンタ有効ビット記憶部ＣＴＶｋ−ｍが記憶するカウンタ有効ビットは、命令別カウンタＣ１ｋ−ｍが記憶する値が“０”であるか否かを示すデータである。以下では、カウンタ有効ビットは値“０”をとるときは命令別カウンタＣ１ｋ−ｍが記憶する値が“０”ではない状態を示し、値“１”をとるときは、命令別カウンタＣ１ｋ−ｍが記憶する値が“０”である状態を示すものとして説明する。
【００２４】
ＯＲ演算部ＯＲｋは、Ｒ個のカウンタ有効ビット記憶部ＣＴＶｋ−１〜ＣＴＶｋ−（Ｒ−１）が記憶するＲ個のカウンタ有効ビットの値の論理和を表すデータを生成して全体用カウンタＣ２ｋに供給する。
【００２５】
全体用カウンタＣ２ｋは、初期値として値“０”を記憶し、ＯＲ演算部ＯＲｋより供給されるデータの値が“１”であるとき、クロック信号が所定の状態（例えば、立ち上がり）に至るタイミングが来るごとに、自己が記憶している値をインクリメントする。（以下では、当該所定の状態は、クロック信号の立ち上がりであるものとして説明する。）
【００２６】
ＭＭＵｊ（ｊは１以上β以下の整数）は、メモリ制御部ＭＣｊと、ランダムアクセスメモリＲＡＭｊとを備えている。メモリ制御部ＭＣｊとランダムアクセスメモリＲＡＭｊとは互いに接続されており、また、メモリ制御部ＭＣｊは、上述したバスを介し、中央処理ユニットＣＰＵ１〜αのネットワークユニットＮＵ１〜ＮＵαに接続されている。
【００２７】
メモリ制御部ＭＣｊは論理回路等より構成されており、ネットワークユニットＮＵ１〜ＮＵαよりバスを介してメモリアクセスを受け、メモリアクセスの対象となる記憶位置のアドレス等を供給されると、このメモリアクセスに従い、ランダムアクセスメモリＲＡＭｊの記憶領域内の当該記憶位置へのデータのストア、又は当該記憶位置からのデータのロードを行う。そして、ロード又はストアの完了を示す信号や、ロードされたデータを、メモリアクセスを行ったネットワークユニットへと供給する。なお、この信号やロードされたデータを供給する際、メモリ制御部ＭＣｊは、バスが自己以外の装置により利用されていないタイミングでこのメモリアクセスを行えるよう、ネゴシエーション（データを供給するタイミングの調整等）を行う。また、メモリ制御部ＭＣｊは、データのストアやロードの実行中、あるいはその他ネットワークユニットＮＵ１〜ＮＵαからの要求を受け付けることができない期間は、所定のビジー信号を出力する。
【００２８】
ランダムアクセスメモリＲＡＭｊは、メモリ制御部ＭＣｊのロードの処理に従い、メモリ制御部ＭＣｊが指定する記憶位置からデータを読み出してメモリ制御部ＭＣｊに供給する。また、メモリ制御部ＭＣｊのストアの処理に従い、メモリ制御部ＭＣｊが指定する記憶位置にデータを記憶したりする。
【００２９】
次に、この演算システムがメモリ競合時間を計測する手順を、中央処理ユニットＣＰＵｋがメモリ管理ユニットＭＭＵｊにメモリアクセスを行う場合を例として、メモリ競合カウンタＭＣＣｋが実行する処理を中心に、図３を参照して説明する。図３は、メモリ競合時間を計測する手順を示すフローチャートである。
【００３０】
まず、中央処理ユニットＣＰＵｋが動作を開始すると、メモリ競合カウンタＭＣＣｋは、所定の初期化を行う（図３、ステップＳ１）。具体的には、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、ステップＳ１で、以下（１）〜（４）として示す処理を行う。つまり、
（１）  命令有効ビット記憶部ＣＭＶｋ−１〜ＣＭＶｋ−（Ｒ−１）が記憶する命令有効ビットの値を、いずれも“０”にセットする。
（２）  カウンタ有効ビット記憶部ＣＴＶｋ−１〜ＣＴＶｋ−（Ｒ−１）が記憶するカウンタ有効ビットの値を、いずれも“０”にセットする。
（３）  命令別カウンタＣ１ｋ−１〜Ｃ１ｋ−（Ｒ−１）に、それぞれ無競合時ターンアラウンドタイムを示す値を初期値として格納する。
（４）  全体用カウンタＣ２ｋに、値“０”を初期値として格納する。
【００３１】
なお、中央処理ユニットＣＰＵｋのターンアラウンドタイムは、１個の命令に基づいて、ネットワークユニットＮＵｋがメモリアクセスを開始する旨の信号を出力してから、ネットワークユニットＮＵｋがメモリ管理ユニットＭＭＵ１〜ＭＭＵβからの応答を受け付けた旨の信号を出力するまでの時間である。そして、中央処理ユニットＣＰＵｋの無競合時ターンアラウンドタイムは、中央処理ユニットＣＰＵｋ以外の中央処理ユニットがメモリアクセスを行っていない状態における、中央処理ユニットＣＰＵｋのターンアラウンドタイムである。
この、中央処理ユニットＣＰＵｋの無競合時ターンアラウンドタイムの値は、例えばあらかじめ実験を行って特定し、メモリ競合カウンタＭＣＣｋがあらかじめ記憶して、ステップＳ１においてこれを命令別カウンタＣ１ｋ−１〜Ｃ１ｋ−（Ｒ−１）にロードするようにすればよい。この場合、メモリ競合カウンタＭＣＣｋは、例えば、無競合時ターンアラウンドタイムの値を記憶する図示しない不揮発性メモリを備えていればよい。
また、命令別カウンタＣ１ｋ−１〜Ｃ１ｋ−（Ｒ−１）が記憶する、無競合時ターンアラウンドタイムを示す値は、具体的には、例えば、中央処理ユニットＣＰＵｋの無競合時ターンアラウンドタイムを上述のクロック信号の周期で除した値にほぼ等しい整数であるものとする。
【００３２】
ステップＳ１の処理が終わった後、アドレス制御部ＡＣｋが、特定の命令（以下、当該命令を命令Ａとする）に基づくメモリアクセスのリクエストを受け付けた旨の信号をメモリ競合カウンタＭＣＣｋへと供給した（ステップＳ２）とする。このとき、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、命令有効ビット記憶部が記憶する命令有効ビットの値が“０”である命令割り当てレジスタのうち、レジスタ番号が最も若いものを命令Ａに割り当てることを決定し（ステップＳ３）、命令Ａに割り当てられた命令割り当てレジスタの命令有効ビット記憶部が記憶する命令有効ビットの値を、“１”にセットする（ステップＳ４）。
ただし、命令Ａがベクトル命令である場合、ステップＳ３でメモリ競合カウンタＭＣＣｋのカウンタ制御部は、命令Ａを構成する最後の要素のみを、当該命令割り当てレジスタに割り当てるものとする。
【００３３】
次に、ネットワークユニットＮＵｋが、この命令Ａに基づくメモリアクセスを開始する旨の信号をメモリ競合カウンタＭＣＣｋに供給すると、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、命令Ａに割り当てられた命令割り当てレジスタの命令別カウンタをオン状態とする（ステップＳ５）。
【００３４】
一方、メモリ競合カウンタＭＣＣｋの各命令別カウンタのうちオン状態であるものは、メモリ競合カウンタＭＣＣｋに供給されるクロック信号が立ち上がる毎に、各自が記憶している値を１ずつデクリメントする（ステップＳ６）。そして、ステップＳ６でデクリメントを行った命令別カウンタは、各自が記憶している値が０以外の値であるか否かを判別し（ステップＳ７）、０以外であると判別した命令別カウンタはステップＳ６の処理を続行する。一方、０であると判別した命令別カウンタは、更なるデクリメントを行わないこととし、また、自己と同じ命令割り当てレジスタ内のカウンタ有効ビット記憶部が記憶するカウンタ有効ビットの値を“０”から“１”に書き換える（ステップＳ８）。
カウンタ有効ビットの値が“１”となることは、当該カウンタ有効ビットを記憶する命令割り当てレジスタに割り当てられている命令についてはターンアラウンドタイムが無競合時ターンアラウンドタイムを超過している、ということを示すものである。
【００３５】
そして、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、ネットワークユニットＮＵｋが、命令Ａに基づくメモリ管理ユニットＭＭＵ１〜ＭＭＵβからの応答を受け付けた旨の信号を発したか否かを判別する（ステップＳ９）。
ステップＳ９での判別の結果、当該信号が供給されたと判別すると、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、命令Ａに割り当てられた命令割り当てレジスタの命令別カウンタの値を、中央処理ユニットＣＰＵｋの無競合時ターンアラウンドタイムを示す値へとリセットし、当該命令別カウンタをオフ状態とする（ステップＳ１０）。また、当該命令割り当てレジスタの命令有効ビット記憶部及びカウンタ有効ビット記憶部が記憶する命令有効ビット及びカウンタ有効ビットの値を、いずれも“０”へとリセットする。
一方、当該信号が供給されていないと判別すると、メモリ競合カウンタＭＣＣｋはステップＳ９の処理を繰り返す。
【００３６】
ただし、上述したように、全体用カウンタＣ２ｋは、ＯＲ演算部ＯＲｋより供給されるデータの値が“１”であるとき（つまり、カウンタ有効ビット記憶部ＣＴＶｋ−１〜ＣＴＶｋ−（Ｒ−１）が記憶するカウンタ有効ビットのうち少なくともいずれかの値が“１”であるとき）は、クロック信号が立ち上がる毎に、自己が記憶している値をインクリメントする（ステップＳ１１，Ｓ１２）。
【００３７】
メモリ競合カウンタＭＣＣｋが上述のステップＳ１〜Ｓ１２の動作を行う一方、メモリ競合カウンタＭＣＣｋのカウンタ制御部は、全体用カウンタＣ２ｋが記憶している値を示すデータを、中央処理ユニットＣＰＵｋのメモリ競合時間を示すデータとして、外部に出力する。
【００３８】
メモリ競合カウンタＭＣＣｋが上述の動作をする結果、特定の時点で全体用カウンタＣ２ｋが記憶する値は、当該時点までに、中央処理ユニットＣＰＵｋが実行するいずれかの命令について実際のターンアラウンドタイムが無競合時ターンアラウンドタイムを超過していた期間を累計した時間を示している。この時間が、当該時点までにおける中央処理ユニットＣＰＵｋのメモリ競合時間である。
なお、ベクトル命令の最後の要素のみを命令割り当てレジスタに割り当てるようにすると、すべての要素を割り当てた場合に比べ、メモリ競合時間の計測の精度は若干低下することが考えられるものの、処理の複雑化を避けたり、メモリ競合カウンタＭＣＣｋの構成を小型で簡単なものとしたりする上では有益である。
【００３９】
以上説明したこの演算システムの構成は、必ずしも上述のものに限られない。
例えば、演算制御部ＯＣ１〜ＯＣαの構成は必ずしも実質的に同一である必要はなく、また、中央処理ユニットＣＰＵ１〜ＣＰＵαはまったく対等な立場でメモリ管理ユニットＭＭＵ１〜ＭＭＵβにアクセスするものである必要はない。
また、メモリ競合カウンタは中央処理ユニットＣＰＵ１〜ＣＰＵαのすべてが備えている必要はなく、メモリ競合時間を計測する対象である中央処理ユニットのみが備えていれば十分である。メモリ競合カウンタを備えない中央処理ユニットのアドレス制御部やネットワークユニットは、メモリ競合カウンタへと信号を供給する機能を有する必要はない。
また、メモリ競合カウンタＭＣＣｋは、演算制御部ＯＣｋやアドレス制御部ＡＣｋやネットワークユニットＮＵｋと一体に形成されている必要はない。
また、ベクトル命令のすべての要素を命令割り当てレジスタに割り当てることによる処理の複雑化を許容できるような条件下では、すべての要素を割り当てるようにしてもよい。
【００４０】
以上、この発明の実施の形態を説明したが、この発明にかかるメモリ競合時間計測装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、中央処理ユニットＣＰＵｋのアドレス制御部ＡＣｋ及びネットワークユニットＮＵｋに接続されたパーソナルコンピュータに上述の命令割り当てレジスタＣＡＲｋ−０〜ＣＡＲｋ−（Ｒ−１）、ＯＲ演算部ＯＲｋ、全体用カウンタＣ２ｋ及びカウンタ制御部の動作を実行させるためのプログラムを格納した記録媒体（ＣＤ−ＲＯＭ、ＭＯ、フレキシブルディスク等）から該プログラムをインストールすることにより、メモリ競合カウンタＭＣＣｋを構成することができる。
【００４１】
また、例えば、通信回線の掲示板（ＢＢＳ）にこのプログラムをアップロードし、これを通信回線を介して配信してもよく、また、このプログラムを表す信号により搬送波を変調し、得られた変調波を伝送し、この変調波を受信した装置が変調波を復調してこれらのプログラムを復元するようにしてもよい。
そして、このプログラムを起動し、ＯＳの制御下に、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行することができる。
【００４２】
なお、ＯＳが処理の一部を分担する場合、あるいは、ＯＳが本願発明の１つの構成要素の一部を構成するような場合には、記録媒体には、その部分を除いたプログラムを格納してもよい。この場合も、この発明では、その記録媒体には、コンピュータが実行する各機能又はステップを実行するためのプログラムが格納されているものとする。
【図面の簡単な説明】
【００４３】
【図１】本発明の実施の形態に係る演算システムの構成を示す図である。
【図２】中央処理ユニットの構成を示す図である。
【図３】メモリ競合時間を計測する処理の手順を示すフローチャートである。
【符号の説明】
【００４４】
ＣＰＵ１〜ＣＰＵα                    中央処理ユニット
ＯＣ１〜ＯＣα                        演算制御部
ＡＣ１〜ＡＣα                        アドレス制御部
ＮＵ１〜ＮＵα                        ネットワークユニット
ＭＣＣ１〜ＭＣＣα                    メモリ競合カウンタ
ＣＡＲ１−０〜ＣＡＲα−（Ｒ−１）    命令割り当てカウンタ
ＣＭＶ１−０〜ＣＭＶα−（Ｒ−１）    命令有効ビット記憶部
Ｃ１１−０〜Ｃ１α−（Ｒ−１）        命令別カウンタ
ＣＴＶ１−０〜ＣＴＶα−（Ｒ−１）    カウンタ有効ビット記憶部
ＯＲ１〜ＯＲα                        ＯＲ演算部
Ｃ２１〜Ｃ２α                        全体用カウンタ
ＭＭＵ１〜ＭＭＵβ                    メモリ管理ユニット
ＭＣ１〜ＭＣβ                        メモリ制御部
ＲＡＭ１〜ＲＡＭβ                    ランダムアクセスメモリ
【図１】
2005258617.tif 000003
【図２】
2005258617.tif 000004
【図３】
2005258617.tif 000005