JP7457654B2 - Steps for implementing source-based routing within an interconnect fabric on a system-on-chip - Google Patents

Steps for implementing source-based routing within an interconnect fabric on a system-on-chip Download PDF

Info

Publication number
JP7457654B2
JP7457654B2 JP2020552300A JP2020552300A JP7457654B2 JP 7457654 B2 JP7457654 B2 JP 7457654B2 JP 2020552300 A JP2020552300 A JP 2020552300A JP 2020552300 A JP2020552300 A JP 2020552300A JP 7457654 B2 JP7457654 B2 JP 7457654B2
Authority
JP
Japan
Prior art keywords
transaction
agents
soc
destination
fabric
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020552300A
Other languages
Japanese (ja)
Other versions
JPWO2019190827A5 (en
JP2021519464A (en
Inventor
デサイ・シャイレンドラ
ピアース・マーク
ジェイン・アミト
バット・ルトゥル
トッテ・ロバート
シエラ・ジュアン
ガイクワド・パリマル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of JP2021519464A publication Critical patent/JP2021519464A/en
Publication of JPWO2019190827A5 publication Critical patent/JPWO2019190827A5/en
Priority to JP2024039915A priority Critical patent/JP2024079720A/en
Application granted granted Critical
Publication of JP7457654B2 publication Critical patent/JP7457654B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/17306Intercommunication techniques
    • G06F15/17325Synchronisation; Hardware support therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/3625Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a time dependent access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/16Multipoint routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/34Source routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0062Bandwidth consumption reduction during transfers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Description

関連出願への相互参照
本願は、2018年3月30日出願の米国仮特許出願第62/650,589 (PRTIP001P)号および2019年2月4日出願の米国仮出願第62/800,897 (PRT1P003P)号に基づく優先権を主張する。これら優先権主張基礎出願の各々は、すべての目的のためにその全体が参照によって本明細書に組み込まれる。
Cross-references to related applications This application is incorporated by reference to U.S. Provisional Patent Application No. 62/650,589 (PRTIP001P) filed March 30, 2018 and U.S. Provisional Patent Application No. 62/800,897 (filed February 4, 2019). PRT1P003P). Each of these priority underlying applications is incorporated herein by reference in its entirety for all purposes.

本願は、共有リソースへのアクセスをアービトレートすることに関し、特に、複数のトランザクションの部分の間でアービトレートして、クロックサイクルごとに相互接続に関連付けられている複数の仮想チャネルの1つを介して勝利部分を送信することに関する。 This application relates to arbitrating access to a shared resource, and in particular to arbitrating between portions of multiple transactions and transmitting the winning portion over one of multiple virtual channels associated with an interconnect every clock cycle.

システムオンチップ(「SoC」)は、複数のサブシステムを備える集積回路であり、しばしば、知的財産(「IP」)エージェントまたはコアと呼ばれる。IPエージェントは、典型的には、特定の機能を実装または実行するように設計された回路の「再利用可能な」ブロックである。SoCの開発者は、典型的には、複数のIPエージェントが互いに通信するように、チップ上にそれらのIPエージェントをレイアウトして相互接続する。IPエージェントを用いることにより、複雑なSoCを開発する時間およびコストを大幅に削減できる。 A system-on-a-chip (“SoC”) is an integrated circuit that includes multiple subsystems, often referred to as an intellectual property (“IP”) agent or core. IP agents are typically "reusable" blocks of circuitry designed to implement or perform a specific function. SoC developers typically lay out and interconnect multiple IP agents on a chip so that they communicate with each other. Using IP agents can significantly reduce the time and cost of developing complex SoCs.

SoCの開発者が直面する課題の1つは、様々なIPエージェントが相互に動作するように、それらをチップ上で相互接続することである。この問題に対処するために、半導体業界では、相互接続規格を適応させてきた。 One of the challenges faced by SoC developers is interconnecting various IP agents on a chip so that they work with each other. To address this problem, the semiconductor industry has adapted interconnect standards.

1つのかかる規格は、英国ケンブリッジにあるARM社によって開発および普及されたアドバンスト・マイクロコントローラ・バス・アーキテクチャ(AMBA)である。AMBAは、SoC上の機能IPエージェントの接続および管理のために幅広く利用されているバス相互接続規格である。 One such standard is the Advanced Microcontroller Bus Architecture (AMBA), developed and popularized by ARM Ltd. of Cambridge, England. AMBA is a widely used bus interconnect standard for connecting and managing functional IP agents on SoCs.

AMBAでは、トランザクションが、要求を定義し、別個の応答トランザクションを要求する。書き込みトランザクションでは、送信元が、リモート宛先にデータを書き込むことを要求する。書き込み動作が実行されると、宛先は、確認応答トランザクションを送信元に送り返す。書き込み動作は、応答トランザクションが送信元によって受信された時にのみ完了したと見なされる。読み出しトランザクションでは、送信元が、リモートロケーションを読み出すためにアクセスを要求する。読み出しトランザクションは、応答トランザクション(すなわち、アクセスされたコンテンツ)が送信元に返された時にのみ完了する。 In AMBA, a transaction defines a request and requires a separate response transaction. In a write transaction, a source requests to write data to a remote destination. Once the write operation is performed, the destination sends an acknowledgment transaction back to the source. A write operation is considered complete only when a response transaction is received by the sender. In a read transaction, a source requests access to read a remote location. A read transaction is only completed when the response transaction (ie, the accessed content) is returned to the source.

AMBAでは、アービトレーション処理が、複数の競合トランザクションの間の相互接続バスへのアクセスを許可するために用いられる。所与のアービトレーションサイクル中に、競合トランザクションの1つが、勝者として選択される。次いで、相互接続バスは、勝利トランザクションのデータ部の持続期間にわたって制御される。次のアービトレーションサイクルは、現在のトランザクションのためのデータすべてが完了した後にのみ開始する。この処理は、相互接続へのアクセスを巡って競合する複数の未処理のトランザクションがあるという条件で、連続的に繰り返される。 In AMBA, arbitration processing is used to grant access to an interconnect bus between multiple competing transactions. During a given arbitration cycle, one of the competing transactions is selected as the winner. The interconnect bus is then controlled for the duration of the data portion of the winning transaction. The next arbitration cycle begins only after all data for the current transaction is completed. This process is repeated continuously provided there are multiple outstanding transactions competing for access to the interconnect.

AMBA規格の1つの問題は、待ち時間である。バス相互接続は、トランザクションごとにアービトレートされる。トランザクションの任意の部分の間に、トランザクションが読み出し、書き込み、または、応答のいずれであるかに関わらず、バスは、トランザクション全体に対して制御される。トランザクションが開始すると、中断できない。例えば、トランザクションのデータ部が4サイクル長である場合、別のトランザクションがバスへアクセスできる前に、すべての4サイクルが完了する必要がある。結果として、(1)トランザクションは、クロックサイクルごとにはアービトレートできず、(2)すべての非勝利競合トランザクションは、現在のトランザクションのデータ部が完了するまで待機する必要がある。これらの要因の両方が、相互接続の効率およびSoCの全体パフォーマンスを下げる傾向がある。 One problem with the AMBA standard is latency. The bus interconnect is arbitrated on a transaction-by-transaction basis. During any part of a transaction, whether the transaction is a read, write, or response, the bus is controlled for the entire transaction. Once a transaction has started, it cannot be interrupted. For example, if the data portion of a transaction is four cycles long, all four cycles must complete before another transaction can access the bus. As a result, (1) transactions cannot be arbitrated every clock cycle, and (2) all non-winning conflicting transactions must wait until the data portion of the current transaction is complete. Both of these factors tend to reduce the efficiency of the interconnect and the overall performance of the SoC.

システムオンチップすなわちSoC上の複数のサブシステムの間で共有相互接続へのアクセスをアービトレートするためのアービトレーションシステムおよび方法が開示されている。アービトレーションシステムおよび方法は、クロックサイクルごとに、(1)複数のサブシステムによって生成された複数のトランザクションの部分の間でアービトレートし、(2)複数のトランザクションの部分の中から勝利部分を選択し、(3)相互接続に関連付けられている複数の仮想チャネルの1つを介して勝利部分を伝送するよう構成されているアービトレーション要素を備える。 Arbitration systems and methods are disclosed for arbitrating access to shared interconnects among multiple subsystems on a system-on-chip or SoC. Arbitration systems and methods each clock cycle: (1) arbitrate between portions of multiple transactions generated by multiple subsystems; (2) select a winning portion among the portions of multiple transactions; (3) comprising an arbitration element configured to transmit the winning portion via one of a plurality of virtual channels associated with the interconnect;

(1)~(3)を繰り返し実行することにより、複数の勝利部分が、それぞれ、複数のクロックサイクルにわたってインターリーブされて複数の仮想チャネルを介して伝送される。クロックサイクルごとに複数の仮想チャネルを介して複数のトランザクション部分のアービトレーションを行うことで、待ち時間の削減、ならびに、相互接続の効率および利用率の上昇など、多くの利点が得られる。これらの属性により、本明細書に開示されたアービトレーションシステムおよび方法は、システムオンチップ(SoC)上での相互接続へのアクセスをアービトレートするのに非常に適切になる。 By repeatedly performing (1)-(3), multiple winning portions are transmitted over multiple virtual channels, each interleaved over multiple clock cycles. Arbitrating multiple transaction parts over multiple virtual channels every clock cycle provides many benefits, including reduced latency and increased interconnect efficiency and utilization. These attributes make the arbitration system and method disclosed herein well suited for arbitrating access to interconnects on a system-on-chip (SoC).

本願およびその利点については、添付の図面に関連して行う以下の説明を参照することによって最も良く理解できる。 The present application and its advantages are best understood by reference to the following description taken in conjunction with the accompanying drawings.

非排他的実施形態に従って、システムオンチップ(SoC)のための共有相互接続を示すブロック図。1 is a block diagram illustrating a shared interconnect for a system-on-chip (SoC) in accordance with non-exclusive embodiments; FIG.

非排他的実施形態に従って、トランザクションのパケットの例を示す図。FIG. 6 is a diagram illustrating an example packet of a transaction, in accordance with a non-exclusive embodiment.

第1非排他的実施形態に従って、アービトレーション要素を示す論理図。4 is a logic diagram illustrating an arbitration element according to a first non-exclusive embodiment.

第2非排他的実施形態に従って、アービトレーション要素を示す論理図。FIG. 7 is a logic diagram illustrating arbitration elements in accordance with a second non-exclusive embodiment.

非排他的実施形態に従って、共有相互接続の仮想チャネルを介してトランザクションの部分をアービトレーションして送信するための動作工程を示すフローチャート。5 is a flowchart illustrating operational steps for arbitrating and transmitting portions of a transaction over a virtual channel of a shared interconnect, in accordance with a non-exclusive embodiment.

非排他的実施形態に従って、共有相互接続の仮想チャネルを介して異なるトランザクションの部分の伝送をインターリーブする第1例を示す図。FIG. 3 is a diagram illustrating a first example of interleaving transmissions of parts of different transactions over virtual channels of a shared interconnect, according to a non-exclusive embodiment;

非排他的実施形態に従って、共有相互接続の仮想チャネルを介して異なるトランザクションの部分の伝送をインターリーブする第2例を示す図。FIG. 13 illustrates a second example of interleaving the transmission of parts of different transactions over virtual channels of a shared interconnect, according to a non-exclusive embodiment.

本発明の別の非排他的実施形態に従って、二方向にトラフィックを扱うための2つの共有相互接続を示すブロック図。FIG. 3 is a block diagram illustrating two shared interconnects for handling traffic in two directions, according to another non-exclusive embodiment of the invention.

本発明の非排他的実施形態に従って、SoCの相互接続ファブリックの例を示すブロック図。FIG. 2 is a block diagram illustrating an example interconnection fabric of a SoC, in accordance with non-exclusive embodiments of the invention.

本発明の非排他的実施形態に従って、物理アドレスおよびソースベースルーティング(SBR)アドレスの両方を1以上のIPポートに解決するために用いられるルックアップテーブル(LUT)を示す図。FIG. 3 is a diagram illustrating a look-up table (LUT) used to resolve both physical addresses and source-based routing (SBR) addresses to one or more IP ports, in accordance with non-exclusive embodiments of the invention.

本発明の非排他的実施形態に従って、利用できるハッシュ関数を示す図。FIG. 2 is a diagram illustrating available hash functions in accordance with non-exclusive embodiments of the invention.

本発明の非排他的実施形態に従って、SoCの相互接続ファブリックを介して送信されるトランザクションの拡大および統合を示す図。FIG. 2 is a diagram illustrating the expansion and consolidation of transactions sent over the interconnection fabric of an SoC, in accordance with non-exclusive embodiments of the present invention. 本発明の非排他的実施形態に従って、SoCの相互接続ファブリックを介して送信されるトランザクションの拡大および統合を示す図。FIG. 2 is a diagram illustrating the expansion and consolidation of transactions sent over the interconnection fabric of an SoC, in accordance with non-exclusive embodiments of the present invention.

本発明の非排他的実施形態に従って、トランキングリンクと、トランキングリンクの中からの物理リンクの選択とを示す図。FIG. 3 is a diagram illustrating trunking links and the selection of physical links among the trunking links, according to a non-exclusive embodiment of the invention. 本発明の非排他的実施形態に従って、トランキングリンクと、トランキングリンクの中からの物理リンクの選択とを示す図。FIG. 2 illustrates trunking links and selection of physical links from among the trunking links in accordance with a non-exclusive embodiment of the present invention.

図面において、同様の構造要素を指定するために、同様の符号が用いられることがある。また、図中の描写は、図式的なものであり、必ずしも縮尺通りではないことを理解されたい。 Like symbols may be used in the drawings to designate like structural elements. It should also be understood that the depictions in the figures are schematic and are not necessarily to scale.

以下では、添付図面に例示された、いくつかの非排他的な実施形態を参照しつつ、本願の詳細な説明を行う。以下の説明では、本開示の完全な理解を促すために、数多くの具体的な詳細事項が示されている。しかしながら、当業者にとって明らかなように、本開示は、これらの具体的な詳細事項の一部または全てがなくとも実施することが可能である。また、本開示が不必要に不明瞭となるのを避けるため、周知の処理工程および/または構造については、詳細な説明を省略した。 The present application is described in detail below with reference to several non-exclusive embodiments illustrated in the accompanying drawings. In the following description, numerous specific details are set forth to facilitate a thorough understanding of the present disclosure. However, it will be apparent to one of ordinary skill in the art that the present disclosure may be practiced without some or all of these specific details. Additionally, detailed descriptions of well-known process steps and/or structures have been omitted to avoid unnecessarily obscuring the present disclosure.

現在開発中の集積回路の多くは、非常に複雑である。結果として、多くのチップ設計者は、システムオンチップすなわち「SoC」アプローチを用いて、単一のシリコン上に複数のサブシステムまたはIPエージェントを相互接続してきた。消費者デバイス(例えば、ハンドヘルド、携帯電話、タブレットコンピュータ、ラップトップおよびデスクトップコンピュータ、メデイア処理など)、仮想または拡張現実(例えば、ロボット工学、自律走行車、航空機など)、医療機器(例えば、イメージングなど)、工業、ホームオートメーション、工業(例えば、スマート家電、家庭用監視機器、など)およびデータセンター用途(例えば、ネットワークスイッチ、接続型ストレージデバイス、など)など、様々な用途のためのSoCが、現在利用可能であるかまたは開発されている。 Many of the integrated circuits currently being developed are highly complex. As a result, many chip designers have used a system-on-chip or "SoC" approach to interconnect multiple subsystems or IP agents on a single silicon. Consumer devices (e.g., handhelds, mobile phones, tablet computers, laptop and desktop computers, media processing, etc.), virtual or augmented reality (e.g., robotics, autonomous vehicles, aircraft, etc.), medical equipment (e.g., imaging, etc.) ), industrial home automation, industrial (e.g. smart home appliances, home monitoring equipment, etc.) and data center applications (e.g. network switches, connected storage devices, etc.) available or being developed.

本願は、共有リソースへのアクセスをアービトレートするためのアービトレーションシステムおよび方法をおおむね対象にしている。かかる共有リソースは、例えば、バス相互接続、メモリリソース、処理リソース、または、複数の競争パーティの間で共有されたほぼ任意のその他のリソースでありうる。説明の便宜上、以下で詳述する共有リソースは、システムオンチップすなわち「SoC」上の複数のサブシステムによって共有される相互接続であるとする。 The present application is generally directed to arbitration systems and methods for arbitrating access to shared resources. Such shared resources may be, for example, bus interconnects, memory resources, processing resources, or nearly any other resource shared among multiple competing parties. For purposes of explanation, the shared resources detailed below are interconnects shared by multiple subsystems on a system-on-chip or "SoC."

SoCでは、後に詳述するように、トランザクションの形態で互いにトラフィックをやり取りする複数のサブシステムがあり、共有リソースは、物理的な相互接続であり、様々なトランザクションまたはその部分が、共有相互接続に関連する複数の仮想チャネルを介して伝送され、複数の異なるアービトレーションスキームおよび/または優先度の1つが、サブファンクションの間のトランザクションの伝送に向けた共有相互接続へのアクセスをアービトレートするために用いられてよい。 In a SoC, as described in more detail below, there are multiple subsystems that exchange traffic with each other in the form of transactions, the shared resource is a physical interconnect, various transactions or portions thereof are transmitted over multiple virtual channels associated with the shared interconnect, and one of multiple different arbitration schemes and/or priorities may be used to arbitrate access to the shared interconnect for transmission of transactions between subfunctions.

トランザクションクラス
SoCに用いられる上述の共有相互接続内には、Posted(P)、Non-posted(NP)、および、Completion(C)を含む少なくとも3つのタイプまたはクラスのトランザクションが存在する。各々の簡単な定義を以下の表1に提供する。

Figure 0007457654000001
There are at least three types or classes of transactions within the above-mentioned shared interconnect used in the transaction class SoC, including Posted (P), Non-posted (NP), and Completion (C). A brief definition of each is provided in Table 1 below.
Figure 0007457654000001

Postedトランザクション(書き込みなど)は、応答トランザクションを求めない。送信元がデータを指定された宛先に書き込むと、トランザクションが終了する。Non-postedトランザクション(読み出しまたは書き出しのいずれかなど)では、応答が求められる。しかしながら、応答は、別個のCompletionトランザクションとして分岐される。換言すると、読み出しでは、最初のトランザクションが読み出し動作のために用いられ、別個であるが関連するCompletionトランザクションが読み出しコンテンツを返すために用いられる。Non-posted書き込みでは、最初のトランザクションが書き込みのために用いられ、一方、書き込みが完了すると、第2関連Completionトランザクションが確認のために求められる。 Posted transactions (such as writes) do not require a response transaction. Once the source writes the data to the specified destination, the transaction is complete. Non-posted transactions (such as either reads or writes) do require a response. However, the response is forked as a separate Completion transaction. In other words, for a read, an initial transaction is used for the read operation and a separate but related Completion transaction is used to return the read contents. For a non-posted write, an initial transaction is used for the write, while once the write is complete, a second related Completion transaction is required for confirmation.

トランザクションは、タイプに関わらず、1以上のパケットによって表すことができる。いくつかの状況では、トランザクションは、単一のパケットによって表されうる。別の状況においては、複数のパケットが、トランザクション全体を表すために必要とされうる。 A transaction, regardless of type, can be represented by one or more packets. In some situations, a transaction may be represented by a single packet. In other situations, multiple packets may be required to represent the entire transaction.

ビートは、クロックサイクルあたりに共有相互接続を介して伝送できるデータの量である。例えば、共有相互接続が物理的に128ビット幅である場合、128ビットが、各ビートまたはクロックサイクルに伝送されうる。 A beat is the amount of data that can be transmitted over a shared interconnect per clock cycle. For example, if the shared interconnect is physically 128 bits wide, 128 bits may be transmitted in each beat or clock cycle.

いくつかの状況において、トランザクションは、伝送のために複数の部分に分割される必要がありうる。512ビット(64バイト)であるペイロードを有する単一のパケットを有するトランザクションを考える。共有相互接続が128ビット幅(16バイト)のみである場合、トランザクションは、4つの部分(例えば、4×128=512)に分割され、4つのクロックサイクルまたはビートで伝送される必要がある。一方、トランザクションが128ビット幅未満である単一パケットのみである場合、トランザクション全体が、1つのクロックサイクルまたはビートで送信されうる。同じトランザクションがさらなるパケットをたまたま含む場合、さらなるクロックサイクルまたはビートが必要とされうる。 In some situations, a transaction may need to be split into multiple parts for transmission. Consider a transaction that has a single packet with a payload that is 512 bits (64 bytes). If the shared interconnect is only 128 bits wide (16 bytes), then the transaction needs to be split into four parts (e.g., 4 x 128 = 512) and transmitted in four clock cycles or beats. On the other hand, if the transaction is only a single packet that is less than 128 bits wide, the entire transaction may be sent in one clock cycle or beat. If the same transaction happens to include additional packets, additional clock cycles or beats may be required.

したがって、トランザクションの「部分」という用語は、所与のクロックサイクルまたはビート中に共有相互接続を介して転送できるデータの量である。部分のサイズは、共有相互接続の物理的な幅に応じて変わりうる。例えば、共有相互接続が物理的に64データビット幅である場合、任意の1サイクルまたはビート中に転送できる最大ビット数は64ビットである。所与のトランザクションが64ビット以下のペイロードを有する場合、トランザクション全体が、単一部分で共有相互接続を介して送信されうる。一方、ペイロードがより大きい場合、パケットは、複数の部分で共有相互接続を介して送信されなければならない。128、256、または、512ビットのペイロードを有するトランザクションは、それぞれ、2、4、および、8の部分を必要とする。このように、「部分」という用語は、任意の所与のクロックサイクルまたはビート中に共有相互接続を介して送信されうるトランザクションの一部または全体のいずれかを意味すると広く解釈されるべきである。 Thus, the term "portion" of a transaction is the amount of data that can be transferred across a shared interconnect during a given clock cycle or beat. The size of the portion may vary depending on the physical width of the shared interconnect. For example, if the shared interconnect is physically 64 data bits wide, then the maximum number of bits that can be transferred during any one cycle or beat is 64 bits. If a given transaction has a payload of 64 bits or less, the entire transaction may be sent over the shared interconnect in a single part. On the other hand, if the payload is larger, the packet must be sent over the shared interconnect in multiple parts. Transactions with payloads of 128, 256, or 512 bits require 2, 4, and 8 parts, respectively. As such, the term "part" should be broadly interpreted to mean either part or the entire transaction that may be sent over a shared interconnect during any given clock cycle or beat. .

ストリーム
ストリームは、仮想チャネルおよびトランザクションクラスのペアリングとして定義される。例えば、4つの仮想チャネル(例えば、VC0、VC1、VC2、および、VC3)、ならびに、3つのトランザクションクラス(P、NP、C)があった場合、最大で12の異なる可能なストリームがある。仮想チャネルおよびトランザクションクラスの様々な組み合わせを、以下の表2で詳述する。

Figure 0007457654000002
Streams A stream is defined as a pairing of a virtual channel and a transaction class. For example, if there are four virtual channels (e.g., VC0, VC1, VC2, and VC3) and three transaction classes (P, NP, C), there are a maximum of 12 different possible streams. The various combinations of virtual channels and transaction classes are detailed in Table 2 below.
Figure 0007457654000002

上述したトランザクションクラスの数は、単に例示であり、限定として解釈すべきではないことに注意されたい。逆に、任意の数の仮想チャネルおよび/またはトランザクションクラスが用いられてよい。 Note that the number of transaction classes described above is merely illustrative and should not be construed as limiting. Conversely, any number of virtual channels and/or transaction classes may be used.

共有相互接続の仮想チャネルでのアービトレーション
図1を参照すると、アービトレーションシステム10のブロック図が示されている。非排他的実施形態において、アービトレーションシステムは、アップストリームサブファンクション14(すなわち、IP4、IP5、および、IP6)へトランザクションを送信しようと試みる複数のサブファンクション14(すなわち、IP1、IP2、および、IP3)による共有相互接続12へのアクセスをアービトレートするために用いられる。
Arbitration on Virtual Channels of a Shared Interconnect Referring now to Figure 1, there is shown a block diagram of an arbitration system 10. In a non-exclusive embodiment, the arbitration system is used to arbitrate access to a shared interconnect 12 by multiple subfunctions 14 (i.e., IP1, IP2, and IP3) attempting to send transactions to upstream subfunctions 14 (i.e., IP4, IP5, and IP6).

共有相互接続12は、Nデータビット幅でありM個の制御ビットを含む物理的な相互接続である。また、共有相互接続12は一方向性であり、これは、送信元(すなわち、IP1、IP2、および、IP3)から宛先(すなわち、IP4、IP5、および、IP6)への方向にのみトラフィックを扱うことを意味する。 Shared interconnect 12 is a physical interconnect that is N data bits wide and includes M control bits. Also, shared interconnect 12 is unidirectional, which handles traffic only in the direction from sources (i.e., IP1, IP2, and IP3) to destinations (i.e., IP4, IP5, and IP6). It means that.

様々な代替例において、Nデータビットの数は、任意の整数であってよいが、典型的には、それぞれ、2のべき乗のビット幅である(例えば、21、22、23、24、25、26、27、28、29など)または(2、4、6、8、16、32、64、128、256など)。最も現実的な応用例では、Nビットの数は、32、64、128、256、または、512のいずれかである。ただし、これらの幅は、単に例示であり、どのようにも限定するものとして解釈すべきではないことを理解されたい。 In various alternatives, the number of N data bits may be any integer number, but are typically each a power of two bit wide (e.g., 21, 22, 23, 24, 25, 26, 27, 28, 29, etc.) or (2, 4, 6, 8, 16, 32, 64, 128, 256, etc.). In most practical applications, the number of N bits is either 32, 64, 128, 256, or 512. However, it is to be understood that these widths are merely illustrative and should not be construed as limiting in any way.

制御ビットの数Mも、様々であり、任意の数であってよい。 The number M of control bits also varies and may be any number.

1以上の論理チャネル(図示せず)(以降、「仮想チャネル」すなわち「VC」と呼ぶ)が、共有相互接続12に関連付けられている。各仮想チャネルは、独立している。各仮想チャネルは、複数の独立ストリームに関連付けられてよい。仮想チャネルの数は、広く変化してよい。例えば、32以上の数までの仮想チャネルが、規定されるか、または、共有相互接続12に関連付けられてよい。 One or more logical channels (not shown) (hereinafter referred to as “virtual channels” or “VCs”) are associated with shared interconnect 12. Each virtual channel is independent. Each virtual channel may be associated with multiple independent streams. The number of virtual channels may vary widely. For example, up to 32 or more virtual channels may be defined or associated with shared interconnect 12.

様々な代替実施形態において、各仮想チャネルは、異なる優先度を割り当てられてよい。1以上の仮想チャネルに、より高い優先度が割り当てられてよく、一方、1以上のその他の仮想チャネルに、より低い優先度が割り当てられてよい。高い優先度のチャネルは、低い優先度の仮想チャネルよりも高い共有相互接続12へのアクセス権を与えられるまたはアービトレートされる。別の実施形態では、仮想チャネルの各々に、同じ優先度が与えられてもよく、その場合、共有相互接続12へのアクセス権を与えるまたはアービトレートする時に、或る仮想チャネルを別の仮想チャネルより優先することがない。さらに別の実施形態において、仮想チャネルの内の1以上に割り当てられた優先度は、動的に変化してもよい。例えば、第1セットの状況において、仮想チャネルすべてに、同じ優先度が割り当てられてよいが、第2セットの状況において、特定の仮想チャネルに、その他の仮想チャネルよりも高い優先度が割り当てられてもよい。したがって、状況が変化するにつれて、仮想チャネルの間で用いられる優先度スキームは、現在の動作条件に最もよく合うように変更されうる。 In various alternative embodiments, each virtual channel may be assigned a different priority. One or more virtual channels may be assigned a higher priority, while one or more other virtual channels may be assigned a lower priority. High priority channels are given or arbitrated more access to the shared interconnect 12 than lower priority virtual channels. In another embodiment, each of the virtual channels may be given the same priority, in which case one virtual channel is prioritized over another when granting or arbitrating access to the shared interconnect 12. There is no priority. In yet another embodiment, the priority assigned to one or more of the virtual channels may change dynamically. For example, in a first set of situations, all virtual channels may be assigned the same priority, but in a second set of situations, certain virtual channels may be assigned a higher priority than other virtual channels. Good too. Therefore, as circumstances change, the priority scheme used between virtual channels may be changed to best suit current operating conditions.

サブシステム14の各々は、典型的には、「再利用可能な」回路またはロジックのブロックであり、一般に、IPコアまたはエージェントと呼ばれる。ほとんどのIPエージェントは、特定の機能を実行するよう設計され、例えば、イーサネットポート、ディスプレイドライバ、SDRAMインターフェース、USBポートなどの周辺デバイスのためのコントローラである。かかるIPエージェントは、一般に、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの集積回路(IC)上に提供された複雑なシステムの設計全体の中で必要なサブシステム機能を提供する「ビルディングブロック(構成要素)」として用いられる。利用可能なIPエージェントのライブラリを用いることにより、チップ設計者は、より複雑な集積回路の設計において様々なロジック機能を容易に「ボルト締め」することができるので、設計時間を削減すると共に開発コストを節約することができる。サブシステムエージェント14は、専用IPコアに関して上述したが、これは、必要条件ではないことを理解されたい。逆に、サブシステム14は、単一のポート20に接続されたまたはそれを共有するIP機能のコレクションであってもよい。したがって、「エージェント」という用語は、サブシステムが単一の機能を実行するか、複数の機能を実行するかに関わらず、ポート20に接続された任意のタイプのサブシステムとして広く解釈されるべきである。 Each of the subsystems 14 is typically a "reusable" block of circuitry or logic and is commonly referred to as an IP core or agent. Most IP agents are designed to perform specific functions, such as controllers for peripheral devices such as Ethernet ports, display drivers, SDRAM interfaces, USB ports, etc. Such IP agents typically provide necessary subsystem functionality within the overall design of a complex system provided on an integrated circuit (IC) such as an application specific integrated circuit (ASIC) or a field programmable gate array (FPGA). used as a "building block" to provide By using the library of available IP agents, chip designers can easily "bolt" various logic functions in more complex integrated circuit designs, reducing design time and development costs. can be saved. Although subsystem agent 14 is described above with respect to a dedicated IP core, it should be understood that this is not a requirement. Conversely, subsystem 14 may be a collection of IP functions connected to or sharing a single port 20. Therefore, the term "agent" should be broadly interpreted as any type of subsystem connected to port 20, whether the subsystem performs a single function or multiple functions. It is.

一対のスイッチ16および18が、それぞれ、専用アクセスポート20を介してサブシステムエージェント14の各々と共有相互接続12との間のアクセスを提供する。図の例示的実施形態では、
(1)サブシステムエージェントIP1、IP2、および、IP3は、それぞれ、アクセスPort0、Port1、および、Port2を介してスイッチ16と接続する。
(2)サブシステムエージェントIP4、IP5、および、IP6は、それぞれ、Port3、Port4、および、Port5を介してスイッチ18と接続する。
(3)さらに、アクセスポート22が、相互接続12を介して、全体としてスイッチ16へのサブシステムエージェントIP4、IP5、および、IP6のアクセスを提供する。
A pair of switches 16 and 18 each provide access between each of the subsystem agents 14 and the shared interconnect 12 via a dedicated access port 20. In the exemplary embodiment of the figure:
(1) Subsystem agents IP1, IP2, and IP3 are connected to the switch 16 via access Port0, Port1, and Port2, respectively.
(2) Subsystem agents IP4, IP5, and IP6 are connected to the switch 18 via Port3, Port4, and Port5, respectively.
(3) Additionally, access port 22 provides access for subsystem agents IP4, IP5, and IP6 to switch 16 as a whole via interconnect 12.

スイッチ16および18は、多重化および逆多重化機能を実行する。スイッチ16は、サブシステムエージェントIP1、IP2、および/または、IP3によって生成されたアップストリームトラフィックを選択し、共有相互接続12を介してトラフィックをダウンストリームに送信する。スイッチ18では、逆多重化動作が実行され、トラフィックは、目標サブシステムエージェント(すなわち、IP4、IP5、または、IP6のいずれか)へ提供される。 Switches 16 and 18 perform multiplexing and demultiplexing functions. Switch 16 selects upstream traffic generated by subsystem agents IP1, IP2, and/or IP3 and sends the traffic downstream via shared interconnect 12. At switch 18, a demultiplexing operation is performed and the traffic is provided to the target subsystem agent (ie, either IP4, IP5, or IP6).

各アクセスポート20は、一意ポート識別子(ID)を有しており、各サブシステムエージェント14の専用アクセスをスイッチ16または18のいずれかへ提供する。例えば、サブシステムエージェントIP1、IP2、および、IP3は、それぞれ、アクセスポートPort0、Port1、および、Port2に割り当てられる。同様に、サブシステムエージェントIP4、IP5、および、IP6は、それぞれ、アクセスポートPort3、Port4、および、Port5に割り当てられる。 Each access port 20 has a unique port identifier (ID) and provides each subsystem agent 14 dedicated access to either switch 16 or 18. For example, subsystem agents IP1, IP2, and IP3 are assigned to access ports Port0, Port1, and Port2, respectively. Similarly, subsystem agents IP4, IP5, and IP6 are assigned to access ports Port3, Port4, and Port5, respectively.

スイッチ16、18への/からの入口ポイントおよび出口ポイントを提供するのに加えて、一意ポートID20は、サブシステムエージェント14の間のトラフィックをアドレッシングするために用いられる。各ポート20は、システムメモリ24内に、特定の量の割り当てられたアドレス可能空間を有する。 In addition to providing entry and exit points to/from switches 16, 18, unique port ID 20 is used to address traffic between subsystem agents 14. Each port 20 has a specific amount of allocated addressable space within system memory 24.

いくつかの非排他的な実施形態において、アクセスポート20の全部または一部に、一意ポートIDだけでなく、「グローバル」ポート識別子が割り当てられてもよい。トランザクションおよびその他のトラフィックが、グローバルポート識別子に割り当てられたアクセスポートの全部または一部に送信されうる。したがって、グローバル識別子を用いれば、トランザクションおよびその他のトラフィックが、アクセスポート20の全部または一部へ広く発信またはブロードキャストすることができ、一意識別子を用いて各アクセスポート20へ個別にアドレッシングする必要性を排除できる。 In some non-exclusive embodiments, all or some of the access ports 20 may be assigned a "global" port identifier as well as a unique port ID. Transactions and other traffic may be sent to all or some of the access ports assigned to the global port identifier. Thus, global identifiers allow transactions and other traffic to be broadly originated or broadcast to all or some of the access ports 20, eliminating the need to individually address each access port 20 with a unique identifier. Can be eliminated.

スイッチ16は、さらに、アービトレーション要素26、アドレス解決ロジック(ARL)28、および、アドレス解決ルックアップテーブル(LUT)30を備える。 Switch 16 further includes an arbitration element 26, an address resolution logic (ARL) 28, and an address resolution lookup table (LUT) 30.

動作中、サブシステムエージェントIP1、IP2、および、IP3は、トランザクションを生成する。各トランザクションが生成されると、送信側サブシステム14によってパケット化され、次いで、パケット化されたトランザクションは、対応するポート20を介してローカルスイッチ16へ投入される。例えば、IP1、IP2、および、IP3によって生成されたトランザクションの部分は、それぞれ、Port0、Port1、および、Port2を介してスイッチ16に提供される。 During operation, subsystem agents IP1, IP2, and IP3 generate transactions. As each transaction is generated, it is packetized by the sending subsystem 14, and the packetized transaction is then injected into the local switch 16 via the corresponding port 20. For example, the portions of the transactions generated by IP1, IP2, and IP3 are provided to the switch 16 via Port 0, Port 1, and Port 2, respectively.

ポート20は各々、相互接続チャネル12に関連付けられている仮想チャネルの各々に対して、複数の先入れ先出しバッファ(図示せず)を備える。非排他的実施形態において、4つの仮想チャネルが存在する。その場合、各仮想チャネルに対して1つで、各ポート20は、4つのバッファを備える。再び、ポート20に含まれる仮想チャネルおよびバッファの数は、様々であってよく、4に限定されないことを理解されたい。逆に、仮想チャネルおよびバッファの数は、4より多くても少なくてもよい。 Each port 20 includes a number of first-in, first-out buffers (not shown) for each of the virtual channels associated with the interconnect channel 12. In a non-exclusive embodiment, there are four virtual channels. Then, each port 20 includes four buffers, one for each virtual channel. Again, it should be understood that the number of virtual channels and buffers included in a port 20 may vary and is not limited to four. Conversely, the number of virtual channels and buffers may be more or less than four.

所与のトランザクションが2つ(以上)の部分で表される場合、それらの部分は、同じバッファ内に維持される。例えば、相互接続12が128データビット幅であり、トランザクションが512ビットのペイロードを含むパケットによって表される場合、トランザクションは、4クロックサイクルまたはビートで伝送される4つの部分に分割される必要がある。一方、トランザクションが64ビットのペイロードを有する単一パケットによって表されうる場合、単一の部分は、1クロックサイクルまたはビートで伝送されうる。所与のトランザクションのすべての部分を同じバッファ内に維持することにより、仮想チャネルは、論理的に独立したままになる。換言すると、所与のトランザクションに関連するトラフィックすべてが、常に、ストリームと同じ仮想チャネルで送信され、複数の仮想チャネルを介して分岐されることがない。 If a given transaction is represented in two (or more) parts, those parts are maintained in the same buffer. For example, if interconnect 12 is 128 data bits wide and a transaction is represented by a packet containing a 512-bit payload, then the transaction needs to be split into four parts that are transmitted in four clock cycles or beats. On the other hand, if a transaction can be represented by a single packet with a 64-bit payload, then a single part can be transmitted in one clock cycle or beat. By maintaining all parts of a given transaction in the same buffer, the virtual channels remain logically independent. In other words, all traffic associated with a given transaction is always sent on the same virtual channel as the stream and is never branched through multiple virtual channels.

アービトレーション要素26は、様々なアクセスポート20によって維持されたトランザクションの競合するバッファされた部分の間でアービトレートすることを担う。非排他的実施形態において、複数の競合トランザクションが利用可能であれば、アービトレーション要素26は、クロックサイクルごとにアービトレーションを実行する。サイクルごとのアービトレーション勝者は、相互接続12へのアクセスが認められて相互接続12を介して伝送されるトランザクションの部分を、サブシステムIP1、IP2、および、IP3の内の1つから生成する。 Arbitration element 26 is responsible for arbitrating between competing buffered portions of transactions maintained by various access ports 20. In non-exclusive embodiments, arbitration element 26 performs arbitration every clock cycle if multiple competing transactions are available. A cycle-by-cycle arbitration winner is granted access to interconnect 12 and generates a portion of a transaction to be transmitted over interconnect 12 from one of subsystems IP1, IP2, and IP3.

トランザクションを生成する時、送信元サブシステムIP1、IP2、および、IP3は、通常、可能な宛先サブシステムエージェントIP4、IP5、および、IP6についてアドレス空間内のアドレスを知っているが、宛先にトランザクションをルーティングするために必要な情報(例えば、ポートID20および/または22)を知らない。一実施形態において、ローカルアドレス解決ロジック(ARL)28は、既知の宛先アドレスを必要なルーティング情報に解決するために用いられる。換言すると、送信元サブエージェント14は、システムメモリ24内の所与のアドレスにアクセスしたいことを単に知りうる。したがって、ARL28は、LUT30へアクセスするタスクを課せられ、指定されたアドレスに対応する最終的な宛先への配信パスに沿ってポート20/22のアドレスルックアップを実行する。ポート20/22が知られると、この情報は、トランザクションのパケット内の宛先フィールドに挿入される。結果として、パケットは、配信パスに沿ってポート20/22へ配信される。原則として、要求された配信情報がすでに知られており、パケットの宛先フィールドに含まれているので、配信パスに沿ったダウンストリームノードが、さらなるルックアップを実行する必要はない。後に詳述するようにソースベースルーティング(SBR)と呼ばれる他のタイプのトランザクションで、送信元Pエージェントは、宛先ポートアドレスを知る。結果として、ARL28によって実行されるルックアップは、典型的には、実行される必要がない。 When generating a transaction, the source subsystems IP1, IP2, and IP3 typically know the addresses in the address space for possible destination subsystem agents IP4, IP5, and IP6, but do not send the transaction to the destination. It does not know the information needed to route (eg, port ID 20 and/or 22). In one embodiment, local address resolution logic (ARL) 28 is used to resolve known destination addresses into the necessary routing information. In other words, source subagent 14 may simply know that it wishes to access a given address in system memory 24. ARL 28 is therefore tasked with accessing LUT 30 and performing an address lookup for port 20/22 along the delivery path to the final destination corresponding to the specified address. Once the port 20/22 is known, this information is inserted into the destination field within the transaction's packet. As a result, the packet is delivered to port 20/22 along the delivery path. In principle, downstream nodes along the delivery path do not need to perform further lookups since the requested delivery information is already known and included in the destination field of the packet. In another type of transaction called source-based routing (SBR), as detailed below, the source P-agent learns the destination port address. As a result, lookups performed by ARL 28 typically do not need to be performed.

代替実施形態において、相互接続内のすべてのノードがARL28およびLUT30を必要とするわけではない。これらの要素を持たないノードについては、必要なルーティング情報のないトランザクションが、デフォルトノードへ転送されうる。デフォルトノードでは、ARL28およびLUT30がアクセスされ、次いで、必要なルーティング情報が、トランザクションのパケットのヘッダに挿入されうる。デフォルトノードは、典型的には、ARL28およびLUT30を持たないノードよりアップストリームにある。ただし、これは、決して必須ではない。1または複数のデフォルトノードは、SoC上のどこに配置されてもよい。ARL28およびLUT30をいくつかのノードから排除することにより、ノードの複雑さを低減できる。 In alternative embodiments, not all nodes in the interconnect require ARL 28 and LUT 30. For nodes that do not have these elements, transactions without the necessary routing information may be forwarded to the default node. At the default node, ARL 28 and LUT 30 may be accessed and the necessary routing information may then be inserted into the header of the transaction's packet. The default node is typically upstream from the node that does not have ARL 28 and LUT 30. However, this is by no means essential. One or more default nodes may be located anywhere on the SoC. By eliminating ARL 28 and LUT 30 from some nodes, node complexity can be reduced.

ARL28は、トランザクションの勝利部分のための転送先のデコードに加えて、各仮想チャネル内のトランザクションの勝利部分のための順序を規定するので、「順序付けポイント」と呼ばれてもよい。各アービトレーションが解決されると、ARL28がアドレスポートルックアップを実行するために用いられるか否かに関わらず、トランザクションの勝利部分が各仮想チャネルに提供される先入れ先出しキューに挿入される。次いで、トランザクションの勝利部分は、バッファ内で相互接続12を介した伝送の順番を待つ。 ARL 28 may be referred to as an "ordering point" because it defines the order for the winning portion of a transaction within each virtual channel, in addition to decoding the destination for the winning portion of the transaction. As each arbitration is resolved, the winning portion of the transaction is inserted into a first-in, first-out queue provided to each virtual channel, regardless of whether ARL 28 is used to perform address port lookups. The winning portion of the transaction then waits in a buffer for its turn for transmission over interconnect 12.

また、ARL28は、「アップストリーム」および「ダウンストリーム」トラフィックを規定するために用いられる。換言すると、スイッチ16に関連付けられているIPエージェント14(すなわち、IP1、IP2、および、IP3)によって生成された任意のトランザクションは、ARL28に対してアップストリームにあると見なされる。ARL28後の(すなわち、IP4、IP5、および、IP6に伝送される)すべてのトランザクションが、ダウンストリームトラフィックと見なされる。 ARL 28 is also used to define "upstream" and "downstream" traffic. In other words, any transactions generated by IP agents 14 (ie, IP1, IP2, and IP3) associated with switch 16 are considered upstream to ARL 28. All transactions after ARL 28 (ie, transmitted to IP4, IP5, and IP6) are considered downstream traffic.

スイッチ16に関連付けられているIPエージェント14(すなわち、IP1、IP2、および、IP3)は、直接的または間接的のいずれかで、互いに通信してトランザクションを互いに送信してよい。直接的な通信(しばしば、ソースベースルーティング(SBR)と呼ばれる)により、IPエージェント14は、ピアツーピアモデルで互いにトランザクションを送信できる。このモデルでは、送信元IPエージェトは、そのピアIPエージェント14の一意ポートIDが知っており、LUT30にアクセスするためにARL28を用いる必要性を無くす。あるいは、スイッチ16に関連付けられているIPエージェントの間のトランザクションは、ARL28を用いてルーティングされてもよい。このモデルでは、上述したのと同様に、送信元IPエージェントは、宛先IPエージェント14のアドレスのみを知り、ルーティングに必要な情報は知らない。次いで、ARL28は、LUT30にアクセスし、対応するポートIDを見つけるために用いられ、その後、ポートIDは、トランザクションのパケットの宛先フィールドに挿入される。 IP agents 14 (ie, IP1, IP2, and IP3) associated with switch 16 may communicate with each other and send transactions to each other, either directly or indirectly. Direct communication (often referred to as source-based routing (SBR)) allows IP agents 14 to send transactions to each other in a peer-to-peer model. In this model, the source IP agent knows the unique port ID of its peer IP agent 14, eliminating the need to use ARL 28 to access LUT 30. Alternatively, transactions between IP agents associated with switch 16 may be routed using ARL 28. In this model, as described above, the source IP agent only knows the address of the destination IP agent 14 and does not know the information necessary for routing. ARL 28 is then used to access LUT 30 and find the corresponding port ID, which is then inserted into the destination field of the transaction's packet.

