(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023127942
(43)【公開日】2023-09-14
(54)【発明の名称】演算処理装置及びメモリアクセス方法
(51)【国際特許分類】
G06F 12/04 20060101AFI20230907BHJP
H03M 7/30 20060101ALI20230907BHJP
【FI】
G06F12/04 530
H03M7/30 Z
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022031938
(22)【出願日】2022-03-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(71)【出願人】
【識別番号】598121341
【氏名又は名称】慶應義塾
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】近藤 正章
(72)【発明者】
【氏名】伊藤 真紀子
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160DA08
5J064AA02
5J064BC14
5J064BC22
5J064BC25
(57)【要約】 (修正有)
【課題】メモリアクセスを高速化させる演算処理装置びメモリアクセス方法を提供する。
【解決手段】マルチコアプロセッサ10は、主記憶装置1とメモリコントローラ2との間のデータ転送の際に、主記憶装置1上のデータについての圧縮方式の属性を参照し、参照した属性に基づき、圧縮方式を切り替えてデータ転送を実行する転送IF21を備える。属性は、所定の閾値である。転送IFは、所定の閾値と、メモリコントローラ2に備えられる閾値レジスタの値との比較結果に基づき、圧縮方式を切り替える。
【選択図】
図4
【特許請求の範囲】
【請求項1】
主記憶装置とメモリコントローラとの間のデータ転送の際に、前記主記憶装置上のデータについての圧縮方式の属性を参照し、
参照した前記属性に基づき、前記圧縮方式を切り替えて前記データ転送を実行する、
制御部を備える、演算処理装置。
【請求項2】
前記属性は、所定の閾値であり、
前記制御部は、前記所定の閾値と、前記メモリコントローラに備えられる閾値レジスタの値との比較結果に基づき、前記圧縮方式を切り替える、
請求項1に記載の演算処理装置。
【請求項3】
前記制御部は、
前記データのキャッシュラインのそれぞれを、所定のビット数を有する上位部と、下位部とに分割し、
前記キャッシュラインのそれぞれについて前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
請求項1又は2に記載の演算処理装置。
【請求項4】
前記データは、浮動小数点データであり、
前記制御部は、
前記浮動小数点データの指数部について、所定のビット数を有する上位部と、下位部とに分割し、
データブロック単位で前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
請求項1又は2に記載の演算処理装置。
【請求項5】
前記制御部は、前記データの圧縮の成功率に応じて、前記上位部のビット数を変更する、
請求項3又は4に記載の演算処理装置。
【請求項6】
前記データは、浮動小数点データであり、
前記制御部は、前記浮動小数点データの仮数部における所定の下位ビットを切り捨てて前記データ転送を実行する、
請求項1~5のいずれか一項に記載の演算処理装置。
【請求項7】
主記憶装置とメモリコントローラとの間のデータ転送の際に、前記主記憶装置上のデータについての圧縮方式の属性を参照し、
参照した前記属性に基づき、前記圧縮方式を切り替えて前記データ転送を実行する、
処理をコンピュータが実行する、メモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置及びメモリアクセス方法に関する。
【背景技術】
【0002】
物理シミュレーションなどの科学技術計算では、大規模な疎行列に対する連立一次方程式が解かれる。また、科学技術計算では、日本国の科学技術政策であるソサイエティ5.0を支えるサイバーフィジカルシステム(CPS)やビッグデータ処理の重要データ基盤と、大規模グラフデータ構造が使用される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2019-208203号公報
【特許文献2】特表2017-516232号公報
【特許文献3】米国特許公開公報第2020/0201602号
【特許文献4】米国特許公報第10,122,379号
【発明の概要】
【発明が解決しようとする課題】
【0004】
科学技術計算で使用されるグラフ解析処理は、基本的に疎行列演算となることが多い。これらの疎行列演算処理を効率的に扱うことのできるアーキテクチャが検討されているが、疎行列演算はコア内の演算処理に比べてメモリバンド幅がボトルネックとなるおそれがある。
【0005】
1つの側面では、メモリアクセスを高速化させることを目的とする。
【課題を解決するための手段】
【0006】
1つの側面では、演算処理装置は、主記憶装置とメモリコントローラとの間のデータ転送の際に、前記主記憶装置上のデータについての圧縮方式の属性を参照し、参照した前記属性に基づき、前記圧縮方式を切り替えて前記データ転送を実行する、制御部を備える。
【発明の効果】
【0007】
1つの側面では、メモリアクセスを高速化させることができる。
【図面の簡単な説明】
【0008】
【
図1】関連例としてのマルチコアプロセッサにおけるデータ転送を説明するブロック図である。
【
図2】関連例としてのマルチコアプロセッサにおける圧縮データのデータ転送を説明するブロック図である。
【
図3】関連例としてのマルチコアプロセッサにおける圧縮データと非圧縮データとを切り替えたデータ転送を説明するブロック図である。
【
図4】実施形態としてのマルチコアプロセッサにおけるデータ転送を説明するブロック図である。
【
図5】
図4に示したTLB及び圧縮情報を例示するテーブルである。
【
図6】実施形態におけるバス上でのデータ圧縮によるSpMV演算を例示する図である。
【
図7】
図6に示したSpMV演算の疑似コードを例示する図である。
【
図8】実施形態におけるデータ転送における圧縮処理を説明する図である。
【
図9】実施形態における閾値による圧縮方式の変更処理を説明する図である。
【
図10】
図9に示したTLB及び圧縮情報を例示するテーブルである。
【
図11】第1変形例における可逆圧縮処理を説明する図である。
【
図12】第1変形例における転送データを圧縮できない場合を説明する図である。
【
図13】第1変形例におけるマルチコアプロセッサを例示するブロック図である。
【
図14】第1変形例におけるTLB及び統計情報を例示するテーブルである。
【
図15】第1変形例における圧縮率評価の第1の例を説明する図である。
【
図16】第1変形例における圧縮率評価の第2の例を説明する図である。
【
図17】第2変形例における圧縮処理の第1の例を説明する図である。
【
図18】第2変形例における圧縮処理の第2の例を説明する図である。
【
図19】第2変形例における圧縮率評価の第1の例を説明する図である。
【
図20】第2変形例における圧縮率評価の第2の例を説明する図である。
【
図21】第2変形例における圧縮率評価の第3の例を説明する図である。
【
図22】第2変形例における圧縮率評価の第4の例を説明する図である。
【
図23】第2変形例における圧縮率評価の第5の例を説明する図である。
【
図24】実施形態,第1変形例及び第2変形例を組み合わせた場合におけるTLBを例示するテーブルである。
【
図25】実施形態におけるマルチコアプロセッサのハードウェア構成例を模式的に示すブロック図である。
【
図26】実施形態としてのメモリコントローラ側の転送IFにおけるデータ転送処理を説明するフローチャートである。
【
図27】実施形態としてのメインメモリ側の転送IFにおけるデータ転送処理を説明するフローチャートである。
【
図28】実施形態としての圧縮方式の選択処理を説明するフローチャートである。
【
図29】第1変形例及び第2変形例としての圧縮方式の選択処理を説明するフローチャートである。
【
図30】実施形態,第1変形例及び第2変形例としての圧縮方式の選択処理を説明するフローチャートである。
【
図31】実施形態としてのデータ送受信時における統計情報の更新処理を説明するフローチャートである。
【
図32】実施形態としてのビット幅調整時における統計情報の更新処理を説明するフローチャートである。
【
図33】実施形態としてのデータ圧縮処理を説明するフローチャートである。
【
図34】実施形態としてのデータ伸長処理を説明するフローチャートである。
【
図35】第1変形例としてのデータ圧縮処理を説明するフローチャートである。
【
図36】第1変形例としてのデータ伸長処理を説明するフローチャートである。
【
図37】第2変形例としてのデータ圧縮処理の第1の例を説明するフローチャートである。
【
図38】第2変形例としてのデータ伸長処理の第1の例を説明するフローチャートである。
【
図39】第2変形例としてのデータ圧縮処理の第2の例を説明するフローチャートである。
【
図40】第2変形例としてのデータ伸長処理の第2の例を説明するフローチャートである。
【
図41】実施形態,第1変形例及び第2変形例としてのデータ圧縮によるSpMV計算の性能を説明するテーブルである。
【発明を実施するための形態】
【0009】
〔A〕関連例
図1は、関連例としてのマルチコアプロセッサ60におけるデータ転送を説明するブロック図である。
【0010】
マルチコアプロセッサ60は、メインメモリ6,メモリコントローラ7,LLC8(Last Level Cache)及び複数のコア81を備える。また、マルチコアプロセッサ60は、TLB701(Translation Lookaside Buffer)を保持する。
【0011】
メインメモリ6は、転送IF61(Interface)を備え、データを非圧縮でメモリコントローラ7に転送する。
【0012】
メモリコントローラ7は、転送IF71を備え、メインメモリ6か受け取ったデータを非圧縮でLLC8へ転送する。また、メモリコントローラ7は、マルチコアプロセッサ60が保持するTLB701の情報を利用する。
【0013】
複数のコア81は、LLC8を介して、メモリコントローラ7から受け取ったデータを処理する。複数のコア81の側において、TLB701を物理アドレスでルックアップして属性情報を取得することにより、アドレス変換が行われてもよい。
【0014】
図2は、関連例としてのマルチコアプロセッサ60における圧縮データのデータ転送を説明するブロック図である。
【0015】
図2に示すマルチコアプロセッサ60aは、
図1に示したマルチコアプロセッサ60と比較して、メインメモリ6に圧縮データ601が配置される。
【0016】
メインメモリ6の転送IF61は、圧縮データ601を可逆圧縮方式でメモリコントローラ7に転送する。
【0017】
メモリコントローラ7の転送IF71は、メインメモリ6から受け取った圧縮データ601を非圧縮方式でLLC8へ転送する。
【0018】
図3は、関連例としてのマルチコアプロセッサ60bにおける圧縮データと非圧縮データとを切り替えたデータ転送を説明するブロック図である。
【0019】
図3に示すマルチコアプロセッサ60bは、
図1に示したマルチコアプロセッサ60と比較して、メインメモリ6に圧縮データ601及び非圧縮データ602が配置される。
【0020】
メインメモリ6の転送IF61は、不可逆圧縮データ601を不可逆圧縮方式でメモリコントローラ7に転送すると共に、非圧縮データ602を非圧縮方式でメモリコントローラ7に転送する。
【0021】
メモリコントローラ7の転送IF71は、メインメモリ6から受け取った不可逆圧縮データ601を不可逆圧縮方式でLLC8へ転送すると共に、メインメモリ6から受け取った非圧縮データ602を非逆圧縮方式でLLC8へ転送する。
【0022】
図3に示すマルチコアプロセッサ60bは、CPU(Central Processing Unit)でソフトウェアから段階的にデータの圧縮/非圧縮を切り替えて計算を行う。メインメモリ6に圧縮データ601及び非圧縮データ602の両方を置く必要があり、領域を有効活用しながら圧縮/非圧縮の切り替えを行えないおそれがある。
【0023】
〔B〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0024】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0025】
図4は、実施形態としてのマルチコアプロセッサ10におけるデータ転送を説明するブロック図である。
【0026】
マルチコアプロセッサ10は、メインメモリ1(別言すれば、主記憶装置),メモリコントローラ2,LLC3及び複数のコア31を備える。また、マルチコアプロセッサ60は、TLB201及び圧縮情報202を保持する。
【0027】
メインメモリ1は、制御部の一例として転送IF11を備え、非圧縮データ101を不可逆圧縮方式,可逆圧縮方式又は非圧縮方式でメモリコントローラ2に転送する。
【0028】
メモリコントローラ2は、制御部の一例として転送IF21を備え、メインメモリ1か受け取った非圧縮データ101を非圧縮でLLC3へ転送する。また、メモリコントローラ2は、マルチコアプロセッサ10が保持するTLB201及び圧縮情報202の情報を利用する。データの圧縮又は伸長を行う。
【0029】
複数のコア31は、LLC3を介して、メモリコントローラ2から受け取ったデータを処理する。複数のコア31の側において、TLB201を物理アドレスでルックアップして属性情報を取得することにより、アドレス変換が行われてもよい。
【0030】
マルチコアプロセッサ10は、圧縮して又は非圧縮でメインメモリ1とLLC3との間でデータを転送する。LLC3及びコア31の設計は、
図1~
図3に示した関連例から変更されなくてよい。ページテーブルの属性として圧縮アクセスが指定されるため、ソフトウェア(System call)による設定ができるロス有りの不可逆圧縮により圧縮率が向上される。圧縮時の情報を蓄積し、アプリケーションと連携して圧縮率を調整することで、演算精度への影響を低減できる。
また、不可逆圧縮により大幅な圧縮が可能となる。メインメモリ1上では非圧縮データ101で保持されているため、アクセラレータ4などの他のデバイスとのデータの共有が容易となる。関連例では、書き込みデータを圧縮する際に、フラグメンテーションが発生する可能性があるが、実施形態ではフラグメンテーションの発生がないのでメモリ管理を効率的に行える。
【0031】
更に、実施形態では、転送時の圧縮方式を切り替えるため、メインメモリ1には非圧縮データ領域のみ確保すればよく、切り替えも容易となる。
【0032】
図5は、
図4に示したTLB201及び圧縮情報202を例示するテーブルである。
【0033】
TLB201及び圧縮情報202には、論理アドレスと物理アドレスと属性とが対応付けられている。属性は、Valid,Read Only,Dirty及び圧縮方式を含んでよい。Valid,Read Only及びDirtyにおいて、“1”は有効を示し、“0”は無効を示す。圧縮方式において、“00”は不可逆圧縮を示してよく、“01”は可逆圧縮を示してよい。
【0034】
すなわち、転送IF21は、メインメモリ1とメモリコントローラ2との間のデータ転送の際に、メインメモリ1上のデータについての圧縮方式の属性を参照する。転送IF21は、参照した属性に基づき、圧縮方式を切り替えてデータ転送を実行する。
【0035】
図6は、実施形態におけるバス上でのデータ圧縮によるSpMV演算を例示する図である。
【0036】
図6に示すSpMV演算は、符号A1に示す疎行列Aと符号A2に示すベクトルxとの積により、符号A3に示すベクトルyを得る。
【0037】
図7は、
図6に示したSpMV演算の疑似コードを例示する図である。
【0038】
図7に示す疑似コードにおいて、二重枠は疎行列データリードを示し、破線枠は演算を示す。
【0039】
ここで、SpMVのB/F比を考察する。なお、B/F比は、一演算あたりに必要となるメモリバンド幅である。
【0040】
行列のデータリードは12B+α(8B(data) + 4B(col_index) + α(row_ptr))で表され、演算は2FLOP(+, *)で表される。SpMVが要求するB/F比は、(12B+α)/ 2FLOP = 6B/Fである。A64FXのメモリバンド幅(ハードウェアの上限)を0.4Byte/Flopとすると、SpMVの実行性能は0.4 / 6 = 6.7%となる。すなわち、実行時間の93.3%はメモリからのデータの供給待ちとなる。
【0041】
このように、疎行列データを圧縮することで、SpMVのB/F比を削減し、実行性能を上げることができる。
【0042】
図8は、実施形態におけるデータ転送における圧縮処理を説明する図である。
【0043】
実施形態における圧縮処理では、単精度浮動小数点数へ変換が行われ、dataの圧縮が行われ、倍精度から半精度への変換が行われる。
【0044】
単精度浮動小数点数への変換では、DP(倍精度浮動小数点数)のデータがSP(単精度浮動小数点数)に不可逆変換されて転送される。
【0045】
整数データであるcol_indexの圧縮では、キャッシュライン毎に共通の上位ビット及び各ワードの下位ビットで圧縮が行われる。隣接するcol_indexは値が比較的近いため上位ビットは共通なことが多い。また、col_indexの圧縮では、ライン毎に最初のbitで圧縮ラインかどうかが判断される。圧縮不可能であれば通常のビット数でライン転送が行われる。
【0046】
倍精度又は単精度から半精度への変換では、指数部の上位ビットが共通ならキャッシュライン単位で圧縮が行われる。
【0047】
図8に示す例では、符号B1に示すように、1bitのSignと11bitの指数部と52biitの仮数部で構成されるデータが与えられる。符号B1に示すデータは、64bit×8word=512bit=64Bのサイズを有する。
【0048】
符号B2に示すように、圧縮後のデータは、6bitの指数部の構成、及び、1bitのSignと5bitの指数部と10bitの仮数部との構成が8word分に圧縮される。符号B2に示すデータは、(1+6)bit+16bit×8word=135bit≒17Bのサイズを有する。
【0049】
ここで、不可逆圧縮を用いて連立一次方程式b=Axを反復法で解く手順を説明する。
【0050】
まず、行列A,ベクトルbが与えられる。
【0051】
初期化処理として、以下の数1及び数2の計算が行われる。
【0052】
【0053】
【数2】
norm <εまで以下の数3~数9の計算が繰り返される。
【0054】
【0055】
【0056】
【0057】
【0058】
【0059】
【0060】
【数9】
次に、反復の途中で圧縮方式を変更する手法を説明する。
【0061】
まず、行列A,ベクトルbが与えられる。
【0062】
初期化処理として、以下の数10及び数11の計算が行われる。
【0063】
【0064】
【数11】
圧縮方式=不可逆圧縮(SP)が指定され、norm <εまで以下の数12~数18の計算が繰り返される。
【0065】
【0066】
【0067】
【0068】
【0069】
【0070】
【数17】
norm <α(閾値))となったら、圧縮方式=非圧縮に変更される。
【0071】
【数18】
最終的にDPで計算され、規定の誤差ε以内まで演算処理を繰り返すため収束すれば精度は要求通りとなる。そして、不可逆圧縮(SP)が利用されることでSpMVの性能向上ができ、メインメモリ1上はDPのため切り替えが容易となる。
【0072】
図9は、実施形態における閾値による圧縮方式の変更処理を説明する図である。
【0073】
図9に示すように、メモリコントローラ2は、転送IF21に加えて、閾値レジスタ22を備えてよい。なお、
図9においては1つの閾値レジスタ22が示されているが、閾値レジスタ22は複数備えられてよい。
【0074】
norm <α(閾値)となったら圧縮方式=非圧縮に変更される。
【0075】
圧縮方式の変更は、符号B3に示すTLB及び圧縮情報のテーブルにおいて、ページテーブルの属性を変更することによってソフトウェアで実現されてよい。norm<α(閾値)となったら、システムコールで属性の圧縮フラグが非圧縮に変更されてよい。
【0076】
符号B3に示すTLB及び圧縮情報のテーブルには、論理アドレスと物理アドレスと属性とが対応づけられている。属性には、圧縮フラグ#0,圧縮フラグ#1,閾値及び閾値レジスタ番号を含んでよい。
【0077】
また、圧縮方式の変更は、専用の閾値レジスタ22の値で切り替えられることにより、メモリコントローラ2で実現されてもよい。ソフトウェアから閾値レジスタ22の値(norm)が更新される。
【0078】
また、符号B3に示すように、ページテーブルの属性に複数の圧縮フラグ#0,#1と閾値が追加される。閾値レジスタ22の値が指定の閾値よりも小さい場合は圧縮フラグ#の値に従って、閾値レジスタ22の値が指定の閾値以上の場合は、圧縮フラグ#1の値に従って、圧縮・伸長が行われる。
【0079】
すなわち、転送IF21は、所定の閾値と、メモリコントローラ2に備えられる閾値レジスタ22の値との比較結果に基づき、圧縮方式を切り替える。
【0080】
図10は、
図9に示したTLB及び圧縮情報を例示するテーブルである。
【0081】
TLB及び圧縮情報のテーブルには、論理アドレスと物理アドレスと属性とが対応づけられている。属性には、Valid,Read Only,Dirty,圧縮フラグ#0,圧縮フラグ#1,閾値及び閾値レジスタ番号を含んでよい。Valid,Read Only及びDirtyにおいて、“1”は有効を示し、“0”は無効を示す。圧縮方式において、“00”は不可逆圧縮を示してよく、“01”は可逆圧縮を示してよい。閾値レジスタ番号は、メモリコントローラ2に備えられる複数の閾値レジスタ22のうち対応する閾値レジスタ22を識別するための番号を示す。
【0082】
ここで、連立一次方程式b = A・xを反復法で解く手法を説明する。
【0083】
まず、行列A, ベクトルbが与えられ、初期化処理が行われる。そして、以下の(1)~(3)の処理が繰り返される。
【0084】
(1)xk+1 = f(A, b, xk)で、より正解に近い解xk+1を求める。
【0085】
(2)g(xk+1) < ε(許容誤差範囲)となったら終了する。
【0086】
(3)k += 1とする。
【0087】
次に、反復の途中で圧縮方式を変更する手法を説明する。
【0088】
まず、行列A, ベクトルb が与えられ、x0が初期化され、k=0とされる。圧縮方式=圧縮方式#3が指定され初期化処理が行われる。そして、以下の(1)~(4)の処理が繰り返される。
【0089】
(1)xk+1 = f(A, b, xk)で、より正解に近い解xk+1を求める。
【0090】
(2)g(xk+1) <ε(許容誤差範囲)となったら終了する。
【0091】
(3)g(xk+1) <αxとなったら、圧縮方式=圧縮方式#xに変更する。
【0092】
(4)k += 1
〔B-1〕第1変形例
図11は、第1変形例における可逆圧縮処理を説明する図である。
【0093】
第1変形例では、可逆圧縮方法によってcolidx圧縮がおこなわれる。キャッシュライン毎に共通の上位ビット及び各ワードの下位ビットで圧縮が行われる。隣接するcolidxは値が比較的近いため上位ビットは共通なことが多い。ライン毎に最初のビットで圧縮ラインかどうかが判断される。圧縮不可能であれば通常のビット数でライン転送が行われる。
【0094】
符号C1に示す例では、圧縮前の通常データにおいて、colidx[] = [18, 19, 22, 325, 343, ….]でラインサイズ64Bとなっている。すなわち、通常データのサイズは、32bit×16word=512bitである。
【0095】
そして、符号C2に示す例では、圧縮データにおいて、flag bit(圧縮データであることを示す“1”)が1bit及びbase 20bitに対してword 12bitとなっている。すなわち、圧縮データのサイズは1bit + 20bit + 12bit x 16word = 213bitとなり、圧縮率は2.4となる。
【0096】
すなわち、転送IF21は、データのキャッシュラインのそれぞれを、所定のビット数を有する上位部と、下位部とに分割する。転送IF21は、キャッシュラインのそれぞれについて上位部が共通である場合に、共通の上位部とデータワード毎の下位部とのデータ転送を実行する。
【0097】
図12は、第1変形例における転送データを圧縮できない場合を説明する図である。
【0098】
符号D1に示す例では、32bit x 16word = 64Byteのデータの各wordの上位20bitが参照される。そして、各wordの上位20bitが一つでも一致しない場合には圧縮不可と判定される。
【0099】
符号D2に示す例では、圧縮できない場合のデータとして、符号D1に示した元のデータの先頭に1bitのflag bit(非圧縮データであることを示す“0”)が付加される。すなわち、圧縮できない場合のデータサイズは、1bit + 64Byteとなる。
【0100】
図13は、第1変形例におけるマルチコアプロセッサ10aを例示するブロック図である。
【0101】
図13に示す第1変形例におけるマルチコアプロセッサ10aは、
図4に示した実施形態におけるマルチコアプロセッサ10と比較して、メモリコントローラ2が統計情報23を追加で保持してよい。なお、共通ビット数が固定の場合にはビット数調整は不要であるため、統計情報23は保持されなくてもよい。
【0102】
転送時に、ページごとのアクセス回数と圧縮成否がカウントされる。例えば、ページサイズ:は4KBであり、キャッシュラインサイズは64Bであってよい。
【0103】
定期的(例えば、アクセス回数が規定値に到達時)に、共通ビット数の調整処理が実行されてよい。成功率が低下した場合にはビット数を増加させ、成功率が高い場合にはビット数を減少させてよい。
【0104】
圧縮データが読み出し専用の場合には、ビット幅の調整処理の開始前に圧縮成功率を規定値以上になるように調整が行われてよい。この場合には、共通ビット数が小さく設定され、データの読み込みが繰り返され、成功率が規定値以下の場合に共通ビット数が増加される。
【0105】
すなわち、転送IF21は、データの圧縮の成功率に応じて、上位部のビット数を変更する。
【0106】
図14は、第1変形例におけるTLB201及び統計情報23を例示するテーブルである。
【0107】
符号E1に示すTLB201には、論理アドレスと物理アドレスと属性とが対応付けられている。属性には、Valid,Read Only,Dirty,圧縮方式#0,圧縮方式#1,閾値,閾値レジスタ番号及び統計情報テーブル番号が含まれてよい。
【0108】
符号E1に示す論理アドレス0x1_107Bのデータには統計情報テーブル番号”0”が設定されており、符号E2に示す統計情報23のテーブル番号”0”のデータに対応している。また、符号E1に示す論理アドレス0x3_0202のデータには統計情報テーブル番号”1”が設定されており、符号E2に示す統計情報23のテーブル番号”1”のデータに対応している。
【0109】
図15は、第1変形例における圧縮率評価の第1の例を説明する図である。
【0110】
図15に示す例では、base-20, word-12のデータについてのcolidxの圧縮率評価が示されている。
【0111】
符号F1のグラフには、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。符号F2のグラフには、疎行列の種類毎の圧縮率が示されている。符号F3には、圧縮データが1bitのflag bitと20bitのbaseと12bitの複数のwordとで構成されることが示されている。
【0112】
図16は、第1変形例における圧縮率評価の第2の例を説明する図である。
【0113】
図16に示す例では、base-18, word-14のデータについてのcolidxの圧縮率評価が示されている。
【0114】
符号G1のグラフには、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。符号G2のグラフには、疎行列の種類毎の圧縮率が示されている。符号G3には、圧縮データが1bitのflag bitと18bitのbaseと14bitの複数のwordとで構成されることが示されている。
【0115】
〔B-2〕第2変形例
図17は、第2変形例における圧縮処理の第1の例を説明する図である。
【0116】
第2変形例では、指数部の拡張が行われ、指数部の上位ビットが共通の場合にキャッシュライン単位で圧縮が行われる。
【0117】
符号H2には、1bitのSignと11bitの指数部と52bitの仮数部とによって、64bit × 8word =512bitのサイズのデータが示されている。符号H3には、符号H1に示したデータに加え拡張された16bitの指数部によって、(1+6)bit + 16bit × 8word =135bit ≒ 17Bのサイズのデータが示されている。
【0118】
すなわち、転送IF21は、浮動小数点データの指数部について、所定のビット数を有する上位部と、下位部とに分割する。転送IF21は、データブロック単位で上位部が共通である場合に、共通の上位部とデータワード毎の下位部とのデータ転送を実行する。
【0119】
第2変形例においても、上述した実施形態と同様に、閾値による圧縮方式の切り替えが実施されてよい。また、第2変形例においても、上述した第1変形例と同様に、共通ビット幅の調整処理が実施されてよい。
【0120】
図18は、第2変形例における圧縮処理の第2の例を説明する図である。
【0121】
上位ビットが共通でない場合には、仮数部のみ圧縮されてよい。符号H4に示す元のデータは、1bitのSignと11bitの仮数部と52bitの仮数部とによって構成されている。符号H5に示す圧縮度のデータは、1bitのSignと11bitの仮数部と10bitの仮数部とによって構成されている。
【0122】
また、上位ビットが共通でない場合には、仮数部も倍精度のままにされてもよい。転送IF21は、浮動小数点データの仮数部における所定の下位ビットを切り捨ててデータ転送を実行してもよい。
【0123】
図19は、第2変形例における圧縮率評価の第1の例を説明する図である。
【0124】
符号I1には、5bitの指数部と10bitの仮数部に加えて6bitの拡張した指数部を有するデータについて、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。
【0125】
符号I2には、6bitの指数部と10bitの仮数部に加えて5bitの拡張した指数部を有するデータについて、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。
【0126】
符号I3には、4bitの指数部と10bitの仮数部に加えて7bitの拡張した指数部を有するデータについて、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。
【0127】
符号I4には、7bitの指数部と10bitの仮数部に加えて4bitの拡張した指数部を有するデータについて、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている。
【0128】
図20は、第2変形例における圧縮率評価の第2の例を説明する図である。
図21は、第2変形例における圧縮率評価の第3の例を説明する図である。
図22は、第2変形例における圧縮率評価の第4の例を説明する図である。
図23は、第2変形例における圧縮率評価の第5の例を説明する図である。
【0129】
図20には、5bitの指数部と10bitの仮数部に加えて6bitの拡張した指数部を有するデータ(符号J1参照)について、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている(符号J2参照)。
【0130】
図21には、6bitの指数部と10bitの仮数部に加えて5bitの拡張した指数部を有するデータ(符号K1参照)について、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている(符号K2参照)。
【0131】
図22には、4bitの指数部と10bitの仮数部に加えて7bitの拡張した指数部を有するデータ(符号L1参照)について、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている(符号L2参照)。
【0132】
図23には、7bitの指数部と10bitの仮数部に加えて4bitの拡張した指数部を有するデータ(符号M1参照)について、疎行列の種類毎の圧縮可の割合(斜線柄領域を参照)と圧縮不可の割合(チェック柄領域を参照)とが示されている(符号M2参照)。
【0133】
〔B-3〕実施形態,第1変形例及び第2変形例の組み合わせ
図24は、実施形態,第1変形例及び第2変形例を組み合わせた場合におけるTLB201を例示するテーブルである。
【0134】
図24に示すTLB201は、論理アドレスと物理アドレスと属性とが対応付けられている。属性は、Valid,Read Only,Dirty,圧縮方式#0,圧縮方式#1,閾値及び閾値レジスタ番号を含んでよい。Valid,Read Only及びDirtyにおいて、“1”は有効を示し、“0”は無効を示す。圧縮方式#0,#1において、“0”は圧縮なしを示し、“1”は実施形態による圧縮を示し、“2”は第1変形例による圧縮を示し、“3”は第2変形例による圧縮を示す。
【0135】
〔B-4〕ハードウェア構成例
図25は、実施形態におけるマルチコアプロセッサ10のハードウェア構成例を模式的に示すブロック図である。
【0136】
マルチコアプロセッサ10は、メインメモリ1(DRAM),メモリコントローラ2,LLC3(キャッシュ)及びコア31(プロセッサコア部)を備える。なお、DRAMは、Dynamic Random Access Memoryの略である。
【0137】
メインメモリ1は転送IF11を備えると共に、メモリコントローラ2は転送IF21を備える。メインメモリ1の転送IF11とメモリコントローラ2の転送IF21との間では、圧縮データが送受信されると共に、アドレスや圧縮制御のための制御情報が送受信される。
【0138】
メモリコントローラ2の転送IF21とLLC3との間では、非圧縮データが送受信される。
【0139】
〔B-5〕動作例
実施形態としてのメモリコントローラ2側の転送IF21におけるデータ転送処理を、
図26に示すフローチャート(ステップS1~S10)に従って説明する。
【0140】
メモリコントローラ2の転送IF21は、圧縮方式xを選択する(ステップS1)。なお、圧縮方式の選択処理の詳細は、
図28~
図30等を用いて後述する。
【0141】
転送IF21は、圧縮方式xが非圧縮であるかを判定する(ステップS2)。
【0142】
圧縮方式xが非圧縮である場合には(ステップS2のYESルート)、転送IF21は、通常のread/write処理を実行する(ステップS3)。そして、実施形態としてのメモリコントローラ2側の転送IF21におけるデータ転送処理は終了する。
【0143】
圧縮方式xが非圧縮でない場合には(ステップS2のNOルート参照)、転送IF21は、処理が読み出しであるかを判定する(ステップS4)。
【0144】
処理が読み出しでない場合には(ステップS4のNOルート参照)、転送IF21は、圧縮方式xでデータ圧縮処理を行う(ステップS5)。なお、データ圧縮処理の詳細は、
図33,
図35,
図37及び
図39を用いて後述する。
【0145】
転送IF21は、圧縮付きWrite要求を行い、圧縮データを送信する(ステップS6)。
【0146】
転送IF21は、統計情報を更新する(ステップS7)。そして、実施形態としてのメモリコントローラ2側の転送IF21におけるデータ転送処理は終了する。
【0147】
ステップS4において処理が読み出しである場合には(ステップS4のYESルート参照)、転送IF21は、圧縮付きRead要求を送信する(ステップS8)。
【0148】
転送IF21は、データを受信する(ステップS9)。
【0149】
転送IF21は、圧縮方式xでデータを伸長する(ステップS10)。なお、データ伸長処理の詳細は、
図34,
図36,
図38及び
図40を用いて後述する。そして、処理はステップS7へ進む。
【0150】
次に、実施形態としてのメインメモリ1側の転送IF11におけるデータ転送処理を、
図27に示すフローチャート(ステップS21~S30)に従って説明する。
【0151】
メインメモリ1の転送IF11は、データ処理の要求を受信したかを判定する(ステップS21)。
【0152】
データ処理の要求を受信していない場合には(ステップS21のNOルート参照)、ステップS21の処理が繰り返し行われる。
【0153】
データ処理の要求を受信した場合には(ステップS21のYESルート参照)、転送IF11は、処理対象のデータが圧縮付きであるかを判定する(ステップS22)。
【0154】
処理対象のデータが圧縮付きでない場合には(ステップS22のNOルート参照)、転送IF11は、通常のread/write処理を実行する(ステップS23)。そして、実施形態としてのメインメモリ1側の転送IF11におけるデータ転送処理は終了する。
【0155】
一方、処理対象のデータが圧縮付きである場合には(ステップS22のYESルート参照)、転送IF11は、処理が読み出しであるかを判定する(ステップS24)。
【0156】
処理が読み出しでない場合には(ステップS24のNOルート参照)、転送IF11は、データを受信する(ステップS25)。
【0157】
転送IF11は、圧縮方式xでデータを伸長させる(ステップS26)。なお、データ伸長処理の詳細は、
図34,
図36,
図38及び
図40を用いて後述する。
【0158】
転送IF11は、メインメモリ1にデータを書き込み(ステップS27)、実施形態としてのメインメモリ1側の転送IF11におけるデータ転送処理は終了する。
【0159】
ステップS24において処理が読み出しである場合には(ステップS24のYESルート参照)、転送IF11は、メインメモリ1からデータを読み出す(ステップS28)。
【0160】
転送IF11は、圧縮方式xでデータ圧縮処理を行う(ステップS29)。なお、データ圧縮処理の詳細は、
図33,
図35,
図37及び
図39を用いて後述する。
【0161】
転送IF11は、データを送信し(ステップS30)、実施形態としてのメインメモリ1側の転送IF11におけるデータ転送処理は終了する。
【0162】
次に、実施形態としての圧縮方式の選択処理を、
図28に示すフローチャート(ステップS11~S15)に従って説明する。
【0163】
メモリコントローラ2側の転送IF21は、TLB201から属性を読み出す(ステップS11)。読み出される属性は、例えば、t = 閾値, i = 閾値レジスタ番号, f0=圧縮フラグ#0, f1=圧縮フラグ#1であってよい。
【0164】
転送IF21は、変数xに閾値レジスタ22の値[i]を設定する(ステップS12)。
【0165】
転送IF21は、x<tが成り立つかを判定する(ステップS13)。
【0166】
x<tが成り立つ場合には(ステップS13のYESルート参照)、転送IF21は、f0を返す(ステップS14)。そして、実施形態としての圧縮方式の選択処理は終了する。
【0167】
一方、x≧tが成り立つ場合には(ステップS13のNOルート参照)、転送IF21は、f1を返す(ステップS15)。そして、実施形態としての圧縮方式の選択処理は終了する。
【0168】
次に、第1変形例及び第2変形例としての圧縮方式の選択処理を、
図29に示すフローチャート(ステップS16~S20)に従って説明する。
【0169】
メモリコントローラ2側の転送IF21は、TLB201から属性を読み出す(ステップS16)。読み出される属性は、例えば、f=圧縮フラグ#0, s=統計情報レジスタ番号であってよい。
【0170】
転送IF21は、fが有効な値であるかを判定する(ステップS17)。
【0171】
fが有効な値である場合には(ステップS17のYESルート参照)、転送IF21は、統計情報から共通ビットを読み出し、n=ビット数に設定する(ステップS18)。そして、処理はステップS20へ進む。
【0172】
一方、fが有効な値でない場合には(ステップS17のNOルート参照)、転送IF21は、n=0に設定する(ステップS19)。
【0173】
転送IF21は、f, nを返す(ステップS20)。そして、第1変形例及び第2変形例としての圧縮方式の選択処理は終了する。
【0174】
次に、実施形態,第1変形例及び第2変形例としての圧縮方式の選択処理を、
図30に示すフローチャート(ステップS101~S109)に従って説明する。
【0175】
メモリコントローラ2側の転送IF21は、TLB201から属性を読み出す(ステップS101)。読み出される属性は、例えば、t = 閾値, i = 閾値レジスタ番号, f0=圧縮フラグ#0, f1=圧縮フラグ#1であってよい。
【0176】
転送IF21は、変数xに閾値レジスタ22の値[i]を設定する(ステップS102)。
【0177】
転送IF21は、x<tが成り立つかを判定する(ステップS103)。
【0178】
x<tが成り立つ場合には(ステップS103のYESルート参照)、転送IF21は、f=f0を返す(ステップS104)。そして、処理はステップS106へ進む。
【0179】
一方、x≧tが成り立つ場合には(ステップS103のNOルート参照)、転送IF21は、f=f1を返す(ステップS105)。
【0180】
転送IF21は、f==10又はf==11であるかを判定する(ステップS106)。
【0181】
f==10又はf==11である場合には(ステップS106のYESルート参照)、転送IF21は、統計情報から共通ビットを読み出し、n=ビット数に設定する(ステップS107)。そして、処理はステップS109へ進む。
【0182】
一方、f==10且つf==11でない場合には(ステップS106のNOルート参照)、転送IF21は、n=0に設定する(ステップS108)。
【0183】
転送IF21は、f, nを返す(ステップS109)。そして、施形態,第1変形例及び第2変形例としての圧縮方式の選択処理は終了する。
【0184】
次に、実施形態としてのデータ送受信時における統計情報の更新処理を、
図31に示すフローチャート(ステップS71~S73)に従って説明する。
【0185】
メモリコントローラ2の転送IF21は、圧縮が成功したかを判定する(ステップS71)。
【0186】
転送IF21は、圧縮が成功していない場合には(ステップS71のルート参照)、処理はステップS73ヘ進む。
【0187】
一方、圧縮が成功した場合には(ステップS71のYESルート参照)、転送IF21は、統計情報テーブルの当該エントリの成功回数を+1する(ステップS72)。
【0188】
転送IF21は、統計情報テーブルの当該エントリのアクセス回数を+1する(ステップS73)。そして、実施形態としてのデータ送受信時における統計情報の更新処理は終了する。
【0189】
次に、実施形態としてのビット幅調整時における統計情報の更新処理を、
図32に示すフローチャート(ステップS76~S79)に従って説明する。
【0190】
メモリコントローラ2の転送IF21は、圧縮成功/アクセス回数>規定値#0であるかを判定する(ステップS76)。
【0191】
圧縮成功/アクセス回数≦規定値#0である場合には(ステップS76のNOルート参照)、処理はステップS78へ進む。
【0192】
一方、圧縮成功/アクセス回数>規定値#0である場合には(ステップS76のYESルート参照)、転送IF21は、共通ビット数を-1する(ステップS77)。
【0193】
メモリコントローラ2の転送IF21は、圧縮成功/アクセス回数<規定値#1であるかを判定する(ステップS78)。
【0194】
圧縮成功/アクセス回数≧規定値#1である場合には(ステップS78のNOルート参照)、実施形態としてのデータ送受信時における統計情報の更新処理は終了する。
【0195】
圧縮成功/アクセス回数<規定値#1である場合には(ステップS78のYESルート参照)、転送IF21は、共通ビット幅を+1する(ステップS79)。そして、実施形態としてのデータ送受信時における統計情報の更新処理は終了する。
【0196】
次に、実施形態としてのデータ圧縮処理を、
図33に示すフローチャート(ステップS51)に従って説明する。
【0197】
転送IF11は、倍精度浮動小数点数を単精度浮動小数点数に変換する(ステップS51)、そして、実施形態としてのデータ圧縮処理は終了する。
【0198】
次に、実施形態としてのデータ伸長処理を、
図34に示すフローチャート(ステップS41)に従って説明する。
【0199】
転送IF11は、単精度浮動小数点数を倍精度浮動小数点数に変換する(ステップS41)、そして、実施形態としてのデータ伸長処理は終了する。
【0200】
次に、第1変形例としてのデータ圧縮処理を、
図35に示すフローチャート(ステップS56~S58)に従って説明する。
【0201】
転送IF11は、キャッシュラインの全データの上位nビットが共通であるかを判定する(ステップS56)。
【0202】
キャッシュラインの全データの上位nビットが共通である場合には(ステップS56のYESルート参照)、転送IF11は、圧縮フラグ‘1’と、共通部nbitと、各データの下位ビットとを連結して返す(ステップS57)。そして、第1変形例としてのデータ圧縮処理は終了する。
【0203】
一方、キャッシュラインの全データの上位nビットが共通でない場合には(ステップS56のNOルート参照)、転送IF11は、圧縮フラグ‘0’と、キャッシュラインの全データとを連結して返す(ステップS58)。そして、第1変形例としてのデータ圧縮処理は終了する。
【0204】
次に、第1変形例としてのデータ伸長処理を、
図36に示すフローチャート(ステップS46~S49)に従って説明する。
【0205】
転送IF21は、先頭ビットが’1’であるかを判定する(ステップS46)。
【0206】
先頭ビットが‘1’でない場合には(ステップS46のNOルート参照)、転送IF21は、先頭ビットを削って返す(ステップS47)。そして、第1変形例としてのデータ伸長処理は終了する。
【0207】
一方、先頭ビットが’1’である場合には(ステップS46のYESルート参照)、転送IF21は、共通部nbitを切り出す(ステップS48)。
【0208】
転送IF21は、各下位ビット部を切り出し、それぞれ上位ビット部を連結する(ステップS49)。そして、第1変形例としてのデータ伸長処理は終了する。
【0209】
次に、第2変形例としてのデータ圧縮処理の第1の例を、
図37に示すフローチャート(ステップS61~S64)に従って説明する。
【0210】
転送IF21は、キャッシュラインの全データの指数部上位nビットが共通であるかを判定する(ステップS61)。
【0211】
キャッシュラインの全データの指数部上位nビットが共通でない場合には(ステップS61のNOルート参照)、転送IF21は、圧縮フラグ‘0’と、キャッシュラインの全データについて、指数部11ビットと仮数部の上位10ビットとを切り出し連結する(ステップS62)。そして、第2変形例としてのデータ圧縮処理の第1の例は終了する。
【0212】
一方、キャッシュラインの全データの指数部上位nビットが共通である場合には(ステップS61のYESルート参照)、転送IF21は、圧縮フラグ‘1’と共通部nbitを連結(ステップS63)。
【0213】
転送IF21は、各データについて、指数部下位ビットを切り出し、仮数部の上位10ビットを切り出し連結する(ステップS64)。そして、第2変形例としてのデータ圧縮処理の第1の例は終了する。
【0214】
次に、第2変形例としてのデータ伸長処理の第1の例を、
図38に示すフローチャート(ステップS31~S35)に従って説明する。
【0215】
転送IF21は、先頭ビットが’1’であるかを判定する(ステップS31)。
【0216】
先頭ビットが‘1’でない場合には(ステップS31のNOルート参照)、転送IF21は、先頭ビットを削る(ステップS32)。そして、処理はステップS35へ進む。
【0217】
一方、先頭ビットが’1’である場合には(ステップS31のYESルート参照)、転送IF21は、共通部nbitを切り出す(ステップS33)。
【0218】
転送IF21は、各指数部下位ビット部を切り出し、それぞれ上位ビット部を連結する(ステップS34)。
【0219】
転送IF21は、各データの仮数部の下位42ビットに0を連結する(ステップS35)。そして、第1変形例としてのデータ伸長処理の第1の例は終了する。
【0220】
次に、第2変形例としてのデータ圧縮処理の第2の例を、
図39に示すフローチャート(ステップS66~S69)に従って説明する。
【0221】
転送IF21は、キャッシュラインの全データの指数部上位nビットが共通であるかを判定する(ステップS66)。
【0222】
キャッシュラインの全データの指数部上位nビットが共通でない場合には(ステップS66のNOルート参照)、転送IF21は、圧縮フラグ‘0’と連結する(ステップS67)。そして、第2変形例としてのデータ圧縮処理の第2の例は終了する。
【0223】
一方、キャッシュラインの全データの指数部上位nビットが共通である場合には(ステップS66のYESルート参照)、転送IF21は、圧縮フラグ‘1’と共通部nbitを連結(ステップS68)。
【0224】
転送IF21は、各データについて、指数部下位ビットを切り出し、仮数部の上位10ビットを切り出し連結する(ステップS69)。そして、第2変形例としてのデータ圧縮処理の第2の例は終了する。
【0225】
次に、第2変形例としてのデータ伸長処理の第2の例を、
図40に示すフローチャート(ステップS36~S39)に従って説明する。
【0226】
転送IF11,21は、先頭ビットが’1’であるかを判定する(ステップS36)。
【0227】
先頭ビットが‘1’でない場合には(ステップS36のNOルート参照)、転送IF21は、先頭ビットを削る(ステップS37)。そして、第2変形例としてのデータ伸長処理の第2の例は終了する。
【0228】
一方、先頭ビットが’1’である場合には(ステップS36のYESルート参照)、転送IF21は、共通部nbitを切り出す(ステップS38)。
【0229】
転送IF21は、各指数部下位ビット部を切り出し、それぞれ上位ビット部を連結する(ステップS39)。そして、第2変形例としてのデータ伸長処理の第2の例は終了する。
【0230】
〔C〕効果
図41は、実施形態,第1変形例及び第2変形例としてのデータ圧縮によるSpMV計算の性能を説明するテーブルである。
【0231】
関連例,実施形態,第1変形例及び第2変形例におけるdataのサイズは、8B,4B,4B,2Bにそれぞれなっている。関連例,実施形態,第1変形例及び第2変形例におけるcol_indのサイズは、4B,4B,2B,2Bにそれぞれなっている。関連例,実施形態,第1変形例及び第2変形例におけるSpMVのB/F比は、6,4,3,2にそれぞれなっている。関連例,実施形態,第1変形例及び第2変形例における実行効率は、6.7%,10.0%,13.3%,20.0%にそれぞれなっている。実施形態における関連例に対する性能向上率は1.5倍、第1変形例における関連例に対する性能向上率は最大2倍、第2変形例における関連例に対する性能向上率は最大3倍となる。
【0232】
上述した実施形態における演算処理装置及びメモリアクセス方法によれば、例えば以下の作用効果を奏することができる。
【0233】
転送IF21は、メインメモリ1とメモリコントローラ2との間のデータ転送の際に、メインメモリ1上のデータについての圧縮方式の属性を参照し、参照した属性に基づき、圧縮方式を切り替えてデータ転送を実行する。これにより、メモリアクセスを高速化させることができる。
【0234】
転送IF21は、所定の閾値と、メモリコントローラ2に備えられる閾値レジスタ22の値との比較結果に基づき、圧縮方式を切り替える。これにより、圧縮方式の切り替えを効率的に実施できる。
【0235】
転送IF21は、データのキャッシュラインのそれぞれを、所定のビット数を有する上位部と、下位部とに分割する。転送IF21は、キャッシュラインのそれぞれについて上位部が共通である場合に、共通の上位部と、データワード毎の下位部とを連結して、データ転送を実行する。これにより、効率的に転送データを圧縮することができる。
【0236】
転送IF21は、浮動小数点データの指数部について、所定のビット数を有する上位部と、下位部とに分割する。転送IF21は、データブロック単位で上位部が共通である場合に、共通の上位部と、データワード毎の下位部とを連結して、データ転送を実行する。これにより、浮動小数点データにかかる転送データを効率的に圧縮することができる。
【0237】
転送IF21は、データの圧縮の成功率に応じて、上位部のビット数を変更する。これにより、より効率的に転送データを圧縮することができる。
【0238】
転送IF21は、浮動小数点データの仮数部における所定の下位ビットを切り捨ててデータ転送を実行する。これにより、メモリアクセスをより高速化させることができる。
【0239】
〔D〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0240】
〔E〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0241】
(付記1)
主記憶装置とメモリコントローラとの間のデータ転送の際に、前記主記憶装置上のデータについての圧縮方式の属性を参照し、
参照した前記属性に基づき、前記圧縮方式を切り替えて前記データ転送を実行する、
制御部を備える、演算処理装置。
【0242】
(付記2)
前記属性は、所定の閾値であり、
前記制御部は、前記所定の閾値と、前記メモリコントローラに備えられる閾値レジスタの値との比較結果に基づき、前記圧縮方式を切り替える、
付記1に記載の演算処理装置。
【0243】
(付記3)
前記制御部は、
前記データのキャッシュラインのそれぞれを、所定のビット数を有する上位部と、下位部とに分割し、
前記キャッシュラインのそれぞれについて前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
付記1又は2に記載の演算処理装置。
【0244】
(付記4)
前記データは、浮動小数点データであり、
前記制御部は、
前記浮動小数点データの指数部について、所定のビット数を有する上位部と、下位部とに分割し、
データブロック単位で前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
付記1又は2に記載の演算処理装置。
【0245】
(付記5)
前記制御部は、前記データの圧縮の成功率に応じて、前記上位部のビット数を変更する、
付記3又は4に記載の演算処理装置。
【0246】
(付記6)
前記データは、浮動小数点データであり、
前記制御部は、前記浮動小数点データの仮数部における所定の下位ビットを切り捨てて前記データ転送を実行する、
付記1~5のいずれか一項に記載の演算処理装置。
【0247】
(付記7)
主記憶装置とメモリコントローラとの間のデータ転送の際に、前記主記憶装置上のデータについての圧縮方式の属性を参照し、
参照した前記属性に基づき、前記圧縮方式を切り替えて前記データ転送を実行する、
処理をコンピュータが実行する、メモリアクセス方法。
【0248】
(付記8)
前記属性は、所定の閾値であり、
前記所定の閾値と、前記メモリコントローラに備えられる閾値レジスタの値との比較結果に基づき、前記圧縮方式を切り替える、
処理を前記コンピュータが実行する、付記7に記載のメモリアクセス方法。
【0249】
(付記9)
前記データのキャッシュラインのそれぞれを、所定のビット数を有する上位部と、下位部とに分割し、
前記キャッシュラインのそれぞれについて前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
処理を前記コンピュータが実行する、付記7又は8に記載のメモリアクセス方法。
【0250】
(付記10)
前記データは、浮動小数点データであり、
前記浮動小数点データの指数部について、所定のビット数を有する上位部と、下位部とに分割し、
データブロック単位で前記上位部が共通である場合に、共通の前記上位部と、データワード毎の前記下位部とを連結して、前記データ転送を実行する、
処理を前記コンピュータが実行する、付記7又は8に記載のメモリアクセス方法。
【0251】
(付記11)
前記データの圧縮の成功率に応じて、前記上位部のビット数を変更する、
処理を前記コンピュータが実行する、付記9又は10に記載のメモリアクセス方法。
【0252】
(付記12)
前記データは、浮動小数点データであり、
前記浮動小数点データの仮数部における所定の下位ビットを切り捨てて前記データ転送を実行する、
処理を前記コンピュータが実行する、付記7~11のいずれか一項に記載のメモリアクセス方法。
【符号の説明】
【0253】
1,6 :メインメモリ
2,7 :メモリコントローラ
3,8 :LLC
4 :アクセラレータ
10,10a,60,60b,60c :マルチコアプロセッサ
11,21,61,71 :転送IF
22 :閾値レジスタ
23 :統計情報
31,81 :コア
101,602 :非圧縮データ
202,601 :圧縮データ