JP2004152173A - ディスク装置およびディスク装置のキャッシュメモリ制御方法 - Google Patents

ディスク装置およびディスク装置のキャッシュメモリ制御方法 Download PDF

Info

Publication number
JP2004152173A
JP2004152173A JP2002318777A JP2002318777A JP2004152173A JP 2004152173 A JP2004152173 A JP 2004152173A JP 2002318777 A JP2002318777 A JP 2002318777A JP 2002318777 A JP2002318777 A JP 2002318777A JP 2004152173 A JP2004152173 A JP 2004152173A
Authority
JP
Japan
Prior art keywords
data
cache memory
management
sequential data
list
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.)
Pending
Application number
JP2002318777A
Other languages
English (en)
Inventor
Manabu Ishida
学 石田
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2002318777A priority Critical patent/JP2004152173A/ja
Publication of JP2004152173A publication Critical patent/JP2004152173A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】多種のシーケンシャルデータがキャッシュメモリに格納されている時にも1つのキャッシュ管理リストで管理できる制御方式のディスク装置を提供する。
【解決手段】複数のシーケンシャルデータ管理用構造体とシーケンシャルデータ管理用リストを備え、多種のシーケンシャルデータに対して、1つのキャッシュ管理リストで制御でき、複雑なアルゴリズムになることを防ぐ。
【選択図】 図5

Description