パケットフォーマット
IPエージェント14は、トランザクションを生成して、相互接続12に関連付けられている仮想チャネルを通じて処理する。各トランザクションは、典型的には、1以上のパケットで構成される。各パケットは、典型的には、固定ヘッダサイズおよびフォーマットを有する。いくつかの例において、各パケットは、固定サイズペイロードを有してよい。別の例において、パケットペイロードは、大から小まで様々なサイズであってよく、または、ペイロードが全く無くてもよい。
Packet format IP agent 14 generates and processes transactions over virtual channels associated with interconnect 12. Each transaction typically consists of one or more packets. Each packet typically has a fixed header size and format. In some examples, each packet may have a fixed size payload. In another example, the packet payload may vary in size from large to small, or there may be no payload at all.

図2を参照すると、パケットの例32が示されている。パケット32は、ヘッダ34およびペイロード36を備える。この特定の実施形態において、ヘッダ34は、16バイトのサイズである。このサイズは例示であり、より大きいサイズ(例えば、より多いバイト数)または小さいサイズ(例えば、より少ないバイト数)のパケットが用いられてもよいことを理解されたい。パケット32のヘッダ34は、必ずしもすべてが同じサイズである必要がないことも理解されたい。代替実施形態において、SoCにおけるパケットヘッダのサイズは、可変であってもよい。 With reference to FIG. 2, an example packet 32 is shown. The packet 32 comprises a header 34 and a payload 36. In this particular embodiment, the header 34 is 16 bytes in size. It should be understood that this size is exemplary and that packets of larger (e.g., more bytes) or smaller (e.g., fewer bytes) sizes may be used. It should also be understood that the headers 34 of the packet 32 do not all have to be the same size. In alternative embodiments, the size of the packet headers in the SoC may be variable.

ヘッダ34は、宛先識別子(DST_ID)、送信元識別子(SRC_ID)、ペイロードサイズインジケータ(PLD_SZ)、予備フィールド(RSVD)、コマンドフィールド(CMD)、TAGフィールド、ステータス(STS)、トランザクションIDフィールド(TAG)、アドレスすなわちADDRフィールド、USDR/コンパクトペイロードフィールド、トランザクションクラスすなわちTCフィールド、フォーマットFMTフィールド、および、バイトイネーブル(BE)フィールドなど、複数のフィールドを含む。ヘッダ34の様々なフィールドについて、以下の表3で簡単に説明する。

Figure 0007457654000003
The header 34 includes a destination identifier (DST_ID), a source identifier (SRC_ID), a payload size indicator (PLD_SZ), a reserved field (RSVD), a command field (CMD), a TAG field, a status (STS), and a transaction ID field (TAG). , an address or ADDR field, a USDR/compact payload field, a transaction class or TC field, a format FMT field, and a byte enable (BE) field. The various fields of header 34 are briefly described in Table 3 below.
Figure 0007457654000003

ペイロード36は、パケットのコンテンツを含む。ペイロードのサイズは、様々であってよい。いくつかの例において、ペイロードは大きくてよい。その他の例において、ペイロードは小さくてもよい。さらに別の例において、コンテンツが非常に小さいすなわち「コンパクト」である場合、ヘッダ34のUSRDフィールド内で運ぶことができる。 Payload 36 contains the contents of the packet. The size of the payload may vary. In some examples, the payload may be large. In other examples, the payload may be small. In yet another example, if the content is very small or "compact" it can be carried in the USRD field of header 34.

トランザクションのタイプは、しばしば、トランザクションを表すために用いられる1以上のパケットがペイロードを持つか否かを示す。例えば、PostedまたはNon-posted読み出しのどちらでも、パケットは、アクセスされるロケーションアドレスを指定するが、典型的には、ペイロードを持たない。しかしながら、関連するCompletionトランザクションのパケットは、読み出しコンテンツを含むペイロードを含む。PostedおよびNon-posted書き込みトランザクションの両方で、パケットは、宛先に書き込まれるデータを含むペイロードを含む。Non-postedバージョンの書き込みでは、Completionトランザクションのパケットは、通常、ペイロードを定義しない。しかしながら、一部の状況では、Completionトランザクションが、ペイロードを規定する。 The type of transaction often indicates whether one or more packets used to represent the transaction have a payload. For example, for either Posted or Non-posted reads, the packet specifies the location address to be accessed, but typically has no payload. However, the associated Completion transaction packet includes a payload containing read content. In both Posted and Non-posted write transactions, the packet includes a payload containing the data to be written to the destination. In non-posted versions of writes, the Completion transaction's packet typically does not define a payload. However, in some situations, the Completion transaction specifies the payload.

パケットの例および上述の説明は、パケットに含まれうる基本的なフィールドの多くを網羅している。さらなるフィールドが削除または追加されてもよいことを理解されたい。例えば、送信元および宛先がプライベートメッセージを共有できるように、プライベートシグナリングフィールドが用いられてもよい。 The example packet and description above covers many of the basic fields that may be included in a packet. It should be understood that additional fields may be removed or added. For example, private signaling fields may be used so that the source and destination can share private messages.

アービトレーション
図3Aを参照すると、ペリフェラルコンポーネントインターコネクト(PCI)順位付けでアービトレーション要素26によって実行されるアービトレーションロジックを示す論理図が示されている。
Arbitration Referring to FIG. 3A, a logic diagram illustrating arbitration logic performed by arbitration element 26 in Peripheral Component Interconnect (PCI) ranking is shown.

PCI順位付けでは、各ポート20は、各仮想チャネルおよびトランザクションクラス(P、NP、および、C)の組み合わせのための別個のバッファを備える。例えば、4つの仮想チャネル(VC0、VC01、VC2、および、VC3)がある場合、Port0、Port1、および、Port2は各々、12の先入れ先出しバッファを有する。換言すると、各ポート20について、バッファが、各トランザクションクラス(P、NP、および、C)ならびに仮想チャネル(VC0、VC1、VC2、および、VC30)の組み合わせに対して提供される。 In PCI ranking, each port 20 has a separate buffer for each virtual channel and transaction class (P, NP, and C) combination. For example, if there are four virtual channels (VC0, VC01, VC2, and VC3), Port0, Port1, and Port2 each have 12 first-in, first-out buffers. In other words, for each port 20, a buffer is provided for each transaction class (P, NP, and C) and virtual channel (VC0, VC1, VC2, and VC30) combination.

各IPエージェント14(例えば、IP1、IP2、および、IP3)がトランザクションを生成すると、結果として得られるパケットが、それぞれ、対応するポート(例えば、ポート0、ポート1、および、ポート2)内で、トランザクションタイプに基づいて、適切なバッファに配置される。例えば、IP1によって生成されたPosted(P)、Non-posted(NP)、および、Completion(C)トランザクションが、それぞれ、ポート0内で、割り当てられた仮想チャネルのためのPosted、Non-posted、および、Completionバッファに配置される。IP2およびIP3によって生成されたトランザクションは、同様の方法でポート1およびポート2内で、割り当てられた仮想チャネルのためのPosted、Non-posted、および、Completionバッファに同様に配置される。 When each IP agent 14 (e.g., IP1, IP2, and IP3) generates a transaction, the resulting packet is sent to the corresponding port (e.g., port 0, port 1, and port 2), respectively. Placed in the appropriate buffer based on transaction type. For example, the Posted (P), Non-posted (NP), and Completion (C) transactions generated by IP1 are Posted, Non-posted, and Completion (C) transactions, respectively, within port 0 for the assigned virtual channel. , are placed in the Completion buffer. Transactions generated by IP2 and IP3 are similarly placed in the Posted, Non-posted, and Completion buffers for the assigned virtual channels within Port 1 and Port 2 in a similar manner.

所与のトランザクションが複数のパケットによって表される場合、そのトランザクションのパケットすべてが、同じバッファ内に挿入される。結果として、トランザクションのパケットすべてが、最終的に同じ仮想チャネルを介して伝送される。このポリシーでは、仮想チャネルは独立したままであり、これは、同じトランザクションに関連する複数のパケットの伝送には、異なる仮想チャネルが用いられないことを意味する。 If a given transaction is represented by multiple packets, all packets for that transaction are inserted into the same buffer. As a result, all packets of a transaction are ultimately transmitted over the same virtual channel. In this policy, the virtual channels remain independent, meaning that different virtual channels are not used for the transmission of multiple packets related to the same transaction.

各ポート20内で、多くの異なる方法で所与の仮想チャネルにパケットを割り当てることができる。例えば、割り当ては、無作為であってよい。あるいは、割り当ては、各仮想チャネルに対する作業負荷と未処理のトラフィックの量とに基づいてもよい。或るチャネルが非常にビジーであり、その他のチャネルがビジーではない場合、ポート20は、しばしば、負荷のバランスを取ろうと試み、新たに生成されたトランザクショントラフィックを利用率の低い仮想チャネルに割り当てる。結果として、ルーティング効率が改善される。さらに別の代替例において、トランザクショントラフィックは、緊急性、セキュリティ、または、それら両方の組み合わせに基づいて、特定の仮想チャネルに割り当てられてもよい。特定の仮想チャネルが、他の仮想チャネルよりも高い優先度および/またはセキュリティを与えられた場合、高い優先度および/または安全なトラフィックが、より高い優先度の仮想チャネルに割り当てられる。さらに別の実施形態において、ポート20は、ハードコードされてもよく、これは、ポート20が、1つだけの仮想チャネルを有し、ポート20によって生成されたすべてのトラフィックが、その1つの仮想チャネルを介して伝送されることを意味する。 Within each port 20, packets can be assigned to a given virtual channel in many different ways. For example, the assignment may be random. Alternatively, the allocation may be based on the workload and amount of outstanding traffic for each virtual channel. When one channel is very busy and other channels are not, the port 20 often attempts to balance the load and allocates newly generated transaction traffic to the underutilized virtual channel. As a result, routing efficiency is improved. In yet another alternative, transaction traffic may be assigned to particular virtual channels based on urgency, security, or a combination of both. If a particular virtual channel is given higher priority and/or security than other virtual channels, higher priority and/or secure traffic is assigned to the higher priority virtual channel. In yet another embodiment, port 20 may be hard-coded, meaning that port 20 has only one virtual channel and all traffic generated by port 20 is routed to that one virtual channel. means transmitted over a channel.

さらに別の実施形態において、仮想チャネルの割り当ては、送信元IPエージェント14によって、単独で、または、それに対応するポート20と連携して、実施されてもよい。例えば、送信元IPエージェント14が、対応するポート20への制御信号を生成して、所与のトランザクションのパケットが特定の仮想チャネルに割り当てられることを要求することができる。IPエージェント14も、上述のように、無作為である、ハードコードされる、または、すべての仮想チャネルにわたってバランスの取れた利用、セキュリティ、緊急性などに基づいた割り当て決定をなすことができる。 In yet another embodiment, virtual channel assignment may be performed by source IP agent 14 alone or in conjunction with its corresponding port 20. For example, source IP agent 14 may generate a control signal to a corresponding port 20 to request that packets of a given transaction be assigned to a particular virtual channel. IP agent 14 can also make allocation decisions that are random, hard-coded, or based on balanced utilization, security, urgency, etc. across all virtual channels, as described above.

アービトレーション勝者の選択において、アービトレーション要素26は、サイクルごとに複数のアービトレーション工程を実行する。これらのアービトレーション工程は、以下を含む。
(1)ポートを選択する工程、
(2)仮想チャネルを選択する工程、および
(3)トランザクションクラスを選択する工程。
In selecting an arbitration winner, arbitration element 26 performs multiple arbitration steps per cycle. These arbitration steps include:
(1) The process of selecting a port,
(2) selecting a virtual channel; and (3) selecting a transaction class.

上述の順序(1)、(2)、および、(3)は、固定ではない。逆に、上述の3つの工程は、任意の順序で完了されてよい。どの順序が用いられるかに関わらず、単一のアービトレーション勝者が各サイクルで選択される。次いで、勝利トランザクションは、相互接続12に関連付けられている対応する仮想チャネルを介して伝送される。 The above orders (1), (2), and (3) are not fixed. Conversely, the three steps described above may be completed in any order. Regardless of which order is used, a single arbitration winner is selected each cycle. The winning transaction is then transmitted via the corresponding virtual channel associated with interconnect 12.

アービトレーション要素26によって実行される各アービトレーション(1)、(2)、および、(3)のために、複数のアービトレーションスキームまたはルールセットが用いられてよい。かかるアービトレーションスキームは、厳密または絶対優先度、4つの仮想チャネルの各々が特定の割合のトランザクショントラフックを割り当てられる重み付き優先度、もしくは、トランザクションが所定の順序で仮想チャネルに割り当てられるラウンドロビンスキーム、を含みうる。さらなる実施形態において、その他の優先度スキームが用いられてもよい。また、アービトレーション要素26は、異なるアービトレーションスキームの間で時々動的に切り替えを行ってもよい、および/または、(1)、(2)、および、(3)アービトレーションの各々に対して同じまたは異なるアービトレーションスキームをそれぞれ用いてもよいことを理解されたい。 Multiple arbitration schemes or rulesets may be used for each arbitration (1), (2), and (3) performed by arbitration element 26. Such arbitration schemes may include strict or absolute priority, weighted priority where each of the four virtual channels is assigned a certain proportion of transaction traffic, or a round robin scheme where transactions are assigned to the virtual channels in a predetermined order. It can be included. In further embodiments, other priority schemes may be used. Arbitration element 26 may also dynamically switch from time to time between different arbitration schemes, and/or (1), (2), and (3) the same or different arbitration schemes. It should be understood that different arbitration schemes may be used.

任意選択的な実施形態において、所与のアービトレーションサイクル中に考慮された未処理のトランザクションによって定義された宛先ポート20の利用可能性が考慮される。宛先ポート20に内のバッファが、所与のトランザクションを処理するために利用可能なリソースを持たない場合、対応する仮想チャネルは利用可能ではない。結果として、当該トランザクションは、アービトレーションで競合せず、むしろ、目標リソースが利用可能になる後続のアービトレーションサイクルまで待機する。一方、目標リソースが利用可能である場合、対応するトランザクションは、アービトレートされ、相互接続12へのアクセスのために競合する。 In an optional embodiment, the availability of destination ports 20 defined by outstanding transactions considered during a given arbitration cycle is taken into account. If the buffer at destination port 20 does not have resources available to process a given transaction, the corresponding virtual channel is not available. As a result, the transaction does not compete for arbitration, but rather waits until a subsequent arbitration cycle when the target resource becomes available. On the other hand, if the target resource is available, the corresponding transactions are arbitrated and compete for access to interconnect 12.

宛先ポート20の利用可能性は、上述した複数のアービトレーション工程(1)、(2)、および、(3)に関して、異なる時にチェックされてよい。例えば、利用可能性チェックは、アービトレーションサイクルの前に(すなわち、工程(1)、(2)、および、(3)のいずれかの完了の前に)実行できる。結果として、利用可能な宛先リソースを規定するトランザクションのみが、後続のアービトレーション中に考慮される。あるいは、アービトレーションチェックは、アービトレーション工程が実行される順序に関わらず、3つのアービトレーション工程(1)、(2)、および、(3)のいずれかの間に実行されてもよい。 The availability of the destination port 20 may be checked at different times with respect to the arbitration steps (1), (2) and (3) described above. For example, the availability check can be performed before the arbitration cycle (ie, before the completion of any of steps (1), (2), and (3)). As a result, only transactions that specify available destination resources are considered during subsequent arbitration. Alternatively, the arbitration check may be performed during any of the three arbitration steps (1), (2), and (3), regardless of the order in which the arbitration steps are performed.

アービトレーション処理中の早くまたは遅くに、宛先リソース利用可能性チェックを実行することには利点および不利点がある。早くチェックを実行することにより、トランザクションの競合の可能性のある部分は、それらの宛先が利用可能でない場合に競合から潜在的に排除されうる。しかしながら、利用可能性を早く知ることは、システムリソースへのかなりの量のオーバーヘッドを生み出しうる。結果として、状況に応じて、所与のアービトレーションサイクル中に利用可能性チェックをより遅く実行するのが、より実際的でありうる。 There are advantages and disadvantages to performing destination resource availability checks early or late during the arbitration process. By performing the check early, potentially conflicting portions of transactions can potentially be eliminated from conflict if their destination is not available. However, early knowledge of availability can create a significant amount of overhead to system resources. As a result, depending on the circumstances, it may be more practical to perform availability checks later during a given arbitration cycle.

トランザクションクラスの選択を含むアービトレーション工程に対して、複数のルールが、N、NP、および、Cトランザクションの競合部分の間でアービトレートするために規定される。これらのルールは、以下を含む。
Posted(P)トランザクションに対して、
-Postedトランザクション部分は、別のPostedトランザクション部分を追い越しえない。
-Postedトランザクション部分は、デッドロックを避けるためにNon-postedトランザクション部分を追い越すことができなければならない。
-Postedトランザクション部分は、両方が強順序(strong order)モードにある場合には、Completionを追い越すことができなければならない。換言すると、強モードでは、トランザクションは、ルールに従って厳密に実行される必要があり、ルールは緩めることができない。
-Posted要求は、任意のトランザクション部分がそれの緩和順序(Relaxed Order:RO)ビットセットを有する場合には、Completionを追い越すことを許されるが、追い越しは必須ではない。緩和順序では、一般にルールが守られるが、例外が認められうる。
Non-posted(NP)トランザクションに対して、
-Non-postedトランザクション部分は、Postedトランザクション部分を追い越してはならない。
-Non-postedトランザクション部分は、別のNon-postedトランザクション部分を追い越してはならない。
-Non-postedトランザクション部分は、両方が強順序モードにある場合には、Completionを追い越してはならない。
-Non-postedトランザクション部分は、任意のトランザクション部分がそれのROビットセットを有する場合には、Completionを追い越すことを許されるが、必須でない。
Completion(C)トランザクションに対して、
-Completionは、両方が強順序モードにある場合には、Postedトランザクション部分を追い越してはならない。
-Completionは、任意のトランザクション部分がそれのROビットセットを有する場合には、Postedトランザクション部分を追い越すことを許可されるが、必須ではない。
-Completionは、両方が強順序モードにある場合には、Non-postedトランザクション部分を追い越してはならない。
-Completionは、任意のトランザクション部分がそれのROビットセットを有する場合には、Non-postedトランザクション部分を追い越すことを許可されるが、必須ではない。
-Completionは、別のCompletionを追い越すことを許可されない。
For the arbitration process, which involves the selection of a transaction class, several rules are defined for arbitrating between the competing portions of N, NP, and C transactions. These rules include the following:
For a Posted (P) transaction,
- A Posted transaction part cannot overtake another Posted transaction part.
- Posted transaction parts must be able to overtake Non-posted transaction parts to avoid deadlocks.
- A Posted transaction part must be able to overtake a Completion if both are in strong order mode. In other words, in strong mode, transactions must be executed strictly according to the rules, and the rules cannot be relaxed.
- A Posted request is allowed, but not required, to overtake a Completion if any transaction part has its Relaxed Order (RO) bit set. Relaxed Order generally follows the rules, but exceptions can be made.
For Non-posted (NP) transactions,
- Non-posted transaction parts must not overtake posted transaction parts.
- A non-posted transaction part must not overtake another non-posted transaction part.
- A Non-posted transaction part must not pass a Completion if both are in strongly ordered mode.
- Non-posted transaction parts are allowed to pass a Completion if any transaction part has its RO bit set, but are not required to.
For a Completion (C) transaction,
- A Completion must not overtake a Posted transaction portion if both are in strongly ordered mode.
- Completion is permitted, but not required, to overtake a Posted transaction part if any transaction part has its RO bit set.
- Completion must not overtake a Non-posted transaction part if both are in strongly ordered mode.
- Completions are permitted, but not required, to overtake Non-posted transaction parts if any transaction part has its RO bit set.
- A Completion is not allowed to overtake another Completion.

以下の表4は、PCI順序付けルールの概要を提供する。(a)および(b)の選択肢のないボックスでは、厳密順序付けルールが従われる必要はない。(a)および(b)の選択肢を有する表のボックスでは、ROビットがリセットされるか設定されるかに依存して、それぞれ、厳密順序(a)ルールまたは緩和順序(b)ルールのいずれかが適用されてよい。様々な代替実施形態において、ROビットは、グローバルに、または、パケットレベルで個々に、設定または再設定されうる。

Figure 0007457654000004
Table 4 below provides a summary of the PCI ordering rules. In boxes with no choices in (a) and (b), strict ordering rules need not be followed. In the table boxes with choices (a) and (b), either the strict order (a) rule or the relaxed order (b) rule, depending on whether the RO bit is reset or set, respectively. may be applied. In various alternative embodiments, the RO bit may be set or reset globally or individually at the packet level.
Figure 0007457654000004

アービトレーション要素26は、特定の順序なしに、それぞれ、競合ポート20、仮想チャネル、および、トランザクションクラスのアービトレーションを実行することによって、最終的な勝利トランザクション部分を選択する。サイクルあたりの勝利部分は、共有相互接続12にアクセスし、対応する仮想チャネルを介して伝送される。 The arbitration element 26 selects the final winning transaction portion by performing arbitration among the competing ports 20, virtual channels, and transaction classes, respectively, in no particular order. The winning portion per cycle has access to the shared interconnect 12 and is transmitted over the corresponding virtual channel.

図3Bを参照すると、デバイス順位付けでアービトレーション要素26によって実行されるアービトレーションロジックを示す論理図が示されている。アービトレーション処理、および、おそらくは利用可能な宛先リソースの考慮は、2つの違いを除けは、上述したのと基本的に同じである。 Referring now to FIG. 3B, a logic diagram is shown illustrating the arbitration logic performed by arbitration element 26 in device ranking. The arbitration process, and possibly consideration of available destination resources, is essentially the same as described above, with two differences.

