JP2021530028A - 記憶システムをメインメモリとして使用するための方法および装置 - Google Patents

記憶システムをメインメモリとして使用するための方法および装置 Download PDF

Info

Publication number
JP2021530028A
JP2021530028A JP2020571708A JP2020571708A JP2021530028A JP 2021530028 A JP2021530028 A JP 2021530028A JP 2020571708 A JP2020571708 A JP 2020571708A JP 2020571708 A JP2020571708 A JP 2020571708A JP 2021530028 A JP2021530028 A JP 2021530028A
Authority
JP
Japan
Prior art keywords
flc
data
dram
module
cache
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
JP2020571708A
Other languages
English (en)
Other versions
JP7407134B2 (ja
Inventor
スタルジャ,セハト
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.)
FLC Technology Group Inc
Original Assignee
FLC Technology Group Inc
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 FLC Technology Group Inc filed Critical FLC Technology Group Inc
Publication of JP2021530028A publication Critical patent/JP2021530028A/ja
Priority to JP2023212857A priority Critical patent/JP2024029007A/ja
Application granted granted Critical
Publication of JP7407134B2 publication Critical patent/JP7407134B2/ja
Active 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • 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/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

プロセッサ、メインメモリ用の複数のキャッシュモジュール、および記憶ドライブを含むデータアクセスシステム。キャッシュモジュールは、FLCコントローラおよびメインメモリキャッシュを含む。複数のキャッシュモジュールは、メインメモリとして機能する。プロセッサは、読み取り/書き込み要求(物理アドレスを有する)をキャッシュモジュールに送信する。キャッシュモジュールは、2つ以上のステージを含み、各ステージは、FLCコントローラおよびDRAM(関連付けられたコントローラを有する)を含む。第1のステージのFLCモジュールが、物理アドレスを含まない場合、要求は、第2のステージのFLCモジュールに回送される。第2のステージのFLCモジュールが、物理アドレスを含まない場合、要求は、記憶ドライブに回送され、パーティションが、メインメモリ用に予約される。第1のステージのFLCモジュールは、高速度、より低い電力で動作する一方、第2のステージのFLCは、低コストの実装である。複数のFLCモジュールが、並列にプロセッサに接続され得る。

Description

発明者
セハト スタルジャ(SEHAT SUTARDJA)
1.優先権主張。
この出願は、2018年6月18日に出願された米国仮特許出願第62/686,333号の優先権および利益を主張し、その内容は、その全体が参照によって本明細書に組み込まれる。
2.技術分野
本開示は、集積回路およびコンピュータシステム、より具体的にはコンピュータのメインメモリに関する。
3.背景技術
コンピューティングデバイス(サーバ、PC、携帯電話、タブレットなど)は通常、プロセッサまたはシステムオンチップ(SoC)を含む。図1は、プロセッサまたはSoC12と、1つ以上のダイナミックランダムアクセスメモリ(DRAM)14からなるメインメモリと、を含むデバイス10の例を示す。DRAM14は、SoC12に接続されているがSoC12から分離された1つ以上の集積回路として実装できる。デバイス10はまた、SoC12のポート17に接続された1つ以上の記憶ドライブ16を含むことができる。記憶ドライブ16は、フラッシュメモリ、ソリッドステートドライブ、ハードディスクドライブ、および/またはハイブリッドドライブを含むことができる。ハイブリッドドライブは、ソリッドステートメモリを有するソリッドステートドライブと、回転する記憶媒体を有するハードディスクドライブと、を含む。
SoC12は、1つ以上の画像処理デバイス20、システムバス22、およびメモリコントローラ24を含むことができる。画像処理デバイス20の各々は、例えば、中央プロセッサ(または中央処理装置(CPU))28を有する制御モジュール26、グラフィックプロセッサ(またはグラフィック処理装置(GPU))30、ビデオレコーダ32、カメラ画像信号プロセッサ(ISP)34、ギガビット(Gb)Ethernet(登録商標)インターフェース36などのEthernet(登録商標)インターフェース、ユニバーサルシリアルバス(USB)インターフェース38およびシリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース40などのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス(PCIe)インターフェース42を含むことができる。画像処理デバイス20は、システムバス22およびメモリコントローラ24を介してDRAM14にアクセスする。DRAM14は、メインメモリとして使用される。例えば、画像処理デバイス20のうちの1つは、DRAM14のうちの1つにおける対応する物理ロケーションにアクセスするときに、メモリコントローラ24に物理アドレスを提供する。画像処理デバイス20はまた、システムバス22を介して記憶ドライブ16にアクセスすることができる。
SoC12および/またはメモリコントローラ24は、SoC12の1つ以上のアクセスポート44を介してDRAM14に接続できる。DRAM14は、ユーザデータ、システムデータ、および/またはプログラムを記憶する。SoC12は、第1のデータを使用してプログラムを実行して、第2のデータを生成することができる。第1のデータは、プログラムの実行前にDRAM14に記憶できる。SoC12は、プログラムの実行中および/または実行に続いて、第2のデータをDRAM14に記憶することができる。DRAM14は、高帯域幅インターフェースおよびビット当たりのコストが低いメモリ記憶容量を有することができ、幅広い用途を扱うことができる。
SoC12は、レベル0(L0)キャッシュ、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、またはレベル3(L3)キャッシュのうちの1つ以上を含むことができるキャッシュメモリを含む。L0〜L3キャッシュは、画像処理デバイス20の対応するものに近接してSoC12上に配置されている。示された例では、制御モジュール26は、中央プロセッサ28およびL1〜L3キャッシュ50を含む。中央プロセッサ28は、L0キャッシュ52を含む。中央プロセッサ28はまた、キャッシュ50、52へのアクセスを制御することができるメモリ管理ユニット(MMU)54を含む。
キャッシュのレベルが上がるにつれて、キャッシュのアクセス遅延および記憶容量が増加する。例えば、L1キャッシュは通常、L2キャッシュおよびL3キャッシュよりも小さい記憶容量を有する。ただし、L1キャッシュは通常、L2キャッシュおよびL3キャッシュよりも低遅延である。
SoC12内のキャッシュは通常、スタティックランダムアクセスメモリ(SRAM)として実装されている。キャッシュが画像処理デバイス20に極近接しているため、キャッシュは、画像処理デバイス20と同じクロック周波数で動作することができる。したがって、キャッシュは、DRAM14よりも短い遅延期間を呈する。
SoC12のキャッシュの数およびサイズは、用途に依存する。例えば、エントリレベルのハンドセット(または携帯電話)は、L3キャッシュが含まない場合があり、パーソナルコンピュータよりも小さいサイズのL1キャッシュおよびL2キャッシュを有し得る。同様に、DRAM14の各々の数およびサイズは、用途に依存する。例えば、携帯電話は現在、4〜12ギガバイト(GB)のDRAMを有し、パーソナルコンピュータは現在、8〜32GBのDRAMを有し、サーバは現在、32GB〜512GBのDRAMを有する。一般に、DRAMチップの数が増加するにつれて、メインメモリが大規模となってコストが増加する。
DRAMのコストに加えて、同じ量の記憶容量に対してDRAMのパッケージサイズを減少させることが、ますます困難になっている。また、デバイスに組み込まれるDRAMのサイズおよび数が増加すると、DRAMの静電容量が増加し、DRAMと関連付けられた導電素子の数および/または長さが増加し、DRAMと関連付けられたバッファリングが増加する。加えて、DRAMの静電容量が増加するにつれて、DRAMの動作周波数が減少し、DRAMの遅延期間が増加する。
動作中、プログラムおよび/またはデータは、必要に応じて、DRAM14からSoC12のキャッシュに転送される。これらの転送は、(i)キャッシュと、(ii)対応するプロセッサおよび/または画像処理デバイスと、の間のデータ交換と比較して高遅延である。この理由で、DRAM14へのアクセスは、より大きいL3キャッシュでSOCを構築することによって、最小限に抑えられる。L3キャッシュがますます大きくなっているにもかかわらず、年々コンピューティングシステムは、ますます多くのDRAM(より大きなメインメモリ)を必要とし続けている。他のすべてが等しい場合、大きいメインメモリを有するコンピュータほど、小さいメインメモリを有するコンピュータよりも性能が良好である。今日のオペレーティングシステムでは、4GBのメインメモリを有する最新のPCは、最速かつ最良のプロセッサが備えられていても、実際は極度に性能が低い。次に、コンピュータのメインメモリサイズが経時的に増加し続ける理由について説明する。
起動中に、プログラムが、記憶ドライブ16からDRAM14に転送できる。例えば、中央プロセッサ28は、起動中に記憶ドライブ16からDRAM14にプログラムを転送することができる。プログラムがDRAMに完全にロードされた場合にのみ、中央プロセッサ28は、DRAMに記憶された命令を実行することができる。CPUが一度に1つずつプログラムを実行する必要があり、かつCPUが新たなプログラムを立ち上げる前に前のプログラムを強制終了する間にユーザが待機しようとする場合、コンピュータシステムには、実際には極小規模のメインメモリが必要である。しかしながら、このことは、新たなプログラムを立ち上げてその場でプログラムを切り替えるときの瞬時の応答時間にもはや慣れている消費者には受け入れられない。この理由で、年々コンピュータが、常により多くのDRAMを必要とし、DRAM企業が、優先してより大きなDRAMを製造することが確立されている。
先行技術の欠点を克服し、かつ追加の利点を提供するために、プロセッサで使用するためのデータ記憶およびアクセスシステムが開示されている。プロセッサは、データのデータ要求を生成するように構成されており、データ要求は、物理アドレスを含み得る。この実施形態では、FLCキャッシュシステムを使用してコンピュータのメインメモリを仮想化することにより、メインメモリが、フラッシュメモリなどのはるかに低コストのメモリデバイスからなり得るようになり、かつコンピュータを、以前に可能であったよりもはるかに小さい容量のDRAMを使用して構築できる。FLCシステムは、第1のFLCコントローラおよび第1のメモリを有する第1のFLCモジュールを備え、第1のFLCモジュールが、プロセッサからデータ要求を受信するようになっている。第2のFLCモジュールは、第2のFLCコントローラおよび第2のメモリを含む。第1のFLCモジュールは、第1のFLCモジュールがプロセッサによって要求されたデータを有していないことに応答して、第1のFLCモジュールからデータ要求を受信する。記憶ドライブが、提供され、ユーザファイル記憶部分/パーティションおよびメインメモリ部分/パーティションを有して構成されている。第2のFLCモジュールが、第1のFLCモジュールによって要求されたデータを有していない場合、記憶ドライブは、データ要求を受信する。2ステージFLCシステムを採用することによって、第1のFLCモジュールが、自由に、プロセッサ要求にほぼ役立ち得るようになると同時に、第2のFLCモジュールが、第1のFLCモジュールの性能に影響を与えることなく記憶ドライブからデータを出し入れすることを自由にされる。
一実施形態では、データ要求は、物理アドレスを含み、第1のFLCコントローラは、第1のFLCコントローラが物理アドレスエントリを含む場合に、物理アドレスを第1の仮想アドレスに書き換えるように構成されたループアップテーブルを含む。第1のFLCコントローラは、第1のFLCコントローラルックアップテーブルが物理アドレスエントリを含まない場合には、物理アドレスを有するデータ要求を第2のFLCコントローラに回送するように構成されている。物理アドレスおよび物理アドレスエントリという用語は、本明細書では交換可能に使用され得る。第2のFLCコントローラは、物理アドレスを第2の仮想アドレスに書き換えるように構成されたループアップテーブルを含み得る。さらに、第2のFLCコントローラは、第2のFLCコントローラルックアップテーブルが物理アドレスを含まない場合に、物理アドレスを有するデータ要求を記憶ドライブに回送するように構成されている。
一実施形態では、第1のFLCモジュールは、従来のDRAMメインメモリのものよりもビット当たりのコストが高くなるという犠牲を払って、第2のFLCモジュールよりも著しく速いアクセス時間、より低遅延、および消費電力がより少ないために最適化されている。ただし、第1のFLCモジュールのメモリ容量が、第2のFLCモジュールよりもはるかに小さいため、コストの増加は、実際には無視でき、より重要なことに、メインメモリを記憶ドライブに移動することによって、大幅なコスト削減がすでに達成されている。一構成では、第1のメモリは、カスタムメイドのDRAMであり、第1のメモリコントローラを含み、第2のメモリは、既製のコモディティDRAMからなり、第2のメモリコントローラを含む。実際のメインメモリが、物理的に記憶ドライブにあるようになったため、記憶ドライブは、適度に高速なソリッドステートメモリを使用することが好ましい。第2のFLCモジュールへのミスがあると、DRAMを使用するときに従来のメインメモリアクセスよりも1000倍遅くなり、その影響は、最小限に抑えられなければならない。この理由で、FLC完全連想の、かつ大規模なキャッシュライン技術が、提案されており、ミス率を無視できるように保持するための基本である。第1のFLCモジュールおよび第2のFLCモジュールは、これに加えて、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成され得る。その上、FLCモジュールはまた、プロセッサまたはソフトウェアからヒント(命令)を取得して、現在記憶ドライブに在設されている最終メインメモリから第1のFLCモジュールおよび/または第2のFLCモジュールへのデータのプリフェッチを実行するように構成され得る。一実施形態では、処理デバイス上で実行中のソフトウェアは、次にどのようなデータ(コードを含む)が必要であるかを知ることができ、必要なときに必要なデータがそこにあるように、そのデータをDRAMキャッシュにプリフェッチするようにFLCシステムに命令を提供することができる。そのデータは、標準速度FLCまたは高速度FLCにキャッシュされ得る。一実施形態では、数千のキャッシュラインが、プリフェッチされる。正確なプリフェッチは、100%のヒット率につながり得る。
また、本明細書には、データアクセスシステムを動作させる方法が、開示されている。この実施形態では、データアクセスシステムは、プロセッサキャッシュと、記憶ドライブと、第1のFLCコントローラおよび第1のDRAMを含む第1のFLCモジュールと、第2のFLCコントローラおよび第2のDRAMを含む第2のFLCモジュールと、を有するプロセッサを備える。この方法は、プロセッサで、物理アドレスを含むデータの要求を生成することと、データの要求を第1のFLCモジュールに提供することと、を含む。第1のFLCモジュールで、第1のFLCコントローラが物理アドレスエントリを含むかどうかを判定することと、第1のFLCコントローラが物理アドレスエントリを含むことに応答して、第1のDRAMからデータを取り出し、データをプロセッサに提供すること。これに代えて、第1のFLCコントローラが物理アドレスエントリを含まないことに応答して、データの要求および物理アドレスを第2のFLCモジュールに回送すること。第2のFLCモジュールにおいて、第2のFLCコントローラが物理アドレスエントリを含むかどうかを判定することと、第2のFLCコントローラが物理アドレスエントリを含むことに応答して、第2のDRAMからデータを取り出し(要求されたデータに関連する完全なキャッシュラインエントリの形式で)、要求されたキャッシュラインデータ(キャッシュラインに記憶されたデータ)を第1のFLCモジュールに提供すること。
この方法は、第2のFLCコントローラが物理アドレスを含まないことに応答して、データの要求(要求されたデータに対応するキャッシュラインの形態で)および物理アドレスを記憶ドライブに回送することをさらに含み得る。この方法はまた、記憶ドライブが、追加のメインメモリとして予約された記憶ドライブの一部分からデータを取り出し、次いでデータ(キャッシュライン)を第2のFLCモジュールに提供することを含み得る。加えて、第1のFLCコントローラが物理アドレスを含むことと、プロセッサへのデータの提供と、に応答して、FLCコントローラは、データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新する。
一実施形態では、第2のDRAMからデータを取り出し、データを第1のFLCモジュールに提供することは、物理アドレスを第1のFLCコントローラに記憶し、データを第1のDRAMに記憶することをさらに含む。第1のDRAMが利用可能な空き空間を有していない場合には、第1のDRAMおよび第1のFLCアドレスルックアップエントリテーブルから最も過去に使用されたデータを削除して、新たなデータのための空間を作成する。さらに別の実施形態では、FLCモジュールは、DRAMの一部分を将来のプロセッサ要求のために予備的に利用可能にし得る。第1のFLCモジュールはまた、第1のFLCモジュールのDRAMの一部分を予備的にクリーンにすることができることにより、オンデマンドで、第1のFLCモジュールは、キャッシュラインに記憶されたエントリを消去して、新たなプロセッサ要求のための新たなエントリ用の空白を作成することができる。これは、ダーティキャッシュラインを第2のFLCモジュールに書き戻すことによって行われる。オペレーティングシステムからのヒント(プリフェッチ要求)により、不要になったプログラム/データをFLC DRAMからさらに消去できる。これにより、時間および電力が節減される。さらに、そのことは、使用されなくなったプログラム/データがSSDにパージされるたびに、SSDへの誤った書き込みを防止する。一実施形態では、第2のステージのDRAM(本明細書ではDRAM−SSと呼ばれる)は、第1のステージのDRAMよりも約8倍大きい。一実施形態では、第2のステージのDRAMの一部分は、第1のステージのDRAMの全部または一部分を第2のステージのDRAMに移動するための空白を作成するために、クリーン(空)として予備的に維持される。一実施形態では、第2のステージのDRAMの少なくとも10パーセントは、データのプリフェッチのために、または第1のステージのDRAM内容物を第2のステージに移動するために、クリーンまたはオンデマンドでクリーンに維持される。一実施形態では、第1のステージのDRAMのサイズの少なくとも半分は、第2のステージのDRAMで空またはクリーン可能として維持される。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも4倍大きい。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも8倍大きい。一実施形態では、第2のステージのDRAMは、第1のステージのDRAMよりも少なくとも16倍大きい。
また、本明細書には、プロセッサキャッシュを有するプロセッサを含むいくつかの要素を有するデータ記憶およびアクセスシステムが、開示されている。プロセッサは、第1のデータの第1のデータ要求を生成するように構成されている。また、このシステムの一部は、プロセッサと通信する第1のFLCキャッシュシステムである。第1のFLCキャッシュシステムは、極めて高いヒット率(99.9%)の超高速メインメモリキャッシュ(第2のFLCキャッシュシステムよりも高速)として機能するように構成されており、第1のデータの第1のデータ要求を受信する。一実施形態では、第1のFLCキャッシュ(HS)は、第2のFLCキャッシュ(SS)の少なくとも2倍の速度である。一実施形態では、第1のFLCキャッシュ(HS)は、第2のFLCキャッシュ(SS)の少なくとも4倍の速度である。第1のFLCキャッシュシステムはまた、プロセッサが必要とする数万の独立したスレッドを記録するために設計されている。第2のFLCキャッシュシステムが提供され、第2のFLCキャッシュシステムは、第1のFLCと通信し、第1のFLCのセカンダリ(バックアップ)メインメモリキャッシュとして機能し、第2のデータの第2のデータ要求を受信するように構成されている。記憶ドライブは、記憶ドライブのメインメモリパーティションが実際のメインメモリとして機能するように、ユーザファイル記憶パーティションおよびメインメモリパーティションを有して構成されている。これに代えて、別個かつ専用の記憶ドライブが、実際のメインメモリとして使用されてもよい。さらに、好ましくは、記憶ドライブのメインメモリパーティションは、高信頼性用に構成されている。NANDフラッシュベースの記憶ドライブについて、メインメモリパーティションは、好ましくは、従来のトリプルまたはクアッドレベルセル(TLC/QLC)ではなく、シングルレベルセル(SLC)を有して構成されている。
このシステムは、プロセッサがシステムバスを介して独立したFLCキャッシュモジュールの複数のスライスと通信するシステムバスをさらに含み得る。一構成では、プロセッサによって要求された第1のデータが、第1のスライスFLCキャッシュシステムに含まれない場合には、第1のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第1のデータを取り出し、プロセッサによって要求されたさらに異なる第1のデータが、第2のスライスFLCキャッシュシステムに含まれない場合には、第1のデータ要求が、記憶ドライブに送信されて、記憶ドライブのメインメモリパーティションから第1のデータを取り出す。第1のスライスFLCキャッシュシステムが、第1のステージFLCモジュールおよび第2のステージFLCモジュールから構成され得、かつ第2のスライスFLCキャッシュシステムは、第1のステージFLCモジュールおよび第2のステージFLCモジュールからなり得ることが想到される。加えて、FLCモジュールの各々は、専用のFLCコントローラ、アドレスルックアップテーブル、およびメモリを含むとよい。
本開示の適用可能なさらなる領域は、詳細な説明、特許請求の範囲、および図面から明らかになるであろう。詳細な説明および特定の例は、例示のみの目的で意図されており、開示の範囲を限定することを意図するものではない。
本発明の他のシステム、方法、特徴、および長所は、以下の図および詳細な説明を検討すると、当業者に明らかであるか、または明らかになるであろう。そのようなすべての追加のシステム、方法、特徴、および利点は、この説明内に含まれ、本発明の範囲内にあり、付随する特許請求の範囲によって保護されることが意図されている。
図中の構成要素は、必ずしも一定の縮尺であるとは限らず、代わりに本発明の原理を例示することに重点が置かれている。図中、同様の参照番号は、異なるビュー全体にわたって対応する部分を指す。
先行技術によるデバイスの機能ブロック図である。 本開示の実施形態に従うデータアクセスシステムの機能ブロック図である。 図2のデータアクセスシステムのDRAMおよび記憶ドライブのエントリを例示する機能ブロック図である。 図2のデータアクセスシステムを動作させる方法を例示している。 カスケードされたFLCシステムの例示的な実施形態のブロック図である。 FCLコントローラの例示的な実施形態のブロック図である。 2つ以上のFLCモジュールを有するカスケードされたFLCモジュールのブロック図である。 図5Aに示されているようなカスケードされたFLCモジュールの例示的な動作方法の動作フロー図である。 2つ以上の別個のFLCモジュールを有する分割FLCモジュールシステムのブロック図である。 図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。 バイパス経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。 図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。 バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。 図12の実施形態の例示的な動作方法の動作フローチャートを提供する。
図面において、参照番号は、類似および/または同一の要素を識別するために再使用され得る。
説明
以下の例のうちの少なくともいくつかは、ファイナルレベルキャッシュ(FLC)モジュールおよび記憶ドライブを含む。FLCモジュールは、メインメモリキャッシュとして使用され、記憶ドライブは、ユーザファイルの物理的記憶装置として使用され、また、記憶ドライブの一部分は、FLCモジュールによる実際のメインメモリとしての使用のためにパーティション化される。これは、実際のメインメモリがDRAMからなる従来のコンピュータとは対照的である。データはまず、FLCモジュールのDRAMから読み取られるか、またはDRAMへ書き込まれることが試行され、物理記憶ドライブのメインメモリ部分が、FLCモジュールからのミスが起ったときに最終手段のバックアップを提供する。FLCモジュール内のルックアップテーブルは、本明細書ではコンテンツ連想メモリ(CAM)と呼ばれる。FLCモジュールのFLCコントローラは、以下に記載された様々なCAM技術を使用して、FLCモジュール内のメモリおよび記憶ドライブへのアクセスを制御する。CAM技術および他の開示された特徴は、メモリアクセスレートを最大化し、かつ電力消費を最小限に抑えながら、デバイス内のDRAMの必要な記憶能力を低減する。デバイスは、モバイルコンピューティングデバイス、デスクトップコンピュータ、サーバ、ネットワークデバイス、または無線ネットワークデバイスであり得る。デバイスの例として、コンピュータ、携帯電話、タブレット、カメラなどが挙げられるが、これらに限定されない。以下の例でのDRAMは、一般にメインメモリとして使用されずに、現在記憶ドライブの一部分にロケートされたはるかに遅いメインメモリのキャッシュとして使用される。したがって、記憶ドライブのパーティションは、メインメモリであり、DRAMは、メインメモリのキャッシュである。
図2は、処理デバイス72、システムバス74、FLCモジュール76、および記憶ドライブ78を含むデータアクセスシステム70を示す。データアクセスシステム70は、例えば、コンピュータ、携帯電話、タブレット、サーバ、および/または他のデバイスに実装され得る。処理デバイス72は、例えば、中央プロセッサ(または中央処理装置(CPU))、グラフィックプロセッサ(またはグラフィック処理装置(GPU))、ビデオレコーダ、カメラ信号プロセッサ(ISP)、ギガビット(Gb)EthernetインターフェースなどのEthernetインターフェース、ユニバーサルシリアルバス(USB)インターフェースおよびシリアルアドバンストテクノロジーアタッチメント(SATA)インターフェースなどのシリアルインターフェース、および周辺コンポーネント相互接続エクスプレス(PCIe)インターフェースおよび/または他の画像処理デバイスを含み得る。処理デバイス72は、1つ以上のモジュールに実装され得る。一例として、処理モジュール72の第1のものが、レベル0(L0)キャッシュ、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、またはレベル3(L3)キャッシュのうちの1つ以上などのキャッシュメモリを含むものとして示されている。示された例では、第1の処理デバイスは、中央プロセッサ73およびL1〜L3キャッシュ75を含み得る。中央プロセッサ73は、L0キャッシュ77を含み得る。中央プロセッサ73はまた、プロセッサキャッシュ75、77へのアクセスを制御することができるメモリ管理ユニット(MMU)79を含み得る。MMU79はまた、プロセッサキャッシュのメモリアドレストランスレータと見なされ得る。MMUは、CPU仮想アドレスをシステム物理アドレスに書き換える役割を果たす。ほとんどの最新のCPUは、物理アドレスキャッシュを使用し、つまり、L0/L1/L2/L3キャッシュは、物理アドレス指定される。CPUからのキャッシュミスも、物理アドレスを使用してシステムバスに向かう。
処理デバイスによって実行されるものとして以下に記載されたタスクは、例えば、中央プロセッサ73および/またはMMU79によって実行され得る。
処理デバイス72は、システムバス74を介してFLCモジュール76に接続されている。処理デバイス72は、(i)処理デバイス72とシステムバス74との間、および(ii)システムバス74と記憶ドライブ78との間のバスおよびインターフェースを介して記憶ドライブ78に接続されている。インターフェースは、例えば、Ethernetインターフェース、シリアルインターフェース、PCIeインターフェースおよび/または組み込みマルチメディアコントローラ(eMMC)インターフェースを含み得る。記憶ドライブ78は、処理デバイス72および/またはFLCコントローラ80から離れた領域の任意の箇所にロケートされ得る。記憶ドライブ78は、1つ以上のネットワーク(例えば、WLAN、インターネットネットワーク、またはリモート記憶ネットワーク(またはクラウド))を介して、処理デバイス72および/またはFLCコントローラ80と通信し得る。
FLCモジュール76は、FLCコントローラ80、DRAMコントローラ82、およびDRAM IC84を含む。DRAM ICおよびDRAMという用語は、交換可能に使用される。DRAMとして理解するために参照されるが、任意のタイプのRAM、SRAM、DRAM、または本明細書に記載されているように振る舞うが異なる名称である任意の他のメモリを含む他のタイプのメモリが使用できる。DRAM IC84は、主に仮想および一時的な記憶装置として使用される一方、記憶ドライブ78は、物理的および永続的な記憶装置として使用される。これは、一般に、DRAM IC内のロケーションが、プロセッサモジュールによって生成される物理アドレスと静的な/固定の関係を有していないことを意味する。記憶ドライブ78は、メインメモリとして使用するために予約されたパーティションを含み得る一方、記憶ドライブの残りの部分は、ユーザファイルを記憶するための従来の記憶ドライブ空間として使用される。これは、コンピュータがDRAM内の物理的なメインメモリ空間を切らしたときに行われる先行技術のデマンドページング動作とは異なる。その場合、DRAMからのデータ/プログラムの大きなブロックが、ハードディスクドライブとの間で転送される。これにはまた、MMUおよびオペレーティングシステムによって行われる物理アドレス割り当ての割り付け解除および再割り付けが伴い、これは、オペレーティングシステム(OS)が十分な情報を有しておらず、またメインメモリに記憶されたデータ/プログラムの相対的な重要性に関する正確な情報も有していないため、遅いプロセスである。処理デバイス72は、それらが単一のメインメモリデバイスであるかのように、DRAM IC84と記憶ドライブ78のメインメモリパーティションとをアドレス指定する。ユーザは、コンピュータの動作中にRAMに記憶されたファイルを見ることができないのと同じように、記憶ドライブのメインメモリパーティションに記憶されたデータまたはファイルへのアクセス権を有しておらず、このデータまたはファイルを見ることができない。データの読み取りおよび/または書き込み中に、処理デバイス72は、アクセス要求をFLCコントローラ80に送信する。FLCコントローラ80は、DRAMコントローラ82を介してDRAM IC84にアクセスし、および/または記憶ドライブ78にアクセスする。FLCコントローラ80は、記憶ドライブに、直接(破線で示されているように)またはシステムバス74を介してアクセスし得る。プロセッサおよびプログラマの観点から、メインメモリとして指定された記憶パーティションへのアクセスが、I/O動作としてではなく、プロセッサのネイティブロードおよびストア動作を介して行われる。
データアクセスシステム70の様々な例が、本明細書に記載されている。第1の例では、FLCモジュール76は、処理デバイス72、システムバス74、および記憶ドライブ78とは別個のSoCに実装されている。別の実施形態では、要素は、異なる集積回路上にある。第2の例では、処理デバイス72のうちの1つは、CPUが実装された処理デバイスである。処理デバイス72のうちの1つは、FLCモジュール76および記憶ドライブ78とは別個のSoCに実装され得る。別の例として、処理デバイス72およびシステムバス74は、FLCモジュール76および記憶ドライブ78とは別個のSoCに実装されている。別の例では、処理デバイス72、システムバス74、およびFLCモジュール76は、記憶ドライブ78とは別個のSoCに実装されている。データアクセスシステム70の他の例は、以下に開示されている。
DRAM IC84は、最終レベルキャッシュとして使用され得る。DRAM IC84は、様々な記憶容量を有し得る。例えば、DRAM IC84は、携帯電話アプリケーション用に1〜2GBの記憶容量、パーソナルコンピュータアプリケーション用に4〜8GBの記憶容量、およびサーバアプリケーション用に16〜64GBの記憶容量を有し得る。
記憶ドライブ78は、NANDフラッシュSSD、または抵抗変化型RAMおよび相変化メモリなどの他の不揮発性メモリを含み得る。記憶ドライブ78は、DRAM IC84よりも多くの記憶容量を有し得る。例えば、記憶ドライブ78は、DRAM IC84よりも8〜16倍大きい記憶装置を含み得る。DRAM IC84は、高速度DRAMを含み得、記憶ドライブ78は、将来においてさえ、低タスク遅延スイッチング時間が重要である場合、超低コストおよび低速度DRAMからなり得る。最終的には、新しいクラスの大容量シリアル/シーケンシャルラージページDRAM(ランダムアクセス性が制限されている)が、最終的なメインメモリ用に構築できる。そのようなシリアルDRAMデバイスは、ダイサイズが従来のDRAMよりも少なくとも2倍小さい可能性があるため、従来のDRAMよりも少なくとも2倍の費用対効果があり得る。一実施形態では、シリアルDRAMは、1つのキャッシュライン(4KB)などの、一度に取り出せるか、または書き込める最小ブロック(チャンク)サイズを有するが、他の実施形態では、最小ブロックサイズが、確立できる。したがって、データは、任意のロケーションに対してではなく、特定のブロックとの間でのみ、読み取られるか、または書き込まれる。そのようなシリアルDRAMは、超高速度シリアルインターフェースと共にさらにパッケージ化されて、大容量のDRAMをプロセッサデバイスから遠くにマウントできるようにし、これにより、プロセッサが、過熱を心配することなく最大限の能力を発揮し得る。示されているように、記憶ドライブ78の一部分は、メインメモリとして作用するようにパーティション化され、したがって、FLC DRAM84の拡張としてFLCコントローラ80によって利用される。
DRAM IC84に記憶されたキャッシュラインは、最も最近、最も頻繁にアクセスされた、および/または関連付けられた最高の優先度レベルを有するデータであり得る。DRAM IC84に記憶されたキャッシュラインは、固定されたキャッシュラインを含む。固定されたキャッシュラインは、DRAM IC84に常に保持されるデータを指す。固定されたキャッシュラインが長期間アクセスされていなくても、固定されたキャッシュラインは、他のキャッシュラインによって追い出せない。ただし、固定されたキャッシュラインは、更新され(書き込まれ)得る。一実施形態では、欠陥DRAMセル(およびそれに対応するキャッシュライン)は、FLCアドレスルックアップエンジンがキャッシュラインエントリをその欠陥DRAMロケーションに割り当てるのを防止するために欠陥セル(単数または複数)を有するDRAMアドレスエントリを削除することによって、FLCシステムからロックアウト(マップアウト)され得る欠陥DRAMエントリは通常、デバイスの製造中に発見される。さらに別の実施形態では、オペレーティングシステムは、マップアウト機能を使用して、DRAMの一部分を、この部分がプロセッサによって通常動作に使用できない一時的な状態にし得る。そのような機能により、オペレーティングシステムは、システムが実際のアプリケーションを実行しながら、マップアウトされたDRAMセクションの健全性を一度に1つのセクションをチェックするコマンドを発行できるようになる。弱いセルを有するDRAMのセクションが見つかった場合、オペレーティングシステムは次いで、弱いセル(単数または複数)を含むキャッシュラインを予備的に無効にし、いわゆる「弱いキャッシュライン」を使用中止に移行させ得る。一実施形態では、FLCエンジンは、ソフトウェアでのDRAM診断の実行からプロセッサをオフロードするためのハードウェア診断機能を含むことができる。
いくつかの例示的な実施形態では、DRAM IC84に記憶されたデータは、頻繁に使用され(例えば、所定期間にわたって所定回数よりも多くアクセスされ)ないソフトウェアアプリケーション、フォント、ソフトウェアコード、代替コード、および異なる話し言葉をサポートするためのデータなどを含まない。これは、DRAM IC84のサイズ要件を最小限に抑えることを支援することができる。非常にまれにしか使用されない、またはまったく使用されないソフトウェアコードは、FLCに関する限り、「ガベージコード」と見なすことができ、このソフトウェアコードは、起動プロセス中にFLCによってロードされないことが可能であり、例えばFLCによってパージさせるためにこのソフトウェアコードが一度だけロードされて使用され、その後にそれ以上ロードされたことがなく、したがって、DRAM IC84の空間を真に有用なデータ/プログラムのために解放する場合である。DRAM IC84のサイズが減少するにつれて、DRAM性能が、向上し、電力消費、静電容量、およびバッファリングが、減少する。静電容量およびバッファリングが減少するにつれて、遅延が、減少する。また、消費電力が小さくなることによって、対応するデバイスのバッテリ寿命が増加する。当然、システム全体の性能は、DRAM IC84が大きくなるに従って向上するが、このことは、コストおよび電力の増加の犠牲を伴う。
FLCコントローラ80は、処理デバイス72から要求を受信することに応答してCAM手法を実行する。CAM技術は、処理デバイス72によって提供される要求の第1の物理アドレスを仮想アドレスに変換することを含む。これらの仮想アドレスは、処理デバイス72によって最初に生成され、かつ処理デバイス72によって第1の物理アドレスにマッピングされた仮想アドレスとは独立し、および異なっている。DRAMコントローラ82は、FLCコントローラ80によって生成された仮想アドレスをDRAMアドレスに変換(またはマッピング)する。DRAMアドレスがDRAM IC84内にない場合、FLCコントローラ80は、(i)記憶ドライブ78からデータをフェッチするか、または(ii)処理デバイス72のうちの対応する1つに対して、キャッシュミスが発生したことを示し(または信号伝達し)得る。記憶ドライブ78からデータをフェッチすることは、FLCコントローラ80によって受信された第1の物理アドレスを第2の物理アドレスにマッピングして、記憶ドライブ78内のデータにアクセスすることを含み得る。キャッシュミスは、物理アドレスを仮想アドレスに書き換えている間に、FLCコントローラ80によって検出され得る。
次いで、FLCコントローラ80は、FLCコントローラ80がデータのために記憶ドライブ78にアクセスするときに、処理デバイス72のうちの1つにキャッシュミスについて信号伝達し得る。これは、第1の/元の物理アドレスを記憶アドレスにマッピングすることにより第1の(元の)物理アドレスに基づいて記憶ドライブ78内のデータにアクセスし、次いで、マッピングされた記憶アドレスに基づいて記憶ドライブ78にアクセスすることを含み得る。
CAM手法を使用して、第1の物理アドレスをFLCコントローラの仮想アドレスにマッピングする。CAM手法は、完全連想アドレス書き換えを提供する。これは、プロセッサの物理アドレスを、FLCコントローラ80のディレクトリに記憶されたすべての仮想アドレスエントリと論理的に比較することを含み得る。セット連想アドレス書き換えは、はるかに高いミス率をもたらし、その見返りにプロセッサ性能が低下するため、回避するのがよい。初期起動後に完全連想かつ大容量のキャッシュラインアーキテクチャ(FLC)を有するDRAM IC84内にロケートされているデータのヒット率は、DRAM IC84のサイズによっては99.9%の高さにもなり得る。一般に、DRAM IC84は、プロセッサおよび/または処理デバイスのアイドル時間を最小限に抑えながら、100%近くの中期(数分)の平均ヒット率を保証するサイズにするとよい。例えば、このことは、携帯電話アプリケーション用の1〜2GBのDRAM IC、パーソナルコンピュータアプリケーション用の4〜8GBのDRAM IC、およびサーバアプリケーション用の16〜64GBのDRAM ICを使用して実現され得る。
図3は、データアクセスシステム70のDRAM IC84および記憶ドライブ78のエントリを示す。DRAM IC84は、DRAMエントリ00−XYを含み得る。記憶ドライブ78は、ドライブエントリ00−MNを有し得る。DRAMエントリ00−XYの各々のアドレスは、ドライブエントリ00−MNの1つ以上のアドレスにマッピングされ得る。ただし、DRAMのサイズは、記憶デバイスのサイズよりも小さいため、記憶デバイスのごく一部しか、所与の時間にDRAMエントリにマッピングできない。真のCAMプロセスの代わりに非衝突フリールックアッププロセスが使用される場合、DRAMの一部分はまた、キャッシュ不能なデータに、ならびにFLCコントローラの完全なアドレスルックアップテーブルの記憶に使用できる。DRAMエントリ00−XYに記憶されたデータは、他のメタデータを含み得る。
DRAMエントリ00−XYの各々は、例えば、4KBの記憶容量を有し得る。ドライブエントリ00−MNの各々はまた、4KBの記憶粒度を有し得る。データが、DRAMエントリ00−XYのうちの1つから読み取られるか、または1つに書き込まれ、DRAMエントリ00−XYのうちの1つが、いっぱいであり、および/または要求と関連付けられたデータのすべてを有してはいない場合、ドライブエントリ00−MNのうちの対応する1つが、アクセスされる。したがって、DRAM IC84および記憶ドライブ78は、4KBのメモリブロックに分割される。DRAM IC84内のメモリの各ブロックは、記憶ドライブ78内にそれぞれ1つ以上のメモリブロックを有し得る。メモリのこのマッピングおよび分割は、図2の処理デバイス72に対して透過的であり得る。
動作中、処理デバイス72のうちの1つは、データのブロック(またはデータのブロックの一部分)に対する要求信号を生成し得る。データのブロックが、DRAM IC84内にロケートされていない場合、FLCコントローラ80は、記憶ドライブ78内のデータのブロックにアクセスし得る。FLCコントローラ80が、記憶ドライブ78からのデータにアクセスしている間、FLCコントローラ80は、データを要求した処理デバイスに警告信号(バスエラー信号など)を返信し得る。警告信号は、FLCコントローラ80が、低速の記憶デバイスからデータにアクセスする過程にあり、かつその結果、システムバス74が、しばらくの間、データを処理デバイス72に転送する準備ができていないことを示し得る。バスエラー信号が使用される場合、バスエラー信号の伝送は、FLCモジュール76から処理デバイスおよび/または処理デバイス72のSoCへの「バスアボート」と呼ばれ得る。次いで、処理デバイス72は、FLC記憶トランザクションの準備ができるのを待つ間に他のタスクを実行し得る。次いで、他のプロセッサタスクは、例えば、処理デバイスのSoC内の1つ以上のキャッシュ(例えば、L0〜L3キャッシュ)にすでに記憶されているデータと、FLC DRAMにすでに記憶されている他のデータと、を使用することによって続行し得る。このことはまた、プロセッサおよび/または処理デバイスのアイドル時間を最小限に抑える。
シーケンシャルアクセスが実行される場合、FLCコントローラ80および/またはDRAMコントローラ82は、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行し得る。このことは、起動中におよび/または起動に続いて行われ得る。FLCコントローラ80および/またはDRAMコントローラ82は、データおよび/またはソフトウェアの使用を追跡し、実行されるコードの間近の行を評価し、メモリアクセスパターンを追跡し、およびこの情報に基づいて、アクセスされることが予想されるデータの次のアドレスを予測し得る。次のアドレスは、DRAM IC84および/または記憶ドライブ78のアドレスであり得る。例として、FLCコントローラ80および/またはDRAMコントローラ82は、データの要求を事前に受信することとは独立して、および/または受信せずに、記憶ドライブ78に記憶されたデータにアクセスし、データをDRAM IC84に転送し得る。
上述の例は、ネットワーク内のサーバ(「クラウド」と呼ばれ得る)を介して実装され得る。サーバの各々は、FLCモジュール(例えば、FLCモジュール76)を含み、互いに通信し得る。サーバは、DRAMおよび/またはDRAM ICに格納されたメモリと、記憶ドライブを共有し得る。サーバの各々は、ネットワークを介して他のサーバ内のDRAMおよび/または記憶ドライブにアクセスし得る。FLCモジュールの各々は、図2のFLCモジュールと同様に動作し得るが、また、クラウドを介して他のサーバの各々内のDRAMおよび/またはメモリにアクセスし得る。サーバとクラウドの間で伝送される信号は、伝送の前に暗号化され、サーバおよび/またはクラウドのネットワークデバイスに到着すると復号化され得る。サーバはまた、クラウド内のメモリを共有し、および/またはメモリにアクセスし得る。例として、サーバのうちの1つのFLCコントローラによって生成された仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、サーバのうちの1つの記憶ドライブ、その他のサーバのうちの1つのFLCモジュールのDRAM、その他のサーバのうちの1つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、サーバのうちの1つのFLCコントローラおよび/または処理デバイスは、その他のFLCモジュール、記憶ドライブ、および/または記憶デバイス内のDRAMおよび/またはメモリにアクセスし得る。つまり、記憶デバイスは、クラウドまたはネットワークにアクセス可能であり得る。これにより、クラウドにロケートされた記憶ドライブ利用される場合、コンピューティングデバイスのサイズおよびコストが低減され、その結果、コンピューティングデバイスは記憶ドライブを必要としない。クラウドまたはネットワーク内の記憶ドライブをアクセス可能にすることは、記憶ドライブをDRAMキャッシュおよびプロセッサとコロケートさせるよりも遅い場合があるが、それにより、記憶ドライブが、いくつかの異なる処理デバイスおよびDRAMキャッシュ間で共有できるようになる。例示的な一環境では、自動車は、車両の周りに配置された多数のプロセッサを有し得、各々が、DRAMキャッシュシステムを有して構成され得る。各プロセッサがSSDドライブを有する代わりに、単一のSSDドライブが、処理デバイスのすべての間で共有され得る。本明細書に開示された非常に高いヒット率では、SSDドライブがアクセスされることは稀である。そのような配置には、コストの低下、小さい全体サイズ、およびメンテナンスの容易化の利点がある。
上述の例はまた、複数のチップを有するマルチチップモジュール、スイッチ、およびプライマリFLCモジュールを有するプライマリチップを含むデータアクセスシステムに実装され得る。マルチチップモジュールは、スイッチを介してプライマリチップモジュールに接続されている。FLCモジュールの各々は、図2のFLCモジュールと同様に動作し得るが、また、スイッチを介してその他の各チップ内のDRAMおよび/またはメモリにアクセスし得る。例として、チップのうちの1つのFLCコントローラによって生成された仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、チップのうちの1つの記憶ドライブ、その他のチップのうちの1つのFLCモジュールのDRAM、その他のチップのうちの1つの記憶ドライブ、またはクラウドの記憶デバイスにおける物理アドレスに対応し得る。キャッシュミスが発生した場合、チップのうちの1つのFLCコントローラおよび/または処理デバイスは、その他のFLCモジュール、記憶ドライブ、および/または記憶デバイス内のDRAMおよび/またはメモリにアクセスし得る。
例として、マルチチップモジュール内のセカンダリDRAMの各々と、プライマリチップ内のプライマリDRAMと、は1GBの記憶容量を有し得る。プライマリチップ内の記憶ドライブは、例えば、64GBの記憶容量を有し得る。別の例として、データアクセスシステムは、自動車で使用され得る。プライマリチップは、例えば、中央コントローラ、モジュール、プロセッサ、エンジン制御モジュール、トランスミッション制御モジュール、および/またはハイブリッド制御モジュールであり得る。プライマリチップを使用して、スロットル位置、スパークタイミング、燃料タイミング、トランスミッションギア間の遷移など、関連システムの対応する態様を制御し得る。マルチチップモジュール内のセカンダリチップは各々、照明システム、エンターテインメントシステム、空調システム、排気システム、ナビゲーションシステム、オーディオシステム、ビデオシステム、ブレーキシステム、ステアリングシステムなどの特定の車両システムと関連付けられ、対応するシステムの態様を制御するために使用され得る。
さらに別の例として、上述の例はまた、ホスト(またはSoC)およびハイブリッドドライブを含むデータアクセスシステムに実装され得る。ホストは、中央プロセッサまたは他の処理デバイスを含み、インターフェースを介してハイブリッドドライブと通信し得る。インターフェースは、例えば、GEインターフェース、USBインターフェース、SATAインターフェース、PCIeインターフェース、または他の好適なインターフェースであり得る。ハイブリッドドライブは、第1の記憶ドライブおよび第2の記憶ドライブを含む。第1の記憶ドライブは、FLCモジュール(例えば、図2のFLCモジュール76)を含む。FLCモジュールのFLCコントローラは、FLCモジュールおよび第2の記憶ドライブのDRAMからデータを読み取り、および/またはデータを書き込むかどうかを決定するときに、CAM手法を実行する。
さらなる例として、上述の例はまた、SoC、第1の高速度DRAMキャッシュ(第2のDRAMキャッシュよりも高速)、第2のより大きいDRAMキャッシュ(第1のDRAMキャッシュよりも大きい)、および不揮発性メモリ(記憶ドライブ)を含む記憶システムに実装され得る。SoCは、第1のDRAM、第2のDRAM、および不揮発性メモリから分離されている。第1のDRAMは、優先度が高いデータおよび/または頻繁にアクセスされるデータを記憶し得る。データアクセス要求の高い割合が、第1のDRAMに記憶されたデータに向けられ得る。例として、データアクセス要求の99%以上が、第1のDRAMに記憶されたデータに向けられ得、データアクセス要求の残りの0.9%以下が、第2のDRAMに記憶されたデータに、およびデータの0.1未満が、不揮発性メモリ(記憶ドライブ内のメインメモリパーティションに向けられ得る。低優先度および/または低頻度でアクセスされるデータは、第2のDRAMおよび/または不揮発性メモリに記憶され得る。例として、ユーザは、第1のDRAM(高速度DRAM)に記憶された複数のWebブラウザを開くようにし得る。一方、第2のDRAMは、多数のアイドル状態のアプリケーション(アイドル状態のWebブラウザタブなど)、または低デューティサイクル動作するアプリケーションを記憶するために、はるかに高容量を有する。したがって、第2のDRAMは、コモディティDRAMを使用することによって低コストのために最適化されるのがよく、そのため、第2のDRAMは、コモディティDRAMの性能しか得られず、第2のDRAMはまた、第1のDRAMよりも長い遅延を呈する。第2のDRAMに収まらない真に古いアプリケーションのコンテンツは、その場合に不揮発性メモリに記憶される。その上、ディープハイバネーションの前に、第1のDRAMおよび/または第2のDRAMのダーティキャッシュラインの内容のみを不揮発性メモリに書き込むことができる。ディープハイバネーションからウェイクアップすると、すぐに必要な内容のみが、第2のFLC DRAMキャッシュおよび第1のFLC DRAMキャッシュに戻される。その結果、ディープハイバネーションからのウェイクアップ時間は、従来のDRAMメインメモリソリューションを使用するコンピュータよりも桁違いに速くなり得る。
SoCは、1つ以上の制御モジュール、インターフェースモジュール、キャッシュ(またはFLC)モジュール、およびグラフィックモジュールを含み得る。キャッシュモジュールは、図2のFLCモジュールと同様に動作し得る。制御モジュールは、インターフェースモジュールを介してキャッシュモジュールに接続されている。キャッシュモジュールは、それぞれの階層レベルに基づいて、第1のDRAM、第2のDRAM、および不揮発性メモリにアクセスするように構成されている。制御モジュールの各々は、それぞれのL1キャッシュ、L2キャッシュ、およびL3キャッシュを含み得る。制御モジュールの各々はまた、L4キャッシュまたは他の高レベルキャッシュなどの、1つ以上の追加のキャッシュを含み得る。SoCと第1のDRAMとの間に多くの信号線(または導電要素)が存在し得る。これにより、SoCと第1のDRAMとの間でデータをすばやくパラレルおよび/またはシリアル転送することができる。SoCと第1のDRAMとの間のデータ転送は、(i)SoCと第2のDRAMとの間、および(ii)SoCと不揮発性メモリとの間のデータ転送よりも速い。
第1のDRAMは、L3キャッシュ、L4キャッシュ、および/または最高レベルキャッシュと同じかそれよりも高い階層レベルを有する第1の部分を有し得る。第1のDRAMの第2の部分は、第2のDRAMおよび/または不揮発性メモリと同じかまたはそれよりも低い階層レベルを有し得る。第2のDRAMは、第1のDRAMよりも高い階層レベルを有し得る。不揮発性メモリは、第2のDRAMと同じかそれよりも高い階層レベルを有し得る。制御モジュールは、例えば、キャッシングの必要性に基づいて、第1のDRAM、第2のDRAM、および/または不揮発性メモリの各々の部分またはすべての階層レベルを変更し得る。
制御モジュール、インターフェースモジュールに接続されたグラフィックモジュール、および/またはインターフェースモジュールに接続された他のデバイス(SoCの内部または外部)は、要求信号をキャッシュモジュールに送信して、データを第1のDRAM、第2のDRAM、および/または不揮発性メモリに記憶し、および/またはそれら内のデータにアクセスし得る。キャッシュモジュールは、第1のDRAM、第2のDRAM、および不揮発性メモリへのアクセスを制御し得る。例として、制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスは、SoCに接続されたDRAMの数および/またはサイズを認識しない場合がある。
キャッシュモジュールは、制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスから受信された第1のプロセッサの物理アドレスおよび/または要求を、第1のDRAMおよび第2のDRAM、および/または不揮発性メモリの記憶アドレスの仮想アドレスに変換し得る。キャッシュモジュールは、第1のプロセッサの物理アドレスを第1のDRAMおよび第2のDRAMの仮想アドレスに変換するため、および/または第1のプロセッサの物理アドレスを記憶アドレスに変換するための1つ以上のルックアップテーブル(例えば、完全セット連想ルックアップテーブル)を記憶し得る。その結果、キャッシュモジュールと、第1のDRAM、第2のDRAM、および不揮発性メモリ(記憶ドライブのメインメモリパーティション)のうちの1つ以上と、が制御モジュール、グラフィックモジュール、および/または、インターフェースモジュールに接続された他のデバイスに対して単一のメモリ(メインメモリ)として動作し得る。グラフィックモジュールは、制御モジュールおよび/またはSoCから、ディスプレイおよび/または他のビデオデバイスへのビデオデータの出力を制御し得る。
制御モジュールは、(i)キャッシュモジュールと、(ii)L1キャッシュ、L2キャッシュ、およびL3キャッシュと、の間で、データ、データセット、プログラム、および/またはそれらの部分をスワップ(または転送)し得る。キャッシュモジュールは、第1のDRAM、第2のDRAM、および不揮発性メモリのうちの2つ以上の間で、データ、データセット、プログラム、および/またはそれらの部分をスワップ(または転送)し得る。このことは、制御モジュールとは独立して、および/または制御モジュールから転送を実行するための制御信号を受信せずに実行され得る。第1のDRAM、第2のDRAM、および不揮発性メモリのうちの1つ以上におけるデータ、データセット、プログラム、および/またはそれらの部分の記憶ロケーションは、対応する優先度レベル、使用の頻度、アクセスの頻度、および/または、データ、データセット、プログラム、および/またはそれらの部分と関連付けられた他のパラメータに基づき得る。データ、データセット、プログラム、および/またはそれらの部分の転送は、データのブロックを転送することを含み得る。データのブロックの各々は、所定のサイズを有し得る。例として、第2のDRAMから第1のDRAMへのデータのスワップは、複数の転送イベントを含み得、各転送イベントは、データのブロック(例えば、4KBのデータ)を転送することを含む。
最良の性能のために、第1のDRAMのキャッシュモジュールは、大きいキャッシュラインサイズに対して完全連想でなければならない(FLCキャッシュソリューション)。ただし、はるかに高いミス率を許容できるアプリケーションについて、これに代えて、セット連想アーキテクチャが、第1レベルのDRAMキャッシュのみに使用され得る。しかし、それでも、キャッシュコントローラエントリテーブルの数を低減するために、第1のDRAMのキャッシュモジュールは、依然として大きいキャッシュラインサイズを有する。第2レベルのDRAMキャッシュに関しては、完全連想かつ大容量のキャッシュラインキャッシュが、使用され、それは、何か他のものでは不揮発性メインメモリの寿命が縮め得るためである。
第1のDRAMは、第1の所定の量の記憶容量(例えば、0.25GB、0.5GB、1GB、4GB、または8GB)を有し得る。0.5GBの第1のDRAMは、通常のL2キャッシュよりも512倍大きい。第2のDRAMは、第2の所定の量の記憶容量(例えば、非サーバベースのシステムについては2〜8GB以上、または16〜64GB以上のサーバベースのシステム)を有し得る。不揮発性メモリは、第3の所定の量の記憶容量(例えば、16〜256GB以上)を有し得る。不揮発性メモリとして、フラッシュメモリまたは磁気抵抗ランダムアクセスメモリ(MRAM)などのソリッドステートメモリ、および/または回転磁気媒体が挙げられ得る。不揮発性メモリとして、SSDおよびHDDが挙げられ得る。記憶システムは、第2のDRAMおよび不揮発性メモリ(記憶ドライブのメインメモリパーティション)を有するが、第2のDRAMおよび不揮発性メモリのいずれも記憶システムに含まれないことが可能である。
さらなる例として、上述の例はまた、SoCおよびDRAM ICを含む記憶システムに実装され得る。SoCは、リングバスを介してDRAM ICにアクセスする複数の制御モジュール(またはプロセッサ)を含み得る。リングバスは、アクセス遅延を最小限に抑える双方向バスであり得る。コストが性能よりも重要である場合、リングバスは、単方向バスであり得る。中間デバイスは、制御モジュールとリングバスとの間、および/またはリングバスとDRAM ICとの間にロケートされ得る。例えば、上述のキャッシュモジュールは、制御モジュールとリングバスとの間、またはリングバスとDRAM ICとの間にロケートされ得る。
制御モジュールは、DRAM ICを共有し、および/またはDRAM ICの指定された部分を有し得る。例えば、DRAM ICの第1の部分は、第1の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第2の部分は、第2の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第3の部分は、第3の制御モジュールのキャッシュとして割り付けられ得る。DRAM ICの第4の部分は、キャッシュとして割り付けられないことが可能である。
さらなる例として、上述の例はまた、サーバシステムに実装され得る。サーバシステムは、記憶システムと呼ばれ、複数のサーバを含み得る。サーバは、ネットワーク(またはクラウド)を介して互いに通信するそれぞれの記憶システムを含む。記憶システムのうちの1つ以上が、クラウドにロケートされ得る。記憶システムの各々は、それぞれのSoCを含み得る。
SoCは、それぞれ、第1のDRAM、第2のDRAM、ソリッドステート不揮発性メモリ、不揮発性メモリ、およびI/Oポートを有し得る。I/Oポートは、周辺コンポーネント相互接続エクスプレス(PCIe)チャネルなどのそれぞれのI/Oチャネル、および周辺コンポーネント相互接続エクスプレス(PCIe)チャネルなどのそれぞれのネットワークインターフェースを介してクラウドと通信し得る。I/Oポート、I/Oチャネル、およびネットワークインターフェースは、Ethernetポート、チャネル、およびネットワークインターフェースであり、所定の速度(例えば、1ギガビット/秒(Gb/s)、10Gb/s、50Gb/sなど)でデータを転送し得る。ネットワークインターフェースのうちのいくつかは、クラウドにロケートされ得る。複数の記憶システムの接続により、低コストの、分散型の、かつスケーラブルなサーバシステムが提供される。開示された記憶システムおよび/またはサーバシステムのうちの複数は、互いに通信し、ネットワーク(またはクラウド)に含まれ得る。
ソリッドステート不揮発性メモリは各々、例えば、NANDフラッシュメモリおよび/または他のソリッドステートメモリを含み得る。不揮発性メモリは各々、ソリッドステートメモリおよび/または回転磁気媒体を含み得る。不揮発性メモリは各々、SSDおよび/またはHDDを含み得る。
サーバシステムのアーキテクチャは、DRAMをキャッシュとして提供する。DRAMは、それぞれのSoCのL4キャッシュおよび/または最高レベルキャッシュとして割り付けられ、高帯域幅および大きな記憶容量を有する。スタック型DRAMとして、例えば、DDR3メモリ、DDR4メモリ、低電力ダブルデータレートタイプ4(LPDDR4)メモリ、ワイドI/O2メモリ、HMCメモリ、および/または他の好適なDRAMが挙げられ得る。SoCの各々は、1つ以上の制御モジュールを有し得る。制御モジュールは、それぞれのリングバスを介して対応するDRAMと通信する。リングバスは、双方向バスであり得る。これにより、制御モジュールと対応するDRAMとの間に高帯域幅および最小の遅延が提供される。
制御モジュールの各々は、同じまたは異なるSoC内の制御モジュール、DRAMのうちのいずれか、ソリッドステート不揮発性メモリのいずれか、および/または不揮発性メモリのいずれかに記憶されたデータおよび/またはプログラムにアクセスし得る。
SoCおよび/またはSoCのポートは、媒体アクセスコントローラ(MAC)アドレスを有し得る。SoCの制御モジュール(またはプロセッサ)は、それぞれのプロセッサクラスタアドレスを有し得る。制御モジュールの各々は、対応するMACアドレスおよびプロセッサクラスタアドレスを使用して、同じSoC内または別のSoC内の他の制御モジュールにアクセスし得る。SoCの制御モジュールの各々は、DRAMにアクセスし得る。第1のSoCの制御モジュールは、第2のSoCのMACアドレスと第2のSoC内の第2の制御モジュールのプロセッサクラスタアドレスとを有する要求信号を送信することによって、第2のSoCに接続されたDRAMに記憶されたデータおよび/またはプログラムを要求し得る。
SoCおよび/またはSoC内の制御モジュールの各々は、1つ以上のアドレス書き換えテーブルを記憶し得る。アドレス変換テーブルは、SoCのMACアドレス、制御モジュールのプロセッサクラスタアドレス、DRAM内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリのプロセッサ物理アドレス、および/またはDRAM内のメモリセル、ソリッドステート不揮発性メモリ、および不揮発性メモリの物理ブロックアドレスの書き換えを含み、および/または提供し得る。一実施形態では、DRAMコントローラは、仮想アドレスを形成するDRAM行および列アドレスビットを生成する。
一例として、データおよびプログラムは、ソリッドステート不揮発性メモリおよび/または不揮発性メモリに記憶され得る。データおよびプログラムおよび/またはそれらの部分は、ネットワークを介してSoCおよび制御モジュールに配信され得る。制御モジュールによる実行に必要なプログラムおよび/またはデータは、DRAM、ソリッドステート不揮発性メモリ、および/または、制御モジュールがロケートされたSoCの不揮発性メモリにローカルに記憶され得る。次いで、制御モジュールは、DRAM、ソリッドステート不揮発性メモリ、および/または不揮発性メモリから制御モジュール内のキャッシュに対して、実行に必要なプログラムおよび/またはデータにアクセスし、これらを転送し得る。SoCとネットワークとの間および/またはSoC間の通信は、無線通信を含み得る。
さらなる例として、上述の例はまた、SoCを含むサーバシステムに実装され得る。SoCのうちのいくつかは、それぞれのサーバに組み込まれ得、サーバSoCと呼ばれ得る。SoCのうちのいくつか(コンパニオンSoCと呼ばれる)は、第1のSoCのサーバに組み込まれ得るか、または第1のSoCのサーバから分離され得る。サーバSoCはそれぞれ、制御モジュールのクラスタ(例えば、中央処理モジュールなど)、クラスタ内リングバス、FLCモジュール、メモリ制御モジュール、FLCリングバス、および1つ以上のホッピングバスを含む。ホッピングバスは、(i)チップ間バスメンバおよび対応するポートを介してサーバSoCとコンパニオンSoCとの間で、および(ii)コンパニオンSoCを通って、延在する。ホッピングバスは、ホッピングバスストップ、アダプタ、または、1つ以上のSoCのノードおよび対応するポート、との間で延在するバスを指し得る。ホッピングバスは、ホッピングバスストップおよび/または1つ以上のSoCを通って延在し得る。ホッピングバスストップとの間のデータの単一の転送は、シングルホップと呼ばれ得る。マルチホップは、伝送デバイスと受信デバイスとの間でデータを転送するときに実行され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。本明細書に開示された各バスストップは、モジュールとして実装され、クロック信号に基づいてデバイス間でデータを転送するためのロジックを含み得る。また、本明細書に開示された各バスは、データのシリアルおよび/またはパラレル伝送のための任意の数のチャネルを有し得る。
制御モジュールのクラスタの各々は、クラスタ内リングバスのうちの対応する1つを有する。クラスタ内リングバスは、双方向であり、クラスタの各々内の制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号に制御モジュールがアクセスするためのリングバスストップを有し得る。リングバスストップは、信号リピータとして、および/またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第1のものにおける第1の制御モジュールから、リングバスストップのうちの第2のものにおける第2の制御モジュールに伝送され得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
メモリ制御モジュールの各々は、FLCモジュールのうちのそれぞれのものへのアクセスを制御し得る。FLCモジュールは、サーバSoC上にスタックされ得る。FLCモジュールの各々は、FLC(またはDRAM)を含み、本明細書に開示されたFLCモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、FLCリングバス上のそれぞれのリングバスストップでFLCリングバスにアクセスし、リングバスストップとFLCモジュールとの間でデータを転送し得る。これに代えて、FLCモジュールは、それぞれのリングバスストップでFLCリングバスに直接アクセスし得る。メモリ制御モジュールの各々は、FLCモジュールのうちのそれぞれの1つのための、ならびに/またはリングバスおよび/もしくはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび/またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
FLCリングバスは、双方向バスであり、2種類のリングバスストップSRBおよびSRHを有し得る。リングバスストップの各々は、信号リピータとして、および/またはアクセスノードとして機能し得る。リングバスストップSRBは、ホッピングバス以外のデバイスに接続されている。デバイスは、クラスタ間リングバス0、FLCモジュールおよび/またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。クラスタ間リングバスは、(i)クラスタ間、および(ii)交差リングストップ間の接続を提供する。交差リングバスストップは、クラスタ間リングバスへのアクセスを提供し、クラスタ間リングバスを、(i)クラスタと(ii)リングバスストップとの間で延在するリングバス延在部に接続し得る。リングバスストップは、FLCリングバス上にある。クラスタ間リングバスおよび交差リングバスストップは、(iii)第1のクラスタと第2のFLCリングバスのリングバスストップとの間、および(iv)第2のクラスタと第1のFLCリングバスのリングバスストップとの間の接続を提供する。これにより、制御モジュールは、第2のFLCモジュールのFLCにアクセスできるようになり、制御モジュールは、第1のFLCモジュールのFLCにアクセスできるようになる。
クラスタ間リングバスは、チップ内トレースおよびチップ間トレースを含み得る。チップ内トレースは、サーバSoCの内部で、および(i)リングバスストップのうちの1つと(ii)ポートのうちの1つとの間で、延在する。チップ間トレースは、サーバSoCの外部で、およびポートのそれぞれのペア間で、延在する。
サーバSoCの各々のリングバスストップSRHは、FLCリングバスおよびホッピングバスのうちの対応するものに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する1つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップSHBを有する。ホッピングバスストップSHBは、信号リピータとして、および/またはアクセスノードとして機能し得る。
第1のホッピングバス、リングバスストップ、および第1のホッピングバスストップは、(i)FLCリングバスと(ii)サーバSoCの液晶ディスプレイ(LCD)インターフェースと、コンパニオンSoCのインターフェースと、の間の接続を提供する。LCDインターフェースは、ディスプレイに接続され得、GPMを介して制御され得る。コンパニオンSoCのインターフェースとして、シリアル接続小型コンピュータシステムインターフェース(SAS)インターフェースおよびPCIeインターフェースが挙げられる。コンパニオンSoCのインターフェースは、イメージプロセッサ(IP)インターフェースであり得る。
インターフェースは、それぞれのポートに接続されており、ポートは、周辺デバイスなどのデバイスに接続され得る。SASインターフェースおよびPCIeインターフェースは、ポートを介してSAS互換デバイスおよびPCIe互換デバイスにそれぞれ接続され得る。例として、記憶ドライブが、ポートに接続され得る。記憶ドライブは、ハードディスクドライブ、ソリッドステートドライブ、またはハイブリッドドライブであり得る。ポートは、画像処理デバイスに接続され得る。画像処理デバイスの例は、上記に開示されている。第4のSoCは、チップ間バスメンバ(デイジーチェーンメンバとも呼ばれる)を介して第3のSoCにデイジーチェーン接続され得る。チップ間バスメンバは、第1のホッピングバスのメンバである。追加のSoCは、第1のホッピングバスに接続されたポートを介して第4のSoCにデイジーチェーン接続され得る。サーバSoC、制御モジュール、およびFLCモジュールは、FLCリングバス、第1のホッピングバス、および/または第3のSoCを介して第4のSoCと通信し得る。例として、SoCは、サウスブリッジチップであり、(i)サーバSocと(ii)ポートに接続された周辺デバイスとの間の通信および割り込みの転送を制御し得る。
第2のホッピングバスは、リングバスストップおよび第2のホッピングバスストップを介して、(i)FLCリングバスと(ii)サーバSoC内のインターフェースとの間の接続を提供する。サーバSoC内のインターフェースは、Ethernetインターフェース、1つ以上のPCIeインターフェース、およびハイブリッド(または組み合わせ)インターフェースを含み得る。Ethernetインターフェースは、10GEインターフェースであり得、第1のEthernetバスを介してネットワークに接続されている。Ethernetインターフェースは、第1のEthernetバス、ネットワーク、および第2のEthernetバスを介して第2のSoCと通信し得る。ネットワークは、Ethernetネットワーク、クラウドネットワーク、および/または他のEthernet互換ネットワークであり得る。1つ以上のPCIeインターフェースは、例として、第3世代PCIeインターフェースPCIe3およびミニPCIeインターフェース(mPCIe)を含み得る。PCIeインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、SATA互換デバイスおよび/またはPCIe互換デバイスとの間で、SATAおよび/またはPCIeプロトコルに従ってデータを転送するために、SATAおよびPCIe互換であり得る。例として、PCIeインターフェースは、ソリッドステートドライブまたはハイブリッドドライブなどの記憶ドライブに接続され得る。インターフェースは、サーバSoCの外部のデバイスに接続するためのそれぞれのポートを有する。
第3のホッピングバスは、リングバスストップを介してリングバスに接続され得、ホッピングバスストップを介してLCDインターフェースおよびポートに接続され得る。LCDインターフェースは、ディスプレイに接続され得、GPMを介して制御され得る。ポートは、1つ以上のコンパニオンSoCに接続され得る。第4のホッピングバスは、(i)リングバスストップを介してリングバスに、および(ii)ホッピングバスストップを介してインターフェースに接続され得る。インターフェースは、Ethernet、PCIe、およびハイブリッドインターフェースであり得る。インターフェースは、それぞれのポートを有する。
サーバSoCおよび/または他のサーバSoCは、クラスタ間リングバスを介して互いに通信し得る。サーバSoCおよび/または他のサーバSoCは、それぞれのEthernetインターフェースおよびネットワークを介して互いに通信し得る。
コンパニオンSoCは、それぞれの制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してインターフェースにアクセスし、および/またはインターフェースへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップのうちの対応するもの、および/またはインターフェースのうちの対応するものに接続され、およびそれらと通信し得る。
さらなる例として、上述の例はまた、モバイルデバイスの回路に実装され得る。モバイルデバイスは、コンピュータ、携帯電話、または他の無線ネットワークデバイスであり得る。回路は、SoCを含む。SoCは、モバイルSoCと呼ばれ得る。SoCは、コンパニオンSoCと呼ばれ得る。モバイルSoCは、制御モジュールのクラスタ、クラスタ内リングバス、FLCモジュール、メモリ制御モジュール、FLCリングバス、および1つ以上のホッピングバスを含む。ホッピングバスは、(i)チップ間バスメンバおよび対応するポートを介してモバイルSoCとコンパニオンSoCとの間で、および(ii)コンパニオンSoCを通って延在する。
クラスタ内リングバスは、双方向であり、制御モジュール間の通信を提供する。クラスタ内リングバスは、クラスタ内リングバス上で伝送されるデータ信号への制御モジュールによるアクセスのためのリングバスストップを有し得る。リングバスストップは、信号リピータおよび/またはアクセスノードとして機能し得る。制御モジュールは、リングバスストップを介してクラスタ内リングバスに接続され、およびアクセスし得る。データは、クラスタ内リングバスを周って、リングバスストップのうちの第1のものにある第1の制御モジュールから、リングバスストップのうちの第2のものにある第2の制御モジュールに伝送され得る。データは、データが宛先に到達するまで、各クロックサイクルでバスストップ間を移動し得る。制御モジュールの各々は、中央処理装置またはプロセッサであり得る。
メモリ制御モジュールは、FLCモジュールへのアクセスを制御し得る。一実施形態では、メモリ制御モジュールは、含まれない。FLCモジュールは、モバイルSoC上にスタックされ得る。FLCモジュールは、FLCまたはDRAMであり得、本明細書に開示されたFLCモジュールのいずれかとして実装され、およびそれと同様に動作し得る。メモリ制御モジュールは、FLCリングバス上のそれぞれのリングバスストップでFLCリングバスにアクセスし、リングバスストップとFLCモジュールとの間でデータを転送し得る。これに代えて、FLCモジュールは、それぞれのリングバスストップでFLCリングバスに直接アクセスし得る。メモリ制御モジュールは、FLCモジュール、リングバスおよび/またはホッピングバスのバスストップのためのメモリクロック信号を生成するメモリクロックを含み得る。バスストップは、リングバスおよび/またはホッピングバスを介して間接的に、またはメモリ制御モジュールから直接、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいてバスストップを通って循環し得る。
FLCリングバスは、双方向バスであり、2種類のリングバスストップSRBおよびSRHを有し得る。リングバスストップの各々は、信号リピータとして、および/またはアクセスノードとして機能し得る。リングバスストップSRBは、ホッピングバス以外のデバイスに接続されている。デバイスは、FLCモジュールおよび/またはメモリ制御モジュール、ならびにグラフィック処理モジュールを含み得る。
モバイルのSoCのリングバスストップSRHは、FLCリングバスとホッピングバスのうちの対応する1つに接続されている。ホッピングバスの各々は、ホッピングバスのうちの対応する1つへのそれぞれのインターフェースアクセスを提供する複数のホッピングバスストップSHBを有する。ホッピングバスストップSHBは、信号リピータとして、および/またはアクセスノードとして機能し得る。
第1のホッピングバス、リングバスストップ、および第1のホッピングバスストップは、(i)FLCリングバスおよび(ii)液晶ディスプレイ(LCD)インターフェース、ビデオ処理モジュール(VPM)、ならびにコンパニオンSoCのインターフェースの間に接続されている。LCDインターフェースは、サーバSoC内にあり、ディスプレイに接続され得、GPMを介して制御され得る。コンパニオンSoCのインターフェースとして、セルラインターフェース、無線ローカルエリアネットワーク(WLAN)インターフェース、および画像信号プロセッサインターフェースが挙げられる。セルラインターフェースは、他のモバイルデバイスおよび/または無線デバイスとの無線通信のための物理層デバイスを含み得る。物理層デバイスは、ロングタームエボリューション(LTE)規格および/または第3世代(3G)、第4世代(4G)、および/または第5世代(5G)モバイル通信規格に従って、動作し、および/または信号を伝送および受信し得る。WLANインターフェースは、Bluetooth(登録商標)、Wi−Fi(登録商標)、および/または他のWLANプロトコルに従って動作し、モバイルデバイスのWLAN内の他のネットワークデバイスと通信し得る。ISPインターフェースは、記憶ドライブまたは他の画像処理デバイスなどのコンパニオンSoCの外部の画像処理デバイス(または画像信号処理デバイス)に接続され得る。インターフェースは、それぞれのポートを介してコンパニオンSoCの外部のデバイスに接続され得る。ISPインターフェースは、モバイルデバイスの外部のデバイスに接続され得る。
コンパニオンSoCは、チップ間バスメンバを介してモバイルSoCに接続され得る。チップ間バスメンバは、第1のホッピングバスのメンバである。追加のSoCが、第1のホッピングバスに接続されたポートを介してコンパニオンSoCにデイジーチェーン接続され得る。モバイルSoC、制御モジュール、およびFLCモジュールは、FLCリングバスおよび第1のホッピングバスを介してコンパニオンSoCと通信し得る。
第2のホッピングバスは、リングバスストップおよび第2のホッピングバスストップを介して、(i)FLCリングバスと(ii)モバイルSoC内のインターフェースとの間の接続を提供する。モバイルSoC内のインターフェースは、Ethernetインターフェース、1つ以上のPCIeインターフェース、およびハイブリッド(または組み合わせ)インターフェースを含み得る。Ethernetインターフェースは、10GEインターフェースであり得、ポートを介してEthernetネットワークに接続されている。1つ以上のPCIeインターフェースは、例として、第3世代PCIeインターフェースPCIe3およびミニPCIeインターフェース(mPCIe)を含み得る。PCIeインターフェースは、ソリッドステートドライブに接続され得る。ハイブリッドインターフェースは、SATA互換デバイスおよび/またはPCIe互換デバイスとの間で、SATAおよび/またはPCIeプロトコルに従ってデータを転送するために、SATAおよびPCIe互換であり得る。例として、PCIeインターフェースは、ポートを介して記憶ドライブに接続され得る。記憶ドライブは、ソリッドステートドライブまたはハイブリッドドライブであり得る。インターフェースは、モバイルSoCの外部のデバイスに接続するためのそれぞれのポートを有する。
コンパニオンSoC、は制御モジュールを含み得る。制御モジュールは、ホッピングバスストップを介してVPMおよびインターフェースにアクセスし、および/またはそれらへのアクセスを制御し得る。一実施形態では、制御モジュールは、含まれない。制御モジュールは、ホッピングバスストップ、VPM、および/またはインターフェースに接続され、およびそれらと通信し得る。
キャッシュラインサイズ
この例示的な実施形態では、4Kバイトのキャッシュラインサイズが、選択されている。他の実施形態では、他のキャッシュラインサイズが、利用され得る。このサイズのキャッシュラインを使用することによる1つの利点は、このサイズが、オペレーティングシステムによってアプリケーションまたはプログラムに、最小のメモリ割り付けサイズとして通常割り当てられるメモリページサイズのサイズに適合することである。その結果、4Kバイトのキャッシュラインサイズは、オペレーティングメモリの割り付けサイズと整合する。
プロセッサは通常、一度に64バイトしか、読み取りまたは書き込みを行わない。したがって、例として4Kバイトを使用すると、FLCキャッシュラインサイズは、はるかに大きくなる。その結果、書き込みまたは読み取りの要求がFLCモジュールでのミスをもたらすと、システムはまず、記憶ドライブから4Kバイトを丸ごと(すなわち、記憶ドライブパーティション内の最終レベルのメインメモリ)読み取る。それが行われた後、システムは、取り出されたキャッシュラインにプロセッサデータを書き込むことができ、このキャッシュラインは、DRAMに記憶される。キャッシュラインは、仮想アドレスによって識別される。キャッシュライン全体が、一度にメモリから引き出される。さらに、キャッシュライン全体は、FLC−SSモジュールからFLC−HSモジュールへなど、回送される。運用システムには、100,000またはさらには100万個以上のキャッシュラインがあり得る。
FLCモジュールのキャッシングをCPUキャッシュと比較すると、これらの要素は、別個かつ別異のキャッシュである。CPU(プロセッサキャッシュ)は、示されているようなプロセッサデバイスの一部であり、先行技術のように構成されている。FLCモジュールはキャッシュとして動作し、メインメモリとして作用し、CPUキャッシュとは別個であり、かつ別異する。FLCモジュールキャッシュは、メインメモリおよび関連付けられたコントローラと同じように、数分間の動作にわたって必要になる可能性があるすべてのデータを追跡する。ただし、CPUキャッシュは、プロセッサが必要とするか、または次の数マイクロ秒または場合によっては1ミリ秒で使用するもののみを、追跡および記憶する。
完全連想FLCキャッシュ
完全連想ルックアップは、大量の真にランダムなプロセッサタスク/スレッドを半永久的に(数秒から数分で測定した場合)FLCキャッシュに常駐させることができる。そうでなければプロセッサが作業している何千ものタスクまたはスレッドが、FLCキャッシュに保持されるはずである多数のタスク/スレッドを容易に破棄(中断)し得るため、これは基本的な機能である。ただし、完全連想ルックアップは、シリコン領域、電力、またはその両方の点でコストがかかる。したがってまた、完全連想ルックアップテーブル内のエントリ数を最小限に抑えるために、FLCキャッシュラインサイズが最大化されることは重要である。実際、現在64BであるCPUキャッシュラインサイズをはるかに大きくすることが重要である。同時に、キャッシュラインサイズは、オペレーティングシステム(OS)に過度の問題を引き起こす可能性があるため、大きすぎないのがよい。最新のOSは通常、4KBのページサイズを使用するため、したがって、例示的な一実施形態では、FLCキャッシュラインサイズは、4KBに設定される。将来、OSページサイズが、16KBに増加した場合には、FLCキャッシュラインサイズも、理論的には16KBとされ得る。
完全連想アドレスルックアッププロセスのエネルギーコストを隠すために、一実施形態では、アドレス書き換えテーブルのためのアドレスキャッシュが、FLCコントローラに含まれる。アドレスキャッシュが、プロセッサデータをキャッシュしないことに注意することが重要である。代わりに、アドレスキャッシュは、最近確認されたアドレス書き換えと、物理アドレスから仮想アドレスへの書き換えと、のみをキャッシュする。そのため、任意でのアドレスキャッシュは、完全連想である必要がない。5%のミス率でも、完全連想ルックアッププロセスを実行する必要性が少なくとも20倍低減されるため、アドレスキャッシュ用の単純なセット連想キャッシュで十分である。アドレスキャッシュはこれに加えて、アドレスキャッシュで使用される単純なセット連想キャッシュは、通常1クロックサイクルでアドレスを書き換え得るため、アドレス書き換え遅延の低下をもたらす。これは、CAMのようなアドレス書き換え動作を実行し得る最速のマルチステージハッシュアルゴリズムよりも、およそ10〜20倍高速である。
記憶ドライブのメモリ割り付け
記憶ドライブ78は、磁気ディスクドライブ、ソリッドステートドライブ、ハイブリッドドライブ、光学ドライブ、または任意の他のタイプの記憶デバイスなどの従来の不揮発性記憶デバイスであり得る。FLCモジュールと関連付けられたDRAM、ならびに記憶ドライブのパーティション化された部分は、メインメモリとして作用する。本明細書に開示された実施形態では、DRAMの量は、伝統的な先行技術のコンピューティングシステムよりも小さい。これにより、消費電力の低下、システムコストの低下、および空間要件の低減という利点が提供される。システム動作に追加のメインメモリが必要である場合、記憶ドライブ78の一部分が、追加のメインメモリとして使用するために割り付けられるか、またはパーティション化(予約)される。記憶ドライブ78は、記憶ドライブコントローラを有すると理解され、記憶ドライブコントローラは、従来のファイル要求に対する処理デバイス500からの要求を、またメインメモリの拡張部として予約された記憶ドライブのパーティションに記憶された情報に対するFLCモジュールからの要求を、処理する。
図4は、例示的な一動作方法の例示的な操作方法を例示している。これは、可能な動作方法の1つに過ぎず、そのため、特許請求の範囲から逸脱しない他の方法が想到される。この例示的な動作方法は、図2に示されているようなFLCコントローラシステムを代表する。以下のタスクは、主に図2の例に関して記載されているが、タスクは、本開示内の他の実施形態に適用され得る。タスクは、反復的に、または並列で実行され得る。
この方法は、システムが初期化され得るステップ408で開始する。ステップ412で、FLCコントローラは、所有デバイス(プロセッサ)から読み取り要求または書き込み要求の要求を受信する。要求は、プロセッサがデータのロケーションを識別するために使用するか、またはデータが書き込まれる物理アドレスを含む。
決定ステップ416で、プロセッサによって提供された物理アドレスが、FLCコントローラ内にロケートされているかどうかの決定が、行われる。FLCコントローラのメモリ(SRAM)は、物理アドレスから仮想アドレスへのマップデータを記憶する。物理アドレスがFLCコントローラ内にロケートされていることは、ヒットとして指定されている一方、物理アドレスがFLCコントローラ内に配置されていないことは、ミスとして指定されている。プロセッサの、データ(物理アドレスを含む)の要求は、FLCコントローラが、FLCコントローラのメモリ内に物理アドレスエントリを有する場合にのみ、FLCモジュールによって満たされる。物理アドレスが、FLCコントローラのメモリ内に記憶されていない場合には、要求は、記憶ドライブに回送されなければならない。
決定ステップ416で、物理アドレスが、FLCコントローラ内で識別された場合には、要求は、ヒットと見なされ、動作は、ステップ420に進む。ステップ420で、FLCコントローラは、FLCコントローラのメモリ、またはFLCコントローラによって使用するために割り付けられた、DRAMの一部であるメモリに記憶されたルックアップテーブルを使用するルックアップ動作に基づいて、物理アドレスを仮想アドレスに書き換える。仮想アドレスは、FLC DRAM内の物理アドレスと関連付けられ得る。FLCコントローラは、(プロセッサからの)物理アドレスを仮想アドレスにマッピングするための1つ以上の書き換えマッピングテーブルを含み得る。図5Bは、メモリを有するFLCコントローラを、より詳細に例示している。
物理アドレスを仮想アドレスに書き換えた後、動作は、決定ステップ424に進む。決定ステップ416で、物理アドレスが、FLCコントローラ内にロケートされていない場合、ミスが発生しており、動作は、ステップ428に進む。ステップ428で、FLCコントローラは、FLCコントローラ内に、読み取りまたは書き込みされるデータのための、かつまだFLCモジュール(すなわち、FLCモジュールのDRAM)内にない新たな(この場合は空の)キャッシュラインを割り付ける。他の方法では空間が利用できない場合、既存のキャッシュラインが、上書きされ得る。ステップ428は、プロセッサによって提供された物理アドレスを含むようにメモリマッピングを更新することにより、FLCコントローラをその物理アドレスを有するものとして確立することを含む。次に、ステップ432で、物理アドレスは、データを取り出すために記憶ドライブによって使用されるアドレスである記憶ドライブアドレスに書き換えられる。この実施形態では、FLCコントローラは、このステップを実行するが、他の実施形態では、記憶ドライブなどの他のデバイスが、書き換えを実行し得る。記憶ドライブアドレスは、記憶ドライブによって使用されるか、または記憶ドライブによって理解されるアドレスである。一実施形態では、記憶ドライブアドレスは、PCI−eアドレスである。
ステップ436で、FLCコントローラは、記憶アドレスを、記憶ドライブ、例えば、PCI−eベースのデバイス、NVMe(不揮発性メモリエクスプレス)タイプのデバイス、SATTA SSDデバイス、または現在既知であるか、または将来開発される任意の他の記憶ドライブに回送する。上記で議論したように、記憶ドライブは、従来のハードディスクドライブ、SSD、またはハイブリッドドライブであり得、記憶ドライブの一部分を従来の意味で使用して、ドキュメント、画像、ビデオなどのファイルを記憶する。記憶ドライブの一部分がまた、FLCモジュール(単数または複数)のDRAMによって提供された記憶容量を補うために、メインメモリとして使用およびパーティション化される。
ステップ440に進むと、記憶ドライブコントローラ(図示せず)は、プロセッサによって提供された物理アドレスで、記憶ドライブからキャッシュラインを取り出し、キャッシュラインは、FLCコントローラに提供される。キャッシュラインアドレスによって識別されるキャッシュラインは、要求されたデータを記憶するか、またはデータが書き込まれるロケーションとして指定される。これは、当技術分野で知られている様式で行われ得る。ステップ444で、FLCコントローラは、キャッシュラインをFLC DRAMに書き込み、キャッシュラインは、物理アドレスに関連付けられ、この関連付けが、FLCコントローラ内のループアップテーブルに維持されるようになっている。
また、ステップ444の一部は、キャッシュラインまたはデータを最も最近使用されたものとして指定するためのFLCステータスレジスタの更新である。DRAMまたは別個のレジスタに格納され得るFLCステータスレジスタは、FLC DRAM内のキャッシュラインまたはデータが、プロセッサによって最後に使用されたか、アクセスされたか、または書き込まれたときを追跡するレジスタである。キャッシュメカニズムの一部として、最近使用されたキャッシュラインがキャッシュに保持されるため、最近使用されたデータは、要求されたときにプロセッサで再度すぐに利用可能である。キャッシュラインは、プロセッサによって最も過去に使用されたか、アクセスされたか、または書き込まれ、より最近使用されたキャッシュライン/データ用の余地を確保するために、上書きされる。この配置では、キャッシュは、最も過去に使用された、先出し方式で動作する。ステップ444の後、動作は、ステップ424に進む。
決定ステップ424で、プロセッサからの要求が、読み取り要求または書き込み要求として評価される。要求が書き込み要求である場合、動作は、ステップ448に進み、書き込み要求は、仮想アドレスと共にFLC DRAMコントローラに送信される。図2に示され、かつ当技術分野で理解されているように、DRAMデバイスは、DRAMに対する読み取り/書き込み動作を監視するための関連付けられたメモリコントローラを有する。ステップ452で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ456で、これらを使用してプロセッサ(プロセッサデータ)からFLC DRAMにデータを書き込む。次いで、ステップ460で、FLCコントローラは、キャッシュラインまたはデータのFLCステータスレジスタを更新して、FLC DRAMに書き込まれたばかりのキャッシュライン/データの最近の使用を反映する。物理アドレスは、FLCコントローラのメモリマッピングへとマッピングされるため、プロセッサによって要求された場合、そのFLCコントローラは今度は、その物理アドレスを所有する。
これに代えて、決定ステップ424で、プロセッサからの要求が、読み取り要求であると決定された場合、動作は、ステップ464に進み、FLCコントローラは、含む読み取り要求を仮想アドレスと共に、DRAMコントローラによる処理のためにFLC DRAMコントローラに送信する。次いで、ステップ468で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ472で、これらを使用して、FLC DRAMからデータを読み取り(取り出し)、データをプロセッサに提供できるようにする。ステップ476で、FLC DRAMから取り出されたデータは、プロセッサの読み取り要求を満たすためにプロセッサに提供される。次いで、ステップ480で、FLCコントローラは、FLC DRAMから読み取られたデータの最近の使用を反映するために、データ(アドレス)のFLCステータスレジスタを更新する。物理アドレスは、FLCコントローラのメモリマッピングへとマッピングされるため、そのFLCコントローラは、プロセッサによって再度要求された場合に、メモリマッピング内の物理アドレスをすぐに利用可能であるように維持する。
図4の上述のタスクは、例示的な例であることが意図されており、タスクは、アプリケーションに応じて、重複する期間中に、または異なる順序で、順次に、並列で、同期して、同時に、連続的に実行され得る。また、イベントの例および/またはシーケンスによっては、タスクのうちのいずれかは、実行またはスキップされない場合がある。
FLCステータスレジスタの更新
上記で議論したように、ステータスレジスタは、FLCモジュールに記憶されたキャッシュラインの状態を維持する。キャッシュラインおよびキャッシュラインに記憶されたデータに関するいくつかの態様が追跡され得ることが想到される。そのような一態様は、事前設定された基準に関連する、または他のキャッシュラインに関連する異なるキャッシュラインの相対的な重要度である。一実施形態では、最も最近アクセスされたキャッシュラインが、最も重要度が高いとマークまたは定義される一方、最も過去に使用されたキャッシュラインが、最も重要度が低いとマークまたは定義される。例えば最も過去に使用されたなど、最も重要度が低いとマークされたキャッシュラインは、FLCから追い出されるか、または上書きされて、FLCに新たなキャッシュラインを作り出せるようにするか、または新たなデータを記憶できるようにするのに適格となる。このタスクに使用されるステップは、当業者によって理解され、したがって、本明細書では詳細に記載されていない。ただし、従来のCPUキャッシュコントローラとは異なり、FLCコントローラはこれに加えて、CPU/GPUによって書き込まれたキャッシュラインを追跡する。このことは、読み取りにのみ使用されていたキャッシュラインが、最終的にFLCからパージされたときに、FLCコントローラが、SSDなどの記憶ドライブに誤って書き込みを行わないようにするために行われる。このシナリオでは、FLCコントローラは、書き込まれたFLCキャッシュラインを「ダーティ」とマークする。
一実施形態では、特定のキャッシュラインは、ロックされたFLCキャッシュラインとして設計され得る。FLC内の特定のキャッシュラインは、FLCからそのようなキャッシュラインが誤ってパージされるのを防止するためにロックされ得る。このことは、そのようなアドレス/データが、取り出しの遅延を許容することができない場合に、FLCコントローラ内にデータのアドレスを保持するために特に重要であり得、したがって、それが、最も過去に使用された場合でも、ロックされ、したがって、FLCに維持される。
また、ロックされたキャッシュラインのためのタイムアウトタイマが実装され得ることが想到される。この構成では、キャッシュラインが、ロックされ得るが、タイマによって追跡される際の特定の期間の間のみである。タイマは、ロック生成から一定時間後、またはキャッシュラインの使用後にリセットし得る。時間は、キャッシュライン、キャッシュラインに記憶されたデータ、またはキャッシュラインに割り当てられたアプリケーションもしくはプログラムに基づいて変動し得る。
これに加えて、以下の目的で、すなわち、非常に長い非アクティブ期間の後に、ロックされたキャッシュラインをFLCからパージできるようにして、またはロックされたキャッシュラインを最終的にFLCモジュールの次のステージまたはレベルにパージし、かつ同時に、次のFLCステージで、ロックされたステータスビットを継承できるようにして、以前にロックされたキャッシュラインが高速度FLCモジュールからパージされることから結果として得られるキャッシュライン/データ取り出しの時間ペナルティを最小限に抑えるために、ロックされたキャッシュラインにタイムアウトビットが提供されることが想到される。
図5Aは、カスケードされたFLCシステムの例示的な実施形態のブロック図である。これは、カスケードされたFLCシステムの1つの可能な配置にすぎない。特許請求の範囲から逸脱しない他の実施形態が、可能である。この実施形態では、プロセッサ500が、提供される。処理デバイス500は一般に、図2に示された処理デバイス72と同様であり得る。図2の要素の議論は、図5Aの要素に組み込まれ、繰り返される。処理デバイス500は、中央処理装置(CPU)、グラフィック処理装置(GPU)、またはシステムオンチップ(SoC)を含むがこれらに限定されない任意の他のタイプの処理システムであり得る。処理デバイス500は、レベル0、レベル1、レベル2、およびレベル3のキャッシュなどの様々なレベルのプロセッサキャッシュ512を含むプロセッサ504を含む。メモリ管理モジュール508はまた、プロセッサ504を様々なレベルのプロセッサキャッシュ512にインターフェース接続し、データ要求のためなど、プロセッサを処理デバイス500の外部の要素にインターフェース接続するために提供される。
また、図5Aの実施形態の一部は、記憶ドライブ78である。記憶ドライブ78は一般に、図2の記憶ドライブ78と同様であり、そのため、再度詳細には記載されていない。記憶ドライブ78として、従来の回転デバイスまたはソリッドステートドライブ、複合ハイブリッドドライブなどのハードディスクドライブが挙げられ得る。記憶ドライブ78は、入力および出力機能を監視するためのコントローラ(図示せず)を含む。ファイル入力/出力経路520は、マルチプレクサ554を通して処理デバイス500を記憶ドライブ78に接続している。ファイルI/O経路520は、従来のシステムで行われ得るようにファイルを記憶ドライブに直接保存するなど、書き込み動作のためにプロセッサが記憶ドライブ78に直接アクセスするための経路およびメカニズムを提供する。マルチプレクサ554は、FLC−SS536またはファイルI/O経路520からのいずれかの入力を、制御信号入力556上の制御信号に応答して、選択的に通過させる双方向スイッチである。
図2、図5A、図6、図8、図10、および図12に示されているようなFLCを有する実施形態では、記憶ドライブは、メインメモリの拡張部(RAMメモリの拡張部)として割り付けられるか、パーティション化されるか、または予約されたセクションを有する。それゆえ、記憶ドライブ78の一部分が、従来のフォルダまたはディレクトリ構造でユーザが閲覧可能であるドキュメント、写真、ビデオ、音楽などのユーザファイルの従来の記憶装置に使用される。また、オペレーティングシステム、ドライバ、アプリケーションコード、および処理デバイスによって処理されているアクティブなデータなどの、プロセッサによって使用されるアクティブなプログラムおよび命令を記憶するためのDRAMメインメモリの拡張部として動作するための、FLCシステムによって使用するために割り付けられるか、パーティション化されるか、または予約された記憶ドライブ78の一部分がある。メインメモリは、コンピュータがアクティブに使用している情報を記憶するため、メインメモリは、コンピュータシステムの短期間のデータ記憶装置である。メインメモリという用語は、メインメモリ、プライマリメモリ、システムメモリ、またはRAM(ランダムアクセスメモリ)を指す。メインメモリに記憶されるが、最も過去に使用されたデータ(オペレーティングシステム、ドライバ、アプリケーションコード、およびアクティブデータ)は、記憶ドライブのメインメモリパーティションに記憶される。図2、図5A、図6、図8、図10、および図12の実施形態では、また本明細書に記載された他の実施形態では、システムバスは、図2に示されているように、処理デバイスとFLCモジュールとの間にロケートされ得る。
記憶ドライブ78のメインメモリパーティションは、I/O動作のためにRAMよりも低速であるが、FLCモジュールのヒット率は、99%以上など非常に高いため、記憶ドライブ内のメインメモリパーティションに対するI/Oが発生することは稀であり、したがって、性能を悪化させない。記憶ドライブ78および記憶ドライブ78のメインメモリパーティションについてのこの議論は、他の図に示された記憶ドライブに当てはまる。示され、および記載されたすべての実施形態では、記憶ドライブのメインメモリパーティションの内容は、暗号化され得る。記憶ドライブ78(不揮発性である)のメインメモリパーティションに記憶された個人情報、インターネット履歴、パスワード、文書、電子メール、画像の閲覧を防止するために暗号化が行われ得る。暗号化により、コンピューティングデバイスを廃棄、リサイクル、または紛失した場合、この機密情報を読み取ることはできない。電源遮断時に記憶されたデータを維持しないRAMとは異なり、記憶ドライブは、電源遮断イベントがあってもデータを維持する。
図5Aに示されているように、2つの最終レベルキャッシュ(FLC)モジュール540、542が、カスケード構成で配置されている。各モジュール540、542は、FLCステージと呼ばれる。2つのカスケードされたステージを有して示されているが、より多数のステージが、カスケードされ得る。FLCステージ(モジュール)540、542の各々は一般に、図2に示されたFLCモジュール76に類似しており、そのため、これらのユニットは、本明細書では詳細に記載されていない。このカスケード構成では、FLCモジュール540は、標準速度モジュールである他方のFLCモジュール542よりも高帯域幅、低遅延、および低電力使用で動作するように構成された高速度(HS)モジュールである。FLC−HSモジュールがFLC−SSよりも頻繁に利用されることに起因して、FLC−HSモジュール542の低電力、高速度の態様によって実現される利点が、さらに増大する。FLC−HSモジュールは、主に使用されるメモリであり、99%よりも大きいヒット率を有し、したがって、ほとんどすべてのメインメモリアクセスで速度および電力節減を提供する。FLCモジュール542は、標準速度(SS)と呼ばれ、高速でありながら、動作速度よりも低コストで最適化されている。高速度DRAMよりも標準速度DRAMの容量が大きいため、コスト節減が、最大化され、標準速度DRAMの量は、これらのFLCの実施形態では、多くの場合8GBまたは16GBのRAMを搭載している先行技術のコンピュータで利用されるものよりも小さい。例示的なFLCシステムは、4GBのDRAM、および32GBパーティションの記憶ドライブを有し得る。このことは、8〜16GBのRAMを有する通常のラップトップコンピュータの約200ドルのコスト節減をもたらす。さらに、メモリアクセスのほとんどは、高速度FLCモジュールによって正常に処理されるため、標準速度FLCモジュールは大抵、非アクティブであり、したがって、電力を消費しない。この構成の利点は、以下で論じられている。FLC−HSモジュール540のメモリ容量は、FLC−SSモジュール542のメモリ容量よりも小さいことが想到される。一実施形態では、FLC−SSモジュールのメモリ量は、FLC−HSモジュール内のメモリの量よりも8倍大きい。ただし、いくつかのアプリケーションは、32倍よりも大きい容量比を許容することさえあり得る。
FLC−HSコントローラおよびDRAM−HSの両方が、低消費電力、高帯域幅、低遅延(高速度)に最適化されていることに留意されたい。したがって、両方の要素が、上述の利点を提供する。一方、FLC−SSコントローラおよびDRAM−SSの両方が、低コストに最適化されている。一構成では、FLC−HSコントローラのルックアップテーブルは、FLC−HSコントローラ、利用されるSRAM、または他の高速度/低電力メモリ内にロケートされる。ただし、FLC−SSについて、ルックアップテーブルは、DRAM−SSに記憶され得る。この構成を有することは、ルックアップテーブルをFLC−SSコントローラに記憶するよりも低速であるが、FLC−SSに必要なルックアップテーブル用にDRAM−SSの小部分をパーティション化する方が費用効果が高い。一実施形態では、DRAM−SSに記憶されたルックアップテーブルにアクセスする時間ペナルティを低減するために、最も最近確認された(使用された)アドレス書き換えをキャッシュするための、DRAM−SSルックアップテーブルの小さいSRAMキャッシュが含まれ得る。そのようなアドレスキャッシュは、アドレス書き換えテーブルのみがキャッシュされるため、完全連想である必要はない。5%のミスでも、DRAMでアドレス書き換えを行う必要性を、20分の1に低減するため、CPU L2およびL3キャッシュで使用されるもののようなセット連想キャッシュで十分である。このことは、64,000個のルックアップテーブルエントリから1000個がキャッシュされるなど、ごく小さい割合で達成され得る。アドレスキャッシュはまた、最も過去に使用された/先出しの動作に基づき得る。
この実施形態では、FLCモジュール540は、FLC−HSコントローラ532と、関連付けられたメモリコントローラ544を有するDRAM−HSメモリ528と、を含む。FLCモジュール542は、FLC−SSコントローラ536と、関連付けられたメモリコントローラ548を有するDRAM−SSメモリ524と、を含む。FCL−HSコントローラ532は、処理デバイス500に接続している。また、示されているように、DRAM−HS528に、またFLC−SSコントローラ536に接続している。FLC−SSコントローラ536の出力は、DRAM−SS524に、また記憶ドライブ78に接続している。
各DRAM528、524のコントローラ544、548は、当技術分野で理解されているように動作して、DRAMに対する読み取りおよび書き込みの動作をガイドおよび制御し、そのため、これらの要素および関連した動作は、詳細に記載されていない。DRAMとして示されているが、任意のタイプのRAMが、利用され得ることが想到される。コントローラ544、548とDRAM528、524との間の接続は、これらの要素間の通信を可能にし、データがそれぞれのDRAMから取り出され、およびそれぞれのDRAMに記憶されることを可能にする。
この例示的な実施形態では、FLCコントローラ532、536は、DRAM528、524内のロケーションに対応するアドレスに書き換えられ得る物理メモリアドレスを記憶する1つ以上のルックアップテーブルを含む。例えば、物理アドレスは、仮想アドレスに変換され得、DRAMコントローラは、仮想アドレスを使用して、DRAMの行アドレスビットおよび列アドレスビットを生成し得る。DRAM528、524は、キャッシュメモリとして機能する。この実施形態では、ルックアップテーブルは、完全連想であり、したがって、1対1のマッピングを有し、単一のキャッシュブロックへの2つ以上のメモリアドレスマッピング間の競合を引き起こさない任意のキャッシュブロックにデータが記憶されることを許容する。
図5Aに示されているように、標準速度FLCモジュール542は、処理デバイス500に直接接続していない。高速度FLCモジュール540のみを処理デバイス500に接続させることによって、標準速度FLCモジュール542は、高速度FLCモジュール540に専用である。1つの高速度FLCモジュールは、1つ以上の標準速度FLCモジュールを共有し得ることが想到される。この配置は、FLC−HSコントローラ532内のミスを、処理デバイス500を通し返して再ルーティングし、必然的に、貴重なシステムバスリソースを消費し、かつ処理デバイス500に対して追加のオーバーヘッドを作り出す標準速度FLCモジュール542にルーティングする必要があることによって、プロセッサを低速化しない。
一般に、メモリ読み取りイベントの動作中に、要求されたデータの物理アドレスを有するデータ要求が、処理デバイス500からFLC−HSコントローラ532に送信される。FLC−HSコントローラ532は、FLC−HSコントローラ532によってアクセス可能なメモリアドレスの1つ以上のテーブルを、関連付けられたDRAM−HS528に記憶する。FLC−HSコントローラ532は、FLC−HSコントローラ532のメモリテーブルが、対応する物理アドレスを含むかどうかを判定する。FLC−HSコントローラ532が、FLC−HSコントローラ532のテーブル内に対応するメモリアドレスを含む場合には、FLC−HSコントローラ532が、(コントローラ544を介して)DRAM−HS528からデータを取り出すというヒットが発生し、当該データは、FLC−HSコントローラを介して処理デバイス500に提供し返される。
これに代えて、FLC−HSコントローラ532が、適合する物理アドレスを含まない場合、結果はミスであり、要求は、FLC−SSコントローラ536に回送される。このプロセスは、FLC−SSコントローラ536で繰り返され、適合する物理アドレスがFLC−SSコントローラ536のメモリアドレスルックアップテーブル内にロケートされている場合、要求されたものは、仮想メモリアドレスに書き換えられるか、または変換され、データは、メモリコントローラ548を介してDRAM−SS524から引き出される。DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成する。適合する物理アドレスが、FLC−SSコントローラ536のメモリアドレスルックアップテーブル内にロケートされている場合には、データ要求および物理アドレスは、FLC−SSコントローラ536によって記憶ドライブに向けられる。
要求されたデータが、DRAM−HS528内で利用可能でないが、DRAM−SSから記憶され、および取り出される場合には、取り出されたデータは、FLC−SSコントローラ536に、次いでFLC−HSコントローラに、そして次いでプロセッサ500に転送されることによってプロセッサに提供されるときに、DRAM−HS内に埋め戻される。データを埋め戻すときに、DRAM−SSまたはDRAM−HS内で空間が利用可能でない場合には、最も過去に使用されたデータまたはキャッシュラインが削除されるか、またはその中のデータが上書きされる。一実施形態では、高速度キャッシュから削除されたデータは、標準速度キャッシュに追加の空間が必要になるまで、標準速度キャッシュ内に残る。いくつかの場合では、データは、高速度FLCモジュールのみに記憶され、標準速度FLCモジュールには記憶されないか、またはその逆であり得ることがさらに想到される。
要求されたデータが、DRAM−HS528内で利用可能でなく、またDRAM−SS524内で利用可能でなく、したがって記憶ドライブ78から取り出された場合には、取り出されたデータは、プロセッサに提供されると、DRAM−HS、DRAM−SS、または、その両方内に埋め戻される。したがって、最も最近使用されたデータは、DRAM528、524に記憶され、時間外に、DRAMコンテンツは、最も最近使用されたデータで動的に更新される。最も使用頻度が低いデータは、DRAM528、524から破棄されるか、またはDRAM528、524内で上書きされて、より最近使用されたデータに空間を作成する。これらの埋め戻し経路は、図5Aに「第1のステージのキャッシュ置換経路」および「第2のステージのキャッシュ置換経路」として示されている。
図5Bは、FLCコントローラの例示的な実施形態のブロック図である。これは、FLCコントローラの基本要素の1つの構成にすぎない。当業者は、追加の要素、データ経路、およびサポート要素が、本明細書に開示されたすべての実施形態のワーキングシステムに存在することを理解するであろう。これらの要素、データ経路、およびサポート要素は、示されておらず、代わりに、開示されたイノベーションをサポートする要素に焦点が当てられている。図5BのFLCコントローラ532は、図5AのFLCコントローラ532、または本明細書に開示された他のFLCコントローラを代表する。
図5Bには、プロセッサ(500、図5A)への入力/出力経路564が、示されている。プロセッサI/O経路564は、FLC論理ユニット状態機械(状態機械)560に接続している。状態機械500は、ASIC、制御ロジック、状態機械、プロセッサ、またはこれらの要素または任意の他の要素の任意の組み合わせなどの、本明細書に記載されるように機能することができる任意のデバイスを含み得る。状態機械560は、システムの物理アドレスをFLC仮想アドレスに変換する。この状態機械は、ハッシュ関数の複数のステージを使用して、完全連想ルックアッププロセスを実行する。これに代えて、状態機械560は、この書き換えを実行するためのコンテンツ連想メモリ(CAM)であるか、またはこのCAMを使用することができるが、それは高価であろう。
状態機械560は、例えばSRAMなどの、メモリ576に接続している。メモリ576は、FLCコントローラに記憶された物理アドレスを含むルックアップテーブルを記憶する。これらの物理アドレスは、FLCコントローラ532によってアクセス可能なキャッシュラインを識別する仮想アドレスに書き換えできるか、またはマッピングできる。メモリ576は、アドレスマップおよび複数のハッシュテーブルを記憶し得る。複数のハッシュテーブルを使用することは、電力消費を低減し、動作遅延を低減する。
状態機械560およびメモリ576は協働して、処理デバイスからの物理アドレスを仮想アドレスに書き換える。仮想アドレスは、「ヒット」が発生すると、ヒットI/Oライン568を介してDRAMに提供される。状態機械560が、状態機械560のメモリ576が物理アドレスエントリを含まないと判断した場合には、ミスが発生している。ミスが発生した場合には、FLC論理ユニット状態機械は、記憶ドライブまたは別のFLCコントローラにつながるミスI/Oライン572に、物理アドレスを有する要求を提供する。
図6は、並列カスケードされたFLCモジュールのブロック図である。図5Aと比較すると、同一の要素は、同一の参照番号が付されており、再述されない。この実施形態には、1つ以上の追加のFLCモジュール550、552が、追加されている。この例示的な実施形態では、高速度FLCモジュール550は一般に、高速度FLCモジュール540と同一であり、標準速度FLCモジュール552は一般に、標準速度FLCモジュール542と同一である。示されているように、高速度FLCモジュール550は、処理デバイス500に接続している一方、標準速度FLCモジュール552は、マルチプレクサ554を通して記憶ドライブ78に接続している。高速度FLCモジュール540、550の両方は、システムバスを通してなど、処理デバイス500に接続している。
図6の実施形態の動作は一般に、図5Aおよび図8の実施形態の動作と同様である。図7は、図5Aの実施形態の動作フロー図を提供する。図6に示された構成は、図5Aの単一のカスケードされた実施形態に対して多数の利点を有する。よりコストがかかり、より多くの空間を消費するが、複数の並列に配置されたカスケードFLCモジュールを有することは、メモリアドレスを異なる専用のFLCモジュールに分離し、かつ2つ以上のFLCモジュールでの並列メモリ動作を可能にするという利点を提供する一方、図5Aに関連して上述したようなFLCの複数のステージの利点を、依然として有する。
図7は、図5Aに示されているようなカスケードされたFLCモジュールの例示的な動作方法の動作フロー図である。これは、一例の動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。ステップ704で、データの物理アドレスを有する読み取り要求が、処理デバイス(プロセッサ)からFLC−HSモジュールに、特にFLC−HSコントローラに、送信される。次いで、決定ステップ708で、FLC−HSコントローラは、物理アドレスが、FLC−HSコントローラのルックアップテーブル内で識別されるかどうかを判定する。決定ステップ708の結果は、ヒットまたはミスであり得る。
ステップ708で、物理アドレスが、ロケートされている場合には、結果は、ヒットであり、動作は、ステップ712に進む。ステップ712で、読み取り要求が、仮想アドレスと共にDRAM−HSコントローラに送信される。図2に示され、かつ当技術分野で理解されているように、DRAMデバイスは、DRAMに対する読み取り/書き込み動作を監視するための関連付けられたメモリコントローラを有する。ステップ716で、DRAMコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ720でこれらを使用して、DRAM−HSからデータまたはキャッシュラインを読み取る(取り出す)。ステップ724で、FLC−HSコントローラは、要求を満たすためにデータをプロセッサに提供する。次いで、ステップ728で、FLC−HSコントローラは、キャッシュライン(アドレスまたはデータ)のFLCステータスレジスタを更新して、キャッシュラインの最近の使用を反映する。一実施形態では、データは、DRAM−HSに書き込まれ、またFLC−SSモジュールに書き込まれる。
これに代えて、ステップ708で、物理アドレスが、FLC−HS内で識別されない場合には、動作は、ステップ732に進み、メモリルックアップテーブルおよびDRAM−HSなどの新たな(空の)キャッシュラインが、FLC−HSコントローラ内に割り付けられる。物理アドレスが、FLC−HSモジュール内で識別されなかったため、キャッシュライン用の空間が、作り出されなければならない。次いで、ステップ736で、FLC−HSコントローラは、データ要求および物理アドレスを、FLC−SSモジュールに回送する。
FLC−HSモジュール内で発生するように、決定ステップ740で、物理アドレスが、FLC−SSで識別されるかどうかの判定が、行われる。FLC−SSコントローラのルックアップテーブルに存在する物理アドレスによって明らかにされるように、物理アドレスが、FLC−SSモジュール内にある場合には、動作は、ステップ744に進む。ステップ744で、読み取り要求が、仮想アドレスと共にDRAM−SSコントローラに送信される。ステップ748で、DRAM−SSコントローラは、仮想アドレスからDRAMの行アドレスビットおよび列アドレスビットを生成し、ステップ752でこれらを使用して、DRAM−SSからデータまたはキャッシュラインを読み取る(取り出す)。FLC−HSの仮想アドレスは、FLC−SSの仮想アドレスとは異なるため、物理アドレスから仮想アドレスへの異なる変換が、各FLCコントローラ内で行われる。
ステップ724で、FLC−HSコントローラは、要求されたキャッシュラインをFLC−HSコントローラに回送し、当該FLC−HSコントローラは、それがFLC−HSモジュールにキャッシュされるように、キャッシュラインを(データと共に)DRAM−HSに提供する。最終的に、データは、FLC−HSからプロセッサに提供される。次いで、ステップ760で、FLC−HSコントローラは、データ(アドレス)のFLCステータスレジスタを更新して、FLC−HSに、次いでプロセッサに提供されたデータの最近の使用を反映する。
ステップ740で、物理アドレスが、FLC−SS内で識別されない場合には、FLC−SSコントローラでミスが発生しており、動作は、ステップ764に進み、新たな(空の)キャッシュラインが、FLC−SSコントローラに割り付けられる。物理アドレスが、FLC−SSコントローラ内で識別されなかったため、次いでキャッシュライン用の空間が、作り出されなければならない。ステップ768で、FLC−SSコントローラは、物理アドレスを、例えば、PCI−eタイプのアドレスなどの記憶ドライブアドレスに書き換える。記憶ドライブアドレスは、キャッシュラインのロケーションを識別するために記憶ドライブによって理解されるか、または記憶ドライブによって使用されるアドレスである。次に、ステップ772で、書き換えから結果として得られた記憶ドライブアドレスが、記憶ドライブ、例えば、PCI−e、NVMe、またはSATA SSDに回送される。ステップ776で、記憶ドライブアドレスを使用して、記憶ドライブコントローラは、データを取り出し、取り出されたデータは、FLC−SSコントローラに提供される。ステップ780で、FLC−SSコントローラは、データをFLC−SS DRAMに書き込み、FLC−SSステータスレジスタを更新する。上記で議論したように、ステータスレジスタを更新することは、キャッシュラインを最近使用されたものとして指定するように行われ、これにより、キャッシュラインが最も過去に使用されたようになるまで上書きされることを防止する。最も過去に使用されたステータスの追跡は、キャッシュラインごとに追跡されるが、最も過去に使用されたステータスが、キャッシュライン内の個々のデータ項目について追跡され得ることが想到されるが、このことは、複雑さおよび追加のオーバーヘッド負荷を追加する。
一実施形態では、ステップ764および752で示されているように、キャッシュラインが、記憶ドライブから取り出される。キャッシュライン全体が、FLC−HSコントローラに提供される。FLC−HSコントローラは、キャッシュライン全体をDRAM−HSに記憶する。プロセッサによって要求されたデータは、このキャッシュラインに記憶される。プロセッサ要求を満たすために、FLC−HSコントローラは、キャッシュラインからデータを抽出し、データをプロセッサに提供する。このことは、キャッシュラインが、DRAM−HSに書き込まれる前または後に行われ得る。一構成では、キャッシュラインのみが、FLC−SSコントローラからFLC−HSコントローラに提供され、FLC−HSコントローラは、プロセッサによって要求されたデータをキャッシュラインから抽出する。別の実施形態では、FLC−SSコントローラはまず、要求されたデータを提供し、次いでキャッシュラインをFLC−HSコントローラに提供する。次いで、FLC−HSコントローラは、次いでデータプロセッサを提供し、次いでまたは同時に、キャッシュラインをFLC−HSに書き込むことができる。抽出されたデータが、まずFLC−HSコントローラに提供されるため、このことは、より高速であり得る。
上記に述べたように、FLC−HSコントローラの仮想アドレスは、FLC−SSコントローラの仮想アドレスと同じではない。各FLCコントローラ内のルックアップテーブルは、別異し、ルックアップテーブル間に関係はない。その結果、各FLCコントローラの仮想アドレスセットはまた、一意である。仮想アドレスが、偶然に、仮想アドレス間で同じビットを有し得る可能性があるが、仮想アドレスは、仮想アドレスのそれぞれのDRAM(DRAM−HSおよびDRAM−SS)で使用されることが意図されているため、異なる。
図8は、2つ以上の別個のFLCモジュールを有する分割FLCモジュールシステムのブロック図である。これは、分割FLCモジュールシステムの1つの可能な実施形態に過ぎず、特許請求の範囲から逸脱することなく、異なる構成が可能であることが想到される。図5Aと比較すると、同一の要素は、同一の参照番号が付されており、これらの重複する要素については詳細には再述されない。
図8に示されているように、FLCモジュール802の第1(a)、第2(b)最大n個のステージが並列に提供されて、メモリ要求の並列処理を可能にする。nの値は、任意の整数であり得る。第1のFLCモジュール820Aを参照して、FLCaコントローラ804Aは、処理ユニット500に接続しているか、または処理ユニット500と通信して、読み取り要求または書き込み要求を受信する。システムバス(図示せず)は、通信および要求ルーティングが、システムバスを通して行われ得るように、FLCモジュール820と処理デバイス500との間に在設され得る。FLCaコントローラ804Aはまた、DRAMa812Aと関連付けられたDRAMメモリコントローラ808Aに接続している。FLCaコントローラ804Aはまた、記憶ドライブ78に直接接続しているか、または記憶ドライブ78と通信する。他のFLCモジュール820B、820nの各々は、各要素が、同じ参照番号を共有するが異なる識別子文字を有して、同様に構成されている。例えば、FLCモジュール820Bは、FLCbコントローラ804B、DRAMメモリコントローラ808B、およびDRAMb812Bを含む。FLCモジュール820Bはまた、示されているように、処理デバイス500および記憶ドライブ78に接続しているか、または処理デバイス500および記憶ドライブ78と通信する。単一の処理デバイス500で示されているが、追加の処理デバイス(GPU/オーディオ処理ユニット/...)がまた、FLCモジュール820を利用し得ることが想到される。
FLCモジュール820のうちの1つ以上が、高速度/低遅延/低電力DRAMを有する高速度FLCモジュールとして構成され得るか、またはFLCモジュールが、標準速度DRAMを有する標準速度モジュールであり得る。これにより、異なるFLCモジュールに対する異なる動作速度が可能になる。このことは、ひいては、処理モジュール500が、重要なデータの読み取り/書き込み要求を高速度FLCモジュールに向ける一方、重要度が低い読み取り/書き込み要求は、標準速度FLCモジュールにルーティングされることに対応する。
一実施形態では、各FLCスライス(FLCa、FLCb、FLCc)は、SoCバスに接続しており、各FLCスライスは、処理デバイスによってアドレスが割り当てられる。各FLCスライスは、個別かつ別異のメモリルックアップテーブルを支援する別異の要素である。バスアドレスルックアップテーブルまたはハッシュテーブルを使用して、メモリアドレスをFLCスライスにマップし得る。一構成では、物理アドレス内の特定のビットは、いずれのFLCスライスがアドレスに割り当てられているかを定義する。別の実施形態では、双方向マルチプレクサ(図示せず)は、FLCスライスと処理ユニット500との間に提供されて、各FLCスライスへのアクセスを制御し得るが、この配置は、動作を低速化するボトルネックを作り出し得る。
図5Aおよび図8の実施形態は、図5Aに示されているように、単一のFLCコントローラ804Aを有する1つ以上のFLCモジュール820Aを有し、かつまた1つ以上のカスケードFLCモジュールを有するシステムが組み立てられ得るように組み合わせられ得ることが想到される。これらの2つの異なる配置を組み合わせる利点は、両方の配置の利点が、達成されることである。DRAMにアクセスするためのプロセッサからの複数の経路があり、それにより、システムの速度および帯域幅が増加すると同時に、速度、帯域幅、および消費電力をより少なくなることを向上させる高速度の2ステージのFLCコントローラの利点が提供される。組み合わせられたシステムは、設計のニーズを達成するようにシステムを調整するための任意の様式で配置され得る。
図9は、図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。方法の開始前に、メモリルックアップテーブルが、処理デバイスまたはシステムバスの一部として提供される。ルックアップテーブルは、プロセッサおよびFLCモジュールからのアドレス間の関連付けを記憶するように構成されている。各FLCモジュールは、この実施形態ではスライスと呼ばれ得、各FLCスライスは、複数のFLCステージを有し得る。
この実施形態では、FLC容量および帯域幅を増加させるために、複数のFLCスライスが確立される。各FLCスライスは、システムバスメモリアドレス空間(領域)の一部分に割り付けられる。その上、これらのメモリ領域は、FLCスライス間でインターリーブされる。インターリーブ粒度は、FLCキャッシュラインサイズに適合するように設定されて、異なるFLCコントローラスライス内のFLCルックアップテーブルエントリの不要な重複(オーバーラップによる)を防止して、最終的にFLCヒット率を最大化する。
例示的な一実施形態では、マッピングは、インターリーブされた順序で、FLCキャッシュラインサイズのアドレスブロックをFLCモジュールに割り当てる。例えば、4KBのキャッシュラインサイズでのFLC実装について、および4つの異なるFLC(FLCa、FLCb、FLCc、FLCd)の実装について、物理アドレスによる、識別されるメモリの、FLCへの以下のマッピング(割り当て)は、以下の通りである。
第1の4KB−FLCa
第2の4KB−FLCb
第3の4KB−FLCc
第4の4KB−FLCd
第5の4KB−FLCa
第6の4KB−FLCb
第7の4KB−FLCc
第8の4KB−FLCd
第9の4KB−FLCa
このメモリマッピング割り当て方式は、このパターンに従って続行する。これは、データを異なるFLCモジュールに分離するためのキャッシュライン境界を用いたメモリマッピングと呼ばれ得る。このようにして、処理デバイスによって使用されるメモリアドレスは、FLCスライス間で分割され、それにより、ボトルネックなしで性能の向上を可能にする並列配置されたFLCシステムを作り出す。これにより、複数の異なるプログラムが1つのFLCモジュールのみを利用するか、またはプログラムのメモリ使用量をすべてのFLCモジュールに分散することができ、これにより、動作速度が向上し、ボトルネックが低減される。
一実施形態では、各FLCスライスは、メモリアドレスに対応する。この例示的な動作例では、FLCa、FLCb、FLCc、およびFLCdとして定義された4つのFLCスライスがある。各FLCスライスは、FLCスライスを識別する一意のコードを有する。例えば、例示的なメモリアドレスが、FLCスライス割り当てと共に以下で提供される。
アドレスxxxx−00−xxxxxが、FLCaに割り当てられ、
アドレスxxxx−01−xxxxxが、FLCbに割り当てられ
アドレスxxxx−10−xxxxxが、FLCcに割り当てられ
アドレスxxxx−11−xxxxxが、FLCdに割り当てられ
ここで、xは、「0」および「1」の任意の組み合わせである。他の実施形態では、他のアドレス指定マッピング方式が、利用され得る。
整数のFLCキャッシュラインサイズを有する他のアドレスブロックマッピング方式が、使用され得る。部分的なまたは非整数のブロックサイズでは、異なるFLCスライス内のルックアップテーブルエントリが、重複し得る。このことは致命的ではない場合があるが、それでも、別異のアドレスルックアップテーブルエントリの数の減少をもたらし、最終的にFLCキャッシュヒット性能に影響を与える。
図9に戻ると、ステップ912で、メモリアドレスが、各FLCモジュールに割り当てられる(この実施形態では、FLC1、FLC2、FLC3であるが、他の実施形態は、より多いか、またはより少ない数のFLCモジュールを有し得る。割り当ては、上述したように、インターリーブ方式で行われ得る。次いで、ステップ916で、処理デバイスは、メモリに記憶されたデータの読み取り要求を生成する。他の実施形態では、要求は、書き込み要求であり得る。ステップ920で、処理デバイスからのデータ要求が、分析され、メモリマッピングに基づいて、データ要求(物理アドレスを有する)が、適切なFLCにルーティングされる。このことは、システムバスで行われ得る。上記に提供された例示的なメモリアドレスの関連付けに基づいて、物理メモリが、xxxx−00−xxxxxである場合、このアドレスは、FLCaにマッピングし、アドレスは、FLCaに割り当てられたプロセッサバスポートにルーティングされる。次いで、動作は、ステップ924に進み、そこで、データ要求および物理アドレスに対して、図4の方法が、行われる。メモリアドレスが、xxxx−01−xxxxxである場合、このアドレスは、FLCbにマッピングし、動作は、ステップ928に進む。物理メモリアドレスが、xxxx−10−xxxxxである場合、アドレスは、FLCcにマッピングし、動作は、ステップ932に進み、そこで、データ要求および物理アドレスに対して、図4の方法が、行われる。物理メモリアドレスが、xxxx−11−xxxxxである場合、このアドレスは、FLCdにマッピングし、動作は、ステップ936に進み、そこで、データ要求および物理アドレスに対して、図4の方法が、行われる。図4の方法およびその議論は、図9のこの議論に組み込まれる。
図10は、バイパス経路を有するカスケードFLCシステムの例示的な実施形態の例示的なブロック図である。図5Aと比較すると、同一の要素は、同一の参照番号が付されている。この実施形態では、バイパスモジュール1004が、高速度FLCモジュール540と処理デバイス500との間に提供され、それらに接続されている。バイパスモジュール1004への入力は、処理デバイス500からの要求を受信する。バイパスモジュール1004は、プロセッサからの要求を分析し、それをバイパス経路にルーティングされるか、または高速度FLCモジュール540にルーティングされる要求として分類することができる任意のタイプのデバイスであり得る。バイパスモジュール1004は、状態機械、プロセッサ、制御ロジック、ASIC、任意の他の同様のまたは同等のデバイスを備え得るが、これらに限定されない。
バイパスモジュール1004からの第1の出力は、FLC−HSコントローラ532に接続している。バイパスモジュール1004からの第2の出力は、マルチプレクサ1008に接続している。マルチプレクサ1008はまた、制御入力1012上で制御信号を受信する。マルチプレクサ1008は、制御信号に応答して、特定の時間に入力信号のうちの1つを出力するように構成された任意のタイプのスイッチであり得る。マルチプレクサ1008の出力は、標準速度FLCモジュール542の標準速度FLCコントローラ536に接続している。
図10に示されているようなカスケードされたFLCモジュールに関連するバイパスモジュール1004およびマルチプレクサ1008の動作は、以下の図11で議論される。一般に、バイパスモジュール1004は、処理デバイス500からの要求を分析し、要求が、標準速度FLCモジュール542にバイパスされるべきか、または高速度FLCモジュール540に向けられるべき要求として適格であるかどうかを判定する。要求が、バイパスタイプの要求であると判定された場合、要求は、バイパスモジュール1004によってマルチプレクサ1008にリダイレクトされ、そこで、マルチプレクサ1008は、標準速度FLCモジュール536へと選択的に切り替えられる。
図11は、図8に示されているような分割FLCモジュールの例示的な動作方法の動作フロー図である。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。この方法は、ステップ1108で開始し、処理デバイスが、メモリからデータの読み取り要求を生成する。このステップは、プロセッサがRAMなどのメインメモリからデータを要求することに通常あるような従来事項内で行われる。ステップ1112で、処理デバイスからの要求は、処理のためにバイパスモジュールに提供される。バイパスモジュールは、要求を処理して、要求が、高速度FLCモジュールをバイパスするデータとして適格であるか、または分類されるかを判定する。データまたは特定のアドレスは、多様な理由で高速度FLCモジュールをバイパスするように分類され得る。
いくつかの実施形態では、バイパスデータは、性能の観点から、高速DRAMでの記憶に適格であるほどの頻度では使用されないデータである。他の実施形態では、処理デバイスからの特定の物理アドレスは、バイパスモジュールがバイパス経路にルーティングするバイパスアドレスとして指定される。これは、固定アドレスマッピングと呼ばれ、それによって、特定のアドレスまたはアドレスのブロックが、バイパス経路に向けられる。同様に、バイパスの決定は、プロセッサまたは他のソフトウェア/ハードウェア機能によって指定されたデータ型に基づき得る。
バイパスの指定はまた、タスクの重要度として定義されたタスクIDに基づき得る。タスクの重要度を定義するタスクIDは、固定された一連の基準によって設定されるか、またはDRAM−HSの利用可能な容量または他の要因に基づいて経時的に変動し得る。ソフトウェアエンジンまたはアルゴリズムはまた、タスクIDを指定し得る。バイパスモジュールはまた、特定のタスクIDのみが、予約されたDRAM−HSメモリ空間に配置できるように、DRAM−HS内の空間を予約するように構成され得る。バイパスモジュール制御に基づくDRAM−HSへのキャッシュの不終了または不必要なブロッキングを回避するために、タスクIDまたは指定は、タイムアウトし得、つまり、バイパス指定は、固定またはプログラム可能なタイマ期間の後に終了される。さらに、タスクIDを使用して、タスクIDごとにDRAM−HSキャッシュライン割り付け容量を定義し得る。これは、貪欲なタスク/スレッドが貪欲でないタスク/スレッドをパージすることを防止し、最終的に、よりバランスが取れた全システム性能を可能にするためである。オペレーティングシステムはまた、キャッシュライン割り付け容量テーブルを経時的に変更して、所与の期間中に同時に動作する必要がある同時タスク/スレッドの数を反映し得る。
例として、アクティブなビデオ再生(動画)を表示する画面表示は、絶えず変化する画面表示を有するが、ビデオを再生していないとき、画面表示は静的である。結果として、バイパスモジュールは、ビデオが画面に1回または2回以上再表示されないために、アクティブなビデオ表示をバイパス経路にバイパスするように構成され得る。ただし、一時停止した動画について、または画面が静止している非ビデオ再生中に、画面をリフレッシュするときに表示データが何度も再利用されるため、表示データは、キャッシュされ(バイパスされない)得る。したがって、FLC−HSモジュールが、消費電力がより少ないため、FLC−HSモジュールでデータに静的表示を形成させることが最良である。このことを、ソフトウェアまたはハードウェアで行って、画面が繰り返す画面表示であるかどうかを検出することができる。
一実施形態では、バイパスモジュールは、いずれのデータ(稀に使用されるか、または1回のみ使用される)が、高速度FLCモジュールから標準速度FLCモジュールに向けてバイパスされるべきかを経時的に監視するアルゴリズムおよび機械学習エンジンを含む。経時的に、バイパスモジュールの人工知能を有する機械学習能力は、特定のユーザにとって、いずれのデータが、稀に使用されるか、または1回のみ使用されるか、したがって、高速度FLCモジュールからバイパスされるべきかを判定する。ユーザが、経時的に、そのデータをより頻繁に使用する場合には、バイパスモジュールの機械学習の態様は、挙動の変化に合わせて調整および適応し、性能を最大化するためにキャッシュされる高速度FLCモジュールにそのデータを向ける。
一実施形態では、バイパスモジュールは、機械学習を使用せず、またはユーザの挙動に適応せず、代わりに、高速度FLCモジュール以外にバイパスされるデータまたはアドレスは、固定されているか、ユーザプログラム可能であるか、またはソフトウェア制御される。これは、それほど複雑ではないアプローチである。
また、処理デバイスは、データをバイパスタイプのデータであるように指定し得ることが想到される。そのため、処理デバイスからバイパスモジュールへの要求(読み取りまたは書き込み)は、バイパスタイプデータとしての指定を含む。これにより、いずれのデータが、ソフトウェア制御の柔軟性を有する高速度FLCモジュールに記憶されるかを制御するための、さらなるメカニズムが提供される。
また、データのバイパス指定が、一定期間後にバイパス指定を削除するタイマ機能を有し得るか、または一定期間後にバイパス指定を改新してアクティブのままにしかければならないことが想到および開示される。これにより、バイパス指定が不要になったデータにバイパス指定が適用されることが防止される。
図11に戻ると、決定ステップ1116で、データがバイパスデータであるかどうかの決定が、行われる。データが、バイパスされるべきではないデータとしてバイパスモジュールによって指定されていない場合には、動作は、ステップ1120に進む。ステップ1120で、動作は、上述した方法図7を実行した。上述したように、図7の方法ステップは、繰り返されないが、代わりに、アプリケーションのこのセクションに組み込まれる。図7で説明されているように、この時点での方法は、カスケードされたFLCシステムかのように進行する。
これに代えて、決定ステップ1116で、バイパスモジュールが、データをバイパスすべきであると判定した場合には、動作は、ステップ1124に進み、物理アドレスを有するデータ要求が、バイパスモジュールからバイパスマルチプレクサにルーティングされる。他の実施形態では、データ要求および物理アドレスは、バイパスマルチプレクサにルーティングされ得る。バイパスマルチプレクサ(ならびに本明細書に開示された他のマルチプレクサ)は、制御信号に応答して、そのマルチプレクサの入力のうちの1つを、この実施形態では標準速度FLCモジュールに接続しているそのマルチプレクサの出力に渡す方向別マルチプレクサである。バイパスマルチプレクサへの他方の入力は、図10に示されているように、高速度FLCコントローラからのものである。
ステップ1128で、バイパスマルチプレクサへの制御信号に応答して、バイパスマルチプレクサは、データ要求および物理アドレスを標準速度FLC−SSモジュールにルーティングする。他の実施形態では、バイパスマルチプレクサからのデータ要求および物理アドレスは、異なる高速度FLCモジュールなどの異なるロケーションに、または直接記憶ドライブに転送され得る。次いで、ステップ1132で、データ要求および物理アドレスは、図4に記載された様式で、標準速度FLC−SSモジュールによって処理される。このデータは、バイパスデータとして定義されるため、DRAM−HSまたはFLC−HSコントローラにはキャッシュされない。図4の方法は、図11のこのセクションに組み込まれる。
図12は、バイパス経路およびキャッシュ不能なデータ経路を有するカスケードされたFLCシステムの例示的な実施形態の例示的なブロック図である。図5Aおよび図10と比較すると、同一の要素は、同一の参照番号が付されている。この例示的な実施形態は、キャッシュ不能なデータを別個にルーティングするシステムの可能な一構成に過ぎず、そのため、当業者は、他の実施形態および配置に到達し得る。この実施形態には、図10の構成を超えて、バイパスモジュール1004と第2のマルチプレクサ1208との間に接続しているキャッシュ不能なデータ経路1204が追加されている。第2のマルチプレクサ1208は、マルチプレクサに制御信号を提供するように構成された制御信号入力1212を含む。第2のマルチプレクサ1208の制御信号1212は、第2のマルチプレクサへの2つの入力のうちのいずれがDRAM−SS524への出力であるかを判定する。
この実施形態では、DRAM−SS524の一部分は、キャッシュ不能なメモリとして予約されるためにパーティション化されている。DRAM−SSのキャッシュ不能なデータパーティションには、キャッシュ不能なデータが、記憶される。そのため、キャッシュ不能なデータパーティションは、従来のプロセッサ/DRAMとして動作する。プロセッサが、通常1回閲覧されるビデオファイルなどのキャッシュ不能なデータを要求する場合には、ファイルは、記憶ドライブ78からファイルI/O経路520を介してプロセッサによって取り出され、DRAM−SSのキャッシュ不能なパーティションに提供される。DRAM−SSに新たに記憶されたこのデータは、次いでキャッシュ不能なデータ経路を介して、プロセッサによって小ブロックで取り出され得る。動画などのビデオファイルは、通常は非常に大きく、通常は1回しか視聴されず、したがって、1回のみ使用されるデータをキャッシュしても性能上の利点がないため、キャッシュされない。メモリの一部分をパーティション化することは、当業者によって理解され、そのため、このプロセスは、本明細書では詳細に記載されていない。キャッシュ不能なデータはまた、記憶ドライブ78に記憶され得る。
この実施形態では、バイパスモジュール1004は、読み取り要求を分析し、かつ読み取り要求が、キャッシュ不能なデータとして分類されたデータに対するものであるかどうかを判定するようにさらに構成されている。そうである場合には、処理デバイス500からのデータ読み取り要求は、キャッシュ不能なデータ経路1204を介して第2のマルチプレクサ1208にルーティングされる。第2のマルチプレクサ1208は、制御信号に応答して、キャッシュ不能なデータ読み取り要求、または標準速度FLC−SSコントローラ536からの要求のいずれかをDRAM−SS524に渡すかどうかを判定する。データは、キャッシュ不能であるため、データがプロセッサに提供された後、データは、DRAM−HS528またはDRAM−SS524のいずれにもキャッシュされないが、DRAM−SSのキャッシュ不能なデータパーティションに記憶され得る。
図13は、図12の実施形態の例示的な動作方法の動作フローチャートを提供する。これは、例示的な一動作方法に過ぎず、当業者によって理解されるように、他の動作方法が、想到される。動作方法は、図11の方法に類似し、キャッシュ不能なデータを処理することに向けられた追加の手順を有する。ステップ1304で、処理デバイスは、メモリに記憶されたデータの読み取り要求を生成する。要求は、物理アドレスを含む。次いで、ステップ1308で、要求および物理アドレスが、バイパスモジュールに提供されて、要求が、バイパス経路にルーティングされるべきか、または要求が、キャッシュ不能なデータに対する要求であり、したがってキャッシュ不能なデータ経路にルーティングされるべきかを判定する。決定ステップ1312で、データ要求が、バイパス経路にルーティングされるべきかどうかの判定がなされる。要求が、バイパスデータタイプの要求であると決定された場合には、動作は、ステップ1316に進み、バイパスモジュールは、データ要求および物理アドレスをバイパスモジュールからバイパスマルチプレクサにルーティングする。バイパスマルチプレクサは、2つ以上の入力を受信し、かつ入力のうちの1つを出力に選択的にルーティングすることができる任意のデバイスであり得る。バイパスマルチプレクサは、双方向であるため、マルチプレクサの単一出力での信号は、いずれかの入力経路にルーティングされ得る。入力1012上のバイパスマルチプレクサ制御信号は、バイパスマルチプレクサの動作を制御する。
その後、ステップ1320で、バイパスマルチプレクサに提供された制御信号に応答して、物理アドレスを有するデータ要求が、バイパスマルチプレクサからFLC−SSモジュールにルーティングされる。次いで、ステップ1324で、FLC−SSモジュールは、図4に記載されているように、データ要求および物理アドレスを処理する。図4の方法は、図13に組み込まれる。
これに代えて、決定ステップ1312で、バイパス基準が満たされていなかったことが判定された場合には、動作は、要求がキャッシュ可能なメモリ要求であるかどうかが判定される決定ステップ1328に進む。キャッシュ可能なメモリ要求は、FLCモジュールのうちの1つにキャッシュされるデータに対する処理デバイスからの要求である一方、キャッシュ不能なメモリ要求は、キャッシュされないデータに対するものである。要求が、キャッシュ可能なメモリに対するものである場合には、動作は、ステップ1332に進み、図7のプロセスは、データ要求および物理アドレスに基づいて実行される。図7の方法は、図13に組み込まれる。
これに代えて、ステップ1328で、要求されたデータが、キャッシュ不能であると判定された場合には、動作は、ステップ1336に進む。ステップ1336で、物理アドレスを含むキャッシュ不能なデータ要求が、バイパスモジュールから第2のマルチプレクサにルーティングされる。第2のマルチプレクサは、バイパスマルチプレクサと概して同様に構成され、かつ動作し得る。ステップ1340で、第2のマルチプレクサ制御信号に応答して、第2のマルチプレクサからのデータ要求および物理アドレスが、キャッシュ不能なデータ用に予約されたDRAM−SSのパーティションに要求を向けるDRAM−SSコントローラに提供される。ステップ1344で、FLC−SSコントローラは、DRAM−SSキャッシュ不能データパーティションからキャッシュ不能データを取り出し、ステップ1348で、FLC−SSコントローラは、非キャッシュ可能データを処理デバイスに提供する。取り出されたデータは、DRAM−HSキャッシュまたはDRAM−SSキャッシュにキャッシュされないが、DRAM−SSのキャッシュ不能なパーティションに維持され得る。そのため、取り出されたデータは、FLC−SSモジュールを通して評価可能ではないが、代わりにキャッシュ不能なデータ経路を通してアクセスされる。
上述した実施形態、要素、または様々な変形例のいずれかを、任意の組み合わせで集めてまたは配置して、新たな実施形態を形成し得ることが想到および開示される。例えば、図6に示されているように、並列FLCモジュール配置(FLCスライス)は、FLCモジュールの2つ以上のステージと組み合わせられ得る。これらの実施形態のいずれも、バイパスモジュール機能および/またはキャッシュ不能なデータ経路を有して集められ、または特許請求され得る。また、FLCモジュールの3つ以上のステージ(例えば、3つまたは4つのFLCモジュールステージ)が、本明細書に示されているか、または記載された任意の他の要素と組み合わせられ得ることが想到される。
また、フローチャートおよび動作方法は、順次動作に関連して示され、および議論されているが、様々な動作が並列に行われ得ることが理解および開示されていることが、理解される。これにより、動作速度、帯域幅が増加し、システムの遅延が低減される。
本開示に記載されている無線通信の態様は、IEEE標準802.11〜2012、IEEE標準802.16−2009、IEEE標準802.20−2008、および/またはBluetoothコア仕様v4.0に完全にまたは部分的に準拠して実施できる。様々な実装では、Bluetoothコア仕様v4.0は、1つ以上のBluetoothコア仕様補遺2、3、または4によって修正され得る。様々な実装形態では、IEEE802.11−2012は、草案IEEE標準802.11ac、草案IEEE標準802.11ad、および/または草案IEEE標準802.11ahによって補完され得る。
本明細書では、第1、第2、第3などの用語を使用して、様々なチップ、モジュール、信号、要素、および/またはコンポーネントを記載し得るが、これらの項目は、これらの用語によって限定されるものではない。これらの用語は、ある項目を別の項目と区別するためにのみ使用され得る。本明細書で使用される場合の「第1の」、「第2の」などの用語、および他の数値用語は、文脈によって明確に示されない限り、配列または順序を意味しない。したがって、以下で議論される第1の項目は、例示的な例の教示から逸脱することなく、第2の項目と呼ばれ得る。
また、コンポーネント間の物理的な関係を記載するために様々な用語が使用される。第1の要素が、第2の要素に「接続され」、「係合され」、または「結合され」と呼ばれる場合、第1の要素が、第2の要素に直接接続、係合、配設、適用、もしくは結合され得るか、または介在する要素が、存在し得る。対照的に、要素が、別の要素に「直接接続され」、「直接係合され」、または「直接結合され」と呼ばれる場合、介在する要素が存在しないことが可能である。第1の要素が、第2の要素に「接続され」、「係合され」、または「結合され」と述べることは、第1の要素が、第2の要素に「直接接続され」、「直接係合され」、または「直接結合され」得ることを意味する。要素間の関係を記載するために使用される他の文言は、同様の形式で解釈されるとよい(例えば、「間」対「間に直接」、「隣接して」対「直接隣接して」など)。
前述の説明は、本質的に単なる例示であり、開示、その適用、または使用を限定することは、決して意図されていない。本開示の広範な教示は、多様な形態で実装できる。したがって、本開示は、特定の例を含むが、図面、明細書、および以下の特許請求の範囲を検討すると他の修正が明らかになるため、開示の真の範囲はそのように限定されるものではない。本明細書で使用される場合、A、B、およびCのうちの少なくとも1つの語句は、非排他的論理ORを使用して、論理(A OR B OR C)を意味すると解釈されるものであり、「Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、およびCのうちの少なくとも1つ」を意味すると解釈されるものではない。本開示の原理を変更することなく、方法内の1つ以上のステップが、異なる順序で(または同時に)実行され得ることが、理解されるはずである。
以下の定義を含むこの出願では、「モジュール」という用語または「コントローラ」という用語は、「回路」という用語に置き換えられ得る。「モジュール」という用語および「コントローラ」という用語は、特定用途向け集積回路(ASIC)、デジタルの、アナログの、または混載のアナログ/デジタルディスクリート回路、デジタルの、アナログの、または混載のアナログ/デジタル集積回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ回路(共有、専用、またはグループ)。プロセッサ回路によって実行されるコードを記憶するメモリ回路(共有、専用、またはグループ)、記載された機能性を提供する他の好適なハードウェアコンポーネント、または、システムオンチップなどの、上記のいくつかまたはすべての組み合わせを指し得るか、それらの一部であり得るか、またはそれらを含み得る。
モジュールまたはコントローラは、1つ以上のインターフェース回路を含み得る。いくつかの例では、インターフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、またはそれらの組み合わせに接続された有線または無線のインターフェースを含み得る。本開示の任意の所与のモジュールまたはコントローラの機能性は、インターフェース回路を介して接続された複数のモジュールおよび/またはコントローラに分散され得る。例えば、複数のモジュールおよび/またはコントローラは、ロードバランシングを可能にし得る。さらなる例では、サーバ(リモートまたはクラウドとしても知られている)モジュールまたは(リモートまたはクラウド)コントローラは、クライアントモジュールおよび/またはクライアントコントローラに代わっていくつかの機能性を実現し得る。
上記で使用される場合のコードという用語は、ソフトウェア、ファームウェア、および/またはマイクロコードを含み得、プログラム、ルーチン、関数、クラス、データ構造、および/またはオブジェクトを指し得る。共有プロセッサ回路という用語は、複数のモジュールおよび/またはコントローラからの一部またはすべてのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加のプロセッサ回路と組み合わせて、1つ以上のモジュールおよび/またはコントローラからの一部またはすべてのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、ディスクリートのダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、または上記の組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールおよび/またはコントローラからの一部またはすべてのコードを記憶する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加のメモリと組み合わせて、1つ以上のモジュールおよび/またはコントローラからの一部またはすべてのコードを記憶するメモリ回路を包含する。
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で使用される場合のコンピュータ可読媒体という用語は、媒体を通って伝搬する一過性の電気信号または電磁信号(搬送波上など)を包含せず、したがって、コンピュータ可読媒体という用語は、有形かつ非一過性と見なされ得る。非一過性の、有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路(フラッシュメモリ回路、消去可能なプログラム可能な読み取り専用メモリ回路、またはマスク読み取り専用メモリ回路など)、揮発性メモリ回路(静的ランダムアクセスメモリ回路または動的ランダムアクセスメモリ回路など)、磁気記憶媒体(アナログまたはデジタル磁気テープまたはハードディスクドライブなど)、および光記憶媒体(CD、DVD、またはBlu−ray(登録商標)ディスクなど)である。
本出願に記載された装置および方法は、コンピュータプログラムに具体化された1つ以上の特定の機能を実行するように汎用コンピュータを構成することによって作り出された専用コンピュータによって部分的または完全に実装され得る。上述した機能ブロックおよびフローチャート要素は、熟練した技術者またはプログラマの日常業務によってコンピュータプログラムに書き換えられ得るソフトウェア仕様として作用する。
コンピュータプログラムは、少なくとも1つの非一過性の、有形のコンピュータ可読媒体上に記憶されたプロセッサ実行可能命令を含む。コンピュータプログラムはまた、記憶されたデータを含むか、またはそれに依存し得る。コンピュータプログラムは、専用コンピュータのハードウェアと相互作用する基本入力/出力システム(BIOS)、専用コンピュータの特定のデバイスと相互作用するデバイスドライバ、1つ以上のオペレーティングシステム、ユーザアプリケーション、バックグラウンドサービス、バックグラウンドアプリケーションなどを包含し得る。
コンピュータプログラムは、(i)HTML(ハイパーテキストマークアップ言語)またはXML(拡張マークアップ言語)などの解析対象である記述テキスト、(ii)アセンブリコード、(iii)コンパイラによってソースコードから生成されたオブジェクトコード、(iv)インタプリタによる実行用のソースコード、(v)ジャストインタイムコンパイラなどによるコンパイルおよび実行用のソースコードを含み得る。例のみとして、ソースコードは、C、C++、C#、Objective C、Haskell、Go、SQL、R、Lisp、Java(登録商標)、Fortran、Perl、Pascal、Curl、OCaml、Javascript(登録商標)、HTML5、Ada、ASP(アクティブサーバページ)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、およびPython(登録商標)を含む言語の構文を使用して書かれ得る。
特許請求の範囲に列挙された要素のいずれも、要素が、「のための手段」という語句を使用して明示的に列挙されていない限り、または「のための動作」または「のためのステップ」という語句を使用した方法の請求項の場合米国特許法第112条(f)の意味の範囲内のミーンズプラスファンクションの要素であることは、意図されていない。
2018年6月18日に出願された「Multi−Path or Multi−Stage Cache Improvement」と題された米国仮特許出願第62/686,333号は、参照によりその全体が本明細書に組み込まれ、図を含む組み込まれた参照の内容は、この特許出願の一部であると見なされるものである。

Claims (35)

  1. プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
    プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、データのデータ要求を生成するように構成されている、プロセッサ、
    メインメモリとして機能し、かつ前記データ要求を受信するように構成されたFLCキャッシュシステムであって、前記FLCシステムが、
    第1のFLCコントローラおよび第1のメモリを有する第1のFLCモジュールであって、前記第1のFLCモジュールが、前記プロセッサからの前記データ要求を受信する、第1のFLCモジュールと、
    第2のFLCコントローラおよび第2のメモリを有する第2のFLCモジュールであって、前記第2のFLCモジュールが、前記第1のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第1のFLCモジュールから前記データ要求を受信する、第2のFLCモジュールと、を備える、FLCキャッシュシステム、
    ユーザファイル記憶部分およびメインメモリ部分を有し、前記第2のFLCモジュールが要求された前記データを有していないことに応答して前記データ要求を受信するように、構成された記憶ドライブ、を備える、システム。
  2. 前記データ要求が、物理アドレスを含み、第1のFLCコントローラが、前記物理アドレスを第1の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項1に記載のシステム。
  3. 前記第1のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第1のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記第2のFLCコントローラに回送するように構成されている、請求項2に記載のシステム。
  4. 前記第2のFLCコントローラが、前記物理アドレスを第2の仮想アドレスに書き換えるように構成されたループアップテーブルを含む、請求項3に記載のシステム。
  5. 前記第2のFLCコントローラルックアップテーブルが前記物理アドレスを含まない場合に、前記第2のFLCコントローラが、前記物理アドレスを有する前記データ要求を前記記憶ドライブに回送するように構成されている、請求項4に記載のシステム。
  6. 前記第1のFLCモジュールが、前記第2のFLCモジュールよりも、高速であり、かつ消費電力がより少ない、請求項1に記載のシステム。
  7. 前記第1のメモリが、DRAMであり、かつ第1のメモリコントローラを含み、前記第2のメモリが、DRAMであり、かつ第2のメモリコントローラを含む、請求項1に記載のシステム。
  8. 前記記憶ドライブが、磁気ディスクドライバ、ソリッドステートメモリ、またはハイブリッドドライブである、請求項1に記載のシステム。
  9. 前記DRAMが、シリアルDRAMである、請求項1に記載のシステム。
  10. 前記第1のFLCモジュールが、前記第2のFLCモジュールの少なくとも2倍の速さである、請求項1に記載のシステム。
  11. 前記第1のFLCモジュールおよび前記第2のFLCモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項1に記載のシステム。
  12. データアクセスシステムを動作させる方法であって、前記データアクセスシステムが、プロセッサキャッシュを有するプロセッサと、記憶ドライブと、第1のFLCコントローラおよび第1のDRAMを含む第1のFLCモジュールと、第2のFLCコントローラおよび第2のDRAMを含む第2のFLCモジュールと、を備え、
    前記プロセッサで、物理アドレスを含む、データの要求を生成することと、
    データの前記要求を前記第1のFLCモジュールに提供することと、
    前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することと、
    前記第1のFLCコントローラが前記物理アドレスを含むことに応答して、前記第1のDRAMから前記データを取り出し、前記データを前記プロセッサに提供することと、
    前記第1のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記第2のFLCモジュールに回送することと、
    前記第2のFLCコントローラが前記物理アドレスを含むかどうかを判定することと、
    前第2のFLCコントローラが前記物理アドレスを含むこと応答して、前記第2のDRAMから前記データを含むキャッシュラインを取り出し、前記キャッシュラインを前記第1のFLCモジュールに提供することと、を含む、方法。
  13. 前記第1のFLCコントローラが前記物理アドレスを含むかどうかを判定することが、前記判定にかかる時間を低減するために、前記第1のFLCコントローラ内の、アドレスエントリを記憶するアドレスキャッシュにアクセスすることを含む、請求項12に記載の方法。
  14. 前記第2のFLCコントローラが前記物理アドレスを含まないことに応答して、データの前記要求および前記物理アドレスを前記記憶ドライブに回送することをさらに含む、請求項12に記載の方法。
  15. 前記記憶ドライブが、メインメモリとして予約された前記記憶ドライブの一部分から前記データを取り出し、前記データを前記第2のFLCモジュールに提供することをさらに含む、請求項14に記載の方法。
  16. 前記第1のFLCコントローラが前記物理アドレスを含むこと、および前記プロセッサへの前記データの前記提供に応答して、前記データを含むキャッシュラインの最近の使用を反映するステータスレジスタを更新することをさらに含む、請求項12に記載の方法。
  17. 前記第2のDRAMから前記データを取り出し、前記データを前記第1のFLCモジュールに提供することが、前記物理アドレスを前記第1のFLCコントローラに記憶すること、および前記データを前記第1のDRAMに記憶することをさらに含む、請求項12に記載の方法。
  18. 前記第1のDRAMが利用可能な空間を有していない場合には、前記第1のDRAMから最も過去に使用されたデータを削除して、前記データのための空間を作成する、請求項17に記載の方法。
  19. プロセッサで使用するためのデータ記憶およびアクセスシステムであって、
    プロセッサキャッシュを有するプロセッサであって、前記プロセッサが、第1のデータの第1のデータ要求と、第2のデータの第2のデータ要求と、を生成するように構成されている、プロセッサと、
    メインメモリキャッシュとして機能し、かつ前記第1のデータの前記第1のデータ要求を受信するように構成された、前記プロセッサと通信する第1のFLCキャッシュシステムと、
    メインメモリキャッシュとして機能し、かつ前記第2のデータの前記第2のデータ要求を受信するように構成された、前記プロセッサと通信する第2のFLCキャッシュシステムと、
    ユーザファイル記憶部分およびメインメモリパーティションを有し、記憶ドライブの前記メインメモリパーティションがメインメモリとして機能するように、構成された記憶ドライブと、を備える、システム。
  20. システムバスをさらに備え、前記プロセッサが、各FLCキャッシュシステムに割り当てられたアドレスがインターリーブされるように、前記システムバスを介して前記第1のFLCキャッシュシステムおよび前記第2のFLCキャッシュシステムと通信する、請求項19に記載のシステム。
  21. 前記第1のデータが、前記第1のFLCキャッシュシステムに含まれない場合には、前記第1のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信され、
    前記第2のデータが、前記第2のFLCキャッシュシステムに含まれない場合には、前記第2のデータ要求が、前記記憶ドライブの前記メインメモリパーティションから前記第1のデータを取り出すために、前記記憶ドライブに送信される、請求項19に記載のシステム。
  22. 前記第1のFLCキャッシュシステムが、第1のFLCモジュールおよび第2のFLCモジュールを備え、前記第2のFLCキャッシュシステムが、第3のFLCモジュールおよび第4のFLCモジュールを備える、請求項19に記載のシステム。
  23. 前記FLCモジュールの各々が、FLCコントローラおよびメモリを備える、請求項22に記載のシステム。
  24. 各前記FLCモジュールが、専用かつ一意のルックアップテーブルを維持する、請求項23に記載のシステム。
  25. プロセッサと共に使用するためのデータ記憶およびアクセスシステムであって、
    メインメモリキャッシュとして機能し、かつ処理デバイスからデータ要求を受信するように構成されたFLCキャッシュシステムであって、前記プロセッサデバイスが、プロセッサキャッシュを有する、FLCキャッシュシステムを備え、前記FLCシステムが、
    第1のFLCコントローラおよび第1のキャッシュメモリを有する第1のFLCモジュールであって、前記第1のFLCモジュールが、前記プロセッサから前記データ要求を受信する、第1のFLCモジュール、
    第2のFLCコントローラおよび第2のキャッシュメモリを有する第2のFLCモジュールであって、前記第2のFLCモジュールが、
    前記第1のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第2のFLCモジュールが、前記第1のFLCモジュールから前記データ要求を受信することと、
    前記第2のFLCモジュールが前記プロセッサによって要求された前記データを有していないことに応答して、前記第2のFLCモジュールが、前記データ要求を、メインメモリとして作用する一部分を有して構成された記憶ドライブに送信することと、のように構成されている、第2のFLCモジュール、を備える、システム。
  26. ユーザファイル記憶部分およびメインメモリ部分を有し、前記第2のFLCモジュールから応答された前記データ要求を受信し、前記要求されたデータを前記第2のFLCモジュールに提供するように、構成された記憶ドライブをさらに備える、請求項25に記載のシステム。
  27. 前記記憶ドライブが、ネットワーク接続を介してアクセスされる、請求項25に記載のシステム。
  28. 前記第2のFLCモジュールの容量が、前記第1のFLCモジュールの容量よりも少なくとも8倍大きい、請求項25に記載のシステム。
  29. 前記第1のFLCモジュールおよび前記第2のFLCモジュールが、データをキャッシュラインに記憶し、サイズが、前記キャッシュラインが、オペレーティングシステムページサイズと同じである、請求項25に記載のシステム。
  30. 前記第1のFLCコントローラルックアップテーブルが、少なくとも4KBのキャッシュラインサイズを用いたセット連想であり、前記第2のFLCコントローラルックアップテーブルが、完全連想である、請求項25に記載のシステム。
  31. 前記第1のFLCモジュールが、第1のDRAMを含み、前記第2のFLCモジュールが、第2のDRAMを含み、前記第1のDRAMおよび第2のDRAMが、シングルレベルセルタイプのDRAMである、請求項25に記載のシステム。
  32. 前記第1のメモリが、DRAMであり、かつ第1のメモリコントローラを含み、前記第2のメモリが、DRAMであり、かつ第2のメモリコントローラを含む、請求項31に記載のシステム。
  33. 前記第1のFLCモジュールおよび前記第2のFLCモジュールが、将来アクセスされることが予想されるアドレスに記憶されたデータの予測フェッチを実行するように構成されている、請求項25に記載のシステム。
  34. 第1のキャッシュメモリおよび前記第2のキャッシュメモリが、DRAMを備え、1つ以上の故障したセクションが使用からロックアウトされるように構成されている、請求項25に記載のシステム。
  35. 第1のキャッシュメモリおよび前記第2のキャッシュメモリが、DRAMを備え、メモリの1つ以上のセクションが、メモリの残りのセクションの健全性チェック中に一時的に使用不能状態に置かれるように構成されている、請求項25に記載のシステム。
JP2020571708A 2018-06-18 2019-06-18 記憶システムをメインメモリとして使用するための方法および装置 Active JP7407134B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023212857A JP2024029007A (ja) 2018-06-18 2023-12-18 記憶システムをメインメモリとして使用するための方法および装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862686333P 2018-06-18 2018-06-18
US62/686,333 2018-06-18
PCT/US2019/037787 WO2019246139A1 (en) 2018-06-18 2019-06-18 Method and apparatus for using a storage system as main memory

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023212857A Division JP2024029007A (ja) 2018-06-18 2023-12-18 記憶システムをメインメモリとして使用するための方法および装置

Publications (2)

Publication Number Publication Date
JP2021530028A true JP2021530028A (ja) 2021-11-04
JP7407134B2 JP7407134B2 (ja) 2023-12-28

Family

ID=68839950

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020571708A Active JP7407134B2 (ja) 2018-06-18 2019-06-18 記憶システムをメインメモリとして使用するための方法および装置
JP2023212857A Pending JP2024029007A (ja) 2018-06-18 2023-12-18 記憶システムをメインメモリとして使用するための方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023212857A Pending JP2024029007A (ja) 2018-06-18 2023-12-18 記憶システムをメインメモリとして使用するための方法および装置

Country Status (5)

Country Link
US (3) US10936492B2 (ja)
EP (2) EP3807773B1 (ja)
JP (2) JP7407134B2 (ja)
CN (1) CN112997161A (ja)
WO (1) WO2019246139A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802980B1 (en) * 2020-03-20 2020-10-13 Cloudflare, Inc. Caching assets in a multiple cache system
US20220075863A1 (en) * 2020-09-10 2022-03-10 Nuvia, Inc. Trusted Key Provisioning Based on Device Specific Secrets
US20220197798A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Single re-use processor cache policy
US20230144038A1 (en) * 2021-11-11 2023-05-11 FLC Technology Group, Inc. Memory pooling bandwidth multiplier using final level cache system
CN117785071A (zh) * 2024-02-27 2024-03-29 合肥康芯威存储技术有限公司 一种存储器及其性能优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040175A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御方法
JP2009211310A (ja) * 2008-03-03 2009-09-17 Canon Inc 情報処理装置及びその制御方法
JP2014182836A (ja) * 2013-03-15 2014-09-29 Intel Corp 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
JP2016541046A (ja) * 2013-10-21 2016-12-28 マーベル ワールド トレード リミテッド 最終レベルキャッシュシステム及び対応する方法

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6070252A (en) 1994-09-30 2000-05-30 Intel Corporation Method and apparatus for interactive built-in-self-testing with user-programmable test patterns
EP0772829A1 (en) 1995-05-26 1997-05-14 National Semiconductor Corporation A pipelined microprocessor that makes memory requests to a cache memory and an external memory controller during the same clock cycle
US5875462A (en) * 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US5680571A (en) * 1995-12-28 1997-10-21 Unisys Corporation Multi-processor data processing system with multiple, separate instruction and operand second level caches
US6490658B1 (en) 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6249893B1 (en) 1998-10-30 2001-06-19 Advantest Corp. Method and structure for testing embedded cores based system-on-a-chip
US6477620B1 (en) * 1999-12-20 2002-11-05 Unisys Corporation Cache-level return data by-pass system for a hierarchical memory
US6701480B1 (en) 2000-03-08 2004-03-02 Rockwell Automation Technologies, Inc. System and method for providing error check and correction in memory systems
US6795894B1 (en) 2000-08-08 2004-09-21 Hewlett-Packard Development Company, L.P. Fast disk cache writing system
US6658538B2 (en) 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6978355B2 (en) 2001-11-13 2005-12-20 Seagate Technology Llc Cache memory transfer during a requested data retrieval operation
US20040117587A1 (en) 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7809252B2 (en) 2003-04-09 2010-10-05 Corel Inc. Systems and methods for caching multimedia data
US7111153B2 (en) 2003-09-30 2006-09-19 Intel Corporation Early data return indication mechanism
US7213186B2 (en) 2004-01-12 2007-05-01 Taiwan Semiconductor Manufacturing Company Memory built-in self test circuit with full error mapping capability
US7395495B2 (en) 2004-01-12 2008-07-01 Intel Corporation Method and apparatus for decoding forward error correction codes
US7165205B2 (en) 2004-05-14 2007-01-16 Motorola, Inc. Method and apparatus for encoding and decoding data
US7752521B2 (en) 2004-10-12 2010-07-06 Nortel Networks Limited Low density parity check (LDPC) code
WO2006039801A1 (en) 2004-10-12 2006-04-20 Nortel Networks Limited System and method for low density parity check encoding of data
US7783961B2 (en) 2005-07-01 2010-08-24 Nec Laboratories America, Inc. Rate-compatible low density parity check coding for hybrid ARQ
JP4160589B2 (ja) 2005-10-31 2008-10-01 富士通株式会社 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法
US8132072B2 (en) 2006-01-06 2012-03-06 Qualcomm Incorporated System and method for providing H-ARQ rate compatible codes for high throughput applications
US7594055B2 (en) 2006-05-24 2009-09-22 International Business Machines Corporation Systems and methods for providing distributed technology independent memory controllers
US7913055B2 (en) 2006-11-04 2011-03-22 Virident Systems Inc. Seamless application access to hybrid main memory
KR101449524B1 (ko) 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
US8051337B2 (en) 2009-01-22 2011-11-01 Taiwan Semiconductor Manufacturing Company, Ltd. System and method for fast cache-hit detection
US7800856B1 (en) 2009-03-24 2010-09-21 Western Digital Technologies, Inc. Disk drive flushing write cache to a nearest set of reserved tracks during a power failure
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
US8615637B2 (en) 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8176220B2 (en) * 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US8255742B2 (en) 2009-11-18 2012-08-28 Microsoft Corporation Dynamically replicated memory
US8428045B2 (en) 2010-03-16 2013-04-23 Harman International Industries, Incorporated Media clock recovery
US9306849B2 (en) 2010-05-03 2016-04-05 Pluribus Networks, Inc. Methods and systems for managing distribute media access control address tables
US8688897B2 (en) 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
US8599510B1 (en) 2011-05-04 2013-12-03 Western Digital Technologies, Inc. Disk drive adjusting data track density based on write condition when writing to contiguous data tracks
US9021226B2 (en) * 2011-06-10 2015-04-28 International Business Machines Corporation Moving blocks of data between main memory and storage class memory
US20130086328A1 (en) 2011-06-13 2013-04-04 Paneve, Llc General Purpose Digital Data Processor, Systems and Methods
US9229879B2 (en) 2011-07-11 2016-01-05 Intel Corporation Power reduction using unmodified information in evicted cache lines
WO2013095559A1 (en) 2011-12-22 2013-06-27 Intel Corporation Power conservation by way of memory channel shutdown
US8806294B2 (en) 2012-04-20 2014-08-12 Freescale Semiconductor, Inc. Error detection within a memory
US9081706B2 (en) 2012-05-10 2015-07-14 Oracle International Corporation Using a shared last-level TLB to reduce address-translation latency
US8593748B1 (en) 2012-06-04 2013-11-26 HGST Netherlands B.V. Shingled magnetic recording disk drive with compensation for the effect of far track erasure (FTE) on adjacent data bands
US8797672B2 (en) 2012-06-14 2014-08-05 HGST Netherlands B.V. Dynamic track pitch control for shingled magnetic recording (SMR)
US9009550B2 (en) 2012-12-10 2015-04-14 Texas Instruments Incorporated pBIST engine with distributed data logging
US20140181402A1 (en) 2012-12-21 2014-06-26 Advanced Micro Devices, Inc. Selective cache memory write-back and replacement policies
US9286223B2 (en) 2013-04-17 2016-03-15 Advanced Micro Devices, Inc. Merging demand load requests with prefetch load requests
WO2014189680A1 (en) 2013-05-19 2014-11-27 Mice With Horns, Llc Transgenic animals with customizable traits
US9785564B2 (en) 2013-08-20 2017-10-10 Seagate Technology Llc Hybrid memory with associative cache
KR20150029213A (ko) 2013-09-09 2015-03-18 삼성전자주식회사 다양한 테스트 패턴을 획득하는 자체 테스트 회로를 포함하는 시스템 온 칩 및 그것의 자체 테스트 방법
US9559722B1 (en) 2013-10-21 2017-01-31 Marvell International Ltd. Network devices and methods of generating low-density parity-check codes and performing corresponding encoding of data
US9454991B2 (en) 2013-10-21 2016-09-27 Marvell World Trade Ltd. Caching systems and methods for hard disk drives and hybrid drives
WO2015168609A1 (en) 2014-05-02 2015-11-05 Marvell World Trade Ltd. Caching systems and methods for hard disk drives and hybrid drives
US9129628B1 (en) 2014-10-23 2015-09-08 Western Digital Technologies, Inc. Data management for data storage device with different track density regions
US9940287B2 (en) 2015-03-27 2018-04-10 Intel Corporation Pooled memory address translation
US9836396B2 (en) * 2015-05-21 2017-12-05 Mediatek Inc. Method for managing a last level cache and apparatus utilizing the same
KR20170065374A (ko) 2015-12-03 2017-06-13 영남대학교 산학협력단 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법
US9703493B2 (en) * 2015-12-14 2017-07-11 Qualcomm Incorporated Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
KR102515417B1 (ko) 2016-03-02 2023-03-30 한국전자통신연구원 캐시 메모리 장치 및 그것의 동작 방법
KR102544118B1 (ko) 2016-04-27 2023-06-16 엘에스일렉트릭(주) 해시충돌 최소화를 위한 해시 테이블 장치
US10430343B2 (en) * 2017-02-21 2019-10-01 Advanced Micro Devices, Inc. Acceleration of cache-to-cache data transfers for producer-consumer communication
US10990532B2 (en) 2018-03-29 2021-04-27 Intel Corporation Object storage system with multi-level hashing function for storage address determination
US11182309B2 (en) 2019-11-04 2021-11-23 Nvidia Corporation Techniques for an efficient fabric attached memory
TW202211035A (zh) 2020-04-06 2022-03-16 南韓商三星電子股份有限公司 用於資源分配的系統、元件以及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040175A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御方法
JP2009211310A (ja) * 2008-03-03 2009-09-17 Canon Inc 情報処理装置及びその制御方法
JP2014182836A (ja) * 2013-03-15 2014-09-29 Intel Corp 永続記憶装置へのライトバックを必要とする非トランザクションコード領域の先頭および終端を指し示す命令
JP2016541046A (ja) * 2013-10-21 2016-12-28 マーベル ワールド トレード リミテッド 最終レベルキャッシュシステム及び対応する方法

Also Published As

Publication number Publication date
JP2024029007A (ja) 2024-03-05
US20210173779A1 (en) 2021-06-10
EP3807773B1 (en) 2024-03-13
EP4345635A2 (en) 2024-04-03
US20230153243A1 (en) 2023-05-18
US11880305B2 (en) 2024-01-23
EP3807773A4 (en) 2022-03-30
JP7407134B2 (ja) 2023-12-28
WO2019246139A1 (en) 2019-12-26
CN112997161A (zh) 2021-06-18
US20190384709A1 (en) 2019-12-19
EP3807773A1 (en) 2021-04-21
US11556469B2 (en) 2023-01-17
US10936492B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
US11360894B2 (en) Storage system and method for accessing same
JP7407134B2 (ja) 記憶システムをメインメモリとして使用するための方法および装置
US20130205088A1 (en) Multi-stage cache directory and variable cache-line size for tiered storage architectures
US20230144038A1 (en) Memory pooling bandwidth multiplier using final level cache system
US11822474B2 (en) Storage system and method for accessing same
KR102457179B1 (ko) 캐시 메모리 및 그것의 동작 방법
KR101480420B1 (ko) 메모리-디스크 통합 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230131

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230428

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231006

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20231121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231218

R150 Certificate of patent or registration of utility model

Ref document number: 7407134

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150