JP2018517205A - 拡張メモリにアクセスするための方法、デバイス及びシステム - Google Patents

拡張メモリにアクセスするための方法、デバイス及びシステム Download PDF

Info

Publication number
JP2018517205A
JP2018517205A JP2017555264A JP2017555264A JP2018517205A JP 2018517205 A JP2018517205 A JP 2018517205A JP 2017555264 A JP2017555264 A JP 2017555264A JP 2017555264 A JP2017555264 A JP 2017555264A JP 2018517205 A JP2018517205 A JP 2018517205A
Authority
JP
Japan
Prior art keywords
memory
access
data
address
extended
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
JP2017555264A
Other languages
English (en)
Other versions
JP6685323B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2018517205A publication Critical patent/JP2018517205A/ja
Application granted granted Critical
Publication of JP6685323B2 publication Critical patent/JP6685323B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/0608Saving storage space on storage 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main 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/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • 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/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0064Latency reduction in handling transfers

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)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

拡張メモリにアクセスするための方法、デバイス及びシステムが開示される。この方法は、コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するステップであり、全てのメモリアクセス要求内のアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、第1のメモリアクセス要求が受信されたときに、読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサに返信するステップと、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、メモリアクセス要求が受信される毎に、アクセス対象のデータがデータバッファに書き込まれるまで、メモリバスプロトコルで指定された遅延内に特定の応答メッセージをプロセッサに返信するステップと、次に、アクセス対象のデータをプロセッサシステムに返信するステップとを含む。

Description

[関連出願への相互参照]
この出願は、2015年4月23日に「METHOD FOR ACCESSING EXTENDED MEMORY, DEVICE, AND SYSTEM」という名称で中国特許庁に出願された中国特許出願第201510198452.X号の優先権を主張し、この全内容を参照により援用する。
[技術分野]
本発明は、コンピュータ分野に関し、特に拡張メモリにアクセスするための方法、デバイス及びシステムに関する。
ビッグデータ(Big Data)のアプリケーションは、コンピュータ処理能力にとってより高い要件を有する。コンピュータ処理能力を改善する重要な指標は、メモリ容量の改善である。適用シナリオでは、既存のメモリチップの限られた集積度のため、複数のメモリチップは、メモリ容量を拡張するために、拡張チップを使用することにより接続される。他の適用シナリオでは、いくつかの特定のアプリケーションに対して加速処理を実行するために、アプリケーション加速チップがより多くのコンピュータシステムに追加される。例えば、通常、GPU(Graphic Processing Unit、グラフィック処理ユニット)は、グラフィカルデータ及び画像データの処理中の加速のために使用される。一般的に、このようなアプリケーション加速チップは、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)を使用することにより実現され得る。
前述の2つの適用シナリオが、図1に基づいて説明され得る。プロセッサ(Processor)システム101、システムメモリ102、メモリ拡張チップ103及び拡張メモリ104が図1に含まれ、メモリコントローラ1011がプロセッサシステム101に統合される。システムメモリ102は、メモリバスを使用することによりプロセッサシステム101に接続され、拡張メモリ104は、メモリバスを使用することによりメモリ拡張チップ103に接続され、プロセッサシステム101は、複数の方式でメモリコントローラ1011を通じてメモリ拡張チップ103に接続され得る。
第1の既存の技術では、実現方式は、プロセッサシステム101とメモリ拡張チップ103とを接続するためにI/Oバスを使用することである。一般的に使用されるI/Oバスは、PCI-E(Peripheral Component Interconnect-Express、ペリフェラル・コンポーネント・インターコネクト・エクスプレス)バス、Intel QPI(Quick Path Interconnect、クイック・パス・インターコネクト)バス又はAMD HT(Hyper Transport、ハイパートランスポート)バスを含む。I/Oバスを使用することにより、比較的高い遅延が存在し、データアクセス遅延を補償するために、洗練したパイプライン設計がメモリ拡張チップ103に必要になる。
第2の既存の技術では、実現方式は、プロセッサシステム101とメモリ拡張チップ103とを接続するためにメモリバスを使用することである。メモリバスの使用は、メモリ拡張チップ103及びプロセッサシステム101が拡張メモリ104を直接共有することを可能にし、これにより、メモリアクセス遅延が比較的小さい。
第2の既存の技術における技術手段は、以下の問題を有する。プロセッサシステム101と拡張メモリ104との間にメモリ拡張チップ103が存在するため、プロセッサシステム101が拡張メモリ104内のデータにアクセスするためのメモリアクセス要求を送信した後に、統合されたメモリコントローラ1011がメモリアクセス要求を受信し、DDR(Double Data Rate)プロトコルを使用することにより拡張メモリ104にアクセスするときに、追加の遅延がメモリ拡張チップ103の存在により引き起こされる。その結果、メモリアクセス要求の処理結果は、DDRプロトコルにより要求される遅延内に返信されることができず、前述のコンピュータシステムにより拡張メモリ104にアクセスする実現性が影響を受ける。
前述の遅延の問題を解決するために、従来技術では、メモリコントローラの時系列パラメータを変更する方式が使用され、すなわち、プロセッサの時系列パラメータが実際のメモリアクセス遅延より大きくなるように、プロセッサに統合されたメモリコントローラの時系列パラメータが変更される。しかし、プロセッサは、最大の時系列パラメータの限られた設定範囲をサポートするため、拡張メモリにアクセスするプロセスにおける追加のアクセス遅延を補償することは困難である。
前述の問題に基づいて、本発明の実施例は、拡張メモリにアクセスするプロセスにおける遅延が補償できないという問題を有効に解決するための、拡張メモリにアクセスするための方法、デバイス、システムを提供する。
本発明の実施例の第1の態様は、コンピュータにより拡張メモリにアクセスするための方法を提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、コンピュータ内のプロセッサシステムは、拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があり、この方法は、
拡張メモリコントローラにより、コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するステップであり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
拡張メモリコントローラにより、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求を受信したときに、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、アクセス対象のデータを取得するための読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信するステップであり、読み取り要求は、物理アドレスを含むステップと、
拡張メモリにより返信されるアクセス対象のデータを受信する前に、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、拡張メモリコントローラにより、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信するステップと、
拡張メモリコントローラにより、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止するステップと、
拡張メモリコントローラにより、N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信するステップと
を含む。
第1の態様を参照して、第1の可能な実現方式では、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
第1の態様及び第1の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、この方法は、拡張メモリコントローラにより、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定するステップを更に含み、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定することは、拡張メモリコントローラにより、物理アドレスを取得するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせることを含む。
第1の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定した後に、この方法の実現方式は、拡張メモリコントローラにより、データバッファにレコードを作成するステップであり、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するステップを更に含む。
第1の態様の第3の可能な実現方式を参照して、第4の可能な実現方式では、レコードは、有効性フィールドを更に含み、この方法は、拡張メモリコントローラにより、有効性フィールドを無効に設定するステップを更に含む。
第1の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、この方法の実現方式は、拡張メモリコントローラにより、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせるステップと、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成するステップとを更に含む。
第1の態様の第4の可能な実現方式を参照して、第6の可能な実現方式では、拡張メモリコントローラにより、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込むことは、拡張メモリコントローラにより、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定することを含む。
本発明の実施例の第2の態様は、拡張メモリにアクセスするための方法を提供し、コンピュータは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法の実施例は、
プロセッサシステムにより、アクセス対象のデータの記憶アドレスを受信するステップと、
プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成するステップであり、N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
プロセッサシステムにより、N+1個のメモリアクセス要求を拡張メモリコントローラに送信するステップと
を含む。
第2の態様を参照して、第1の可能な実現方式では、プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成する前に、この方法は、
コンピュータにより拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定するステップであり、コンピュータにより拡張メモリからデータを取得するための遅延パラメータは、以下のパラメータ、すなわち、メモリアクセス要求を拡張メモリコントローラから拡張メモリに送信する遅延tPD1、メモリアクセス要求により読み取られたデータを拡張メモリから拡張メモリコントローラに送信する遅延tPD2、又はプロセッサシステムにより送信される2つの連続するメモリアクセス要求の間の時間間隔T_Intervalのうちいずれか1つ又はいずれかの組み合わせを含むステップを更に含む。
第2の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、コンピュータにより拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定することは、値Nを決定し、N≧[(tPD1+tPD2)/T_Interval]且つ[*]が丸め関数であることを含む。
第2の態様の第1の可能な実現方式及び第2の可能な実現方式を参照して、第3の可能な実現方式では、2つの連続するメモリアクセス要求の間の時間間隔T_Intervalは、 tGAPmin=tRCD+tRTP+tRP又はT_Fence(すなわち、プロセッサによりFence命令を実行するための遅延)である。
第2の態様、第2の態様の第1の可能な実現方式、第2の態様の第2の可能な実現方式及び第2の態様の第3の可能な実現方式を参照して、第4の可能な実現方式では、プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成することは、
アクセス対象のデータの仮想アドレスに従って仮想対物理アドレス変換を実行し、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得し、
物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれの行アドレス以外のアドレスは物理アドレスAddr_Physicalの行アドレス以外のアドレスと同じであり、
プロセッサシステムにより、Addr_Physical及びAddr_Physical(n)に従ってN+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nであることを含む。
本発明の実施例の第3の態様は、コンピュータ内のプロセッサシステムによる拡張メモリ内のアクセス対象のデータへのアクセスに適用されるコンピュータ内の拡張メモリコントローラを提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、拡張メモリコントローラは、
コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュールであり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である受信モジュールと、
N+1個のメモリアクセス要求のうち第1のメモリアクセス要求が受信されたときに、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、アクセス対象のデータを取得するための読み取り要求を生成し、特定の応答メッセージをプロセッサシステムに返信し、読み取り要求は、物理アドレスを含み、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを生成し、拡張メモリにより返信されたアクセス対象のデータが受信された後に、アクセス対象のデータをデータバッファに書き込み、N+1個のメモリアクセス要求のうち他のメモリアクセス要求が受信されたときに、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータを送信モジュールに送信するように構成された実行モジュールと、
読み取り要求を拡張メモリに送信し、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信し、実行モジュールからアクセス対象のデータを受信し、アクセス対象のデータをプロセッサシステムに送信するように構成された送信モジュールと
を含む。
第3の態様を参照して、第1の可能な実現方式では、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
第3の態様及び第3の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、実行モジュールは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを決定するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って、第1のメモリアクセス要求に含まれるアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
第3の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、実行モジュールは、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスが決定された後に、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するように更に構成される。
第3の態様の第3の可能な実現方式を参照して、第4の可能な実現方式では、レコードは、有効性フィールドを更に含み、実行モジュールは、レコード内の有効性フィールドを無効に設定するように更に構成される。
第3の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、実行モジュールは、メモリアクセス要求が受信される毎に、物理アドレスを決定するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定されたときに、特定の応答メッセージを生成するように更に構成される。
第3の態様の第4の可能な実現方式を参照して、第6の可能な実現方式では、実行モジュールは、拡張メモリにより返信されたアクセス対象のデータが受信された後に、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定するように更に構成される。
本発明の実施例の第4の態様は、拡張メモリを含むコンピュータシステムを提供し、コンピュータシステムは、プロセッサシステムと、メインメモリと、第3の態様又は第3の態様の各実現方式に記載の拡張メモリコントローラと、拡張メモリとを含み、拡張メモリコントローラは、拡張メモリに接続され、拡張メモリコントローラは、メモリインタフェースを使用することによりプロセッサシステムに接続され、プロセッサシステムは、メインメモリに接続され、メインメモリは、プログラムを記憶し、実行命令を記憶するように構成され、プロセッサシステムは、メインメモリに記憶された実行命令を実行するように構成され、これにより、プロセッサシステムは、第2の態様又は第2の態様の各実現方式に記載のように、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。
前述の技術的解決策に基づいて、本発明の実施例において提供される、拡張メモリにアクセスするための方法、デバイス及びシステムによれば、プロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信した後に(Nは1以上の正の整数)、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信し、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、アクセス対象のデータが読み取られてデータバッファに書き込まれるまで、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する遅延を有効に補償するために使用される。
本発明の実施例における技術的解決策をより明確に説明するために、以下に、実施例を説明するために必要な添付図面について簡単に説明する。
従来技術における拡張メモリを含むコンピュータシステムのハードウェア構成の概略図である。 本発明の実施例によるコンピュータシステムのハードウェア構成の構造の概略図である。 本発明の実施例に従ってコンピュータにより拡張メモリにアクセスする遅延を分析する概略図である。 DDRプロトコルにおいてメモリアクセス要求の実行中に時系列を分析する概略図である。 拡張メモリ内のデータにアクセスするための処理方法の実施例の概略フローチャートである。 アクセス対象のデータの記憶アドレスに従ってN+1個のアクセスアドレスを生成する概略フローチャートである。 本発明の実施例に従ってプロセッサにより検出される拡張メモリ空間の概略図である。 拡張メモリコントローラによりメモリアクセス要求を処理する実施例の概略フローチャートである。 拡張メモリコントローラにより実行されるインオーダー実行の実施例の概略フローチャートである。 拡張メモリコントローラにより実行されるアウトオブオーダー実行の実施例の概略フローチャートである。 拡張メモリコントローラの実施例における構成の構造の概略図である。
以下に、本発明の実施例における添付図面を参照して、本発明の実施例における技術的解決策を明確且つ完全に説明する。明らかに、説明する実施例は、本発明の実施例の全てではなく、一部である。
一般的に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、及び特定のタスクを実行するため或いは特定の抽象データ型を実現するための他の種類の構造を含む。さらに、当業者は、各実施例がハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくか或いはプログラム可能な家庭用電化製品、小型コンピュータ、メインフレームコンピュータ及び同様のコンピューティングデバイスを含む他のコンピュータシステム構成を使用することにより実現されてもよいことを理解し得る。各実施例は、通信ネットワークを使用することにより接続されたリモート処理デバイスによりタスクが実行される分散コンピューティング環境で更に実現されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカル及びリモートのメモリ記憶デバイスに位置してもよい。
各実施例は、コンピュータ、コンピューティングシステム、又はコンピュータプログラムプロダクト若しくはコンピュータシステム等が例示的なプロセスの命令を実行するコンピュータプログラムのコンピュータ記憶媒体により実現されるプロセスとして実現されてもよい。例えば、コンピュータ読み取り可能記憶媒体は、揮発性コンピュータメモリ、不揮発性メモリ、ハードディスクドライブ、フラッシュドライブ、フロッピーディスク、コンパクトディスク(Compact Disc)又は同様の媒体のうち1つ以上を使用することにより実現されてもよい。
この明細書において、「プロセッサシステム(Processor System)」という用語は、プロセッサ及びメモリコントローラを含むシステムを示す。メモリコントローラがプロセッサ(Processor)に統合されるときに、プロセッサシステムは、メモリコントローラを含むプロセッサチップを示す。本発明のこの実施例の適用シナリオを参照して、プロセッサシステム内のプロセッサチップは、オブジェクトプログラムを実行するプロセスにおいて生成されたメモリアクセス命令を受信し、アクセス対象のデータのアドレスに従ってメモリアクセス要求を生成し、メモリアクセス要求をメモリコントローラに送信するように構成される。メモリコントローラは、メモリバスプロトコルに従って、メモリアクセス要求を、メモリチップにより実行可能なデータ読み取り/書き込み要求に分解する。
この明細書において、「メモリコントローラ(Memory Controller)」という用語は、コンピュータシステム内のメモリを制御するコンピュータコンポーネントである。メモリコントローラは、メモリとプロセッサとの間のデータ交換を可能にする。具体的な適用では、メモリコントローラは、プロセッサ(Processor)と独立してもよく、或いはプロセッサに統合されてもよい。この明細書において、「メモリコントローラ」は、システムメモリ(System Memory)へのアクセスを制御するように構成される。多くの場合、メモリコントローラは、プロセッサに統合される。メモリコントローラがプロセッサと独立している場合、メモリコントローラは、プロセッサに接続される必要がある。
この明細書において、「拡張メモリコントローラ」という用語は、メモリインタフェースを使用することによりメモリコントローラに接続するように構成され、プロセッサが拡張メモリにアクセスするためのブリッジとして使用される。
この明細書において、「拡張メモリ」という用語は、メモリ拡張を実現するために、メモリ拡張チップを使用することにより接続されるメモリを示す。拡張メモリは、以下の形式、すなわち、DRAM(Dynamic Random Access Memory、ダイナミックランダムアクセスメモリ)、PCM(Phase-Change Memory、相変化メモリ)及びMRAM(Magnetic Random Access Memory、磁気ランダムアクセスメモリ)で実現されてもよいが、これらに限定されない。
この明細書において、「メモリアクセス命令」とも呼ばれる「メモリアクセス命令」という用語は、ソースコード(Source Code)をコンパイル(Compile)することにより取得されたオブジェクトコード(Object Code)に含まれるLoad及びStoreのようなメモリアクセス命令を示し、これらのメモリアクセス命令は、プロセッサにより要求される。実行プロセスにおいて、プロセッサは、仮想アドレス(Virtual Address)対物理アドレス(Physical Address)変換プロセスにおいてメモリアクセス命令内の仮想アドレスを物理アドレスに変換し、メモリアクセス要求を生成し、実行のためにメモリアクセス要求をメモリコントローラ(Memory Controller)に送信する必要がある。
この明細書において、「メモリアクセス要求」とも呼ばれる「メモリアクセス要求」という用語は、メモリ内のデータにアクセスするためのものであり且つプロセッサがメモリアクセス命令を実行した後に生成された要求を示す。メモリアクセス要求は、読み取り要求及び書き込み要求を含む。
この明細書において、「データバッファ」という用語は、拡張メモリから読み取られたアクセス対象のデータを記憶するように構成された記憶デバイスを示し、拡張メモリコントローラに統合されてもよく、或いは拡張メモリコントローラと独立して実現されてもよい。
[本発明の実施例に対応するシステムのハードウェアアーキテクチャ]
本発明の具体的な実施例について説明する前に、本発明の実施例に対応するシステムのハードウェア構成の構造について、まず説明する。図2を参照すると、以下のコンポーネントが含まれる。
プロセッサシステム(Processing System)201:プロセッサシステム201は、プロセッサ2011とメモリコントローラ2012とを含む。命令実行コンポーネントとして、本発明において提供されるこの実施例では、プロセッサシステム201は、実行プロセスにおいて実行可能プログラムにより生成されたメモリアクセス命令を受信し、メモリアクセス命令に従ってメモリアクセス要求を生成するように構成される。プロセッサ2011は、メモリアクセス(Memory Access)命令を処理し、メモリアクセス要求を生成し、メモリアクセス要求をメモリコントローラ2012に送信するように構成される。メモリコントローラ2012は、メモリアクセス要求に含まれる位置属性情報に従って、システムメモリ202にアクセスするか拡張メモリ204にアクセスするかを決定する。システムメモリ202がアクセスされるべきであると決定されたときに、メモリアクセス要求は、システムメモリ202に送信され、或いは拡張メモリ204がアクセスされるべきであると決定された場合、メモリアクセス要求は、拡張メモリコントローラ203に送信される。
システムメモリ(Memory)202:システムメモリ202は、メモリバスを使用することによりプロセッサシステム201に直接接続されたメモリを示し、実行プロセスにおいてプロセッサシステム201の動作データを一時的に記憶するように構成される。
拡張メモリコントローラ(Extended Memory Controller)203:拡張メモリコントローラ203は、拡張メモリ204に接続するように構成され、プロセッサシステム201が拡張メモリ204に対してメモリアクセス処理を実行するためのブリッジとして使用される。拡張メモリコントローラ203は、以下の種類のバスを使用することによりプロセッサ201に接続され、これらの種類のバスは、DDR(Double Data Rate、ダブルデータレート)バス、LPDDR(Low Power DDR、低電力DDR)バス又はWide I/Oバスを含むが、これらに限定されない。拡張メモリコントローラ203は、少なくとも以下のモジュール、すなわち、拡張メモリ内のアクセス対象のデータに対して読み取り操作を実行するように構成された実行モジュール2031と、実行モジュール2031により拡張メモリ204から読み取られるアクセス対象のデータを一時的に記憶するように構成されたデータバッファ2032とを含む。アクセス対象のデータをキャッシュするためのコンポーネントとしてのデータバッファ2032は、拡張メモリコントローラ203に統合されてもよく、或いは拡張メモリコントローラ203と独立して実現されてもよい点に留意すべきである。これは、本発明のこの実施例において限定されない。
拡張メモリ(Extended Memory)204:拡張メモリ204は、システムメモリ202とは異なる拡張メモリを示し、実行プロセスにおいてプロセッサ201の動作データを記憶するように構成される。拡張メモリ204は、DRAM(Dynamic Random Access Memory、ダイナミックランダムアクセスメモリ)、PCM(Phase-Change Memory、相変化メモリ)及びMRAM(Magnetic Random Access Memory、磁気ランダムアクセスメモリ)のような異なる記憶媒体を使用することにより実現されてもよい。
図2に示すシステムのハードウェア構成の構造の概略図において、メモリ拡張チップとしての役目をする拡張メモリコントローラ203の存在のため、拡張メモリ204内のデータを要求するために使用され且つプロセッサシステム201により送信された読み取り要求を実行するプロセスにおいて、比較的高い遅延が存在し、アクセス対象のデータは、DDRプロトコルにより要求されるアクセス遅延内に返信されることができない。図2を参照して、拡張メモリにアクセスする遅延の問題が図3に基づいて分析される。
図3において、以下の3つの遅延が拡張メモリ204内のデータを読み取る操作を実行する際に存在する。
tPD1:信号の送信遅延と拡張メモリコントローラ203内の論理処理の遅延とを含む、プロセッサシステム201により送信されたメモリアクセス要求を「拡張メモリコントローラ203」から「拡張メモリ204」に送信する遅延
tRL:「メモリアクセス要求の受信」から「アクセス対象のデータを拡張メモリ204と拡張メモリコントローラ203との間のバスに送信する」までの拡張メモリ204の遅延
tPD2:拡張メモリ204から読み取られたデータを「拡張メモリ204から拡張メモリコントローラ203に」且つ「拡張メモリコントローラ203」から「プロセッサシステム201内のメモリコントローラ2012」に送信する遅延
プロセッサの実際のメモリアクセス遅延は、tPD1+tRL+tPD2である。これは、メモリアクセスプロトコル(DDRプロトコル等)の要件、すなわち、アクセス対象のデータは、tRL遅延内に返信される必要があることを満たさない。したがって、遅延tPD1+tPD2をどのように補償するかが、本発明のこの実施例の出発点になる。
既存のメモリバスプロトコル(DDRプロトコルが一般的に使用される)は、固定遅延の同期メモリアクセスプロトコルである。1つのメモリアクセス要求の実行は、以下の3つの段階に分けられる。
A.アクティベート(Activate):メモリコントローラ(Memory Controller)は、DRAM内にあり且つ行アドレスに対応する1つの行のデータを行バッファ(Row Buffer)に読み取るために、アクティベート(activate)コマンド及び行アドレス(Row Address)を送信する。
B.読み取り/書き込み(Read/Write):メモリコントローラは、列アドレスに対応しており且つ行バッファ内にあるデータを読み取る/書き込むために、Read/Writeコマンド及び列アドレス(Column Address)を送信する。
C.プリチャージ(Pre-Charge):メモリコントローラは、行バッファをクローズするためにpre-chargeコマンドを送信する。
2つの連続するメモリアクセス要求は、2つの連続するメモリアクセス要求の行アドレスが同じであるか否かに従って、以下の2つの種類に分類され得る。
(1)行ヒット(Row Hit):2つのメモリアクセス要求により操作される必要があるデータが同じBank内の同じ行に位置する(すなわち、行アドレスが同じである)。したがって、第1のメモリアクセス要求の読み取り/書き込み(Read/Writeコマンド)が実行された後に、行データは、依然として行バッファ(Row Buffer)に位置するため、メモリコントローラは、第1のメモリアクセス要求のプリチャージ段階及び第2のメモリアクセス要求のアクティベート操作段階を実行することなく、第2のメモリアクセス要求の読み取り/書き込みコマンド及び列アドレスを直接送信することができる。
(2)行ミス(Row Miss):2つのメモリアクセス要求により操作される必要があるデータが同じbank内の異なる行に位置する。第1のメモリアクセス要求の読み取り/書き込み(Read/Write)段階が実行された後に、行バッファをクローズするためにプリチャージ操作(Pre-Chargeコマンド)が実行される必要があり、次に、行データを行バッファに読み取るために、アクティベート操作(Activateコマンド)が第2のメモリアクセス要求の行に対して実行され、最後に、第2のメモリアクセス要求の読み取り/書き込みコマンド及び列アドレスが送信されることができる。
図4は、DDRプロトコルにおいてメモリアクセス要求を実行するプロセスにおける時系列要件を示す。
tRL:「読み取り(RD)コマンドの送信」から「データがメモリバスに入る」までの固定の遅延
tRCD:「アクティベート(ACT)コマンドの送信」から「読み取り(RD)コマンドの送信」までの最小時間間隔
tRTP:「読み取り(RD)コマンドの送信」から「プリチャージ(PRE)コマンドの送信」までの最小時間間隔
tRP:「プリチャージ(PRE)コマンドの送信」から「次のアクティベート(ACT)コマンドの送信」までの最小時間間隔
前述のパラメータに従って、行ミスのある2つの読み取り(RD)コマンドの間の最小時間間隔は、tGAPmin=tRCD+tRTP+tRPであると計算され得る。
さらに、メモリバリア(Memory Barrier)技術が使用されてもよい。メモリバー(Memory Bar)、メモリフェンス(memory fence)、フェンス命令(Fence instruction)等とも呼ばれるメモリバリアは、一種の同期フェンス命令であり、CPU又はコンパイラによりメモリにランダムにアクセスする操作における同期点であり、これにより、この点の後の操作は、この点の前の全ての読み取り/書き込み操作が実行された後にのみ実行されることができる。
拡張メモリにアクセスするプロセスにおける遅延を補償するために、本発明のこの実施例では、行ミスのある複数のメモリアクセス要求を実行するプロセスにおける遅延は、拡張メモリ内のアクセス対象のデータにアクセスする遅延を補償するために使用される。アプリケーションプログラムが拡張メモリ204内のデータにアクセスする要件のために、拡張メモリアクセス要求は、ソフトウェア(コンパイラ、Compiler等)を使用することにより、行ミスのある複数のメモリアクセス要求にコンパイルされるか、或いはfence命令が複数の生成されたメモリアクセス要求の間に挿入される。複数のメモリアクセス要求を実行するプロセスにおいて、行ミスのあるメモリアクセス要求の遅延と、複数のメモリアクセス要求の間のfence命令の実行により引き起こされる遅延とに基づいて、拡張メモリ内のアクセス対象のデータは、まず拡張メモリコントローラに読み取られ(データプリフェッチ段階)、次にメモリコントローラを使用することにより拡張メモリコントローラからプロセッサに読み取られる(データ読み取り段階)。
[本発明の方法の実施例]
図5Aは、コンピュータにより拡張メモリにアクセスする方法の実施例の概略フローチャートを示し、以下のステップを含む。
510.プロセッサシステムは、アクセス対象のデータの記憶アドレスを受信する。
具体的には、実行プロセスにおいて、コンパイラを使用することにより取得された実行可能プログラムは、N+1個のメモリアクセス命令を生成し、N+1個のメモリアクセス命令は、アクセス対象のデータの記憶アドレスを全て含む。具体的な実現では、アクセス対象のデータの記憶アドレスは、仮想アドレスである。
530.プロセッサシステムは、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成し、N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である。
具体的には、生成されたN+1個のアクセスアドレスは互いに異なる。これは、N+1個のアクセスアドレスに従って生成されたメモリアクセス要求がMSHR(Miss-status Handling Registers)内でプロセッサによりマージされるのを妨げる。N+1個のアクセスアドレスは同じ物理アドレスを指す。具体的な実現では、N+1個のアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間にマッピング関係が存在する。
550.プロセッサシステムは、生成されたN+1個のメモリアクセス要求を拡張メモリコントローラに送信する。
具体的には、拡張メモリ内のアクセス対象のデータにアクセスする遅延を補償するために、プロセッサシステムにおいて、N+1個のメモリアクセス要求を生成した後に、プロセッサは、N+1個のメモリアクセス要求をプロセッサシステム内のメモリコントローラに送信する。プロセッサは、定期的な間隔でN+1個のメモリアクセス要求をメモリコントローラに順次送信してもよく、或いは全てのN+1個のメモリアクセス要求をメモリコントローラに一度に送信してもよい。N+1個のメモリアクセス要求を受信した後に、メモリコントローラは、アクセスアドレスが互いに異なる(特に行アドレスが異なる)と決定し、行ミスのあるメモリアクセス要求としてN+1個のメモリアクセス要求を識別する。したがって、N+1個のメモリアクセス要求は、メモリアクセスプロトコルで指定された行ミスのあるメモリアクセス要求のための送信遅延要件に従って逐次送信される。
N+1個のメモリアクセス命令は、オブジェクトプログラム(Object Program)に含まれる点に留意すべきである。オブジェクトプログラムは、ソースプログラム(Source Program)をコンパイルすることにより、コンパイラ(Compiler)により取得される。ソースプログラムがコンパイルされるコンピュータシステムは、本発明のこの実施例におけるコンピュータシステムでもよく、或いはサードパーティのコンピュータシステムでもよい。
拡張メモリシステムを含むコンピュータについて、ソースプログラムを開発するときに、ソフトウェア開発者は、各変数のタイプ及び記憶位置を規定する。開発者は、いくつかの変数がシステムメモリに一時的に記憶され、他の変数が拡張メモリに一時的に記憶されることを規定する。
プログラムにおいて拡張メモリ内に規定された変数を使用するプロセスにおいて、変数(この明細書では「アクセス対象のデータ」と呼ばれる)に対する読み取り/書き込み操作が関与する必要がある。本発明のこの実施例では、ソースプログラムをコンパイルするプロセスにおいて、拡張メモリに記憶されたアクセス対象のデータの特定の部分にアクセスするための要求が存在するときに、コンパイラは、拡張メモリの遅延パラメータとメモリバスプロトコルの遅延要件とに従って、アクセス対象のデータにアクセスするための要求をN+1個のメモリアクセス要求にコンパイルし、N≧1且つNは整数である。
さらに、送信される必要があるメモリアクセス要求の数量は、以下のように決定される。
(1)メモリアクセス要求を「拡張メモリコントローラ」から「拡張メモリ」に送信する遅延はtPD1であり、メモリアクセス要求に従って読み取られたデータを「拡張メモリ」から「拡張メモリコントローラ」に送信する遅延はtPD2である。
具体的には、ひとたび拡張メモリを含むコンピュータシステムが決定されると、以下の2つのパラメータが決定されてもよい。
(2)プロセッサにより送信される行ミスのある2つの連続するメモリアクセス要求の間のDDRプロトコルに準拠した時間間隔はtGAPmin=tRCD+tRTP+tRPであると決定される。
具体的には、図4及び関係する説明を参照すると、プロセッサにより送信される行ミスのある2つのメモリアクセス要求の間の最小時間間隔は、少なくともtRCD+tRTP+tRPであり、前述のパラメータがDDRプロトコルにおいて指定される。
さらに、メモリアクセス要求が生成された後に、プロセッサは、プロセッサにより送信される2つの連続するメモリアクセス要求の間の時間間隔において各メモリアクセス要求の後に1つのfence命令を挿入してもよく、すなわち、遅延がfence命令を実行することにより実現され、fence命令の実行時間はT_Fenceである。
(3)生成される必要があるメモリアクセス要求の数量Nは、前述のパラメータに従って計算され、すなわち、N≧[(tPD1+tPD2)/(tRCD+tRTP+tRP)]であり、[*]は丸め関数である。
さらに、プロセッサが生成されたN+1個のメモリアクセス要求にfence命令を挿入した後に、計算されたN≧[(tPD1+tPD2)/T_Fence]であり、[*]は丸め関数である。T_Fenceはプロセッサによりfence命令を実行するための遅延である。
具体的な実現では、アクセス対象のデータの記憶アドレスに従って生成されたN+1個のアクセスアドレスは、図5Bに示すように、以下のステップ551〜553を実行することにより取得されてもよい。
551.アクセス対象のデータの仮想アドレスAddr_Virtualに従って仮想対物理アドレス変換が実行され、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得する。
プロセッサにより受信されるメモリアクセス命令に含まれるアドレスは、一般的に仮想アドレスである点に留意すべきである。仮想対物理アドレス変換は、アクセス対象のデータの仮想アドレスに従って実行され、これにより、仮想アドレスに対応する物理アドレスを取得する。
552.物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれのbankアドレスは物理アドレスAddr_Physicalのbankアドレスと同じである。
具体的には、記憶行ミスのあるN+1個のメモリアクセス要求を生成する目的で、N+1個のメモリアクセス要求のアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される必要がある。
拡張メモリのアドレス空間は、再定義される必要がある。図6を参照すると、N=1が一例として使用され、プロセッサは、アクセス対象のデータの物理アドレスに従って2つのアクセスアドレスを生成し、これにより、拡張メモリについての2つのメモリアクセス要求を生成する。
図6において、プロセッサにより検出されることができるメモリ空間は、2つの部分、すなわち、拡張メモリの実際のメモリ空間及びシャドウ空間を含む。拡張メモリに対応するメモリ空間は、M個のメモリ行を含み、シャドウ空間及び拡張メモリに対応するメモリ空間は、同じサイズである(行及び列のサイズが同じである)。2つのメモリアクセス要求が行ミスのあるメモリアクセス要求として使用されることを確保する目的で、2つのメモリアクセス要求のアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される必要がある。
したがって、メモリアクセス要求のアドレスにおいて、メモリアクセス要求の行アドレスはiであり、他のメモリアクセス要求の行アドレスはi+Mである。これは、2つのメモリアクセス要求の行アドレスが異なることを確保する。さらに、拡張メモリ空間内のアクセス対象のデータの物理アドレスに対応する行アドレスは、シャドウ空間内の行アドレスからオフセットMを減算することにより取得される。これは、2つのアドレスが拡張メモリ内の同じ物理アドレスを指すことを確保する。
さらに、行アドレスに加えて、拡張メモリ内の物理アドレスは、bankアドレスを含む。生成されたN+1個のアクセスアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される場合、プロセッサシステム内のメモリコントローラは、N+1個のメモリアクセス要求を受信したときに、N+1個のメモリアクセス要求を、行ミスのあるメモリアクセス要求として識別することができる。
本発明のこの実施例の説明を簡略化するために、アクセス対象のデータの物理アドレスに基づいて生成されたN+1個のアクセスアドレスが初期設定で同じメモリチップ(Chip)にある点に留意すべきである。具体的な実現では、bankアドレス及び行アドレスに加えて、アクセスアドレスは、メモリ物理アドレスとして、メモリ物理アドレスの要件に従ってchannelアドレス、DIMMアドレス、rankアドレス及びchipアドレスを更に含む。したがって、解決策の具体的な実現では、「生成されたN+1個のアクセスアドレス」は、「アクセス対象のデータの物理アドレス」のchannelアドレス、DIMMアドレス、rankアドレス及びchipアドレスと同じになるように設定されてもよい。
前述の実現方式では、N=1が一例として使用されることが理解され得る。他の値について、メモリアクセス要求のアドレスが生成されてもよく、N+1個のメモリアクセス要求は同様のプロセスに従って作成されてもよい。
553.プロセッサシステムは、Addr_Physical及びAddr_Physical(n)に従ってN+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nである。
前述の実施例では、コンピュータ内のプロセッサシステムにより拡張メモリ内のアクセス対象のデータにアクセスするプロセスにおいて、プロセッサは、N+1個のメモリアクセス要求を生成し、生成されたN+1個のメモリアクセス要求に含まれるアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含み、これにより、プロセッサに統合されたメモリコントローラは、N+1個のメモリアクセス要求を実行するときに、行ミスのあるメモリアクセス要求をトリガーする。行ミスのあるN+1個のメモリアクセス要求を実行するプロセスにおいて、拡張メモリコントローラは、この処理遅延に基づいて拡張メモリからアクセス対象のデータを読み取ることができ、最後に、アクセス対象のデータをプロセッサに返信する。前述の実現方式では、アクセス対象のデータが指定された遅延範囲内に返信されることができないという問題を解決するために、行ミスのあるメモリアクセス要求を実行するプロセスにおける遅延が有効に使用される。
図7は、拡張メモリコントローラがプロセッサシステムにより送信されたN+1個のメモリアクセス要求を受信した後の処理プロセスを示す。拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含む。コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリコントローラに接続される。コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法の実施例は以下のステップを含む。
710.拡張メモリコントローラは、コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信し、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である。
具体的には、拡張メモリコントローラは、ステップ550に記載のプロセスにおいてプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信する。N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、N+1個のアクセスアドレスは同じ物理アドレスを指す。
730.N+1個のメモリアクセス要求のうち第1のメモリアクセス要求を受信したときに、拡張メモリコントローラは、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信し、読み取り要求は、物理アドレスを搬送する。
具体的には、第1のメモリアクセス要求を受信したときに、拡張メモリコントローラは、第1のメモリアクセス要求のアクセスアドレスに従って物理アドレスを決定し、物理アドレスの読み取り要求を拡張メモリに送信し、読み取り要求は、拡張メモリからアクセス対象のデータを読み取るために使用される。
750.拡張メモリにより返信されるアクセス対象のデータを受信する前に、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後のメモリアクセス要求が受信される毎に、拡張メモリコントローラは、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信する。
具体的には、アクセス対象のデータを読み取るプロセスにおいて比較的高い遅延が必要であり、メモリバスプロトコルは、固定遅延の同期メモリアクセスプロトコルであるため、拡張メモリコントローラは、メモリアクセス要求毎に応答メッセージを返信する必要がある。したがって、拡張メモリコントローラは、第1のメモリアクセス要求のための特定の応答メッセージをプロセッサに返信する。特定の応答メッセージは、プロセッサと拡張メモリコントローラとにより合意された特別な識別子であり、例えば、0x5a5a5a5a5a5a5a5aが特別な識別子として使用されてもよい点に留意すべきである。
特別な識別子は、カスタマイズ可能な識別子である点に留意すべきである。具体的な実現では、他の識別子も使用されてもよい。これは、本発明のいずれかの実施例において限定されない。
770.拡張メモリコントローラは、拡張メモリにより返信されたアクセス対象のデータを受信した後に、アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止する。
具体的には、ステップ730において、拡張メモリコントローラにより送信された読み取り要求は、拡張メモリに送信され、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて比較的高い遅延が必要になる。この段階で、N+1個のメモリアクセス要求のうちいくつかのメモリアクセス要求は、プロセッサにより拡張メモリコントローラに送信される。この場合、これらのメモリアクセス要求を受信した後に、拡張メモリコントローラは、メモリバスプロトコルにより要求される遅延内に特定の応答メッセージをプロセッサに返信し、これにより、アクセス対象のデータが取得されていないことをプロセッサに通知する。拡張メモリにより返信されたアクセス対象のデータを受信したときに、拡張メモリコントローラは、アクセス対象のデータをデータバッファに書き込む。
データバッファは、拡張メモリコントローラに統合されてもよく、或いは拡張メモリコントローラと独立して実現されてもよい点に留意すべきである。
790.N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサに返信する。
具体的には、メモリバスプロトコルは、固定遅延の同期メモリアクセスプロトコルであるため、アクセス対象のデータがデータバッファに書き込まれた後に、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。
さらに、全てのN+1個のメモリアクセス要求内のアクセスアドレスが同じbankアドレス及び異なる行アドレスを含む。プロセッサに統合されたメモリコントローラは、この特徴を有するメモリアクセス要求を、行ミス(Row Miss)のあるメモリアクセス要求として識別し、これにより、メモリアクセスプロトコルで指定された遅延は、N+1個のメモリアクセス要求を実行するプロセスにおいて生成されることができる。
さらに、拡張メモリコントローラは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定する、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定することは、拡張メモリコントローラにより、前述の物理アドレスを決定するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせることを含む。
さらに、ステップ730において、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定した後に、この方法の実施例は、拡張メモリコントローラにより、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定することを更に含む。
さらに、ステップ730において、レコードは、有効性フィールドを含み、この方法の実施例は、拡張メモリコントローラにより、有効性フィールドを無効に設定することを更に含む。
さらに、ステップ750において、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラがメモリアクセス要求を受信する毎に、この方法は、拡張メモリコントローラにより、物理アドレスを決定するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成することを更に含む。
さらに、ステップ750において、拡張メモリコントローラにより、アクセス対象のデータをデータバッファに書き込むことは、拡張メモリコントローラにより、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定することを含む。
前述の実現プロセスにおいて、第1のメモリアクセス要求を受信した後に、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信する。拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、これにより、プロセッサは、行ミスの要件に従って次のメモリアクセス要求を送信することができ、拡張メモリコントローラは、読み取られたデータをデータバッファに一時的に記憶し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサに返信する遅延を有効に補償するために使用される。
実験から取得された経験値によれば、数個のレベルの拡張メモリが存在し、アクセス対象のデータの読み取り/書き込みが拡張メモリ内のデータに対して実行されるときに、N=1であり、すなわち、2つのメモリアクセス要求は、拡張メモリからデータを読み取る遅延を補償するために生成されることができる。以下に、N=1を一例として使用することにより2つの具体的な実現プロセスについて説明する。
[I.インオーダー実行方式(図8参照)]
図6における拡張メモリを含むメモリ空間によれば、1つのみのシャドウ空間が仮想化される必要があることが習得され得る。図6が一例として使用される。図2におけるシステムの構造図を参照して、アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、2つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。2つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のバッファに記録される。
2つのメモリアクセス要求は、生成された2つのアクセスアドレスに従って構築され、プロセッサにより拡張メモリコントローラに送信される。プロセッサが、まずi+Mの行アドレスを有するメモリアクセス要求を送信し、次にiの行アドレスを有するメモリアクセス要求を送信することが仮定される。この方法の実施例の実行プロセスは以下の通りである。
810.拡張メモリコントローラは、第1のメモリアクセス要求を受信し、要求のアクセスアドレスを取得するために要求を解析し、要求の行アドレスがi+Mであると識別したときに、拡張メモリコントローラは、特別な識別子をプロセッサに返信する。
具体的には、拡張メモリコントローラは、行アドレスに従って、メモリアクセス要求内のアドレスが拡張メモリの実際のメモリ空間又はシャドウ空間に位置すると識別することができるため、このステップにおいて、行アドレスがi+Mであると識別された場合、アクセスアドレスがシャドウ空間に位置すると決定され、特別な識別子(0x5a5a5a5a5a5a5a5a等)が生成され、プロセッサに返信される。
830.拡張メモリコントローラは、読み取り要求を生成し、読み取り要求は、アクセス対象のデータの物理アドレスを含み、読み取り要求を拡張メモリに送信し、メモリバスプロトコルで指定されたメモリアクセス要求処理遅延内にアクセス対象のデータをデータバッファに読み取る。
具体的には、第1のメモリアクセス要求を受信した後に、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を生成し、読み取り要求を拡張メモリに送信する。アクセス対象のデータは、メモリバスプロトコルで指定されたメモリアクセス要求遅延内にデータバッファに読み取られる。
850.メモリバスプロトコルで指定された遅延の後に、拡張メモリコントローラは、第2のメモリアクセス要求を受信し、要求のアクセスアドレスを取得するために要求を解析し、要求の行アドレスがiであると識別したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサに返信する。
具体的には、アクセス対象のデータをデータバッファに読み取った後に、拡張メモリコントローラは、プロセッサにより送信された第2のアクセス要求を受信し、アクセスアドレスの行アドレスを取得するために要求を解析し、要求の行アドレスがi、すなわち、拡張メモリの実際のメモリ空間に位置するアドレスであると決定したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサに返信する。
前述の実施例では、事前に合意されたアドレスアクセス順序に従って、受信した第1のメモリアクセス要求に含まれるアクセスアドレスは、シャドウ空間のアドレスであり、第2のメモリアクセス要求に含まれるアクセスアドレスは、実際のメモリ空間のアドレスであり、シャドウ空間のアドレスと実際のメモリ空間のアドレスとの間にマッピング関係が存在する。シャドウ空間のアドレスを含むメモリアクセス要求が受信されたときに、アクセス対象のデータは、拡張メモリから読み取られ、データバッファにキャッシュされる。実際のメモリ空間のアドレスを含むメモリアクセス要求が受信されたときに、データは、データバッファからプロセッサに読み取られる。
事前に合意された前述のアクセス順序は、さらに、「実際のメモリ空間のアドレスを最初にアクセスし、次にシャドウ空間のアドレスをアクセスする」というような順序でもよく、或いは、さらに、2つのメモリアクセス要求に含まれるアクセスアドレスがマッピング関係を有しており且つ同じ物理アドレスを指すことが確保されている場合、2つのメモリアクセス要求に含まれるアドレスが共にシャドウ空間のアドレス(すなわち、Add1及びAdd2)であることが理解され得る。
[II.アウトオブオーダー実行方式(図9参照)]
ここでのアウトオブオーダーは、メモリアクセス要求が拡張メモリコントローラに送信される順序と、プロセッサがメモリアクセス要求を送信する順序との間の不一致を示す。この場合、メモリアクセス要求が送信される順序は、アクセスアドレスの行アドレスがシャドウ空間に位置するか実際のメモリ空間に位置するかを決定することにより決定されることができない。したがって、この場合、メモリアクセス要求が送信される順序は、データバッファ内にアクセス対象のデータが存在するか否かを問い合わせることにより決定される。
アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、2つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。2つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のバッファに記録される。
2つのメモリアクセス要求は、生成された2つのアクセスアドレスに従って構築され、プロセッサにより拡張メモリコントローラに送信される。プロセッサが、まずi+Mの行アドレスを有するメモリアクセス要求を送信し、次にiの行アドレスを有するメモリアクセス要求を送信することが仮定される。この方法の実施例の実行プロセスは以下の通りである。
910.拡張メモリコントローラは、2つのメモリアクセス要求を続いて受信し、2つのメモリアクセス要求内のアクセスアドレスは互いに異なり、2つのアクセスアドレスは同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの物理アドレスである。
具体的には、2つのメモリアクセス要求内のアクセスアドレスは互いに異なる。これは、2つのアクセスアドレスに従って生成されたメモリアクセス要求がMSHR(Miss-status Handling Registers)内でプロセッサによりマージされるのを妨げる。2つのアクセスアドレスは同じ物理アドレスを指す。これは、2つのアクセスアドレスと物理アドレスとの間にマッピング関係が存在することを示す。
930.メモリアクセス要求のいずれかを受信した後に、拡張メモリコントローラは、アドレスをアクセス対象のデータの物理アドレスにマッピングし、データバッファを検索する。
具体的には、データバッファは、データをキャッシュするように構成される。具体的な実現では、データバッファは、キャッシュを使用することにより実現されてもよい。記憶は、<識別子,データ>方式で実行される。アクセス対象のデータの物理アドレスは、識別子として使用されてもよい。
950.アクセス対象のデータのレコードが見つからなかったときに、メモリアクセス要求が第1のメモリアクセス要求であると決定し、特別な識別子をプロセッサに返信し、アクセス対象のデータを読み取るための要求を拡張メモリに送信し、読み取り要求は、物理アドレスを含む。
具体的には、ステップ930において、拡張メモリコントローラがアクセス対象のデータのレコードをデータバッファ内に見つけることができなかったときに、受信したメモリアクセス要求が第1のメモリアクセス要求であると決定される。この場合、アクセスアドレスが物理アドレスである読み取り要求が生成され、拡張メモリに送信され、読み取り要求は、アクセス対象のデータを読み取るために使用される。このプロセスにおいて、拡張メモリコントローラは、特別な識別子(0x5a5a5a5a5a5a5a5a等)を更に生成し、特別な識別子をプロセッサに送信し、これにより、プロセッサは、特別な識別子に従って、アクセス対象のデータがデータバッファに読み取られていないと決定する。
970.アクセス対象のデータのレコードが見つかったときに、メモリアクセス要求が第2のメモリアクセス要求であると決定し、データバッファからデータを読み取り、データをプロセッサに返信する。
具体的には、拡張メモリコントローラがアクセス対象のデータのレコードを見つけたとき、これは、メモリアクセス要求が第2のメモリアクセス要求であることを示し、データは、データバッファから読み取られ、プロセッサに返信される。
前述の実現方式では、プロセッサは、2つのメモリアクセス要求を生成し、2つのメモリアクセス要求を拡張メモリコントローラに送信し、これにより、拡張メモリコントローラは、2つのメモリアクセス要求に従って拡張メモリ内のアクセス対象のデータを読み取る。これは、プロセッサにより拡張メモリ内のアクセス対象のデータにアクセスする遅延がメモリアクセスプロトコルの要件を満たすことができないという問題を解決する。
[本発明のデバイスの実施例]
本発明は、拡張メモリコントローラのデバイスの実施例を更に提供する。図10を参照すると、拡張メモリコントローラは、コンピュータ内のプロセッサによる拡張メモリ内のアクセス対象のデータへのアクセスに適用される。拡張メモリコントローラは、メモリバスを使用することにより、コンピュータに接続される。拡張メモリコントローラは、
コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュール1010であり、全てのメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である受信モジュール1010と、
N+1個のメモリアクセス要求のうち第1のメモリアクセス要求が受信されたときに、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、アクセス対象のデータを取得するための読み取り要求を拡張メモリに送信し、特定の応答メッセージを生成し、読み取り要求は、物理アドレスを含み、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを生成し、拡張メモリにより返信されたアクセス対象のデータが受信された後に、アクセス対象のデータをデータバッファ1040に書き込み、特定の応答メッセージをプロセッサシステムに返信するのを停止し、アクセス対象のデータがデータバッファ1040に書き込まれた後に、N+1個のメモリアクセス要求のうちメモリアクセス要求が受信されたときに、データバッファ1040からアクセス対象のデータを読み取り、アクセス対象のデータを送信モジュールに送信するように構成された実行モジュール1020と、
読み取り要求を拡張メモリに送信し、特定の応答メッセージをプロセッサシステムに返信し、拡張メモリにより返信されるアクセス対象のデータが受信される前に、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージをプロセッサシステムに返信し、実行モジュール1020からアクセス対象のデータを受信し、アクセス対象のデータをプロセッサシステムに送信するように構成された送信モジュール1030と
を含む。
さらに、全てのN+1個のメモリアクセス要求内のアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む。
さらに、実行モジュール1020は、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを取得するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って、第1のメモリアクセス要求に含まれるアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
さらに、実行モジュール1020は、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスが決定された後に、データバッファにレコードを作成し、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するように更に構成される。
さらに、レコードは、有効性フィールドを更に含み、実行モジュール1020は、レコード内の有効性フィールドを無効に設定するように更に構成される。
さらに、実行モジュール1020は、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ1040内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定されたときに、特定の応答メッセージを生成するように更に構成される。
さらに、実行モジュール1020は、物理アドレスに対応するレコードを求めてデータバッファ1040を検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定するように更に構成される。
さらに、拡張メモリコントローラの前述の実施例において、データバッファ1040は、拡張メモリコントローラに統合される点に留意すべきである。これは単なる実現方式である。当業者は、データバッファ1040が拡張メモリコントローラと独立して更に実現されてもよいことを理解し得る。
本発明は、拡張メモリを含むコンピュータシステムを更に提供する。図2に示すように、コンピュータシステムは、プロセッサシステム201と、システムメモリ202と、拡張メモリコントローラのデバイスの実施例に記載の拡張メモリコントローラ203と、拡張メモリ204とを含む。拡張メモリコントローラ203は、拡張メモリ204に接続され、拡張メモリコントローラ203は、メモリインタフェースを使用することによりプロセッサ201に接続される。プロセッサシステム201は、システムメモリ202に接続され、システムメモリ202は、プログラムを記憶し、実行命令を記憶するように構成される。プロセッサシステム201は、システムメモリ202に記憶された実行命令を実行するように構成され、これにより、プロセッサシステム201は、コンピュータにより拡張メモリにアクセスする方法の実施例に示す、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。
当業者は、本発明において開示された実施例に記載の例と組み合わせて、ユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれらの組み合わせにより実現されてもよいことを認識し得る。ハードウェアとソフトウェアとの間の互換性を明確に記載するために、前述では、機能に従って各例の構成及びステップを一般的に説明している。機能がハードウェアにより実行されるかソフトウェアにより実行されるかは、技術的解決策の特定の用途及び設計上の制約条件に依存する。当業者は、特定の用途毎に記載の機能を実現するために異なる方法を使用してもよいが、この実現が本発明の範囲を超えると考えられるべきではない。
便宜上且つ簡潔な説明の目的で、前述のシステム、装置及びユニットの詳細な動作処理について、前述の方法の実施例における対応するプロセスに参照が行われてもよく、詳細はここでは再び説明しないことが当業者により明確に理解され得る。
この出願において提供されるいくつかの実施例において、開示のシステム、装置及び方法は、他の方式で実現されてもよいことが理解されるべきである。例えば、記載の装置の実施例は、単なる例である。例えば、ユニットの分割は、単に論理的な機能分割であり、実際の実現では他の分割でもよい。例えば、複数のユニット又はコンポーネントは結合されてもよく、或いは他のシステムに統合されてもよく、或いはいくつかの特徴が無視されてもよく或いは実行されなくてもよい。さらに、表示又は説明した相互結合若しくは直接結合又は通信接続は、いくつかのインタフェースを使用することにより実現されてもよい。装置又はユニットの間の間接結合又は通信接続は、電子的、機械的或いは他の形式で実現されてもよい。
別々の部分として記載したユニットは、物理的に別々でもよく或いは別々でなくてもよく、ユニットとして表示された部分は、物理的なユニットでもよく或いは物理的なユニットでなくてもよく、1つの場所に位置してもよく、或いは複数のネットワークユニットに分散されてもよい。ユニットの一部又は全部は、本発明の実施例の解決策の目的を達成するために、実際のニーズに従って選択されてもよい。
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されてもよく、或いはユニットのそれぞれが物理的に単独で存在してもよく、或いは2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実現されてもよく、或いはソフトウェア機能ユニットの形式で実現されてもよい。
統合されたユニットがソフトウェア機能ユニットの形式で実現され、独立したプロダクトとして販売又は使用される場合、統合されたユニットは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。このような理解に基づいて、本発明の技術的解決策は、本質的に、或いは、従来技術に寄与する部分又は技術的解決策の全部若しくは一部は、ソフトウェアプロダクトの形式で実現されてもよい。ソフトウェアプロダクトは、記憶媒体に記憶され、コンピュータデバイス(パーソナルコンピュータ、サーバ又はネットワークデバイスでもよい)に対して本発明の実施例に記載の方法のステップの全部又は一部を実行するように命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク又は光ディスクのようなプログラムコードを記憶することができるいずれかの媒体を含む。
前述の説明は、本発明の単に具体的な実施例に過ぎず、本発明の保護範囲を限定することを意図するものではない。本発明に開示された技術範囲内で当業者により容易に理解される如何なる変更又は置換も本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
ビッグデータ(Big Data)のアプリケーションは、コンピュータ処理能力にとってより高い要件を有する。コンピュータ処理能力を改善する重要な指標は、メモリ容量の改善である。適用シナリオでは、既存のメモリチップの限られた集積度のため、複数のメモリチップは、メモリ容量を拡張するために、拡張チップを使用することにより接続される。他の適用シナリオでは、いくつかの特定のアプリケーションに対する加速処理を実行するために、アプリケーション加速チップがより多くのコンピュータシステムに追加される。例えば、通常、GPU(Graphic Processing Unit、グラフィック処理ユニット)は、グラフィカルデータ及び画像データの処理中の加速のために使用される。一般的に、このようなアプリケーション加速チップは、ASIC(Application-Specific Integrated Circuit、特定用途向け集積回路)又はFPGA(Field Programmable Gate Array、フィールドプログラマブルゲートアレイ)を使用することにより実現され得る。
第1の既存の技術では、実現方式は、プロセッサシステム101とメモリ拡張チップ103とを接続するためにI/Oバスを使用することである。一般的に使用されるI/Oバスは、PCI-E(Peripheral Component Interconnect-Express、ペリフェラル・コンポーネント・インターコネクト・エクスプレス)バス、Intel QPI(Quick Path Interconnect、クイック・パス・インターコネクト)バス又はAMD HT(HyperTransport、ハイパートランスポート)バスを含む。I/Oバスを使用することにより、比較的高い遅延が存在し、データアクセス遅延を補償するために、洗練したパイプライン設計がメモリ拡張チップ103に必要になる。
第1の態様の第2の可能な実現方式を参照して、第3の可能な実現方式では、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定した後に、この方法は、拡張メモリコントローラにより、データバッファにレコードを作成するステップであり、レコードは、タグフィールド及びデータフィールドを含み、タグフィールドを物理アドレスに設定するステップを更に含む。
第1の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、N+1個のメモリアクセス要求のうち第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、この方法は、拡張メモリコントローラにより、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせるステップと、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成するステップとを更に含む。
本発明の実施例の第2の態様は、拡張メモリにアクセスするための方法を提供し、コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法は
プロセッサシステムにより、アクセス対象のデータの記憶アドレスを受信するステップと、
プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成するステップであり、N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、物理アドレスは、拡張メモリ内のアクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
プロセッサシステムにより、N+1個のメモリアクセス要求を拡張メモリコントローラに送信するステップと
を含む。
第2の態様、第2の態様の第1の可能な実現方式、第2の態様の第2の可能な実現方式及び第2の態様の第3の可能な実現方式を参照して、第4の可能な実現方式では、プロセッサシステムにより、アクセス対象のデータの記憶アドレスに従ってN+1個のメモリアクセス要求を生成することは、
アクセス対象のデータの記憶アドレスAddr_Virtualに従って仮想対物理アドレス変換を実行し、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得し、
物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは物理アドレスAddr_Physicalの行アドレスであり、N個の物理アドレスのそれぞれの行アドレス以外のアドレスは物理アドレスAddr_Physicalの行アドレス以外のアドレスと同じであり、
プロセッサシステムにより、Addr_Physical及びAddr_Physical(n)に従ってN+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nであることを含む。
第3の態様及び第3の態様の第1の可能な実現方式を参照して、第2の可能な実現方式では、実行モジュールは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを取得するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って、第1のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
第3の態様の第4の可能な実現方式を参照して、第5の可能な実現方式では、実行モジュールは、メモリアクセス要求が受信される毎に、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定されたときに、特定の応答メッセージを生成するように更に構成される。
本発明の実施例の第4の態様は、拡張メモリを含むコンピュータシステムを提供し、コンピュータシステムは、プロセッサシステムと、メインメモリと、第3の態様又は第3の態様の各実現方式に記載の拡張メモリコントローラと、拡張メモリとを含み、拡張メモリコントローラは、拡張メモリに接続され、拡張メモリコントローラは、メモリインタフェースを使用することによりプロセッサシステムに接続され、プロセッサシステムは、メインメモリに接続され、メインメモリは、実可能命令を記憶するように構成され、プロセッサシステムは、メインメモリに記憶された実行可能命令を実行するように構成され、これにより、プロセッサシステムは、第2の態様又は第2の態様の各実現方式に記載のように、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。
前述の技術的解決策に基づいて、本発明の実施例において提供される、拡張メモリにアクセスするための方法、デバイス及びシステムによれば、プロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信した後に(Nは1以上の正の整数)、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信し、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、アクセス対象のデータが読み取られてデータバッファに書き込まれるまで、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する遅延を有効に補償するために使用される。
一般的に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、及び特定のタスクを実行するため或いは特定の抽象データ型を実現するための他の種類の構造を含む。さらに、当業者は、各実施例がハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサに基づくか或いはプログラム可能な家庭用電化製品、小型コンピュータ、メインフレームコンピュータ及び同様のコンピューティングデバイスを含む他のコンピュータシステム構成を使用することにより実現されてもよいことを理解し得る。各実施例は、通信ネットワークを使用することにより接続されたリモート処理デバイスによりタスクが実行される分散コンピューティング環境で更に実現されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカル及びリモートの記憶デバイスに位置してもよい。
この明細書において、「拡張メモリ」という用語は、メモリ拡張を実現するために、メモリ拡張チップを使用することにより接続されるメモリを示す。拡張メモリは、以下の形式、すなわち、DRAM(Dynamic Random Access Memory、ダイナミックランダムアクセスメモリ)、PCM(Phase Change Memory、相変化メモリ)及びMRAM(Magnetic Random Access Memory、磁気ランダムアクセスメモリ)で実現されてもよいが、これらに限定されない。
この明細書において、「メモリアクセス命令」という用語は、ソースコード(Source Code)をコンパイル(Compile)することにより取得されたオブジェクトコード(Object Code)に含まれるLoad及びStoreのようなメモリアクセス命令を示し、これらのメモリアクセス命令は、プロセッサにより要求される。実行プロセスにおいて、プロセッサは、仮想アドレス(Virtual Address)対物理アドレス(Physical Address)変換プロセスにおいてメモリアクセス命令内の仮想アドレスを物理アドレスに変換し、メモリアクセス要求を生成し、実行のためにメモリアクセス要求をメモリコントローラ(Memory Controller)に送信する必要がある。
この明細書において、「メモリアクセス要求」という用語は、メモリ内のデータにアクセスするためのものであり且つプロセッサがメモリアクセス命令を実行した後に生成された要求を示す。メモリアクセス要求は、読み取り要求及び書き込み要求を含む。
プロセッサシステム(Processor System)201:プロセッサシステム201は、プロセッサ2011とメモリコントローラ2012とを含む。命令実行コンポーネントとして、本発明において提供されるこの実施例では、プロセッサシステム201は、実行プロセスにおいて実行可能プログラムにより生成されたメモリアクセス命令を受信し、メモリアクセス命令に従ってメモリアクセス要求を生成するように構成される。プロセッサ2011は、メモリアクセス(Memory Access)命令を処理し、メモリアクセス要求を生成し、メモリアクセス要求をメモリコントローラ2012に送信するように構成される。メモリコントローラ2012は、メモリアクセス要求に含まれる位置属性情報に従って、システムメモリ202にアクセスするか拡張メモリ204にアクセスするかを決定する。システムメモリ202がアクセスされるべきであると決定されたときに、メモリアクセス要求は、システムメモリ202に送信され、或いは拡張メモリ204がアクセスされるべきであると決定された場合、メモリアクセス要求は、拡張メモリコントローラ203に送信される。
拡張メモリコントローラ(Extended Memory Controller)203:拡張メモリコントローラ203は、拡張メモリ204に接続するように構成され、プロセッサシステム201が拡張メモリ204に対してメモリアクセス処理を実行するためのブリッジとして使用される。拡張メモリコントローラ203は、以下の種類のバスを使用することによりプロセッサシステム201に接続され、これらの種類のバスは、DDR(Double Data Rate、ダブルデータレート)バス、LPDDR(Low Power DDR、低電力DDR)バス又はWide I/Oバスを含むが、これらに限定されない。拡張メモリコントローラ203は、少なくとも以下のモジュール、すなわち、拡張メモリ内のアクセス対象のデータに対して読み取り操作を実行するように構成された実行モジュール2031と、実行モジュール2031により拡張メモリ204から読み取られるアクセス対象のデータを一時的に記憶するように構成されたデータバッファ2032とを含む。アクセス対象のデータをキャッシュするためのコンポーネントとしてのデータバッファ2032は、拡張メモリコントローラ203に統合されてもよく、或いは拡張メモリコントローラ203と独立して実現されてもよい点に留意すべきである。これは、本発明のこの実施例において限定されない。
拡張メモリ(Extended Memory)204:拡張メモリ204は、システムメモリ202とは異なる拡張メモリを示し、実行プロセスにおいてプロセッサシステム201の動作データを記憶するように構成される。拡張メモリ204は、DRAM(Dynamic Random Access Memory、ダイナミックランダムアクセスメモリ)、PCM(Phase Change Memory、相変化メモリ)及びMRAM(Magnetic Random Access Memory、磁気ランダムアクセスメモリ)のような異なる記憶媒体を使用することにより実現されてもよい。
(1)行ヒット(Row Hit):2つのメモリアクセス要求により操作される必要があるデータが同じBank内の同じ行に位置する(すなわち、行アドレスが同じである)。したがって、第1のメモリアクセス要求の読み取り/書き込み(Read/Write)コマンドが実行された後に、行データは、依然として行バッファ(Row Buffer)に位置するため、メモリコントローラは、第1のメモリアクセス要求のプリチャージ段階及び第2のメモリアクセス要求のアクティベート操作段階を実行することなく、第2のメモリアクセス要求の読み取り/書き込みコマンド及び列アドレスを直接送信することができる。
(2)行ミス(Row Miss):2つのメモリアクセス要求により操作される必要があるデータが同じbank内の異なる行に位置する。第1のメモリアクセス要求の読み取り/書き込み(Read/Write)段階が実行された後に、行バッファをクローズするためにプリチャージ操作(例えば、Pre-Chargeコマンド)が実行される必要があり、次に、行データを行バッファに読み取るために、アクティベート操作(例えば、Activateコマンド)が第2のメモリアクセス要求の行に対して実行され、最後に、第2のメモリアクセス要求の読み取り/書き込みコマンド及び列アドレスが送信されることができる。
具体的には、生成されたN+1個のアクセスアドレスは互いに異なる。これは、N+1個のアクセスアドレスに従って生成されたメモリアクセス要求がMSHR(Miss-status Handling Register)内でプロセッサによりマージされるのを妨げる。N+1個のアクセスアドレスは同じ物理アドレスを指す。具体的な実現では、N+1個のアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間にマッピング関係が存在する。
551.アクセス対象のデータの記憶アドレスAddr_Virtualに従って仮想対物理アドレス変換が実行され、アクセス対象のデータの記憶アドレスは仮想アドレスであり、これにより、仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得する。
具体的には、行ミスのあるN+1個のメモリアクセス要求を生成する目的で、N+1個のメモリアクセス要求のアドレスが同じbankアドレス及び異なる行アドレスを含むことが確保される必要がある。
前述の実施例では、コンピュータ内のプロセッサシステムにより拡張メモリ内のアクセス対象のデータにアクセスするプロセスにおいて、プロセッサは、N+1個のメモリアクセス要求を生成し、生成されたN+1個のメモリアクセス要求に含まれるアクセスアドレスは、同じbankアドレス及び異なる行アドレスを含み、これにより、プロセッサに統合されたメモリコントローラは、N+1個のメモリアクセス要求を実行するときに、行ミスのあるメモリアクセス要求をトリガーする。行ミスのあるN+1個のメモリアクセス要求を実行するプロセスにおいて、拡張メモリコントローラは、この処理遅延に基づいて拡張メモリからアクセス対象のデータを読み取ることができ、最後に、アクセス対象のデータをプロセッサシステムに返信する。前述の実現方式では、アクセス対象のデータが指定された遅延範囲内に返信されることができないという問題を解決するために、行ミスのあるメモリアクセス要求を実行するプロセスにおける遅延が有効に使用される。
図7は、拡張メモリコントローラがプロセッサシステムにより送信されたN+1個のメモリアクセス要求を受信した後の処理プロセスを示す。拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含む。コンピュータ内のプロセッサシステムは、メモリバスを使用することにより拡張メモリコントローラに接続される。コンピュータ内のプロセッサシステムが拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、この方法は以下のステップを含む。
790.N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
さらに、拡張メモリコントローラは、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定する、拡張メモリコントローラにより、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って物理アドレスを決定することは、拡張メモリコントローラにより、前述の物理アドレスを取得するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせることを含む。
さらに、ステップ750において、拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラがメモリアクセス要求を受信する毎に、この方法は、拡張メモリコントローラにより、物理アドレスを取得するために、全てのメモリアクセス要求で搬送されたアクセスアドレスに従ってマッピング関係を問い合わせ、物理アドレスに従ってデータバッファ内のレコードを問い合わせ、レコード内の有効性フィールドが無効であると決定したときに、特定の応答メッセージを生成することを更に含む。
さらに、ステップ770において、拡張メモリコントローラにより、アクセス対象のデータをデータバッファに書き込むことは、拡張メモリコントローラにより、物理アドレスに対応するレコードを求めてデータバッファを検索し、レコード内のデータフィールドをアクセス対象のデータに設定し、有効性フィールドを有効に設定することを含む。
前述の実現プロセスにおいて、第1のメモリアクセス要求を受信した後に、拡張メモリコントローラは、アクセス対象のデータを読み取るための要求を拡張メモリに送信する。拡張メモリからアクセス対象のデータを読み取るプロセスにおいて、拡張メモリコントローラは、メモリバスプロトコルで指定されたアクセス遅延内に、受信したメモリアクセス要求についての特別な応答メッセージを返信し、これにより、プロセッサは、行ミスの要件に従って次のメモリアクセス要求を送信することができ、拡張メモリコントローラは、読み取られたデータをデータバッファに一時的に記憶し、次のメモリアクセス要求の実行サイクルにおいてアクセス対象のデータをプロセッサシステムに返信する。前述のプロセスにおいて、行ミスのあるN+1個のメモリアクセス要求の実行により引き起こされる遅延は、拡張メモリコントローラにより拡張メモリからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する遅延を有効に補償するために使用される。
[I.インオーダー実行方式(図8参照)]
図6における拡張メモリを含むメモリ空間によれば、1つのみのシャドウ空間が仮想化される必要があることが習得され得る。図6が一例として使用される。図2におけるシステムの構造図を参照して、アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、2つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。2つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のデータバッファに記録される。
850.メモリバスプロトコルで指定された遅延の後に、拡張メモリコントローラは、第2のメモリアクセス要求を受信し、要求のアクセスアドレスを取得するために要求を解析し、要求の行アドレスがiであると識別したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
具体的には、アクセス対象のデータをデータバッファに読み取った後に、拡張メモリコントローラは、プロセッサにより送信された第2のアクセス要求を受信し、アクセスアドレスの行アドレスを取得するために要求を解析し、要求の行アドレスがi、すなわち、拡張メモリの実際のメモリ空間に位置するアドレスであると決定したときに、拡張メモリコントローラは、データバッファからアクセス対象のデータを読み取り、アクセス対象のデータをプロセッサシステムに返信する。
事前に合意された前述のアクセス順序は、さらに、「実際のメモリ空間のアドレスを最初にアクセスし、次にシャドウ空間のアドレスをアクセスする」というような順序でもよく、或いは、さらに、2つのメモリアクセス要求に含まれるアクセスアドレスがマッピング関係を有しており且つ同じ物理アドレスを指すことが確保されている場合、2つのメモリアクセス要求に含まれるアドレスが共にシャドウ空間のアドレス(すなわち、Addr1及びAddr2)であることが理解され得る。
アクセス対象のデータが拡張メモリ内の第i行に位置し、アクセス対象のデータの行アドレスがiであることが仮定される。前述の方法によれば、2つの生成されるアクセスアドレスの行アドレスは、i及びi+Mである。2つのアクセスアドレスのbankアドレスは同じになるように設定される。前述の生成されたアクセスアドレスは、拡張メモリコントローラ内のデータバッファに記録される。
具体的には、2つのメモリアクセス要求内のアクセスアドレスは互いに異なる。これは、2つのアクセスアドレスに従って生成されたメモリアクセス要求がMSHR(Miss-status Handling Register)内でプロセッサによりマージされるのを妨げる。2つのアクセスアドレスは同じ物理アドレスを指す。これは、2つのアクセスアドレスと物理アドレスとの間にマッピング関係が存在することを示す。
具体的には、ステップ950において、拡張メモリコントローラがアクセス対象のデータのレコードをデータバッファ内に見つけることができなかったときに、受信したメモリアクセス要求が第1のメモリアクセス要求であると決定される。この場合、アクセスアドレスが物理アドレスである読み取り要求が生成され、拡張メモリに送信され、読み取り要求は、アクセス対象のデータを読み取るために使用される。このプロセスにおいて、拡張メモリコントローラは、特別な識別子(0x5a5a5a5a5a5a5a5a等)を更に生成し、特別な識別子をプロセッサに送信し、これにより、プロセッサは、特別な識別子に従って、アクセス対象のデータがデータバッファに読み取られていないと決定する。
具体的には、拡張メモリコントローラがアクセス対象のデータのレコードを見つけたとき、これは、メモリアクセス要求が第2のメモリアクセス要求であることを示し、データは、データバッファから読み取られ、プロセッサシステムに返信される。
さらに、実行モジュール1020は、全てのN+1個のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を予め設定し、拡張メモリ内のアクセス対象のデータの物理アドレスを取得するために、第1のメモリアクセス要求で搬送されたアクセスアドレスに従って、第1のメモリアクセス要求に含まれるアクセスアドレスと拡張メモリ内のアクセス対象のデータの物理アドレスとの間のマッピング関係を問い合わせるように更に構成される。
本発明は、拡張メモリを含むコンピュータシステムを更に提供する。図2に示すように、コンピュータシステムは、プロセッサシステム201と、システムメモリ202と、拡張メモリコントローラのデバイスの実施例に記載の拡張メモリコントローラ203と、拡張メモリ204とを含む。拡張メモリコントローラ203は、拡張メモリ204に接続され、拡張メモリコントローラ203は、メモリインタフェースを使用することによりプロセッサシステム201に接続される。プロセッサシステム201は、システムメモリ202に接続され、システムメモリ202は、実可能命令を記憶するように構成される。プロセッサシステム201は、システムメモリ202に記憶された実行可能命令を実行するように構成され、これにより、プロセッサシステム201は、コンピュータにより拡張メモリにアクセスする方法の実施例に示す、コンピュータにより拡張メモリシステム内の拡張メモリにアクセスするための方法を実行する。