第1に、デバイス順序付けでは、(a)すべての要求に対する応答が求められるNon-posted読み出しまたは書き込みトランザクションと、(b)要求された応答を規定したCompletionトランザクションとを含め、2つトランザクションクラスだけが定義される。トランザクションクラスが2つだけなので、各ポート20において仮想チャネルごとに2つのバッファだけがある。例えば、4つの仮想チャネル(VC0、VC1、VC2、および、VC3)がある場合、各ポート20(例えば、Port0、Port1、および、Port2)は、合計で8つのバッファを有する。 First, device ordering allows for only two classes of transactions, including (a) non-posted read or write transactions that require a response to every request, and (b) a Completion transaction that specifies the requested response. defined. Since there are only two transaction classes, there are only two buffers per virtual channel at each port 20. For example, if there are four virtual channels (VC0, VC1, VC2, and VC3), each port 20 (eg, Port0, Port1, and Port2) has a total of eight buffers.

第2に、デバイス順序付けのトランザクションを選択するためのルールも、PCI順序付けとは異なる。デバイス順序付けでは、オーバークラスを超える1つのクラスの選択に適用される厳密なルールは存在しない。逆に、いずれかのトランザクションクラスが任意に選択されうる。しかしながら、一般的な方法では、典型的には、Completionトランザクションが解決するまで利用可能になりえないリソースを解放するように、好都合なCompletionトランザクションに要求する。 Second, the rules for selecting transactions for device ordering are also different from PCI ordering. In device ordering, there are no strict rules that apply to the selection of one class over its overclass. Conversely, any transaction class may be selected arbitrarily. However, the general method typically requires a favorable Completion transaction to release resources that cannot be made available until the Completion transaction is resolved.

それ以外の点では、デバイス順序付けのためのアービトレーション処理は、基本的に上述したものと同じである。換言すると、各アービトレーションサイクルに対して、アービトレーション勝者を選択するために、アービトレーション工程(1)、(2)、および、(3)が、任意の特定の順で実行される。トランザクションクラスアービトレーションが実行される時、PCI順序ルールよりはむしろデバイス順序が利用される。さらに、宛先リソースおよび/または仮想チャネルの利用可能性が、アービトレーション工程(1)、(2)、および、(3)のいずれかの前または間に考慮されてもよい。 Otherwise, the arbitration process for device ordering is essentially the same as described above. In other words, arbitration steps (1), (2), and (3) are performed in any particular order to select an arbitration winner for each arbitration cycle. When transaction class arbitration is performed, device ordering is utilized rather than PCI ordering rules. Additionally, destination resource and/or virtual channel availability may be considered before or during any of arbitration steps (1), (2), and (3).

動作フローチャート
先述したように、上述のアービトレーションスキームは、任意の共有リソースへのアクセスを共有するために利用されてよく、共有相互接続との利用だけに限定されない。かかる他の共有リソースは、ARL28、処理リソース、メモリリソース(LUT30など)、または、アクセスをめぐって競い合う複数のパーティの間で共有されるほぼ任意のその他のタイプのリソースを含みうる。
Operational Flowchart As previously discussed, the arbitration scheme described above may be utilized to share access to any shared resource and is not limited to use with shared interconnects. Such other shared resources may include ARL 28, processing resources, memory resources (such as LUT 30), or nearly any other type of resource shared between multiple parties competing for access.

図4を参照すると、共有リソースへのアクセスをアービトレートするための動作工程を示すフローチャート40が示されている。 Referring to FIG. 4, a flowchart 40 illustrating operational steps for arbitrating access to shared resources is shown.

工程42において、様々な送信元サブシステムエージェント14が、トランザクションを生成する。トランザクションは、Posted(P)、Non-posted(NP)、および、Completion(C)を含む3つのクラスのいずれかでありうる。 At step 42, various source subsystem agents 14 generate transactions. Transactions can be any of three classes including Posted (P), Non-posted (NP), and Completion (C).

工程44において、送信元サブシステムエージェント14によって生成されたトランザクションの各々は、パケット化される。先述したように、所与のトランザクションのパケット化は、1以上のパケットをもたらしうる。パケットは、サイズが様々であってよく、一部のパケットは大きいペイロードを持ち、他のパケットは小さいペイロードを持つかまたは全く持たない。トランザクションが、相互接続12の幅よりも小さいデータペイロード36を有する単一のパケットによって表される状況では、トランザクションは、単一の部分によって表されうる。トランザクションが、共有リソースのアクセス幅よりも大きいデータペイロード36を備えた複数のパケットまたは単一のパケットによって表される状況では、複数の部分が、トランザクションを表すために必要とされる。 At step 44, each transaction generated by the source subsystem agent 14 is packetized. As mentioned above, packetization of a given transaction may result in one or more packets. Packets may vary in size, with some packets having large payloads and other packets having small payloads or no payloads at all. In situations where a transaction is represented by a single packet with a data payload 36 smaller than the width of the interconnect 12, the transaction may be represented by a single portion. In situations where a transaction is represented by multiple packets or a single packet with a data payload 36 larger than the access width of the shared resource, multiple parts are required to represent the transaction.

工程46において、サブシステムエージェント14の各々によって生成されたパケット化トランザクションの部分は、対応するポート20を介してローカルスイッチ16に投入される。ポート20内で、各トランザクションのパケットは、仮想チャネルに割り当てられる。先述したように、割り当ては、無作為であるか、ハードコードされるか、または、すべての仮想チャネルにわたってバランスの取れた利用、セキュリティ、緊急性などに基づいてよい。 At step 46, the portion of the packetized transaction generated by each of the subsystem agents 14 is injected into the local switch 16 via the corresponding port 20. Within port 20, each transaction's packets are assigned to a virtual channel. As previously mentioned, allocation may be random, hard-coded, or based on balanced utilization across all virtual channels, security, urgency, etc.

工程48において、サブシステムエージェント14の各々によって生成されたパケット化トランザクションの部分は、それぞれ、両方のトランザクションクラスによっておよびそれらに割り当てられた仮想チャネル(例えば、VC0、VC1、VC2、および、VC3)によって、適切な先入れ先出しバッファに格納される。先に述べたように、仮想チャネルは、厳密または絶対優先度、ラウンドロビン、重み付き優先度、最長時間未サービス(least recently serviced)など、多くの異なる優先度スキームの1つによって割り当てられてよい。所与のトランザクションが複数の部分を有する場合、各部分は、同じバッファ内に格納される。結果として、所与のトランザクションの複数の部分は、相互接続12に関連付けられている同じ仮想チャネルで伝送される。トランザクション部分が投入されると、各バッファ内のコンテンツアイテム数を追跡するための対応するカウンタがデクリメントされる。特定のバッファが満たされた場合、そのカウンタはゼロにデクリメントされ、これは、バッファがさらなるコンテンツをもはや受け入れることができないことを意味する。 At step 48, the portions of the packetized transactions generated by each of the subsystem agents 14 are transmitted by both transaction classes and by the virtual channels assigned to them (e.g., VC0, VC1, VC2, and VC3), respectively. , stored in the appropriate first-in, first-out buffer. As mentioned earlier, virtual channels may be assigned by one of many different priority schemes, such as strict or absolute priority, round robin, weighted priority, least recently serviced, etc. . If a given transaction has multiple parts, each part is stored in the same buffer. As a result, multiple parts of a given transaction are transmitted on the same virtual channel associated with interconnect 12. When a transaction portion is submitted, a corresponding counter for tracking the number of content items in each buffer is decremented. When a particular buffer is filled, its counter is decremented to zero, meaning that the buffer can no longer accept further content.

工程50、52、および、54において、第1、第2、および、第3レベルアービトレーションが実行される。先述したように、ポート20、仮想チャネル、および、トランザクションクラスの選択は、任意の順序で実行されてよい。 At steps 50, 52, and 54, first, second, and third level arbitration is performed. As previously mentioned, the selection of ports 20, virtual channels, and transaction classes may be performed in any order.

要素56が、第1、第2、および、第3レベルのアービトレーションの実行に用いられるルールを維持するために用いられてよい。各ケースにおいて、要素56は、アービトレーションレベルの各々を解決するのに必要に応じて用いられる。例えば、要素56は、PCIおよび/またはデバイス順序付けルールを維持してよい。要素56は、いくつかの優先度スキーム(厳密または絶対優先度、重み付き優先度、ラウンドロビンなど)を実行するためのルールと、所与のアービトレーションサイクルでどれを用いるかを決定するためのロジックまたはインテリジェンスと、を備えてもよい。 Element 56 may be used to maintain the rules used to perform the first, second, and third levels of arbitration. In each case, element 56 is used as necessary to resolve each of the arbitration levels. For example, element 56 may maintain PCI and/or device ordering rules. Element 56 may include rules for implementing several priority schemes (strict or absolute priority, weighted priority, round robin, etc.) and the logic or intelligence to determine which one to use in a given arbitration cycle.

工程58において、アービトレーションの勝者が決定される。工程60において、勝利部分は、共有リソースにアクセスするために用いられるバッファ内に配置され、バッファに関連付けられているカウンタがデクリメントされる。 At step 58, the winner of the arbitration is determined. At step 60, the winning portion is placed into a buffer used to access the shared resource and a counter associated with the buffer is decremented.

工程62において、勝利部分に関連するバッファは、勝利部分がもはやバッファ内にはないのでインクリメントされる。 At step 62, the buffer associated with the winning portion is incremented since the winning portion is no longer in the buffer.

工程64において、勝利部分は、共有リソースへアクセスする。アクセスが完了すると、共有リソースのためのバッファがインクリメントされる。 At step 64, the winning portion accesses the shared resource. Once the access is complete, the buffer for the shared resource is incremented.

工程42~64は、それぞれ、連続するクロックサイクル中に連続的に繰り返される。異なる勝利部分として、各々が共有リソースへアクセスする。 Steps 42-64 are each repeated continuously during successive clock cycles. As different winning parts, each gets access to shared resources.

インターリービング-例1
トランザクションは、いくつかのモードの内の1つで相互接続12を介して伝送されうる。
Interleaving - Example 1
Transactions may be transmitted over interconnect 12 in one of several modes.

「ヘッダインライン(header in-line)」モードと呼ばれる1つのモードでは、トランザクションのパケット32のヘッダ34は、常に、それぞれ、別個の部分またはビートでペイロード36の前に最初に伝送される。ヘッダインラインモードは、相互接続12のデータビット数Nに対するヘッダ34および/またはペイロード36の相対サイズに応じて、相互接続12で利用可能なビットを浪費する場合としない場合がある。例えば、512ビット幅(N=512)である相互接続12と、128ビットのヘッダおよび256ビットのペイロードを有するパケットと、を考える。このシナリオでは、128ビットのヘッダが第1部分またはビートで伝送され、相互接続12の残りの384ビットの帯域幅は利用されない。第2部分またはビートでは、256ビットのペイロード36が伝送され、相互接続12の残りの256ビットは利用されない。この例では、相互接続の帯域幅のかなりの割合が、2つのビート中に利用されない。一方、トランザクションのパケットのほとんどが相互接続以上のサイズである場合、浪費される帯域幅の程度は、削減されるかあるいは解消される。例えば、384または512ビットであるヘッダおよび/またはペイロードでは、浪費の量は、大幅に削減されるか(例えば、384ビット)または全く解消される(例えば、512ビット)。 In one mode, called "header in-line" mode, the header 34 of a packet 32 of a transaction is always transmitted first before the payload 36, each in a separate portion or beat. The header in-line mode may or may not waste available bits on the interconnect 12, depending on the relative size of the header 34 and/or payload 36 to the number of data bits N on the interconnect 12. For example, consider an interconnect 12 that is 512 bits wide (N=512) and a packet with a 128-bit header and a 256-bit payload. In this scenario, the 128-bit header is transmitted in the first portion or beat, leaving the remaining 384 bits of bandwidth of the interconnect 12 unused. In the second portion or beat, the 256-bit payload 36 is transmitted, leaving the remaining 256 bits of bandwidth of the interconnect 12 unused. In this example, a significant percentage of the bandwidth of the interconnect is unused during the two beats. On the other hand, if most of the packets in a transaction are the size of the interconnect or larger, the amount of wasted bandwidth is reduced or eliminated. For example, with headers and/or payloads that are 384 or 512 bits, the amount of wastage is greatly reduced (e.g., 384 bits) or eliminated altogether (e.g., 512 bits).

「ヘッダオンサイドバンド(header on side-band)」と呼ばれる別のモードでは、パケットのヘッダ34は、データの「サイドで」伝送され、これは、ペイロード36が相互接続12のNデータビットで伝送される間に、制御ビットMを利用することを意味する。ヘッダオンサイドバンドモードでは、パケット32のペイロード36のビット数またはサイズは、所与の相互接続12でパケットを伝送するのに必要なビート数を決定する。例えば、64、128、256、または、512ビットのペイロード36を有するパケット32、ならびに、128データビット(N=128)を有する相互接続12の場合、パケットは、それぞれ、1、1、2、および、4ビートを必要とする。ビートの各々の伝送では、ヘッダ情報は、相互接続12のNデータビットでペイロードのデータと共にまたはその「サイドで」制御ビットMで伝送される。 In another mode, called "header on side-band," the header 34 of the packet is transmitted "on the side" of the data, which means that the payload 36 is transmitted on the interconnect 12 N data bits. This means that the control bit M is used during the process. In header-on-sideband mode, the number of bits or size of the payload 36 of the packet 32 determines the number of beats required to transmit the packet on a given interconnect 12. For example, for a packet 32 with a payload 36 of 64, 128, 256, or 512 bits, and an interconnect 12 with 128 data bits (N=128), the packet would be 1, 1, 2, and 1, respectively. , requires 4 beats. In each transmission of a beat, the header information is transmitted in control bits M along with or "on the side" of the payload data in N data bits of interconnect 12.

さらに別のモードにおいて、パケット32のヘッダ34は、ペイロードと同じように伝送されるが、ヘッダ34およびペイロード36が別個の部分またはビートで伝送されなければならない要件はない。パケット32が、128ビットのヘッダ34および128ビットのペイロード36を有する場合、合計サイズは、256ビット(128+128)である。相互接続12のNデータビットが、64、128、256、および、512ビット幅である場合、256ビットのパケットは、それぞれ、4、2、1、および、1ビートで伝送される。別の例において、パケット32は、128ビットのヘッダおよび256ビットのペイロード36、すなわち、384ビット(128+256)の合計パケットサイズを有する。64、128、256、または、512幅のNデータビットの同じ相互接続12では、パケットは、それぞれ、6、3、2,または、1ビートで伝送される。このモードは、常に、上述のヘッダインラインモードと少なくとも同等以上の効率である。 In yet another mode, the header 34 of the packet 32 is transmitted in the same manner as the payload, but there is no requirement that the header 34 and payload 36 be transmitted in separate parts or beats. If the packet 32 has a 128 bit header 34 and a 128 bit payload 36, the total size is 256 bits (128+128). If the N data bits of interconnect 12 are 64, 128, 256, and 512 bits wide, then the 256-bit packets are transmitted in 4, 2, 1, and 1 beats, respectively. In another example, packet 32 has a 128-bit header and a 256-bit payload 36, or a total packet size of 384 bits (128+256). On the same interconnect 12 of 64, 128, 256, or 512 wide N data bits, packets are transmitted in 6, 3, 2, or 1 beats, respectively. This mode is always at least as efficient as the header inline mode described above.

図5を参照すると、複数の仮想チャネル上での異なるトランザクションの部分のインターリービングの第1例が図示されている。この例では、簡単のために、2つのトランザクションのみが示されている。2つのトランザクションは、この例では、128データビット幅(N=128)である共有相互接続12へのアクセスをめぐって競合している。2つのトランザクションの詳細は、以下を含む。
(1)トランザクション1(T1):時刻T1に生成され、仮想チャネルVC2に割り当てられている。T1のサイズは、4ビートであり、それらのビートは、T1A、T1B、T1C、および、T1Dとして指定されている。
(2)トランザクション2(T2):時刻T2(時刻T1の後)に生成され、仮想チャネルVC0に割り当てられている。T2のサイズは、単一の部分またはビートである。
Referring to FIG. 5, a first example of interleaving portions of different transactions over multiple virtual channels is illustrated. In this example, only two transactions are shown for simplicity. Two transactions are competing for access to shared interconnect 12, which in this example is 128 data bits wide (N=128). Details of the two transactions include:
(1) Transaction 1 (T1): Generated at time T1 and assigned to virtual channel VC2. The size of T1 is 4 beats, and the beats are designated as T1A, T1B, T1C, and T1D.
(2) Transaction 2 (T2): Generated at time T2 (after time T1) and assigned to virtual channel VC0. The size of T2 is a single portion or beat.

この例では、VCOに絶対または厳密優先度が割り当てられている。複数のサイクルにわたって、2つのトランザクションT1およびT2の部分が、以下に従って、図5に示すように、共有相互接続で伝送される。
サイクル1:T1のビートT1Aは、唯一の利用可能なトランザクションであるので、VC2で伝送される。
サイクル2:T1のビートT1BおよびT2の単一部分は、相互接続12へのアクセスをめぐって競合する。VCOは厳密優先度を有するので、T2が自動的に勝利する。したがって、T2のビートは、VC0で伝送される。
サイクル3:競合するトランザクションがないので、T1のビートT1BがVC2で伝送される。
サイクル4:競合するトランザクションがないので、T1のビートT1CがVC2で伝送される。
サイクル5:競合するトランザクションがないので、T1のビートT1DがVC2で伝送される。
In this example, the VCO is assigned an absolute or strict priority. Over a number of cycles, parts of two transactions T1 and T2 are transmitted on the shared interconnect, as shown in FIG. 5, according to the following.
Cycle 1: Beat T1A of T1 is transmitted on VC2 because it is the only available transaction.
Cycle 2: Beat T1B and a single portion of T2 compete for access to interconnect 12. Since the VCO has strict priority, T2 automatically wins. Therefore, the beat of T2 is transmitted on VC0.
Cycle 3: Beat T1B of T1 is transmitted on VC2 since there are no conflicting transactions.
Cycle 4: Beat T1C of T1 is transmitted on VC2 since there are no conflicting transactions.
Cycle 5: Since there are no conflicting transactions, beat T1D of T1 is transmitted on VC2.

この例は、以下を示す。(1)絶対優先度を有する仮想チャネルでは、他のトラフィックが先に待っていたか否かに関わらず、トラフィックが利用可能になればいつでも、共有相互接続12へのアクセス権が即座に与えられること、ならびに、(2)異なるトランザクションの勝利部分またはビートは、相互接続12に関連付けられている異なる仮想チャネルでインターリーブされて伝送されること。この例において、仮想チャネルVCOは、絶対優先度を与えられている。絶対または厳密優先度スキームでは、仮想チャネルのいずれかが、最高優先度を割り当てられてよいことを理解されたい。 This example shows: (1) In a virtual channel with absolute priority, traffic is immediately granted access to the shared interconnect 12 whenever it becomes available, regardless of whether other traffic is waiting first. , and (2) winning portions or beats of different transactions are interleaved and transmitted on different virtual channels associated with interconnect 12. In this example, the virtual channel VCO is given absolute priority. It should be appreciated that in an absolute or strict priority scheme, any of the virtual channels may be assigned the highest priority.

インターリービング-例2
図6を参照すると、複数の仮想チャネル上での異なるトランザクションの部分のインターリービングの第2例が図示されている。
Interleaving - Example 2
Referring to FIG. 6, a second example of interleaving portions of different transactions over multiple virtual channels is illustrated.

この例において、相互接続12へのアクセスのための優先度スキームは重み付けされており、これは、VCOが(40%)の確率でアクセス権を与えられ、VC1~VC3が各々(20%)の確率でアクセス権を与えられることを意味する。また、相互接続は、128ビット幅である。 In this example, the priority scheme for access to interconnect 12 is weighted, meaning that VCO is given access with a probability of (40%) and VC1-VC3 are each given access with a probability of (20%). Also, the interconnect is 128 bits wide.

さらに、この例においては、4つの競合するトランザクションT1、T2、T3、および、T4が存在する。
-T1は、VC0に割り当てられ、4つの部分またはビートT1A、T1B、T1C、および、T1Dを含む。
-T2は、VC1に割り当てられ、2つの部分またはビートT2AおよびT2Bを含む。
-T3は、VC2に割り当てられ、2つの部分またはビートT3AおよびT3Bを含む。
-T4は、VC3に割り当てられ、2つの部分またはビートT4AおよびT4Bを含む。
Furthermore, in this example, there are four conflicting transactions T1, T2, T3, and T4.
-T1 is assigned to VC0 and includes four parts or beats T1A, T1B, T1C and T1D.
-T2 is assigned to VC1 and includes two parts or beats T2A and T2B.
-T3 is assigned to VC2 and includes two parts or beats T3A and T3B.
-T4 is assigned to VC3 and includes two parts or beats T4A and T4B.

この例では、優先度スキームは重み付けされる。結果として、各仮想チャネルは、その重みの比率に従って勝利する。換言すると、10サイクルの間に、VC0は、4回勝利し、VC1、VC2、および、VC3は各々、2回勝利する。例えば、図6に示すように、
-T1の4つの部分またはビートT1A、T1B、T1C、および、T1Dは、10サイクルのうちの4サイクル(40%)(すなわち、サイクル1、4、7、および、10)でVCOを介して伝送され、
-T2の2つの部分またはビートT2AおよびT2Bは、10サイクルのうちの2サイクル(20%)(すなわち、サイクル2およびサイクル6)でVC1を介して伝送され、
-T3の2つの部分またはビートT3AおよびT3Bは、10サイクルのうちの2サイクル(20%)(すなわち、サイクル5およびサイクル9)でVC2を介して伝送され、
-T4の2つの部分またはビートT4AおよびT4Bは、10サイクルのうちの2サイクル(20%)(すなわち、サイクル3およびサイクル8)でVC3を介して伝送される。
In this example, the priority scheme is weighted. As a result, each virtual channel wins according to its weight ratio. In other words, during 10 cycles, VC0 wins 4 times and VC1, VC2, and VC3 each win 2 times. For example, as shown in Figure 6,
- The four parts of T1 or beats T1A, T1B, T1C and T1D are transmitted through the VCO in 4 out of 10 cycles (40%) (i.e. cycles 1, 4, 7 and 10) is,
- two parts of T2 or beats T2A and T2B are transmitted over VC1 in 2 out of 10 cycles (20%) (i.e. cycle 2 and cycle 6);
- two parts of T3 or beats T3A and T3B are transmitted over VC2 in 2 out of 10 cycles (20%) (i.e. cycle 5 and cycle 9);
- The two parts of T4 or beats T4A and T4B are transmitted over VC3 in 2 out of 10 cycles (20%) (ie, cycle 3 and cycle 8).

したがって、この例は、以下を示す。(1)各仮想チャネルが所定の比率に基づいて相互接続12へのアクセス権を与えられる重み付き優先度スキーム、ならびに、(2)異なるトランザクションの勝利部分が相互接続12に関連付けられている異なる仮想チャネルでインターリーブされて伝送される別の例。 Thus, this example illustrates: (1) a weighted priority scheme in which each virtual channel is given access to interconnect 12 based on a predetermined ratio, as well as (2) another example in which winning portions of different transactions are transmitted interleaved on different virtual channels associated with interconnect 12.

