JP6221328B2 - 受信装置、情報処理装置及びデータ受信方法 - Google Patents
受信装置、情報処理装置及びデータ受信方法 Download PDFInfo
- Publication number
- JP6221328B2 JP6221328B2 JP2013095064A JP2013095064A JP6221328B2 JP 6221328 B2 JP6221328 B2 JP 6221328B2 JP 2013095064 A JP2013095064 A JP 2013095064A JP 2013095064 A JP2013095064 A JP 2013095064A JP 6221328 B2 JP6221328 B2 JP 6221328B2
- Authority
- JP
- Japan
- Prior art keywords
- read
- data
- timing
- signal
- lanes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/372—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a time-dependent priority, e.g. individually loaded time counters or time slot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/14—Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Description
このような受信回路においてPhysical Coding Sublayer(PCS)クロックが使用される場合がある。
又、pcs_clockから装置内部のクロックに乗り換えるためのFirst-in First-outバッファ(FIFO)が必要なことも、レイテンシーを悪化させる一因となる。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
(A)構成
まず、本実施形態の一例の構成について説明する。
図1は、実施形態の一例としてのクロスバー(XB)をそなえるサーバ101の構成図である。
なお、以下、実施形態の一例の各構成要素を示す符号としては、複数の構成要素のうち1つを特定する必要があるときには、符番にハイフンと数字とを付した符号××−0〜××−nを用いる。しかし、複数の構成要素のうちの任意の構成要素を指すときには、その構成要素の符番のみの符号××を用いる。
SB102は、サーバ101における各種処理を行う基板であり、後述するように、Central Processing Unit(CPU)やDynamic Random Access Memory(DRAM)等をそなえる。
XBB104は、SB102やIOB103を相互に接続するためのクロスバースイッチをそなえる基板であり、当該XBB104に接続された機器同士を相互に接続する。
BP105は、SB102、IOB103及びXBB104を、図示しないコネクタを介して相互に接続する基板である。
SB102上のCPUが他SBのDRAMにアクセスする場合は、システムバス106を使用して、XBB104経由でパケットが送信される。同様にIOB103上のGigabit Ethernet(登録商標)(GbE)コントローラがSB102上のDRAMにアクセスする場合もシステムバス106を使用して、XBB104経由でパケットが送信される。
又、SB102−0からSB102−4にアクセスする場合は、SB102−0からXBB104−0及びXBB104−1を介してSB102−4へとパケットが送信される。
図2は、実施形態の一例としてのSBの構成図である。
SB102は、CPU111−1〜111−2、DRAM112−1〜112−2、及びメモリコントローラ(MC)113をそなえる。
MC113は、DRAM112のデータの読み出し、書き込み、リフレッシュなどの制御を行う。MC113は、BP105を介して、XBB104とシステムバス115とにより接続されている。
MC113は、システムバス115にデータを送信する不図示の送信回路と、システムバス115からのデータを受信する不図示の受信回路とを有するポート回路114とをそなえる。
図3は、実施形態の一例としてのIOBの構成図である。
IOC121はIOコントローラである。IOC121は、GbEコントローラ122及びSASコントローラ123と、それぞれIOバス126−1、126−2により接続されている。
IOC121は、BP105を介してXBB104とシステムバス127によって接続されている。
IOC121は、システムバス127にデータを送信する不図示の送信回路と、システムバス127からのデータを受信する不図示の受信回路とを有するポート回路125をそなえる。
SASコントローラ123は、シリアル通信を行うコントローラであり、HDD124と接続される。
図4は、実施形態の一例としてのXBBの構成図である。
XB131は、データの経路を動的に切り替えて選択するクロスバースイッチである。XB131はシステムバス132−1〜132−5により、他のXBB104、SB102、又はIOB103に接続されている。
XB131は、SB102等から送信されるパケットを受信し、そのパケットのヘッダーに含まれる宛先を認識し、送信先にルーティングを行う。
XB131は、例えば、XBB104に搭載されるLarge Scale Integration(LSI)である。XB131は、ポート回路142−0〜142−4とスイッチ及びデータバッファ143とをそなえる。又、データバッファ143には図示しないデータバッファもそなえられている。
スイッチ及びデータバッファ143は、ポート回路142のいずれかからパケットを受け取り、パケットの宛先に指定されているポート回路142にパケットを出力する。
又、XB131は、Inter-Integrated Circuit(I2C)バス138を介してサービスプロセッサ139に接続されている。サービスプロセッサ139は、XB131のI/F速度とcore_clockとを設定する。
図6に示すように、各ポート回路142には、送信I/F(I/F (TX))と受信I/F(I/F (RX))とが接続される。
本例では、ポート数がポート0〜4の5ポート(図5参照)、システムバスのレーン数は、レーン0〜レーン7の8レーン(図6参照)である。
又、mも0〜7のレーン番号のいずれかを示すために用いられる。このため、レーンm(m=0〜7)と接続される受信レーンブロック150−m又は送信レーンブロック170−mを、「レーンm受信部」又は「レーンm送信部」と呼ぶことがある。
各ポート回路142は、レーンm受信部150−0〜150−7、受信データ復元部154、レーンm送信部170−0〜170−7、送信データ分割部174、転送速度差制御部(速度差制御部)175、及び受信制御部155をそなえる。なお、図6は、転送速度差制御部175と受信制御部155とを便宜上、一体に示している。
各レーンm受信部150は、デシリアライザ(SerDes (RX))151−0〜151−7及びエラスティックバッファ153−0〜153−7をそなえる。
デシリアライザ151は、受信した1ビット幅のシリアルデータから16ビット幅のパラレルデータを生成する。
エラスティックバッファ153において、エラスティックバッファ153のライトアドレスは1サイクル毎に1ずつインクリメントされる。一方、リードアドレスは、転送速度差制御部175(図12参照)からの信号に基づいて、1ずつインクリメントされるが、周波数差補償パターン検出時はクロック周波数差補償パターン/デスキュー検出部(デスキュー制御部)160(図12参照)からの信号と、受信制御部155(図12参照)からの信号とに基づいて、ホールド、1インクリメント或いは2インクリメントされる。エラスティックバッファ153の詳細な構成については図14を参照して後述する。
レーンm送信部170は、システムバスの各レーンにデータを送信する。
レーンm送信部170は、シリアライザ(SerDes (TX))171−0〜171−7、送信回路172−0〜172−7、及び送信データ分割部174をそなえる。
送信回路172−0〜172−7は、それぞれ、送信ギアボックス(TX-Gear;ギアボックス)173−0〜173−7をそなえる。
送信ギアボックス173は、送信データを格納するFIFOである。
転送速度差制御部175は、送信ギアボックス173への書き込みや、エラスティックバッファ153の読み出しの有効タイミングを示す、例えば1ビットの信号data_valid_timing(第1のタイミング信号)を生成する。転送速度差制御部175の詳細な構成については、図15を参照して後述する。
なお、図6に示すクロック信号core_clockは、XB131のLSI内部で使用される1ビットのクロック信号であり、I/F速度に依存せず、例えば0.8GHzで動作する。図6のレーン0〜7の各々の受信用のクロックrx_p_*_clockと送信用のクロックtx_p_*_clockとは、例えばI/F転送速度の16分の1の速度で動作する。
なお、図6の一点鎖線はクロックドメイン境界を示す。
図7は、接続元XB131と接続先XB131とにおける、オシレータ(OSI)205と受信クロックとの関係を示す図である。
自XB131は、オシレータ205、Phase Locked Loop(PLL)206、PCS207、及びデシリアライザ208をそなえる。デシリアライザ208は、前述のデシリアライザ151をそなえ、デシリアライザ151は内部にClock Data Recovery(CDR)210をそなえる。
PLL206は、オシレータ205からの基準周波数からXB131の内部クロックcore_clockを生成する。
デシリアライザ208は、受信した1ビット幅のシリアルデータから16ビット幅のパラレルデータを生成する。
PCS207は、core_clock、受信用のクロックrx_clock及び送信用のクロックtx_clockを受け取る。受信側207PCSはエラスティックバッファでrx_clockからcore_clockへの乗換、10B8B変換、及び、デスクランブルを行う。送信側PCS207はスクランブル、8B10B変換、及び、送信ギアボックス173でcore_clockからtx_clockへの乗換を行う。
一方、接続先XB131は、オシレータ205、PLL206、PCS207、PLL212及びシリアライザ211をそなえる。シリアライザ211は、前述のシリアライザ171をそなえる。
PLL212は、オシレータ205からの基準周波数から送信用のクロックtx_clockを生成する。
図7に示すように、自XB131が接続先XB131とには、それぞれ別のオシレータ205からリファレンスクロックが供給される。
これらcore_clock、rx_p_*_clock、tx_p_*_clock間の周波数差を吸収するため、図6の転送速度差制御部175は、送信ギアボックス173への書き込みや、エラスティックバッファ153の読み出しの有効タイミングを示す信号data_valid_timingを生成する。
I/F速度が10GHzの場合、転送速度差制御部175は、8サイクル中5サイクルの間、data_valid_を‘1’にする。I/F速度が8GHzの場合、2サイクル中1サイクルの間、data_valid_timingを‘1’にする。
ここで、カットスルーとは、パケットの末尾まで受信せずに、データバッファにパケットの末尾の受信が保証できる量だけデータを蓄積した状態で、パケットの先頭の送信を開始する動作を指す。
ここで、送信側の送信ギアボックス173(図6参照)は、tx_p_*_clockの毎サイクル、16ビット幅のデータを読み出し、シリアライザ171に出力する。又、送信ギアボックス173への書き込みは、core_clockでdata_valid_timing=1の時のみ20ビット幅のデータを書き込むことで、送信側のI/FとXB131内部との転送速度差を吸収する。
エラスティックバッファ153は、rx_p_*_clockに同期して16ビット幅のデータを毎サイクル書き込む。
読み出し時には、エラスティックバッファ153から、core_clockに同期して20ビット幅でデータが読み出される。読み出し制御としては、クロック周波数差補償機能、レーン間スキューの調節位置ホールド機能、及びI/FとXB131内部との転送速度差吸収機能をそなえる。
図8は、実施形態の一例におけるクロック周波数差補償パターンのフォーマットを示す図である。
実施形態の一例としてのクロック周波数差補償パターンは、複数(例えば7個)のシンボルで構成され、1つのシンボルは20ビットで構成されている。シンボルの種類としては、CH及びDMがある。
DMは、Dummyを表わし、クロック周波数差補償動作時に追加又は削除されるシンボルである。DMの追加又は削除は、エラスティックバッファ153のリードアドレス制御で行なわれる。
ここで、1シンボル時間とは、1シンボルを送受信する時間、つまり20ビットを送受信する時間である。
I/F速度が16Gbpsの場合、つまり、毎サイクルdata_valid_timing=1となる場合は、一般に、エラスティックバッファ153は、リードポインタ(read_pointer)を、毎サイクル1インクリメント(+1)する。
エラスティックバッファ153は、リードポインタ(read_pointer)がライトポインタ(write_pointer)よりも早いか遅いかを、ライトポインタ(write_pointer)とリードポインタ(read_pointer)との差分(以下、ライト−リードアドレス差分と呼ぶ)を所定の基準値(以下、この値を所定値と呼ぶ)と比較することにより判定する。ライト−リードアドレス差分が所定値と等しい場合には、エラスティックバッファ153は、リードポインタ(read_pointer)のホールドも2インクリメントも行わない。
I/F速度が16Gbpsの場合、1シンボルタイムとcore_clock1サイクルとが一致するため、エラスティックバッファ153は、クロック周波数差を吸収するためのクロック周波数補償パターン1個につき1サイクル、ホールド又は+2する。
つまり、I/F速度とLSI内部の転送速度とが同じであるため、転送速度差制御部175は、data_valid_timingを‘0’にしてXB131のLSI内部で間引きしてデータを読み出す必要がないので、毎サイクルdata_valid_timingを‘1’にする。
リードポインタ(read_pointer)が所定値よりcore_clock2サイクル分(=1シンボルタイム)早い場合、エラスティックバッファ153は、CH+DM受信時に、data_valid_timingが連続して‘1’の場合、リードポインタ(read_pointer)2回分をホールドする。
このように、本実施形態の一例としてのエラスティックバッファ153は、ライト−リードポインタ(read_pointer)差分の所定値からのずれに応じて、リードポインタ(read_pointer)をホールドする時間を調整する。
I/F速度が12Gbpsの場合、1シンボルタイムがcore_clockの4/3サイクル分に対応し、転送速度差制御部175は、data_valid_timingとして“1,1,1,0”を繰り返す。
クロック周波数補償パターンが十分に長いことがプロトコル上保障されていれば、エラスティックバッファ153は、data_valid_timing=1のときにリードポインタ(read_pointer)を+2し、次のdata_valid_timing=1のときにさらに+2する。或いは、エラスティックバッファ153が、data_valid_timing=1のときにリードポインタ(read_pointer)を3インクリメント(+3)することが考えられる。
なお、カットスルー性能を低下させないためには、パケット内の隙間量が予想できることが必要となる。
ここで、各レーンがそれぞれ独立してクロック周波数差補償を行うと、デスキュー調節位置がずれてしまう。
図9は、実施形態の一例におけるトレーニングパターンのフォーマットを示す図である。
実施形態の一例としてのトレーニングパターンは、32個のシンボルで構成される。シンボルの種類としては、TH、AL、DS、及びSIがある。なお、1つのシンボルは20ビットで構成されている。
ALは、Alignmentを表わし、20ビット境界パターンを示すシンボルである。
DSは、Deskewを表わし、デスキューパターンを示すシンボルである。
SIは、Sequence Informationを表わし、初期化手順で接続先ポートに通知する情報を示すシンボルである。
又、トレーニングパターンや、図8を参照して上述したクロック周波数差補償パターンの長さは、上述した長さに限定されない。トレーニングパターン及びクロック周波数差補償パターンの長さは、送信回路172の動作周波数、配置配線やシリアルバスプロトコルに依存して、適宜変更することができる。
この構成においては、エラスティックバッファ153を用いてレーン間スキューを調整し、各レーンのエラスティックバッファ153が受信制御部155と接続される。レーン*(*=0〜7の整数)のエラスティックバッファ153は、CH+DMを検出すると、受信制御部155にclock_pattern_detect_*信号をアサートする。
又、deskew_pattern_detect_*信号(第2のタイミング信号)は、対応するレーンにおいてデスキュー指示を受信したことを示す1ビットの信号であり、エラスティックバッファ153により設定される。
address_plus2_*信号は、対応するレーン*のエラスティックバッファ153のリードアドレスの2インクリメントを指示する信号である。
deskew_flag_*信号は、レーン間スキューの調整を行うことを示すデスキューを指示する1ビットの信号である。
ここで、エラスティックバッファ153はデスキュー機能を持つので、各レーンが同じタイミングでclock_pattern_detect_*信号をアサートする。
エラスティックバッファ153のリードポインタ(read_pointer)がcore_clock1サイクル分早い場合は、エラスティックバッファ153はread_fast_*[1:0]に“01”を出力する。
エラスティックバッファ153は、リードポインタ(read_pointer)が1サイクル分遅い場合は、read_slow_*[1:0]に“01”を出力し、2サイクル分以上遅い場合は、read_slow_*[1:0]に“10”を出力する。
受信制御部155は、clock_pattern_detect_*信号がアサートされたタイミングで、各レーンのread_fast_*[1:0]とread_slow_*[1:0]との値に応じて、address_hold_*信号及びaddress_plus2_*信号のそれぞれの値を制御する。
つまり、受信制御部155は、read_fast_*[1]がアサートされているレーンが1つでも存在する場合には、リードポインタ(read_pointer)をcore_clock2サイクル遅くする制御を行う。つまり、受信制御部155は、data_valid_timingが連続して‘1’の間、合計2サイクル間、address_hold_*信号をアサートする。address_hold_*信号がアサートされている間、エラスティックバッファ153は、エラスティックバッファ153のリードポインタ(read_pointer)をホールドする。
全レーンでread_fast_*[1:0]が“00”であり、かつ、全てのレーンでread_slow_*[1:0]が“00”の場合、受信制御部155は何もしない。
全レーンでread_fast_*[1:0]が“00”であり、かつ、全てのレーンでread_slow_*[1:0]が“10”の場合、受信制御部155は、連続する2サイクル間、address_plus2_*信号をアサートする。
但し、プロトコル上、クロック周波数補償パターンが十分であることを保証されていない場合、エラスティックバッファ153は2サイクル目のaddress_plus2_*信号が‘1’であることを覚えておき、次にdata_valid_timing=0になったタイミングでread_pointerを+1し、かつデータを読み出す。
図11に、実施形態の変形例としてのレーン間スキューの調整回路の構成図を示す。
この変形例においては、デスキューバッファ157−0〜157−7を用いてレーン間スキューを調整する。
ここで、read_hold_done_*信号は、エラスティックバッファ153のリードポインタ(read_pointer)をホールドしたことを示す1ビットの信号である。
又、read_do_plus2_done_*信号は、エラスティックバッファ153のリードポインタ(read_pointer)を2インクリメント(+2)したことを示す1ビットの信号である。
各エラスティックバッファ153は、data_valid_timing=1のときにread_pointerを+2した場合、若しくは、data_valid_timingがデアサートされてread_pointerを+1した場合、デスキューバッファ157にread_do_plus2_done_*信号をアサートする。
図12は、実施形態の一例としての受信回路152を示す構成図である。
この構成においては、図10のレーン間スキューの調整回路が採用されている。又、以降に示す例は、全て図10のレーン間スキューの調整回路を採用した構成を示す。
実施形態の一例において、レーン数は、レーン0〜レーン7の8レーンである。データは、送信回路172で分割され、レーン0〜レーン7を通じて送信される。
レーンmブロックは、レーンmを通過するデータを処理する。
図12においては、レーン0ブロックのみ詳細な構成図を示す。レーン1ブロック〜レーン7ブロックの構成は、レーン0ブロックと同様である。
デシリアライザ151は、受信した1ビット幅のシリアルデータを16ビット幅のパラレルデータに変換する。又、デシリアライザ151は、受信したシリアルデータからクロックリカバリにより、受信クロック(rx_p_*_clock)を生成する。
デシリアライザ151、20ビット境界検出部159、及びエラスティックバッファ153の書き込みまでは、rx_p_*_clockと同期して動作する。
エラスティックバッファ153からの読み出し、クロック周波数差補償パターン/デスキュー検出部160、8B10B変換部161、及びデスクランブラ162は、core_clockと同期して動作する。
エラスティックバッファ153は、クロック周波数差を吸収するFIFOである。エラスティックバッファ153は、通常時はリードアドレスを転送速度差制御部175から出力されるdata_valid_timing信号に応じて、1インクリメント(+1)する。しかし、受信制御部155、及び、クロック周波数差補償パターン/デスキュー検出部160からの制御信号に応じて、リードアドレスをホールド、1インクリメント、若しくは2インクリメント(+2)する。
エラスティックバッファ153の詳細については、図14を参照して後述する。ここで、エラスティックバッファ153には、同期化Flip Flop(FF)166,167、ライトアドレス制御部165、FIFO168、及びリードアドレス制御部169が含まれる。
シリアルデータ転送は8B10B変換データで行なわれる。送信回路172で8ビット幅のデータ(8b−code)は10ビット幅のデータ(10b−code)に変換され、変換されたデータが送信される。受信回路152では、10b−codeを8b−codeに復元する。
デスクランブラ162は、生成多項式に基づき、疑似ランダマイズ化されたデータを復元する。
受信制御部155及び転送速度差制御部175は、各レーンブロックのエラスティックバッファ153、及び、クロック周波数差補償パターン/デスキュー検出部160と接続している。受信制御部155及び転送速度差制御部175は、レーン間のスキューを検出し、レーン間スキューの調整を行うことを示すデスキュー指示(deskew_flag)を各レーンのエラスティックバッファ153に出力する。又、レーン間のスキューを無くすために、後述するように、リードアドレスを調節する信号も、各レーンのエラスティックバッファ153に出力する。
この構成においては、図10のレーン間スキューの調整回路が採用されている。
送信回路172は、送信データ分割部174、レーンブロック170−0〜170−7、転送速度差制御部175、及びトレーニングパターン/クロック周波数差補償パターン生成部178をそなえる。
以下の説明及び図面において、レーンm(m=0〜7)と接続するレーンブロック170−mを、レーンmブロックと呼ぶことがある。
レーンmブロックは、レーンmを通過するデータを処理する。
送信データ分割部174は、前述のように160ビットの送信データを分割して、各送信回路172に出力する。
レーン0ブロック170−0は、シリアライザ171、送信ギアボックス173、8B10B変換部176をそなえる。
8B10B変換部176は、8b−codeのデータを10b−codeに変換する。
なお、8B10B以外の変換を行うシリアルバスプロトコルの場合、8B10B変換部176を、プロトコルに依存した他の変換部に適宜変更してもよい。
シリアライザ171は、受信した16ビット幅のパラレルデータを、1ビット幅のシリアルデータをに変換する。
クロックcore_clockは自ポート(接続先ポート)のリファレンスクロックより生成される。
送信ギアボックス173からの読み出しとシリアライザ171とは、tx_p_*_clockと同期して動作する。
クロック周波数差補償パターン/デスキュー検出部160は、エラスティクバッファ153に、リードアドレスを制御する信号を出力する。
トレーニングパターン/クロック周波数差補償パターン生成部178は、シリアルバス初期化中または初期化完了後に関わらず、接続元XB131と接続先XB131とのクロック周波数差補償のため、クロック周波数差補償パターンを定期的に送信する。例えば、接続装置間のリファレンスクロック周波数許容誤差を±300ppm以内とする場合は、1666サイクル以内に一度、クロック周波数差補償パターンを送信する。
図14は、実施形態の一例としてのエラスティックバッファ153の構成図である。
エラスティックバッファ153は、ライトアドレス制御部165、リードアドレス制御部169、FIFO168、同期化FF166,167、及びクロック周波数差補償パターン/デスキュー検出部160をそなえる。
リードアドレス制御部169は、FIFO168のリードアドレス(read_address)を制御する。
FIFO168は、例えば、20ビット幅の22段のFIFOである。
クロックcore_clockが、同期化FF166,167、リードアドレス制御部169及びクロック周波数差補償パターン/デスキュー検出部160に入力される。同期化FF166,167、リードアドレス制御部169及びクロック周波数差補償パターン/デスキュー検出部160は、core_clockと同期して動作する。
ライトアドレス制御部165は、20ビット境界検出部159からの境界検出通知(alignment_detect信号)を受けると、シンボル単位でFIFO168へデータ(alignment_data)の書き込みを開始する。
ライトアドレス制御部165は、write_enable信号が1の時にFIFO168のアドレスwrite_addressにデータを書き込む。ライトアドレス制御部165は、ライトアドレス(write_address)を0から開始し、常に1ずつインクリメントする。ライトアドレス制御部165は、ライトアドレスを21でラップラウンドして0に戻す。ライトアドレス制御部165は、ライトアドレスを0に戻す時に、リード側にライトアドレスが一周したことを通知するために、write_lap_round信号を反転する。
同期化FF167は、core_clockと同期して、write_lap_round信号をwrite_lap_round_sync信号として出力する。
リードアドレス制御部169は、write_enable信号を同期化したwrite_enable_sync信号のアサートより、read_address=0より読み出しを開始する。ライトアドレス制御部165は、基本的にread_addressを1サイクルごとに1ずつインクリメントし、read_addressが21になるとラップラウンドして、read_addressを0に戻す。
リードアドレス制御部169はwrite_lap_round信号をcore_clockと同期化したwrite_lap_round_sync信号の変化(反転)を検出することでライトアドレスが0になったことを認識する。これにより、ライトアドレスとリードアドレスの差分であるライト−リードアドレス差分を認識する。ライト−リードアドレス差分はクロック周波数差によって変化する。
ライトクロックの方が遅い(リードクロックの方が早い)場合は、ライト−リードアドレス差分は基準値より徐々に小さくなる。
リードアドレス制御部169は、ライト−リードアドレス差分が基準値より大きい場合、リードクロックの方が遅いことを示すために、read_slow_*[1:0]に値を設定する。詳細には、リードアドレス制御部169は、エラスティックバッファ153のリードポインタ(read_pointer)がcore_clock1サイクル分遅い場合は、read_slow_*[1:0]に“01”を設定する。リードポインタ(read_pointer)がcore_clock2サイクル分以上遅い場合は、エラスティックバッファ153は、read_slow_*[1:0]に“10”を設定する。
リードアドレス制御部169はクロック周波数差補償機能により、ライト−リードアドレス差分を基準値に調節する。
リードアドレス制御部169はaddress_hold_*信号がアサートされている(値‘1’である)の時はリードアドレスのインクリメントを行なわない。
一方、リードアドレス制御部169はaddress_plus2_*信号がアサートされている(値‘1’である)の時はリードアドレスを+2インクリメントする。
エラスティックバッファ153は、alignment_detectを契機に書き込みを開始する。ライトアドレスは毎サイクル毎に1インクリメントし、エラスティックバッファ153のリードアドレス制御部169で20ビットアライメントされているように、16ビット単位でライトを行う。write_enable信号が同期化されwrite_enable_sync信号が出力され、リードアドレス制御部169は書き込み状態であることを認識する。
リードアドレス制御部169は、write_lap_round信号が同期化されたwrite_lap_round_sync信号により、write_addressが‘0’に設定されたタイミングを認識して、ライト−リードアドレス差分を認識する。
デスキュー完了前の状態では、各レーンのエラスティックバッファ153は、ライト−リードアドレス差分が所定値になるように、clock_pattern_detect_*=1のタイミングで、それぞれ独自にリードアドレスを調節する。
図15は、実施形態の一例としての転送速度差制御部175を例示する図である。
加算器302は、サービスプロセッサ139から、値がvalue_A(MHz)であるI/F速度を入力される。一方、×20逓倍器301は、サービスプロセッサ139から、値がvalue_B(MHz)であるcore_clock周波数を入力される。また、転送速度差制御部175は、一時変数であるvalue_Cも使用する。このvalue_Cは、value_B×20より小さい値である。
なお、上記計算に、value_B×20が含まれるのは、I/F部分では、各レーンは1ビット幅でデータ転送を行い、core_clock領域では20ビット幅でデータ転送を行うためである。この時、value_A≦(value_B×20)を満たしていない場合、I/F速度が常に速く、エラスティックバッファ153がオーバーフローするため、value_Aとvalue_Bとは、value_A≦(value_B×20)を満たしている必要がある。
受信制御部155は、デスキュー制御部179と、クロック周波数差補償パターン部180とをそなえる。
デスキュー制御部179は、各レーンからのdeskew_pattern_detect_*信号よりレーン間スキューを調節するように、address_hold_*信号を出力する。デスキュー制御部179は、デスキューの実行時にはdeskew_timをアサートし、デスキューの実行時及びデスキュー完了後はdeskew_flagをアサートする。
ここで、cmpns_adrs_hold信号は、address_hold_*信号の生成に使用され、エラスティックバッファ153のリードアドレスをライトアドレスに対して遅らせるよう指示する。cmpns_adrs_hold信号は、clock_pattern_detect_*、data_valid_timing、read_slow_*[1:0]及びread_fast_*[1:0]から生成される。
図17は、図16のクロック周波数差補償パターン部180の構成を例示する図である。
fast_cnt[1:0]カウンタ311は、全てのレーンのclock_pattern_detect_*=1であり、かつ、いずれかのレーンのread_fast_*[1:0]≠“00”の時に、read_fast_*[1:0]によって決定される値がセットされる。cmpns_adrs_holdは、data_valid_timing=1であり、かつ、fast_cnt[1:0]≠“00”の時に1がアサートされ、fast_cnt[1:0]はcmpns_adrs_hold=1の時に−1される。
デスキュー完了後のクロック周波数差補償(ホールド)時には、全てのレーンのclock_pattern_detect_*=1かついずれかのレーンのread_fast_*[1:0]≠“00”の場合、受信制御部155は各レーンのaddress_hold_*信号をアサートする。read_fast_*[1:0]=“10”の場合は、次にdata_valid_timing=1となるタイミングで、2サイクル間、address_hold_*信号をアサートしてアドレスホールドを通知する。read_fast_*[1:0]=“01”の場合は、次にdata_valid_timing=1となるタイミングで、1サイクル間、address_hold_*信号をアサートしてアドレスホールドを通知する。この動作については、図22,図23を参照して後述する。
(B)動作
以下、本実施形態の一例としてのXB131の動作について説明する。
まず、図7に示した接続先(送信側)XB131の動作を示す。
ステップS1において、送信側XB131の転送速度差制御部175は、サービスプロセッサ139(図5参照)によってI/F及びcore_clock周波数を設定され、data_valid_timingの出力を開始する。
なお、トレーニングパターン/クロック周波数差補償パターン生成部178は、トレーニングパターン又は周波数差補償パターンを、全てのレーンで同じタイミングで送信する。
1666サイクル経過している場合(ステップS3のYESルート参照)、ステップS4において、トレーニングパターン/クロック周波数差補償パターン生成部178は、周波数差補償パターンを送信してステップS5に進む。
デスキューを完了していない場合(ステップS5のNOルート参照)、処理がステップS2に戻る。
次に、ステップS7において、トレーニングパターン/クロック周波数差補償パターン生成部178は、前回の周波数補償パターンを送信してから1666サイクル経過しているか判定する。
一方、1666サイクル経過していない場合(ステップS7のNOルート参照)、ステップS9において、トレーニングパターン/クロック周波数差補償パターン生成部178は、受信側XB131のトレーニングパターン受信部164がデスキュー完了状態を示す情報を持つトレーニングパターンを受信したかを判定する。
一方、受信側XB131がデスキュー完了状態を示す情報を持つトレーニングパターンを受信している場合(ステップS9のYESルート参照)、ステップS10において、トレーニングパターン/クロック周波数差補償パターン生成部178は、デスキュー完了状態を示す情報を持つトレーニングパターンを16個送信し、パケットの送信を開始する。その後処理は終了する。
図19は、実施形態の一例としての受信側XB131のポート回路142の動作を示すフローチャート(S21〜S29)である。
ステップS21において、受信側XB131の転送速度差制御部175は、サービスプロセッサ139(図5参照)によってI/F及びcore_clock周波数を設定され、data_valid_timingの出力を開始する。
20ビット境界パターンを検出していない場合(ステップS22のNOルート参照)、20ビット境界パターン未検出を示す情報を送信してステップS22に戻る。
その際、エラスティックバッファ153は、エラスティックバッファ153への書き込み状態であることをwrite_enable_sync信号(図14参照)によって、リードアドレス制御部169に通知する。リードアドレス制御部169は、write_lap_round_sync信号でライトアドレスに‘0’が設定されたタイミングを認識し、リード−ライトアドレスの差分が適切な値になるように、読み出しを開始する。
クロック周波数差補償パターンを受信した場合(ステップS24のYESルート参照)、ステップS25において、受信側XB131の各レーンのエラスティックバッファ153は独立に、クロック周波数差補償を行う。その際、エラスティックバッファ153のライトアドレスとリードアドレスとの差分(ライト−リードアドレス差分)が基準値以内に入るように、エラスティックバッファ153のリードアドレスを調節する。受信制御部155は全てのレーンでデスキューパターンを検出することを継起にレーン間スキューを調節する。その後、処理はステップS26に進む。
デスキューを完了していない場合(ステップS26のNOルート参照)、処理はステップS23に戻る。
クロック周波数差補償パターンを受信した場合(ステップS27のYESルート参照)、ステップS28において、受信側XB131の各レーンのエラスティックバッファ153は受信制御部155と協調することで、ポート単位に、クロック周波数差補償を行う。その後、処理はステップS29に進む。
デスキュー完了状態を示す情報を持つトレーニングパターンを受信していない場合(ステップS29のNOルート参照)、処理がステップS27に戻る。
シリアルバス初期化完了後に、送信側XB131のトレーニングパターン/クロック周波数差補償パターン生成部178はトレーニングパターン送信を止め、データ送信を開始する。トレーニングパターン/クロック周波数差補償パターン生成部178は、初期化完了後も定期的なクロック周波数差補償パターン送信を継続する。
初期化時に送信するトレーニングパターンは初期化状態を示す情報を持つ。それにより接続先ポートがどの状態であるか、例えば、20ビット境界パターンを検出した、デスキューが完了した等の状態を知ることができ、同期して初期化処理を完了することができる。例えば、デスキュー制御部179は、接続元ポート201から受信するトレーニングパターンと自ポート(接続先ポート)211が送信するトレーニングパターンとから、両ポートがデスキュー完了状態であることを認識して、初期化が完了し、パケット送受信が可能な状態であると判断する。
図20,図21に、デスキュー時のタイムチャートを示す。
図20は、実施形態の一例としてのエラスティックバッファ153のデスキュー時のタイムチャートである。図21は、実施形態の一例としての受信制御部のデスキュー時のタイムチャートである。図20,図21は、同一時間範囲における各信号の状態を示す。
又、図20〜図25において、「×」は、パケット等の受信データを示し、“CH”,“DM”,“DS”以外のデータである。
t1において、レーン0が最初にデスキューパターンを検出し、t2において、レーン1が最後にデスキューパターンを検出している(図21参照)。
address_hold_*信号がアサートされると、リードアドレス(read_address)はホールドされる。したがって、図20において、read_addressは、アドレス8で9サイクル、ホールドされている。
図22,図23に、デスキュー完了後にポート単位でクロック周波数差補償を行う動作のタイムチャート(ホールド)を示す。
図22には、レーン0の各信号のみを示し、レーン2〜7ブロックの信号は省略する。
図24,図25に、デスキュー完了後にポート単位でクロック周波数差補償を行う動作のタイムチャート(2インクリメント)を示す。
図24は、実施形態の一例としてのエラスティックバッファ153のデスキュー完了後のクロック周波数差補償(2インクリメント)時のタイムチャートである。図25は、実施形態の一例としての受信制御部155のデスキュー完了後のクロック周波数差補償(2インクリメント)時のタイムチャートである。図24,図25は、同一時間範囲における各信号の状態を示す。
全てのレーンのclock_pattern_detect_*=1であり、かつ、全てのレーンのread_slow_*[1:0]≠“00”の場合、受信制御部155は各レーンにaddress_plus2_*信号をアサートする。read_slow_*[1:0]=“10”の場合は、data_valid_timing=1の2サイクル間、cmpns_adrs_plus2=1をアサートする。図25では、read_slow_0[1:0]=“10”、read_slow_1[1:0]=“10”、read_slow_7[1:0]=“10”であり、かつ、図25に記述していないread_slow_2[1:0]からread_slow_6[1:0]の信号全てが“10”であることを条件に、t23からt25の2サイクル間、cmpns_adrs_plus2=1をアサートする。read_slow_*[1:0]=“01”の場合は、data_valid_timing=1の1サイクル間、address_plus2_*信号を出力する。図25では、read_slow_0[1:0]=“01”、read_slow_1[1:0]=“01”、read_slow_7[1:0]=“10”、かつ図25に記述していないread_slow_2[1:0]からread_slow_6[1:0]の信号全てが“10”もしく“01”を条件に、t21からt22の1サイクル間、cmpns_adrs_plus2=1をアサートする。この場合、read_slow_*[1:0]=“10”でないレーンも存在するため、cmpns_adrs_plus2がアサートされるのは、1サイクルのみである。
前述のように、実施形態の一例としてのエラスティックバッファ153によれば、PCS受信部内に設けられたエラスティックバッファ153の読み出し側をcore_clockで動作させる。エラスティックバッファ153の読み出しは、転送速度差を吸収するため、間引きを行ない、全てのレーンでタイミングを合わせて、有効タイミングで読み出しを行う。つまり、有効タイミングでエラスティックバッファ153からデータを読み出し、かつ、リードポインタ(read_pointer)を+1する。
又、実施形態の一例としてのエラスティックバッファ153によれば、クロック補償動作時に、デスキュー位置を保ちつつ、転送速度差を吸収できる。
さらに、実施形態の一例としてのエラスティックバッファ153によれば、エラスティックバッファ153のホールドのタイミングは、クロック周波数差補償パターン受信時のエラスティックバッファ153の読み出し、有効タイミングのみである。このため、パケット途中の有効タイミングでエラスティックバッファ153の読み出しが中断されないため、パケット内の隙間が増加することがなく、カットスルー動作に影響しない。
図26は、本エラスティックバッファ153を使用しないポート回路の構成図、図27は、図26の受信回路52の構成図、図28は、図26の送信回路72の構成図である。
図26に示すように、各ポート回路は、レーンm受信部50−0〜50−7、受信データ復元部54、レーンm送信部70−0〜70−7、送信データ分割部74、受信制御部55、転送速度差制御部65、RX−FIFO56、及びTX−FIFO75をそなえる。
以下の説明及び図面において、レーンm(m=0〜7)と接続される受信レーンブロック50−m又は送信レーンブロック70−mを、「レーンm受信部」又は「レーンm送信部」と呼ぶことがある。
レーンm受信部50は、システムバスの対応するレーンからデータを受信する。
各レーンm受信部50は、デシリアライザ(SerDes (RX))51−0〜51−7及び送信回路72−0〜72−7をそなえる。
送信回路72−0〜72−7は、それぞれ、エラスティックバッファ53−0〜53−7をそなえる。
エラスティックバッファ53は、受信データを格納する受信データを格納するFIFOである。
レーンm送信部70は、システムバスの各レーンにデータを送信する。
レーンm送信部70は、シリアライザ(SerDes (TX))71−0〜71−7、送信回路72−0〜72−7、及び送信データ分割部74をそなえる。
送信回路72−0〜72−7は、それぞれ、送信ギアボックス(TX-Gear)73−0〜73−7をそなえる。
送信ギアボックス73は、送信データを格納するFIFOである。
RX−FIFO56は、pcs_clockからcore_clockへの乗り換えを行うFIFOである。
TX−FIFO75は、core_clockからpcs_clockへの乗り換えを行うFIFOである。
core_clockはI/F速度に依存しない周波数で動作し、rx_p_*_clock、tx_p_*_clock、pcs_clockはI/Fに比例した速度で動作する。
core_clockはI/Fに依存せず、0.8GHzとする。I/F速度が16Gbpsの場合、デシリアライザ51の読み出しからエラスティックバッファ53書き込み部間のバス幅が16ビットとすると、rx_p_*_clockは1GHz(=16Gbps/16ビット)になる。エラスティックバッファ53の読み出しバス幅と送信ギアボックス73の書き込みバス幅とが20ビットとすると、pcs_clockは0.8GHz(=16Gbps/20ビット)になる。シリアライザ71の書き込みバス幅が16ビットとすると、tx_p_*_clockは1GHzとなる。さらに、rx_p_*_clockは接続先ポートのオシレータに比例するため、クロック周波数差が存在する。
図27,図28においては、レーン0ブロックのみ詳細な構成図を示す。レーン1ブロック〜レーン7ブロックの構成は、レーン0ブロックと同様である。
本エラスティックバッファ153を使用しない受信回路52では、受信回路52の内部で転送速度差吸収を行わずに、RX-FIFO56で転送速度差吸収を行っていた。そのため、受信回路52はI/F速度に依存するpcs_clockで動作し、pcs_clockはcore_clockと同じか、もしくは、低速であった。
更に、実施形態の一例においては、pcs_clockからcore_clockへの乗換のためのFIFOを省略できるので、回路構成の簡略化を図ることができる。
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上記の実施形態においては、5ポート、8レーンの構成を例に挙げて説明したが、ポート数及び/又はレーン数は任意に変更することができる。
例えば、前述の各構成ブロックの機能を複数のブロックとして分割したり、或いは複数の機能ブロックを1つのブロックに集約してもよい。
又は、前述の各構成ブロックを、回路等のハードウェアとして実装しても、ファームウェアとして実装しても、ソフトウェアとして実装してもよい。
(E)付記
上記の実施形態に関し、更に以下の付記を開示する。
(付記1)
送信装置から複数のレーンを介してデータを受信する受信装置であって、
前記複数のレーンのそれぞれに対して設けられ、受信データを格納する複数のバッファと、
前記複数のレーン間のタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、前記送信装置及び前記受信装置の動作クロックとに基づいて出力する速度差制御部と、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力するデスキュー制御部と、
前記送信装置と前記受信装置との周波数差の調整時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記バッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節する制御部と、
をそなえることを特徴とする受信装置。
前記制御部は、前記バッファへの前記読み出し位置と前記書き込み位置との差を示す差分信号に基づいて前記複数のバッファからの前記受信データの読み出しタイミングを調節し、
前記複数のレーンのいずれかの前記差分信号が所定値より小さいことを示す場合は、前記読み出し位置のインクリメントを抑制する信号を出力し、前記複数のレーンの前記差分信号が前記所定値より大きいことを示す場合は、前記読み出し位置を2インクリメントさせる信号を出力することを特徴とする付記1記載の受信装置。
前記制御部は、前記所定値を複数そなえ、前記差分信号の量によって、前記読み出し位置のインクリメントを抑制する信号及び前記読み出し位置を2インクリメントさせる信号を出力する時間を変えることを特徴とする付記2記載の受信装置。
(付記4)
前記制御部は、前記読み出し位置を2インクリメントさせる信号と前記レーン間のタイミングを合わせる前記第1のタイミング信号とに基づいて、前記バッファの前記読み出し位置を1又は2インクリメントすることを特徴とする付記2記載の受信装置。
送信装置と、
該送信装置から複数のレーンを介してデータを受信する受信装置と、
前記複数のレーン間のタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、前記送信装置及び前記受信装置の動作クロックとに基づいて出力する速度差制御部と、をそなえ、
前記受信装置は、
前記複数のレーンのそれぞれに対して設けられ、受信データを格納する複数のバッファと、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力するデスキュー制御部と、
前記送信装置と前記受信装置との周波数差の調整時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記バッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節する制御部と、をそなえ、
前記送信装置は、
前記複数のレーンのそれぞれに対して設けられ、前記第1のタイミング信号において送信データを書き込む第2のバッファをそなえる
ことを特徴とする情報処理装置。
前記制御部は、前記バッファへの前記読み出し位置と前記書き込み位置との差を示す差分信号に基づいて前記複数のバッファからの前記受信データの読み出しタイミングを調節し、
前記複数のレーンのいずれかの前記差分信号が所定値より小さいことを示す場合は、前記読み出し位置のインクリメントを抑制する信号を出力し、前記複数のレーンの前記差分信号が前記所定値より大きいことを示す場合は、前記読み出し位置を2インクリメントさせる信号を出力することを特徴とする付記5記載の情報処理装置。
前記制御部は、前記所定値を複数そなえ、前記差分信号の量によって、前記読み出し位置のインクリメントを抑制する信号及び前記読み出し位置を2インクリメントさせる信号を出力する時間を変えることを特徴とする付記6記載の情報処理装置。
(付記8)
前記制御部は、前記読み出し位置を2インクリメントさせる信号と前記レーン間のタイミングを合わせる前記第1のタイミング信号とに基づいて、前記バッファの前記読み出し位置を1又は2インクリメントすることを特徴とする付記6記載の情報処理装置。
複数のレーンを介してデータを受信するデータ受信方法であって、
前記複数のレーン間のタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、前記送信装置及び前記受信装置の動作クロックとに基づいて出力し、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力し、
前記送信装置と前記受信装置との周波数差の調整時を検出し、
前記検出時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記複数のレーンのそれぞれに対して設けられ、受信データを格納するバッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節する
ことを特徴とするデータ受信方法。
前記バッファへの前記読み出し位置と前記書き込み位置との差を示す差分信号に基づいて前記複数のバッファからの前記受信データの読み出しタイミングを調節し、
前記複数のレーンのいずれかの前記差分信号が所定値より小さいことを示す場合は、前記読み出し位置のインクリメントを抑制する信号を出力し、前記複数のレーンの前記差分信号が前記所定値より大きいことを示す場合は、前記読み出し位置を2インクリメントさせる信号を出力することを特徴とする付記9記載のデータ受信方法。
前記所定値が複数存在し、
前記差分信号の量によって、前記読み出し位置のインクリメントを抑制する信号及び前記読み出し位置を2インクリメントさせる信号を出力する時間を変えることを特徴とする付記10記載のデータ受信方法。
前記読み出し位置を2インクリメントさせる信号と前記レーン間のタイミングを合わせる前記第1のタイミング信号とに基づいて、前記バッファの前記読み出し位置を1又は2インクリメントすることを特徴とする付記10記載のデータ受信方法。
102 SB
103 IOB
104 XBB
105 BP
106 システムバス
111 CPU
112 DRAM
113 MC
142 ポート回路(受信装置)
150 レーンm受信部
151 デシリアラライザ
152 受信回路
154 受信データ復元部
155 受信制御部
153 エラスティックバッファ(バッファ)
160 クロック周波数差補償パターン/デスキュー検出部(デスキュー制御部)
165 ライトアドレス制御部
169 リードアドレス制御部
161 8B10B復元部
162 デスクランブラ
166,167 同期化FF
168 FIFO
164 トレーニングパターン受信部
170 レーンm送信部
171 シリアラライザ
172 送信回路
173 送信ギアボックス(ギアボックス)
174 送信データ分割部
175 転送速度差制御部(速度差制御部)
176 8B10B復元部
177 スクランブラ
178 トレーニングパターン/クロック周波数差補償パターン生成部
179 デスキュー制御部
180 クロック周波数補償パターン部
Claims (6)
- 送信装置から複数のレーンを介してデータを受信する受信装置であって、
前記複数のレーンのそれぞれに対して設けられ、受信データを格納する複数のバッファと、
前記複数のレーン間の読み出しタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、前記バッファの読み出し動作クロックとに基づいて出力する速度差制御部と、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力するデスキュー制御部と、
前記送信装置と前記受信装置との周波数差の調整時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記バッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節するタイミング制御部と、
をそなえることを特徴とする受信装置。 - 前記タイミング制御部は、前記バッファへの前記読み出し位置と前記書き込み位置との差を示す差分信号に基づいて前記複数のバッファからの前記受信データの読み出しタイミングを調節し、前記複数のレーンのいずれかの前記差分信号が所定値より小さいことを示す場合は、前記読み出し位置のインクリメントを抑制する信号を出力し、前記複数のレーンの前記差分信号が前記所定値より大きいことを示す場合は、前記読み出し位置を2インクリメントさせる信号を出力することを特徴とする請求項1記載の受信装置。
- 前記タイミング制御部は、前記所定値を複数そなえ、前記差分信号の量によって、前記読み出し位置のインクリメントを抑制する信号及び前記読み出し位置を2インクリメントさせる信号を出力する時間を変えることを特徴とする請求項2記載の受信装置。
- 前記タイミング制御部は、前記読み出し位置を2インクリメントさせる信号と前記第1のタイミング信号とに基づいて、前記バッファの前記読み出し位置を1又は2インクリメントすることを特徴とする請求項2記載の受信装置。
- 送信装置と、
該送信装置から複数のレーンを介してデータを受信し、前記複数のレーンのそれぞれに対して設けられ、受信データを格納する複数のバッファをそなえる受信装置と、
前記複数のレーン間の読み出しタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、前記バッファの読み出し動作クロックとに基づいて出力する速度差制御部と、をそなえ、
前記受信装置は、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力するデスキュー制御部と、
前記送信装置と前記受信装置との周波数差の調整時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記バッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節するタイミング制御部と、をそなえ、
前記送信装置は、
前記複数のレーンのそれぞれに対して設けられ、前記第1のタイミング信号において送信データを書き込む第2のバッファをそなえる
ことを特徴とする情報処理装置。 - 複数のレーンを介してデータを受信するデータ受信方法であって、
前記複数のレーン間の読み出しタイミングを合わせる第1のタイミング信号を、前記レーンにおける通信速度と、受信データを格納する複数のバッファの読み出し動作クロックとに基づいて出力し、
前記複数のレーン間のスキューを合わせる第2のタイミング信号を出力し、
前記送信装置と前記受信装置との周波数差の調整時を検出し、
前記検出時に、前記第1のタイミング信号において、前記第2のタイミング信号の値、並びに、前記複数のレーンのそれぞれに対して設けられ、前記バッファからの前記受信データの読み出し位置と、前記バッファへの前記受信データの書き込み位置との差に基づいて、前記複数のバッファからの前記受信データの読み出しタイミングを調節する
ことを特徴とするデータ受信方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013095064A JP6221328B2 (ja) | 2013-04-30 | 2013-04-30 | 受信装置、情報処理装置及びデータ受信方法 |
EP14162323.1A EP2800322A1 (en) | 2013-04-30 | 2014-03-28 | Reception apparatus, information processing apparatus and method of receiving data |
US14/245,217 US20140325107A1 (en) | 2013-04-30 | 2014-04-04 | Reception apparatus, information processing apparatus and method of receiving data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013095064A JP6221328B2 (ja) | 2013-04-30 | 2013-04-30 | 受信装置、情報処理装置及びデータ受信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014216981A JP2014216981A (ja) | 2014-11-17 |
JP6221328B2 true JP6221328B2 (ja) | 2017-11-01 |
Family
ID=50828660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013095064A Active JP6221328B2 (ja) | 2013-04-30 | 2013-04-30 | 受信装置、情報処理装置及びデータ受信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140325107A1 (ja) |
EP (1) | EP2800322A1 (ja) |
JP (1) | JP6221328B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8559971B1 (en) * | 2011-04-05 | 2013-10-15 | Exelis, Inc. | Determination of state vector, timing, and navigation quality metrics from reception of SBS transmissions |
US10505837B1 (en) * | 2013-07-09 | 2019-12-10 | Altera Corporation | Method and apparatus for data re-packing for link optimization |
US9577820B2 (en) * | 2015-02-03 | 2017-02-21 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Elastic gear first-in-first-out buffer with frequency monitor |
JP6531513B2 (ja) * | 2015-06-22 | 2019-06-19 | 株式会社リコー | シリアル通信装置及びシリアル通信方法 |
US9705620B2 (en) | 2015-09-18 | 2017-07-11 | Qualcomm Incorporated | Synchronization of endpoints using tunable latency |
US10553110B2 (en) * | 2017-06-23 | 2020-02-04 | Here Global B.V. | Detection and estimation of variable speed signs |
JP7037035B2 (ja) * | 2017-09-01 | 2022-03-16 | 富士通株式会社 | データ伝送装置、演算処理装置及びデータ伝送装置の制御方法 |
JP7069936B2 (ja) * | 2018-03-27 | 2022-05-18 | 富士通株式会社 | 送受信システム、データ受信装置、およびデータ受信方法 |
US10581587B1 (en) * | 2019-04-29 | 2020-03-03 | Advanced Micro Devices, Inc. | Deskewing method for a physical layer interface on a multi-chip module |
JP2021061469A (ja) * | 2019-10-03 | 2021-04-15 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
TWI768275B (zh) * | 2019-12-20 | 2022-06-21 | 群聯電子股份有限公司 | 訊號接收電路、記憶體儲存裝置及訊號接收方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654824B1 (en) * | 2001-08-28 | 2003-11-25 | Crossroads Systems, Inc. | High-speed dynamic multi-lane deskewer |
US7631118B2 (en) * | 2003-12-31 | 2009-12-08 | Intel Corporation | Lane to lane deskewing via non-data symbol processing for a serial point to point link |
US7093061B2 (en) * | 2004-02-19 | 2006-08-15 | Avago Technologies Fiber Ip (Singapore) Pte. Ltd. | FIFO module, deskew circuit and rate matching circuit having the same |
US7454537B1 (en) * | 2004-04-22 | 2008-11-18 | Altera Corporation | Synchronization and channel deskewing circuitry for multi-channel serial links |
US7499516B2 (en) * | 2004-11-19 | 2009-03-03 | Agere Systems, Inc. | Methods and apparatus for interface buffer management and clock compensation in data transfers |
JP5544896B2 (ja) * | 2010-01-22 | 2014-07-09 | 富士通株式会社 | 受信回路、情報処理装置、およびバッファ制御方法 |
JP2013055502A (ja) * | 2011-09-05 | 2013-03-21 | Ricoh Co Ltd | シリアル通信回路 |
-
2013
- 2013-04-30 JP JP2013095064A patent/JP6221328B2/ja active Active
-
2014
- 2014-03-28 EP EP14162323.1A patent/EP2800322A1/en not_active Withdrawn
- 2014-04-04 US US14/245,217 patent/US20140325107A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP2800322A1 (en) | 2014-11-05 |
JP2014216981A (ja) | 2014-11-17 |
US20140325107A1 (en) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6221328B2 (ja) | 受信装置、情報処理装置及びデータ受信方法 | |
US9001954B2 (en) | Reception circuit, information processing device, and buffer control method | |
US10423553B2 (en) | System-on-chip including asynchronous interface and driving method thereof | |
US10038450B1 (en) | Circuits for and methods of transmitting data in an integrated circuit | |
US20090086874A1 (en) | Apparatus and method of elastic buffer control | |
US7352836B1 (en) | System and method of cross-clock domain rate matching | |
WO2017189796A1 (en) | Data transmission method and data transmission system | |
US20100322365A1 (en) | System and method for synchronizing multi-clock domains | |
US8132036B2 (en) | Reducing latency in data transfer between asynchronous clock domains | |
TWI579706B (zh) | 使用可選擇之同步器於非同步邊界上進行資料同步化以最小化潛時 | |
WO2002054262A9 (en) | Low latency synchronization of asynchronous data | |
US7500132B1 (en) | Method of asynchronously transmitting data between clock domains | |
JP2009239768A (ja) | 半導体集積回路装置、及び、クロックデータ復元方法 | |
EP2862090B1 (en) | Adaptive offset synchronization of data based on ring buffers | |
US7542506B2 (en) | Data receiver and equalizer adapter | |
JP5610540B2 (ja) | シリアル通信用インターフェース回路及びパラレルシリアル変換回路 | |
JP5704988B2 (ja) | 通信装置 | |
TWI740564B (zh) | 跨時鐘域信號傳輸方法、電路以及電子裝置 | |
US9484967B1 (en) | Method for duty cycle distortion detection through decision feedback equalizer taps | |
JP5492951B2 (ja) | 半導体集積回路装置、及び、クロックデータ復元方法 | |
JP2008287490A (ja) | データ転送システムおよびデータ転送方法 | |
WO2023166201A1 (en) | Interface circuit portions | |
JP5315882B2 (ja) | 半導体装置及び通信方法 | |
CN117955583A (zh) | 用于互连协议的通道同步的方法、控制器以及存储装置 | |
JP2010141703A (ja) | 並列データ伝送回路及び並列データ伝送方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161124 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170110 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170308 |
|
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: 20170905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170918 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6221328 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |