JP2010531518A - トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置 - Google Patents

トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置 Download PDF

Info

Publication number
JP2010531518A
JP2010531518A JP2010515052A JP2010515052A JP2010531518A JP 2010531518 A JP2010531518 A JP 2010531518A JP 2010515052 A JP2010515052 A JP 2010515052A JP 2010515052 A JP2010515052 A JP 2010515052A JP 2010531518 A JP2010531518 A JP 2010531518A
Authority
JP
Japan
Prior art keywords
target
channel
memory
address
burst
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.)
Pending
Application number
JP2010515052A
Other languages
English (en)
Inventor
ウィンガード,ドリュー・イー
ショウ,シェン−シュン
ハミルトン,スティーヴン・ダブリュ
スウォーブリック,イアン・アンドリュー
ヴァキロトジャー,ヴィダ
Original Assignee
ソニックス・インコーポレーテッド
ウィンガード,ドリュー・イー
ショウ,シェン−シュン
ハミルトン,スティーヴン・ダブリュ
スウォーブリック,イアン・アンドリュー
ヴァキロトジャー,ヴィダ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニックス・インコーポレーテッド, ウィンガード,ドリュー・イー, ショウ,シェン−シュン, ハミルトン,スティーヴン・ダブリュ, スウォーブリック,イアン・アンドリュー, ヴァキロトジャー,ヴィダ filed Critical ソニックス・インコーポレーテッド
Publication of JP2010531518A publication Critical patent/JP2010531518A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Dram (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Logic Circuits (AREA)
  • Bus Control (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

内部制御を実施するインターコネクト装置を提供する。本発明は、内部制御を実施するインターコネクト装置を有する集積回路に一般的に関連する方法、装置、及びシステムを説明する。インターコネクト装置は、トランザクション順序付けを維持しながら複数のターゲットへの未処理トランザクションをサポートするためにトランザクション経路順序を維持し、要求経路順序を維持し、応答経路順序を維持し、制約されないバースト・サイズで集合ターゲット内のチャネルをインタリーブし、集合ターゲット内のチャネルと、1つ又はそれよりも多くの集合ターゲット上へのアドレス領域のマッピングとのための設定可能なパラメータを有し、個々のトランザクション内のデータ・アドレス・シーケンスが集合ターゲット内のインタリーブされたチャネル・アドレス境界と交差するその個々のトランザクションを分断し、分断される部分の2以上がそれらの2Dバースト属性を保持するように、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々の2次元(2D)トランザクションを分断し、並びに多くの他の内部制御を実施することができる。

Description

関連出願
本出願は、2007年6月25日出願の「内部制御を実施するインターコネクト」という名称の米国特許仮出願出願番号第60/946、096号、並びに2008年6月24日出願の「内部制御を実施するインターコネクト」という名称の米国一般特許出願出願番号第12/144、883号に関し、かつこれらの特許の恩典を請求するものである。
著作権の通知
本特許文書の開示内容の一部は、著作権保護を受ける材料を含む。著作権所有者は、ソフトウエアエンジン及びそのモジュールの何人による複製にも、それが米国特許商標局特許ファイル又は記録に現れる時には異議はないが、他の場合には、全ての著作権を保有するものである。
[技術分野]
本発明の実施形態は、一般的に内部制御を実施するインターコネクト装置に関する。
異なるアドレスで並列に複数のDRAMにアクセスするための複数のDRAMインタフェースを、SOCが有する時、各DRAMインタフェースは、一般的にメモリ「チャネル」と呼ぶことができる。従来の手法では、チャネルは、インタリーブされず、従って、トラフィックを発生させるアプリケーション・ソフトウエア及び全てのハードウエア・ブロックは、それらが負荷の均衡を取るためにチャネルにわたって均一にそのトラフィックを拡散させることを確実にする必要がある。また、過去には、システムは、複数の要求にスレッドを分割するアドレス発生器を使用しており、各要求は、それ自体のメモリ・チャネルに送られる。これは、イニシエータ要求の発生時にソフトウエア及びシステム機能ブロックにメモリ・システムの編成及び構造が既知であるべきであることを強制した。また、一部のスーパー・コンピュータの従来のシステムにおいては、システムは、バースト長要求のサイズでのメモリ・チャネルの分割を強制した。また、一部の従来技術においては、プロセッサからの要求は、1つ又はそれよりも多くのアドレス発生器(AG)により個々のメモリ・アドレスに拡張されるメモリ演算を実行する。適切な並列性を供給するために、各AGは、分割されたメモリ・チャネルの複数のセグメントに対してサイクル毎に複数のアドレスを発生させることができる。メモリ・チャネルは、要求されたアクセスを実行し、発生源のAGに関連の並べ替えバッファ(RB)に読取データを戻す。並べ替えバッファは、メモリ・チャネルからの回答をイニシエータ・コアに呈示することができるように、それらを回収して並べ替える。
従来の手法では、トラフィックは、メモリ・サブシステムにおいて中央経路指定(セントラル・ルーティング)ユニットに深く分割される場合があり、これは、トラフィック及び経路指定混雑を増大し、設計及び検証の複雑性を増大し、トポロジーの自由を排除し、かつ待ち時間(レイテンシー)を増大させる。作り出された集中点は、帯域幅閉塞点(バンド幅チョーク・ポイント)、経路指定混雑点(ルーティング・コンジェスチョン)、及び達成可能な周波数を低下させてスイッチング電力消費量を増大させると考えられる伝播経路長の延長化の原因として作用する可能性がある。また、一部のシステムは、並べ替え(リオーダ)バッファを使用してシステムにおけるトランザクションの予想実行順序を維持する。
典型的な手法では、トラフィックが合流してターゲットから来るのが早すぎる応答データを保持する点でエリア消費型並べ替えバッファリングが用いられる。
内部制御を実施するインターコネクト装置を有する集積回路に一般的に関連する方法、装置、及びシステムを説明する。インターコネクト装置は、トランザクション順序付けを維持しながら複数のターゲットへの未処理トランザクションをサポートするためにトランザクション経路順序を維持し、要求経路順序を維持し、応答経路順序を維持し、制約されないバースト・サイズで集合ターゲット内のチャネルをインタリーブし、集合ターゲット内のチャネルと、1つ又はそれよりも多くの集合ターゲット上へのアドレス領域のマッピングとのための設定可能なパラメータを有し、個々のトランザクション内のデータ・アドレス・シーケンスが集合ターゲット内のインタリーブされたチャネル・アドレス境界と交差するその個々のトランザクションを分断し、そして、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々の2次元(2D)トランザクションを、分断された部分の2以上がそれらの2Dバースト属性を保持するように、分断し、並びに多くの他の内部制御を実施することができる。
図面は、以下に続く本発明の実施形態を参照するものである。
本発明は、様々な修正及び代替形態の対象になるが、その特定的な実施形態を一例として図に示し、本明細書で以下に詳細に説明する。本発明は、開示する特定の形態に限定されないことを理解すべきであり、逆に、本発明は、本発明の精神及び範囲に該当する全ての修正、均等物、及び代替物を含むものとする。
インターコネクト装置上でトランザクションを通信する複数のイニシエータIPコア及び複数のターゲットIPコアを有する「システムオンチップ」の実施形態のブロック図である。 個別のメモリIPコアが所定のメモリ・インタリーブ・セグメントに分割され、次に、他のメモリIPコアからのメモリ・インタリーブ・セグメントとインタリーブされる連続アドレス空間のマップの実施形態を示す図である。 複数のインタリーブ済みメモリ・チャネルのためのアドレス領域のマップの実施形態を示す図である。 例示的な個別のDRAMのIPコアが所定のメモリ・インタリーブ・セグメントに分割され、次に、他のDRAMのIPブロックからのメモリ・セグメントとインタリーブされる再設定されたパラメータによる連続アドレス空間のマップを示す図である。 多重チャネル集合ターゲットの柔軟な再構成を可能にする中央構成レジスタからの領域のパラメータ値を受信するルックアップ・テーブルの実施形態を示す図である。 複数のスレッド融合・スレッド分割のユニットを有するインターコネクト装置上の読取及び書込要求に対する要求順序を維持する複数のイニシエータIPコアと複数のターゲットIPコアとを有する集積回路の実施形態のブロック図である。 要求経路順序を維持するために集中化した融合・分割ユニットに実施されるフロー制御論理の実施形態のブロック図である。 2以上の異なる物理的経路を下るスレッドに1組のトランザクションを発生させるイニシエータIPコアからの要求を経路指定する1つ又はそれよりも多くのスレッド分割ユニットの実施形態のブロック図である。 スレッド分割ユニットでの肯定応答機構の実施形態の概略図である。 所定のスレッドからの複数の書込要求をいずれか所定の時間に未処理のままにするが、そのスレッドからその後の書込要求を出すことを制限するフロー制御プロトコル論理のイニシエータ・エージェントの使用におけるスレッド分割ユニットの例示的な時系列を示す図である。 所定のスレッドからの複数の読取要求をいずれか所定の時間に未処理のままにするが、そのスレッドからその後の読取要求を出すことを制限するフロー制御プロトコル論理のイニシエータ・エージェントの使用におけるスレッド分割ユニットの例示的な時系列を示す図である。 「2D書込バースト」要求を分割するフロー制御論理の実施形態の例示的な時系列を示す図である。 ターゲット要求トラフィックを分割するフロー制御論理の実施形態の付加的な例示的な時系列を示す図である。 ターゲット要求トラフィックを分割するフロー制御論理の実施形態の付加的な例示的な時系列を示す図である。 2つのスレッド分割ユニット及び2つのスレッド融合・分割ユニットを通過する2つのターゲット・エージェントから2つのイニシエータ・エージェントまでの応答経路の実施形態のブロック図である。 戻り順序応答を保証するための多重チャネル集合ターゲットにおける「応答バッファ使用量」の実施形態の図である。 スレッド内の要求順序及びそれらの要求に対する予想応答順序を維持する例示的なインターコネクト装置の内部構造を示す図である。 チャネル・アドレス境界と交差する個々のトランザクションを同じスレッドからの2以上のトランザクション/要求として分断することを直接にサポートする分断論理の実施形態の図である。 イニシエータ・エージェントから多重チャネル集合ターゲットを含む複数のターゲット・エージェントまでのインターコネクト装置にわたる経路の実施形態の図である。 ブロック・バースト要求に関する5つの形式のチャネル・ベースの分断の1つ、すなわち、通常のブロック分断を示す図である。 2次元(2D)タイル・バースト要求に対して割り当てられたアドレス・マップの1つ又はそれよりも多くのアドレス領域を有する2Dビットマップの「メモリ空間」の実施形態の図である。 多重チャネル・インタリービング及びアドレス・タイリング例のアドレス整合を示す図である。 多重チャネル領域に対してアドレス整合する実施形態のブロック図である。 「インターコネクト装置」に対して上述した設計及び概念を用いて「システムオンチップ」のようなデバイスを発生させるための処理の例の実施形態の流れ図である。
以下の説明では、本発明を完全に理解することができるように特定のデータ信号、選択した構成要素、接続、集合ターゲット(アグリゲート・ターゲット)内のメモリ・チャネル数などの例のような多くの特定の詳細を説明する。しかし、これらの特定の詳細がなくても本発明を実施することができることは当業者には明らかであろう。一部の場合には、本発明を不要に曖昧にしないために、公知の構成要素又は方法の説明は、詳細にわたるものではなくブロック図で行っている。更に、第1のターゲットのような特定の数値による言及を行う場合がある。しかし、特定の数値による言及は、文字通りの順番と解釈するのではなく、第1のターゲットは、第2のターゲットと異なると解釈すべきである。従って、説明する特定の詳細は、単に例示的なものである。特定の詳細は、本発明の精神及び範囲から変更することができ、かつ依然としてその範囲内と考えることができる。
一般的に、内部制御を実施するインターコネクト装置を有する集積回路に一般的に関する方法、装置、及びシステムを説明する。インターコネクト装置は、要求経路順序を維持し、応答経路順序を維持し、制約されないバースト・サイズで集合ターゲット内のチャネルをインタリーブし、集合ターゲット内のチャネルに対する設定可能なパラメータを有し、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々のトランザクションを分断し、分断された部分の2以上がそれらの2Dバースト属性を保持するように、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々のトランザクションを分断し、並びに多くの他の内部制御を実施することができる。
本発明の殆どの態様は、殆どのネットワーク環境に適用することができ、「システムオンチップ」環境のような例示的な集積回路を使用して本発明のこれらの態様が具体化されることになる。
図1は、インターコネクト装置上で読取要求及び書込要求、並びにそれらの要求に対する応答を通信する複数のイニシエータIPコア及び複数のターゲットIPコアを有する「システムオンチップ」の実施形態のブロック図を示している。「CPU IP」コア102、オンチップ・セキュリティIPコア104、「デジタル信号プロセッサ(DSP)」106IPコア、マルチメディアIPコア108、「グラフィックIP」コア110、ストリーミング「入出力(I/O)」IPコア112、チップの外部にあるデバイス又は構成要素を有する無線送受信IPコアなどの通信IPコア114のような各イニシエータIPコア、及び他の類似したIPコアは、インターコネクト装置118とインタフェースで接続するそれ独自のイニシエータ・エージェント116を有することができる。第1の「DRAM IP」コア120から第4の「DRAM IP」コア126、並びにフラッシュメモリIPコア128のような各ターゲットIPコアは、インターコネクト装置118とインタフェースで接続するそれ独自のターゲット・エージェント130を有することができる。各「DRAM IP」コア120〜126は、関連のメモリ・スケジューラ132、並びにDRAMコントローラ134を有することができる。
「アイピー (Intellectual Property)」(IP)コアは、システムにそのマクロ機能をもたらす内蔵型の設計された機能性を有する。インターコネクト装置118は、システムにおけるターゲットIPコア120〜128及び潜在的にイニシエータIPコア102〜114に対して割り当てられたアドレスを用いてアドレス・マップ136を実施し、集積回路内のターゲットIPコア120〜128とイニシエータIPコア102〜114との間の要求及び潜在的に応答を経路指定する。1つ又はそれよりも多くのアドレス発生器が、各イニシエータIPコアに存在し、IPコアが開始するデータ転送に関連のアドレスをメモリ又は他のターゲットIPコアに供給することができる。IPコアの全ては、異なる性能速度(すなわち、クロック周波数にデータビット線の数(別名データ幅)を掛けたものとして計算することができるピーク帯域幅、及び所要又は意図した性能レベルを表す持続帯域幅)で作動させることができる。異なるIPコアの殆どは、メモリIPコア120〜126オンオフチップを通じて互いに通信することができる。各イニシエータ・エージェント116及びターゲット・エージェント130におけるDRAMコントローラ134及びアドレス・マップ136は、アドレス・マップを維持してアドレス・マップに割り当てられた論理アドレスの物理IPアドレスへのアドレス変換を行うことにより、各「DRAM IP」コア120〜126の実際のIPコアアドレスを他のオンチップコアから抽出する。
アドレス・マッピング・ハードウエア論理は、イニシエータ・エージェントの内側に位置することができる。DRAMスケジューラ及びコントローラは、ターゲット・エージェントの下流側に接続することができる。従って、イニシエータからターゲットへの要求の経路指定を判断する1つの方法は、着信イニシエータ・アドレスを特定のターゲットIPコアに関連付けるアドレス・マッピング装置を実施することである。このようなアドレス・マッピング装置の一実施形態は、ターゲットが各イニシエータ・エージェントにおいてターゲットアドレス復号論理を実施することである。単一のイニシエータがターゲットIPコア位置の全てにアクセス可能であるためには、イニシエータは、インターコネクト装置がイニシエータ・アドレスをターゲットIPコアアドレスに変換することができるように、単一のターゲットIPコアが収容する以上の全アドレス値を供給する必要があると考えられる。このような変換の一実施形態は、選択したターゲットIPを復号するのに使用したイニシエータ・アドレスビットをターゲットIPコアに呈示されるアドレスから除去することである。
インターコネクト装置118は、システムのIPコアサブシステム120〜128及び102〜114の間で共有通信バスを提供する。共有通信バス内の全ての通信経路は、単一の閉塞点を通過する必要はなく、多くの分散経路は、共有通信バスに存在することができる。オンチップインターコネクト装置118は、複数の「アイピー」コア102〜114及び120〜128間の通信のアドレス・マッピング及びアービトレートした通信を容易にする相互接続ワイヤと共に、アダプタ及び/又は他の論理モジュールとすることができる機構の集合とすることができる。
インターコネクト装置118は、「システムオンチップ」を通じてステージ単位で要求及び応答を格納及び移動させるためにバッファリングを伴ってパイプライン化する「システムオンチップ」のような集積回路の一部とすることができる。インターコネクト装置118は、1)別のスレッドからの要求に対して、並びに同じスレッドからその後の要求を出す前に初期要求の応答を必要とすることに対して非閉塞であり、2)パイプライン化プロトコルを実施し、かつ3)各スレッドの予想実行順序を維持するフロー制御論理を有することができる。インターコネクト装置は、2D及びアドレスタイリング機能、応答フロー制御、及び個々のバースト要求の分断を用いて、複数のメモリ・チャネルをサポートすることができる。各イニシエータIPコアは、インターコネクト装置とインタフェースで接続するそれ独自のイニシエータ・エージェントを有することができる。各ターゲットIPコアは、インターコネクト装置とインタフェースで接続するそれ独自のターゲット・エージェントを有することができる。
「システムオンチップ」は、それを通じてステージ単位で要求及び応答を格納及び移動させるためにパイプライン化することができる。インターコネクト装置内のフロー制御論理は、別のスレッドからの要求に対して、並びに同じスレッドから第2の要求を出す前に第1の要求の応答を必要とすることに対して非閉塞であり、パイプライン化されており、かつ各スレッドの実行順序を維持する。
各メモリ・チャネルは、IPコアとすることができ、又は単一のメモリとしての役割を果たすように1組に構成される複数の外部DRAMチップは、64ビット又は128ビットのようなデータ・ワードの幅を成す。各IPコア及びDRAMチップは、そのIPコア/チップの内側に複数のバンクを有することができる。各チャネルは、チャネルに関連の要求及び/又は応答を可能にすることができる1つ又はそれよりも多くのバッファを含むことができる。これらのバッファは、チャネル・トランザクションに関連の要求アドレス、書込データ・ワード、読取データ・ワード、及び他の制御情報を保持することができ、かつパイプライン式にメモリに要求及び書込データを供給してメモリから読取データを受信することによってメモリ処理機能を改善しやすくすることができる。バッファは、同じメモリバンクにおいて異なるページを開くために強制的にそのページを閉じさせる異なる要求を供する点とは対照的に、開いているメモリページをターゲットにする要求を支持するためにメモリ・スケジューラがアドレス局所性を利用することを可能にすることによってメモリ処理機能を改善することができる。
多重チャネル集合ターゲットの1つの恩典は、ターゲット・アクセスに空間的同時並行性を提供し、従って、同じ幅の単一のターゲットで達成可能な有効帯域幅に優って有効帯域幅が増大するという点である。付加的な恩典は、各チャネルの全バースト・サイズが、同じ帯域幅による単一のチャネル・ターゲットの全バースト・サイズよりも小さいという点であり、その理由は、単一のチャネル・ターゲットは、集合ターゲット内の複数のチャネルの各々のデータ・ワード長の合計と同じ幅であるデータ・ワードを必要とすることになるからである。従って、多重チャネル集合ターゲットは、データサイズが単一のチャネル・ターゲットのバースト・サイズよりも小さいという状況において、単一のチャネル・ターゲットよりも効率的にSoCとメモリの間でデータを移動させることができる。実施形態では、このインターコネクト装置は、以前のインターコネクト装置の機能集合の厳密な上位集合をサポートする。
多重チャネル・ターゲットの接続性は、主として、チャネル・ターゲットの群をダイ上で切り離すことを可能にする一連のパイプライン点を有するクロスバー交換により達成することができる。複数のチャネル集合ターゲットは、汎用(メモリ参照及びDMA)インターコネクト装置空間におけるデジタルメディアが主役であるSOCの高性能に対する必要性のためのものである。
また、集合ターゲット内のメモリ・チャネルは、設定可能な構成パラメータをサポートすることができる。設定可能な構成パラメータは、動的に変更可能である複数のチャネル構成を柔軟にサポートすると共に、単一の設計された「システムオンチップ」設計が、チャネルと領域間の割り当て及びチャネル間のインタリーブ境界を構成し直して単一のパッケージの異なる作動モードをより良くサポートすることにより、異なるオンチップ又は外部記憶構成を使用する広範囲にわたるパッケージング又はプリント回路基板レベルのレイアウト選択肢をサポートすることを可能にするものである。
制約されないバースト・サイズの集合ターゲットにおけるインタリーブされたチャネル
多くの種類のIPコア・ターゲット・ブロックは、結合させると、それらのアドレス空間をインタリーブさせることができる。以下で説明する内容では、システム・アドレス空間内に単一の集合ターゲットを作成するためにインタリーブされるターゲットブロックとしてメモリ・ブロックを使用する。以下で説明する例示的な「集合ターゲット」は、集合ターゲット・セットにわたってインタリーブされたアドレス指定をサポートする1つ又はそれよりも多くのアドレス領域を共有する異なる外部DRAMチップのような個々のメモリ・チャネルの集合である。別の集合ターゲットは、システムにより単一のターゲットとして認識かつ処理される異なるIPブロックの集合である。
図2は、異なるメモリIPコアが所定のメモリ・インタリーブ・セグメントに分割され、次に、他のメモリ・チャネルIPコアとインタリーブされる連続アドレス空間のマップの実施形態を示している。オンチップIPコア及びオフチップメモリコアを含む2以上の個別のメモリ・チャネルは、システム・アドレス空間内の単一のメモリ(すなわち、集合ターゲット)としてシステムソフトウエア及び他のIPコアに呈示されるように互いにインタリーブすることができる。各メモリ・チャネルは、オンチップIPメモリコア、オフチップIPメモリコア、独立型メモリバンク、又は類似のメモリ構造体とすることができる。例えば、システムは、第1のDRAMチャネル220、第2のDRAMチャネル222、第3のDRAMチャネル224、及び第4のDRAMチャネル226をインタリーブすることができる。各メモリ・チャネル220〜226は、第1のメモリ・インタリーブ・セグメント240及び第2のメモリ・インタリーブ・セグメント242のような2以上の所定のメモリ・インタリーブ・セグメントを有する。所定の個別のメモリ・チャネルの2以上の所定のメモリ・インタリーブ・セグメントは、メモリマップ236bのアドレス空間において、他の個別のメモリ・チャネルの2以上の所定のメモリ・インタリーブ・セグメントとインタリーブされる。アドレス・マップ236aは、領域1〜領域4のような2以上の領域に分割することができ、各インタリーブされたメモリ・セグメントは、それらの領域の少なくとも1つに割り当てられて、236bに示すように、その領域のシステム・アドレス空間をポピュレート(データ投入操作)し、最終的には、アドレス空間において物理アドレスにマッピング可能である。
例えば、第1及び第2のDRAMチャネル220及び222のメモリ・インタリーブ・セグメントは、アドレス・マップ236bの領域2内に寸法決めされてその後インタリーブされる。また、第3及び第4のDRAMチャネル224及び226のメモリ・インタリーブ・セグメントは、アドレス・マップ236bの領域4内に寸法決めされて(第1及び第2のDRAMチャネルのインタリーブ・セグメントより小さい粒度で)その後インタリーブされる。第1及び第2のDRAMチャネル220及び222のメモリ・インタリーブ・セグメントは、アドレス・マップ236bの領域4内にもインタリーブされる。従って、メモリ・チャネルは、2以上の領域のアドレス空間において所定のメモリ・インタリーブ・セグメントを有することができ、かつエイリアシング技術により実施することができる。第1のメモリ・インタリーブ・セグメント240のような第1のサイズの第1のDRAMチャネル220のメモリ・インタリーブ・セグメントは、アドレス・マップ236b内の第2の領域の設定可能なパラメータにより制御され、第3のメモリ・インタリーブ・セグメント244のような第2のサイズのインタリーブ・セグメントは、アドレス・マップ236b内の第4の領域の設定可能なパラメータにより制御される。
従って、各メモリ・チャネル220〜226は、所定のメモリ・インタリーブ・セグメントを有し、異なるサイズのメモリ・インタリーブ・セグメントを有することができる。システム・アドレス・マップ236bの各々の対応する領域4は、設定可能なパラメータを有し、設定可能なパラメータは、その領域内のメモリ・インタリーブ・セグメントに関するトランザクションを有すると予想される予測された形式のアプリケーションに潜在的に基づいて、その領域に割り当てられたアドレス空間内のメモリ・インタリーブ・セグメントのサイズ粒度を制御するように、ソフトウエアにより実効時又は設計時にプログラマブルにすることができる。上述のように、例えば、アドレス・マップ236内の第2の領域は、第1の量のバイトで構成された粒度を有する第2のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有する。また、アドレス・マップ236b内の第4の領域は、第2の量のバイトで構成された粒度を有する第1のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有する。また、領域4のような各領域は、2以上のメモリ・チャネル220〜226からその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有することができる。
図3は、複数のインタリーブされたメモリ・チャネルのためのアドレス領域のマップの実施形態を示している。アドレス領域346又はアドレス・マップ336は、16進の付番システムにおいて例えば00000〜3FFFFまでのアドレス空間を有することができる。領域346は、集合ターゲット内の複数のチャネルにわたってインタリーブされたアドレスを有する。アドレス領域346が対象とする全体的アドレス空間は、異なるメモリ・チャネルの所定のメモリ・インタリーブ・セグメントの組に分割することができる。所定のメモリ・インタリーブ・セグメントは、アドレス空間において非重複であり、そのアドレス空間において領域346全体を集合的に対象としてかつポピュレートする。オンチップ又はオフチップIPメモリコア/チャネルの各インタリーブされたメモリ・セグメントをその後他のオンチップIPメモリコアの所定のインタリーブされたセグメントと共に順次積み重ねてアドレス・マップ内のアドレス空間をポピュレートする。領域に関連のチャネルの最大数は、領域に関連の個々のターゲット数から及びターゲットの性質から導出される静的な値とすることができる。個々のターゲット及び多重ポートターゲットは、単一のチャネルを有することができ、多重チャネル・ターゲットは、最大2つ、4つ、又は8つまでのチャネルを有する。実施形態では、num_channels属性が、RTL.conf構文で供給される「領域」構成に対して導入され、アドレス領域が有することができる最大数の能動チャネルを示すため使用される。領域に関連の静的な数よりも少ない個々のターゲットを使用するようにアドレス・マップを形成することが可能であると考えられる。領域336における第1の所定のメモリ・インタリーブ・セグメント340は、チャネル0にマップされている。領域336における第2の所定のメモリ・インタリーブ・セグメント342は、チャネル1にマップされている。領域336における第3の所定のメモリ・インタリーブ・セグメント344は、チャネル2にマップされている。領域336における次の所定のメモリ・インタリーブ・セグメント346は、チャネル3にマップされている。この処理は、メモリ・インタリーブ・セグメントがこの領域でアクティブである最終チャネルにマップされるまで続く。それによって「チャネルラウンド」として公知であるものが完了する。次に、領域に割り当てられたアドレス空間のメモリ・インタリーブ・セグメントの順次積み重ね処理は、特定の領域に割り当てられたアドレス空間を完全に網羅するように十分なチャネルラウンドがマップされるまで繰り返される。このアドレス領域336は、集合ターゲットとして処理される。この領域のその集合ターゲットからの第1の要求348のようなデータに関する要求には、複数の所定のメモリ・インタリーブ・セグメントにわたって、及び従って複数の個別のメモリIPコアにわたって応答データスパンが必要である場合がある。また、オンチップ又はオフチップメモリの物理メモリ位置を実際にシステム・アドレス空間内の複数の領域に割り当て、従って、そのアドレス・マップから同じ物理メモリ位置まで複数の割り当てられたシステム・アドレスを有することができる。アドレスエイリアシングということもあるこのような多重マッピングを用いて、異なる領域が異なるインタリーブサイズ又はチャネル群を有し、従って、異なるアクセス性能特性を有する場合がある時に、同じメモリ位置にアドレス指定する複数の方法をサポートするか、又は一方の領域又は他方のメモリ位置へのメモリ位置の動的割り当てをサポートすることができる。
各メモリ・インタリーブ・セグメントは、システム設計者によるDRAMメモリ設計仕様により許容されるバースト長要求により抑制されないサイズ粒度でシステム・アドレス空間内で定義かつインタリーブされる。メモリ・インタリーブ・セグメントのサイズ粒度は、DRAMに構成されたDRAMメモリ設計仕様により許容される最小バースト長要求と、メモリ構成により認められる予測最大DRAMメモリページ長との間の所定の長さとすることができる。この粒度のサイズは、ソフトウエアプログラマブルのようなユーザにより供給される設定可能な値である。例えば、ユーザにより供給される所定の長さは、64バイトと64キロバイトの間とすることができる。
論理上、この集合ターゲットは、他のIPコアには単一のターゲットの姿を示すが、システムのアドレス・マップにおいて複数のオンチップIPメモリコア/メモリ・チャネルのメモリインタリーブ/セグメントをインタリーブする。従って、各「DRAM IP」コア/チャネルは、ユーザにより供給されるサイズ粒度でインタリーブのためのセグメントに物理的に分割することができる。第1のイニシエータIPコアに対してインターコネクト装置のインタフェースになるイニシエータ・エージェントは、2以上のインタリーブされたメモリ・チャネルの集合ターゲットへの第1の要求に関連の論理宛先アドレスに基づいてアドレス・マップに問い合わせ、どのメモリ・チャネルが要求に対応するか、及びいずれのIPコアも集合ターゲット内の各メモリ・チャネルの物理IPアドレスを知る必要がないようにその要求に役立つ集合ターゲット内の各メモリ・チャネルの物理IPアドレスに要求を経路指定する方法を判断する。
各メモリコアに対するアクセス負荷は、その領域/集合ターゲットに至る予想要求トラフィックに関連のアドレス・パターンに基づいてインタリーブ・セグメントの粒度を形成するシステム設計者によってチャネルにわたってアプリケーション・トラフィックを自動的かつ統計学的に拡散する。多重チャネル・アドレス領域に単一の開始スレッドにより送られる要求は、1つのチャネル・ターゲットに送られるものもあれば、集合ターゲット内の別のチャネル・ターゲットに送られるものもあるように、インタリーブ境界と交差することができる。これらの要求は、チャネル・インタリーブ境界を交差した要求バーストの一部、又は独立したトランザクションとすることができる。すなわち、システムに関する予想要求トラフィックが、実行されるプログラム内のコードにより線形にメモリ位置にアクセスする要求により占められている場合、サイズ粒度は、いくつかの要求が第1のメモリ・チャネルによって供され、次に、メモリ・チャネルの境界の両側に該当する恐らく1つの要求が供され、次に、いくつかの要求が第2のメモリ・チャネルによって供されるように設定される。トラフィック拡張は、システム・アドレス指定、メモリ・セグメントのサイズ粒度、及び順次積み重ねられたメモリ・チャネルによるものである。従って、例えば、同じスレッドから要求a〜c350には、専らメモリ・チャネル2が供することができ、要求d352には、メモリ・チャネル2及びメモリ・チャネル3がある程度供する。異なるコア/チャネルのアドレス空間内での所定のメモリ・インタリーブ・セグメントのこの順次積み重ね方法は、メモリ・コア間のそれ独自の拡張/負荷平衡が可能にし、並びに局所性の原理の恩典を利用するものである(すなわち、スレッド内の要求は、局所的に最終要求の近くのメモリ・アドレスにアクセスして潜在的に同じアクセス・データを再利用する傾向がある)。
アドレス・マップ内の各領域は、1)その領域内のメモリを使用して予測プログラムに関連のアドレス・パターンに基づいており、2)その領域内のメモリを用いた一種の予測されたプログラムのアドレス局所性の原理を利用するようにその領域に割り当てられたアドレス空間内でメモリ・インタリーブ・セグメントのサイズ粒度を制御するそれ独自の設定可能なパラメータを設定することができる。システム・アドレス・マップのアドレス空間の複数のメモリ・チャネルのインタリービングは、集合ターゲットを構成するチャネルの部分集合をターゲットにするトラフィックが多すぎる時に起こる可能性がある異なるIPメモリコア間の不均一な負荷平衡の「ホットスポット」を回避するために、時間と共にメモリ・チャネルの各々にわたるアプリケーション・トラフィックの自動的な統計的拡張を可能にするものである。次の組の要求の開始がチャネル2によって供される時までには、要求aa354、チャネル2は、要求a〜dに応答しまっているはずであり、一方、そのスレッドからのeとaa354間の要求は、集合ターゲットを構成する他のチャネルによって供されている。
すなわち、システムは、並列性及び局所性を利用することによって、最大収量を最新DRAMから抽出することができる。並列性は、高帯域幅DRAM構成要素にメモリ要求をパイプライン化することによって、また、複数のメモリ・チャネル上にアクセスをインタリーブすることによって利用される。データ並列メモリ・システムは、メモリアクセススケジューリングを用いてメモリアクセスを順序付けることによって局所性を改善することができる。順序付けは、オープン行(ロウ)(すなわち、DRAMページ)を再利用することによって、及び内部バンク競合及び読取及び書込転換ペナルティを最小にすることによって性能を改善する。
システム設計者は、その要求サイズ及び要求アクセスが一般的に発生する順序に基づいて一般的要求サイズ及びアドレス増分を知ることができる。アドレス・マップ336内の領域が異なれば、異なる形式のデータ/データオブジェクトを格納するように構成することができる。特定の領域内の各メモリ・インタリーブ・セグメントの粒度の適正サイズを定めることによって、いくつかの要求は、同じメモリ・チャネルにアクセスした後に別のチャネル境界と交差する必要があり、従って、同じ繰返し数のために複数のメモリリソースではなく、2回のサイクルに向けてこの単一のメモリリソースが連結される。更に、第1のメモリコアのページバッファは、集合ターゲット内の各メモリ・チャネルのページバッファ内にメモリ・インタリーブ・セグメント内の先にアクセスしたデータ及び対応してアクセスしたデータを有する。単一のメモリアクセスには、対応するページバッファに望ましいデータを得るために複数のDRAM指令が必要である場合がある。データをページバッファ内に有し、かつそのデータを数回のサイクルに再利用することによって、局所性の原理に基づいて効率が改善する。また、粗い粒度/より大きなサイズでメモリ・チャネルのメモリ・インタリーブ・セグメントをインタリーブすることによって、スレッド間の並列性を利用することができ、かつ単一の要求スレッドの必要性に役立つ複数のDRAMバンク/チャネルからページバッファを保護する必要性が少なくなる。代替的に、1つのDRAMバンクの単一のページバッファは、複数のサイクルに向けてその要求スレッドに役立たせることができる。従って、局所性の原理の利用するためにアドレス・マップのその領域に格納されることになる一般的なデータ構造のサイズに対して所定のメモリ・インタリーブ・セグメントのサイズを設定する。複数の個別のメモリコアがシステムの中に存在し、かつ3つの要求がラインに沿って存在する場合、イニシエータのプログラムは、第1の要求と同じデータが求められ、その時には、そのデータは、第1のメモリコアのページバッファ内に格納されているはずであり、第1のメモリ・チャネルのページバッファ内にそのデータを入れることを繰り返す数回のサイクルの遅延が排除される。
演算の局所性の原理は、複数回単一のリソースにアクセスする処理に関する概念であることに注意されたい。時間的、空間的、及び順次的に分けられる3つの基本的形式の局所性が存在する。時間的局所性、すなわち、時間における局所性は、メモリに格納したデータ又は命令を参照する場合、その同じ項目が直ちに再び参照される(例えば、ループ、再利用)傾向があることを示唆する。空間的局所性、すなわち、空間における局所性は、メモリに格納したデータ又は命令を参照する場合、アドレスが近い項目が再び参照される傾向があることを示唆する。順次的局所性は、メモリが一般的に線形プログラムにより順番にアクセスされることを示唆する。一般的に、関係がある線形プログラムからのデータは、メモリ内に連続的な位置に格納され、関連する多次元オブジェクトからのデータの場合、そのデータは、メモリ内にブロックパターンで格納される。局所性の原理は、一部は、コンピュータプログラムを作成する方法によるものである。設計者及びユーザは、システムメモリを用いたプログラムの形式を予測してこれらの原理を最大にするように領域を設定することができる。
実施形態では、設計者又はユーザが供給することができるアドレス領域に関する設定可能なパラメータ360の一部は、領域のBase_addressパラメータ、region_sizeパラメータ、address_spaceパラメータ、ターゲットとの関連パラメータ、interleave_sizeパラメータ、及びactive_targetsパラメータである。interleave_sizeパラメータは、許容システム要求バースト長によりバイトによる制約を受けないinterleave/definedメモリ・セグメントのサイズを定める。システム・アドレス・マップは、DRAMに構成されたDRAMメモリ設計仕様により許容された最小DRAMバースト要求長(64バイト)とメモリ構成により認められる予測最大DRAMメモリページ長(64キロバイト)と間のサイズ粒度でシステム・アドレス空間において内包的にインタリーブされた例えば64バイトと64キロバイトの間の2進数の累乗であるインタリーブサイズをサポートすることができる。領域に関するregion_sizeは、最小1KBであり、かつ少なくとも1チャネルラウンド=メモリ・インタリーブ・セグメントサイズ*その領域内にメモリ・インタリーブ・セグメントを割り当てるメモリ・チャネルの数に対して十分に大きいものであるべきである。
図1を参照すると、イニシエータIPコア自体及びシステムソフトウエアは、メモリターゲットに向かう要求のアドレスを発生時には、メモリ・システムの編成及び構造の詳細は分らない状態である。メモリ演算を実施するCPU102のようなイニシエータ・コアからの要求は、1つ又はそれよりも多くのアドレス発生器(AG)により個々のメモリ・アドレスに拡張することができる。適切な並列性を供給するために、イニシエータ・エージェント内のAGは、要求当たりに単一のアドレスを生成し、いくつかのAGは、並列に作動させることができ、各AGは、異なるスレッドからアクセスを発生させる。アドレス発生器は、メモリマップ内のシステム・アドレスを、特定のIPメモリコア内の、一部の場合には、図18に示すものと同様にチャネル境界を超えて、メモリセルの実アドレスに変換する。発生された要求は、メモリ・チャネル選択ビットのための付加的なフィールドを有するアドレスを有することができ、これらのフィールドは、1つ又はそれよりも多くの集合ターゲットを有するシステムにおいてどこで望ましい情報を検索するしたらよいかを判断することを助けるものである。第1のイニシエータ・エージェント158のようなイニシエータ・エージェントは、IPコアから発生された要求のアドレスにチャネル選択ビットを追加する論理を有するアドレス発生器を有することができる。ターゲットのアドレスのアドレス復号の少なくとも一部は、要求がイニシエータ・エージェントでのような最初にインターコネクト装置に入った時に行うことができる。アドレス復号器は、要求のアドレスを復号して、例えば、メモリ・アドレスの低位ビットに基づいて適切なIPメモリコアに要求を経路指定することができる。アドレス復号器は、アドレスからチャネル選択ビットを取り除いて、次に、メモリコントローラにおいてアドレス復号器/発生器にアドレスを渡す。チャネル・ターゲットに呈示するアドレスは、チャネル選択ビットを補正するために、例えば右に移動させることができる。メモリ・スケジューラ132は、要求で送られたシステムのメモリターゲットアドレスを復号/変換して、チップ上の所定のメモリ・セグメントの物理的な位置、すなわち、(ランク、バンク、行(ロウ)及び列(コラム)アドレス情報)を判断することができる。各アクセスは、ルックアップ・テーブルを通じて適切なメモリ・チャネル(MC)に経路指定することができる。メモリ・システムの編成及び構造の詳細のアドレス・マップ136は、IPコアに結合された各イニシエータ・エージェントにおいて出る。メモリ・スケジューラ132は、各DRAM指令サイクル中に1つのアクセスを選択し、DRAMに適切な指令を送って未処理アクセスの状態を更新してチャネル−バッファ内の未処理アクセスを予定する。単一のメモリアクセスに完了すべきDRAM指令が3つも必要である場合があることに注意されたい。次に、メモリ・チャネルは、要求されたアクセスを実施して、読取データを有する1つ又はそれよりも多くの応答をバッファに返送する。ターゲット・エージェントは、予想される順序付け応答順序でイニシエータ・コアに呈示することができるようにメモリ・チャネルからの応答を回収する。
従って、イニシエータ・コア102〜114及び120〜126には、メモリ・アドレス構造及び編成を追跡するために内蔵したハードウエア及びソフトウエアは不要である。イニシエータ・コア102〜114及び120〜126には、メモリ・アドレス構造及び編成に関する事前の知識は不要である。イニシエータ・エージェント116は、この情報を有するので、コアがこの知識を必要としないように済ませる。イニシエータ・エージェント116は、ターゲットの真のアドレス、インターコネクト装置118にわたるイニシエータからターゲットに至るルート、次に、集合ターゲット内のチャネルルートを選択するためにこの情報を有する。メモリ・スケジューラ132は、イニシエータ・エージェントにより送られた要求を受信すると、ターゲットアドレス及びチャネルルートを、様々なメモリ・チャネル/IPコア内のバンク、行(ロウ)及び列(コラム)移動情報に変換する。実施形態では、集合ターゲットの多重チャネルの性質が、システム内のIPコアから取り出され、このメモリ・チャネルの構造及び編成に関する知識をシステム内の各イニシエータ・エージェント116又はシステム内の集中メモリ・スケジューラ132上に配置する。
メモリ・スケジューラ132も、ユーザ定義のアドレ様式(図18を参照されたい)をサポートする。各タイリング機能は、指定のOCPのMAddrSpaceに関連付けることができる。メモリ・スケジューラ132を通じてアドレス可能なメモリは、複数の領域(非重複)としてシステム・アドレス空間にマップすることができ、各々は、それ独自のタイリング機能を有する。タイリングは、2Dブロックトランザクション最適化に向けて2Dメモリページ検索において用いることができる。第1の領域に割り当てられたアドレス空間内のメモリ・インタリーブ・セグメントは、2Dブロック要求に関して2Dメモリページ検索において使用されるそれ独自のタイリング機能を有する。それらのメモリ・インタリーブ・セグメントは、メモリ・スケジューラを通じてアドレス可能である。
実施形態では、インターコネクト装置上で使用するプロトコルは、2個、4個、又は8個のターゲットを収容する集合ターゲットをサポートする。ソケットプロトコル及び構成は、集合ターゲット内の個々のターゲットに対して同一ものとすることができる。集合ターゲット内の個々のターゲットは、同じ2の累乗インタリーブ境界を有することができる。集合ターゲットのターゲットメンバは、インターコネクト装置内の共通の交換器又は異なる交換器に接続することができる。
フロー制御プロトコル及びフロー制御論理により、対応する応答がイニシエータIPコアに返送される前に、確実にトランザクションが応答通路で正しく組み立て直される。
実施形態では、インターコネクト装置は、QOSユニットを使用する。集合ターゲットのQOSモードは、best_efforts、優先度、又は制御された待ち時間及び帯域幅とすることができる。Soccompソフトウエアツールは、集合ターゲット・セット内の全てのターゲットが同じQOSモードを有することを検査することができる。モードが優先度又は制御された待ち時間及び帯域幅である場合、各スレッドは、アービトレーション優先度を割り当てるべきである。全てのターゲットメンバは、同じ組のスレッドを有する。Soccompソフトウエアツールは、全てのスレッドアービトレーション優先度が各ターゲットメンバに同一に割り当てられていることを検査することができる。各ターゲットは、割当帯域幅を指定するためにレジスタフィールドを有する。これらの分野がソフトウエアアクセス、エクスポート性、又は初期値に関して各ターゲットで同一パラメータを有することは要件ではない。
各イニシエータがほぼ等しくチャネルにわたってアクセスを分配することが、インタリーブされた多重チャネル・システムにおいて望ましい。インタリーブサイズは、これに影響を与えるものである。スレッドに帯域幅Nを割り当てる予想される方法は、小さい公差余裕を持たせた(N/チャネル)として各チャネルQOS割り当てをプログラムすることである。アプリケーションがチャネル・バイアスを有することが既知である場合、代わりに非対称割り当てを行うことができる。領域再定義を使用する場合、アクティブ・チャネルの数は、ブート設定が異なれば異なる場合がある。各チャネルで別々の割り当てを有することが、これに対処するのに有用である。
単一チャネルDRAMターゲットに対しては、全てのアクセスがページミスである時に達成される最小の割合と、全てのアクセスがページヒットである時に達成される最大の割合との間で異なる。保証帯域幅割当ては、最小値より高く設定されるのが普通であり、アプリケーションが最小のものより高く設定されることは普通であり、これによりアプリケーション障害を可能にするが、その可能性は小さい。これらの障害の確率は、サービス帯域幅のうち何パーセントが弾力的であるか、すなわち、最小値に対する最大値の過剰分に関連する。
多重チャネルDRAMに対しては、弾力的であるサービス帯域幅の百分率は、単一のDRAMの場合よりも大きい。各チャネルは、依然として弾力性に基づくページ局所性を有する。更に、各イニシエータが利用可能である単一のチャネルのサービス帯域幅の部分に関連する弾力性がある。アドレスストリームがチャネル全体で確実に分配されている場合、特定のレベルの競合が各チャネルに存在する。アドレスストリームがいくつかのチャネルに集中する傾向がある場合、他のチャネルは、使用度が軽く(利用度100%未満)、従って、集合サービス率は低くなる。
トラフィックがチャネルに集中する時、ターゲットスレッドの全サービスのシェアが小さくなる。それによって割当カウンタは、クレジットが蓄積される傾向がある。一方、スレッドは、他のチャネルではアクティブ度が低くなる。それによってそちらの方のチャネルのカウンタもクレジットが蓄積する。クレジット蓄積を押さえる機構が存在する。これは、スレッドが再びアクティブになった時に他のスレッドを飢餓状態にすること、すなわち、サービスジッタを招くことを回避するためのものである。しかし、最大上限の設定が低すぎた場合、スレッドは、正しく割り当てられたクレジットが蓄積しない恐れ、すなわち、割り当てられた帯域幅を受け入れるのに失敗する場合がある。
従って、多重チャネルQOSの方が、単一チャネルQOSよりもジッタが増大する可能性がある。
ターゲットスレッドに割り当てられる帯域幅の複数のイニシエータ・スレッドの間の重み付け共有が準備されている。これは、遅れた参加でフェアネス群を実施するエポック・システムを通じて行われる。インターコネクト装置は、各チャネルに対してではなく、集合ターゲットに対して各エポックを追跡する。実際には、エポックは、イニシエータで追跡される。エポックは、新しいターゲットにアドレス指定された時に再開される。
実施形態では、インターコネクト装置の内部にあるフロー制御論理は、アドレス・マップ及び集積回路における集合ターゲットの既知の構造編成に問い合わせて、第1の集合ターゲットを構成するどのターゲットが第1の要求に役立つ必要があるかを判断するために、集合ターゲットのインタリーブされたアドレス空間を復号して第1の集合ターゲットを構成するターゲットの物理的区別を判断することができる。フロー制御論理が、フロー制御分割プロトコルを適用して同じスレッドからの複数のトランザクションがいずれか所定の時間に集合ターゲットの複数のチャネルに対して未処理であることを可能にすると、集合ターゲット内の複数のチャネルは、物理的に異なるアドレスを有するIPメモリコアにマップされる。インターコネクト装置の内部にあるフロー制御論理は、ターゲットIPコアに経路指定された要求順序を維持するように構成される。フロー制御機構が、制御フロー制御論理と協働して分割プロトコルを適用して同じスレッドからの複数のトランザクションがいずれか所定の時間に集合ターゲットの複数のチャネルに対して未処理であることを可能にすると、集合ターゲット内の複数のチャネルは、物理的に異なるアドレスを有するIPメモリコアにマップされる。
インターコネクト装置は、集積回路内のターゲットIPコアの割当アドレスでアドレス・マップを実施して集積回路内のターゲットIPコアとイニシエータIPコアとの間でトランザクションを経路指定する。ターゲットIPコアの第1の集合ターゲットは、アドレス・マップ内の第1の集合ターゲットのためのアドレス空間内でインタリーブされる2以上のメモリ・チャネルを含む。各メモリ・チャネルは、所定のメモリ・インタリーブ・セグメントに分割され、次に、他のメモリ・チャネルのメモリ・インタリーブ・セグメントとインタリーブされる。それらのメモリ・チャネルの各メモリ・インタリーブ・セグメントは、システム設計者によるメモリ設計仕様により許容されるバースト長要求によって抑制されないサイズ粒度でアドレス空間内で定義かつインタリーブされる。メモリ・インタリーブ・セグメントのサイズ粒度は、DRAMに構成されたDRAMメモリ設計仕様により許容された最小バースト長要求とメモリ構成により認められる予測最大DRAMメモリページ長との間の所定の長さとすることができ、この粒度のサイズは、設定可能である。
2以上の個別のメモリ・チャネルは、アドレス空間内の単一のメモリとしてシステム・ソフトウエア及び他のIPコアに呈示されるように互いにインタリーブすることができるオンチップIPコア及びオフチップ・メモリコアを含むことができる。
第1のイニシエータIPコアに対してインターコネクト装置のインタフェースになるイニシエータ・エージェントは、2以上のインタリーブされたメモリ・チャネルの集合ターゲットへの第1の要求に関連の論理宛先アドレスに基づいてアドレス・マップに問い合わせるように構成され、どのメモリ・チャネルが第1の要求に供するかと、第1のIPコアが集合ターゲット内の各メモリ・チャネルの上述の物理IPアドレスを知る必要がないようにその要求に役立つ集合ターゲット内の各メモリ・チャネルの物理IPアドレスに第1の要求を経路指定する方法とを判断する。
2以上のメモリ・チャネルは、集合ターゲットを構成するチャネルの部分集合をターゲットにするトラフィックが多すぎる時に起こる可能性がある異なるIPメモリコア間の不均一な負荷平衡の位置を回避するために、時間と共にメモリ・チャネルの各々にわたるアプリケーション・トラフィックの自動的な統計的拡張を可能にするように、システム・アドレス・マッピングのアドレス空間内にインタリーブされる。
アドレス・マップは、2以上の領域に分割することができるので、各インタリーブされたメモリのインタリーブ・セグメントが、それらの領域の少なくとも1つに割り当てられてその領域のアドレス空間をポピュレートする。メモリ・チャネルは、2以上の領域のアドレス空間において所定のメモリ・インタリーブ・セグメントを有することができる。特定の領域に割り当てられたアドレス空間内のメモリ・インタリーブ・セグメントは、2Dブロック要求に関して2次元(2D)メモリページ検索において使用されるそれ独自のタイリング機能を有し、メモリ・インタリーブ・セグメントは、メモリ・スケジューラを通じてアドレス可能である。メモリ・インタリーブ・セグメントは、メモリ・スケジューラを通じてアドレス可能である。
インターコネクト装置の内部にある分断論理は、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々のトランザクションを2以上の要求に分断する。分断論理は、得られる要求の2以上がそれらの2Dバースト属性を保持するように、集合ターゲット内のチャネルに向かうチャネル境界と交差する個々のトランザクションを分断する。
集合ターゲット内のチャネルに関する構成可能なパラメータ
図4は、例示的な個別の「DRAM IP」コアが所定のメモリ・インタリーブ・セグメントに分割され、次に、他の「DRAM IP」ブロックからのメモリ・セグメントとインタリーブされる構成パラメータを有する連続アドレス空間のマップの実施形態を示している。設計者又はユーザは、構成パラメータ460を供給することができるが、1つ又はそれよりも多くの「DRAM IP」ブロックがこの設計では不要であるとシミュレーション又は設計変更後に判断することが考えられ、設計者は、アドレス・マップをプログラムし直すことができる。ユーザインタフェース観点から、ユーザは、1)いくつかの個別のIPメモリコアを列挙し、2)アドレス・マップ内にいくつかの領域を列挙し、3)アドレス・マップ内のいくつかの領域に個別のIPメモリコアをマップし、4)領域からチャネルを除去し、これが、その後にその領域の残りのチャネルによりポピュレートされたシステム・アドレスを崩壊させることができ、5)領域内のチャネルの存在をリセットし、6)更に小型化/狭小化のような集合ターゲット内の1つ又はそれよりも多くのメモリ・チャネル内のシステム利用可能空間を変え、7)メモリ・インタリーブ・セグメントの所定のサイズ粒度を変え、8)1つの領域内のチャネル数を判断して、領域間でチャネル数を割り当て直し、それによって全てインタリーブ境界がリセットされ、チャネルがある領域もあれば、チャネルのない領域もあり、9)そのあらゆる組合せ、かつ10)設計に対して他の類似した変更を設定することをユーザが行うことを可能にする構成パラメータで中央レジスタを構成することができる。
例えば、第2のDRAMチャネル422からメモリ・インタリーブ・セグメントは、完全に除去することができ、しかし、それによって次にアドレス・マップのその領域(領域2)内の残りの第1のDRAMチャネル420によりポピュレートされるシステム・アドレスが崩壊する場合がある。同様に、第3及び第4のDRAMチャネル424、426からの436Cメモリ・インタリーブ・セグメントは、DRAM3及び4内のメモリ・インタリーブ・セグメントの先に構成されたサイズの半分の粒度でサイズ設定され、次に、アドレス・マップの領域4にインタリーブされるように構成することができる。中央構成レジスタのレジスタフィールドは、エクスポートされた定数として構成される。
上述のように、設定可能なシステムパラメータは、柔軟に動的に変更可能である多重c構成をサポートし、かつ単一の予め設計された「システムオンチップ」設計が、異なる外部記憶構成を使用する広範囲にわたるパッケージング選択肢をサポートし、かつチャネルと領域間の割り当て及びチャネル間のインタリーブ境界を構成し直して単一のパッケージの異なる作動モードをより良くサポートすることを可能にする。
構成パラメータの設定は、レジスタへのソフトウエア書込、オンチップピンを選択してこの構成情報を担持する専用管理線を起動する選択可能なピン構成に結び付いた論理で構成モードを確立する選択可能なピン構成の設定、構成要素がチップを通じて経路指定されたこれらの管理線上の構成パラメータを参照することができるこの構成情報を担持する専用制御線の起動、ソフトウエアよって問合せ可能である読取専用メモリへの埋め込み、適切なパッケージ半田接合部との嵌め合い接続、及びそのあらゆる組合せのようないくつか方法を通じて設計者より供給することができる。従って、各領域内のパラメータは、次の時点、すなわち、1)ハードウエアが構築される時、2)実行時にOSソフトウエアよってプログラムされる時、3)設計時に電子設計ソフトウエアよってプログラムされる時、4)異なるオンチップピン組合せを選択することによって物理的にデバイスが製造時に物理的に変更される時、5)シミュレーションがソフトウエアにより実施された後に変更可能である時、6)チップを通して経路指定された特定の制御線上に担持された電圧をアサート/アサート解除することによって動的に変更される時、及び7)そのあらゆる組合せの時点で設定することができる。
構成レジスタのコンテンツは、複写するとシステムにおいてインターコネクト装置に接続した各エージェントに送ることができる。構成済みパラメータは、各イニシエータ・エージェント内に局所的に維持されたルックアップ・テーブル内に複製され、各エージェント内にアドレス・マップを発生させる。従って、各エージェント内に局所的に維持されたテーブルは、構成パラメータの中央ソースから領域の構成パラメータ値を受信して多重チャネル集合ターゲットの柔軟な再構成を可能にする。
図5は、中央構成レジスタから領域のパラメータ値を受信して多重チャネル集合ターゲットの柔軟な再構成を可能にするルックアップ・テーブルの実施形態を示している。ルックアップ・テーブル562は、構成パラメータの多くを収容することができる。テーブル562は、いくつかの例示的な設定可能パラメータ、並びに設定可能パラメータに対してどの値を供給することができるかに関する制約位置を示している。「active_targets値」パラメータ564は、システムの残りにモード構成を通信するものである。「この領域内のアクティブ・チャネルの実際の数」パラメータ566は、アクティブ・チャネルと、領域に関連いた多重チャネル集合ターゲットの個々のターゲットメンバとの間の関係を定める。「この領域パラメータ566内のアクティブ・チャネルの実際の数」パラメータ566はまた、要求内に含まれたアドレス内で必要とされるチャネル選択ビット数も制御することになる。「チャネルにマップされたターゲット」パラメータ568は、メモリ・チャネルに割当可能な合法的物理アドレスを示している。「これらのメンバ・カウントを有するターゲットに対して合法」パラメータ570は、サポートされた構成の使用回数を限定する構成論理からの制約を有する。可能な関係の全てがサポートされるというわけではない。
構成論理461は、汎用使用に向けてハードウエア及びソフトウエアを製造するのではなく、サポートされた構成及び構造的編成の数を限定するために存在する。構成パラメータ、構成パラメータの値、及びそれらのパラメータを変更することができる時期の多様性は、設計された「システムオンチップ」設計をいくつかの異なる用途をサポートするように柔軟なものにするが、可能な構成の個数を限定する論理を有することによって、エージェント、スレッド融合(マージ)ユニット、及び分割(スプリット)ユニットのようなインターコネクト装置内のハードウエアは、論理及び構成要素数が低減し、並びに特定のサポートされた構成及び構造編成を構成するための情報の通信量が低減し、並びに各イニシエータ・エージェント内に維持するルックアップ・テーブルを小型化することができる。従って、受信構成パラメータと協働する論理は、一般的な目的からいくつかのアプリケーション専用目的/構成にいたるまで、メモリ・システムによる合法的構成量を限定して、通信すべきである設定可能なパラメータ量を限定すると共に、IPコアを全てのアプリケーションに対して汎用とするためにチップ上に物理的に存在する論理及びハードウエア量を限定することができる。
テーブルは、8メンバ多重チャネル集合ターゲットに関する可能な例示的な関係を示している。4メンバ及び2メンバチャネル集合ターゲットに対しては、アクティブターゲットパラメータの一部の値は違法であるので、コンパイル時にERRORが発生する。active_targetsパラメータの値の多くは、静的構成に関しては価値がないものであるが、その理由は、アクティブ・チャネルの個数は、関連ターゲットメンバ・カウントよりも少ないからである(例えば、8メンバターゲットの場合は2という値)。これらの値は、ブート構成をサポートために利用可能である。これらの値がブート設定可能ではない領域に対して構成されていた場合は、コンパイルエラーも発生する。例えば、active_targets値15及び値14は、4メンバ多重チャネル・ターゲットに対して合法的な値ではなく、また、2メンバ多重チャネル・ターゲットに対しても合法的ではないので、コンパイル時でERRORが発生する。
active_targets属性566の値の多くも「静的構成」に関しては価値がないものであるが、その理由は、アクティブ・チャネルの個数は、関連の多重チャネル・ターゲットのメンバ・カウントに等しくなければならないからである。例えば、8メンバ多重チャネル・ターゲットの7(すなわち、4個のアクティブ・チャネル)のtarget_actives値は、合法的でないが、4メンバ多重チャネル・ターゲットに対しては構わないものである。これらの値は、システムの構成パラメータのブート構成をサポートするのに利用可能である。
実施形態では、多重チャネル集合ターゲットを含む個々のターゲットは、同一ソケット構成を有することができる。これは、領域パラメータよって定められる同一channe_sizeを有することを意味する。個々のターゲットコアがある程度アドレス可能なchannel_size(addr_width及びchannel_sizeと不一致)をポピュレートした場合、ターゲットは、エイリアシング(アドレス・マップ内の2以上の異なる領域内の割当メモリと同じ物理メモリ空間の使用)又は誤差検出を実施することを担当する。この領域パラメータ内のアクティブ・チャネルの実際の数は、2進数の組の個々のターゲットを多重チャネル・ターゲットからポピュレート解除することを可能にするのに利用可能である。これは、主として起動可能な構成において有効である。このように多重チャネル・ターゲットをポピュレート解除(他の領域パラメータを変えることなく)ことによって、集合ターゲットで利用可能なメモリ・インタリーブ・セグメントの総数が少なくなる。reion_sizeが完全に多重チャネル・ターゲットを網羅すると仮定すると、個々の構成ターゲットの一部をポピュレート解除することにより、その領域が多重チャネル・ターゲットをエイリアシングすることになる。
interleave_sizeパラメータは、外部DRAM構成要素密度が変更された時に変更することができるように設計者によりブート設定可能/実行時プログラマブルにすることができる。この領域パラメータ内のアクティブ・チャネルの実際の数は、外部DRAMターゲットがポピュレート又はポピュレート解除された時に変更することができるように、設計者よってブート設定可能にすることができる。複数のチャネル/領域割り当てから選択するブート設定可能active_targetsパラメータも有効である。region_sizeパラメータは、外部DRAM密度の変動、外部母集団、及び/又はチャネル/領域割り当てに適応するように、設計者よってブート設定可能にすることができる。
アドレス・マップレジスタブロックは、以下の2つの形式のレジスタ、すなわち、基準レジスタ及び制御レジスタを含む。基準レジスタ及び制御レジスタの各対は、多重チャネル・アドレス領域に対応している。基準レジスタは、多重チャネル・アドレス領域の基準アドレスを収容する。フィールド制御レジスタは、他の構成パラメータを収容する。
実施形態では、各アドレス・マップレジスタ対は、設計のためにrtl.confファイル内に指定された1つの多重チャネル・アドレス領域に対応している。アドレス・マップレジスタブロック及びレジスタ対は、指定されているという点で他のレジスタブロック及びレジスタと異なっている。設計における他のレジスタブロック及びレジスタは、それらがrtl.confレグブロック及びレジスタ構成を使用することに属することをエージェントの内側で明示的に指定される。
ADDR_MAPレジスタブロック及びレジスタ対は、address_map及び領域構成を用いたrtl.conf内で指定されており、かつそれらの多重チャネル・アドレス領域内に説明される全てのフィールドを含む。また、可読エクスポート機能及びレジスタのリストは、address_map及び領域構成の一部として指定される。ソフトウエア可視レジスタは、これらのレジスタによって作成される。ADDR_MAPレジスタブロック及びレジスタ対はrtl.confファイル内では明示的に定めることができないので、レグブロック及びレジスタ構成を用いたrtl.conf内では書き出されない。
ADDR_MAPレジスタブロックの個々のレジスタ内の個々のレジスタフィールドは、エクスポートされた定数として構成することができる。それによって領域パラメータは、ブート設定可能にすることができる。具体的には、次に、ブート設定可能とすることができると考えられる領域パラメータは、少なくともregion_base、region_size、address_space、interleave_size、及びactive_targetsを含む。エクスポートと指定された各フィールドにより、単一の中央レジスタは、そのフィールドに対して定められた分のビットでインターコネクト装置の内側でインスタンス化される。このようにして、ゲートコストに対する影響は、設計に対して定められたブート構成可能性の量に正比例する。パラメータは、その単一の中央レジスタからインターコネクト装置の残りまで一斉に送られることになる。
active_targets属性560は、多重チャネル・ターゲットからポピュレート解除される個々のターゲットのバイナリの組を可能にするのに利用可能である。これは、主として起動可能な構成において有効である。このように多重チャネル・ターゲットをポピュレート解除することによって(他の領域パラメータを変えることなく)、集合ターゲットで利用可能なメモリ・インタリーブ・セグメントの総数が少なくなる。領域サイズが、完全にポピュレートされた構成に向けて多重チャネル集合ターゲットを完全に網羅すると仮定すると、個々の構成ターゲットの一部をポピュレート解除すれば、この領域により多重チャネル集合ターゲットがエイリアシングされる。例えば、完全にポピュレートされたアドレス領域が4メンバ多重チャネル・ターゲットに対して図3に示すように3のアクティブターゲット値でポピュレート解除された時、ポピュレート解除されたアドレスに対して利用可能なインタリーブの総数が8になる(16から)ばかりでなく、これらの利用可能なインタリーブは、領域ベースに向けて詰められ、アドレス領域の数値が高いアドレス可能な空間(領域サイズの半割部)は、エイリアシング済みアドレス空間になる。
システム設計者が構成パラメータの全部でプログラムした後、負荷シミュレーションを実施することができる。経時的な統計負荷平衡が望ましい特性内に発生しない場合、設計者は、中央レジスタに異なる構成パラメータをプログラムして、負荷平衡が新しい構成パラメータで望ましい特性内に現在発生しているか否かを確かめることができる。同様の再構成処理は、チップのプロトタイプが製造された後のような設計サイクルにおいて後で実施することもできる。
実施形態では、インターコネクト装置は、集積回路内のターゲットIPコアに対して割り当てられたアドレスでアドレス・マップを実施して、集積回路内のターゲットIPコアとイニシエータIPコアの間で要求を経路指定する。ターゲットIPコアの第1の集合ターゲットは、アドレス・マップ内の第1の集合ターゲットに対してアドレス空間内でインタリーブされる2以上のメモリ・チャネルを含む。各メモリ・チャネルは、所定のメモリ・インタリーブ・セグメントに分割されて、次に、他のメモリ・チャネルのメモリ・インタリーブ・セグメントとインタリーブされる。アドレス・マップは、2以上の領域に分割され、各インタリーブされたメモリ・インタリーブ・セグメントは、それらの領域の少なくとも1つに割り当てられ、その領域のアドレス空間をポピュレートし、領域及びメモリ・インタリーブ・セグメントに関連のパラメータは、設定可能である。
第1のメモリ・チャネルは、アドレス・マップ内の第1の領域の設定可能なパラメータにより制御された第1のサイズの第1のメモリ・インタリーブ・セグメントと、アドレス・マップ内の第2の領域の設定可能なパラメータにより制御された第2のサイズの第2のメモリ・インタリーブ・セグメントとを有する。それらのメモリ・チャネルの各メモリ・インタリーブ・セグメントは、DRAMメモリ設計仕様により、又はそのバーストの開始アドレスにより許容されるバースト長要求よって制約されないサイズ粒度でアドレス空間内で定義かつインタリーブされる。
特定の領域に割り当てられたアドレス空間内のメモリ・インタリーブ・セグメントのサイズ粒度を制御する設定可能なパラメータは、その領域内の上述のメモリ・インタリーブ・セグメントに関するトランザクションを有すると予想される予測された形式のアプリケーションに基づいている。各領域内の構成パラメータは、ハードウエアが構築される時、実行時にOSソフトウエアよってプログラムされる時、設計時に電子設計ソフトウエアよってプログラムされる時、異なるオンチップピン組合せを選択することによってデバイスが製造時に物理的に変更される時、シミュレーションがソフトウエアにより実施された後に変更可能である時、チップを通して経路指定された特定の制御線上に担持された電圧をアサート/アサート解除することによって動的に変更される時、及びそのあらゆる組合せから成る群から選択された時期に設定することができる。設定可能な構成パラメータは、動的に変更可能である複数のチャネル配置を柔軟にサポートすると共に、単一の設計された「システムオンチップ」設計が、異なる外部記憶構成を使用する広範囲にわたるパッケージング選択肢をサポートし、かつチャネルと領域間の割り当て及びチャネル間のインタリーブ境界を構成し直して単一のパッケージの異なる作動モードをより良くサポートすることを可能にする。
1つ又はそれよりも多くの集合ターゲット上のアドレス領域の設定可能なマッピングにより、領域当たりの異なるインタリーブサイズがサポートされ、集合ターゲット当たりの異なる物理チャネルがサポートされ、インタリーブサイズの実行時の割当及び/又は集合ターゲット又はアドレス領域へのチャネル割当がサポートされる。
構成パラメータの設定は、レジスタへのソフトウエア書込、オンチップピンを選択してこの構成情報を担持する専用管理線を起動する選択可能なピン構成に結び付いた論理で構成モードを確立する選択可能なピン構成の設定、構成要素がチップを通じて経路指定されたこれらの管理線上の構成パラメータを参照することができるこの構成情報を担持する専用制御線の起動、ソフトウエアよって問合せ可能である読取専用メモリへの埋め込み、適切なパッケージ半田接合部との嵌め合い接続、及びそのあらゆる組合せから成る群から選択されたいくつか方法を通じて設計者により供給することができる。
アドレス・マップ内のアドレス領域は、第1の量のバイトで構成された粒度を有する第1のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有し、アドレス・マップ内の第2の領域は、第2の量のバイトで構成された粒状度を有する第2のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有する。
アドレス・マップ内の各領域は、1)その領域内のメモリを用いた予測されたプログラムに基づいており、2)その領域内のメモリを用いた一種の予測されたプログラムのアドレス局所性の原理を利用するように、その領域に割り当てられたアドレス空間内でメモリ・インタリーブ・セグメントのサイズ粒度を制御するそれ独自の設定可能なパラメータを設定することができる。ユーザは、1)いくつかの個別のIPメモリコアを列挙し、2)アドレス・マップ内にいくつかの領域を列挙し、3)アドレス・マップにおいて領域に慎重なIPメモリコアをマップし、4)領域からチャネルを除去し、その後その領域の残りのチャネルによりポピュレートされたシステム・アドレスを崩壊させることができ、5)領域におけるチャネルの存在をリセットし、6)更に小型化/狭小化のような集合ターゲット内の1つ又はそれよりも多くのメモリ・チャネル内のシステム利用可能空間を変更し、7)メモリ・インタリーブ・セグメントの所定のサイズ粒度を変更し、8)1つの領域内のチャネル数を判断して、領域間でチャネル数を割り当て直し、それによって全てインタリーブ境界がリセットされ、チャネルがある領域もあれば、チャネルのない領域もあり、かつ9)そのあらゆる組合せから成る群から選択された変数に対して、構成パラメータを供給することができる。ユーザインタフェースの観点から単一の中央構成レジスタは、設計者がこのレジスタに構成パラメータをプログラムするために存在するものであり、中央構成レジスタのレジスタフィールドは、エクスポートされた定数として構成される。
受信構成パラメータと協働する構成論理は、一般的な目的からいくつかのアプリケーション専用目的/構成にいたるまでメモリ・システムによる合法的構成量を限定して、通信すべきである設定可能なパラメータ量を限定し、かつIPコアを全てのアプリケーションに対して汎用とするためにチップ上に物理的に存在する論理及びハードウエア量を限定する。各エージェント内に局所的に維持されたテーブルは、構成パラメータの中央ソースから領域の構成パラメータ値を受信して多重チャネル集合ターゲットの柔軟な再構成を可能にする。
システムは、並行処理管理の強化をサポートすることができる。システムは、オープンコアプロトコル(OCP)スレッド及びOCPタグに対するサポート及びマスターIDによるAXIとの接続性を有する。インターコネクト装置が並行処理の外部かつ内部ユニット間での柔軟なマッピングを有することが重要である。これは、柔軟なスレッド/タグマッピングの形を取る。インターコネクト装置は、並行処理コストと性能のトレードオフを管理する効率的な機構を有する。スレッドマッピング及びスレッド崩壊アドレスを使用して制御の細密な粒度と共に、並行処理コストと性能のトレードオフの必要性を管理することができる。組合せたOCPスレッド及びOCPタグサポートをもたらすことが、これらの必要性に対応する1つの方法である。また、付加的な制御は、ターゲットスレッドとのイニシエータ・スレッド融合が行われるタグ取り扱いを指定することよって行うことができる。部分的スレッド崩壊のサポートは、これらのトレードオフ必要性に対応することができる別の機能である。
実施形態では、イニシエータ・エージェントが多重チャネル・ターゲット内の1つの個々のターゲットにエージェントを接続した場合、このイニシエータ・エージェントは、多重チャネル・ターゲット内の全ての個々のターゲットにエージェントを接続すべきである。
要求経路順序の維持
図6Aは、複数のスレッド融合・スレッド分割のユニットを有するインターコネクト装置上で読取及び書込要求の要求順序を維持する複数のイニシエータIPコア及び複数のターゲットIPコアを有するSoCのような集積回路の実施形態のブロック図を示している。「中央演算処理装置」IPコア602のような各イニシエータIPコアは、インターコネクト装置618とインタフェースで接続するそれ独自のイニシエータ・エージェント658を有することができる。第1の「DRAM IP」コアのような各ターゲットIPコアは、インターコネクト装置618とインタフェースで接続するそれ独自のイニシエータ・エージェントを有することができる。各「DRAM IP」コア620〜624は、関連のメモリ・スケジューラ632、DRAMコントローラ634、及びPHYユニット635を有することができる。インターコネクト装置658は、インターコネクト装置618自体の内部にあるフロー制御論理を実施して、スレッド当たりを条件として、所定のスレッド内の各出された要求が各スレッドの宛先アドレスで到着した時の順序を管理する。インターコネクト装置618も、応答ネットワーク内のインターコネクト装置の内部にあるフロー制御プロトコルを実施して、送信された場合に対応する要求の順序で同じスレッド内の応答を戻す時期の順序付け制限事項を実行する。インターコネクト装置618は、インターコネクト装置自体の内部にあるフロー制御論理及びフロー制御プロトコルを実施して、供される同じスレッド内の1組の出された要求、及び互いに対して、ただし、別のスレッドの順序付けとは独立に、順序正しく返送される応答を順序付ける予想される実施を管理する。スレッド分割ユニットのフロー制御論理は、1つのイニシエータ・スレッドからのトランザクションが同時に複数のチャネルに対して、及び従って同時に多重チャネル・ターゲット内の複数の個々のターゲットに対して未処理であることを可能にする。これには、2つの異なるチャネルでターゲットとされるトランザクション、並びに単一であるが異なるチャネルで各々ターゲットとされる2つのトランザクション(同じイニシエータ・スレッドから)が含まれ、ここで、これらの2つの異なるチャネルは、多重チャネル・ターゲット内の2つの個々のターゲットにマップされている。
イニシエータ・エージェント近傍又はイニシエータ・エージェント内のスレッド分割ユニットは、要求のようなスレッドの各部をチップ上の複数の別々の物理的経路に送る。例えば、CPUコア602に関連の第1のイニシエータ・エージェント658内のスレッド分割ユニットは、第1の結合式スレッド融合・分割ユニット668に至る第1の物理的経路662に沿って、第2の結合式スレッド融合・分割ユニット668に至る第2の物理的経路664に沿って、又は第3の結合式スレッド融合・分割ユニット672に至る第1の物理的経路662に沿って所定のスレッド内のトランザクションを経路指定することができる。フロー制御論理は、その組のトランザクションの各部がシステム内の別々の物理的経路上で経路指定されており、並びにシステム内の/チップ上の異なるエリアに物理的に位置するターゲットに経路指定されているために、適切である場合には、フロー制御分割プロトコルを早期のトラフィック分割に適用する。
ターゲット・エージェント近傍又はターゲット・エージェント内のスレッド融合ユニットは、そのスレッドセグメントからの要求に対する応答が、予想された順序正しい応答順序でターゲットコアからイニシエータ・コアに戻ることを保証する。例えば、第1のターゲット・エージェント631の近くの第1のスレッド融合ユニット668は、所定のスレッドからの要求に対する応答が、予想された順序正しい応答順序で第1のターゲット「DRAM IP」コア620及び第2のターゲット「DRAM IP」コア622から第1のイニシエータ・コア662に戻ることを保証する。
2つの異なるイニシエータからスレッドは、スレッド融合ユニット内で単一の第3のスレッドに結合することができる。単一のスレッドの各部は、スレッド分割ユニット内で2つの異なるスレッドに分割することができる。融合及び分割ユニットは、スレッドidマッピングを用いて、異なるスレッド識別子を有するスレッドを結合することができる。各スレッド融合ユニット及びスレッド分割ユニットは、分割融合点でトランザクションの局所的順序を維持すると共に、そのシステムを応答のための簡単なフロー制御機構に結合することができる。
上述のように、第1のイニシエータ・エージェント658のようなイニシエータ・エージェント内のスレッド分割ユニットは、接続したイニシエータIPコアからの所定のスレッド内の1組のトランザクションを分割することができ、ここで、1組のトランザクションの分割された各部は、意図したターゲット(すなわち、2つの異なるチャネル及び2つの異なるターゲットIPコア)に至る別々の物理的経路上で経路指定されている。その分割ユニットに関連のフロー制御論理は、現在の物理的経路に向かうその同じスレッド内の未処理要求からの全ての肯定応答通知がスレッド分割ユニットに返送された時に他方の物理的経路への切り換え及び他方の物理的経路に沿った宛先アドレスによる同じスレッドからの要求を経路指定する切り換えが行われることを可能にするために、その同じスレッド内の未処理要求よって使用されている物理的経路以外に、物理的経路に向かう同じスレッドからの次の要求の発行を停止していてフロー制御を実施する。フロー制御論理は、スレッド分割ユニットの一部又はスレッド分割ユニットターゲットで調節する論理の別々のブロックとすることができる。従って、スレッド分割ユニットは、フロー制御を実施して、現在の物理的経路に向かうその同じスレッド内の未処理要求からの全ての肯定応答通知が上述のスレッド分割ユニットに戻されるまでその同じスレッド内の未処理要求よって使用されている現在の物理的経路以外に、リンクのような第1の物理的経路662に向かう同じスレッドからの次の要求の発行を防止する。
フロー制御論理は、同じスレッドからの要求が第2の意図したターゲットに別々の物理的経路に沿って経路指定される前に、要求の安全な到着を示す同じスレッド内の肯定応答通知を追跡して、全ての以前の要求が意図したターゲットIPコアの前に最後のスレッド融合ユニットに到達したことを検証する。フロー制御論理は、フロー制御プロトコルを適用して、単にそのスレッドから要求がシステム内の別々の物理的経路に経路指定されている時に同じスレッドからの要求の発行を停止する。スレッド分割ユニット及び関連のフロー制御論理は、インターコネクト装置トポロジーにおいて各ターゲット又はチャネルに装備され、かつ集中化したターゲット/チャネル分割ユニットに関連のトラフィック及び経路指定混雑に関する問題を最小にする位置に関して遥かに多くの柔軟性を可能にするものである。
実施形態では、要求がイニシエータ・エージェントにおけるようにインターコネクト装置インタフェースに入ると直ちにスレッドから要求された意図したアドレスのアドレス復号が行われる。フロー制御論理は、アドレス・マップシステム内の及び各集合ターゲットの既知の構造編成に問い合わせて、第1の集合ターゲットを構成するどのターゲットが第1の要求に役立つ必要があるかを判断するために集合ターゲットのインタリーブされたアドレス空間を復号して第1の集合ターゲットを構成するターゲットの物理的区別を判断する。第1の集合ターゲット637内の複数のチャネルは、物理的に異なるアドレスを有するIPメモリコア620及び622にマップされる。フロー論理は、メモリ・インタリーブ・セグメントが最初のチャネルに戻るチャネルラウンドにおいて異なるチャネルのチャネル境界にわたってラッピングし、次に、このラッピングの性質を繰り返す方法を含む、集合ターゲットの既知の構造編成を理解する分断論理と協働することができる。すなわち、イニシエータ・エージェントのフロー論理は、チップ上の全ての他のターゲットの中で集合ターゲット637内の620及び622のような適正なチャネル及び特定のターゲット628に要求を経路指定することができる。全体として、フロー制御論理は、例えば、フロー制御分割プロトコルを適用して、同じスレッドからの複数のトランザクションがあらゆる所定の時点で複数のチャネルに対して未処理であることを可能にする。
別々の物理的経路を通じて経路指定された要求は、イニシエータ・エージェントで、並びにカスケード式分割ユニット高度パイプラインシステム内の他の分割ユニットで分割することができる。図6bは、要求経路順序を維持するために集中融合分割ユニット668bにおいて実施されるフロー制御論理657の実施形態のブロック図を示している。
図7aは、2以上の異なる物理的経路に沿ってスレッドにおいて第1のターゲット724のようなチップ上の第1の物理的位置に向かう宛先アドレスを有する第1の要求及び第1のチャネル722及び集合された第2のターゲット737を形成する第2のチャネル720のような第1の物理的位置からチップ上の異なる物理的位置に向う宛先アドレスを有するそのスレッド内の他の要求を経路指定することより、1組のトランザクションを発生させるイニシエータIPコア716から要求を経路指定する1つ又はそれよりも多くのスレッド分割ユニットの実施形態のブロック図を示している。第1及び第2のチャネル720及び722は、アドレス領域を共有して単一の論理集合ターゲット737として呈示される。イニシエータ・エージェント716は、スレッドから第1のスレッド分割ユニットに要求を経路指定することができる。第1のスレッド分割ユニット761は、第1のリンク762及び第2のリンク764のような1つ又はそれよりも多くの異なる物理的経路に沿った宛先アドレスによって要求を経路指定することができる。
IA716において、アドレス調査が行われる時、要求宛先物理ルート判断及び肯定応答通知判断の戻りルートが調査される。IA716は、送信アドレス/ルート調査が行われる時点で静的に肯定応答通知戻りルートを調査する。1次フロー待ち行列717のような順序付けフロー待ち行列は、各スレッド分割ユニット761及び763、及びスレッド融合ユニット765、767、769、及び771内に受信スレッド毎に存在する。順序付けフロー待ち行列は、先入れ後出し順序付け構造を有することができる。1つの転換先入れ後出し順序付けフロー待ち行列は、その第1の分割ユニット内の受信スレッド毎に維持することができる。論理回路及び1つ又はそれよりも多くのテーブルは、その順序付けフロー待ち行列内に入る/格納されたトランザクションの各順序付けフロー待ち行列において局所的に要求の履歴を維持する。上述のように、フロー論理は、同じスレッド内からの要求から肯定応答通知/信号を追跡して、同じスレッドからの要求が第2の意図したターゲットに別々の物理的経路に沿って経路指定される前に、意図したターゲットに向けて全ての以前の要求が意図したターゲットの前の最終融合器に到達したことを検証する。
待ち行列の先入れ先出しの固有の順序付けを用いてスレッド内の受け取った要求の順序を確立することができ、所定のスレッド内の要求のこの維持された局所的順序を用いて、要求をその同じスレッド内の他の要求と比較して、同じターゲットに向かうその同じスレッドからの全ての以前の要求がそのスレッドの各部を分割する分割ユニットに肯定応答信号を戻すまで、異なるリンクに対するその後の要求が分割ユニットから発せられていないことを検証することができる。
スレッド分割ユニットは、一般的に、所定のスレッド内の単一のトランザクションを2以上のトランザクションに分割することができる場所に位置し、単一のトランザクションの分割された各部は、それらの意図したターゲットに至る別々の物理的経路上に経路指定される。実施形態では、トランザクション転送/本来の要求の一部がその転送の意図したターゲットの前に最後のシリアル化の点(最終スレッド融合ユニットなど)に到達した時、肯定応答通知が、初期スレッド分割ユニットに戻される。未処理トランザクションは、肯定応答信号が異なる物理的経路からの全ての以前の要求から受信されるまでシリアル化されているが、そのスレッド内の要求のいずれかに対する応答の受信に関してシリアル化されるのではないことに注意されたい。要求に関するフロー制御プロトコルは、他のスレッドに対しても非閉塞性を有し、並びに同じスレッドから第2の要求を出す前に第1の要求に対する応答を必要とすることに対しても非閉塞である。
第1のスレッド分割ユニット761は、第2のスレッド分割ユニット763と要求経路においてカスケード式にすることができる。初期スレッド分割ユニットと意図した集合ターゲットチャネル間の物理的経路内のその後のスレッド分割ユニットは、ターゲットチャネルとして処理することができる。要求経路スレッド融合ユニットも、初期スレッド分割ユニットに関連のフロー制御論理によってカスケード式にすることができるが、各スレッドの肯定応答通知は、経路上の最終スレッド融合ユニットから意図したターゲットチャネルに送られるべきである。上述のように、スレッド分割ユニットは、カスケード式にすることができるが、通知は、経路内の全ての分割ユニットに戻す必要がある。物理的経路内の各分割ユニット内のフロー論理は、オープンブランチ経路からの全ての肯定応答通知が受信されるまで異なる「ブランチ/物理的経路」に切り換わる。応答戻りネットワークは、図7aに示す以前の要求ネットワークの正確な対等物とすることができ、逆のフロー制御を追加して同じインターコネクト装置リンク762及び764を使用することさえできることに注意されたい。
実施形態では、上流側分割ユニットは、その後の要求を下流側スレッド分割ユニットで別々の物理的経路に沿って分割することが必要になるまで、所定のスレッドから別の分割ユニットまで複数の要求を送り続ける。次に、経路分割を引き起こす下流側分割ユニットは、初期物理的経路に沿って進むそのスレッドからの未処理要求の全てが経路分割を引き起こす下流側スレッド分割ユニットにそれらの未処理要求の受信の肯定応答通知を通信してしまうまで、そのスレッドからの未処理要求の全てから別々の物理的経路に沿って進む同じスレッドからのその後の要求のフロー制御バッファリングを実施する。
肯定応答通知は、黙示的なものとすることができ、従って、両方の状況、すなわち、1)初期スレッド分割ユニットとスレッド要求の最終宛先アドレスの前の最終スレッド融合ユニットとの間に分割ユニットが存在しない場合、2)初期スレッド分割ユニットと下流側スレッド分割ユニットの間に構成要素に影響を与える他のスレッドが存在しない場合に、要求の実際の肯定応答通知の戻しを否認することができる。
実施形態では、集積回路のインターコネクト装置は、インターコネクト装置に結合された1つ又はそれよりも多くのイニシエータ・アイピー(IP)コアと、複数のターゲットIPコアとの間でトランザクションを通信する。インターコネクト装置は、トランザクション内で予想実行順序を維持しながら、互いに対して並列に第1のイニシエータから出され、かつ1)複数の個別のターゲットIPコア、及び2)アドレス・マップ内の第1の集合ターゲットのためのアドレス空間内でインタリーブされる2以上のメモリ・チャネルを含む集合ターゲットIPコアのうちの少なくとも一方に出された複数のトランザクションをサポートするように構成された論理を有するフロー制御機構を実施することができる。フロー制御機構は、第1のトランザクションが第2のトランザクションの前に完了することを保証しながら、かつ第1のトランザクション内の予想実行順序が維持されることを保証しながら、同じ第1のイニシエータIPコアから第1のIPコアに出された第1のトランザクションが完了する前に第1のイニシエータIPコアから第2のターゲットIPコアに出される第2のトランザクションをサポートする論理を有する。第1及び第2のトランザクションは、同じイニシエータIPコアからの同じスレッドの一部である。第1及び第2のトランザクションの各々は、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答から成る。要求を送るイニシエータ及び要求に対する応答を送るターゲットは、トランザクションであると考えられる。従って、イニシエータからの書込及び本来の書込に応答するターゲットからの書込は、依然としてトランザクションであると考えられる。
インターコネクト装置は、インターコネクト装置自体の内部にあるフロー制御論理を実施して、互いに対して、ただし、別のスレッドの順序付けとは独立に順々に供される同じイニシエータからの同じスレッド内の1組の出された要求を順序付ける予想された実施を管理することができる。フロー制御論理は、ターゲットIPコアの宛先アドレスに至る要求経路内のスレッド分割ユニットに関連するものであり、スレッド分割ユニットは、フロー制御を実施して、現在の物理的経路に向かうその同じスレッド内の未処理要求からの全ての肯定応答通知が上述のスレッド分割ユニットに戻されるまでその同じスレッド内の未処理要求よって使用されている現在の物理的経路以外に、リンクのような第1の物理的経路662に向かう同じスレッドからの次の要求の発行を防止する。
フロー制御論理は、同じスレッド内の要求の安全な到着を示すそれらの要求からの肯定応答通知を追跡して、同じスレッドからの要求が第2の意図したターゲットに別々の物理的経路に沿って経路指定される前に、意図したターゲットに向けて進む全ての以前の要求が意図したターゲットの前の最終融合器に到達したことを検証するように構成される。順序付けフロー待ち行列は、分割ユニット、並びに各順序付けフロー待ち行列内での要求の履歴を局所的に維持するテーブル内の受信スレッド毎に存在する。従って、スレッド分割ユニットで受け取った要求の局所的順序が確立される。スレッド内の要求の局所的順序は、要求をその同じスレッド内の他の要求と比較して、初期物理的経路に向かうその同じスレッドからの全ての以前の要求が分割ユニットに肯定応答信号を戻すまで別々の物理的経路に至るその後の要求がスレッド分割ユニットから発されていないことを検証するために維持される。
所定のスレッド内のトランザクションの組を分割したスレッド分割ユニットに関連のフロー制御論理は、そのスレッド内の他の未処理要求から別々の第1の物理的経路に沿って経路指定される次の要求を出すが、1)以前の要求がバースト要求であった場合は早くても直前の要求内のワード量の1サイクル後であるか、又は2)早くても、直前の要求がその直前の要求のターゲットアドレスの前の最終スレッド融合ユニットに到着することになる時間量の総時間と、スレッド分割ユニットに肯定応答通知を通信する時間との合計である。肯定応答通知は、黙示的なものであり、従って、両方の状況、すなわち、初期スレッド分割ユニットとスレッド要求の最終宛先アドレスの前の最終スレッド融合ユニットとの間に分割ユニットが存在しない場合、及び初期スレッド分割ユニットと下流側スレッド分割ユニットとの間に構成要素に影響を与える他のスレッドが存在しない場合には、要求の実際の肯定応答通知の戻しを否認する。
スレッド分割ユニットは、別のスレッド分割ユニットと要求経路においてカスケード式にすることができる。上流側スレッド分割ユニットは、その後の要求を下流側スレッド分割ユニットで別々の物理的経路に沿って分割することが必要になるまで、所定のスレッドからの要求を上流側スレッド分割ユニットから下流側スレッド分割ユニットに連続的に送ることができる。下流側分割ユニットは、初期物理的経路に沿って進むそのスレッドからの未処理要求の全てがそれらの未処理要求の受信の肯定応答通知を経路分割を引き起こす下流側スレッド分割ユニットに通信してしまうまで、そのスレッドからの未処理要求の全てから、別々の物理的経路に沿って進む同じスレッドからのその後の要求のフロー制御バッファリングを実施する。
システムを通じたステージ単位で要求及び応答を格納及び移動させるためにバッファを伴ってシステムをパイプライン化することができる。システムは、複数の要求を同じイニシエータから送ることができるようにパイプライン記憶システムも使用し、各々の要求は、異なるサイクルで送り出され、イニシエータは、次の要求を発生させる前に初期要求に対する応答を受信するのを待たなくて済む。インターコネクト装置内のスレッド分割ユニットは、以前の要求と同じ要求に沿って次の要求を送る前に単に出された要求の肯定応答通知を待たなければならないだけである。
フロー論理は、肯定応答通知を用いて要求経路デッドロックを防止し、肯定応答通知は、最終スレッド融合ユニットから要求ネットワークに沿って戻される。フロー論理は、一度に2以上のターゲットに対して未処理であるトランザクションを有するイニシエータがないことを検証するインタロックとして上述のフロー制御プロトコルを使用する。依然としてフロー制御プロトコルは、明らかに、1つのイニシエータからのトランザクションが、一度に1つの集合ターゲット内の複数のチャネルに対して、及び従って一度に集合ターゲット内の複数の個々のターゲットに対して未処理であることを可能にするものである。これらの個々のターゲットでの進行速度は異なる場合があるので、応答は、要求がイニシエータ・コアよって出された方法に関して順序がバラバラになってイニシエータ・コアに送られる可能性がある。簡単な応答フロー制御プロトコルを用いて、これらの要求に対する応答が、要求がイニシエータ・コアよって出された方法に対して予想順序でイニシエータ・コアに送られることを保証することができる。要求フロー制御論理と簡単な応答フロー制御プロトコルの組合せにより、インターコネクト装置は、同時に同じスレッドからの集合ターゲットの複数のチャネルに向かう同時の要求を管理することができる。
各スレッド分割ユニットとスレッド融合ユニットに実施される要求フロー制御論理と簡単な応答フロー制御プロトコルの組合せにより、この制御をインターコネクト装置上に分散させることができる。各スレッド分割ユニット及びスレッド融合ユニット内の実施の分散により、各スレッド分割ユニット及びスレッド融合ユニットは、物理的経路の切り換えが起こることができるまで、局所システム・アドレス・マップに問い合わせてスレッド経路指定及びスレッドバッファリングを判断することができる。それによって要求平均待ち時間の低減が発生する。また、ソフトウエア及び実際にはIPコア自体は、実際の集合ターゲット構造を理解する必要がないので、ソフトウエア透過性である。スレッド分割ユニット及びスレッド融合ユニットは、端末相互間で協働して、インターコネクト装置内に完全なトランザクション並べ替えバッファをインストールする必要がなく順序付けを保証する。
同様に、図15は、多重チャネル集合ターゲット1579を含むイニシエータ・エージェントから複数のターゲット・エージェントまでのインターコネクト装置にわたる経路の実施形態の図を示している。
図8は、イニシエータ・エージェント内のスレッド分割ユニットの例示的な時系列を示している。イニシエータ・エージェントのフロー制御プロトコル論理の使用において、第1の書込バースト要求851及び第2の書込バースト要求853のような所定のスレッドからの複数の書込要求をいずれか所定の時間に未処理のままにするが、そのスレッド内の未処理要求の全てからの別々の物理的経路に沿って宛先アドレスを有する第3の書込バースト要求855のようなそのスレッドからのその後の書込要求を出すことが制限される。全てのイニシエータ・エージェントは、そのスレッド内の他の要求からの別々の物理的経路に沿って経路指定されているその組の要求内の要求に基づいて所定のスレッドからの要求を分割するスレッド分割ユニットを有することができる。バースト要求は、互いに結びつけられて所定のアドレス・シーケンス、所定のパターン、及びいくつかのワード要求を有するトランザクションになる1組のワード要求とすることができる。第1の書込バースト要求851及び第2の書込バースト要求853は、要求内の8ワードとチャネル0の宛先アドレスとを有する。第3のバースト要求855も、要求内に8ワードを有するが、チャネル0から別々の物理的経路の下にあるチャネル1の宛先アドレスを有する。
所定のスレッド内のトランザクションの組を分割したスレッド分割ユニットに関連のフロー制御論理857は、そのスレッド内の第1及び第2(851及び853)のような他の未処理要求からの別々の第1の物理的経路に沿って経路指定されている次の第3のバースト要求を出すが、1)以前の要求がバースト要求であった場合は早くても直前の要求内のワード量の1サイクル後であるか、又は2)早くても、直前の要求がその直前の要求のターゲットアドレスの前の最終スレッド融合ユニットに到着する時間量の総時間とスレッド分割ユニットに肯定応答通知を発信する時間との合計である。フロー論理が、直前の要求が最終スレッド融合ユニットに到着する予測時間量と、スレッド分割ユニットに以前の要求の肯定応答通知を通信する時間/サイクルの量との合計に基づくのみであった場合、第3の要求855は、3サイクル前にを出していた可能性がある。第1のバースト要求851に対する応答も、第2のバースト要求853に対する応答も発生させる必要さえなく、第3の要求855を出す前に開始コアに戻ることも必要がないことに注意されたい。
すなわち、インターコネクト装置は、フロー制御論理を使用して所定のスレッドから複数の書込要求をいずれか所定の時間に未処理のままにするが、その後のスレッドを出すためにそのスレッド内の未処理要求の全てからの別々の物理的経路に沿って宛先アドレスを有するそのスレッドからのその後の要求を出すことを制限するものであるが、1)以前の要求がバースト要求であった場合は早くても直前の要求内のワード量の1サイクル後であり、又は2)早くても、直前の要求がその直前の最終宛先ターゲットアドレスの前の最終スレッド融合点て到着する予測時間量の総時間と、2以上の異なる物理的経路に沿って経路指定されるその所定のスレッド内のトランザクションの組を分割する分割ユニットに以前の要求の安全な到着を示す肯定応答通知を戻す時間量との合計である。
実施形態では、フロー制御論理は、現在の物理的経路から異なる物理的経路を宛先とするその後の書込要求をいつ発行すべきかを決めた時に公式を実施することができる。その公式は、BL+1<>N+Mである。N+Mは、BL+1と比較され、より大きい値が、新しい物理的経路への切り換えが行われる前の遅延時間として選択される。BLは、バースト内のワード数である。Nは、その以前の要求の最終宛先ターゲットアドレス前の最終スレッド融合点に要求が到着するサイクル数である。Mは、その所定のスレッド内の組のトランザクションを分割する分割ユニットに以前の要求の安全な到着を示す肯定応答通知を戻すサイクル数である。
パイプライン経路(最終スレッド融合ユニットまで)の集合深さは、分割ユニットがブランチ間で切り換えることができる最大頻度に影響を与える。例:スレッド分割ユニットと最終スレッド融合ユニットの間のパイプライン点の深さがNであり、逆方向内の肯定応答(ACK)パイプラインの深さがM(N=M)であるとする。次に、リーフ分割器がブランチ(チャネル)間で切り換わることができる最大頻度は、N+Mサイクル毎に一回である。分割器が所定のスレッドに対して新しいチャネルに切り換わる度に上述のパイプラインの両方ともバブルで満たされると保証されていることに注意されたい。同様に、書込要求に対しては、物理的経路の間で切り換えられるWRITEデータバースト内のワード数のサイズは、肯定応答ループの待ち時間をよりも大きく、次に、待ち時間は隠される。
図9は、第1の書込バースト要求951及び第2の書込バースト要求953のような所定のスレッドからの複数の書込要求をいずれか所定の時間に未処理のままにするが、そのスレッド内の未処理要求の全てからの別々の物理的経路に沿って宛先アドレスを有するそのスレッドからのその後の読取要求953の発行を制限するイニシエータ・エージェントのフロー制御プロトコル論理の使用におけるスレッド分割ユニットの時系列を示している。第1の読取バースト要求951は、予想応答において8ワード及びチャネル0の宛先アドレスを有する。第2の読取バースト要求953も、予想応答において8ワードを有するが、チャネル0から別々の物理的経路の下にあるチャネル1の宛先アドレスを有する。その所定のスレッド内のトランザクションの組を分割するスレッド分割ユニットに関連のフロー制御論理957は、その後の第2のスレッドを出すが、1)以前の要求がバースト要求であった場合は早くても直前の要求内のワード量の1サイクル後であり、2)早くても、直前の要求がその直前の最終宛先ターゲットアドレスの前の最終スレッド融合点て到着する予測時間量の総時間と2以上の異なる物理的経路に沿って経路指定されるその所定のスレッド内のトランザクションの組を分割する分割ユニットに以前の要求の安全な到着を示す肯定応答通知を戻す時間量との合計である。従って、第1の読取バースト要求内のACKループの待ち時間は、N=3、M=2であり、ワードのChannelBurstLeng=8であり、BL+1>N+Mにする。分割ユニットは、ACKループチャネルの待ち時間による影響を受けることなく、第1及び第2の読取バースト要求を分割する。応答は、早い時期に到着する恐れがあり、次に、順序付けられるのを待たなければならない。それらは、その代わりに、要求経路内の関連のスレッドに逆圧を掛けることになる。
READ要求は、要求経路上で単一のサイクルが必要であるが、同じスレッド上のREAD要求は、連続サイクルにおいては複数のチャネル間に分割することができない。しかし、応答経路は、イニシエータが分割済み応答を組み立てなければならないのでREAD要求の効率を判断する。従って、READ要求に対しては、応答経路上で縫い合わせるべきであるチャネル応答のサイズがACKループの待ち時間を超える場合、後者は隠される。
図10b及び10cは、2DのWRITEバースト及び2DのREADバーストのようなターゲット要求トラフィックを分割するフロー制御論理の実施形態の付加的な例示的な時系列を示している。図7aを参照すると、実施形態では、肯定応答機構は、最終の2つのリンクがスレッドを融合させるチャネル融合点から検証情報を発生させる。この情報は、異なるリンクからチャネル要求がシリアル化されたことを検証するものである。肯定応答情報は、要求ネットワークで全てのチャネルスレッド分割ユニットに戻される。チャネル分割器及び最終シリアル化点が同じサイクル境界に存在する場合(すなわち、レジスタが間にない)、明示的肯定応答信号が不要であり、チャネル分割器とチャネル融合器の間のリンク上の転送の受諾を利用して肯定応答を示すことができる。
実施形態では、融合ユニットは、ack_reqセットを有する成功した要求に対して着信ブランチ/スレッドを格納するように構造的に構成される。ack_req_return信号が高と設定された時、転換待ち行列が「ポップ表示」され、かつ対応するack_req_return信号が正しいブランチ/スレッド上で高で駆動される。シリアル化融合器(このスレッドに対する)−スレッド融合がここで起こる。融合ユニットは、現在の要求を送ったブランチ/スレッド上のack_req_return信号で着信ack_req信号を反映させるように構造的に構成される。
イニシエータ・エージェントは、m_ack_req信号を発生させる。信号は、デフォルトで低で駆動される。m_ack_req信号は、多重チャネル・ターゲットに向かうイニシエータ・エージェントを出るあらゆる分割済みバーストの第1の転送で高で駆動される。チャネル分割は、内蔵型レジスタ点において又はパイプライン点においてスレッド分割ユニットで起こり、要求経路において必要とされる。分割ユニット内には、肯定応答制御ユニット(ACU)が追加される。ACUは、出発する分割ユニットブランチ及び/又はスレッドが以前の転送から変わって未処理肯定応答信号がある場合は、スレッドの要求が進むのを防止する。RSでの各(入力)スレッドに対しては、ACUは高々1つである。
m_ack_req信号は、要求転送と共に帯域内を進む。何らかの時点で、m_ack_reqを有する要求転送がシリアル化融合ユニットに到達し、これは、接続部が同じ融合ユニット(出発)スレッド上の別の接続部と融合する最終点である。転送が融合ユニットでアービトレーションを勝ち取った場合、融合ユニットは、m_ack_req信号を抽出してs_ack_req_return信号を通じて同じ要求DLリンク経路上の上流側に戻す。s_ack_req_return信号は、要求DLリンク上で上流側に伝播される。これらの信号では、逆圧が発生したり、又はフロー制御が行われたりしない。「PP RS」がある場合はいつでも、s_ack_req_return信号が登録される。s_ack_req_return信号は、経路に沿って各チャネル分割器ACUに使用される。ACUは、未処理肯定応答のカウントを維持する。s_ack_req_returnが1に設定された時、ACUは、未処理肯定応答のカウントを減分させる。s_ack_req_returnは、要求ネットワーク内の第1のチャネル分割点に伝播される。図7aに示す例に対しては、この第1のチャネル分割点は、イニシエータ・エージェント構成要素に至るちょうど下流側で内蔵型レジスタ点RSにある。しかし、要求肯定応答ネットワーク内の第1のチャネル分割点は、「PP RS」構成要素にあるとすることができる。
チャネル分割を行うRSに至る経路が、崩壊したスレッドである場合、DLリンクは、肯定応答機構の目的で単一スレッドとして扱われる。
実施形態では、いずれかのスレッド融合ユニットからいずれかのチャネルに至る単一の経路があるはずである。また、いずれかのイニシエータからいずれかのチャネルまで、分割ユニット及び恐らくは融合ユニットから成る単一の経路があるべきである。すなわち、ネットワーク内の2点間に複数の経路があると考えられる場合とは対照的である。いずれの2つの構成要素間にもバッファ/レジスタ点があると考えられる。肯定応答信号は、点から点の方式で上流側に渡される。肯定応答が通信される構成要素の形式に基づいて、若干異なる形式の肯定応答プロトコルがある可能性がある。
ACK手法を用いると、異なるイニシエータ・スレッドは、同時に異なるチャネル/ブランチと話し中であることができるが、チャネル/ブランチを切り換えることができる頻度は制御される。しかし、チャネル/バーストのサイズがACKループの待ち時間より大きい場合、ACK機構は、性能を損うことにはならない。
実施形態では、肯定応答機構は、チャネルに至るあらゆる経路上では最終融合ユニットより上方では必要でない。その点より先には、応答転換待ち行列をスレッド分割ユニットにおいて使用することができるが、肯定応答関連の状態/ワイヤは不要である。肯定応答機構は、イニシエータ・スレッドが専用ターゲット・スレッドを有する時はいつでも不要である。肯定応答機構は、ターゲット・スレッドを共有するイニシエータ間では、デッドロックを防止する。肯定応答信号は、「リーフ分割器」からその「リーフ融合器」までの経路のいずれにもバッファリングがない時は、黙示的に受諾される。
このアーキテクチャは、IAにおいて又は複数のチャネル・ターゲット・エージェントに至る経路に沿ってできるだけ早い時期に、意図的に多重チャネル経路を分割する。この手法は、帯域幅閉塞点、経路指定混雑点、及び達成可能な周波数の低下、及びスイッチング電力消費量の増大になる伝播経路長の延長化の原因になる可能な集中点を作り出すことを回避するものである。
実施形態では、各スレッド分割ユニットは、リンクが所定のスレッドIDの肯定応答を送っていることを示す設定時に入力ビットベクトルを受信するブランチ当たりのレジスタを有する肯定応答機構を有することができる。肯定応答機構は、スレッド毎にack_counter、current_branch_id、及びブランチ当たりロック済みフラグを有することができる。ack_counterは、肯定応答信号を待っているスレッドよって送られた要求の数を数える。current_branch_idは、肯定応答信号を待っている全ての未処理要求の送り先である物理的リンクを示している。ロック済みフラグは、所定のスレッドIDがこの物理的リンクに対するロックを保持するか(例えば、その物理的リンク上にオープントランザクションを有するか)を示している。フラグは、バーストの要求の第1のワードで設定され、バーストの要求の最終ワードでリセットされる。
分割ユニットは、そのスレッドIDに対するack_counter==0、又はcurrent_branch_id[TRD]==その物理的リンクである時に限り、物理的リンクに所定のスレッドIDで要求を送信することができる。また、スレッド分割ユニットが新しい要求を送信するためにそのスレッドIDに対して物理的リンクに切り換わる場合、スレッドIDに対して物理的リンク上にオープンバーストはないものとする(例えば、ロック済み[TRD][BR]は、偽でなければならない)。スレッド分割ユニットが(上述の条件で)物理的リンクにスレッドIDで要求を送信する時、分割ユニットは、ackカウンタを増加して、current_branch_id_flag=その物理的ブランチを設定する。スレッド分割ユニットがそのthread=1に対して肯定応答信号を受信するサイクル毎に、スレッド分割ユニットは、ack_counterを1だけ低減する。このカウンタが0に達した状態で、分割ユニットは、そのスレッドIDに対して異なるブランチに送信用要求を切り換えることができる。設定された状態で、ロック済みフラグは、スレッドIDに物理的リンク上のオープンバーストがなくなるまで設定されたままであり、かつそのスレッドIDに対するack_counter==0である。次に、異なる物理的経路への切り換えが行われる場合がある。スレッドIDが複数の物理的経路に対するロックを同時に保持するための2DのWRITEバースト又は2Dの「MRMD Read」バーストの場合、例えば、ロック済みフラグ経路0=ロック済みフラグ経路1=真である。
肯定応答機構は、あらゆる情報を肯定応答信号に加える/から差し引くことなく、受信する肯定応答信号を単に上流に中継するレジスタ点を有することができる。「リーフ・スレッド分割器」ユニットの出力と「リーフ融合器」ユニットの入力の間にバッファリング(又はレジスタ点)がない場合、肯定応答信号は、要求が受諾された時に黙示的に通信される。
換言すれば、「リーフ・スレッド分割器」ユニットは、1つの「リーフ融合器」ユニットに要求を送信すると直ちに別の「リーフ・スレッド融合器」ユニットに送信を切り換えることができる。しかし、デッドロックは、依然として回避すべきである。数値の高いアドレスを有するチャネルから数値の低いアドレスを有するチャネルへのチャネル交差を伴った2Dバーストは、異なる分割の方法をしなければならず、その場合、その機能は、イニシエータ・エージェント内で実施することができる。
2つの構成要素の間の距離が長い場合、それは、パイプライン化すべきである。それによって肯定応答経路も実質的にパイプライン化される。サイクル毎に、スレッドID当たりの0/1(又は、スレッドID当たりの≧0ACKカウント)が下部でこのACKパイプラインに入り、1つが上部でこのACKパイプラインを出る。このパイプライン内の0(又は、カウント=0)は、バブルに相当するものである。
図10aは、2DのWRITEバースト要求を分割するフロー論理の実施形態の例示的な時系列を示している。この例においては、2DのWRITEバースト要求のワード数は、4、N=3、M=2であり、ChannellnterleaveSize=4<N+Mである。WRITEバースト要求1081は、時間と共に示されている。図10bは、2DのWRITEバースト要求1083を分割するフロー論理の実施形態の例示的な時系列も示している。図10cは、2DのREADバースト1085を分割するフロー論理の実施形態の例示的な時系列を示している。他の以前の機能に関連のこのフロー制御論理は、トランザクションの高い収量/深いパイプライン化を可能にするものである。図10aに示すように、複数のトランザクションが出され、かつ並列に供されており、それによって同じ期間内で供されるよりも多くのトランザクションを有するように開始することができる各イニシエータの効率が増大する。また、図10aのバブルで分るように、システム内の休止期間が極めて少ないのでメモリの利用度が増大している。初期の書込バースト内で示めされる最初の4つのバブルが出されている。次に、2つの休止のバブルが発生する。しかし、次に、次の書込バーストの次の4つのバブルが出されて、システムにより供されている。イニシエータ及びメモリは、同時に複数のトランザクションに作用している。ACKループの待ち時間は、イニシエータの有効データ帯域幅を限定することができる。イニシエータは、第1の行(ロウ)の応答を順序付けるために第1の行(ロウ)の応答を待たなければならない。次の行(ロウ)を待つ必要はない。チャネル応答は、イニシエータがチャネル応答を消費するのに利用可能な時期が早期の場合がある。それによってチャネルでこのスレッドに対して逆圧が発生し、チャネルに強制的に2Dバーストを送る他のスレッドイニシエータに供させることによって、イニシエータが2Dバーストの持続時間にわたって複数のチャネル上でスレッドを占有することができる方法に対する専用スレッドを有することができる。2DのWRITEバーストに対しては、チャネル切り換えのために、分割済みWRITEバーストは、元の2Dバーストが閉じられるまで開いたままであることに注意されたい。すなわち、分割ユニットが特定のブランチへ切り換わる前に全ての他のブランチを掃引している間に、ブランチのそのスレッドの全てのリソースは休止のままである(恐らく、マイナスNサイクル)。同様の状況が、応答経路上で2DのREAD要求に対して存在する。
図7bは、スレッド分割ユニットでの肯定応答機構の実施形態の概略図を示している。肯定応答機構787は、論理ゲート及び肯定応答制御ユニットカウンタを含む。多重チャネル・ターゲットと通信するあらゆるイニシエータ・エージェントは、2つの機構、すなわち、肯定応答機構787及び応答経路間転換待ち行列と共に、要求経路内のスレッド分割又は融合ユニット内の内蔵型レジスタ点を有することができる。
肯定応答機構787は、入力スレッド当たりのものである。スレッドは、カウントを維持することができる。カウントは、肯定応答信号(m_ack_reqアサート)がdlin入力部で受信された時に増分され、肯定応答信号(s_ack_req_returnアサート)がdloutブランチに着信した時に減分される。分割ユニットは、最終転送の現在のブランチ及びスレッドを追跡し、カウントがゼロになるまでスレッドが新しいブランチ及び/又はスレッドに切り換わるのを防止する。
要求経路から応答経路の転換待ち行列。チャネル分割ユニットを出る転送が肯定応答信号m_ack_reqセットを有する時はいつでも、対応する応答経路融合ユニット内にあるどのブランチ及びスレッドで要求が戻るのかに関する情報が待ち行列に押し込まれる。この導出アルゴリズムは、データ構造をスレッド分割ユニット構成コードに渡してどの要求経路分割ユニット出発ブランチ及びスレッドがどの応答経路融合着信ブランチ及びスレッドに対応するかを判断する。
肯定応答制御ユニット(ACU)は、スレッド分割ユニットでの入力スレッドに対して肯定応答機構を管理するようにインスタンス化されることになる。ACUは、カウンタを保持する。カウンタは、対応するスレッドバッファが1に設定されたm_ack_reqセットを有する要求を送り出した時はいつでも増分される。m_ack_req信号は、たとえdloutリンク上で必要ではなくてもRSバッファ内に格納される。ACUカウンタは、s_ack_req_return入力が1に設定された時に減分される。s_ack_req_return信号は、以下で説明するように、dloutリンクから来るか又は内部的に発生される場合がある。ACUは、要求の宛先ブランチ及び/又はスレッドが以前のものと異なり、かつACUカウンタはゼロではない場合は、スレッドバッファが更に別の要求を送信するのを防止する。
s_ack_req_return信号(減分に使用)は、各ACUでone−hotである。s_ack_req_return信号が発生される3つの例示的な方法がある。図7bは、これらを示している。例におけるスレッド分割ユニットは、2つの着信イニシエータ・スレッドを有する。
ケース1: 発信ブランチは、ターゲット・スレッドを担持する(すなわち、イニシエータ・スレッドとターゲット・スレッド間でのマッピングがこのスレッド分割ユニットモジュールで行われる)。この場合、各ターゲット・スレッドには、固有の転換待ち行列が必要である。m_ack_req信号が対応するスレッドに対してdloutで1に設定された時はいつでも、転換待ち行列は、肯定応答信号がどのスレッド(着信)に属するかを格納する。s_ack_req_return信号がdloutで高に設定された時、転換待ち行列がポップ表示されて、正しいACUにs_ack_req_return信号を経路指定する。
ケース2: 発信ブランチは、イニシエータ・スレッドを担持し(すなわち、動的スレッドマッピングなし)、シリアル化スレッド融合ユニットは、同じサイクル境界内にある。この場合、発信要求がm_ack_reqセットを有し(RSバッファから、信号はdlout上ではない)、要求が確実に送信された場合、s_ack_req_returnが発生されて、そのイニシエータ・スレッドの対応するACUに送られる。従って、シリアル化融合ユニットは、accept信号をack_returnとして使用することができるように同じサイクル境界の中である。
ケース3: この場合、発信ブランチは、イニシエータ・スレッドを担持し、シリアル化スレッド融合器は、別のサイクル境界内にある。換言すれば、このRSブランチとシリアル化融合器の間にはPPがある。この場合、s_ack_req_return信号は、イニシエータ・スレッドの一部又は全てに対して存在する。この信号がない場合、そのスレッドに対してはACUはない。s_ack_req_return[スレッド]信号ビットは、ACUに直接に送る必要がある。従って、シリアル化融合器は、別のサイクル境界内にあるので、ack_return_<スレッド>信号が存在し、かつ直接に使用することができる。
一部のスレッド分割器のスレッドは、対応するACU又は対応するs_ack_req_return信号なしで発信イニシエータ・スレッド上にm_ack−req信号を有することができる。この場合、イニシエータ・スレッドは、チャネル分割を行わないが、何らかの下流側スレッド分割ユニットが、チャネル分割を提供する。
RSのdlinリンクが、s_ack_req_returnを有する場合、その値を結び止めたdlinスレッドを除いて、dloutリンクのs_ack_req_return値を上流側に渡す必要がある。
ブロック・バーストがスレッド分割器でチャネルにわたって分割されている場合、バーストは、1つのアトミック・シーケンスとしてスレッド分割器に入り、2以上の別々のアトミック・シーケンスとして出る。スレッド分割器には、これを処理する特別な論理が必要である。各チャネル分割ユニットは、固有のチャネル分割ユニットIDをあらゆるアトミック・シーケンスである第1の転送部分の着信p_split_infoと比較する。値が適合した場合、スレッド分割器は、1に設定されたburstlastを有するバースト内のあらゆる転送に対してm_lockarbをアサート解除すべきである。
スレッド分割ユニットdlin_blck_atomic_split(着信スレッド)パラメータは、この機能をサポートする必要がある各着信スレッドに対して1に設定される。論理は、発信ブランチ/スレッドがアトミック・シーケンス内で変化するかを検出する必要がある。変化する場合、burstlastが0に設定された時はいつでも、m_lockarbを発信リンク上で強制的に0にすべきである。
応答経路順序の維持
図11は、2つのスレッド分割ユニット及び2つのスレッド融合ユニットを通過する2つのターゲット・エージェントから2つのイニシエータ・エージェントまでの応答経路の実施形態のブロック図を示している。2つのターゲット・エージェント1120、1122の各々は、第1のターゲット・エージェント1120の第1のスレッド分割ユニット1141及び第2のターゲット・エージェント1122の第2のスレッド分割ユニット1141のような1つ又はそれよりも多くの関連のスレッド分割ユニットを有することができる。2つのターゲット・エージェント1120、1122の各々は、第1のターゲット・エージェント1120の第1のスレッド融合ユニット1145及び第2のターゲット・エージェント1122の第2のスレッド融合ユニット1147のような1つ又はそれよりも多くの関連のスレッド融合ユニットを有することができる。ターゲット・エージェント又はメモリ・スケジューラは、並べ替えバッファを使用するのではなく、フロー制御プロトコルを実施して、対応する要求が送信された順序で同じスレッド内の応答を戻す融合ユニット1145、1147と協働する第1の応答フローバッファ1149のようなFIFO応答フローバッファを有することができる。
ターゲット・エージェント及び融合ユニット内のフロー論理は、先入れ先出し方式の固有の順序付けを使用して応答をその同じスレッド内の他の応答と比較し、その同じスレッドからの全ての以前の応答がそのスレッドを出すイニシエータIPコアに向う応答経路内のスレッド融合ユニットに向けて送信されるまで次の応答がターゲット・エージェントから発せられないことを検証する。FIFO応答フローバッファは、スレッド当たりを条件として満たされる。代替的に、応答バッファの転換状態は、集合ターゲットを構成する他のチャネル、又は更に応答フロー順序プロトコルを実施するチップ上の他のターゲットだけに分散させることができる。
ターゲット/チャネルに最も近い融合ユニットは、どの物理的ブランチ経路が次の応答を送出すべきかに関して判断することができ、かつ適正なブランチからターゲットにthreadbusyを経路指定する。ターゲット・エージェントに最も近い融合ユニット、又はスレッドを発生させるイニシエータIPコアに最も近い融合ユニットは、そのスレッドに関する順序正しい次の要求を送るように予想された物理的経路からの応答を除き、そのスレッド融合ユニットに接続した全ての物理的経路からこのフロー制御プロトコルをアサートしてこの所定のスレッドからの全ての応答に逆圧を掛けることができる。例えば、第1のスレッド融合ユニットは、応答が第1のターゲット・エージェント1120及び第2のターゲット・エージェント1122からいつ来るかを制御する。融合ユニット保持に関連の論理、カウンタ、及びテーブルは、リンクなどの物理的経路がそのスレッドの順番で次の応答を供給すべきであるかを追跡すると共に、そのスレッドの順番で次の応答がアクティブな/現在の物理的経路上で受信されるまで全ての他の物理的ブランチから来るそのスレッドからの応答を停止する。
フロー制御論理は、要求待ち行列の維持された順序履歴からどの物理的経路要求がどこに経路指定されているかをそれらの要求に対応する応答の予想実行順序の順序付けされた履歴を参照することによって所定のスレッド内からの応答の予想実行順序を維持すると共に、そのスレッドに対して応答を融合ユニットに送る次の予想された順序正しい応答の物理的ブランチからのターゲット・エージェントのみを可能にし、他の物理的ブランチからのそのスレッドからの応答を阻止する。融合ユニット内のフロー論理は出された要求に関する局所的順序、及び従ってそれらの別々の物理的経路に沿って送られる予想応答順序を確立する。
各融合ユニット1145、1147は、スレッド当たりを条件として、維持された応答に対するスレッドバッファを有する。スレッド深さは、最深予想バースト長にバースト要求に対する応答の全てを発生させる際の予想最大パイプライン遅延を加えたものとすることができる。フロー制御論理は、スレッド当たりを条件として、応答フロー制御をアサートする。フロー制御論理は、待機中には他のスレッドからの応答を阻止しないことに注意されたい。フロー制御論理は、単に、互いに対して所定のスレッドの中の順序正しくない応答を阻止するだけであり、あらゆる他のスレッドからの応答に対して非閉塞である。所定のスレッドに関する応答は、いずれか所定の時間に単一の物理的ブランチからその融合ユニットに来ることができる。2D要求の応答に対しては、応答は、ターゲットの間を出入りすることができる。フロー論理は、対応する要求を生成したイニシエータ・コアに戻される応答の実行順序を保証すると共に、他のスレッドマルチスレッド化フロー制御から応答に対して非閉塞である。ターゲット・エージェントの近くのフロー制御機構を使用して同じスレッド内の応答を含むトランザクション順序付けを管理することにより、この解決法は、パイプライン化されたシステム対単一チャネル手法のバッファリング要件を増大させることなく、要求がチップ上の異なる物理的経路に経路指定されるトランザクションに対する予想された順序正しい応答順序から得られるようにする。
すなわち、フロー制御論理及び関連の回路は、1)どの物理的経路要求がどこに経路指定されているかの順序付けされた履歴を参照することにより、2)それらの要求に対応する応答の予想実行順序により、及び3)ターゲット・エージェントが次の予想した順序正しい要求が来る物理的経路からのみその所定のスレッドに関する応答をスレッド融合ユニットに送り、かつ他の物理的経路から来るそのスレッドからの応答を阻止することを可能にすることにより、所定のスレッド内からの応答の予想実行順序を維持する。
実施形態では、インターコネクト装置は内部機構を実施して、各スレッドに対して要求順序を管理し、かつ応答ネットワーク内の内部フロー制御を用いて順序付け制限事項を実施する。内部のフロー制御を用いて応答順序を制御するので、多重チャネル構成ターゲットのターゲット・エージェント内でのスレッド崩壊は、潜在的なデッドロックを顕在化させることになるために禁止される。デッドロックとは、スレッドが互いに融合されて分割される時であり、次に、スレッドの初期要求は、その同じスレッドのその後の要求の後でパイプライン化することができる。システムは、初期要求が供されるのを待って休止/デッドロックするが、これは、パイプラインがその同じスレッドのその後の要求の後になるので発生することができないものである。
多重チャネル構成ターゲットのターゲットソケット/エージェントは、対応する融合ユニットと協働する応答フロー制御論理を有するか、又は関連のターゲット・エージェントは、応答バッファを有することができる。インターコネクト装置は、非閉塞(すなわち、OCPのmthreadbusy_exact)応答フロー制御に関して多重チャネル・ターゲットに対して最適化することができる。ターゲットソケットが阻止式フロー制御を用いるか又はフロー制御を用いない場合、ターゲット・エージェントは、応答経路が阻止されないように、そのスレッドに対して利用可能な応答バッファと各スレッド上の要求を連動させる。それによってたとえターゲットコア内の要求バッファリングを最小にすることができるとしても、インターコネクト装置に対して直接ゲートカウントと性能のトレードオフが発生する。
内部インターコネクト装置機構は、デッドロック回避を保証するために要求連動を実施する。それによって要求が厳密に順序正しく多重チャネル・ターゲット・スレッドに送出されることを保証する。一般的に、これらのインタロック遅延は、見えないことになる。インタロック機構の遅延は、同時にここで全ての基準を満たすバーストに対して単に性能に影響を与えるだけのはずである。その基準とは、バーストは、前のバーストと同じイニシエータ・スレッド上にあり、バーストは、前のバーストと異なるチャネル寄りにあり、バーストは、インターコネクト装置の深さと比較すると短く(インターコネクト装置クロックサイクルで測定)、かつバーストには、ターゲットへ向かう途中で殆ど競合は発生しないということである。
応答ネットワークフロー制御を用いてスレッド順序付けを保証するインターコネクト装置の機構が性能に影響を与えるのは、フロー制御ループの待ち時間がターゲット間での応答ストリームの切り換えを遅くすることができるという範囲に限られる。ターゲット・エージェント内に又はターゲットコア内に応答の順序を維持するのを補助するために弾力バッファを設置することによって、ゲートカウント経費が最小にされる。内部機構は、応答ソース間の切り換え遅延を最小にしてターゲット応答帯域幅を限定しないように設計されている。100%を多少下回るように単一のスレッドに関するイニシエータ応答帯域幅のみを限定することができる。しかし、複数のイニシエータが一般的に単一のターゲットを共有する場合、イニシエータ帯域幅要求が100%よりも小さいことは既に真である。
実施形態では、インターコネクト装置は、応答ネットワーク内でインターコネクト装置の内部にあるフロー制御プロトコルを実施し、応答をトリガしている要求が送信された順に対応するように、いつ同じスレッドの中で応答を戻すべきかという順序付け制限事項を実施し、フロー制御プロトコルは、別のスレッドからの要求に対して非閉塞である。
ターゲットIPコア、並びにインターコネクト装置にインタフェースで接続するエージェントは、応答を格納するために応答フローバッファを有することができる。これらの応答フローバッファは、メモリコントローラ内にあるとすることができる。応答フローバッファは、フロー制御機構を実施する1つ又はそれよりも多くのスレッド融合ユニットと協働して、対応する要求がそのスレッド融合ユニットから送信された順序で同じスレッド内の応答を戻す。応答フローバッファは、スレッド当たりを条件として満たすことができる。
フロー制御機構は、そのスレッドの順番による次の応答を供給して、そのスレッドの順番による次の応答がそのスレッドの順番による次の応答を予想している第1のスレッド融合ユニットにより受信されるまでそのスレッドからの他の応答を停止する。
1つ又はそれよりも多くのスレッド融合ユニットは、インターコネクト装置内のどの物理的リンクがそのスレッドの順番による次の応答を供給すべきであるかを追跡すると共に、そのスレッドの順番による次の応答が現在の物理的リンク上で受信されるまで全ての他の物理的リンクから来るそのスレッドからの応答を停止する。ターゲット・エージェントに最も近いスレッド融合ユニットは、フロー制御プロトコルをアサートし、そのスレッド融合ユニットに接続した全ての物理的経路からの特定のスレッドからの全ての応答に対して、そのスレッドの順番による次の要求を送るように予想された物理的経路からの応答を除いて逆圧を掛ける。
また、ターゲットIPコアに最も近いスレッド融合ユニットは、物理的ブランチ経路が次の応答を送出すべきかに関して判断することができ、第1のターゲットIPコアに戻る現在の物理的経路を除き、物理的経路の全部でthreadbusyを経路指定する。
フロー制御機構は、先入れ先出し方式(FIFO)の固有の順序付けを用いてその同じスレッド内の他の要求と要求を比較し、その同じスレッドからの全ての以前の応答がそのスレッドを出すイニシエータIPコアに向う応答経路内のスレッド融合ユニットに向けて送信されるまで次の応答がターゲット・エージェントから発せられていないことを検証する。出された要求に対するフロー制御機構内の局所的順序が確立され、次に、相関付けられて、それらの別々の物理的リンクに沿って送られた予想応答順序で通信される。予想情報応答順序付け情報は、予想応答順序を相関付けるために要求側スレッド分割ユニットと応答側スレッド融合ユニット間で受け渡される。
フロー制御論理は、スレッド当たりを条件として応答フロー制御をアサートし、フロー制御機構は、所定のスレッドの中の順序正しくない応答に対して阻止され、あらゆる他のスレッドからの応答に対して非閉塞である。フロー制御論理及び関連の回路は、1)どの物理的経路要求がどこに経路指定されているかの順序付けされた履歴を参照することにより、2)それらの要求に対応する応答の予想実行順序により、かつ3)ターゲット・エージェントがここで次の予想される順序正しい応答が来る予定である物理的経路からのみその所定のスレッドに関する応答をスレッド融合ユニットに送り、かつ他の物理的経路から来るそのスレッドからの応答を阻止することを可能にすることにより、所定のスレッド内からの応答の予想実行順序を維持する。
メモリコントローラ内のバッファと組み合わせたスレッド分割ユニット及び融合ユニットにより、専用並べ替えバッファが不要になると共に、複数のトランザクションが単に連続的にではなく並列に供されるように非閉塞フロー制御が可能である。
図12は、戻り順序応答を保証するための多重チャネル集合ターゲットにおける応答バッファ使用量の実施形態を示している。ターゲット・エージェントの応答バッファは、複数のチャネルにわたって戻り順序応答を保証するために、更に多重チャネル集合ターゲットでの応答待ち時間の変動に対処するためにも使用される。書込要求は、イニシエータにより帯域幅が限定される。従って、バッファリングの必要性/恩典が殆どない。バッファリングの興味深いケースは、応答経路の読取性能である。
図12は、集合ターゲット内のチャネル境界に及ぶイニシエータバーストの簡単な場合を示している。交差により導入される何らかのChop_delayが存在する。インターコネクト装置は、イニシエータ・エージェント内の分断論理を実施する。イニシエータ・エージェントは、サイクル当たりに1つの要求を出すので、最良の場合はChop_delay=1である。しかし、イニシエータ・エージェントからチャネルまでの経路において構造的な(最小)待ち時間の差異がある場合がある(要求経路内の各パイプライン点又はレジスタ点に対して1サイクル)。更に、インターコネクト装置は、分割点で全体的順序を実施する。それによって第2の分断された要求が数サイクル(0−2)遅れる恐れがあり、この遅れは、Chop_delayに追加されることになる。従って、Chop_delayは、良好な構成に対しては1〜2サイクルの範囲、より厳しい構成に対しては2〜4サイクルの範囲に見るのが適切であると考えられる。
典型的な場合1205では、2つのチャネル、すなわち、チャネル0及びチャネル1での待ち時間はほぼ同じである。この場合、チャネル1応答経路では、一部の場合には、何らかの逆圧(部分的には、Resp_reorder_delayによる)があると思われる。この時間中には、ターゲット自体を遅れさせることを回避するためにターゲット・エージェントのバッファリングが必要である。必要なバッファリング量は、以下の通りである。
i. =(Ch0_rd_latency+Ch0_rd_length) - (Chop_delay+Ch1_rd_latency)
ii. =(Ch0_rd_latency-Ch1_rd_latency) + (Ch0_rd_length-Chop_delay)
換言すれば、十分なバッファリングは、待ち時間の差及び分断遅延にわたる過剰なバースト長に対処するのに必要である。
一部の場合には、チャネル1待ち時間は、チャネル0待ち時間を超えることになる。上の式は、待ち時間の差が増大する時に、初項がマイナスになり必要なバッファリングが少なくなることを示している。何らかの時点で、待ち時間の相違点は第2の項を圧倒するのに十分に大きなものになる可能性があり、従って、バッファリングが不要になる。この時点は、以下の時である。
i. Ch1_rd_latency=Ch0_rd_latency+(Ch0_rd_length-Chop_delay)
1つの待ち時間がこの時点よりも先で増大した場合、イニシエータは、応答流れにバブルを見ることになる。これを「遅延ケース」1207として示している。
一部の場合には、チャネル0待ち時間は、チャネル1待ち時間を超えることになる。この差異は、極端なものになる可能性がある。上の図は、これを「歪みケース」1209として示している。この場合、Ch1_rd_lengthエントリを備えたチャネル1応答バッファは、イニシエータの応答速度を維持するのに十分なものである。しかし、その後のバーストには、完全な応答バッファの結果として逆圧が発生する可能性がある。連続的な読取バーストが逆圧なしに必要とされる場合は、依然として上の式を適用することができる。
イニシエータ・エージェント内での応答並べ替えバッファには殆ど利点がない。インターコネクト装置は、ターゲット・エージェント内の応答平滑化バッファをサポートする。ターゲット・エージェントでスレッド当たりの応答バッファの個数は、インターコネクト装置内でユーザが設定可能である。スレッド当たりのバッファの最大個数は、32とすることができる。多重チャネル・ターゲットの頻繁な利用のための応答バッファは、同様の構成であるが性能低下を備えたSMX設計に関しては、インターコネクト装置における支配的なゲートカウント増加源になる場合がある。
図13は、それらの要求に即してスレッド内の要求順序及び予想応答順序を維持する例示的なインターコネクト装置の内部構造を示している。インターコネクト装置は、3つのイニシエータ・エージェント1331、1333、及び1335、及び3つのターゲット・エージェントを含み、ターゲットagent0(1341)及びターゲットagent1(1339)は、多重チャネル・ターゲット(DRAM)に属するターゲット・エージェントである。この例においては、1つの多重チャネル集合ターゲット1331のみが存在する。
要求ネットワーク上では、イニシエータ・エージェント1331に対して、多重チャネル・ターゲットDRAMに向かう多重チャネル経路は、イニシエータagent0の1331の内蔵型要求側スレッド分割ユニット、Req_rs10に分割される。2つのチャネルがあるので、2つの発信の単一スレッド化(ST)したD1リンク1362、1364の各々は、異なるチャネル・ターゲットに向かう。第3の発信「ST DL」リンク1366は、通常の個々のターゲット・エージェントTA2(1341)に至る通常の経路である。要求側チャネル分割ユニット1368bは、イニシエータ・エージェント1331に組み込まれている。チャネル・ターゲットagent0(1343)に対しては、ターゲットagent0(1343)の上流側にある融合分割ユニット構成要素、tat00_ms0(1368a)は、チャネル融合ユニットとしての役割を果たし、2つの異なるイニシエータ・エージェント、イニシエータagent0(1331)及びイニシエータagent1(1333)から来るチャネルトラフィックを調節する。
応答ネットワーク上では、ターゲットagent1(1339)に対して、内蔵型RS構成要素、Resp_rs01は、応答チャネル分割ユニットとしての役割を果たし、それぞれ、チャネル応答をイニシエータagent0(1331)に、通常の応答を通常のイニシエータagent2(1333)に、及びチャネル応答をイニシエータagent1(1335)に戻す3つの発信リンク1371、1373、1375を有する。応答側チャネル分割ユニットは、青色で色分けされている。イニシエータagent1(1333)に対しては、上流側融合分割ユニット構成要素、Iah11_ms0は、チャネル融合ユニットであり、集合ターゲット1337においてチャネル0(すなわち、ターゲットagent0)及びチャネル1(すなわち、ターゲットagent1)から戻る応答を調節するばかりでなく、通常のターゲットagent2(1341)により戻される応答を処理する。応答側チャネル融合ユニット1381は、ターゲットagent0(1343)、ターゲットagent1(1339)、及びターゲットagent2(1341)から応答を受信する。
応答側チャネル融合ユニットは、チャネル応答を調節する必要があるが、作動の基本である十分な情報を有することができないので、付加的な並べ替え情報をイニシエータ・エージェントの要求側チャネル分割ユニットから融合ユニットに渡すことができる。例えば、DRLリンク1391は、イニシエータagent1(1333)に対して、要求側チャネルスレッド分割ユニット、Req_rs11、及び応答側チャネルスレッド融合ユニット、Iah11_ms0の間で応答並べ替え情報を渡すために使用される。
多重チャネル・ターゲットDRAMに対しては、ターゲット・エージェントTA0(1343)は、チャネル0に割り当てられ、ターゲット・エージェントTA1(1339)は、チャネル1に割り当てられている。多重チャネル・ターゲットDRAMのイニシエータと個々のターゲット間の接続性は、例に示すようにイニシエータ・エージェント(イニシエータに接続)及び特定のターゲット・エージェント(多重チャネル・ターゲットDRAMの個々のターゲットに接続)を指定する接続性ステートメントを通して行われる。
また、2つの多重チャネル・アドレス領域SMS_reg及びUSB_memを開示する。SMS_reg領域の仕様は、以下のように説明することができる。この領域のサイズは、0x1000バイトである。8のchannel_interleave_sizeを有することは、各インタリーブがサイズ0x100(28)であることを意味する。それによって16の非重複メモリ・インタリーブ・セグメント(領域サイズ0x1000/インタリーブサイズ0x100=16)をもたらす。上述のように、各インタリーブは、「チャネルラウンド」の考えでチャネルに割り当てられる。この場合、2つのチャネルがあるので、インタリーブ0、2、4、6、8、10、12、14は、チャネル0(ターゲット・エージェントTA0)に割り当てられ、インタリーブ1、3、5、7、9、11、13、15は、チャネル1(ターゲット・エージェントTA1)に割り当てられる。イニシエータ・エージェントが多重チャネル・ターゲット内の1つの個々のターゲットに接続した場合、このイニシエータ・エージェントは、多重チャネル・ターゲット内の全ての個々のターゲットに接続すべきであることに注意されたい。すなわち、図13に示すように、IA2が同じ時間でTA0にも接続されない限り、IA2とTA1の関係は許容されない。
実施形態では、応答経路順序付けでは、インターコネクト装置は、OCPスレッド順序を維持し、かつ応答経路において応答を並べ替える機構を有する。これは、要求経路チャネル分割器RS構成要素の情報を対応する応答経路チャネル融合器MS構成要素に渡すことによって達成される。情報は、転換待ち行列を通して渡され、それによってFIFO順序が維持される。渡された情報は、次の応答バーストがどの着信ブランチ/スレッドから来るべきかをスレッド融合分割ユニット構成要素に教える。スレッド融合分割ユニット構成要素は、転換待ち行列によって示されたものを除き、同じ発信スレッドにマップされる全てのブランチ/スレッドに逆圧を印加する。バーストが完了した時、転換待ち行列エントリがポップ表示される。この機構により、全ての応答が正しい順に戻ることを保証する。
集合ターゲット内のチャネルに向うチャネル境界と交差する個々のトランザクションの分断
図14は、チャネル・アドレス境界と交差する個々のトランザクションを同じスレッドからの2以上のトランザクション/要求に分断することを直接にサポートする分断論理の実施形態を示しており、それによってトラフィックを発生させるソフトウエア及びハードウエアは、所定のSoCの特定の多重チャネル構成に対する依存度が小さくなる。
インターコネクト装置は、分断論理1584を実施して、第1の集合ターゲット内の第1のメモリ・チャネル1520から第2のメモリ・チャネル1522までのメモリ・チャネル・アドレス境界と交差する個々のトランザクションを同じスレッドからの2以上のバースト要求に分断する。分断論理1584は、検出器1585と協働し、バースト要求1548の要求バイトの最初のワードの開始アドレス及びバースト要求1548の要求バイトの最終ワードの終了アドレスが原因でそのバースト要求1548内の要求バイトがバースト要求1548内のワード要求の全てをもたらすために1つ又はそれよりも多くのチャネル・アドレス境界まで及ぶのはいつかを検出する。分断論理1585は、IPイニシエータ・コアにより出された各バースト要求1548内のスレッド順序付けを追跡して個々のメモリ・チャネル1520及び1522にわたって拡散されているバースト要求1548の分断された各部間で全体的ターゲット順序付けを維持するためのチャネル分断アルゴリズム及び1つ又はそれよりも多くのテーブル1586を含む。システム内の各イニシエータ・エージェントによる分散実施において、又は集中メモリ・スケジューラ1587において、システムは、分断処理を容易にし、並びに元の分断されたトランザクション内の順番を保証するために、検出器1585、分断論理1584、いくつかのバッファ1587、状態機械1588、及びカウンタ1587を有することができる。
分断論理は、集合ターゲット内のチャネル間のトランザクションス分割をサポートする。分断論理1584は、イニシエータバーストが単一の領域内に留まるがチャネル境界に及ぶバーストを分断する。分断論理は、インターコネクト装置と第1のイニシエータ・コアの間のインタフェースでイニシエータ・エージェント内に埋め込むことができる。分断論理は、バースト要求内のワード要求の全てをもたらすために1つ又はそれよりも多くのメモリ・チャネル・アドレス境界に及ぶ最初のバースト要求を各メモリ・チャネルに対して同じ高さ寸法の2以上のバースト要求に分断する。図8に示すように、フロー制御論理1657内の分断アルゴリズムは、図16bに示すように、第1のメモリ・チャネルの隣接行(ロウ)のバースト要求内の一連の要求内で開始する次の要求の開始アドレスと同じ第1のメモリ・チャネル内のチャネルからのオフセットを有するようにバースト要求内の一連の要求を分断する。また、バースト要求が縦方向で別のメモリ・チャネルと交差した場合、分断アルゴリズムは、図16cに示すように、初期要求の開始アドレスが第1のメモリ・チャネルの第2のDRAMページのバースト要求内の一連の要求のシーケンスを開始する次の要求の開始アドレスと同じ第1のメモリ・チャネル内の第1のDRAMページ内のチャネル境界からのオフセットを有するようにバースト要求内のトランザクションからの一連の要求を分断する。
2Dブロック形式のバースト要求を検出する際の検出器1585は、2Dバースト要求の最初のワードが、分断されたトランザクションからのその2Dバースト要求内のその後の要求に役立つメモリ・チャネルよりもアドレス番号が高いメモリ・チャネル内で開始するか否かも検出する。検出器が、メモリ・チャネル境界と交差する2Dブロック・バーストの第1の行(ロウ)の最初のワードが、アドレス番号の低い方のメモリ・チャネルで供されるべきその後の要求よりもアドレス番号が高い方のメモリ・チャネルで開始されることを検出した場合、状態機械は、この第1の行(ロウ)を互いに独立に供することができる複数のバーストに分断する。アドレス番号が高い方のメモリ・チャネルに向かう2Dブロック・バースト要求の第1の行(ロウ)内の最初のワードを収容する要求は、分断論理が第1の行(ロウ)の残りを収容する第2のバーストをアドレス番号が低い方のメモリ・チャネルに経路指定することを可能にする前に、意図したアドレス番号が高い方のメモリ・チャネルの前の最終スレッド融合ユニットで受信されたとして肯定応答されるべきである。
分断論理内の状態機械1588は、メモリ・チャネル・アドレス境界と交差しているバースト要求の形式に基づいてトランザクションを分断する。検出器1585は、バーストの形式を検出する。検出器は、要求を含むバーストに対して、単一のターゲットIPコア内の関連するアドレスに向かうイニシエータ・アイピー(IP)コアからのバースト内の1つ又はそれよりも多くの読取要求を通信する情報を検出する。バースト形式は、ターゲットIPコア内の要求データのアドレス・シーケンスを通信するものである。状態機械1588は、同じスレッドからの2以上のトランザクション/要求への初期チャネル・アドレス境界と交差する個々のトランザクションの実際の分断を行って分断された各部をバッファ1587に入れることができる。次に、検出器1588は、バースト要求内の残りのワードが別のチャネル・アドレス境界と交差するか否かを検査することができる。状態機械は、得られるトランザクションが単一のチャネルのアドレス境界に適合するまでトランザクションを分断する。状態機械1585は、1)バースト要求の形式、2)バースト要求内の一連の要求内の最初のワードの開始アドレス、3)バースト要求内の一連の要求内のワード数を示すバースト長、及び4)チャネル・アドレス境界の交差に関わるワード長をトランザクションの分断に盛り込むことができる。バースト要求のワード長及びワード数は、元のバースト要求内の最終ワードの終了アドレスを計算するのに使用することができる。この設計により、トラフィックを発生させる要素は、要求及び応答の両方のトラフィックがこのようなチャネル・アドレス境界と交差することを可能にすることができる。
実施形態では、分断論理の状態機械1585は、2Dブロック・バーストシーケンスに対するOCPソケットサポートを含むことができる。サポートは、イニシエータ及びターゲットソケットで存在する。包含的に2から6ビットのMBIockHeight幅がサポートされる。包含的に6から21ビットのMBIockStride幅がサポートされる。ブロックイニシエータバーストが1つよりも多いアクティブターゲットを有する多重チャネル・ターゲットにアドレス指定された時、MBIockStride値は、チャネルラウンドサイズの自然数の倍数とすべきであり、それによってブロックトランザクション内の各行(ロウ)が同じチャネル内で、かつインタリーブ内の同じオフセットで開始されることを保証する。それによってチャネル境界と交差するブロック・バーストを各チャネルに対して同じMBIockHeightのブロック・バーストに分断することが可能になる。この要件は、RTLアサートにより検査することができる。
実施形態では、多重チャネル境界でのイニシエータバースト分断に関するイニシエータ・エージェントでの分断論理により、ブロック以外のバーストは、高々1つのチャネル境界と交差し、ブロック・バーストは、ブロック・バーストの各行(ロウ)に対して高々1つのチャネル境界と交差することができる。Burst_aligned増分バースト要求は、完全に単一のチャネルに該当するか、又は2x2channel_iterleave_sizeバイト及び偶数のチャネルの開始境界に整列している開始アドレスを有することができる。2Dブロック・バーストは、多重チャネル・アドレス領域のチャネルラウンドサイズのn倍に等しいMBurstStrideバイト長を有することができ、ここで、nは、領域のチャネルラウンドの個数である。多重チャネル領域でターゲットとしない2Dブロック・バーストに対しては、上述の制約条件は適用されないことに注意されたい。
実施形態では、バースト長は、このバースト内の複数の読取要求が、この同じイニシエータIPコアから来て単一のターゲットIPコア内の関係があるアドレスに向かうということを通信することができる。バースト形式は、要求が、増分式アドレス又は非増分式アドレス、ただし、ブロックトランザクションのような関係があるパターンのアドレスに関することを示すことができる。バーストシーケンスは、些細でない2次元ブロック、ラップ、xor、又は類似のバーストシーケンスに関するものとすることができる。ブロックトランザクションが2次元データに関する場合、要求は、1)2次元オブジェクトが占有する行(ロウ)の長さ(ラスタ線の幅など)で測定する2次元オブジェクトの幅、2)2次元オブジェクトが占有する行(ロウ)数で測定する2次元オブジェクトの高さ、及び3)2次元オブジェクトが占有する2つの連続した行(ロウ)間のアドレス間隔で測定する2次元オブジェクトのストライドを示す注釈を含む。2つの連続した行(ロウ)間のアドレス間隔は、1)ターゲットデータにより占有される2つの連続した行(ロウ)の開始アドレス間の長さの差、2)前の行(ロウ)の終了と次の列の開始と間の差、又は3)同様の間隔とすることができる。単一の2Dブロック・バースト要求は、単一の要求を復号するターゲットにインターコネクト装置にわたる2次元データブロックの属性を十分に説明することができる。
ブロックトランザクションに対して発生される要求は、このバースト内のN個の読取要求が、単一のターゲット、ターゲットデータにより占有される行(ロウ)の長さ、ターゲットデータにより占有される行(ロウ)数、及びターゲットデータにより占有される2つの連続した行(ロウ)の開始アドレス間の長さの差で、関係があるアドレスに向かうことを示す注釈を含むことができる。
分断された部分の2以上がそれらの2Dバースト属性を保持するように集合ターゲット内のチャネルに向かうチャネル境界と交差する個々のトランザクションの分断
図16a〜図16eは、ブロック・バースト要求に関するチャネル・ベースの分断の5つの形式、すなわち、通常のブロック分断、ブロック行(ロウ)分断、ブロック高さ分断、ブロックデッドロック分断、及びブロックデッドロック分断及びその後のブロック高さ分断を示している。状態機械は、以下のようにチャネル・ベースの分断規則を実施するように構成することができる。
未知のパターン形式のバースト要求に対しては、分断論理は、単一のイニシエータバーストを同じシーケンスコードを有する一連の単一のイニシエータワード転送(イニシエータシングルに分断)に分ける。
ストリーミング、増分式アドレス、XOR、及びラップバーストのような検出したバーストの形式に対して、分断は、それらを単一のチャネル内に適合させる。ストリーミングバーストは、定義上、常に単一のチャネル内にある。増分式バースト要求は、一連の増分式アドレスに関し、XORバーストは、非増分式アドレスであるが、チャネル境界と交差する関係があるパターンのアドレスに関する。状態機械は、単一のイニシエータバーストを一連の2以上の別々のバースト要求に分け、各々は、バースト長が集合ターゲットの各個々のチャネル内に適合するように短縮されている(チャネルへの分断)。更に、チャネル境界と交差するあらゆるXORバーストに対しては、得られるチャネルバーストは、2channel_interleave_sizeバイトの2倍に等しいバーストバイト長を有し、第2のburstは、MAddr±2channel_interleave_sizeで開始される。チャネル境界と交差するWRAPバーストに対しては、状態機械は、単一のイニシエータバーストを一連の単一のイニシエータワード転送に分ける(イニシエータシングルへの分断)。通常、interleave_sizeは、その移動が支配的なラップバースト源であるキャッシュ線よりも大きいように選択される。従って、チャネル交差WRAPは、通常発生せず、分断論理は、WRAPバーストがチャネル境界と交差した時にWRAPバーストを2つのINCRバーストに分断する。
ターゲットは、以下のいずれかが適用された場合、イニシエータのブロック・バーストをサポートすることができるといわれる:すなわち、ターゲットOCPが、ブロック・バーストシーケンスをサポートし、ターゲットが、MBurstLength、MBurstHeight、及びMBurstStride上であらゆる必要な幅変換調節後にイニシエータのブロック・バーストを転送するのに十分な幅を有することである。これに対しては、ターゲットのMBurstStride幅は、イニシエータのバーストMBurstStride/num_active_channel(ターゲットの復号された領域の)をサポートするのに十分な大きさでなければならないことに注意されたい。ユーザ制御式の分断がターゲットに使用された場合、chop_lengthパラメータは、イニシエータのブロック・バーストMBurstLengthを転送するに十分な大きさである(いずれの必要な幅変換調節後でも)。
ブロック・バーストをサポートすることができず、ターゲットが、INCRをサポートしないターゲットに送られたあらゆるイニシエータ2次元ブロック・バーストに対して、状態機械は、イニシエータバーストをターゲットがサポートする数字が最も低いバーストシーケンスを用いた一連の単一のイニシエータワード転送に分け、各々は、適切なターゲットに向けられる(イニシエータシングルへの分断)。
ブロック・バーストをサポートすることができないが、ターゲットが、INCRをサポートするターゲットへのあらゆるイニシエータ2次元ブロック・バーストに対して、状態機械は、ブロック行(ロウ)分断を提供する。ブロック行(ロウ)分断により、イニシエータバーストは、ブロック・バーストの各行(ロウ)に対して1つだけ一連のINCRバーストに分けられる。行(ロウ)がチャネル境界と交差した場合、各行(ロウ)は、各チャネルに1つだけ一連の2つのINCRバーストに分けられる。各INCRバーストは、ターゲットがユーザ制御式のバースト分断を有して十分に大きなchop_lengthを持たないか、又はターゲットがより短いOCPのMBurstLengthをサポートする場合には、更により小さいINCRバーストに分断することができる。
ブロックをサポートするが、MBurstLength、MBurstHeight、又はMBurstStride上でイニシエータの要求を転送する長さが不十分であるターゲットへのブロック・バーストに対しては、ブロック行(ロウ)分断が実施される。
ブロックをサポートし、MBurstLength、MBurstHeight、又はMBurstStride上でイニシエータの要求を転送するのに十分な長さを有するターゲットへのブロック・バーストに対しては、分断論理は、要求全体に役立つようにアドレス指定されたターゲットに2D要求を送る。行(ロウ)がチャネル境界と交差し、第2のその後の要求がアドレス番号の低い方のメモリ・チャネルにより供される前にバーストが集合ターゲット内の番号の高い方のメモリ・チャネル内で開始された場合、ブロック行(ロウ)分断が実施される。イニシエータブロック行(ロウ)がチャネル境界と交差してバーストがそのバースト内のその後の要求に役立つメモリ・チャネルよりもアドレス番号が高いメモリ・チャネル以外の何らかのチャネルで開始された場合、ブロック行(ロウ)分断が実施される。通常のブロック分断により、2つのより小さいターゲットブロック・バーストが作成され、各々は、図16aに示すイニシエータにより供給されたMBurstHeight及びMburstStrideを有する。2つの分断されたブロック・バーストの第1のブロック・バーストは、チャネルに適合する新しい幅属性として分断された長さを有し、アドレス指定されたチャネルに送られる。2つの分断されたブロック・バーストの第2のブロック・バーストは、新しい幅属性として残りの行(ロウ)長を使用してアドレス指定されたメモリ・チャネルに1つを加えたものに送られる。
分断論理は、トランザクションの各々のより小さいバースト/部分がそれ独自のチャネルにより供される必要がある要求を有する時、デッドロック状況を防止し、これらの要求は、アドレス番号が低い方のメモリ・チャネルに向かうバースト要求が最初に供され、次に第2の部分内のバースト要求がアドレス番号の高い方のメモリ・チャネルから供されることができるようにすることにより、ピンポン式に各チャネルから供されるべきである。イニシエータブロック行(ロウ)がチャネル境界と交差し、バーストが、そのバースト内のその後の要求に役立つメモリ・チャネルよりもアドレス番号が高いメモリ・チャネル内で開始された場合、ブロックデッドロック分断により、図16dに示すように4つのターゲットバーストが作成される。4つの分断されたバースト(デッドロックブロック分断から生じる)の第1のバーストは、番号が最も高いチャネルのための分断された長さを有する単一の行(ロウ)ブロックである。それは、番号が最も高いチャネルに該当するイニシエータブロック・バーストの第1の行(ロウ)の先導部分に対応する。4つの分断されたバースト(デッドロックブロック分断から生じる)の最終バーストは、第1のチャネル(チャネル0)のための分断された長さを有する単一の行(ロウ)ブロックである。それは、チャネル0に該当するイニシエータブロック・バーストの最終行(ロウ)の尾部に対応する。第1及び最終の単一行(ロウ)ブロック・バーストは、各々が交互にチャネル0、その後に番号が最も高いチャネルch3に該当する一連の行(ロウ)を収容する偶数のブロック・バーストにより分離される。このようなチャネルブロック・バーストの各対は、2の累乗である新しくて可能な限り大きな/手頃なMBurstHeightを有する。4つのターゲットバーストは、イニシエータを供給されたMBurstStrideをnum_active_channelsで割ったものに等しい新しいMBurstStrideを有することができる。第1の分断されたバーストは、アドレス番号が高い方のメモリ・チャネルのための行(ロウ)端部に及ぶ分断された長さを有する単一の行(ロウ)ブロックである。第2の分断されたバーストは、バースト高さと、更に残りの行(ロウ)長がアドレス番号の低い方のメモリ・チャネル内に留まるように短縮されているストライド2D特性ブロックとを有する。第2の分断されたバーストは、第1の行(ロウ)がチャネル境界と交差するアドレスから開始される。第3の分断されたバースト部分は、バースト高さと、更に残りの行(ロウ)長がアドレス番号の高い方のメモリ・チャネル内に留まるように短縮されているストライド2D特性ブロックとを有する。従って、第3の分断されたバースト部分は、イニシエータにより供給されたMBurstHeight−1及び元のMAddrにイニシエータにより供給されたMBurstStrideを加えたもので開始するブロック・バーストを有することができ、分断された長さは、番号が最も高いチャネルに適合するものである。最後から4番目のブロック・バーストは、アドレス番号が低い方のメモリ・チャネルに対する新しい幅属性として残りの行(ロウ)長を有する単一行(ロウ)バーストである。ブロック分断機構により、複数の開始スレッドは、デッドロックの危険性なくチャネル境界と交差する未処理ブロックトランザクションを有することができる。
実施形態では、2Dブロック・バーストの第1の行(ロウ)がチャネル境界と交差して、行(ロウ)に最終(アドレス番号が最も高い)アクティブ・チャネルで開始する場合、この第1の行(ロウ)は、2つのバーストに分断される。例えば、上述の例においては、2行(ロウ)2Dブロック・バースト「Rows_2D0_ch3及び2D1_ch0の初期行(ロウ)」は、分断されると以下の4つのバーストに分割されて、それぞれチャネルTA0及びTA1に送出される。すなわち、
チャネル3により供されるRow_2D0_の単一の1行(ロウ)ブロック・バースト、チャネル0により供される多くの行(ロウ)2D1_から成るより小さい2Dブロック・バースト、チャネル3により供される多くの行(ロウ)2D2_から成るより小さい2Dブロック・バースト、及びチャネル0により供されるRow_2D3_の別の単一の1行(ロウ)ブロック・バーストである。
「Rows_2D0_ch3及び2D1_ch0の最初の行(ロウ)」のためのチャネルMerger0の2Dブロック・バーストロック条件は存在しないので(初期1つのバーストではなく、ここでは2つの異なるバーストに属する)、上述の周期的依存度は砕かれており、従って、デッドロックはない。
第1のイニシエータブロック・バーストを3つのみではなく4つのターゲットバーストに分断することは、ハードウエア実施最適化を可能にすることができる。
通常のブロック分断又はブロックデッドロック分断が、ブロック書込バースト、又は「単一要求多重応答データ(SRMD)」に変換されない(「MRMD読取から「SRMD読取」への変換は、所定のターゲットに対して無効にされる)ブロック「多重要求多重応答データ読取(MRMD)バーストに適用される時はいつでも、イニシエータ・エージェントは、インタリーブされたブロック・バーストという単一のアトミック・シーケンスとして2つの得られるチャネルブロック・バーストを送る。その理由は、上流側分割ユニットが2−チャネルブロック・バーストの選択的行(ロウ)の間で切り換わる、すなわち、全ての行(ロウ)が処理され、次に、両方のブランチ/スレッドのロックを解除するまで、分割ユニットは、その発信ブランチ/スレッドの両方でアービトレーション(m_lockarbを使用する)をロックすべきである間、下流側融合ユニットが他のイニシエータからの他のトラフィック内でインタリービングすることを防止するためのものである。代案においては、分割ユニットのm_lockarbアクションは、以下のものとすることができる:すなわち、(a)イニシエータ・エージェントは、選択的行(ロウ)が第1のチャネル分割ユニットRS(1つのチャネル交差のみ)に到達する前に下流側融合ユニットが他のトラフィック内でインタリーブすることを防止するためにこれらの選択的行(ロウ)間で適切にm_lockarbを設定すべきである。チャネル分割器においては、m_lockarbを第1のブロック・バーストの最終行(ロウ)に対して設定すべきである。
インターコネクト装置においては、2Dブロック・バーストは、可能な時はいつでも単一要求多重応答データバーストとして送られる(すなわち、RdバーストのMRMDからSRMDへの変換は無効ではない)。ブロックチャネルバーストに対するバースト長変換(チャネルバースト分断後)は、INCRバーストと同様に実施される。例えば、広から狭への変換に対しては、バースト長にターゲット幅:イニシエータデータ幅の比を掛ける。狭から広への変換に対しては、イニシエータ・エージェントは、開始及び終了で各行(ロウ)を埋め込みんで、それをターゲットデータ幅に整列させ、得られるイニシエータバースト(行(ロウ))長は、ターゲットバースト長を取得するために分割される。長さ1(分断後)のブロックチャネルバーストは、行(ロウ)当たりに正確なトリミングを受けて過大なヌル要求を回避する。正確なターゲットワード数は、着信バイト有効化を考慮して計算され、次に、p_packwords、p_mburstlength、及びp_maddrは、互いに矛盾なく全て調節される。更に、イニシエータ転送は、ターゲットで非整列のバーストを回避するために、最小burst_alignedパターンに切り取ることができる。
図16cに示すように、ブロック分断論理は、縦方向に開始アドレス及びDRAMページ境界の最終アドレスに適合するように要求高さを分断する。多重チャネル・ターゲットの保護機構が有効にされる場合(1つよりも多い保護領域を有する)、得られるチャネルブロック・バーストは、2の累乗であるMBurstHeightを有する必要がある。この要件は、ブロック・バーストの開始アドレス及び終端アドレスが同じ保護領域に属するか否かを検査する論理を簡素化するためである。
このような状況下では、SSXは、以下で説明するようなブロック高さ分断を使用する。
保護機構の存在下では、そうでなければ通常のブロック分断を有するであろうブロック・バーストは、以下のように扱われる。イニシエータバーストは、同じMBurstLength及びMBurstStrideを有するが各々が2の累乗である可能な限り大きいMBurstHeightを有する一連のブロック・バーストに変換される。この一連の各ブロック・バーストは、次に、通常のブロック分断で2つのチャネルバーストに分断されてアトミック・シーケンスとして送られる。
i.例えば、MAddrから開始し、イニシエータブロック・バーストは、MAddr2でチャネル境界と交差し、かつMBurstHeight=15を有するイニシエータブロック・バーストは、以下の新しい(MAddr、MBurstHeight)タプルを有する一連の8個のブロック・バーストに分断される:
1. (MAddr、8)、(MAddr2、8);
[(MAddr+8*MBurstStride、4)、(MAddr2+8*MBurstStride、4)];
[(MAddr+(8+4)*MBurstStride、2)、(MAddr2+(8+4)*MBurstStride、2)];
[(MAddr+(8+4+2)*MBurstStride、1);
(MAddr2+(8+4+2)*MBurstStride、1)]、
i.アトミック・シーケンスとして送られる対を角括弧に示している。チャネルブロック・バーストの新しいMBurstLengthは、明暸さを期すために示されていない。新しいMBurstStrideは、元のものと同じである。
図16eに示すように、4つの分断の第2及び第3のものへのブロック高さ分断のラウンドは、元のブロックデッドロック分断から生じる。
実施形態では、分断論理が要求を2つに分断した時、第1のチャネルにより供される分断されたワード要求の第1の部分でビット数を割り出して、そのビット数をワードの幅から減算し、次のチャネルにより供される分断されたワード要求の第2の部分の幅を求めることにより、分断論理は、分断されるワード要求の幅を維持する。図3及び分断された要求dを参照されたい。第2のチャネルにより供される分断されたワード要求の第2の部分は、次のチャネルの第1の行(ロウ)の先頭アドレスを有する。また、分断されたバースト要求の各部分は、各部分の一連の要求における初期要求の要求されたバイトのための開始アドレス列(コラム)内の他のワードと同じ相対位置(列(コラム)内でのチャネル境界からの同じ相対オフセット)をチャネル内に有するように分断することができる。図16a及びチャネル0内に整列した部分を参照されたい。
実施形態では、分断から生じる個々のバーストトランザクションは、線形/水平方向で分断されたトランザクションの行(ロウ)当たりに1回よりも多くチャネル境界と交差することができない。2DトランザクションMBIockStrideは、縦方向のチャネル交差を回避して及びDRAMページ境界内に縦方向に適合するようにチャネル間で一貫して全ての行(ロウ)をマッピングすべきである。MBIockStrideは、(#チャネル×インタリーブ境界)の倍数であるべきである。同じ開始スレッドからのトランザクションは、複数のチャネルに対して未処理とすることができる。インターコネクト装置は、グラフィック、画像処理、及び映像MPEG符号化/復号化を含むアプリケーションからのトラフィックに対してイニシエータターゲット2Dトランザクションサポートを内部的に実行する。
イニシエータ・エージェントは、チャネルバーストにイニシエータバーストを分断する。このようなチャネルバーストの対は、インタリーブされたバーストを成すことができる。インタリーブされたバーストは、互いにインタリーブされる2つの異なるチャネルに対して転送を有するものである。通常のブロック分断又はブロックデッドロック分断がイニシエータブロックに行われた時、書込バースト(又はMRMDとしてMRMDから転送されるRdバースト)、すなわち、2つの得られる構成要素ブロック・バーストは、インタリーブされたバーストを成し、得られる構成要素ブロック・バーストの行(ロウ)は、全ての行(ロウ)が転送されるまで、一方のチャネルブロック・バーストからの行(ロウ)1つ、次に他方のチャネルブロック・バーストからの行(ロウ)1つとインタリーブされて転送される。イニシエータ・エージェントは、2つのチャネルに送られる転送に対して異なる経路指定情報(m_curroute/p_route)を添付する。
イニシエータ・エージェントは、アトミック・シーケンスとしてあらゆるインタリーブされたバースト(常に少なくとも2つの構成要素ブロック・バーストで構成)を送る。すなわち、最終転送を除いて、インタリーブされたバースト内で全ての転送に対してm_lockarb信号を1に設定する。これは、他のトラフィック(同じスレッドに対して)が、あらゆる下流側融合ユニットで2つの構成要素ブロック・バーストとでインタリーブされることを防止するためである。しかし、インタリーブされたバーストが2つの異なるブランチ及び/又はスレッド(p_/outeの値に基づいて)に分割される一部の下流側チャネル分割ユニットでは、各構成要素ブロック・バーストは、バーストの終わりでそれ独自のm_lockarb=0を有するものとする。受け取ったインタリーブされたバーストが有していたのは、m_lockarb=0を有するtransfer1つのみであったので、分割ユニットは、第2の転送を生成すべきである。従って、インタリーブされたバーストの分割ユニットは、p_burstlast=1の時、m_lockarb=0を設定する。分割ユニットは、それ独自のchannel_splitteridをp_split_infoと比較して現在のバーストが現在のRSで異なるブランチにわたって分割されたのか否かを判断する。システムは、初期2Dを形成する構成要素の全てが集合ターゲットに関連のスレッド融合ユニットにより完全に供されて一緒に融合されるまで2Dトランザクションに役立つチャネルをリリースすることができない。応答待ち行列は、要求がそれぞれのメモリ・チャネルから戻って来る時に順序正しく応答を回収するために存在するものであり、分断された元のバースト要求からの最終応答が応答キューにより回収された時、応答の全てを元のバースト要求を出したイニシエータIPコアに送り返すことができる。
インタリーブされたバースト要求の各部分は、依然として2以上のワード要求の寄せ集めとすることができ、そうである場合、要求に対して他の部分からの要求に対して異なるチャネルにより供される要求を送るそれらの各部分は、インタリーブされる。従って、2つに分割されてその後2つの異なる物理的経路に沿って送られたバースト要求からの応答は、イニシエータに戻る応答が元の分断されたバースト要求の予想戻り順序で発生されるように、交互のパターンで2つの異なるメモリ・チャネルからスレッド融合ユニットに送り返される。
実施形態では、インタリーブされたブロック・バーストは、通常のブロック分断又はブロックデッドロック分断の結果としてイニシエータ・エージェントで発生される。このようなバーストは、互いにインタリーブされている2つのブロック・バーストを担持し、下流側で正しい分割ユニットに到達した時、2つの異なる発信ブランチ/スレッドに対して2つ別々のブロック・バーストに分割される。
インタリーブされたブロック・バースト(INT_blockバースト)がイニシエータ・エージェントで発生された時、以下が、発生する場合がある。
新しいペイロード信号が、多重チャネル・ターゲットに接続するブロック・バーストを担持する要求経路ドルフィンリンクに追加される。このようなD1リンクは、潜在的にインタリーブされたブロック・バーストを担持する。この信号は、p_interleaved_blckと呼ばれる。それは、INTブロック・バーストのクロスオーバー待ち行列内に2つのエントリを格納するために分割ユニットにより必要とされるものである。
インタリーブされたブロック・バーストは、第1の「構成要素ブロック・バースト」に属する全ての転送に対してp_interleaved_blck=1、第2の「構成要素ブロック・バースト」の全ての転送に対してp_interleaved_blck=0で送られる(初期イニシエータ・エージェントにより)。全ての他の指令(ブロック以外の又は通常のブロック・バースト)は、全ての転送に対してp_interleaved_blck=0で送られる。
インタリーブされたブロック・バーストは、アトミック・シーケンスとして送られ、すなわち、まさに最終転送を除く転送の全ては、m_lockarb=1を有し、最終転送は、m_lockarb=0を有する。
アトミック・シーケンスの第1の転送は、第1の構成要素ブロック・バーストの開始を特定して、そのバーストに関連のルートを有する。異なるルートを有するアトミック・シーケンスのサブシーケンスの第1の転送は、第2の構成要素ブロック・バーストの開始を特定する。残りの転送は、ルートに従って第1又は第2の構成要素ブロック・バーストに順番に属している。バーストの各々の最終転送は、m_burstlast=1と記載される。
2つの構成要素ブロック・バーストの各々の第1の転送は、そのブロック・バーストに対して全ての必要な制御情報を担持する。特に、2つの構成要素ブロック・バーストの各々の第1の転送は、m_ack_req=1で常に送られる。全ての他の転送は、m_ack_req=0を有する。第1のブロック・バーストの第1の転送だけが、m_epoch=1で送ることができる。
2つの構成要素ブロック・バーストの各々の第1の転送は、そのブロック・バーストに対して全ての必要なペイロード情報を担持する。一般的に、2つの構成要素ブロック・バーストは、p_maddr、p_maddrspace、p_mburstlength、及びp_mburstheightで異なる値を有する。2つの構成要素ブロック・バーストは、以下のペイロード信号、すなわち、p_mburstprecise=1、p_mburstseq=block、p_mcmd、p_mburststride、p_mburstsinglereq、及びp_mlittleendianで同じ値を有する。
各構成要素ブロック・バーストの各行(ロウ)は、p_mrowlast=1で終了する。
各インタリーブされたブロック・バーストに対して、1つの(又はクロスオーバー待ち行列実施により、2つの)エントリは、イニシエータ・エージェントクロスオーバー待ち行列に押し込まれる。エントリは、応答を正しいSRowLast値及びSBurstLast値で送り出すことができるように、構成要素ブロック・バーストのp_mburstlength及びp_mbursthに関する情報を収容すべきである。
分断論理は、各々が依然として要求データのストライド、高さ、及び幅の寸法を含む2Dトランザクションの属性を保持するように、2以上のバースト要求にチャネル境界全体で要求に及ぶ2Dバースト要求を分断するが、集合ターゲットを構成するメモリ・チャネルの境界内に各々の2以上のバースト要求のそれらの2D寸法に適合させる。メモリページ境界及びメモリ・チャネル境界内に適合するように分断される分断トランザクションは、依然としてデータのストライド、高さ、及び幅(ターゲットメモリの寸法)を含む2Dトランザクションの属性を保持する。2D分断されたトランザクションは、高さを含む2D属性を保持し、かつ図16cに示すように縦方向に長くDRAMページ境界の先頭アドレス及び最終アドレス内に適合する。上述のように、分断論理は、インタリーブされたメモリ・セグメントが異なるチャネルのチャネル境界と交差してこの要求の供給を開始した元のチャネルまで完全なラップループを作る時以外は、等しい高さ寸法を有するようにチャネル境界と交差する2Dトランザクションを分断する。従って、インターコネクト装置は、多重チャネル・システム内に2Dトランザクションの性能利点を維持しながら同じスレッドからの2以上のトランザクションにチャネル境界と交差した2Dトランザクション分断を内部的にサポートする。保持された属性を有する2Dトランザクションを移動させることによって明示的に要求ジッタが低減し、かつタイリングされた転送をグループ分けするスケジューラの機能が改善する。
実施形態では、ブロック・バースト及びブロック・バーストの幅変換をサポートするために、3つの新しい信号、
p_mburststride、p_mburstheight、及びp_mrowlast
がD1リンクバンドルに追加される。これらの信号はイニシエータ・エージェントによって発生されて、ターゲット・エージェントにインターコネクト装置ファブリックにより透過的に渡される。p_mburststride信号は、バイト単位であり、かつイニシエータ・エージェントから出てきている間、元のOCPブロック・バーストにより担持されるMBurstStride値、又はブロック・バーストに対してイニシエータ・エージェントでチャネル分割が実施された場合には、このMBurstStride値をアクティブ・チャネル数で割ったものに等しいとすることができる。また、p_mburstheight信号は、元のブロック・バーストにより担持されるMBurstHeight値に等しい。p_mburststride及びp_mburstheight信号は、要求ネットワーク専用信号である。MBurstStride値は、図18のイニシエータブロックに示すように「チャネル選択ビット」と記載されたアドレスビットの廃棄によるものである。アクティブ・チャネルの数は、図5のactive_targets設定から導出することができる。
p_packwords信号及びp_burstlast信号の使用に加えて、p_mrowlast信号も使用してブロック・バーストの各行(ロウ)の終わりでの停止パッキングを制御する。チャネル・インタリーブ境界と交差しているブロック・バーストに対しては、p_mrowlast信号を使用して、チャネル融合ユニットが適切に応答ネットワーク上でブロック・バースト応答を組み立て直すことを可能にすることができる。SRMDブロック読取バーストに対しては、p_packwordsを使用して、イニシエータ・エージェントからターゲット・エージェントにブロック・バーストの各行(ロウ)内の最終転送のターゲットワード有効化情報を通信する。
実施形態では、ブロック・バーストは、各々が増分式バーストのアドレス・シーケンスを有する一連の行(ロウ)としてインターコネクト装置により転送することができる。従って、イニシエータ・エージェントからターゲット・エージェントまでバーストを増分式転送に適用するあらゆる規則は、ブロック・バースト行(ロウ)を転送するために適用される。ターゲット・エージェントは、MReqRowLast、MDataRowLast、及びMRespRowLastのように構成された時にブロック・バーストに関連の他のOCP信号を発生させることを担当する。
要求経路においては、肯定応答機構は、通常のフロー制御におけるデッドロックを防止する。要求経路の分断論理内の2D要求検出器は、2Dブロックデッドロック分断をするために設けられる。応答経路においては、チャネル応答並べ替えは、要求経路スレッド分割器から応答経路スレッド融合ユニットに情報を渡すことによって達成される。応答経路スレッド融合ユニットは、この情報を使用して、物理的経路から選択的に一部の応答スレッドに逆圧を掛け、それによって応答がイニシエータ・コアに戻る前に正しく順序付けられることを保証する。
実施形態では、メモリ・チャネルのような2以上の個別のIPコアは、集積回路内の第1の集合ターゲットを構成することができる。2以上のチャネルは、第1の集合ターゲットに割り当てられたアドレス空間をポピュレートしてイニシエータIPコアの単一のターゲットとして呈示される。インターコネクト装置は、分断論理を実施して、第1の集合ターゲット内の第1のメモリ・チャネルから第2のメモリ・チャネルまでのメモリ・チャネル・アドレス境界と交差する個々のバースト要求を同じスレッドからの2以上のバースト要求に分断する。分断論理は、インターコネクト装置と第1のイニシエータ・コアの間のインタフェースでイニシエータ・エージェント内に埋め込むことができる。分断論理は、バースト要求内の最初のワードの開始アドレス及びバースト要求内の最終ワードの終了アドレスによりバースト要求内のワード要求の全てをもたらすために、バースト要求が1つ又はそれよりも多くのメモリ・チャネル・アドレス境界に及ぶ初期バースト要求を各メモリ・チャネルに対して同じ高さ寸法の2以上のバースト要求に分断する。分断論理は、集合ターゲット内の2以上のメモリ・チャネルに向かうチャネル境界と交差する個々のバーストトランザクションを分断して、各バーストトランザクションのバースト・サイズ及び開始アドレスがチャネル境界とは独立に存在することを可能にすることができる。
分断論理は、第1のIPイニシエータ・コアにより出された第1のバースト要求内のスレッド順序付けを追跡して個々のメモリ・チャネルにわたって拡散されている第1のバースト要求各部間で全体的ターゲット順序付けを維持するためのチャネル分断アルゴリズム及びテーブルを含む。分断アルゴリズムは、その一連における初期要求の開始アドレスが、第1のメモリ・チャネル内の隣接行(ロウ)のバースト要求内の一連の要求において開始する次の要求の開始アドレスと同じ第1のメモリ・チャネル内のチャネル境界からのオフセットを有するように、バースト要求内のトランザクションからの一連の要求を分断する。分断アルゴリズムは、初期要求の開始アドレスが第1のメモリ・チャネルの第2のDRAMページのバースト要求内の一連の要求のシーケンスを開始する次の要求の開始アドレスと同じ第1のメモリ・チャネル内の第1のDRAMページ内のチャネル境界からのオフセットを有するように、バースト要求が縦方向で別のメモリ・チャネル内と交差した場合にバースト要求をバースト要求内の一連の要求に分断する。
検出器は、バースト要求内の要求バイトの最初のワードの先頭アドレス及びバースト要求内の要求バイトの最終ワードの終了アドレスにより、バースト要求内のワード要求の全てをもたらすためにそのバースト要求内の要求バイトが1つ又はそれよりも多くのチャネル・アドレス境界にわたって及ぶのはいつかを検出する。分断論理の状態機械は、メモリ・チャネル・アドレス境界と交差しているバースト要求の形式に基づいてトランザクションを分断する。状態機械は、1)バースト要求の形式、2)バースト要求内の一連の要求内の最初のワードの開始アドレス、3)バースト要求内の一連の要求内のワード数を示すバースト長、及び4)チャネル・アドレス境界の交差に関わるワード長をトランザクションの分断に盛り込むことができ、バースト要求内のワード長及びワード数は、元のバースト要求内の最終ワードの終了アドレスを計算するのに使用することができる。
バースト要求からの応答は、2つに分割してその後に2つの異なる物理的経路に沿って送ることができ、それによって応答は、イニシエータに戻る応答が元の分断されたバースト要求の予想戻り順序で発生されるように2つの異なるメモリ・チャネルから交互のパターンでスレッド融合ユニットに送り返される。応答待ち行列は、要求がそれぞれのメモリ・チャネルから戻って来る時に順序正しく応答を回収するためにスレッド融合ユニットに存在するものであり、分断された元のバースト要求からの最終応答が応答キューにより回収された時、応答の全ては、元のバースト要求を出したイニシエータIPコアに送り返すことができる。
分断論理は、第1の集合ターゲット内の第1のメモリ・チャネルから第2のメモリ・チャネルまでのメモリ・チャネル・アドレス境界と交差する個々のバースト要求を、第1の集合ターゲットのメモリページ境界及びメモリ・チャネル境界内に適合するように分断されるデータのストライド、高さ、及び幅、及び第1の集合ターゲット内の寸法を含む2Dトランザクションの属性を保持する同じスレッドからの2以上のバースト要求に分断するように構成することができる。分断論理は、チャネル境界にわたって及ぶ2Dバースト要求を、各々が依然として要求データのストライド、高さ、及び幅の寸法を含む2Dトランザクションの属性を保持するが、2以上のバースト要求の各々のそれらの2D寸法を集合ターゲットを構成するメモリ・チャネルの境界内に適合させる2以上のバースト要求に分断する。2Dブロック・バースト要求は、ターゲットバイトにより占有される行(ロウ)の幅の長さ、ターゲットバイトにより占有される行(ロウ)の数、及びターゲットバイトにより占有される2つの連続した行(ロウ)間のアドレスストライド間隔を示す注釈を収容する2次元データブロックの属性を十分に説明する。
アドレス・マップの第1の領域は、所定のピクセルの周りにあるピクセルが2次元タイリングされた要求を満たすのに利用可能に維持されるように、ブロックメモリページ要求に対して性能を固守及び最大にする規則を有する2次元(2D)のタイリングされたバースト要求に対して割り当てられる。
検出器は、バースト要求内の要求バイトの最初のワードの開始アドレス及びバースト要求内の要求バイトの最終ワードの終了アドレスによりバースト要求内のワード要求の全てをもたらすために、そのバースト要求内の要求バイトが1つ又はそれよりも多くのチャネル・アドレス境界に及ぶのはいつかを検出する。2Dブロック形式のバースト要求を検出する際の検出器は、2Dバースト要求の最初のワードが分断されたトランザクションからのその2Dバースト要求内のその後の要求に役立つメモリ・チャネルよりもアドレス番号が高いメモリ・チャネル内で開始するか否かも検出する。検出器が、メモリ・チャネル境界と交差する2Dブロック・バーストの第1の行(ロウ)の最初のワードがアドレス番号の低い方のメモリ・チャネルで供すべきその後の要求よりもアドレス番号が高い方のメモリ・チャネルで開始されることを検出した場合、状態機械は、この第1の行(ロウ)を互いとは独立に役立たせることができる2つのバーストに分断する。
アドレス番号が高い方のメモリ・チャネルに向かう2Dブロック・バースト要求の第1の行(ロウ)の最初のワードを収容する要求は、分断論理が、第1の行(ロウ)の残りを収容する第2のバーストをアドレス番号の低い方のメモリ・チャネルに経路指定することを可能にする前に、意図したアドレス番号が高い方のメモリ・チャネルの前の最終スレッド融合ユニットで受信されたとして肯定応答されるべきである。
分断論理は、多重チャネル・アドレス領域のチャネルラウンドサイズのn倍に等しいターゲットバイトにより占有される行(ロウ)数を有するように第1の2Dブロック・バーストを分断し、ここで、nは、領域のチャネルラウンドの個数である。分断論理は、2Dバースト要求以外のバースト要求も分断する。分断論理は、各々がイニシエータにより供給された高さ及びストライドを有する、得られる2以上のバースト要求を分断し、分断されたバースト要求の第1のバースト要求は、チャネル内に適合するような分断された長さを有し、かつ第1のチャネルに送られ、分断されたバースト要求の第2バースト要求では、新しい幅属性として残りの行(ロウ)長が使用され、かつ第2バースト要求は、第2のチャネルに送られる。
図17は、2次元(2D)のタイリングされたバースト要求に対して割り当てられたアドレス・マップの1つ又はそれよりも多くのアドレス領域を有する2Dビットマップの「メモリ空間」の実施形態を示している。アドレス・マップ1700の1つ又はそれよりも多くの領域は、ターゲットピクセルから左右、上下にある所定のピクセルの周りにあるピクセルが、2つの2次元のタイリングされた要求を満たすのに利用可能に維持されるように、ブロックメモリページ要求に対して性能を固守及び最大にする規則を有する2次元(2D)のタイリングされたバースト要求に対して割り当てられる。タイリング機能は、ターゲットに利用可能なアドレスビットの指定の任意な交換とすることができる。
ブロック・バーストに関わるメモリ領域1790は、例示的な、例えば、3行(ロウ)2次元OCPバーストを満たすことができる。バーストは、行(ロウ)i及び行(ロウ)i+1内の第1のワード間の間隔を示すMBIockStride属性=256OCPワードを有する。バーストは、MBurstLength/MBIockWidth=8OCPワードを有する。バーストは、MBIockHeight属性=3行(ロウ)を有する。タイリングの例は、DRAMバンク0上のDRAMページ0、DRAMバンク1上のDRAMページ0、DRAMバンク2上のDRAMページ0、DRAMバンク3上のDRAMページ0、及び再ラッピングのような4バンク構成の4KBページ(1024x32b)及び1024B/行(ロウ)を有する。1ページバッファは、ブロックメモリページ要求を格納するために各個別のDRAMバンク内でオープンとすることができる。
図中、メモリ・チャネルは、ビットマップを列(コラム)に分割する。メモリ・チャネルは、メモリページのサイズ粒度で設定され、かつ4つの個別のDRAMバンク/IPコアからインタリーブされる。インタリーブされたメモリ・チャネルは、2D性能の最適化に向けて構成され、全く単独でアドレス・マップ内の領域に割り当てられる。
2Dタイリングされた要求に関するアドレス・マップのこの割当領域は、ターゲットピクセルから左右、上下にある所定のピクセルの周りにあるピクセルが、同じ検索済みメモリページ内で利用可能であるように、ブロックメモリページ要求に対して性能を固守及び最大にする規則を有する。タイリング機能は、2Dブロックメモリ要求を最適化するために、要求内の割当アドレスのマッピング構造を領域の実メモリ・アドレスに変える。更に、ページバッファは、以前のブロックメモリページ要求、現在のブロックメモリページ要求、及び今後のブロックメモリページ要求を格納するために各個別のDRAMバンクにおいてオープンとすることができる。DRAMのためのバンク、行(ロウ)及び列(コラム)アドレスビットの従来の線形レイアウトは、バースト、すなわち、キャッシュ線補充を増分/ラッピングするのに有効である。2Dデータ構造格納及び検索のための割当タイリングアドレス領域(例えば、MPEGマクロブロック)は、2Dブロック要求に有効である。2Dデータのための割当タイリングアドレス領域は、マクロブロック内の各行(ロウ)に対してページミスを排除する傾向がある。多くの消費者向けデジタル製品は、DRAMに至る経路内のアドレスビットを変換(転置)し、アプリケーションから矩形ページを作ることによって状況を改善する。このようなデバイスは、アドレスタイリング変換をするアドレスエイリアシングに基づいて複数の編成をサポートすることが多い。
インターコネクト装置及びメモリ・スケジューラは、アドレスタイリングに関する解決法をもたらし、「オープンコアプロトコル」によって定められる2Dトランザクションをサポートする。
DRAMアドレス編成は、この割当領域の2Dタイリング空間内で線形手法から変更される。実際のシステム・アドレス構造に変換される割当アドレスは、例えば、<row[r:2]><bank[1]><col[9:6]><row[1:0]><bank[0]><col[5:0]>とすることができる。従って、2Dバースト要求のアドレスビットにおいては、上述の座標に対応するフィールドは、DRAMバンク0又は1内の列(コラム)col[5:0]の幅に対応するアドレスのフィールド0〜5内のビット、DRAMバンク0又は1内の行(ロウ)のストライドに対応するアドレスのフィールド7〜8内のビットなどとすることができる。
メモリ・スケジューラを通じてアドレス可能なメモリは、次に、複数の領域(非重複)としてシステム・アドレス空間にマップすることができ、各々は、それ独自のタイリング機能を有する。タイリングは、2Dメモリページ検索において用いることができる。要求は、2Dメモリページ検索を形成するメモリ・アドレスのブロックを検索する。最大2つまでのタイリング方程式が、メモリ・スケジューラに接続したターゲット・エージェント当たりに存在することができる。アドレス領域は、各領域に対してaddress_spaceパラメータによりターゲットMAddrSpaceに関連付けられる。ターゲットコアは、各アドレス空間にそれ独自のタイリング機能を関連付けることができる。次に、ターゲットアドレス可能範囲を複数の領域(非重複)としてシステム・アドレス空間内にマップすることができ、各々は、それ独自のタイリング機能を有する。領域addr空間パラメータのブート設定可能性は、有用なものとすることができる。タイリング方程式においては、ビットMaddrのあらゆる置換が行われる場合がある。アドレス領域内の低位64バイトは、タイリングされない。タイリングは、メモリ・チャネル選択に影響を与えるものではない。タイリングは、チャネル復号後に行われる。分断論理は、2D要求の各分断された部分には縦方向のチャネル流路DRAMページ境界と交差するMBurstStrideはないことを保証する。タイリング方程式は、プログラムし直すことができる。ターゲット・エージェント又はメモリ・スケジューラ内で複数のユーザ指定のアドレスタイリング機能を実施する機能が存在する。内部のタイリング機能がソケットMAddrSpaceとは独立に指定することができるように、tile_funcパラメータは、アドレス領域内にある。アドレスタイリングにより、2D形式トランザクションは、ページミス率を低減することによって遥かにより効率的になる。
実施形態では、1ページバッファは、以前のブロックメモリページ要求、現在のブロックメモリページ要求、及び予測される今後のブロックメモリページ要求を格納するために各個別の動的ランダム・アクセス・メモリ(DRAM)バンクにおいてオープンとすることができる。メモリ・システムにおいては、メモリページは、DRAMバンクにわたるメモリセルの行(ロウ)全体のようなDRAM編成により認識された固定数のバイトであり、DRAM編成は、そのDRAMバンクに対してページバッファ内でその後アクセスされる。
図18は、多重チャネルインタリーブ及びアドレスタイリング例のアドレス整合を示している。可能なドレス変換フロー1900は、イニシエータ側から発生し、イニシエータ・エージェントで任意的なアドレス充填作業を経ると、イニシエータ・エージェントでアドレス復号及びチャネル分割を経て、チャネル・ターゲットに送出され、適切なMAddrSpaceを伴ってインターコネクト装置から現れ、ユーザ定義式のタイリング変換機能のうちの1つを用いたターゲット側メモリ・スケジューラモジュール経ると、最後にIPメモリコアターゲットに到達する。メモリ・スケジューラは、ユーザ定義式のアドレスタイリングをサポートする。各タイリング機能は、指定のOCPのMAddrSpaceに関連付ける。メモリ・スケジューラを通じてアドレス可能なメモリは、次に、複数の領域(非重複)としてシステム・アドレス空間にマップすることができ、各々は、それ独自のタイリング機能を有する。
図19は、多重チャネル領域に関してアドレス整合する実施形態のブロック図を示している。イニシエータ・エージェント2100は、バースト要求内の着信オープンコアProtocol(OCP)アドレスを復号する。イニシエータ・エージェントにより受信されるOCPアドレスは、このイニシエータ・スレッド(例えば、アドレス整合器[x][any])に接続性を有する多重チャネル・ターゲット[x]にマップされる全ての多重チャネル領域[x][any]のベース及びサイズと照合される。アドレス整合器は、要求に対してアドレスを適合させるためにベースアドレス、領域サイズ、及び恐らく領域のalias_size属性を使用する。多重チャネル領域がイニシエータ・アドレスに照らして整合されると、イニシエータは、アドレスを含む多重チャネル・ターゲットのチャネルを特定する必要がある。これは、復号済み多重チャネル領域のactive_targets属性に依存する。OCPのMAddrは、多重チャネル領域[x][z]及びアドレス整合器[x][z]に照らして整合される。active__targets属性は、所定の多重チャネル領域でアクティブである多重チャネル・ターゲットのチャネルの順序付けられた部分集合active_channel_setを符号化する。active_channel_set順序付け部分集合のサイズが、num_active_channelであるとする。この数字は、常に2の累乗である。次に、領域属性を使用して、active_target、num_active_channels、及びOCPアドレスのマッピング先であるアクティブ・チャネルIDを符号化するOCPのMAddrのビットフィールドを特定する。次に、OCPアドレスのアクティブ・チャネルIDを物理的アクティブ・チャネルの1つにマップする。
ADDR_MAPレジスタブロックは、あらゆる多重チャネル・アドレス領域に関連の属性の全てを含むことができる。多重チャネル領域は、設計時に多重チャネル・ターゲットに関連付けられる。多重チャネル・ターゲットは、類似のOCPパラメータを有する個々のターゲットの順序付けられた組である。多重チャネル領域の属性には、ベース、サイズ、channel_interleave_size、active_targets、addr_space、及びnum_channelsがある。これらの領域属性に関する定義及び使用法は、付帯的な章で説明する。
多重チャネル・ターゲットとの関係を有する各イニシエータ・エージェントは、そのターゲットの各多重チャネル領域当たりに、1つのアドレス整合器でインスタンス化される。それによってイニシエータ・エージェントは、このような領域のいずれかに該当するあらゆるOCPアドレスを復号することができる。
各アクティブ・チャネルが正確に1つの個々のターゲットにマップされるので、アクティブ・チャネル(num_active_channels)の数が多重チャネル領域に関する多くのアクティブターゲットに等しい点に注意されたい。また、多重チャネル領域の属性は、アドレス領域に対して構造的に利用可能なチャネル(すなわち、個々のターゲット)の最大数を示している。
num_active_channels==1である場合、この領域に属するあらゆるアドレスは、更なる処理が必要なく、このアドレス領域のactive_targets属性により特定される単一のチャネルに該当する。以下で説明する内容においては、num_active_channels>1と仮定する。
active_targetsに関連の順序付けられたチャネルセットactive_channel_setのi番目の要素が(物理的な)チャネルjである場合、以下のようになる。
i. active_channel_set[i]=j、for 0≦i≦num_active_channels、and 0≦j≦num_channels.
領域のchannel_interleave_size属性を用いて、2channel_interleave_sizeバイトのサイズ番号は、インタリーブサイズ及びチャネル交差が発生する境界を特定する。また、以下のように定める。
i. num_active_channels_log=log2(num_active_channels).
ii.次に、OCP要求相の以下のMAddrビットフィールドは、アドレスが属するアクティブ・チャネルIDを符号化する。
i. MAddr[num_active_channels_log + channel_interleave_size-1: channel_interleave_size]
このビットフィールドの値がiである場合、このOCP要求は、チャネル「active_channel_set[i]」に経路指定されるものとする。更に、MAddrの上述のビットフィールドは、下流側RSチャネル分割ユニットに渡された時、イニシエータ・エージェントにより剥ぎ取られる。
−−a.イニシエータ・エージェントは、通常のチャネル・ベースの分断規則に従っていくつかのより小さいバーストに各イニシエータバーストを分断する。イニシエータ・エージェントは、対応する読取応答ワードをアセンブルして正しい描写(例えばSRespLast及びSRespRowLast)をOCPインタフェースに転送すべきである。書込応答が必要な場合、イニシエータ・エージェントは送信されたバースト分断(書込要求は、インターコネクト装置コアにSRMDバーストとして送られる)当たりの1つの応答を回収して、SRMD書込バーストに対して単一のOCP応答を、又はMRMD書込バーストに対してOCP応答MBurstLength数を生成すべきである。
−−b.実施形態では、書込ポスティングが有効にされた時、適切な書込応答ドロップカウントは、ポスティングされたOCP書込応答対応物がイニシエータに送り返されていた時、dlinポートから戻されたインターコネクト装置書込応答を廃棄するために維持する必要がある。
−−c.dlinポートからイニシエータ・エージェントにより受信されるイニシエータ・スレッド応答当たりのワードは、多重チャネル・ターゲットへのアクセスに対してさえも順序正しいものであると保証される。要求ネットワーク上の下流側チャネル分割ユニットのクロスオーバー待ち行列を使用して、応答経路上のイニシエータ・エージェントに順々に渡す前に、応答ネットワーク上でイニシエータ・エージェントの上流側にある対応するチャネル融合ユニットが正しい順序でこのようなチャネル応答を回収するのを助ける。
−−d.イニシエータ・エージェントは、応答アセンブルのためのイニシエータ・スレッド当たりのクロスオーバー待ち行列を有する。しかし、ブロック及びINT_blockのようなインターコネクト装置によりサポートされる種類のバーストをサポートするために、クロスオーバー待ち行列内にエントリ当たりで付加的な情報が格納される。イニシエータOCPインタフェースがブロック・バーストをサポートしない場合、それに続くフィールドは不要である。
イニシエータ・ブロック要求に対しては、応答は、各行(ロウ)の終わりにSRespRowLast=1を有する必要がある場合がある。chop_blckという新しい単一のビットフィールドは、SRespLastが応答ストリーム(更に以下で説明)の適切な点で発生させる必要がある場合があることを示すためにクロスオーバー待ち行列内に格納される。それは、ブロック又はINT_blockバースト分断に関連の応答を正しく数えるためにも使用される。このビットは、イニシエータブロック・バースト(INCR、ブロック、INT_block)に関連のバースト分断のいずれに対しても1に設定することができることに注意されたい。ブロック以外のイニシエータバーストのバースト分断は、いずれについても1には決して設定されない。
新しいフィールドchop_deadlock_blckは、クロスオーバー待ち行列に格納される。chop_deadlock_blck=1は、ブロックデッドロック分断の結果であるINT_blockバースト分断のためだけのものである。このようなINT_blockバースト分断は、第1の行(ロウ)の第1の部分及びチャネルに交差する境界での最終行(ロウ)の最終部分をはずしている。あらゆる他のバースト分断(特に、chop_blck=0である時)は、chop_deadlock_blck=0を有するものとする。
3つのカウントは、ブロック及びINT_blockバースト:すなわち、chop_burst_length、chop_burst_height、chop_partial_burst_lengthを取り扱うためにクロスオーバー待ち行列内に格納される。
−−a.chop_burst_lengthカウントを使用して、ブロック以外のバースト分断内の応答の個数、又はブロック又はINT_blockバースト分断内の行(ロウ)の長さを数える(更なる詳細に対しては、以下のchop_partial_burst_lengthの説明を参照されたい)。フィールドchop_blck=1及びpartial_burst_length=0である場合、このバースト分断に関連の各chop_burst_length応答の終了時に、イニシエータ・エージェントは、信号が存在する場合にSRespRowLast=1を設定することができる。イニシエータブロック・バーストがブロック以外のバースト(例えば、INCR)に分断された場合、その全てがchop_blck=1を有するクロスオーバーエントリを有するというわけではないことに注意されたい。行(ロウ)の終了と一致するものみが、chop_blck=1を有する。
−−b.chop_burst_heightフィールドは、ブロック及びINT_blockバースト分断のために使用される。全てのブロック以外のバースト分断に対しては1であり、かつブロック又はINT_blockバースト内の完全な行(ロウ)の数に等しくなければならない。ブロックデッドロック分断が使用される時、得られるINT_blockバーストは、元のチャネル交差バーストより完全な行(ロウ)数が2つ少ない。
−−c.chop_partial__burst_lengthフィールドは、ブロックデッドロック分断の結果であるINT_blockバースト分断に対してのみ非ゼロである。このようなINT_blockバースト分断は、第1の行(ロウ)の第1の部分及びチャネルに交差する境界での最終行(ロウ)の最終部分をはずしている。このようなバーストに対しては、このカウントは、INT_blockバーストの第2の構成要素ブロック・バースト、すなわち、番号が最も高いアクティブ・チャネルで開始するブロックのp_mburstlengthに設定される。あらゆる他の種類のバースト分断(特に、chop_blck=0の時)に対しては、このフィールドは、0でなければならない。一例として、チャネル7で開始して行(ロウ)の第7番目のワードの後にチャネル0内に交差し、イニシエータをMBurstLength=10を有するブロック・バーストを考えてみる。ブロックデッドロック分断が実施されることになっているので、得られるINT_blockバースト分断は、chop_partial_burst_length=7を有するものとする。partial_burst_lengthに関する非ゼロの値は、フィールド分断blck=1が常に伴うものとする。更に、その場合のchop_burst_lengthは、INT_blockバーストの第1の構成要素ブロック・バースト、すなわち、数字が最も低いアクティブ・チャネル(例えば、上述の例のchop_burst_length=3)で開始するブロックのp_mburstlengthに設定されるものとする。
応答側のクロスオーバーエントリを処理する時、ブロックデッドロック分断の結果であるINT_blockバースト分断(すなわち、)に対するものである
chop_blck=1及びchop_deadlock_blck=1(すなわち、partial_burst_legnth! = 0)である場合、以下のようになる。
イニシエータ・エージェントは、chop_burst_length応答の最後分と共に第1のSRespRowLast=1を送り、
イニシエータ・エージェントは、次に、chop_burst_height、chop_burst_length+chop_partial_burst_length応答から分離されたSRespRowLast = 1ほど多くのものを送る。
イニシエータ・エージェントは、次に、応答の最終chop_partial_burst_lengthを送る。このような応答の最終分は、SRespRowLast = 1では送られない。
応答側のクロスオーバーエントリを処理する時、chop_deadlock_blck=0(すなわち、partial_burst_legnth=0)である場合、
−−a.イニシエータ・エージェントは、chop_burst_length*MBurstHeight応答を検索して送り、chop_blck = 1である場合、chop_burst_length応答の各シーケンスは、SRespRowLast = 1で終了する。
i.要求側MBurstHeight値は、クロスオーバー待ち行列内に格納することができる。
クロスオーバー待ち行列のエントリは、それが完全に処理された時にポップ表示される。
−−a.どのバースト−分断が、SBurstLast = 1で終了すべきかを示すフィールドがクロスオーバーエントリにある必要がある。イニシエータバーストのまさに最終バースト分断のみが、このフィールドが1に設定されたクロスオーバーエントリを有するものとする。
イニシエータ・エージェントは、OCP書込応答の正しい生成に向けてクロスオーバー待ち行列を用いる必要な機構を有する。SRMD書込に対しては、単一の応答は、最終バースト分断の完了で発生されるものとする。MRMDバーストに対しては、上述の新しい付加的なフィールドを使用して、必要な時にSRespRowLast = 1の正しいアサートで、各バースト分断に関連の正しい個数の応答を発生させることができる。SRMD/MRMDのOCP書込バーストの各バースト分断は、常に、イニシエータ・エージェントにより廃棄される単一の応答を戻す(全てSRMD書込として送られるので)。
イニシエータ・スレッド・クロスオーバー待ち行列当たりの各々の深さは、max_burstにより判断される。イニシエータ・エージェントは、クロスオーバー待ち行列が一杯になった時にそのバースト分断を中止し、エントリが利用可能になった時に再開する。
イニシエータ・エージェントは、イニシエータ・スレッドがアクセスされた最終ターゲットと異なる集合ターゲットにアクセスするのはいつかを検出する。このような場合、イニシエータ・エージェントは、現在オープンである集合ターゲットに対する現在未処理のバーストの全てが完了されるまで、すなわち、イニシエータ・スレッドのクロスオーバー待ち行列が空になるまで、バースト分断処理全体及びターゲット・チャネルへのバースト分断の送りを中止する。
イニシエータ・エージェント・クロスオーバー待ち行列を実施する2つの例示的な方法は、以下の通りである。
−−a.広範な実施において、イニシエータ・エージェント(分断されるバーストに対して完全な知識を有する)は、上述の全ての必要な情報(chop_burst_length、chop_burst_height及びchop_partial_burst_length)を有するINT_blockバースト分断当たりに1つのエントリを格納する。しかし、このような実施では、chop_deadlock_blckフィールドは、その値がchop_partial_burst_lengthの値と共に捕捉されると思われるので、冗長であると考えられる。
−−b.クロスオーバー待ち行列の奥深い実施において、イニシエータ・エージェントは、INT_blockバースト分断に対して2つのエントリを転換待ち行列に格納し、第1のエントリは、フィールドchop_deadlock_blck上に第2のエントリの存在を示す1の値を有する:すなわち、第1のエントリは、chop_burst_lengthを担持し、第2のエントリは、上述のchop_partial_burst_lengthを担持することになる。すなわち、クロスオーバー待ち行列は、より狭くすることができるが、恐らく少し深めにすべきである。この場合、イニシエータ・エージェント応答論理は、第2のエントリの付加的な情報にアクセス可能なように第1のエントリをポップ表示する。要求側では、INT_blockの各エントリは、関連の構成要素ブロック・バーストの第1の転送と共にクロスオーバー待ち行列に押し進められる。
イニシエータ・エージェントは、各イニシエータ・スレッドに対して別々のepoch_counterを有する。epoch_counterは、0になるか、又はこのイニシエータ・エージェントが異なるターゲットに切り換える度に相対帯域幅重み値がロードされる。多重チャネル・ターゲットの異なるチャネルにアクセスは、同じターゲットに属しており、epoch_counterのリロードを引き起こさないことに注意されたい。epoch_counterは、このイニシエータ・スレッドの現在オープンのターゲット(又は、多重チャネル・ターゲット)に送られる各転送で減分される。
インタリーブされたブロック・バーストは、2以上のカテゴリに分類することができる。2つのカテゴリは、第1及び第2の構成要素ブロック・バーストが互いに対して開始及び終了する順序が異なる。
カテゴリ(A): 第1の構成要素ブロック・バーストは、第2のブロック・バーストの開始の後及びその終了前に終了する。アトミック・シーケンス内のp_routeの(ヘッダ)変更を検出する下流側分割ユニットは、第2の構成要素ブロック・バーストの第1の転送上の欠けているm_epoch=1(アトミック・シーケンスの第1の転送上に設定されていた場合)、及び第1のブロック・バーストの最終転送上のm_lockarb=0、及び分割に成功したインタリーブされたブロック・バーストを難なく挿入することができる。
カテゴリ(B): 第1の構成要素ブロック・バーストは、ブロック・バーストが開始さえもする第2の構成要素の前で終了する。アトミック・シーケンス内のp_routeの変更を検出する下流側分割ユニットが、依然としてアトミック・シーケンスの第1の転送上に設定されていた場合は、第2の構成要素ブロック・バーストの第1の転送に関する欠けているm_epoch=1を難なく設定することができる。分割ユニットは、アトミック・シーケンスの第1のm_burstlastがm_lockarb=0を伴わず、変更に向けて次の転送のp_routeを検証するまでには、第1のバーストの最終転送に対してm_lockarb=0を設定しても遅すぎることを検出することができる。インタリーブされたブロック・バーストの第1のブロック・バーストに対してm_lockarb=0を正しくリセットするためには、以下のいずれかになる。
分割ユニットが、p_burstlast=1及びm_lockarb=0を見た時に次の転送のルートを先読みしなければならない:この解決法は、エリア、待ち時間の両方のペナルティを招く。
代替的に、分割器が、まさに第1の転送のp_routeに基づいて確かにこのインタリーブされたブロック・バーストに関する分割器であるということを構造的に知る必要がある:これは、可能でさえない場合があり、又は以下のようである。
それに加えて、イニシエータ・エージェントは、INT_blockバーストのまさに第1の転送に対して、分割を実施すべきであることをこの分割器に明示的に通知し、かつアトミック順序において、p_burstlast=1を備えたあらゆるm_lockarb=1を0にリセットすべきである。
D1リンクペイロード信号p_split_infoを使用して、分割器に通知することができる。p_split_infoフィールドは、非INT_blockバーストに対してはゼロである。INT_blockバーストに対しては、split_infoは、INT_blockバーストが2つに分割することになる下流側分割器を識別する。channel_splitter_idがp_split_infoと適合するチャネル分割ユニットは、INT_blockバーストを分割し、そのアトミック・シーケンス内でp_burstlast=1を備えたm_lockarb=1を0にリセットする。
より高性能のアクセス保護
インターコネクト装置の分断論理は、アクセス保護機構(PM)検査に向けて新しい高性能化されたアーキテクチャを使用することができる。このアーキテクチャは、二重ルックアップアーキテクチャである。ターゲット・エージェントから出される各要求バーストは、最初に、並列に2つのルックアップを使用するPMにより資格が認定される。第1のルックアップは、バーストに対して開始アドレスに基づくものである。第2のルックアップは、バーストに対して計算終了アドレスに基づくものである。アクセス許可の資格付けには、第1のルックアップに関連のSMXで現在必要とされる全ての条件に1つの新しい条件を加えたものが必要である。新しい条件とは、第1及び第2のルックアップが同じ保護領域をヒットすべきであるということである。それによってたとえ適切な許可が開始及び終了領域内に設定されているとしても、保護領域境界と交差するバーストが失格になる。単一の保護領域は、バーストがアクセスするデータセットを対象とすることが予想かつ必要とされる。
第2のルックアップは、burst_aligned=0を有するターゲットでINCRバーストに対して、及びブロック・バーストに対して実施されるだけである。WRAP、XOR1、STRM、及びバーストに整列したINCRバーストに対しては、第2のルックアップの成功は保証される(バーストの整列した性質、サポートされる長さの範囲、及び保護領域サイズの最小粒度により)。UNKN及びDFLT2トランザクションは、依然として保護ターゲット・エージェントで単一のワード転送として処理されることになるだけであるから、これらに関する第2のルックアップも保証される。
二重ルックアップPMにより、IAによる控え目な局所性実施が不要になる。IAバースト分断の性能に対してコストが最も高い場合が排除され、UNKNバーストの優勢な使用が2Dトランザクションのためであると考えられるので、ブロック・バーストサポートも重要な役割をここで果たす。ブロック・バーストを使用するようにこれらのイニシエータを変換すれば、PMによるターゲットでの処理の効率化が可能になり、かつゲートカウントスケーリングが改善する。
ブロック・バーストに関する終了アドレス計算をハードウエア効率及びタイミング効率を高いものにするために、処理は、バイナリ累乗であるMBIockHeight値に制限される。このバースト分断は、アドレス指定されたターゲット・エージェントが保護マネージャを有する時に単にイニシエータ・エージェントにより実施される。従って、単一のイニシエータブロック・バーストが一連のターゲットブロック・バーストに分断される可能性があり、各々は、PM検査を通過すべきである。それによってイニシエータバースト全体を対象とする単一の保護領域の要件に可能な例外ができる。イニシエータブロック・バーストの以前の各部がPM検査を通過し、後の各部がPM検査を通過しない可能性もある。このようなバーストが読み取られた場合、エラー応答が戻される前に何らかの応答データを戻すことができる。しかし、保護データは、これらの場合は漏れないことになり、その理由は、戻される応答は、全てが、アクセスが許可されたからのものであり、応答ERR及び0データ・ワードは、初回の違反が検出された後に包含的に全てのアドレスから戻されたものであるからである。同等の挙動が、イニシエータバーストがPM局所性実施のために分断された時に今日SMXに存在する。
集合ターゲットにアクセス保護機構を追加するには、集合内の個々のターゲットの各々に対してアクセス保護機構を追加かつ同一に構成する必要がある。Soccompは、PMが多重チャネル・ターゲットの構成ターゲットである何らかの意味のターゲットで存在する場合は、そのPMが全ての構成ターゲットで存在するかを検査することになる。更に、これらのPMの各々に対して定められる領域の数は、同じでなければならない。
常に実質的に同一であるように多重チャネルセットの個々のPMを維持することは、ソフトウエアの責任である。チャネルXでの領域Mの最新情報とチャネルYでの領域Mの最新情報との間に時間間隔がある場合がある。セキュリティマネージャは、全てのチャネルが更新されるまで領域Mの使用を可能にすべきでない。
高性能非同期かつ電圧隔離OCPブリッジング
インターコネクト装置は、複数の非同期クロック入力をサポートする。1つは、ベースクロックと指定され、SMXに供給される単一のクロックに対応する。SMX−C0リリースと同時に、Sonicsは、高性能OCP2間非同期電圧隔離ブリッジを利用可能にする。SSXにより、非同期入力クロックを各ソケットに関連付けることができる。このような関連付けが行われた時、非同期ブリッジのインスタンスがソケットに対して自動的に含まれる。そのブリッジは、電圧隔離に向けて戦術的セルを含むように構成することができるRTL階層の新しい最上層は、階層内での電圧領域の分離を助けるために作成される。
図20は、インターコネクト装置に対して上述の設計及び概念による「システムオンチップ」のようなデバイスを発生させる処理の例の実施形態の流れ図を示している。インターコネクト装置の設計からデバイスを発生させる例示的な方法は、「電子設計自動化(EDA)」ツールセットの一部を成すように、チップコンパイラ上システムのような電子回路設計発生器を利用することができる。ハードウエア論理、符号化済みソフトウエア、及び両方の組合せを用いて、EDAツールセットの実施形態を用いた設計処理段階を実施することができる。インターコネクト装置内の回路のような装置及び/又は方法を表す情報は、セルライブラリ、電子回路設計発生器内のソフト命令内のようなインスタンス内に、又はこの情報を格納する類似の機械可読記憶媒体内に収容することができる。機械可読記憶媒体上に記憶された装置及び/又は方法を表す情報は、装置を製造する処理に、又はシミュレーション及びリソグラフィ・マスク及び/又は本明細書で説明する方法のような装置の表示に用いることができる。
上述の設計の態様は、インターコネクト装置及び関連の部品を構成する構成要素の1組の設計を収容するソフトウエアライブラリの一部とすることができる。ライブラリセルは、業界規格に従って開発される。設計要素を含むファイルのライブラリは、それ自体独立型プログラム、並びにEDAツールセットの一部とすることができる。
EDAツールセットは、入出力データ、制御、デバッグ、及び試験フロー、並びに他の機能を完全に管理する高度に設定可能な拡張性のある「システムオンチップ(SOC)」ブロック間通信システムを製造するのに使用することができる。実施形態では、例示的なEDAツールセットは、以下のもの、すなわち、グラフィカル・ユーザ・インタフェース、共通の1組の処理要素、及びEDAツールセットを定める回路、制御論理、及びセルアレイのような設計要素を収容するファイルのライブラリを含むことができる。EDAツールセットは、回路設計を生成して設計を試験し、及び/又はターゲット・チップ上で利用可能な空間内に設計のレイアウトを設置する目的のために複数のアルゴリズム及び設計で構成された1つ又はそれよりも多くのソフトウエア・プログラムとすることができる。EDAツールセットは、オブジェクト・コードを1組の実施可能ソフトウエア・プログラム内に含むことができる。EDAツールセットの特定用途向けアルゴリズム及びインタフェースの組をシステム集積回路(1C)インテグレータが使用して、特定の用途向けに個々のIPコア又はIPコアのシステム全体を迅速に作成することができる。EDAツールセットは、各構成要素のタイミング図、電力、及びエリアに関する態様を供給すると共に、実際の作動及び構成のシミュレーションを実施するために構成要素を表すように符号化されたモデルでシミュレーションを提供する。EDAツールセットは、ターゲット・チップ上で利用可能な空間内に適合させることを意図したNetlist及びレイアウトを発生させることができる。EDAツールセットは、機械可読記憶媒体上にインターコネクト装置及び論理回路を表すデータを格納することができる。
一般的に、EDAツールセットは、SOC設計フロントエンド処理及びバックエンドプログラミングの2つの主要な段階において使用される。
フロントエンド処理には、SOC概略図の設計を含む設計及びアーキテクチャ段階が含まれる。フロントエンド処理には、モデルの接続、設計の構成、アーキテクチャ探索中の設計の模擬、試験、及び調整を含むことができる。設計は、一般的にシミュレーションが行われると共に試験される。フロントエンド処理には、従来的に、SOC内の回路のシミュレーション及び正しく作動することの検証が含まれる。試験及び検証済みの構成要素は、次に、独立型ライブラリの一部又はIPブロックの一部としてチップに格納することができる。フロントエンド図により、文書化、シミュレーション、デバギング、及び試験が裏付けられる。
ブロック2005では、EDAツールセットは、構成パラメータを説明するデータ及び複数のレベルの階層を有する個々のIPブロックの少なくとも一部に関する設計を有するユーザにより供給されたテキストファイルを受信することができる。データは、そのIPブロックに関する1つ又はそれよりも多くの構成パラメータを含むことができる。IPブロックの記述は、インターコネクト装置のようなそのIPブロックの全体的な機能性とすることができる。インターコネクト装置IPブロックの構成パラメータは、システム内のいくつかのアドレス領域、システム・アドレス、システム・アドレスに基づくデータの経路指定の方法などとすることができる。
EDAツールセットは、そのIPブロックの構成要素レベルの製作を実施する製造工程、その技術においてセルにより占有されるサイズの推定、その技術において実施された構成要素レベルの論理の作動電圧、その技術における標準的セルの平均ゲート遅延のようなユーザにより供給された実施技術パラメータを受信する。技術パラメータは、意図した実施技術の抽出を説明する。ユーザにより供給された技術パラメータは、テキストにより説明又は単に公知の可能性範囲に応答して提出された値とすることができる。
EDAツールセットは、IPブロック設計を形成する各IP下位構成要素に対して抽象的な実施可能な表現を作成することによってIPブロック設計を分割することができる。抽象的な実施可能表現は、各IP下位構成要素に関するモデルTAP特性をモデル化すると共に、実際のIPブロック設計の特性に類似した特性を模倣する。モデルは、そのIPブロックの1つ又はそれよりも多くの挙動特性を中心とすることができる。EDAツールセットは、IPブロック設計の一部又は全体のモデルを実施する。EDAツールセットは、そのIPブロックのモデル化した挙動特性の結果を要約して報告する。EDAツールセットは、アプリケーションの性能を分析することができ、ユーザがIPブロック設計の新しい構成又は新技術パラメータによる機能説明を供給することを可能にする。ユーザがIP設計パラメータの供給された構成の反復のうちの1つの性能結果で満足して技術パラメータが実施されることを受けて、ユーザは、その関連の技術パラメータで最終的なIPコア設計を決めることができる。
EDAツールセットは、潜在的に付加的な情報と共に抽象的な実施可能表現からの結果を統合してIPブロックに対して合成スクリプトを発生させる。EDAツールセットは、全体的な性能の結果及びエリア推定値がユーザに呈示された後にIPブロックに対して様々な性能及び地域ターゲットを確立する合成スクリプトを供給することができる。
EDAツールセットは、ユーザにより供給された構成パラメータ及び実施技術パラメータに基づいて、論理合成に向けてそのIPブロック設計のRTLファイルを発生させることができる。上述のように、RTLファイルは、レジスタ、ブール方程式、「if−then−else」ステートメントのような制御論理及び複雑なイベント・シーケンスの集合で電子回路を説明する高レベル・ハードウエアの記述とすることができる。
ブロック2010では、ASIC又はSOCチップ設計における別々の設計経路は、統合段階と呼ばれる。IPブロックのシステムの統合は、IPブロックのRTLファイル及びそのIPブロックに関する合成スクリプトの生成に並行して行うことができる。
EDAツールセットは、シミュレーションを行って設計の作業が正しく機能することを検証する回路及び論理ゲートの設計を供給することができる。システム設計者は、一緒に機能するようにIPブロックのシステムを符号化する。EDAツールセットは、機能試験、タイミング試験、デバッグ、検証を行うことができる上述の回路のシミュレーションを発生させる。EDAツールセットは、IPブロックの挙動のシステムのシミュレーションを提供する。システム設計者は、IPブロックの挙動のシステムを検証及びデバッグする。EDAツールセットは、IPコアをパッケージ化する。機械可読記憶媒体は、外部試験器及びインターコネクト装置が本明細書で説明する試験に対して試験シーケンスを実施する命令を試験生成プログラム発生させるように命令を格納することができる。電子設計自動化の当業者は、設計技術者が異なる表現を作成及び使用して有形の有用な情報及び/又は結果を生じやすくすることを知っている。これらの表現の多くは、高レベル(抽象化されかつ詳細が少なめである)又はトップダウン図とすることができ、システムレベルから始まる電子設計を最適化しやすくするのに使用することができる。更に、設計過程は、通常は相に分割することができ、各相の終了時に、その相に対する調整された表現が、通常は出力として発生され、次の相によって入力として使用される。ベテラン技術者は、これらの表現を使用すると共に発見的アルゴリズムを適用して最終相から得られる最終結果の品質を改善する。これらの表現により、電子設計自動化の世界では、回路を設計し、回路を試験及び検証し、回路のNetlist及び他の類似の有用な結果からリソグラフィマスクを導出することができる。
ブロック2015では、次に、システム統合は、集積回路設計工程において行うことができる。バックエンド・プログラミングには、一般的に、チップ・レイアウト上での回路要素の配置及び経路指定又は平面計画、並びに構成要素間の全ての配線接続の経路指定のようなSOCの物理的レイアウトのプログラミングが含まれる。レイアウト、物理的ライブラリ交換フォーマット(LEF)のようなバックエンド・ファイルがレイアウト及び製作のために発生される。
生成したデバッグ・レイアウトは、チップのレイアウトの残りと統合することができる。論理合成ツールは、IPコアのための合成スクリプト及びIPコアのRTL設計ファイルを受信する。論理合成ツールは、セルライブラリからの設計において使用される論理ゲートの特性を受信する。IPブロックのシステムを含むSOCをインスタンス化するために、RTLコードを発生させることができる。固定RTL及び合成スクリプトを有するIPブロックのシステムのシミュレーション及び検証を行うことができる。レジスタ転送レベル(RTL)と設計の合成が行われると考えられる。論理合成ツールは、RTL設計を合成してゲートレベルNetlist回路設計(すなわち、IP下位構成要素ブロックの全てを構成する個々のトランジスタ及び論理ゲートの記述)を作成する。設計は、Verilog、VHDL(超高速集積回路ハードウエア記述言語)、又はSPICE(集積回路重点シミュレーションプログラム)のような1つ又はそれよりも多くのハードウエア設計言語(HDL)のNetlist内に出力することができる。Netlistは、設計に含まれる構成要素、各構成要素の属性、及び構成要素間の相互接続性のような電子設計の接続性を説明することができる。EDAツールセットは、チップのXY座標のようなチップ上で利用可能な空間内での構成要素配置に関する制約条件の追加を含む構成要素の平面計画を助けると共に、それらの構成要素の金属接続を経路指定する。EDAツールセットは、製造中にチップ上へ回路設計を転送するためにIPコアのこの表現から発生される石版印刷マスクのための情報、又は上述の回路の他の類似した有用な導出を提供する。従って、バックエンド・プログラミングは、レイアウトが物理的に製造可能であり、かつ得られるSOCがいかなる機能を妨げる物理的欠陥も持たないことになることを検証するレイアウトの物理的検証を更に含むことができる。
ブロック2020では、製作施設は、EDAツールセットの回路設計及びレイアウトから発生されたリソグラフィ・マスクを利用して、シグナル発生回路を有する1つ又はそれよりも多くのチップを製造することができる。製作施設は、1.0μm、0.50μm、0.35um、0.25um、0.18um、0.13um、0.10um、90nm、65nm又はそれ未満のような最小線幅を有する標準的CMOS論理処理を使用してチップを製造することができる。一般的に使用されるCMOS論理処理のサイズは、リソグラフィマスクを用いてチップ上に製造することができる数値が最も小さい最小リソグラフィ寸法を定めるものであり、それによって最小構成要素サイズが決まる。一実施形態によれば、X線及び極紫外線を含む光は、これらの石版印刷マスクを通過してチップ上に至り、試験回路のための回路設計及びレイアウトをチップ自体上に転写することができる。
EDAツールセットは、グラフィカル・ユーザ・インタフェースに対して構成ダイアログ・プラグインを有することができる。EDAツールセットは、SocCompに対してRTL発生器プラグインを有することができる。EDAツールセットは、SocCompに対してSystemC発生器プラグインを有することができる。EDAツールセットは、RTLシミュレーションに含むことができる構成要素上でユニットレベルの検証を実施することができる。EDAツールセットは、試験検証テストベンチ発生器を有することができる。EDAツールセットは、仮想及びハードウエアのデバッグポート追跡のためのファイルに対する逆アセンブラーを有することができる。EDAツールセットは、オープンコアプロトコル規格準拠とすることができる。EDAツールセットは、トランザクターモデル、バンドルプロトコルチェッカー、ソケット活動を表示するOCPDis2、バンドルの性能を分析するOCPPerf2、並びに他の類似のプログラムを有することができる。
上述のように、EDAツールセットは、他のプログラムに対して呼び出し可能なソフトウエア・ライブラリ又は実施可能なプログラムから成るEDAツールセットのインスタンスのような1組のデータ及び命令としてソフトウエアに実施することができ、1つのプログラム内のソフトウエア・セルライブラリは、機械可読媒体上に記憶される。機械可読記憶媒体は、機械(例えば、コンピュータ)により可読の形式で情報を提供する(例えば、格納及び/又は送信する)あらゆる機構を含むことができる。例えば、機械可読媒体は、以下に限定されるものではないが、読取専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、磁気ディスク記憶装置媒体、光記憶媒体、フラッシュ・メモリデバッグ、DVD、EPROM、EEPROM、フラッシュカード、磁気カード又は光カード、又は電子命令の格納に適するあらゆる他の形式の媒体を含むことができる。命令及び演算はまた、機械可読媒体が1つよりも多いコンピュータ・システム上に格納され、及び/又はそれによって実行される分散コンピュータ環境に実施することができる。更に、コンピュータシステム間で転送された情報は、コンピュータ・システムを接続する通信媒体にわたってやり取りすることができる。
以上の詳細説明の一部は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及び記号表現に関して示したものである。これらのアルゴリズム記述及び表現は、他の当業者に自分たちの仕事の内容を最も有効に通信するためにデータ処理技術分野の当業者によって使用されている手段である。アルゴリズムとは、本明細書では及び一般的に、望ましい結果をもたらす演算の首尾一貫した演算のシーケンスであると考えられている。演算とは、物理量の物理的操作を必要とするものである。必ずしもそうというわけではないが通常は、これらの量は、格納し、転送し、結合し、比較し、及び他の方法で操作することができる電気信号又は磁気信号の形を取る。これらの信号は、主として一般的な使用上の理由から、ビット、値、要素、記号、文字、項、又は数字などとして参照することが時に便利であることが判明している。
本発明の一部の特定的な実施形態を示したが、本発明は、これらの実施形態に限定されないものとする。例えば、電子ハードウエア構成要素により実施される殆どの機能は、ソフトウエア・エミュレーションにより複製することができる。すなわち、その同じ機能を達成するために書かれたソフトウエア・プログラムは、入力−出力回路のハードウエア構成要素の機能性をエミュレートすることができる。ターゲットは、単一スレッド化又は多重スレッド化することができる。本発明は、本明細書に説明した特定的な実施形態によって限定されるのではなく、特許請求の範囲によってのみ限定されるように理解されるものとする。
104 オンチップ・セキュリティIPコア
108 マルチメディアIPコア
116 イニシエータ・エージェント
118 インターコネクト装置