この重み付けの例では、重み付け比率に従って様々な仮想チャネルにトランザクションの部分を割り当てられるのに十分なトラフィックがあることを理解されたい。その一方でトラフィックの量が不十分である場合、重み付け比率は、厳密に実施できる場合も厳密に実施できない場合もある。例えば、仮想チャネルVC3に大きいトラフィックがあり、その他の仮想チャネルVC0、VC1、および、VC2ではトラフィックが限られているか全くない場合、VC3は、重み付け比率が厳密に実施されれば、トラフィックの全部または大部分を運ぶことになる。しかしながら、結果として、すべてのクロックサイクルまたはビートでトランザクションの部分を送信できるわけではないので、相互接続12は、十分に利用されえない。一方、重み付け比率が厳密に実施されない場合、相互接続の利用率をあげるために、トランザクショントラフィックを再割り当てすることが可能である(例えば、トラフィックが、より多い数のサイクルまたはビートで送信される)。 It should be appreciated that in this weighting example, there is enough traffic to allow portions of transactions to be assigned to the various virtual channels according to the weighting ratios. On the other hand, if the amount of traffic is insufficient, the weighting ratios may or may not be strictly enforced. For example, if there is a large amount of traffic on virtual channel VC3 and limited or no traffic on the other virtual channels VC0, VC1, and VC2, then VC3 will carry all or most of the traffic if the weighting ratios are strictly enforced. However, as a result, the interconnect 12 may not be fully utilized since it cannot transmit portions of transactions on every clock cycle or beat. On the other hand, if the weighting ratios are not strictly enforced, it is possible to reallocate transaction traffic (e.g., traffic is transmitted on a greater number of cycles or beats) to increase utilization of the interconnect.

上記の2つの例は、上述した伝送モードのどれが利用されるかに関わらず適用可能である。トランザクションが部分またはビートに分割されると、それらは、本明細書で規定したアービトレーションスキームのいずれかを用いて共有相互接続12でインターリーブされて伝送されうる。 The above two examples are applicable regardless of which of the transmission modes described above is utilized. Once transactions are divided into parts or beats, they may be interleaved and transmitted on the shared interconnect 12 using any of the arbitration schemes defined herein.

上述したアービトレーションスキームは、ほんの数例である。その他の例では、低ジッタ、重み付け、厳密、ラウンドロビン、または、ほぼ任意のその他のアービトレーションスキームが用いられてもよい。したがって、本明細書に列挙または記載されたアービトレーションスキームは、例示であり、どのようにも限定と見なされるべきではない。 The arbitration schemes described above are just a few examples. In other examples, low jitter, weighted, strict, round robin, or nearly any other arbitration scheme may be used. Accordingly, the arbitration schemes listed or described herein are illustrative and should not be considered limiting in any way.

複数の同時アービトレーション
ここまで、簡単のために、単一のアービトレーションのみを記載していた。しかしながら、現実的な応用例(SoC上など)では、複数のアービトレーションが同時に行われうることを理解されたい。
Multiple Simultaneous Arbitrations So far, only a single arbitration has been described for simplicity. However, it should be understood that in practical applications (such as on a SoC), multiple arbitrations may occur simultaneously.

図7を参照すると、スイッチ16、18の間において2方向でトラフィックを処理するための2つの共有相互接続12および12Zのブロック図が示されている。上述したように、スイッチ16は、共有相互接続12を介して送信元サブファンクション14(すなわち、IP1、IP2、および、IP3)から宛先サブファンクション14(すなわち、IP4、IP5、および、IP6)へトランザクショントラフィックを方向付ける。逆方向のトランザクショントラフィックを扱うために、スイッチ18は、アービトレーション要素26Zと、任意選択的にARL28Zと、を備える。動作中、要素26ZおよびARL28Zは、上述した動作と相補的に動作し、これは、送信元IPエージェント14(すなわち、IP4、IP5、および、IP6)によって生成されたトランザクショントラフィックがアービトレートされて、共有相互接続12Zを介して宛先IPエージェント(すなわち、IP1、IP2、および、IP3)へ送信されることを意味する。あるいは、アービトレーションは、ARL28Zなしに実行されてもよく、これは、アービトレーションが、単に競合ポート20(例えば、Port3、Port3またはPort5)の間で決定を行い、勝利ポートに関連するトランザクションの部分が、その部分の最終的な宛先に関わらず、相互接続12で伝送されることを意味する。要素12Z、26Z、および、28Zについては、すでに記載したので、簡単のために詳細な説明は、ここでは提供しない。 7, there is shown a block diagram of two shared interconnects 12 and 12Z for handling traffic in two directions between the switches 16, 18. As described above, the switch 16 directs transaction traffic from source subfunctions 14 (i.e., IP1, IP2, and IP3) to destination subfunctions 14 (i.e., IP4, IP5, and IP6) via the shared interconnect 12. To handle transaction traffic in the reverse direction, the switch 18 comprises an arbitration element 26Z and, optionally, an ARL 28Z. In operation, the elements 26Z and the ARL 28Z operate in a complementary manner to that described above, which means that transaction traffic generated by source IP agents 14 (i.e., IP4, IP5, and IP6) is arbitrated and sent to destination IP agents (i.e., IP1, IP2, and IP3) via the shared interconnect 12Z. Alternatively, arbitration may be performed without ARL 28Z, meaning that arbitration simply makes a decision between competing ports 20 (e.g., Port 3, Port 4, or Port 5) and the portion of the transaction associated with the winning port is transmitted on interconnect 12, regardless of the portion's ultimate destination. Elements 12Z, 26Z, and 28Z have already been described, and therefore, for the sake of brevity, a detailed description is not provided here.

SoCには、複数レベルのサブファンクション14および複数の共有相互接続12が存在しうる。各々で、上述のアービトレーションスキームを用いて、様々なサブファンクションの間で相互接続12を介して送信されるトランザクションの間のアービトレーションを同時に行うことができる。 There may be multiple levels of subfunctions 14 and multiple shared interconnects 12 in the SoC. In each case, the arbitration scheme described above may be used to simultaneously arbitrate between transactions sent across interconnect 12 between various subfunctions.

相互接続ファブリック
図8を参照すると、SoCの例100が示されている。SoC100は、複数のIPエージェント14(IP1、IP2、IP3、...IPN)を備える。各IPエージェント14は、いくつかのノード102の内の1つに接続されている。共有相互接続12、12Zは、逆方向であり、様々なノード102の間に提供されている。この構成では、トランザクションが、例えば、図7に関して上述したように、ノード102の各ペアの間で両方向に流れうる。
Interconnect Fabric Referring to FIG. 8, an example SoC 100 is shown. The SoC 100 includes a plurality of IP agents 14 (IP1, IP2, IP3, . . . IPN). Each IP agent 14 is connected to one of several nodes 102. Shared interconnects 12, 12Z are in opposite directions and are provided between the various nodes 102. In this configuration, transactions may flow in both directions between each pair of nodes 102, eg, as described above with respect to FIG.

非排他的な実施形態において、各ノード102は、様々なスイッチ16、18と、ローカルIPエージェント14に接続するためのアクセスポート20と、共有相互接続12、12Zに接続するためのアクセスポート22と、アービトレーション要素26と、任意選択的なARL28と、任意選択的なLUT30と、を備える。代替実施形態において、ノードは、アービトレーション要素26および/またはARL28を備えなくてもよい。これらの要素を持たないノード102については、必要なルーティング情報のないトランザクションが、上述のようにデフォルトノードへ転送されうる。これらの要素の各々については、図1に関して上述したので、簡単のために詳細な説明は、ここでは提供しない。 In a non-exclusive embodiment, each node 102 includes various switches 16, 18, an access port 20 for connecting to the local IP agent 14, and an access port 22 for connecting to the shared interconnect 12, 12Z. , an arbitration element 26, an optional ARL 28, and an optional LUT 30. In alternative embodiments, a node may not include arbitration element 26 and/or ARL 28. For nodes 102 that do not have these elements, transactions without the necessary routing information may be forwarded to the default node as described above. Each of these elements has been described above with respect to FIG. 1, so a detailed description will not be provided here for the sake of brevity.

集合的に、様々なノード102および双方向相互接続12、12Zは、SoC100のための相互接続ファブリック106を規定する。図に示した相互接続ファブリック106は、簡潔にするために比較的単純である。実際の実施形態においては、SoC100上の相互接続ファブリックは、数百または数千ものIPエージェント14、複数レベルのノード102を備え、それらすべてが多数の相互接続12、12Zによって相互接続され、非常に複雑でありうることを理解されたい。 Collectively, the various nodes 102 and bidirectional interconnects 12, 12Z define an interconnect fabric 106 for the SoC 100. The illustrated interconnect fabric 106 is relatively simple for the sake of brevity. In a practical embodiment, the interconnection fabric on the SoC 100 comprises hundreds or thousands of IP agents 14, multiple levels of nodes 102, all interconnected by a large number of interconnects 12, 12Z, and a highly Please understand that it can be complicated.

ブロードキャスト、マルチキャスト、および、エニーキャスト
機械学習または人工知能など、いくつかの応用例では、1つのIPエージェント14によって生成されたトランザクションが、SoC100上の複数のIPエージェント14に広く発信されるのが普通である。複数のIPエージェント14へ広く発信されるトランザクションは、ブロードキャスト、マルチキャスト、または、エニーキャストによって実施されうる。所与のSoC100上で、ブロードキャスト、マルチキャスト、および/または、エニーキャストが各々、独自に実施されてもよいし、一緒に実施されてもよい。これらのタイプのトランザクションの各々の簡単な定義を以下に提供する。
・ブロードキャストは、SoC100上のすべてのIPエージェントに送信されるトランザクションである。例えば、図8に示したSoC100において、IP1によってブロードキャストが送信された結果として、IP2~IPNが各々、トランザクションを受信することになる。
・マルチキャストは、SoC上のIPエージェントの内の2以上(潜在的には全部を含む)へ送信されるトランザクションである。例えば、IP1がIP5、IP7、および、IP9を指定するマルチキャストトランザクションを生成した場合、これらのエージェント14はトランザクションを受信するが、SoC100上の残りのIPエージェント14は受信しない。マルチキャストがIPエージェント14すべてに送信された場合、基本的にはブロードキャストと同じである。
・読み出し応答マルチキャストは、上述したマルチキャストトランザクションの変形例である。読み出し応答マルチキャストでは、単一のIPエージェント14が、メモリロケーションのコンテンツを読み出してよい。開始IPエージェント14だけがコンテンツを受信するのではなく、多数の宛先IPエージェント14がコンテンツを受信する。読み出し結果を受信するIPエージェント14は、2以上のIPエージェント14からSoC100上のすべてのIPエージェント14までの範囲であってよい。
・エニーキャストは、IPエージェント14によって生成されるトランザクションである。しかしながら、送信側IPエージェント14は、目標IPエージェント14を全く指定しない。その代わり、相互接続ファブリック106(すなわち、ノード102の内の1以上)が、受信側IPエージェント14を決定する。例えば、IP1がエニーキャストトランザクションを生成した場合、ノード102の内の1以上のノードが、他のエージェントIP2~IPNのどれがトランザクションを受信するかを決定する。エニーキャストトランザクションの様々な実施例において、SoC上のIPエージェント14の内の1つ、複数、または、全部が、エニーキャストトランザクションを受信してよい。
In some applications, such as broadcast, multicast, and anycast machine learning or artificial intelligence, transactions generated by one IP agent 14 are typically broadcast widely to multiple IP agents 14 on the SoC 100. It is. Transactions broadcast to multiple IP agents 14 may be performed by broadcast, multicast, or anycast. Broadcast, multicast, and/or anycast may each be implemented independently or together on a given SoC 100. A brief definition of each of these types of transactions is provided below.
- A broadcast is a transaction sent to all IP agents on the SoC 100. For example, in the SoC 100 shown in FIG. 8, IP2 to IPN each receive a transaction as a result of a broadcast being sent by IP1.
- Multicast is a transaction sent to two or more (potentially all) of the IP agents on the SoC. For example, if IP1 generates a multicast transaction specifying IP5, IP7, and IP9, these agents 14 will receive the transaction, but the remaining IP agents 14 on SoC 100 will not. When a multicast is sent to all IP agents 14, it is basically the same as a broadcast.
- Read response multicast is a modification of the multicast transaction described above. With read response multicast, a single IP agent 14 may read the contents of a memory location. Rather than only the initiating IP agent 14 receiving the content, multiple destination IP agents 14 receive the content. The IP agents 14 that receive the read results may range from two or more IP agents 14 to all IP agents 14 on the SoC 100.
- Anycast is a transaction generated by IP agent 14. However, the sending IP agent 14 does not specify a target IP agent 14 at all. Instead, interconnect fabric 106 (ie, one or more of nodes 102) determines the receiving IP agent 14. For example, if IP1 generates an anycast transaction, one or more of the nodes 102 determine which of the other agents IP2-IPN will receive the transaction. In various embodiments of anycast transactions, one, more, or all of the IP agents 14 on the SoC may receive the anycast transaction.

所与のトランザクションが、いくつかの方法で、ブロードキャスト、読み出し応答マルチキャストを含むマルチキャスト、または、エニーキャストとして開始されうる。簡単のために、以下では、これらのトランザクションを集合的に「BMA」トランザクションと呼ぶこととし、これは、ブロードキャスト、マルチキャスト(読み出し応答マルチキャストを含む)、または、エニーキャストトランザクションを意味する。 A given transaction may be initiated in several ways: as a broadcast, a multicast (including a read response multicast), or an anycast. For simplicity, hereafter, these transactions are collectively referred to as "BMA" transactions, which means broadcast, multicast (including a read response multicast), or anycast transactions.

一実施形態において、IPエージェント14は、トランザクションを表すパケット32のヘッダ34のコマンドフィールドCMDに挿入されたコード化されたコマンドを用いて、BMAトランザクションを開始してよい。コード化されたコマンドにより、SoC100の相互接続ファブリック106は、トランザクションが、1つの送信元および1つの宛先IPエージェント14を指定する通常のトランザクションではなく、BMAトランザクションであることを認識または理解する。例えば、ビットの独自の組み合せが、それぞれ、ブロードキャスト、マルチキャスト、読み出し応答マルチキャスト、または、エニーキャストのいずれかとして、所与のトランザクションを規定しうる。 In one embodiment, an IP agent 14 may initiate a BMA transaction with a coded command inserted in a command field CMD of a header 34 of a packet 32 representing the transaction. The coded command causes the interconnect fabric 106 of the SoC 100 to recognize or understand that the transaction is a BMA transaction, rather than a normal transaction that specifies one source and one destination IP agent 14. For example, a unique combination of bits may define a given transaction as either a broadcast, multicast, read response multicast, or anycast, respectively.

別の実施形態において、BMAトランザクションは、トランザクションを表すパケット32のヘッダ34のADDRフィールドに規定されたBMAアドレスを有する読み出しまたは書き込みしトランザクションを発行することによって実施されうる。BMAアドレスは、ブロードキャスト、マルチキャスト、または、エニーキャストトランザクションの内の1つを示すものとして、SoC100のシステム内で指定される。結果として、BMAアドレスは、相互接続ファブリック106によって認識され、トランザクションは、ブロードキャスト、マルチキャスト、または、エニーキャストとして扱われる。 In another embodiment, a BMA transaction may be implemented by issuing a read or write transaction with the BMA address specified in the ADDR field of the header 34 of the packet 32 representing the transaction. A BMA address is designated within the SoC 100 system as indicating one of a broadcast, multicast, or anycast transaction. As a result, the BMA address is recognized by the interconnect fabric 106 and the transaction is treated as a broadcast, multicast, or anycast.

さらに別の実施形態において、コマンドおよびBMAアドレスは両方とも、ブロードキャスト、マルチキャスト、または、エニーキャストトランザクションを指定するために利用できる。 In yet another embodiment, both the command and the BMA address can be used to specify a broadcast, multicast, or anycast transaction.

エニーキャストは、典型的には、送信元IPエージェント14が複数の宛先にトランザクションを送信したいが、1以上の好ましいまたは理想的な宛先IPエージェント14を選択するのに役立つ要素に気づかない状況で用いられる。例えば、送信元IPエージェント14は、各々がアクセラレータ機能を実装する複数のIPエージェントにトランザクションを送信しようとしうる。そのトランザクションをエニーキャストとして指定することにより、ノード102の内の1以上が、宛先IPエージェント14の選択に関与する。様々な実施形態において、選択基準は、幅広く変化してよく、混雑状態(ビジーであるIPエージェント対アイドル状態すなわちビジーではないIPエージェント)、ランダム選択関数、ハードワイヤロジック関数、ハッシュ関数、最長時間未使用の関数、電力消費の考慮、もしくは、任意のその他の決定関数または基準に基づいてよい。したがって、宛先IPエージェント14を選択する責任は、ノード102にシフトされ、ノード102は、送信元エージェント14よりも良好なルーティング決定を行うために、より多くの情報を有しうる。 Anycast is typically used in situations where a source IP agent 14 wants to send a transaction to multiple destinations, but is unaware of the factors that help select one or more preferred or ideal destination IP agents 14. It will be done. For example, source IP agent 14 may attempt to send a transaction to multiple IP agents, each implementing accelerator functionality. By designating the transaction as anycast, one or more of the nodes 102 participate in the selection of the destination IP agent 14. In various embodiments, the selection criteria may vary widely and include congestion conditions (busy IP agents vs. idle or not busy IP agents), random selection functions, hard-wired logic functions, hash functions, longest time limit, etc. It may be based on a function of usage, power consumption considerations, or any other decision function or criterion. Accordingly, the responsibility for selecting the destination IP agent 14 is shifted to the node 102, which may have more information to make better routing decisions than the source agent 14.

図9Aを参照すると、BMAアドレッシングをサポートするためのノード102のロジックを示す図90が示されている。ロジック90は、LUT30と、相互接続ファブリックID(IFID)テーブル124と、任意選択的な物理リンクセレクタ126と、を備える。任意選択的な物理リンクセレクタ126は、後に詳述する単一の論理識別子を共有する2つ(以上)の重複物理リソースがある場合(トランキング状況など)に用いられる。 Referring to FIG. 9A, a diagram 90 is shown illustrating logic of node 102 to support BMA addressing. Logic 90 includes LUT 30, an interconnect fabric ID (IFID) table 124, and an optional physical link selector 126. The optional physical link selector 126 is used when there are two (or more) overlapping physical resources that share a single logical identifier (such as in a trunking situation), which will be described in more detail below.

IFIDテーブルは、各IPエージェント14について、(a)SoC100内の各IPエージェント14を論理的に識別するための対応する論理IP IDと、(b)対応するIPエージェント14がノード102にローカルである場合のポート20もしくは(c)対応するIPエージェント14への配信パスに沿って次のノード102につながる適切な相互接続12または12Zへのアクセスポート22のいずれかと、を含む。この構成では、各ノードは、SoC100内の各IPエージェント14へトランザクションを配信するのに必要な物理ポート20および/または22のアイデンティティにアクセスできる。 The IFID table includes, for each IP agent 14, (a) a corresponding logical IP ID for logically identifying each IP agent 14 within the SoC 100; and (b) the corresponding IP ID that is local to the node 102. (c) access port 22 to the appropriate interconnect 12 or 12Z leading to the next node 102 along the delivery path to the corresponding IP agent 14; In this configuration, each node has access to the identity of the physical ports 20 and/or 22 necessary to deliver transactions to each IP agent 14 within the SoC 100.

ファブリック106内の各ノード102のためのIFIDテーブル124は、相対的(すなわち、一意的)である。換言すると、各IFIDテーブル124は、(1)そのローカルIPエージェント14または(2)ノード120へローカルに接続されていないSoC内の他のIPエージェント14への配信パスに沿った他のノード102への共有相互接続12、12Z、のいずれかへトランザクションを配信するために必要なポート20および/または22のリストだけを含む。この構成では、各ノード102は、(1)宛先として指定されたそのローカルIPエージェント14へトランザクションを配信するか、または、(2)別のノード102へ相互接続12、12Zを介してトランザクションを転送するか、のいずれかである。次のノードで、上述の処理が繰り返される。各ノード102でトランザクションをローカルに配信するかまたは転送することにより、最終的に、所与のトランザクションが、SoC100のための相互接続ファブリック106内の指定された宛先IPエージェント14すべてに配信される。 IFID table 124 for each node 102 within fabric 106 is relative (ie, unique). In other words, each IFID table 124 can be sent to other nodes 102 along the distribution path to (1) its local IP agent 14 or (2) other IP agents 14 in the SoC that are not locally connected to node 120. contains only the list of ports 20 and/or 22 needed to deliver transactions to any of the shared interconnects 12, 12Z, of the . In this configuration, each node 102 either (1) delivers the transaction to its local IP agent 14 designated as the destination, or (2) forwards the transaction to another node 102 via the interconnect 12, 12Z. Either you do it, or you do it. The above process is repeated at the next node. By distributing or forwarding transactions locally at each node 102, a given transaction is ultimately distributed to all designated destination IP agents 14 in interconnect fabric 106 for SoC 100.

LUT30は、従来のトランザクション(すなわち、単一の宛先IPエージェント14に送信されるトランザクション)のルーティングに用いられる第1部分120である。従来のトランザクションが生成されると、送信元IPエージェント14は、トランザクションを表すパケットヘッダのADDRフィールド内にシステムメモリ24内の宛先アドレスを規定する。次いで、トランザクションは、ルーティングのためにローカルノード102へ提供される。それに応じて、ARL28は、LUT30の第1部分120にアクセスして、宛先アドレスに対応する論理IP IDを見つける。次いで、IFIDテーブル124は、(a)宛先IPエージェント14がノード102にローカルである場合のポート20もしくは(b)宛先IPエージェント14への配信パスに沿って次のノード102につながる適切な相互接続12または12Zへのアクセスポート22、のいずれかを規定するために、アクセスされる。IP IDは、適切なポート20または22に沿って送信される前に、パケット32のヘッダ34のDSTフィールドに配置される。 LUT 30 is the first portion 120 used for conventional transaction routing (ie, transactions sent to a single destination IP agent 14). When a conventional transaction is generated, source IP agent 14 defines the destination address in system memory 24 in the ADDR field of the packet header representing the transaction. The transaction is then provided to local node 102 for routing. In response, ARL 28 accesses first portion 120 of LUT 30 to find the logical IP ID corresponding to the destination address. IFID table 124 then identifies (a) port 20 if destination IP agent 14 is local to node 102 or (b) the appropriate interconnect leading to the next node 102 along the delivery path to destination IP agent 14. 12 or access port 22 to 12Z. The IP ID is placed in the DST field of the header 34 of the packet 32 before being transmitted along the appropriate port 20 or 22.