【0001】
【発明の属する技術分野】
本発明は、ハードディスク装置等のディスク装置およびそのディスク装置のキャッシュメモリ制御方法に関するものである。
【0002】
【従来の技術】
一般にディスク装置は、ディスクと、このディスク上のデータのうち使用頻度の高いデータを一時的に保持するキャッシュメモリと、キャッシュメモリを制御するマイクロコンピュータ等を備えている。そして、従来のディスク装置のキャッシュメモリ制御方法では、キャッシュメモリへ新しいデータの入力要求があった場合に、キャッシュメモリがすでに他のデータで埋められている時は、最も古く参照されたデータと置き換える方法であるLRU(Least Recently Used)アルゴリズム等でキャッシュメモリの制御を行っていた。また最近アクセスした命令やデータを再度アクセスする傾向が強いプログラムの局所性を利用したデータの再利用、すなわちキャッシュメモリ上に最近アクセスされたデータを蓄えることによりディスクからの読み出しよりもキャッシュメモリからの読み出しを多くすることにより、読み出し速度を速くし、ディスク装置の見かけ上の性能向上を図った。
【0003】
プログラムやデータのアクセス単位をセグメントと呼び、このセグメントは、図1に示すバッファ管理用構造体50を用いてLRUアルゴリズムで管理されている。バッファ管理用構造体50は、セグメントアドレス51と、データのブロックアドレス52と、次の構造体へのポインタ53と、前の構造体へのポインタ54から成っている。
【0004】
セグメントアドレス51は、セグメントのキャッシュメモリ上の領域を示している。データのブロックアドレス52は、セグメントのディスク上の領域を示しており、ホストコンピュータ等の上位処理装置からデータの読み出しの要求があった場合、要求に合ったデータかどうか検索する時に用いられる。次の構造体へのポインタ53および前の構造体へのポインタ54は、前後のバッファ管理用構造体50を参照して、リスト構造を構成する。
【0005】
図2は、キャッシュメモリを制御するマイクロコンピュータ内のメモリに存するキャッシュメモリ管理用リスト60の構成の一例を示している。左端のバッファ管理用構造体50aは、次の構造体へのポインタ53aにより、左側から2番目のバッファ管理用構造体50bを参照する。以下、同様にして、右端のバッファ管理用構造体50dまで順次参照できる。逆に、右端のバッファ管理用構造体50dは、前の構造体へのポインタ54dにより、右側から2番目のバッファ管理用構造体50cを参照する。以下、同様にして、左端のバッファ管理用構造体50aまで順次参照できる。
【0006】
LRUアルゴリズムを使用してキャッシュメモリ管理用リスト60を管理した場合、過去に利用されたデータのバッファ管理用構造体50ほど右側に配置され、最近使われた利用頻度の高いデータのバッファ管理用構造体50ほど左側に配置される。キャッシュメモリ上で古いデータと新しいデータの入れ替えがあると、新しいアクセス単位データにリンクされたバッファ管理用構造体50がキャッシュメモリ管理用リスト60に登録され左端に追加される。そして右端から古いアクセス単位データのバッファ管理用構造体50が廃棄される。
【0007】
古いデータがキャッシュメモリからなくなるので、キャッシュメモリ上には最近使われた利用頻度の高いデータが配置され、ディスク上のデータよりもキャッシュメモリ上のデータが読み出される割合が多くなり、ディスク装置のシステム性能が向上する。
【0008】
しかし、映像データのような連続したデータは、他のデータと共用されることが少なく、その分再利用される可能性が低い。このようなデータがキャッシュメモリ上に保存される場合は、キャッシュメモリは、再び参照されることの少ないデータで埋まることになり、LRUアルゴリズムは性能向上に寄与しなくなる。
【0009】
よって、アクセスされるデータに映像データのようなシーケンシャルデータと連続しないランダムデータが混在している場合にもキャッシュメモリを効率的に使用し、ディスク装置の性能低下を避けるには、キャッシュメモリにシーケンシャルなデータを不用意に保存しないようにする必要がある。
【0010】
ただし、キャッシュメモリ上に上位処理装置が要求するデータが存在しないケースであるキャッシュミスの発生を最小限に抑えるために、効果的に先読みを行う必要があった。先読みとは、連続したデータをディスクから読み出す時に必要なデータの先のデータも一緒に読み出しておき、再度上位処理装置から読み出し要求のあった場合に、キャッシュメモリから読み出すことにより、スピードアップを図る方法である。
【0011】
その為、キャッシュメモリをランダムデータ用のバッファ領域と、シーケンシャルデータ用のバッファ領域に分け、キャッシュメモリ上のデータを管理するキャッシュアルゴリズムと先読み処理を行う先読みアルゴリズムで別々に管理し、シーケンシャルデータでキャッシュメモリが占有されることを防いでいた。しかし、複数のアルゴリズムが存在し、データアクセス管理の複雑化を招いていた。
【0012】
上記の問題を解決するため、ディスクに対するランダムアクセスとシーケンシャルアクセスを効率的に管理するために、図3に示すシーケンシャルデータ管理用構造体70と図1に示す従来と同じバッファ管理用構造体50を用い、図4に示すキャッシュメモリ管理用リスト60bとシーケンシャルデータ管理用リスト80とを形成し、これらのリストをキャッシュメモリを制御するマイクロコンピュータ内部のメモリに設け、キャッシュメモリ上のデータを管理する提案がある。
【0013】
まずシーケンシャルデータ管理用構造体70の構成について図3にて説明する。シーケンシャルデータ管理用構造体70は、シーケンシャルデータ管理用構造体識別子71と、次のバッファ管理用構造体へのポインタ72と、前のバッファ管理用構造体へのポインタ73と、シーケンシャルデータ管理用リストへのポインタ74と、シーケンシャルデータ管理用リストへの登録数75から成っている。
【0014】
シーケンシャルデータ管理用構造体識別子71は、シーケンシャルデータ管理用構造体70を識別するデータであり、―1が入力されている。次のバッファ管理用構造体へのポインタ72および前のバッファ管理用構造体へのポインタ73は、シーケンシャルデータ管理用構造体70の前後に位置するバッファ管理用構造体50を参照するポインタである。
【0015】
ただし、キャッシュメモリ管理用リスト60bで示すように、シーケンシャルデータ管理用構造体70が先頭に配置されるため、前のバッファ管理用構造体へのポインタ73には、無効データが入力されている。
【0016】
シーケンシャルデータ管理用リストへのポインタ74は、シーケンシャルデータ管理用リスト80内の先頭に位置するバッファ管理用構造体50(図4のバッファ管理用構造体50gに相当)を参照するポインタである。シーケンシャルデータ管理用リストへの登録数75は、シーケンシャルデータ管理用リスト80内に登録されているバッファ管理用構造体50(図4のバッファ管理用構造体50g、50h、50iに相当)の個数が入力されている。
【0017】
次に、キャッシュメモリ管理用リスト60bとシーケンシャルデータ管理用リスト80の構成の一例について図4にて説明する。キャシュメモリ管理用リスト60bは、先頭にシーケンシャルデータ管理用構造体70を配置し、バッファ管理用構造体50e、50fとで構成されている。シーケンシャルデータ管理用リスト80は、バッファ管理用構造体50g、50h、50iとで構成されている。
【0018】
ホストコンピュータ等の上位処理装置からデータの入出力要求があり、キャッシュメモリへデータを格納する場合、ディスク装置に存するマイクロコンピュータ等の制御手段によって、データのアクセス単位であるセグメントのアドレスの連続数が所定数未満と判断された場合は、キャッシュメモリ管理用リスト60b内のバッファ管理用構造体50とリンクされ、ランダムデータとして管理される。セグメントのアドレスの連続数が所定数以上と判断された場合は、シーケンシャルデータ管理用リスト80内のバッファ管理用構造体50とリンクされ、シーケンシャルデータとして管理される。
【0019】
キャッシュメモリ管理用リスト60b内のシーケンシャルデータ管理用構造体70の次のバッファ管理用構造体へのポインタ72により、先頭のバッファ管理用構造体50eが参照される。またシーケンシャルデータ管理用リストへのポインタ74で、シーケンシャルデータ管理用リスト80内の先頭のバッファ管理用構造体50gが参照される。バッファ管理用構造体50e、50gの次の構造体へのポインタ53e、53gにより、バッファ管理用構造体50f、50hが参照される。そして順次、バッファ管理用構造体50iまで参照される。
【0020】
その為、上位処理装置から読み出し要求があった場合、キャッシュメモリに要求されたデータがあるかどうかを、シーケンシャルデータ管理用リスト80およびキャッシュメモリ管理用リスト60b内の各バッファ管理用構造体50のブロックアドレス52を参照することにより検索できる。
【0021】
以上のようにランダムデータとシーケンシャルデータをまとまった管理用リスト構造体で管理することにより、キャッシュメモリをランダムデータ用のバッファ領域とシーケンシャルデータ用のバッファ領域に分けることを必要とせず、アルゴリズムの複雑化を防ぐことができる。(特許文献1参照)。
【0022】
【特許文献1】
特開1998―105466号公報(第6−10項、第2図)
【0023】
【発明が解決しようとする課題】
しかし、上述した従来のキャッシュメモリ管理方法においては、シーケンシャルデータ用のリスト構造が一つしかない。これは、言い換えれば、連続したデータを管理できるのが1種類であることを示しており、ビデオデータあるいはオーディオデータといった単一のメディア種の連続したデータしか管理できない。
【0024】
また近年のマルチメディア化による再生データ種の多様化に伴い、1つのメディア内に複数のデータ種が、混在することが多くなっている。従来の管理リスト構造では、複数のデータ種を時分割で再生している場合に、あるデータ種(説明のためAメディア種)のシーケンシャルデータを先読みによりキャッシュメモリに格納していても、他のデータ種(説明のためBメディア種)のアクセスにより無効化されてしまう。
【0025】
すなわち、ホストコンピュータ等の上位処理装置からBメディア種のシーケンシャルデータのアクセスが発生し、キャッシュメモリへBメディア種のデータの格納が生じた場合、キャッシュメモリにすでに格納されていたAメディア種のデータを管理しているシーケンシャルデータ管理用リストがLRUアルゴリズムにより無効化され、データはキャッシュメモリから廃棄される可能性がある。
【0026】
本発明は、上記の問題点に鑑み、キャッシュメモリの制御手段内にシーケンシャルデータ管理用リストを複数設けることにより、多様なデータ種を再生するディスクにおいても、複数のシーケンシャルデータを格納できるキャッシュ効率の高いキャッシュメモリ制御方法を採用したディスク装置を提供することを目的とする。
【0027】
【課題を解決するための手段】
上記目的を達成するために本発明は、書き込み/読み出し回路部と、キャッシュメモリと、キャッシュメモリの制御手段と、ダイレクトメモリアクセス部と、入出力回路部を備えたディスク装置において、制御手段が、制御手段内のメモリへキャッシュメモリ管理用リストと複数のシーケンシャルデータ管理用リストを設け、キャッシュメモリ上のデータを管理する。
【0028】
この構成によると、アドレスが所定数以上連続するシーケンシャルデータを複数管理できる。そのためキャッシュメモリ上に既に格納されているシーケンシャルデータが他種のシーケンシャルデータの格納によりキャッシュメモリから廃棄されてしまうことを防ぎ、先読みされたデータを有効に活用でき、キャッシュ効率を高めることができる。
【0029】
また本発明は、キャッシュメモリ管理用リスト内に、上位処理装置からのデータの入出力要求により、制御手段からシーケンシャルデータ管理用リストがアクセスされた情報を保持する履歴フラグを設けた構成とする。
【0030】
この構成によると、新しくシーケンシャルデータをキャッシュメモリに格納する際に、最も古くアクセスされたシーケンシャルデータ管理用リストを、履歴フラグを参照して特定し、シーケンシャルデータ管理用リストを無効化する。それによって、古いシーケンシャルデータをキャッシュメモリから廃棄し、キャッシュメモリに最新のシーケンシャルデータを格納することができ、キャッシュ効率を高めることができる。
【0031】
また本発明は、キャッシュメモリ上のデータとリンクしていない空きのバッファ管理用構造体から成る空きセグメント管理用リストを設けた構成とする。
【0032】
この構成によると、新しいデータをキャッシュメモリへ格納する場合に、そのデータにリンクさせるための空きのバッファ管理用構造体の有無を空きセグメント管理用リストを検索することにより簡単に確認できる。そしてシーケンシャルデータ管理用リストとキャッシュメモリ管理用リストへ、空きのバッファ管理用構造体をすぐに供給することができる。その為、書き込み時の処理時間を短くし、書き込み速度を向上させることができる。
【0033】
【発明の実施の形態】
以下に本発明の実施形態を図面を参照して説明する。先ず、本発明の実施形態であるディスク装置の概略構成について図5を用いて説明する。
【0034】
ディスク装置8は、ディスク1と、書き込み/読み出し回路部2と、キャッシュメモリ3と、入出力回路部4と、キャッシュメモリの制御手段であるマイクロコンピュータ5と、ダイレクトメモリアクセス部7等で構成される。
【0035】
書き込み/読み出し回路部2は、ディスク1に対してデータの書き込み、読み出しの制御を行う。キャッシュメモリ3は、ディスク1から読み出したデータを一時的に蓄える。ダイレクトメモリアクセス部7は、キャッシュメモリ3および書き込み/読み出し回路部2と入出力回路部4との間でデータを転送する。入出力回路部4は、ホストコンピュータ等の上位処理装置6との間でデータの転送を行う。マイクロコンピュータ5は、キャッシュメモリ3の制御を行う。
【0036】
次に、キャッシュメモリ3を制御するマイクロコンピュータ5内のメモリに存し、キャッシュメモリ3上のデータ管理に用いられる管理用構造体および管理用リストについて説明する。図6は、シーケンシャルデータ管理用構造体[0]、[1]の構成図である。図7は、空きセグメント管理用構造体の構成図である。図8は、キャッシュメモリ管理用リストおよびシーケンシャルデータ管理用リスト[0]、[1]の構成図である。図9は、空きセグメント管理用リストの構成図である。
【0037】
従来技術と同様に、図1に示すバッファ管理用構造体50を用いて、キャッシュメモリ3上のデータをセグメント単位で管理する。そして、図6に示すシーケンシャルデータ管理用構造体[0]10とシーケンシャルデータ管理用構造体[1]20とバッファ管理用構造体50を用いて、図8に示すキャッシュメモリ管理用リスト60aとシーケンシャルデータ管理用リスト[0]30とシーケンシャルデータ管理用リスト[1]40とを構成する。
【0038】
なお、図8の例では、ディスクに記録されているデータ種が2種類であると仮定し、シーケンシャルデータ管理用構造体[0]10、[1]20とシーケンシャルデータ管理用リスト[0]30、[1]40を配置しているが、より多くのデータ種がディスクに存在する場合は、それに合わせてシーケンシャルデータ管理用構造体およびシーケンシャルデータ管理用リストの数を増やして管理する。
【0039】
まず、シーケンシャルデータ管理用構造体[0]10、[1]20の構成について図6を用いて説明する。シーケンシャルデータ管理用構造体[0]10は、シーケンシャルデータ管理用構造体識別子11と、次のバッファ管理用構造体へのポインタ12と、前のバッファ管理用構造体へのポインタ13と、シーケンシャルデータ管理用リストへのポインタ14と、シーケンシャルデータ管理用リストへの登録数15と、履歴フラグ16から成っている。
【0040】
シーケンシャルデータ管理用構造体識別子11は、シーケンシャルデータ管理用構造体[0]10を識別するためのデータであり、―1が入力されている。次のバッファ管理用構造体へのポインタ12は、シーケンシャルデータ管理用構造体[0]10の次に位置するバッファ管理用構造体50を参照するポインタである。但し、次に位置するバッファ管理用構造体50が存在しない場合は、―1が入力される。前のバッファ管理用構造体へのポインタ13は、シーケンシャルデータ管理用構造体[0]10の前に位置するバッファ管理用構造体50を参照するポインタである。
【0041】
しかし、図8に示すキャッシュメモリ管理用リスト60aのように、データ種が2種類の場合は、シーケンシャルデータ管理用構造体[1]20が、シーケンシャルデータ管理用構造体[0]10の前に配置される為、前のバッファ管理用構造体へのポインタ13は、シーケンシャルデータ管理用構造体[1]20を参照する識別子が入力される。
【0042】
シーケンシャルデータ管理用リストへのポインタ14は、シーケンシャルデータ管理用リスト[0]30内の先頭のバッファ管理用構造体50(図8に示すバッファ管理用構造体50tに相当)を参照するポインタである。但し、シーケンシャルデータ管理用リスト[0]30が存在しない場合は、―1が入力される。シーケンシャルデータ管理用リストへの登録数75は、シーケンシャルデータ管理用リスト[0]30に登録されているバッファ管理用構造体50(図8に示すバッファ管理用構造体50t、50l、50mに相当)の個数が入力されており、セグメント数の連続数をチェックすることができる。
【0043】
履歴フラグ16は、シーケンシャルデータ管理用リストが上位処理装置6の入出力要求によりマイクロコンピュータ5からアクセスされた情報を保持したものである。新しいシーケンシャルデータがキャッシュメモリ3に格納される場合に、各データ種ごとのシーケンシャルデータ管理用リストがすでに存在する場合、最も古くアクセスされたシーケンシャルデータ管理用リストを履歴フラグ16で検索して特定し、そのシーケンシャルデータ管理用リストを無効化し、リンクされていたシーケンシャルデータをキャッシュメモリ3から廃棄する。
【0044】
図8の例では、データ種が2種類と仮定しているため、履歴フラグ16、26は、0、1で示されているが、データ種が増えた場合は、それにともない履歴フラグを示す数字も増える。例えば、データ種がn種類あれば、履歴フラグは、0からn―1の整数であらわされ、履歴フラグが0で示されるシーケンシャルデータ管理用リストが、最も古くアクセスされた管理リストであり、履歴フラグがn―1で示されるシーケンシャルデータ管理用リストが、最も新しくアクセスされた管理リストとなる。
【0045】
また、シーケンシャルデータ管理用構造体[1]20については、構成がシーケンシャルデータ管理用構造体[0]10と同じであるため、使用方法の相違点のみ説明する。シーケンシャルデータ管理用構造体識別子21は、シーケンシャルデータ管理用構造体[1]20を識別するためのデータであり、―2が入力されている。データ種が2種類より多い場合は、識別子のデータもそれにあわせて増やされる。例えば、データ種がn種類の場合は、配置されるシーケンシャルデータ管理用構造体もnヶ配置され、n番目の構造体の識別子は、―nと設定される。
【0046】
次のバッファ管理用構造体へのポインタ22は、キャッシュメモリ管理用リスト60a内のシーケンシャルデータ管理用構造体[0]10を参照するポインタである。前のバッファ管理用構造体へのポインタ23は、シーケンシャルデータ管理用構造体[1]20の前に位置するバッファ管理用構造体50を参照するポインタである。
【0047】
しかし、図8に示すキャッシュメモリ管理用リスト60aのように、シーケンシャルデータ管理用構造体[1]20が先頭に配置されるため、無効データが入力される。但し、前のバッファ管理用構造体へのポインタ23に、最後尾のバッファ管理用構造体50(図8に示すバッファ管理用構造体50kに相当)のセグメントアドレスを入力すれば、シーケンシャルデータ管理用構造体[1]20からバッファ管理用構造体50kを参照できる環状リスト構造も構成できる。
【0048】
シーケンシャルデータ管理用リストへのポインタ24は、シーケンシャルデータ管理用リスト[1]40内の先頭のバッファ管理用構造体50(図8に示すバッファ管理用構造体50nに相当)を参照するポインタである。但し、シーケンシャルデータ管理用リスト[1]40が存在しない場合は、―1が入力される。シーケンシャルデータ管理用リストへの登録数25、履歴フラグ26は、シーケンシャルデータ管理用構造体[0]10のシーケンシャルデータ管理用リストへの登録数15、履歴フラグ16と同様な使い方がされる。
【0049】
次に、キャッシュメモリ管理用リスト60a、シーケンシャルデータ管理用リスト[0]30、シーケンシャルデータ管理用リスト[1]40の構成の一例である図8について説明する。
【0050】
キャッシュメモリ管理用リスト60aは、シーケンシャルデータ管理用構造体[0]10と、シーケンシャルデータ管理用構造体[1]20と、バッファ管理用構造体50jと、バッファ管理用構造体50kとで構成される。
【0051】
シーケンシャルデータ管理用リスト[0]30は、バッファ管理用構造体50tと、バッファ管理用構造体50lと、バッファ管理用構造体50mとで構成される。
【0052】
シーケンシャルデータ管理用リスト[1]40は、バッファ管理用構造体50nと、バッファ管理用構造体50oと、バッファ管理用構造体50uとで構成される。
【0053】
キャッシュメモリ管理用リスト60a内において、シーケンシャルデータ管理用構造体[0]10は、次のバッファ管理用構造体へのポインタ12を用いて、シーケンシャルデータ管理用構造体[0]10の次に位置するバッファ管理用構造体50jを参照し、順次、右端のバッファ管理用構造体50kまで参照する。逆に、右端のバッファ管理用構造体50kは、前の管理用構造体へのポインタ54kを用いて、バッファ管理用構造体50jを参照し、順次、シーケンシャルデータ管理用構造体[1]20まで参照する。
【0054】
また、シーケンシャルデータ管理用構造体[0]10、[1]20のシーケンシャルデータ管理用リストへのポインタ14、24によりシーケンシャルデータ管理用リスト[0]30、[1]40の各先頭のバッファ管理用構造体50t,50nを参照する。
【0055】
シーケンシャルデータ管理用リスト[0]30内においては、バッファ管理用構造体50tの次の構造体へのポインタ53tを用いて、次に位置するバッファ管理用構造体50lを参照し、順次、右端のバッファ管理用構造体50mまで参照する。逆に、右端のバッファ管理用構造体50mは、前の管理用構造体へのポインタ54mを用いて、バッファ管理用構造体50lを参照し、順次、バッファ管理用構造体50tまで参照する。
【0056】
シーケンシャルデータ管理用リスト[1]40内においても、バッファ管理用構造体50nの次のバッファ管理用構造体へのポインタ53nを用いて、次に位置するバッファ管理用構造体50oを参照し、順次、右端のバッファ管理用構造体50uまで参照する。逆に、右端のバッファ管理用構造体50uは、前の管理用構造体へのポインタ54uを用いて、バッファ管理用構造体50oを参照し、順次、バッファ管理用構造体50nまで参照する。
【0057】
本実施例では、シーケンシャルデータ管理用リスト[0]30、[1]40内のバッファ管理用構造体50t、50nの前の構造体へのポインタ54t、54nには無効データが入力されている。また、バッファ管理用構造体50m、50uの次の構造体へのポインタ53m、53uにも無効データが入力されている。しかし、それぞれのポインタに、前に位置するバッファ管理用構造体50および次に位置するバッファ管理用構造体50のセグメントアドレスを設定すれば、環状リスト構造が構成でき、バッファ管理用構造体50m、50t、また50n、50uがお互いに参照できる構成となる。
【0058】
また、シーケンシャルデータ管理用構造体[0]10、[1]20のシーケンシャルデータ管理用リストへの登録数15、25によりシーケンシャルデータ管理用リスト[0]30、[1]40内のバッファ管理用構造体50の登録数を参照でき、セグメントアドレスの連続数が確認できる。
【0059】
ここで、マイクロコンピュータ5が、上位処理装置6からデータの読み出し要求を受けた時に、要求されたデータがキャッシュメモリ3上に存在するかを調べる処理についてケース1、2、3にわけて説明する。方法は、キャッシュメモリ管理リスト60aとシーケンシャルデータ管理用リスト[0]30、[1]40内のバッファ管理用構造体50のデータブロックアドレスを参照して調べる。
【0060】
まず、ケース1の場合を説明する。マイクロコンピュータ5は、キャッシュメモリ管理用リスト60a内に位置するシーケンシャルデータ管理用構造体[0]10の次のバッファ管理用構造体へのポインタ12の値が−1であるかどうかを確認する。次のバッファ管理用構造体へのポインタ12の値が−1でない場合は、次のバッファ管理用構造体へのポインタ12から該当するバッファ管理用構造体50jを特定し、データのブロックアドレス52jが上位処理装置6から要求されているものかどうか調べる。
【0061】
上記データブロックアドレスが要求されているものと異なるなら、該当バッファ管理用構造体50jの次の構造体へのポインタ53jを調べ、次のバッファ管理用構造体50kを特定し、データのブロックアドレス52kが上位処理装置から要求されているものかどうか調べる。
【0062】
図8では、バッファ管理用構造体50kで終わっているが、この処理を、データブロックアドレスが要求されているものと同一のアドレスデータを保持しているバッファ管理用構造体50を見つけるまで、あるいは次のバッファ管理用構造体50が無くなるまで続ける。要求されているデータブロックアドレスが見つかった場合は、上位処理装置6へデータを転送する。
【0063】
次に、ケース2の場合を説明する。シーケンシャルデータ管理用構造体[0]10の次のバッファ管理用構造体へのポインタ12の値が−1すなわちキャッシュメモリ管理用リスト60a内にバッファ管理用構造体50が存在しない場合、あるいはケース1で該当するデータブロックアドレスが見つからなかった場合は、シーケンシャルデータ管理用構造体[0]10、[1]20のそれぞれのシーケンシャルデータ管理用リストへのポインタ14、24を調べる。
【0064】
シーケンシャルデータ管理用構造体[0]10、[1]20のそれぞれのシーケンシャルデータ管理用リストへのポインタ14、24がどちらも、−1である場合、シーケンシャルデータ管理用リスト[0]30、[1]40が存在しないので、要求データブロックが存在しないことになる。
【0065】
さらに、ケース3の場合を説明する。シーケンシャルデータ管理用構造体[0]10、[1]20のシーケンシャルデータ管理用リストへのポインタ14、24の内、いずれかのポインタが−1でない場合、すなわちシーケンシャルデータ管理用リスト[0]30、[1]40のいずれかが存在する場合、シーケンシャルデータ管理用リストへのポインタ14、24の値から、シーケンシャルデータ管理用リスト[0]30、[1]40内の先頭のバッファ管理用構造体50t、50nを特定し、データのブロックアドレス52t、52nが上位処理装置6から要求されたものであるか調べる。
【0066】
上記データのブロックアドレス52t、52nが要求されているものと異なるなら、次のバッファ管理用構造体50l、50oを特定する。この作業をデータのブロックアドレスが要求されているものと同一のアドレスデータを保持しているバッファ管理用構造体50を見つけるまで、あるいは次のバッファ管理用構造体50が無くなるまで続ける。要求されているデータブロックアドレスが見つかった場合は、上位処理装置6へ、データを転送する。
【0067】
もし以上の検索の結果、入出力要求のデータがキャッシュメモリ3に存在しなければ、次に、ディスク1からキャッシュメモリ3に要求データを格納し、キャッシュメモリ管理用リスト60a、もしくはシーケンシャルデータ管理用リスト[0]30、[1]40にバッファ管理用構造体50を登録し、要求データとリンクさせる必要がある。それは上位処理装置6から、再度同じデータの入出力要求を受けた場合に、キャッシュメモリ3からデータ転送するためである。
【0068】
登録する場合、まず、キャッシュメモリ管理用リスト60a、シーケンシャルデータ管理用リスト[0]30、[1]40に、入出力要求のデータのセグメントアドレスと連続するデータとリンクしたバッファ管理用構造体50が既に登録されているかどうかを、セグメントアドレスを参照して確認する。アドレスが連続するデータのバッファ管理用構造体50が登録されていれば、空きセグメント管理用リスト100(図9参照)から空きのバッファ管理用構造体50を取得し、連続するデータのバッファ管理用構造体50とつなげて、キャッシュメモリ管理用リスト60a、シーケンシャルデータ管理用リスト[0]30、[1]40に登録する。
【0069】
アドレスが連続するデータのバッファ管理用構造体50とつなげて、要求データのバッファ管理用構造体50を登録するのは、管理リスト上においても連続性をもたせることにより、上位処理装置6からデータの入出力要求があった場合に、検索しやすいように、まとめて管理するためである。
【0070】
ただし、キャッシュメモリ管理用リスト60aに、要求データのセグメントアドレスと連続したデータのバッファ管理用構造体50が登録されていて、要求データのバッファ管理用構造体50を、そこにつなげて登録した場合に、もしアドレスの連続数が所定数以上になれば、シーケンシャルデータとして扱われる。そのため、新たにシーケンシャルデータ管理用リストを設けて、そこへ両データのバッファ管理用構造体50を移動させ、シーケンシャルデータとして登録する。
【0071】
また、新規にシーケンシャルデータ管理用リストを設ける場合は、シーケンシャルデータ管理用構造体[0]10、[1]20の履歴フラグ16、26を参照し、最も古くアクセスされたシーケンシャルデータ管理用リストを無効化することが必要である。それは、データ種の種類数以上にシーケンシャルデータ管理用リストを設け、不用意にシーケンシャルデータをキャッシュメモリ3に格納させないためである。
【0072】
もし、キャッシュメモリ管理用リスト60a、シーケンシャルデータ管理用リスト[0]30、[1]40にセグメントアドレスが連続したデータが登録されていなければ、空きセグメント管理用リスト100から空きのバッファ管理用構造体50を取得し、キャッシュメモリ管理用リスト60aに、バッファ管理用構造体50を登録させ、要求データとリンクさせる。
【0073】
以上の様に、キャッシュメモリ管理用リスト60a及びシーケンシャルデータ管理用リスト[0]30、[1]40内のバッファ管理用構造体50のデータブロックアドレス52を検索し、キャッシュメモリ3上に要求データが存在するか調べる。存在しなければキャッシュメモリ3に格納し、上記管理リストにバッファ管理用構造体50を登録させ、要求データとリンクさせ管理を行う。
【0074】
次に、空きセグメント管理用構造体の構成と空きセグメント管理用リストの構成の一例について図7および図9を用いて説明する。
【0075】
図7に示す空きセグメント管理用構造体90は、キャッシュメモリ3上のデータにリンクされていない空きのバッファ管理用構造体50を管理するものである。空きセグメント管理用リスト100への先頭ポインタ91は、空きセグメント管理用リスト100に登録されている空きセグメント管理用構造体90の次に位置するバッファ管理用構造体50(図9に示すバッファ管理用構造体50pに相当)のセグメントアドレス51(図9に示すセグメントアドレス51pに相当)とリンクする。また、空きセグメント管理用リスト登録数92は、空きセグメント管理用リスト100に登録されているバッファ管理用構造体50(図9に示すバッファ管理用構造体50p、50q、50rに相当)の個数を示す。
【0076】
マイクロコンピュータ5が、キャッシュメモリ3に新しくデータを格納し、古いデータを廃棄する場合に、空きセグメント管理用リスト100に対して行う処理について説明する。まず、新しくデータが格納される場合に、空きのバッファ管理用構造体50が存在するかどうかを、空きセグメント管理用リスト登録数92をチェックして調べる。0以外であれば存在するので、空きセグメント管理用リスト100から空きのバッファ管理用構造体50を取得し、キャッシュメモリ管理用リスト60aあるいはシーケンシャルデータ管理用リスト[0]30、[1]40に登録させ、新しいデータとリンクさせる。0であれば、キャッシュメモリ3上にデータを格納するセグメント領域が存在しないことになり、古いデータを廃棄してから、空きのバッファ管理用構造体50を取得する。
【0077】
次に、古いデータを廃棄する場合は、古いデータとリンクしていたバッファ管理用構造体50のキャッシュメモリ管理用リスト60aあるいはシーケンシャルデータ管理用リスト[0]30、[1]40への登録を無効化する。次に、登録が無効化されたバッファ管理用構造体50を、空きセグメント管理用リスト100に登録させ、そして空きセグメント管理用リスト登録数92等の管理情報の更新を行う。
【0078】
次に、マイクロコンピュータ5の制御手順を、図10のフローチャートに沿って説明する。
【0079】
ステップS1にて上位処理装置6から入出力要求を受け取る。次に、ステップS2にて、ステップS1にて入出力要求のあったデータがキャッシュメモリ3内に存在するかどうかを、キャッシュメモリ管理用リスト60aとシーケンシャルデータ管理用リスト[0]30、[1]40内のバッファ管理用構造体50を検索することにより調べる。要求データのブロックアドレス52と同一のものが検索されたら、ステップS3に進み、上位処理装置6にデータを転送する。
【0080】
要求されたデータブロックがキャッシュメモリ3に存在しないと判断されたならステップS4に進む。キャッシュメモリ3に存在しない場合は、新しくバッファ管理用構造体50を空きセグメント管理用リスト100から取得する必要があり、キャッシュメモリ管理用リスト60aに入出力要求のアドレスと連続するデータが存在するかどうかを、セグメントアドレス51を参照して判定する。もしキャッシュメモリ管理用リスト60aに連続するデータが存在しない場合は、ステップS5に進む。存在した場合は、ステップS7に進む。
【0081】
ステップS5では、シーケンシャルデータ管理用リスト[0]30、[1]40に要求データとアドレスが連続するデータが存在するかどうかセグメントアドレス51を参照して判定する。もし連続するデータが存在しない場合にはステップS14に進む。存在する場合は、ステップS6に進む。
【0082】
ステップS6では、ステップS5にて決定したアドレスが連続するデータが存在するシーケンシャルデータ管理用リストがどちらか(本実施例では0あるいは1)を記憶しておき、ステップS13に進む。
【0083】
ステップS7では、連続するアドレス数が所定数以上であるかどうか判定する。所定数以上連続しているならシーケンシャルデータに対するアクセスと判断し、ステップS8に進む。所定数以上連続していないならステップS14に進む。
【0084】
ステップS8では、シーケンシャルデータ管理用リスト[0]30に登録されたバッファ管理用構造体50があるかどうかを調べる。登録されたバッファ管理用構造体50が無い場合は、ステップS11に進む。登録されたバッファ管理用構造体50がある場合は、ステップS9に進む。
【0085】
ステップS9では、シーケンシャルデータ管理用リスト[1]40に登録されたバッファ管理用構造体50があるかどうかを調べる。登録されたバッファ管理用構造体50が無い場合は、ステップS12に進む。登録されたバッファ管理用構造体50がある場合は、ステップS10に進む。ステップS10では、シーケンシャルデータ管理用リスト[0]30、[1]40の両方に登録されたバッファ管理用構造体50がある場合に移行する。
【0086】
ステップS10では、シーケンシャルデータ管理用リスト[0]30の履歴フラグ16が1かどうか判定する。1でなければ、最も古くアクセスされたシーケンシャルデータ管理用リストであり、廃棄の対象となる。1であればステップS12へ進み、0であればステップS11に進む。
【0087】
ステップS11では、本例でデータを登録するリストをシーケンシャルデータ管理用リスト[0]30であると記憶する。また、シーケンシャルデータ管理用リスト[0]30にバッファ管理用構造体50が登録済みであるなら、その登録されていたバッファ管理用構造体50を無効化し、空きセグメント管理用リスト100に追加し、空きセグメント管理用構造体90のデータを更新する。
【0088】
ステップS12では、本例でデータを登録するリストをシーケンシャルデータ管理用リスト[1]40であると記憶する。また、シーケンシャルデータ管理用リスト[1]40にバッファ管理用構造体50が登録済みであるなら、その登録されていたバッファ管理用構造体50を無効化し、空きセグメント管理用リスト100に追加し、空きセグメント管理用構造体90のデータを更新する。
【0089】
ステップS13では、入出力要求のあったデータのブロックアドレス52を、空きのバッファ管理用構造体50に記憶し、ステップS6、ステップS11、ステップS12で記憶したシーケンシャルデータ管理用リスト[0]30あるいはシーケンシャルデータ管理用リスト[1]40に登録する。ここで、空きのバッファ管理用構造体50は、空きセグメント管理用リスト100から取得する。
【0090】
ステップS14では、空きのバッファ管理用構造体50を取得するため空きセグメント管理用リスト100に登録があるかどうかを調べる。具体的には、空きセグメント管理用リスト登録数92が0以外であるかどうかを調べる。空きのバッファ管理用構造体50があるならステップS15に進む。なければ、ステップS16に進む。
【0091】
ステップS15では、入出力要求のあったデータのブロックアドレス52を、空きのバッファ管理用構造体50に記憶し、キャッシュメモリ管理用リスト60aに登録する。ここで、空きのバッファ管理用構造体50を空きセグメント管理用リスト100から取得する。
【0092】
ステップS16では、空きのバッファ管理用構造体50が存在していないので、キャッシュメモリ管理用リスト60aの右方部分、つまりLRUアルゴリズムでいえば最も古くアクセスされたセグメントをキャッシュメモリ3から廃棄し、登録されていたバッファ管理用構造体50を空きセグメント管理用リスト100に追加する。その後、空きのバッファ管理用構造体50を空きセグメント管理用リスト100から取得し、そのバッファ管理用構造体50に入力要求のあったデータのブロックアドレス52を記憶させ、キャッシュ管理用リスト60aにリンクする。
【0093】
ステップS17では、入力要求のあったデータのブロックアドレス52が登録されたバッファ管理用構造体50のセグメントアドレスが目指すキャッシュメモリ3との間でデータ転送を実行し、次の入出力要求を待つためステップS1に戻る。
【0094】
以上、実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態の内容に限定されるものではない。
【0095】
【発明の効果】
本発明によると、ディスク装置にビデオやオーディオといった多種のシーケンシャルデータが格納されている時にも、シーケンシャルデータ管理用リストを複数持つことにより、1つのキャッシュメモリ管理用リストで管理しているのでアルゴリズムの複雑化を避けることができるとともに、先読みの為にキャッシュメモリに格納されたシーケンシャルデータが、他種のシーケンシャルデータの格納により廃棄されることを防ぎ、ディスクよりもキャッシュメモリからの読み出しを多くさせ、ディスク装置の性能を向上することができる。
【0096】
また本発明によると、シーケンシャルデータがアクセスされた履歴情報である履歴フラグを管理し、新しいシーケンシャルデータがキャッシュメモリに格納される場合、履歴フラグを参照することにより、最も古くアクセスされたシーケンシャルデータ管理用リストを検索し、それを無効化し、管理されていたシーケンシャルデータをキャッシュメモリから廃棄することにより、シーケンシャルデータ単位でLRUアルゴリズムを適用でき、よりキャッシュ効率の高いディスク装置を提供できる。
【0097】
キャッシュ管理リストとは別に、空きセグメント管理リストによりキャッシュメモリ内の空きセグメントの管理をすることにより、空きのバッファ管理用構造体をすぐに取得できるので、書き込み時間少なく、システム性能の高いディスク装置を提供可能である。
【図面の簡単な説明】
【図1】従来のキャッシュメモリを管理するためのバッファ管理用構造体の構成を示す図
【図2】従来のキャッシュメモリ制御方法によるキャッシュメモリを管理するキャッシュメモリ管理用リストの構成を示す図。
【図3】従来のキャッシュメモリ制御方法によるシーケンシャルデータ管理用構造体の構成を示す図。
【図4】従来のキャッシュメモリ制御方法によるキャッシュメモリを管理するためのキャッシュメモリ管理用リストとシーケンシャルデータ管理用リストの構成を示す図。
【図5】本発明のキャッシュメモリ制御方法を適用したディスク装置の構成を示す図。
【図6】本発明のキャッシュメモリ制御方法によるシーケンシャルデータ管理用構造体[0]、[1]の構成を示す図。
【図7】本発明のキャッシュメモリ制御方法による空きセグメント管理用構造体の構成を示す図。
【図8】本発明のキャッシュメモリ制御方法によるキャッシュメモリを管理するためのキャッシュメモリ管理用リストとシーケンシャルデータ管理用リスト[0]、[1]の構成の一例を示す図。
【図9】本発明のキャッシュメモリ制御方法による空きセグメント管理リストの構成を示す図。
【図10】本発明のキャッシュメモリ制御方法による制御アルゴリズムを示すフローチャート図。
【符号の説明】
1 ディスク
2 書き込み/読み出し回路部
3 キャッシュメモリ
4 入出力回路部
5 マイクロコンピュータ(制御手段)
6 上位処理装置
7 ダイレクトメモリアクセス部
8 ディスク装置
10 シーケンシャルデータ管理用構造体[0]
20 シーケンシャルデータ管理用構造体[1]
30 シーケンシャルデータ管理用リスト[0]
40 シーケンシャルデータ管理用リスト[1]
50 バッファ管理用構造体
60 キャッシュメモリ管理用リスト
70 シーケンシャルデータ管理用構造体
80 シーケンシャルデータ管理用リスト
90 空きセグメント管理用構造体
100 空きセグメント管理用リスト

