(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022177671
(43)【公開日】2022-12-01
(54)【発明の名称】情報処理装置、及び記憶制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20221124BHJP
【FI】
G06F12/00 560F
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021084091
(22)【出願日】2021-05-18
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和3年度、国立研究開発法人科学技術振興機構、戦略的創造研究推進事業(個人型研究(さきがけ))「高性能ストリームデータ圧縮技術の開発」委託研究開発、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】504171134
【氏名又は名称】国立大学法人 筑波大学
(74)【代理人】
【識別番号】110002860
【氏名又は名称】弁理士法人秀和特許事務所
(72)【発明者】
【氏名】山際 伸一
(72)【発明者】
【氏名】丸茂 孝一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB03
5B160DA08
(57)【要約】
【課題】プロセッサ及びキャッシュメモリを有する集積回路とメモリとの間でやりとりされるデータ量の削減によりプロセッサの性能の向上を図る。
【解決手段】情報処理装置は、プロセッサと、プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器と、記憶制御装置とを含む集積回路と、集積回路に接続されたメモリとを含む。記憶制御装置は、対象データをメモリに記憶する場合に、圧縮器を用いた対象データの圧縮を行い、圧縮状態の対象データをメモリに送信し、圧縮状態の対象データがメモリから受信された場合に、解凍器を用いた圧縮状態の対象データの解凍を行い、解凍後の対象データをキャッシュメモリに書き込む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器と、記憶制御装置とを含む集積回路と、
前記集積回路に接続されたメモリと、を含み、
前記記憶制御装置は、対象データを前記メモリに記憶する場合に、前記圧縮器を用いた前記対象データの圧縮を行い、圧縮状態の前記対象データを前記メモリに送信し、圧縮状態の前記対象データが前記メモリから受信された場合に、前記解凍器を用いた圧縮状態の前記対象データの解凍を行い、解凍後の前記対象データを前記キャッシュメモリに書き込む、
情報処理装置。
【請求項2】
前記メモリの記憶領域が前記対象データを記憶可能な所定サイズのブロックで区画されている場合において、前記記憶制御装置は、非圧縮状態の前記対象データのサイズが前記ブロックのサイズを超えないが、圧縮状態の前記対象データのサイズが前記ブロックのサイズを超える場合に、非圧縮状態の前記対象データを前記メモリへ送信する
請求項1に記載の情報処理装置。
【請求項3】
前記記憶制御装置は、前記対象データが圧縮状態か非圧縮状態かを示す情報とともに、圧縮状態又は非圧縮状態の前記対象データを前記メモリに送信し、
前記メモリは、前記情報と前記対象データとを前記ブロックの何れかに記憶し、
前記対象データ及び前記情報が前記メモリから受信され、前記情報が前記対象データの圧縮状態を示す場合に、前記記憶制御装置は、前記解凍器による前記対象データの解凍を行う
請求項2に記載の情報処理装置。
【請求項4】
前記メモリは、誤り訂正符号メモリであり、前記誤り訂正符号メモリが有する誤り訂正符号の記憶領域に、前記情報が保管される
請求項3に記載の情報処理装置。
【請求項5】
前記メモリの記憶領域に、前記ブロックのサイズより大きいサイズを有する圧縮ブロック単位でデータを記憶するように規定されており、
前記メモリに送信された圧縮状態の前記対象データが、前記圧縮ブロックに記憶される請求項2に記載の情報処理装置。
【請求項6】
プロセッサと、前記プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器とともに集積回路に含まれる記憶制御装置が、
対象データを前記集積回路に接続されたメモリに記憶する場合に、前記圧縮器を用いた前記対象データの圧縮を行い、
圧縮状態の前記対象データを前記メモリに送信し、
圧縮状態の前記対象データが前記メモリから受信された場合に、前記解凍器を用いた圧縮状態の前記対象データの解凍を行い、
解凍後の前記対象データを前記キャッシュメモリに書き込む
ことを含む記憶制御方法。
【請求項7】
前記メモリの記憶領域が所定サイズを有するブロック単位で区画されており、
前記記憶制御装置は、前記対象データの非圧縮状態におけるサイズが前記ブロックのサイズを超えないが、圧縮状態の前記対象データのサイズが前記ブロックのサイズを超える場合に、非圧縮状態の前記対象データを前記メモリへ転送する
請求項6に記載の記憶制御方法。
【請求項8】
前記記憶制御装置は、前記対象データが圧縮状態か非圧縮状態かを示す情報とともに、圧縮状態又は非圧縮状態の前記対象データを前記メモリに送信し、前記対象データ及び前記情報が前記メモリから受信され、前記情報が前記対象データの圧縮状態を示す場合に、前記解凍器を用いた前記対象データの解凍を行う
請求項6に記載の記憶制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、及び記憶制御方法に関する。
【背景技術】
【0002】
従来、キャッシュのデータブロックを圧縮して、キャッシュ自体の容量を仮想的に増やす方法が提案されている。この方法では、プロセッサから読み書きされるキャッシュのデータブロックと、プロセッサの間にデータの圧縮・解凍器を挟み、仮想的に保存できるキャッシュの大きさを大きくする(例えば、非特許文献1参照)。
【0003】
また、ZFS、BTFS、NFSといったファイルシステムに圧縮機構を追加した方法がある。この方法では、ストレージのブロックのデータに対して圧縮を実施し、圧縮を実施したか否かを示すデータをファイルシステムにおける「ブロックテーブル」にデータ本体とは別に保存する(例えば、非特許文献4参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】大谷伸吾, 小川愛理, 吉瀬謙二, FPGAシステムにおけるデータ圧縮を活用したSkewed DRAMキャッシュ, 情報処理学会全国大会講演論文集, 78th 1, pp.1.147-1.148 , 2016年03月10日、https://www.arch.cs.titech.ac.jp/a/thesis/Bthesis-2016-02-ohya.pdf
【非特許文献2】V. Young, P. J. Nair and M. K. Qureshi, "DICE: Compressing DRAM caches for bandwidth and capacity," 2017 ACM/IEEE 44th Annual International Symposium on Computer Architecture (ISCA), Toronto, ON, Canada, 2017, pp. 627-638, doi: 10.1145/3079856.3080243.
【非特許文献3】S. Sardashti, A. Seznec and D. A. Wood, "Skewed Compressed Caches," 2014 47th Annual IEEE/ACM International Symposium on Microarchitecture, Cambridge, UK, 2014, pp. 331-342, doi: 10.1109/MICRO.2014.41.
【非特許文献4】Hyun S., Ahn S., Lee S., Bahn H., Koh K. (2007) Memory-Efficient Compressed Filesystem Architecture for NAND Flash-Based Embedded Systems. In: Gervasi O., Gavrilova M.L. (eds) Computational Science and Its Applications - ICCSA 2007. ICCSA 2007. Lecture Notes in Computer Science, vol 4705. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-74472-6_20
【非特許文献5】Xiang Gao, Mingkai Dong, Xie Miao, Wei Du, Chao Yu, Haibo Chen, EROFS: A Compression-friendly Readonly File System for Resource-scarce Devices, 2019 {USENIX} Annual Technical Conference, https://www.usenix.org/conference/atc19/presentation/gao
【発明の概要】
【発明が解決しようとする課題】
【0005】
プロセッサ及びキャッシュメモリを具備する集積回路(LSI)と、集積回路と接続されたメモリとを含むシステムにおいて、プロセッサの性能を上げるため、データをメモリに書き込む時間、及びメモリに記憶されたデータをキャッシュメモリに書き込む時間の短縮化が望まれている。このため、メモリへの書き込み対象のデータを圧縮し、圧縮されたデータをメモリに書き込み、メモリから読み出したデータを解凍してキャッシュメモリに書き込むことが考えられる。
【0006】
しかしながら、従来技術では、メモリに書き込むデータを圧縮し、メモリから読み出し
たデータを解凍してキャッシュメモリに記憶する観点について開示及び示唆がない。また、圧縮処理によって、圧縮後のデータのサイズは必ずしも小さくならず、逆にサイズが大きくなることもある。このような圧縮後のデータのサイズが元のデータのサイズよりも大きくなった場合に起こる問題についての開示及び示唆もない。
【0007】
本発明は、プロセッサ及びキャッシュメモリを有する集積回路とメモリとの間でやりとりされるデータ量の削減によりプロセッサの性能の向上を図ることが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の態様の一つは、情報処理装置である。この情報処理装置は、プロセッサと、プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器と、記憶制御装置とを含む集積回路と、集積回路に接続されたメモリとを含む。記憶制御装置は、対象データをメモリに記憶する場合に、圧縮器を用いた対象データの圧縮を行い、圧縮状態の対象データをメモリに送信し、圧縮状態の対象データがメモリから受信された場合に、解凍器を用いた圧縮状態の対象データの解凍を行い、解凍後の対象データをキャッシュメモリに書き込む。
【0009】
本発明の態様の一つは、記憶制御方法である。この記憶制御方法は、プロセッサと、前記プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器とともに集積回路に含まれる記憶制御装置が、対象データを集積回路に接続されたメモリに記憶する場合に、圧縮器を用いた対象データの圧縮を行い、圧縮状態の対象データをメモリに送信し、圧縮状態の対象データがメモリから受信された場合に、解凍器を用いた圧縮状態の対象データの解凍を行い、解凍後の対象データをキャッシュメモリに書き込むことを含む。
【0010】
記憶制御方法において、以下の構成を採用してもよい。すなわち、メモリの記憶領域が所定サイズを有するブロック単位で区画されており、記憶制御装置は、前記対象データの非圧縮状態におけるサイズが前記ブロックサイズを超えないが、圧縮状態の前記対象データのサイズが前記ブロックサイズを超える場合に、非圧縮状態の前記対象データを前記メモリへ転送する。
【0011】
また、記憶制御方法において、以下の構成を採用してもよい。すなわち、記憶制御装置は、対象データが圧縮状態か非圧縮状態かを示す情報とともに、圧縮状態又は非圧縮状態の対象データをメモリに送信し、対象データ及び情報がメモリから受信され、情報が対象データの圧縮状態を示す場合に、解凍器を用いた対象データの解凍を行う。
【発明の効果】
【0012】
本発明によれば、プロセッサ及びキャッシュメモリを有する集積回路とメモリとの間でやりとりされるデータ量の削減によりプロセッサの性能の向上を図ることができる。
【図面の簡単な説明】
【0013】
【
図1】実施形態に係る情報処理装置の構成例を示す図である。
【
図2】
図2Aは、対象データをメモリに記憶する場合の説明図であり、
図2Bは、記憶制御装置によって管理される管理テーブルのデータ構造例を示す。
【
図3】
図3A及びBは、参考例における問題を説明する図である。
【
図4】
図4A及びBは、実施形態における記憶制御方法を説明する図である。
【
図5】
図5は、実施形態に係るメモリの第1の構成例を示す図である。
【
図6】
図6は、メモリへの書き込み時における記憶制御装置の動作例を示すフローチャートである。
【
図7】
図7は、キャッシュメモリへの書き込み時における記憶制御装置の動作例を示すフローチャートである。
【
図8】
図8は、メモリの第2の構成例を示す図である。
【
図9】
図9は、第2の構成例が適用される場合における記憶制御装置の動作例を示すフローチャートである。
【
図10】
図10は、第2の構成例が適用される場合における記憶制御装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【0014】
実施形態に係る情報処理装置は、プロセッサと、プロセッサが使用するデータを記憶するキャッシュメモリと、圧縮器及び解凍器と、記憶制御装置とを含む集積回路と、集積回路に接続されたメモリとを含む。記憶制御装置は、対象データをメモリに記憶する場合に、圧縮器を用いた対象データの圧縮を行い、圧縮状態の対象データをメモリに送信し、圧縮状態の対象データがメモリから受信された場合に、解凍器を用いた圧縮状態の対象データの解凍を行い、解凍後の対象データをキャッシュメモリに書き込む。
【0015】
情報処理装置によれば、対象データをメモリに記憶する場合に、集積回路からメモリへ圧縮状態の対象データが送信される。また、キャッシュメモリにデータを記憶する場合に、圧縮状態の対象データが受信される。集積回路とメモリとの間の通信速度が一定の場合、対象データの圧縮によって対象データのサイズが小さくなることで、両者間のデータ伝送に要する時間が短縮される。このため、プロセッサから見たときのメモリへのデータの書き込みに要する時間を短縮することができる。また、非圧縮状態よりもサイズが小さくなった圧縮状態の対象データが集積回路にて受信され、解凍されてキャッシュメモリに記憶されることにより、プロセッサから見たときのメモリからの読み出し時間を短縮することができる。このように、メモリに対する書き込み時間及び読み出し時間の短縮によってプロセッサの性能の向上を図ることができる。
【0016】
情報処理装置は、以下のような構成を採用することができる。すなわち、メモリの記憶領域が対象データを記憶可能な所定サイズのブロックで区画されている場合において、記憶制御装置は、非圧縮状態の対象データのサイズがブロックのサイズを超えないが、圧縮状態の対象データのサイズがブロックのサイズを超える場合に、非圧縮状態の対象データをメモリへ送信する。対象データのサイズは、圧縮によって必ずしも小さくなる訳ではなく、圧縮後のサイズが元のサイズよりも大きくなることがある。このような場合、圧縮後の対象データである圧縮状態の対象データではなく、元の対象データである非圧縮状態の対象データを送信することで、メモリへ送信されるデータ量を抑える。
【0017】
また、情報処理装置は、以下のような構成を採用することができる。すなわち、記憶制御装置は、対象データが圧縮状態か非圧縮状態かを示す情報とともに、圧縮状態又は非圧縮状態の対象データをメモリに送信する。メモリは、情報と対象データとをブロックの何れかに記憶する。対象データ及び情報がメモリから受信され、情報が対象データの圧縮状態を示す場合に、記憶制御装置は、解凍器を用いた対象データの解凍を行う。このように、メモリへ送信される対象データが圧縮状態か非圧縮状態かを示す情報が対象データとともにメモリに記憶され、メモリからの読み出しの際に対象データと情報とが記憶制御装置に渡されることで、記憶制御装置は解凍の要否を判定することができる。解凍が不要な場合は解凍を行うことなくキャッシュメモリへの書き込みを行うことで、キャッシュメモリへの書き込み終了までの所要時間を短縮することができる。
【0018】
対象データが圧縮状態か非圧縮状態かを示す情報がメモリに記憶される場合、メモリは誤り訂正符号メモリ(ECCメモリ)を使用し、誤り訂正符号メモリが有する誤り訂正符号の記憶領域に情報が保管される構成を採用するのが好ましい。これにより、対象データ
と当該情報とを関連づけた状態でメモリに記憶することができる。
【0019】
また、情報処理装置は、以下のような構成を採用することができる。すなわち、メモリの記憶領域に、ブロックのサイズより大きいサイズを有する圧縮ブロック単位でデータを記憶するように規定される。メモリに送信された圧縮状態の対象データが、各圧縮ブロックに記憶される。このような構成を採用することで、圧縮状態の対象データのサイズが圧縮前の対象データのサイズよりも大きくなり、そのサイズがブロックのサイズを超える場合でも、圧縮状態の対象データを好適に記憶することができる。
【0020】
以下、図面を参照して、情報処理装置及び記憶制御方法の実施形態について説明する。実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【0021】
図1は、実施形態に係る情報処理装置1の構成例を示す。
図1において、情報処理装置1は、集積回路の一例であるマイクロプロセッサLSI10(以下、集積回路10)と、集積回路10にバス2を介して接続されたメモリ(主記憶装置)15と、集積回路10にバス2を介して接続されたストレージ(補助記憶装置)21とを含む。
【0022】
集積回路10は、プロセッサ11と、キャッシュメモリ12と、記憶制御装置(Memory
Management Unit:MMU)13と、MMU13によって使用される圧縮器14A及び解凍器14Bとを含む。
【0023】
プロセッサ11は、マイクロプロセッサ(MPU)、CPU(Central Processing Unit)などである。キャッシュメモリ12は、集積回路10内に実装されている。メモリ1
5及びストレージ21は、バス2を介して集積回路10に接続されている。すなわち、メモリ15及びストレージ21は、集積回路10の外部に配置されている。
【0024】
キャッシュメモリ12、メモリ15、及びストレージ21は、プロセッサ11によって使用されるデータを記憶する。キャッシュメモリ12は、メモリ15及びストレージ21よりも近い位置に配置された、高速及び小容量(クロック周波数がGHzオーダーで、容量が数MB)の記憶媒体であり、SRAMなどで構成される。メモリ15は、キャッシュメモリ12よりも低速だが容量が大きい(クロック周波数が100MHz程度、容量が数GB)記録媒体であり、DRAMなどを用いて構成される。ストレージ21は、メモリ15よりも速度が遅いが大容量(クロック周波数が数十MHz、容量が数TB)の記憶媒体であり、例えばハードディスク、SSD(Solid State Drive)などである。
【0025】
通常、プロセッサ11が処理を行う場合には、ストレージ11から処理対象のデータが読み出され、メモリ15に記憶される。メモリ15に記憶されたデータがプロセッサ11に渡される過程において、データがキャッシュメモリ12に記憶されていなければ、キャッシュメモリ12に当該データが記憶される。プロセッサ11からメモリ15に記憶されたデータの読み出しが要求された場合、キャッシュメモリ12に要求されたデータが記憶されているかが判定され、該当のデータが記憶されている場合、メモリ15からの読み出しは行われず、キャッシュメモリ12に記憶されたデータがプロセッサ11に渡される。
【0026】
キャッシュメモリ12に用いるSRAMは高価であるため、現状、第1~第4次キャッシュを有するCPUが存在するが、キャッシュメモリの大容量化は難しい。このため、メモリ15への書き込み及びメモリ15からの読み出し時の所要時間を短縮することがプロセッサ11の性能向上に関して重要な要素である。
【0027】
プロセッサ11とメモリ15との間の入出力速度を高速化するには、以下が考えられる。
(1)メモリ15のインタフェースの高速化
(2)メモリ15のインタフェースのビット数の増加
【0028】
しかし、(1)のメモリ15のインタフェースの高速化を図る方法では、プリント基板への実装の難度が高い、或いはトランジスタのスイッチングが増大し、消費電力が増大して発熱が起こる問題があった。一方、(2)のメモリ15のインタフェースのビット数を増大する方法では、集積回路10のピン数が増大するためコストが増大する。また、(1)と同様に、プリント基板への実装の難度が高い問題や、トランジスタのスイッチング増大による発熱の問題もあった。このため、本実施形態では、メモリ15への書き込み対象のデータ(対象データ)を圧縮することで、書き込みのためにメモリ15へ伝送されるデータ量、及び読み出しのためにメモリ15から集積回路10に伝送されるデータ量を削減することで、書き込み及び読み出しに係る所要時間の短縮化を図り、プロセッサ11の性能の向上を図る。
【0029】
キャッシュメモリ12に記憶されるデータ管理等のキャッシュ制御は、例えば、MMU13によって行われる。もっとも、MMU以外にキャッシュ制御を行う主体(キャッシュコントローラ)が設けられ、キャッシュ制御はキャッシュコントローラが行う構成であってもよい。すなわち、本発明に係る「記憶制御装置」は、MMUがキャッシュ制御を行う構成であっても、MMUとキャッシュコントローラとを含む構成であってもよい。本実施形態では、MMU13が圧縮器14A及び解凍器14Bの機能を有する、又は圧縮器14A及び解凍器14Bの動作を制御する構成を採用し、対象データの圧縮及び解凍を可能としている。圧縮器14A及び解凍器14Bに適用される圧縮及び解凍方法は、データの可逆的な圧縮及び解凍が可能である限りにおいて制限はない。
【0030】
本実施形態において、メモリ15におけるデータ管理は、ベースアドレスと呼ばれるアドレスを起点にした複数の連続するアドレスの記憶領域をまとめた物理ブロック(ブロック15aと称する)単位で行われる。メモリ15の記憶領域は、所定サイズを有するブロック15aで区画されている。メモリ15に対するデータの読み書きは、ベースアドレスを起点に、1つのブロック15aをなす連続する所定数のアドレスに対して順次アクセスして読み書きを行うことでなされる(バーストモードと呼ばれる)。キャッシュメモリ12へのデータの書き込みは、ブロック15a単位で行われる。ブロック15aのサイズは適宜定めることができる。
【0031】
メモリ15に対するバーストモードでのアクセスの恩恵を得るため、キャッシュメモリ12は、ブロック15aのサイズに合致する数十から数キロバイトのブロック(記憶領域)の単位でキャッシュデータを管理する構成を有する。このブロックの単位でメモリ15とデータを交換している。
【0032】
図2Aに示すように、MMU13は、キャッシュメモリ12の記憶領域とメモリ15の記憶領域との関連を管理する管理テーブル16を有している。管理テーブル16は、
図2Bに示すように、メモリ15のブロック15aに記憶されたデータを記憶するキャッシュメモリ12上のブロック12aの位置(アドレス)を示すキャッシュタグ(キャッシュメモリ12のブロックの識別子)と、ブロック12aに記憶されたデータをメモリ15上で記憶するブロック15aの起点アドレスであるベースアドレスとの対応関係を記憶する。
【0033】
プロセッサ11は、メモリ15の全てのアドレスに対してアクセス可能であり、データの書き込み及び読み出し命令は、メモリ15のベースアドレスを指定することで行う。メモリ15のブロック15aに記憶されたデータがキャッシュメモリ12のブロック12aに記憶されている場合、メモリ15のベースアドレスと関連づけて、キャッシュメモリ12のブロック12aを特定するキャッシュタグが管理テーブル16に記憶される。
【0034】
MMU13は、プロセッサ11から、メモリ15の或るベースアドレスを指定したデータの読み出し命令を受けた場合、管理テーブル16を参照する。このとき、指定されたベースアドレスに関連するキャッシュタグが管理テーブル16に記憶されていれば、MMU13は、キャッシュタグにより特定されるキャッシュメモリ12のブロック12aからデータを読み出してプロセッサ11に供給する(キャッシュヒット)。
【0035】
MMU13は、管理テーブル16の参照において、指定されたベースアドレスと関連づけられたキャッシュタグが管理テーブル16に記憶されていない場合、キャッシュメモリ12に読み出し対象のデータが記憶されていないと判定する(キャッシュミス)。このとき、MMU13は、読み出し命令で指定されたメモリ15のベースアドレスを起点として1ブロック分の連続アドレスに対するアクセス(データ読み出し)を行い、ベースアドレスによって特定されるメモリ15のブロック15aからデータを読み出す。MMU13は、メモリ15から読み出したデータをキャッシュメモリ12の空き状態(上書き可能な状態を含む)のブロック12aに記憶し、このブロック12aのキャッシュタグをベースアドレスと関連づけて管理テーブル16に記憶する。
【0036】
プロセッサ11が、キャッシュメモリ12に記憶されたデータを更新し、メモリ15への書き込み命令を発行した場合、MMU13は、管理テーブル16を参照し、書き込み命令で指定されたベースアドレスと関連づけられたキャッシュタグを特定し、このキャッシュタグで特定されるキャッシュメモリ12のブロック12aに、更新されたデータを書き込む。
【0037】
MMU13は、例えば、データを記憶したキャッシュメモリ12の各ブロック12aに対するアクセスを監視し、アクセスが所定時間連続して行われないブロック12aが発生した場合、該当のブロック12aに記憶されたデータを読み出す。或いは、MMU13は、プロセッサ11のデータの読み出し命令に従ってメモリ15から読み出したデータを記憶可能なキャッシュメモリ12のブロック12aがない場合に、所定のルールに従ってブロック12aの一つを選択し、選択したブロック12aに記憶されているデータを読み出す。
【0038】
ブロック12aを選択する所定のルールとして、例えば、ブロック12aのいずれかをサイクリックに(ラウンドロビンで)指すポインタの現在位置にあたるブロック12aが読み出し対象として選択される。ポインタの進め方は種々あるが、例えば何れかのブロック12aからの読み出し毎にポインタを1つ進める。或いは、各ブロック12aに最後の読み出し時を記録するタイムスタンプを設定して、タイムスタンプが最古のブロック12aが読み出し対象として選択されてもよい。所定のルールはこれらの例示に制限されない。
【0039】
MMU13は、管理テーブル16を参照して、該当のブロック12aのキャッシュタグと関連づけられたベースアドレスを起点とするメモリ15上のブロック15aを特定し、バーストモードを用いてブロック12aから読み出したデータを特定したブロック15aに記憶する。このとき、MMU13は、管理テーブル16から該当のキャッシュタグ及びベースアドレスのペアを削除することで、当該キャッシュタグで特定されるキャッシュメモリ12のブロック12aを空き状態に設定する。
【0040】
また、プロセッサ11が、プログラムに従った処理または計算によってキャッシュメモリ13及びメモリ15に記憶されていないデータを生成した場合、プロセッサ11は、プログラムに従ってメモリ15の書き込み先のベースアドレスを指定したデータの書き込み命令を発行する。ベースアドレスとして、空き状態(上書き可能な状態を含む)のメモリ
15上のブロック15aのベースアドレスが指定される。このようなベースアドレスは管理テーブル16から発見されないため、MMU13は、書き込み命令で指定されたベースアドレスで特定されるブロック15aに、書き込み対象のデータを書き込む。
【0041】
上記のように、本実施形態の情報処理装置1では、メモリ15に対し、ベースアドレスより細かい粒度でのアクセスはできない構成となっている。すなわち、メモリ15は、ベースアドレス毎に区分けされている。
【0042】
本実施形態における情報処理装置1では、メモリ15にデータを書き込む(記憶する)場合に、MMU13が、圧縮器14Aにより書き込み対象のデータの圧縮を行う。ところが、書き込み対象のデータのサイズは、圧縮によって必ずしも小さくなるとは限らず、逆にサイズが大きくなることもある。このようなサイズの増大は、データのランダム性が高い場合などに発生する。
【0043】
図3Aは、圧縮器14Aによる圧縮によって書き込み対象のデータのサイズが小さくなる場合を示す。圧縮によってデータのサイズが小さくなる場合には、データ(網掛けで示す)は、書き込み先のブロック15a内に収まる。このとき、メモリ15への転送対象のデータ量が減る。
【0044】
図3Bは、圧縮器14Aによる圧縮によって書き込み対象のデータのサイズが大きくなる場合を示す。圧縮によってデータのサイズが大きくなる場合には、データ(網掛けで示す)は、書き込み先のブロック15a内に収まらず、書き込み先のブロック15aに隣接するブロック15a(隣接ブロック)にまでデータが書き込まれるおそれがあった。この場合、隣接ブロックに対するデータの上書きで、隣接ブロックのデータが破損するおそれがあった。また、圧縮によるデータ量の増大で、書き込みに対するオーバヘッド時間が長くなり、プロセッサ11の性能低下の要因となる可能性があった。
【0045】
そこで、本実施形態では、
図4に示すように、MMU13が、圧縮器14Aによる書き込み対象のデータの圧縮において、圧縮後のデータのサイズがブロック15aのサイズ以上となることを検出した場合に、圧縮器14Aの動作を停止し、元の(非圧縮状態の)データをメモリ15に伝送して書き込む。元のデータのサイズはブロック15aに収まるサイズであるため、メモリ15へ伝送されるデータ量は減らないが、隣接ブロックを上書きする問題を回避することができる。
【0046】
図5は、実施形態に係るメモリ15の構成例(第1の構成例)を示す。
図5に示すように、メモリ15は、4つのアドレスに対応する記憶領域がまとまって1つのブロック15aを形成しており、アドレス毎に、書き込み対象のデータが圧縮状態か非圧縮状態(元の状態)かを示す情報が設定される領域(フィールド)15bが設けられている。
【0047】
本実施形態では、データが圧縮されている場合に、データの圧縮状態を示すビット(圧縮ビット)が設定される。但し、データの非圧縮状態を示すビット(非圧縮ビット)が設定されてもよい。圧縮ビットは、メモリ15へのアクセス単位(例えばワード単位)でアドレスが設定されている場合、ワード毎に付加され、ワード単位で圧縮状態か非圧縮状態かを示す。MMU13は、メモリ15のブロック15aからのデータの読み出しに際し、ワード単位での圧縮ビットを参照し、データが圧縮状態か非圧縮状態かを識別するとともに、どこまでデータが圧縮されているかを識別する。
【0048】
圧縮ビットの実装方法としては、集積回路10に、圧縮ビットを伝送するためのピンを追加する。また、メモリ15に圧縮ビットを格納するための領域15bを追加する。例えば、1アドレスが32ビットのワード長で圧縮ビットが1ビットの場合、33ビットのデ
ータ幅を格納できるようにメモリ15のデータ幅を増やす。メモリ15としてECCメモリを適用し、誤り訂正符号を記憶するフィールドを領域15bとして利用し、圧縮ビットを格納することができる。
【0049】
図6は、メモリ15へのデータの書き込み時におけるMMU13の動作例を示すフローチャートである。ステップS11では、MMU13は、プロセッサ11から発行されたメモリ15へのデータの書き込み命令(書き込み要求)を取得する(受け取る)。
【0050】
ステップS12では、MMU13は、メモリ15への書き込み対象のデータ(対象データ)を取得する。対象データは、キャッシュメモリ12のブロック12aに記憶された更新データ、又はプロセッサ11から受け取る新規データ(キャッシュメモリ12及びメモリ15に記憶されていないデータ)である。
【0051】
ステップS13では、MMU13は、圧縮器14Aの動作をオンにして、対象データの圧縮を行う。圧縮は、ワード単位で行われる。ステップS14では、MMU14は、圧縮されたデータ(圧縮データ)のサイズがメモリ15のブロック15aのサイズを超過するか否かを判定する。圧縮データのサイズがブロック15aのサイズより小さいと判定される場合には(S14のNO)、処理がステップS15に進み、そうでない場合(圧縮データのサイズがブロック15aのサイズを超過する場合:S14のYES)には、処理がステップS17に進む。
【0052】
ステップS15では、MMU13は、対象データの全てについての圧縮が終了したか否かを判定する。このとき、圧縮が終了したと判定される場合には、処理がステップS16に進み、そうでないと判定される場合には、処理がステップS13に戻って次のワードのデータに対する圧縮が行われる。
【0053】
ステップS16では、MMU13は、書き込み先のブロック15aのベースアドレスを起点として、ブロック15aに圧縮状態の対象データを書き込む。このとき、MMU13は、バーストモードによって、ブロック15aをなすワード単位(アドレス単位)で圧縮データ及び圧縮ビットをメモリ15に転送する。圧縮データ及び圧縮ビットは、ブロック15a中の該当の記憶領域に書き込まれる。
【0054】
ステップS17では、MMU13は、圧縮器14Aの動作を停止する。ステップS18では、MMU13は、書き込み先のブロック15aのベースアドレスを起点として、ブロック15aに非圧縮状態の対象データを書き込む。このとき、MMU13は、バーストモードによって、ブロック15aをなすワード単位(アドレス単位)で非圧縮状態のデータ(非圧縮データ)をメモリ15に転送する。非圧縮データは、ブロック15a中の該当の記憶領域に書き込まれる。
【0055】
なお、ワード単位の圧縮データ及び圧縮ビットの転送は、リアルタイム処理で行われてもバッチ処理で行われてもよい。リアルタイム処理の転送が行われる場合、ステップS14でYESの判定がなされたことを機に、データの圧縮の停止により圧縮データ及び圧縮ビットの転送が停止され、非圧縮状態の対象データの転送が開始される。
【0056】
図7は、メモリ15からのデータの読み出し時におけるMMU13の動作例を示すフローチャートである。ステップS21では、MMU13は、プロセッサ11から発行されたメモリ15からのデータの読み出し命令(読み出し要求)を取得する(受け取る)。
【0057】
ステップS22では、MMU13は、管理テーブル16を参照し、読み出し命令で指定されたベースアドレスのレコードを管理テーブル16から探索する。管理テーブル16か
ら指定されたベースアドレスと関連づけられたキャッシュタグが発見された場合、MMU13は、キャッシュヒットと判定し、処理をステップS27に進める。これに対し、指定されたベースアドレスのレコードが管理テーブル16から発見されない場合、MMU13はキャッシュミスと判定し、処理をステップS23に進める。
【0058】
ステップS23では、MMU13は、指定されたベースアドレスを起点とするメモリ15のブロック15aに記憶されたデータを取得する。ステップS24では、MMU13は、ブロック15aから圧縮ビットが読み出されているか否かを判定することによって、データが圧縮データか否か(圧縮状態か非圧縮状態か)を判定する。このとき、データが圧縮データであると判定される場合には、処理がステップS25に進み、そうでない場合には、処理がステップS26に進む。
【0059】
ステップS25では、MMU13は、解凍器14Bを用いて(解凍器14Bの動作を制御して)、メモリ15から読み出されたデータの解凍を行う。ステップS26では、MMU13は、キャッシュメモリ12の空き状態のブロック12aにデータを書き込む。このとき、MMU13は、管理テーブル16に、ベースアドレスと、データを書き込んだブロック12aのキャッシュタグとのペアを登録する。
【0060】
ステップS26では、MMU13は、キャッシュメモリ12のブロック12aに記憶したデータをプロセッサ11に供給する。これによって、読み出し命令に対応するデータがプロセッサ11に供給される。
【0061】
図8は、
図5に示したメモリ15の構成と異なる、メモリ15の他の構成例(第2の構成例)を示す。
図8において、メモリ15には、一例としてブロック15aの2倍のサイズを有するブロック15c(圧縮ブロックと称する)が規定されている。そして、圧縮器14Aによって圧縮されたデータは、圧縮によるサイズの増減とは無関係に、圧縮ブロック15cを単位に記憶される。
【0062】
図9は、第2の構成例に係るメモリ15へのデータの書き込み時におけるMMU13の動作例を示すフローチャートである。
図9に示すフローチャートにおけるステップS11~S13の処理は、
図6におけるステップS11~S13と同じ処理である。これに対し、
図9に示すフローチャートでは、
図6に示すステップS14~S18の処理がない代わりに、ステップS16Aが設けられている。ステップS16Aでは、MMU13は、ベースアドレスを起点に圧縮データをメモリ15の圧縮ブロック15cに書き込む。第2の構成例では、ベースアドレスは、圧縮ブロック15cの起点となるアドレスである。
【0063】
図10は、第2の構成例におけるメモリ15からのデータの読み出し時におけるMMU13の動作例を示すフローチャートである。第2の構成例が適用される場合、メモリ15から読み出されるデータは圧縮状態のデータである。このため、
図10に示すフローチャートでは、
図7のフローチャートにおけるステップS24の処理、すなわち、データが圧縮状態か非圧縮状態かの判定は行われず、ステップS23からステップS25に進んで、データが解凍される。この点を除き、
図10のフローチャートの処理は、
図7のフローチャートの処理と同じである。
【0064】
実施形態に係る情報処理装置1は、プロセッサ11と、プロセッサ11が使用するデータを記憶するキャッシュメモリ12と、圧縮器14A及び解凍器14Bと、記憶制御装置(MMU)13とを含む集積回路10と、集積回路10に接続されたメモリ15とを含む。MMU13は、対象データをメモリ15に記憶する場合に、圧縮器14Aを用いた対象データの圧縮を行い、圧縮状態の対象データをメモリ15に送信する。また、MMU13は、圧縮状態の対象データがメモリ15から受信された場合に、解凍器14Bを用いた圧
縮状態の対象データの解凍を行い、解凍後の対象データをキャッシュメモリ12に書き込む。
【0065】
これによって、集積回路10とメモリ15との間を伝送されるデータ量を減らして集積回路10とメモリ15との間の伝送帯域(スループット)を増大させることができる。このスループットの増大によって、メモリ15に対する読み書きの所要時間を短縮することができ、プロセッサ11の性能向上を図ることができる。
【0066】
情報処理装置1では、メモリ15の記憶領域が対象データを記憶するブロックで区画されている。MMU13は、非圧縮状態の対象データのサイズがブロック15aのサイズを超えないが、圧縮状態の対象データのサイズがブロック15aのサイズを超える場合に、非圧縮状態の対象データをメモリ15へ送信する。これによって、メモリ15へ送信するデータ量を減らすことができる。
【0067】
また、MMU13は、対象データが圧縮状態を示す情報(圧縮ビット)とともに、圧縮状態の対象データをメモリ15に送信する。メモリ15は、圧縮ビットと圧縮状態の対象データとをブロック15aの何れかに記憶する。対象データ及び圧縮ビットがメモリ15から受信された場合に、MMU13は、解凍器による対象データの解凍を行う。このように、メモリ15から読み出したデータの解凍の要否を圧縮ビットを用いて行うことができる。この構成に好適なメモリ15の構成として、メモリ15にECCメモリが適用され、ECCメモリが有する誤り訂正符号の記憶領域(フィールド)15bに、圧縮ビットが保管される。
【0068】
また、実施形態では、メモリ15の第2の構成例として、メモリ15の記憶領域に、ブロック15aのサイズより大きいサイズを有する圧縮ブロック15c単位でデータを記憶するように規定することができる。そして、メモリ15に送信された圧縮状態の対象データが、圧縮ブロック15cに記憶される。このように圧縮ブロック15cを用いることで、圧縮によってデータサイズが大きくなる場合でも、圧縮状態のデータを圧縮ブロック15cに収めることができ、隣接するブロックの上書きを回避することができる。以上説明した実施形態の構成は、発明の目的を逸脱しない範囲で適宜組み合わせることができる。
【符号の説明】
【0069】
1・・・情報処理装置
2・・・バス
10・・・集積回路(マイクロプロセッサLSI)
11・・・プロセッサ
12・・・キャッシュメモリ
13・・・記憶制御装置(MMU)
14A・・・圧縮器
14B・・・解凍器
15・・・メモリ
15a・・・ブロック
15b・・・圧縮ビットの記憶領域(フィールド)
15c・・・圧縮ブロック
16・・・管理テーブル