ブロードキャスト、マルチキャスト、または、エニーキャストトランザクションについて、LUT30の第2部分122は、複数のBMAアドレス(例えば、BMA 1~BMA N、ここで、Nは、必要に応じてまたは適切に選択されうる任意の数)と、各BMAアドレスに対応する情報と、を含む。様々な実施形態において、対応する情報は、以下でありうる。
(1)1以上の固有IP ID(例えば、BMAアドレス1に対してIP4およびIP7、BMAアドレス2に対してIP5、IP12、および、IP24)。
(2)一意的なコード(例えば、BMAアドレス10および11に対してコード1およびコード2)。
(3)ビットベクトル(例えば、BMAアドレス20および21のためのビットベクトル)。
For broadcast, multicast, or anycast transactions, the second portion 122 of LUT 30 includes a plurality of BMA addresses (e.g., BMA 1 through BMA N, where N is any arbitrary number that may be selected as needed or appropriate). number) and information corresponding to each BMA address. In various embodiments, the corresponding information may be:
(1) One or more unique IP IDs (eg, IP4 and IP7 for BMA address 1, IP5, IP12, and IP24 for BMA address 2).
(2) Unique codes (eg, code 1 and code 2 for BMA addresses 10 and 11).
(3) Bit vector (eg, bit vector for BMA addresses 20 and 21).

各コードは、宛先IPエージェントの異なるセットを一意的に識別する。例えば、第1コードは、宛先IPエージェントの第1セット(例えば、IP1、IP13、および、IP21)を指定するために利用でき、第2コードは、宛先エージェントの別のセット(例えば、IP4、IP9、および、IP17)を指定するために利用できる。 Each code uniquely identifies a different set of destination IP agents. For example, a first code can be utilized to specify a first set of destination IP agents (e.g., IP1, IP13, and IP21), and a second code can be used to specify another set of destination IP agents (e.g., IP4, IP9 , and IP17).

ビットベクトルでは、各ビット位置が、SoC100上のIPエージェント14に対応する。所与のビット位置が設定されたか再設定されたかに応じて、対応するIPエージェント14は、それぞれ、宛先であるとしてまたは宛先ではないとして指定される。例として、(101011...1)のビットベクトルは、対応するIPエージェント14(IP1、IP3、IP5、IP6、および、IPN)が設定され、残りが再設定されることを示す。 In the bit vector, each bit position corresponds to an IP agent 14 on SoC 100. Depending on whether a given bit position is set or re-set, the corresponding IP agent 14 is designated as being a destination or not being a destination, respectively. As an example, a bit vector of (101011...1) indicates that the corresponding IP agents 14 (IP1, IP3, IP5, IP6, and IPN) are configured and the rest are reconfigured.

上述の実施形態の各々では、1以上の論理IP IDが、所与のトランザクションの宛先IPエージェントとして識別される。IFIDテーブル124は、論理識別子IP ID値を、トランザクションをそれらの宛先にルーティングするのに必要な物理アクセスポート20および/または22に変換するために用いられる。BMAアドレスの場合、正しい物理アクセスポート20および/または22が必要とされることを決定するために、一意的なコードまたはビットベクトルが、IP ID値の代わりに用いられてよい。 In each of the above embodiments, one or more logical IP IDs are identified as the destination IP agents for a given transaction. The IFID table 124 is used to translate the logical identifier IP ID values to the physical access ports 20 and/or 22 required to route the transactions to their destination. In the case of BMA addresses, a unique code or bit vector may be used in place of the IP ID value to determine that the correct physical access ports 20 and/or 22 are required.

コードおよびビットベクトルは両方とも、多数の宛先IPエージェント14を指定するために利用できる。ビットベクトルは、トランザクションを表すパケット32のヘッダ34の宛先フィールドDSTの幅によっておそらくは制限されうる。例えば、宛先フィールドDSTが、32,64、128、または、258ビット幅である場合、IPエージェント14の最大数は、それぞれ、32、64、128、および、256に制限される。所与のSoC上のIPエージェント14の数が、宛先フィールドDSTの幅によって特定されうる可能なIPエージェントの数をたまたま超えた場合、ヘッダ34内のその他のフィールドが場合によっては用いられてよく、もしくは、DSTフィールドが拡張されてもよい。しかしながら、非常に複雑なSoC100では、IPエージェント14の数は、ビットベクトル内で実際的に利用できる利用可能ビット数を超える場合がある。コードでは、任意の数の宛先IPエージェントが指定されてよいので、この問題は回避される。 Both codes and bit vectors can be used to specify multiple destination IP agents 14. The bit vector may potentially be limited by the width of the destination field DST of the header 34 of the packet 32 representing the transaction. For example, if the destination field DST is 32, 64, 128, or 258 bits wide, the maximum number of IP agents 14 is limited to 32, 64, 128, and 256, respectively. If the number of IP agents 14 on a given SoC happens to exceed the number of possible IP agents that can be specified by the width of the destination field DST, other fields in the header 34 may optionally be used; Alternatively, the DST field may be expanded. However, in highly complex SoCs 100, the number of IP agents 14 may exceed the number of available bits that can be practically utilized within a bit vector. This problem is avoided because the code may specify any number of destination IP agents.

図9Aに関して提供された例は、本質的に例示であり、どのようにも限定を意図しないことを理解されたい。実際の実施形態において、SoC100で利用できるBMAアドレスの数は、1から多数まで幅広く変化してよい。 It is to be understood that the example provided with respect to FIG. 9A is illustrative in nature and is not intended to be limiting in any way. In actual embodiments, the number of BMA addresses available on SoC 100 may vary widely from one to many.

ソースベースルーティング(SBR)
ソースベースルーティング(SBR)は、以下の点で従来のルーティングとは異なる。
(1)送信元IPエージェント14は、トランザクションの発行時に、相互接続ファブリック106に与える何らかの知識または指示を有する。例えば、送信元IPエージェント14は、それがトランザクションを送信したい宛先IPエージェント14のIP IDを知っている。
(2)送信元IPエージェント14は、トランザクションのパケット32のパケットヘッダ34のADDRフィールドに通常は提供されるシステムメモリ24内のアドレスに関心がないおよび/またはそれを知らない。
(3)相互接続ファブリック106内のノード102は、パケットのヘッダ34のADDRフィールド内のアドレスを単一の宛先IPエージェントのための単一のIP IDへ単に変換することとは異なる何かを実行することを知っている。
Source-Based Routing (SBR)
Source-based routing (SBR) differs from conventional routing in the following ways:
(1) The source IP agent 14 has some knowledge or instructions that it provides to the interconnection fabric 106 when issuing a transaction. For example, the source IP agent 14 knows the IP ID of the destination IP agent 14 to which it wants to send the transaction.
(2) source IP agent 14 is not interested in and/or does not know about the addresses in system memory 24 that are normally provided in the ADDR fields of packet headers 34 of packets 32 of the transaction;
(3) nodes 102 in interconnect fabric 106 know to do something other than simply translate the address in the ADDR field of a packet's header 34 into a single IP ID for a single destination IP agent.

ブロードキャストおよびマルチキャストは両方とも、おそらくSBRトランザクションでありうるが必ずしもそうではないトランザクションの例である。送信元が、トランザクションのパケット32のヘッダ34内で(a)ブロードキャストおよび/またはマルチキャストコードおよび(b)宛先IPエージェント14のいずれかを指定するブロードキャストまたはマルチキャストを発行する場合、トランザクションは、送信元IPエージェントが宛先IPエージェントを指定しているので、ソースベースであると見なされる。一方、送信元が、宛先の具体的な知識を全く持たずにBMAアドレスを用いてブロードキャストまたはマルチキャストトランザクションを開始する場合、トランザクションは、非ソースベースであると見なされる。エニーキャストトランザクションは、宛先IPエージェント14を規定しないので、ソースベースとは見なされない。 Broadcasts and multicasts are both examples of transactions that could possibly, but are not necessarily, SBR transactions. If a source issues a broadcast or multicast that specifies either (a) a broadcast and/or multicast code and (b) a destination IP agent 14 in the header 34 of the packet 32 of the transaction, the transaction Since the agent specifies the destination IP agent, it is considered source-based. On the other hand, if a source initiates a broadcast or multicast transaction using a BMA address without any specific knowledge of the destination, the transaction is considered non-source-based. Anycast transactions are not considered source-based because they do not specify a destination IP agent 14.

ハッシング
ハッシングでは、ハッシュ関数が、宛先または宛先までのルートを規定するために用いられる。いくつかの実施例において、ハッシング関数が、複数の宛先および/または複数の宛先までの複数のルートを丁寧に規定してよい。
Hashing In hashing, a hash function is used to define a destination or a route to a destination. In some embodiments, the hashing function may carefully define multiple destinations and/or multiple routes to multiple destinations.

図9Bを参照すると、ルーティング決定を実施するためのハッシュ関数の利用を説明する図140が示されている。この実施形態において、ハッシュ値142が、トランザクションを表すパケット32のヘッダ34の任意の数のフィールド内に提供される。例えば、アドレスビット、コマンド、送信元エージェントIP、または、ヘッダ34に含まれる情報またはデータの任意の可能な組合せのサブセットが、ハッシュ値を規定するために用いられてよい。対応するローカルノード102内またはSoC100上のどこかで、ハッシュ関数144が、ハッシュ値142に適用される。ハッシュ関数144に応答して、ルーティング決定がなされうる。例えば、宛先エージェント14の1以上のIP IDが規定されてよい。異なるハッシュ値を提供することにより、異なるルーティング決定が規定されてよい。ハッシングは、SoC内での多くの他の用途に用いられてもよいことを理解されたい。1つのかかる用途は、トランキングのためのハッシュ関数の利用である。トランキングでは、単一の論理識別子を共有する2つ(以上)の重複物理リソースが存在する。後に詳述するように、ハッシュ関数は、重複物理リソースの中から選択するために利用できる。 Referring to FIG. 9B, a diagram 140 is shown illustrating the use of hash functions to make routing decisions. In this embodiment, a hash value 142 is provided in a number of fields of the header 34 of the packet 32 representing the transaction. For example, a subset of address bits, commands, source agent IP, or any possible combination of information or data contained in header 34 may be used to define the hash value. A hash function 144 is applied to the hash value 142 within the corresponding local node 102 or elsewhere on the SoC 100. Routing decisions may be made in response to hash function 144. For example, one or more IP IDs of destination agent 14 may be defined. By providing different hash values, different routing decisions may be defined. It should be appreciated that hashing may be used for many other applications within the SoC. One such application is the use of hash functions for trunking. With trunking, there are two (or more) overlapping physical resources that share a single logical identifier. As discussed in more detail below, hash functions can be used to select among duplicate physical resources.

トランザクショントラフィックの最適化
機械学習、人工知能、データセンターなど、SoCのいくつかの応用例は、トランザクション集約的でありうる。これらのタイプの応用例は、ブロードキャスト、マルチキャスト、および、エニーキャストに依存する傾向にあり、それにより、トランザクショントラフィックをさらに増大させうる。
Optimizing Transaction Traffic Some applications of SoCs can be transaction intensive, such as machine learning, artificial intelligence, and data centers. These types of applications tend to rely on broadcast, multicast, and anycast, which can further increase transaction traffic.

ブロードキャストトランザクションは、相互接続ファブリック106を介して送信されるトラフィックの量を著しく増大させうる。 Broadcast transactions can significantly increase the amount of traffic sent over interconnection fabric 106.

ボトルネックの発生を低減するために、トランザクショントラフィックを削減する多くの手順が提案されている。かかる手順は、(1)SoC100の相互接続ファブリック106のノード102でトランザクションを拡大し、応答を統合すること、(2)それぞれ、ペアになった仮想チャネルトランザクションクラスの組み合せによって規定されるストリームで2以上のトランザクションをストリーム内でインターリービングすること、(3)ならびに、共通の論理リンクを共有するIPエージェントの間の2以上の物理リンクまたは共通の論理アドレスを共有する2以上の同一のIPエージェントを「トランキング」すること、を含む。 Many procedures have been proposed to reduce transaction traffic in order to reduce the occurrence of bottlenecks. Such steps include (1) expanding transactions and consolidating responses at nodes 102 of interconnection fabric 106 of SoC 100; (3) interleaving the above transactions in a stream; and two or more physical links between IP agents sharing a common logical link or two or more identical IP agents sharing a common logical address. Including "trunking".

トランザクションの拡大および応答の統合
ブロードキャスティング、マルチキャスティング、読み出し応答マルチキャスティング、および、エニーキャスティングは各々、SoC100上のIPエージェント14の間のトランザクショントラフィックの量を著しく増大させうる。
Transaction amplification and response integration Broadcasting, multicasting, read response multicasting, and anycasting can each significantly increase the amount of transaction traffic between IP agents 14 on SoC 100.

SoC100が25のIPエージェントを有し、IPエージェントの1つがブロードキャストトランザクションを生成する場合、最高24までの個々のトランザクションが、典型的には、その他のIPエージェント14へ相互接続ファブリックを介して送信される。Non-posted(NP)トランザクションは、Completion(C)トランザクションの形態の応答を求める。24のIPエージェントへブロードキャストされるトランザクションがNon-postedである場合、別の24のCompletion(C)トランザクションが同様に生成される。この簡単な例で示すように、ブロードキャストは、相互接続ファブリック106で伝送されるトラフィックの量を急速に増大させうる。 If the SoC 100 has 25 IP agents and one of the IP agents generates a broadcast transaction, up to 24 individual transactions are typically sent across the interconnection fabric to the other IP agents 14. Ru. Non-posted (NP) transactions require a response in the form of a Completion (C) transaction. If the transaction broadcast to 24 IP agents is Non-posted, another 24 Completion (C) transactions are generated as well. As shown in this simple example, broadcasting can rapidly increase the amount of traffic carried on interconnection fabric 106.

マルチキャストおよびエニーキャストトランザクションも、トラフィックの量を急速に拡大しうる。これらのトランザクションタイプの各々では、複数の受信側が指定されてよく、これは、複数のトランザクションが送信され、おそらくは、複数の完了応答トランザクションが相互接続ファブリック106を介して受信されることを意味する。読み出し応答マルチキャストトランザクションでも、読み出されたコンテンツは、複数の宛先IPエージェント14に送信されうる。結果として、トランザクション量は、これらのタイプのトランザクションでも著しく増大しうる。 Multicast and anycast transactions can also rapidly scale up the amount of traffic. For each of these transaction types, multiple receivers may be specified, meaning that multiple transactions are sent and possibly multiple completed response transactions are received via interconnection fabric 106. In a read response multicast transaction, the read content may also be sent to multiple destination IP agents 14. As a result, transaction volume can increase significantly for these types of transactions as well.

相互接続ファブリック106をより効果的に動作させるために、ノード102でのトランザクションを拡大して統合する技術を用いて、トラフィックの量を削減する。 To make interconnection fabric 106 operate more efficiently, techniques are used to scale and consolidate transactions at nodes 102 to reduce the amount of traffic.

図10Aおよび図10Bを参照すると、SoCの一例を説明する図が示されている。この例において、SoCは、5個の相互接続されたノード102A~102Eおよび10個のIPエージェント14(IP1~IP10)を備えた相互接続ファブリック106を備える。 Referring to FIGS. 10A and 10B, diagrams illustrating an example of a SoC are shown. In this example, the SoC comprises an interconnect fabric 106 with five interconnected nodes 102A-102E and ten IP agents 14 (IP1-IP10).

図10Aを参照すると、IP1は、Non-posted書き込みトランザクションをその他のIPエージェントIP2~IP10へブロードキャストする。拡大を用いることにより、単一のトランザクションだけが、各共有相互接続12で送信される。各ダウンストリームノード102B~102Eでは、ノードは、(1)トランザクションを任意のローカルIPエージェント14へ提供し、(2)トランザクションを任意のアップストリームノード102へ転送する。したがって、この例では、
・ノード102Bは、トランザクションをIP2に提供し、トランザクションの単一のインスタンス化をそれぞれノード102Cおよび102Dへ転送する。
・ノード102Cでは、トランザクションは、ローカルエージェントIP3、IP4、および、IP5へ提供される。
・ノード102Dは、トランザクションをIP7へ提供する。さらに、ノード102Dも、トランザクションの単一のインスタンス化をノード102Eへ転送する。
・ノード102Eで、トランザクションは、IP8、IP9、および、IP10へ提供される。
Referring to FIG. 10A, IP1 broadcasts non-posted write transactions to other IP agents IP2-IP10. By using extensions, only a single transaction is sent on each shared interconnect 12. At each downstream node 102B-102E, the node (1) provides the transaction to any local IP agent 14 and (2) forwards the transaction to any upstream node 102. So in this example,
- Node 102B provides the transaction to IP2 and forwards a single instantiation of the transaction to nodes 102C and 102D, respectively.
- At node 102C, transactions are provided to local agents IP3, IP4, and IP5.
- Node 102D provides the transaction to IP7. Further, node 102D also forwards a single instantiation of the transaction to node 102E.
- At node 102E, transactions are provided to IP8, IP9, and IP10.

上記の例では、単一のトランザクションだけが、送信側IPエージェント14の下流にあるIPエージェント1の数に関わらず、各共有相互接続12で送信される。 In the above example, only a single transaction is sent on each shared interconnect 12, regardless of the number of IP agents 1 downstream of the sending IP agent 14.

図10Bを参照して、応答トランザクションの統合について説明する。ブロードキャストトランザクションは、Non-posted書き込みであったので、各宛先エージェントIP2~IP10は、完了トランザクションを返す必要がある。統合では、各ノード102B~102Eは、そのローカルIPエージェント14から受信した完了トランザクションを統合し、その後、ノード102Aへ向かって上流へ単一の完了トランザクションのみを送信する。換言すると、
・ノード102Eは、IP8~IP10から受信した完了トランザクションを統合し、単一の完了トランザクションをノード102Dへ返す。
・ノード102Dでは、IP7およびノード102Eから受信した完了トランザクションが統合され、1つの完了トランザクションがノード102Bへ返される。
・同様に、ノード102Cは、IP3、IP4、および、IP5について単一の統合されたトランザクションを返す。
・最後に、ノード102Bは、ノード102C、102D、および、IP2から受信した完了トランザクションを統合し、単一の完了トランザクションをノード102AおよびIP1へ返す。
Integration of response transactions will be described with reference to FIG. 10B. Since the broadcast transaction was a non-posted write, each destination agent IP2-IP10 needs to return a completed transaction. In consolidation, each node 102B-102E consolidates completed transactions received from its local IP agent 14 and then sends only a single completed transaction upstream toward node 102A. In other words,
- Node 102E consolidates completed transactions received from IP8-IP10 and returns a single completed transaction to node 102D.
- At node 102D, completed transactions received from IP7 and node 102E are consolidated and one completed transaction is returned to node 102B.
Similarly, node 102C returns a single consolidated transaction for IP3, IP4, and IP5.
- Finally, node 102B consolidates the completed transactions received from nodes 102C, 102D, and IP2 and returns a single completed transaction to node 102A and IP1.

上記の例は、拡大および統合の効率を説明する。拡大がなければ、9個の別個のトランザクション(エージェントIP2~IP10の各々に対して1つずつ)が、相互接続ファブリック106を介して伝送される必要がある。しかし、拡大を用いることにより、様々な共有相互接続12を介して伝送されるトランザクションの数は、4まで削減される。合計9の完了トランザクションも、4つに統合される。 The above example illustrates the efficiency of expansion and consolidation. Without expansion, nine separate transactions (one for each of agents IP2-IP10) would need to be transmitted across interconnection fabric 106. However, by using dilation, the number of transactions transmitted over the various shared interconnects 12 is reduced to four. A total of nine completed transactions are also consolidated into four.

時々、エラーが発生する可能性があり、完了トランザクションが、受信側IPエージェントIP2~IP10の1以上によって生成されない。エラーは、多くの異なる方法で対処することができる。例えば、成功した完了だけを統合することができ、一方、エラー応答を組み合わせるおよび/または別個に送信することができる。さらに別の代替例において、成功した完了およびエラー完了の両方が統合されてもよいが、成功応答または失敗応答のいずれかを示すように、各々にフラグが付される。 Sometimes an error may occur and a completed transaction is not generated by one or more of the receiving IP agents IP2-IP10. Errors can be handled in many different ways. For example, only successful completions can be integrated, while error responses can be combined and/or sent separately. In yet another alternative, both successful and error completions may be combined, but each is flagged to indicate either a successful response or a failed response.

上記の記載はブロードキャストの文脈で提供されているが、トランザクションの拡大および統合は、マルチキャスティング、読み出し応答マルチキャスティング、および/または、エニーキャスティングで実施されてもよいことを理解されたい。 Although the above description is provided in the context of broadcasting, it is to be understood that transaction expansion and consolidation may be implemented with multicasting, read response multicasting, and/or anycasting.

ブロードキャスト、マルチキャスト、および、エニーキャストトランザクションが一般的である機械学習、人工知能、データセンターなどのトランザクション集約的な応用例において、拡大および統合することができれば、相互接続ファブリック106上のトランザクショントラフィックの量を大幅に削減して、ボトルネックを排除または低減すると共にシステム効率およびパフォーマンスを改善することができる。 The amount of transaction traffic on interconnect fabric 106 that can be scaled and consolidated in transaction-intensive applications such as machine learning, artificial intelligence, and data centers where broadcast, multicast, and anycast transactions are common. can be significantly reduced, eliminating or reducing bottlenecks and improving system efficiency and performance.

トランキング
SoC100の相互接続ファブリック106は、典型的には、各方向に対して、(a)IPエージェント14とローカルノード102との間、および、(b)複数のノード102の間に、単一の物理リンクを備える。単一のリンクのみがある場合、物理リンクと、その物理リンクのためのアクセスポート20または22との間には、一対一の対応関係がある。同様に、ほとんどの相互接続ファブリック106で、物理IPエージェント14と、そのIPエージェント14にアクセスするために用いられる論理IP IDとの間にも、一対一の対応関係がある。
The interconnection fabric 106 of the trunking SoC 100 typically has a physical links. If there is only a single link, there is a one-to-one correspondence between a physical link and an access port 20 or 22 for that physical link. Similarly, in most interconnection fabrics 106 there is also a one-to-one correspondence between a physical IP agent 14 and the logical IP ID used to access that IP agent 14.