Claims (20)

  1. 拡張メモリにアクセスするための方法であり、コンピュータは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、拡張メモリコントローラと拡張メモリとを含み、前記コンピュータは、前記拡張メモリに記憶されたアクセス対象のデータにアクセスする必要がある方法であって、
    前記拡張メモリコントローラにより、前記コンピュータ内のプロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するステップであり、全ての前記メモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、前記物理アドレスは、前記拡張メモリ内の前記アクセス対象のデータの記憶アドレスであり、N≧1且つNは整数であるステップと、
    前記拡張メモリコントローラにより、前記N+1個のメモリアクセス要求のうち第1のメモリアクセス要求を受信したときに、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定し、前記アクセス対象のデータを取得するための読み取り要求を前記拡張メモリに送信し、特定の応答メッセージを前記プロセッサシステムに返信するステップであり、前記読み取り要求は、物理アドレスを含むステップと、
    前記拡張メモリにより返信される前記アクセス対象のデータを受信する前に、前記N+1個のメモリアクセス要求のうち前記第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記拡張メモリコントローラにより、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを前記プロセッサシステムに返信するステップと、
    前記拡張メモリコントローラにより、前記拡張メモリにより返信された前記アクセス対象のデータを受信した後に、前記アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージを前記プロセッサシステムに返信するのを停止するステップと、
    前記拡張メモリコントローラにより、前記N+1個のメモリアクセス要求のうち他のメモリアクセス要求を受信したときに、前記データバッファから前記アクセス対象のデータを読み取り、前記アクセス対象のデータを前記プロセッサシステムに返信するステップと
    を含む方法。
  2. 全ての前記N+1個のメモリアクセス要求内の前記アクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む、請求項1に記載の方法。
  3. 前記拡張メモリコントローラにより、全ての前記N+1個のメモリアクセス要求に含まれる前記アクセスアドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間のマッピング関係を予め設定するステップを更に含み、
    前記拡張メモリコントローラにより、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定することは、
    前記拡張メモリコントローラにより、前記物理アドレスを取得するために、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせることを含む、請求項1又は2に記載の方法。
  4. 前記拡張メモリコントローラにより、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定した後に、
    前記拡張メモリコントローラにより、前記データバッファにレコードを作成するステップであり、前記レコードは、タグフィールド及びデータフィールドを含み、前記タグフィールドを前記物理アドレスに設定するステップを更に含む、請求項3に記載の方法。
  5. 前記レコードは、有効性フィールドを更に含み、
    前記拡張メモリコントローラにより、前記有効性フィールドを無効に設定するステップを更に含む、請求項4に記載の方法。
  6. 前記N+1個のメモリアクセス要求のうち前記第1のメモリアクセス要求の後のメモリアクセス要求が受信される毎に、
    前記拡張メモリコントローラにより、前記物理アドレスを取得するために、全ての前記メモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせるステップと、
    前記物理アドレスに従って前記データバッファ内の前記レコードを問い合わせ、前記レコード内の前記有効性フィールドが無効であると決定したときに、前記特定の応答メッセージを生成するステップと
    を更に含む、請求項5に記載の方法。
  7. 前記拡張メモリコントローラにより、前記拡張メモリにより返信された前記アクセス対象のデータを受信した後に、前記アクセス対象のデータをデータバッファに書き込むことは、
    前記拡張メモリコントローラにより、前記物理アドレスに対応する前記レコードを求めて前記データバッファを検索し、前記レコード内の前記データフィールドを前記アクセス対象のデータに設定し、前記有効性フィールドを有効に設定することを含む、請求項5に記載の方法。
  8. 拡張メモリにアクセスするための方法であり、コンピュータは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、拡張メモリコントローラと前記拡張メモリとを含む方法であって、前記コンピュータが前記拡張メモリに記憶されたアクセス対象のデータにアクセスする必要があるときに、
    前記コンピュータ内のプロセッサシステムにより、前記アクセス対象のデータの記憶アドレスを受信するステップと、
    前記プロセッサシステムにより、前記アクセス対象のデータの前記記憶アドレスに従ってN+1個のメモリアクセス要求を生成するステップであり、前記N+1個のメモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、前記物理アドレスは、前記拡張メモリ内の前記アクセス対象のデータの前記記憶アドレスであり、N≧1且つNは整数であるステップと、
    前記プロセッサシステムにより、前記N+1個のメモリアクセス要求を前記拡張メモリコントローラに送信するステップと
    を含む方法。
  9. 前記プロセッサシステムにより、前記アクセス対象のデータの前記記憶アドレスに従ってN+1個のメモリアクセス要求を生成する前に、
    前記コンピュータにより前記拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定するステップであり、前記コンピュータにより前記拡張メモリからデータを取得するための前記遅延パラメータは、以下のパラメータ、すなわち、前記メモリアクセス要求を前記拡張メモリコントローラから前記拡張メモリに送信する遅延tPD1、前記メモリアクセス要求により読み取られたデータを前記拡張メモリから前記拡張メモリコントローラに送信する遅延tPD2、又は前記プロセッサシステムにより送信される2つの連続するメモリアクセス要求の間の時間間隔T_Intervalのうちいずれか1つ又はいずれかの組み合わせを含むステップを更に含む、請求項8に記載の処理方法。
  10. 前記コンピュータにより前記拡張メモリからデータを取得するための遅延パラメータに従って値Nを決定することは、
    前記値Nを決定し、N≧[(tPD1+tPD2)/T_Interval]且つ[*]が丸め関数であることを含む、請求項9に記載の処理方法。
  11. 2つの連続するメモリアクセス要求の間の前記時間間隔T_Intervalは、 tGAPmin=tRCD+tRTP+tRP又はT_Fenceである、請求項9又は10に記載の処理方法。
  12. 前記プロセッサシステムにより、前記アクセス対象のデータの前記記憶アドレスに従ってN+1個のメモリアクセス要求を生成することは、
    前記アクセス対象のデータの前記記憶アドレスAddr_Virtualに従って仮想対物理アドレス変換を実行し、前記アクセス対象のデータの前記記憶アドレスは仮想アドレスであり、これにより、前記仮想アドレスAddr_Virtualに対応する物理アドレスAddr_Physicalを取得し、
    前記物理アドレスAddr_Physicalに従ってN個のアクセスアドレスAddr_Physical(n)を生成し、nは整数且つ1≦n≦Nであり、前記N個のアクセスアドレスの行アドレスはAddr_Physical_Row(n)=n*M+Addr_Physical_Rowであり、nは整数且つ1≦n≦Nであり、Mは前記拡張メモリに含まれるメモリ行の数量であり、Addr_Physical_Rowは前記物理アドレスAddr_Physicalの行アドレスであり、前記N個の物理アドレスのそれぞれの前記行アドレス以外のアドレスは前記物理アドレスAddr_Physicalの前記行アドレス以外のアドレスと同じであり、
    前記プロセッサシステムにより、Addr_Physical及びAddr_Physical(n)に従って前記N+1個のメモリアクセス要求を生成し、nは整数且つ1≦n≦Nであることを含む、請求項8乃至11のうちいずれか1項に記載の処理方法。
  13. コンピュータ内のプロセッサシステムによる拡張メモリ内のアクセス対象のデータへのアクセスに適用される拡張メモリコントローラであり、前記コンピュータ内の前記プロセッサシステムは、メモリバスを使用することにより拡張メモリシステムに接続され、前記拡張メモリシステムは、前記拡張メモリコントローラと前記拡張メモリとを含む拡張メモリコントローラであって、
    前記コンピュータ内の前記プロセッサシステムにより逐次送信されたN+1個のメモリアクセス要求を受信するように構成された受信モジュールであり、全ての前記メモリアクセス要求に含まれるアクセスアドレスは互いに異なり、同じ物理アドレスを指し、前記物理アドレスは、前記拡張メモリ内の前記アクセス対象のデータの記憶アドレスであり、N≧1且つNは整数である受信モジュールと、
    前記N+1個のメモリアクセス要求のうち第1のメモリアクセス要求が受信されたときに、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスを決定し、前記物理アドレスは、前記拡張メモリ内の前記アクセス対象のデータの前記記憶アドレスであり、前記アクセス対象のデータを取得するための読み取り要求を生成し、特定の応答メッセージを生成し、前記読み取り要求は、前記物理アドレスを含み、
    前記拡張メモリにより返信される前記アクセス対象のデータが受信される前に、前記N+1個のメモリアクセス要求のうちメモリアクセス要求が受信される毎に、メモリバスプロトコルで指定されたアクセス遅延内に特定の応答メッセージを生成し、
    前記拡張メモリにより返信された前記アクセス対象のデータが受信された後に、前記アクセス対象のデータをデータバッファに書き込み、特定の応答メッセージを前記プロセッサシステムに返信するのを停止し、
    前記N+1個のメモリアクセス要求のうち他のメモリアクセス要求が受信されたときに、前記データバッファから前記アクセス対象のデータを読み取り、前記アクセス対象のデータを前記送信モジュールに送信する
    ように構成された実行モジュールと、
    前記読み取り要求を前記拡張メモリに送信し、前記特定の応答メッセージを前記プロセッサシステムに返信し、
    前記拡張メモリにより返信される前記アクセス対象のデータが受信される前に、前記N+1個のメモリアクセス要求のうち前記第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記メモリバスプロトコルで指定された前記アクセス遅延内に前記特定の応答メッセージを前記プロセッサシステムに返信し、
    前記実行モジュールから前記アクセス対象のデータを受信し、前記アクセス対象のデータを前記プロセッサシステムに送信する
    ように構成された前記送信モジュールと
    を含む拡張メモリコントローラ。
  14. 全ての前記N+1個のメモリアクセス要求内の前記アクセスアドレスは、同じbankアドレス及び異なる行アドレスを含む、請求項13に記載の拡張メモリコントローラ。
  15. 前記実行モジュールは、
    全ての前記N+1個のメモリアクセス要求に含まれる前記アクセスアドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間のマッピング関係を予め設定し、
    前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスを取得するために、前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って、前記第1のメモリアクセス要求に含まれる前記アドレスと前記拡張メモリ内の前記アクセス対象のデータの前記物理アドレスとの間の前記マッピング関係を問い合わせるように更に構成される、請求項13又は14に記載の拡張メモリコントローラ。
  16. 前記実行モジュールは、
    前記第1のメモリアクセス要求で搬送された前記アクセスアドレスに従って前記物理アドレスが決定された後に、前記データバッファにレコードを作成し、前記レコードは、タグフィールド及びデータフィールドを含み、前記タグフィールドを前記物理アドレスに設定するように更に構成される、請求項15に記載の拡張メモリコントローラ。
  17. 前記レコードは、有効性フィールドを更に含み、
    前記実行モジュールは、前記レコード内の前記有効性フィールドを無効に設定するように更に構成される、請求項16に記載の拡張メモリコントローラ。
  18. 前記実行モジュールは、
    前記N+1個のメモリアクセス要求のうち前記第1のメモリアクセス要求の後の他のメモリアクセス要求が受信される毎に、前記物理アドレスを取得するために、全ての前記メモリアクセス要求で搬送された前記アクセスアドレスに従って前記マッピング関係を問い合わせ、
    前記物理アドレスに従って前記データバッファ内の前記レコードを問い合わせ、
    前記レコード内の前記有効性フィールドが無効であると決定されたときに、前記特定の応答メッセージを生成するように更に構成される、請求項17に記載の拡張メモリコントローラ。
  19. 前記実行モジュールは、前記拡張メモリにより返信された前記アクセス対象のデータが受信された後に、前記物理アドレスに対応する前記レコードを求めて前記データバッファを検索し、前記レコード内の前記データフィールドを前記アクセス対象のデータに設定し、前記有効性フィールドを有効に設定するように更に構成される、請求項17に記載の拡張メモリコントローラ。
  20. 拡張メモリを含むコンピュータシステムであって、
    プロセッサシステムと、
    メインメモリと、
    請求項13乃至19のうちいずれか1項に記載の拡張メモリコントローラと、
    前記拡張メモリと
    を含み、
    前記拡張メモリコントローラは、前記拡張メモリに接続され、前記拡張メモリコントローラは、メモリインタフェースを使用することにより前記プロセッサシステムに接続され、前記プロセッサシステムは、前記メインメモリに接続され、前記メインメモリは、プログラムを記憶し、実行命令を記憶するように構成され、前記プロセッサシステムは、前記メインメモリに記憶された前記実行命令を実行するように構成され、これにより、前記プロセッサシステムは、請求項8乃至12のうちいずれか1項に従って、前記コンピュータにより前記拡張メモリシステム内の前記拡張メモリにアクセスするための方法を実行するコンピュータシステム。