Claims (4)

  1. ディスクの書き込みと読み出しを制御する書き込み/読み出し回路部と、
    ディスクから読み出したデータを一時的に格納するキャッシュメモリと、
    前記キャッシュメモリのアクセス単位データごとの管理情報であるバッファ管理用構造体によって構成されたキャッシュメモリ管理用リストと、所定数以上連続する前記バッファ管理用構造体によって構成されたシーケンシャルデータ管理用リストとに基づいて前記キャッシュメモリを制御する制御手段と、
    上位処理装置との間でデータの転送を行う入出力回路部と、
    前記キャッシュメモリおよび前記書き込み/読み出し回路部と前記入出力回路部との間でデータの転送を行うダイレクトメモリアクセス部とを備えるディスク装置において、
    前記制御手段が、前記キャッシュメモリの所定数以上連続するアクセス単位データの種類に応じて、前記シーケンシャルデータ管理用リストを複数設け、複数の所定数以上連続するアクセス単位データを管理し、前記キャッシュメモリの制御を行うことを特徴とするディスク装置。
  2. 前記制御手段が、前記キャッシュメモリ管理用リストに、前記シーケンシャルデータ管理用リストがアクセスされた情報である更新履歴を保持する履歴フラグを設け、前記履歴フラグを参照することにより、新しく所定数以上連続するアクセス単位データを前記キャッシュメモリに格納する場合に、最も古くアクセスされた前記シーケンシャルデータ管理用リストを検索し、前記シーケンシャルデータ管理用リストを無効化にすることにより、前記所定数以上連続するアクセス単位データをキャッシュメモリから廃棄することを特徴とする請求項1記載のディスク装置。
  3. 前記制御手段が、前記キャッシュメモリのアクセス単位データにリンクしていない前記バッファ管理用構造体で構成された空きセグメント管理用リストを設け、前記キャッシュメモリに新しく前記アクセス単位データが格納される場合に、前記空きセグメント管理用リストから前記バッファ管理用構造体を取得し、前記キャッシュメモリ管理用リストおよび前記シーケンシャルデータ管理用リストへ登録して、新しく格納された前記アクセス単位データとリンクさせて、管理することを特徴とする請求項1または2に記載のディスク装置。
  4. キャッシュメモリのアクセス単位データごとの管理情報であるバッファ管理用構造体によって構成されたキャッシュメモリ管理用リストと、
    所定数以上連続する前記バッファ管理用構造体によって構成されたシーケンシャルデータ管理用リストとに基づいて前記アクセス単位データの管理を行うキャッシュメモリ制御方法において、
    複数の前記シーケンシャルデータ管理用リストにより、複数の前記所定数以上連続するアクセス単位データを管理し、制御を行うことを特徴とするキャッシュメモリの制御方法。
