JP7168731B1 - メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム - Google Patents

メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム Download PDF

Info

Publication number
JP7168731B1
JP7168731B1 JP2021118412A JP2021118412A JP7168731B1 JP 7168731 B1 JP7168731 B1 JP 7168731B1 JP 2021118412 A JP2021118412 A JP 2021118412A JP 2021118412 A JP2021118412 A JP 2021118412A JP 7168731 B1 JP7168731 B1 JP 7168731B1
Authority
JP
Japan
Prior art keywords
memory
access
program
address
bank
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021118412A
Other languages
English (en)
Other versions
JP2023014466A (ja
Inventor
和文 米山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2021118412A priority Critical patent/JP7168731B1/ja
Application granted granted Critical
Publication of JP7168731B1 publication Critical patent/JP7168731B1/ja
Publication of JP2023014466A publication Critical patent/JP2023014466A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

Figure 0007168731000001
【課題】メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させる。
【解決手段】メモリアクセス制御装置40は、実行するプログラム400のメモリへのアクセスパターンを解析する解析部41と、当該アクセスパターンの解析結果410に基づいて、プログラム400の実行において複数のバンクを含む当該メモリに対するアクセスアドレス431からバンクアドレス432を生成する際に使用する、当該バンクの配置を表す複数の生成基準420-1乃至420-nのうち、プログラム400の当該メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準420-iを決定する決定部42と、最適生成基準420-iを用いて、アクセスアドレス431からバンクアドレス432を生成する生成部43と、を備える
【選択図】 図7

Description

本発明は、メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラムに関する。
コンピュータシステムでは、メモリを論理的な複数の領域(バンク)に分け、複数のバンクに並列にアクセスすることによってメモリアクセスを高速化する手法であるメモリインタリーブが用いられている。メモリインタリーブを用いたコンピュータシステムでは、特定のバンクへのアクセスが輻輳するバンク競合が発生することによって性能が低下するので、バンク競合の発生頻度を低下させる技術が期待されている。
このような技術に関連して、特許文献1には、複数のバンクを有するメモリと当該メモリへのアクセスを行うプロセッサとを有する装置が開示されている。この装置では、プロセッサに入力されたアクセス命令が、配列のデータを配置するバンクの振り分けを指定する指定情報を含むアクセス命令である場合には、プロセッサが、指定情報により指定されるバンクの振り分けに応じて、アクセス命令で指定される配列のインデックスを変換する。そしてこの装置は、変換したインデックスに基づいてバンクの選択を行い、配列に係るメモリへのアクセスを行うようにして、配列のデータのバンク配置をアクセスパターンに応じた配置にする。
また、特許文献2には、2mxm(mは任意の自然数)の二進行列で構成される線形ハッシュ関数対でmが奇数である場合にも、最大のバンク間分散次数を有し、行、列、対角線、反対角線及び矩形パターンで衝突対が発生しない線形ハッシュ関数対を使用するキャッシュメモリが開示されている。
また、特許文献3には、メモリに対するアクセス先のアドレスにおけるバンクアドレスビットの値を、当該バンクアドレスビットの値および当該アドレスにおけるロウアドレスビットの値のハッシュ関数値に変更するメモリコントローラが開示されている。
特開2014-241107号公報 特開2009-129440号公報 特許第6226200号公報
上述した特許文献により開示された技術を用いることによって、メモリアクセスにおけるバンク競合の発生をある程度は低減可能ではあるが、改善すべき課題も多い。例えば、特許文献1の技術では、配列のインデックスと配列のデータを配置するバンクとの対応関係を表すテーブルを備え、配列に対するアクセスパターンに応じてアクセスを制御する。この場合、予め全てのインデックスに対して対応関係を表すテーブルの設定が必要になり、また、インデックスごとにテーブルを備えることは、効率的であるとは言えない。また、特許文献2及び3の技術では、バンク競合の発生を低下させる点において十分であるとはいえず、バンク競合の発生をより確実に低下させることが望まれる。
本発明の主たる目的は、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させるメモリアクセス制御装置等を提供することにある。
本発明の一態様に係るメモリアクセス制御装置は、実行するプログラムのメモリへのアクセスパターンを解析する解析手段と、前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの配置を表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定する決定手段と、前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する生成手段と、を備える。
上記目的を達成する他の見地において、本発明の一態様に係るメモリアクセス制御方法は、情報処理装置によって、実行するプログラムのメモリへのアクセスパターンを解析し、前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの配置を表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定し、前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する。
また、上記目的を達成する更なる見地において、本発明の一態様に係るメモリアクセス制御プログラムは、実行するプログラムのメモリへのアクセスパターンを解析する解析処理と、前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの配置を表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定する決定処理と、前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する変換処理と、をコンピュータに実行させる。
更に、本発明は、係るメモリアクセス制御プログラム(コンピュータプログラム)が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
本発明によれば、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させるメモリアクセス制御装置等が得られる。
本発明の第1の実施形態に係る情報処理装置1の構成を示すブロック図である。 本発明の第1の実施形態に係る情報処理装置1が実行するユーザプログラム300の少なくとも一部を例示する図である。 本発明の第1の実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、ハッシュ関数142-1を用いて、アクセスアドレス200からバンクアドレスを生成する第1の例を表す図である。 本発明の第1の実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、ハッシュ関数142-1を用いて、アクセスアドレス200からバンクアドレスを生成する第2の例を表す図である。 本発明の第1の実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、ハッシュ関数142-2を用いて、アクセスアドレス200からバンクアドレスを生成する例を表す図である。 本発明の第1の実施形態に係るメモリアクセス制御装置10の動作を示すフローチャートである。 本発明の第2の実施形態に係るメモリアクセス制御装置40の構成を示すブロック図である。 本発明の各実施形態に係るメモリアクセス制御装置を実現可能な情報処理装置900の構成を示すブロック図である。
以下、本発明の実施の形態について図面を参照して詳細に説明する。
<第1の実施形態>
図1は、本発明の第1の実施の形態に係る情報処理装置1の構成を示すブロック図である。情報処理装置1は、大別して、メモリアクセス制御装置10、CPU(Central Processing Unit)20、及び、メモリ30を備える。
メモリ30は、例えば情報処理装置1の主記憶でもよいし、CPU20と主記憶との間に設けられたキャッシュでもよい。メモリ30は、メモリインタリーブによって並列にアクセス可能な複数のバンク31を含む。
CPU20は、メモリ30に格納されたユーザプログラム300を実行し、ユーザプログラム300に含まれるメモリ30に対するアクセス命令が表すアクセス先のアクセスアドレス200を、メモリアクセス制御装置10に入力する。
メモリアクセス制御装置10は、CPU20によるメモリ30に対するアクセスを制御するメモリアクセスコントローラである。メモリアクセス制御装置10は、CPU20から入力されたアクセスアドレス200が示すバンクアドレスによって特定されるバンク31に対するアクセスを行う。
メモリアクセス制御装置10は、解析部11、決定部12、及び、生成部13を備える。解析部11、決定部12、及び、生成部13は、順に、解析手段、決定手段、及び、生成手段の一例である。
記憶部14は、例えば図8を参照して後述するRAM(Random Access Memory)903、あるいはハードディスク904のような記憶デバイスである。記憶部14は、メモリ30の一部であってもよい。記憶部14は、後述する解析結果141、及び、複数のハッシュ関数142-1乃至142-3を記憶する。記憶部14に記憶されるハッシュ関数の数は複数であれば任意とする。尚、本実施形態では以降、ハッシュ関数142-1乃至142-3等のいずれか、あるいはそれらをまとめて、ハッシュ関数142と称する場合がある。ハッシュ関数142は、生成基準の一例である。
次に、図2乃至図5を参照して、解析部11、決定部12、及び、生成部13の動作について説明する。
解析部11は、CPU20によるユーザプログラム300の実行が開始される前に、ユーザプログラム300を読み込み、ユーザプログラム300のメモリ30へのアクセスパターンを解析し、その解析結果を表す解析結果141を記憶部14に格納する。解析部11は、図8を参照して後述する通り、ソフトウェアモジュールとして実現される場合、例えば、ユーザプログラム300をコンパイルするコンパイラに含まれてもよい。
図2は、本実施形態に係るユーザプログラム300の少なくとも一部を例示する図である。図2に例示するユーザプログラム300は、配列データb(i)及びc(i)をメモリ30から読み込んで、b(i)とc(i)と加算した結果である配列データa(i)をメモリ30に格納するプログラムである。但し、iは自然数であることとする。
本実施形態に係るアクセスアドレス200は、図3乃至図5に例示する通り、32ビットで表されることとする。アクセスアドレス200を表す32ビットのうち、ビット(Bit)[0](0ビット目)からビット[19](19ビット目)までの上位20ビットは、ロウ(行)アドレス及びカラム(列)アドレスを表す。ロウアドレス及びカラムアドレスは、あるバンク31におけるデータの位置を表すが、周知の語句であるので、本実施形態ではその詳細な説明を省略する。
アクセスアドレス200を表す32ビットのうち、ビット[20]からビット[25]までの6ビットは、バンク31のバンクアドレスを表す。したがってメモリ30は、2の6乗(即ち64)個のバンク31を備えている。
ここで、配列データb(i)が、メモリ30において、先頭アドレスが「0x00000000」である記憶領域に格納され、配列データc(i)が、先頭アドレスが「0x00040000」である記憶領域に格納されている場合を考える。但し「0x」は16進数表記を表す記号である。アドレス「0x00040000」は、アクセスアドレス200を表す32ビットのうち、ビット[13]のみが「1」である。
この場合、解析部11は、先頭アドレスが「0x00000000」である記憶領域に格納された配列データb(i)と、先頭アドレスが「0x00040000」である記憶領域に格納された配列データc(i)とに対するアクセスが、iの値が1ずつ増加しながら発生することを表す解析結果141を生成する。したがって、解析結果141は、アクセスアドレス200におけるビット[20]乃至ビット[25]をそのままバンクアドレスとした場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間で常にバンク競合が発生することを表している。
決定部12は、上述した解析結果141に基づいて、図2に例示するユーザプログラム300の実行において、メモリ30に対するアクセスアドレス200からバンクアドレスを生成する際に使用する複数のハッシュ関数142のうちから、最適なハッシュ関数142(最適生成基準)を決定する。但し、最適なハッシュ関数142とは、ユーザプログラム300のメモリ30へのアクセスにおいて、バンク競合の発生が最も少なくなるようなハッシュ関数142である。
図3は、本実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、ハッシュ関数142-1を用いて、アクセスアドレス200からバンクアドレスを生成する第1の例を表す。図3に例示するハッシュ関数142-1は、アクセスアドレス200におけるバンクアドレスを表すビット[20]乃至ビット[25]を下記の通りに生成(変換)する算出式を表す。
ハッシュ関数142-1は、ビット[20]の値を、アクセスアドレス200における、ビット[2]とビット[8]とビット[14]とビット[20]との排他的論理和(EXOR)に置き換える。ハッシュ関数142-1は、ビット[21]の値を、アクセスアドレス200における、ビット[3]とビット[9]とビット[15]とビット[21]との排他的論理和に置き換える。ハッシュ関数142-1は、ビット[22]の値を、アクセスアドレス200における、ビット[4]とビット[10]とビット[16]とビット[22]との排他的論理和に置き換える。ハッシュ関数142-1は、ビット[23]の値を、アクセスアドレス200における、ビット[5]とビット[11]とビット[17]とビット[23]との排他的論理和に置き換える。ハッシュ関数142-1は、ビット[24]の値を、アクセスアドレス200における、ビット[0]とビット[6]とビット[12]とビット[18]とビット[24]との排他的論理和に置き換える。ハッシュ関数142-1は、ビット[25]の値を、アクセスアドレス200における、ビット[1]とビット[7]とビット[13]とビット[19]とビット[25]との排他的論理和に置き換える。
したがって、ハッシュ関数142-1は、配列データb(i)の先頭アドレスが「0x00000000」のバンクアドレスを表すビット[20]乃至ビット[25]を「000000」とする。そして、ハッシュ関数142-1は、配列データc(i)の先頭アドレスが「0x00040000」のバンクアドレスを表すビット[20]乃至ビット[25]を「000001」とする。
決定部12は、バンクアドレスの生成において、図3に例示するハッシュ関数142-1を用いた場合、配列データb(i)のバンクアドレスが、iの値が増加するに伴い、「0→1→2→3→・・・→62→63→0→・・・」(10進数表記)となることを算出する。決定部12は、同様に、配列データc(i)のバンクアドレスが、iの値が増加するに伴い、「1→0→3→2→・・・→63→62→1→・・・」となることを算出する。これにより決定部12は、バンクアドレスの生成において、図3に例示するハッシュ関数142-1を用いた場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合が回避されることを特定する。
決定部12は、バンクアドレスの生成において、ハッシュ関数142-2等の他のハッシュ関数142を用いた場合に関しても同様に、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合の発生状況を算出する。
決定部12は、ハッシュ関数142-1を用いた場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合が常に回避されることから、ハッシュ関数142-1を上述した最適なハッシュ関数142として決定する。
次に、配列データb(i)が、メモリ30において、先頭アドレスが「0x00000000」である記憶領域に格納され、配列データc(i)が、先頭アドレスが「0x01040000」である記憶領域に格納されている場合を考える。アドレス「0x01040000」は、アクセスアドレス200を表す32ビットのうち、ビット[7]及びビット[13]のみが「1」である。
図4は、本実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、図3に例示するハッシュ関数142-1を用いて、アクセスアドレス200からバンクアドレスを生成する第2の例を表す。この場合、ハッシュ関数142-1は、配列データc(i)の先頭アドレスが「0x01040000」のバンクアドレスを表すビット[20]乃至ビット[25]を「000000」とする。したがって、決定部12は、ハッシュ関数142-1を用いた場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合が発生することを特定する。
図5は、本実施形態に係るメモリアクセス制御装置10が、図2に例示するユーザプログラム300の実行において、上述したハッシュ関数141-1とは異なるハッシュ関数142-2を用いて、アクセスアドレス200からバンクアドレスを生成する例を表す。
図5に例示するハッシュ関数142-2は、ビット[24]及びビット[25]に関して、バンクアドレスの生成方法が上述したハッシュ関数141-1とは異なる。ハッシュ関数142-2は、ビット[24]の値を、アクセスアドレス200における、ビット[0]とビット[6]とビット[13]とビット[18]とビット[24]との排他的論理和に置き換える。ハッシュ関数142-2は、ビット[25]の値を、アクセスアドレス200における、ビット[1]とビット[7]とビット[12]とビット[19]とビット[25]との排他的論理和に置き換える。即ち、ハッシュ関数142-2は、ビット[24]の生成において、ビット[12]の代わりにビット[13]を使用し、ビット[25]の生成において、ビット[13]の代わりにビット[12]を使用する点において、ハッシュ関数141-1とは異なる。
ハッシュ関数142-2は、配列データb(i)の先頭アドレスが「0x00000000」のバンクアドレスを表すビット[20]乃至ビット[25]を「000000」とする。そして、ハッシュ関数142-1は、配列データc(i)の先頭アドレスが「0x01040000」のバンクアドレスを表すビット[20]乃至ビット[25]を「000011」とする。
決定部12は、バンクアドレスの生成において、図3に例示するハッシュ関数142-2を用いた場合、配列データb(i)のバンクアドレスが、iの値が増加するに伴い、「0→1→2→3→・・・→62→63→0→・・・」(10進数表記)となることを算出する。決定部12は、同様に、配列データc(i)のバンクアドレスが、iの値が増加するに伴い、「3→2→1→0→・・・→61→60→3→・・・」となることを算出する。これにより決定部12は、バンクアドレスの生成において、図5に例示するハッシュ関数142-2を用いた場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合が回避されることを特定する。
決定部12は、バンクアドレスの生成において、他のハッシュ関数142を用いた場合に関しても同様に、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合の発生状況を算出する。
決定部12は、ハッシュ関数142-2を用いた場合、配列データb(i)に対するアクセスと配列データc(i)に対するアクセスとの間におけるバンク競合が常に回避されることから、ハッシュ関数142-2を上述した最適なハッシュ関数142として決定する。
決定部12は、図8を参照して後述する通り、ソフトウェアモジュールとして実現される場合、例えば、ユーザプログラム300をコンパイルするコンパイラ、及び、CPU20によって実行されるOS(Operating System)に含まれてもよい。その場合、決定部12を含むコンパイラは、上述の通りに決定した最適なハッシュ関数を識別可能な識別子を決定する。そして、決定部12を含むOSは、当該コンパイラによって決定された当該識別子を、例えば、記憶部14における所定のレジスタに記憶する。
生成部13は、CPU20によるユーザプログラム300の実行が開始されたのち、当該所定のレジスタによって示される、決定部12によって上述の通りに決定された最適なハッシュ関数142を用いて、アクセスアドレス200からバンクアドレスを生成する。そして、メモリアクセス制御装置は、生成部13によって生成されたバンクアドレスが示すバンク31に対してアクセスする。
次に図6のフローチャートを参照して、本実施形態に係るメモリアクセス制御装置10の動作(処理)について詳細に説明する。
解析部11は、CPU20によるユーザプログラム300の実行が開始される前に、ユーザプログラム300のメモリ30へのアクセスパターンを解析し、その解析結果141を記憶部14に格納する(ステップS101)。決定部12は、アクセスパターンの解析結果141に基づいて、複数のハッシュ関数142のうち、ユーザプログラム300の実行において、バンク競合の発生が最も小さくなるようなハッシュ関数142-j(jは自然数)を決定する(ステップS102)。
生成部13は、CPU20によるユーザプログラム300の実行において、決定部12によって決定されたハッシュ関数142-jを用いて、CPU20から入力されたアクセスアドレス200からアクセス先のバンク31のバンクアドレスを生成する(ステップS103)。メモリアクセス制御装置10は、生成部13によって生成されたバンクアドレスが示すメモリ30のバンク31に対するアクセスを行い(ステップS104)、全体の処理は終了する。
本実施形態に係るメモリアクセス制御装置10は、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させることができる。その理由は、メモリアクセス制御装置10は、ユーザプログラム300のメモリ30へのアクセスパターンを解析し、その解析結果141に基づいて、バンク31の配置を表す複数のハッシュ関数142のうち、バンク競合の発生が最も少なくなるような最適なハッシュ関数142を決定するからである。
以下に、本実施形態に係るメモリアクセス制御装置10によって実現される効果について、詳細に説明する。
メモリアクセスにおけるバンク競合の発生をある程度低減可能な技術は存在するものの、まだ十分であるとは言えず、バンク競合の発生をより効率的かつ確実に低下させることが課題である。
このような課題に対して、本実施形態に係るメモリアクセス制御装置10は、解析部11と決定部12と生成部13とを備え、例えば図1乃至図6を参照して上述した通り動作する。即ち、解析部11は、実行するユーザプログラム300のメモリ30へのアクセスパターンを解析する。決定部12は、アクセスパターンの解析結果141に基づいて、ユーザプログラム300の実行において複数のバンク31を含むメモリ30に対するアクセスアドレス200からバンクアドレスを生成する際に使用する、バンク31の配置を表す複数のハッシュ関数142のうち、ユーザプログラム300のメモリ30へのアクセスにおいてバンク競合の発生が最も少なくなるような最適なハッシュ関数142を決定する。そして、生成部13は、最適なハッシュ関数142用いて、アクセスアドレス200からバンクアドレスを生成する。
即ち、メモリアクセス制御装置10は、ユーザプログラム300を解析することによって得られたユーザプログラム300のメモリ30へのアクセス特性に基づいて、バンク競合の発生が最も少なるようにバンクを配置するハッシュ関数142(生成基準)を決定する。これにより、メモリアクセス制御装置10は、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させることができる。
また、本実施形態に係るハッシュ関数142は、例えば、図3乃至図5に例示する通り、アクセスアドレス200に含まれるロウアドレス及びカラムアドレスの全てのビットを使用する。これにより、メモリアクセス制御装置10は、多様なハッシュ関数142の中から最適なハッシュ関数142を選択できるので、メモリアクセスにおけるバンク競合の発生を、より確実に低下させることができる。尚、メモリアクセス制御装置10は、ロウアドレス及びカラムアドレスの一部のビットのみを使用するハッシュ関数142を使用するようにした、簡易な構成を備えるようにしてもよい。
また、本実施形態に係る解析部11は、複数のユーザプログラム300がメモリ30にアクセスする場合に、それら複数のユーザプログラム300に関してメモリ30へのアクセスパターンを解析してもよい。但しこの場合において、ユーザプログラム300ごとに異なるハッシュ関数142を用いると、メモリ30へのアクセスにおける一貫性を維持できなくなることからユーザプログラム300の実行結果が不正となる。したがってこの場合、決定部12は、複数のユーザプログラム300に共通する最適なハッシュ関数142を決定すればよい。
また、本実施形態に係る解析部11は、複数のユーザプログラム300がメモリ30にアクセスする場合に、複数のユーザプログラム300のうちの特定のユーザプログラム300に関してアクセスパターンを解析してもよい。この場合、解析部11は、当該特定のユーザプログラム300として、例えば、複数のユーザプログラム300のうちで実行時間が最も長いものを用いればよい。そして、決定部12は、上述した通り、複数のユーザプログラム300に共通する最適なハッシュ関数142を決定すればよい。複数のユーザプログラム300のうちで実行時間が最も長いものは、一般的に、複数のユーザプログラム300のうちで性能に関する影響が最も大きいと推定されるので、メモリアクセス制御装置10は、上述の通りに動作することによって、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させることができる。
<第2の実施形態>
図7は、本発明の第2の実施形態に係るメモリアクセス制御装置40の構成を示すブロック図である。
メモリアクセス制御装置40は、解析部41、決定部42、及び、生成部43を備える。解析部41、決定部42、生成部43は、順に、解析手段、決定手段、生成手段の一例である。
解析部41は、実行するプログラム400のメモリへのアクセスパターンを解析する。プログラム400は、例えば第1の実施形態に係るユーザプログラム300と同様なプログラムである。解析部41は、例えば、第1の実施形態に係る解析部11と同様に動作する。
決定部42は、当該アクセスパターンの解析結果410に基づいて、複数の生成基準420-1乃至420-nのうち、最適生成基準420-i(iは1乃至nのいずれかの自然数)を決定する。但し、生成基準420-1乃至420-nは、プログラム400の実行において複数のバンクを含むメモリに対するアクセスアドレス431からバンクアドレス432を生成する際に使用する、当該バンクの配置を表す基準である。そして、最適生成基準420-iは、プログラム400の当該メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような基準である。生成基準420-1乃至420-nは、例えば、第1の実施形態に係るハッシュ関数142と同様な基準である。決定部42は、例えば、第1の実施形態に係る決定部12と同様に動作する。
生成部43は、最適生成基準420-iを用いて、アクセスアドレス431からバンクアドレス432を生成する。生成部43は、例えば、第1の実施形態に係る生成部13と同様に動作する。
本実施形態に係るメモリアクセス制御装置40は、メモリアクセスにおけるバンク競合の発生を、効率的かつ確実に低下させることができる。その理由は、メモリアクセス制御装置40は、プログラム400のメモリへのアクセスパターンを解析し、その解析結果410に基づいて、バンクの配置を表す複数の生成基準420-1乃至420-nのうち、バンク競合の発生が最も少なくなるような最適生成基準420-iを決定するからである。
<ハードウェア構成例>
上述した各実施形態において図1、及び、図7に示したメモリアクセス制御装置における各部は、専用のHW(HardWare)(電子回路)によって実現することができる。また、図1、及び、図7において、少なくとも、下記構成は、プロセッサによって実行される命令を含むソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。
・解析部11及び41、
・決定部12及び42、
・生成部13及び43、
・記憶部14における記憶制御機能。
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図8を参照して説明する。
図8は、本発明の各実施形態に係るメモリアクセス制御装置を実現可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。即ち、図8は、図1、及び、図7に示したメモリアクセス制御装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
図8に示した情報処理装置900は、構成要素として下記を備えている。
・CPU(Central_Processing_Unit)901、
・ROM(Read_Only_Memory)902、
・RAM(Random_Access_Memory)903、
・ハードディスク(記憶装置)904、
・通信インタフェース905、
・バス906(通信線)、
・CD-ROM(Compact_Disc_Read_Only_Memory)等の記録媒体907に格納されたデータを読み書き可能なリーダライタ908、
・モニターやスピーカ、キーボード等の入出力インタフェース909。
即ち、上記構成要素を備える情報処理装置900は、これらの構成がバス906を介して接続された一般的なコンピュータである。情報処理装置900は、CPU901を複数備える場合もあれば、マルチコアにより構成されたCPU901を備える場合もある。
そして、上述した実施形態は、図8に示した情報処理装置900に対して、次の機能を実現可能なコンピュータプログラムを供給してもよい。例えば、その機能とは、その実施形態の説明において参照したブロック構成図(図1及び図7)における上述した構成、或いはフローチャート(図6)の機能である。上述した実施形態に係るサーバあるいは情報処理装置の機能は、その後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ(RAM903)、または、ROM902やハードディスク904等の不揮発性の記憶デバイスに格納すれば良い。
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、CD-ROM等の各種記録媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本実施形態に係る情報処理装置に供給されるコンピュータプログラムは、そのプログラムを構成するコード或いは、そのコードが格納された記録媒体907によって構成されると捉えることができる。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
1 情報処理装置
10 メモリアクセス制御装置
11 解析部
12 決定部
13 生成部
14 記憶部
141 解析結果
142 ハッシュ関数
20 CPU
200 アクセスアドレス
30 メモリ
31 バンク
300 ユーザプログラム
40 メモリアクセス制御装置
400 プログラム
41 解析部
410 解析結果
42 決定部
420-1乃至420-n 生成基準
43 生成部
431 アクセスアドレス
432 バンクアドレス
900 情報処理装置
901 CPU
902 ROM
903 RAM
904 ハードディスク(記憶装置)
905 通信インタフェース
906 バス
907 記録媒体
908 リーダライタ
909 入出力インタフェース

Claims (8)

  1. CPU(Central Processing Unit)とメモリと備え、前記メモリがメモリインタリーブによって並列にアクセス可能な領域である複数のバンクを含むように構成された情報処理装置において、
    前記CPUが実行するプログラムの前記メモリへのアクセスパターンを解析する解析手段と、
    前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの物理アドレスマッピングを表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定する決定手段と、
    前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する生成手段と、
    を備え、
    前記解析手段は、複数の前記プログラムが前記メモリにアクセスする場合に、複数の前記プログラムのうちの少なくとも特定のプログラムに関して前記アクセスパターンを解析し、
    前記決定手段は、複数の前記プログラムに共通する前記最適生成基準を決定する、
    メモリアクセス制御装置。
  2. 前記生成基準は、前記アクセスアドレスに含まれるロウアドレス及びカラムアドレスの全てのビットを使用する、
    請求項1に記載のメモリアクセス制御装置。
  3. 前記生成基準はハッシュ関数である、
    請求項1または請求項2に記載のメモリアクセス制御装置。
  4. 前記ハッシュ関数は、前記アクセスアドレスを表す複数の第1のビットの個々を前記バンクアドレスを表す1以上の第2のビットの個々に関するグループに分けたときの個々の前記第2のビットの値を当該第2のビットに関する前記グループに含まれる前記第1のビットの排他的論理和により算出することを表し、複数の前記生成基準を表す複数の前記ハッシュ関数は、前記第1のビットの前記グループへの分け方が互いに異なる、
    請求項3に記載のメモリアクセス制御装置。
  5. 前記特定のプログラムは、複数の前記プログラムのうちの実行時間が最も長いプログラムである、
    請求項に記載のメモリアクセス制御装置。
  6. 前記解析手段は、前記CPUが前記プログラムのコンパイルを実行する際に前記アクセスパターンを解析する
    請求項1乃至請求項5のいずれか一項に記載のメモリアクセス制御装置
  7. CPU(Central Processing Unit)とメモリと備え、前記メモリがメモリインタリーブによって並列にアクセス可能な領域である複数のバンクを含むように構成された情報処理装置によって、
    前記CPUが実行するプログラムの前記メモリへのアクセスパターンを解析し、
    前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの物理アドレスマッピングを表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定し、
    前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する、
    方法であって、
    複数の前記プログラムが前記メモリにアクセスする場合に、複数の前記プログラムのうちの少なくとも特定のプログラムに関して前記アクセスパターンを解析し、
    複数の前記プログラムに共通する前記最適生成基準を決定する
    メモリアクセス制御方法。
  8. CPU(Central Processing Unit)とメモリと備え、前記メモリがメモリインタリーブによって並列にアクセス可能な領域である複数のバンクを含むように構成されたコンピュータに、
    前記CPUが実行するプログラムの前記メモリへのアクセスパターンを解析する解析処理と、
    前記アクセスパターンの解析結果に基づいて、前記プログラムの実行において複数のバンクを含む前記メモリに対するアクセスアドレスからバンクアドレスを生成する際に使用する、前記バンクの物理アドレスマッピングを表す複数の生成基準のうち、前記プログラムの前記メモリへのアクセスにおいてバンク競合の発生が最も少なくなるような最適生成基準を決定する決定処理と、
    前記最適生成基準を用いて、前記アクセスアドレスから前記バンクアドレスを生成する変換処理と、
    を実行させるためのプログラムであって、
    前記解析処理は、複数の前記プログラムが前記メモリにアクセスする場合に、複数の前記プログラムのうちの少なくとも特定のプログラムに関して前記アクセスパターンを解析し、
    前記決定処理は、複数の前記プログラムに共通する前記最適生成基準を決定する、
    メモリアクセス制御プログラム。
JP2021118412A 2021-07-19 2021-07-19 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム Active JP7168731B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021118412A JP7168731B1 (ja) 2021-07-19 2021-07-19 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021118412A JP7168731B1 (ja) 2021-07-19 2021-07-19 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム

Publications (2)

Publication Number Publication Date
JP7168731B1 true JP7168731B1 (ja) 2022-11-09
JP2023014466A JP2023014466A (ja) 2023-01-31

Family

ID=83977461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021118412A Active JP7168731B1 (ja) 2021-07-19 2021-07-19 メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム

Country Status (1)

Country Link
JP (1) JP7168731B1 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005209184A (ja) 2003-12-26 2005-08-04 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US20060236072A1 (en) 2005-04-14 2006-10-19 International Business Machines Corporation Memory hashing for stride access
US20110153908A1 (en) 2009-12-23 2011-06-23 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US20140082322A1 (en) 2012-09-14 2014-03-20 Advanced Micro Devices, Inc. Programmable physical address mapping for memory
JP2016085541A (ja) 2014-10-23 2016-05-19 京セラドキュメントソリューションズ株式会社 メモリーコントローラー
US20190065392A1 (en) 2017-08-23 2019-02-28 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
JP2019520660A (ja) 2016-07-15 2019-07-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 柔軟なアドレスデコード機能を備えるメモリコントローラ
JP2021039486A (ja) 2019-09-02 2021-03-11 日本電気株式会社 メモリ制御方法、メモリ制御装置、プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805587B1 (en) * 2006-11-01 2010-09-28 Nvidia Corporation Memory addressing controlled by PTE fields

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005209184A (ja) 2003-12-26 2005-08-04 Tdk Corp メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US20060236072A1 (en) 2005-04-14 2006-10-19 International Business Machines Corporation Memory hashing for stride access
US20110153908A1 (en) 2009-12-23 2011-06-23 Intel Corporation Adaptive address mapping with dynamic runtime memory mapping selection
US20140082322A1 (en) 2012-09-14 2014-03-20 Advanced Micro Devices, Inc. Programmable physical address mapping for memory
JP2016085541A (ja) 2014-10-23 2016-05-19 京セラドキュメントソリューションズ株式会社 メモリーコントローラー
JP2019520660A (ja) 2016-07-15 2019-07-18 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 柔軟なアドレスデコード機能を備えるメモリコントローラ
US20190065392A1 (en) 2017-08-23 2019-02-28 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
JP2021039486A (ja) 2019-09-02 2021-03-11 日本電気株式会社 メモリ制御方法、メモリ制御装置、プログラム

Also Published As

Publication number Publication date
JP2023014466A (ja) 2023-01-31

Similar Documents

Publication Publication Date Title
US7949848B2 (en) Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program
US11768757B2 (en) Kernel debugging system and method
JP6666554B2 (ja) 情報処理装置、変換プログラム、及び変換方法
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
CN102750364B (zh) 为多镜像文件分配内存地址空间的方法、编译器和系统
JP3715863B2 (ja) メモリ・バンク間でメモリをインタリーブする方法
JP7168731B1 (ja) メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
US8352858B2 (en) High-speed web server
US8990741B2 (en) Circuit design support device, circuit design support method and program
JP7225904B2 (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JP5551868B2 (ja) 実行ファイル作成装置
JP2002007213A (ja) キャッシュメモリ制御方法及びプログラム処理方法
JP2016162008A (ja) データ配置決定装置、データ配置決定プログラム及びデータ配置決定方法
JP7239827B2 (ja) 情報処理装置及びコンパイラプログラム
JP2021018711A (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
CN113448958B (zh) 数据处理方法和装置、电子设备、存储介质
JPH06214803A (ja) 仮想空間ブロック配置方式
JP2023089343A (ja) 演算処理プログラムおよび演算処理方法
JP7274063B2 (ja) テストケース生成装置、テストケース生成方法及びテストケース生成プログラム
JP2004078600A (ja) ロードモジュール生成方法、ロードモジュール生成プログラムおよびロードモジュール生成装置
JP2023119890A (ja) 変換プログラムおよび変換方法
WO2020250420A1 (ja) プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
JP2013127703A (ja) ロードモジュール生成方法及びロードモジュール生成プログラム
US20040162960A1 (en) Generation of native code to enable page table access
JP2006260395A (ja) プログラムローディング方法及びその装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210719

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20211112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220728

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221004

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221027

R151 Written notification of patent or utility model registration

Ref document number: 7168731

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151