(58)【調査した分野】(Int.Cl.,DB名)
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記キャッシュラインに関連付けられたタグアレイ中のタグ情報を修正するステップを備える、請求項1に記載の方法。
前記キャッシュラインに関連付けられた前記情報を修正するステップが、前記第1の物理メモリアドレスに対応するタグアレイ中の第1のタグ情報を前記第2の物理メモリアドレスに対応する第2のタグ情報で上書きするステップを備える、請求項1に記載の方法。
電力を前記第1の物理メモリアドレスに対応するダイナミックランダムアクセス(DRAM)の一部分に低減することを含むパーシャルアレイセルフリフレッシュモードに入るステップをさらに備える、請求項1に記載の方法。
前記ページテーブルに含まれる前記ルックアップ情報を修正するステップであって、前記ルックアップ情報が前記ページテーブルのポインタを含む、ステップをさらに備える、請求項1に記載の方法。
前記メモリの第3の物理メモリアドレスに記憶された第2のデータを前記メモリから前記データキャッシュの第2のキャッシュラインにロードするステップであって、前記第3の物理メモリアドレスが第3の仮想メモリアドレスにマップされる、ステップと、
前記第2のキャッシュラインが前記第3の物理メモリアドレスではなく第4の物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記第2のキャッシュラインに関連付けられた第2の情報を修正するステップと、
前記修正された第2の情報に基づいて、前記第2のデータを前記第4の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
前記メモリのページに対応する第1の複数の追加の物理メモリアドレスの各々に記憶された追加のデータを前記データキャッシュの追加のキャッシュラインにロードするステップと、
各追加のキャッシュラインが前記第1の複数の追加の物理メモリアドレスではなく第2の複数の追加の物理メモリアドレスのそれぞれの物理メモリアドレスに対応することを示すように、前記データキャッシュにおいて、前記追加のキャッシュラインの各々に関連付けられた追加の情報を修正するステップと、
前記修正された追加の情報に基づいて、前記追加のデータを前記第2の複数の追加の物理メモリアドレスに書き込むステップと
をさらに備える、請求項1に記載の方法。
プロセッサをさらに備え、前記データキャッシュが、前記メモリデフラグ動作を実行するための要求を前記プロセッサから受信し、前記メモリデフラグ動作が完了したことを示す応答を前記プロセッサに送るようにさらに構成される、請求項16に記載のシステム。
前記応答が割込み信号を含み、前記プロセッサが前記メモリデフラグ動作に無関係な動作を実行する間に、前記データキャッシュが前記メモリデフラグ動作を実行する、請求項17に記載のシステム。
少なくとも1つの追加のキャッシュをさらに備え、前記データキャッシュがメインメモリと第2のレベルキャッシュとの間で結合されたラストレベルキャッシュであり、前記修正を開始することが前記MMUにコマンドを発行することを含み、前記MMUが前記コマンドに応答して前記修正を開始するように構成される、請求項16に記載のシステム。
前記メモリおよび前記データキャッシュが統合される、モバイルフォン、タブレット、コンピュータ、通信デバイス、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、および固定ロケーションデータユニットから選択された電子デバイスをさらに備える、請求項16に記載のシステム。
【発明を実施するための形態】
【0014】
図1を参照すると、キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの特定の例示的な実施形態が示され、全体が100で表される。システム100は、データキャッシュ102と、物理メモリ130と、メモリ管理ユニット(MMU)160と、プロセッサ(たとえば、中央処理ユニット(CPU)180)とを含む。システム100は、CPU180の処理リソースを継続的に使用することなしに(たとえば、物理メモリ130中のあるロケーションから物理メモリ130中の別のロケーションにデータを移動するためにCPU180が読取り命令および書込み命令を発行することを必要とすることなしに)物理メモリ130のデフラグを可能にし得る。
【0015】
データキャッシュ102は、データアレイ104と、タグアレイ106と、状態アレイ108とを含み得る。データキャッシュ102は、物理メモリ130に対してデフラグ動作を実行するためのデフラグ回路112も含み得る。データアレイ104、タグアレイ106、および状態アレイ108は、複数のキャッシュライン(たとえば、キャッシュライン121〜124)で編成され得る。各キャッシュラインは、データアレイ104の特定の列からのデータを含み得、タグアレイ106中の対応するタグデータと、状態アレイ108中の対応する状態情報とを有し得る。状態情報は、有効性情報および/またはダーティ情報を含み得る。たとえば、各キャッシュラインは、有効性ビットおよび/またはダーティビットを含み得る。代替実施形態では、状態アレイ108は、追加の、より少ない、および/または異なる状態ビットを含み得る。
図1には示されていないが、データキャッシュ102は、
図4〜
図7を参照しながら説明するように、マルチウェイ(たとえば、Nウェイ)セットアソシアティブキャッシュであり得る。
【0016】
物理メモリ130は、データを複数のアドレスに記憶し得る。たとえば、物理メモリ130は、第1のデータを第1のアドレス151に、第2のデータを第2のアドレス152に、第3のデータを第3のアドレス153に、第4のデータを第4のアドレス154に記憶し得る。キャッシュベースのデフラグプロセスの後、本明細書でさらに説明するように、第1のデータは第5のアドレス141に記憶され得、第2のデータは第6のアドレス142に記憶され得、第3のデータは第7のアドレス143に記憶され得、第4のデータは第8のアドレス144に記憶され得る。物理メモリ130はページに編成され得る。たとえば、アドレス151〜154は第1のページ136に対応するものとして示され、アドレス141〜144は第2のページ138に対応するものとして示される。物理メモリ130をデフラグすることは、データを第1のページ136から第2のページ138に移動することを含み得る。たとえば、第1のページ136は割り振られていないメモリページによって囲まれるメモリフラグメントに対応し得、第2のページ138はメモリホール(たとえば、割り振られていないメモリページ)に対応し得る。
【0017】
メモリ管理ユニット(MMU)160は、物理メモリ130ならびに仮想メモリを管理および編成し得る。たとえば、MMU160は、仮想メモリアドレス(VA)を物理メモリ130の物理メモリアドレス(PA)にマップし得る。例示のために、メモリ管理ユニット160はページテーブル162を含み得る。ページテーブル162は、VA164のアレイと、VA164を物理メモリ130のPAにマップするポインタ166のアレイとを含み得る。
図1の例では、第1の仮想メモリアドレス171は第1の物理アドレス151にマップされ、第2の仮想メモリアドレス172は第2の物理アドレス152にマップされ、第3の仮想メモリアドレス173は第3の物理アドレス153にマップされ、第4の仮想メモリアドレス174は第4の物理アドレス154にマップされる。図示されていないが、ページテーブル162は、物理メモリ130の他のアドレスへのおよび/または他のメモリデバイスへのより多くの仮想アドレスマッピングを含み得る。
【0018】
メモリ管理ユニット160は、特定の仮想メモリアドレスを特定の物理メモリアドレスから別の物理メモリアドレスに再マップするために、データキャッシュ102のデフラグ回路112によってアクセス可能であり得る。たとえば、デフラグ回路112は、本明細書でさらに説明するように、デフラグ回路112によって実行されるキャッシュベースのデフラグ動作の間に、第1の仮想メモリアドレス171を第5の物理アドレス141に、第2の仮想メモリアドレス172を第6の物理アドレス142に、第3の仮想メモリアドレス173を第7の物理アドレス143に、第4の仮想メモリアドレス174を第8の物理アドレス144に再マップし得る。仮想メモリアドレス171〜174は、個々の動作の間にまたは単一の再マッピング動作の一部として再マップされ得る。
【0019】
CPU180は、動作を実行するための命令セット182の命令を実行するように構成され得る。命令セット182は、ロードおよび再マップ命令184を含む。ロードおよび再マップ命令184は、CPU180で稼動しているソフトウェア(たとえば、オペレーティングシステムソフトウェア、アプリケーションソフトウェアなど)によって発行され得る。ロードおよび再マップ命令184は、CPU180に、データキャッシュ102においてキャッシュベースのデフラグ動作を開始させ得る。
【0020】
動作時、CPU180は、ロードおよび再マップ命令184を受信し得る。ロードおよび再マップ命令184に応答して、CPU180は、要求186をデータキャッシュ102に発行し得る。要求186は、データキャッシュ102に、1つまたは複数のデフラグ動作を実行させ得る。デフラグ動作は、物理メモリ130中の1つのページからの単一のデータアイテム、1つのページからの複数のデータアイテム、1つのページ全体、または複数のページを再配置することを含み得る。たとえば、ロードおよび再マップ命令184は、第1のPA151に記憶された第1のデータが第5のPA141に再配置されるべきであることを指定し得る。デフラグ回路112は、第1の物理メモリアドレス151からキャッシュライン121に対応するデータアレイ104の列への第1のデータのコピーを開始し得る。代替実施形態では、第1のデータは、デフラグに無関係なキャッシュ動作の一部として(たとえば、要求186に先行する、CPU180からの読取り要求または書込み要求に応答して)、データアレイ104に以前にロードされていることがある。
【0021】
デフラグ回路112は、データキャッシュ102にコピーされた第1のデータに対応する仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始し得る。たとえば、仮想メモリアドレス171から物理メモリアドレス151への実線矢印によって
図1に示すように、仮想メモリアドレス171は最初に物理メモリアドレス151にマップされ得る。物理メモリアドレス151に関連付けられたデータがキャッシュライン121にロードされた後、デフラグ回路112は、仮想メモリアドレス171と第5の物理メモリアドレス141との間の破線矢印によって示すように、仮想メモリアドレス171に関連付けられたポインタが第5の物理メモリアドレス141を指すように、ページテーブル162の修正を開始し得る。特定の実施形態では、デフラグ回路112は、MMU160にコマンドを発行することによって、ページテーブル162の修正を開始する。代替的に、CPU180は、(たとえば、要求186を発行する前または後に)MMU160にページテーブル162を修正させ得る。
【0022】
デフラグ回路112は、データキャッシュライン121に対応するタグアレイ106中のタグ情報を修正し得る。タグ情報は、キャッシュライン121に記憶されたデータがデータキャッシュ102から追い出されるときにデータが書き込まれるべき物理メモリ130の物理アドレスを決定するために、データキャッシュ102によって使用され得る。例示のために、キャッシュライン121に対応するタグ情報は、第1の物理アドレス151の少なくとも一部分を含み得る。デフラグ回路112は、第5の物理アドレス141の少なくとも一部分を有する、キャッシュライン121に対応するタグ情報を上書きし得る。データがデータキャッシュ102から追い出されるとき、データは、第1の物理アドレス151ではなく、第5の物理アドレス141に書き込まれる。データは、最長時間未使用(LRU)、最小使用頻度(LFU)、先入れ先出し(FIFO)などのキャッシュ管理ポリシーに従って追い出され得る。データはまた、オンデマンドで(たとえば、要求186などのCPU180からの要求に応答して)追い出され得る。代替実施形態では、タグ情報は、ルックアップ情報を修正する前に修正され得る。特定の実施形態では、デフラグ回路112はまた、本明細書でさらに説明するように、物理アドレス151へのデータの書込みをトリガするためにキャッシュライン121のダーティビットを設定し得る。
【0023】
デフラグ回路112は、物理メモリ130の複数のメモリフラグメントに対してデフラグ動作を実行し得る。複数のデフラグ動作は、同時にまたは1つずつ実行され得る。
図1の例では、デフラグ回路112はまた、第2のデータを第2の物理アドレス152から第2のキャッシュライン122に、第3のデータを第3の物理アドレス153から第3のキャッシュライン123に、第4のデータを第4の物理アドレス154から第4のキャッシュライン124にコピーする。デフラグ回路112は、タグ情報がPA152〜154ではなくPA142〜144に対応するように、追加のキャッシュライン122〜124の各々に関連付けられたタグ情報を修正し得る。タグ情報が修正された後、キャッシュ102は、第2のデータ、第3のデータ、および第4のデータをそれぞれPA142〜144に書き込み得る。
【0024】
このようにして、データキャッシュ102は、物理メモリ130に対してデフラグ動作を実行するために使用され得る。要求186によって示されたキャッシュベースのデフラグ動作を完了した後、データキャッシュ102は、キャッシュベースのデフラグ動作が完了したことを示す応答188をCPU180に送り得る。特定の実施形態では、デフラグ動作は割込みベースの動作を含み得る。たとえば、応答188は、割込みハンドラに対応する動作をCPU180に実行させる割込みを含み得る。特定の実施形態では、割込みハンドラは、CPU180で稼動しているオペレーティングシステムに関連付けられ得る。
【0025】
特定の実施形態では、デフラグ動作は、キャッシュラインに記憶されたデータの異なる物理メモリアドレスへの書込みをトリガするために、キャッシュラインをダーティとしてマークすることも含み得る。たとえば、キャッシュライン121に対応するダーティビットは、(タグ情報のみが修正され、第1のデータが修正されていなくても)キャッシュライン121に記憶された第1のデータが修正されたことを示すようにアサート(たとえば、設定)され得る。データキャッシュ動作の間に、データキャッシュ102は、ダーティとしてマークされた各キャッシュラインを物理メモリ130の物理アドレスに書き込み得る。たとえば、キャッシュライン121に記憶された第1のデータは、物理メモリ130に書き込まれ得る。キャッシュライン121に対応するタグ情報が第5の物理アドレス141を指すように修正されたので、キャッシュライン121に記憶されたデータは、物理メモリ130の第1の物理アドレス151ではなく第5の物理アドレス141に書き込まれる。したがって、キャッシュライン121をダーティとしてマークすることは、キャッシュライン121中の第1のデータを第2の物理メモリアドレス141に書き込むようにデータキャッシュをトリガし得る。
【0026】
特定の実施形態では、タグ情報は、ソース物理アドレスまたは宛先物理アドレスの一部分のみを含み得る。データをソース物理アドレス(たとえば、データフラグメントに関連付けられたアドレス)から宛先物理アドレス(たとえば、デフラグ宛先)に再配置するために、デフラグ回路112は、タグ情報を修正することに加えて、データキャッシュ102内のデータを再配置し得る。データキャッシュ102内のデータを再配置した後、ソースキャッシュライン(再配置前のデータのロケーション)は(たとえば、状態アレイ108の有効性情報を修正することによって)無効としてマークされ得、宛先キャッシュライン(再配置後のデータのロケーション)が有効としてマークされ得る。キャッシュ内のデータを再配置する特定の実施形態について、
図4〜
図7を参照しながら説明する。
【0027】
特定の実施形態では、説明するキャッシュベースのデフラグプロセスは、物理メモリ130に記憶された個別のファイルまたは構造をデフラグするために使用され得る。たとえば、アプリケーションに関連付けられた特定のファイルによって占有される物理メモリ130の部分は、フラグメント化され(たとえば、不連続であり)得る。説明するキャッシュベースのデフラグプロセスは、ファイルが物理メモリ130の単一の連続した領域を占有するように、ファイルのフラグメントを再配置し得る。
【0028】
CPU180においてではなくデータキャッシュ102においてデフラグ動作を実行することは、デフラグが行われている間にCPU180が他の動作を実行することまたはアイドル/節電モードにとどまることを可能にし、それによって、システム100におけるプロセッサリソースおよび電力を節約する。
【0029】
図2は、(キャッシュベースのデフラグプロセスを実行する前および後の)データを記憶するメモリの一実施形態を示し、全体が200で表される。(たとえば、
図1の130に対応する)メモリ220は最初に、任意の数のメモリロケーションに記憶されたアプリケーションデータを含み得る。たとえば、メモリ220は、複数のアプリケーション(たとえば、アプリケーション1、アプリケーション2、アプリケーション4、およびアプリケーション6)のためのアプリケーションデータを含むものとして示されている。メモリ220は、第1のメモリアドレス205に記憶されたアプリケーション4に対応するアプリケーションデータと、第2のメモリアドレス206に記憶されたアプリケーション6に対応するアプリケーションデータとを含み得る。
【0030】
メモリ220は、アプリケーションデータに関連付けられていないメモリアドレスも含み得る。たとえば、メモリ220は、アプリケーションに関連付けられていないフリー(たとえば、割り振られていない)メモリアドレスに対応する第3のメモリアドレス202および第4のメモリアドレス203を含み得る。フリーメモリアドレスは、メモリホールに関連付けられ得る。本明細書で使用する場合、「ホール」とは、メモリの割り振られた物理アドレスまたは領域によって囲まれ得る、メモリの割り振られていない(たとえば、フリー)物理アドレスまたは領域である。たとえば、第3のメモリアドレス202および第4のメモリアドレス203は、アプリケーション2およびアプリケーション4に関連付けられたデータを記憶するメモリアドレスの間に配置される。メモリホールは、メモリの割振りおよび割振り解除のせいで、メモリを使用している間に生じ得る。たとえば、別のアプリケーション(たとえば、アプリケーション3、アプリケーション5)に関連付けられたデータは、最初にメモリホールに記憶されていることがある。(たとえば、アプリケーションが終了するせいで)メモリが割振り解除されると、ホールが生じ得る。第1のメモリアドレス205および第2のメモリアドレス206はそれぞれ、メモリの割り振られていない領域(たとえば、ホール)によって囲まれた、メモリの割り振られた領域であるので、第1のメモリアドレス205および第2のメモリアドレス206はメモリ「フラグメント」と見なされる。
【0031】
キャッシュベースのデフラグ動作222は、メモリ220に対して実行され得る。たとえば、メモリ220は、
図1のデータキャッシュ102などのデータキャッシュに結合され得る。キャッシュベースのデフラグ動作222が実行された後、メモリ220は、割り振られていないメモリに関連付けられたメモリのブロックを含み得る。メモリ220がダイナミックランダムアクセスメモリ(DRAM)であるとき、パーシャルアレイセルフリフレッシュ(PASR)は割り振られていないメモリに適用され得る。たとえば、DRAMチップ全体が割り振られていないとき、PASRはDRAMチップの電源を切断し得る。DRAMチップが電源切断されると、DRAMチップはリフレッシュカレントを使用して周期的にリフレッシュされず、このことは、電子デバイスにおける電力を節約し得る。
【0032】
さらに、メモリ220に対してキャッシュベースのデフラグを使用することによって、プロセッサリソースが保持され得る。たとえば、プロセッサは、キャッシュがデフラグを実行する間に、デフラグに無関係な動作を実行し得る。さらに、キャッシュベースのデフラグ動作はキャッシュ動作に統合され、それによって、データをメモリフラグメントからメモリホールにコピーするプロセッサ機能を使用するデフラグ動作と比較して電力消費を低減し得る。
【0033】
図3Aを参照すると、キャッシュベースのデフラグ動作を実行するためのシステムの特定の実施形態が示され、全体が300で表される。システム300は、プロセッサ302(たとえば、CPU)と、第1のレベル(たとえば、L1)キャッシュ304と、第2のレベル(たとえば、L2)キャッシュ306と、第3のレベル(たとえば、L3)キャッシュ308と、メインメモリ310とを含む。第3のレベルキャッシュ308は、ラストレベルキャッシュ(連続するキャッシュレベルにおいてメインメモリ310に最も近いキャッシュ)と呼ばれることがある。
図3Aのシステム300には3つのレベルのキャッシュが示されているが、システム300は、任意の順序で配列された任意の数のキャッシュを含み得る。
図3Aに示すように、デフラグ回路312は、メモリデフラグがキャッシュメモリ管理の間に行われることを可能にするためにラストレベルキャッシュに統合され、それによって、メモリデフラグを実行するための追加のハードウェアリソースへの依存を低減し得る。
【0034】
第3のレベルキャッシュ308は、
図1のデータキャッシュ102に対応し得る。CPU302は
図1のCPU180に対応し得、メインメモリ310は
図1のメインメモリ160または
図2のメモリ220に対応し得る。したがって、システム300は、
図1を参照しながら説明したようにキャッシュベースのメモリデフラグ動作を実行し得る。たとえば、CPU302は、メインメモリ310に対してデフラグ動作を実行するための要求320を第3のレベルキャッシュ308に送り得る。要求320に応答して、デフラグ回路312は、メモリ310の第1の物理メモリアドレスに記憶されたデータを第3のレベルキャッシュ308のキャッシュラインにロードし得る。デフラグ回路312は、キャッシュラインがメインメモリ310の第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報(たとえば、タグ情報および/または状態情報)を修正し得る。次いで、第3のレベルキャッシュ308は、キャッシュ動作の一部として、データをメインメモリ310の第2の物理メモリアドレスに書き込み得る。
【0035】
図3Bは、本明細書で説明する特定の実施形態で使用され得るアドレス指定方式を示す。図示のアドレス指定方式では、物理アドレス350は物理メモリ(たとえば、
図3Aのメインメモリ310)内のロケーションを表し得る。ソースアドレス352は物理メモリの第1のページ(たとえば、メモリフラグメント)に対応し得、宛先アドレス354は物理メモリの第2のページ(たとえば、デフラグ宛先またはメモリホール)に対応し得る。データをソースアドレス352から宛先アドレス354に移動することは、データロケーションのページオフセットを変更することなしに、データを物理メモリの異なるページに移動する(たとえば、ページ番号を変更する)ことを含み得る。
【0036】
物理アドレス350は、図示のように、タグ、インデックス、およびラインオフセットに分割され得る。タグの値は、キャッシュライン(たとえば、
図1のキャッシュライン121〜124のうちの1つ)における第3のレベルキャッシュ308内に記憶され得、対応するデータを物理メモリアドレス350に関連付けるために第3のレベルキャッシュ308によって使用され得る。第3のレベルキャッシュ308はセットアソシアティブキャッシュであってもよく、インデックスはデータが記憶される第3のレベルキャッシュ308内のセットを示し得る。ラインオフセットは、データが記憶されるセット内のラインを示し得る。物理アドレス350は、図示のように、ページ番号およびページオフセットとしても表され得る。
図3Bでは、物理アドレス350は32ビットの物理アドレスである。メインメモリ310のページは、(12ビットのページオフセットによって表される)4キロバイト(KB)の物理ページを含み得る。ページ番号は、残りの20ビットの物理アドレスによって表され得る。
【0037】
特定の実施形態では、第3のレベルキャッシュ308は8ウェイで512KBのラストレベルキャッシュである。第3のレベルキャッシュ308の各キャッシュラインは、(6ビットのラインオフセットによって表される)64バイトを含み得る。第3のレベルキャッシュ308は、(10ビットのインデックスによって表される)1024個のセットを含み得る。残りの16ビットの物理アドレス350は、タグを含み得る。
図3Bの実施形態では、タグはページ番号(20ビット)よりも少ないビット(16ビット)を含む。したがって、ページ番号は第3のレベルキャッシュ308のインデックスと(たとえば、4ビットだけ)重複することがある。ページ番号の重複する部分は、第3のレベルキャッシュ302内のどのセットにデータが記憶されるかに影響を及ぼし得る。各ページは、インデックスの重複する部分(たとえば、インデックスの最上位ビット)に応じてセグメントに分割され得る。
図3Bでは、各ページは16個のページセグメントに分割される。
【0038】
メモリフラグメントをメインメモリ310の第1のページからメインメモリ310の第2のページに移動するために、デフラグ回路312は、
図1を参照しながら説明したように物理アドレス350のタグを変更し得る。しかしながら、ページ番号はタグよりも多くのビットを含み得るので、物理アドレス350のタグを変更することは、物理アドレス350のページ番号の一部分のみを変更することであり得る。ページ番号全体を変更するために、デフラグ回路はインデックスの一部分も変更し得る。インデックスの一部分を変更するために、デフラグ回路はデータを第1のページセグメントに対応する第1のキャッシュラインから第2のページセグメントに対応する第2のキャッシュラインに移動し得る。データを第1のページセグメントから第2のページセグメントに移動するかどうかを決定することについて、
図4〜
図7を参照しながらさらに説明する。
【0039】
ソースアドレス352は、タグ情報A1およびセグメント情報A2に分割され得る。同様に、宛先アドレス354は、タグ情報B1およびセグメント情報B2に分割され得る。ソースアドレス352および宛先アドレス354が異なるセグメントにあるとき、データは(ページの第1のセグメントに対応する)あるキャッシュセットから(ページの第2のセグメントに対応する)別のキャッシュセットに移動され得る。
【0040】
図4〜
図7は、
図3Aおよび
図3Bのシステム300のコンテキスト内でのキャッシュベースのデフラグ動作の特定の実施形態を示す。実施形態は、ソースアドレスおよび宛先アドレスが同じページセグメントに対応し、データがすでにキャッシュ内に配置されている(たとえば、キャッシュヒット)第1の実施形態(
図4)と、ソースアドレスおよび宛先アドレスが同じページセグメントに対応し、データがキャッシュ内に配置されていない(たとえば、キャッシュミス)第2の実施形態(
図5)と、ソースアドレスおよび宛先アドレスが異なるページセグメントに対応し、データがすでにキャッシュ内に配置されている第3の実施形態(
図6)と、ソースアドレスおよび宛先アドレスが異なるページセグメントに対応し、データがキャッシュ内に配置されていない第4の実施形態(
図7)とを含む。
【0041】
図4を参照すると、デフラグ回路(たとえば、
図3Aのデフラグ回路312)によって実行されるキャッシュベースのデフラグ動作の第1の実施形態が示され、全体が400で表される。
図4は、タグアレイ402(たとえば、8ウェイセットアソシアティブキャッシュのタグアレイ)とデータアレイ410(たとえば、8ウェイセットアソシアティブキャッシュのデータアレイ)とを含む、(たとえば、
図1のデータキャッシュ102および/または
図3Aの第3のレベルデータキャッシュ308に対応する)データキャッシュを示す。
図4はまた、複数のアドレスに関連付けられた(たとえば、
図1の物理メモリ130および/または
図3Aの物理メモリ310に対応する)メインメモリ420を示す。たとえば、メインメモリ420は、(たとえば、
図3Bのソースアドレス352に対応する)ソースアドレス424および(たとえば、
図3Bの宛先アドレス354に対応する)宛先アドレス422にデータを記憶するように構成され得る。
【0042】
タグアレイ402は
図1のタグアレイ106に対応し得、データアレイ410は
図1のデータアレイ104に対応し得る。たとえば、タグアレイ402は、(たとえば、データロケーション412における)キャッシュ内に記憶されたデータに対応するタグ情報(たとえば、タグ情報404)を含み得る。タグアレイ402およびデータアレイ410は、16個のページセグメントに分割され得る。ページセグメントは、セット(たとえば、10ビットのインデックスに対応する1024個のセット)にさらに分割され得る。
【0043】
図4の実施形態では、ソースアドレス424および宛先アドレス422は、同じページセグメント414に対応する(たとえば、
図3Bのソースアドレス352のA2は、
図3Bの宛先アドレス354のB2に等しい)。さらに、ソースアドレス424に対応するデータは、(データロケーション412における塗りつぶされたブロックによって示すように)データアレイ410のデータロケーション412に(たとえば、キャッシュ動作の間に)ロードされている。デフラグ動作を実行するための要求が受信されると、ソースアドレス424に記憶されたデータがすでにキャッシュにロードされているので、キャッシュヒットが生じ得る。
【0044】
デフラグ回路(たとえば、
図3Aのデフラグ回路312)は、データに関連付けられたタグ情報404を修正し得る。たとえば、デフラグ回路は、ソースアドレスに対応するタグ(たとえば、
図3Bのソースアドレス352のA1)を宛先アドレスに対応するタグ(たとえば、
図3Bの宛先アドレス354のB1)に置き換え得る。デフラグ回路はまた、メインメモリ420へのデータのライトバックをトリガするために、(たとえば、
図1を参照しながら説明したように、状態アレイ108中のダーティビットを修正することによって)データをダーティとしてマークし得る。データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【0045】
図5を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第2の実施形態が示され、全体が500で表される。
図5は、ページセグメントは同じである(A2=B2)が、キャッシュミスが生じるときの動作に対応する。したがって、キャッシュベースのデフラグ動作が開始されたとき、ソースアドレス424に対応するデータは(キャッシュロケーション412における白抜きのブロックによって示すように)まだデータアレイ410のキャッシュロケーション412にロードされていない。デフラグ動作を実行するための要求が受信されると、キャッシュミスが生じ得る。
【0046】
(
図4を参照しながら説明した)デフラグ回路は、ソースアドレス424に記憶されたデータをキャッシュロケーション412にロードし得る。しかしながら、ソースアドレス424に関連付けられたタグA1をタグアレイ402に挿入する代わりに、デフラグ回路は宛先アドレス422に関連付けられたタグB1をタグ404に挿入し得る。デフラグ回路はまた、データをダーティとしてマークし得る。データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【0047】
図6を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第3の実施形態が示され、全体が600で表される。
図6は、ページセグメントが異なり(A2はB2と等しくない)、キャッシュヒットが生じるときの動作に対応する。ソースアドレス424は第1のページセグメント418に対応し得、宛先アドレス422は第2のページセグメント618に対応し得る。ソースアドレス424に対応するデータは、(キャッシュロケーション412の塗りつぶされたブロックによって示すように)データアレイ410のキャッシュロケーション412にロードされている。デフラグ動作を実行するための要求が受信されると、キャッシュヒットが生じる。
【0048】
(
図4および
図5を参照しながら説明した)デフラグ回路は、キャッシュロケーション412に記憶されたデータを第2のページセグメント618に関連付けられた第2のキャッシュロケーション616に移動し得る。デフラグ回路はまた、キャッシュロケーション616に対応するタグ情報606として、宛先アドレス422に対応するタグB1をタグアレイ402に挿入し得る。デフラグ回路は、(たとえば、有効性ビットを変更することによって)キャッシュロケーション412に記憶されたデータを無効化し得る。
【0049】
デフラグ回路はまた、メインメモリ420へのデータのライトバックをトリガするために、データをダーティとしてマークし得る。(たとえば、キャッシュ動作の間に)データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。
【0050】
図7を参照すると、デフラグ回路によって実行されるキャッシュベースのデフラグ動作の第4の実施形態が示され、全体が700で表される。
図7は、ページセグメントが異なり(A2はB2と等しくない)、キャッシュミスが生じるときの動作に対応する。
【0051】
(
図4、
図5、および
図6を参照しながら説明した)デフラグ回路は、ソースアドレス424に記憶されたデータを、第1のセグメント414ではなく、第2のセグメント718にロードし得る。ソースアドレス424に関連付けられたタグA1を(たとえば、タグ情報404として)タグアレイ402に挿入する代わりに、デフラグ回路は、宛先アドレス422に関連付けられたタグB1を(たとえば、タグ情報706として)タグアレイ402に挿入し得る。デフラグ回路はまた、データをダーティとしてマークし得る。(たとえば、キャッシュ動作の間に)データがキャッシュから追い出されるとき、データは、ソースアドレス424ではなく、宛先アドレス422に書き込まれる。このようにして、
図4〜
図7は、キャッシュヒットまたはキャッシュミスが生じるかどうかに基づいて、また、ソースアドレスおよび宛先アドレスが同じページセグメントに対応するかまたは異なるページセグメントに対応するかに基づいて、キャッシュベースのデフラグ動作を実行する様々な実施形態を示している。
【0052】
図8Aを参照すると、キャッシュベースのデフラグプロセスを実行するように動作可能なシステムの別の特定の実施形態が示され、全体が800で表される。システム800は、プロセッサ802(たとえば、CPU)と、第1のレベル(たとえば、L1)キャッシュ804と、第2のレベル(たとえば、L2)キャッシュ806と、第3のレベル(たとえば、L3)キャッシュ808と、メインメモリ810とを含む。
図8Aのシステム800には3つのレベルのキャッシュが示されているが、システム800は、任意の順序で配列された任意の数のキャッシュを含み得る。
図3Aのシステム300とは対照的に、システム800は、他のキャッシュ804〜808のいずれとも異なる専用デフラグキャッシュ812を含む。デフラグキャッシュ812はまた、メインメモリ810とCPU802との間のキャッシュパスと異なり(たとえば、その外部にあり)得る。システム800内の他のキャッシュとは異なることにより、デフラグキャッシュ812が第3のレベルキャッシュ808よりも小さくなることが可能になり得る。さらに、デフラグキャッシュ812は、デフラグキャッシュ812がデフラグ動作を実行していないとき、CPU802に対する「支援」キャッシュとして使用され得る。デフラグキャッシュ812は、デフラグ回路814を含み得る。
【0053】
動作時、CPU802は、メインメモリ810に対してデフラグ動作を実行するための要求をデフラグキャッシュ812に送り得る。要求に応答して、デフラグ回路814は、メモリ810の第1の物理メモリアドレスに記憶されたデータをデフラグキャッシュ808のキャッシュラインにロードし得る。デフラグ回路814は、キャッシュラインがメインメモリ810の第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正し得る。デフラグキャッシュ814は、(たとえば、データが追い出されるときに)データをメインメモリの第2の物理メモリアドレスに書き込み得る。
【0054】
図8Bは、
図8Aのシステム800とともに使用され得るアドレス指定方式の図である。図示したアドレス指定方式では、物理アドレス850は再配置されるべきデータのアドレスを表す。ソースアドレス852は物理メモリの第1のページ(たとえば、メモリフラグメント)に対応し、宛先アドレス854は物理メモリの第2のページ(たとえば、デフラグ宛先またはメモリホール)に対応する。物理アドレス850は、図示のように、タグ、インデックス、およびラインオフセットに分割され得る。物理アドレス850は、ページ番号およびページオフセットとしても表され得る。
図8Bでは、物理アドレス850は32ビットの物理アドレスである。メインメモリ810のページは、(12ビットのページオフセットによって表される)4キロバイト(KB)の物理ページを含み得る。デフラグキャッシュ812は、8ウェイで32KBのキャッシュを含み得る。デフラグキャッシュ812の各キャッシュラインは、(6ビットのラインオフセットによって表される)64バイトであり得る。
【0055】
図8Aの実施形態では、タグは、ページ番号と同数のビットを含む。したがって、
図8Aのデフラグキャッシュ812は、物理アドレス850のタグを変更することによって、物理アドレス850のページ番号全体を変更し得る。デフラグ回路814は、ページセグメントの不一致に基づいてデータをデフラグキャッシュ812内の第1のキャッシュラインから第2のキャッシュラインに移動することなしにデフラグ動作を実行し得る。その結果、
図8Aの実施形態は
図3Aの実施形態よりも速くなり得る。しかしながら、
図8Aの実施形態は、専用デフラグキャッシュ812の導入により、
図3Aの実施形態よりも多くのチップ領域を占めることがある。
【0056】
図9を参照すると、キャッシュベースのデフラグを実行する方法900の特定の例示的な実施形態は、902において、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードすることを含み、第1の物理メモリアドレスは第1の仮想メモリアドレスにマップされる。たとえば、
図1のデフラグ回路112は、第1の物理アドレス151に対応する第1のデータをキャッシュライン121にロードし得る。第1の物理アドレス151は、第1の仮想アドレス171にマップされ得る。データキャッシュは、ラストレベルキャッシュまたは専用デフラグキャッシュであり得る。
【0057】
方法900は、904において、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始することをさらに含む。たとえば、
図1のページテーブル162は、仮想アドレス171が第1の物理アドレス151ではなく第5の物理アドレス141にマップされるように修正され得る。
【0058】
方法900は、906において、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、データキャッシュにおいて、キャッシュラインに関連付けられた情報を修正することも含む。たとえば、
図1のキャッシュライン121に対応するタグアレイ106の第1のタグは、第1の物理アドレス151ではなく第5の物理アドレス141に対応するように修正され得る。
【0059】
方法900は、908において、修正された情報に基づいて、データを第2の物理メモリアドレスに書き込むことを含む。たとえば、
図1のデータキャッシュ102は、データがデータキャッシュ102から追い出されるとき、第1のタグ情報に基づいて、データを第5の物理メモリアドレス141に書き込み得る。
【0060】
方法900は、追加の物理メモリアドレスに記憶された追加のデータについて反復および/または同時に実行され得る。たとえば、第1の複数の追加の物理メモリアドレスの各々に記憶された追加のデータは、追加のキャッシュラインにロードされ得る。追加のキャッシュラインの各々のタグ情報は、各追加のキャッシュラインが第2の複数の追加の物理アドレスのそれぞれの物理メモリアドレスに対応することを示すように修正され得る。キャッシュから追い出されるとき、追加のデータは、修正されたタグ情報に基づいて、第2の複数の追加の物理アドレスに書き込まれ得る。
【0061】
図9の方法は、特定用途向け集積回路(ASIC)、中央処理ユニット(CPU)などの処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。一例として、
図9の方法は、
図11に関して説明するように、命令を実行するプロセッサによって実行され得る。
【0062】
図10を参照すると、キャッシュベースのデフラグを実行する方法1000の特定の例示的な実施形態が示されている。例示的な実施形態では、方法1000は、
図4〜
図7を参照しながら説明した動作に対応し得る。方法1000は、1002において、データキャッシュにおいて、デフラグ動作を実行するための要求をプロセッサから受信することを含む。デフラグ動作は、データをソースアドレスから宛先アドレスに再配置することを含む。
【0063】
方法1000は、1004において、データが第1のページのページセグメントから第2のページの同じページセグメントに再配置されるべきかどうかを決定することをさらに含み得る。データが第1のページのページセグメントから第2のページの同じページセグメントに再配置されるべきである場合、方法1000は、1006において、ソースアドレスがキャッシュヒットを生じたかどうかを決定することを含み得る。たとえば、
図4では、ソースアドレス424に対応するデータはデータアレイ410にロードされており、キャッシュヒットが生じている。別の例として、
図5では、ソースアドレス424に対応するデータはデータアレイ410にロードされておらず、キャッシュミスが生じている。
【0064】
キャッシュヒットが生じるとき、方法1000は、1008において、ソースアドレスではなく宛先アドレスを示すようにデータのためのタグ情報を修正することを含み得る。たとえば、
図4を参照すると、タグ情報404は、ソースアドレス424ではなく宛先アドレス422を示すように修正され得る。
【0065】
キャッシュミスが生じるとき、方法1000は、1010において、データをソースアドレスからデータキャッシュにロードし、ソースアドレスではなく宛先アドレスのためのタグ情報を挿入することを含み得る。たとえば、
図5を参照すると、データはソースアドレス424からキャッシュロケーション412にロードされ得、挿入されたタグ情報404はソースアドレス424ではなく宛先アドレス422を示し得る。
【0066】
データが第1のページのページセグメントから第2のページの異なるページセグメントに再配置されるべきである場合、方法1000は、1012において、データが異なるページセグメントに再配置されるべきである場合、ソースアドレスがキャッシュヒットを生じたかどうかを決定することも含み得る。たとえば、
図6では、ソースアドレス424に対応するデータは以前にデータアレイ410にロードされており、キャッシュヒットが生じている。別の例として、
図7では、ソースアドレス424に対応するデータは以前にデータアレイ410にロードされておらず、キャッシュミスが生じている。
【0067】
キャッシュヒットが生じるとき、方法1000は、1014において、データをソースページセグメントに対応する第1のキャッシュロケーションから宛先ページセグメントに対応する第2のキャッシュロケーションに移動することを含み得る。加えて、宛先アドレスのためのタグ情報は第2のキャッシュロケーションに挿入され得、第1のキャッシュロケーションは無効化され得る。たとえば、
図6を参照すると、データがキャッシュロケーション412からキャッシュロケーション616に移動され得、宛先アドレス422のためのタグ情報606が挿入され得、キャッシュロケーション412が無効としてマークされ得る。キャッシュミスが生じるとき、方法1000は、1016において、宛先ページセグメントのためのキャッシュロケーションにおいて、データをデータキャッシュにロードし、宛先アドレスのためのタグ情報を挿入することを含み得る。たとえば、
図7を参照すると、データはソースアドレス424からキャッシュロケーション716にロードされ得、挿入されたタグ情報706は宛先アドレス422を示し得る。
【0068】
方法1000は、1018において、宛先アドレスへのデータの書込みをトリガすることも含み得る。たとえば、データは、
図4〜
図7を参照しながら説明したように、ダーティビットをアサートすることによってダーティとしてマークされ得る。方法1000は、1020において、デフラグ動作が完了したことを示す応答をプロセッサに送ることも含み得る。
【0069】
代替実施形態では、
図10の方法が修正され得ることに留意されたい。たとえば、
図3Bのアドレス指定方式ではなく
図8Bのアドレス指定方式が使用されるとき、タグおよびページ番号の情報はいずれも同数のビットを含み得、データは、ページセグメントの不一致により、データキャッシュ内で再配置される必要がないことがある。そのような実施形態では、デフラグ動作を実行することは、キャッシュミスをチェックすることを含み得るが、ページセグメントの不一致をチェックすることを含まないことがある。
【0070】
図10の方法は、特定用途向け集積回路(ASIC)、中央処理ユニット(CPU)などの処理ユニット、デジタル信号プロセッサ(DSP)、コントローラ、フィールドプログラマブルゲートアレイ(FPGA)デバイス、別のハードウェアデバイス、ファームウェアデバイス、またはそれらの任意の組合せによって実装され得る。一例として、
図10の方法は、
図11に関して説明するように、命令を実行するプロセッサによって実行され得る。
【0071】
図11を参照すると、ワイヤレス通信デバイスの特定の例示的な実施形態のブロック図が示され、全体が1100で表される。デバイス1100は、メモリ1132に結合された、デジタル信号プロセッサ(DSP)1110(またはCPUまたは別のタイプのプロセッサ)などのプロセッサを含む。デバイス1100は、デフラグ動作を実行するように動作可能なデフラグキャッシュ1164も含み得る。例示的な実施形態では、デフラグキャッシュ1164は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812に対応し得、
図9、
図10、
図11、またはそれらの任意の組合せの方法に従って動作し得る。
【0072】
デフラグキャッシュ1164は、メモリ1132に対してデフラグ動作を実行するために、メモリ1132に結合され得る。メモリ1132は、動作を実行するためのプロセッサ1110によって実行可能な(たとえば、
図1のロードおよび再マップ命令184を含む)データおよびコンピュータ実行可能命令1156を記憶する非一時的コンピュータ可読媒体であり得る。動作は、メモリ1132の第1の物理メモリアドレスに記憶されたデータをメモリ1132からデフラグキャッシュ1164のキャッシュラインにロードすることを含み得る。第1の物理メモリアドレスは、第1の仮想メモリアドレスにマップされ得る。動作は、第1の仮想メモリアドレスがメモリ1132の第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報(たとえば、
図1のページテーブル162)の修正を開始することをさらに含み得る。動作は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報(たとえば、
図1のタグアレイ106)を修正することも含み得る。動作は、(たとえば、データがデータキャッシュから追い出されるとき)修正された情報に基づいて、データを第2の物理メモリアドレスに書き込むことを含み得る。
【0073】
図11は、デジタル信号プロセッサ1110およびディスプレイ1128に結合されたディスプレイコントローラ1126も示す。コーダ/デコーダ(コーデック)1134も、デジタル信号プロセッサ1110に結合され得る。スピーカ1136およびマイクロフォン1138は、コーデック1134に結合され得る。
【0074】
図11は、ワイヤレスコントローラ1140がデジタル信号プロセッサ1110およびアンテナ1142に結合され得ることも示す。特定の実施形態では、DSP1110、ディスプレイコントローラ1126、メモリ1132、コーデック1134、およびワイヤレスコントローラ1140は、システムインパッケージまたはシステムオンチップデバイス1122に含まれる。特定の実施形態では、入力デバイス1130および電源1144は、システムオンチップデバイス1122に結合される。さらに、特定の実施形態では、
図11に示すように、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、アンテナ1142、および電源1144は、システムオンチップデバイス1122の外部にある。しかしながら、ディスプレイ1128、入力デバイス1130、スピーカ1136、マイクロフォン1138、アンテナ1142、および電源1144の各々は、インターフェースまたはコントローラなどのシステムオンチップデバイス1122の構成要素に結合され得る。
【0075】
説明する実施形態とともに、
図1の物理メモリ130、
図3Aのメインメモリ310、
図8Aのメインメモリ810、複数の物理メモリアドレスを使用してデータを記憶するように構成された1つまたは複数の他のデバイスまたは回路、あるいはそれらの任意の組合せなど、複数の物理メモリアドレスを使用してデータを記憶するための手段を含み得るシステムが開示される。システムは、データをキャッシュするための手段も含み得、データをキャッシュするための手段は、メモリの第1の物理メモリアドレスに記憶されたデータをメモリからデータキャッシュのキャッシュラインにロードするように構成されたデフラグ回路を含み、第1の物理メモリアドレスは第1の仮想メモリアドレスにマップされる。デフラグ回路はまた、第1の仮想メモリアドレスがメモリの第2の物理メモリアドレスに対応するように、第1の仮想メモリアドレスに関連付けられたルックアップ情報の修正を開始するように構成され得る。デフラグ回路は、キャッシュラインが第1の物理メモリアドレスではなく第2の物理メモリアドレスに対応することを示すように、キャッシュラインに関連付けられた情報を修正するようにさらに構成され得る。たとえば、デフラグ回路は、
図1のデフラグ回路112、
図3のデフラグ回路312、
図8のデフラグ回路814、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含み得る。
【0076】
上記の開示したデバイスおよび機能は、コンピュータ可読媒体上に記憶されたコンピュータファイル(たとえば、RTL、GDSII、GERBERなど)に設計および構成され得る。いくつかまたはすべてのそのようなファイルは、そのようなファイルに基づいてデバイスを製作する製作ハンドラに提供され得る。得られる製品は半導体ウエハを含み、次いで半導体ウエハが半導体ダイに切断され、半導体チップ内にパッケージングされる。次いで、チップは、上記で説明したデバイスにおいて利用される。
図12は、電子デバイス製造プロセス1200の特定の例示的な実施形態を示す。
【0077】
物理デバイス情報1202は、研究コンピュータ1206においてなど、製造プロセス1200において受信される。物理デバイス情報1202は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの半導体デバイスの少なくとも1つの物理的特性を表す設計情報を含み得る。たとえば、物理デバイス情報1202は、研究コンピュータ1206に結合されたユーザインターフェース1204を介して入力される物理パラメータ、材料特性、および構造情報を含み得る。研究コンピュータ1206は、メモリ1210などのコンピュータ可読媒体に結合された、1つまたは複数の処理コアなどのプロセッサ1208を含む。メモリ1210は、プロセッサ1208に、物理デバイス情報1202をファイルフォーマットに適合するように変換させ、ライブラリファイル1212を生成させるように実行可能なコンピュータ可読命令を記憶し得る。
【0078】
特定の実施形態では、ライブラリファイル1212は、変換された設計情報を含む少なくとも1つのデータファイルを含む。たとえば、ライブラリファイル1212は、電子設計自動化(EDA)ツール1220とともに使用するために提供される、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスを含む半導体デバイスのライブラリを含み得る。
【0079】
ライブラリファイル1212は、メモリ1218に結合された、1つまたは複数の処理コアなどのプロセッサ1216を含む設計コンピュータ1214において、EDAツール1220とともに使用され得る。EDAツール1220は、設計コンピュータ1214のユーザが、ライブラリファイル1212の、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含む回路を設計することを可能にするために、メモリ1218においてプロセッサ実行可能命令として記憶され得る。たとえば、設計コンピュータ1214のユーザは、設計コンピュータ1214に結合されたユーザインターフェース1224を介して回路設計情報1222を入力し得る。回路設計情報1222は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの半導体デバイスの少なくとも1つの物理的特性を表す設計情報を含み得る。例示のために、回路設計特性は、特定の回路の識別および回路設計内の他の要素に対する関係、位置情報、フィーチャサイズ情報、相互接続情報、または半導体デバイスの物理的特性を表す他の情報を含み得る。
【0080】
設計コンピュータ1214は、回路設計情報1222を含む設計情報を、ファイルフォーマットに適合するように変換するように構成され得る。例示のために、ファイルフォーマットは、平面幾何学的形状、テキストラベル、および回路レイアウトについての他の情報をグラフィックデータシステム(GDSII)ファイルフォーマットなどの階層フォーマットで表すデータベースバイナリファイルフォーマットを含み得る。設計コンピュータ1214は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せについて記述する情報を、他の回路または情報に加えて含む、GDSIIファイル1226などの変換された設計情報を含むデータファイルを生成するように構成され得る。例示のために、データファイルは、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含み、内部に追加の電子回路および構成要素も含むシステムオンチップ(SOC)に対応する情報を含み得る。
【0081】
GDSIIファイル1226は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを、GDSIIファイル1226中の変換された情報に従って製造するために、製作プロセス1228において受信され得る。たとえば、デバイス製造プロセスは、典型的なマスク1232として示された、フォトリソグラフィプロセスとともに使用されるマスクなどの1つまたは複数のマスクを作成するために、マスク製造業者1230にGDSIIファイル1226を提供することを含み得る。マスク1232は、試験され、典型的なダイ1236などのダイに分離され得る1つまたは複数のウエハ1234を生成するために、製作プロセス中に使用され得る。ダイ1236は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスを含む回路を含む。
【0082】
ダイ1236はパッケージングプロセス1238に提供され得、ここで、ダイ1236は典型的なパッケージ1240に組み込まれる。たとえば、パッケージ1240は、単一のダイ1236またはシステムインパッケージ(SiP)配置などの複数のダイを含み得る。パッケージ1240は、電子デバイス技術合同協議会(JEDEC)規格などの1つまたは複数の規格または仕様に準拠するように構成され得る。
【0083】
パッケージ1240に関する情報は、コンピュータ1246に記憶された構成要素ライブラリを介するなどして、様々な製品設計者に配布され得る。コンピュータ1246は、メモリ1250に結合された、1つまたは複数の処理コアなどのプロセッサ1248を含み得る。プリント回路基板(PCB)ツールは、ユーザインターフェース1244を介してコンピュータ1246のユーザから受信されたPCB設計情報1242を処理するために、プロセッサ実行可能命令としてメモリ1250に記憶され得る。PCB設計情報1242は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むパッケージ1240に対応するパッケージングされた半導体デバイスの、回路基板上での物理的な位置情報を含み得る。
【0084】
コンピュータ1246は、回路基板上のパッケージングされた半導体デバイスの物理的な位置情報を含むデータ、ならびにトレースおよびビアなどの電気的接続のレイアウトを有するGERBERファイル1252などのデータファイルを生成するためにPCB設計情報1242を変換するように構成され得、パッケージングされた半導体デバイスは、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むパッケージ1240に対応する。他の実施形態では、変換されたPCB設計情報によって生成されるデータファイルは、GERBERフォーマット以外のフォーマットを有し得る。
【0085】
GERBERファイル1252は、基板アセンブリプロセス1254において受信され、GERBERファイル1252内に記憶された設計情報に従って製造される、典型的なPCB1256などのPCBを作成するために使用され得る。たとえば、GERBERファイル1252は、PCB生産プロセスの様々なステップを実行するために、1つまたは複数の機械にアップロードされ得る。PCB1256には、典型的なプリント回路アセンブリ(PCA)1258を形成するために、パッケージ1240を含む電子構成要素が実装される。
【0086】
PCA1258は、製品製造プロセス1260において受け取られ、第1の典型的な電子デバイス1262および第2の典型的な電子デバイス1264などの1つまたは複数の電子デバイスに統合され得る。例示的な非限定的な例として、第1の典型的な電子デバイス1262、第2の典型的な電子デバイス1264、または両方は、
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せが統合される、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、およびコンピュータの群から選択され得る。別の例示的な非限定的な例として、電子デバイス1262および1264のうちの1つまたは複数は、モバイルフォン、ハンドヘルドパーソナル通信システム(PCS)ユニット、携帯情報端末などのポータブルデータユニット、全地球測位システム(GPS)対応デバイス、ナビゲーションデバイス、メーター読取り機器などの固定ロケーションデータユニット、またはデータもしくはコンピュータ命令を記憶するかもしくは取り出す任意の他のデバイス、またはそれらの任意の組合せなどのリモートユニットであり得る。
図12は本開示の教示によるリモートユニットを示しているが、本開示はこれらの図示のユニットに限定されない。本開示の実施形態は、メモリおよびオンチップ回路を含む能動集積回路を含む任意のデバイスにおいて適切に利用され得る。
【0087】
図1のデータキャッシュ102、
図3Aの第3のレベルキャッシュ308、
図8Aのデフラグキャッシュ812、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せを含むデバイスは、例示的なプロセス1200で説明したように製作され、処理され、電子デバイスに組み込まれ得る。
図1〜
図11に関して開示した実施形態の1つまたは複数の態様は、ライブラリファイル1212、GDSIIファイル1226、およびGERBERファイル1252内など、様々な処理段階において含まれ、ならびに、研究コンピュータ1206のメモリ1210、設計コンピュータ1214のメモリ1218、コンピュータ1246のメモリ1250、基板アセンブリプロセス1254においてなど、様々な段階において使用される1つまたは複数の他のコンピュータまたはプロセッサ(図示せず)のメモリに記憶され、また、マスク1232、ダイ1236、パッケージ1240、PCA1258、プロトタイプの回路もしくはデバイス(図示せず)などの他の製品、
図11のデフラグキャッシュ1164、またはそれらの任意の組合せなどの1つまたは複数の他の物理的な実施形態に組み込まれ得る。物理デバイス設計から最終製品までの生産の様々な典型的な段階が示されているが、他の実施形態では、より少ない段階が使用され得るか、または追加の段階が含まれ得る。同様に、プロセス1200は、単一のエンティティによってまたはプロセス1200の様々な段階を実行する1つまたは複数のエンティティによって実行され得る。
【0088】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、またはその両方の組合せとして実装され得ることを当業者はさらに諒解されよう。様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、概してそれらの機能の観点から上記で説明した。そのような機能がハードウェアとして実装されるか、プロセッサ実行可能命令として実装されるかは、特定の適用例および全体的なシステムに課された設計制約に依存する。当業者は説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0089】
本明細書で開示する実施形態に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで具現化され得る。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の非一時的記憶媒体内に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体化され得る。プロセッサおよび記憶媒体は、特定用途向け集積回路(ASIC)内に存在し得る。ASICは、コンピューティングデバイスまたはユーザ端末内に存在し得る。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別構成要素として存在し得る。
【0090】
開示した実施形態の前述の説明は、開示した実施形態を当業者が作成または使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者には容易に明らかになり、本明細書で定義する原理は、本開示の範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本開示は本明細書に示す実施形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と一致する、可能な最も広い範囲を与えられるべきである。