JP2002318777A 2002-10-31 2002-10-31 ディスク装置およびディスク装置のキャッシュメモリ制御方法 Pending JP2004152173A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002318777A JP2004152173A (ja) 2002-10-31 2002-10-31 ディスク装置およびディスク装置のキャッシュメモリ制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002318777A JP2004152173A (ja) 2002-10-31 2002-10-31 ディスク装置およびディスク装置のキャッシュメモリ制御方法

Publications (1)

Publication Number Publication Date
JP2004152173A true JP2004152173A (ja) 2004-05-27

Family

ID=32461831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002318777A Pending JP2004152173A (ja) 2002-10-31 2002-10-31 ディスク装置およびディスク装置のキャッシュメモリ制御方法

Country Status (1)

Country Link
JP (1) JP2004152173A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544422A (ja) * 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション メモリページ管理
JP2016038908A (ja) * 2014-08-11 2016-03-22 ドット ヒル システムズ コーポレイションDot Hill Systems Corporation 逐次ストリームの入出力処理を行うための方法及び機器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008544422A (ja) * 2005-06-27 2008-12-04 エービー イニティオ ソフトウェア コーポレーション メモリページ管理
JP2016038908A (ja) * 2014-08-11 2016-03-22 ドット ヒル システムズ コーポレイションDot Hill Systems Corporation 逐次ストリームの入出力処理を行うための方法及び機器

Similar Documents

Publication Publication Date Title
EP0996891B1 (en) Data processing circuit with cache memory
JP2007011523A (ja) データの先読み方法及び計算機システム
JPH0364893B2 (ja)
JP2906315B2 (ja) キャッシュメモリ中でインストラクションを保管する方法及び回路
JP3460617B2 (ja) ファイル制御装置
CN113312300B (zh) 一种融合数据传输和存储的非易失内存缓存方法
US7555610B2 (en) Cache memory and control method thereof
EP1035477B1 (en) Improved cache memory and system
JPWO2005066796A1 (ja) キャッシュメモリ及びその制御方法
JP4666511B2 (ja) データ処理におけるメモリキャッシング
JP3736305B2 (ja) ディスクキャッシュシステムおよびディスクキャッシュ制御方法
JP2004152173A (ja) ディスク装置およびディスク装置のキャッシュメモリ制御方法
US7805572B2 (en) Cache pollution avoidance
JP2002108705A (ja) キャッシュ汚染減少方法および装置
JPH0773107A (ja) ディスク・システムの制御方法
JP3335919B2 (ja) ディスクキャッシュ制御装置
JPH0675853A (ja) キャッシュメモリ装置
JP3083530B2 (ja) キャッシュメモリのデータ管理方法およびキャッシュ制御装置
JPH0354649A (ja) バッファ記憶制御方式
JPH10269028A (ja) 外部記憶装置とキャッシュメモリの制御方法
JPH06243037A (ja) データ先読み装置
JP2000347941A (ja) キャッシュメモリ装置
KR100670470B1 (ko) 캐쉬버퍼 운용방법
JP3503480B2 (ja) キャッシュメモリ制御方法及び装置
JP2006004387A (ja) 情報処理装置及び情報処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050525

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080122

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080527