JP6715920B2 - 増大された効率のためのインテリジェントメモリアーキテクチャ - Google Patents

増大された効率のためのインテリジェントメモリアーキテクチャ Download PDF

Info

Publication number
JP6715920B2
JP6715920B2 JP2018504271A JP2018504271A JP6715920B2 JP 6715920 B2 JP6715920 B2 JP 6715920B2 JP 2018504271 A JP2018504271 A JP 2018504271A JP 2018504271 A JP2018504271 A JP 2018504271A JP 6715920 B2 JP6715920 B2 JP 6715920B2
Authority
JP
Japan
Prior art keywords
data
coding
banks
memory
bank
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.)
Active
Application number
JP2018504271A
Other languages
English (en)
Other versions
JP2018525737A (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 JP2018525737A publication Critical patent/JP2018525737A/ja
Application granted granted Critical
Publication of JP6715920B2 publication Critical patent/JP6715920B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0611Improving I/O performance in relation to response time
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[関連出願への相互参照]
本出願は、2015年7月28日に出願され、発明の名称を「増大された効率のためのインテリジェントメモリアーキテクチャ」とする米国非仮特許出願第14/810,895号による優先権を主張し、これはあたかもその全体において再現されているかのごとく参照により本明細書に組み込まれる。
メモリアクセスはコンピュータシステムにおけるプログラム実行の極めて重要な部分である。一般的には、1つまたは複数のプロセッサ(中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、ハードウェアアクセラレータ(HAC)またはその他のプロセッサなど)は、メモリコントローラを介して様々なメモリバンクにアクセスする。近年マルチコアプロセッサの台頭がみられ、そこではメモリコントローラは複数の異なるプロセッサまたはコア(またマスタープロセッサともいわれる)からメモリバンクへのアクセスを制御する。プロセッサ速度およびプロセッサの数は増加しているが、しかしながら、メモリへのアクセス速度の比例的な増加はない。具体的には、複数のプロセッサが同時またはほぼ同時に同じメモリバンクへのアクセスを試みると、プロセッサの1つは、他のプロセッサからの要求がサービスされる間、待機する。プロセッサの数が増加するにつれて、アクセスの数および潜在的に競合するアクセスもまた増加し、メモリアクセス時間は悪化したままになる。
図1は、例示的実施形態に係る、メモリアクセスを制御するシステムを説明するブロック図である。 図2は、例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。 図3は、例示的実施形態に係る、インターバンクコーディングスキームおよびイントラバンクコーディングスキームの組み合わせを示すブロック図である。 図4は、代替的な例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。 図5は、別の代替的な例示的実施形態に係る、インターバンクコーディングスキームを示すブロック図である。 図6は、例示的実施形態に係る、アクセススケジューラを、より詳細に、説明するブロック図である。 図7は、例示的実施形態に係る、読み出し要求を処理する方法を説明する流れ図である。 図8は、例示的実施形態に係る、書き込み要求を処理する方法を説明する流れ図である。 図9は、例示的実施形態に係る、メモリ内にバッファを割り当てる方法を説明する流れ図である。 図10は、例示的実施形態に係る、コーディングバンクのグループをスケジューリングおよび準備する方法を説明する流れ図である。 図11は、例示的実施形態に係るモバイル装置を説明するブロック図である。 図12は、コンピュータシステムの例示的な形式におけるマシンであって、ここに論じた方法論の任意の1つまたは複数をマシンに行わせるために命令がその内部で実行されることができるマシンのブロック図である。
以下の記載においては、添付の図面が参照され、それらはこの一部であり、一例として、実施されてもよい具体的な実施形態が示されている。これらの実施形態は、当業者がここに開示された主題を実施することができるように十分詳細に記載されており、他の実施形態が利用されてもよいこと、および、本開示の範囲を逸脱することなく構造的、論理的または電気的変更がなされてもよいことが理解されるべきである。例示的実施形態の以下の記載は、したがって、限定的な意味でとらえられるべきではなく、本開示の範囲は添付の請求項によって画定される。
ここに開示された機能またはアルゴリズムは、1つの実施形態において、ソフトウェアまたはソフトウェアおよび人間により実現される手続きの組み合わせにおいて実装されてもよい。ソフトウェアは、1つまたは複数の非一時的メモリまたは、ローカルまたはネットワーク化された、他のタイプのハードウェアベースの記憶装置といったコンピュータにより読み取り可能な媒体またはコンピュータにより読み取り可能な記憶装置に格納されたコンピュータにより実行可能な命令からなるものであってもよい。さらに、そのような機能はモジュールに対応し、それらは、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組み合わせであってもよい。複数の機能が1つまたは複数のモジュールにおいて必要に応じて行われてもよく、記載された実施形態は単に例である。ソフトウェアは、デジタルシグナルプロセッサ、特定用途向け集積回路(ASIC)、マイクロプロセッサ、または、パーソナルコンピュータ、サーバもしくはその他のコンピュータシステムといったコンピュータシステム上で動作する他のタイプのプロセッサで実行されてもよい。
例示的実施形態においては、複数のプロセッサのメモリアクセス効率は、追加的な冗長なメモリバンクを利用してパラレリズムを増加させることによって増加される。インテリジェントなメモリシステムは、符号化された形式にて格納されたデータの冗長性を付加することによって強化される。様々なプロセッサ(「マスター」ともいう)からのアクセス競合は、コーディングバンクとよばれる1つまたは複数の追加的なメモリバンクの利用によって低減されてもよい。格納された追加的なデータは、追加的なストレージスペースやアクセスオーバーヘッドを最小化しつつ格納されたデータについての冗長性を創出するために、圧縮された形式にてコーディングバンクに格納されてもよい。冗長なデータは、メモリバンクへのアクセスを正規化するために用いられてもよく、それにより、システム全体の効率性が増加される。
図1は、例示的実施形態に係る、メモリアクセスを制御するシステム100を示すブロック図である。システム100は、複数のマスターコア102A〜102Nを含む。各マスターコア102A〜102Nは、プロセッサであってもよい。例示的実施形態においては、各マスターコア102A〜102Nは、マスターコアプロセッサ手段として実装される。幾つかの例示的実施形態においては、マスターコア102A〜102Nのすべてが単一のチップの上で動作し、単一のプロセッサの複数のコアとして考えられてもよい。他の例示的実施形態においては、これらのマスターコア102A〜102Nは、複数のチップまたは回路にわたって配置されていてもよい。アーキテクチャに関わらず、メモリバンク104A〜104Nへのアクセスはメモリコントローラ106によって制御される。幾つかの例示的実施形態においては、実際には複数のメモリコントローラ106が存在し、そこでは各メモリコントローラ106が個々のメモリバンクを制御することに留意すべきである。
マスターコア102A〜102Nは、インターコネクト108を介して共有メモリコントローラ106と通信する。インターコネクトは、1つまたは複数のバス、1つまたは複数のネットワーク(パケット交換網など)、または、バスおよびネットワークの何らかの組み合わせをもって実現されてもよい。インターコネクト108における様々なバスのバス幅は、他のバスと同じであってもなくてもよい。例えば、インターコネクトにおける幾つかのバスは128ビット幅であってもよく、これに対して他のものは256ビット幅である。このように、一例として1つのマスターコア102A〜102Nが128バス上で通信してもよく、これに対して別のマスターは256ビットバス上で通信する。共有メモリコントローラ106は、1つの可能性として、マスターコア102A〜102Nの1つまたは複数に直接的に接続されていてもよいことに留意されたい。また、インターコネクト108における様々なバスおよびネットワークは、同じまたは異なるプロトコルに準拠していてもよい。1つの例示的実施形態においては、マスターコア102A〜102Nの1つまたは複数は、共有メモリコントローラ106へのポイントツーポイント直接接続にて構成されている。これが、ビートレベルアービトレーションの実施形態を利用した際に高いパフォーマンスを実現するのに役立つのが可能である。
図1においては、すべてのマスターコア102A〜102N、データバンク104A〜104Nおよびコーディングバンク110A〜110Nを含む共有メモリならびに共有メモリコントローラ106は、共通の周波数でクロックされることができ、または、独立的にクロックされることができる。また、マスターコア102A〜102N、データバンク104A〜104Nおよびコーディングバンク110A〜110Nを含む共有メモリならびに共有メモリコントローラ106は、同期的または非同期的にクロックされることができる。同期的にクロックされる場合、データバンク104A〜104Nおよびコーディングバンク110A〜110Nを含む共有メモリならびに共有メモリコントローラ106のクロック速度は、マスターコア102A〜102Nに対するクロック速度に対して比例的である。追加的には、非同期的にクロックされる場合には、各々が、異なる周波数で異なるクロック位相にてクロックされることができる。例えば、1つの例示的実施形態において、マスターコア102A〜102Nが周波数Fでクロックされていると仮定する。データバンク104A〜104Nおよびコーディングバンク110A〜110Nを含む共有メモリならびに共有メモリコントローラ106は、1/2Fでクロックされてもよい。別の例示的実施形態においては、データバンク104A〜104Nを含む共有メモリは、1/4Fでクロックされてもよく、コーディングバンク110A〜110Nは、1/2Fでクロックされてもよく、他方、共有メモリコントローラ106は1/4Fでクロックされてもよい。特定の実施形態のためのクロック速度は、パフォーマンスおよび電力の間でトレードオフとなりうるもので、デバイスをオーバークロッキングすることは概して電力の浪費であり、アンダークロッキングはレイテンシーをもたらす。
コマンド(読み取りおよび書き込み)スキャナおよびパーサー112、すべてのマスターコア102A〜102Nからのすべての読み取りおよび書き込みコマンドを取り、各コマンドをそれらの対象アドレスに基づいてアービター114内に置く。例示的実施形態においては、アービター114はアービター手段である。
メモリコントローラ106は、4つの部分、すなわち、前述したコマンドスキャナおよびパーサー112、前述したアービター114、複数のバンクキュー116A〜116Nならびにアクセススケジューラ118に分けられる。アービター114は、マスターコア102A〜102Nとのインタラクションの役割を担う。それは主として、マスターコア102A〜102Nからの要求を調停し、マスターコア102A〜102Nおよびメモリコントローラ106の間のハンドシェイキングの役割を担う。単一のアービター114が描かれているが、幾つかの例示的実施形態においては、バンク/キューの数に対応する複数のアービター114が存在し、他の例示的実施形態においては、読み取りのために1つのアービター114、および、書き込みのために別のアービター114が存在することに留意されたい。バンクキュー116A〜116Nは、特定のメモリバンク104A〜104Nに対する処理されるべき要求を保持するために用いられる。例示的実施形態においては、各バンクキュー116A〜116Nは、特定のメモリバンク104A〜104Nに対応する。特定のメモリバンク(例えばメモリバンク104B)へのアクセスが受信されると、それは、それがサービスされることができるまで対応するバンクキュー(例えばバンクキュー116B)に置かれる。本開示において用いられる用語「サービスされる」は、特定の要求がプロセッサによって処理されるプロセスを記述することを意図していることに留意すべきである。この処理は、典型的に、キューからの要求の除去(必要に応じて)、要求に対応するデータを判定すること、要求に対応するデータを取得すること、および、要求に対するレスポンスを形成および送信することを伴うであろう。
各バンクキュー116A〜116Nに対応する単一のバンクキュー116A〜116Nが本図には示されている一方、例示的実施形態においては、各バンクキュー116A〜110Nは実際には読み出しキューおよび書き込みキューを含むことにも留意すべきである。読み出しキューは対応するメモリバンク104A〜104Nから読み出すべき旨の要求を保持しており、他方、書き込みキューは、対応するメモリバンク104A〜104Nへ書き込むべき旨の要求を保持している。
アクセススケジューラ118は、各メモリサイクルに対するアクセスパターンを形成する。それはまた、以下により詳細に説明されるであろう通り、メモリコントローラ106およびメモリバンク104A〜104Nやコーディングバンク110A〜110Nの間のハンドシェイクの役割を担う。例示的実施形態においては、アクセススケジューラ118は、アクセススケジューラ手段である。
コーディングバンク110A〜110Nは、メモリバンク104A〜104Nにおけるデータの幾つかのコピーを格納するために用いられる追加のバンクである。例示的実施形態においては、これらのコピーは、特化されたエンコーディングスキームを用いて圧縮された形式で格納されている。アクセススケジューラ118は、コーディングバンク110A〜110Nを利用してアクセス効率を増大させる強化されたアクセススケジュールを作成するように設計されている。コードは一般的にコーディングバンク110A〜110N(データバンクとは別個)に格納されることに留意すべきである、しかしながら、それらは、またコーディングスキームによって、データバンクに保持されることができる。換言すれば、例示的実施形態においては、コードがデータバンクに格納されてインタリーブされるコーディングスキームが存在する。このように、本開示の目的のため、コーディングバンクの概念は、正しいコーディングスキームを用いてデータバンクに包含させられることも可能であろうところの構成体である。
例示的実施形態においては、各コーディングバンク110A〜110Nは、メモリバンク104A〜104Nのいずれよりも小さい。これは、コーディングバンク110A〜110Nを利用するのに必要な追加的なメモリの効率的な使用につながり、それにより、必要な追加的なメモリ量を最小化する。これは、例えば、各メモリバンク104A〜104Nのフルコーディングカバレッジを単純に提供するような解決策とは対照的である。
例示的実施形態においては、各コーディングバンク110A〜110Nは、メモリバンク104A〜104Nからの既存のデータの効率的符号化のために予約されている。従来は、単一のメモリバンク104A〜104Nへの複数のアクセスがマスターコア102A〜102Nの1つまたは複数によって発行されると、ストールが生成される。これらのストールはバンク競合として知られ、特定のメモリバンク104A〜104Nからの1つのみのアドレスが一度にアクセスできるという事実に起因する。例示的実施形態においては、コーディングバンク110A〜110Nは、バンク競合からのストールを緩和するのを助けるために、対応するメモリバンク104A〜104Nと同時的にアクセスされる。
コーディングバンク110A〜110Nの符号化の精確な作用はメモリバンク104A〜104Nのサイズおよびコーディングバンク110A〜110Nのサイズに基づいて異なってもよい。
例示的実施形態においては、データをコーディングバンク110A〜110Nに格納するために排他的OR(XOR)関数が用いられる。これが、オーバーヘッドの複雑性を低減しコードの線形性を保持するように作用する。線形的なコードは機能性の最も広い範囲を提供する、なぜなら符号化または復号化のいずれについても、どのようなコードの順序であっても用いられてもよいからである。従属性の欠如は、設計がコーディングバンク110A〜110Nを可能なかぎり最も柔軟な態様において用いることを許容する。追加的には、例示的実施形態においては、異なる重みが、XOR関数のためにメモリ要素に付与されることができる。例えば、メモリ要素a0およびb0は、任意のガロア域に属する整数値αおよびβについてαa0+βb0として格納されることが可能であろう。別の設計検討は、コードを生成するための圧縮係数でありうるであろう。XORは、2つ以上のメモリ要素に対して行われることができ、それにより、XORが行われるメモリ要素の数が多いほど圧縮係数は大きい(そしてコードを復号化する際の複雑性も大きくなる)。例えば、それぞれ要素a0ないしan、b0ないしbn、c0ないしcnおよびd0ないしdnを保持する4つのメモリバンクA、B、CおよびDがあると仮定する。コーディングバンクにおけるこれらの要素に対応する可能なコードは、
i+bi、bi+ci、ci+diおよびci+ai(i=0〜n)
でありうるであろう。
ここに用いられている符号「+」は、1つまたは複数の関係するデータにあわせて1つまたは複数の機能を行うことを意味することに留意すべきである。
このスキームは、コードを生成するために2つのメモリ要素の組み合わせを用いている。これは100%追加のメモリオーバーヘッドを用いるが、それはまた、サイクルあたり100%追加のメモリアクセス(すなわち、4つの追加のアクセス)を可能とする。別の設計は、コード:
i+bi+ci+di(i=0〜n)
を生成するために4つのメモリ要素すべてを組み合わせることによってコードを圧縮することでありうるであろう。
この設計は、25%メモリオーバーヘッドというコストでサイクルあたり1つの追加のアクセスを与える。しかしながら、デコーダはここで4番目の要素を復号化することができるために3つの要素を取得する必要がある。そうするとより多くのデータが単一のメモリロケーションにおいて圧縮されることができるであろうが、この圧縮は、追加的なアクセス時間および複雑性というコストを伴う。上述したスキームは異なるメモリバンク104A〜104Nからの要素を用いてコーディングバンク110A〜110Nを「符号化」する。これは、「インターバンクコーディング」とよばれてもよい。例示的実施形態においては、符号化の直交的な態様が提供され「イントラバンクコーディング」とよばれ、そこでは、同じバンクからのメモリ要素がコードを生成するために用いられる。追加的には、実施形態が予見され、そこではインターバンクおよびイントラバンクコーディング双方が用いられる。
図2ないし図5は、例示的実施形態に係る、異なるコーディングスキームを示すブロック図である。図2は、例示的実施形態に係る、インターバンクコーディングスキーム200を示すブロック図である。この設計は、メモリバンク204A〜204H内のメモリ202A〜202Hの特定の行(row)を符号化し、これらのコードをコーディングバンク206A〜206Lに格納するために、バッチコードの概念を用いる。これが、符号化された領域への複数のアクセスがコーディングバンク206A〜206Lを用いて処理されることを許容する。このスキームをもって、所与の符号化された領域への最大で4つの読み出し要求が随時処理されることができる。図2に示すように、メモリバンク204A〜204Hは、2つの領域208Aおよび208Bに分けられる。各領域208A、208Bは、メモリバンク204A〜204Hの4つが割り当てられている。各領域208A、208Bはまた、コーディングバンク206A〜206Lの半分を割り当てられている。
このコーディングスキームは、符号化された領域への順次アクセスが発行された際に最大パフォーマンスを実現するように設計されている。最良のケースのアクセスの間は、1つのサイクルにおいて最大で10個のパラレルアクセスが実現されることができる。メモリコントローラがa1;b1;c1;d1;a2;b2;c2;d2;c3;d3へのアクセスを受信した場合のシナリオを考える。ここでは、a1;b1;c1;d1は、メモリバンク204Aからのa1をコーディングバンク206A、206D、206Bとともに用いて(それぞれa1+b1;b1+c1;c1+d1)処理されることができ、a2;b2;c2;d2は、メモリバンク204Bからのb2と、それぞれ、コーディングバンク206C、206Eおよび206Fからのa2+d2;b2+d2;a2+c2とを用いて処理されることができる。最後に、c3およびd3は、それぞれ、メモリバンク204Cおよび204Dを用いて処理されることができる。
最悪の場合のシナリオでは、このコードスキームは、メモリバンク204A〜204Hへの非順次的かつ非連続的アクセスがあるときにはサイクルにおいて4つのアクセスまで落ちる。例えば、a1、b8、c9、およびd15について要求があると仮定する。この組み合わせについてのコードはコーディングバンク206A〜206Lには存在しないので、並列アクセスの利便性は利用されない。しかしながら、バンクキュー内を先読みして後続のアクセスのためにコーディングバンク206A〜206Lからコードをプリフェッチするためにプリフェッチメカニズムが用いられることができる。
図3は、例示的実施形態に係る、インターバンクコーディングスキームおよびイントラバンクコーディングスキーム300の組み合わせを示すブロック図である。この設計は、サイクルあたりのメモリバンクあたり、最大5つの読み出しアクセスを許容する。図2と同様に、図3は、メモリバンク304A〜304H内のメモリ302A〜302Hの特定の行を符号化し、これらのコードをコーディングバンク306A〜306Jに格納するためにバッチコードの概念を用いる。注目すべきことに、この設計はまた、コーディングバンク306A〜306Jのうち2つの領域308A、308Bからのデータを混合し、その結果、コーディングバンク306A〜306Jは領域に分割されない。このスキームにおけるデータは、インターバンクおよびイントラバンクコード双方を用いて符号化される。イントラバンクコードは、コーディングバンク306A、306Bに格納される。これは、利用可能であれば、異なる領域308A、308Bからのコーディングバンク306A〜306Jの利用を許容する。
この設計は、符号化された領域への順次アクセスが発行された際に最大のパフォーマンスを提供する。最良の場合のシナリオにおいては、1サイクルにおいて最大11個のパラレルアクセスが実現されることができる。メモリコントローラがa;b;c;d;a;b;c;d;a;b;c;dへのアクセスを受信した場合のシナリオを考える。ここでは、a;b;c;dは、メモリバンク306Fからのaおよびメモリバンク306Gからのbをコーディングバンク306D、306B(b+c;c+d)とともに用いて処理されることができ、a;b;dは、メモリバンク304Bからのbをコーディングバンク306C(a+d)および306E(b+d)とともに用いて処理されることができる。最後に、a3、c2およびd3は、メモリバンク304A、304Cおよび304Dを用いて処理されることができる。この場合に、12個の要求のうちの11が、1クロックサイクル内で処理される。
このコードスキームは、符号化された領域における1つのデータバンクについてサイクルあたり最大で5つの読み出しアクセスを行うことができる。これらは、メモリバンク304A〜304Hへの非順次的かつ非連続的なアクセスである。例えば、アクセスパターンがd1;d6;d9;d15;d20であるとき、それは、d1をコード領域IIにおける一番下のコーディングバンクから読み出してもよく、コード領域IIでは、それは、コード領域I内の元のデータバンクからのd1、d6を格納し、a9およびa9+d9を読み出してd9を得、b15およびb15+d15を読み出してd15を得、c20およびc20+d20を読み出してd20を、すべてコード領域Iおよびその関連付けられたコーディングバンクから得る。プリフェッチメカニズムは、キューを先読みしてさらなるアクセスのためにコーディングバンク306A〜306Jからコードをプリフェッチするために用いられることができる。
図4は、代替的な例示的実施形態に係るインターバンクコーディングスキーム400を示すブロック図である。ここでは、9つのメモリバンク402A〜402Iおよび9つのコーディングバンク404A〜404Iが用いられる。コーディングスキーム400はまた、比較的より高い3の局所性を有する。これは、メモリコントローラが3つのデータ要素のうち2つを取得して3番目を復号化してもよいことを意味する。これはまた、サイクルあたりのバンクあたりの同時的読み出しアクセスの最大数、および、サイクルあたりバンクあたりの2つの同時的書き込みアクセスを可能とする。メモリオーバーヘッドは、さきの設計よりは小さいが、増大された局所性を理由とした高い論理的複雑性が存在する。
幾つかの例示的実施形態においては、何らかの整数nについて2n個のバンク数を維持することが望ましいかもしれない。これに照らして、9バンク設計は望ましくないかもしれない。図5は、別の代替的な例示的実施形態に係るインターバンクコーディングスキーム500を示すブロック図である。ここでは、9つではなく8つのメモリバンク502A〜502Hが存在している。コードは、非バイナリコードを削減することによって実現されることができる。9つのコーディングバンク504A〜504Iが存在する。コーディングバンクのうちの3つ、具体的にはコーディングバンク504C、504Fおよび504Gは、2の局所性を有し、他方、残りのコーディングバンク504A、504B、504D、504E、504Hおよび504Iは3の局所性を有する。
図1を再度参照すると、アービター114は、マスターコア102A〜102Nからの要求を処理する役割を担う。アクセススケジューラ108は、各サイクルについて最も効率的なアクセスをスケジューリングする。
アービター114は、マスターコア102A〜102Nの各々に対してキューを維持する。各キューの深さは固定されてもよい(例えば8つの要求)。キューがいっぱいになると、メモリコントローラ106は、それぞれのマスターコア102A〜102Nに対してそれがビジーであることをシグナリングし、その結果マスターコア102A〜102Nは別のメモリ要求を発行することができず、したがってメモリコントローラ106が、キューが要求を収容する余地があることを示すまでストールする。アービター114はまた、マスターコア102A〜102Nからの要求の間のアービトレーションの役割を担う。アービター114は、各キューのすべての要素を検討し、優先順位を決定する。それは2ステップの優先順位メカニズムを用いることができる。第一にそれはサービス品質(QoS)の順に高いQoSを高い優先度として要求を並べ、第二に、同じ優先度を有する要求については、それはそれらをラウンドロビンまたは類似の順序付けスキームを用いて並べる。アービター114について記載されたこれらの機能は、実際にはアービター114のコアアービター部分によって行われてもよいことに留意すべきである。別個のバンクアービターはまた、アービター114に含まれてもよい。
バンクアービターは、各メモリバンク104A〜104Nのための読み出しおよび書き込みキューを含むユニットである。コアアービターは、マスターコア102A〜102Nからの要求を調停し、それらをバンクキュー116A−116Nの中に充填する。バンクキュー116A〜116Nの深さはまた、固定されてもよい(例えば10個の要求)。各バンクキュー116A〜116Nは、メモリバンク104A〜104Nに対応する。このように、8バンクシステムにおいて、合計で8つの書き込みキューおよび8つの読み出しキューが存在し、マスターかつバンクキューである。別個の読み出しおよび書き込みキューを有するまたは組み合わせられた読み出しおよび書き込みキューを有するためにシステムを設定することも可能であろう。
アクセススケジューラ118は、各サイクルについてメモリバンク104A〜104Nへのアクセスのスケジューリングをする役割を担う。アクセススケジューラ118は、各メモリバンク104A〜104Nのための読み出しおよび書き込みキューを見て最も効率的なアクセスパターンを形成する。アクセススケジューラ118は、各キューの先頭において要求を優先順位付けすることができるが、符号化されたメモリシステムの場合においては、アクセススケジューラ118は、サイクルあたりアクセスを最大化するためにキューを先読みすることができる。書き込みキューは、書き込みがいっぱいになるまで書き込みを保持してもよい。読み出しは、書き込みキューがいっぱいになるまで書き込みよりも高い優先度を与えられることができる。
図6は、例示的実施形態に係る、アクセススケジューラ118をより詳細に示すブロック図である。符号化ステータスマップ600は、メモリバンクの行に対応する行およびメモリバンクに対応する列(column)を有していてもよい。コード値は、特定のメモリバンクにおける各行のためのコードのステータスを示す符号化ステータスマップ600の各セルに置かれてもよい。例えば、各セルが2つのビットを保持する場合、00はコードが最新のものであることを示してもよく、01は、コードは古いがフレッシュなデータがメモリバンクにあることを示してもよく、10は、コードが古いがフレッシュなデータがコーディングバンクにあることを示してもよく、11は予約されてもよい。
読み出し要求については、読み出しパターンビルダー602が要求をサービスするために用いられる。読み出しパターンビルダー602の焦点は、より多くのアクセスを処理するためにコーディングバンクにおける冗長性を利用することである。図7は、例示的実施形態に係る、読み出し要求を処理する方法700を示す流れ図である。処理702において、変数iが1に設定される。処理704において、iが領域におけるメモリバンクの数以下であるかが判定される。iが領域におけるメモリバンクの数以下でないならば、方法700は終了してもよい。iが領域におけるメモリバンクの数以下であるならば、処理706においてバンクiについてメモリバンクからの読み出しが処理される。処理708において、別のバンク要求への読み出しがコーディングバンクを用いて可能であるかを判定する。
そうでないならば、処理710においてiは1でインクリメントされる。そうであるならば、処理712において読み出しはコーディングバンクを用いて処理される。そして処理714において、コーディングバンク利用可否が更新される。そして方法700は処理710に進む。処理710の後で、方法700は処理704にループする。
書き込み要求はアクセススケジューラ112における書き込みパターンビルダー604によって履行される。上述したように、例示的実施形態においては、符号化システムはコーディングバンクを用いることによりサイクルあたりのバンクあたり、2つの書き込みを行う。書き込みが特定のバンクについてスケジューリングされているときに、スケジューラは、2つの要求をキューの先頭からピックアップする。それは、第1の要求を対応するメモリバンクに書き込む。第2の書き込みは、この特定の書き込みデータがこのコーディングバンクにおいて用いられているそれぞれの行のコーディングバンクにコミットされる。図8は、例示的実施形態に係る、書き込み要求を処理する方法800を示す流れ図である。処理802において、最初の2つの要求は、書き込みキューから読み出される。処理804において、第1の要求は、対応するメモリバンクによって処理され、他方、第2の要求は対応するコーディングバンクによって処理される。処理806において、コードステータスマップが更新される。メモリバンクに格納された要素については、コードは01に更新されてもよく、他方、コーディングバンクに格納された要素については、コードは10に更新されてもよい。
アクセススケジューラ112における動的符号化コントローラ606は、頻繁にアクセスされるメモリサブ領域のためのコードを維持する役割を担う。このブロックは主として、不使用メモリに対するコード格納の低減に役立つ。現在の頻繁にアクセスされる領域を特定し領域が符号化されるべき旨をコントローラに示すアルゴリズムが提供されてもよい。このようにして、全体のメモリの部分のみが符号化される必要がある。
様々なコアからのメモリアクセスにおける競合は、大抵はアクセスが共有メモリに対するものであるとき、特にそれらがあるメモリ領域に局所化されているときに発生する。ある期間におけるメモリアクセスの局所性は、コードを格納するためのメモリオーバーヘッドを低減するために探索されてもよい。マルチコアシステムにおいては、様々なコアが共有メモリロケーションから機能しようと試みるとき、コアは、メモリの局所化された領域に対するアクセスを生成する傾向がある。これが、重いアクセスの期間に局所化された領域を符号化しおよびメモリアクセスの局所性に変化があるときにいつでも領域を動的に変化させる、という考えを動機付ける。
例示的実施形態においては、アクセスパターンが変化したときに現在符号化されている領域が変化する。つまり、最も頻繁にアクセスされる局所化されたメモリ領域が変化することができ、そしてシステムは記録コントローラ608を用いて新たな局所化されたアクセス領域を記録する。例示的実施形態においては、動的符号化はメモリをサブ領域に分割してサブ領域におけるアクセスを追跡し続けることにより達成される。ひとたび特定のサブ領域へのアクセスの数が特定のスレッショルドに達すれば、このサブ領域は現在符号化されている領域として割り当てられる。ウィンドウ概念が用いられてもよい。システムは[Starting Address,Length]のようなサブ領域のテーブルを維持する。各サブ領域はこのようにして開始アドレスおよび長さを与えられる。特定のサブ領域に対する任意のアクセスがヒットであるとみなされる。システムはサブ領域の各々と関連付けられ各ヒットについてインクリメントされるヒットカウンタを有している。
システムは、そのヒットカウンタ値に基づいて特定のサブ領域の符号化の決定をする。特定の時間における符号化されたサブ領域の数は、サブ領域サイズおよびコードストレージサイズに基づいている。符号化された領域の立ち退きはキャッシュについて用いられるのと同様のLeast Recently Used(LRU)ポリシに従う。ブロックは、特定の領域への重いアクセスを判定するためのシンプルなロジックを実装する。それは、全体のメモリをサブ領域に分割する。メモリは、以下のウィンドウパラメータ:[StartAddress,Length]の提供により動的に分割されることができる。コントローラは、コードストレージのために利用可能なメモリ未満であるという制約とともに、複数のウィンドウパラメータを有することができる。これは、システム設計者が分散されたメモリの小さなチャンクを符号化することを許容する。記述されたコードは様々なメモリバンクにおける同じ行のデータ要素の線形的組み合わせによって取得される。アドレスのためのウィンドウパラメータは主として行の開始を示す。
動的符号化コントローラ606は、サブ領域の切り替えでサブ領域へのアクセスのカウントをリセットする。新たなカウントは符号化されたサブ領域の次の変化を決定する。
図9は、例示的実施形態に係る、バッファをメモリ内に割り当てる方法900を示す流れ図である。処理902において、アクセススケジューラは、バッファを割り当てる要望を示すチップ‐レベルスケジューラからのメッセージを受信する。処理904において、バッファに対応するメモリ領域が複数のアクセスについてスケジューリングされているかが判定される。スケジューリングされていないならば、何も行われない。スケジューリングされているならば、処理906においてチップ‐レベルスケジューラが、使用されるべきアドレス領域をアクセススケジューラに対して通知する。処理908において、新たな領域を受け入れる余地があるかが判定される。余地があるならば、処理910においてコーディングバンクはバックグラウンドで構築され、構築されたとき、アクセススケジューラは通知される。新たなデータを受け入れる余地がないならば、処理912において、1つの符号化領域がLRUポリシに基づいて取り除かれる。そして方法900は処理910に進む。
処理916において、アクセススケジューラは、ひとたびアクセス要求がメモリコントローラによって受信されると然るべくコーディングバンクをスケジューリングする。
図10は、例示的実施形態に係る、コーディングバンクのグループをスケジューリングおよび用意する方法1000を示す流れ図である。処理1002において、第1のマスターコアから、複数のメモリバンクの1つにおけるデータにアクセスする第1の要求が受信される。処理1004において、現在サービスされるある複数のメモリバンクの1つにおけるデータにアクセスする第2のマスターコアからの第2の要求が原因で要求されたデータへのアクセスがストールしているかが判定される。アクセスがストールしているならば、処理1006において、第1の要求が、複数のコーディングバンクの1つにおけるデータにアクセスすることによってサービスされ、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい。アクセスがストールしていないならば、処理1008において、メモリバンクの1つにおけるデータにアクセスすることによって第1の要求がサービスされる。
本開示は任意のタイプのコンピューティングデバイスにおいて用いられることができる実施形態を記載するものであるが、幾つかの例示的実施形態においては、ロングタームエボリューション(LTE)、モバイル用途用グローバルシステム(GSM)またはユニバーサル移動体通信システム(UMTS)基地局などの無線基地局での実装が利用される。LTEにおいては、これらの基地局はまたEvolvedノードB(eNB)として知られている。
モバイルデバイスおよび他のタイプのコンピューティングデバイスなどの他の実施形態がまた予見される。
例示的モバイルデバイス
図11は、例示的実施形態に係る、モバイルデバイス1100を示すブロック図である。モバイルデバイス1100は、プロセッサ1102を含むことができる。プロセッサ1102は、モバイルデバイス1100に適した様々な異なるタイプの市販されているプロセッサ1102の任意のものであることができる(例えば、XScaleアーキテクチャマイクロプロセッサ、インターロックされたパイプラインステージのないマイクロプロセッサ(MIPS)アーキテクチャプロセッサ、または他のタイプのプロセッサ1102)。ランダムアクセスメモリ(RAM)、フラッシュメモリ、または他のタイプのメモリなどのメモリ1104は、典型的にプロセッサ1102にアクセス可能である。メモリ1104は、オペレーティングシステム(OS)1106やアプリケーションプログラム1108を格納するように適合させることができる。プロセッサ1102は、直接的にまたは適切な中間的ハードウェアを介して、ディスプレイ1110に、およびキーパッド、タッチパネルセンサ、マイクロフォン等の1つまたは複数の入力/出力(I/O)デバイス1112に結合されることができる。同様に、幾つかの実施形態においては、プロセッサ1102は、アンテナ1116とインタフェースする送受信機1114に結合されることができる。送受信機1114は、モバイルデバイス1100の性質に応じてセルラーネットワーク信号、ワイヤレスデータ信号または他のタイプの信号を、アンテナ1116を介して送信しかつ受信するように構成されることができる。さらに、幾つかの構成においては、GPS受信機1118はまた、GPS信号を受信するためにアンテナ1116の利用をすることができる。
モジュール、コンポーネントおよびロジック
ある実施形態はロジックまたは多数のコンポーネント、モジュールもしくはメカニズムを含むものとしてここに記載される。モジュールはソフトウェアモジュール(例えば(1)非一時的マシン可読媒体に、または(2)送信信号に組み込まれたコード)またはハードウェア実装されたモジュールのいずれかを構成することができる。ハードウェア実装されたモジュールは、ある処理を行うことができる有形的ユニットであり何らかの態様にて構成または配置されることができる。例示的実施形態においては、1つまたは複数のコンピュータシステム(例えばスタンドアローン、クライアントまたはサーバコンピュータシステム)または1つまたは複数のプロセッサ1102は、ここに記載された何らかの処理を行うように動作するハードウェア実装モジュールとして、ソフトウェア(例えばアプリケーションまたはアプリケーション部分)によって構成されることができる。
様々な実施形態において、ハードウェア実装されたモジュールは、機械的にまたは電子的に実装されることができる。例えば、ハードウェア実装されたモジュールは、何らかの処理を行うように恒久的に構成されている専用の回路またはロジックを含むことができる(例えば特殊用途プロセッサとして、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向け集積回路(ASIC)など)。ハードウェア実装されたモジュールはまた、何らかの処理を行うようにソフトウェアによって一時的に構成されたプログラマブルロジックまたは回路(例えば汎用プロセッサ1102または他のプログラマブルプロセッサ1102に包含されるように)を含むことができる。専用のかつ恒久的に構成された回路において、または、一時的に構成された回路(例えばソフトウェアによって構成された)において、のどちらでハードウェア実装されたモジュールを機械的に実装すべきかの判断は、費用および時間の考慮事項によって左右されることができることが理解されるであろう。
したがって、用語「ハードウェア実装されたモジュール」は、物理的に構成され、恒久的に構築された(たとえばハードワイヤードの)ものであれ、または、一時的または一時しのぎに構成された(例えばプログラムされた)ものであれ、何らかの態様にて動作しおよび/またはここに記載された何らかの処理を行うための有形的実体を包含するものと理解されるべきである。ハードウェア実装されたモジュールが一時的に構成されている(例えばプログラムされている)実施形態を考えると、ハードウェア実装されたモジュールの各々は、任意の一時点で構成または具現化される必要はない。例えば、ハードウェア実装されたモジュールがソフトウェアを用いて構成された汎用プロセッサ1102を含む場合、汎用プロセッサ1102は、異なる時間において異なるハードウェア実装されたモジュールとして構成されることができる。ソフトウェアは、例えば、特定のハードウェア実装されたモジュールを一時点において構成するためにおよび異なる時点においては異なるハードウェア実装されたモジュールを構成するために、プロセッサ1102を然るべく構成することができる。
ハードウェア実装されたモジュールは、他のハードウェア実装されたモジュールに情報を提供し、または、他のハードウェア実装されたモジュールから情報を受信することができる。したがって、記載されたハードウェア実装されたモジュールは、通信可能に結合されているとみなされることができる。かかるハードウェア実装されたモジュールの複数が同時的に存在する場合、通信は信号伝送(例えばハードウェア実装されたモジュールを接続する適切な回路およびバスを介して)により実現されることができる。複数のハードウェア実装されたモジュールが異なる時間において構成または具現化されている実施形態においては、かかるハードウェア実装されたモジュールの間の通信は、例えば、複数のハードウェア実装されたモジュールがアクセスを有するメモリ構造への/からの情報の格納および抽出によって実現されることができる。例えば、1つのハードウェア実装されたモジュールは、処理を行い、それが通信可能に結合されているメモリデバイスにその処理の出力を格納することができる。さらなるハードウェア実装されたモジュールは、その後、しばらく経って、格納された出力を抽出し処理するためにメモリデバイスにアクセスすることができる。ハードウェア実装されたモジュールはまた、入力または出力装置と通信を開始することができ、リソースに対して処理を行うことができる(例えば情報の収集)。
ここに記載された例示的方法の様々な処理は、少なくとも部分的に、関連する処理を行うように一時的に構成され(例えばソフトウェアにより)または恒久的に構成された1つまたは複数のプロセッサ1102によって、行われることができる。一時的にまたは恒久的に構成されるにせよ、かかるプロセッサ1102は、1つまたは複数の処理または機能を行うように動作するプロセッサ実装されたモジュールを構成することができる。ここに言及されるモジュールは、幾つかの例示的実施形態においては、プロセッサ実装されたモジュールを含むことができる。
同様に、ここに記載された方法は、少なくとも部分的にプロセッサ実装されることができる。例えば、方法の処理の少なくとも幾つかは、1つまたは複数のプロセッサ1102またはプロセッサ実装されたモジュールによって行われることができる。処理の幾つかのパフォーマンスは1つまたは複数のプロセッサ1102の間で分散されることができ、単一のマシンの中に存在するだけでなく、多数のマシンにわたって配置展開されることができる。幾つかの例示的実施形態においては、プロセッサ1102またはプロセッサ1102は、単一のロケーション(例えば自宅環境、職場環境またはサーバーファームの中)において配置されることができ、他方、他の実施形態においては、プロセッサ1102は、多数のロケーションにわたって分散されることができる。
1つまたは複数のプロセッサ1102はまた、「クラウドコンピューティング」環境におけるまたは「サービスとしてのソフトウェア」(SaaS)としての関連する処理のパフォーマンスをサポートするために動作することができる。例えば、処理の少なくとも幾つかは、コンピュータのグループ(プロセッサ1102を含むマシンの例として)によって行われることができ、これらの処理は、ネットワーク(例えばインターネット)を介しておよび1つまたは複数の適切なインタフェース(例えばアプリケーションプログラムインタフェース(API))を介してアクセス可能である。
電子装置およびシステム
例示的実施形態は、コンピュータハードウェア、ファームウェアもしくはソフトウェアまたはそれららの組み合わせにおけるデジタル電子回路において実装されることができる。例示的実施形態は、コンピュータプログラム製品、例えば、データ処理装置、例えばプログラマブルプロセッサ1102、コンピュータまたは複数のコンピュータによる処理のため、または処理を制御するために、情報担体、例えばマシン読み取り可能な媒体、に有形的に具現化されたコンピュータプログラム、を用いて実装されることができる。
コンピュータプログラムは、コンパイル型またはインタープリタ型言語を含む任意の形式のプログラミング言語で書かれることができ、それは、スタンドアローンプログラムとしてまたはモジュール、サブルーチンまたはコンピューティング環境における使用に適した他のユニットとして、任意の形式で配置展開されることができる。コンピュータプログラムは、1つのコンピュータにまたは複数のコンピュータ上で実行されるために1つのサイトにまたは複数のサイトにまたがって通信ネットワークで相互接続されて配置展開されることができる。
例示的実施形態においては、処理は、入力されたデータに対して処理を行い、出力を生成することにより機能を実現するためにコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサ1102によって行われることができる。方法における処理はまた、特殊用途向け論理回路、例えばFPGAまたはASICによって行われることができ、例示的実施形態の装置は特殊用途向け論理回路、例えばFPGAまたはASICとして実装されることができる。
コンピューティングシステムはクライアントおよびサーバを含むことができる。クライアントおよびサーバは一般的に互いに離隔しており、典型的に通信ネットワークを介してやりとりする。クライアントおよびサーバの関係は、それぞれのコンピュータ上で動作し互いに対してクライアント‐サーバ関係を有するコンピュータプログラムが理由で生じる。プログラマブルコンピューティングシステムを配置展開する実施形態においては、ハードウェアおよびソフトウェアアーキテクチャ双方が考慮に値することが理解されるであろう。具体的には、何らかの機能性を恒久的に構成されたハードウェア(例えばASIC)においてまたは一時的に構成されたハードウェア(例えばソフトウェアおよびプログラマブルプロセッサ1102の組み合わせ)において、あるいは恒久的および一時的に構成されたハードウェアの組み合わせにおいて実装すべきかの選択肢は設計上の選択でありうることが理解されるであろう。以下では、様々な例示的実施形態において配置展開されることができるハードウェア(例えばマシン)およびソフトウェアアーキテクチャを提示している。
例示的マシンアーキテクチャおよびマシン可読媒体
図12は、ここにおいて議論され方法論のいずれか1つまたは複数をマシンに行わせるために命令1224が実行されることができるコンピュータシステム1200の例示的形式におけるマシンのブロック図である。代替的実施形態においては、マシンは、スタンドアローンデバイスとして動作しまたは他のマシンに接続され(例えばネットワーク化され)されることができる。ネットワーク化された配置展開においては、マシンは、サーバ‐クライアントネットワーク環境におけるサーバまたはクライアントマシンの立場で、または、ピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、動作することができる。マシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブアプライアンス、ネットワークルータ、スイッチもしくはブリッジまたはそのマシンによってなされるべきアクションを指定する命令を(逐次的またはその他)実行することができる任意のマシンでありうる。さらに、単一のマシンのみが示されている一方で、用語「マシン」はまた、ここにおいて議論された方法論のいずれか1つまたは複数を行うために命令1224の集合(または複数の集合)を個別的または共同的に実行するマシンの任意の集まりを含むものととらえられるべきものである。
例示的コンピュータシステム1200は、プロセッサ1202(例えばCPU、グラフィックスプロセッシングユニット(GPU)、または双方)、メインメモリ120およびスタティックメモリ1206を含み、それらはバス1208を介して互いに通信する。コンピュータシステム1200はさらに、ビデオディスプレイ1210(例えば液晶ディスプレイ(LCD)またはブラウン管(CRT))を含むことができる。コンピュータシステム1200はまた、英数字入力装置1212(例えばキーボードまたはタッチセンシティブ表示画面)、カーソル制御装置1214(例えばマウス)、ストレージユニット1216、信号発生装置1218(例えばスピーカ)およびネットワークインタフェース装置1220を備えている。
マシン可読媒体
ストレージユニット1216は、ここに記載された方法論または機能のいずれか1つまたは複数を具現化する、またはそれによって利用される命令1224(例えばソフトウェア)の1つまたは複数の集合が格納されているマシン読み取り可能な媒体1222を含む。命令1224はまた、完全にまたは少なくとも部分的に、コンピュータシステム1200によるその実行の間、メインメモリ1204の中におよび/またはプロセッサ1202の中に存在することができ、メインメモリ1204およびプロセッサ1202はまたマシン読み取り可能な媒体1222を構成している。
マシン読み取り可能な媒体1222が例示的実施形態においては単一の媒体として示されているが、用語「マシン読み取り可能な媒体」は、1つまたは複数の命令1224またはデータ構造を格納する単一の媒体または複数の媒体(例えば集中化されたまたは分散されたデータベースおよび/または関連付けられたキャッシュおよびサーバ)を含むことができる。用語「マシン読み取り可能な媒体」はまた、マシンによる実行のための命令1224を格納し、符号化し、運び、または本開示の方法論のいずれか1つまたは複数をマシンに行わせる、あるいは、かかる命令1224によって利用されまたはそれと関連付けされたデータ構造を格納し、符号化し、または運ぶ能力のある、任意の有形的な媒体を含むものととらえられるべきものである。用語「マシン読み取り可能な媒体」は、ソリッドステートメモリおよび光または磁気媒体を含むものとして然るべくとらえられるべきであるが、これらに限定されるものではない。マシン読み取り可能な媒体1222の具体的な例は、一例として、半導体メモリデバイス、例えば消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)およびフラッシュメモリデバイスを含む不揮発性メモリ、内部ハードディスクリおよびムーバブルディスクなどの磁気ディスク、磁気光ディスクならびにCD−ROMおよびDVD−ROMディスクを含む。
伝送媒体
命令1224はさらに伝送媒体を用いて通信ネットワーク1226を介して送信または受信されることができる。命令1224は、ネットワークインタフェース装置1220および多数の周知の伝送プロトコル(例えばHTTP)のいずれかを用いて送信されることができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、携帯電話ネットワーク、基本電話サービス(POTS)ネットワークおよびワイヤレスデータネットワーク(例えばWiFiおよびWiMax(登録商標)ネットワーク)を含む。用語「伝送媒体」は、マシンによる実行のために命令1224を格納し、符号化し、または運ぶ能力を有する任意の無形的媒体を含むものととらえられるべきであり、デジタルもしくはアナログ通信信号またはかかるソフトウェアの通信を支援する他の無形的媒体を含む。
具体的例示的実施形態を参照して実施形態は説明されたが、開示のより広い趣旨および範囲を逸脱することなく様々な改変および変更がこれらの実施形態になされることができることは明らかであろう。したがって、明細書および図面は限定的ではなく説明的な意味におけるものとみなされるべきである。その一部を形成する添付の図面は説明により、かつ、限定されることなく、主題が実施されることができる具体的実施形態を示している。示された実施形態は当業者がここに開示された教示を実施することができるように十分詳細に記載されている。他の実施形態は、構造的および論理的置換および変更が本開示の範囲を逸脱することなくなされることができるように、利用されかつそこから派生されることができる。この詳細な説明は、したがって、限定的な意味でとらえられるべきではなく、様々な実施形態の範囲は、添付の請求項のみによって、かかる請求項が権原を有する均等物の完全な範囲とともに、画定されるものである。
発明主題のかかる実施形態はここにおいて個別的におよび/または集団的に、単に便宜上、1を超えるものが実際に開示されているならばこの出願の範囲を任意の単一の発明または発明的概念に自発的に限定する意図なしに、用語「発明」によって参照されることができる。このように、具体的実施形態がここにおいて示され記載されているが、同じ目的を実現するために計算された任意の配置が、示された具体的実施形態を代替することができることが理解されるべきである。本開示は、様々な実施形態の任意かつすべての改変または変形を包含することを意図している。上記実施形態の組み合わせ、およびここに具体的に記載されていない他の実施形態は、上記説明を検討することで技術分野における技能を有する者に明らかであろう。
メモリアクセスシステムの一実施形態は、第1のマスターコアから、複数のメモリバンクの1つにおけるデータにアクセスする第1の要求を受信するアクセス要求受信手段と、データへのアクセスが第2のマスターコアからの、複数のメモリバンクの1つにおけるデータにアクセスする第2の要求が理由でストールしているかを判定する判定手段と、を備え、第2の要求は現在サービス中である。システムはさらに、処理手段であって、判定手段によってなされた、データへのアクセスがストールした旨の判定に応答して、複数のコーディングバンクの1つにおけるデータにアクセスすることにより第1の要求を処理する処理手段を備え、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい。一実施形態においては、メモリシステムはまた、第1の要求を処理することが、少なくとも1つの他のデータをメモリバンクから取得し、データを復号化するために少なくとも1つの他のデータを使用することによりデータを復号化することを含むように、コーディングバンクの1つにおけるデータが符号化される、符号化手段を含む。システムはまた、複数のコーディングバンクの1つにおけるデータをデータバンクからのデータとインタリーブするインタリーブ手段を含んでもよい。システムはまた、複数のバンクキューに格納された要求に対する先読み処理を用いて1つまたは複数のコーディングバンクにおけるデータをロードするロード手段を含んでもよい。

上述した特徴の様々な組み合わせが個別の例示的実施形態において実装されてもよい。例えば、上述した先読み処理は、要求が並行して処理されるシステムにおいて実装されてもよく、1つまたは複数のコーディングバンクにおけるデータは、第1の要求を処理することが少なくとも1つの他のデータをメモリバンクから取得し、データを復号化するために少なくとも1つの他のデータを用いることにより、データを復号化することを含むように、符号化され、コーディングバンクは、排他的OR(XOR)演算を介して、またはその任意の組み合わせにより、符号化される。追加的には、これらの実施形態のいずれかにおけるシステムは、無線基地局として実装されてもよい。
さらに、複数のコーディングバンクの1つにおけるデータのデータバンクからのデータとのインタリーブに関して上述した実施形態は、データが、第1の要求を処理することが少なくとも1つの他のデータをメモリバンクから取得してデータを復号化するために少なくとも1つの他のデータを用いることによりデータを復号化することを含むように、符号化される実施形態と組み合わせられてもよい。追加的には、先読み処理は、これらの実施形態のいずれとも組み合わせられることができる。

Claims (20)

  1. 複数のマスターコアプロセッサと、
    複数のメモリバンクと、
    1つまたは複数のコーディングバンクであって、前記1つまたは複数のコーディングバンクの各々が前記複数のメモリバンクの各々よりも小さい、1つまたは複数のコーディングバンクと、
    前記メモリバンクに対する要求をキューイングする複数のバンクキューと、
    前記マスターコアプロセッサおよび前記バンクキューの間に結合され、前記マスターコアプロセッサからの要求を受信し、前記要求を前記バンクキューに提供する、アービターと、
    前記バンクキュー、前記メモリバンクおよび前記1つまたは複数のコーディングバンクの間に結合されて前記要求を処理し、前記1つまたは複数のコーディングバンクによってサービス可能な競合する要求が前記1つまたは複数のコーディングバンクに提供されるようにするアクセススケジューラと、
    を含むシステム。
  2. 前記要求を前記処理することは、前記要求を並行処理して、複数のコーディングバンクを介してメモリバンクからの情報への並列アクセスを許容することを含む、請求項1に記載のシステム。
  3. 前記1つまたは複数のコーディングバンクにおけるデータは、第1の要求をサービスすることが、少なくとも1つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも1つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、請求項1に記載のシステム。
  4. 前記1つまたは複数のコーディングバンクのうちの一つにおける前記符号化されたデータは、排他的OR(XOR)演算を介して符号化される、請求項3に記載のシステム。
  5. 前記アービターは、前記バンクキューに格納された要求に対する先読み処理を用いて、データを前記1つまたは複数のコーディングバンクにロードするように構成されている、請求項1に記載のシステム。
  6. 前記アービターはさらに、バックグラウンド処理を介して、書き込みに対してコードを記入および更新するように構成されている、請求項5に記載のシステム。
  7. 前記1つまたは複数のコーディングバンクにおける前記データは、インターバンクコーディングスキームを用いて、前記コーディングバンクにおいて符号化される、請求項3に記載のシステム。
  8. 前記1つまたは複数のコーディングバンクにおける前記データは、イントラバンクコーディングスキームを用いて、前記コーディングバンクにおいて符号化される、請求項3に記載のシステム。
  9. 前記1つまたは複数のコーディングバンクにおける前記データは、イントラバンクおよびインターバンクコーディングスキームの組み合わせを用いて、前記コーディングバンクにおいて符号化される、請求項3に記載のシステム。
  10. 前記システムは無線基地局に配置される、請求項1に記載のシステム。
  11. 前記無線基地局はロングタームエボリューション(LTE)基地局である、請求項10に記載のシステム。
  12. 複数のメモリバンクの1つにおけるデータにアクセスする第1の要求を、第1のマスターコアから受信するステップと、
    前記複数のメモリバンクの前記1つにおける前記データにアクセスするために、前記データへのアクセスが第2のマスターコアからの第2の要求を理由としてストールしているかを判定するステップであって、前記第2の要求は現在処理されている、ステップと、
    前記データへの前記アクセスがストールしている旨の判定に対応して、複数のコーディングバンクの1つにおけるデータにアクセスすることにより前記第1の要求を処理するステップであって、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい、ステップと、
    を含む方法。
  13. 前記コーディングバンクの前記1つにおける前記データは、第1の要求を処理することが、少なくとも1つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも1つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、
    請求項12に記載の方法。
  14. 前記複数のコーディングバンクの前記1つは、前記複数のコーディングバンクの前記1つにおけるデータをデータバンクからのデータとインタリーブすることによって、メモリバンクに格納される、請求項12に記載の方法。
  15. 複数のバンクキューに格納された要求に対する先読み処理を用いて、データを前記複数のコーディングバンクにロードすることをさらに含む、請求項12に記載の方法。
  16. 各バンクキューは異なるメモリキューに対応する、請求項15に記載の方法。
  17. マシンの少なくとも1つのプロセッサによって実行されると、
    複数のメモリバンクの1つにおけるデータにアクセスする第1の要求を第1のマスターコアから受信することと、
    前記複数のメモリバンクの前記1つにおける前記データにアクセスするために、前記データへのアクセスが第2のマスターコアからの第2の要求を理由としてストールしているかを判定することであって、前記第2の要求は現在サービスされている、ことと、
    前記データへの前記アクセスがストールしている旨の判定に対応して、複数のコーディングバンクの1つにおけるデータにアクセスすることにより前記第1の要求をサービスすることであって、各コーディングバンクは各メモリバンクよりもサイズにおいて小さい、ことと、
    を含む操作を前記マシンに行わせる命令を含むコンピュータ読み取り可能な記憶媒体。
  18. 前記複数のコーディングバンクの前記1つにおける前記データは、前記第1の要求をサービスすることが、少なくとも1つの他のデータ片を前記メモリバンクから取得し、前記データを復号化するために前記少なくとも1つの他のデータ片を用いることにより、前記データを復号化することを含むように、符号化される、請求項17に記載のコンピュータ読み取り可能な記憶媒体。
  19. 前記複数のコーディングバンクの前記1つにおける前記符号化されたデータは、排他的OR(XOR)演算を介して符号化される、請求項18に記載のコンピュータ読み取り可能な記憶媒体。
  20. 前記操作は、複数のバンクキューに格納された要求に対する先読み処理を用いて、データを前記複数のコーディングバンクにロードすることをさらに含む、請求項17に記載のコンピュータ読み取り可能な記憶媒体。
JP2018504271A 2015-07-28 2016-07-28 増大された効率のためのインテリジェントメモリアーキテクチャ Active JP6715920B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/810,895 US10180803B2 (en) 2015-07-28 2015-07-28 Intelligent memory architecture for increased efficiency
US14/810,895 2015-07-28
PCT/CN2016/092030 WO2017016503A1 (en) 2015-07-28 2016-07-28 Intelligent memory architecture for increased efficiency

Publications (2)

Publication Number Publication Date
JP2018525737A JP2018525737A (ja) 2018-09-06
JP6715920B2 true JP6715920B2 (ja) 2020-07-01

Family

ID=57882570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018504271A Active JP6715920B2 (ja) 2015-07-28 2016-07-28 増大された効率のためのインテリジェントメモリアーキテクチャ

Country Status (5)

Country Link
US (1) US10180803B2 (ja)
EP (1) EP3317767B1 (ja)
JP (1) JP6715920B2 (ja)
CN (1) CN107851059B (ja)
WO (1) WO2017016503A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921754B2 (en) 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US9760432B2 (en) 2015-07-28 2017-09-12 Futurewei Technologies, Inc. Intelligent code apparatus, method, and computer program for memory
KR20170136382A (ko) * 2016-06-01 2017-12-11 주식회사 맴레이 메모리 컨트롤러, 그리고 이를 포함하는 메모리 모듈 및 프로세서
CN110825312B (zh) * 2018-08-10 2023-06-23 昆仑芯(北京)科技有限公司 数据处理装置、人工智能芯片及电子设备
CN109461113B (zh) * 2018-10-11 2021-07-16 中国人民解放军国防科技大学 一种面向数据结构的图形处理器数据预取方法及装置
US11429526B2 (en) * 2018-10-15 2022-08-30 Texas Instruments Incorporated Credit aware central arbitration for multi-endpoint, multi-core system
CN110166840B (zh) * 2019-05-15 2021-05-14 视联动力信息技术股份有限公司 一种业务处理方法、系统及装置
US20220100575A1 (en) * 2020-09-25 2022-03-31 Huawei Technologies Co., Ltd. Method and apparatus for a configurable hardware accelerator

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385708B1 (en) 1998-11-16 2002-05-07 Infineon Technologies Ag Using a timing-look-up-table and page timers to determine the time between two consecutive memory accesses
US6757791B1 (en) 1999-03-30 2004-06-29 Cisco Technology, Inc. Method and apparatus for reordering packet data units in storage queues for reading and writing memory
US6757784B2 (en) * 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
US6877077B2 (en) 2001-12-07 2005-04-05 Sun Microsystems, Inc. Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency
US7093059B2 (en) 2002-12-31 2006-08-15 Intel Corporation Read-write switching method for a memory controller
US7127574B2 (en) 2003-10-22 2006-10-24 Intel Corporatioon Method and apparatus for out of order memory scheduling
US7480829B2 (en) 2005-11-15 2009-01-20 International Business Machines Corporation Method, system and computer program product for recovery of formatting in repair of bad sectors in flash memory
US7475278B2 (en) 2005-11-15 2009-01-06 International Business Machines Corporation Method, system and computer program product for recovery of formatting in repair of bad sectors in disk drives
US7698498B2 (en) 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
CN100530070C (zh) * 2006-11-24 2009-08-19 骆建军 基于flash的硬盘
US20090100236A1 (en) 2007-10-15 2009-04-16 Ricardo Spencer Puig Copying data onto a secondary storage device
CN100499556C (zh) 2007-10-17 2009-06-10 中国人民解放军国防科学技术大学 异构多核处理器高速异步互连通信网络
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
CN101196857B (zh) 2008-01-04 2010-11-10 太原理工大学 双端口访问对称动态存储器的接口
US8650364B2 (en) 2008-05-28 2014-02-11 Vixs Systems, Inc. Processing system with linked-list based prefetch buffer and methods for use therewith
WO2010071655A1 (en) * 2008-12-19 2010-06-24 Hewlett-Packard Development Company, L.P. Redundant data storage for uniform read latency
US8266408B2 (en) 2009-03-17 2012-09-11 Memoir Systems, Inc. System and method for storing data in a virtualized high speed memory system
US9442846B2 (en) 2009-03-17 2016-09-13 Cisco Technology, Inc. High speed memory systems and methods for designing hierarchical memory systems
CN102460376B (zh) 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
US8615629B2 (en) * 2010-01-18 2013-12-24 Marvell International Ltd. Access scheduler
US8560796B2 (en) * 2010-03-29 2013-10-15 Freescale Semiconductor, Inc. Scheduling memory access requests using predicted memory timing and state information
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9348696B2 (en) 2010-10-01 2016-05-24 Pure Storage, Inc. Distributed multi-level protection in a raid array based storage system
EP2643763B1 (en) 2010-11-22 2019-09-04 Marvell World Trade Ltd. Sharing access to a memory among clients
WO2012160760A1 (ja) 2011-05-25 2012-11-29 パナソニック株式会社 情報処理装置および情報処理方法
WO2013057764A1 (en) 2011-10-19 2013-04-25 Hitachi, Ltd. Storage system
US9239786B2 (en) 2012-01-18 2016-01-19 Samsung Electronics Co., Ltd. Reconfigurable storage device
KR101349899B1 (ko) 2012-03-16 2014-01-14 한국과학기술원 메모리 제어기 및 이의 메모리 접근 스케줄링 방법
US9158683B2 (en) * 2012-08-09 2015-10-13 Texas Instruments Incorporated Multiport memory emulation using single-port memory devices
US8909860B2 (en) 2012-08-23 2014-12-09 Cisco Technology, Inc. Executing parallel operations to increase data access performance
EP2926341B1 (en) 2012-11-30 2020-02-19 Hewlett-Packard Enterprise Development LP Memory controllers to form symbols based on bursts
US9118352B2 (en) * 2012-12-26 2015-08-25 Allen LeRoy Limberg Remedying low densities of ONEs in transmission and reception of digital television signals
CN103077123A (zh) 2013-01-15 2013-05-01 华为技术有限公司 一种数据写入和读取方法及装置
US10089018B2 (en) * 2015-05-07 2018-10-02 Marvell Israel (M.I.S.L) Ltd. Multi-bank memory with multiple read ports and multiple write ports per cycle
US9921754B2 (en) * 2015-07-28 2018-03-20 Futurewei Technologies, Inc. Dynamic coding algorithm for intelligent coded memory system
US10437480B2 (en) * 2015-12-01 2019-10-08 Futurewei Technologies, Inc. Intelligent coded memory architecture with enhanced access scheduler
US9870163B2 (en) * 2016-04-27 2018-01-16 Globalfoundries Inc. Double bandwidth algorithmic memory array

Also Published As

Publication number Publication date
CN107851059A (zh) 2018-03-27
EP3317767B1 (en) 2021-12-01
WO2017016503A1 (en) 2017-02-02
EP3317767A4 (en) 2018-07-04
JP2018525737A (ja) 2018-09-06
CN107851059B (zh) 2021-01-29
EP3317767A1 (en) 2018-05-09
US20170031619A1 (en) 2017-02-02
US10180803B2 (en) 2019-01-15

Similar Documents

Publication Publication Date Title
JP6715920B2 (ja) 増大された効率のためのインテリジェントメモリアーキテクチャ
US8527993B2 (en) Tasking system interface methods and apparatuses for use in wireless devices
CN105103144B (zh) 用于存储器的自适应控制的设备及方法
EP2972915B1 (en) Systems and methods for memory system management based on thermal information of a memory system
US20110296120A1 (en) Virtual buffer interface methods and apparatuses for use in wireless devices
JP2020529684A (ja) 低レイテンシ動作をサポートするssdアーキテクチャ
EP2915045B1 (en) Selective error correcting code and memory access granularity switching
US8402249B1 (en) System and method for mixed-mode SDRAM address mapping
US10437480B2 (en) Intelligent coded memory architecture with enhanced access scheduler
US20160283394A1 (en) Caching and tiering for cloud storage
US20110296078A1 (en) Memory pool interface methods and apparatuses
US10496550B2 (en) Multi-port shared cache apparatus
US20180181341A1 (en) Method and apparatus for integration of non-volatile memory
JP2005293300A (ja) セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法
US10521371B2 (en) Cache system and associated method
US9817583B2 (en) Storage system and method for allocating virtual volumes based on access frequency
CN1426560A (zh) 具有不同资源访问方案的系统集成代理程序
JP6194875B2 (ja) キャッシュ装置、キャッシュシステム、キャッシュ方法、及びキャッシュプログラム
WO2015096031A1 (zh) 线程共享资源分配方法及装置
TWI544343B (zh) 伺服器及其方法、系統及其方法
US11797183B1 (en) Host assisted application grouping for efficient utilization of device resources
CN117032594B (zh) 一种读命令调度方法、处理方法、装置及存储设备
CN118034901A (zh) 内存管理方法、装置和相关设备
CN117632630A (zh) 存储器相位监测和调度系统
CA2832223A1 (en) Multi-port shared cache apparatus

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180228

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20181207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191029

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200609

R150 Certificate of patent or registration of utility model

Ref document number: 6715920

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250