JP2017555264A 2015-04-23 2016-02-03 拡張メモリにアクセスするための方法、デバイス及びシステム Active JP6685323B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510198452.X 2015-04-23
CN201510198452.XA CN106155577B (zh) 2015-04-23 2015-04-23 扩展内存的访问方法、设备以及系统
PCT/CN2016/073304 WO2016169318A1 (zh) 2015-04-23 2016-02-03 扩展内存的访问方法、设备以及系统

Publications (2)

Publication Number Publication Date
JP2018517205A true JP2018517205A (ja) 2018-06-28
JP6685323B2 JP6685323B2 (ja) 2020-04-22

Family

ID=57142912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017555264A Active JP6685323B2 (ja) 2015-04-23 2016-02-03 拡張メモリにアクセスするための方法、デバイス及びシステム

Country Status (9)

Country Link
US (2) US10545672B2 (ja)
EP (2) EP3279788B1 (ja)
JP (1) JP6685323B2 (ja)
KR (1) KR102168017B1 (ja)
CN (2) CN110059020B (ja)
BR (1) BR112017022547B1 (ja)
CA (1) CA2983479C (ja)
SG (1) SG11201708477UA (ja)
WO (1) WO2016169318A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统
CN108228076B (zh) * 2016-12-14 2020-10-16 华为技术有限公司 访问磁盘的方法和主机
US10733100B2 (en) 2017-06-12 2020-08-04 Western Digital Technologies, Inc. Method and apparatus for classifying and buffering write commands
CN107590099B (zh) * 2017-08-31 2021-04-20 深圳市共济科技股份有限公司 一种多主机访问从机的方法、扩展装置及存储介质
CN109783395B (zh) * 2017-11-15 2023-03-31 阿里巴巴集团控股有限公司 内存访问方法、交换芯片、内存模组及电子设备
US10909046B2 (en) 2018-06-15 2021-02-02 Micron Technology, Inc. Memory access determination
CN109308190B (zh) * 2018-07-09 2023-03-14 北京中科睿芯科技集团有限公司 基于3d堆栈内存架构的共享行缓冲系统及共享行缓冲器
CN111767008A (zh) * 2018-07-17 2020-10-13 华为技术有限公司 处理i/o请求的方法及设备
CN109284231B (zh) * 2018-07-24 2023-05-23 江苏微锐超算科技有限公司 内存访问请求的处理方法、装置及内存控制器
CN109189700A (zh) * 2018-10-19 2019-01-11 郑州云海信息技术有限公司 一种扩展内存装置、扩展内存系统、扩展内存的访存方法
GB2578600B (en) * 2018-10-31 2021-10-13 Advanced Risc Mach Ltd Memory transaction request management
CN111405603B (zh) * 2019-01-02 2023-05-09 中国移动通信有限公司研究院 一种时延获取方法、测试装置以及计算机存储介质
CN112306918B (zh) * 2019-07-31 2024-06-14 北京百度网讯科技有限公司 数据访问方法、装置、电子设备和计算机存储介质
CN113377704B (zh) * 2021-06-11 2022-04-12 上海壁仞智能科技有限公司 人工智能芯片以及数据操作方法
EP4365748A4 (en) * 2021-07-23 2024-10-09 Huawei Tech Co Ltd DATA ACCESS METHOD AND ASSOCIATED DEVICE
US11600312B1 (en) * 2021-08-16 2023-03-07 Micron Technology, Inc. Activate commands for memory preparation
CN113704143A (zh) * 2021-08-27 2021-11-26 湖南国科微电子股份有限公司 数据读取方法、装置及计算机设备
CN114721726B (zh) * 2022-06-10 2022-08-12 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115757196B (zh) * 2022-11-09 2023-09-01 超聚变数字技术有限公司 内存、访问内存方法及计算设备
CN115686153B (zh) * 2022-12-29 2023-03-31 浪潮电子信息产业股份有限公司 一种内存模组及一种电子设备
CN115827504B (zh) * 2023-01-31 2023-07-11 南京砺算科技有限公司 多核心图形处理器的数据存取方法、图形处理器及介质
WO2024182288A1 (en) * 2023-02-27 2024-09-06 Kove Ip, Llp Cache-coherent memory extension with cpu stall avoidance
CN117851291B (zh) * 2024-03-07 2024-06-21 北京象帝先计算技术有限公司 内存访问系统、电子组件及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186740A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd メモリ制御装置、及びメモリ制御方法
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
WO2008084681A1 (ja) * 2006-12-25 2008-07-17 Panasonic Corporation メモリ制御装置、メモリ装置およびメモリ制御方法
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2010250727A (ja) * 2009-04-20 2010-11-04 Panasonic Corp メモリ制御回路
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5042003A (en) * 1988-07-06 1991-08-20 Zenith Data Systems Corporation Memory usage system
JP2513024B2 (ja) * 1989-03-16 1996-07-03 日本電気株式会社 拡張記憶アドレス制御方式
JPH05143438A (ja) * 1991-11-19 1993-06-11 Nec Software Kansai Ltd 拡張メモリ管理方式
JP2002063069A (ja) * 2000-08-21 2002-02-28 Hitachi Ltd メモリ制御装置、データ処理システム及び半導体装置
JP3513147B2 (ja) * 2002-05-29 2004-03-31 株式会社ハギワラシスコム Usbストレージデバイス及びその制御装置
KR100420444B1 (ko) * 2003-06-03 2004-02-26 주식회사 넥스트웨이 외장형 저장장치
US7673345B2 (en) * 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
CN100444133C (zh) * 2006-06-13 2008-12-17 深圳市研祥智能科技股份有限公司 计算机访问扩充内存的方法
JP2013069210A (ja) * 2011-09-26 2013-04-18 Toshiba Corp メモリシステム
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9281036B2 (en) * 2013-01-08 2016-03-08 Qualcomm Incorporated Memory device having an adaptable number of open rows
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
CN104346293B (zh) * 2013-07-25 2017-10-24 华为技术有限公司 混合内存的数据访问方法、模块、处理器及终端设备
CN104375946B (zh) * 2013-08-16 2018-04-20 华为技术有限公司 一种数据处理的方法及装置
CN103488436B (zh) * 2013-09-25 2017-04-26 华为技术有限公司 内存扩展系统及方法
CN104388436B (zh) 2014-10-29 2016-08-24 中南民族大学 一种水稻诱导抗病基因OsAAA1及其应用
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003186740A (ja) * 2001-12-19 2003-07-04 Matsushita Electric Ind Co Ltd メモリ制御装置、及びメモリ制御方法
JP2004234461A (ja) * 2003-01-31 2004-08-19 Sony Corp 情報処理装置および方法、並びにプログラム
WO2008084681A1 (ja) * 2006-12-25 2008-07-17 Panasonic Corporation メモリ制御装置、メモリ装置およびメモリ制御方法
WO2009125572A1 (ja) * 2008-04-08 2009-10-15 パナソニック株式会社 メモリ制御回路及びメモリ制御方法
JP2010250727A (ja) * 2009-04-20 2010-11-04 Panasonic Corp メモリ制御回路
JP2011118501A (ja) * 2009-12-01 2011-06-16 Yokogawa Electric Corp データ転送システム

