JP2008299530A - メインメモリに書き込むデータをキャッシュする技術 - Google Patents

メインメモリに書き込むデータをキャッシュする技術 Download PDF

Info

Publication number
JP2008299530A
JP2008299530A JP2007143968A JP2007143968A JP2008299530A JP 2008299530 A JP2008299530 A JP 2008299530A JP 2007143968 A JP2007143968 A JP 2007143968A JP 2007143968 A JP2007143968 A JP 2007143968A JP 2008299530 A JP2008299530 A JP 2008299530A
Authority
JP
Japan
Prior art keywords
bit
cache
data
sector
main memory
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.)
Granted
Application number
JP2007143968A
Other languages
English (en)
Other versions
JP4412676B2 (ja
Inventor
Takeo Nakada
武男 中田
Nobuyuki Oba
信之 大庭
Nobuyuki Harada
信之 原田
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007143968A priority Critical patent/JP4412676B2/ja
Priority to US12/129,090 priority patent/US8266385B2/en
Publication of JP2008299530A publication Critical patent/JP2008299530A/ja
Application granted granted Critical
Publication of JP4412676B2 publication Critical patent/JP4412676B2/ja
Priority to US13/590,884 priority patent/US8683142B2/en
Priority to US13/604,796 priority patent/US8972407B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュメモリからメインメモリへ効率的にデータを書き戻す。
【解決手段】メインメモリに書き込むデータをキャッシュする記憶装置であって、複数のキャッシュセグメントを有し、キャッシュセグメントごとに、そのキャッシュセグメントに含まれる各セクタが有効なデータを含む有効セクタか否かを示す有効性データを記憶しているキャッシュメモリと、キャッシュメモリへのアクセスを制御するキャッシュ制御部とを備え、キャッシュ制御部は、キャッシュセグメントをメインメモリへ書き戻す場合に、そのキャッシュセグメントに対応する有効性データにアクセスして、無効セクタが連続する領域を検出し、検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリに対し発行して、各領域を有効セクタとしてから、そのキャッシュセグメント内のデータをメインメモリに書き戻す、記憶装置を提供する。
【選択図】図7

Description

本発明は、キャッシュメモリに関する。特に、本発明は、メインメモリに書き込むデータをキャッシュメモリにキャッシュする技術に関する。
近年、USBメモリなどに代表されるように、フラッシュメモリデバイス(非特許文献1を参照。)を使った半導体ディスク装置が広く用いられている。半導体ディスク装置には、その用途の拡大に応じて、大容量化、高速化、および低電力化が益々求められるようになってきている。フラッシュメモリデバイスは、DRAMとは異なる性質を有する場合がある。例えば、NAND型フラッシュメモリデバイスは、データの書込みにおいて書込み対象となる領域を消去しなければならない。そして、その消去の処理は読出しの処理と比較してとても長い処理時間を要する。また、フラッシュメモリデバイスはアクセス回数が特定の上限に達すると使用できなくなる。
フラッシュメモリデバイスの説明。インターネットホームページ、アドレス「http://e-words.jp/w/E38395E383A9E38383E382B7E383A5E383A1E383A2E383AA.html」2007年5月24日検索
このようなフラッシュメモリデバイスの性質に対応するためには、フラッシュメモリデバイスに対する複数回のアクセスをまとめて一度に行うことが望ましい。このように複数回のアクセスをまとめて一度に行うための技術として、アクセスのコマンドをバッファする技術が提案されている。即ち例えば、フラッシュメモリデバイスに対する書込みアクセスのコマンドを一旦バッファに格納したうえで、同一のセクタに対する複数の書込みコマンドは1つの書込みコマンドに併合してからフラッシュメモリに発行する方法である。しかしながら、書き込まれるデータの量は書込みコマンドに応じて異なるため、バッファの記憶容量を有効活用して数多くのコマンドを効率的に格納するように制御するのは容易ではない。
また、複数回のアクセスをまとめて一度に行うために、CPUのキャッシュメモリに関する技術を応用することも考えられる。しかしながら、CPUに関する技術は、主としてアクセスの高速化のみを目的としており、メインメモリへのアクセス回数を十分に低減できない場合があることから、その技術をフラッシュメモリデバイスにそのまま応用することはできない。
そこで本発明は、上記の課題を解決することのできる記憶装置、方法およびプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明の第1の形態においては、メインメモリに書き込むデータをキャッシュする記憶装置であって、複数のキャッシュセグメントを有し、キャッシュセグメントごとに、そのキャッシュセグメントに含まれる各セクタが有効なデータを含む有効セクタか否かを示す有効性データを記憶しているキャッシュメモリと、前記キャッシュメモリへのアクセスを制御するキャッシュ制御部とを備え、前記キャッシュ制御部は、キャッシュセグメントをメインメモリへ書き戻す場合に、そのキャッシュセグメントに対応する有効性データにアクセスして、無効セクタが連続する領域を検出する検出部と、検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリに対し発行して、各領域を有効セクタとしてから、そのキャッシュセグメント内のデータをメインメモリに書き戻す書戻し制御部とを有する記憶装置を提供する。また、当該記憶装置を制御する方法およびプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、本実施の形態に係るコンピュータ10のハードウェア構成の一例を示す。コンピュータ10は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部を備える。また、コンピュータ10は、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、記憶装置20、及びCD−ROMドライブ1060を有する入出力部を備える。また、コンピュータ10は、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部を更に備えてもよい。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、記憶装置20、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。記憶装置20は、コンピュータ10が使用するプログラム及びデータを格納する。記憶装置20は不揮発にデータを保持することのできるデバイス、例えば、フラッシュメモリ又はハードディスクドライブであってもよい。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020又は記憶装置20に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、コンピュータ10の起動時にCPU1000が実行するブートプログラムや、コンピュータ10のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、入出力チップ1070を介してRAM1020または記憶装置20に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
コンピュータ10に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されコンピュータ10にインストールされて実行される。以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。
なお、本実施の形態においては記憶装置20を備えるものとしてコンピュータ10を例示したが、この記憶装置20は他の如何なる装置やシステムに備えられてもよい。記憶装置20を備える装置・システムは、例えば、USBメモリデバイス、携帯電話装置、PDA装置、オーディオ・プレーヤ、またはカーナビゲーション・システムなどの、携帯型あるいは移動体に設けられた機器であってもよいし、ファイルサーバやNASなどの据置型機器であってもよい。
図2は、本実施の形態に係る記憶装置20のハードウェア構成の一例を示す。記憶装置20は、メインメモリ200と、キャッシュメモリ210と、キャッシュ制御部220とを有する。メインメモリ200は、例えばコンピュータ10の電源を遮断しても記憶内容を維持することのできる、不揮発性の記憶媒体である。具体的には、メインメモリ200は、少なくとも1つのフラッシュメモリを含んでよい。これに代えて、または、これに加えて、メインメモリ200は、ハードディスクドライブ、光磁気ディスクドライブおよび光磁気ディスク、ならびに、テープドライブおよびテープのうちの、少なくとも1つを含んでよい。メインメモリ200がフラッシュメモリを含む場合において、含まれるフラッシュメモリの数は2以上であることが望ましい。これにより、メインメモリ200の記憶容量を増大させることができるばかりでなく、インターリーブのアクセスによりデータ転送のスループットを向上できる。
キャッシュメモリ210は、例えばコンピュータ10の電源を遮断すると記憶内容を失う、揮発性の記憶媒体である。具体的には、キャッシュメモリ210は、SDRAMであってよい。キャッシュ制御部220は、メインメモリ200に対するアクセスの要求を、CPU1000から受信する。より詳細には、キャッシュ制御部220は、CPU1000上で動作するプログラムの指令に基づいて入出力コントローラ1084が出力する要求を受信する。この要求は、例えばATA(AT Attachment)プロトコル、または、SerialATAプロトコルなどの、ハードディスクドライブに対し要求を転送するためのプロトコルに従うものであってよい。これに代えて、キャッシュ制御部220は、他の通信プロトコルに従って要求を受信してもよい。
受信した要求が読出し要求の場合に、キャッシュ制御部220は、要求されたデータがキャッシュメモリ210に記憶されているか判断する。記憶されていれば、キャッシュ制御部220は、そのデータを読み出してCPU1000に返信する。記憶されていなければ、キャッシュ制御部220は、そのデータをメインメモリ200から読み出してCPU1000に返信する。一方、受信した要求が書込み要求の場合に、キャッシュ制御部220は、書込みデータをキャッシュするためのキャッシュセグメントがキャッシュメモリ210内に割り当てられているかどうかを判断する。割り当てられていれば、キャッシュ制御部220は、そこに書込みデータを書き込む。データを書き込んだキャッシュセグメントは所定の条件が成立した場合にメインメモリ200に書き戻される。一方、キャッシュセグメントが割り当てられていなければ、キャッシュ制御部220は、書込みデータをキャッシュするために新たにキャッシュセグメントを割り当てる。このように、キャッシュ制御部220は、キャッシュメモリ210へのアクセスを制御する役割を果たす。
本実施の形態は、以上のように構成されるデータのキャッシュ技術において、メインメモリ200としてフラッシュメモリを採用した場合に顕著に生じる課題を解決して、記憶装置20に対するアクセスを全体として極めて効率的にすることを目的とする。以下、具体的な説明をすすめる。
図3は、本実施の形態に係るメインメモリ200のデータ構造の一例を示す。メインメモリ200は、複数のメモリブロック、たとえば8192個のメモリブロックを有する。メモリブロックは、メインメモリ200へのデータの書込み単位である。即ち、1つのメモリブロックのデータサイズに満たないデータをメインメモリ200へ書込む場合であっても、メモリブロック毎にしかメインメモリ200へ書込みを行うことができない。したがって、少ないデータを書込む場合には、書き込み対象となるメモリブロック全体をメインメモリ200から読み出した上で、書込みデータによりその読み出したデータを更新して、更新後のデータをメインメモリ200に書き込む。
なお、フラッシュメモリの種類によっては、論理値1から論理値0への変更および論理値0から論理値1の変更の一方のみは、メモリブロックよりも小さい単位で行うことができる場合がある。しかしながら、この変更のみによってデータの書込みが実現されることは極めて稀である。このような稀な場合を除き、メモリブロック全体のデータを消去してからそのメモリブロックに対し書込みを行う必要がある。データの消去はメモリブロック単位であり、このことから、データの書き込みも実質的にメモリブロックが単位であることとなる場合が多い。このように、厳密には書き込みおよび消去の概念およびその単位は異なるが、本実施の形態においては実質的に同一と考えて差し支えない。したがって、本実施の形態においては、特に断りのない限り、単に「書込み」または「書戻し」と称する処理は、消去の処理を含み得るものとする。
各メモリブロックは、複数のページ、例えば64個のページを含む。ページは、データの読出しの単位となる。例えばあるフラッシュメモリにおいて、1ページは、2048バイトに64バイトの冗長部を加えた2112バイトである。冗長部は、誤り訂正又は誤り検出のために符号が格納される領域である。読出しは書き込みに比べれば小さい単位で実現できるものの、読出し単位であるページもある程度のサイズのデータであることから、読出し処理についてもある程度のサイズのデータをまとめて行うことが望ましい。読出しを効率化するためにメインメモリ200の内部に読出し専用のキャッシュメモリを設けてもよいが、その場合であっても読出し対象のアドレスはある程度連続していることが望ましい。なお、ページは、消去を伴わない書込みの単位でもある。しかしながら、既に述べたように、消去を伴わない書込みによっては実質的に有効な書込み処理を実現できないので、以降の説明において書込みは消去を伴うこととし、その単位はメモリブロックであるものとする。
1ページは、4個のセクタを含む。セクタは、本来は、記憶装置20に代えて用いられるハードディスクドライブの記憶単位である。本実施の形態では、記憶装置20をあたかもハードディスクドライブであるかのように動作させるので、記憶装置20はハードディスクドライブのセクタと同一サイズの記憶単位を有する。この記憶単位のことを本実施の形態ではセクタと呼ぶ。一例として1セクタは512バイトのデータを含む。なお、ブロック、ページ、または、セクタという用語は、記憶単位あるいは記憶領域を示すものであるが、以降の説明においては表現の簡潔化のため、その領域に記憶されたデータを示すものとしても用いる。
メインメモリ200は、以上のような内部構造を有するものの、ハードディスクドライブのインターフェイスとの間の互換性などのため、外部からはセクタ単位でアクセスが可能なように認識されることが望ましい。例えば、メインメモリ200は、第Pセクタから数えてQ個のセクタからデータを読み出す読出コマンドを受け付けてもよい。パラメータP、Qはコマンドごとに設定可能である。このようなコマンドを受け付け可能な場合であっても、それに応じた処理の速度は内部構造に依存する。例えば、ただ1つのセクタを読み出すコマンドよりも、連続した複数のセクタを読み出すコマンドの方が、セクタあたりの処理速度は速い。内部構造からすれば、読出しはページ単位で実現されるからである。
図4は、本実施の形態に係るキャッシュメモリ210のデータ構造の一例を示す。キャッシュメモリ210は、複数のセグメント300を有する。また、キャッシュメモリ210は、セグメント300ごとに、そのセグメント300の属性を示すタグ情報310を記憶している。セグメント300は、複数のセクタ320を有する。セクタ320は、上記の記憶装置20内のセクタと同一の記憶容量の領域である。各セグメント300は、そのキャッシュセグメント以上のデータサイズであるメモリブロックの少なくとも一部に対応して割り当てられ得る。割り当てられたセグメント300は、対応する当該メモリブロックの一部に記憶されているデータを、その後の読み出し処理の効率化のために予め読み出して記憶している。これに代えて、割り当てられたセグメント300は、対応する当該メモリブロックの一部に記憶するべきデータを、その後にまとめて書込みを行うために一時的に記憶してもよい。
図5は、本実施の形態に係るタグ情報310のデータ構造の一例を示す。キャッシュメモリ210は、タグ情報310を記憶するためのデータフィールドとして、上位アドレスフィールド400と、有効性データフィールド410と、LRU値フィールド420と、状態フィールド430とを有する。上位アドレスフィールド400は、対応するキャッシュセグメント300が割り当てられているメインメモリ200内のブロックについて、そのアドレス値のうち最上位から予め定められた桁数のアドレス値を記憶する。たとえば、メインメモリ200内のアドレスが24ビットで表される場合に、そのうちの下位のnビットを除外した、上位の(24−n)ビットのアドレス値が上位アドレスフィールド400に記憶される。このアドレス値のことを上位アドレス、または、上位アドレス値と称す。また、上位アドレスを除外したアドレスのことを下位アドレス、または、下位アドレス値と称す。
上位アドレス値が(24−n)ビットで表され、各セクタは下位アドレス値によって一意に定まる場合には、1つのキャッシュセグメント300に含まれるセクタ320の数は2のn乗個である。従って、あるキャッシュセグメント300に含まれる各セクタ320が有効なデータを含む有効セクタか否かを示す情報は、2のn乗ビットで表現される。この情報を有効性データと称し、有効性データフィールド410はこの有効性データを記憶する。また、LRU値フィールド420は、LRU値を記憶するためのフィールドである。LRU値は、Least Recently Usedという名称のごとく、未使用の期間を示す指標値である。
具体的には、LRU値は、対応するキャッシュセグメント300についての、未使用期間の長さの順序、あるいは、未使用期間の短さの順序を示してもよい。ここで、「使用」とは、CPU1000による読出し、および、書込みの少なくとも1つの処理の対象となったことをいう。より詳細には、複数のキャッシュセグメント300に未使用期間の長さまたは短さに応じて順序を付した場合において、LRU値は、キャッシュセグメント300の数を上限とした数値と成る。従って、これを記憶するLRU値フィールド420は、2を底とするセグメント数Sの対数だけのビットが必要となる。
状態フィールド430は、対応するキャッシュセグメント300に設定している状態を記憶している。状態は例えば3ビットで表され、各キャッシュセグメント300は無効状態、共有状態、保護状態、変更状態、および、修正状態を含む複数の状態の何れかに設定されている。各状態の概要は次の通りである。無効状態は、含んでいる全てのセクタ320が無効セクタであるキャッシュセグメント300の状態を示す。無効セクタは、メインメモリ200と一致するデータを保持しておらず、かつ、メインメモリ200に書込むべきとしてCPU1000から要求されたデータの保持もしていないセクタである。コンピュータ10を起動した場合等の初期状態において、全てのキャッシュセグメント300は無効状態である。
共有状態は、有している全てのセクタ320が共有セクタであるが、書込みに対しリプレースされ得ることを示す、キャッシュセグメント300の状態のことをいう。共有セクタは有効セクタであり、メインメモリ200と一致するデータを保持している。保護状態は、有している全てのセクタ320が共有セクタであり、なおかつ、書き換えから保護される、キャッシュセグメント300の状態を示す。変更状態および修正状態は、メインメモリ200と一致しておらず、メインメモリ200に書込むべきデータを含む状態である。変更状態のキャッシュセグメント300は、一部のセクタ320に、メインメモリ200に書込むべきデータを含むのに対し、修正状態のキャッシュセグメント300は、有しているすべてのセクタ320に、メインメモリ200に書込むべきデータを含む。このようなセクタ320のことを変更セクタと呼ぶ。変更セクタは有効セクタである。
なお、キャッシュセグメントに状態を定義して遷移させる技術一般については、例えばMSIプロトコル、MESIプロトコル、またはMOESIプロトコルとして知られているように周知であるから、他の実装例やその他の詳細についてはこれらの技術のものを参照されたい。
図6は、本実施の形態に係るセグメント300および有効性データフィールド410の具体例を示す。上記の変更状態のように、セグメント300は一部に有効セクタを含む場合がある。図6では有効セクタに斜線を付して示す。無効セクタには斜線を付していない。有効性データフィールド410が記憶する有効性データは、対応するキャッシュセグメントの各セクタが有効か否かを示す論理値をセクタごとに配列したビット列である。例えば、論理値1は有効セクタを示し、論理値0は無効セクタを示す。そして、有効性データは、これらの論理値を、対応するセクタの配列順に配列している。
上述のように、各セクタがキャッシュセグメント中に占める位置は、そのセクタのアドレスによって一意に定まる。また、フラッシュメモリデバイスに対するアクセスを減少させる観点から、書込みのキャッシュミス時にはメインメモリ200からキャッシュメモリ210にデータを読み出すことなく、書込みデータをキャッシュメモリ210に書込むことが望ましい。したがって、様々なアドレスに対し書込みが何度も要求されると、キャッシュセグメント内には有効セクタと無効セクタが離散的に混在することとなる場合がある。この場合、有効性データフィールド410に記憶される有効性データは、論理値1および論理値0が離散的に混在したデータとなる。
図7は、本実施の形態に係るキャッシュ制御部220の機能構成を示す。キャッシュ制御部220は、基本機能として、ATAプロトコルなどの通信プロトコルを、フラッシュメモリなどのメインメモリ200をアクセスするためのコマンドに変換して、メインメモリ200に送信する機能を有する。このほかに、キャッシュ制御部220は、キャッシュメモリ210へのアクセスの制御を通じて記憶装置20全体の性能向上を図る役割を果たす。具体的には、キャッシュ制御部220は、読出し制御部700と、書込み制御部710と、検出部720と、書戻し制御部730とを有する。これらの各部は、ハードワイヤード論理回路またはプログラマブル回路などの各種LSIによって実現されてもよいし、予め読み込んだプログラムを実行するマイクロコンピュータによって実現されてもよい。
読出し制御部700は、セクタに対するデータの読出し要求をCPU1000から受信する。読出しがキャッシュヒットした場合には、読出し制御部700は、キャッシュメモリ210からそのデータを読み出してCPU1000に返信する。読出しがキャッシュミスした場合には、読出し制御部700は、そのデータを含むページをメインメモリ200から読み出してキャッシュメモリ210に格納すると共に、そのデータをCPU1000に返信する。キャッシュヒットおよびキャッシュミスの判断は、読出しの要求されたアドレスの上位アドレスを、各セグメント300に対応する上位アドレスフィールド400と順次比較することによって実現される。一致する上位アドレスがあればキャッシュヒットであり、一致する上位アドレスがなければキャッシュミスである。なお、一致する上位アドレスがあっても、読出しの対象が無効セクタであればキャッシュミスである。
書込み制御部710は、セクタに対するデータの書込み要求をCPU1000から受信する。書込みがキャッシュミスした場合には、書込み制御部710は、書込みデータをキャッシュするために新たなキャッシュセグメントを割り当てる。キャッシュミス・キャッシュヒットの判断は読出しの場合と同様である。即ち、上位アドレスが一致すればキャッシュヒットであって、それ以外はキャッシュミスである。但し、読み出しとは異なり、無効セクタに対する書込みであってもキャッシュヒットであるかのように扱われ、書き込みデータはキャッシュ上の当該セクタ部分に保存される。また、キャッシュセグメントの割り当ては、書込みの要求されたアドレスの上位アドレスを、割り当てようとしているセグメント300に対応する上位アドレスフィールド400に格納することで実現される。また、割り当てるべきセグメント300の選択は、各セグメント300の状態に基づいて実現される。
一例として、無効状態のセグメント300があればそのセグメント300が、無効状態のセグメント300がなければ共有状態のセグメント300が選択される。同じ状態のセグメント300が複数あればLRU値の示す未使用期間が最も長いセグメント300がその中から選択される。選択するべき適切なセグメント300が無い場合には、書込み制御部710は、書戻し制御部730に指示して所定のセグメント300をメインメモリ200に書き戻させて、そのセグメント300を選択して新たなセグメント300として用いる。そして、書込み制御部710は、その新たなセグメント300内のセクタにその書込みデータを書き込んで、書込み対象以外のセクタに対応する有効性データを無効に設定する。
一方、あるセクタに対する書込みがキャッシュヒットした場合には、書込み制御部710は、そのセクタに対する書込みデータをキャッシュするために割り当てられているセグメント300内のセクタに、その書込みデータを書込む。そして、書込み制御部710は、そのセクタに対応する有効性データを有効に設定する。書込まれたデータは、上記のように新たに割り当てるべきセグメント300が無い場合や、その他所定の条件が成立した場合などに、書戻し制御部730によりメインメモリ200に書き戻される。
検出部720は、あるセグメント300をメインメモリ200へ書き戻す場合に処理を開始し、そのセグメント300に対応する有効性データにアクセスして、無効セクタが連続する領域を検出する。例えば、検出部720は、間に有効セクタを含むことなく連続している複数の無効セクタを、無効セクタが連続する領域として検出する。これに加えて、検出部720は、有効セクタと有効セクタとの間にある1つの無効セクタを、当該領域として検出してもよい。書戻し制御部730は、検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリ200に対し発行して、各領域を有効セクタとする。読出コマンドには、読出し範囲、例えば読み出し開始のセクタ位置および読出対象のセクタ数を設定できる。即ち、読出コマンドは無効セクタの数と同数ではなく当該領域の数だけ発行すればよい。そして、書戻し制御部730は、有効セクタで満たされたそのセグメント300内のデータをメインメモリ200に書き戻す。
図8は、本実施の形態に係る検出部720の回路構成の概念図を示す。検出部720は、ビット反転部800と、ビットマスク部810と、プライオリティエンコーダ820と、出力ラッチ830と、コントローラ840とを有する。ビット反転部800は、キャッシュメモリ210から読み出した有効性データを入力する。入力する有効性データは、例えばある1つのセグメント300に対応するものであるが、これに代えてビット反転部800は、予め定められた数のセグメント300に対応する有効性データを連結したものを入力してよい。何れの場合もまとめて説明するため、ビット反転部800が入力するデータを単に有効性データと呼ぶ。
ビット反転部800は、設定に基づいて、その有効性データの各ビットを反転させて、または、その有効性データの各ビットを反転させずにそのまま出力する。一例として、ビット反転部800は、排他的論理和(XOR)演算器により実現されてよい。ビットマスク部810は、ビット反転部800が出力した有効性データを入力し、マスクパターンが設定されていればそのマスクパターンによりその有効性データをビットマスクし、設定されていなければその有効性データをそのまま出力する。一例として、ビットマスク部810は、論理積(AND)演算器で実現されてよい。
プライオリティエンコーダ820は、ビットマスク部810が出力した有効性データのうち論理値が真である最上位のビットを検出してそのビット位置を出力する。出力ラッチ830は、出力されたビット位置を記憶しており、所定のタイミングでそのビット位置の情報をコントローラ840に出力する。コントローラ840は、プライオリティエンコーダ820により出力され、出力ラッチ830に記憶されたビット位置を入力する。そして、コントローラ840は、その入力の毎に、ビット反転部800の設定を変更すると共に、最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンをビットマスク部810に設定する。
設定の変更によりビット反転部800およびビットマスク部810の出力が変更され、出力ラッチ830には別のビット位置が記憶される。それに応じてさらにコントローラ840は設定を変更する。コントローラ840は、この設定変更の処理を、プライオリティエンコーダ820からビット位置が出力されなくなるまで繰り返す。検出部720は、このようにして出力ラッチ830から順次出力されるビット位置を無効セクタが連続する領域と有効セクタとの境界として検出する。検出部720の更に詳細な処理は図13−図17を参照して実例を用いて後に説明する。
図9は、本実施の形態に係るキャッシュ制御部220がCPU1000からの要求に応じて行う処理の流れを示す。読出し制御部700は、セクタに対するデータの読出し要求をCPU1000から受信すると(S900:YES)、読出し処理を行う(S910)。例えば、読出し制御部700は、読出しがキャッシュヒットした場合には、キャッシュメモリ210からそのデータを読み出してCPU1000に返信する。また、読出しがキャッシュミスした場合には、読出し制御部700は、そのデータを含むページをメインメモリ200から読み出してキャッシュメモリ210に格納すると共に、そのデータをCPU1000に返信する。
書込み制御部710は、セクタに対するデータの書込み要求をCPU1000から受信すると(S920)、書込み処理を行う(S930)。具体的には図10を参照して後に説明する。一方、書込みまたは読出しの要求に関わらず、検出部720および書戻し制御部730は、予め定められた条件が成立した場合に(S940)、有効セクタおよび無効セクタが混在するセグメント300をメインメモリ200へ書き戻す処理を行う(S950)。例えば、検出部720および書戻し制御部730は、キャッシュメモリ210中のセグメント300のうち有効セクタおよび無効セクタの双方を含むセグメント300の割合が予め定められた基準値を超えたことを条件に、有効セクタおよび無効セクタの双方を含む何れかのセグメント300を選択して、メインメモリ200に書き戻す。セグメント300の選択はLRU値に基づくことが望ましい。これにより、キャッシュミスの発生前に予め新たに割り当てることのできるセグメント300を確保できるので、キャッシュミス発生時の処理時間を短縮できる。
図10は、S930における処理の詳細を示す。書込み制御部710は、書込みの要求されたアドレスの上位アドレスが、何れかの上位アドレスフィールド400に記憶された上位アドレスに一致するか否かを判断する(S1000)。一致しない場合(キャッシュミスの場合である、S1000:NO)には、書込み制御部710は、書込みデータをキャッシュするために新たに割り当て可能なセグメント300があるかどうかを判断する(S1002)。例えば、書込み制御部710は、各状態フィールド430を走査して、無効状態または共有状態のセグメント300を検索する。これらのセグメント300はメインメモリ200に書き戻すことなく他の用途に再利用できるからである。何れかの状態のセグメント300が検索されれば、新たに割り当て可能なセグメント300があると判断する。
新たに割り当て可能なセグメント300がない場合には(S1002:NO)、書込み制御部710は、有効セクタおよび無効セクタが混在するセグメント300をメインメモリ200へ書き戻す処理を行う(S1005)。そして、書込み制御部710は、書込みデータをキャッシュするために新たなセグメント300を割り当てる(S1010)。セグメント300を割り当てた後に、あるいは、上位アドレスが一致したキャッシュヒットの場合に(S1000:YES)、書込み制御部710は、新たに割り当てたセグメント300または上位アドレスが一致したセグメント300に書込みデータを格納する(S1020)。そして、書込み制御部710は、新たに割り当てたセグメント300に書込みをした場合には、書込み対象以外のセクタに対応する有効性データを無効に設定する(S1030)。キャッシュヒットの場合には、書込み制御部710は、書込んだセクタに対応する有効性データを有効に設定する。
その他、必要に応じて、書込み制御部710は、セグメント300の状態を他の状態に遷移させるべく、対応する状態フィールド430を更新してよい(S1040)。また、書込み制御部710は、書込み対象のセグメント300に対応するLRU値を変更するべく、LRU値フィールド420を更新してよい(S1050)。
図11は、S950およびS1005における処理の詳細を示す。検出部720は、あるセグメント300をメインメモリ200へ書き戻す場合に処理を開始し、そのセグメント300に対応する有効性データにアクセスして、無効セクタが連続する領域を検出する(S1100)。書戻し制御部730は、検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリ200に対し発行して、各領域を有効セクタとする(S1110)。そして、書戻し制御部730は、有効セクタで満たされたそのセグメント300内のデータをメインメモリ200に書き戻す(S1120)。
1つのセグメント300が1つのメモリブロックのサイズに満たない場合には、そのメモリブロックの他のデータを読み出す処理をあわせて行う。即ち例えば、書戻し制御部730は、そのメモリブロック内の他のキャッシュセグメントに対応するデータをメインメモリ200から読み出したうえで、書き戻すべきセグメント300および読み出したそのデータを併せてそのメモリブロックに書き戻す。
図12は、S1100における処理の詳細を示す。まず、検出部720は、ビットマスク部810に設定するマスクデータを初期化する(S1200)。初期状態においてマスクデータは、全ての論理値をそのまま出力するように、例えば全てが論理値1のビット列に設定される。次に、検出部720は、ビット反転部800の設定を反転状態に設定する(S1210)。即ち初期状態においてビット反転部800は各ビットを反転して出力することとなる。
そして、検出部720は、エンコード演算を行う(S1220)。具体的には、ビット反転部800は有効性データの各ビットを反転させて出力する。また、ビットマスク部810は、ビット反転部800が出力した有効性データを入力し、設定されているマスクパターンによりその有効性データをビットマスクして出力する。また、プライオリティエンコーダ820は、ビットマスク部810が出力した有効性データのうち論理値が真である最上位のビットを検出してそのビット位置を出力する。出力ラッチ830は、出力されたビット位置を記憶する。
コントローラ840は、出力されたビット位置に基づいて、無効セクタがあるかどうかを判断する(S1230)。例えば、出力されたビット位置が、有効性データの最下位ビットよりも下位のビットを示す場合に、あるいは、論理値が真のビットが検出されないことを示す場合には、コントローラ840は、無効セクタが無いと判断する。無効セクタがなければ(S1230:NO)、コントローラ840は、図12に示す検出の処理を終了する。一方で、無効セクタがある場合に(S1230:YES)、コントローラ840は、無効セクタを示す論理値のビット位置を特定して、記憶領域に一時的に記憶する(S1240)。既にコントローラ840が出力ラッチ830からビット位置を入力している場合には、そのビット位置が特定するべきビット位置である。
そして、コントローラ840は、最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンを生成して、ビットマスク部810に設定する(S1250)。そして、コントローラ840は、ビット反転部800を非反転状態に設定してから(S1255)、エンコード演算を行う(S1260)。具体的には、ビット反転部800は有効性データの各ビットを反転させずにそのまま出力する。また、ビットマスク部810は、ビット反転部800が出力した有効性データを入力し、設定されているマスクパターンによりその有効性データをビットマスクして出力する。また、プライオリティエンコーダ820は、ビットマスク部810が出力した有効性データのうち論理値が真である最上位のビットを検出してそのビット位置を出力する。出力ラッチ830は、出力されたビット位置を記憶する。
コントローラ840は、出力されたこのビット位置、および、前回に出力されたビット位置に基づいて、無効セクタの連続数を算出する(S1270)。例えば、今回出力されたビット位置から、前回に出力されたビット位置を引き算した結果が連続数である。そして、コントローラ840は、有効セクタを示す論理値のビット位置を特定して、記憶領域に一時的に記憶する(S1280)。既にコントローラ840が出力ラッチ830からビット位置を入力している場合には、そのビット位置が特定するべきビット位置である。そして、コントローラ840は、最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンを生成して、ビットマスク部810に設定する(S1290)。その後、検出部720は、S1210に処理を戻して次の領域の検出を行う。
以上の処理を繰り返した結果、記憶領域に一時的に記憶されたビット位置が、無効セクタの連続する領域および有効セクタの境界を示す。次に、この処理の結果の具体例を図13から図17を参照して説明する。説明の簡潔化のため、有効性データは16ビットのビット列であるものとする。
図13は、1度目に処理されるS1220(S1220−1)の内容の詳細を示す。1度目の繰り返しにおける1度目のエンコード演算では、ビット反転部800は反転に設定され、ビットマスク部810は全ビットをそのまま出力するように設定されている。有効性データが「1100001100000011」の場合、ビット反転部800の出力は反転されて「0011110011111100」となる。また、ビットマスク部810の出力はこのままである。したがって、プライオリティエンコーダ820は、最上位の論理値1のビット位置、例えば最上位から3ビット目であること示す数値3を出力する。
図14は、1度目に処理されるS1260(S1260−1)の内容の詳細を示す。1度目の繰り返しにおける2度目のエンコード演算では、ビット反転部800は非反転に設定され、ビットマスク部810は最上位の3ビットをマスクするように設定されている。有効性データが「1100001100000011」の場合、ビット反転部800の出力はこの有効性データそのものである。また、ビットマスク部810の出力は、「0000001100000011」である。したがって、プライオリティエンコーダ820は、最上位の論理値1のビット位置、例えば最上位から7ビット目であること示す数値7を出力する。
これらの処理により、3ビット目から7ビット目までの4ビットによって表される領域が、無効データの連続する領域を示すことがわかる。この場合には、例えば、書戻し制御部730は、セグメント300の第3セクタから開始する4つのセクタにメインメモリ200からデータを読み出すための読出コマンドを発行する。
図15は、2度目に処理されるS1220(S1220−2)の内容の詳細を示す。2度目の繰り返しにおける1度目のエンコード演算では、ビット反転部800は反転に設定され、ビットマスク部810は最上位の7ビットをマスクするように設定されている。有効性データが「1100001100000011」の場合、ビット反転部800の出力は反転されて「0011110011111100」となる。また、ビットマスク部810の出力は「0000000011111100」となる。したがって、プライオリティエンコーダ820は、最上位の論理値1のビット位置、例えば最上位から9ビット目であること示す数値9を出力する。
図16は、2度目に処理されるS1260(S1260−2)の内容の詳細を示す。2度目の繰り返しにおける2度目のエンコード演算では、ビット反転部800は非反転に設定され、ビットマスク部810は最上位の9ビットをマスクするように設定されている。有効性データが「1100001100000011」の場合、ビット反転部800の出力はこの有効性データそのものである。また、ビットマスク部810の出力は、「0000000000000011」である。したがって、プライオリティエンコーダ820は、最上位の論理値1のビット位置、例えば最上位から15ビット目であること示す数値15を出力する。
これらの処理により、9ビット目から15ビット目までの6ビットによって表される領域が、無効データの連続する領域を示すことがわかる。この場合には、例えば、書戻し制御部730は、セグメント300の第9セクタから開始する6つのセクタにメインメモリ200からデータを読み出すための読出コマンドを発行する。
図17は、3度目に処理されるS1220(S1220−3)の内容の詳細を示す。3度目の繰り返しにおける1度目のエンコード演算では、ビット反転部800は反転に設定され、ビットマスク部810は最上位の15ビットをマスクするように設定されている。有効性データが「1100001100000011」の場合、ビット反転部800の出力は反転されて「0011110011111100」となる。また、ビットマスク部810の出力は「0000000000000000」である。したがって、プライオリティエンコーダ820は、論理値1のビットが検出できないことを示す所定のデータ(たとえば「NO」と表す)を出力する。これにより、検出部720は、無効セクタの連続する領域を検出し終えたものとして処理を終了する。
図18は、有効性データから検出される、無効セクタが連続する領域の具体例を示す。本実施の形態に係る検出部720によれば、図18において斜線の無い領域として示したように、無効セクタの連続する領域ごとに、その開始位置および終了位置の組を特定することができる。例えば図18では、第4セクタから8セクタ、第14セクタから5セクタ、第20セクタから4セクタ、および、第222セクタから4セクタが、それぞれ無効セクタの連続する領域であることが検出された。
以上、図12から図18を参照して説明した処理によれば、有効性データから専用の回路によって無効セクタの連続領域を極めて迅速に検出することができる。しかしながら、このような回路による検出は1つの実施の形態に過ぎず、これに多様な変形を加えたり代替を使用し得ることについて当業者にとって明らかである。例えば、無効セクタの連続領域は、上記の図11の処理の流れに沿って動作するプログラムを、マイクロプロセッサが実行することによっても実現されうる。一例として、このプログラムは、有効性データを先頭から順に走査して、その有効セクタおよび無効セクタの境界となるビット位置を順次記録するプログラムである。このほかに、回路を用いて実現する場合であっても、回路規模の縮小や更なる高速化のために様々な変形が可能である。これらの具体例について図19および図20を参照して説明する。
図19は、本実施の形態に係る検出部720の第1変形例の概念図を示す。この第1変形例において、検出部720は、図8に示した各部に加えて、セレクタ850をさらに有する。また、検出部720は、図8に示したビット反転部800、ビットマスク部810、プライオリティエンコーダ820、出力ラッチ830およびコントローラ840よりも少ないビット数の有効性データに対し処理可能なビット反転部、ビットマスク部、プライオリティエンコーダ、出力ラッチ、およびコントローラを有してもよい。図19では、対応関係の明確のため、このような各部を図8と同一符号を付して説明する。
セレクタ850は、1つのセグメント300に対応する有効性データを分割した複数の部分データのそれぞれを順次選択してビット反転部800に入力する。部分データは、例えば、有効性データが128ビットのビット列である場合に、それを4分割したうちの1つの32ビットのビット列となる。ビット反転部800は、入力した部分データの各ビットを、設定に基づいて反転させて、又は、反転させずにそのまま出力する。ビットマスク部810は、ビット反転部800が出力した部分データを入力し、マスクパターンが設定されていればそのマスクパターンによりその部分データをビットマスクし、設定されていなければその部分データをそのまま出力する。
プライオリティエンコーダ820は、ビットマスク部810が出力した部分データのうち論理値が真である最上位のビットを検出してそのビット位置を出力する。出力ラッチ830は、出力されたビット位置を記憶しており、所定のタイミングでそのビット位置の情報をコントローラ840に出力する。コントローラ840は、プライオリティエンコーダ820からビット位置を入力する毎に、ビット反転部800の設定を変更すると共に、部分データにおける最上位のビットからそのビット位置までのビット列をマスクするマスクパターンをビットマスク部810に設定する。また、コントローラ840は、論理値1のビット位置が検出されなかった場合に、セレクタ850に指示して次の部分データを選択させるように設定を変更する。
以上、この第1変形例によれば、有効性データよりも少ないビット数に対応した回路を繰り返し利用することで、検出部720の回路規模を縮小できる。特に、プライオリティエンコーダ820は対応するビット数に応じて大変大きい割合で回路規模が増大することから、第1変形例によって回路規模を大きく減らすことができる。
続いて、検出処理自体を殆ど遅延させることなく、同様に回路規模を縮小する例として変形例2を説明する。
図20は、本実施の形態に係る検出部720の第2変形例の概念図を示す。検出部720は、複数のビット反転部と、複数のビットマスク部と、複数のプライオリティエンコーダと、複数の出力ラッチと、複数のコントローラとを有する。これらの各部は、図8を参照して説明したビット反転部800、ビットマスク部810、プライオリティエンコーダ820、出力ラッチ830およびコントローラ840と比較して、少ないビット数のビット列に対応している。
対応関係の明確化のため、同一符号を用いて、複数のビット反転部をビット反転部800−1〜Nとし、複数のビットマスク部をビットマスク部810−1〜Nと、複数のプライオリティエンコーダをプライオリティエンコーダ820−1〜Nとし、複数の出力ラッチを出力ラッチ830−1〜Nとし、複数のコントローラをコントローラ840−1〜Nとする。また、添え字が同一の各部は互いに対応する。例えば、ビット反転部800−1は、ビットマスク部810−1に対応する。
そして、ビット反転部800−1〜Nのそれぞれは、キャッシュメモリ210から読み出した有効性データを分割した複数の部分データのそれぞれを入力し、入力した部分データの各ビットを、設定に基づいて反転させて、または、反転させずにそのまま出力する。また、ビットマスク部810−1〜Nのそれぞれは、対応するビット反転部が出力した部分データを入力し、マスクパターンが設定されていればそのマスクパターンによりその部分データをビットマスクし、設定されていなければその部分データをそのまま出力する。
プライオリティエンコーダ820−1〜Nのそれぞれは、対応するビットマスク部が出力した部分データのうち論理値が真である最上位のビットを検出してそのビット位置を出力する。出力ラッチ830−1〜Nのそれぞれは、出力されたビット位置を記憶しており、所定のタイミングでそのビット位置の情報を、対応するコントローラに出力する。コントローラ840−1〜Nのそれぞれは、対応するプライオリティエンコーダからビット位置を入力する毎に、対応するビット反転部の設定を変更すると共に、部分データにおける最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンを対応するビットマスク部に設定する。
そして、検出部720は、コントローラ840−1〜Nのそれぞれから出力されるビット位置に基づいて無効セクタが連続する領域を特定する。
以上、第2変形例によれば、長いビット列に対応する回路に代えて、短いビット列に対応する回路を複数設けることで、回路規模を削減しつつも、処理速度の低下を抑えることができる。即ち例えば、プライオリティエンコーダの回路規模は、対応可能なビット列のビット数には比例せず、その2乗などの極めて大きい値に比例して増加する。このような回路を分割して同時並行的に利用することで、回路規模を大きく削減できる。
以上、本実施の形態に係る記憶装置20によれば、書込みのキャッシュミス時にメインメモリからの読出しをせずに、書き戻しのタイミングまでその読出しを遅らせることで、メインメモリへのアクセスを大幅に低減できる。このため、メインメモリがフラッシュメモリなどで実現されている場合においては、アクセス速度の向上のみならずデバイスの寿命伸長などの、それに特有な様々な効果を得ることができる。さらに、書き戻し時には無効セクタが連続する領域を検出して、その領域ごとにコマンドを発行することで、コマンドの発行総数を低減して、メインメモリ200およびキャッシュ制御部220その他の制御回路の負荷を軽減できる。また、これによって、メインメモリ200のみならずキャッシュメモリ210に対するアクセスも連続的になるので、記憶装置20の処理を総合的に効率化することができる。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることのできることが当業者にとって明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、本実施の形態に係るコンピュータ10のハードウェア構成の一例を示す。 図2は、本実施の形態に係る記憶装置20のハードウェア構成の一例を示す。 図3は、本実施の形態に係るメインメモリ200のデータ構造の一例を示す。 図4は、本実施の形態に係るキャッシュメモリ210のデータ構造の一例を示す。 図5は、本実施の形態に係るタグ情報310のデータ構造の一例を示す。 図6は、本実施の形態に係るセグメント300および有効性データフィールド410の具体例を示す。 図7は、本実施の形態に係るキャッシュ制御部220の機能構成を示す。 図8は、本実施の形態に係る検出部720の回路構成の概念図を示す。 図9は、本実施の形態に係るキャッシュ制御部220がCPU1000からの要求に応じて行う処理の流れを示す。 図10は、S930における処理の詳細を示す。 図11は、S950およびS1005における処理の詳細を示す。 図12は、S1100における処理の詳細を示す。 図13は、1度目に処理されるS1220(S1220−1)の内容の詳細を示す。 図14は、1度目に処理されるS1260(S1260−1)の内容の詳細を示す。 図15は、2度目に処理されるS1220(S1220−2)の内容の詳細を示す。 図16は、2度目に処理されるS1260(S1260−2)の内容の詳細を示す。 図17は、3度目に処理されるS1220(S1220−3)の内容の詳細を示す。 図18は、有効性データから検出される、無効セクタが連続する領域の具体例を示す。 図19は、本実施の形態に係る検出部720の第1変形例の概念図を示す。 図20は、本実施の形態に係る検出部720の第2変形例の概念図を示す。
符号の説明
10 コンピュータ
20 記憶装置
200 メインメモリ
210 キャッシュメモリ
220 キャッシュ制御部
300 セグメント
310 タグ情報
320 セクタ
400 上位アドレスフィールド
410 有効性データフィールド
420 LRU値フィールド
430 状態フィールド
700 読出し制御部
710 書込み制御部
720 検出部
730 書戻し制御部
800 ビット反転部
810 ビットマスク部
820 プライオリティエンコーダ
830 出力ラッチ
840 コントローラ
850 セレクタ
1000 CPU

Claims (12)

  1. メインメモリに書き込むデータをキャッシュする記憶装置であって、
    複数のキャッシュセグメントを有し、キャッシュセグメントごとに、そのキャッシュセグメントに含まれる各セクタが有効なデータを含む有効セクタか否かを示す有効性データを記憶しているキャッシュメモリと、
    前記キャッシュメモリへのアクセスを制御するキャッシュ制御部と
    を備え、前記キャッシュ制御部は、
    キャッシュセグメントをメインメモリへ書き戻す場合に、そのキャッシュセグメントに対応する有効性データにアクセスして、無効セクタが連続する領域を検出する検出部と、
    検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリに対し発行して、各領域を有効セクタとしてから、そのキャッシュセグメント内のデータをメインメモリに書き戻す書戻し制御部と
    を有する記憶装置。
  2. 各キャッシュセグメントは、そのキャッシュセグメント以上のデータサイズであってメインメモリへの書込み単位であるメモリブロックの少なくとも一部に対応して割り当てられており、
    前記書戻し制御部は、書き戻すキャッシュセグメントを有効セクタとすると共に、メモリブロック内の他のキャッシュセグメントに対応するデータをメインメモリから読み出して、そのキャッシュセグメントおよび読み出したデータをメモリブロックに書き戻す
    請求項1に記載の記憶装置。
  3. 前記キャッシュ制御部は、あるセクタに対する書込みのキャッシュミスに応じ、書込みデータをキャッシュするために新たなキャッシュセグメントを割り当てて、そのキャッシュセグメント内のセクタにその書込みデータを書き込んで、書込み対象以外のセクタに対応する有効性データを無効に設定する、書込み制御部、を更に有する請求項1に記載の記憶装置。
  4. 前記書込み制御部は、あるセクタに対する書込みのキャッシュヒットに応じ、そのセクタに対する書込みデータをキャッシュするために割り当てられているキャッシュセグメント内のセクタに、その書込みデータを書き込んで、そのセクタに対応する有効性データを有効に設定する、請求項3に記載の記憶装置。
  5. 前記有効性データは、各セクタが有効か否かを示す論理値をセクタごとに配列したビット列であり、
    前記検出部は、
    前記キャッシュメモリから読み出した有効性データを入力し、設定に基づいて、その有効性データの各ビットを反転させて、または、その有効性データの各ビットを反転させずにそのまま出力するビット反転部と、
    前記ビット反転部が出力した有効性データを入力し、マスクパターンが設定されていればそのマスクパターンによりその有効性データをビットマスクし、設定されていなければその有効性データをそのまま出力するビットマスク部と、
    前記ビットマスク部が出力した有効性データのうち論理値が真である最上位のビットを検出してそのビット位置を出力するプライオリティエンコーダと、
    前記プライオリティエンコーダからビット位置を入力する毎に、前記ビット反転部の設定を変更すると共に、最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンを前記ビットマスク部に設定するコントローラと
    を有し、前記プライオリティエンコーダから順次出力されるビット位置を無効セクタが連続する領域と有効セクタとの境界として検出する、請求項1に記載の記憶装置。
  6. 前記検出部は、1つのキャッシュセグメントに対応する有効性データを分割した複数の部分データのそれぞれを順次選択して前記ビット反転部に入力する選択部を更に有し、
    前記ビット反転部は、入力した部分データの各ビットを、設定に基づいて反転させて、または、反転させずにそのまま出力し、
    前記ビットマスク部は、前記ビット反転部が出力した部分データを入力し、マスクパターンが設定されていればそのマスクパターンによりその部分データをビットマスクし、設定されていなければその部分データをそのまま出力し、
    前記プライオリティエンコーダは、前記ビットマスク部が出力した部分データのうち論理値が真である最上位のビットを検出してそのビット位置を出力し、
    前記コントローラは、前記プライオリティエンコーダからビット位置を入力する毎に、前記ビット反転部の設定を変更すると共に、部分データにおける最上位のビットからそのビット位置までのビット列をマスクするマスクパターンを前記ビットマスク部に設定する
    請求項5に記載の記憶装置。
  7. 前記検出部は、複数の前記ビット反転部と、複数の前記ビットマスク部と、複数の前記プライオリティエンコーダと、複数の前記コントローラとを有し、
    それぞれのビット反転部は、キャッシュメモリから読み出した有効性データを分割した複数の部分データのそれぞれを入力し、入力した部分データの各ビットを、設定に基づいて反転させて、または、反転させずにそのまま出力し、
    それぞれのビットマスク部は、対応するビット反転部が出力した部分データを入力し、マスクパターンが設定されていればそのマスクパターンによりその部分データをビットマスクし、設定されていなければその部分データをそのまま出力し、
    それぞれのプライオリティエンコーダは、対応するビットマスク部が出力した部分データのうち論理値が真である最上位のビットを検出してそのビット位置を出力し、
    それぞれのコントローラは、対応するプライオリティエンコーダからビット位置を入力する毎に、対応するビット反転部の設定を変更すると共に、部分データにおける最上位のビットからその入力したビット位置までのビット列をマスクするマスクパターンを対応するビットマスク部に設定する
    請求項5に記載の記憶装置。
  8. 前記検出部は、前記キャッシュメモリ中のキャッシュセグメントのうち有効セクタを含むキャッシュセグメントの割合が予め定められた基準値を超えたことを条件に、有効セクタを含む何れかのキャッシュセグメントを選択して前記メインメモリに書き戻す
    請求項3に記載の記憶装置。
  9. 前記メインメモリを備える請求項1に記載の記憶装置。
  10. 前記メインメモリとして、少なくとも1つのフラッシュメモリを備える請求項9に記載の記憶装置。
  11. メインメモリに書き込むデータを記憶装置内のキャッシュメモリにキャッシュする方法であって、
    前記記憶装置は、
    複数のキャッシュセグメントを有し、キャッシュセグメントごとに、そのキャッシュセグメントに含まれる各セクタが有効なデータを含む有効セクタか否かを示す有効性データを記憶しているキャッシュメモリと、
    前記キャッシュメモリへのアクセスを制御するキャッシュ制御部と
    を備え、前記キャッシュ制御部により、
    キャッシュセグメントをメインメモリへ書き戻す場合に、そのキャッシュセグメントに対応する有効性データにアクセスして、無効セクタが連続する領域を検出するステップと、
    検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリに対し発行して、各領域を有効セクタとしてから、そのキャッシュセグメント内のデータをメインメモリに書き戻すステップと
    を有する方法。
  12. メインメモリに書き込むデータをキャッシュする記憶装置を制御するプログラムであって、
    前記記憶装置は、
    複数のキャッシュセグメントを有し、キャッシュセグメントごとに、そのキャッシュセグメントに含まれる各セクタが有効なデータを含む有効セクタか否かを示す有効性データを記憶しているキャッシュメモリと、
    前記キャッシュメモリへのアクセスを制御するキャッシュ制御部と
    を備え、前記キャッシュ制御部を、
    キャッシュセグメントをメインメモリへ書き戻す場合に、そのキャッシュセグメントに対応する有効性データにアクセスして、無効セクタが連続する領域を検出する検出部と、
    検出したその領域ごとに、その領域へデータを読み出す読出コマンドをメインメモリに対し発行して、各領域を有効セクタとしてから、そのキャッシュセグメント内のデータをメインメモリに書き戻す書戻し制御部と
    して機能させるプログラム。
JP2007143968A 2007-05-30 2007-05-30 メインメモリに書き込むデータをキャッシュする技術 Expired - Fee Related JP4412676B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2007143968A JP4412676B2 (ja) 2007-05-30 2007-05-30 メインメモリに書き込むデータをキャッシュする技術
US12/129,090 US8266385B2 (en) 2007-05-30 2008-05-29 Technique and apparatus for identifying cache segments for caching data to be written to main memory
US13/590,884 US8683142B2 (en) 2007-05-30 2012-08-21 Technique and apparatus for identifying cache segments for caching data to be written to main memory
US13/604,796 US8972407B2 (en) 2007-05-30 2012-09-06 Information processing method for determining weight of each feature in subjective hierarchical clustering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007143968A JP4412676B2 (ja) 2007-05-30 2007-05-30 メインメモリに書き込むデータをキャッシュする技術

Publications (2)

Publication Number Publication Date
JP2008299530A true JP2008299530A (ja) 2008-12-11
JP4412676B2 JP4412676B2 (ja) 2010-02-10

Family

ID=40089571

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007143968A Expired - Fee Related JP4412676B2 (ja) 2007-05-30 2007-05-30 メインメモリに書き込むデータをキャッシュする技術

Country Status (2)

Country Link
US (2) US8266385B2 (ja)
JP (1) JP4412676B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020833A (ja) * 2007-07-13 2009-01-29 Internatl Business Mach Corp <Ibm> データをキャッシュする技術
JP2009211226A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2011146105A (ja) * 2010-01-15 2011-07-28 Internatl Business Mach Corp <Ibm> データの書込みを制御する装置及び方法
JP2014197265A (ja) * 2013-03-29 2014-10-16 東芝パソコンシステム株式会社 半導体メモリ装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI379195B (en) * 2009-04-13 2012-12-11 Realtek Semiconductor Corp Method and device for accessing memory and central processing unit using the same
US8291175B2 (en) * 2009-10-16 2012-10-16 Oracle America, Inc. Processor-bus attached flash main-memory module
EP2559036A1 (en) 2010-04-15 2013-02-20 Ramot at Tel-Aviv University Ltd. Multiple programming of flash memory without erase
TWI521343B (zh) 2011-08-01 2016-02-11 Toshiba Kk An information processing device, a semiconductor memory device, and a semiconductor memory device
US9098420B2 (en) * 2011-10-21 2015-08-04 Nokia Technology Oy Method and apparatus for synchronizing a cache
US9612972B2 (en) * 2012-12-03 2017-04-04 Micron Technology, Inc. Apparatuses and methods for pre-fetching and write-back for a segmented cache memory
US9378148B2 (en) 2013-03-15 2016-06-28 Intel Corporation Adaptive hierarchical cache policy in a microprocessor
JP6142727B2 (ja) * 2013-08-12 2017-06-07 富士通株式会社 データアクセス分析プログラム、データアクセス分析方法、及びデータアクセス分析装置
US9229866B2 (en) * 2013-11-25 2016-01-05 Apple Inc. Delaying cache data array updates
US10331385B2 (en) * 2016-09-29 2019-06-25 Intel Corporation Cooperative write-back cache flushing for storage devices
CN113157198A (zh) * 2020-01-07 2021-07-23 伊姆西Ip控股有限责任公司 管理缓存的方法、设备和计算机程序产品

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
KR101085406B1 (ko) * 2004-02-16 2011-11-21 삼성전자주식회사 불 휘발성 메모리를 제어하기 위한 컨트롤러

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009020833A (ja) * 2007-07-13 2009-01-29 Internatl Business Mach Corp <Ibm> データをキャッシュする技術
JP2009211226A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4691122B2 (ja) * 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP2011146105A (ja) * 2010-01-15 2011-07-28 Internatl Business Mach Corp <Ibm> データの書込みを制御する装置及び方法
US8599511B2 (en) 2010-01-15 2013-12-03 International Business Machines Corporation Apparatus for controlling writing data and method for the same
JP2014197265A (ja) * 2013-03-29 2014-10-16 東芝パソコンシステム株式会社 半導体メモリ装置

Also Published As

Publication number Publication date
US20120331213A1 (en) 2012-12-27
US20080301373A1 (en) 2008-12-04
US8683142B2 (en) 2014-03-25
US8266385B2 (en) 2012-09-11
JP4412676B2 (ja) 2010-02-10

Similar Documents

Publication Publication Date Title
JP4412676B2 (ja) メインメモリに書き込むデータをキャッシュする技術
EP3204859B1 (en) Methods and systems for cache lines de-duplication
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
JP6505132B2 (ja) メモリ容量圧縮を利用するメモリコントローラならびに関連するプロセッサベースのシステムおよび方法
US20170235681A1 (en) Memory system and control method of the same
US9811456B2 (en) Reliable wear-leveling for non-volatile memory and method therefor
US10437737B2 (en) Data storage device
US11409663B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
JP5083757B2 (ja) データをキャッシュする技術
KR101842321B1 (ko) 세그먼트화된 캐시
US10691613B1 (en) Caching algorithms for multiple caches
EP3553665B1 (en) Non-volatile memory access method, device, and system
US20140317337A1 (en) Metadata management and support for phase change memory with switch (pcms)
US10990536B2 (en) Memory controller, operating method of the memory controller, and storage device including the memory controller
JP4963088B2 (ja) データをキャッシュする技術
US20070101098A1 (en) Apparatus and method of reducing page fault rate in virtual memory system
JP4915756B2 (ja) アドレス変換を高速化する方法及びシステム
TW202115730A (zh) 快閃記憶體控制器、記憶體裝置以及存取快閃記憶體模組之方法
JP2013073271A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
JP5025670B2 (ja) 情報処理装置およびデータ記憶装置
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
JP2014197285A (ja) 半導体メモリ装置
JP6027479B2 (ja) 半導体メモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090513

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090513

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090526

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090622

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090715

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091026

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: 20091110

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20091111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121127

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131127

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees