JP6979777B2 - インターフェース装置およびその制御方法 - Google Patents

インターフェース装置およびその制御方法 Download PDF

Info

Publication number
JP6979777B2
JP6979777B2 JP2017056459A JP2017056459A JP6979777B2 JP 6979777 B2 JP6979777 B2 JP 6979777B2 JP 2017056459 A JP2017056459 A JP 2017056459A JP 2017056459 A JP2017056459 A JP 2017056459A JP 6979777 B2 JP6979777 B2 JP 6979777B2
Authority
JP
Japan
Prior art keywords
cache
port
data
ports
memory
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
JP2017056459A
Other languages
English (en)
Other versions
JP2018160055A (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.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2017056459A priority Critical patent/JP6979777B2/ja
Priority to US15/919,608 priority patent/US11119924B2/en
Publication of JP2018160055A publication Critical patent/JP2018160055A/ja
Application granted granted Critical
Publication of JP6979777B2 publication Critical patent/JP6979777B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0853Cache with multiport tag or data arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、データ通信技術に関するものである。
近年、半導体プロセス微細化により、組込み機器向けの半導体チップであっても大規模化しており、チップ内には非常に多くのマスターが存在する。そして、多くのマスターが外部メモリ(DRAM等)にデータを読み書きするため、外部メモリにアクセスが集中する。その結果、外部メモリへの連続するアクセスは異なるDRAMページやバンクにアクセスすることになり、ランダムアクセス性が高くなる。そして、その結果、DRAMのページミスやバンク競合、リードとライト切り替わりが多発し、メモリアクセスのレイテンシは非常に長くなる。その結果、組込み機器の性能は低下してしまう。
一方、外部メモリとして一般的な記憶装置であるDRAMの規格策定では、メモリ帯域を向上する必要性から、DRAM規格の動作周波数を倍々で高周波数化している。例えばDDR3−DRAMからDDR4−DRAM、DDR5−DRAMと動作周波数は高速化している。その結果、DRAMの高周波数化に合わせて、組込み機器のメモリアクセス制御も高周波数化する必要がある。
また次世代の高性能DRAMではHBM(High Bandwidth Memory)、HMC(Hybrid Memory Cube)、WideI/O等の規格がある。これらの高性能DRAMでは、積層したDRAMをTSV(Through Silicon Via)技術で接続する。これらの規格は、非常に動作周波数が高速で、接続するバス幅も非常に広いため、豊富なメモリ帯域を供給することができる。またTSV技術によりチップ外のDRAMと端子接続するわけではないため消費電力も低く、高速化と省電力化の両方を同時に実現することができる。次世代の高性能DRAMの広いバス幅と高周波数化によるメモリ帯域を十分に活かす必要がある。
また、大規模な組込み半導体チップ開発の開発期間を延ばすことなく開発できるように、従来からある画像処理モジュール(データ処理回路)を再利用して搭載する開発手法が一般的となっている。このとき、再利用した画像処理モジュール(データ処理回路)は、前世代の外部メモリ(DRAM)規格に合わせて設計されている。そのため、これらのモジュールはメモリアクセスの1回のメモリアクセス単位(転送長)が小さいため、最新の外部メモリ(DRAM)規格の性能を十分に引き出すことができない。また再利用した画像処理モジュールは、メモリアクセスのレイテンシが長くなることには未対応であり、かえって性能が低下してしまう。また、構築するシステムの大規模化により、複数の半導体チップを互いに接続したり、様々なセンサーを半導体チップに接続したりすることが必要な場合がある。
特許文献1では、DRAMアクセスのレイテンシが長くなった場合においても必要な画像を先読みしてキャッシュメモリに蓄え、DRAMアクセスのレイテンシを隠蔽して性能を維持する方法を開示している。また、特許文献2では、キャッシュ効率の良いフルアソシアティブ方式のキャッシュタグ判定方法を開示している。
特開2012−243026号公報 特開2011−8773号公報
しかしながら、近年、半導体プロセス微細化による大規模チップ開発においては、組込み用途の半導体チップであっても、チップ内に非常に多くのデータ処理回路(マスター)が存在する。そして、各データ処理回路(マスター)は個別にメモリアクセスするため、各データ処理回路(マスター)が同一のデータをDRAMに要求することもあり、重複して余分なメモリアクセスを行うことがある。また、多数のデータ処理回路(マスター)が統制されずにメモリアクセスを多発し、DRAMへのアクセス競合が多発し、DRAMのページミス、リード/ライトの切り替えやバンク競合が起き、1回のメモリアクセスのレイテンシは非常に長くなる。上述の従来技術は、非常に多くのデータ処理回路(マスター)が統制されずにDRAMに対してメモリアクセスすることを考慮したものではなく、性能低下が発生してしまうことになる。
また次世代DRAMを用いた形態、複数の半導体チップを互いに接続した形態や、多数のセンサーを半導体チップに接続する形態への対応については何ら開示していない。また再利用した画像処理モジュール(データ処理回路)への対応、仕様の異なる新旧センサーの混在やセンサー仕様が変更になったときの対応については何ら開示していない。
本発明はこのような問題を鑑みてなされたものであり、複数のデータ処理回路(マスター)によるメモリアクセスを統制し、効率的なデータ通信を可能とするインターフェース技術を提供することを目的としている。
上述の問題点を解決するため、本発明に係るインターフェース装置は以下の構成を備える。すなわち、N個のポートを有するインターフェース装置において、前記N個のポートにより共有されかつ各々が前記N個のポートの何れかに割り当てられた複数のキャッシュタグを有するキャッシュメモリと、前記N個のポートに対応するN個のキャッシュ判定器と、を有し、前記N個のキャッシュ判定器の各々は、前記複数のキャッシュタグの全ての値と自ポートにおけるデータ要求のアドレスとの比較に基づいて、前記キャッシュメモリにおいて、自ポートにおける前記データ要求のアドレスのキャッシュミスが発生したか否かを判定する判定手段と、前記判定手段によりキャッシュミスが発生したと判定された場合に、自ポートに割り当てられたキャッシュタグの値を更新する更新手段と、を有する。
本発明によれば、複数のデータ処理回路(マスター)によるメモリアクセスを統制し、効率的なデータ通信を可能とするインターフェース技術を提供することができる。
第1実施形態に係る情報処理装置の構成を示すブロック図である。 従来のマルチポート共有キャッシュの構成の一例を示す図である。 従来のマルチポート共有キャッシュの構成の他の一例を示す図である。 キャッシュ判定部における動作の一例を示すフローチャートである。 キャッシュ判定部の詳細構成の一例を示すブロック図である。 マルチポート共有キャッシュの詳細構成の一例を示すブロック図である。 第1及び第3各パイプラインの比較動作の一例を示すフローチャートである。 最終判定動作の一例を示すフローチャートである。 フェッチ動作の一例を示すフローチャートである。 アクセス調停部及びデータ取得部の詳細構成の一例を示すブロック図である。 リードキャッシュ動作及びリフィル動作の一例を示すフローチャートである。 ライトバックキャッシュ動作及びライト応答動作の一例を示すフローチャートである。 第2実施形態に係る情報処理装置の構成を示すブロック図である。 第3実施形態に係る情報処理装置の構成を示すブロック図である。 第4実施形態に係る情報処理装置の構成を示すブロック図である。
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
(第1実施形態)
本発明に係るインターフェース装置の第1実施形態として、情報処理装置に搭載されるマルチポート共有キャッシュを例に挙げて以下に説明する。
<1.装置構成>
図1(a)は、第1実施形態に係る情報処理装置の構成を示すブロック図である。具体的には、N個のポートを介してデータ要求を受付可能に構成されたマルチポート共有キャッシュを挿入した情報処理装置を示している。
情報処理装置は、CPU回路部100、外部メモリ、画像処理部150、マルチポート共有キャッシュ160を有している。DRAM110、eDRAM(エンベデットDRAM,混載DRAM)120、Stackedメモリ(3Dメモリ)130は、外部メモリの一例である。また、システムバス(Network On Chip,共有バス)140、画像処理バス(Network On Chip,共有バス)145等を備える。
CPU回路部100は、マルチコアのCPU[0]〜[3]、プロセッサバス(Network On Chip,プロセッサ共有バス)102を備える。また、CPU回路部100は、固定データやプログラムを格納するROM(不図示)、データの一時保存やプログラムのロードに使用されるDRAM110、及びHDDなどの外部記憶装置(不図示)にアクセス可能に構成されている。CPU回路部100は、画像処理部150等を制御し、情報処理装置のシーケンスを統括的に制御する。
外部記憶装置は、CPU回路部100や画像処理部150で使用されるパラメータやプログラム、補正データを格納している。DRAM110のデータやプログラム等は、外部記憶装置からロードされる構成としてもよい。また本実施形態では、画像処理部150の複数のデータ処理回路[0]〜[11]はDMAC(Direct Memory Access Controller)(不図示)を備え、DMACを介してとのデータ転送を行う。このとき、この転送データの格納先はDRAM110、eDRAM120、Stackedメモリ130に限らず外部記憶装置であってもよい。
図1(b)は、DRAM110のメモリ領域の構成を示す図である。特に、複数のマルチポート共有キャッシュの割り当て例を示している。本実施形態では、前述の課題に対応するため、画像処理部150と外部メモリである、DRAM110、eDRAM120、Stackedメモリ130との間にマルチポート共有キャッシュ160を挿入する。各マルチポート共有キャッシュ[A]〜[D]は、図1(b)のように、各々別のメモリ領域に割り当てられている。例えば、マルチポート共有キャッシュ[A]は、図1(b)の領域[A]に割り当てられている。またマルチポート共有キャッシュ[B]〜[D]の各々は、領域[B]〜[D]に割り当てられている。
<2.装置の動作>
データ処理回路[0]が、アドレス(アドレス値)0x0A00_0000〜0x0A8F_0000の領域[A]のデータをDRAM110から読み出すときを考える。このとき、データ処理回路[0]のデータ要求が、画像処理バス(Network On Chip,共有バス)145に発行され、このデータ要求は、マルチポート共有キャッシュ[A]〜[D]にブロードキャストされる。マルチポート共有キャッシュ[A]は、データ要求のアドレスが担当するメモリ領域[A]であるため、このデータ要求を受信する。マルチポート共有キャッシュ[A]はキャッシュ判定を行い、キャッシュヒットであれば、キャッシュデータをデータ処理回路[0]に返す。キャッシュ判定がキャッシュミスなら、マルチポート共有キャッシュ[A]は、DRAM110にデータ要求を行い、キャッシュデータをリフィルして、読み出したキャッシュデータをデータ処理回路[0]に返す。キャッシュミスのとき、マルチポート共有キャッシュ[A]は、システムバス(Network On Chip,共有バス)140に対してデータ要求を行い、必要なデータを読み出す。
画像処理バス(Network On Chip,共有バス)145は十分な転送帯域を有しており、データ処理回路[0]〜[11]のすべてが並列にデータ要求を行っても、マルチポート共有キャッシュ[A]〜[D]には並列にデータ要求が届く。
マルチポート共有キャッシュ[A]〜[D]がない場合には、データ処理回路[0]〜[11]のすべてのデータ要求はDRAM110に集中してしまう。本実施形態では、マルチポート共有キャッシュ[A]〜[D]があるので、データ処理回路[0]〜[11]のデータ要求は、まずマルチポート共有キャッシュ[A]〜[D]により並列にキャッシュ判定がなされる。そして、マルチポート共有キャッシュ[A]〜[D]により、キャッシュミスのデータ要求だけがDRAM110にアクセスする。そのため、DRAM110へのデータ要求は離散的となり、本実施形態では、DRAM110へのアクセス集中は緩和される。またマルチポート共有キャッシュのため、複数のデータ処理回路は互いにキャッシュ共有されている。その結果、あるポートに接続されたデータ処理回路のキャッシュデータを、別のポートに接続されたデータ処理回路が参照できるため、外部メモリへのデータ要求は重複することはない。
また、マルチポート共有キャッシュ[A]〜[D]の転送長は、メモリの種類(DRAM110、eDRAM120、Stackedメモリ130)により、最適な転送長を選ぶことができる。例えば、図1(b)の領域[A]はDRAM110の領域とし、領域[C]はeDRAM120の領域とし、領域[D]はStackedメモリ130の領域とする。領域[A]に対応するマルチポート共有キャッシュ[A]の転送長は、DRAM110の仕様にあわせて128Byte転送に設定する。また領域[C]に対応するマルチポート共有キャッシュ[C]の転送長は、eDRAM120の仕様に合わせて256Byte転送に設定できる。また領域[D]に対応するマルチポート共有キャッシュ[D]の転送長は、Stackedメモリ130の仕様に合わせて2KByte転送に設定できる。そのため外部メモリの仕様に合わせて適切な転送長を選択できる。
このようにDRAM規格の世代や次世代DRAM規格に対して、DRAM性能を維持するためにはメモリアクセス1回あたりの転送長を適切に大きくして、DRAMのリード/ライトの切り替えやバンク競合の際のレイテンシを隠蔽する。特に次世代の高性能DRAMの広いバス幅と高周波数化によるメモリ帯域を十分に活かすために、その領域の転送長は非常に大きな転送長を選択する。
また、データ処理回路[0]〜[11]は、新旧のDRAM世代の仕様(転送長)に合わせて設計されている。その結果、データ処理回路[0]〜[11]のデータ要求は、各々異なる転送長であり、そのまま外部メモリ(DRAM110、eDRAM120、Stackedメモリ130)にデータ要求すると、DRAMに合わせた適切な転送長のデータ要求にならない。そして、外部メモリ(DRAM110、eDRAM120、Stackedメモリ130)にとって不適切な転送長のデータ要求が混在するため、外部メモリは所望の性能が得られなくなる。
しかしながら、本実施形態では、データ処理回路[0]〜[11]の各々は、必ずマルチポート共有キャッシュ[A]〜[D]を介して、外部メモリ(DRAM110、eDRAM120、Stackedメモリ130)にアクセスする。そして、マルチポート共有キャッシュ[A]〜[D]の各々は、データ要求する外部メモリに合わせて転送長を設定できる。そのため、データ処理回路[0]〜[11]のデータ要求の転送長が外部メモリに対し適切な転送長でなかったとしても、マルチポート共有キャッシュ[A]〜[D]が外部メモリの仕様に合わせて適切な転送長に変換する。その結果、古いDRAM世代の仕様に合わせて設計したデータ処理回路であっても、最新のDRAMの性能を落とすことなく、再利用することができる。
なお、後述の本実施形態のキャッシュメモリを構成するキャッシュライン長(リフィル長)の変更により、メモリアクセス1回あたりの転送長を制御できる。また後述のデータ取得部の受信バッファと送信バッファの容量の変更によりノンブロッキング転送量を調整できる。
組込み半導体チップでは、コスト制約のため、上記のマルチポート共有キャッシュのキャッシュメモリを大きな容量にできない。しかしながら、依存関係のない多数のデータ処理回路[0]〜[11]が個別にデータ要求するため、キャッシュ競合が起きやすい。そこで本実施形態では、後述するようにフルアソシアティブ方式のマルチポート共有キャッシュを挿入する。
以上のように、本実施形態の手法では、マルチポート共有キャッシュの各々は、キャッシュミスしたときだけ、間欠的に大きなメモリアクセス単位(転送長)で外部メモリ(DRAM110、eDRAM120、Stackedメモリ130)にアクセスする。
この制御により、外部メモリは、小さなメモリアクセス単位でのデータ要求を受けないので性能は維持される。またキャッシュヒットしたときは、マルチポート共有キャッシュからデータを返すため、チップ全体でのメモリ帯域は見かけ上、ポートの数だけ増加する。また複数のマルチポート共有メモリのポートの数だけアクセスが分散するため、DRAMへのアクセス競合が少なくなる。更に、競合時の調停待ちによるメモリアクセスレイテンシの増加が少なくなり、半導体チップ全体の平均的なレイテンシは短くなる。したがって、画像処理の性能は維持でき、(前)半導体プロセス/DRAM世代で開発した画像処理を再利用しやすくなる。
前述の通り、外部メモリとして一般的な記憶装置であるDRAMの規格策定では、メモリ帯域を向上するため、非常に高周波数化している。一方、組込み機器で用いられるASIC等の論理回路は、最先端プロセッサのように数GHzの高動作周波数で動作するわけではないので、上述の高周波数化したDRAMと、そのまま接続することはできない。
本実施形態では、マルチポート共有キャッシュは、インターフェースとして高周波数化したDRAMと画像処理モジュール(論理回路)とを仲介する。次に、マルチポート共有キャッシュの構成について説明する。
<3.回路規模の小さなキャッシュ判定>
図2は、従来のマルチポート共有キャッシュにおけるキャッシュ判定部の構成の一例を示す図である。ここでは、ポート[0]〜ポート[N−1]のN個のポートからデータ要求が入力される。一般的には、選択回路1818により、複数のデータ要求の競合に対して、順番にキャッシュ判定部に要求を割り振る。つまり、共有された複数のキャッシュタグはN個のポートから複数のデータ要求を同時に処理する必要がないため、回路規模も小さく、後述するキャッシュミス時のキャッシュタグのリプレイス(更新)も特別な工夫は不要である。以下、図2を参照して、連想(ライン選択)方式がフルアソシアティブ方式のキャッシュ判定部1800の基本動作について説明する。
キャッシュ判定部1800は、ラウンドロビンで選択する選択回路1818により選択されたデータ要求が入力されると、アドレス(アドレス値)をアドレスレジスタ1821で保持する。キャッシュ判定部1800には、8個のキャッシュタグ1822が記憶されており、8ノードのフルアソシアティブ方式のキャッシュ装置となる。また8個のキャッシュタグ1822には、[0]〜[7]の番号が予め定められており、対応するキャッシュメモリの「相対」キャッシュライン番号を示している。「相対」番号である理由は後述する。アドレスレジスタ1821の入力アドレスと8個のキャッシュタグ1822は、8個の比較器1823で、「一致」が判定される。そして比較器1823から8個の比較結果1824が判定器1825に出力される。
8個の比較結果1824のうち、1つでも「一致」であれば、キャッシュヒットと評価される。8個の比較結果1824のうち、いずれも「一致」でなければ、キャッシュミスと評価される。評価結果はキャッシュミスフラグ1828として、キャッシュ判定部1800から出力される。
評価結果がキャッシュヒットの場合、「一致」したキャッシュタグの「相対」ライン番号が、ライン番号1827としてキャッシュ判定部1800から出力される。
また評価結果が、キャッシュミスの場合(分岐1826のYES)、入力アドレスがキャッシュタグ1822へ書き込まれ、キャッシュタグが更新される。キャッシュタグ1822は、シフトレジスタで構造された記憶領域である。評価結果がキャッシュミスの場合、シフト動作によりキャッシュタグの値が下流のキャッシュタグに移動する。つまり、キャッシュタグ[0]にはキャッシュタグ[1]の値が、キャッシュタグ[1]にはキャッシュタグ[2]の値が各々書き込まれる。同様の書き込みが繰り返され、キャッシュタグ[6]にはキャッシュタグ[7]の値が書き込まれる。そして最後にキャッシュタグ[7]に入力アドレスの値が書き込まれる。評価結果がキャッシュミスの場合、上記のようなキャッシュタグの更新が行われ、ライン番号1827としてライン[7]の値がキャッシュ判定部1800から出力される。
このように必ず古いキャッシュタグ[0]のタグ情報が破棄される、キャッシュタグのリプレイス手法を、「FIFO方式(ラウンドロビン方式)」という。フルアソシアティブ方式のキャッシュ装置では、装置を簡単に実現できるので、リプレイス手法として「FIFO方式(ラウンドロビン方式)」を採用することが多い。
インターフェース装置としての形態を考えた場合、データ読み書きの要求順に対して古い要求から破棄していくことになるため、「FIFO方式(ラウンドロビン方式)」は望ましい手法であると言える。
最後にキャッシュ判定部1800は、上記のように求めたキャッシュミスフラグ1828とライン番号1827に、入力アドレスを合わせてキャッシュ判定結果として出力する。
以上のように複数のポートからのデータ要求を選択してキャッシュ判定部に入力すれば、容易にマルチポート共有キャッシュのキャッシュ判定部を構成することができる。しかしながら、この方法では複数のデータ要求のうち1サイクルに1つの要求しかキャッシュ判定することができず、高速な処理には向いていない。しかしながら、回路構成が単純であり、回路規模は小さいキャッシュ判定となっている。
<4.ポート数に応じて並列化したキャッシュ判定>
図3は、マルチポート共有キャッシュにおけるキャッシュ判定部の構成の他の一例を示す図である。キャッシュ判定部のアドレスレジスタ1821、判定器1825、比較器1823を、ポート数に応じて並列化する構成について説明する。
共有キャッシュ共有を目的とする場合、8個のキャッシュタグ1822の[0]〜[7]は、N個のポートから共有されている必要がある。そのため、並列化されたすべての比較器には、キャッシュタグの値1832が各々接続されている。図3の構成では、比較器や判定器の回路規模は増加するが、N個のポートのデータ要求に対し、キャッシュ判定は並列に動作するため、図2の構成よりは高速である。
一方、キャッシュ判定の結果、キャッシュミスのとき、上述のようにキャッシュタグをリプレイスする必要がある。図3の構成では、N個のポートのデータ要求を同時に処理しているため、N個のポートのデータ要求に対して複数(最大N個)のキャッシュミスが同時に起きることとなる。そのため、複数のキャッシュミスのリプレイスが完了するまでN個のポートからの入力を停止する必要があり、キャッシュミスの数だけ処理速度は低下する。しかしながら、回路構成が単純ながら、図2の構成よりは高速化したキャッシュ判定となっている。
<5.カウンターフローパイプラインを用いたキャッシュ判定>
このとき図2の構成では、N個のポートからのデータ要求を順番に選択して判定するため処理速度が低下する。また図3の構成では、N個のポートのキャッシュミスによるリプレイスを順番に選択してキャッシュタグを書き換える必要があるため処理速度が低下する。
また、図2、図3のキャッシュ判定部をパイプライン化して動作周波数を向上する技術することが考えられる。ただし、パイプライン化により非常に高い動作周波数での動作を実現できる半面、キャッシュミス時のリプレイス動作と、各パイプラインの比較器が適切に連動しなければ、正しいキャッシュ判定結果を得ることはできない。そのため、マルチポート共有キャッシュを実現するためには、図3と同様に、単に比較器や判定器をポート数に応じて並列化するだけでは対応は難しい。またパイプライン動作しているため、図3のようにN個のポートのキャッシュミスによるリプレイスを順番に選択してキャッシュタグを書き換え、その間、入力を停止する対応では、各パイプラインの比較器との連動ができない。そのため、正しいキャッシュ判定結果を得ることはできない。
更に、上記に加え、キャッシュタグはN個のポートから共有されているため、あるポートのキャッシュミスによるリプレイスが、別のポートの後続するキャッシュヒットのキャッシュタグを破棄してしまう。その結果、複数のポート間で、スラッシングと呼ばれるキャッシュ競合が発生し、システム全体の性能を大きく低下させる場合がある。
以下では、前述のマルチポート共有キャッシュI/Fの高速化について説明する。具体的には、カウンターフローパイプラインを用いてキャッシュ判定を行う構成について説明する。
図4は、キャッシュ判定部における動作の一例を示すフローチャートである。図4のフローチャートに従い、キャッシュ判定部はキャッシュ判定を行うが、まずキャッシュ判定部はキャッシュタグの構成を以下のように確定させる。
まず、N個のポートから共有する複数のキャッシュタグをN個のグループに分割して、必要なキャッシュタグとして各ポートに割り当てる(S210)。このとき、割り当てるキャッシュタグの数が多いほど、後述するキャッシュタグのリプレイスに有利になる。そのため、優先順位の高いポート、キャッシュヒット率が低い(キャッシュミスが多い)ポートなど、ユースケースに応じて、重要なポート程、割り当てるキャッシュタグの数を多くする。各ポートにおいて、当該ポート自身(自ポート)割り当てられたキャッシュタグを以降では、ホームタグと呼称する。また、あるポートのホームタグ以外のキャッシュタグ(すなわち自ポート以外に割り当てられたキャッシュタグ)を、当該ポートのアウェイタグと呼称する。各ポートのホームタグは排他であり、すべてのホームタグを集合すると、キャッシュタグの総数となる。また各ポートのアウェイタグは、各々のホームタグが互いに異なるので、部分的に同一のキャッシュタグを含むが、同一集合にはならない。
次に、各ポートのデータ要求の有無を確認し、データ要求がなければ、キャッシュ判定をスキップする(S215のNO)。キャッシュ判定を行うポートにデータ要求があれば(S215のYES)、以降のキャッシュ判定を実行する。
まず、あるポートのキャッシュ判定部は、ホームタグについて、データ要求のアドレス値と比較する(S220)。もしホームタグに一致するキャッシュタグが見つかったとき(S230のNO)、キャッシュ判定部は、判定結果をキャッシュヒットとし、一致したホームタグのライン番号を出力する(S232)。一方、ホームタグに一致するキャッシュタグが見つからなかったとき(S230のYES)、あるポートのキャッシュ判定部は、アウェイタグについて、データ要求のアドレス値と比較する(S234)。
もしアウェイタグに一致するキャッシュタグが見つかったとき(S240のNO)、キャッシュ判定部は、判定結果をキャッシュヒットとし、一致したアウェイタグのライン番号を出力する(S242)。一方、アウェイタグにも一致するキャッシュタグが見つからなかったとき(S240のYES)、あるポートのキャッシュ判定部は、判定結果をキャッシュミスとする。そしてホームタグからリプレイス先を選択し、ホームタグをリプレイスし、ホームタグのリプレイス先をライン番号とし出力する(S244)。
N個のポートについてそれぞれ上記の判定を行い、すべてのポートの判定が完了するまで繰り返す(S250のNO)。すべてのポートが完了したら(S250のYES)、キャッシュ判定部のキャッシュ判定が完了する。
高性能を維持するためには、上記のキャッシュ判定を短いサイクル(好適には1サイクル)で行う必要があり、ポート毎にキャッシュ比較器と最終判定器を備え、ポート毎のキャッシュ判定を並列化する。またキャッシュタグが多くなると比較器と最終判定器の組み合わせ回路の遅延量が大きくなり、動作周波数を向上することが難しくなる。そのため、図5のようにパイプライン回路で構成するとよい。
図5は、キャッシュ判定部の詳細構成の一例を示すブロック図である。図5は構成を単純にするため、2ポートのマルチポート共有キャッシュのキャッシュ判定部とし、キャッシュタグは12個で、ポート[0]とポート[1]のホームタグは6個ずつとし、そしてキャッシュ判定部は3段のパイプラインステージの構成とする。
ポート[0]に対してキャッシュタグ[0],[1],[4],[5],[8],[9]をホームタグと呼ぶ。また、キャッシュタグ[2],[3],[6],[7],[10],[11]をアウェイタグと呼ぶ。
そして、ポート[1]に対してキャッシュタグ[2],[3],[6],[7],[10],[11]をホームタグと呼び、キャッシュタグ[0],[1],[4],[5],[8],[9]をアウェイタグと呼ぶ。
各ポートは比較するためのアドレス列をパイプラインレジスタで伝達する(第1パイプライン)。ポート[0]はアドレス列{A,B,C,D,・・・}を第1パイプライン[0]に入力し、ポート[1]はアドレス列{P,Q,R,S,・・・}を第1パイプライン[]に入力する。
キャッシュ判定部は、判定結果がキャッシュミスのときキャッシュタグをリプレイスする必要がある。ポート[0]のホームタグは、キャッシュタグ[9],[8],[5],[4],[1],[0]のパイプラインレジスタで構成される。そしてリプレイスのときに、キャッシュミスしたアドレスを入力し、キャッシュタグに格納されている値を1ステージだけ移動する(ポート[0]の第2パイプライン)。同様にポート[1]のホームタグは、キャッシュタグ[11],[10],[7],[6],[3],[2]のパイプラインレジスタで構成され、リプレイスによりキャッシュタグに格納されている値を移動する(ポート[1]の第2パイプライン)。
本実施形態では、さらにアウェイタグに格納されているキャッシュタグともアドレスを比較する必要がある。そこで、各ポートはアウェイタグとの比較のためのアドレス列をパイプラインレジスタで伝達する(第3パイプライン)。例えば、ポート[1]の第3パイプライン[1]に、ポート[0]のアドレス列{A,B,C,D,・・・}を入力し、ポート[0]の第3パイプライン[0]に、ポート[1]のアドレス列{P,Q,R,S,・・・}を入力する。その結果、ポート[0]から入力されるアドレス列{A,B,C,D,・・・}は、ポート[0]のアウェイタグであるポート[1]のキャッシュタグ[11],[10],[7],[6],[3],[2]と比較できる。また逆に、ポート[1]から入力されるアドレス列{P,Q,R,S,・・・}は、ポート[1]のアウェイタグであるポート[0]のキャッシュタグ[9],[8],[5],[4],[1],[0]と比較できる。
各ポートのキャッシュ判定器の各パイプラインステージの比較をもとに、ミス判定(キャッシュヒットでない)を行い、パイプラインステージの比較がすべてキャッシュミスなら、そのパイプラインはキャッシュミスと判定する。そして最終段の最終判定器は、あるポートは、第1パイプラインのホームタグの判定結果と、別ポートの第3パイプラインのアウェイタグの判定結果の両方を合わせてキャッシュミスを判定し、判定結果を確定させる。
以上の構成にした場合、キャッシュ判定をパイプライン化して動作周波数を向上できる。また各ポートのホームタグは、複数のキャッシュタグを排他で割り当てている。そして、キャッシュミス時のリプレイスはホームタグにしか起きない仕組みである。その結果、複数のポートでキャッシュミスが同時に起きても、リプレイスするキャッシュタグ(第2パイプライン)は異なり、必ず並列にリプレイスを実行することができる。リプレイスが競合したとき、キャッシュ判定部を停止する必要はない。また、あるポートのキャッシュミスが別のポートのホームタグをリプレイスすることも起きない。
そのため、予め優先順位等のユースケースにより複数のキャッシュタグを必要な数だけホームタグとして各ポートに割り当てておけば、スラッシングなどのキャッシュ競合により、別ポートにキャッシュタグを占有されることは起きない。その結果、本実施形態の手法では所望のシステム性能を維持できる。そして各ポートは、別ポートにあるアウェイタグとの比較により、アドレスと一致するキャッシュタグがあれば、キャッシュヒットとなり、キャッシュ内に記憶されたキャッシュデータを利用できる。キャッシュヒットするキャッシュデータは共有し、キャッシュミスするキャッシュデータは排他で管理することにより、前述の課題を解決している。
上記の図5を用いた一例では、単純な構成で説明をしたが、図6を用いてマルチポート共有キャッシュのキャッシュ判定部をさらに説明する。
図6は、マルチポート共有キャッシュの詳細構成の一例を示すブロック図である。図6のようにN個のポートに対応して、Nグループに分割したキャッシュタグを含む、N個のキャッシュ判定器[0],[1],・・・[N−1]と、N個の最終判定器[0],[1],・・・[N−1]とを備える。このとき各キャッシュ判定器は、1本の第1パイプラインと、1本の第2パイプラインと、N−1本の第3パイプラインを備える。また各最終判定器は、1本のホームタグの判定結果と、N−1本のアウェイタグの判定結果の入力を備える。
あるポート[p]のアドレス入力は、対応するキャッシュ判定器[p]の第1パイプラインに接続する。そして、ポート[p]のアドレス入力を、対応するキャッシュ判定器[p]以外の残りのキャッシュ判定器の第3パイプラインに入力する。これらのアドレス入力は、アドレス入力の接続器を用いて、N個のポートと、N個のキャッシュ判定器[0],[1],・・・[N−1]の第1パイプラインと、第3パイプラインをすべて接続すればよい。
また、あるキャッシュ判定器[p]の第1パイプラインの判定結果を、対応する最終判定器[p]のホームタグ結果に入力する。そして、最終判定器[p]のアウェイタグ結果には、対応するキャッシュ判定器[p]以外の残りのキャッシュ判定器の第3パイプラインからの判定結果を入力する。これらの判定結果の入力は、判定結果の接続器を用いて接続する。つまり、N個のキャッシュ判定器[0],[1],・・・[N−1]の第1パイプラインと、第3パイプラインを、N個の最終判定器[0],[1],・・・[N−1]のホームタグ結果とアウェイタグ結果をすべて接続すればよい。
以上のように、アドレス入力の接続器と、判定結果の接続器を用いて、N個のポートと、N個のキャッシュ判定器と、N個の最終判定器を所定の方法で接続する。それにより、本実施形態ではN個のポートからのデータ要求を、キャッシュタグを共有しながら、高速にキャッシュ判定することができる。
なお、上記のアドレス入力の接続器と、判定結果の接続器の接続を切り替えることでマルチポートのキャッシュ共有のし方を変更できることは言うまでもない。例えば、ポートの個数Nを容易に変更できる。また、1つのポートに対応するキャッシュ判定器を1つから複数個に増やすことで、そのポートのホームタグを増やすことが可能である。
また、図5を参照して説明した回路構成では、すべてのポートに同一アドレスが同時に入力された場合、並列化してキャッシュ判定可能であるが、すべてのポートでキャッシュミスと判定してしまう。その結果、すべてのポートのホームタグに同一のキャッシュタグ(tag_address)が格納され、同じデータ要求が外部メモリに発行されてしまう。
その問題を解消するため、図6のキャッシュ判定部の入力に、同一アドレス検出器412を挿入する。この回路は、同一アドレスが同時に入力されたことを検出し、予め定められたポート毎の優先順位に従い、優先順位の高いポートに、そのアドレスを入力する。そして、この回路は、それ以外のポートには、1サイクル遅延させて、そのアドレスを入力する。その結果、他のポートには、アドレスが1サイクル後にキャッシュ判定部に入力されて、優先順位の高いポートの格納済みのキャッシュタグ(アウェイタグ)を参照してキャッシュヒットと判定できる。
同一アドレス検出器412により、複数のポートに同一アドレスが同時入力されたときのキャッシュ共有を実現して、外部メモリへの不要なデータ要求を削減することができる。
以上のように、本実施形態のマルチポート共有キャッシュにおいては、複数のポートに対するキャッシュミスが同時に起きた時のキャッシュタグのリプレイスの競合を回避することができる。そのため、簡易な制御回路で処理速度の低下が少ないキャッシュ判定を実現することができる。
また、カウンターフローパイプラインを用いたキャッシュ判定は、非常に単純なシフトレジスタでデータを更新するパイプライン構成となっており、非常にGHzオーダーの高動作周波数で動作させることができる。そのため、次世代DRAMの非常に大きなメモリ帯域に対応しやすい。
<6.キャッシュ判定部の詳細動作>
次に図5と図6記載のキャッシュ判定のし方について詳細説明する。前述のマルチポート共有キャッシュに対応するために、キャッシュ判定部は、第1パイプラインおよび第3パイプラインと、第2パイプラインとのキャッシュタグ比較を行うキャッシュ判定器と、その比較結果を集計する最終判定器で構成されている。
あるポートの第1パイプラインには、比較対象のアドレスとして以下の信号が入力される。
・第1パイプラインの有効信号である「valid」
・第1パイプラインのアドレス信号である「address」
・第1パイプラインのライト信号である「write_enable」
・第1パイプラインのライトデータ信号である「write_data」
・第1パイプラインのキャッシュミスを示す信号である「cache_miss」
このとき、キャッシュミスを示す信号である「cache_miss」は初期値を"1"とする。また、上記ポート以外のN−1個のポートに対応する第3パイプラインにも、比較対象のアドレスとして同様の信号が入力される。例えば、図5の一例では、3ステージのパイプラインで構成されており、ポート[0]に対して、第1パイプラインとしてアドレス列{P,Q,R,S,・・・}、第3パイプラインとしてアドレス列{A,B,C,D,・・・}が入力されている。そしてA,B,C,D,P,Q,R,Sの各々は、上記のアドレスの信号で構成されている。
一方、あるポートの第2パイプラインには、被比較対象のキャッシュタグとして以下の信号が入力される。
・第2パイプラインの有効信号である「tag_valid」
・第2パイプラインのキャッシュされたデータの格納アドレスを示す信号である「tag_address」
・第2パイプラインのライトによりキャッシュデータが更新されたことを示す信号である「modified」
・第3パイプラインのアドレスと一致して別ポートから共有されたことを示す第2パイプラインの信号である「shared」
このとき、キャッシュタグの状態を示す「modified」と「shared」は初期値を"0"とする。例えば、図5の一例では、3ステージのパイプラインで構成されており、ポート[0]に対して、第2パイプラインとしてキャッシュタグ列{[9],[8],[5],[4],[1],[0]}が入力されている。この[9],[8],[5],[4],[1],[0]の各々は、上記のキャッシュタグの信号で構成されている。
図7(a)は、キャッシュ判定に係る第1パイプラインの比較動作の一例を示すフローチャートである。具体的には、ホームウェイのアドレス列(第1パイプライン)と、キャッシュタグ列(第2パイプライン)のキャッシュ判定器の動作を示している。
アドレス列(第1パイプライン)の、あるアドレスの有効信号「valid」が無効の場合(S510のNO)、判定を行う必要はない。あるアドレスの有効信号「valid」が有効の場合(S510のYES)、キャッシュタグ列(第2パイプライン)のすべてのキャッシュタグと比較を行う。
キャッシュタグ列(第2パイプライン)のうち、あるキャッシュタグの有効信号「tag_valid」が無効のとき(S514のNO)、そのキャッシュタグはキャッシュミスしたと判定する。そして、第1パイプラインの「cache_miss」を保持する(S524)。
また、あるキャッシュタグの有効信号「tag_valid」が有効のとき(S514のYES)、アドレス信号「address」と、キャッシュタグのアドレス信号「tag_address」とを比較する。そして、比較結果が不一致のとき(S518のNO)、そのキャッシュタグはキャッシュミスしたと判定し、第1パイプラインの「cache_miss」を保持する(S524)。逆に比較結果が一致のとき(S518のYES)、あるアドレスと、あるキャッシュタグは、キャッシュヒットしたと判定し、第1パイプラインの「cache_miss」を"0"に値を変更する(S520)。
そして、あるアドレスの「write_enable」が有効のとき(S528のYES)、キャッシュメモリのキャッシュデータを、第1パイプラインの「write_data」で書き換える。そのとき、第2パイプラインの比較しているキャッシュタグの「modified」を"1"にする(S530)。逆にあるアドレスの「write_enable」が無効のとき(S528のNO)、キャッシュメモリのキャッシュデータは変化しないので、「modified」の値を保持する(S534)。また、あるアドレスと、あるキャッシュタグがキャッシュミスと判定されたとき、「modified」の値を保持する(S538)。
以上の図7(a)記載のフローチャートを、第1パイプラインのアドレス列のすべてと、第2パイプラインのキャッシュタグ列のすべてについて総当たりで比較すればよい。
図7(b)は、キャッシュ判定に係る第3パイプラインの比較動作の一例を示すフローチャートである。具体的には、N−1個のアウェイのアドレス列(第3パイプライン)と、キャッシュタグ列(第2パイプライン)のキャッシュ判定器の動作を示している。図7(b)のS510からS538までの動作は、ホームのアドレス列(第1パイプライン)と同様であるため、説明を割愛する。
N−1個のアウェイのアドレス列(第3パイプライン)の、あるアドレスと、あるキャッシュタグがキャッシュヒットと判定されたとき、第2パイプラインの比較しているキャッシュタグの「shared」を"1"にする(S540)。また、第3パイプラインの「shared」を"1"にする(S540)。また、あるアドレスと、あるキャッシュタグがキャッシュミスと判定されたとき、第2パイプラインの比較しているキャッシュタグの「shared」の値を保持する(S544)。また第3パイプラインの「shared」の値を保持する(S544)。
以上の図7(b)記載のフローチャートを、N−1個のポートの第3パイプラインのアドレス列のすべてと、第2パイプラインのキャッシュタグ列のすべてについて総当たりで比較すればよい。
以上の方法により、すべてのキャッシュ判定器においてアドレスとキャッシュタグの比較をした後、各ポートの最終判定器は、そのポートのすべての比較結果を受信する。その後、最終的なキャッシュ判定結果を算出する。
図8は、キャッシュ判定に係る最終判定動作の一例を示すフローチャートである。
まず、あるポート[i]のホームタグとの比較結果である第1パイプラインの判定結果を確認する(S550)。ホームタグとの比較結果がキャッシュミスでない(「cache_miss」=0)とき(S550のNO)、最終判定器は、最終的に、あるポート[i]はキャッシュヒットしたと判定し、キャッシュミスフラグの値を"0"として出力する。また、ホームタグとの比較結果がキャッシュミス(「cache_miss」=1)のとき(S550のYES)、最終判定器は、ポート[i]を除く、N−1個の他ポートのアウェイタグとの比較結果を確認する。最終判定器は、N−1個の他ポートから一つを選択し、アウェイタグとの比較結果である第3パイプラインの判定結果を確認する(S554)。
アウェイタグとの比較結果がキャッシュミスでない(「cache_miss」=0)とき(S554のNO)、最終判定器は、最終的に、あるポート[i]はキャッシュヒットしたと判定し、キャッシュミスフラグの値を"0"として出力する。アウェイタグとの比較結果がキャッシュミス(「cache_miss」=1)のとき(S554のYES)、N−1個の他ポートすべてを確認していないなら(S558のNO)、N−1個の他ポートから次のポートを選択する。N−1個の他ポートすべてを確認して(S558のYES)、すべての比較結果がキャッシュミス(「cache_miss」=1)であったとき、最終判定器は、最終的に、あるポート[i]はキャッシュミスしたと判定する。そして最終判定器は、キャッシュミスフラグの値を"1"として出力する。
キャッシュミスが起きると、やがて第2パイプラインのキャッシュタグは掃き捨てられる。もし掃き捨てられるキャッシュタグのキャッシュデータがライト動作により書き換えられていた場合には、外部メモリのデータと異なるため、キャッシュデータをライトバックする必要がある。第2パイプラインの「modified」信号が"1"のとき書き換えが起きたと判断し、ライトバックの実行を意味するライトバックフラグを"1"とする。そして掃き捨てられたキャッシュタグに格納されているtag_addressを、外部メモリの格納先であるライトバックアドレスとする。キャッシュ判定部は、第1パイプラインの判定結果と同期して、第2パイプラインのライトバックに関係する信号を出力する。
以上の処理により、最終判定器から、入力されたアドレスをもとに判定結果である以下の信号が出力される。
・第1パイプラインの有効信号である「有効データ(valid)」
・第1パイプラインのアドレス信号である「アドレス(address)」
・第1パイプラインのライト信号である「ライト動作(write_enable)」
・第1パイプラインのライトデータ信号である「ライトデータ(write_data)」
・第1パイプラインのキャッシュミスを示す信号である「キャッシュミスフラグ(cache_miss_flag)」
・第1パイプラインのキャッシュデータの格納先を示す信号である「ライン番号(tag_id)」
・第3パイプラインのキャッシュデータが共有されていることを示す信号である「同期点(shared)」
・第2パイプラインのキャッシュタグの掃き捨てを示す信号である「有効キャッシュタグ(tag_valid)」
・第2パイプラインのキャッシュタグの掃き捨てにより、ライトバグ先を示す信号である「ライトバックアドレス(tag_address)」
・第2パイプラインのキャッシュタグの掃き捨てにより、ライトバックすることを示す信号である「ライトバックフラグ(modified)」
なお、キャッシュ判定器416と最終判定器部420を含むキャッシュ判定部は、後述するデータ取得部に対応したプリフェッチ部(装置/回路/論理)となっている。そして、キャッシュ判定部は、データを必要とする所定のパイプラインステージに対し、先行するパイプラインステージと繋がり、所定のパイプラインステージに対する前処理にあたる。
以上のように、マルチポート共有キャッシュにおいて、複数のポートに対するキャッシュミスの判定をパイプライン動作で高速に判定できる。そしてN個のマルチポートから共有されたキャッシュタグ列(第2パイプライン)が共有された状態なのか、書き換えられた状態なのかを、キャッシュ判定に合わせて検出することができる。
<7.キャッシュメモリ>
<7.1.コンシステンシーの維持とコヒーレンシーの維持>
一般的に、複数のマスターからのキャッシュ共有において、あるポートのキャッシュミスによるキャッシュメモリの書き換え先を、他のポートがキャッシュヒットして読み出すことがある。このとき何れのキャッシュメモリへのアクセスが先に起きたかを正しく考慮し、キャッシュ共有の動作を正しく実行することが必要になる。ライトバック動作のようなキャッシュメモリへのデータの書き込み動作についての正しい動作の維持を「コンシステンシーの維持」と呼ぶ。一方、キャッシュミスの際のキャッシュメモリの更新についての正しい動作の維持を「コヒーレンシーの維持」と呼ぶ。本実施形態のマルチポートの共有キャッシュにおいても、マルチポートから同時に起きる複数のデータ要求に対して「コンシステンシーの維持」と「コヒーレンシーの維持」を実現する必要がある。
以降では、これらの課題に対して図6を用いて詳細動作を説明する。なお、キャッシュ判定器と最終判定器によるキャッシュ判定は、上述したものと同様である。入力ポートから最終判定器までは、同じ速度で並列動作しているため、基本的にN個のポートからのデータ要求は、時間的に、おおよそ正しい時刻で順番に処理されている。そこで本実施形態では、N個のポートの最終判定器からのキャッシュ判定結果をもとに、すべてのポートからのデータ要求について同期する。
具体的には、図6のプリフェッチ部410のキャッシュ同期(プリフェッチキャッシュ同期422)で同期を管理するための情報(同期ポインタ、タイムスタンプ)を付加する。本実施形態では、すべてのポートのキャッシュ判定結果を参照し、1ポートでもキャッシュミスもしくはライト動作が起きていたら、同期ポインタの値を1だけ増加する。またすべてのポートのキャッシュ判定結果が、キャッシュヒットで、キャッシュメモリへのリードのみであったとき、N個のポートのすべてのキャッシュメモリの状態は変化しないので、同期ポインタは数値を変更する必要はない。そして、プリフェッチキャッシュ同期422は、算出した同期ポインタの値を、各ポートのキャッシュ判定結果に付加する。
このとき、同期ポインタの値が変化する時刻を同期点として定め、この同期点の前後でN個のポートのデータ要求を同期し、同期点の前後で、データ要求の順番が守られるようにする。同期ポインタを用いた、キャッシュメモリの制御の同期動作については、キャッシュのフェッチ部430の詳細説明で後述する。
できるだけ同期点の数が少なく、時系列上の同期点と、次の同期点の間隔が長い方が、同期による待ち合わせが少なくなり、性能向上がしやすい。そのため、プリフェッチキャッシュ同期422の同期ポインタの算出を、さらに厳密にした方が望ましい。あるポートのキャッシュミスしたアドレスを、残りのポートのデータ要求のアドレスが異なる場合は無関係のため、同期動作を行う必要はない。たとえば、キャッシュ判定結果の「shared」が有効の場合、それまでの別のポートのデータ要求のキャッシュミスやライト動作によるキャッシュメモリの更新を参照しているため、「shared」が有効の場合に同期ポインタの値を1だけ増加する。
プリフェッチ部410は、プリフェッチキャッシュ同期422から出力された各ポートのキャッシュ判定結果と同期ポインタを各ポートの1つのコマンドとし、N個のポートのコマンド中間FIFO[0]〜[N−1]に各々送出する。
次に、キャッシュメモリを制御しながら、キャッシュデータを管理するフェッチ部430について詳細説明する。フェッチ部430は、N個のポートの各々に、コマンド処理[0]〜[N−1]を備え、すべてのコマンド処理は、フェッチキャッシュ同期434と接続されている。フェッチキャッシュ同期434から、各コマンド処理には、同一のシステム同期ポインタが入力されている。
図9は、マルチポート共有キャッシュのフェッチ動作の一例を示すフローチャートである。図9を参照して上述のコマンド処理432の動作について、詳細説明する。
あるポート[i]は、他ポートからのアウェイタグの要求の有無を調べる。他ポートからの要求がある場合(S602のYES)は、自ポート(ポート[i])のコマンド処理は行わず、他ポートのキャッシュメモリの制御を優先的に処理する。そして、他ポートからの要求に対し、キャッシュメモリの制御を実施(S620)し、他ポートからのアウェイタグの要求のため(S622のYES)、要求のあった他ポートのコマンド処理の結果を応答する(S626)。
他ポートからの要求がない場合(S602のNO)のとき、自ポート[i]のコマンド処理を行う。具体的には、前述のフェッチキャッシュ同期434からのシステム同期ポインタと中間FIFOに保持されているコマンドの同期ポインタを比較する。システム同期ポインタとあるポート[i]の同期ポインタが同一でなければ(S606のNO)、キャッシュ同期のため待ち合せが必要のため待機する(S604)。
システム同期ポインタとあるポート[i]の同期ポインタが同一のとき(S606のYES)、コマンド処理432は、中間FIFOからコマンドを取得する(S608)。
次に自ポート[i]のキャッシュヒットが他ポートのアウェイタグに対するキャッシュヒットであり、他ポートのキャッシュメモリからキャッシュデータ読み出すとき(S610)、他ポートにコマンド処理を要求する。そして、他ポートからコマンド処理の結果を取得する(S612)。その後、自ポート[i]のコマンド処理は、取得したコマンド処理の結果を出力する(S624)。
自ポート[i]のキャッシュヒットが他ポートのアウェイタグに対するキャッシュヒットでないとき(S610のNO)、自ポート[i]にあるホームタグについてのキャッシュヒットかキャッシュミスとなる。そのため、ポート[i]のコマンド処理は、キャッシュヒットのとき(S614のYES)、キャッシュメモリの制御を行い(S620)、その結果をコマンド処理の結果を出力する(S624)。
またポート[i]のコマンド処理がキャッシュミスのとき(S614のNO)、後述するリフィル済みかどうかを判定する(S616)。そして、リフィル済みでないなら(S616のNO)、待機し(A618)、リフィル済みなら(S616のYES)、キャッシュメモリの制御を行う(S620)。そして、ポート[i]のコマンド処理は、その結果をコマンド処理の結果を出力する(S624)。
上記のキャッシュメモリの制御(S620)は、図6のキャッシュメモリ制御[0]〜[N−1]で行う。また上記の各ポートから他ポートへのコマンド処理の要求は、図6のコマンド入力の接続器436で行う。また、他ポートから各ポートへのコマンド処理の結果の取得は、図6の処理結果の接続器444で行う。
<7.2.アクセス調停部>
前述のプリフェッチ部410とフェッチ部430からのデータ要求を調停して、システムバス(共有バス,Network On Chip)へのデータ要求を発行する、アクセス調停部について、図10(a)を用いて説明する。
図10(a)は、マルチポート共有キャッシュのアクセス調停部の詳細構成の一例を示すブロック図である。プリフェッチ部410は、各ポートの何れかにキャッシュミスがあった場合は、システムバスにデータ要求する。このとき、プリフェッチ部410は、キャッシュミスしたポートのリードアドレスをリードアドレスレジスタRA[0]〜RA[N−1]に書き込む。
アクセス調停部は、後述するデータ取得器438からのプリフェッチ許可信号472の状態を評価する。シリアライザ461は、各ポートのリードアドレスについて、対応するプリフェッチ許可信号472を確認し、プリフェッチ許可信号472の状態が「許可」である場合、リード要求I/F460にリードアドレスを書き込み、システムバスにデータ要求を行う。そして、システムバスから、リード要求に対応したリード応答が、リード応答I/F463に戻るまで、リード要求したポート番号などの情報をリード要求中間FIFO462に保持する。分配器464はリード応答が戻ると、リード応答I/F463からリードデータを読み出す。そして、分配器464は、リード要求中間FIFO462からリード要求したポート番号を読み出す。そして分配器464は、フェッチ部430にあるリードデータレジスタRD[0]〜RD[N−1]の何れかに書き込む。このような動作でフェッチ部430は、送信したリード要求対する、リード応答を受信する。
アクセス調停部は、リード要求中間FIFO462に複数のポート番号などの情報を保持できるため、1つのリード応答が戻るまでに、複数のリード要求をシステムバスにノンブロッキング動作で先行発行できる。
また、あるポートのプリフェッチ許可信号472の状態が「許可」でない場合は、シリアライザ461はプリフェッチ許可信号472の状態が「許可」である別ポートを検索して、リード要求を発行する。そして、シリアライザ461はプリフェッチ許可信号472の状態が「許可」でないポートは、「許可」になるまで待機する。
リードデータレジスタRD[0]〜RD[N−1]のリード要求がすべて発行し終わるまで、プリフェッチ部410を停止(ストール)する。なおリードデータレジスタRD[0]〜RD[N−1]をFIFOで実現した場合には、このFIFOが一杯になるまで、プリフェッチ部410を停止する必要はないので性能を向上できる。
本実施形態のマルチポート共有キャッシュはライトバック動作に対応するため、フェッチ部430はライトバック動作時にシステムバスにキャッシュメモリのデータを外部メモリにライトするためのライト要求を行う。フェッチ部430は、ライト要求が必要なポートに関して、ライトアドレスとライトデータを、対応するライトアドレスレジスタWA[0]〜[N−1]の何れかに書き込む。アクセス調停部は、リード要求のとき、プリフェッチ許可信号472の状態を確認してリード要求していたが、ライト要求のときは、フェッチ許可信号474の状態を確認してライト要求を行う。アクセス調停部のライト要求の動作は、上述したリード要求の動作と基本的に同様である。アクセス調停部は、ライトアドレスレジスタ446、シリアライザ466、ライト要求I/F465、ライト要求中間FIFO467、ライト応答I/F469、ライト応答レジスタ447を用いて、リード要求の動作と同様にライト要求の動作を実現する。
<7.3.データ取得部>
図10(b)は、マルチポート共有キャッシュのデータ取得部の詳細構成の一例を示すブロック図である。図6と図10(b)と、図11(a)〜図11(b)を用いて、キャッシュメモリ制御440とキャッシュメモリ442を含む、各ポートのデータ取得器438の動作について詳細説明する。図6のようにフェッチ部430には、N個のポートに対応して、N個のデータ取得器fetch[0]〜[N−1]を備える。
本実施形態のキャッシュメモリ442は、図10(b)に示すように、論理的には「キャッシュ領域」、「受信領域」と「送信領域」を含んで構成されている。そして、受信領域を管理する情報(受信ポインタ)と、送信領域を管理する情報(送信ポインタ)と、キャッシュ領域を管理する情報(下限データポインタと上限データポインタ)とをキャッシュメモリ制御440に備える。
図11(a)は、キャッシュメモリ制御のリードキャッシュ動作の一例を示すフローチャートである。図11(b)は、キャッシュメモリ制御のリフィル動作の一例を示すフローチャートである。まずリードキャッシュとリフィル動作について詳細説明する。
キャッシュメモリ制御440は、キャッシュ判定の結果「ライン番号、キャッシュミスフラグ」を取り出す(S640)。そして評価結果であるキャッシュミスフラグの値に応じて次のキャッシュデータの取得動作を行う。図11(a)にキャッシュデータの取得動作の一例を示す。
キャッシュミスフラグが無効(キャッシュヒット)のとき(S642のNO)は、キャッシュメモリ制御440は、ライン番号とキャッシュメモリ442の受信ポインタ、上限データポインタからキャッシュメモリ442上の格納アドレスを算出する。そして、その格納アドレスをもとに記憶済みのデータをキャッシュメモリ442からリードデータとして読み出す(S650)。そして、要求されたキャッシュデータを出力する(S652)。
キャッシュミスフラグが有効(キャッシュミス)のとき(S642のYES)、キャッシュメモリ制御440は、受信ポインタと上限データポインタの差を確認する(S644)。両ポインタに差がない(0の値)のとき(S644のNO)、外部メモリからの要求されているリフィルデータがキャッシュメモリ442に届いていないと評価し、リフィルデータが届くまで待機する(S646)。両ポインタに差がある(0ではない値)のとき(S644のYES)、外部メモリからの要求されているリフィルデータがキャッシュメモリ442に格納済みのため上限データポインタを更新する(S648)。ここからキャッシュデータの出力までの手順は、上述したキャッシュミスフラグが無効(キャッシュヒット)の手順と同様となる。
データ取得部では、前述のキャッシュデータの取得動作とは並行して、要求されたリフィルデータの受信動作を行っている。図11(b)にデータ取得部のリフィルデータの受信動作の一例を示す。外部メモリからの要求されているリフィルデータがデータ取得部に届いた場合(S660のYES)、受信ポインタを更新する(S662)。次にデータ取得部は受信ポインタとデータポインタの差を確認する(S664)。両ポインタに差が予め定められた受信の閾値と同数であるとき(S664のYES)、これ以上、リフィルデータを受信することができないので、プリフェッチ許可信号472を「禁止」にする(S668)。両ポインタに差が予め定められた受信の閾値より小さいとき(S664のNO)、外部メモリからリフィルデータを受け取ることができるので、プリフェッチ許可信号472は「許可」のままでよい(S666)。
回路実装では、プリフェッチ部410の方がフェッチ部430より前段にある。それ故、フェッチ部430からのプリフェッチ許可信号を受け取ってから、アクセス調停部でDRAMへのデータ要求を止めても遅いケースがある。このような回路の位置関係からくるレイテンシの違いを考慮して、上述の受信の閾値を、予め記憶できる受信段数より少なく設定してもよい。また、より厳密な手法としては、リフィル待ち数を新たに定義し、このリフィル待ち数を用いてプリフェッチ許可信号472を生成してもよい。新たに定義するリフィル待ち数とは、0から開始し、アクセス調停部でキャッシュミスの度に1を加算し、データ取得部にリフィルデータが到着する度に1を減算した数とする。つまり、リフィル待ち数とは、データ要求を行ったが、まだフェッチ部に到達していないリフィルデータの数を表している。そして、受信済みのリフィルデータ数(受信ポインタと上限データポインタの差)とリフィル待ち数の合計値が将来受信するリフィルデータ数となる。この将来受信する数が受信の閾値より小さい場合、プリフェッチ許可信号472は「許可」とし、将来に受信する数が受信の閾値と同じ数であればプリフェッチ許可信号472は「禁止」とするのである。このとき、受信数と受信の閾値は同じ値であるので、これ以上、リフィルデータを受け取ることはできない。もしこれ以上、リフィルデータを受け取るとキャッシュ領域を上書きすることになる。そのため、データ取得器438は、プリフェッチ許可信号472を「禁止」にしてアクセス調停部に通知し、ノンブロッキングアクセスを一旦、停止する。プリフェッチ部は、外部メモリへのデータ要求を停止する。
図12(a)は、キャッシュメモリ制御のライトバックキャッシュ動作の一例を示すフローチャートである。図12(a)を参照してライトバックキャッシュのライトバック動作について詳細説明する。
キャッシュメモリ制御440は、キャッシュ判定の結果の「ライトバックアドレス、ライトバックフラグ(modified)」を取り出す(S670)。そして評価結果であるライトバックフラグの値に応じて次のキャッシュデータの書き出し動作を行う。図12(a)にキャッシュデータの書き出し動作の一例を示す。
ライトバックフラグが無効のとき(S672のNO)は、キャッシュメモリ制御440はライトバック動作を行わない。一方、ライトバックフラグが有効(ライトバック)のとき(S672のYES)、キャッシュメモリ制御440は、送信ポインタと下限データポインタの差を確認する(S674)。両ポインタの差が送信の閾値と同じ値のとき(S674のYES)、これまでに発行したライト要求に対するライト応答が戻ってこないため、送信領域が一杯である。そのとき、キャッシュメモリ制御440は、これ以上、ライト要求の送信領域にキャッシュデータを保持できないため、ライト要求の発行を停止する。そして、キャッシュメモリ制御440は、送信領域が解放されて、両ポインタの差が送信の閾値より小さくなるまで待機する(S676)。
逆に両ポインタの差が送信の閾値より小さいとき(S674のNO)、外部メモリにライト要求が可能であり、下限データポインタを更新する(S678)。そして、キャッシュメモリ制御440は、キャッシュメモリ442の送信ポインタ、下限データポインタからキャッシュメモリ442上の格納アドレスを算出する。具体的には、下限ポインタの更新により、キャッシュ領域から送信領域に切り替わった領域が格納アドレスとなる。そして、キャッシュメモリ制御440は、その格納アドレスをもとに記憶済みのデータをキャッシュメモリ442からキャッシュデータとして読み出す(S680)。
処理しているコマンドがライト動作でないとき(S682のNO)、キャッシュメモリ制御440は、読み出したキャッシュデータをキャッシュバックデータとする。一方、処理しているコマンドがライト動作でないとき(S682のYES)、キャッシュメモリ制御440は、コマンドのライトデータを読み出したキャッシュデータに対して書き込み、ライトバックデータとする(S684)。なお、キャッシュデータのデータ量とライトデータのデータ長が同じ場合、ライトデータがそのままライトバックデータになるため、キャッシュメモリ制御440はキャッシュデータの読み出し(S680)を省くことができる。一方、ライトデータがキャッシュデータより小さい場合、キャッシュメモリ制御440は、キャッシュデータの一部だけをライトデータで上書きすることになる。そして、キャッシュメモリ制御440は、算出したライトバックデータを外部メモリの「ライトバックアドレスに書き出す(S686)。
図12(b)は、キャッシュメモリ制御のライト応答動作の一例を示すフローチャートである。データ取得部では、前述のライトバックデータの書き出し動作とは並行して、ライト要求に対するライト応答の受信動作を行っている。
外部メモリからの要求されているライト応答がデータ取得器に届いた場合(S690のYES)、送信ポインタを更新する(S692)。次にデータ取得器は送信ポインタと下限データポインタの差を確認する(S694)。両ポインタに差が予め定められた送信の閾値と同数であるとき(S694のYES)、これ以上、送信中のキャッシュデータを保持できないので、フェッチ許可信号474を「禁止」にする(S698)。両ポインタに差が予め定められた受信の閾値より小さいとき(S694のNO)、外部メモリに送信中のキャッシュデータを保持することができるので、フェッチ許可信号474は「許可」のままでよい(S696)。
ライトバック動作時のフェッチ許可信号474の考え方は、リフィル動作時のプリフェッチ許可信号472と基本的に同様でよい。より厳密な手法としては、例えば、送信数を新たに定義し、この送信数を用いてフェッチ許可信号474を生成してもよい。新たに定義する送信数とは"0"から開始し、アクセス調停部でライトバックの度に1を加算し、データ取得器にライト応答が到着する度に1を減算した数とする。つまり、送信数とは、ライト要求を行ったが、まだフェッチ部に戻ってこないライト応答の数を表している。そして、受信済みのライト応答の数(送信ポインタと下限データポインタの差)と、送信数の合計値が将来に受信するライト応答の数となる。
この将来に受信する数が送信の閾値より小さい場合、フェッチ許可信号474は「許可」とし、将来に受信する数が送信の閾値と同じ数であればフェッチ許可信号474は「禁止」とするのである。このとき、将来に受信する数と送信の閾値は同じ値であるので、これ以上、ライトバック動作を実行することはできない。もし、これ以上、ライトバック動作を実行すると送信領域が受信と送信の境界を越えて、受信領域を上書きすることになる。そのため、データ取得器438は、フェッチ許可信号474を「禁止」にしてアクセス調停部に通知し、ノンブロッキングアクセスを一旦、停止する。フェッチ部は、外部メモリへのデータ要求を停止する。
以上説明したように、データ取得部は、要求されたデータを取得するフェッチ部(装置/回路/論理)となっており、取得したデータを所定のパイプラインステージにデータ供給する。
なお、上述の説明では、キャッシュメモリ制御440は、受信の閾値と送信の閾値を予め定め、受信領域と送信領域を一定の容量としていた。これに対し、受信領域と送信領域の総量は一定の容量とし、キャッシュメモリ制御440は、図10(b)の「受信と送信の境界」を動的に変える構成にしてもよい。これにより、キャッシュメモリ制御440は、前述の受信領域や送信領域が不足することによるパイプラインの停止を緩和することができる。
例えば、キャッシュメモリ制御440の受信ポインタが「受信と送信の境界」まで到達しており、送信ポインタが「受信と送信の境界」まで到達していないときを考える。このときリード要求があった場合は、前述の方法ではパイプラインを停止するが、キャッシュメモリ制御440は、「受信と送信の境界」を送信ポインタの位置まで緩和する。そして、キャッシュメモリ制御440は、受信の閾値を一時的に大きくし、プリフェッチ許可信号472を「禁止」から「許可」に変更して、リード要求を停止せずに発行すればよい。送信領域が不足する場合は、キャッシュメモリ制御440は、逆に「受信と送信の境界」を受信ポインタの位置まで緩和すればよい。
以上のように、本実施形態では、キャッシュメモリに送信領域を設け、ライト要求に対して、ライト応答がシステムから戻ってくるまで、送信(書き出し)中のライトバックデータ(キャッシュデータ)を保持している。そのため、本実施形態は、システム側のエラーによりデータの書き出しに失敗した場合に対処できる。具体的には、システムから、エラー状態を意味するライト応答が戻ってきたときに、キャッシュメモリ制御440は、システムが書き出しに失敗したと判断する。そしてキャッシュメモリ制御440は、送信ポインタを更新せず、送信ポインタが指すライトバックデータを再度、送信(書き出し)すればよい。
<効果>
以上説明したとおり第1実施形態のキャッシュ部は、前述のように非常に簡単な機構において、ノンブロッキング動作のフルアソシアティブ方式のキャッシュ装置を実現している。また、本実施形態のキャッシュメモリの領域の一部を受信領域と送信領域に割り当てることが特徴としており、データ受信とデータ送信とデータ保持が一つの記憶領域に統合されている。キャッシュメモリ上にデータ受信の領域とデータ送信の領域とデータ保持の領域を一体化することにより、柔軟な容量変更が可能であり、画像処理の様々な動作に応じた適切な構成変更を実現できる。
またフルアソシアティブ方式のキャッシュ装置で一般に採用されるFIFO方式(ラウンドロビン方式)のリプレイス手法と、本実施形態のキャッシュメモリの用法は合致している。そのため、好適にフルアソシアティブ方式のキャッシュ装置を実現することが可能となる。
また、本実施形態の手法では、同期ポインタの機能により、マルチポート共有キャッシュにおいて、複数のポートに対する「コンシステンシーの維持」と「コヒーレンシーの維持」を実現することができる。またキャッシュメモリ制御とキャッシュメモリの工夫により、リードキャッシュ、ライトバックキャッシュ共にノンブロッキング動作でDRAMアクセス・レイテンシを隠蔽して、データ処理のスループットを向上することができる。
また、キャッシュメモリを構成するキャッシュライン長(リフィル長)の変更により、メモリアクセス1回あたりの転送長を制御でき、DRAM規格に応じた適切なデータ転送を実現するこができる。
(第2実施形態)
前述の第1実施形態では、DRAM110、eDRAM120、Stackedメモリ130等を外部メモリとして、マルチポート共有キャッシュからメモリアクセスする方法を説明した。
第2実施形態では、DRAM110とStackedメモリ130を外部メモリとする。eDRAM120をキャッシュメモリ[0]〜[N−1]とし、そのeDRAMコントローラ122の入出力にキャッシュメモリ制御[0]〜[N−1]を接続する。また本実施形態では、Stackedメモリ130の内部に、キャッシュメモリ[0]〜[4N−1]とキャッシュメモリ制御[0]〜[4N−1]を備えたデータ取得器fetch[0]〜[N−1]を内蔵する。
前述の図6のように、本実施形態のマルチポート共有キャッシュは、コマンド中間FIFOにより、プリフェッチ部410とフェッチ部430が疎結合化されている。そのため、本実施形態のように、図1(a)の第1実施形態のマルチポート共有キャッシュの挿入位置に、プリフェッチ部410を挿入し、対応するフェッチ部430はeDRAM120の入出力やStackedメモリ130に内蔵する。
<装置構成>
図13は、第2実施形態に係る情報処理装置の構成を示すブロック図である。Stackedメモリ130では、複数のバンクに分かれ、1つのバンクに対して積層された複数のDRAMでTSVを共有する。そのため、あるバンクに対してあるサイクルで読み書きできるDRAMは1層のDRAMのみとなる。そのため、あるバンクに対して、異なる層のDRAMの値を同時に読み書きすることはできない。そこで、本実施形態の構成においては、積層されたDRAMが例えば4層であるので、バンク[0]〜[N−1]と、そのバンクに接続されたTSV毎に本実施形態のデータ取得器438を4個ずつ接続する。
その結果、バンク単位に4ポート、すなわち、積層メモリの層数と同数のポートの共有キャッシュとすることになる。この構成により、キャッシュヒットする際には、1バンクあたり競合する4層のDRAMのデータ要求に対して同時にデータ取得できるようになる。そのため、マルチポート共有キャッシュの複数のプリフェッチ部410からのデータ要求が同一バンクに集中して、同一バンクの異なる層のDRAMに対して同時にデータ要求がきても、キャッシュヒットしていれば速度を低下することはない。すなわち本実施形態の構成においては、Stackedメモリの性能低下を抑えることができる。
<効果>
本実施形態の手法では、eDRAMをキャッシュメモリに割り当てられるので、キャッシュ容量を非常に大きくすることができる。前述のように、本実施形態のキャッシュ判定は、ポート数、パイプライン段数、パイプライン1段あたりのキャッシュタグ数をスケーラブルに増加することができる。そのため、4096ノードのフルアソシアティブ方式のキャッシュ判定を、非常に高い動作周波数で動かすことが可能である。従って、eDRAMをキャッシュメモリとして利用して、キャッシュメモリの大容量化を実現することができる。
eDRAMでは、チップのダイやパッケージにDRAMを統合して非常に広いバス幅で論理回路と接続できる。そのため、eDRAMをキャッシュメモリとして利用することにより、キャッシュメモリから1回のアクセスで読み書きできるデータ長が大きくできる。その結果、本実施形態の手法では、キャッシュヒットのときに、大きなキャッシュデータを取得でき、キャッシュミス時のリフィル動作やライトバック動作のキャッシュメモリの更新のレイテンシは小さくてよい。そのため、システム全体の性能向上が見込める。
以上説明したとおり第2実施形態では、Stackedメモリ130にキャッシュメモリとキャッシュメモリ制御を内蔵する。この構成により、Stackedメモリ130の性能をさらに向上することができる。
(第3実施形態)
第3実施形態では、マルチポート共有キャッシュを備えた、チップ間のインターフェースの形態について説明する。
従来、チップAの画像処理部720の処理した画像データを、チップBの画像処理部730で処理する場合、CPU(不図示)が、転送用のDMAC(不図示)を制御してDRAM710からDRAM712に転送していた。そのため、CPUは、画像処理(データ処理回路)[0]〜[7]の処理完了の合間に、上述のDMACを制御して、大きな単位で画像データを転送することになる。そのため、画像処理部(データ処理回路)の数が多くなるとDMACの個数も増え、CPUによるDMACの制御は非常に複雑なものとなり画像処理のスループットに悪影響を及ぼす可能性がある。
<装置構成>
図14は、第3実施形態に係る情報処理装置の構成を示すブロック図である。ここでは、マルチポート共有キャッシュを用いてチップ間のデータ転送を実現している。画像処理の入出力部にメモリ管理ユニットMMU725、735を配置し、データの転送先のアドレスを切り替える。
例えば、チップAでは、画像処理[0]は、DRAM710からマルチポート共有キャッシュ[A]を介して画像データを読み出す。そのときのデータ要求のアドレスはMMU[0]でDRAM710を指すアドレスとする。そして画像処理[0]は処理後の画像データをマルチポート共有キャッシュ[A]に書き出す。MMU[0]は書き出しの際のデータ要求のアドレスをDRAM712のメモリ空間に変換する。処理後の画像データは、マルチポート共有キャッシュ[A]に書き込まれ、キャッシュから掃き捨てられるときに、ライトバック動作で、DRAM712に出力される。
このとき、前述までの実施形態で説明したように画像処理[0]〜[3]のDRAM710に対するメモリアクセスは統制されており、DRAM710に対して効率的なデータ通信を行うことは言うまでもない。そして、さらに本実施形態では、画像処理[0]〜[3]の別チップのDRAM712に対するメモリアクセスも統制できることになり、別チップのDRAM712に対して効率的なデータ通信を行うことができる。
チップBでは、画像処理[4]は、マルチポート共有キャッシュ[B]を介して、DRAM712から画像データを読み出し、処理後の画像データをマルチポート共有キャッシュ[B]に書き出す。チップBは、チップAと同様の手法で、チップBからチップAにデータ転送ができる。
チップAとチップBの間の通信は、実際にはPCIe760が行う。システム全体でチップAとチップBのメモリマップを取り決める。そして画像処理[0]〜[7]とメモリ管理ユニットMMU[0]〜[7]は、このメモリマップの所定のアドレスを読み書きすれば、チップ間インターフェースのマルチポート共有キャッシュが自律的に適切なデータ転送を実行する。
以上説明したとおり第3実施形態では、CPUはDMACを制御する必要が無くなる。すなわち、マルチポート共有キャッシュを通して必要なデータが"Store and Forward(蓄積交換)"の手法により、あるチップから別のチップに自動的に転送される。
本実施形態では、前述の通りフルアソシアティブ方式のキャッシュを備えたマルチポート共有キャッシュとして動作する。そのため、キャッシュ競合やスラッシングなどの性能低下が起きにくく、多数のマスターのメモリアクセスに対して適切な統制ができ、効率的なデータ転送ができる。またアクセス先の変更の際には、キャッシュのリフィル長を変更すればデータ転送長を柔軟に変更できる。また画像処理[0]〜[7]のデータ転送の仕様が変わっても、キャッシュの設定を変更するだけでよい。そのため、マスターごとに個別にCPUのDMAC制御プログラムを変更する必要がない。またマルチポート共有キャッシュを介してマスター間のメモリアクセスは柔軟に最適化されるため、DMAC制御プログラムを微調整して多数のマスター間の調整をする必要がない。
(第4実施形態)
第4実施形態では、マルチポート共有キャッシュを、センサー群とのインターフェースとして利用する形態について説明する。
従来、センサー群から入力される複数のデータ(画像データや測定データなど)を、チップCの画像処理部830で処理する場合、CPU(不図示)が、転送用のDMAC(不図示)を制御してセンサー群820からDRAM812に転送していた。そして、次にCPU(不図示)は、転送用のDMAC(不図示)を制御して、DRAM812の複数のデータを画像処理(データ処理回路)[4]〜[7]に転送してデータ処理を施していた。そのため、CPUは、画像処理(データ処理回路)[4]〜[7]の処理完了の合間に、上述のDMACを制御して、大きな単位で画像データを転送することになる。そのため、センサーの数が多くなるとDMACの個数も増え、CPUによるDMACの制御は非常に複雑なものとなりデータ処理のスループットに悪影響を及ぼす可能性がある。
またセンサー群はチップ外に接続されるが、個々のセンサーは、用途にあわせて仕様の異なるセンサーが接続される。つまり、センサーにより転送長は異なることが多く、CPUのDMAC制御プログラムは、センサー毎にカスタマイズすることが必要になる。また、あるセンサーが故障により別のセンサーに置き換える際、同一の転送仕様のセンサーが入手困難で新しいタイプのセンサーに置き換わる場合がある。このような場合は、従来のセンサーと異なる転送長にCPUのDMAC制御仕様を変更することになる。CPU上で動作するDMAC制御プログラムの一つが変わると、他のセンサーのDMAC制御も影響を受けてしまう可能性がある。そのためセンサーの変更には多大な開発工数が必要になる場合がある。
<装置構成>
図15は、第4実施形態に係る情報処理装置の構成を示すブロック図である。ここでは、マルチポート共有キャッシュを用いてセンサー群のデータ転送を実現している。図15(a)は、センサー群の入出力部にメモリ管理ユニットMMU825を、画像処理の入出力部にメモリ管理ユニットMMU835を配置し、データの転送先のアドレスを切り替える構成である。なお、図15(b)のように、センサー群の入出力部にのみメモリ管理ユニットMMU825を配置する構成でもよい。図において点線で囲んだ部分は、デバイス(ここでは、センサー群、画像処理群)とのインターフェースとして機能している。
例えば、センサー[0]は、センシングしたデータをマルチポート共有キャッシュ[A]に書き込む。そのときのMMU[0]は書き出しの際のデータ要求のアドレスをDRAM812のメモリ空間に変換する。マルチポート共有キャッシュ[A]はセンシングしたデータの蓄積し、キャッシュから掃き捨てられるときに、ライトバック動作でDRAM812に出力する。
一方、画像処理[5]は、マルチポート共有キャッシュ[B]を介して、DRAM812からセンシングしたデータを読み出せばよい。また、DRAM812を介さずにセンサーから直接、画像処理830に転送してもよい。
例えば、センサー[3]は、センシングしたデータをマルチポート共有キャッシュ[A]に書き込む。そのときのMMU[3]は書き出しの際のデータ要求のアドレスを画像処理[6]のメモリ空間に変換する。マルチポート共有キャッシュ[A]はセンシングしたデータの蓄積し、キャッシュから掃き捨てられるときに、ライトバック動作で画像処理[6]に出力する。センサー群820のセンサーの各々の転送長は異なっていてもマルチポート共有キャッシュ840を介してライトバックするため、ライトバック時のリフィル長を画像処理[6]の受信バッファの大きさに設定すればよい。
つまり、センサーの転送長の変更や、転送先の画像処理(データ処理回路)の変更に対しても、要求アドレスやキャッシュのリフィル長のレジスタ設定を再設定するだけでよい。
以上説明したとおり第4実施形態では、CPUはDMACを制御する必要が無くなる。そのためセンサーの変更によりDMAC制御プログラムを変更する必要がなくなる。すなわち、マルチポート共有キャッシュを通して必要なデータが"Store and Forward(蓄積交換)"の手法により、センサーから自動的に画像処理やDRAMに転送される。
本実施形態のマルチポート共有キャッシュはフルアソシアティブ方式を採用しているため効率がよい。
本実施形態では、前述の通りフルアソシアティブ方式カウンターパイプライン構成のキャッシュを用いれば、複数のセンサーに対して並列に非常に高速な判定処理ができる。そのため、リアルタイム性が重要なセンサー群との接続と、センシングされたデータの画像処理への転送に効果を発揮する。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100 CPU回路部; 110 DRAM; 120 eDRAM; 130 Stackedメモリ; 150 画像処理部; 160 マルチポート共有キャッシュ; 410 プリフェッチ部; 430 フェッチ部

Claims (12)

  1. N個のポートを有するインターフェース装置であって、
    前記N個のポートにより共有されかつ各々が前記N個のポートの何れかに割り当てられた複数のキャッシュタグを有するキャッシュメモリと、
    前記N個のポートに対応するN個のキャッシュ判定器と、
    を有し、
    前記N個のキャッシュ判定器の各々は、
    前記複数のキャッシュタグの全ての値と自ポートにおけるデータ要求のアドレスとの比較に基づいて、前記キャッシュメモリにおいて、自ポートにおける前記データ要求のアドレスのキャッシュミスが発生したか否かを判定する判定手段と、
    前記判定手段によりキャッシュミスが発生したと判定された場合に、自ポートに割り当てられたキャッシュタグの値を更新する更新手段と、
    を有する
    ことを特徴とするインターフェース装置。
  2. 前記N個のキャッシュ判定器の各々における前記判定手段は、
    自ポートにおけるデータ要求のアドレス値と自ポートに対して割り当てられたキャッシュタグの値との比較を行いキャッシュミスの判定を行う第1の判定手段と、
    前記自ポート以外の(N−1)個のポートにおけるデータ要求のアドレス値と前記自ポートに対して割り当てられたキャッシュタグの値との比較を行いキャッシュミスの判定を行う(N−1)個の第2の判定手段と、
    前記自ポートにおける前記第1の判定手段による判定結果前記自ポート以外の(N−1)個のポートにおける前記第2の判定手段による前記自ポートに係る(N−1)個の判定結果とを集計し最終判定を行う第3の判定手段と、
    を有する
    ことを特徴とする請求項1に記載のインターフェース装置。
  3. 前記キャッシュメモリは、フルアソシアティブ方式で構成されることを特徴とする請求項1または2に記載のインターフェース装置。
  4. 前記判定手段によりキャッシュミスが発生したと判定された場合に、前記N個のポートとは異なるポートで接続するバスを介して、該バスに接続する外部メモリからデータを取得し前記キャッシュメモリに格納する取得手段を更に有する
    ことを特徴とする請求項1乃至の何れか1項に記載のインターフェース装置。
  5. 前記N個のポートにはN個のデバイスが接続されており、少なくとも1個のデバイスにおけるデータの転送長は、他のデバイスにおけるデータの転送長と異なる

    ことを特徴とする請求項に記載のインターフェース装置。
  6. 前記キャッシュメモリには、キャッシュミスが発生した際のリード要求のための受信領域及びライト要求のための送信領域の少なくとも一方が割り当てられる
    ことを特徴とする請求項4または5に記載のインターフェース装置。
  7. 前記N個のポートの同期を管理する同期ポインタを更に有し、
    前記更新手段は、キャッシュミスキャッシュメモリへの書き込み、のいずれかのときに前記同期ポインタを更新する
    ことを特徴とする請求項1に記載のインターフェース装置。
  8. TSV(Through Silicon Via)で接続された積層メモリの層数と同数のポートを有する
    ことを特徴とする請求項1に記載のインターフェース装置。
  9. 前記キャッシュメモリを混載DRAMで構成する
    ことを特徴とする請求項1に記載のインターフェース装置。
  10. 各ポートのデータ要求のアドレス値を転送先に合わせて変更するメモリ管理手段を更に有する
    ことを特徴とする請求項1に記載のインターフェース装置。
  11. N個のポートを有するインターフェース装置の制御方法であって、
    前記インターフェース装置は、前記N個のポートにより共有されかつ各々が前記N個のポートの何れかに割り当てられた複数のキャッシュタグを有するキャッシュメモリと、前記N個のポートに対応するN個のキャッシュ判定器と、を有しており、
    前記制御方法は、
    前記N個のキャッシュ判定器の各々が、前記複数のキャッシュタグの全ての値と自ポートにおけるデータ要求のアドレスとの比較に基づいて、前記キャッシュメモリにおいて、自ポートにおける前記データ要求のアドレスのキャッシュミスが発生したか否かを判定する判定工程と、
    前記N個のキャッシュ判定器の各々が、前記判定工程によりキャッシュミスが発生したと判定された場合に、自ポートに割り当てられたキャッシュタグの値を更新する更新工程と、
    を含むことを特徴とする制御方法。
  12. コンピュータを請求項1乃至10の何れか1項に記載のインターフェース装置の各手段として機能させるためのプログラム。
JP2017056459A 2017-03-22 2017-03-22 インターフェース装置およびその制御方法 Active JP6979777B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017056459A JP6979777B2 (ja) 2017-03-22 2017-03-22 インターフェース装置およびその制御方法
US15/919,608 US11119924B2 (en) 2017-03-22 2018-03-13 Interface device including ports and a cache memory, and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017056459A JP6979777B2 (ja) 2017-03-22 2017-03-22 インターフェース装置およびその制御方法

Publications (2)

Publication Number Publication Date
JP2018160055A JP2018160055A (ja) 2018-10-11
JP6979777B2 true JP6979777B2 (ja) 2021-12-15

Family

ID=63583392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017056459A Active JP6979777B2 (ja) 2017-03-22 2017-03-22 インターフェース装置およびその制御方法

Country Status (2)

Country Link
US (1) US11119924B2 (ja)
JP (1) JP6979777B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200065762A (ko) * 2018-11-30 2020-06-09 에스케이하이닉스 주식회사 메모리 시스템
US10860498B2 (en) 2018-11-21 2020-12-08 SK Hynix Inc. Data processing system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293363A (ja) * 1986-06-11 1987-12-19 Matsushita Electric Ind Co Ltd キヤツシユ・メモリ−
JP3348367B2 (ja) * 1995-12-06 2002-11-20 富士通株式会社 多重アクセス方法および多重アクセスキャッシュメモリ装置
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
JP2008097572A (ja) * 2006-09-11 2008-04-24 Matsushita Electric Ind Co Ltd 演算装置、コンピュータシステム、および携帯機器
US8513791B2 (en) * 2007-05-18 2013-08-20 International Business Machines Corporation Compact multi-port CAM cell implemented in 3D vertical integration
US8452944B2 (en) 2009-05-22 2013-05-28 Canon Kabushiki Kaisha Information processing apparatus and information processing method
US11221764B2 (en) * 2010-01-29 2022-01-11 Mosys, Inc. Partitioned memory with shared memory resources and configurable functions
JP5627330B2 (ja) * 2010-08-02 2014-11-19 キヤノン株式会社 情報処理装置、キャッシュ装置およびデータ処理方法
EP2689330B1 (en) * 2011-03-25 2022-12-21 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
JP5730126B2 (ja) * 2011-05-18 2015-06-03 キヤノン株式会社 データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム
BR112016001014A2 (pt) * 2013-07-18 2017-08-22 Benjamin A Gittins Computing architecture with peripherals
US11100004B2 (en) * 2015-06-23 2021-08-24 Advanced Micro Devices, Inc. Shared virtual address space for heterogeneous processors

Also Published As

Publication number Publication date
US11119924B2 (en) 2021-09-14
JP2018160055A (ja) 2018-10-11
US20180276126A1 (en) 2018-09-27

Similar Documents

Publication Publication Date Title
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US7793038B2 (en) System and method for programmable bank selection for banked memory subsystems
US7469318B2 (en) System bus structure for large L2 cache array topology with different latency domains
US7284102B2 (en) System and method of re-ordering store operations within a processor
JP5536658B2 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
US11157411B2 (en) Information handling system with immediate scheduling of load operations
US20030163649A1 (en) Shared bypass bus structure
US8195880B2 (en) Information handling system with immediate scheduling of load operations in a dual-bank cache with dual dispatch into write/read data flow
JP2012068936A (ja) メモリシステム
JP7195486B1 (ja) 異種メモリシステムに対するシグナリング
US20100281222A1 (en) Cache system and controlling method thereof
US20060224840A1 (en) Method and apparatus for filtering snoop requests using a scoreboard
JP6979777B2 (ja) インターフェース装置およびその制御方法
US8359419B2 (en) System LSI having plural buses
US8140765B2 (en) Information handling system with immediate scheduling of load operations in a dual-bank cache with single dispatch into write/read data flow
US8140756B2 (en) Information handling system with immediate scheduling of load operations and fine-grained access to cache memory
US8010682B2 (en) Early coherency indication for return data in shared memory architecture
US20110022742A1 (en) Processor and data transfer method
JP2005508549A (ja) アンキャッシュ素子のための帯域幅の向上
CN117120992A (zh) 用于多队列存储器控制器的信用方案
US8560748B2 (en) Information processing system including interrupt processing function
US8713291B2 (en) Cache memory control device, semiconductor integrated circuit, and cache memory control method
JP2017532671A (ja) マルチプロセッサシステムにおけるメモリの管理
JP2007115174A (ja) マルチプロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200323

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210305

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210506

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211116

R151 Written notification of patent or utility model registration

Ref document number: 6979777

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151