JP2016541046A - 最終レベルキャッシュシステム及び対応する方法 - Google Patents

最終レベルキャッシュシステム及び対応する方法 Download PDF

Info

Publication number
JP2016541046A
JP2016541046A JP2016525567A JP2016525567A JP2016541046A JP 2016541046 A JP2016541046 A JP 2016541046A JP 2016525567 A JP2016525567 A JP 2016525567A JP 2016525567 A JP2016525567 A JP 2016525567A JP 2016541046 A JP2016541046 A JP 2016541046A
Authority
JP
Japan
Prior art keywords
dynamic random
random access
access memory
data
storage drive
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
JP2016525567A
Other languages
English (en)
Other versions
JP2016541046A5 (ja
JP6431536B2 (ja
Inventor
スタージャ、セハット
Original Assignee
マーベル ワールド トレード リミテッド
マーベル ワールド トレード リミテッド
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 マーベル ワールド トレード リミテッド, マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2016541046A publication Critical patent/JP2016541046A/ja
Publication of JP2016541046A5 publication Critical patent/JP2016541046A5/ja
Application granted granted Critical
Publication of JP6431536B2 publication Critical patent/JP6431536B2/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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/406Management or control of the refreshing or charge-regeneration cycles
    • G11C11/40607Refresh operations in memory devices with an internal cache or data buffer
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned 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/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/161Portable computer, e.g. notebook
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/171Portable consumer electronics, e.g. mobile phone
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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/22Employing cache memory using specific memory technology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6032Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

プロセッサ及び最終レベルキャッシュモジュールを含むデータアクセスシステム。プロセッサは、第1の物理アドレスにアクセスするための要求を生成するよう構成される。最終レベルキャッシュモジュールは、ダイナミックランダムアクセスメモリ(DRAM)、最終レベルキャッシュコントローラ、及びDRAMコントローラを含む。最終レベルキャッシュコントローラは、(i)プロセッサからの要求を受信し、(ii)第1の物理アドレスを第1の仮想アドレスに変換するよう構成される。DRAMコントローラは、(i)第1の仮想アドレスを第2の物理アドレスに変換し、(ii)第2の物理アドレスに基づいて、DRAMにアクセスするよう構成される。

Description

[関連出願の相互参照]
本出願は、2014年10月21日出願の米国特許出願第14/519,826号への優先権を主張し、また、2013年10月21日出願の米国特許仮出願第61/893,662号、2013年10月21日出願の米国特許仮出願第61/893,675号、2013年10月21日出願の米国特許仮出願第61/893,683号、及び2013年10月24日出願の米国特許仮出願第61/895,049号の利益を主張する。上記参照された複数の出願の開示全体は、参照によって本明細書に組み込まれる。
本開示は、複数の集積回路に関し、より具体的にはシステムオンチップに関連付けられるキャッシュに関する。
本明細書において提供される背景技術の説明は、開示の文脈を概して提示することを目的とする。現在名を挙げられた発明者らの研究は、当該研究がこの背景技術において説明される範囲において、出願時に別途従来技術としてみなされ得ない当該説明の複数の態様と共に、明示的にも暗示的にも、本開示に対する従来技術とは認められない。
コンピュータ、携帯電話、タブレット等といった複数のデバイスは、典型的にシステムオンチップ(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)イーサネット(登録商標)インタフェース36などのイーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(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は、当該複数のプログラムの実行中、及び/又は実行後、複数のDRAM14中に第2のデータを格納し得る。複数のDRAM14は、高帯域幅インタフェース及びビット単価の安いメモリ記憶容量を有し得、広範囲の用途に対処し得る。
SoC12は、レベル0(L0)キャッシュ、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、又は、レベル3(L3)キャッシュのうちの1又は複数を含み得るキャッシュメモリを含む。L0−L3キャッシュは、複数の画像処理装置20のうちの対応する画像処理装置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の各々の数及びサイズは、用途に依存する。例えば、複数の携帯電話は、現在1−4ギガバイト(GB)のDRAMを有し、複数のパーソナルコンピュータは、現在4−16GBのDRAMを有し、複数のサーバは、現在32GB−512GBのDRAMを有する。一般的に、DRAMの量が増えるにつれてコストは高くなる。
DRAMのコストに加えて、同じ記憶容量に対するDRAMのパッケージサイズを小さくすることがますます困難になってきている。また、デバイス中に組み込まれる複数のDRAMのサイズ及び数が増えるにつれて、それらのDRAMのキャパシタンスは増加し、それらのDRAMと関連付けられる導電素子の数及び/又は長さは増え、それらのDRAMと関連付けられるバッファリングは増える。加えて、それらのDRAMのキャパシタンスが増加するにつれて、それらのDRAMの動作周波数は低下し、それらのDRAMのレイテンシ期間は大きくなる。
動作中、複数のプログラム及び/又はデータは、必要に応じて、複数のDRAM14からSoC12中の複数のキャッシュに転送される。これらの転送は、(i)複数のキャッシュと、(ii)対応する複数のプロセッサ及び/又は画像処理装置との間のデータ交換と比較してより高いレイテンシを有する。このため、複数のDRAM14へのアクセスは、より長いレイテンシ期間が原因で、典型的に回避される。
起動中、複数のプログラムは、複数の記憶ドライブ16から複数のDRAM14に転送され得る。例えば、セントラルプロセッサ28は、起動中、複数のプログラムを記憶ドライブ16から複数のDRAM14に転送し得る。起動中、セントラルプロセッサ28は、複数のDRAM14中に格納されるデータにアクセスしようと試み得る。このアクセスの試みと関連付けられるヒットの割合は、最初は0%に近い、又は0%に等しいこともある。しかしながら、ヒットの割合は、起動の終了までには100%に近づく。
データアクセスシステムが提供され、データアクセスシステムは、プロセッサ及び最終レベルキャッシュモジュールを含む。プロセッサは、第1の物理アドレスにアクセスするための要求を生成するよう構成される。最終レベルキャッシュモジュールは、ダイナミックランダムアクセスメモリ(DRAM)、最終レベルキャッシュコントローラ、及びDRAMコントローラを含む。最終レベルキャッシュコントローラは、(i)プロセッサからの要求を受信し、(ii)第1の物理アドレスを第1の仮想アドレスに変換するよう構成される。DRAMコントローラは、(i)第1の仮想アドレスを第2の物理アドレスに変換し、(ii)第2の物理アドレスに基づいてDRAMにアクセスするよう構成される。
最終レベルキャッシュモジュールのダイナミックランダムアクセスメモリにアクセスするための方法が提供される。当該方法は、第1の物理アドレスにアクセスするための要求をプロセッサによって生成する段階と、最終レベルキャッシュコントローラにおいてプロセッサからの要求を受信する段階と、最終レベルキャッシュコントローラによって第1の物理アドレスを第1の仮想アドレスに変換する段階と、ダイナミックランダムアクセスメモリコントローラによって第1の仮想アドレスを第2の物理アドレスに変換する段階と、第2の物理アドレスに基づいてダイナミックランダムアクセスメモリにアクセスする段階とを含む。
本開示の適用性の更なる領域は、詳細な説明、特許請求の範囲、及び複数の図面から明らかになるであろう。詳細な説明及び複数の特定の例は、例示することのみを目的とし、当該開示の範囲を限定することは意図されていない。
従来技術による、デバイスの機能ブロック図である。
本開示の一実施形態による、データアクセスシステムの機能ブロック図である。
図2のデータアクセスシステムのDRAM及び記憶ドライブのエントリを図示する機能ブロック図である。
図2のデータアクセスシステムを動作させる方法を示す。
複数の図面において、複数の参照番号は、同様の及び/又は同一の複数の要素を特定すべく再利用され得る。
複数の以下の例の少なくともいくつかは、複数の最終レベルキャッシュ(FLC)モジュール及び複数の記憶ドライブを含む。複数のFLCモジュールは、仮想記憶域として使用され、複数の記憶ドライブは物理記憶域として使用される。データはまず、物理記憶域からの読み出し、又は物理記憶域への書き込みの前に、仮想記憶域から読み出される、又は仮想記憶域へ書き込まれる。複数のFLCモジュール及び複数の記憶ドライブにおけるメモリは、本明細書において、コンテントアドレサブルメモリ(CAM)と称される。複数のFLCモジュールの複数の制御モジュールは、以下に説明される様々なCAM技術を使用して、複数のFLCモジュール及び複数の記憶ドライブ中のメモリへのアクセスを制御する。複数のCAM技術及び他の開示される複数の特徴は、メモリアクセス速度を最大化し、且つ消費電力を最小化しながら、デバイス中のDRAMの、必要とされる記憶容量を低減させる。デバイスは、ネットワークデバイス、又は無線ネットワークデバイスであり得る。複数のデバイスの例は、限定されないが、コンピュータ、携帯電話、タブレット、カメラ等を含む。複数の以下の例におけるDRAMは、通常、メインメモリとして使用されないが、むしろ、仮想メモリとして、及び/又はキャッシュの最終レベルとして使用される。
図2は、画像処理装置72、システムバス74、FLCモジュール76、及び記憶ドライブ78を含むデータアクセスシステム70を示す。データアクセスシステム70は、例えば、コンピュータ、携帯電話、タブレット、サーバ、及び/又は他のデバイス中に実装され得る。画像処理装置72は、例えば、セントラルプロセッサ(又は中央処理装置(CPU))、グラフィックスプロセッサ(又はグラフィックス処理装置(GPU))、ビデオ記録装置、カメラ画像信号プロセッサ(ISP)、ギガビット(Gb)イーサネット(登録商標)インタフェースなどのイーサネット(登録商標)インタフェース、ユニバーサルシリアルバス(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へのアクセスを制御し得るメモリ管理モジュール(MMM)79を含み得る。画像処理装置によって実行されると以下に説明される複数のタスクは、例えば、セントラルプロセッサ73及び/又はMMM79によって実行され得る。
画像処理装置72は、システムバス74を介してFLCモジュール76に接続される。画像処理装置72は、(i)画像処理装置72とシステムバス74との間、及び、(ii)システムバス74と記憶ドライブ78との間をバス及び複数のインタフェースを介して記憶ドライブ78に接続される。複数のインタフェースは、例えば、イーサネット(登録商標)インタフェース、シリアルインタフェース、PCIeインタフェース、及び/又は、組み込み型マルチメディアコントローラ(embedded multi−media controller)(eMMC)インタフェースを含み得る。記憶ドライブ78は、画像処理装置72及び/又はFLCコントローラ80から離れて世界中どこにでも配置され得る。記憶ドライブ78は、1又は複数のネットワーク(例えば、WLAN、インターネットネットワーク、又は遠隔ストレージネットワーク(又はクラウド))を介して、画像処理装置72及び/又はFLCコントローラ80と通信し得る。
FLCモジュール76は、FLCコントローラ80、DRAMコントローラ82、及びDRAM IC84を含む。DRAM IC84が、主に仮想記憶域として使用される一方で、記憶ドライブ78は物理記憶域として使用される。複数の画像処理装置72は、DRAM IC84及び記憶ドライブ78を、それらがあたかも単一の記憶デバイスであるかのようにアドレシングする。データの読み出し及び/又は書き込みの間、複数の画像処理装置72はFLCコントローラ80に複数のアクセス要求を送信する。FLCコントローラ80は、DRAMコントローラ82を介してDRAM IC84にアクセスし、及び/又は、記憶ドライブ78にアクセスする。FLCコントローラ80は、(破線によって示されるように)直接的に、又はシステムバス74を介して、記憶ドライブにアクセスし得る。
データアクセスシステム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−4GBの記憶容量、パーソナルコンピュータアプリケーションのために4−32GBの記憶容量、及び、サーバアプリケーションのために32GB−1テラバイト(T)の記憶容量を有し得る。
記憶ドライブ78は、フラッシュメモリ(例えば、NANDフラッシュメモリ)、ソリッドステートメモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ(HDD)、及び/又は他の不揮発性メモリを含み得る。記憶ドライブ78は、ハイブリッドドライブであり得、例えば、ソリッドステートメモリ及び回転記憶媒体を含み得る。記憶ドライブ78は、DRAM IC84より大きい記憶容量を有し得る。例えば、記憶ドライブ78は、DRAM IC84より4−16倍大きい記憶容量を含み得る。別の例として、記憶ドライブ78は、DRAM IC84より1桁大きい記憶容量を有し得る。DRAM IC84は、高速DRAMを含み得、記憶ドライブ78は低速DRAMを含み得る。換言すると、DRAM IC84の速度は、記憶ドライブ78におけるDRAMの速度より高速である。
DRAM IC84中に格納されるデータは、直近にアクセスされ、最も多くアクセスされ、及び/又は、関連付けられる最も高い優先レベルを有するデータであり得る。DRAM IC84中に格納されるデータは、ロックされているデータを含み得る。ロックされているデータは、DRAM IC84中に常に格納されるデータを指す。ロックされたデータはアップデートされ得る。DRAM IC84中に格納されるデータは、記憶ドライブ78に格納されるデータより頻繁にアクセスされ、及び/又は、より高い優先レベルを有し得る。
いくつかの例において、DRAM IC84中に格納されるデータは、頻繁には使用(例えば、予め定められた期間にわたって予め定められた回数より多くアクセス)されないソフトウェアアプリケーション、フォント、ソフトウェアコード、代用コード、及び、様々な話し言葉をサポートするデータ等を含まない。これは、DRAM IC84のサイズ要件の最小化の助けとなり得る。頻繁には使用されないソフトウェアコードは、「ガベージコード(garbage code)」と称され得、起動プロセス中は記憶ドライブ78からDRAM IC84へロードされ得ない。起動プロセスは、頻繁に使用されるデータのアップロードのみを含み得る。DRAM IC84のサイズが低減するにつれて、性能は向上し、電力消費、キャパシタンス及びバッファリングは低減する。キャパシタンス及びバッファリングが低減するにつれて、レイテンシは低下する。また、より少ない電力を消費することによって、対応するデバイスのバッテリ寿命は高められる。
FLCコントローラ80は、複数の画像処理装置72からの複数の要求を受信することに応答して、複数のCAM技術を実行する。複数のCAM技術は、複数の画像処理装置72によって提供される複数の要求の第1の物理アドレスを複数の仮想アドレスに変換することを含む。これらの仮想アドレスは、複数の画像処理装置72によって初めに生成される複数の仮想アドレスとは無関係であり、且つそれらとは異なり、複数の画像処理装置72によって複数の第1の物理アドレスにマッピングされる。DRAMコントローラ82は、FLCコントローラ80によって生成される複数の仮想アドレスを複数の第2の物理アドレスに変換(又はマッピング)する。第2の物理アドレスがDRAM IC84中に存在しない場合、FLCコントローラ80は、(i)記憶ドライブ78からデータをフェッチし、又は(ii)キャッシュミスが発生したことを複数の画像処理装置72のうちの対応する画像処理装置72に対して示し(又は信号で伝え)得る。記憶ドライブ78からデータをフェッチすることは、記憶ドライブ78中のデータにアクセスすべく、FLCコントローラ80によって生成される複数の仮想アドレスを複数の第3の物理アドレスにマッピングすることを含み得る。キャッシュミスは、物理アドレスを仮想アドレスに変換する間にFLCコントローラ80によって、及び/又は、仮想アドレスを第2の物理アドレスに変換する間にDRAMコントローラ82によって、検出され得る。DRAMコントローラ82は、キャッシュミスが発生したことをFLCコントローラ80に信号で伝え得、その後FLCコントローラ80は、キャッシュミスを複数の画像処理装置72のうちの1つに信号で伝える、又は、データのために記憶ドライブ78にアクセスし得る。
FLCコントローラ80が、キャッシュミスが発生したことを複数の画像処理装置72のうちの対応する画像処理装置72に信号で伝える場合、複数の画像処理装置72うちの対応する画像処理装置72は、記憶ドライブ78中のデータにアクセスし得る。このことは、(i)複数の第1の物理アドレスに基づいて記憶ドライブ78中のデータにアクセスすること、(ii)初めに生成された複数の仮想アドレスを複数の第3の物理アドレスにマッピングして、その後、複数の第3の物理アドレスに基づいて記憶ドライブ78にアクセスすること、又は、(iii)複数の第1の物理アドレスを複数の第3の物理アドレスにマッピングして、その後、複数の第3の物理アドレスに基づいて記憶ドライブ78にアクセスすることを含み得る。当該複数のCAM技術は、DRAM IC84と記憶ドライブ78との間のアドレスマッピングを含む。
例えば、当該複数のCAM技術は、フルセットアソシアティブアドレス変換(full set associative address translation)を提供し得る。これは、複数の第1の物理アドレスを、FLCコントローラ80のディレクトリ中に格納される全ての仮想アドレスと比較することを含み得る。フルセットアソシアティブアドレス変換は、対応する複数のデータ要求の複数の第1の物理アドレスを複数の第2の仮想アドレス(又はFLCコントローラ80によって生成される複数の仮想アドレス)に変換すべく、FLCコントローラ80によって使用され得る。このことは、複数の仮想アドレスへの変換のために、複数の第1の物理アドレスを第1のディレクトリ中の全てのアドレスと比較して複数の一致を見つけることを含み得る。フルセットアソシアティブアドレス変換はまた、複数の第2の物理アドレスへの変換のために、複数の第2の仮想アドレスを、第2のディレクトリ、DRAM IC84、及び/又は記憶ドライブ78中の全てのエントリの全てのアドレスと比較して複数の一致を見つけるべく、DRAMコントローラ82によって使用され得る。初期の起動後の、DRAM IC84中に位置しているデータのヒット率は、DRAM IC84のサイズに依存して、100%に達し得る。DRAM IC84は、プロセッサ及び/又は画像処理装置の最小のアイドル時間で、100%に近いヒット率を保証するようなサイズにされ得る。例えば、このことは、複数の携帯電話アプリケーションについて1−4GB DRAM ICを、複数のパーソナルコンピュータアプリケーションについて4−32GB DRAM ICを、複数のサーバアプリケーションについて32−500GB DRAM ICを使用して達成され得る。
図2に加えて、図3は、データアクセスシステム70の、DRAM IC84及び記憶ドライブ78の複数のエントリを示す。DRAM IC84は、複数のDRAMエントリ00−MNを含み得る。記憶ドライブ78は、ドライブエントリ00−MNを有し得る。DRAMエントリ00−MNの各々の複数のアドレスは、ドライブエントリ00−MNの1又は複数のアドレスにマッピングされ得る。結果的に、DRAMエントリ00−MNのうちの1又は複数の中に格納されるデータの第1の部分は、ドライブエントリ00−MN中に格納されるデータの第2の部分に対応し得る。DRAMエントリ00−MN中に格納されるデータは、ドライブエントリ00−MN中に格納されるデータについての情報を提供するメタデータを含み得る。当該情報は、ドライブエントリ00−MN中に格納されるデータタイプ及び/又はデータの長さを含み得る。
一例として、DRAMエントリ00−MNの各々は、例えば、16KBの記憶容量を有し得る。ドライブエントリ00−MNの各々は、16GBの記憶容量を有し得る。データが、DRAMエントリ00−MNのうちの1つから読み出され、又はDRAMエントリ00−MNのうちの1つに書き込まれる予定であり、DRAMエントリ00−MNのうちの1つが一杯であり、及び/又は、要求に関連付けられるデータの全てを有するわけではない場合、ドライブエントリ00−MNのうちの対応するドライブエントリ00−MNがアクセスされる。したがって、DRAM IC84及び記憶ドライブ78は、メモリの複数のブロックに分割され得る。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は、バスの準備ができるのを待つ間、複数の他のタスクを実行し得る。当該複数の他のタスクは、例えば、画像処理装置のSoC中の1又は複数のキャッシュ(例えば、L0−L3キャッシュ)の中に既に格納されているデータを使用することを含み得る。このことはまた、プロセッサ及び/又は画像処理装置のアイドル時間を最小化する。
シーケンシャルアクセスが実行される場合、FLCコントローラ80及び/又はDRAMコントローラ82は、将来アクセスされると予期される複数のアドレスに格納されるデータの予測的なフェッチを実行し得る。このことは、起動中及び/又は起動後に行われ得る。FLCコントローラ80及び/又はDRAMコントローラ82は、データ及び/又はソフトウェアの使用を追跡し、実行されるべきコードの次の複数のラインを評価し、複数のメモリアクセスパターンを追跡し、この情報に基づいて、アクセスされると予期されるデータの次の複数のアドレスを予測し得る。当該次の複数のアドレスは、DRAM IC84及び/又は記憶ドライブ78の複数のアドレスであり得る。一例として、以前にデータの要求を受信したこととは無関係に、及び/又は、以前にデータの要求を受信すること無くFLCコントローラ80及び/又はDRAMコントローラ82は、記憶ドライブ78中に格納されるデータにアクセスし、そのデータをDRAM IC84に転送し得る。別の例として、以前にデータの要求を受信したこととは無関係に、及び/又は、以前にデータの要求を受信すること無く、FLCコントローラ80及び/又はDRAMコントローラ82は、DRAM IC84中に格納されるデータにアクセスし、そのデータをシステムバス74及び/又は複数の画像処理装置72のうちの1つに転送し得る。
データアクセスシステム70の動作が、図4の方法に関して更に説明される。以下の複数のタスクは、主として図2−4における複数の例に関して説明されるが、当該複数のタスクは、本開示における複数の他の例に適用するよう容易に変更され得る。当該複数のタスクは反復して実行され得る。
当該方法は100において開始する。102において、FLCコントローラ80は、複数の画像処理装置72のうちの1つからの要求を受信する。当該要求は、読み出し要求又は書き込み要求であり得る。
104において、FLCコントローラ80は、受信された要求が読み出し要求かどうかを決定する。要求が読み出し要求である場合はタスク106が実行され、そうでない場合はタスク122が実行される。106において、FLCコントローラ80は、受信された要求において提供される第1の物理アドレスを仮想アドレスに変換する。当該仮想アドレスは、DRAM IC84中の物理アドレス、及び/又は、記憶ドライブ78中の物理アドレスに関連付けられ得る。
108において、DRAMコントローラ82は、仮想アドレスを第2の物理アドレスに変換する。FLCコントローラ80及び/又はDRAMコントローラ82は、複数の第1の物理アドレスを複数の仮想アドレスにマッピングするための、及び、複数の仮想アドレスを複数の第2の物理アドレスにマッピングするための、1又は複数の変換マッピングテーブルを含み得る。当該複数のテーブルは、FLCコントローラ80とDRAMコントローラ82との間で共有され得る。
110において、DRAMコントローラ82は、第2の物理アドレスがDRAM IC84中に存在するかどうか、ひいては、データの対応するブロックがDRAM IC84の割り当てられたスペース中に存在するかどうかを決定する。第2の物理アドレスがDRAM IC84中に存在する場合、タスク112が実行され、そうでない場合は、タスク114が実行される。
112において、及び、第2の物理アドレスに基づいて、DRAMコントローラ82は、DRAM IC84からの受信された要求に関連付けられるデータの1又は複数の第1のブロックを読み出す。データの複数の第1のブロックの各々は、DRAM IC84中の対応する物理アドレスを有し得る。
114において、及び、第2の物理アドレスに基づいて、FLCコントローラ80は、記憶ドライブ78からの受信された要求に関連付けられるデータの1又は複数の第2のブロックを読み出す。データの1又は複数の第2のブロックは、データの複数の第1のブロックを含み得る。データの複数の第2のブロックの各々は、記憶ドライブ78中の対応する物理アドレスを有し得る。記憶ドライブ78の、データの複数の第2のブロック、及び複数の対応するアドレスは、DRAM IC84の、データの複数の第1のブロック、及び複数の対応するアドレスにそれぞれ対応し得る。
116において、DRAM IC84又は記憶ドライブ78から読み出されたデータは、受信された要求を送信した画像処理装置に転送される。118において、102において受信された要求について、FLCコントローラ80及び/又はDRAMコントローラ82は、DRAM IC84及び/又は記憶ドライブ78から読み出されるべき追加のデータがあるかどうかを決定し得る。読み出されるべき追加のデータがある場合、タスク110が実行され、そうでない場合は、当該方法は120において終了し得る。タスク110へ戻る代わりとして、及び、102において受信された要求について、読み出されるべき追加のデータがある場合、及び、変換されるべき別の物理アドレスがある場合、タスク118の後にタスク106が実行され得る。
122において、FLCコントローラ80は、受信された要求が書き込み要求かどうかを決定する。受信された要求が書き込み要求である場合、タスク126が実行され、そうでない場合は、124において当該方法は終了し得る。126において、FLCコントローラ80は、受信された要求において提供される第1の物理アドレスを仮想アドレスに変換する。仮想アドレスは、DRAM IC84中の物理アドレス、及び/又は、記憶ドライブ78中の物理アドレスに関連付けられ得る。128において、DRAMコントローラ82は、仮想アドレスを第2の物理アドレスに変換する。タスク126および128は、上述された複数のマッピングテーブルを使用して達成され得る。
130において、DRAMコントローラ82は、DRAM IC84中に第2の物理アドレスが存在するかどうか、ひいては、データの対応するブロックが、DRAM IC84中の割り当てられたスペースに書き込まれるべきかどうかを決定する。第2の物理アドレスがDRAM IC84中に存在する場合、タスク132が実行され、そうでない場合は、タスク134が実行される。
132において、及び、第2の物理アドレスに基づいて、DRAMコントローラ82は、受信された要求に関連付けられるデータの1又は複数の第1のブロックをDRAM IC84に書き込む。データの複数の第1のブロックの各々は、DRAM IC84中の対応する物理アドレスを有し得る。
134において、及び、第2の物理アドレスに基づいて、FLCコントローラ80は、受信された要求に関連付けられるデータの1又は複数の第2のブロックを記憶ドライブ78に書き込む。データの1又は複数の第2のブロックは、データの複数の第1のブロックを含み得る。データの複数の第2のブロックの各々は、記憶ドライブ78中の対応する物理アドレスを有し得る。記憶ドライブ78の、データの複数の第2のブロック、及び複数の対応するアドレスは、DRAM IC84の、データの複数の第1のブロック、及び複数の対応するアドレスにそれぞれ対応し得る。
136において、102において受信された要求について、FLCコントローラ80及び/又はDRAMコントローラ82は、DRAM IC84及び/又は記憶ドライブ78に書き込まれるべき追加のデータがあるかどうかを決定し得る。書き込まれるべき追加のデータがある場合、タスク130が実行され、そうでない場合は、138において当該方法は終了し得る。タスク130に戻る代わりとして、及び、102において受信された要求について、書き込まれるべき追加のデータがある場合、及び、変換されるべき別の物理アドレスがある場合、タスク126が、タスク136の後に実行され得る。
上述された図4の複数のタスクは、説明のための複数の例であることが意図される。当該複数のタスクは、用途に応じて、シーケンシャルに、同期して、同時に、連続的に、重複する複数の期間中に、又は、異なる順序で、実行され得る。また、その例及び/又はイベントのシーケンスに応じて、当該複数のタスクの任意のものは実行されない、又はスキップされ得る。
複数の上述の例は、ネットワーク中の複数のサーバ(「クラウド」と称され得る)を介して実施され得る。複数のサーバの各々は、FLCモジュール(例えば、FLCモジュール76)を含み、互いに通信し得る。複数のサーバは、DRAM IC及び記憶ドライブ中に格納されるDRAM及び/又はメモリを共有し得る。複数のサーバの各々は、ネットワークを介して、複数の他サーバ中のDRAM及び/又は記憶ドライブにアクセスし得る。複数のFLCモジュールの各々は、図2のFLCモジュールと同様に動作し得るが、クラウドを介して、複数の他サーバの各々におけるDRAM及び/又はメモリにもアクセスし得る。複数のサーバとクラウドとの間で送信される複数の信号は、送信前に暗号化され、クラウドのサーバ及び/又はネットワークデバイスに到着すると復号され得る。複数のサーバはまた、クラウド中のメモリを共有、及び/又は、クラウド中のメモリにアクセスし得る。一例として、複数のサーバのうちの1つのサーバーのFLCコントローラによって生成される仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、複数のサーバのうちの1つのサーバの記憶ドライブ、複数の他のサーバのうちの1つのサーバのFLCモジュールのDRAM、複数の他のサーバのうちの1つのサーバの記憶ドライブ、又は、クラウドの記憶デバイス中の物理アドレスに対応し得る。複数のサーバのうちの1つのサーバのFLCコントローラ及び/又は画像処理装置は、キャッシュミスが発生した場合は、複数の他のFLCモジュール、複数の記憶ドライブ、及び/又は複数の記憶デバイス中のDRAM及び/又はメモリにアクセスし得る。
複数の上述の例はまた、複数のチップを有するマルチチップモジュール、スイッチ、及び、一次FLCモジュールを有する一次チップを含むデータアクセスシステム中で実施され得る。マルチチップモジュールは、スイッチを介して一次チップモジュールに接続される。複数のFLCモジュールの各々は、図2のFLCモジュールと同様に動作し得るが、スイッチを介して、複数の他のチップの各々におけるDRAM及び/又はメモリにもアクセスし得る。一例として、複数のチップのうちの1つのチップのFLCコントローラによって生成される仮想アドレスは、FLCコントローラのFLCモジュールのDRAM、複数のチップのうちの1つのチップの記憶ドライブ、複数の他のチップのうちの1つのチップのFLCモジュールのDRAM、複数の他のチップのうちの1つのチップの記憶ドライブ、又は、クラウドの記憶デバイス中の物理アドレスに対応し得る。複数のチップのうちの1つのチップのFLCコントローラ及び/又は画像処理装置は、キャッシュミスが発生した場合は、複数の他のFLCモジュール、複数の記憶ドライブ、及び/又は複数の記憶デバイス中のDRAM及び/又はメモリにアクセスし得る。
一例として、マルチチップモジュール中の複数の二次DRAMの各々、及び、一次チップ中の一次DRAMは、1GBの記憶容量を有し得る。一次チップ中の記憶ドライブは、例えば、64GBの記憶容量を有し得る。別の例として、データアクセスシステムは自動車車両において使用され得る。一次チップは、例えば、中央コントローラ、モジュール、プロセッサ、エンジン制御モジュール、送信制御モジュール、及び/又はハイブリッド制御モジュールであり得る。一次チップは、スロットル位置、点火時期、給油時期、複数の伝達装置の間の移行等といった関連する複数のシステムの複数の対応する態様を制御すべく使用され得る。マルチチップモジュール中の複数の二次チップは、照明システム、エンターテイメントシステム、空調システム、排気システム、ナビゲーションシステム、オーディオシステム、ビデオシステム、ブレーキシステム、ステアリングシステム等といった特定の車両システムに各々関連付けられ、複数の対応するシステムの複数の態様を制御すべく使用され得る。
更にもう1つの例として、複数の上述の例はまた、ホスト(又はSoC)及びハイブリッドドライブを含むデータアクセスシステムにおいて実施され得る。ホストは、セントラルプロセッサ又は他の画像処理装置を含み、インタフェースを介してハイブリッドドライブと通信し得る。インタフェースは、例えば、GEインタフェース、USBインタフェース、SATAインタフェース、PCIeインタフェース、又は他の適したインタフェースであり得る。ハイブリッドドライブは、第1の記憶ドライブ及び第2の記憶ドライブを含む。第1の記憶ドライブは、FLCモジュール(例えば、図2のFLCモジュール76)を含む。FLCモジュールのFLCコントローラは、FLCモジュールのDRAM及び第2の記憶ドライブからデータを読み出す、及び/又はそれらにデータを書き込むべきかどうかを決定するとき、複数のCAM技術を実行する。
更なる例として、複数の上述の例はまた、SoC、第1のDRAM(又はキャッシュ)、第2のDRAM、及び不揮発性メモリを含む記憶システム中で実施され得る。SoCは、第1のDRAM、ディスクリートDRAM、及び不揮発性メモリとは分離している。第1のDRAMは、高優先度の、及び/又は、頻繁にアクセスされるデータを格納し得る。高い割合のデータアクセス要求が、第1のDRAM中に格納されたデータに向けられ得る。一例として、99%又はそれより多いデータアクセス要求は、第1のDRAM中に格納されたデータに向けられ得、残りの1%又はそれより少ないデータアクセス要求は、第2のDRAM及び/又は不揮発性メモリ中に格納されたデータに向けられ得る。低優先度の、及び/又は、より低い頻度でアクセスされるデータは、第2のDRAM及び/又は不揮発性メモリ中に格納され得る。一例として、ユーザは複数のウェブブラウザを開いていてよい。第2のDRAMは、高帯域幅インタフェース及びビット単価の安いメモリ記憶容量を有し得、広範囲の用途に対処し得る。第2のDRAMは、典型的に、キャッシュ又は第1のDRAMより長いレイテンシ期間を示す。現在使用している、又は最も頻繁に使用されるウェブブラウザのコンテンツは、第1のDRAM中に格納され、一方で、他の複数のウェブブラウザのコンテンツは、第2の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キャッシュ622、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の論理ブロックアドレスを、(i)第1のDRAM、第2のDRAM、及び/又は不揮発性メモリの物理ブロックアドレスに、又は(ii)複数の第2の論理ブロックアドレスに変換し得る。複数の第2の論理ブロックアドレスは、第1のDRAM、第2のDRAM、及び/又は不揮発性メモリによって複数の物理ブロックアドレスに変換され得る。キャッシュモジュールは、複数の第1の論理ブロックアドレスの複数の第2の論理ブロックアドレスへの変換、及び/又は、複数の第1の論理ブロックアドレスの複数の物理ブロックアドレスへの変換のための1又は複数のルックアップテーブル(例えば、複数のフルセットアソシアティブルックアップテーブル(fully set associative lookup table))を格納し得る。結果的に、キャッシュモジュール、並びに、第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へのデータの入れ換えは、複数の転送イベントを含み得る。各転送イベントは、データのブロック(例えば、16KBのデータ)を転送することを含む。
キャッシュモジュールは、第1のDRAMをセットアソシアティブキャッシュ、ダイレクトマップドキャッシュ、及び/又は、フルアソシアティブキャッシュとして使用し、対応する複数のキャッシュプロトコルを使用して第1のDRAMにアクセスし得る。キャッシュモジュールは、最終(又は最高)レベルキャッシュ(LLC)コントローラと称され得る。
第1のDRAMは、第1の予め定められた記憶容量(例えば、0.25GB、0.5GB、1GB、又は8GB)を有し得る。0.5GBの第1のDRAMは、典型的なL2キャッシュの512倍の大きさである。第2のDRAMは、(例えば、非サーバベースシステムについて1GB又はそれより大きい、又はサーバベースシステムについて256GB又はそれより大きい)第2の予め定められた記憶容量を有し得る。不揮発性メモリは、(例えば、256GB又はそれより大きい)第3の予め定められた記憶容量を有し得る。不揮発性メモリは、フラッシュメモリ又は磁気抵抗ランダムアクセスメモリ(MRAM)などのソリッドステートメモリ、及び/又は回転磁気媒体を含み得る。不揮発性メモリは、SSD及びHDDを含み得る。記憶システムは、第2のDRAM及び不揮発性メモリを有すが、第2のDRAM及び不揮発性メモリのどちらも記憶システムに含まれないことがある。
更なる例として、複数の上述の例はまた、SoC及びDRAM ICを含む記憶システムにおいて実施され得る。SoCは、リングバスを介してDRAM ICにアクセスする複数の制御モジュール(又は複数のプロセッサ)を含み得る。リングバスは、複数のアクセスレイテンシを最小化する双方向バスであり得る。性能よりコストが重要である場合は、リングバスは単方向バスであり得る。複数の中間デバイスが、複数の制御モジュールとリングバスとの間に、及び/又は、リングバスとDRAM ICとの間に配置され得る。例えば、上述されたキャッシュモジュールは、複数の制御モジュールとリングバスとの間に、又は、リングバスとDRAM ICとの間に配置され得る。
DRAM ICは、L3、L4、及び/又は最高レベルキャッシュであり得る。複数の制御モジュールは、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チャネル、及び、複数のネットワークインタフェースは、複数のイーサネット(登録商標)ポート、複数のチャネル、及び複数のネットワークインタフェースであり得、予め定められた速度(例えば、1ギガビット毎秒(Gb/s)、10Gb/s、50Gb/s等)でデータを転送し得る。複数のネットワークインタフェースのうちのいくつかは、クラウド中に配置され得る。複数の記憶システムの接続は、低コストで、分散型で、スケーラブルなサーバシステムを提供する。複数の開示された記憶システム及び/又は複数のサーバシステムのうちの複数のものは、互いに通信し、ネットワーク(又はクラウド)中に含まれ得る。
複数のソリッドステート不揮発性メモリはそれぞれ、例えば、NANDフラッシュメモリ及び/又は他のソリッドステートメモリを含み得る。複数の不揮発性メモリはそれぞれ、ソリッドステートメモリ及び/又は回転磁気媒体を含み得る。複数の不揮発性メモリはそれぞれ、SSD及び/又はHDDを含み得る。
サーバシステムのアーキテクチャは、複数のDRAMを複数のキャッシュとして提供する。複数のDRAMは、それぞれのSoCに、L3、L4、及び/又は最高レベルキャッシュとして割り当てられ、高い帯域幅と大きな記憶容量とを有し得る。複数のスタック型DRAMは、例えば、DDR3メモリ、DDR4メモリ、ロー・パワー・ダブル・データ・レート・タイプ・フォー(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と複数のソリッドステート不揮発性メモリと複数の不揮発性メモリとの中の複数のメモリセルの物理ブロックアドレスのための複数の変換を含み得る、及び/又は提供し得る。
一例として、データ及び複数のプログラムは、複数のソリッドステート不揮発性メモリ及び/又は複数の不揮発性メモリ中に格納され得る。データ及び複数のプログラム、及び/又はそれらの複数の部分は、ネットワークを介して複数のSoC及び複数の制御モジュールに分配され得る。制御モジュールによる実行のために必要な複数のプログラム及び/又はデータは、制御モジュールが配置されるSoCの複数のDRAM、ソリッドステート不揮発性メモリ、及び/又は不揮発性メモリ中にローカルに格納され得る。制御モジュールは、その後、実行のために必要な複数のプログラム及び/又はデータにアクセスし、それらを複数の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の制御モジュールから、複数のリングバスストップのうちの第2のリングバスストップにおける第2の制御モジュールへと、クラスタ内リングバスを回って送信され得る。複数の制御モジュールの各々は、中央処理装置又はプロセッサであり得る。
複数のメモリ制御モジュールの各々は、複数のFLCモジュールのうちのそれぞれのFLCモジュールへのアクセスを制御し得る。複数のFLCモジュールは、複数のサーバSoC上にスタックされ得る。複数のFLCモジュールの各々はFLC(又はDRAM)を含み、本明細書において開示される複数のFLCモジュールのうちの何れかとして実施され、本明細書において開示される複数のFLCモジュールのうちの何れかと同様に動作し得る。複数のメモリ制御モジュールは、複数のFLCリングバス上のそれぞれのリングバスストップにおいてFLCリングバスにアクセスし、複数のリングバスストップと複数のFLCモジュールとの間でデータを転送し得る。或いは、複数のFLCモジュールは、それぞれのリングバスストップにおいてFLCリングバスに直接アクセスし得る。複数のメモリ制御モジュールの各々は、複数のFLCモジュールのうちのそれぞれのFLCモジュールのための、及び/又は、複数のリングバス及び/又は複数のホッピングバスの複数のバスストップのための複数のメモリクロック信号を生成する複数のメモリクロックを含み得る。複数のバスストップは、複数のリングバス及び/又は複数のホッピングバスを介して間接的に、又は、複数のメモリ制御モジュールから直接的に、複数のメモリクロック信号を受信し得る。データは、メモリクロック信号に基づいて、複数のバスストップを通って繰り返され得る。
複数の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リングバス及び複数のホッピングバスのうちの対応するものに接続される。複数のホッピングバスの各々は、それぞれのインタフェースに、複数のホッピングバスのうちの対応するホッピングバスへのアクセスを提供する複数のホッピングバスストップ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のホッピングバスは、(i)FLCリングバスと(ii)サーバSoC中の複数のインタフェースとの間の、リングバスストップ及び複数の第2のホッピングバスストップを介して、複数の接続を提供する。サーバSoC中の複数のインタフェースは、イーサネット(登録商標)インタフェース、1又は複数のPCIeインタフェース、及びハイブリッド(又は組み合わせ)インタフェースを含み得る。イーサネット(登録商標)インタフェースは10GEインタフェースであり得、第1のイーサネット(登録商標)バスを介してネットワークに接続される。イーサネット(登録商標)インタフェースは、第1のイーサネット(登録商標)バス、ネットワーク、及び第2のイーサネット(登録商標)バスを介して第2のSoCと通信し得る。ネットワークは、イーサネット(登録商標)ネットワーク、クラウドネットワーク、及び/又は他のイーサネット(登録商標)対応ネットワークであり得る。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)複数のホッピングバスストップを介して複数のインタフェースに接続され得る。複数のインタフェースは、イーサネット(登録商標)、PCIe、及び複数のハイブリッドインタフェースであり得る。複数のインタフェースはそれぞれのポートを有する。
複数のサーバSoC及び/又は複数の他のサーバSoCは、クラスタ間リングバスを介して互いに通信し得る。複数のサーバSoC及び/又は複数の他のサーバSoCは、それぞれのイーサネット(登録商標)インタフェース及びネットワークを介して互いに通信し得る。
複数のコンパニオン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モジュール、リングバスの複数のバスストップ、及び/又は複数のホッピングバスのためのメモリクロック信号を生成するメモリクロックを含み得る。複数のバスストップは、リングバス及び/又は複数のホッピングバスを介して間接的に、又は、メモリ制御モジュールから直接的に、メモリクロック信号を受信し得る。データは、メモリクロック信号に基づいて、複数のバスストップを通って繰り返され得る。
FLCリングバスは双方向バスであり得、2つのタイプのリングバスストップSRB及びSRHを有し得る。複数のリングバスストップの各々は、信号反応器及び/又はアクセスノードとして機能し得る。複数のリングバスストップSRBは、複数のホッピングバス以外の複数のデバイスに接続される。それらのデバイスは、クラスタ、FLCモジュール及び/又はメモリ制御モジュール、及びグラフィックス処理モジュールを含み得る。
モバイルSoCの複数のリングバスストップSRHはFLCリングバス、及び複数のホッピングバスのうちの対応するホッピングバスに接続される。複数のホッピングバスの各々は、それぞれのインタフェースに、複数のホッピングバスのうちの対応するホッピングバスへのアクセスを提供する複数のホッピングバスストップ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のホッピングバスは、(i)FLCリングバスと、(ii)モバイルSoC中の複数のインタフェースとの間に、リングバスストップ及び複数の第2のホッピングバスストップを介して複数の接続を提供する。モバイルSoC中の複数のインタフェースは、イーサネット(登録商標)インタフェース、1又は複数のPCIeインタフェース、及びハイブリッド(又は組み合わせ)インタフェースを含み得る。イーサネット(登録商標)インタフェースは10GEインタフェースであり得、ポートを介してイーサネット(登録商標)ネットワークに接続される。1又は複数のPCIeインタフェースは、例えば、第3世代PCIeインタフェース PCIe3及びミニPCIeインタフェース(mPCIe)を含み得る。PCIeインタフェースはソリッドステートドライブに接続され得る。ハイブリッドインタフェースは、複数のSATA対応デバイス及び/又は複数のPCIe対応デバイスへ、及びこれらから、SATAプロトコル及び/又はPCIeプロトコルに従ってデータを転送するよう、SATA互換性及びPCIe互換性を有し得る。一例として、PCIeインタフェースはポートを介して記憶ドライブに接続され得る。記憶ドライブは、ソリッドステートドライブ又はハイブリッドドライブであり得る。複数のインタフェースは、モバイルSoCの外部の複数のデバイスへの接続のためのそれぞれのポートを有する。
コンパニオンSoCは制御モジュールを含み得る。制御モジュールは、複数のホッピングバスストップを介して、VPM及び複数のインタフェースへアクセスし、及び/又はこれらへのアクセスを制御し得る。一実施形態においては、制御モジュールは含まれない。制御モジュールは、複数のホッピングバスストップ、VPM1198、及び/又は複数のインタフェースに接続され、及びこれらと通信し得る。
本開示において説明される複数の無線通信は、IEEE規格802.11−2012、IEEE規格802.16−2009、IEEE規格802.20−2008、及び/又はBluetooth(登録商標)コア仕様v4.0に、完全に又は部分的に準拠して実行され得る。様々な実施例において、Bluetooth(登録商標)コア仕様v4.0は、Bluetooth(登録商標)コア仕様補遺2、3、又は4のうちの1又は複数によって変更され得る。様々な実施例において、IEEE802.11−2012は、ドラフトIEEE規格802.11ac、ドラフトIEEE規格802.11ad、及び/又はドラフトIEEE規格802.11ahによって捕捉され得る。
第1、第2、第3等の用語が、様々なチップ、モジュール、信号、要素、及び/又はコンポーネントを説明すべく本明細書において使用され得るが、これらの項目はこれらの用語によって限定されるべきではない。これらの用語は、1つの項目を別の項目と区別するためだけに使用され得る。本明細書において使用されるとき、「第1」、「第2」、及び、複数の他の数を表す用語などの複数の用語は、文脈によって明確に示されない限り、順番又は順序を暗示しない。したがって、以下で説明される第1の項目は、例示的な複数の例の教示から逸脱することなく、第2の項目と称され得る。
また、様々な用語が、複数のコンポーネントの間の物理的関係を説明すべく使用される。第1の要素が第2の要素に、「接続」、「係合」、又は「結合」されていると言及されるとき、第1の要素は、第2の要素に直接的に接続、係合、配置、適合、若しくは結合され得る、又は、介在する複数の要素が存在し得る。それとは対照的に、要素が別の要素に、「直接的に接続」、「直接的に係合」、又は「直接的に結合」されていると言及されるとき、介在する要素は存在し得ない。第1の要素が第2の要素に「接続」、「係合」、又は「結合」されると述べることは、第1の要素が第2の要素に、「直接的に接続」、「直接的に係合」、又は「直接的に結合」され得ることを暗示する。複数の要素間の関係を説明すべく使用される複数の他の単語も同様に解釈されるべきである(例えば、「〜の間」に対する「直接〜の間」、「〜に隣接」に対する「直接〜に隣接」等)。
前述の説明は、本質的に専ら例示的なものであり、本開示、その用途、又は使用を限定することは全く意図しない。本開示の広範な教示が、様々な形態で実装され得る。したがって、複数の図面、明細書、および以下の特許請求の範囲を検討すれば、他の複数の変形が明らかになるので、本開示は複数の具体例を含むが、本開示の真の範囲はそのように限定されるべきではない。本明細書において使用されるとき、A、B、及びCのうち少なくとも1つ、という表現は、非排他的論理ORを使用して、論理(A又はB又はC)を意味するものと解釈されるべきであり、「Aのうち少なくとも1つ、Bのうち少なくとも1つ、及び、Cのうち少なくとも1つ」を意味するものと解釈されるべきではない。方法内の1又は複数の段階は、本開示の複数の原理を変えることなく異なる順序で(又は同時に)実行され得ることが理解されるべきである。
本出願において、以下の複数の定義を含み、「モジュール」という用語又は「コントローラ」という用語は、「回路」という用語で置き換えられ得る。「モジュール」という用語及び「コントローラ」という用語は、特定用途向け集積回路(ASIC)、デジタル、アナログ、若しくは混成アナログ/デジタルディスクリート回路、デジタル、アナログ、若しくは混成アナログ/デジタル集積回路、組み合わせ論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、コードを実行する(共有、専用、又はグループの)プロセッサ回路、プロセッサ回路によって実行されるコードを格納する(共有、専用、又はグループの)メモリ回路、説明された機能を提供する複数の他の適したハードウェアコンポーネント、又は、システムオンチップなどにおける、上記のうちのいくつか又は全てのものの組み合わせを指すか、これらの一部であるか、又はこれらを含み得る。
モジュール又はコントローラは、1又は複数のインタフェース回路を含み得る。いくつか例において、複数のインタフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN),又はそれらの組み合わせに接続される、有線若しくは無線のインタフェースを含み得る。本開示の任意の所与のモジュール又はコントローラの機能は、複数のインタフェース回路を介して接続される複数のモジュール及び/又はコントローラの間に分散され得る。例えば、複数のモジュール及び/又はコントローラは負荷の平均化を可能にし得る。更なる例において、(遠隔若しくはクラウドとしても知られる)サーバモジュール、又は(遠隔若しくはクラウド)コントローラは、クライアントモジュール及び/又はクライアントコントローラに代わって何らかの機能を達成し得る。
コードという用語は、上記において使用されるように、ソフトウェア、ファームウェア、及び/又はマイクロコードを含み得、複数のプログラム、複数のルーチン、複数の機能、複数のクラス、複数のデータ構造、及び/又は複数のオブジェクトを指し得る。共有プロセッサ回路という用語は、複数のモジュール及び/又はコントローラからのいくつか又は全てのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、複数の追加のプロセッサ回路と共に、1又は複数のモジュール及び/又はコントローラからのいくつか又は全てのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路への言及は、複数の別個のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュール及び/又はコントローラからのいくつか又は全てのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、複数の追加のメモリと共に、1又は複数のモジュール及び/又はコントローラからのいくつか又は全てのコードを格納するメモリ回路を包含する。
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。コンピュータ可読媒体という用語は、本明細書において使用されるとき、(搬送波上などの)媒体を伝播する一時的な電気信号又は電磁信号は包含しない。コンピュータ可読媒体という用語は、したがって、有形且つ非一時的であるとみなされ得る。非一時的な有形のコンピュータ可読媒体の複数の非限定的な例は、(フラッシュメモリ回路、消去可能プログラマブルリードオンリメモリ回路、又はマスクリードオンリメモリ回路などの)不揮発性メモリ回路、(スタティックランダムアクセスメモリ回路又はダイナミックランダムアクセスメモリ回路などの)揮発性メモリ回路、(アナログ若しくはデジタル磁気テープ又はハードディスクドライブなどの)磁気記憶媒体、及び、(CD、DVD、又はブルーレイディスクなどの)光記憶媒体である。
本出願において説明される複数の装置及び方法は、複数のコンピュータプログラム中に具現化される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(active server pages)、PHP、Scala、Eiffel、Smalltalk、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、及びPython(登録商標)を含む複数の言語からのシンタックスを使用して書かれ得る。
要素が、「のための手段」という表現を使用して明示的に記載される場合、又は、「のための動作」若しくは「のための段階」という表現を使用する方法クレームの場合を除いては、本特許請求の範囲において記載される複数の要素の何れも、米国特許法112条(f)の意味におけるミーンズ・プラス・ファンクション要素であることは意図されていない。

Claims (45)

  1. 第1の物理アドレスにアクセスするための要求を生成するプロセッサと、
    最終レベルキャッシュモジュールとを備え、
    前記最終レベルキャッシュモジュールは、
    ダイナミックランダムアクセスメモリと、
    (i)前記プロセッサからの前記要求を受信し、(ii)前記第1の物理アドレスを第1の仮想アドレスに変換する最終レベルキャッシュコントローラと、
    (i)前記第1の仮想アドレスを第2の物理アドレスに変換し、(ii)前記第2の物理アドレスに基づいて前記ダイナミックランダムアクセスメモリにアクセスするダイナミックランダムアクセスメモリコントローラとを有する、
    データアクセスシステム。
  2. 前記最終レベルキャッシュコントローラは、前記第1の物理アドレスの前記第1の仮想アドレスへのフルセットアソシアティブ変換を実行する、
    請求項1に記載のデータアクセスシステム。
  3. 記憶ドライブを更に備え、
    前記記憶ドライブは前記ダイナミックランダムアクセスメモリから分離しており、
    前記第2の物理アドレスは前記ダイナミックランダムアクセスメモリ又は前記記憶ドライブ中のアドレスであり、
    前記最終レベルキャッシュコントローラは、前記第2の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするか、又は前記記憶ドライブにアクセスするかを決定する、
    請求項1又は2に記載のデータアクセスシステム。
  4. 前記記憶ドライブは、前記ダイナミックランダムアクセスメモリより大きい記憶容量を有する、
    請求項3に記載のデータアクセスシステム。
  5. 前記記憶ドライブは、前記ダイナミックランダムアクセスメモリより1桁大きい記憶容量を有する、
    請求項3に記載のデータアクセスシステム。
  6. 前記ダイナミックランダムアクセスメモリへの、又は前記ダイナミックランダムアクセスメモリからのデータの転送速度は、前記記憶ドライブへの、又は前記記憶ドライブからのデータの転送速度より高速である、
    請求項3から5の何れか一項に記載のデータアクセスシステム。
  7. 前記記憶ドライブはソリッドステートメモリ又は回転記憶媒体を含む、
    請求項3から6の何れか一項に記載のデータアクセスシステム。
  8. 前記記憶ドライブはダイナミックランダムアクセスメモリを含み、
    前記記憶ドライブの前記ダイナミックランダムアクセスメモリは、前記最終レベルキャッシュモジュールの前記ダイナミックランダムアクセスメモリより遅いデータ転送速度を有する、
    請求項3から7の何れか一項に記載のデータアクセスシステム。
  9. 記憶ドライブを更に備え、
    前記ダイナミックランダムアクセスメモリは、キャッシュとして実装され、前記記憶ドライブとは分離しており、
    前記最終レベルキャッシュコントローラは、(i)前記第1の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、(ii)前記第1の物理アドレスについて、キャッシュミスが発生したと決定し、(iii)前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記プロセッサに信号で伝える、又は前記記憶ドライブにアクセスする、
    請求項1に記載のデータアクセスシステム。
  10. 記憶ドライブを更に備え、
    前記ダイナミックランダムアクセスメモリは、キャッシュとして実装され、前記記憶ドライブとは分離しており、
    前記ダイナミックランダムアクセスメモリコントローラは、(i)前記第1の仮想アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、(ii)前記第1の仮想アドレスについて、キャッシュミスが発生したと決定し、(iii)前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記最終レベルキャッシュコントローラに信号で伝え、
    前記最終レベルキャッシュコントローラは、前記キャッシュミスが発生したことを示す前記信号に応答して前記記憶ドライブにアクセスする、
    請求項1に記載のデータアクセスシステム。
  11. 前記ダイナミックランダムアクセスメモリはキャッシュとして実装され、
    前記ダイナミックランダムアクセスメモリコントローラは、(i)前記第1の仮想アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定し、(ii)前記第1の仮想アドレスについて、キャッシュミスが発生したと決定し、(iii)前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記最終レベルキャッシュに示すべく第1の信号を生成し、
    前記最終レベルキャッシュコントローラは、前記第1の信号に応答して、前記キャッシュミスが発生したことを前記プロセッサに示すべく第2の信号を生成し、
    前記プロセッサは、前記第2の信号に応答して、記憶ドライブにアクセスする、
    請求項1から8の何れか一項に記載のデータアクセスシステム。
  12. 記憶ドライブを更に備え、
    前記記憶ドライブは、前記ダイナミックランダムアクセスメモリとは分離しており、
    前記プロセッサは、データを転送するための要求を生成し、
    前記要求は、前記第1の物理アドレスを示し、
    前記最終レベルキャッシュコントローラは、
    前記要求に基づいて、前記第1の物理アドレスを前記第1の仮想アドレスに変換し、
    前記最終レベルキャッシュコントローラは、前記第2の物理アドレスに基づいて、(i)前記プロセッサと前記ダイナミックランダムアクセスメモリとの間で前記データを転送するか、又は(ii)前記プロセッサと前記記憶ドライブとの間で前記データを転送するかを決定する、
    請求項1に記載のデータアクセスシステム。
  13. 前記プロセッサと前記記憶ドライブとの間で転送される前に、前記データを暗号化する暗号化デバイスを更に備える
    請求項12に記載のデータアクセスシステム。
  14. 前記プロセッサは、(i)第2の仮想アドレスを生成し、(ii)前記第2の仮想アドレスを前記第1の物理アドレスに変換する、
    請求項1から13の何れか一項に記載のデータアクセスシステム。
  15. 前記ダイナミックランダムアクセスメモリは第1の部分及び第2の部分を含み、
    前記第1の部分は、最終レベルキャッシュとして実装され、
    前記第2の部分は、キャッシュとしては実装されず、前記第1の部分より低い階層レベルを有する、
    請求項1から14の何れか一項に記載のデータアクセスシステム。
  16. 前記ダイナミックランダムアクセスメモリコントローラは、複数の前記階層レベルに基づいて、前記第1の部分及び前記第2の部分にアクセスする、
    請求項15に記載のデータアクセスシステム。
  17. 前記ダイナミックランダムアクセスメモリは、第1の部分及び第2の部分を含み、
    前記第1の部分は、仮想メモリとして実装され、
    前記第2の部分は、仮想メモリとしては実装されず、前記第1の部分より低い階層レベルを有する、
    請求項1から14の何れか一項に記載のデータアクセスシステム。
  18. 記憶ドライブを更に備え、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離しており、前記最終レベルキャッシュコントローラは、
    第2のデータを転送するための、前記プロセッサからの第1の複数の物理アドレスを示す複数の要求を受信し、
    前記第1の複数の物理アドレスを複数の仮想アドレスに変換し、
    前記複数の仮想アドレスを第2の複数の物理アドレスに変換し、
    前記第2の複数の物理アドレスに基づいて、(i)前記プロセッサと前記ダイナミックランダムアクセスメモリとの間で、前記第2のデータを転送するか、又は(ii)前記プロセッサと前記記憶ドライブとの間で、前記第2のデータを転送するかを決定し、
    前記第2の複数の物理アドレスのうちのいくつかのアドレスは前記ダイナミックランダムアクセスメモリ中にあり、前記第2の複数の物理アドレスのうちのその他のアドレスは前記記憶ドライブ中にある、
    請求項1に記載のデータアクセスシステム。
  19. 前記最終レベルキャッシュモジュールはただ1つの集積回路によって実装される、
    請求項1から18の何れか一項に記載のデータアクセスシステム。
  20. 記憶ドライブを更に備え、
    前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離しており、
    前記ダイナミックランダムアクセスメモリは第1の複数のエントリを含み、
    前記記憶ドライブは、前記第1の複数のエントリにマッピングされる第2の複数のエントリを含み、
    前記最終レベルキャッシュコントローラは、前記第1の複数のエントリのうちの1つのエントリにおける残りの記憶容量に基づいて、前記プロセッサと、前記記憶ドライブの前記第2の複数のエントリのうちの1つのエントリとの間でデータを転送し、
    前記第2の複数のエントリのうちの前記1つのエントリは、前記第1の複数のエントリのうちの前記1つのエントリにマッピングされる、
    請求項1に記載のデータアクセスシステム。
  21. 前記ダイナミックランダムアクセスメモリ中の各エントリは、前記記憶ドライブ中の1又は複数のエントリにマッピングされる、
    請求項20に記載のデータアクセスシステム。
  22. 前記ダイナミックランダムアクセスメモリ中の1又は複数のエントリは、前記記憶ドライブ中の1又は複数のエントリにマッピングされる、
    請求項20又は21に記載のデータアクセスシステム。
  23. 前記最終レベルキャッシュコントローラは、(i)データの使用頻度、(ii)前記データの優先レベル、又は(iii)前記データがロックされた状態にあるかどうか、のうち少なくとも1つに基づいて、前記ダイナミックランダムアクセスメモリ中に前記データを格納する、
    請求項1から22の何れか一項に記載のデータアクセスシステム。
  24. 最終レベルキャッシュモジュールのダイナミックランダムアクセスメモリにアクセスするための方法であって、
    第1の物理アドレスにアクセスするための要求をプロセッサによって生成する段階と、
    前記プロセッサからの前記要求を最終レベルキャッシュコントローラにおいて受信する段階と、
    前記最終レベルキャッシュコントローラによって前記第1の物理アドレスを第1の仮想アドレスに変換する段階と、
    ダイナミックランダムアクセスメモリコントローラによって前記第1の仮想アドレスを第2の物理アドレスに変換する段階と、
    前記第2の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスする段階とを備える
    方法。
  25. 前記第1の物理アドレスを前記第1の仮想アドレスに変換する段階は、前記第1の物理アドレスの前記第1の仮想アドレスへのフルセットアソシアティブ変換を実行する段階を有する、
    請求項24に記載の方法。
  26. 前記第2の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするか、又は記憶ドライブにアクセスするかを前記最終レベルキャッシュコントローラによって決定する段階を更に備え、
    前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離しており、
    前記第2の物理アドレスは前記ダイナミックランダムアクセスメモリ又は前記記憶ドライブ中のアドレスである、
    請求項24又は25に記載の方法。
  27. 前記記憶ドライブは、前記ダイナミックランダムアクセスメモリより大きい記憶容量を有する、
    請求項26に記載の方法。
  28. 前記記憶ドライブは、前記ダイナミックランダムアクセスメモリより1桁大きい記憶容量を有する、
    請求項26に記載の方法。
  29. 前記ダイナミックランダムアクセスメモリへの、又は前記ダイナミックランダムアクセスメモリからのデータの転送速度は、前記記憶ドライブへの、又は前記記憶ドライブからのデータの転送速度より高速である、
    請求項26から28の何れか一項に記載の方法。
  30. 前記記憶ドライブはソリッドステートメモリ又は回転記憶媒体を含む、
    請求項26から29の何れか一項に記載の方法。
  31. 前記記憶ドライブはダイナミックランダムアクセスメモリを含み、
    前記記憶ドライブの前記ダイナミックランダムアクセスメモリは、前記最終レベルキャッシュモジュールの前記ダイナミックランダムアクセスメモリより遅いデータ転送速度を有する、
    請求項26から30の何れか一項に記載の方法。
  32. 前記第1の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、前記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
    前記第1の物理アドレスについて、キャッシュミスが発生したと決定する段階と、
    前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記プロセッサに信号で伝える、又は記憶ドライブにアクセスする段階であって、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
    請求項24から31の何れか一項に記載の方法。
  33. 前記第2の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、前記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
    前記第1の仮想アドレスについて、キャッシュミスが発生したと決定する段階と、
    前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記最終レベルキャッシュコントローラに信号で伝える段階と、
    前記キャッシュミスが発生したことを示す前記信号に応答して、記憶ドライブにアクセスする段階であって、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
    請求項24から32の何れか一項に記載の方法。
  34. 前記第2の物理アドレスに基づいて、前記ダイナミックランダムアクセスメモリにアクセスするかどうかを決定する段階であって、前記ダイナミックランダムアクセスメモリはキャッシュとして実装される、段階と、
    前記第1の仮想アドレスについて、キャッシュミスが発生したと前記ダイナミックランダムアクセスメモリコントローラによって決定する段階と、
    前記キャッシュミスに基づいて、前記キャッシュミスが発生したことを前記最終レベルキャッシュに示すべく第1の信号を生成する段階と、
    前記第1の信号に応答して、前記キャッシュミスが発生したことを前記プロセッサに示す第2の信号を前記最終レベルキャッシュコントローラにおいて生成する段階と、
    前記第2の信号に応答して、記憶ドライブにアクセスする段階であって、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
    請求項24から33の何れか一項に記載の方法。
  35. データを転送するための前記要求を生成する階であって、前記要求は前記第1の物理アドレスを示す、段階と、
    前記要求に基づいて、前記第1の物理アドレスを前記第1の仮想アドレスに変換する段階と、
    前記第2の物理アドレスに基づいて、(i)前記プロセッサと前記ダイナミックランダムアクセスメモリとの間で前記データを転送するか、又は(ii)前記プロセッサと記憶ドライブとの間で前記データを転送するかを決定する段階であって、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離している、段階とを更に備える
    請求項24から34の何れか一項に記載の方法。
  36. 前記プロセッサと前記記憶ドライブとの間で転送される前に、前記データを暗号化する段階を更に備える
    請求項35に記載の方法。
  37. 前記プロセッサにおいて第2の仮想アドレスを生成する段階と、
    前記第2の仮想アドレスを前記第1の物理アドレスに変換する段階とを更に備える
    請求項24から36の何れか一項に記載の方法。
  38. 前記ダイナミックランダムアクセスメモリの複数の部分に、前記複数の部分の複数の階層レベルに基づいてアクセスする段階を更に備え、
    前記ダイナミックランダムアクセスメモリは第1の部分及び第2の部分を含み、
    前記第1の部分は、最終レベルキャッシュとして実装され、
    前記第2の部分は、キャッシュとしては実装されず、前記第1の部分より低い階層レベルを有する、
    請求項24から37の何れか一項に記載の方法。
  39. 前記ダイナミックランダムアクセスメモリの複数の部分に、前記複数の部分の複数の階層レベルに基づいてアクセスする段階を更に備え、
    前記ダイナミックランダムアクセスメモリは、第1の部分及び第2の部分を含み、
    前記第1の部分は、仮想メモリとして実装され、
    前記第2の部分は、仮想メモリとしては実装されず、前記第1の部分より低い階層レベルを有する、
    請求項24から37の何れか一項に記載の方法。
  40. 第2のデータを転送するための、前記プロセッサからの複数の要求を受信する段階であって、前記複数の要求は第1の複数の物理アドレスを示す、段階と、
    前記第1の複数の物理アドレスを複数の仮想アドレスに変換する段階と、
    前記複数の仮想アドレスを第2の複数の物理アドレスに変換する段階であって、前記第2の複数の物理アドレスのうちのいくつかのアドレスは前記ダイナミックランダムアクセスメモリ中にあり、前記第2の複数の物理アドレスのうちのその他のアドレスは記憶ドライブ中にあり、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離している、段階と、
    前記第2の複数の物理アドレスに基づいて、(i)前記プロセッサと前記ダイナミックランダムアクセスメモリとの間で前記第2のデータを転送するか、又は(ii)前記プロセッサと前記記憶ドライブとの間で前記第2のデータを転送するかを決定する段階とを更に備える
    請求項24から39の何れか一項に記載の方法。
  41. 前記最終レベルキャッシュモジュールはただ1つの集積回路によって実装される、
    請求項24から40の何れか一項に記載の方法。
  42. 前記ダイナミックランダムアクセスメモリの第1の複数のエントリのうちの1つのエントリにおける残りの記憶容量に基づいて、前記プロセッサと、記憶ドライブの第2の複数のエントリのうちの1つのエントリとの間でデータを転送する段階を更に備え、前記記憶ドライブは前記ダイナミックランダムアクセスメモリとは分離しており、前記第2の複数のエントリは前記第1の複数のエントリにマッピングされ、
    前記第2の複数のエントリのうちの前記1つのエントリは、前記第1の複数のエントリのうちの前記1つのエントリにマッピングされる、
    請求項24から41の何れか一項に記載の方法。
  43. 前記ダイナミックランダムアクセスメモリ中の各エントリは、前記記憶ドライブ中の1又は複数のエントリにマッピングされる、
    請求項42に記載の方法。
  44. 前記ダイナミックランダムアクセスメモリ中の1又は複数のエントリは、前記記憶ドライブ中の1又は複数のエントリにマッピングされる、
    請求項42又は43に記載の方法。
  45. (i)データの使用頻度、(ii)前記データの優先レベル、又は、(iii)前記データがロックされた状態にあるかどうか、のうち少なくとも1つに基づいて、前記ダイナミックランダムアクセスメモリ中に前記データを格納する段階を更に備える
    請求項24から44の何れか一項に記載の方法。
JP2016525567A 2013-10-21 2014-10-21 最終レベルキャッシュシステム及び対応する方法 Active JP6431536B2 (ja)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201361893662P 2013-10-21 2013-10-21
US201361893683P 2013-10-21 2013-10-21
US201361893675P 2013-10-21 2013-10-21
US61/893,683 2013-10-21
US61/893,662 2013-10-21
US61/893,675 2013-10-21
US201361895049P 2013-10-24 2013-10-24
US61/895,049 2013-10-24
US14/519,826 US9477611B2 (en) 2013-10-21 2014-10-21 Final level cache system and corresponding methods
US14/519,826 2014-10-21
PCT/US2014/061603 WO2015061337A1 (en) 2013-10-21 2014-10-21 Final level cache system and corresponding method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018207296A Division JP6796304B2 (ja) 2013-10-21 2018-11-02 最終レベルキャッシュシステム及び対応する方法

Publications (3)

Publication Number Publication Date
JP2016541046A true JP2016541046A (ja) 2016-12-28
JP2016541046A5 JP2016541046A5 (ja) 2017-11-30
JP6431536B2 JP6431536B2 (ja) 2018-11-28

Family

ID=52827224

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016525567A Active JP6431536B2 (ja) 2013-10-21 2014-10-21 最終レベルキャッシュシステム及び対応する方法
JP2018207296A Active JP6796304B2 (ja) 2013-10-21 2018-11-02 最終レベルキャッシュシステム及び対応する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018207296A Active JP6796304B2 (ja) 2013-10-21 2018-11-02 最終レベルキャッシュシステム及び対応する方法

Country Status (6)

Country Link
US (7) US9477611B2 (ja)
EP (1) EP3060993B1 (ja)
JP (2) JP6431536B2 (ja)
KR (3) KR102329269B1 (ja)
CN (2) CN117215971A (ja)
WO (1) WO2015061337A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021530028A (ja) * 2018-06-18 2021-11-04 エフ・エル・シィ・テクノロジー・グループ・インコーポレイテッドFlc Technology Group Inc. 記憶システムをメインメモリとして使用するための方法および装置

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same
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
US10097204B1 (en) 2014-04-21 2018-10-09 Marvell International Ltd. Low-density parity-check codes for WiFi networks
EP3060993B1 (en) 2013-10-21 2023-03-08 FLC Global, Ltd. Final level cache system and corresponding method
US9454991B2 (en) 2013-10-21 2016-09-27 Marvell World Trade Ltd. Caching systems and methods for hard disk drives and hybrid drives
CN104765587B (zh) * 2014-01-08 2018-12-14 雅特生嵌入式计算有限公司 用于使处理器同步到相同的计算点的系统和方法
US9888077B2 (en) * 2014-04-22 2018-02-06 Western Digital Technologies, Inc. Metadata based data alignment in data storage systems
TWI540871B (zh) * 2014-04-29 2016-07-01 緯創資通股份有限公司 混合式資料傳輸之方法及其相關混合式系統
CN106463145B (zh) 2014-05-02 2019-08-30 马维尔国际贸易有限公司 用于硬盘驱动器和混合驱动器的高速缓存系统和方法
US10013352B2 (en) * 2014-09-26 2018-07-03 Intel Corporation Partner-aware virtual microsectoring for sectored cache architectures
KR102314138B1 (ko) * 2015-03-05 2021-10-18 삼성전자 주식회사 모바일 장치 및 모바일 장치의 데이터 관리 방법
JP5992592B1 (ja) 2015-09-16 2016-09-14 株式会社東芝 キャッシュメモリシステム
US9910482B2 (en) * 2015-09-24 2018-03-06 Qualcomm Incorporated Memory interface with adjustable voltage and termination and methods of use
US11120884B2 (en) 2015-09-30 2021-09-14 Sunrise Memory Corporation Implementing logic function and generating analog signals using NOR memory strings
US10121553B2 (en) 2015-09-30 2018-11-06 Sunrise Memory Corporation Capacitive-coupled non-volatile thin-film transistor NOR strings in three-dimensional arrays
US9842651B2 (en) 2015-11-25 2017-12-12 Sunrise Memory Corporation Three-dimensional vertical NOR flash thin film transistor strings
US9892800B2 (en) 2015-09-30 2018-02-13 Sunrise Memory Corporation Multi-gate NOR flash thin-film transistor strings arranged in stacked horizontal active strips with vertical control gates
US10416887B1 (en) 2016-05-18 2019-09-17 Marvell International Ltd. Hybrid storage device and system
US10056147B1 (en) * 2016-06-02 2018-08-21 Marvell International Ltd. Two-level storage device with faster front end
US10268395B1 (en) * 2016-06-09 2019-04-23 Marvell International Ltd. Systems and methods for communicating addressable requests to a programmable input/output memory over a hardware bridge
US9927975B2 (en) 2016-08-03 2018-03-27 Micron Technology, Inc. Hybrid memory drives, computer system, and related method for operating a multi-mode hybrid drive
KR102626193B1 (ko) * 2016-08-26 2024-01-18 선라이즈 메모리 코포레이션 3차원 어레이에서 용량 결합된 비휘발성 박막 트랜지스터 스트링
KR101777660B1 (ko) * 2016-10-25 2017-09-12 주식회사 티에스피글로벌 플래시 스토리지 디바이스 및 그 동작 제어 방법
WO2018119773A1 (zh) * 2016-12-28 2018-07-05 华为技术有限公司 非易失内存访问方法、装置和系统
US10649943B2 (en) * 2017-05-26 2020-05-12 Dell Products, L.P. System and method for I/O aware processor configuration
WO2018226658A1 (en) * 2017-06-05 2018-12-13 Worcester Polytechnic Institute Weatherproof cover
US10608008B2 (en) 2017-06-20 2020-03-31 Sunrise Memory Corporation 3-dimensional nor strings with segmented shared source regions
US10692874B2 (en) 2017-06-20 2020-06-23 Sunrise Memory Corporation 3-dimensional NOR string arrays in segmented stacks
JP7203054B2 (ja) 2017-06-20 2023-01-12 サンライズ メモリー コーポレイション 3次元nor型メモリアレイアーキテクチャ及びその製造方法
KR102319189B1 (ko) 2017-06-21 2021-10-28 삼성전자주식회사 스토리지 장치, 이를 포함하는 스토리지 시스템 및 스토리지 장치의 동작 방법
US20190155735A1 (en) * 2017-06-29 2019-05-23 NVXL Technology, Inc. Data Software System Assist
US20190057045A1 (en) * 2017-08-16 2019-02-21 Alibaba Group Holding Limited Methods and systems for caching based on service level agreement
US10372371B2 (en) * 2017-09-14 2019-08-06 International Business Machines Corporation Dynamic data relocation using cloud based ranks
US10671460B2 (en) 2018-02-05 2020-06-02 Micron Technology, Inc. Memory access communications through message passing interface implemented in memory systems
US10853168B2 (en) * 2018-03-28 2020-12-01 Samsung Electronics Co., Ltd. Apparatus to insert error-correcting coding (ECC) information as data within dynamic random access memory (DRAM)
WO2020026036A1 (en) 2018-07-31 2020-02-06 Marvell World Trade Ltd. Metadata generation at the storage edge
KR102518095B1 (ko) * 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
CN111240581B (zh) * 2018-11-29 2023-08-08 北京地平线机器人技术研发有限公司 存储器访问控制方法、装置和电子设备
EP3925004A4 (en) 2019-02-11 2023-03-08 Sunrise Memory Corporation VERTICAL THIN FILM TRANSISTOR AND USE AS BITLINE CONNECTOR FOR THREE DIMENSIONAL MEMORY ARRANGEMENTS
US11515309B2 (en) 2019-12-19 2022-11-29 Sunrise Memory Corporation Process for preparing a channel region of a thin-film transistor in a 3-dimensional thin-film transistor array
US20200136943A1 (en) * 2019-12-27 2020-04-30 Intel Corporation Storage management in a data management platform for cloud-native workloads
CN115413367A (zh) 2020-02-07 2022-11-29 日升存储公司 具有低有效延迟的高容量存储器电路
US11508693B2 (en) 2020-02-24 2022-11-22 Sunrise Memory Corporation High capacity memory module including wafer-section memory circuit
US11507301B2 (en) 2020-02-24 2022-11-22 Sunrise Memory Corporation Memory module implementing memory centric architecture
WO2021207050A1 (en) 2020-04-08 2021-10-14 Sunrise Memory Corporation Charge-trapping layer with optimized number of charge-trapping sites for fast program and erase of a memory cell in a 3-dimensional nor memory string array
WO2022108848A1 (en) 2020-11-17 2022-05-27 Sunrise Memory Corporation Methods for reducing disturb errors by refreshing data alongside programming or erase operations
US11848056B2 (en) 2020-12-08 2023-12-19 Sunrise Memory Corporation Quasi-volatile memory with enhanced sense amplifier operation
KR20230000638A (ko) * 2021-06-25 2023-01-03 한국전자통신연구원 저전력 시스템 온 칩
TW202310429A (zh) 2021-07-16 2023-03-01 美商日升存儲公司 薄膜鐵電電晶體的三維記憶體串陣列
US11979176B2 (en) 2021-09-09 2024-05-07 Hughes Network Systems, Llc Configurable modem architecture for satellite communications

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009640A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7428617B2 (en) * 2004-07-29 2008-09-23 Fujitsu Limited Cache memory and method to maintain cache-coherence between cache memory units

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1325288C (en) * 1989-02-03 1993-12-14 Ricky C. Hetherington Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
KR970705086A (ko) 1995-05-26 1997-09-06 존 엠. 클락3세 같은 클락 사이클 동안에 캐쉬 메모리와 외부 메모리 제어기로 메모리 요청을 하는 파이프라인 마이크로프로세서(A Pipelined Microprocessor that Makes Memory Requests to a Cache Memory and an external Memory Controller During the Same Clock Cycle)
US6490658B1 (en) * 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6795894B1 (en) 2000-08-08 2004-09-21 Hewlett-Packard Development Company, L.P. Fast disk cache writing system
US6978355B2 (en) 2001-11-13 2005-12-20 Seagate Technology Llc Cache memory transfer during a requested data retrieval operation
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
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
US7996746B2 (en) 2004-10-12 2011-08-09 Nortel Networks Limited Structured low-density parity-check (LDPC) code
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
US7930513B2 (en) * 2006-11-04 2011-04-19 Virident Systems Inc. Writing to asymmetric memory
US8015361B2 (en) * 2007-12-14 2011-09-06 International Business Machines Corporation Memory-centric page table walker
KR101449524B1 (ko) * 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
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
US8255742B2 (en) * 2009-11-18 2012-08-28 Microsoft Corporation Dynamically replicated memory
US8688897B2 (en) 2010-05-28 2014-04-01 International Business Machines Corporation Cache memory management in a flash cache architecture
WO2012015766A2 (en) * 2010-07-28 2012-02-02 Rambus Inc. Cache memory that supports tagless addressing
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
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
DE112011106032B4 (de) * 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
WO2013101158A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Metadata management and support for phase change memory with switch (pcms)
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)
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
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
EP3060993B1 (en) 2013-10-21 2023-03-08 FLC Global, Ltd. Final level cache system and corresponding method
US9454991B2 (en) 2013-10-21 2016-09-27 Marvell World Trade Ltd. Caching systems and methods for hard disk drives and hybrid drives
CN106463145B (zh) 2014-05-02 2019-08-30 马维尔国际贸易有限公司 用于硬盘驱动器和混合驱动器的高速缓存系统和方法
US9129628B1 (en) 2014-10-23 2015-09-08 Western Digital Technologies, Inc. Data management for data storage device with different track density regions
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009640A1 (en) * 2001-06-21 2003-01-09 International Business Machines Corp. Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
JP2003067357A (ja) * 2001-06-21 2003-03-07 Internatl Business Mach Corp <Ibm> 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
JP2004192615A (ja) * 2002-12-12 2004-07-08 Internatl Business Mach Corp <Ibm> ハードウェア管理仮想−物理アドレス変換機構
US7428617B2 (en) * 2004-07-29 2008-09-23 Fujitsu Limited Cache memory and method to maintain cache-coherence between cache memory units

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021530028A (ja) * 2018-06-18 2021-11-04 エフ・エル・シィ・テクノロジー・グループ・インコーポレイテッドFlc Technology Group Inc. 記憶システムをメインメモリとして使用するための方法および装置
JP7407134B2 (ja) 2018-06-18 2023-12-28 エフ・エル・シィ・テクノロジー・グループ・インコーポレイテッド 記憶システムをメインメモリとして使用するための方法および装置

Also Published As

Publication number Publication date
US9594693B2 (en) 2017-03-14
US9323688B2 (en) 2016-04-26
US20170177481A1 (en) 2017-06-22
US20150242137A1 (en) 2015-08-27
US9928172B2 (en) 2018-03-27
EP3060993A1 (en) 2016-08-31
EP3060993B1 (en) 2023-03-08
KR102614631B1 (ko) 2023-12-19
KR102329269B1 (ko) 2021-11-22
KR102432754B1 (ko) 2022-08-16
US9182915B2 (en) 2015-11-10
CN106462504B (zh) 2023-09-01
US20160062906A1 (en) 2016-03-03
CN117215971A (zh) 2023-12-12
KR20210111881A (ko) 2021-09-13
US11360894B2 (en) 2022-06-14
US20150113214A1 (en) 2015-04-23
US9477611B2 (en) 2016-10-25
KR20220116362A (ko) 2022-08-22
US10684949B2 (en) 2020-06-16
JP6796304B2 (ja) 2020-12-09
US20180293167A1 (en) 2018-10-11
CN106462504A (zh) 2017-02-22
WO2015061337A1 (en) 2015-04-30
US20160239429A1 (en) 2016-08-18
KR20160074648A (ko) 2016-06-28
US20200301836A1 (en) 2020-09-24
JP2019067417A (ja) 2019-04-25
JP6431536B2 (ja) 2018-11-28

Similar Documents

Publication Publication Date Title
JP6796304B2 (ja) 最終レベルキャッシュシステム及び対応する方法
US20120110251A1 (en) Processor-bus-connected flash storage module
US11880305B2 (en) Method and apparatus for using a storage system as main memory
WO2013101158A1 (en) Metadata management and support for phase change memory with switch (pcms)
US11822474B2 (en) Storage system and method for accessing same
US20230144038A1 (en) Memory pooling bandwidth multiplier using final level cache system
US10331385B2 (en) Cooperative write-back cache flushing for storage devices
US20240193084A1 (en) Storage System and Method for Accessing Same
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
WO2023241655A1 (zh) 数据处理方法、装置、电子设备以及计算机可读存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171020

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171020

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20180402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180402

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180720

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181102

R150 Certificate of patent or registration of utility model

Ref document number: 6431536

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250