高パフォーマンスの応用例においては、トランキングと呼ばれる技術を用いることが有利でありうる。トランキングでは、単一の論理識別子を共有する2つ(以上)の重複物理リソースが存在する。物理リソースを重複させることにより、ボトルネックを回避することができ、システムの効率およびパフォーマスを向上させることができる。例えば、1つの物理リソースが、ビジーであるか、電源オフであるか、または、利用不可能である場合、重複リソースの1つが利用されうる。トランキングは、信頼性も改善できる。1つの物理リソース(例えば、相互接続またはIPエージェントなど)がダウンし、利用不可能になるか、または、何らかの理由で利用できない場合、その他の物理リソースが利用されうる。同じ論理識別子を用いて重複リソースをアドレッシングすることにより、SoC100上で利用される論理アドレッシングシステムを変更する必要なしに、重複物理リソースの利点を実現させることができる。しかしながら、重複物理リソースの内のどれを利用するのかを選択して追跡するのかが課題である。 In high performance applications, it may be advantageous to use a technique called trunking. In trunking, there are two (or more) duplicated physical resources that share a single logical identifier. By duplicating physical resources, bottlenecks can be avoided and system efficiency and performance can be improved. For example, if one physical resource is busy, powered off, or unavailable, one of the duplicated resources can be utilized. Trunking can also improve reliability. If one physical resource (e.g., an interconnect or IP agent) goes down, becomes unavailable, or is unavailable for any reason, the other physical resource can be utilized. By addressing the duplicated resources with the same logical identifier, the benefits of duplicated physical resources can be realized without having to change the logical addressing system utilized on the SoC 100. However, the challenge is to select and keep track of which of the duplicated physical resources to utilize.

図11Aを参照すると、いくつかのトランキングの例を含むSoC100の相互接続ファブリック106が示されている。この例において、相互接続ファブリック106は、3つのノード102A、102B、および、102Cを備える。ノード102Aは、2つのIPエージェント14および14を備える。ノード102Bは、2つのIPエージェント14および14を備える。ノード102Cは、1つのIPエージェント14sを備える。相互接続ファブリック106は、以下のトランキングの例を含む。
・ノード102AとIPエージェント14との間の物理的な「トランク」ラインのペア。
・ノード102Aから102Cの同方向の物理的な「トランク」相互接続12(1)および12(2)のペア。
・同一のIPエージェント14sのペア。
11A, an interconnect fabric 106 of SoC 100 is shown that includes several trunking examples. In this example, interconnect fabric 106 includes three nodes 102A, 102B, and 102C. Node 102A includes two IP agents 14i and 142. Node 102B includes two IP agents 143 and 144. Node 102C includes one IP agent 14s. Interconnect fabric 106 includes the following trunking examples:
A pair of physical "trunk" lines between node 102A and IP agent 142 .
A pair of unidirectional physical "trunk" interconnections 12 (1) and 12 (2) from nodes 102A to 102C.
A pair of identical IP agents 14s.

これらの例の各々では、論理識別子と物理リソースとの間に一対一の対応関係はない。逆に、2つの利用可能な物理リソースがあるので、どちらの物理リソースを利用するか選択を行う必要がある。 In each of these examples, there is no one-to-one correspondence between logical identifiers and physical resources. Conversely, since there are two available physical resources, it is necessary to select which physical resource to use.

図11Bを参照すると、(図9Aの)任意選択的な物理リンクセレクタ126を示す図が示されている。上述のように、トランキングでは、単一の論理識別子を共有する2つ(以上)の重複物理リソースが存在する。IFIDテーブル124が、トランキング状況などで、重複物理リソースを有する論理IP IDを識別した時はいつでも、任意選択的な物理リンクセレクタ126が、選択を行うために用いられる。物理リンクセレクタ126は、物理リソースの利用可能性(またはその欠如)、混雑状態、負荷バランシング、ハッシュ関数、ランダム選択、最長時間未使用の選択、電力条件など、1以上の決定要素を用いて、その選択を行ってよい。例えば、或る物理リソースがビジーである、混雑している、および/または、利用不可能である場合、他の物理リソースが選択される。あるいは、或るリソースが電力消費を削減するために電源オフされている場合、他のリソースが選択されてよい。どのようになされるかに関わらず、選択は、選択された物理リソースにアクセスするために用いられる物理ポート20または22の識別につながる。 11B, a diagram illustrating the optional physical link selector 126 (of FIG. 9A) is shown. As mentioned above, in trunking, there are two (or more) overlapping physical resources that share a single logical identifier. Whenever the IFID table 124 identifies a logical IP ID with overlapping physical resources, such as in a trunking situation, the optional physical link selector 126 is used to make a selection. The physical link selector 126 may make its selection using one or more determinants, such as physical resource availability (or lack thereof), congestion, load balancing, hash functions, random selection, least recently used selection, power conditions, etc. For example, if a physical resource is busy, congested, and/or unavailable, the other physical resource is selected. Alternatively, if a resource is powered off to reduce power consumption, the other resource may be selected. Regardless of how the selection is made, it results in the identification of the physical port 20 or 22 that is used to access the selected physical resource.

