JPWO2014103144A1 - インタフェース装置、およびメモリバスシステム - Google Patents

インタフェース装置、およびメモリバスシステム Download PDF

Info

Publication number
JPWO2014103144A1
JPWO2014103144A1 JP2014531021A JP2014531021A JPWO2014103144A1 JP WO2014103144 A1 JPWO2014103144 A1 JP WO2014103144A1 JP 2014531021 A JP2014531021 A JP 2014531021A JP 2014531021 A JP2014531021 A JP 2014531021A JP WO2014103144 A1 JPWO2014103144 A1 JP WO2014103144A1
Authority
JP
Japan
Prior art keywords
response
header
order
request
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014531021A
Other languages
English (en)
Other versions
JP5793690B2 (ja
Inventor
石井 友規
友規 石井
山口 孝雄
孝雄 山口
篤 吉田
篤 吉田
覚 得津
覚 得津
祐紀 曽我
祐紀 曽我
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2014531021A priority Critical patent/JP5793690B2/ja
Application granted granted Critical
Publication of JP5793690B2 publication Critical patent/JP5793690B2/ja
Publication of JPWO2014103144A1 publication Critical patent/JPWO2014103144A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/147Signalling methods or messages providing extensions to protocols defined by standardisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

ネットワーク・オン・チップ(NoC)で相互接続されたメモリアクセスシステムにおいて、メモリアクセス要求の順序が変更された場合でも、応答パケットを正しく生成する技術を提供する。インタフェース装置は、NoC上のメモリに接続されたメモリコントローラと、集積回路上に形成されたバスネットワークとを接続する。メモリコントローラは、複数のリクエストデータの処理順序を調停する。インタフェース装置は、複数のリクエストパケットから抽出された複数のリクエストヘッダを第1の順序で受け取り、各リクエストヘッダに対応する各レスポンスヘッダが第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、複数のリクエストデータが第2の順序でメモリに送信されたとき、各レスポンスヘッダが第2の順序に従って読み出されるよう、ヘッダ生成記憶部を制御するヘッダ順序制御部とを備えている。

Description

本願は、ネットワーク化された通信バスを備える半導体チップにおいて、通信バスの制御を行うための装置、方法及びプログラムに関する。
近年、SoC(System on Chip)が利用される組込機器分野や汎用プロセッサ分野において、半導体チップの高機能化への要求が高まっている。半導体チップの高機能化に伴い、チップ上の通信バスを介して転送されるデータの要求帯域が増加し、通信バスの広帯域化が必要となってきている。低いバス動作周波数で通信バスを広帯域化するため、バス配線をプロセッサ間で共用し、資源利用効率の向上が可能なネットワーク・オン・チップ(Network−on−Chip;NoC)が注目されている。
特許文献1は、NoCを介して複数のイニシエータやメモリコントローラが相互接続された一般的なSoCの構成に於いて、所定期間内に一定レートのアクセスを保証する必要のあるレート保証型のイニシエータと、メモリへのアクセス要求の頻度が不定期で予測困難なレート非保証型のイニシエータが混在する場合に、メモリアクセスの即応性を向上させる方法を開示する。
図1は、特許文献1に記載されたSoCの構成を示す。レート保証型イニシエータ201からのアクセス要求を検出した、メモリコントローラ206のアクセス管理部203は、アクセス回数をチェックすることで、所定レート以内のアクセスか否かを判断し、その結果を記録し、管理する。アクセス調停部205は、他のイニシエータ202からのアクセス要求が無い場合にのみ、所定レート以上のレート保証型イニシエータ201からのアクセス要求を許可する。レート保証型イニシエータ201からのアクセス要求の調停前に、レート非保証型イニシエータ202からのアクセス要求を検出した場合には、アクセス調停部205は、レート保証型イニシエータ201からのアクセス要求に関する調停順序を後回しにして、イニシエータ202からのアクセス要求を先に調停する。調停順序を後回しにする理由は、イニシエータ201は既に所定レート以上のアクセスを行っているためである。上述の処理により、イニシエータ202のアクセス要求に対して即応性を高めることを実現している。
特許第4485574号明細書
メモリコントローラ内でのアクセス順序変更によるメモリアクセス効率のさらなる向上が求められている。
上記課題を解決するために、本発明の一態様は、集積回路上のメモリと接続されたメモリコントローラと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置を含む。前記メモリコントローラは、複数のリクエストデータの処理順序を調停する調停部、および各リクエストデータに応答して前記メモリから出力された各レスポンスデータを前記インタフェース装置に送信する送信部を有している。前記インタフェース装置は、前記バスネットワークから受信した複数のリクエストパケットの各々に脱パケット化処理を行い、各リクエストパケットからリクエストヘッダおよびリクエストデータを抽出して出力する脱パケット化処理部と、前記脱パケット化処理部が出力した複数のリクエストヘッダを第1の順序で受け取って、各リクエストヘッダに対応するレスポンスヘッダを順に生成し、各レスポンスヘッダが前記第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、前記リクエストデータに応答して前記メモリから出力された前記レスポンスデータ、および前記ヘッダ生成記憶部に記憶されている前記レスポンスヘッダを利用してレスポンスパケットを生成して前記バスネットワークに送信するパケット化処理部と、前記調停部が、前記複数のリクエストデータを前記第1の順序とは異なる第2の順序で前記メモリに送信したとき、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御するヘッダ順序制御部とを備えている。
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
本発明の一態様にかかるインタフェース装置によれば、メモリ内でリクエスト順序の変更があった場合でも、レスポンスヘッダとレスポンスデータの対応関係が正しく保たれ、システムの動作を保証することができる。また動作周波数向上やバス幅の拡張を行わずに、メモリコントローラ内でのアクセス順序変更によるメモリアクセス効率の向上を図ることができる。また、メモリアクセス完了に先立ち、メモリコントローラからリクエスト順序の通知を受けることにより、レスポンスヘッダの検索処理及びレスポンスヘッダのルータでの処理を、メモリへのアクセス処理と並列化することでレスポンスヘッダの検索処理の遅延を隠蔽することが可能となり、イニシエータの即応性が高まる。
従来の技術によるSoCの構成を示す図である。 ネットワーク・インタフェース301の内部構成、およびネットワーク・インタフェース301、メモリコントローラ302およびメモリ303との接続関係を示す図である。 SoC400の構造を示す図である。 (a)〜(d)は、NoC上で送受信されるパケットの種類とその構成例を示す図である。 パケットのヘッダ51の構成例を示す図である。 (A)〜(D)は、図3に示すレート保証型のイニシエータ401aとレート非保証型のイニシエータ401bとがメモリ402aにアクセスする場合に行われるデータの処理の流れを示す図である。 図3のメモリ側のNIC404aの構成例を示す図である。 メモリコントローラ406aに与えられる信号の種類を示す図である。 ヘッダ生成記憶部102が適用する、レスポンスパケットのヘッダの生成規則の例を示す図である。 図6に示すタイミング図の時刻T3においてヘッダ生成記憶部102が記憶する順序リストの例を示す図である。 リクエストパケット401a1に対応するレスポンスパケット送信後の、レスポンスヘッダの順序リストを示す図である。 (A)〜(D)は、図3に示すイニシエータ401aおよび401bがメモリ402aにアクセスする場合のメモリの動作を示す図である。 時刻T2(図12)における、メモリコントローラ406aで受信したリクエストパケットの管理構造例を示す図である。 リクエスト順序情報の例を示す図である。 (A)および(B)は、パケット401a2に対応するヘッダおよびパケット401b1に対応するヘッダの格納例を示す図である。 NIC404aによって実行される、リクエストパケット受信時の処理フローを示す図である。 NIC404aによって実行される、レスポンスデータ受信時の処理フローを示す図である。 NIC404aによって実行される、メモリアクセス順序の変更に伴う処理の手順を示すフローチャートである。 ヘッダ生成記憶部102における、レスポンスパケットのヘッダ格納領域のデータ構造を示す図である。 (a)はメモリアクセス完了後にリクエスト順序情報の通知を受信する例に関する、メモリコントローラ406aおよびNIC404aの動作タイミングを示す図であり、(b)はメモリアクセス実行に先立ってリクエスト順序情報の通知を受信する例に関する、メモリコントローラ406aおよびNIC404aの動作タイミングを示す図である。 NICの出力タイミング、NICに接続されたルータ405の出力タイミング、およびルータ405内での処理の遷移を示す図である。 レスポンスパケットのヘッダとレスポンスデータとが別個に送受信された場合の処理を示す図である。 パイプライン構成が、ルーティング処理、仮想チャネルの割当と出力スイッチの割当、スイッチングの3ステージ構成となっている3サイクルルータにおける、最適なレスポンスヘッダの出力タイミングを示す図である。 実施形態2にかかるNIC414の構成例を示す図である。 リクエスト順序を記憶するためのデータ構造の例を示す図である。 アドレスを逆変換するためのデータ構造の例を示す図である。 記憶領域の状態例を示す図である。
本願発明者らは、上述した従来の構成に存在する課題を検討した。AXI、OCP、AHBなどのオンチップバス・プロトコルでインタフェースされるイニシエータやターゲットを、パケット交換ネットワークであるNoCに相互接続するには、パケット化や脱パケット化処理を行うインタフェース装置が必要である。このようなインタフェース装置は、一般的にはNIC(Network Interface Controller)と呼ばれる。
図2は、ネットワーク・インタフェース301の内部構成、およびネットワーク・インタフェース301、メモリコントローラ302およびメモリ303との接続関係を示す。メモリコントローラ302はネットワーク・インタフェース301を介して、パケット交換ネットワークであるNoCに接続されている。またメモリコントローラ302は、メモリ303に接続される。
NoC上でのデータの送受信は全てパケット単位で行われ、リードデータやライトレスポンスのようなメモリからのレスポンスデータ(レスポンス情報とも呼ばれる。)は、NIC301でパケット化されてNoC上に送出される。またライトデータやリードコマンドのようなメモリへのリクエストデータ(リクエスト情報とも呼ばれる。)はパケット化された状態でNIC301で受信され、脱パケット化された後、メモリコントローラ302に送信される。
パケット304a、304bはメモリへのリードやライトのリクエストパケットである。パケット304aは、パケットヘッダH1とリクエストデータR1とから構成される。また、パケット304bは、パケットヘッダH2とリクエストデータR2とから構成される。パケット304a、304bはこの順でNIC301に到着している。パケットヘッダは、送信元や宛先のNICのIDやパケットの優先度など、NoCルータがパケットの中継を行う際に必要となる情報などが格納される。
NIC301は、リクエストパケットの脱パケット化処理を行い、リクエストデータR1を抽出して所定のオンチップバス・プロトコルに変換し、変換後のリクエストデータR1をメモリコントローラ302に送信する。続いてNIC301は、リクエストデータR2も抽出してプロトコル変換を行い、メモリコントローラ302に送信する。メモリコントローラ302が複数のイニシエータから送信されたリクエストに関するレート制御を行うことにより、メモリ303に対して実行されるリクエストが、リクエストデータ306b、306aの順に逆転されて送信されることがある。その場合、メモリ303は到着したリクエストデータの順序にしたがってデータを読み出す。その結果、リクエストデータ306bに対応するデータ(D2)307bがまず読み出され、その後、リクエストデータ306aに対応するデータ(D1)307aが読み出される。これにより、レスポンスデータ308b、308aはこの順序で、NIC301に到着する。つまり、リクエストデータの送信順序と、レスポンスデータの受信順序が入れ替わる。
NIC301は、レスポンスデータをパケット化してレスポンスパケット309b、309aを順次完成させ、近接のルータ(図示せず)に送信する。レスポンスパケット309b、309aの生成にあたっては、レスポンスデータ308b、308aにパケットヘッダH1、H2を付加する必要がある。NIC301は、リクエストパケットに付加されていたパケットヘッダH1、H2を、メモリにリクエストデータを発行した順序とともにNIC301内に記憶している。NIC301は、メモリコントローラ302を介してメモリ303から受け取ったレスポンスデータ308b、308aに、記憶していたパケットヘッダH1、H2を順に付加する。これにより、NIC301は、レスポンスパケットを完成させ近接のルータ(図示せず)に送信することができる。図2には、NIC301によって生成され、NIC301から送信されたレスポンスパケット309b、309aが示されている。
ここで留意すべきは、レスポンスパケット309aおよび309bでは、ヘッダとペイロードとの関係が適切に保たれていないことである。本来は、レスポンスパケット309b中のヘッダH1と、レスポンスパケット309a中のレスポンスデータD1とによってレスポンスパケットが構成される必要がある。同様に、レスポンスパケット309a中のヘッダH2と、レスポンスパケット309b中のレスポンスデータD2とによってレスポンスパケットが構成される必要がある。
このような不都合が生じる理由は、メモリコントローラ302内部で発生したリクエスト順序の変更に起因して、NIC301内に記憶されたレスポンスヘッダの順序と、メモリから受信するレスポンスデータの対応関係が破壊されたからである。レスポンスデータに適切なレスポンスヘッダが付加されないことにより、ヘッダ内の情報を読み取ることでパケットの中継処理を行うNoCルータの処理は破綻し、性能が保証されないばかりか、場合によってはシステムダウンをももたらす。これは、メモリへのリードの場合でも、ライトの場合でも同様に生じる。
本願発明者らは、上述の問題を認識し、その解決を図るために本発明をなすに至った。
本発明の一態様の概要は以下のとおりである。
本発明の一態様であるインタフェース装置は、集積回路上のメモリに接続されたメモリコントローラと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、前記メモリコントローラは、複数のリクエストデータの処理順序を調停する調停部、および各リクエストデータに応答して前記メモリから出力された各レスポンスデータを前記インタフェース装置に送信する送信部を有しており、前記インタフェース装置は、前記バスネットワークから受信した複数のリクエストパケットの各々に脱パケット化処理を行い、各リクエストパケットからリクエストヘッダおよびリクエストデータを抽出して出力する脱パケット化処理部と、前記脱パケット化処理部が出力した複数のリクエストヘッダを第1の順序で受け取って、各リクエストヘッダに対応するレスポンスヘッダを順に生成し、各レスポンスヘッダが前記第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、前記リクエストデータに応答して前記メモリから出力された前記レスポンスデータ、および前記ヘッダ生成記憶部に記憶されている前記レスポンスヘッダを利用してレスポンスパケットを生成して前記バスネットワークに送信するパケット化処理部と、前記調停部が、前記複数のリクエストデータを前記第1の順序とは異なる第2の順序で前記メモリに送信したとき、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御するヘッダ順序制御部とを備えている。
ある実施形態において、前記ヘッダ順序制御部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を、前記調停部から取得する。
ある実施形態において、前記調停部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を出力し、前記ヘッダ生成記憶部は、記憶位置に応じて読み出し順序が決定される記憶領域を有しており、前記ヘッダ順序制御部は、前記リクエスト順序情報にしたがって、前記ヘッダ生成記憶部に記憶された各レスポンスヘッダの記憶位置を変更する。
ある実施形態において、前記調停部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を出力し、前記ヘッダ生成記憶部は、各レスポンスヘッダと、各レスポンスヘッダの読み出し順序とを対応付けて記憶しており、前記ヘッダ順序制御部は、前記リクエスト順序情報にしたがって、前記第2記憶領域に記憶された読み出し順序を変更する。
ある実施形態において、調停された前記リクエストデータに応答して得られる前記レスポンスデータが前記パケット化処理部に取得される前に、前記ヘッダ順序制御部は前記リクエスト順序情報を取得し、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御する。
ある実施形態において、前記インタフェース装置は、前記バスネットワークに接続されたルータに前記レスポンスパケットを送信することが可能であり、調停された前記リクエストデータに応答して得られる前記レスポンスデータが前記パケット化処理部に取得される前に、前記ヘッダ順序制御部は、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御し、前記パケット化処理部は、前記レスポンスヘッダおよび前記レスポンスデータに対して前記ルータが行う処理の遅延量の情報、または、前記ルータのパイプライン処理の構成の情報に関するルータ情報を予め保持しており、前記パケット化処理部は、前記ルータに、前記レスポンスヘッダを先に送信し、その後前記ルータ情報に基づいて決定される時間間隔を開けて、前記レスポンスデータを送信する。
本発明の他の一態様であるインタフェース装置は、集積回路上のメモリと接続されたメモリコントローラと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、前記バスネットワークから受信した複数のリクエストパケットの各々に脱パケット化処理を行い、各リクエストパケットからリクエストヘッダおよびリクエストデータを抽出して出力する脱パケット化処理部と、前記脱パケット化処理部が出力した複数のリクエストヘッダを前記第1の順序で受け取って、各リクエストヘッダに対応するレスポンスヘッダを順に生成し、各レスポンスヘッダが前記第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、前記メモリコントローラから前記メモリに送信される信号の状態を監視して、複数のリクエストデータが前記第1の順序とは異なる第2の順序で送信されたか否かを解析する解析部と、前記リクエストデータに応答して前記メモリから出力された前記レスポンスデータ、および前記ヘッダ生成記憶部に記憶されている前記レスポンスヘッダを利用してレスポンスパケットを生成して前記バスネットワークに送信するパケット化処理部と、前記解析部による解析の結果、前記複数のリクエストデータが、前記第1の順序とは異なる第2の順序で前記メモリに送信されたとき、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御するヘッダ順序制御部とを備えている。
ある実施形態において、前記複数のリクエストデータが前記第2の順序で前記メモリに送信されたことを検出したとき、前記解析部は、前記リクエスト順序情報を取得する。
本発明のさらに他の一態様であるメモリバスシステムは、集積回路上に形成されたバスネットワークと、集積回路上に設けられたメモリと、前記集積回路上に設けられ、前記メモリと接続されたメモリコントローラと、上述のいずれかのインタフェース装置であって、前記メモリコントローラ、および前記バスネットワークを接続するインタフェース装置とを備えている。
ある実施形態において、メモリバスシステムは、前記バスネットワークに接続されたイニシエータをさらに備えており、前記イニシエータは、前記メモリへのアクセスを要求するリクエストデータを送信し、前記メモリにおける前記アクセスの結果であるレスポンスデータを受信する。
以下、添付の図面を参照しながら、本開示による伝送装置および伝送方法の実施形態を説明する。
(実施の形態1)
図3は、SoC400の構造を示す。SoC400は、パケット交換方式のバスネットワーク(分散型バスネットワーク)450を備えた半導体の集積回路(チップ)である。SoC400では、チップ上に構築されたネットワーク450によって、複数のイニシエータ401a〜401eと、複数のメモリ402a、402bとが接続されている。メモリ402a、402bに対応して、メモリコントローラ406aおよび406bも設けられている。
イニシエータ401a〜401eは、プロセッサ、DSP(Digital Signal Processor)、GP(Graphic Processor)、IO(Input/Output)デバイスなどである。
図示されるNIC、およびメモリコントローラは、それぞれがチップ(SoC400)上に構築された電子的な回路であってもよいし、SoC400の少なくとも一部を構成する所定のチップセットに統合されたチップであってもよい。NICは、特定の物理層および/またはデータリンク層を使用して通信を行うことができる。
メモリ402a、402bはイニシエータ401a〜401eの各々からアクセスされる、記憶装置である。メモリは、たとえばDRAM、SRAM、EEPROM等を含む。複数の機能をシステム的に組み上げることで構成されるSoCにおいては、製品機能の差別化のための独自開発のイニシエータや、他のシステムからの流用やカスタマイズにより、組み込まれるイニシエータや、市販の汎用イニシエータなどが混在する。そのため、イニシエータ毎にインタフェースされるバスプロトコルが異なるのが一般的である。メモリコントローラについても同様である。このため、SoC400上では、独自プロトコルをはじめとして、AXI、AHB、APB、OCP、PIFなどの任意のプロトコルの混在が生じる。各イニシエータやメモリは、イニシエータ側のNIC403a〜403e、メモリ側のNIC404a、404b、およびメモリコントローラ406aおよび406bを介して、ルータで構成されるパケット交換ネットワーク450に接続される。各NICはパケット交換ネットワーク450へのバスプロトコル変換処理を行い、イニシエータ−メモリ間で送受信されるメモリアクセスのデータを、パケット化/脱パケット化してNoCバスにインタフェースする。
また、要求帯域が変動する場合などは、イニシエータの変動により、メモリも用途に依存して変動し得る。つまり、イニシエータ401a〜401eを除くSoC400の構成、具体的には、NICを含むパケット交換ネットワーク450と、メモリコントローラ406aおよび406bと、メモリ402a、402bとを有するシステム(メモリバスシステム)を予め用意しておき、用途に応じて適宜イニシエータを接続すればよい。SoC400のためのモジュールを提供することができ、汎用性の高い環境を提供することが可能となる。
図4(a)〜(d)は、NoC上で送受信されるパケットの種類とその構成例を示す。
図4(a)および(b)は、ライトおよびリードの各リクエストパケットの構成例を示す。図4(a)に示すライトのリクエストパケットは、ヘッダ51aおよびリクエストデータ52aを含む。図4(b)に示すリードのリクエストパケットは、ヘッダ51bおよびリクエストデータ(リード・アドレス)52bを含む。なお、リクエストパケットにはヘッダおよびアドレスの一部を含んでもよい。たとえば、図4(a)に示されるヘッダ51aと、リクエストデータ52aに含まれるライト・アドレスとをまとめて、1つのヘッダとして設けてもよい。換言すれば、ライト・アドレスは、図4(a)および(b)に示すヘッダ51aまたは51bに含まれてもよい。
図4(c)および(d)は、ライトおよびリードの各レスポンスパケットの構成例を示す。レスポンスパケットは、リクエストパケットに応答して実行された結果を示すデータを格納する。ライトのレスポンスパケットは、ヘッダ51cおよびレスポンスデータ(ライト・ステータス)52cを含む。リードのレスポンスパケットは、ヘッダ51dおよびリクエストデータ52dを含む。なお、レスポンスパケットのライト・ステータスやリード・ステータスには、リード・アドレスやライト・アドレスが含まれていてもよい。アドレスを含む場合は、アドレスフィールドもレスポンスヘッダの一部として、後述する図15に示す記憶領域に記憶されることになる。
図5は、パケットのヘッダ51の構成例を示す。ヘッダ51は、たとえばパケットIDフィールド51−1、パケット種別フィールド51−2、送信元フィールド51−3、宛先フィールド51−4、転送優先度フィールド51−5、データサイズフィールド51−6を有している。
パケットIDフィールド51−1は、NICで、送信したリクエストパケットと対応するレスポンスパケットの対応関係を管理するための、イニシエータ毎に一意の識別子である。パケット種別フィールド51−2は、該パケットがリードのリクエストかリードのレスポンスかライトのリクエストかライトのレスポンスかを示す情報である。送信元フィールド51−3や宛先フィールド51−4は、NoCルータがパケットの配送経路をルーティングする場合に必要となる、システムで一意の宛先となるイニシエータやメモリのIDである。転送優先度フィールド51−5は、よりアクセス品質が求められるイニシエータのアクセス要求を、他のイニシエータよりも優先的に行うなどの品質保証に用いるための優先度情報である。データサイズフィールド51−6は、リードするデータのサイズやライトするデータのサイズの情報である。これら以外の情報がヘッダに含まれても良い。
AV機器や携帯端末への組み込みを対象とするような大規模なSoCでは、多様な特性のイニシエータが接続される形態が一般的である。たとえば、リアルタイム系の信号処理を行うイニシエータは、所定期間内に一定レートのアクセスを保証する必要のあるレート保証型のイニシエータと呼ばれる。また、たとえばウェブアクセスを行うイニシエータは、メモリへのアクセス要求の頻度が不定期で予測困難なレート非保証型のイニシエータと呼ばれる。
いま、図3に示すイニシエータ401aがレート保証型のイニシエータであるとし、図3に示すイニシエータ401bがレート非保証型のイニシエータであるとする。
図6(A)〜(D)は、図3に示すレート保証型のイニシエータ401aとレート非保証型のイニシエータ401bとがメモリ402aにアクセスする場合に行われるデータの処理の流れを示す。
図6(A)は、レート保証型のイニシエータ401aに所定のレートを保証するために必要なサイクルを示す。図6(A)によれば、イニシエータ401aに所定のレートを保証するためには、メモリコントローラ406aは平均的にRサイクルに1回のメモリアクセスを実行する必要がある。
図6(B)は、イニシエータ401aから出力されたメモリアクセスのリクエストパケットが、メモリコントローラ406aと接続されているNIC404a(図3)へ到着するタイミングを示している。リクエストパケット401a1を受信したNIC404aは、リクエストパケットの脱パケット化を行うとともに、リクエストパケットのヘッダから、レスポンスパケットに付与するためのヘッダを生成して記憶し、メモリコントローラ406aにリクエストデータを送信する。これにより、メモリアクセスが開始される。また図6(B)は、イニシエータ401aの次のリクエストパケット401a2がNIC404aに到着していることも示している。
図6(C)は、時刻T0(図6(A))に受信されたリクエストパケット401a1に対応するメモリアクセス処理が時刻T3に完了したことを示す。これにより、メモリコントローラ406aは時刻T3には次のメモリアクセスを実行可能な状態となる。図6(B)に示す次のリクエストパケット401a2は、時刻T3より早い時点で、NIC404aに到着している。NIC404aはリクエストパケット401a2の脱パケット化を行うとともに、リクエストパケットのヘッダから、レスポンスパケットに付与するためのヘッダを生成して記憶し、メモリコントローラ406aにリクエストデータを送信する。
図6(D)は、時刻T3より早い時点(時刻T2)で、イニシエータ401bからのリクエストパケット401b1がNIC404aに到着していることを示す。NIC404aはリクエストパケット401b1の脱パケット化を行うとともに、リクエストパケットのヘッダから、レスポンスパケットに付与するためのヘッダを生成して記憶し、メモリコントローラ406aにリクエストデータを送信する。
上述の通り、時刻T3に次のメモリアクセスが可能となる。しかしながらメモリコントローラ406aは、既に2つのリクエストパケット401a2、401b1から抽出されたリクエストデータを受信しているため、どのリクエストデータを次に実行すべきかを決定する処理(調停処理)を行う。
時刻T0+Rの期間内にイニシエータ401aの次のメモリアクセスを実行すれば、イニシエータ401aに対する所定レートは保証可能である。つまり、イニシエータ401aに関するリクエストデータの処理を優先させなくても、まだ時間的な余裕はある。そのため時刻T3において、メモリコントローラ406aは、イニシエータ401bからのリクエストパケット401b1から抽出されたリクエストデータを、次に実行するデータとして選択する。NIC404aが、メモリコントローラ406aにリクエストデータを送信した順序は、リクエストパケット401a1、401a2、401b1に対応する順序である。
しかしながら、図2を参照しながら説明したように、メモリコントローラ406aによる調停の結果、アクセス実行順序は変更される。具体的には、リクエストパケット401a1、401b1、401a2の順序で処理が実行される。メモリコントローラ406aは、NIC404aに、リクエストパケット401a2によるリクエストデータと、リクエストパケット401b1によるリクエストデータとの間で、アクセス実行順序が変更されたことを通知する。
この通知を受けて、NIC404aは記憶しているレスポンスヘッダの出力順序を調整する。メモリ402aから、メモリコントローラ406aを介してNIC404aにレスポンスデータが送信される順序は、リクエストパケット401a1、401b1、401a2の順序に対応する。NIC404aは、各レスポンスデータに、正しい順序でレスポンスヘッダを読み出してレスポンスパケットを完成させる。生成されたレスポンスパケットは、NIC404aに接続されたNoCルータに送信され、NoCバスを介して、イニシエータまで送信される。
図7は、図3のメモリ側のNIC404aの構成例を示す。図7はまた、ルータ405、メモリコントローラ406a、メモリ402aの接続関係を示している。なお、NIC404aは図3におけるNIC404aに対応する。しかしながら、NIC404bの構成もまたNIC404aと同じである。本実施形態では、NIC404aを例に挙げ、メモリコントローラ406a等との間で行われる動作を説明する。
NIC404aは、脱パケット化処理部101と、ヘッダ生成記憶部102と、パケット化処理部103と、ヘッダ順序制御部104とを備えている。
(脱パケット化処理部101)
脱パケット化処理部101は、ルータ405を介してリクエストパケットを受信する。リクエストパケットは、イニシエータが送信したメモリアクセスのリクエストを含む。たとえばリクエストパケットの構成例は図4(a)または図4(b)に示す通りである。メモリへのデータの書き込み(ライト)の場合を例にとると、脱パケット化処理部101は、受信したリクエストパケットからヘッダを分離する。
図8は、メモリコントローラ406aに与えられる信号の種類を示す。脱パケット化処理部101は、メモリコントローラのデータバス信号線にライトデータを提示し、アドレスバス信号線にアドレスを提示する。また脱パケット化処理部101は、ヘッダ内部を解析し、必要な情報を抽出して、制御信号線に提示する。例えば、図5のヘッダ51の構成例では、脱パケット化処理部101は、データサイズフィールド51−6からライトデータのサイズを抽出し、バースト転送時のサイクル数を算出して、制御信号として提示する。また脱パケット化処理部101は、分離したリクエストパケットのヘッダ51aを、ヘッダ生成記憶部102に送信する。
(ヘッダ生成記憶部102)
図7に示すヘッダ生成記憶部102は、脱パケット化処理部101から入力されたリクエストパケットのヘッダ51a、51bから、新たなヘッダ51を生成し、記憶する。新たなヘッダ51は、該リクエストのメモリオペレーションに対応するレスポンスパケットに付与するために利用される。
図9は、ヘッダ生成記憶部102が適用する、レスポンスパケットのヘッダの生成規則の例を示す。パケットIDフィールドは、リクエストデータとレスポンスデータのペアリングを行うための情報であるため、リクエストパケットのパケットIDがレスポンスパケットのヘッダ(レスポンスヘッダ)51cまたはレスポンスヘッダ51dに複製される。パケット種別フィールドは、リードのリクエストの場合には、リードのレスポンスを示す値に変換され、ライトのリクエストの場合には、ライトのレスポンスを示す値に変換され、それぞれレスポンスヘッダ51cまたはレスポンスヘッダ51dに格納される。
送信元フィールドに関しては、リクエストの場合には、メモリアクセスを発行したイニシエータ側のNICのIDが格納されている。一方、レスポンスの場合には、そのイニシエータは宛先となる。そのため、ヘッダ生成記憶部102は、リクエストパケットのヘッダ(リクエストヘッダ)の送信元フィールドの情報を、レスポンスヘッダの宛先フィールドに格納する。一方、リクエストの場合には、リクエストヘッダの宛先フィールドは、メモリ側のNICのIDが格納されているが、レスポンスの場合には、該メモリは送信元となる。そのため、ヘッダ生成記憶部102は、リクエストヘッダの宛先フィールドの情報を、レスポンスヘッダの送信元フィールドに格納する。他のフィールドについても必要に応じて変換処理され、レスポンスヘッダが生成される。
ヘッダ生成記憶部102は、生成されたレスポンスパケットのヘッダを、NICがリクエストパケットを受信した順に記憶する。記憶方法は、順序付きのリスト構造を用いても良い。
図10は、図6に示すタイミング図の時刻T3においてヘッダ生成記憶部102が記憶する順序リストの例を示す。時刻T2においては、リクエストパケット401a1に対応するメモリオペレーションが実行中である。当該リクエストパケット401a1に基づいて行われたメモリ402aへのアクセス結果を、メモリ402aからのレスポンスデータとして受信する。NIC404aでは、リクエストパケット401a1のアクセスに対応したレスポンスパケットのヘッダが、NIC404aが次にメモリコントローラ406aから受信したレスポンスデータに付与される状態にある。
(パケット化処理部103)
再び図7を参照する。
パケット化処理部103は、メモリ側から受信したレスポンスデータに、ヘッダを付与する処理などを行い、レスポンスパケットを完成させ、NoCバス側のルータ405に送信する。レスポンスデータに付与されたヘッダは、ヘッダ生成記憶部102から取得する。
時刻T3において、リクエストパケット401a1に基づくメモリオペレーションが完了し、レスポンスデータが返されると、パケット化処理部103は、ヘッダ生成記憶部102からレスポンスヘッダを読み出す。上述の通り、時刻T3におけるレスポンスヘッダの記憶状況(順序リスト)は図10に示すとおりである。パケット化処理部103は、リクエストパケット401a1に対応するレスポンスパケットのためのヘッダを取得し、レスポンスパケットを完成させ、ルータ405に送出する。パケット化処理部103は、リクエストパケット401a1に対応するレスポンスパケットを送信した後に更新された、レスポンスヘッダの記憶状況(順序リスト)を更新する。図11は、リクエストパケット401a1に対応するレスポンスパケット送信後の、レスポンスヘッダの順序リストを示す。
(ヘッダ順序制御部104)
図7に示すヘッダ順序制御部104は、メモリコントローラ406aおよびメモリ402aで実行されたメモリオペレーションの順序に従って、ヘッダ生成記憶部102に記憶されているレスポンスパケットのヘッダの読み出し順序を制御する。
図12(A)〜(D)は、図3に示すイニシエータ401aおよび401bからのリクエストにしたがってメモリ402aへのアクセスが発生する場合のメモリ402aの動作を示す。特に図12(C)は、時刻T3以降のリクエストパケット401b1および401a2を示している。
図12(C)は、メモリ402aが、時刻T3にイニシエータ401bのメモリアクセスのリクエストパケット401b1に基づく処理を実行し、該メモリアクセスを時刻T5に完了したことを示す。さらに図12(C)は、続いてイニシエータ401aのメモリアクセスのリクエストパケット401a2に基づく処理を実行し、該メモリアクセスを時刻T6に完了したことを示す。
図7に示されるように、メモリコントローラ406aは、アクセス調停部416aおよび送信部416bを有している。
アクセス調停部416aは、複数のリクエストデータを対象として調停処理を行う。調停処理の結果、メモリアクセスのリクエストパケット401a2と401b1に基づくリクエストの実行順序が変更される。このときアクセス調停部416aは、どのように実行順序が変更されたかを示すリクエスト順序情報を出力する。ヘッダ順序制御部104は、そのリクエスト順序情報をアクセス調停部416aから取得する。
例えば、メモリコントローラ406aのアクセス調停部416aは、NIC404aから受信するリクエストデータの順序を記憶し、調停処理によって何番目に受信したリクエストデータが何番目に実行されたかを示す情報をリクエスト順序情報として、NIC404のヘッダ順序制御部104に提供しても良い。
送信部416bは、リクエストデータにしたがってメモリから出力されたデータを、NIC404aのパケット化処理部103に転送する。
図13は、時刻T2における、メモリコントローラ406aで受信したリクエストパケットの管理構造の例である。この管理構造では、NIC404aより既に受け付けたリクエストパケット401a2、401b1に対応した受付順序の情報が保持されている。
時刻T3において、リクエストパケット401b1のメモリオペレーションが、リクエストパケット401a2に先立って実行されると、メモリ402aは、リクエストの実行順序が変更されたことを示すリクエスト順序情報をヘッダ順序制御部104に提供する。
図14は、リクエスト順序情報の例を示す。リクエスト順序情報を取得したヘッダ順序制御部104は、リクエスト順序情報を参照して、時刻T3におけるヘッダ生成記憶部102内のレスポンスヘッダの、パケット化処理部103への出力順序を変更する。具体的な処理は以下のとおりである。なお、以下では、ヘッダ生成記憶部102は、その記憶位置に応じて読み出し順序が決定される記憶領域を有しているとする。
まず、図15(A)に示すような状態で、パケット401a2に対応するヘッダおよびパケット401b1に対応するヘッダが順に格納されている。この状態では、先頭位置に格納されたパケット401a2に対応するヘッダが先に読み出され、その後、次の位置に格納されたパケット401b1に対応するヘッダが読み出される。
ヘッダ順序制御部104は、リクエスト順序情報(順序リスト)を図15(A)の状態から図15(B)の状態に変更する。この処理は、ヘッダ順序制御部104が順序リストから、記憶されたレスポンスヘッダの先頭から2番目のヘッダを読み出し、先頭の位置に変更することにより、実現される。これにより、先頭位置に格納されたパケット401b1に対応するヘッダが先に読み出され、その後、次の位置に格納されたパケット401a2に対応するヘッダが読み出されることになる。
図16は、NIC404aによって実行される、リクエストパケット受信時の処理フローを示す。脱パケット化処理部101がルータからリクエストパケットを受信すると、パケットを解析し、バスを駆動して、アドレス信号、データ信号、および必要な制御信号を含むリクエストデータをメモリコントローラ406aに送信する。ヘッダ生成記憶部102はレスポンスパケットのヘッダを生成し、ヘッダを記憶する。
図17は、NIC404aによって実行される、レスポンスデータ受信時の処理フローを示す。パケット化処理部103はメモリ402aからメモリコントローラ406aを介してレスポンスデータを受信する。するとパケット化処理部103は、ヘッダ生成記憶部102に記憶されている順序リストの先頭に配置されているヘッダを読み出し、レスポンスデータに付加してレスポンスパケットを生成する。その後、パケット化処理部103は、生成したレスポンスパケットをルータ405に送信する。
図18は、NIC404aによって実行される、メモリアクセス順序の変更に伴う処理フローを示す。パケット化処理部103はメモリ402aからメモリコントローラ406aを介してレスポンスデータを受信する。ヘッダ順序制御部104は、リクエストデータの処理順序が変更されたか否かを判定し、変更されていた場合にはリクエスト順序情報を解析してレスポンスパケットのためのヘッダ順序を調整する。具体的には、ヘッダ順序制御部104は、ヘッダ生成記憶部102に記憶されている順序リスト内のヘッダの順序を入れ替え、先に処理されたリクエストに対応するレスポンスパケット用のヘッダを順序リストの先頭に配置する。更新後のリストは引き続きヘッダ生成記憶部102に記憶される。
なお、リクエスト順序情報は、メモリコントローラ406aでのリクエストデータの処理順序の変更時にNICに通知される。通知は、メモリコントローラ406aによる調停毎に毎回行っても良いし、リクエストの実行順序に変更があった場合にのみ行っても良い。前者は、メモリコントローラ406aのアクセス調停部416aによる調停処理は行われたが、実際に実行順序が変更されなかった場合も含む。
またリクエストの実行順序に変更があった場合には、図15(A)に示す、レスポンスパケットのヘッダの順序リストのエントリーの順序を、図15(B)に示すように変更しても良い。または、順序リスト構造を用いず、順序情報だけを変更しても良い。図19を参照しながら、順序情報を変更する変形例を説明する。
図19は、ヘッダ生成記憶部102における、レスポンスパケットのヘッダ格納領域のデータ構造を示す。図19には、レスポンスヘッダを格納する記憶領域以外に、レスポンスヘッダの読み出し順序を記憶するための記憶領域が設けられている。各レスポンスヘッダとその読み出し順序の情報とが対応付けて記憶されている。なお、記憶領域が分けられていなくてもよく、各レスポンスヘッダとその読み出し順序の情報とがテーブル形式で格納されていてもよい。
図19(A)は、レスポンスデータの実行順序の変更前の順序記憶領域の状態を示す。リクエスト順序情報の取得により、実行順序が変更されたことが分かると、ヘッダ順序制御部104は図19(B)に示すように、記憶された順序の情報を変更する。レスポンスパケットのヘッダの記憶領域自体は変更されない。レスポンスパケットのヘッダの記憶領域を変更する必要がないため、変更時の処理の負荷を軽減できる。パケット化処理部103は、最も早い(最も小さい)実行順序が設定されたヘッダを用いて、レスポンスパケットを生成する。
ヘッダ順序制御部104がレスポンスヘッダの順序を変更する処理に時間を要する場合は、リクエスト順序情報の受取を、該リクエストにかかるメモリアクセス実行の完了に先立って行っても良い。
図20(a)は、メモリアクセス完了後にリクエスト順序情報の通知を受信する例に関する、メモリコントローラ406aおよびNIC404aの動作タイミングを示す。図20(b)は、メモリアクセス実行に先立ってリクエスト順序情報の通知を受信する例に関する、メモリコントローラ406aおよびNIC404aの動作タイミングを示す。
図20(a)では、レスポンスパケットの送信開始時刻は、時刻Td+Xである。一方、図20(b)の例におけるレスポンスパケットの送信開始時刻は、図20(a)の例よりXサイクル早い時刻Tdに送信を開始できる。メモリコントローラ406aのアクセス調停部416aが時刻Taにリクエストの実行順序を確定すると、続いてアクセス調停部416aは時刻TaからTcの期間にリクエストを実行する。即ちアクセス調停部416aはメモリ402aへのデータの読み書きのアクセス処理を行う。
メモリコントローラ406aは、リクエストの実行の完了を待たずに、レスポンスデータの送信に先立つ時刻Taで、NIC404aにリクエスト順序情報を通知する。NIC404aのヘッダ順序制御部104は、時刻Tbにリクエスト順序情報を受信すると、その時刻Tbからレスポンスヘッダの順序変更処理を開始する。ヘッダ順序制御部104がレスポンスヘッダの順序変更処理を行うには、Xサイクルの処理時間を有するとする。この処理は、メモリコントローラ406aによるメモリ402aへのリクエストの実行と共に並列して実行することが可能である。
リクエストの実行結果としてメモリ402aから得られたレスポンスデータは、時刻TdにNIC404aのパケット化処理部103に送信される。レスポンスデータを受信するとパケット化処理部103は、ヘッダ生成記憶部102の先頭の位置に存在していたレスポンスヘッダ、または最も早い実行順序であることを示すレスポンスヘッダを読み出し、レスポンスパケットを生成する。その後、パケット化処理部103は、レスポンスヘッダ、およびレスポンスデータを用いてレスポンスパケットを生成し、レスポンスパケットをルータ405に出力する。
レスポンスパケットのルータ405への送信は時刻Tdに開始される。時刻Tdは、リクエスト実行の完了に伴うレスポンスデータの取得時刻である。リクエスト順序情報をレスポンスデータと同時に通知する場合と比較して、Xサイクル分の処理遅延が短縮される。
NIC404aが、メモリコントローラ406aから、リクエスト実行の完了のタイミングを事前に取得できる場合は、レスポンスパケットという形態ではなく、レスポンスヘッダとレスポンスデータとを別々にルータ405に送信してもよい。レスポンスパケット(より具体的にはレスポンスデータ)をNIC404aからルータ405に送信するタイミングに先立って、レスポンスヘッダを先にルータ405に送信しても良い。レスポンスヘッダを先行してルータ405に送信することで、ルータの処理時間によるレスポンスパケットの送信遅延を削減することが可能となる。以下、具体的に説明する。
一般的なルータのパケット転送時の処理は、(1)ルーティング処理(RT)、(2)仮想チャネルの割当(VA)、(3)出力スイッチの割当(SA)およびスイッチング(ST)、の順序で実行される。これら3つのステージをそれぞれ1サイクルで実行するとすれば、ルータのパケット転送処理に要する時間は、合計3サイクルとなる。出力スイッチの割当とスイッチングは、レスポンスヘッダおよびレスポンスデータの双方に必要である。またルーティング処理および仮想チャネルの割当処理は、レスポンスヘッダのみで必要である。ルータ405はレスポンスパケット用のレスポンスヘッダを受信したタイミングから3サイクル後に、後続のルータやNICに、ヘッダの出力を開始することが可能となる。
図21は、NICの出力タイミング、NICに接続されたルータ405の出力タイミング、およびルータ405内での処理の遷移を示す。なお、この図の例における条件は、ヘッダが1サイクルで転送可能なサイズを有し、レスポンスデータが2サイクルで転送可能なサイズを有し、レスポンスパケット全体は3サイクルで転送可能なサイズを有するとしている。
図21に示すように、まず時刻t3にレスポンスヘッダHがNIC404aから出力される。SoCシステム400(図3)においては、NIC404aからのレスポンスヘッダHの出力は、レスポンスヘッダHが時刻t3にルータ405に注入されることを意味している。続いて時刻t4およびt5に、2サイクル分のレスポンスデータPが注入されている。ここでいう「注入される」という語は、ルータ405がレスポンスヘッダHを表す信号を内部に取り込んでいることを意味する。NIC404aが、ルータ405に接続される信号線に上記信号を載せたタイミングで、信号はルータ405に到着する。ルータ405がその信号を内部に取り込んでいない場合には、その信号はまだルータ405には注入されていないことになる。図21の時刻t3では、NICがレスポンスヘッダHの信号を信号線に載せ、同じタイミングでルータがその信号を内部に取り込んでいることを示している。その結果、次のサイクルである時刻t4で、ルータ405は取り込んだ信号を用いてRTのステージを実行することができる。
ルータ405は3サイクルかけてレスポンスヘッダHの処理を行い、続いて2サイクルかけてレスポンスデータPの処理を行う。これがルータ405における処理遅延となる。この処理遅延のため、レスポンスパケットがルータ405から出力されるタイミングは、時刻t6から時刻t8となる。レスポンスヘッダHがNICから出力された時刻t3を起点とすると、3サイクルの転送遅延が発生している。つまり、ルータ405はレスポンスパケット用のレスポンスヘッダを受信したタイミングから3サイクル後の時刻t6から、後続のルータやNICに、レスポンスパケットの出力を開始することが可能となる。
次に、上述したように、NICがレスポンスヘッダとレスポンスデータとを別々にルータに送信した例を考える。以下に説明する図22および27の例は、図22の例と同様、時刻t4においてレスポンスデータがNICから出力され、ルータに到着するという点で条件を揃えて説明している。
図22は、レスポンスパケットのヘッダとレスポンスデータとが別個に送受信された場合の処理を示す。
この例では、NIC404aは時刻t0において、レスポンスデータの出力予定時刻(本例では時刻t4)を知らせる通知を出力する。その通知は、同時刻にルータ405に到着する。これにより、ルータ405は、レスポンスデータの受取に先立って、その到着予定時刻を、時刻t0で検出することが可能となる。
NIC404aは、時刻t4にレスポンスデータをルータ405に注入することを踏まえ、レスポンスデータに付与するレスポンスヘッダを、時刻t4の3サイクル前である時刻t1の時点でルータ405に注入する。時刻t1においてレスポンスヘッダを受信したルータ405は、該レスポンスパケットに対するルーティング処理、仮想チャネルの割当、出力スイッチの割当とスイッチングによるレスポンスヘッダの転送を3サイクルかけて実行する。そしてルータ405は、時刻t4にレスポンスヘッダを後続のルータ405またはNICに転送する。
上述の処理を行っている時刻t4になると、ルータ405はNIC404aからレスポンスデータを受け取る。そして時刻t5にもさらにレスポンスデータを受け取る。時刻t4までに既にルータ405はルーティング処理、仮想チャネルの割当、出力スイッチの割当とスイッチングによるレスポンスヘッダの処理が完了している。よって、これらのレスポンスデータは、レスポンスヘッダHに続いて、時刻t5、t6に出力される。
図21の例では、時刻t6から時刻t8の区間に、ルータ405からレスポンスパケットが出力される。
しかしながら、図22に示す例のように、レスポンスヘッダを事前にルータ405に注入しておくことにより、ルータ405はレスポンスパケットの出力を時刻t4から開始することが可能となり、時刻t6において出力が完了する。つまり、図21の例と比較して、本例の構成によれば、2サイクルの処理遅延が全てのレスポンスパケットに関して削減され、即応性が高まる効果が得られる。
NIC404aは、メモリコントローラ406aからリクエスト実行完了のタイミングを事前に取得できない場合がある。その場合には、NIC404aからルータ405へのレスポンスヘッダの出力タイミングは、メモリコントローラからリクエスト順序情報を受けたタイミング、即ち、図20(b)の時刻Tbで示されるタイミングで行っても良い。メモリコントローラからリクエスト実行完了のタイミングを事前に取得できる場合には、リクエスト実行完了のタイミングと、NIC404aに接続されたルータ405の処理遅延とパイプライン構成によって最適なタイミングの値を決定してもよい。最適な値は、レスポンスヘッダとレスポンスデータとが連続してルータ405から出力され、レスポンスデータの注入開始が可能となる時刻までにレスポンスデータのルータ405での転送準備が完了しているタイミングとすればよい。図22では2サイクルの間隔に制御すればよい。これにより、後続のルータの仮想チャネル内にレスポンスヘッダだけが滞留し、該レスポンスヘッダに対応するレスポンスデータが到着しない状態を抑制可能となり、帯域利用効率を向上させつつ、レスポンスパケットの転送処理遅延を削減する効果が得られる。
図23は、パイプライン構成が、ルーティング処理、仮想チャネルの割当と出力スイッチの割当、スイッチングの3ステージ構成となっている3サイクルルータにおける、最適なレスポンスヘッダの出力タイミングを示す。このような3サイクルルータを用いる場合には、図23に示すように、レスポンスデータの送信に先立ち、レスポンスヘッダを1サイクル前に出力するタイミングが最適となる。
(実施の形態2)
実施の形態1では、メモリコントローラがリクエスト順序情報を出力し、NICがその情報を取得するとして説明した。しかしながら、リクエスト順序情報を提供するための仕組みを持たないメモリコントローラを用いる場合、NICはリクエスト順序情報を取得することができない。
本実施の形態2では、そのようなメモリコントローラを使用した場合であっても、NICがリクエストデータの順序変更を検出することが可能な構成に関する。具体的には、メモリコントローラからメモリモジュールに提示される信号の状態を検出し、メモリコントローラを介さずに、リクエストデータの順序変更を検出する。
図24は、本実施形態にかかるNIC414の構成例を示す。NIC414は、リクエスト順序情報を生成するためのリクエスト順序解析部2001を有している点において、実施の形態1のNIC404a、404bと相違している。実施の形態1のNIC404a等と同じ機能および構成を有する構成要素には、と同じ番号を付している。そして、以下では、異なる動作を中心に説明する。
なお、以下ではNIC414は図7のNIC404aに対応するとして説明しているが、実施形態1と同様、NIC404bとして利用することも可能である。
(リクエスト順序解析部)
リクエスト順序解析部2001は、メモリコントローラ426からメモリ402aに送信される信号の状態を監視する。具体的には、メモリコントローラ426からメモリ402aに提示されるアドレス情報を監視する。その結果、リクエスト順序解析部2001は、メモリコントローラ426からメモリ402aに発行されたリクエストデータを特定することができる。このリクエストデータとは、たとえば行アドレス、列アドレス、バンク番号、リード/ライトの情報である。これらに基づいて、リクエスト順序解析部2001は、リクエストの順序を示すリクエスト順序情報を構築し、ヘッダ順序制御部104に提供する。NIC414の脱パケット化処理部101で脱パケット化され、メモリコントローラ106に送出されるリクエストデータから、リクエスト順序の特定に要する情報を分離し記憶する。
図25は、リクエスト順序を記憶するためのデータ構造の例を示す。NIC414からメモリコントローラ426に、リクエストデータが転送された順序に従ってアドレスやリード/ライトの種別の情報が記憶される。
リクエスト順序解析部2001は、メモリコントローラ426から、メモリ402aに提示されるアドレスストローブ信号に基づいて、行アドレス、列アドレス、バンク番号、リード/ライトの情報を監視し、アドレス逆変換を行うことにより、リクエストデータに含まれるアドレス情報とリード/ライトの種別を特定する。
図26は、アドレスを逆変換するためのデータ構造の例を示す。アドレスの逆変換は、メモリコントローラ内でリクエストデータに含まれるアクセス先のアドレスから、メモリの行アドレス、列アドレスに変換する処理と逆の処理であり、変換ロジックとして実装されてもよい。監視した結果得られた行アドレスが80h、列アドレスが00h、メモリへのライトを示す場合、図26のアドレスの逆変換処理を行うことにより、リクエストデータでのアクセス対象アドレスは、8000hとなる。図25を参照することにより、リクエスト順序2のリクエストデータがメモリ2002に発行されたことが分かり、リクエスト順序解析部2001において、リクエスト順序の変更が検出できる。このとき、リクエスト順序解析部2001は、図14に示すリクエスト順序情報を生成し、ヘッダ順序制御部104に送信する。図27は、記憶領域の状態を示す。図25に示した記憶領域の状態は、図27に示すように変更される。
本発明の一態様にかかるインタフェース装置は、組込機器向けのSoCにおけるオンチップバスや、汎用プロセッサ、DSP上のローカルバスにおける、バスとメモリとのインタフェース装置(NIC)として利用可能である。また、当該インタフェース装置の動作方法、制御方法は、インタフェースの処理方法、インタフェース装置の制御プログラムとして利用可能である。
101 脱パケット化処理部
102 ヘッダ生成記憶部
103 パケット化処理部
104 ヘッダ順序制御部
105 ルータ
106 メモリコントローラ
201 レート保証型イニシエータ
202 レート非保証型イニシエータ
203 アクセス管理部
204 アクセス管理部
205 アクセス調停部
206 メモリコントローラ
207 メモリ
301 ネットワーク・インタフェース・コントローラ(NIC)
302 メモリコントローラ
303 メモリ
304−306 リクエストデータ
307−309 レスポンスデータ
401 イニシエータ
402、402a メモリ
403 イニシエータ側のネットワーク・インタフェース・コントローラ(NIC)
404、414 メモリ側のネットワーク・インタフェース・コントローラ(NIC)
405 ルータ
450 ネットワーク
2001 リクエスト順序解析部

Claims (10)

  1. 集積回路上のメモリに接続されたメモリコントローラと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、
    前記メモリコントローラは、複数のリクエストデータの処理順序を調停する調停部、および各リクエストデータに応答して前記メモリから出力された各レスポンスデータを前記インタフェース装置に送信する送信部を有しており、
    前記インタフェース装置は、
    前記バスネットワークから受信した複数のリクエストパケットの各々に脱パケット化処理を行い、各リクエストパケットからリクエストヘッダおよびリクエストデータを抽出して出力する脱パケット化処理部と、
    前記脱パケット化処理部が出力した複数のリクエストヘッダを第1の順序で受け取って、各リクエストヘッダに対応するレスポンスヘッダを順に生成し、各レスポンスヘッダが前記第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、
    前記リクエストデータに応答して前記メモリから出力された前記レスポンスデータ、および前記ヘッダ生成記憶部に記憶されている前記レスポンスヘッダを利用してレスポンスパケットを生成して前記バスネットワークに送信するパケット化処理部と、
    前記調停部が、前記複数のリクエストデータを前記第1の順序とは異なる第2の順序で前記メモリに送信したとき、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御するヘッダ順序制御部と
    を備えたインタフェース装置。
  2. 前記ヘッダ順序制御部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を、前記調停部から取得する、請求項1に記載のインタフェース装置。
  3. 前記調停部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を出力し、
    前記ヘッダ生成記憶部は、記憶位置に応じて読み出し順序が決定される記憶領域を有しており、
    前記ヘッダ順序制御部は、前記リクエスト順序情報にしたがって、前記ヘッダ生成記憶部に記憶された各レスポンスヘッダの記憶位置を変更する、請求項1に記載のインタフェース装置。
  4. 前記調停部は、前記複数のリクエストデータが前記第2の順序で送信されたことを示すリクエスト順序情報を出力し、
    前記ヘッダ生成記憶部は、各レスポンスヘッダと、各レスポンスヘッダの読み出し順序とを対応付けて記憶しており、
    前記ヘッダ順序制御部は、前記リクエスト順序情報にしたがって、前記第2記憶領域に記憶された読み出し順序を変更する、請求項1に記載のインタフェース装置。
  5. 調停された前記リクエストデータに応答して得られる前記レスポンスデータが前記パケット化処理部に取得される前に、前記ヘッダ順序制御部は前記リクエスト順序情報を取得し、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御する、請求項2に記載のインタフェース装置。
  6. 前記インタフェース装置は、前記バスネットワークに接続されたルータに前記レスポンスパケットを送信することが可能であり、
    調停された前記リクエストデータに応答して得られる前記レスポンスデータが前記パケット化処理部に取得される前に、前記ヘッダ順序制御部は、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御し、
    前記パケット化処理部は、前記レスポンスヘッダおよび前記レスポンスデータに対して前記ルータが行う処理の遅延量の情報、または、前記ルータのパイプライン処理の構成の情報に関するルータ情報を予め保持しており、
    前記パケット化処理部は、前記ルータに、前記レスポンスヘッダを先に送信し、その後前記ルータ情報に基づいて決定される時間間隔を開けて、前記レスポンスデータを送信する、請求項1に記載のインタフェース装置。
  7. 集積回路上のメモリと接続されたメモリコントローラと、前記集積回路上に形成されたバスネットワークとを接続するためのインタフェース装置であって、
    前記バスネットワークから受信した複数のリクエストパケットの各々に脱パケット化処理を行い、各リクエストパケットからリクエストヘッダおよびリクエストデータを抽出して出力する脱パケット化処理部と、
    前記脱パケット化処理部が出力した複数のリクエストヘッダを前記第1の順序で受け取って、各リクエストヘッダに対応するレスポンスヘッダを順に生成し、各レスポンスヘッダが前記第1の順序に従って読み出されるよう記憶するヘッダ生成記憶部と、
    前記メモリコントローラから前記メモリに送信される信号の状態を監視して、複数のリクエストデータが前記第1の順序とは異なる第2の順序で送信されたか否かを解析する解析部と、
    前記リクエストデータに応答して前記メモリから出力された前記レスポンスデータ、および前記ヘッダ生成記憶部に記憶されている前記レスポンスヘッダを利用してレスポンスパケットを生成して前記バスネットワークに送信するパケット化処理部と、
    前記解析部による解析の結果、前記複数のリクエストデータが、前記第1の順序とは異なる第2の順序で前記メモリに送信されたとき、各レスポンスヘッダが前記第2の順序に従って読み出されるよう、前記ヘッダ生成記憶部を制御するヘッダ順序制御部と
    を備えたインタフェース装置。
  8. 前記複数のリクエストデータが前記第2の順序で前記メモリに送信されたことを検出したとき、前記解析部は、前記リクエスト順序情報を取得する、請求項7に記載のインタフェース装置。
  9. 集積回路上に形成されたバスネットワークと、
    集積回路上に設けられたメモリと、
    前記集積回路上に設けられ、前記メモリと接続されたメモリコントローラと、
    請求項1から8のいずれかに記載のインタフェース装置であって、前記メモリコントローラ、および前記バスネットワークを接続するインタフェース装置と
    を備えた、メモリバスシステム。
  10. 前記バスネットワークに接続されたイニシエータをさらに備えており、
    前記イニシエータは、前記メモリへのアクセスを要求するリクエストデータを送信し、前記メモリにおける前記アクセスの結果であるレスポンスデータを受信する、請求項9に記載のメモリバスシステム。
JP2014531021A 2012-12-28 2013-11-19 インタフェース装置、およびメモリバスシステム Active JP5793690B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014531021A JP5793690B2 (ja) 2012-12-28 2013-11-19 インタフェース装置、およびメモリバスシステム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012287016 2012-12-28
JP2012287016 2012-12-28
JP2014531021A JP5793690B2 (ja) 2012-12-28 2013-11-19 インタフェース装置、およびメモリバスシステム
PCT/JP2013/006786 WO2014103144A1 (ja) 2012-12-28 2013-11-19 インタフェース装置、およびメモリバスシステム

Publications (2)

Publication Number Publication Date
JP5793690B2 JP5793690B2 (ja) 2015-10-14
JPWO2014103144A1 true JPWO2014103144A1 (ja) 2017-01-12

Family

ID=51020279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014531021A Active JP5793690B2 (ja) 2012-12-28 2013-11-19 インタフェース装置、およびメモリバスシステム

Country Status (4)

Country Link
US (1) US10225168B2 (ja)
JP (1) JP5793690B2 (ja)
CN (1) CN104137083B (ja)
WO (1) WO2014103144A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105323160B (zh) * 2014-07-23 2021-01-26 中兴通讯股份有限公司 报文收发方法及装置、通道单元及通信设备
US9632862B2 (en) * 2014-12-20 2017-04-25 Intel Corporation Error handling in transactional buffered memory
CN106302259B (zh) * 2015-05-20 2020-02-14 华为技术有限公司 片上网络中处理报文的方法和路由器
US10740031B2 (en) * 2018-09-25 2020-08-11 International Business Machines Corporation Interface scheduler for a distributed memory system
JP7072485B2 (ja) 2018-10-25 2022-05-20 コスモ工機株式会社 絶縁継手構造
JP2021043801A (ja) * 2019-09-12 2021-03-18 株式会社東芝 電子機器、電子機器システム、及び磁気ディスク装置
US11360920B2 (en) * 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
JP2022107316A (ja) 2021-01-08 2022-07-21 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
CN113162906B (zh) * 2021-02-26 2023-04-07 西安微电子技术研究所 一种NoC传输方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000187615A (ja) 1998-12-24 2000-07-04 Hitachi Ltd スイッチ装置を有する情報処理装置
JP2005092630A (ja) 2003-09-18 2005-04-07 Sony Corp メモリ制御装置及び制御方法
US7412574B2 (en) * 2004-02-05 2008-08-12 Micron Technology, Inc. System and method for arbitration of memory responses in a hub-based memory system
EP1909183A4 (en) 2005-07-06 2009-07-22 Panasonic Corp ACCESS CONTROL DEVICE, INTEGRATED ACCESS CONTROL CIRCUIT, AND ACCESS CONTROL METHOD
KR100675850B1 (ko) 2005-10-12 2007-02-02 삼성전자주식회사 AXI 프로토콜을 적용한 NoC 시스템
KR100700156B1 (ko) * 2006-02-22 2007-03-28 삼성전자주식회사 다이나믹 메모리의 리프레쉬 컨트롤러, 이를 포함하는반도체 시스템 및 다이나믹 메모리의 리프레쉬 제어 방법.
US9292436B2 (en) * 2007-06-25 2016-03-22 Sonics, Inc. Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary
JP5233360B2 (ja) * 2008-03-27 2013-07-10 富士通株式会社 メモリ制御装置,メモリ制御装置の制御方法および情報処理装置
CN103229155B (zh) * 2010-09-24 2016-11-09 德克萨斯存储系统股份有限公司 高速内存系统
JP5613517B2 (ja) * 2010-09-30 2014-10-22 京セラドキュメントソリューションズ株式会社 情報処理装置

Also Published As

Publication number Publication date
WO2014103144A1 (ja) 2014-07-03
US20140365632A1 (en) 2014-12-11
US10225168B2 (en) 2019-03-05
CN104137083B (zh) 2018-08-28
CN104137083A (zh) 2014-11-05
JP5793690B2 (ja) 2015-10-14

Similar Documents

Publication Publication Date Title
JP5793690B2 (ja) インタフェース装置、およびメモリバスシステム
US8718065B2 (en) Transmission using multiple physical interface
JP5122025B2 (ja) 中継器およびチップ回路
US9703732B2 (en) Interface apparatus and memory bus system
US20050149665A1 (en) Scratchpad memory
WO2019127597A1 (zh) 一种发送报文的方法、设备和系统
US10248615B2 (en) Distributed processing in a network
JP5853211B2 (ja) バスインタフェース装置、中継装置、およびそれらを備えたバスシステム
CN105022717A (zh) 附加请求数优先级的片上网络资源仲裁方法及仲裁单元
US20150263948A1 (en) Device and method for retransmitting data in a network switch
Swain et al. Network on chip for consumer electronics devices: An architectural and performance exploration of synchronous and asynchronous network-on-chip-based systems
CN112134814B (zh) 一种板级互联网络结构及通信方法
Kostrzewa et al. Safe and dynamic traffic rate control for networks-on-chips
US20120096245A1 (en) Computing device, parallel computer system, and method of controlling computer device
US11290516B1 (en) Prioritized MSRP transmissions to reduce traffic interruptions
US9678905B2 (en) Bus controller, bus control system and network interface
Alonso et al. PROSA: protocol-driven NoC architecture
US20240056400A1 (en) Time synchronized collective communication
JP2006525587A (ja) データを伝送する処理システム及び方法
KR20060009292A (ko) 분할 프로토콜 전송 방법 및 프로세싱 시스템
JP2014197789A (ja) バスインターフェース装置およびバスシステム
CN117041186A (zh) 数据传输方法、芯片系统、计算设备及存储介质
Prolonge et al. Dynamic flow reconfiguration strategy to avoid communication hot-spots
JP2002330162A (ja) 分散管理型通信方法及び装置

Legal Events

Date Code Title Description
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: 20150224

R151 Written notification of patent or utility model registration

Ref document number: 5793690

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151