Also Published As

Publication number Publication date
EP3279788A1 (en) 2018-02-07
KR102168017B1 (ko) 2020-10-20
EP3279788A4 (en) 2018-04-04
US20180039424A1 (en) 2018-02-08
EP3674877A1 (en) 2020-07-01
CA2983479A1 (en) 2016-10-27
US20200150872A1 (en) 2020-05-14
SG11201708477UA (en) 2017-11-29
BR112017022547A2 (pt) 2018-10-16
JP6685323B2 (ja) 2020-04-22
BR112017022547B1 (pt) 2023-10-10
WO2016169318A1 (zh) 2016-10-27
CN110059020A (zh) 2019-07-26
CN106155577B (zh) 2019-03-26
US10545672B2 (en) 2020-01-28
CN110059020B (zh) 2024-01-30
EP3279788B1 (en) 2019-08-21
CA2983479C (en) 2020-12-22
KR20170134704A (ko) 2017-12-06
CN106155577A (zh) 2016-11-23
EP3674877B1 (en) 2021-12-29
US11237728B2 (en) 2022-02-01

Similar Documents

Publication Publication Date Title
JP6685323B2 (ja) 拡張メモリにアクセスするための方法、デバイス及びシステム
CN110275841B (zh) 访问请求处理方法、装置、计算机设备和存储介质
US10002085B2 (en) Peripheral component interconnect (PCI) device and system including the PCI
CN106326140B (zh) 数据拷贝方法、直接内存访问控制器及计算机系统
JP2017220237A (ja) メモリモジュール、これを含むシステム及びその動作方法
JP4813485B2 (ja) バーストリードライト動作による処理装置
US10079916B2 (en) Register files for I/O packet compression
US8738890B2 (en) Coupled symbiotic operating system
KR20180007374A (ko) 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US20220179792A1 (en) Memory management device
JP2021507414A (ja) 連動メモリデバイスに対するメモリ要求のスケジューリング
WO2018028629A1 (en) Pattern based preload engine
US11055220B2 (en) Hybrid memory systems with cache management
CN105653478B (zh) 串行闪存控制器、串行闪存控制方法及串行闪存控制系统
JP2018500697A (ja) トランザクションコンフリクトを検出するための方法および装置、ならびにコンピュータシステム
US20120310621A1 (en) Processor, data processing method thereof, and memory system including the processor
JP2007172606A (ja) 変換テーブルエミュレーションを利用したデータ処理システム及びデータ処理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171207

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200331

R150 Certificate of patent or registration of utility model

Ref document number: 6685323

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250