JP6755935B2 - 共有メモリコントローラおよびそれを使用する方法 - Google Patents

共有メモリコントローラおよびそれを使用する方法 Download PDF

Info

Publication number
JP6755935B2
JP6755935B2 JP2018501260A JP2018501260A JP6755935B2 JP 6755935 B2 JP6755935 B2 JP 6755935B2 JP 2018501260 A JP2018501260 A JP 2018501260A JP 2018501260 A JP2018501260 A JP 2018501260A JP 6755935 B2 JP6755935 B2 JP 6755935B2
Authority
JP
Japan
Prior art keywords
beat
transaction
command
memory access
level
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
JP2018501260A
Other languages
English (en)
Other versions
JP2018521419A (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 JP2018521419A publication Critical patent/JP2018521419A/ja
Application granted granted Critical
Publication of JP6755935B2 publication Critical patent/JP6755935B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Description

本発明は、共有メモリコントローラおよびそれを使用する方法に関する。
関連出願の相互参照
本出願は、参照により本明細書にその全体が再現されているかの如く組み込まれている、2015年7月13日に出願された「Shared Memory Controller and Method of Using Same」という名称の米国非仮特許出願第14/797,620号の優先権を主張するものである。
マルチコアシステムオンチップ(SoC)の普及が増している。通常のマルチコアSoCは、メモリ空間を共有する処理コアなどの複数のマスタを含む。マスタは、数ある中でもマイクロプロセッサコア、デジタル信号プロセッサ(DSP)、ハードウェアアクセラレータ(HAC)などの多様な処理デバイスとすることができる。共有メモリはまた、数ある中でもフラッシュ、またはダイナミックランダムアクセスメモリ(DRAM)などの多様な形をとることができる。共有メモリはしばしば、メモリの複数の物理ブロックに分割される。複数の処理コアのそれぞれは、共有メモリコントローラを通じて共有メモリにアクセスする。共有メモリコントローラは、様々なマスタおよびメモリの複数の物理ブロックの間のデータの流れを調節する。共有メモリコントローラはしばしば、SoC性能に対するボトルネックとなる。
本明細書で開示される実施形態は、共有メモリコントローラ、および共有メモリを制御する方法を提供する。
共有メモリを制御する実施形態方法は以下を含む。共有メモリにアクセスするためのトランザクションは、マスタから受信される。トランザクションは、それぞれのトランザクションのためのビートレベルメモリアクセスコマンドに分割される。トランザクションのそれぞれは、少なくとも1つのビートレベルメモリアクセスコマンドに分割され、トランザクションのうちの少なくとも1つは、複数のビートレベルメモリアクセスコマンドに分割される。トランザクションのそれぞれに対して、サービス品質がアクセスされる。トランザクションに関連付けられたビートレベルメモリアクセスコマンドは、それぞれのトランザクションに対するサービス品質に基づいて調停(arbitrate)される。ビートレベルメモリアクセスコマンドは、ビートレベルメモリアクセスコマンドの調停の結果に基づいて、共有メモリにディスパッチ(dispatch)される。
実施形態は、共有メモリのためのコントローラを含む。コントローラは、共有メモリにアクセスするためのトランザクションをスキャンイン(scan−in)し、トランザクションをビートレベルメモリアクセスコマンドに分割するように構成されたトランザクションスキャナを備える。トランザクションのそれぞれは少なくとも1つのビートレベルメモリアクセスコマンドに分割可能であり、トランザクションのうちの少なくとも1つは複数のビートレベルメモリアクセスコマンドに分割可能である。コントローラはまた、共有メモリ内の複数の共有メモリブロックに対応する複数のコマンドアービタ(arbiter)を備えたコマンドスーパーアービタを備える。コマンドスーパーアービタは、トランザクションのそれぞれに対するサービス品質にアクセスし、トランザクションに関連付けられたビートレベルメモリアクセスコマンドを、複数のトランザクションのそれぞれに対するサービス品質に基づいて調停し、ビートレベルメモリアクセスコマンドを、ビートレベルメモリアクセスコマンドの調停の結果に基づいて、共有メモリブロックにディスパッチするように構成される。
実施形態は、共有メモリブロックと、共有メモリブロックにアクセスするために、それぞれの読み出し/書き込みトランザクションを生成するように構成されたマスタと、共有メモリブロックとマスタとの間に結合された共有メモリコントローラとを備えたシステムオンチップ(SoC)を含む。共有メモリコントローラは、トランザクションスキャナと、共有メモリブロックに対応するコマンドアービタとを備える。トランザクションスキャナは、読み出し/書き込みトランザクションをビートレベル読み出し/書き込みコマンドに、スキャンインおよび分割するように構成される。トランザクションスキャナは、読み出し/書き込みトランザクションのうちの少なくとも1つを複数のビートレベル読み出し/書き込みコマンドに分割するように構成される。コマンドアービタは、読み出し/書き込みトランザクションのそれぞれに対するサービス品質にアクセスし、読み出し/書き込みトランザクションに関連付けられたビートレベル読み出し/書き込みコマンドを、読み出し/書き込みトランザクションのそれぞれに対するサービス品質に基づいて調停し、それぞれの共有メモリブロックに対応するビートレベル読み出し/書き込みコマンドのシーケンスを生じるように構成される。コマンドアービタは、ビートレベル読み出し/書き込みコマンドのシーケンスを、それぞれの共有メモリブロックにディスパッチするようにさらに構成される。
この発明の概要は、発明を実施するための形態において以下でさらに述べられる選択された概念を、簡略化された形で導入するために提供される。この発明の概要は、特許請求される主題の主要な特徴または本質的な特徴を特定するためのものではなく、特許請求される主題の範囲を決定するための補助として用いられるためのものでもない。特許請求される主題は、背景技術において記載された、いずれかのまたはすべての欠点を解決する実装形態に限定されない。
本開示の態様は例として示され、類似の参照は類似の要素を示す添付の図に限定されない。
共有メモリコントローラまたは共有メモリを制御する方法がその中で具体化または遂行されてよい、SoCの一実施形態のブロック図である。 図1の共有メモリコントローラの一実施形態のブロック図である。 3つの共有メモリトランザクションを示す図である。 共有メモリのためのコントローラの実施形態を通って流れる、図3の共有メモリトランザクションの図である。 コマンドアービタの一実施形態の図である。 コマンドアービタの別の実施形態の図である。 共有メモリを制御する方法の一実施形態のフローチャートである。 ビートレベルメモリアクセスコマンドを、それぞれのトランザクションに対するQoSに基づいて調停する方法の一実施形態のフローチャートである。 トランザクションに対するQoSにアクセスし、トランザクションに関連付けられたビートレベルメモリアクセスコマンドを、QoSに基づいて調停する処理の一実施形態のフローチャートである。 トランザクションに対するQoSにアクセスし、トランザクションに関連付けられたビートレベルメモリアクセスコマンドをQoSに基づいて調停する処理の別の実施形態のフローチャートである。 物理メモリブロックに結合されたコマンドアービタおよびブロックコントローラの一実施形態の図である。 物理メモリサブブロックに結合されたコマンドアービタおよびブロックコントローラの別の実施形態の図である。
本開示は、一般に述べられると、共有メモリにアクセスするための技術に関する。少なくとも1つのマスタ(プロセッサなど)、共有メモリ、および共有メモリコントローラを有する通常のSoCにおいて、マスタはトランザクションを介して共有メモリにアクセスする。トランザクションは、読み出しコマンドまたは書き込みコマンドなどのメモリアクセスコマンドでよい。マスタは、読み出しコマンドまたは書き込みコマンドを生成し、それを共有メモリコントローラに送る。本明細書において読み出し/書き込みコマンドという用語は、読み出しコマンドまたは書き込みコマンドであるコマンドを指すように用いられる。単一の処理コアに限定される場合、読み出し/書き込みコマンドは単に実行され、メモリはアクセスされる。マルチコアSoCにおいてコアのそれぞれは、読み出し/書き込みコマンドを同時に生成することができ、それぞれがトランザクションに対応する。複数の読み出し/書き込みコマンドは、どれがいつ遂行されることになるかを決定するために調停される。
1つのトランザクションは、あるデータ量を共有メモリから読み出す、またはそれに書き込むことを目的とする。所与のクロックサイクル内でメモリの所与の物理ブロックから読み出されまたはそれに書き込まれることができるデータ量は、一般に共有メモリをSoCに結合するバスのサイズによって制限される。バスが8ビット幅である場合、クロックサイクル当たり最大の8ビット(1バイト)がメモリの所与の物理ブロックに書き込まれることができる。同様にバスが32ビット幅である場合、最大は32ビット(4バイト)である。各トランザクションは、バス幅に適するように、より小さな部分に分割されることができる。これらのより小さな部分のそれぞれはビートと呼ばれ、バス幅に一致するサイズを有してよい。例えば共有メモリに対して8ビットバス幅を有するSoCにおいて、共有メモリに対して64ビットのデータを読み出すまたは書き込むためのトランザクションは、8つのビートに分割されるようになり、各ビートは8ビットのサイズを有する。トランザクションの各ビートは、独立してアドレス指定されることができ、これは所与のトランザクションがデータを、メモリの1つまたは複数の物理ブロックから読み出させ、またはそれに書き込ませることができることを意味する。メモリのブロックは絶対的にアドレス指定されることができ、またはメモリブロック番号およびブロック内のオフセットによってアドレス指定されることができる。さらにいくつかのタイプのメモリは、複数の同時の読み出しおよび書き込みコマンドを取り扱うことができ、他は1つの読み出しまたは書き込みコマンドのみを取り扱うことができ、他は1つの読み出しおよび1つの書き込みのみを取り扱うことができる。
通常の共有メモリコントローラは、複数のマスタ、共有メモリコントローラ、および共有メモリの間の読み出し/書き込みコマンドおよびデータの流れを調節するために、スイッチングファブリック(fabric)に依存する。いくつかの従来のスイッチングファブリックは、トランザクションレベル細分性で、複数のマスタによって生成されたトラフィックを調停し、これはマルチコアSoCの性能、特に読み出しおよび書き込みアクセス待ち時間を悪化させる。最初に1つのトランザクションが共有メモリにアクセスすることが許され、次いで別のトランザクションが、スイッチングファブリックを通じて共有メモリにアクセスすることが許される。上述のようにマルチコアSoCにおいて、複数のトランザクションがスイッチングファブリックに同時に到着することができる。例えば上記64ビットトランザクションと同時並行して、別の32ビットのトランザクションが到着すると仮定する。また64ビットトランザクションは、より高い優先度であると仮定する。このケースにおいて32ビットトランザクションは、それが共有メモリにディスパッチされる前に、64ビットトランザクションが完了することを待機する。
スイッチングファブリックを利用したいくつかの従来のマルチコアSoCは、メモリアクセス待ち時間を低減するためにトランザクションのための調停細分性のサイズを制限する。例えば1つの大きな高優先度トランザクションは、かなりの時間、共有メモリコントローラを占有することができ、すべての他のトランザクションに対して大きい待ち時間を引き起こす。
本明細書で開示される実施形態は、1つまたは複数のマスタ(例えば処理コア)からのアクティブなコマンドを同時並行してスキャンインし、同時並行したビートレベル調停を行うように構成された共有メモリコントローラを提供する。さらに共有メモリコントローラは、メモリの様々な物理ブロックへのビートレベル読み出し/書き込みコマンドの同時並行したディスパッチを可能にする、インターリーブされたメモリを使用することができる。代替的実施形態においてメモリは、直線的に体系化されることができる。
いくつかの実施形態において共有メモリコントローラは、サービス品質(QoS)認識型である。一実施形態の共有メモリコントローラは、ビートレベルメモリアクセスコマンドを、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションのQoSに基づいて調停する。これはさらなる性能改善を提供する。例えば1つのマスタにとっては、トランザクションの他の部分が完了するのが遅くなることを犠牲にしても、トランザクションの一定の部分ができるだけ速く完了することが、より重要となることがある。別のマスタにとっては、トランザクション全体ができるだけ速く完了することが、より重要となることがある。いくつかの実施形態の共有メモリコントローラは、マスタの必要性に対して調整されたビートレベル調停方式を選択する。
一実施形態において共有メモリコントローラは、待ち時間認識型である。共有メモリコントローラは、ビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるために待機する時間の増加に応答して、ビートレベルメモリアクセスコマンドのスケジューリング重みを増加させる。これはメモリアクセス枯渇を緩和することができる。
一実施形態において共有メモリコントローラは、クリティカルビート認識型である。共有メモリコントローラは、トランザクションにとって、よりクリティカル(critical)なビートレベルメモリアクセスコマンドに、より高いスケジューリング重みを割り当ててよい。これは共有メモリコントローラが、よりクリティカルなデータをより速くマスタに返すことができることを可能にする。
共有メモリコントローラがどのように(QoS)認識型になってよいかの、さらなる多くの例がある。例えばマスタが共有メモリコントローラに送るトランザクションのそれぞれに対して、タイミングバジェット(budget)が存在してよい。いくつかの実施形態の共有メモリコントローラは、トランザクションのタイミングバジェットを満たすことを助けるために、ビートレベルコマンドのスケジューリングを段階的に拡大する。
いくつかの実施形態において共有メモリコントローラは、帯域幅認識型である。例えば共有メモリコントローラは、様々なタイプのトランザクションに割り振られた帯域幅を認識する。共有メモリコントローラは、帯域幅割り振りを実施することを助けるために、ビートレベルメモリアクセスコマンドを絞ってよい。
図1は、共有メモリコントローラまたは共有メモリを制御する方法がその中で具体化または遂行されてよい、SoC100の一実施形態のブロック図である。SoC100は、バス、ネットワーク(例えばパケットネットワーク)などの相互接続部140によって共有メモリコントローラ120に結合された、共有メモリ110を含む。SoC100はまた、DSP130−1、DSP130−2、DSP130−3、CPU132−1、CPU132−2、およびハードウェアアクセラレータ(HAC)134−1を含み、これらは本明細書では「マスタ」と呼ばれる。代替的実施形態は、任意の数およびタイプのマスタ(例えばプロセッサ、プロセッサコア、CPU、DSP、およびHAC)を含むことができる。
マスタは、相互接続部135上で共有メモリコントローラ120と通信する。相互接続部135は、1つまたは複数のバス、1つまたは複数のネットワーク(パケット交換ネットワークなど)、またはバスおよびネットワークの何らかの組み合わせにより実施されてよい。相互接続部135内の様々なバスのバス幅は、他のバスと同じであってもよいし、同じでなくてもよい。例えば相互接続部内のいくつかのバスは32ビット幅でよく、他は64ビット幅である。したがって一例として1つのマスタは32ビットバス上で通信してよく、別のマスタは64ビットバス上で通信する。共有メモリコントローラ120は、1つの可能性として、マスタの1つまたは複数に直接接続されてよいことに留意されたい。相互接続部140は、相互接続部135内のバスの幅と同じまたは異なる幅であるバスを有することができる。また相互接続部130および140内の様々なバスおよびネットワークは、同じまたは異なるプロトコルを遵守してよい。一実施形態においてマスタの1つまたは複数は、共有メモリコントローラ120へのポイントツーポイント直接接続により構成される。これはビートレベル調停の実施形態を用いたとき、高い性能を達成することを助けることができる。
図1の実施形態において、共有メモリ110、共有メモリコントローラ120、DSP130−1から130−3、CPU132−1、CPU132−2、およびHAC134−1は、共通の周波数でクロックされることができ、または独立にクロックされることができる。また共有メモリ110、共有メモリコントローラ120、DSP130−1から130−3、CPU132−1、CPU132−2、およびHAC134−1は、同期的にまたは非同期的にクロックされることができる。同期的にクロックされる場合、共有メモリ110および共有メモリコントローラ120のためのクロック速度は、DSP130−1から130−3、CPU132−1、CPU132−2、およびHAC134−1のためのクロック速度に比例する。さらに非同期的にクロックされる場合、それぞれは異なる周波数において、および異なるクロック位相を有してクロックされることができる。例えば一実施形態において、DSP130−1から130−3は周波数Fでクロックされると仮定する。共有メモリ110および共有メモリコントローラ120は、1/2Fでクロックされてよい。別の実施形態において共有メモリ110は1/2Fでクロックされてよく、共有メモリコントローラ120は1/4Fでクロックされる。デバイスをオーバークロッキングすることは一般に電力を浪費し、アンダークロッキングは待ち時間を導入するので、特定の実施形態のためのクロック速度は、性能を電力とバランスさせるように決定されることができる。
DSP130−1から130−3、CPU132−1、CPU132−2、およびHAC134−1はそれぞれ読み出し/書き込みコマンドを生成することができ、それらは共有メモリコントローラ120に送られる。コマンドのそれぞれは、相互接続部140を介して共有メモリ110から読み出すまたはそれに書き込むことになるトランザクションに対応する。一実施形態において共有メモリコントローラ120は、すべてのアクティブな読み出し/書き込みトランザクションを同時並行してスキャンインし、それらをビートレベルメモリアクセスコマンドに分割するように構成される。各読み出し/書き込みトランザクションは、1つまたは複数のビートレベルメモリアクセスコマンドに分割されてよい。例えば読み出しトランザクションは、8つのビートレベル読み出しコマンドに分割されてよい。共有メモリコントローラ120は、ビートレベルコマンドに対してビートレベル調停を遂行するようにさらに構成される。ビートレベル調停は、いずれか1つのトランザクションに大きな待ち時間を経験させる可能性を緩和する。共有メモリ110が物理メモリのバンクを備える実施形態において、ビートレベル調停は、物理メモリの様々なバンクへの、ビートレベルメモリアクセスコマンドの同時並行したディスパッチをさらに可能にする。
いくつかの実施形態の共有メモリコントローラ120は、サービス品質(QoS)認識型である。例えば共有メモリコントローラ120は、マスタ、および/またはマスタからのトランザクションの1つまたは複数のQoSパラメータを認識する。QoSパラメータは、優先度、タイミングバジェット、および帯域幅割り振りを含むことができるが、それらに限定されない。
一実施形態において共有メモリコントローラ120は、同じトランザクションに関連付けられた異なるビートレベルメモリアクセスコマンドに、異なるスケジューリング重みを割り当てるように構成される。例えばビートレベルメモリアクセスコマンドの1つは、所与のトランザクション内で、他に比べてよりクリティカルであってよい。そのビートレベルメモリアクセスコマンドに、より高いまたはより大きなスケジューリング重みを割り当てることは、それがそのトランザクション内の他より速く完了することを可能にする。さらに、より低いスケジューリング重みを、そのトランザクション内の他のビートレベルメモリアクセスコマンドに割り当てることは、クリティカルさがより低いビートレベルメモリアクセスコマンドが、異なるトランザクションからのビートレベルメモリアクセスコマンドを阻止する可能性を防止し、または少なくとも低減してよい。
別の例として共有メモリコントローラ120は、ビートレベルメモリアクセスコマンドに対するスケジューリング重みを、それが共有メモリ110にディスパッチされるためにどれだけ多くのクロックサイクルだけ待機しているかに基づいて、割り当てるように構成される。一実施形態において、ビートレベルメモリアクセスコマンドが長く待機しているほど、スケジューリング重みは高くなる。これはより低い優先度のビートレベルメモリアクセスコマンドが、共有メモリ110にディスパッチされるために過度の時間、待機する必要がなくなることを確実にする。
いくつかの実施形態において共有メモリコントローラ120はまた、共有メモリ110からのビートレベル応答を、各トランザクションに対する1つまたは複数の応答に組み合わせる。例えば共有メモリコントローラ120が8つのビートに分割した読み出しトランザクションを仮定すると、読み出しデータは、共有メモリ110内の様々な物理メモリブロックから、8回取り出される。共有メモリコントローラ120は、それら8つのビートレベル読み出しデータ応答のそれぞれを集め、それらを読み出しトランザクションに対する単一の読み出しデータ応答に組み合わせてよい。次いで共有メモリコントローラ120は、トランザクションを指令したいずれかのマスタに、読み出しデータを返すことができる。
しかし共有メモリコントローラ120は、必ずしも読み出しデータのすべてを連続して送り返さないことに留意されたい。いくつかのケースにおいて、所与のトランザクションのための読み出しデータのクリティカルな部分は共有メモリ110から返ってよく、一方、そのトランザクションのための読み出しデータのクリティカルさがより低い部分は、共有メモリ110からまだ取り出されていない。このようなケースにおいて共有メモリコントローラ120は、トランザクションに対するビートレベル応答のすべてよりも少ないものからの読み出しデータを一緒にまとめ、そのデータをマスタに送ってよく、その結果マスタは最もクリティカルなデータをより速く受信する。次いで共有メモリコントローラ120は、トランザクションに関連付けられたクリティカルさがより低い読み出しデータを、そのデータが共有メモリ110から取り出されるのに応答して送るように、進行することができる。
別の例において、共有メモリコントローラが8つのビートに分ける、書き込みトランザクションを仮定すると、共有メモリ110内の8つの様々な宛先物理メモリブロックから、肯定応答が受信されてよい。いくつかの実施形態において共有メモリコントローラ120は、それら8つのビートレベル書き込み応答のそれぞれを集め、それらを書き込みトランザクションに対する単一の書き込み応答に組み合わせる。
図2は、図1の共有メモリコントローラ120の一実施形態のブロック図である。共有メモリコントローラ120は、トランザクションスキャナ210、コマンドスーパーアービタ220、コンバイナ240、およびスーパーバイザ260を含む。共有メモリコントローラ120は、N個の物理メモリブロック250−1から250−Nに結合される。同様にコマンドスーパーアービタ220は、N個の物理メモリブロックに対応するN個のコマンドアービタ230−1から230−Nを含む。いくつかの実施形態においてN個のコマンドアービタ230−1から230−Nのそれぞれは、個別の読み出しアービタおよび個別の書き込みアービタを含む。一実施形態においてコマンドアービタ230は、読み出しおよび書き込み調停の両方を一緒に行う。一実施形態においてトランザクションスキャナ210、コマンドスーパーアービタ220、コンバイナ240、およびスーパーバイザ260は、レジスタおよび/または組み合わせ論理を用いて実施される。しかし他の実装形態も用いられることができる。
トランザクションスキャナ210は、共有メモリコントローラ120に結合された様々なマスタ(例えば処理コア、プロセッサ、CPU、DSP、HACなど)からのすべてのアクティブなトランザクションを、同時並行してスキャンインするように構成される。アクティブなトランザクションは、読み出しトランザクション(RT)および書き込みトランザクション(WT)の両方を同時に含むことができる。トランザクションスキャナ210は、メモリアクセストランザクションをスキャンインし、それらを並列に処理する。メモリアクセストランザクションを並列に処理することは、次のメモリアクセストランザクションが共有メモリにディスパッチされる前に各メモリアクセストランザクションが終了するシリアル処理とは対照的である。メモリアクセストランザクションを並列に処理することは、メモリアクセストランザクションの2つ以上の部分が、同時並行して共有メモリにディスパッチされてよいことを意味する。すなわち第1のメモリアクセストランザクションが終了していなくても、第2のメモリアクセストランザクションの一部分は共有メモリ110にディスパッチされてよい。
メモリアクセストランザクションの処理においてトランザクションスキャナ210は、各メモリアクセストランザクションを、それのそれぞれのビートレベルメモリアクセスコマンドに分割し、または分ける(break)。次いでビートレベルコマンド(REQ)は、物理メモリブロック250−1から250−N内のアドレスに従って、コマンドスーパーアービタ220内の適切なコマンドアービタ230に転送される。したがって、トランザクションスキャナ210によって受信された各メモリアクセストランザクション(例えば読み出しまたは書き込み)に対して、トランザクションスキャナ210は、2つ以上のビートレベルメモリアクセスコマンド(REQ)を出力してよい。また所与のメモリアクセストランザクションに関連付けられたビートレベルメモリアクセスコマンドは、異なるコマンドアービタ230に渡されてよいことに留意されたい。例えば読み出しトランザクションのためのビートレベル読み出しコマンドの1つはコマンドアービタ230−1に、もう1つはコマンドアービタ230−2になどと、送られてよい。
上述のように各コマンドアービタ230は、物理メモリブロックの1つに対応してよい。例えば各コマンドアービタ230は、共有メモリブロック250の1つに対する調停を制御してよい。物理メモリブロック250−1から250−Nは、共有メモリ110の一実施形態である。一実施形態において物理メモリブロック250−1から250−Nは、物理メモリバンクである。一実施形態において物理メモリブロック250は、インターリーブされた物理メモリバンクである。一実施形態において物理メモリブロック250は、直線的にアドレス指定されたメモリバンクである。物理メモリブロック250−1から250−Nは、同じデータ幅または異なるデータ幅を有してよい。データ幅は、物理メモリブロック250へのインターフェース(例えばデータバス)の幅を指す。一実施形態において物理メモリブロックのデータ幅は、その物理メモリブロックに対するビートサイズに対応する。これは異なるメモリブロック250は異なるビートサイズを有することができることを意味する。したがってトランザクションスキャナ210は、各メモリアクセストランザクションをそれのそれぞれのビートレベルメモリアクセスコマンドに分割するとき、メモリアクセストランザクションを、コマンドアービタ230がどの物理メモリブロック250に対応するかに応じて、適切なサイズのビートに分ける(break)。
コマンドアービタ230−1から230−Nのそれぞれは、トランザクションスキャナ210に結合され、ビートレベルメモリアクセスコマンドを1つまたは複数の基準に従って調停するように構成される。例示の基準は、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションに割り当てられた優先度、ビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるためにどれだけ多くのクロックサイクルだけ待機しているか、ビートレベルメモリアクセスコマンドがどれだけクリティカルであるか、トランザクションに対するタイミングバジェット、トランザクションに関連付けられたモードに対する共有メモリ帯域幅割り振りを含むが、それらに限定されない。これらの基準の任意の組み合わせ、または他の基準が用いられることができる。
各コマンドアービタ230は、それが処理するビートレベルメモリアクセスコマンドのそれぞれに、スケジューリング重みを割り当ててよい。より高いスケジューリング重みを有するビートレベルメモリアクセスコマンドは、より低いスケジューリング重みを有するものより前に、共有メモリ110にディスパッチされてよい。各コマンドアービタ230は、それが、それの物理メモリブロック250に対するビートレベルメモリアクセスコマンドのシーケンス(SEQ)に処理する、ビートレベルメモリアクセスコマンドを順序付けてよい。例えばコマンドアービタ230−1は、それが物理メモリブロック250−1に対するビートレベルメモリアクセスコマンドのシーケンスに処理する、ビートレベルメモリアクセスコマンドを順序付けてよい。各コマンドアービタ230はシーケンス(SEQ)をコンバイナ240に送ってよく、これは物理メモリブロック250への、適切なビートレベルメモリアクセスコマンドの実際のディスパッチを取り扱ってよい。調停は、コマンドアービタ230−1から230−Nの間で並列に遂行されてよい。
読み出しデータ/書き込み応答コンバイナ240は、物理メモリブロック250−1から250−N、ならびにコマンドスーパーアービタ220およびトランザクションスキャナ210に結合される。ビートレベル書き込みコマンドの遂行において、書き込みアドレス(WA)および書き込みデータ(WAD)は、適切な物理メモリブロックにディスパッチされる。物理メモリブロックは、ビートレベル書き込み応答(BWR)を書き込み応答コンバイナ240に返して、ビートレベル書き込みコマンドが対処されたことを確認する。各ビートレベル応答を、書き込みトランザクション応答(WTR)において発信元のプロセッサに渡し戻すのではなく、読み出しデータ/書き込み応答コンバイナ240は、ビートレベル書き込み応答を集め、それらをトランザクションに対する単一の書き込み応答(WRESP)に組み合わせてよく、これはトランザクションスキャナ210に送られてよい。次いで単一の書き込み応答は、トランザクションを指令したプロセッサに、書き込みトランザクション応答(WTR)において渡し戻されてよい。
ビートレベル読み出しコマンドの遂行において、読み出しアドレス(RA)は適切な物理メモリブロックにディスパッチされ、そのビートに対する読み出しデータ(BRD)が返される。読み出しデータ/書き込み応答コンバイナ240は、物理メモリブロックからの様々なビートレベル読み出しデータ(BRD)を集め、それをトランザクションに対する読み出しデータ応答(RD)に組み合わせてよく、これはトランザクションスキャナ210に送られてよい。次いで読み出しデータ応答(RD)は、トランザクションを指令したプロセッサに、読み出しトランザクション応答(RTR)において渡し戻されてよい。
一実施形態において読み出しデータ/書き込み応答コンバイナ240は、読み出しデータ応答(RD)を読み出しトランザクション応答(RTR)において、トランザクションスキャナ210に送り返す前に、所与のトランザクションのためのすべてのビートレベル読み出しデータコマンドが完了するのを待機しない。これは共有メモリコントローラ120が、トランザクションに関連付けられたすべてのビートレベル読み出しデータコマンドが完了する前に、読み出し応答をマスタに送ることを可能にする。したがってマスタは、より(または最も)クリティカルな読み出しデータをより速く受信することができる。
スーパーバイザ260は、特定のマスタに関する構成情報を受信し、それを用いて、そのマスタに対するトランザクションが、共有メモリコントローラ120によってどのように調停されることになるかを構成する。構成情報は、構成インターフェースにおいて提供されてよい。例えばSoCにおけるプロセッサ上で実行するソフトウェアは、構成情報をスーパーバイザ260に提供することができる。スーパーバイザ260は、トランザクションスキャナ210、コマンドスーパーアービタ220、およびコンバイナ240に、これらの要素が各マスタからのトランザクションをどのように処理するかを構成するために、結合される。所与のマスタに対する構成情報は、動的とすることができることに留意されたい。例えば構成情報は時間と共に、構成インターフェースを介して更新されてよい。またマスタは、動作条件に基づいて構成情報を更新することができる。したがって構成情報は、同じマスタに関連付けられた異なるトランザクションに対して、異なることができる。
構成情報は、マスタのQoSに関するものでよい。例えば構成情報は、マスタに対するメモリアクセストランザクションが、タイミング感知(sensitive)として、又は帯域幅感知として扱われるべきかを指定してよい。タイミング感知の例は、要求されたデータの一部分が他の部分よりクリティカルであるものである。例えばCPUは、最初にデータの1つのワードに対するL1キャッシュルックアップを行うことがあり、キャッシュミスという結果となる。次いでCPUは、キャッシュライン全体を満たすように、共有メモリ110からデータの8ワードを要求するトランザクションを送ってよい。この例においてCPUは実際に、直ちにデータの他の7ワードを必要としないことがあるが、CPUは8ワードに対してCPUキャッシュフィルポリシーに適合するように要求を行う。この例においてキャッシュミスに関連付けられたワードは、「最もクリティカルなワード」と呼ばれてよい。一実施形態において共有メモリコントローラ120は、トランザクションにおける最もクリティカルなワードを他のワードより高速に提供するように、ビートレベル読み出しコマンドを調停する。例えば共有メモリコントローラ120は、トランザクションに関連付けられたデータのすべてが共有メモリ110からアクセスされる前に、最もクリティカルなワードをCPUに送り返すことができる。帯域幅izonゅょの例は、マスタがトランザクションに関連付けられたデータのすべてを、単にできるだけ早く得ることを望むことである。
QoSに関する構成情報の別の例は、トランザクションに対するタイミングバジェットである。一実施形態において共有メモリコントローラ120は、トランザクションがタイミングバジェットを満たすことを助けるために、ビートレベルメモリアクセスコマンドの優先度を段階的に拡大する。
QoSに関する構成情報の別の例は、帯域幅割り振り情報である。各マスタには異なるモードが割り当てられてよい。例えば無線領域においては、ユニバーサル移動体通信システム(UMTS)モード、ロングタームエボリューション(LTE)モード、移動体通信用グローバルシステム(GSM)モードなどが存在してよい。各モードには、共有メモリ110のアクセスに関して、一定の帯域幅が割り振られてよい。例えばモードAには帯域幅の62パーセントが割り振られてよく、モードBには帯域幅の31パーセントが割り振られてよく、モードCには帯域幅の7パーセントが割り振られてよい。一実施形態において共有メモリコントローラ120は、ビートレベルメモリアクセスコマンドを、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションを送ったマスタのモードに基づいて絞る。
QoS情報は、トランザクションに関連付けられた側波帯情報において、共有メモリコントローラ120によってアクセスされてもよいことに留意されたい。例えば優先度、タイミングバジェット、帯域幅割り振り、帯域幅割り振りを示すモードなどは、マスタからの側波帯情報において提供されることができる。戻って図1を参照すると、側波帯情報は相互接続部135上で送られることができる。側波帯情報は、トランザクションとは別々に送られてよい。
QoS情報はまた、トランザクションの一部として送られることができる。例えばトランザクション内に、この特定のトランザクションの優先度を指定するフィールドが存在してよい。これは例えば、このトランザクションがどれだけ重要かを示す、2または3ビットとすることができる。
一実施形態においてコマンドスーパーアービタ220は、構成情報に応じて異なるスケジューリング重み付け方式を使用する。例えば1つの方式は、トランザクションの優先度、およびどれだけ長くビートレベルメモリアクセスコマンドが待機しているかを要因として含めることができる。別の方式は、トランザクションの優先度、どれだけ長くビートレベルメモリアクセスコマンドが待機しているか、およびトランザクション内の各ビートレベルメモリアクセスコマンドがどれだけクリティカルであるかを要因として含めることができる。さらに他の方式が用いられることができる。さらにプロセッサに対するスケジューリング重み付け方式は、動的に計算され、調整されることができる。
図3は3つの共有メモリトランザクション、トランザクション300、トランザクション320、およびトランザクション340の図である。トランザクション300は4つのビート、ビート310−1から310−4を含む。トランザクション320は2つのビート、ビート330−1および330−2を含む。トランザクション340は3つのビート、ビート350−1、350−2、および350−3を含む。
図4は、共有メモリのためのコントローラ400の実施形態を通って流れる、図3の共有メモリトランザクションの図である。コントローラ400は、図2のトランザクションスキャナ210およびコマンドスーパーアービタ220を含む。トランザクション300、トランザクション320、およびトランザクション340は、トランザクション410−1、トランザクション410−2、およびトランザクション410−3の3つの対応する読み出し/書き込みトランザクションの形で、トランザクションスキャナ210に同時に到着してよい。この例において3つのメモリアクセストランザクションは、3つの異なるマスタによって送られる。トランザクションスキャナ210は、3つの読み出し/書き込みトランザクションを同時並行してスキャンインし、それぞれをそれのそれぞれのビートレベルメモリアクセスコマンドに分割する。トランザクションスキャナ210は、トランザクション300をビート310−1から310−4に、トランザクション320をビート330−1および330−2に、トランザクション340をビート350−1、350−2、および350−3に分割する。
次いでビートレベルコマンドは、コマンドスーパーアービタ220に渡される。いくつかの実施形態においてトランザクションスキャナ210は、コマンドスーパーアービタ220に直接接続によって接続され、他の実施形態においてそれらは、スイッチングファブリック、パケットネットワークなどの相互接続部によって接続される。ビートレベルメモリアクセスコマンドのそれぞれは、それの宛先メモリアドレスに従ってコマンドアービタに渡る。次いでコマンドアービタは、ビートレベルメモリアクセスコマンドが、コントローラ400が結合された様々な物理メモリブロックにディスパッチされることになるシーケンスを決定する。一実施形態においてシーケンスは、トランザクション300、320、および340のそれぞれに対する調停方式に従って決定される。
図5は、図2のコマンドアービタ230の一実施形態の図である。コマンドアービタ230は、1つの物理メモリブロック250に対するビートレベルメモリアクセスコマンドをスケジューリングしてよい。この例においてコマンドアービタ230は、ビートレベルメモリアクセスコマンド502−1から502−4をスケジューリングする。4つのビートレベルメモリアクセスコマンド502−1から502−4は、共有メモリ110にまだディスパッチされていないビートレベルメモリアクセスコマンドを表す。必要ではないが、ビートレベルメモリアクセスコマンド502−1から502−4のそれぞれは、異なるトランザクションに関連付けられることが可能である。任意の時点において、コマンドアービタ230によってスケジューリングされる、4つより多いまたは少ないビートレベルメモリアクセスコマンドが存在してよい。
コマンドアービタ230は、遅延マネージャ504−1から504−4、優先度計算506−1から506−4、要求スケジューラ510、およびキュー520を備える。遅延マネージャ504−1から504−4、優先度計算506−1から506−4、および要求スケジューラ510は、レジスタおよび/または組み合わせ論理を含む論理によって実施されてよいが、それらに限定されない。
この実施形態においてコマンドアービタ230は、各ビートレベルメモリアクセスコマンドに、遅延および優先度に基づいてスケジューリング重みを割り当てる。例えば遅延マネージャ504−1および優先度計算506−1は、ビートレベルメモリアクセスコマンド502−1に対するスケジューリング重みを決定する。他の遅延マネージャ504−2から504−4、および優先度計算506−2から506−4は、ビートレベルメモリアクセスコマンド502−2から502−4にスケジューリング重みを割り当てる。一実施形態においてコマンドアービタ230は、クロックサイクルごとに、共有メモリにまだディスパッチされていない任意のビートレベルメモリアクセスコマンドに、新しいスケジューリング重みを割り当てる。
一実施形態において遅延は、ビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるために、コマンドアービタ230においてどれだけ多くのクロックサイクルだけ待機しているかである。一実施形態において優先度は、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度である。コマンドアービタ230がこれら2つのパラメータを要因として含めることができる多くの方法がある。一例は式1に示される。
Figure 0006755935
式1において「W」はビートレベルメモリアクセスコマンドに対するスケジューリング重み、「d」はクロックサイクルでの、ビートレベルメモリアクセスコマンドによって経験される遅延、および「p」はビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度である。優先度は、トランザクションにおける数ビットの情報として提供されてよい。優先度は、4ビットの例を用いて1と16の間の値とすることができる。式1において、より高い優先度は、より高い値として表される。一実施形態において「p」は、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度に基づくが、時間と共に変化することができる。これの例は、式2に関して以下で論じられる。
式1において遅延は、定数であるスケーリングファクタ「b」によって除算される。スケーリングファクタは2のべき乗でよく、これは、除算はシフトによって行われることができるので、効率的な計算に役立つ。例として「b」は4、8、16、32などとすることができる。他の2のべき乗が用いられてもよい。しかしクロックサイクルでの遅延が、何らかの2のべき乗で除算されることは必要ではない。また遅延は、クロックサイクル以外の方式で表されることができる。式1において「a」も定数である。一例として「a」は2である。しかし「a」は別の値を有することができる。
一実施形態において遅延マネージャ504および優先度計算506は、式1の計算を行う。そうするために遅延マネージャ504は、それが処理しているビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるために待機しているクロックサイクルの数を追跡してよい。優先度計算506−1から506−4は優先度P1からP4を入力し、これらはそれぞれのビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度でよい。
各ビートレベルメモリアクセスコマンド502に対するスケジューリング重みに基づいて、要求スケジューラ510はキュー520を形成する。キュー520は、ビートレベルメモリアクセスコマンドが、このコマンドアービタ230に関連付けられた物理メモリブロック250にディスパッチされることになる順序を表す。例えば式1によって表される待ち時間認識型係数は、ビートレベルメモリアクセスコマンドがキュー520上で行き詰まることを防止することに留意されたい。例えば、それの関連付けられたトランザクションがより高い優先度を有するビートレベルメモリアクセスコマンドが、キュー上に置かれ続けても、それの関連付けられたトランザクションがより低い優先度を有するビートレベルメモリアクセスコマンドは、共有メモリにディスパッチされるための待機が増加するのに応答して、事実上キュー内のより高い位置に昇格されてよい。
時間と共にビートレベルメモリアクセスコマンド502のスケジューリング重みは、遅延値が変化することにより、変化できることに留意されたい。要求スケジューラ510は情報を遅延マネージャ504にフィードバックし、その結果遅延マネージャはそれのビートレベルメモリアクセスコマンドがディスパッチされたかどうかを知る。したがってそれのビートレベルメモリアクセスコマンドがディスパッチされない限り、遅延マネージャ504は、クロックサイクルごとに遅延をインクリメントし、新しい遅延値を優先度計算506に出力してよい。時にはスケジューリング重みは、最大値に達することができる。このケースにおいてスケジューリング優先度は、ビートレベルメモリアクセスコマンドが最大値に達する順序に基づいてよい。
一実施形態においてビートレベルメモリアクセスコマンドの優先度は、ビートレベルメモリアクセスコマンドが共有メモリ110にディスパッチされるために待機するのに従って、変化することができる。一例としてこれは、トランザクションに対するタイミングバジェットを満たすことを助けるためになされてよい。式2は、ビートレベルメモリアクセスコマンドに対する優先度を、遅延の関数とする一例を提供する。
(2) p=f(t−d)
式2において「t」は、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションのためのタイミングバジェットに対するパラメータを表す。やはり「d」は、ビートレベルメモリアクセスコマンドに対する遅延を、例えばクロックサイクルで表す。式2において「f」は、パラメータtおよびdに適用される何らかの関数を表す。式2の解釈は、「t−d」が小さいほど、「p」は大きくなることである。これは遅延が増加するのに従って、優先度(p)は増加することを示す。これはトランザクションのためのビートレベルメモリアクセスコマンドのすべてが、そのトランザクションに対するタイミングバジェットを満たすことを助けることができる。
一実施形態において優先度計算506−1から506−4に供給される値P1からP4は、式2に基づいてそれぞれの遅延マネージャ504−1から504−4によって計算される。タイミングバジェットに基づいてトランザクションの優先度を変更するために、他の実装形態が用いられてよい。
図6は、図2のコマンドアービタ230の別の実施形態の図である。この実施形態は、図5のコマンドアービタ230の一実施形態と同様であるが、ビートレベル優先度情報を追加する。例えば優先度計算506−1から506−4は、ビートレベル優先度情報B1からB4を入力する。これはコマンドアービタ230が、トランザクションのクリティカルな部分に対して待ち時間感知となるようにする。例えばコマンドアービタ230は、クリティカルビート待ち時間感知としてよい。
一実施形態においてコマンドアービタ230は、各ビートレベルメモリアクセスコマンドにスケジューリング重みを、各ビートレベルメモリアクセスコマンドの遅延、ビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度、およびビートレベルメモリアクセスコマンドがトランザクションにとってどれだけクリティカルであるかに基づいて割り当てる。
一実施形態において図5の例でのように遅延は、ビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるために、コマンドアービタ230においてどれだけ多くのクロックサイクルだけ待機しているかとしてよい。
コマンドアービタ230がこれら3つのパラメータを要因として含めることができる多くの方法がある。一例は式3に示される。
Figure 0006755935
式3において「W」はビートレベルメモリアクセスコマンドに対するスケジューリング重み、「d」はクロックサイクルでの、ビートレベルメモリアクセスコマンドによって経験される遅延、および「p」はビートレベルメモリアクセスコマンドに関連付けられたトランザクションの優先度である。優先度は静的な値でよく、または式2に関して上述されたように、ビートレベルメモリアクセスコマンドがスケジューリングされるために待機するのに従って動的に調整されてよい。式3において「c」はスケーリングファクタであり、これは定数である。これは、式1におけるスケーリングファクタ「b」と同様な役割を果たす。
一実施形態においてbeat_priorityは、ビートがトランザクションにとってどれだけクリティカルであるかに依存する。式3において最もクリティカルなビートは、beat_priorityに対して最も高い値を受け取る。必要ではないが、トランザクション内の各ビートに対して、異なるbeat_priorityを有することが可能である。
beat_priorityを割り当てることを助けるために、トランザクション内の各ビートにビート識別子(beat_ID)が割り当てられてよい。例えばトランザクション内に16個のビートがある場合、それらは0から15のbeat_IDで順序付けられてよい。一例としてビートは、beat_IDに従ってクリティカルさにおいて順序付けられてよく、最もクリティカルなビートには0のbeat_IDが割り当てられてよい。一実施形態においてbeat_priorityは、式3での計算の論理を簡略化するために、2のべき乗である。例えばbeat_ID0には、8のbeat_priorityが割り当てられてよく、beat_ID1から3には、4のbeat_priorityが割り当てられてよく、beat_ID4から7には、2のbeat_priorityが割り当てられてよく、beat_ID8以上には、1のbeat_priorityが割り当てられてよい。
一実施形態において共有メモリコントローラ120は、トランザクションに基づいて最もクリティカルなビートを識別する。例えばトランザクションは、L1キャッシュミスの結果としてよい。このケースにおいてマスタは、トランザクションにおいてデータのすべてが要求されることを不要とすることができる。共有メモリコントローラ120は、0のbeat_IDをキャッシュミスに関連付けられたビートに割り当ててよい。他のビートには、共有メモリ内のそれらのアドレスに基づいてbeat_IDが割り当てられることができる。例えばアドレスが増加するのに従って、beat_IDは増加する。しかし最もクリティカルなビートは、必ずしも最も低いアドレスを有するものではないことに留意されたい。したがって最も高いアドレスを有するビートの後に、最も低いアドレスを有するビートに次のbeat_IDが割り当てられることができる。次いで、すべてのビートにbeat_IDが割り当てられるまで、漸進的により高いアドレスには、より高いbeat_IDというパターンが再開されることができる。
マスタは、トランザクション内に情報を提供することによって、どのビートが最もクリティカルなビートであるかをシグナリングすることができる。例えばマスタは、トランザクションのどの部分がキャッシュミスに関連付けられるかを示してよい。しかし共有メモリコントローラ120が最もクリティカルなビートを決定するために、他の技法が用いられることができる。
式3における優先度は、式2に関して論じられたように、タイミングバジェットを満たすように調整されることができることに留意されたい。式2は、遅延が増加するのに従って優先度(p)は増加することを示すことを想起されたい。これはトランザクションのためのビートレベルメモリアクセスコマンドのすべてが、そのトランザクションに対するタイミングバジェットを満たすことを助けることができる。
図7は、共有メモリを制御する処理700の一実施形態のフロー図である。方法は、共有メモリコントローラ120の一実施形態によって行われる。方法の様々なステップは、図1または2の共有メモリコントローラ120、ならびに図5および6のコマンドアービタ230によって行われてよい。したがって図7を論じるとき、それらの図内の要素への参照がなされる。しかし図7の方法は、図1または2の共有メモリコントローラ120、または図5または6のコマンドアービタ230に限定されない。
ステップ710は、マスタから、共有メモリ110にアクセスするためのメモリアクセストランザクションを受信することを含む。一実施形態においてこれらのトランザクションは、トランザクションスキャナ210によって受信される。一実施形態においてメモリアクセストランザクションは、トランザクションスキャナ210によって同時並行してスキャンインされる。複数のメモリアクセストランザクションは、例えばプロセッサコア、プロセッサ、CPU、DSP、HACなどの1つまたは複数のマスタから生じることができる。各メモリアクセストランザクションは、1つまたは複数のビートに分割可能であり、そのサイズは、共有メモリコントローラ120がそれを通じて共有メモリ110にアクセスする、相互接続部140のバス幅に依存してよい。
ステップ720は、メモリアクセストランザクションを、トランザクションのためのビートレベルメモリアクセスコマンドに分割することを含む。トランザクションのそれぞれは少なくとも1つのビートレベルメモリアクセスコマンドに分割され、トランザクションのうちの少なくとも1つは複数のビートレベルメモリアクセスコマンドに分割される。潜在的にトランザクションのすべてが、複数のビートレベルメモリアクセスコマンドに分割されることができる。一実施形態においてトランザクションスキャナ210が、ステップ720を行う。ビートレベルメモリアクセスコマンドのそれぞれは、共有メモリ110内の特定のアドレスに向かう。所与のトランザクションに対して、各ビートレベルメモリアクセスコマンドに対する共有メモリアドレスは異なることができる。所与のトランザクションは、データを共有メモリの複数の物理ブロックに書き込ませ、またはそれらから読み出させることができる。
ステップ730は、トランザクションのそれぞれに対するQoSにアクセスすることを含む。ステップ730は、コマンドスーパーアービタ220がトランザクションに対するQoSを受信する、決定し、または読み出すことを含むが、それらに限定されない。いくつかのケースにおいてこれは、トランザクションを送ったマスタのQoSにアクセスすることを意味してよいことに留意されたい。例えば、時にはマスタに対するQoSは変化せず、またはまれに変化する。しかしいくつかのケースにおいてQoSは、所与のマスタに対する1つのトランザクションから次のトランザクションへと変化することができる。
QoSは、トランザクション内の構成情報、側波帯情報から、または他の方法でアクセスされることができる。ステップ730は、スーパーバイザ260が、記憶された構成情報をトランザクションスキャナ210、コマンドスーパーアービタ220、またはコンバイナ240にいずれかに提供することを含んでよい。ステップ730は、トランザクション自体からの情報にアクセスすることを含んでよい。例えばトランザクションは、優先度ビットを含んでよい。ステップ730は、マスタから帯域外情報にアクセスすることを含んでよい。帯域外情報は、マスタから相互接続部135−1から135−6の1つ上で受信されることができる。
ステップ740は、トランザクションのそれぞれに関連付けられたビートレベルメモリアクセスコマンドを、それぞれのトランザクションに対するQoSに基づいて調停することを含む。一実施形態においてステップ740は、トランザクションのそれぞれに対するQoSに基づく調停方式を選択することを含む。ステップ740は、トランザクションを送ったマスタに対するQoS、および/またはトランザクション自体に対するQoSを認識する方式で、ビートレベルメモリアクセスコマンドを調停するという結果となる。すなわち、所与のマスタに対する異なるトランザクションは、同じまたは異なるQoSを有することができる。
ビートレベルメモリアクセスコマンドは、調停ステップ740において同時並行に調停されてよい。調停は、共有メモリ110の物理ブロック250に対応するコマンドアービタ230を介して、共有メモリの各物理ブロックに対して並列に遂行されてよい。コマンドアービタ230は、読み出しアービタおよび書き込みアービタを有することができ、ビートレベル読み出しコマンドおよびビートレベル書き込みコマンドの独立の調停を可能にする。調停は、ビートレベルメモリアクセスコマンドのシーケンスを、それらのそれぞれのトランザクションの調停ポリシーに従って決定するように、共有メモリ110の物理ブロック250ごとに同時並行に遂行されてよい。
ステップ750は、ビートレベルメモリアクセスコマンドを、調停ステップ740の結果に基づいて共有メモリ110にディスパッチすることを含む。所与のトランザクションのためのビートレベルメモリアクセスコマンドは、異なる物理メモリブロック250にディスパッチされてよいことに留意されたい。したがって所与のトランザクションのためのビートレベルメモリアクセスコマンドは、異なるスケジューリングキュー上にあってよい。これは、必要ではないが、所与のトランザクションのビートレベルメモリアクセスコマンドの並列ディスパッチ(ならびに並列実行)を可能にする。
ステップ760において共有メモリコントローラ120は、トランザクションへの応答をマスタに返してよい。これは組み合わせるステップを含んでよい。組み合わせるステップは、それぞれの読み出しトランザクションに対するデータおよび応答を統合してよい。同様に組み合わせるステップは、それぞれの書き込みトランザクションに対する応答を統合してよい。
読み出しトランザクション時に、組み合わせるステップにおいて、ビートレベル読み出しデータは、共有メモリ110の様々な物理ブロック250から集められてよい。対応するトランザクションに対するすべての読み出しデータが集められた後、単一の読み出しデータ応答がマスタに向かって渡し戻されてよい。一実施形態において共有メモリコントローラ120は、マスタに応答を送り始める前に、様々なビートレベルメモリアクセスコマンドからの読み出しデータのすべてが完了するのを待機しない。例えばより(または最も)クリティカルなビートに対する読み出しデータは、他のビートが完了する前にマスタに送られてよい。
書き込みトランザクション時に、共有メモリ110の様々な物理ブロック250は、ビートレベル書き込み応答を生成して、ビートレベル書き込みコマンドが対処されたことを確認する。組み合わせるステップにおいてビートレベル書き込み応答は、共有メモリ110の様々な物理ブロック250から集められてよく、単一の書き込み応答がマスタに向かって渡し戻されてよい。
図8は、ビートレベルメモリアクセスコマンドを、それぞれのトランザクションに対するQoSに基づいて調停する処理800の一実施形態のフローチャートである。処理は、共有メモリコントローラ120の一実施形態によって行われる。これは、図7からのステップ740の一実施形態である。ステップ810において共有メモリコントローラ120は、トランザクションがタイミング感知か、又は帯域幅感知かを決定する。タイミング感知とは、トランザクションの一定の部分は、トランザクションの他の部分が共有メモリによって、より遅く処理されることを犠牲にしても、共有メモリによって、より速く処理されるべきであることを意味する。帯域幅感知とは、トランザクションの1つの部分に対する所与の優先度なしに、トランザクション全体が共有メモリによって速やかに処理されるべきであることを意味する。
一例としてCPUは、トランザクションからの読み出しデータの一定の部分をできるだけ速く受信することについて最も関心をもつという点で、タイミング感知としてよい。CPUは、所与のトランザクションに対する読み出しデータのすべてを受信することにおける遅延には、関心をもたないことがある。これはL1キャッシュミスに応答して、CPUがL2共有メモリからキャッシュラインを要求するときに当てはまることがある。帯域幅感知の例は、プロセッサが、トランザクションに関連付けられたデータのすべてを、単にできるだけ早く得ることを望むことである。これはレンダリング応用例を行うプロセッサに対して当てはまることがあるが、多くの他の例が存在する。ステップ810の決定は、スーパーバイザ260によって記憶された、それぞれのマスタに対する構成情報に基づいてよい。
ステップ810の決定に基づいて共有メモリコントローラ120は、タイミングを優遇するビートレベル調停(ステップ820)、または帯域幅を優遇するビートレベル調停(ステップ830)のいずれかを行う。タイミングを優遇するビートレベル調停の一例は、式3において提供される。式3は、クリティカルビート感知であることに留意されたい。したがってステップ820は、トランザクションのためのすべてのビートレベルメモリアクセスコマンドをディスパッチすることより、トランザクションのための最もクリティカルなビートレベルメモリアクセスコマンドをディスパッチすることを優遇する、スケジューリング重み付け方式を使用することを含んでよい。ステップ820は、ビートレベルメモリアクセスコマンドがよりクリティカルであるほど、より高いスケジューリング重みをトランザクションに与えるスケジューリング重み付け方式を使用することを含んでよい。これは、最もクリティカルなビートレベルメモリアクセスコマンドに、最も高いスケジューリング重みを与えることを含んでよい。
一実施形態においてステップ820は、同じトランザクションに関連付けられた2つのビートレベルメモリアクセスコマンドに、異なるスケジューリング重みを割り当てることを含む。これは所与のトランザクションにおける様々なビートレベルメモリアクセスコマンドが、他より速くまたは遅く共有メモリにディスパッチされることを可能にしてよい。一例としてステップ820は、同じトランザクションに関連付けられた2つのビートレベルメモリアクセスコマンドに、それぞれの2つのビートレベルメモリアクセスコマンドがトランザクションにとってどれだけクリティカルであるかに基づいて、異なるスケジューリング重みを割り当てることを含む。言い換えれば共有メモリコントローラは、同じトランザクションに関連付けられた2つのビートレベルメモリアクセスコマンドに、それぞれの2つのビートレベルメモリアクセスコマンドがマスタにとってどれだけクリティカルであるかに基づいて、異なるスケジューリング重みを割り当てる。
帯域幅を優遇する1つの例示のビートレベル調停は、式1において提供される。したがってステップ830においてビートレベル調停は、式1に基づいてよい。式1は、所与のビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるためにどれだけ長く待機しているかを要因として含めるという点で、待ち時間感知であることに留意されたい。したがってその技法は、枯渇を避けるための助けとなる。それはまた帯域幅を増加させるための助けとなる。したがってステップ830は、トランザクションのためのビートレベルメモリアクセスコマンドのすべてを速やかにディスパッチすることを優遇する、スケジューリング重み付け方式を使用することを含んでよい。ステップ830は、トランザクションにおけるビートレベルメモリアクセスコマンドのすべてに同じスケジューリング重みを与える、スケジューリング重み付け方式を使用することを含んでよい。一実施形態においてステップ830は、トランザクションのためのビートレベルメモリアクセスコマンドのすべてを平等に扱う、スケジューリング重み付け方式を使用することを含む。
図9は、トランザクションに対するQoSにアクセスし、トランザクションのそれぞれに関連付けられたビートレベルメモリアクセスコマンドをQoSに基づいて調停する、処理900の一実施形態のフローチャートである。これは図7からのステップ730および740の一実施形態である。
ステップ910において共有メモリコントローラ120は、トランザクションに対するタイミングバジェットにアクセスする。タイミングバジェットは、スーパーバイザ260によって記憶された、マスタに対する構成情報において指定されてよい。タイミングバジェットはまた、マスタから共有メモリコントローラ120に供給される、側波帯情報において供給されることができる。
ステップ920において、トランザクションのためのビートレベルメモリアクセスコマンドを処理しているコマンドアービタ230は、タイミングバジェットを満たすために、ビートレベルメモリアクセスコマンドのスケジューリング優先度を段階的に拡大する。式2は、タイミングバジェットを満たすために、どのようにスケジューリング重みが計算されることができるかの一例を示す。式2においてビートレベルメモリアクセスコマンドに対する優先度は、ビートレベルメモリアクセスコマンドが、共有メモリにディスパッチされるために長く待機するほど、増加されることを想起されたい。したがってスケジューリング優先度を段階的に拡大することは、ビートレベルメモリアクセスコマンドの優先度を動的に変化させることを含んでよい。
図10は、トランザクションに対するQoSにアクセスし、トランザクションのそれぞれに関連付けられたビートレベルメモリアクセスコマンドをQoSに基づいて調停する、処理1000の一実施形態のフローチャートである。これは図7からのステップ730および740の一実施形態である。
ステップ1010において共有メモリコントローラ120は、トランザクションのためのモードに対する帯域幅割り振りにアクセスする。例えば無線領域においては、ユニバーサル移動体通信システム(UMTS)モード、ロングタームエボリューション(LTE)モード、移動体通信用グローバルシステム(GSM)モードなどが存在してよい。これらのモードのそれぞれは、指定された帯域幅割り振りを有してよい。マスタに対するモードおよび/またはその帯域幅割り振りは、スーパーバイザ260に提供される構成情報において指定されることができる。この情報は、サービングエリアが決定された後に領域に対して設定されてよいので、他のQoS情報に比べてより静的としてよい。例えば北米における基地局内に配置されたSoCは、LTEモードにおいて、より高い帯域幅を有することになる。モードは、この無線領域の例に限定されないことに留意されたい。マスタに割り振られた帯域幅が、動的に変化することも可能である。
ステップ1012において共有メモリコントローラ120は、トランザクションに関連付けられたモードに対する帯域幅割り振りに適合するように、ビートレベルメモリアクセスコマンドを絞る。例えば共有メモリコントローラ120は、トランザクションのためのモードに関連付けられたビートレベルメモリアクセスコマンドが、トランザクションのためのモードに対する割り振られた帯域幅を超えたとき、ビートレベルメモリアクセスコマンドが共有メモリにディスパッチされることを防止する。これは、別のモードに関連付けられたビートレベルメモリアクセスコマンドのグループが、それらの割り振られた帯域幅を受け取るための助けとなることに留意されたい。
一実施形態においてステップ1012は、トランザクションスキャナ210が、構成情報に基づいてコマンドスーパーアービタ220への要求を絞ることを含む。例えば、トランザクションに関連付けられたモードに対する帯域幅割り振りに達した場合、要求はトランザクションスキャナ210によって、コマンドスーパーアービタ220に送られない。帯域幅の割り振りを管理する一例は次の通りであり、13クロックサイクルごとに、8クロックサイクルはモード1に与えられ、4クロックサイクルはモード2に与えられ、および1クロックサイクルはモード3に与えられることになる。したがってモード1は8/13の帯域幅割り振りを有することになり、モード2は4/13の帯域幅割り振りを有することになり、およびモード3は1/13の帯域幅のみを有する。1つのモードがそれのスロット内で要求を有しない場合、このスロットは他のモードに関連付けられた他の要求に割り当てられることができる。
帯域幅割り振り情報は、コマンドスーパーアービタ220に渡されてもよく、これは帯域幅割り振りをビートレベルで達成できるからである。コマンドスーパーアービタ220は、トランザクションスキャナ210によって用いられるのと同じ帯域幅割り振りを使用することができる。コマンドスーパーアービタ220は、上記で論じられたフォーマットを用いて、同じモードでのすべての未処理の要求を調停してよい。したがって最終的な効果は、2レベルの調停処理であってよい。最初に、ビートレベルメモリアクセスコマンドが帯域幅割り振りを満足することを確実にするためのテストがなされてよい。帯域幅割り振りテストに合格しないビートレベルメモリアクセスコマンドは、絞られる。コマンドスーパーアービタ220は、ビートレベルメモリアクセスコマンドを、共有メモリにディスパッチされるためのコマンドのそれのキューに置かないことによって、ビートレベルメモリアクセスコマンドを絞ってよい。したがってビートレベルメモリアクセスコマンドの調停は、絞られなかったすべてのビートレベルメモリアクセスコマンドに対して、上記で論じられたスケジューリング重みに基づいて行われてよい。
図11Aは、物理メモリブロックに結合されたコマンドアービタおよびブロックコントローラの一実施形態の図である。読み出しアービタ230aおよび書き込みアービタ230bは、図2のメモリコントローラにおけるコマンドアービタ230の一実施形態である。ブロックコントローラ1102は、コンバイナ240の一実施形態内にある。コンバイナ240の他の要素は、図11Aに示されない。
読み出しアービタ230aは、ビートレベル読み出しコマンドの1つを、マルチプレクサ(MUX)1104の1つの入力に提供する。書き込みアービタ230bは、ビートレベル書き込みコマンドの1つを、MUX1104の別の入力に提供する。ブロックコントローラ1102は、物理メモリブロック250にディスパッチされることになるビートレベル読み出しコマンドまたはビートレベル書き込みコマンドのいずれかを選択するようにMUXを制御する。一実施形態において物理メモリブロック250は、物理メモリバンクである。
したがって図11Aの実施形態では、ある時点において物理メモリブロック250は、それから読み出されまたはそれに書き込まれてよい。しかしこの実施形態において物理メモリブロック250は、同時にはそれから読み出されおよびそれに書き込まれない。
図11Bは、物理メモリサブブロックに結合されたコマンドアービタおよびブロックコントローラの一実施形態の図である。この実施形態では、2つの物理メモリサブブロック250a、250bがある。一実施形態においてこれらのサブブロック250a、250bは、図11Aの物理メモリブロック250の2つの互いに異なる領域である。例えば一実施形態においてサブブロック250a、250bは、同じ物理メモリバンクの異なる物理的部分である。2つのサブブロック250a、250bは、異なるメモリアドレスに関連付けられる。
この実施形態において1つのビートレベルメモリアクセスコマンドは物理メモリサブブロック250a内で実行することができ、別のビートレベルメモリアクセスコマンドは物理メモリサブブロック250b内で実行することができる。例えばビートレベル読み出しコマンドは物理メモリサブブロック250a内で実行することができ、ビートレベル書き込みコマンドは物理メモリサブブロック250b内で実行する。代替としてビートレベル書き込みコマンドは物理メモリサブブロック250a内で実行してよく、ビートレベル読み出しコマンドは物理メモリサブブロック250b内で実行する。
読み出しアービタ230aは、ビートレベル読み出しコマンドに関連付けられメモリアドレスに応じて、ビートレベル読み出しコマンドをMUX1104aに提供し、異なるビートレベル読み出しコマンドをMUX1104bに提供してよい。書き込みアービタ230bは、ビートレベル書き込みコマンドに関連付けられたメモリアドレスに応じて、ビートレベル書き込みコマンドをMUX1104aに提供し、異なるビートレベル書き込みコマンドをMUX1104bに提供してよい。ブロックコントローラ1102は、物理メモリサブブロック250aにディスパッチされるようにMUX1104aに提供された、ビートレベルメモリアクセスコマンドの1つを選択する。ブロックコントローラ1102は、物理メモリサブブロック250bにディスパッチされるようにMUX1104bに提供された、ビートレベルメモリアクセスコマンドの1つを選択する。
したがって共有メモリコントローラの一実施形態は、それぞれ第1の物理メモリブロック250aおよび第2の物理メモリブロック250bにおける同時並行した実行のために、読み出しアービタ230aからビートレベル読み出しコマンドを、また書き込みアービタ230bからビートレベル書き込みコマンドを選択するように構成される。すなわちビートレベル読み出しコマンドは第1の物理メモリブロック250a内で実行し、ビートレベル書き込みコマンドは第2の物理メモリブロック250b内で実行する。
したがって図11Bの実施形態は、きめの細かいメモリバンキングを提供する。さらに物理メモリサブブロック250a、250bにディスパッチされるメモリアクセスコマンドは、ビートレベルにある。これは、さらなる性能改善を提供してよい。
きめの細かいバンキングは、2つのサブブロックに限定されない。一実施形態において物理メモリブロックは、4つのサブブロックに分割される。一実施形態において物理メモリブロックは、8つのサブブロックに分割される。物理メモリブロックは、何らかの他の数のサブブロックに分割されることができる。
例示の実施形態において共有メモリコントローラは、ビートレベルメモリアクセスコマンドを調停するために用いられる。共有メモリコントローラは、共有メモリにアクセスするための複数のトランザクションを、対応する複数のマスタから受信し、複数のトランザクションを、それぞれのトランザクションのためのビートレベルメモリアクセスコマンドに分割する、受信要素を含む。共有メモリコントローラは、複数のトランザクションのそれぞれに対するサービス品質にアクセスし、トランザクションに関連付けられたビートレベルメモリアクセスコマンドを、それぞれのトランザクションに対するサービス品質に基づいて調停し、ビートレベルメモリアクセスコマンドを、ビートレベルメモリアクセスコマンドの調停の結果に基づいて共有メモリにディスパッチする、調停要素を含む。いくつかの例示の実施形態においてこの共有メモリコントローラは、実施形態で述べられたステップのいずれか1つまたは組み合わせを行うための、1つまたは複数の要素をさらに含んでよい。
本開示の説明は、例示および説明のために示されたが、網羅的であること、または本開示が開示された形に限定されることを意図するものではない。当業者には、本開示の範囲および趣旨から逸脱せずに、多くの変更および変形が明らかになるであろう。本明細書での開示の態様は、本開示の原理、および実際の応用例を最もよく説明するように、ならびに他の当業者が、企図される特定の使用に適するような様々な変更により本開示を理解することを可能にするように選ばれ、述べられた。
本文書の目的のために、開示された技術に関連付けられた各処理は、連続して、および1つまたは複数の要素によって行われてよい。処理における各ステップは、他のステップにおいて用いられるものと同じまたは異なる要素によって行われてよく、各ステップは必ずしも単一の要素によって行われる必要はない。
主題について構造的特徴および/または方法論的動作に固有の用語で述べてきたが、添付の特許請求の範囲において定義される主題は、必ずしも上述された特定の特徴または動作に限定されないことを理解されたい。むしろ上述された特定の特徴および動作は、特許請求の範囲を実施する例示の形として開示されるものである。

Claims (25)

  1. 方法であって、
    共有メモリにアクセスするための複数のトランザクションを、対応する複数のマスタから受信するステップと、
    前記複数のトランザクションを、前記複数のトランザクションのためのそれぞれのビートレベルメモリアクセスコマンドに分割するステップであって、前記トランザクションのそれぞれは、少なくとも1つのビートレベルメモリアクセスコマンドに分割され、前記トランザクションのうちの少なくとも1つは、複数のビートレベルメモリアクセスコマンドに分割される、ステップと、
    前記複数のトランザクションのそれぞれに対するサービス品質にアクセスするステップと、
    前記複数のトランザクションに対する前記サービス品質に基づいてマスタの必要性に対して調整された調停方式を選択するステップと、
    前記それぞれのビートレベルメモリアクセスコマンドを、選択された前記調停方式に従って調停するステップと、
    前記それぞれのビートレベルメモリアクセスコマンドを、前記ビートレベルメモリアクセスコマンドの調停の結果に基づいて、前記共有メモリにディスパッチするステップと
    を含むことを特徴とする方法。
  2. 前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、
    第1のビートレベルメモリアクセスコマンドが前記共有メモリにディスパッチされるようにするために待機する時間の増加に応答して、前記それぞれのビートレベルメモリアクセスコマンドの第1のビートレベルメモリアクセスコマンドのスケジューリング重みを増加させるステップ
    を含むことを特徴とする請求項1に記載の方法。
  3. 前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、
    同じトランザクションに関連付けられた2つのビートレベルメモリアクセスコマンドに異なるスケジューリング重みを割り当てるステップ
    を含むことを特徴とする請求項1に記載の方法。
  4. 前記同じトランザクションに関連付けられた2つのビートレベルメモリアクセスコマンドに異なるスケジューリング重みを割り当てる前記ステップは、
    2つのビートレベルメモリアクセスコマンドのそれぞれのビートがトランザクションにとってどれだけクリティカルであるかに依存するbeat_priorityに基づいて、前記同じトランザクションに関連付けられた前記2つのビートレベルメモリアクセスコマンドに異なるスケジューリング重みを割り当てるステップ
    を含むことを特徴とする請求項3に記載の方法。
  5. 前記複数のトランザクションの第1のトランザクションが、トランザクション全体が速やかに処理されるべき帯域幅センシティブであるか、又はトランザクションの一定の部分が他の部分を犠牲にしてもより早く処理されるべきタイミングセンシティブであるかを決定するステップをさらに含む
    ことを特徴とする請求項1ないし4のいずれか1項に記載の方法。
  6. 前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、
    前記第1のトランザクションがタイミングセンシティブである場合、前記第1のトランザクションのための1つのビートレベルメモリアクセスコマンドをディスパッチすることを、前記第1のトランザクションのための他のビートレベルメモリアクセスコマンドをディスパッチすることより優遇する第1のスケジューリング重み付け方式を使用するステップと、
    前記第1のトランザクションが帯域幅センシティブである場合、前記第1のトランザクションのための前記ビートレベルメモリアクセスコマンドのすべてを平等に扱う第2のスケジューリング重み付け方式を使用するステップと
    を含むことを特徴とする請求項5に記載の方法。
  7. 前記トランザクションのそれぞれに対する前記サービス品質にアクセスする前記ステップは、前記複数のトランザクションの第1のトランザクションに対するタイミングバジェットにアクセスするステップを含み、
    前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、前記タイミングバジェットを満たすように、前記第1のトランザクションに関連付けられたビートレベルメモリアクセスコマンドのスケジューリング優先度を段階的に拡大するステップを含む
    ことを特徴とする請求項1に記載の方法。
  8. 前記トランザクションのそれぞれに対する前記サービス品質にアクセスする前記ステップは、前記複数のトランザクションの第1のトランザクションのためのモードに対する帯域幅割り振りにアクセスするステップを含み、
    前記モードは、前記共有メモリのアクセスに関して一定の帯域幅がそれぞれに割り振られる、複数のモードの第1のモードであり、
    前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、前記第1のモードに関連付けられたビートレベルメモリアクセスコマンドの帯域幅が前記第1のモードに対する前記割り振られた帯域幅を超えたとき、前記第1のトランザクションに関連付けられたビートレベルメモリアクセスコマンドが前記共有メモリにディスパッチされることを防止するステップを含む
    ことを特徴とする請求項1に記載の方法。
  9. 前記それぞれのビートレベルメモリアクセスコマンドを、前記選択された前記調停方式に従って調停する前記ステップは、
    スケジューリング重みを、同じトランザクションに関連付けられた前記ビートレベルメモリアクセスコマンドに、
    i)前記同じトランザクションに関連付けられた前記ビートレベルメモリアクセスコマンドのそれぞれが、前記共有メモリにディスパッチされるようにするためにどれだけ多くのクロックサイクルだけ待機しているか、および
    ii)前記同じトランザクションに関連付けられた前記ビートレベルメモリアクセスコマンドのそれぞれのビートがトランザクションにとってどれだけクリティカルであるかに依存するbeat_priority
    に基づいて割り当てるステップ
    を含むことを特徴とする請求項1に記載の方法。
  10. 装置であって、
    共有メモリにアクセスするための複数のトランザクションを走査し、前記トランザクションをビートレベルメモリアクセスコマンドに分割するように構成されたトランザクションスキャナであって、前記トランザクションのそれぞれは少なくとも1つのビートレベルメモリアクセスコマンドに分割可能であり、前記トランザクションのうちの少なくとも1つは複数のビートレベルメモリアクセスコマンドに分割可能である、トランザクションスキャナと、
    前記共有メモリ内の複数の共有メモリブロックに対応する複数のコマンドアービタを備えたコマンドスーパーアービタであって、
    前記複数のトランザクションのそれぞれに対するサービス品質にアクセスし、
    前記複数のトランザクションに対する前記サービス品質に基づいてマスタの必要性に対して調整された調停方式を選択し、
    前記複数のトランザクションに関連付けられた前記ビートレベルメモリアクセスコマンドを、選択された前記調停方式に従って調停し、
    前記ビートレベルメモリアクセスコマンドを、前記ビートレベルメモリアクセスコマンドの調停の結果に基づいて、前記共有メモリブロックにディスパッチするように構成されたコマンドスーパーアービタとを備えた
    ことを特徴とする装置。
  11. 前記複数のコマンドアービタのうちの少なくとも一つのコマンドアービタは、
    第1のビートレベルメモリアクセスコマンドが前記共有メモリにディスパッチされるようにするために待機しているクロックサイクルの数が増加するのに従って、前記ビートレベルメモリアクセスコマンドの第1のビートレベルメモリアクセスコマンドのスケジューリング重みを増加させるように構成された
    ことを特徴とする請求項10に記載の装置。
  12. 前記複数のコマンドアービタのうちの少なくとも一つのコマンドアービタは、
    2つのビートレベルメモリアクセスコマンドのそれぞれのビートがトランザクションにとってどれだけクリティカルであるかに依存するbeat_priorityに基づいて、同じトランザクションに関連付けられた前記2つのビートレベルメモリアクセスコマンドに、異なるスケジューリング重みを割り当てるように構成された
    ことを特徴とする請求項10に記載の装置。
  13. 前記複数のコマンドアービタのうちの少なくとも一つのコマンドアービタは、
    前記複数のトランザクションの第1のトランザクションが、トランザクション全体が速やかに処理されるべき帯域幅センシティブであるか、それともトランザクションの一定の部分が他の部分を犠牲にしてもより早く処理されるべきタイミングセンシティブであるかを決定するように構成された
    ことを特徴とする請求項10に記載の装置。
  14. 前記少なくとも一つのコマンドアービタは、
    前記第1のトランザクションがタイミングセンシティブである場合、前記第1のトランザクションのための1つのビートレベルメモリアクセスコマンドをディスパッチすることを、前記第1のトランザクションのための他のビートレベルメモリアクセスコマンドをディスパッチすることより優遇する第1のスケジューリング重み付け方式を用い、
    前記第1のトランザクションが帯域幅センシティブである場合、前記第1のトランザクションのための前記ビートレベルメモリアクセスコマンドのすべてを平等に扱う第2のスケジューリング重み付け方式を使用するように構成された
    ことを特徴とする請求項13に記載の装置。
  15. 前記複数のコマンドアービタのうちの少なくとも一つのコマンドアービタは、前記複数のトランザクションの第1のトランザクションに対するタイミングバジェットにアクセスするように構成され、
    前記コマンドアービタは、前記タイミングバジェットを満たすように、前記第1のトランザクションに関連付けられたビートレベルメモリアクセスコマンドのスケジューリング優先度を段階的に拡大するように構成された
    ことを特徴とする請求項10に記載の装置。
  16. 前記複数のトランザクションのそれぞれに対するサービス品質にアクセスするように構成された前記コマンドスーパーアービタは、前記複数のトランザクションのそれぞれのトランザクションのためのモードに対する帯域幅割り振りにアクセスするように構成された前記コマンドスーパーアービタを備え、
    前記モードは、前記共有メモリのアクセスに関して一定の帯域幅がそれぞれに割り振られる、複数のモードの第1のモードであり、
    前記トランザクションに関連付けられた前記ビートレベルメモリアクセスコマンドを、前記それぞれのトランザクションに対する前記サービス品質に基づいて調停するように構成された前記コマンドスーパーアービタは、
    前記第1のモードに関連付けられたビートレベルメモリアクセスコマンドの帯域幅が前記第1のモードに対する前記割り振られた帯域幅を超えたとき、前記複数のトランザクションの第1のトランザクションに関連付けられたビートレベルメモリアクセスコマンドが前記共有メモリにディスパッチされることを防止するように構成された前記コマンドスーパーアービタを備えた
    ことを特徴とする請求項10に記載の装置。
  17. 前記複数のコマンドアービタのうちの少なくとも一つのコマンドアービタは、読み出しアービタおよび書き込みアービタを備え、
    前記コマンドアービタに関連付けられた前記共有メモリブロックは第1の物理メモリブロックおよび第2の物理メモリブロックに分割され、
    それぞれ前記第1の物理メモリブロックおよび前記第2の物理メモリブロックにおける同時並行した実行のために、前記読み出しアービタからのビートレベル読み出しコマンドおよび前記書き込みアービタからのビートレベル書き込みコマンドを選択するように構成されたブロックコントローラをさらに備えた
    ことを特徴とする請求項10に記載の装置。
  18. システムオンチップ(SoC)であって、
    複数の共有メモリブロックと、
    前記複数の共有メモリブロックにアクセスするために、複数の読み出し/書き込みトランザクションを生成するように構成された複数のマスタと、
    前記複数の共有メモリブロックと前記複数のマスタとの間に結合された共有メモリコントローラであって、前記共有メモリコントローラは、トランザクションスキャナと、前記複数の共有メモリブロックに対応する複数のコマンドアービタとを備え、
    前記トランザクションスキャナは、前記複数の読み出し/書き込みトランザクションを走査し、ビートレベル読み出し/書き込みコマンドに分割するように構成され、前記トランザクションスキャナは、前記読み出し/書き込みトランザクションのうちの少なくとも1つを複数のビートレベル読み出し/書き込みコマンドに分割するように構成され、
    前記複数のコマンドアービタは、
    前記読み出し/書き込みトランザクションのそれぞれに対するサービス品質にアクセスし、
    前記読み出し/書き込みトランザクションのそれぞれに対する前記サービス品質に基づいてマスタの必要性に対して調整された調停方式を選択し、
    前記読み出し/書き込みトランザクションに関連付けられた前記ビートレベル読み出し/書き込みコマンドを、選択された前記調停方式に従って調停し、
    それぞれの前記複数の共有メモリブロックに対応するビートレベル読み出し/書き込みコマンドのシーケンスを生じ、
    ビートレベル読み出し/書き込みコマンドの前記シーケンスを、それぞれの前記複数の共有メモリブロックにディスパッチする
    ように構成される、共有メモリコントローラと
    を備えたことを特徴とするシステムオンチップ(SoC)。
  19. 前記複数のコマンドアービタの第1のコマンドアービタは、ビートレベル読み出し/書き込みコマンドの前記シーケンスの第1のシーケンスを生成するように構成され、
    第1のシーケンスにおけるビートレベル読み出し/書き込みコマンドを、前記複数の共有メモリブロックの第1の共有メモリブロックにディスパッチするように構成され、
    前記読み出し/書き込みトランザクションに関連付けられた前記ビートレベル読み出し/書き込みコマンドを、前記読み出し/書き込みトランザクションのそれぞれに対する前記サービス品質に基づいて調停するように構成された前記複数のコマンドアービタは、
    第1のビートレベルメモリアクセスコマンドが前記共有メモリブロックにディスパッチされるようにするために待機しているクロックサイクルの数が増加するのに応答して、ビートレベル読み出し/書き込みコマンドの前記第1のシーケンス内にある前記第1のビートレベルメモリアクセスコマンドを、前記第1のシーケンスにおいてより優先度の高い位置に昇格させるように構成された前記第1のコマンドアービタを備えた
    ことを特徴とする請求項18に記載のシステムオンチップ(SoC)。
  20. 前記複数のコマンドアービタの第1のコマンドアービタは、ビートレベル読み出し/書き込みコマンドの前記シーケンスの第1のシーケンスを生成するように構成され、
    第1のシーケンス上のビートレベル読み出し/書き込みコマンドを、前記複数の共有メモリブロックの第1の共有メモリブロックにディスパッチするように構成され、
    前記読み出し/書き込みトランザクションに関連付けられた前記ビートレベル読み出し/書き込みコマンドを、前記読み出し/書き込みトランザクションのそれぞれに対する前記サービス品質に基づいて調停するように構成された前記複数のコマンドアービタは、
    第1の読み出し/書き込みトランザクションの第1のビートレベルメモリアクセスコマンドと、前記第1の読み出し/書き込みトランザクション内の他のビートレベルメモリアクセスコマンドのビートがトランザクションにとってどれだけクリティカルであるかに依存するbeat_priorityに応答して、前記読み出し/書き込みトランザクションの第1の読み出し/書き込みトランザクションに関連付けられた前記第1のビートレベルメモリアクセスコマンドに、前記第1の読み出し/書き込みトランザクション内の他のビートレベルメモリアクセスコマンドに比べてより大きなスケジューリング重みを割り当てるように構成された前記第1のコマンドアービタを備えた
    ことを特徴とする請求項18に記載のシステムオンチップ(SoC)。
  21. 前記共有メモリコントローラは、バス幅を有する相互接続部によって前記複数の共有メモリブロックに結合され、それぞれの複数のビートにおける各ビートのサイズは、前記バス幅に一致するサイズである
    ことを特徴とする請求項18ないし20のいずれか1項に記載のシステムオンチップ(SoC)。
  22. 前記複数の共有メモリブロックは、複数のインターリーブされた物理メモリバンクである
    ことを特徴とする請求項18ないし21のいずれか1項に記載のシステムオンチップ(SoC)。
  23. 前記複数の共有メモリブロックは、複数の直線的にアドレス指定されたメモリバンクである
    ことを特徴とする請求項18ないし21のいずれか1項に記載のシステムオンチップ(SoC)。
  24. 前記複数の共有メモリブロックはそれぞれデータ幅を有し、前記複数の共有メモリブロックのうちの少なくとも2つは、異なるデータ幅を有する
    ことを特徴とする請求項18ないし23のいずれか1項に記載のシステムオンチップ(SoC)。
  25. コンピュータに請求項1ないし9のいずれか1項に記載の方法を実施させることを記録したプログラムを有するコンピュータ読取り可能な記録媒体。
JP2018501260A 2015-07-13 2016-06-14 共有メモリコントローラおよびそれを使用する方法 Active JP6755935B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/797,620 2015-07-13
US14/797,620 US10353747B2 (en) 2015-07-13 2015-07-13 Shared memory controller and method of using same
PCT/CN2016/085754 WO2017008607A1 (en) 2015-07-13 2016-06-14 Shared memory controller and method of using same

Publications (2)

Publication Number Publication Date
JP2018521419A JP2018521419A (ja) 2018-08-02
JP6755935B2 true JP6755935B2 (ja) 2020-09-16

Family

ID=57757780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018501260A Active JP6755935B2 (ja) 2015-07-13 2016-06-14 共有メモリコントローラおよびそれを使用する方法

Country Status (5)

Country Link
US (1) US10353747B2 (ja)
EP (1) EP3311288B1 (ja)
JP (1) JP6755935B2 (ja)
CN (1) CN107835989B (ja)
WO (1) WO2017008607A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10200581B2 (en) * 2016-03-31 2019-02-05 Peter G. Hartwell Heads down intelligent display and processing
US10146585B2 (en) 2016-09-07 2018-12-04 Pure Storage, Inc. Ensuring the fair utilization of system resources using workload based, time-independent scheduling
US10671439B1 (en) 2016-09-07 2020-06-02 Pure Storage, Inc. Workload planning with quality-of-service (‘QOS’) integration
US11481261B1 (en) 2016-09-07 2022-10-25 Pure Storage, Inc. Preventing extended latency in a storage system
US10908966B1 (en) 2016-09-07 2021-02-02 Pure Storage, Inc. Adapting target service times in a storage system
US10331588B2 (en) * 2016-09-07 2019-06-25 Pure Storage, Inc. Ensuring the appropriate utilization of system resources using weighted workload based, time-independent scheduling
US11886922B2 (en) 2016-09-07 2024-01-30 Pure Storage, Inc. Scheduling input/output operations for a storage system
US11119923B2 (en) * 2017-02-23 2021-09-14 Advanced Micro Devices, Inc. Locality-aware and sharing-aware cache coherence for collections of processors
KR102443106B1 (ko) 2017-06-23 2022-09-14 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 기술 및 컴퓨터 시스템
US11727997B2 (en) * 2017-07-07 2023-08-15 Micron Technology, Inc. RPMB improvements to managed NAND
KR101870916B1 (ko) * 2017-11-15 2018-07-19 (주)디 넷 차량 내 잔류승객 감지 및 경보 장치
US20190302861A1 (en) 2018-03-30 2019-10-03 Provino Technologies, Inc. Protocol level control for system on a chip (soc) agent reset and power management
IL315283A (en) * 2018-03-30 2024-10-01 Google Llc Mediation parts of transactions in ritualistic channels attributed to connection
FR3082029B1 (fr) * 2018-06-05 2020-07-10 Thales Controleur de partage de ressources d'une plate-forme informatique et procede associe de partage des ressources
US10732897B2 (en) 2018-07-03 2020-08-04 Western Digital Technologies, Inc. Quality of service based arbitrations optimized for enterprise solid state drives
CN109446125B (zh) * 2018-10-09 2024-04-02 武汉正维电子技术有限公司 Ddr读写仲裁器及方法
US11543262B2 (en) 2018-12-05 2023-01-03 Toyota Motor North America, Inc. Data analytics for smart vehicle fueling
US20210279192A1 (en) * 2020-03-06 2021-09-09 Infineon Technologies Ag Distribution of interconnect bandwidth among master agents
EP3926452A1 (en) * 2020-06-19 2021-12-22 NXP USA, Inc. Norflash sharing
US11720404B2 (en) * 2020-07-16 2023-08-08 Samsung Electronics Co., Ltd. Systems and methods for arbitrating access to a shared resource
US11579805B2 (en) * 2020-11-18 2023-02-14 Samsung Electronics Co., Ltd. Method and system for processing commands in storage devices to improve quality of service
US11467988B1 (en) 2021-04-14 2022-10-11 Apple Inc. Memory fetch granule
US12039169B2 (en) 2022-04-07 2024-07-16 Apple Inc. Bandwidth-aware fabric traffic shaping
EP4361826A1 (en) * 2022-10-28 2024-05-01 Nxp B.V. Bandwidth allocation

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404553A (en) * 1991-01-09 1995-04-04 Mitsubishi Denki Kabushiki Kaisha Microprocessor and data flow microprocessor having vector operation function
JPH10507023A (ja) 1994-10-06 1998-07-07 ヴァーク・インコーポレイテッド 共用メモリシステム
KR0183748B1 (ko) 1995-10-30 1999-05-15 김광호 씨디-롬 구동 시스템의 고속 메모리 제어회로 및 그 방법
US6385678B2 (en) * 1996-09-19 2002-05-07 Trimedia Technologies, Inc. Method and apparatus for bus arbitration with weighted bandwidth allocation
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6195724B1 (en) 1998-11-16 2001-02-27 Infineon Technologies Ag Methods and apparatus for prioritization of access to external devices
CN1181438C (zh) 2001-01-18 2004-12-22 深圳市中兴集成电路设计有限责任公司 异步时钟域设备对共享存储装置访问的控制方法
US6961803B1 (en) 2001-08-08 2005-11-01 Pasternak Solutions Llc Sliced crossbar architecture with no inter-slice communication
US7177275B2 (en) * 2002-07-26 2007-02-13 Kenneth Stanwood Scheduling method and system for communication systems that offer multiple classes of service
US7594089B2 (en) 2003-08-28 2009-09-22 Mips Technologies, Inc. Smart memory based synchronization controller for a multi-threaded multiprocessor SoC
JP5094050B2 (ja) 2005-07-14 2012-12-12 キヤノン株式会社 メモリ制御装置、メモリ制御方法および組み込みシステム
KR100784385B1 (ko) 2005-08-10 2007-12-11 삼성전자주식회사 공유 자원에 대한 접근 요청을 중재하는 시스템 및 방법
US7489690B2 (en) * 2005-08-12 2009-02-10 Cellco Partnership Integrated packet latency aware QoS scheduling algorithm using proportional fairness and weighted fair queuing for wireless integrated multimedia packet services
CN1329809C (zh) 2005-10-25 2007-08-01 威盛电子股份有限公司 磁盘阵列的控制器及其工作方法
CN101341474B (zh) 2005-12-22 2012-02-08 Arm有限公司 用于对事务重排序来确保每个事务所规定的服务质量的仲裁方法
US7356671B1 (en) 2006-07-27 2008-04-08 Vbridge Microsystem, Inc. SoC architecture for voice and video over data network applications
US7899994B2 (en) 2006-08-14 2011-03-01 Intel Corporation Providing quality of service (QoS) for cache architectures using priority information
US8307190B2 (en) 2006-12-25 2012-11-06 Panasonic Corporation Memory control device, memory device, and memory control method
CN101277175B (zh) * 2007-03-30 2012-02-29 国际商业机器公司 改进会话启动协议服务器性能的方法和装置
US20110066768A1 (en) 2007-07-23 2011-03-17 Rod Brittner Quality of service and streaming attributes for a data storage device
US8095932B2 (en) 2007-08-14 2012-01-10 Intel Corporation Providing quality of service via thread priority in a hyper-threaded microprocessor
CN101187908A (zh) 2007-09-27 2008-05-28 上海大学 单芯片多处理器共享数据存储空间的访问方法
JP2009193107A (ja) 2008-02-12 2009-08-27 Panasonic Corp メモリアクセス装置
WO2010069398A1 (en) * 2008-12-19 2010-06-24 Telefonaktiebolaget L M Ericsson (Publ) Resolving contention between data bursts
CN101989241B (zh) * 2009-08-07 2012-08-08 无锡江南计算技术研究所 读-修改-写处理系统及方法
CN103119933B (zh) * 2010-05-06 2016-11-16 伊卡诺斯通讯公司 配置和管理宽带使能数字命令和控制系统的方法和系统
US8612648B1 (en) 2010-07-19 2013-12-17 Xilinx, Inc. Method and apparatus for implementing quality of service in a data bus interface
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8607022B2 (en) 2010-12-17 2013-12-10 Apple Inc. Processing quality-of-service (QoS) information of memory transactions
US9098203B1 (en) * 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
KR101855399B1 (ko) 2011-03-24 2018-05-09 삼성전자주식회사 데이터 트래픽을 개선한 SoC 및 이의 동작 방법
US20130054896A1 (en) * 2011-08-25 2013-02-28 STMicroelectronica Inc. System memory controller having a cache
KR101861768B1 (ko) 2011-09-16 2018-05-28 삼성전자주식회사 시스템 온칩, 이를 포함하는 전자 시스템, 및 그 동작 방법
CN102609312B (zh) 2012-01-10 2015-08-19 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法
KR101949382B1 (ko) 2012-04-04 2019-02-18 삼성전자주식회사 서비스 품질의 향상을 위한 시스템 온 칩 및 시스템 온 칩의 제어 방법
CN103377154B (zh) 2012-04-25 2016-04-13 无锡江南计算技术研究所 存储器的访存控制装置及方法、处理器及北桥芯片
US9213656B2 (en) 2012-10-24 2015-12-15 Texas Instruments Incorporated Flexible arbitration scheme for multi endpoint atomic accesses in multicore systems
US9535832B2 (en) * 2013-04-30 2017-01-03 Mediatek Singapore Pte. Ltd. Multi-hierarchy interconnect system and method for cache system
US9330024B1 (en) * 2014-10-09 2016-05-03 Freescale Semiconductor, Inc. Processing device and method thereof
US9519442B2 (en) * 2014-10-27 2016-12-13 Aeroflex Colorado Springs Inc. Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic

Also Published As

Publication number Publication date
EP3311288B1 (en) 2022-06-29
WO2017008607A1 (en) 2017-01-19
EP3311288A1 (en) 2018-04-25
US20170017412A1 (en) 2017-01-19
JP2018521419A (ja) 2018-08-02
CN107835989B (zh) 2020-12-01
CN107835989A (zh) 2018-03-23
EP3311288A4 (en) 2018-06-06
US10353747B2 (en) 2019-07-16

Similar Documents

Publication Publication Date Title
JP6755935B2 (ja) 共有メモリコントローラおよびそれを使用する方法
EP2580669B1 (en) Multithread application-aware memory scheduling scheme for multi-core processors
KR100440657B1 (ko) 가중된대역폭할당에의한버스중재방법및장치
US8645639B2 (en) Hierarchical memory arbitration technique for disparate sources
JP2009508247A (ja) バス調停に関する方法及びシステム
JP4034969B2 (ja) 共通メモリのメモリ管理システム
US8060679B2 (en) Information processing apparatus and access control method capable of high-speed data access
JP5498505B2 (ja) データバースト間の競合の解決
KR100296718B1 (ko) 다중프로세서 시스템에서 가변폭 버스를 동시에 액세스하기 위한 방법 및 시스템
US7617344B2 (en) Methods and apparatus for controlling access to resources in an information processing system
US8180998B1 (en) System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US20070239888A1 (en) Controlling transmission of data
CN109002408B (zh) 总线仲裁方法和系统
JP6201591B2 (ja) 情報処理装置および情報処理装置の制御方法
US8458406B2 (en) Multiple critical word bypassing in a memory controller
US8918786B2 (en) Generating simulated stall signals based on access speed model or history of requests independent of actual processing or handling of conflicting requests
JP2005293427A (ja) データ転送処理装置及びデータ転送処理方法
JP5058116B2 (ja) ストリーミングidメソッドによるdmac発行メカニズム
KR100973419B1 (ko) 버스 중재 방법 및 장치
Kim et al. Efficient GPU multitasking with latency minimization and cache boosting
JPH05241958A (ja) 仮想記憶制御方式
JPH0395661A (ja) 並列計算機の処理割り当て装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180215

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200124

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200826

R150 Certificate of patent or registration of utility model

Ref document number: 6755935

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