非排他的実施形態において、物理リソースの選択は、動作が完了するまで利用されることが好ましい。一連の関連トランザクションが、送信元IPエージェント14と、宛先IPエージェントの重複ペア(例えば、図11Aの2つのIPエージェントIP5)との間で送信される場合、すべてのトランザクションが、動作の完了まで同じ宛先IPエージェントに送信される。そうでなければ、データの破損またはその他の問題が発生しうる。重複物理リソースが相互接続である場合、典型的には、同様のアプローチが好ましい。応答(読み出しなど)を求めるトランザクションでは、読み出し要求トランザクションおよび結果応答の両方が、同じ相互接続を介して送信されることが好ましい。さらに、トランザクションのパケットの破損を避けるために、トランザクション全体、および、トランザクションのパケットが、同じパスで同じ宛先へルーティングされることが好ましい。パケットは、リンクを通るために数ビートを必要とし、おそらくは、他の仮想チャネルとインターリーブされうるので、パケットの終了までポートまたはリンクを変えないことが重要である。そうでなければ、パケットの複数のビートは、パケットの部分がシステムを通して移動する時に順序がばらばらになりうるので、それにより情報が破損しうる。要求と同じパスを介して応答をルーティングすることが通常は望ましいが、必須ではない。 In non-exclusive embodiments, the selection of physical resources is preferably utilized until the operation is complete. If a series of related transactions are sent between a source IP agent 14 and an overlapping pair of destination IP agents (e.g., the two IP agents IP5 in FIG. Sent to destination IP agent. Otherwise, data corruption or other problems may occur. A similar approach is typically preferred if the overlapping physical resources are interconnects. For transactions that require a response (such as a read), both the read request transaction and the result response are preferably sent over the same interconnect. Furthermore, to avoid corruption of transactional packets, it is preferable that the entire transaction and the transactional packets be routed on the same path to the same destination. It is important not to change ports or links until the end of the packet, as the packet requires several beats to traverse the link and may possibly be interleaved with other virtual channels. Otherwise, the multiple beats of the packet may be out of order as portions of the packet travel through the system, thereby corrupting the information. Although it is usually desirable to route responses through the same path as requests, it is not required.

いくつかの非排他的実施形態において、各ビートと共に送信された順序付け情報を用いて、順不同でまたは異なるリソースから受信されたトランザクションのビートを再順序付けする機能を、宛先IPエージェントに提供することが有利でありうる。例えば、制御ビットMは、パケットの各ビートに対する固有の「ビートカウント数」を特定するために用いられてよい。次いで、パケットのビートは、各ビートと共に送信された固有のビートカウント数を用いて、正確な番号順で宛先IPエージェントによって組み立てられうる。各ビートと共に送信されるビートカウント数を提供することにより、破損に関する上述の問題の多くが解決されうる。 In some non-exclusive embodiments, it is advantageous to provide a destination IP agent with the ability to reorder transactional beats received out of order or from different resources using ordering information sent with each beat. It can be. For example, control bit M may be used to specify a unique "beat count" for each beat of a packet. The beats of packets can then be assembled by the destination IP agent in precise numerical order, with a unique beat count number sent with each beat. By providing a beat count number that is sent with each beat, many of the above-mentioned problems with corruption may be resolved.

ストリーム内インターリービング
前述したように、ストリームは、仮想チャネルおよびトランザクションクラスのペアリングとして定義される。4つの仮想チャネル(例えば、VC0、VC1、VC2、および、VC3)、ならびに、3つのトランザクションクラス(P、NP、C)があった場合、最大で12の異なる可能なストリームがある。12のストリームは、完全に独立している。ストリームは、独立しているので、例えば、相互接続ワイヤ12および12Zなどの共有リソース上でインターリーブされうる。各アービトレーション工程で、仮想チャネルのストリームが選択され、対応するポート22は、そのトランザクションの残りに対してそのトランザクションにロックされる。別の仮想チャネルを選択して、トランザクションの伝送の完了前に同じポート上でインターリーブすることもできるが、トランザクションが完了するまでは、同じ仮想チャネルの別のストリームを選択することはできない。
Intra-Stream Interleaving As mentioned above, a stream is defined as a pairing of a virtual channel and a transaction class. If there were four virtual channels (eg, VC0, VC1, VC2, and VC3) and three transaction classes (P, NP, C), there are at most 12 different possible streams. The 12 streams are completely independent. Since the streams are independent, they can be interleaved on shared resources, such as interconnect wires 12 and 12Z, for example. At each arbitration step, a stream of virtual channels is selected and the corresponding port 22 is locked to the transaction for the remainder of the transaction. Another virtual channel may be selected to interleave on the same port before the transaction's transmission is complete, but another stream on the same virtual channel cannot be selected until the transaction is complete.

ストリーム内インターリービングは、2つのトランザクションが互いに独立しているという条件では、同じストリームを共有する2以上のトランザクションのインターリービングである。独立したトランザクションの例は、(1)2つの異なるIPエージェント14が、同じストリームを共有するトランザクションを生成すること、および、(2)同じIPエージェント14が、同じストリームを共有する2つのトランザクションを生成するが、生成するIPエージェント14が2つのトランザクションを独立するものとしてマークすること、を含む。トランザクションを独立するものとしてマークすることにより、トランザクションを再順序付けして、インターリービングを用いて配信できることを意味する。ストリーム内インターリービングによれば、トランザクションが完了するまで仮想チャネルのストリームをポートにロックする上述の制約を緩和または排除することができる。ストリーム内インターリービングによれば、(1)2以上の独立したトランザクションをストリーム上でインターリーブすることができ、(2)同じ仮想チャネルに関連する異なるストリームもインターリーブできる。 Intra-stream interleaving is the interleaving of two or more transactions that share the same stream, provided that the two transactions are independent of each other. Examples of independent transactions are (1) two different IP agents 14 generating transactions that share the same stream, and (2) the same IP agent 14 generating two transactions that share the same stream. but includes the generating IP agent 14 marking the two transactions as independent. Marking transactions as independent means that they can be reordered and distributed using interleaving. Intra-stream interleaving can relax or eliminate the above-mentioned constraint of locking a virtual channel's stream to a port until the transaction is complete. With intra-stream interleaving, (1) two or more independent transactions can be interleaved on a stream, and (2) different streams associated with the same virtual channel can also be interleaved.

ストリーム内インターリービングでは、同じストリーム上でインターリーブされうる2つ(以上)の独立したトランザクションを示すために、さらなる情報が必要である。様々な実施形態において、これは、多くの異なる方法で達成されてよい。一実施形態において、独立したトランザクションのパケットのヘッダ34は、一意的なトランザクション識別子すなわちIDを割り当てられる。一意的なトランザクション識別子を用いることにより、各トランザクションの各ビートは、独立するものとしてフラグを付される。各トランザクションに対する一意的なトランザクションIDを用いることにより、様々なノード102は、同じストリーム上でインターリーブされる複数の独立したトランザクションのビートを追跡する。 Intra-stream interleaving requires additional information to indicate two (or more) independent transactions that can be interleaved on the same stream. In various embodiments, this may be accomplished in many different ways. In one embodiment, the packet header 34 of an independent transaction is assigned a unique transaction identifier or ID. By using a unique transaction identifier, each beat of each transaction is flagged as independent. By using a unique transaction ID for each transaction, various nodes 102 track the beat of multiple independent transactions that are interleaved on the same stream.

インターリーブされたトランザクションの所与のペアについて、仮想チャネルおよびトランザクションクラスを指定するビットは同じであるが、各々のためのトランザクションIDを表すビットは異なる。 For a given pair of interleaved transactions, the bits specifying the virtual channel and transaction class are the same, but the bits representing the transaction ID for each are different.

したがって、制御ビットMに含まれるさらなるトランザクションID情報は、送信元および宛先IPエージェント14の両方および相互接続ファブリック106が、同じストリーム上でインターリーブされた時に、或るトランザクションを他のトランザクションに対して認識または区別することを可能にする。 Therefore, the additional transaction ID information contained in control bit M allows both source and destination IP agents 14 and interconnection fabric 106 to recognize one transaction relative to another when interleaved on the same stream. or make it possible to distinguish.

同期配信対非同期配信
ブロードキャスティング、マルチキャスティング、読み出し応答マルチキャスティング、および、エニーキャスティングでは、同じトランザクションの複数のインスタンス化が、相互接続ファブリック106で伝送されてよい。目標となる宛先およびそれらの宛先までのパスの各々が利用可能である場合、各宛先IPエージェント14は、ネットワーク上で通常の待ち時間だけ遅延して、やがてトランザクションを受信する。一方、パスまたは宛先のいずれかが利用できない(例えば、リソースバッファが満杯である)場合、1以上の利用可能な宛先が、利用できない宛先の前にトランザクションを受信してよい。かかる状況下での異なる到達時間は、2つの異なる実施例の可能性を提起する。
In synchronous vs. asynchronous delivery broadcasting, multicasting, read response multicasting, and anycasting, multiple instantiations of the same transaction may be transmitted on interconnection fabric 106. If each of the target destinations and paths to those destinations are available, each destination IP agent 14 will receive the transaction in due course, with a normal latency delay on the network. On the other hand, if either a path or a destination is unavailable (eg, a resource buffer is full), one or more available destinations may receive the transaction before the unavailable destination. Different arrival times under such circumstances raise the possibility of two different implementations.

第1同期または「ブロッキング」実施形態においては、各宛先がほぼ同時にトランザクションを受信することを保証する努力がなされる。換言すると、利用不可能なリソースが利用可能になるまで、利用可能なリソースへのトランザクションの配信が、遅延すなわち「ブロック」されてよい。結果として、指定された受信側の各々によるトランザクションの受信が同期される。この実施形態は、ほぼ同時にトランザクションを受信することが受信側にとって重要である応用例で用いられてよい。 In a first synchronization or "blocking" embodiment, an effort is made to ensure that each destination receives transactions at approximately the same time. In other words, delivery of transactions to available resources may be delayed or "blocked" until the unavailable resources become available. As a result, reception of transactions by each of the designated receivers is synchronized. This embodiment may be used in applications where it is important to the receiver to receive transactions at approximately the same time.

第2非同期的または非ブロッキング実施形態においては、利用可能な宛先へのトランザクションの配信を遅延させるためのブロッキングの努力がなされない。その代わり、トランザクションの各インスタンス化が、利用可能性に基づいて配信され、これは、利用可能なリソースがトランザクションをすぐに受信する一方で、利用不可能なリソースは、利用可能になった時にトランザクションを受信することを意味する。結果として、非同期的すなわち異なる時間に配信が起こりうる。このアプローチの利点は、利用可能な宛先IPエージェント14が、すぐにトランザクションを処理でき、他のIPエージェントと同期するのを待ってブロックされることがないことである。結果として、遅延が回避される。 In a second asynchronous or non-blocking embodiment, no blocking efforts are made to delay delivery of the transaction to available destinations. Instead, each instantiation of the transaction is delivered based on availability, meaning that available resources receive the transaction immediately, while unavailable resources receive the transaction when it becomes available. As a result, delivery can occur asynchronously, i.e. at different times. The advantage of this approach is that available destination IP agents 14 can process the transaction immediately and are not blocked waiting to synchronize with other IP agents. As a result, delays are avoided.

いくつかの実施形態についてのみ詳細に説明したが、ここに提供した本開示の精神や範囲を逸脱することなしに多くの他の形態で本願を実施できることを理解されたい。したがって、これらの実施形態は、例示的なものであって、限定的なものではないとみなされ、本明細書に示した詳細に限定されず、添付の特許請求の範囲および等価物の範囲内で変形されてもよい。 Although only certain embodiments have been described in detail, it will be appreciated that the present application may be practiced in many other forms without departing from the spirit or scope of the disclosure provided herein. Accordingly, these embodiments are to be considered illustrative and not restrictive, and are not limited to the details set forth herein, but within the scope of the appended claims and equivalents. It may be transformed by

Claims (13)

システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記SBRトランザクションは、アドレスを前記トランザクションのヘッダ内に提供することによって、前記1以上の宛先IPエージェントを特定し、前記アドレスは、前記SoC上の2以上の宛先IPエージェントを識別するために、前記相互接続ファブリックによって解決される、SoC。
1. A system on chip (SoC), comprising:
an interconnection fabric;
a plurality of IP agents interconnected by the interconnection fabric, the plurality of IP agents being configured to be sources and destinations of transaction traffic transmitted between the IP agents over the interconnection fabric;
Equipped with
a first IP agent configured to generate and transmit a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
the interconnect fabric is configured to make routing decisions regarding how to route and deliver the SBR transaction over the interconnect fabric to the one or more destination IP agents among the plurality of IP agents on the SoC ;
The SBR transaction identifies the one or more destination IP agents by providing an address in a header of the transaction, the address being resolved by the interconnect fabric to identify two or more destination IP agents on the SoC.
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、前記相互接続ファブリックの2つのノードの間で共有相互接続を介して前記SBRトランザクションの1つのインスタンス化を統合して送信することによって、前記相互接続ファブリックを介して送信されるトランザクショントラフィックを削減するように、前記ルーティング決定を行うよう構成されており、前記共有相互接続は、配信パスに沿って2以上の宛先IPエージェントに至る、SoC。
A system-on-chip (SoC),
an interconnect fabric;
a plurality of IP agents interconnected by the interconnection fabric and configured to be a source and destination of transaction traffic transmitted between the IP agents through the interconnection fabric; an IP agent,
Equipped with
a first IP agent configured to generate and send a source-based routing (SBR) transaction identifying one or more destination IP agents among the plurality of IP agents on the SoC;
The interconnection fabric makes routing decisions regarding how to route and deliver the SBR transaction via the interconnection fabric to the one or more destination IP agents among the plurality of IP agents on the SoC. configured to do
The interconnection fabric is transmitted through the interconnection fabric by consolidating and sending one instantiation of the SBR transaction over a shared interconnect between two nodes of the interconnection fabric. The SoC is configured to make the routing decisions to reduce transaction traffic, wherein the shared interconnect leads to two or more destination IP agents along a delivery path .
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、前記SBRトランザクションに応答して生成された複数の受信済みの応答トランザクションを統合して、前記相互接続ファブリックのノードの間で共有相互接続を介して前記応答トランザクションの1つのインスタンス化を転送することによって、前記相互接続ファブリックを介して送信されるトランザクショントラフィックを削減するように、前記ルーティング決定を行うよう構成されており、前記共有相互接続は、応答配信パスに沿って前記応答トランザクションの目標に至る、SoC。
A system-on-chip (SoC),
an interconnect fabric;
a plurality of IP agents interconnected by the interconnection fabric and configured to be a source and destination of transaction traffic transmitted between the IP agents through the interconnection fabric; an IP agent,
Equipped with
a first IP agent configured to generate and send a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
The interconnection fabric makes routing decisions about how to route and deliver the SBR transaction via the interconnection fabric to the one or more destination IP agents among the plurality of IP agents on the SoC. configured to do
The interconnection fabric aggregates multiple received response transactions generated in response to the SBR transaction into one instance of the response transaction via a shared interconnect between nodes of the interconnection fabric. the shared interconnect is configured to make the routing decision to reduce transaction traffic sent through the interconnect fabric by forwarding the responses along a response delivery path; SoC to reach transaction goals .
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、さらに、共有相互接続に関連付けられている複数のストリーム上で複数のトランザクションの伝送をインターリーブするように、前記ルーティング決定を行うよう構成されており、(a)前記複数のストリームの各々は、仮想チャネルおよびトランザクションタイプの一意的な組み合わせによって規定され、(b)同じトランザクションの1以上の部分が、同じストリームを介して伝送される、SoC。
A system-on-chip (SoC),
an interconnect fabric;
a plurality of IP agents interconnected by the interconnection fabric and configured to be a source and destination of transaction traffic transmitted between the IP agents through the interconnection fabric; an IP agent of
Equipped with
a first IP agent configured to generate and send a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
The interconnection fabric makes routing decisions regarding how to route and deliver the SBR transaction via the interconnection fabric to the one or more destination IP agents among the plurality of IP agents on the SoC. configured to do
The interconnection fabric is further configured to make the routing decision to interleave transmission of multiple transactions on multiple streams associated with a shared interconnection, the interconnection fabric being further configured to: (a) (b) each of the SoCs is defined by a unique combination of virtual channels and transaction types, and (b) one or more parts of the same transaction are transmitted over the same stream .
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、さらに、共有相互接続に関連付けられている複数のストリームの中の同じストリームを介して2以上の独立したトランザクションをルーティングするように、前記ルーティング決定を行うよう構成されており、前記複数のストリームの各々は、仮想チャネルおよびトランザクションタイプの一意的な組み合わせによって規定される、SoC。
1. A system on chip (SoC), comprising:
an interconnection fabric;
a plurality of IP agents interconnected by the interconnection fabric, the plurality of IP agents being configured to be sources and destinations of transaction traffic transmitted between the IP agents over the interconnection fabric;
Equipped with
a first IP agent configured to generate and transmit a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
the interconnect fabric is configured to make routing decisions regarding how to route and deliver the SBR transaction over the interconnect fabric to the one or more destination IP agents among the plurality of IP agents on the SoC ;
The SoC, wherein the interconnect fabric is further configured to make the routing decision to route two or more independent transactions through a same stream among a plurality of streams associated with a shared interconnect, each of the plurality of streams defined by a unique combination of a virtual channel and a transaction type.
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、共通の論理識別子を共有する重複物理リソースを備え、前記ルーティング決定は、(a)前記重複物理リソースの1つを選択すること、(b)前記重複物理リソースの前記選択された1つを用いて前記トランザクションをルーティングすること、とを含む、SoC。
A system-on-chip (SoC),
an interconnect fabric;
a plurality of IP agents interconnected by the interconnection fabric and configured to be a source and destination of transactional traffic transmitted between the IP agents through the interconnection fabric; an IP agent of
Equipped with
a first IP agent configured to generate and send a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
The interconnection fabric makes routing decisions about how to route and deliver the SBR transaction via the interconnection fabric to the one or more destination IP agents among the plurality of IP agents on the SoC. configured to do
The interconnection fabric comprises redundant physical resources sharing a common logical identifier, and the routing decision includes (a) selecting one of the redundant physical resources; (b) selecting one of the redundant physical resources; and routing the transaction using one of the SoCs.
請求項に記載のSoCであって、前記ルーティング決定は、
(a)前記重複物理リソースの利用可能性、
(b)前記重複物理リソースの間の相対的な混在状態、
(c)前記重複物理リソースの間の負荷バランシング、
(d)前記重複物理リソースの間のランダム選択、
(e)前記重複物理リソースの間の最長時間未使用選択、
(f)前記重複物理リソースの間の相対的な電力消費、
(g)前記重複物理リソースの間で選択を行うためのハッシュ関数の利用、または、
(h)(a)~(g)の任意の組み合わせ、の内の1つに基づく、SoC。
7. The SoC of claim 6 , wherein the routing decision comprises:
(a) availability of said redundant physical resources;
(b) a relative mixed state between the overlapping physical resources;
(c) load balancing between the overlapping physical resources;
(d) random selection between said overlapping physical resources;
(e) longest time unused selection between said overlapping physical resources;
(f) relative power consumption between the overlapping physical resources;
(g) utilizing a hash function to select between said overlapping physical resources; or
(h) an SoC based on any combination of (a) to (g);
システムオンチップ(SoC)であって、
相互接続ファブリックと、
前記相互接続ファブリックによって相互接続されている複数のIPエージェントであって、前記IPエージェントの間で前記相互接続ファブリックを介して伝送されるトランザクショントラフィックの送信元および宛先になるよう構成されている、複数のIPエージェントと、
を備え、
第1IPエージェントは、前記SoC上の前記複数のIPエージェントの中の1以上の宛先IPエージェントを特定するソースベースルーティング(SBR)トランザクションを生成して送信するよう構成されており、
前記相互接続ファブリックは、前記SoC上の前記複数のIPエージェントの中の前記1以上の宛先IPエージェントへ前記相互接続ファブリックを介して前記SBRトランザクションをどのようにルーティングして配信するかについてルーティング決定を行うよう構成され
前記相互接続ファブリックは、さらに、2以上の独立したトランザクションを同じストリームを介してル-ティングするように、前記ルーティング決定を行うよう構成されており、前記2以上の独立したトランザクションは各々、前記2以上の独立したトランザクションが前記同じストリームを介してルーティングされうるように、前記2以上の独立したトランザクションの各々のビートを前記相互接続ファブリックが追跡することを可能にする一意的なトランザクション識別子を割り当てられる、SoC。
1. A system on chip (SoC), comprising:
an interconnection fabric;
a plurality of IP agents interconnected by the interconnection fabric, the plurality of IP agents being configured to be sources and destinations of transaction traffic transmitted between the IP agents over the interconnection fabric;
Equipped with
a first IP agent configured to generate and transmit a source-based routing (SBR) transaction that identifies one or more destination IP agents among the plurality of IP agents on the SoC;
the interconnect fabric is configured to make routing decisions regarding how to route and deliver the SBR transaction over the interconnect fabric to the one or more destination IP agents among the plurality of IP agents on the SoC ;
The interconnect fabric is further configured to make the routing decision to route two or more independent transactions over a same stream, wherein the two or more independent transactions are each assigned a unique transaction identifier that enables the interconnect fabric to track each beat of the two or more independent transactions so that the two or more independent transactions may be routed over the same stream.
請求項に記載のSoCであって、前記同じストリームを介してルーティングされた前記2以上の独立したトランザクションは、前記同じストリームを指定する共通の制御情報を共有するが、前記2以上の独立したトランザクションの各々の前記トランザクション識別子は一意的である、SoC。 9. The SoC of claim 8 , wherein the two or more independent transactions routed via the same stream share common control information specifying the same stream, but the two or more independent transactions The transaction identifier of each transaction is unique. 請求項1から9のいずれか一項に記載のSoCであって、前記SBRトランザクションは、前記SoC上の前記1以上の宛先IPエージェントを論理的に識別する識別子を前記トランザクションのヘッダ内に提供することによって、前記1以上の宛先IPエージェントを特定する、SoC。 10. The SoC of any one of claims 1 to 9 , wherein the SBR transaction provides an identifier in a header of the transaction that logically identifies the one or more destination IP agents on the SoC. the SoC, thereby identifying the one or more destination IP agents; 請求項1から10のいずれか一項に記載のSoCであって、前記SBRトランザクションは、一意的なコードを前記トランザクションのヘッダ内に提供することによって、前記1以上の宛先IPエージェントを特定し、前記一意的なコードは、前記SoC上の前記1以上の宛先IPエージェントを識別するために、前記相互接続ファブリック内で解決される、SoC。 11. The SoC according to any one of claims 1 to 10 , wherein the SBR transaction identifies the one or more destination IP agents by providing a unique code in a header of the transaction; The unique code is resolved within the interconnection fabric to identify the one or more destination IP agents on the SoC. 請求項1から11のいずれか一項に記載のSoCであって、前記相互接続ファブリックは、複数のノードを備え、前記複数のノードの各々は、前記SBRトランザクション内で指定された1以上のアドレスを前記1以上の宛先IPエージェントの1以上の論理識別子に解決するためのルックアップテーブルを備える、SoC。 12. The SoC of any one of claims 1 to 11 , wherein the interconnection fabric comprises a plurality of nodes, each of the plurality of nodes having access to one or more addresses specified in the SBR transaction. a look-up table for resolving one or more logical identifiers of the one or more destination IP agents. 請求項1から12のいずれか一項に記載のSoCであって、前記相互接続ファブリックは、複数のノードを備え、前記複数のノードの各々は、前記1以上の宛先IPエージェントの論理識別子を、前記トランザクションをルーティングするために用いられる1以上のポート識別子に変換するためのテーブルを備える、SoC。 13. The SoC of claim 1, wherein the interconnect fabric comprises a plurality of nodes, each of the plurality of nodes comprising a table for translating logical identifiers of the one or more destination IP agents into one or more port identifiers used to route the transaction.
JP2020552300A 2018-03-30 2019-03-19 Steps for implementing source-based routing within an interconnect fabric on a system-on-chip Active JP7457654B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024039915A JP2024079720A (en) 2018-03-30 2024-03-14 Arbitrating portions of a transaction over a virtual channel associated with the interconnect

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862650589P 2018-03-30 2018-03-30
US62/650,589 2018-03-30
US201962800897P 2019-02-04 2019-02-04
US62/800,897 2019-02-04
PCT/US2019/023001 WO2019190827A1 (en) 2018-03-30 2019-03-19 Arbitrating portions of transactions over virtual channels associated with an interconnect

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024039915A Division JP2024079720A (en) 2018-03-30 2024-03-14 Arbitrating portions of a transaction over a virtual channel associated with the interconnect

Publications (3)

Publication Number Publication Date
JP2021519464A JP2021519464A (en) 2021-08-10
JPWO2019190827A5 JPWO2019190827A5 (en) 2022-02-04
JP7457654B2 true JP7457654B2 (en) 2024-03-28

Family

ID=68054357

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020552300A Active JP7457654B2 (en) 2018-03-30 2019-03-19 Steps for implementing source-based routing within an interconnect fabric on a system-on-chip
JP2024039915A Pending JP2024079720A (en) 2018-03-30 2024-03-14 Arbitrating portions of a transaction over a virtual channel associated with the interconnect

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2024039915A Pending JP2024079720A (en) 2018-03-30 2024-03-14 Arbitrating portions of a transaction over a virtual channel associated with the interconnect

Country Status (6)

Country Link
US (5) US10853282B2 (en)
EP (2) EP4216062A1 (en)
JP (2) JP7457654B2 (en)
KR (1) KR20200135780A (en)
IL (1) IL277566A (en)
WO (1) WO2019190827A1 (en)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10243848B2 (en) 2015-06-27 2019-03-26 Nicira, Inc. Provisioning logical entities in a multi-datacenter environment
WO2019191431A1 (en) 2018-03-30 2019-10-03 Provino Technologies, Inc. PROTOCOL LEVEL CONTROL FOR SYSTEM ON A CHIP (SoC) AGENT RESET AND POWER MANAGEMENT
EP4216062A1 (en) 2018-03-30 2023-07-26 Google LLC Arbitrating portions of transactions over virtual channels associated with an interconnect
US11088902B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Synchronization of logical network state between global and local managers
US11088919B1 (en) 2020-04-06 2021-08-10 Vmware, Inc. Data structure for defining multi-site logical network
US11777793B2 (en) 2020-04-06 2023-10-03 Vmware, Inc. Location criteria for security groups
US11381456B2 (en) 2020-04-06 2022-07-05 Vmware, Inc. Replication of logical network data between global managers
US11316773B2 (en) 2020-04-06 2022-04-26 Vmware, Inc. Configuring edge device with multiple routing tables
US11658922B2 (en) 2020-08-31 2023-05-23 Micron Technology, Inc. Optional path ordering in packet-based network
US11392527B2 (en) * 2020-08-31 2022-07-19 Micron Technology, Inc. Ordered delivery of data packets based on type of path information in each packet
US11343227B2 (en) 2020-09-28 2022-05-24 Vmware, Inc. Application deployment in multi-site virtualization infrastructure
US11675722B2 (en) * 2021-04-16 2023-06-13 Apple Inc. Multiple independent on-chip interconnect
CN113517942B (en) * 2021-07-14 2022-09-02 重庆邮电大学 Emergency communication-oriented transmitting baseband system of multi-channel digital short-wave transmitter SoC
US11573918B1 (en) * 2021-07-20 2023-02-07 Arm Limited Methods and apparatus for communicating between node devices
US20220114131A1 (en) * 2021-12-22 2022-04-14 Intel Corporation System, method, apparatus and architecture for dynamically configuring device fabrics

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007115252A (en) 2005-10-17 2007-05-10 Samsung Electronics Co Ltd NoC ROUTER AND NI EMPLOYING AXI, AND NoC SYSTEM AND ITS INTERLEAVING METHOD
WO2010022767A1 (en) 2008-08-26 2010-03-04 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding in a network
WO2010137572A1 (en) 2009-05-25 2010-12-02 日本電気株式会社 Network-on-chip, network routing method, and system
US20130083794A1 (en) 2011-09-29 2013-04-04 Sridhar Lakshmanamurthy Aggregating Completion Messages In A Sideband Interface
JP2014209764A (en) 2014-06-17 2014-11-06 株式会社東芝 On-chip router and multicore system using the same
JP2017502421A (en) 2014-01-10 2017-01-19 クアルコム,インコーポレイテッド System and method for resolving DRAM page contention based on memory access patterns
US20170289064A1 (en) 2016-04-01 2017-10-05 Electronics And Telecommunications Research Institute On-chip network device capable of networking in dual swithching network modes and operation method thereof

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6707818B1 (en) 1999-03-17 2004-03-16 Broadcom Corporation Network switch memory interface configuration
US6604159B1 (en) * 1999-08-12 2003-08-05 Mips Technologies, Inc. Data release to reduce latency in on-chip system bus
US6829666B1 (en) * 1999-09-29 2004-12-07 Silicon Graphics, Incorporated Modular computing architecture having common communication interface
US6654896B1 (en) 2000-05-16 2003-11-25 Hewlett-Packard Development Company, L.P. Handling of multiple compliant and non-compliant wake-up sources in a computer system
US6678767B1 (en) * 2000-10-06 2004-01-13 Broadcom Corp Bus sampling on one edge of a clock signal and driving on another edge
TW513635B (en) * 2000-11-24 2002-12-11 Ibm Method and structure for variable-length frame support in a shared memory switch
WO2002069158A1 (en) * 2001-02-28 2002-09-06 Brecis Communications A multi-service system-on-chip
US7174467B1 (en) 2001-07-18 2007-02-06 Advanced Micro Devices, Inc. Message based power management in a multi-processor system
US7577857B1 (en) 2001-08-29 2009-08-18 3Com Corporation High speed network interface with automatic power management with auto-negotiation
US6976134B1 (en) 2001-09-28 2005-12-13 Emc Corporation Pooling and provisioning storage resources in a storage network
US7664018B2 (en) * 2002-07-02 2010-02-16 Emulex Design & Manufacturing Corporation Methods and apparatus for switching fibre channel arbitrated loop devices
US7283944B2 (en) * 2003-12-15 2007-10-16 Springsoft, Inc. Circuit simulation bus transaction analysis
US7260688B1 (en) * 2004-04-15 2007-08-21 Xilinx, Inc. Method and apparatus for controlling access to memory circuitry
US7500066B2 (en) * 2005-04-30 2009-03-03 Tellabs Operations, Inc. Method and apparatus for sharing instruction memory among a plurality of processors
EP1785811B1 (en) 2005-11-14 2018-12-05 Texas Instruments Incorporated Memory information transfer power management
US20070130344A1 (en) 2005-11-14 2007-06-07 Pepper Timothy C Using load balancing to assign paths to hosts in a network
US7912075B1 (en) * 2006-05-26 2011-03-22 Avaya Inc. Mechanisms and algorithms for arbitrating between and synchronizing state of duplicated media processing components
EP2227749B1 (en) * 2007-12-06 2014-08-27 Technion Research & Development Foundation Ltd. Bus enhanced network on chip
US20090245257A1 (en) 2008-04-01 2009-10-01 International Business Machines Corporation Network On Chip
US9542341B2 (en) * 2008-12-19 2017-01-10 St-Ericsson Sa Resolving contention between data bursts
US20100158005A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US8918488B2 (en) 2009-02-04 2014-12-23 Citrix Systems, Inc. Methods and systems for automated management of virtual resources in a cloud computing environment
US9514074B2 (en) * 2009-02-13 2016-12-06 The Regents Of The University Of Michigan Single cycle arbitration within an interconnect
US8448001B1 (en) 2009-03-02 2013-05-21 Marvell International Ltd. System having a first device and second device in which the main power management module is configured to selectively supply a power and clock signal to change the power state of each device independently of the other device
US20110320706A1 (en) 2009-03-12 2011-12-29 Hitachi, Ltd. Storage apparatus and method for controlling the same
US8831666B2 (en) 2009-06-30 2014-09-09 Intel Corporation Link power savings with state retention
CN101651625B (en) 2009-09-03 2011-09-21 中兴通讯股份有限公司 Route selecting device and route selecting method of multi-service restoration
US8850250B2 (en) 2010-06-01 2014-09-30 Intel Corporation Integration of processor and input/output hub
US8782456B2 (en) 2010-06-01 2014-07-15 Intel Corporation Dynamic and idle power reduction sequence using recombinant clock and power gating
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
DE112011105543T5 (en) * 2011-08-22 2014-04-30 Intel Corporation A method of improving data throughput in open-core protocol-based interconnect networks using dynamically selectable redundant physical paths with a common link
US8711867B2 (en) * 2011-08-26 2014-04-29 Sonics, Inc. Credit flow control scheme in a router with flexible link widths utilizing minimal storage
US8868941B2 (en) 2011-09-19 2014-10-21 Sonics, Inc. Apparatus and methods for an interconnect power manager
US8713234B2 (en) * 2011-09-29 2014-04-29 Intel Corporation Supporting multiple channels of a single interface
EP2761386B1 (en) 2011-09-30 2017-09-06 Intel Corporation Managing sideband segments in on-die system fabric
US9053251B2 (en) 2011-11-29 2015-06-09 Intel Corporation Providing a sideband message interface for system on a chip (SoC)
CN104081722B (en) 2012-01-13 2018-05-22 英特尔公司 Efficient peer-to-peer communications in SoC constructions are supported
US8924779B2 (en) 2012-03-30 2014-12-30 Lsi Corporation Proxy responder for handling anomalies in a hardware system
US9436623B2 (en) 2012-09-20 2016-09-06 Intel Corporation Run-time fabric reconfiguration
US9612652B2 (en) 2012-09-29 2017-04-04 Intel Corporation Controlling power consumption by power management link
US9355058B2 (en) 2012-10-22 2016-05-31 Intel Corporation High performance interconnect physical layer
US9258234B1 (en) 2012-12-28 2016-02-09 Juniper Networks, Inc. Dynamically adjusting liveliness detection intervals for periodic network communications
US9223668B2 (en) 2013-03-13 2015-12-29 Intel Corporation Method and apparatus to trigger and trace on-chip system fabric transactions within the primary scalable fabric
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
US20150026494A1 (en) 2013-07-19 2015-01-22 Sonics, Inc. Intelligent mesochronous synchronizer
US9473388B2 (en) * 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US9727114B2 (en) 2014-09-25 2017-08-08 Telefonaktiebolaget L M Ericsson (Publ) HW-controlled power domains with automatic power-on request
US9798377B2 (en) 2014-10-08 2017-10-24 Apple Inc. Methods and apparatus for recovering errors with an inter-processor communication link between independently operable processors
TWI536267B (en) 2014-11-07 2016-06-01 瑞昱半導體股份有限公司 Control method applied to operating-mode finite-state-machine and computer readable media
US10210120B2 (en) * 2015-03-26 2019-02-19 Intel Corporation Method, apparatus and system to implement secondary bus functionality via a reconfigurable virtual switch
GB2537855B (en) 2015-04-28 2018-10-24 Advanced Risc Mach Ltd Controlling transitions of devices between normal state and quiescent state
US10157160B2 (en) 2015-06-04 2018-12-18 Intel Corporation Handling a partition reset in a multi-root system
US9733689B2 (en) 2015-06-27 2017-08-15 Intel Corporation Hardware apparatuses and methods to perform transactional power management
US10353747B2 (en) * 2015-07-13 2019-07-16 Futurewei Technologies, Inc. Shared memory controller and method of using same
US10209734B2 (en) 2016-01-25 2019-02-19 Samsung Electronics Co., Ltd. Semiconductor device, semiconductor system, and method of operating the semiconductor device
US10133341B2 (en) 2016-06-06 2018-11-20 Arm Limited Delegating component power control
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US10223128B2 (en) 2016-09-23 2019-03-05 Apple Inc. Booting and power management
US10775871B2 (en) 2016-11-10 2020-09-15 Apple Inc. Methods and apparatus for providing individualized power control for peripheral sub-systems
US10725955B2 (en) 2017-12-08 2020-07-28 Arm Limited Power control of inter-domain transaction bridge
US10642341B2 (en) 2018-03-23 2020-05-05 Juniper Networks, Inc. Selective modification of power states based on conditions
US10739836B2 (en) 2018-03-27 2020-08-11 Intel Corporation System, apparatus and method for handshaking protocol for low power state transitions
WO2019191431A1 (en) 2018-03-30 2019-10-03 Provino Technologies, Inc. PROTOCOL LEVEL CONTROL FOR SYSTEM ON A CHIP (SoC) AGENT RESET AND POWER MANAGEMENT
EP4216062A1 (en) 2018-03-30 2023-07-26 Google LLC Arbitrating portions of transactions over virtual channels associated with an interconnect
US11294850B2 (en) 2019-03-29 2022-04-05 Intel Corporation System, apparatus and method for increasing bandwidth of edge-located agents of an integrated circuit

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007115252A (en) 2005-10-17 2007-05-10 Samsung Electronics Co Ltd NoC ROUTER AND NI EMPLOYING AXI, AND NoC SYSTEM AND ITS INTERLEAVING METHOD
WO2010022767A1 (en) 2008-08-26 2010-03-04 Telefonaktiebolaget Lm Ericsson (Publ) Packet forwarding in a network
WO2010137572A1 (en) 2009-05-25 2010-12-02 日本電気株式会社 Network-on-chip, network routing method, and system
US20130083794A1 (en) 2011-09-29 2013-04-04 Sridhar Lakshmanamurthy Aggregating Completion Messages In A Sideband Interface
JP2017502421A (en) 2014-01-10 2017-01-19 クアルコム,インコーポレイテッド System and method for resolving DRAM page contention based on memory access patterns
JP2014209764A (en) 2014-06-17 2014-11-06 株式会社東芝 On-chip router and multicore system using the same
US20170289064A1 (en) 2016-04-01 2017-10-05 Electronics And Telecommunications Research Institute On-chip network device capable of networking in dual swithching network modes and operation method thereof

Also Published As

Publication number Publication date
JP2024079720A (en) 2024-06-11
EP3776231B1 (en) 2023-05-03
KR20200135780A (en) 2020-12-03
US20190303325A1 (en) 2019-10-03
EP3776231A4 (en) 2022-01-26
EP3776231A1 (en) 2021-02-17
US20190303326A1 (en) 2019-10-03
WO2019190827A1 (en) 2019-10-03
JP2021519464A (en) 2021-08-10
IL277566A (en) 2020-11-30
US10838891B2 (en) 2020-11-17
US20190303217A1 (en) 2019-10-03
US11003604B2 (en) 2021-05-11
US11640362B2 (en) 2023-05-02
US10585825B2 (en) 2020-03-10
US10853282B2 (en) 2020-12-01
US20190303320A1 (en) 2019-10-03
US20210294762A1 (en) 2021-09-23
EP4216062A1 (en) 2023-07-26

Similar Documents

Publication Publication Date Title
JP7457654B2 (en) Steps for implementing source-based routing within an interconnect fabric on a system-on-chip
US9742630B2 (en) Configurable router for a network on chip (NoC)
JP6556450B2 (en) Matrix of on-chip routers interconnecting multiple processing engines and routing method using the same
US7940666B2 (en) Communication node architecture in a globally asynchronous network on chip system
US5835491A (en) Method for supporting multicast capabilities in switching networks with a reservation ring
US6839794B1 (en) Method and system to map a service level associated with a packet to one of a number of data streams at an interconnect device
US7773616B2 (en) System and method for communicating on a richly connected multi-processor computer system using a pool of buffers for dynamic association with a virtual channel
US7643477B2 (en) Buffering data packets according to multiple flow control schemes
US7773618B2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system using dynamic assignment of virtual channels
US20060101178A1 (en) Arbitration in a multi-protocol environment
JP4255833B2 (en) Tagging and arbitration mechanisms at the input / output nodes of computer systems
US7065580B1 (en) Method and apparatus for a pipelined network
US5883895A (en) Arbitration ring with automatic sizing for a partially populated switching network
US9185026B2 (en) Tagging and synchronization for fairness in NOC interconnects
JPS63501663A (en) multiprocessor communication device
US7773617B2 (en) System and method for arbitration for virtual channels to prevent livelock in a richly-connected multi-processor computer system
US20230370392A1 (en) Network-on-chip architecture for handling different data sizes
WO2008057821A2 (en) System and method for preventing deadlock in richly-connected multi-processor computer system
Kim Energy-Aware On-Chip Networks
Gaizauskas et al. Formation of multiple filaments in transparent solids
Wang et al. An Effective Approach for Multicast on Multi-core Architecture

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20211210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211223

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211223

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220114

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231018

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240315

R150 Certificate of patent or registration of utility model

Ref document number: 7457654

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150