Claims (20)

  1. 1つ又はそれよりも多くのイニシエータ・アイピー(IP)コアとインターコネクト装置に結合された複数のターゲットIPコアとの間でトランザクションを通信する集積回路のためのインターコネクト装置であって、
    集積回路内のターゲットIPコアに対して割り当てられたアドレスでアドレス・マップを実施して該集積回路内の該ターゲットIPコア及びイニシエータIPコアの間でトランザクションを経路指定し、
    前記ターゲットIPコアの第1の集合ターゲットが、前記アドレス・マップ内の該第1の集合ターゲットのためのアドレス空間においてインタリーブされた2以上のメモリ・チャネルを含み、各メモリ・チャネルは、所定のメモリ・インタリーブ・セグメントに分割されて、その後に他のメモリ・チャネルのメモリ・インタリーブ・セグメントとインタリーブされ、
    前記アドレス・マップは、2以上の領域に分割され、各インタリーブされたメモリ・インタリーブ・セグメントが、それらの領域の少なくとも1つに割り当てられて、その領域に対する前記アドレス空間をポピュレートし、該領域及びメモリ・インタリーブ・セグメントに関連するパラメータが設定可能である、
    ことを特徴とするインターコネクト装置。
  2. 第1のメモリ・チャネルが、前記アドレス・マップ内の第1の領域の設定可能なパラメータによって制御された第1のサイズの第1のメモリ・インタリーブ・セグメントと、該アドレス・マップ内の第2の領域の設定可能なパラメータによって制御された第2のサイズの第2のメモリ・インタリーブ・セグメントとを有することを特徴とする請求項1に記載の装置。
  3. それらのメモリ・チャネルの各メモリ・インタリーブ・セグメントは、該メモリ・チャネルを形成する1つ又はそれよりも多くのDRAMデバイスに構成された最小バースト・サイズと、該メモリ・チャネルのサポートされた構成に対して予測される最大DRAMメモリ・ページサイズとによって境界された所定の長さで前記アドレス空間において定義かつインタリーブされ、前記トランザクションは、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答を含むことを特徴とする請求項1に記載の装置。
  4. 所定の領域に割り当てられた前記アドレス空間内の前記メモリ・インタリーブ・セグメントの前記所定の長さを制御する前記設定可能なパラメータは、その領域において該メモリ・インタリーブ・セグメントによるトランザクションを有すると予想される予測された種類のアプリケーションに基づくことを特徴とする請求項1に記載の装置。
  5. 前記アドレス・マップ内の第1の領域が、第1の量のバイトで構成された粒度を有して第1のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有し、該アドレス・マップ内の第2の領域が、第2の量のバイトで構成された粒度を有して該第1のメモリ・チャネルからその領域に割り当てられた所定のメモリ・インタリーブ・セグメントを有することを特徴とする請求項1に記載の装置。
  6. 1つ又はそれよりも多くのイニシエータ・アイピー(IP)コアとインターコネクト装置に結合された複数のターゲットIPコアとの間でトランザクションを該トランザクションを該ターゲットIPコアに関連付ける供給されたトランザクションアドレスに基づいて経路指定する集積回路のためのインターコネクト装置であって、
    第1の集合ターゲットを構成する2以上のチャネルを含むターゲットIPコアに対して割り当てられたアドレスでアドレス・マップを実施し、
    前記2以上のチャネルは、前記第1の集合ターゲットに割り当てられたアドレス空間をポピュレートしてイニシエータIPコアへの単一のターゲットとして呈示され、インターコネクト装置が、分断論理を実施して、前記第1の集合ターゲット内の第1のチャネルから第2のチャネルまでのチャネル・アドレス境界と交差するアドレス・シーケンスを有する第1のイニシエータIPコアからの個々のトランザクションを2以上のバーストトランザクションに分断し、
    第1の分断されたバーストトランザクションが、前記第1のチャネルの前記アドレス境界内に適合するように分断され、第2の分断されたバーストトランザクションが、前記第2のチャネルの前記アドレス境界内に適合するように分断される、
    ことを特徴とするインターコネクト装置。
  7. 前記トランザクションは、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答を含み、該トランザクションは、前記第1のイニシエータIPコアからの同じスレッドの一部であることを特徴とする請求項6に記載の装置。
  8. 前記複数のターゲットIPコアの前記第1の集合ターゲットは、前記アドレス・マップ内の該第1の集合ターゲットのためのアドレス空間内でインタリーブされた2以上のメモリ・チャネルを含み、該チャネルは、メモリ・チャネルであり、分断論理が、該第1の集合ターゲットにおいて前記チャネル・アドレス境界と交差する個々のバーストトランザクションを検出かつその後に分断して各バースト・トランザクションのバースト・サイズ及び開始アドレスが該チャネル境界から独立であることを可能にすることを特徴とする請求項6に記載の装置。
  9. 前記集積回路内のターゲットIPコアに対して割り当てられたアドレスでアドレス・マップを実施して、該集積回路内の該ターゲットIPコアとイニシエータIPコアの間で前記トランザクションを経路指定し、
    各メモリ・チャネルが、所定のメモリ・インタリーブ・セグメントに分割されて、その後に他のメモリ・チャネルからのメモリ・インタリーブ・セグメントとインタリーブされ、それらのメモリ・チャネルの各メモリ・インタリーブ・セグメントは、システム設計者によるメモリ設計仕様によって許容されるバースト長要求によって抑制されないサイズ粒度で前記アドレス空間において定義かつインタリーブされる、
    ことを特徴とする請求項8に記載の装置。
  10. 前記インタリーブされた2以上のメモリ・チャネルの前記集合ターゲットへの第1の要求に関連する論理宛先アドレスに基づいて第1のイニシエータIPコアが前記アドレス・マップに問い合わせるためにインターコネクト装置とインタフェース接続し、かつどのメモリ・チャネルが該第1の要求に供することになるかということと、該第1のIPコアが該集合ターゲット内の各メモリ・チャネルの物理的IPアドレスを知る必要がないように、該第1の要求をその要求に供する該集合ターゲット内の各メモリ・チャネルの該物理的IPアドレスに経路指定する方法とを判断するイニシエータ・エージェント、
    を更に含み、
    メモリ・インタリーブ・セグメントのサイズ粒度が、DRAM内に構成されたDRAMメモリ設計仕様によって許容される最小バースト長さ要求と該メモリ構成によって認識されるような予測最大DRAMメモリページ長さとの間の所定の長さであり、この粒度のサイズが、設定可能である、
    ことを特徴とする請求項6に記載の装置。
  11. 1つ又はそれよりも多くのイニシエータ・アイピー(IP)コアとインターコネクト装置に結合された複数のターゲットIPコアとの間でトランザクションを通信する集積回路のためのインターコネクト装置であって、
    2以上のメモリ・チャネルが、ターゲットIPコアの第1の集合ターゲットを構成し、該2以上のメモリ・チャネルは、該第1の集合ターゲットに割り当てられたアドレス空間をポピュレートして、イニシエータIPコアの単一のターゲットとして呈示され、
    インターコネクト装置が、分断論理を実施して、前記第1の集合ターゲット内の第1のメモリ・チャネルから第2のメモリ・チャネルまでのメモリ・チャネル・アドレス境界と交差する個々の2次元(2D)トランザクションを、1よりも大きい高さ値、並びにストライド寸法及び幅寸法を有する2以上の2Dトランザクションに分断し、これらは、該第1の集合ターゲットのメモリ・チャネル・アドレス境界内に適合するように分断される、
    ことを特徴とするインターコネクト装置。
  12. 前記第1の集合ターゲットIPコアに経路指定されたトランザクションに対する順序付けを維持するためにインターコネクト装置の内部にあるフロー制御論理、
    を更に含み、
    前記フロー制御論理は、同じイニシエータIPコアスレッドからの複数のトランザクションが、同時に集合ターゲットの複数のチャネルに対して未処理であることを可能にするように構成され、該第1の集合ターゲット内の該複数のチャネルは、物理的に異なるアドレスを有するターゲットIPコアにマップされ、
    前記トランザクションは、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答を含み、該トランザクションは、第1のイニシエータIPコアからの同じスレッドの一部である、
    ことを特徴とする請求項11に記載の装置。
  13. バースト要求内の要求バイトの最初のワードの開始アドレス及び該バースト要求の要求バイトの最後のワードの最終アドレスにより、そのバースト要求内の該要求バイトが1つ又はそれよりも多くのチャネル・アドレス境界にわたって及んで該バースト要求内のワード要求の全てを満たす時を検出する検出器、
    を更に含み、
    前記トランザクションは、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答を含む、
    ことを特徴とする請求項12に記載の装置。
  14. 前記アドレス・マップの第1の領域が、タイル方式のピクセルデータとして含まれる2Dデータの格納に対して割り当てられ、
    DRAMメモリ・アドレスが、所定のピクセルに隣接する行(ロウ)及び列(コラム)のピクセルが同じDRAMページに格納されるように編成される、
    ことを特徴とする請求項12に記載の装置。
  15. 前記フロー制御論理は、少なくとも第1及び第2のメモリ・チャネルにわたって及ぶデータを利用する、第1のイニシエータIPコアから前記第1の集合ターゲットまでの第1のスレッドからの第1の2Dトランザクションと、デッドロック分断論理を実施する該フロー制御論理に基づいて同時に未処理であるように少なくとも該第1及び該第2のメモリ・チャネルにわたって及ぶデータを利用する、第2のイニシエータIPコアから該第1の集合ターゲットまでの第2のスレッドからの第2の2Dトランザクションとをサポートするように構成されることを特徴とする請求項13に記載の装置。
  16. 1つ又はそれよりも多くのイニシエータ・アイピー(IP)コアとインターコネクト装置に結合された複数のターゲットIPコアとの間でトランザクションを通信する集積回路のためのインターコネクト装置であって、
    第1のイニシエータIPコアから複数のターゲットIPコアに出された複数のトランザクションをサポートし、同時に該トランザクション内の予想実行順序を維持するように構成された論理を実施し、
    前記論理は、第2のトランザクションが、前記第1のイニシエータIPコアから第2のターゲットIPコアに、同じ第1のイニシエータIPコアから第1のターゲットIPコアに出された第1のトランザクションが完了する前に出されることをサポートし、同時に、該論理がいかなる並べ替えバッファリングも含まない場合に該第1のトランザクションが該第2のトランザクションの前に完了することを保証し、かつ該第1のトランザクション及び第2のトランザクション内の予想実行順序が維持されることを保証する、
    ことを特徴とするインターコネクト装置。
  17. 前記第1及び第2のトランザクションは、前記第1のイニシエータIPコアからの同じスレッドの一部であり、該第1のトランザクション内の前記予想実行順序は、他のスレッドの順序付けから独立していることを特徴とする請求項16に記載の装置。
  18. 前記第1及び第2のトランザクションの各々は、1つ又はそれよりも多くの要求及び1つ又はそれよりも多くの任意的な応答から成り、前記複数のターゲットIPコアの集合ターゲットIPコアが、アドレス・マップ内の集合ターゲットのためのアドレス空間内でインタリーブされた2以上のメモリ・チャネルを含むことを特徴とする請求項16に記載の装置。
  19. 前記論理は、前記第1のイニシエータIPコアから前記第1及び第2のターゲットIPコアに出された前記複数のトランザクションと同時に、第2のイニシエータIPコアから少なくとも該第1のターゲットIPコアに出された1つ又はそれよりも多くのトランザクションをサポートし、一方で該トランザクションの全てに対する前記予想実行順序を維持し、それによっていくつかのイニシエータからのトランザクションがいくつかのターゲットに対して同時に未処理であることを可能にするように構成されることを特徴とする請求項16に記載の装置。
  20. 前記フロー制御論理は、ターゲットIPコアの宛先アドレスまでの要求経路内のスレッド分割ユニットに関連付けられ、該スレッド分割ユニットは、フロー制御を実施して、前記第1のイニシエータIPコアからの同じスレッドからのその同じスレッド内の未処理要求によって使用されている現在の物理的経路以外の第1の物理的経路に向かう次の要求を出すことを該現在の物理的経路に向かうその同じスレッド内の未処理要求からの全ての肯定応答通知が該スレッド分割ユニットに通信されて戻るまで防止することを特徴とする請求項18に記載の装置。
JP2010515052A 2007-06-25 2008-06-25 トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置 Pending JP2010531518A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US94609607P 2007-06-25 2007-06-25
US12/144,883 US8407433B2 (en) 2007-06-25 2008-06-24 Interconnect implementing internal controls
PCT/US2008/068107 WO2009002998A1 (en) 2007-06-25 2008-06-25 An interconnect implementing internal controls

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010225561A Division JP2011054184A (ja) 2007-06-25 2010-10-05 トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置

Publications (1)

Publication Number Publication Date
JP2010531518A true JP2010531518A (ja) 2010-09-24

Family

ID=40137732

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010515052A Pending JP2010531518A (ja) 2007-06-25 2008-06-25 トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置
JP2010225561A Pending JP2011054184A (ja) 2007-06-25 2010-10-05 トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010225561A Pending JP2011054184A (ja) 2007-06-25 2010-10-05 トランザクション順序付けを維持しながら複数のターゲットへの未処理要求をサポートする種々の方法および装置

Country Status (4)

Country Link
US (6) US8407433B2 (ja)
EP (3) EP2413355B1 (ja)
JP (2) JP2010531518A (ja)
WO (1) WO2009002998A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078895A (ja) * 2010-09-30 2012-04-19 Kyocera Mita Corp 情報処理装置
WO2014103144A1 (ja) * 2012-12-28 2014-07-03 パナソニック株式会社 インタフェース装置、およびメモリバスシステム
JP2015158943A (ja) * 2011-12-09 2015-09-03 クアルコム,インコーポレイテッド 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
KR101752117B1 (ko) 2013-12-27 2017-06-28 퀄컴 인코포레이티드 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치

Families Citing this family (186)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8407433B2 (en) 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
US8504992B2 (en) 2003-10-31 2013-08-06 Sonics, Inc. Method and apparatus for establishing a quality of service model
US9087036B1 (en) 2004-08-12 2015-07-21 Sonics, Inc. Methods and apparatuses for time annotated transaction level modeling
US7913043B2 (en) * 2004-05-14 2011-03-22 Bakbone Software, Inc. Method for backup storage device selection
US7562194B2 (en) * 2006-02-06 2009-07-14 Intel Corporation Method and apparatus for exploiting parallelism across multiple traffic streams through a single channel
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8868397B2 (en) 2006-11-20 2014-10-21 Sonics, Inc. Transaction co-validation across abstraction layers
US8108648B2 (en) * 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8464009B2 (en) * 2008-06-04 2013-06-11 Oracle America, Inc. Method for memory interleave support with a ceiling mask
US8145805B2 (en) * 2008-06-09 2012-03-27 Emulex Design & Manufacturing Corporation Method for re-sequencing commands and data between a master and target devices utilizing parallel processing
US8190848B2 (en) * 2008-07-28 2012-05-29 Lantiq Deutschland Gmbh Interleaver memory allocation method and apparatus
US20100070656A1 (en) * 2008-09-12 2010-03-18 Atto Technology, Inc. System and method for enhanced load balancing in a storage system
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8086783B2 (en) * 2009-02-23 2011-12-27 International Business Machines Corporation High availability memory system
WO2010101754A2 (en) * 2009-03-06 2010-09-10 Rambus Inc. Memory interface with interleaved control information
US8190804B1 (en) * 2009-03-12 2012-05-29 Sonics, Inc. Various methods and apparatus for a memory scheduler with an arbiter
JP4881404B2 (ja) * 2009-03-27 2012-02-22 株式会社東芝 回路記述生成装置および機能検証方法
JP5365336B2 (ja) * 2009-05-01 2013-12-11 ソニー株式会社 メモリ制御装置およびメモリ制御方法
US8713248B2 (en) * 2009-06-02 2014-04-29 Nokia Corporation Memory device and method for dynamic random access memory having serial interface and integral instruction buffer
US8359421B2 (en) * 2009-08-06 2013-01-22 Qualcomm Incorporated Partitioning a crossbar interconnect in a multi-channel memory system
US8291313B1 (en) * 2009-08-26 2012-10-16 Adobe Systems Incorporated Generation of a container hierarchy from a document design
US8478946B2 (en) * 2009-09-08 2013-07-02 Advanced Micro Devices, Inc. Method and system for local data sharing
US9063825B1 (en) * 2009-09-21 2015-06-23 Tilera Corporation Memory controller load balancing with configurable striping domains
US8356122B2 (en) 2010-01-08 2013-01-15 International Business Machines Corporation Distributed trace using central performance counter memory
EP2503741B1 (en) * 2009-11-18 2014-09-17 Nec Corporation Dynamic route branching system and dynamic route branching method
US8694947B1 (en) * 2009-12-09 2014-04-08 The Mathworks, Inc. Resource sharing workflows within executable graphical models
US20110213949A1 (en) * 2010-03-01 2011-09-01 Sonics, Inc. Methods and apparatus for optimizing concurrency in multiple core systems
US8150215B2 (en) * 2010-03-24 2012-04-03 Altek Corporation Routable image pipeline device
US8392689B1 (en) * 2010-05-24 2013-03-05 Western Digital Technologies, Inc. Address optimized buffer transfer requests
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8972995B2 (en) * 2010-08-06 2015-03-03 Sonics, Inc. Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads
US9268720B2 (en) * 2010-08-31 2016-02-23 Qualcomm Incorporated Load balancing scheme in multiple channel DRAM systems
US8601288B2 (en) 2010-08-31 2013-12-03 Sonics, Inc. Intelligent power controller
WO2012036905A1 (en) * 2010-09-16 2012-03-22 Apple Inc. Multi-ported memory controller with ports associated with traffic classes
US8314807B2 (en) 2010-09-16 2012-11-20 Apple Inc. Memory controller with QoS-aware scheduling
US8631213B2 (en) 2010-09-16 2014-01-14 Apple Inc. Dynamic QoS upgrading
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
EP2444903A1 (en) 2010-09-29 2012-04-25 STMicroelectronics (Grenoble 2) SAS A transaction reordering arrangement
EP2442231A1 (en) * 2010-09-29 2012-04-18 STMicroelectronics (Grenoble 2) SAS Reordering arrangement
US9424210B1 (en) * 2010-10-22 2016-08-23 Altera Corporation SDRAM memory organization and efficient access
US8438306B2 (en) 2010-11-02 2013-05-07 Sonics, Inc. Apparatus and methods for on layer concurrency in an integrated circuit
US9405700B2 (en) 2010-11-04 2016-08-02 Sonics, Inc. Methods and apparatus for virtualization in an integrated circuit
US8892844B2 (en) 2011-03-07 2014-11-18 Micron Technology, Inc. Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101966712B1 (ko) 2011-03-25 2019-04-09 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US8484235B2 (en) * 2011-03-28 2013-07-09 International Business Machines Corporation Dynamically switching the serialization method of a data structure
US10838886B2 (en) 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
US9158592B2 (en) * 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
KR101639853B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 자원들 및 상호접속 구조들의 비집중 할당
CN103649931B (zh) 2011-05-20 2016-10-12 索夫特机械公司 用于支持由多个引擎执行指令序列的互连结构
TWI467372B (zh) * 2011-07-06 2015-01-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
MX348600B (es) 2011-08-18 2017-06-21 Unitload Pty Ltd Estructura de soporte de carga.
KR101687273B1 (ko) * 2011-08-22 2016-12-16 인텔 코포레이션 동적으로 선택 가능한 중복 공유된 링크 물리적 경로들을 사용하여 개방형 코어 프로토콜 기반 상호 접속 네트워크들에서 데이터 처리량 개선을 위한 방법
US11048410B2 (en) * 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
US8798038B2 (en) * 2011-08-26 2014-08-05 Sonics, Inc. Efficient header generation in packetized protocols for flexible system on chip architectures
US8514889B2 (en) 2011-08-26 2013-08-20 Sonics, Inc. Use of common data format to facilitate link width conversion in a router with flexible link widths
US8868941B2 (en) 2011-09-19 2014-10-21 Sonics, Inc. Apparatus and methods for an interconnect power manager
US8874976B2 (en) 2011-09-29 2014-10-28 Intel Corporation Providing error handling support to legacy devices
US8713234B2 (en) 2011-09-29 2014-04-29 Intel Corporation Supporting multiple channels of a single interface
US8713240B2 (en) 2011-09-29 2014-04-29 Intel Corporation Providing multiple decode options for a system-on-chip (SoC) fabric
US8711875B2 (en) 2011-09-29 2014-04-29 Intel Corporation Aggregating completion messages in a sideband interface
US8929373B2 (en) 2011-09-29 2015-01-06 Intel Corporation Sending packets with expanded headers
US9280468B2 (en) 2011-10-26 2016-03-08 Qualcomm Technologies, Inc. Three channel cache-coherency socket protocol
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
EP2597815B1 (de) * 2011-11-23 2019-07-24 Siemens Schweiz AG Verfahren zur identifikation von in einem kommunikationsnetzwerk zusammengefassten geräten
US9053251B2 (en) 2011-11-29 2015-06-09 Intel Corporation Providing a sideband message interface for system on a chip (SoC)
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法
US9239786B2 (en) 2012-01-18 2016-01-19 Samsung Electronics Co., Ltd. Reconfigurable storage device
KR20130085672A (ko) * 2012-01-20 2013-07-30 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 시스템의 동작 방법
US20130205051A1 (en) * 2012-02-07 2013-08-08 Qualcomm Incorporated Methods and Devices for Buffer Allocation
US9047018B1 (en) * 2012-03-20 2015-06-02 Emc Corporation Method and system for zero-copy disk IO using sector unaligned buffers
US9135384B1 (en) * 2012-05-10 2015-09-15 Xilinx, Inc. Compilation and simulation of a circuit design
ITTO20120470A1 (it) 2012-05-30 2013-12-01 St Microelectronics Srl Procedimento per gestire transazioni di accesso e relativo sistema
US9378023B2 (en) * 2012-06-13 2016-06-28 International Business Machines Corporation Cross-pipe serialization for multi-pipeline processor
US9569393B2 (en) 2012-08-10 2017-02-14 Rambus Inc. Memory module threading with staggered data transfers
US8791573B1 (en) * 2012-08-31 2014-07-29 Altera Corporation Skewed partial column input/output floorplan
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
US9053058B2 (en) 2012-12-20 2015-06-09 Apple Inc. QoS inband upgrade
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
WO2014151018A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for executing multithreaded instructions grouped onto blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US20140310503A1 (en) * 2013-04-12 2014-10-16 Texas Instruments Incorporated Memory interleaving on memory channels
US20140310484A1 (en) * 2013-04-16 2014-10-16 Nvidia Corporation System and method for globally addressable gpu memory
US9471521B2 (en) * 2013-05-15 2016-10-18 Stmicroelectronics S.R.L. Communication system for interfacing a plurality of transmission circuits with an interconnection network, and corresponding integrated circuit
US9015388B2 (en) * 2013-06-28 2015-04-21 Intel Corporation Controlling access to storage in a computing device
US8973002B1 (en) * 2013-09-16 2015-03-03 Fmr Llc Business rules batch processor
GB2519349B (en) * 2013-10-18 2018-06-27 Stmicroelectronics Grenoble2 Sas Method and apparatus for supporting the use of interleaved memory regions
GB2519351A (en) * 2013-10-18 2015-04-22 St Microelectronics Sa A method and apparatus for use with different memory maps
US9652373B2 (en) 2013-12-16 2017-05-16 International Business Machines Corporation Adaptive statistics for a linear address space
KR20150093004A (ko) * 2014-02-06 2015-08-17 삼성전자주식회사 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법
US9460012B2 (en) * 2014-02-18 2016-10-04 National University Of Singapore Fusible and reconfigurable cache architecture
US10616333B2 (en) 2014-04-09 2020-04-07 Stmicroelectronics S.R.L. System for the management of out-of-order traffic in an interconnect network and corresponding method and integrated circuit
US20160026588A1 (en) * 2014-07-23 2016-01-28 Qualcomm Incorporated System and method for bus width conversion in a system on a chip
KR20160028680A (ko) * 2014-09-04 2016-03-14 삼성전자주식회사 데이터 저장 장치와 이의 작동 방법
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9665518B2 (en) * 2014-09-24 2017-05-30 Nxp Usa, Inc. Methods and systems for controlling ordered write transactions to multiple devices using switch point networks
US10042784B2 (en) * 2014-10-13 2018-08-07 Microchip Technology Incorporated Side channel access through USB streams
US10503405B2 (en) * 2015-02-10 2019-12-10 Red Hat Israel, Ltd. Zero copy memory reclaim using copy-on-write
US9378049B1 (en) * 2015-02-12 2016-06-28 Amazon Technologies, Inc. Servicing I/O requests in an I/O adapter device
US10037301B2 (en) * 2015-03-04 2018-07-31 Xilinx, Inc. Circuits and methods for inter-processor communication
US10049001B1 (en) 2015-03-27 2018-08-14 Amazon Technologies, Inc. Dynamic error correction configuration
US9886405B1 (en) 2015-03-30 2018-02-06 Amazon Technologies, Inc. Low latency write requests over a network using a pipelined I/O adapter device
US9940284B1 (en) 2015-03-30 2018-04-10 Amazon Technologies, Inc. Streaming interconnect architecture
US11151533B2 (en) 2015-03-31 2021-10-19 Visa International Service Association Multi-protocol data transfer
US10387343B2 (en) * 2015-04-07 2019-08-20 International Business Machines Corporation Processing of events for accelerators utilized for parallel processing
KR102464801B1 (ko) 2015-04-14 2022-11-07 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
US10394743B2 (en) * 2015-05-28 2019-08-27 Dell Products, L.P. Interchangeable I/O modules with individual and shared personalities
US10152112B2 (en) 2015-06-10 2018-12-11 Sonics, Inc. Power manager with a power switch arbitrator
US9864538B1 (en) 2015-06-25 2018-01-09 Amazon Technologies, Inc. Data size reduction
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US10579519B2 (en) 2015-07-30 2020-03-03 Hewlett Packard Enterprise Development Lp Interleaved access of memory
US9904635B2 (en) 2015-08-27 2018-02-27 Samsung Electronics Co., Ltd. High performance transaction-based memory systems
US10423733B1 (en) 2015-12-03 2019-09-24 The Mathworks, Inc. Systems and methods for sharing resources having different data types
US9772874B2 (en) 2016-01-29 2017-09-26 International Business Machines Corporation Prioritization of transactions based on execution by transactional core with super core indicator
KR102707683B1 (ko) * 2016-07-12 2024-09-20 삼성전자주식회사 메모리 채널의 소프트웨어 트레이닝을 수행하는 전자 장치 및 그것의 메모리 채널 트레이닝 방법
US10437946B1 (en) * 2016-09-01 2019-10-08 Xilinx, Inc. Using implemented core sources for simulation
US9971691B2 (en) 2016-09-12 2018-05-15 Intel Corporation Selevtive application of interleave based on type of data to be stored in memory
US10911261B2 (en) 2016-12-19 2021-02-02 Intel Corporation Method, apparatus and system for hierarchical network on chip routing
US10846126B2 (en) 2016-12-28 2020-11-24 Intel Corporation Method, apparatus and system for handling non-posted memory write transactions in a fabric
US10921874B2 (en) 2017-03-06 2021-02-16 Facebook Technologies, Llc Hardware-based operating point controller for circuit regions in an integrated circuit
US11231769B2 (en) 2017-03-06 2022-01-25 Facebook Technologies, Llc Sequencer-based protocol adapter
JP6705401B2 (ja) * 2017-03-13 2020-06-03 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
US10762006B2 (en) * 2017-03-31 2020-09-01 Intel Corporation Techniques to dynamically enable memory channels on a compute platform
US10243882B1 (en) 2017-04-13 2019-03-26 Xilinx, Inc. Network on chip switch interconnect
CN108363615B (zh) * 2017-09-18 2019-05-14 清华大学 用于可重构处理系统的任务分配方法和系统
US10936221B2 (en) 2017-10-24 2021-03-02 Micron Technology, Inc. Reconfigurable memory architectures
US11281608B2 (en) * 2017-12-11 2022-03-22 Micron Technology, Inc. Translation system for finer grain memory architectures
US10673745B2 (en) 2018-02-01 2020-06-02 Xilinx, Inc. End-to-end quality-of-service in a network-on-chip
US11709624B2 (en) * 2018-02-15 2023-07-25 Xilinx, Inc. System-on-chip having multiple circuits and memory controller in separate and independent power domains
US11041211B2 (en) 2018-02-22 2021-06-22 Xilinx, Inc. Power distribution for active-on-active die stack with reduced resistance
US10503690B2 (en) 2018-02-23 2019-12-10 Xilinx, Inc. Programmable NOC compatible with multiple interface communication protocol
US10621129B2 (en) 2018-03-27 2020-04-14 Xilinx, Inc. Peripheral interconnect for configurable slave endpoint circuits
US10628308B2 (en) * 2018-05-24 2020-04-21 Qualcomm Incorporated Dynamic adjustment of memory channel interleave granularity
US10505548B1 (en) 2018-05-25 2019-12-10 Xilinx, Inc. Multi-chip structure having configurable network-on-chip
US11055217B2 (en) * 2018-06-01 2021-07-06 Apple Inc. Using additional intermediate buffer queues to identify interleaved media data to be read together
CN108845958B (zh) * 2018-06-19 2022-05-17 中国科学院软件研究所 一种交织器映射和动态内存管理系统及方法
US10929060B2 (en) * 2018-07-17 2021-02-23 Arm Limited Data access request specifying enable vector
US10838908B2 (en) 2018-07-20 2020-11-17 Xilinx, Inc. Configurable network-on-chip for a programmable device
WO2020024113A1 (zh) * 2018-07-31 2020-02-06 华为技术有限公司 一种内存交织方法及装置
US10824505B1 (en) 2018-08-21 2020-11-03 Xilinx, Inc. ECC proxy extension and byte organization for multi-master systems
US10963460B2 (en) 2018-12-06 2021-03-30 Xilinx, Inc. Integrated circuits and methods to accelerate data queries
US10761822B1 (en) * 2018-12-12 2020-09-01 Amazon Technologies, Inc. Synchronization of computation engines with non-blocking instructions
US10990517B1 (en) * 2019-01-28 2021-04-27 Xilinx, Inc. Configurable overlay on wide memory channels for efficient memory access
US10936486B1 (en) 2019-02-21 2021-03-02 Xilinx, Inc. Address interleave support in a programmable device
US10680615B1 (en) 2019-03-27 2020-06-09 Xilinx, Inc. Circuit for and method of configuring and partially reconfiguring function blocks of an integrated circuit device
US11188312B2 (en) 2019-05-23 2021-11-30 Xilinx, Inc. Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices
US10891414B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Hardware-software design flow for heterogeneous and programmable devices
US10891132B2 (en) 2019-05-23 2021-01-12 Xilinx, Inc. Flow convergence during hardware-software design for heterogeneous and programmable devices
US11301295B1 (en) 2019-05-23 2022-04-12 Xilinx, Inc. Implementing an application specified as a data flow graph in an array of data processing engines
US10977018B1 (en) 2019-12-05 2021-04-13 Xilinx, Inc. Development environment for heterogeneous devices
US11210221B2 (en) 2019-12-10 2021-12-28 Pony Ai Inc. Memory architecture for efficient spatial-temporal data storage and access
US11200167B2 (en) * 2019-12-10 2021-12-14 Pony Ai Inc. Dynamic memory address encoding
US11222258B2 (en) 2020-03-27 2022-01-11 Google Llc Load balancing for memory channel controllers
IT202000009364A1 (it) * 2020-04-29 2021-10-29 St Microelectronics Srl Procedimento per accedere a una memoria e circuito corrispondente
CN111930651B (zh) * 2020-08-14 2022-03-08 山东云海国创云计算装备产业创新中心有限公司 一种指令执行方法、装置、设备及可读存储介质
US11496418B1 (en) 2020-08-25 2022-11-08 Xilinx, Inc. Packet-based and time-multiplexed network-on-chip
WO2022086559A1 (en) * 2020-10-23 2022-04-28 Hewlett-Packard Development Company, L.P. Access to volatile memories
JP2024507141A (ja) * 2021-02-16 2024-02-16 グーグル エルエルシー メモリ保護データを使用すること
US11520717B1 (en) 2021-03-09 2022-12-06 Xilinx, Inc. Memory tiles in data processing engine array
US11336287B1 (en) 2021-03-09 2022-05-17 Xilinx, Inc. Data processing engine array architecture with memory tiles
US11687281B2 (en) * 2021-03-31 2023-06-27 Advanced Micro Devices, Inc. DRAM command streak efficiency management
CN113271475B (zh) * 2021-04-12 2023-01-10 北京奇艺世纪科技有限公司 一种数据处理方法、系统、电子设备及存储介质
US20220358434A1 (en) * 2021-05-06 2022-11-10 Honeywell International Inc. Foundation applications as an accelerator providing well defined extensibility and collection of seeded templates for enhanced user experience and quicker turnaround
US20230057903A1 (en) 2021-08-20 2023-02-23 Xilinx, Inc. Controlling a data processing array using an array controller
WO2023122127A1 (en) * 2021-12-21 2023-06-29 Sambanova Systems Inc Non-uniform memory interleaving processor and method
US11848670B2 (en) 2022-04-15 2023-12-19 Xilinx, Inc. Multiple partitions in a data processing array
CN114896182B (zh) 2022-05-11 2023-10-20 地平线(上海)人工智能技术有限公司 存储装置、方法、电子设备和存储介质
US12079158B2 (en) 2022-07-25 2024-09-03 Xilinx, Inc. Reconfigurable neural engine with extensible instruction set architecture

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006277404A (ja) * 2005-03-29 2006-10-12 Nec Corp マルチプロセッサシステムおよびメモリアクセス方法

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4189767A (en) * 1978-06-05 1980-02-19 Bell Telephone Laboratories, Incorporated Accessing arrangement for interleaved modular memories
ATE185631T1 (de) * 1991-08-16 1999-10-15 Cypress Semiconductor Corp Dynamisches hochleistungsspeichersystem
US5708659A (en) * 1993-10-20 1998-01-13 Lsi Logic Corporation Method for hashing in a packet network switching system
US5860159A (en) * 1996-07-01 1999-01-12 Sun Microsystems, Inc. Multiprocessing system including an apparatus for optimizing spin--lock operations
US5946710A (en) * 1996-11-14 1999-08-31 Unisys Corporation Selectable two-way, four-way double cache interleave scheme
US5835741A (en) * 1996-12-31 1998-11-10 Compaq Computer Corporation Bus-to-bus bridge in computer system, with fast burst memory range
US5948089A (en) * 1997-09-05 1999-09-07 Sonics, Inc. Fully-pipelined fixed-latency communications system with a real time dynamic bandwidth allocation
US6097212A (en) * 1997-10-09 2000-08-01 Lattice Semiconductor Corporation Variable grain architecture for FPGA integrated circuits
US6292705B1 (en) * 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6182183B1 (en) * 1998-11-13 2001-01-30 Sonics, Inc. Communications system and method with multilevel connection identification
US6393500B1 (en) * 1999-08-12 2002-05-21 Mips Technologies, Inc. Burst-configurable data bus
US6487621B1 (en) * 1999-08-17 2002-11-26 Compaq Information Technologies Group, L.P. Architecture, system and method for ensuring an ordered transaction on at least one of a plurality of multi-processor buses that experience a hit-to-modified snoop cycle
US6526462B1 (en) * 1999-11-19 2003-02-25 Hammam Elabd Programmable multi-tasking memory management system
US6330225B1 (en) 2000-05-26 2001-12-11 Sonics, Inc. Communication system and method for different quality of service guarantees for different data flows
US7325221B1 (en) * 2000-08-08 2008-01-29 Sonics, Incorporated Logic system with configurable interface
US6820165B2 (en) * 2000-08-31 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for increasing the count of outstanding split transactions
US6874039B2 (en) * 2000-09-08 2005-03-29 Intel Corporation Method and apparatus for distributed direct memory access for systems on chip
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US6601145B2 (en) * 2000-12-27 2003-07-29 International Business Machines Corporation Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls
US6845482B2 (en) * 2001-02-28 2005-01-18 Qualcomm Incorporated Interleaver for turbo decoder
US7165094B2 (en) 2001-03-09 2007-01-16 Sonics, Inc. Communications system and method with non-blocking shared interface
US6392572B1 (en) * 2001-05-11 2002-05-21 Qualcomm Incorporated Buffer architecture for a turbo decoder
US20030004699A1 (en) * 2001-06-04 2003-01-02 Choi Charles Y. Method and apparatus for evaluating an integrated circuit model
US20040010652A1 (en) 2001-06-26 2004-01-15 Palmchip Corporation System-on-chip (SOC) architecture with arbitrary pipeline depth
US20030023794A1 (en) * 2001-07-26 2003-01-30 Venkitakrishnan Padmanabha I. Cache coherent split transaction memory bus architecture and protocol for a multi processor chip device
US6578117B2 (en) 2001-10-12 2003-06-10 Sonics, Inc. Method and apparatus for scheduling requests using ordered stages of scheduling criteria
US7194561B2 (en) 2001-10-12 2007-03-20 Sonics, Inc. Method and apparatus for scheduling requests to a resource using a configurable threshold
US20030088721A1 (en) * 2001-11-05 2003-05-08 Sharma Debendra Das Method and system for controlling flow of ordered, pipelined transactions between intercommunicating electronic devices
US7194566B2 (en) * 2002-05-03 2007-03-20 Sonics, Inc. Communication system and method with configurable posting points
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7100013B1 (en) * 2002-08-30 2006-08-29 Nvidia Corporation Method and apparatus for partial memory power shutoff
US7120765B2 (en) * 2002-10-30 2006-10-10 Intel Corporation Memory transaction ordering
US7243264B2 (en) * 2002-11-01 2007-07-10 Sonics, Inc. Method and apparatus for error handling in networks
EP1568036B1 (en) * 2002-11-20 2008-08-27 Nxp B.V. Sdram address mapping optimized for two-dimensional access
US7149829B2 (en) 2003-04-18 2006-12-12 Sonics, Inc. Various methods and apparatuses for arbitration among blocks of functionality
FR2857114B1 (fr) * 2003-07-04 2005-09-30 Arteris Systeme et procede de communication entre des modules
FR2858895B1 (fr) * 2003-08-13 2006-05-05 Arteris Procede et dispositif de gestion de priorite lors de la transmission d'un message
US7296105B2 (en) * 2003-10-03 2007-11-13 Sonics, Inc. Method and apparatus for configuring an interconnect to implement arbitration
US7665069B2 (en) * 2003-10-31 2010-02-16 Sonics, Inc. Method and apparatus for establishing a quality of service model
US8407433B2 (en) * 2007-06-25 2013-03-26 Sonics, Inc. Interconnect implementing internal controls
FR2862457B1 (fr) * 2003-11-13 2006-02-24 Arteris Systeme et procede de transmission d'une sequence de messages dans un reseau d'interconnexions.
FR2865334B1 (fr) * 2004-01-21 2006-03-03 Arteris Procede et systeme de transmission de messages dans un reseau d'interconnexions.
FR2867338B1 (fr) * 2004-03-02 2007-08-10 Arteris Procede et dispositif de commutation entre des agents
US7543088B2 (en) * 2004-03-11 2009-06-02 Sonics, Inc. Various methods and apparatuses for width and burst conversion
US7053351B2 (en) * 2004-03-30 2006-05-30 Matsushita Electric Industrial, Co., Ltd Near-field scanning optical microscope for laser machining of micro- and nano- structures
JPWO2005109205A1 (ja) 2004-04-15 2008-03-21 松下電器産業株式会社 情報処理装置およびデータアクセス方法
ATE425495T1 (de) * 2004-08-30 2009-03-15 Magima Digital Information Co Verfahren und system zum datentransfer
US7116131B1 (en) 2004-09-15 2006-10-03 Xilinx, Inc. High performance programmable logic devices utilizing dynamic circuitry
TWI254856B (en) * 2004-10-29 2006-05-11 Via Tech Inc Memory interleave method
US7155554B2 (en) * 2004-11-02 2006-12-26 Sonics, Inc. Methods and apparatuses for generating a single request for block transactions over a communication fabric
JP4820566B2 (ja) 2005-03-25 2011-11-24 パナソニック株式会社 メモリアクセス制御回路
US7461190B2 (en) * 2005-08-11 2008-12-02 P.A. Semi, Inc. Non-blocking address switch with shallow per agent queues
US7616036B1 (en) * 2005-09-12 2009-11-10 Virage Logic Corporation Programmable strobe and clock generator
FR2893471B1 (fr) * 2005-11-16 2008-01-25 Arteris Sa Systeme et procede de routage statique de flux de paquets de donnees dans un reseau d'interconnexion
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
FR2904445B1 (fr) * 2006-07-26 2008-10-10 Arteris Sa Systeme de gestion de messages transmis dans un reseau d'interconnexions sur puce
JP2008033722A (ja) * 2006-07-31 2008-02-14 Matsushita Electric Ind Co Ltd エンディアン変換回路を備えたデータ転送制御装置
US20080086577A1 (en) * 2006-10-04 2008-04-10 Mediatek Inc. Digital Television System, Memory Controller, and Method for Data Access
US7680988B1 (en) * 2006-10-30 2010-03-16 Nvidia Corporation Single interconnect providing read and write access to a memory shared by concurrent threads
US20080235421A1 (en) * 2007-03-22 2008-09-25 Siva Shankar Jayaratnam Technique and apparatus to optimize inter-port memory transaction sequencing on a multi-ported memory controller unit
JP5121291B2 (ja) * 2007-04-20 2013-01-16 株式会社ニューフレアテクノロジー データ転送システム
US8438320B2 (en) * 2007-06-25 2013-05-07 Sonics, Inc. Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8108648B2 (en) 2007-06-25 2012-01-31 Sonics, Inc. Various methods and apparatus for address tiling
US7818497B2 (en) * 2007-08-31 2010-10-19 International Business Machines Corporation Buffered memory module supporting two independent memory channels
US8429386B2 (en) 2009-06-30 2013-04-23 Oracle America, Inc. Dynamic tag allocation in a multithreaded out-of-order processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006277404A (ja) * 2005-03-29 2006-10-12 Nec Corp マルチプロセッサシステムおよびメモリアクセス方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012078895A (ja) * 2010-09-30 2012-04-19 Kyocera Mita Corp 情報処理装置
JP2015158943A (ja) * 2011-12-09 2015-09-03 クアルコム,インコーポレイテッド 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け
WO2014103144A1 (ja) * 2012-12-28 2014-07-03 パナソニック株式会社 インタフェース装置、およびメモリバスシステム
JP5793690B2 (ja) * 2012-12-28 2015-10-14 パナソニックIpマネジメント株式会社 インタフェース装置、およびメモリバスシステム
US10225168B2 (en) 2012-12-28 2019-03-05 Panasonic Intellectual Property Management Co. Ltd Interface apparatus and memory bus system
KR101752117B1 (ko) 2013-12-27 2017-06-28 퀄컴 인코포레이티드 단일 채널 내에서의 dram 공간적 통합을 위한 방법 및 장치

Also Published As

Publication number Publication date
EP2413355A1 (en) 2012-02-01
US20120036296A1 (en) 2012-02-09
US20080320255A1 (en) 2008-12-25
EP2216722A2 (en) 2010-08-11
WO2009002998A1 (en) 2008-12-31
EP2216722B1 (en) 2019-06-19
EP2216722A3 (en) 2012-11-21
US10062422B2 (en) 2018-08-28
JP2011054184A (ja) 2011-03-17
US20080320268A1 (en) 2008-12-25
US9495290B2 (en) 2016-11-15
US9292436B2 (en) 2016-03-22
EP2216722B8 (en) 2021-08-25
US20170140800A1 (en) 2017-05-18
US20080320476A1 (en) 2008-12-25
US20080320254A1 (en) 2008-12-25
EP2160762A1 (en) 2010-03-10
EP2413355B1 (en) 2021-08-11
EP2160762A4 (en) 2011-01-26
US8407433B2 (en) 2013-03-26

Similar Documents

Publication Publication Date Title
US10062422B2 (en) Various methods and apparatus for configurable mapping of address regions onto one or more aggregate targets
US10664421B1 (en) Reordering responses in a high performance on-chip network
KR101579897B1 (ko) 각각의 스레드 및 태그에 대한 메모리 액세스를 동시에 수행하기 위한 장치 및 방법
KR101467932B1 (ko) 상호접속부에서 멀티-쓰레드 오더링된 큐들에 대한 공유 저장기
Kumary et al. A 4.6 Tbits/s 3.6 GHz single-cycle NoC router with a novel switch allocator in 65nm CMOS
US8438320B2 (en) Various methods and apparatus for address tiling and channel interleaving throughout the integrated system
US8438306B2 (en) Apparatus and methods for on layer concurrency in an integrated circuit
US8484397B1 (en) Various methods and apparatus for a memory scheduler with an arbiter
US20110213949A1 (en) Methods and apparatus for optimizing concurrency in multiple core systems
KR20200091339A (ko) 최소 스토리지를 활용한 플렉시블 링크 폭들을 갖는 라우터에서 크레딧 흐름 제어 방식
JP2009505171A (ja) ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置
Bononi et al. System-Level Tools for NoC-Based Multi-Core Design
Zhang Design of On-chip Bus of Heterogeneous 3DIC Micro-processors.
Wang et al. Modeling a code-division multiple-access network-on-chip using SystemC
Hassan Customizable Memory Controller Architecture and Service Continuity for Off-Chip SDRAM Access in NoC-Based MPSoCs
van Hintum Resource virtualization for mapping multiple applications on the same platform

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20100813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100813

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121002