JP2023117735A - データ転送装置およびデータ転送方法 - Google Patents

データ転送装置およびデータ転送方法 Download PDF

Info

Publication number
JP2023117735A
JP2023117735A JP2022020459A JP2022020459A JP2023117735A JP 2023117735 A JP2023117735 A JP 2023117735A JP 2022020459 A JP2022020459 A JP 2022020459A JP 2022020459 A JP2022020459 A JP 2022020459A JP 2023117735 A JP2023117735 A JP 2023117735A
Authority
JP
Japan
Prior art keywords
data
transfer
burst length
transferred
unit data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022020459A
Other languages
English (en)
Inventor
基茂 池田
Motoshige Ikeda
勇二 稲栄
Yuji Inae
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2022020459A priority Critical patent/JP2023117735A/ja
Priority to TW112103581A priority patent/TW202334837A/zh
Priority to US18/163,585 priority patent/US20230297530A1/en
Priority to DE102023200883.1A priority patent/DE102023200883A1/de
Priority to CN202310106090.1A priority patent/CN116599625A/zh
Publication of JP2023117735A publication Critical patent/JP2023117735A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0006Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
    • 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
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • 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
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0015Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
    • H04L1/0016Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy involving special memory structures, e.g. look-up tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

Figure 2023117735000001
【課題】転送対象のデータを分割して転送する際に転送対象のデータの一部が欠損した場合であってもデータ転送の中断を防ぐ。
【解決手段】送信側装置3から受信側装置4へ転送対象のデータDを分割してバースト転送するデータ転送装置1は、記憶装置11と制御装置12とを備える。制御装置12は、入力された1つの転送対象のデータDが記憶装置11に記憶されるように記憶装置11を制御する。制御装置12は、1つの転送対象のデータDの最後を検知するまでは、データDを分割数nで分割した場合の分割データのデータ長である設定バースト長b0でデータ転送が行われるように記憶装置11を制御し、データDの最後を検知した場合に、当該データDのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整し、調整されたバースト長b1,b2,…でデータ転送が行われるように記憶装置11を制御する。
【選択図】図1

Description

本発明は、データ転送装置およびデータ転送方法に関する。
半導体装置におけるデータ転送の高速化あるいは高効率化に関する種々の技術が開示されている。例えば、特許文献1では、動作速度が互いに異なる送信側装置と受信側装置との間で、記憶部をバッファとして用いてデータをバースト転送するデータ転送装置が開示されている。このデータ転送装置は、記憶部と、制御部とを備えており、制御部は、送信側装置から入力されるデータを記憶部に記憶させ蓄積させるとともに、当該データが複数のデータに分割されて受信側装置に送信されるように、データの書込みおよび読出しを制御する。
上記のデータ転送装置によれば、転送対象のデータを複数に分割して受信側装置に送信するので、転送対象のデータのすべてが記憶部に書き込まれるのを待たずに、記憶部からデータの受信側装置への送信を開始することができ、データ転送の高速化が可能になる。
特開2008-287490号公報
しかしながら、上記のデータ転送装置では、転送対象のデータを記憶部に記憶させる際に、何らかの障害によりデータの一部が欠損すると、制御部は、決められたデータ長のデータが記憶されていないため、データの到来を待ち続けることになる。その結果、例えば、データ転送が中断したり、正常なデータ転送動作へ復帰させるまでに時間を要したりする。このようにデータ転送が正常に行われない期間が生じると、その期間に転送されるべきデータが転送されず、重要な情報を見逃してしまう可能性がある。
このような事情により、転送対象のデータを複数に分割して転送する場合において、データの一部が欠損したとしてもデータ転送の中断を防ぐことができる技術の提供が望まれている。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
代表的な実施の形態によるデータ転送装置は、送信側装置から受信側装置へ転送対象のデータを分割してバースト転送するデータ転送装置であって、記憶装置と、制御装置と、を備え、前記制御装置は、入力された1つの転送対象のデータが前記記憶装置に記憶されるように前記記憶装置を制御する記憶処理と、前記1つの転送対象のデータの最後を検知するまでは、前記1つの転送対象のデータを第1の分割数で分割した場合の分割データのデータ長である設定バースト長でデータ転送が行われるように前記記憶装置を制御する第1の転送処理と、前記1つの転送対象のデータの最後を検知した場合に、前記1つの転送対象のデータのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整し、調整されたバースト長でデータ転送が行われるように前記記憶装置を制御する第2の転送処理と、を実行する、データ転送装置である。
代表的な実施の形態によれば、転送対象のデータを複数に分割して転送する場合において、一部のデータが欠損したとしてもデータ転送の中断を防ぐことができる。
実施形態1に係るデータ転送装置の構成を概略的に示す図である。 単位データが欠損した場合のデータ転送に及ぶ影響を説明するための図である。 実施形態1に係るリードコントローラAの処理を示すフローチャートである。 実施形態1に係るデータ転送装置の処理をより詳細に説明するための図である。 バースト長の第1の算出方法を表すフローチャートである。 バースト長の第2の算出方法を表すフローチャートである。 バースト転送の第1のタイミングチャートである。 バースト転送の第2のタイミングチャートである。
以下、実施形態について説明する。なお、各実施形態は、本発明を実現するための一例であり、本発明の技術範囲を限定するものではない。
また、以下の各実施形態において、同一の機能を有する構成要素には同一の符号を付し、その繰り返しの説明は、特に必要な場合を除き省略する。
本発明の実施形態に係るデータ転送装置は、送信側装置から受信側装置へ転送対象のデータを分割してバースト転送するデータ転送装置であって、記憶装置と、制御装置と、を有している。制御装置は、次に掲げる記憶処理、第1の転送処理、および第2の転送処理を実行する。
記憶処理は、入力された1つの転送対象のデータが記憶装置に記憶されるように記憶装置を制御する処理である。
第1の転送処理は、1つの転送対象のデータの一部が欠損していることを検知するまでは、1つの転送対象のデータを第1の分割数で分割した場合の分割データのデータ長である設定バースト長でデータ転送が行われるように記憶装置を制御する処理である。
第2の転送処理は、1つの転送対象のデータの一部が欠損していることを検知した場合に、当該一部が欠損した1つの転送対象のデータのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整し、調整されたバースト長でデータ転送が行われるように記憶装置を制御する処理である。
また、本実施形態に係るデータ転送装置は、送信側装置から、1つの転送対象のデータを構成する単位データと当該単位データが最後の単位データであるか否かを表すデータエンド信号とが、単位データごとに入力される。
上記記憶処理は、1つの転送対象のデータを構成する複数の単位データの各々について、単位データと当該単位データが最後の単位データであるか否かを示すエンドフラグとが対応付けられて記憶されるように記憶装置を制御する処理である。
上記第1の転送処理は、記憶装置に記憶されておりエンドフラグを参照することにより特定される未送信の単位データの数が、設定バースト長以上である場合には、当該未送信の単位データが設定バースト長で受信側装置に送信されるように記憶装置を制御する処理である。
上記第2の転送処理は、未送信の単位データの数が設定バースト長未満であり、かつ、エンドフラグが検出された場合には、当該数の未送信の単位データが受信側装置に送信されるようにバースト長を調整し、当該未送信の単位データが調整されたバースト長で受信側装置に送信されるように記憶装置を制御する処理である。
なお、本発明の実施形態に係るデータ転送装置は、例えば、AXI(Advanced eXtensible Interface)バス・プロトコルに準じて設計されたものを考えることができる。
(実施形態1)
実施形態1に係るデータ転送装置について説明する。
〈実施形態1に係るデータ転送装置の概要〉
実施形態1に係るデータ転送装置は、送信側装置から受信側装置へ転送対象のデータを分割してバースト転送する。転送対象のデータを分割することで、転送対象のデータがすべて受信されるのを待つことなく、データの転送を開始することができ、転送に要する時間を短くすることができる。
転送対象のデータは、それぞれ、複数の単位データにより構成される。本実施例において、単位データは、データを送受信する上での最小サイズのデータを意味しており、例えば、1ワード分のデータである。
実施形態1に係るデータ転送装置は、送信側装置から受信した複数の単位データを順次自身の記憶装置に書き込む。データ転送装置は、バースト転送動作中、何らかの原因で自身の記憶装置に書き込まれなかった単位データの存在、すなわち単位データの欠損を検知する機能を有する。データ転送装置は、単位データの欠損を検知すると、記憶装置に書き込まれ、かつ、受信側装置に未送信である単位データの数と、転送しようとする単位データの数であるバースト長とがずれて転送動作が中断してしまわないように、実際に用いるバースト長を調整する。
〈実施形態1に係るデータ転送装置の構成〉
実施形態1に係るデータ転送装置の構成について説明する。
図1は、実施形態1に係るデータ転送装置の構成を概略的に示す図である。図1に示すように、実施形態1に係るデータ転送装置1は、FIFO(First In First Out)記憶装置11と、制御装置12とを有している。
FIFO記憶装置11は、入力されるデータを入力された順に出力する記憶装置、すなわち、先入れ先出しの記憶装置である。FIFO記憶装置11は、制御装置12からの制御を受けて、送信側装置3から送信され入力された転送対象のデータD1,D2,…を記憶する。FIFO記憶装置11は、例えば、半導体集積回路、プログラマブル論理回路等により実現される。
制御装置12は、転送対象のデータD1,D2,…が、送信側装置3からFIFO記憶装置11を介して受信側装置4へバースト転送されるように、FIFO記憶装置11を制御したり、転送に係る信号を受信側装置4に送信したりする。
具体的には、制御装置12は、送信側装置3から、単位データdを送信したことを知らせるデータイネーブル信号ENを受信すると、送信側装置3から入力された単位データdがFIFO記憶装置11に書き込まれるように記憶装置11を制御する。また、制御装置12は、記憶装置11に記憶され、かつ、受信側装置4に未送信である単位データdの中から、決められたバースト長b分の単位データdが読み出されるように、記憶装置11を制御する。また、制御装置12は、上記の読み出された単位データdが受信側装置4にて受信されるように、送信するデータのデータ長、送信するタイミングなどを表す信号を受信側装置4に送信する。
制御装置12は、このような制御を繰り返し行うことにより、転送対象のデータDを分割して受信側装置4へ転送する。なお、制御装置12は、例えば、半導体集積回路、プログラマブル集積回路等により実現される。
送信側装置3は、転送対象のデータDを構成する個々の単位データdを、順次、データ転送装置1に送信する。送信側装置3は、単位データdを送信する際に、データイネーブル信号ENをデータ転送装置1に送信する。また、送信側装置3は、その単位データdが、転送対象のデータDを構成する単位データのうち最後の単位データdである場合に、最後の単位データdであることを示すデータエンド信号DEをデータ転送装置1に送信する。データ転送装置1は、このデータエンド信号DEを受信することにより、受信するデータの区切りを検知し、個々のデータを区別することができる。
送信側装置3は、クロック周波数CLKAで動作する。本実施例では、送信側装置3は、不図示のクロック生成器を有しており、このクロック生成器から出力されるクロック信号を基に動作する。送信側装置3は、自身のクロック信号をデータ転送装置1に送信する。データ転送装置1は、このクロック信号を受信し、受信したクロック信号に基づき、送信側装置3による単位データの送信に同期して、送信側装置3から入力された単位データをFIFO記憶装置11に書き込む動作を行う。
送信側装置3は、例えば、イメージセンサを含む撮像装置であり、イメージセンサの出力に基づく画像データであるフレームデータを転送対象のデータDとして、連続的に送信する。
受信側装置4は、データ転送装置1から受信したデータを記憶させる記憶装置を有している。受信側装置4は、転送対象のデータDを、順次、データ転送装置1から受信し、受信したデータを記憶装置に記憶させる。
受信側装置4は、クロック周波数CLKBで動作する。本実施例では、受信側装置4は、送信側装置3のクロック生成器とは異なる不図示のクロック生成器からクロック信号を受信し、受信したクロック信号を基に動作する。データ転送装置1もこのクロック生成器からのクロック信号を受信し、受信したクロック信号を基に、FIFO記憶装置11に記憶されている単位データdを受信側装置4に送信する動作を行う。
受信側装置4は、例えば、記憶装置として半導体メモリを有するRAM(Random Access Memory)である。
なお、クロック信号の生成、送受信、および同期の方法については、種々の方法を考えることができ、上記実施例に限定されない。ただし、データ転送装置1は、送信側装置3のクロック周波数CLKAと、受信側装置4のクロック周波数CLKBとを特定できるように構成される。
〈データを分割してバースト転送する際の課題とその対応〉
送信側装置3から送信された単位データdは、通常であれば、順次、FIFO記憶装置11に書き込まれる。しかしながら、送信側装置3から送信された単位データdは、ごくまれに何らかの原因により、データ転送装置1で受信されず、FIFO記憶装置11に書き込まれないことがある。つまり、送信側装置3から送信された単位データdが欠損してしまうことがある。
単位データdが欠損すると、記憶装置11に記憶されている未送信の単位データdの数uと、記憶装置11から読み出して送信しようとする単位データdの数とが合わなくなる。つまり、はじめに設定されたバースト長bである設定バースト長b0で単位データdを読み出していくと、転送対象であるデータDの最後の方で、未送信の単位データdの数が足りない状況になる。このような状況になると、例えば、制御装置12は、単位データdの入力を一定時間待った後、転送動作をリセットして、その後に入力された転送対象のデータDから再び転送動作を開始する。つまり、転送動作が中断している間に送信側装置3から受信した転送対象のデータDは、受信側装置4に正しく転送されない。
そこで、制御装置12は、転送対象である1つのデータD、設定バースト長b0より小さくなるように一時的に調整する。具体的には、例えば、実際に用いるバースト長bを、未送信の単位データdの数uと同じになるように調整する。また例えば、実際に用いるバースト長bを、設定バースト長b0より小さいバースト長bの組合せとなるように調整する。このバースト長bの組合せは、バースト長bの総和が、未送信の単位データの数uと同じになるように求める。
図2は、単位データが欠損した場合のデータ転送に及ぶ影響を説明するための図である。図2において、横軸は、時間tを示している。図2の上段は、送信側装置3からデータ転送装置1に順次入力されるデータの例を示している。図2の例では、データF1,F2,…,F6,…がデータ転送装置1に順次入力される様子を表している。また、データF3を構成する複数の単位データdのうち単位データd1が、データ転送装置1に入力されず欠損したことを表している。
図2の中段は、データ転送装置1から受信側装置4に順次出力されるデータの例を示している。この例は、従来のデータ転送装置の場合の例である。データF1,F2は、正確に出力されているが、データF3については、欠損した単位データd1の存在により、最後の単位データd2の書込みが検知されず、転送しようとする単位データdが足りなくなっている状態を表している。この場合、設定バースト長b0での転送ができなくなり、転送動作が一時的に中断する。その影響で、転送動作のリセット等に時間を要する期間R1では、送信側装置3から送信されたデータF4,F5が転送されず、復旧後、データF6から転送が再開される。
図2の下段は、データ転送装置1から受信側装置4に順次出力されるデータの他の例を示している。この例は、本実施形態によるデータ転送装置1の場合の例である。データF3の欠損した単位データd1の存在により、最後の単位データd2の書込みが検知されず、転送しようとする単位データdが足りなくなることは、従来の場合と同じである。
一方、本実施形態によるデータ転送装置1は、受信側装置4へ未だ送信していない未送信の単位データdの数uが、設定バースト長b0より少ない場合、実際に用いるバースト長bを設定バースト長b0より小さくなるように一時的に調整する。このようなバースト長bの調整により、転送しようとする単位データdの数と、未送信の単位データdの数uとのずれを解消し、転送動作の中断を回避する。転送動作の中断が回避されると、データF4以降のデータも、正しく転送される。
〈制御装置の構成〉
図1に戻り、制御装置12の構成について説明する。制御装置12は、図1に示すように、ライトコントローラ13と、リードコントローラA14と、リードコントローラB15と、同期回路16と、を有している。
ライトコントローラ13は、FIFO記憶装置11に制御信号Wを送信してFIFO記憶装置11を制御することにより、データの書き込みを制御する。ライトコントローラ13は、送信側装置3からデータイネーブル信号ENを受信すると、入力された単位データdが最後の単位データdであるか否かを表すデータエンド信号DEを受信する。ライトコントローラ13は、データエンド信号DEを受信すると、入力された単位データdと、その単位データdが最後の単位データdであるか否かを表すエンドフラグEFとを対応付けて、FIFO記憶装置11に書き込まれるように、FIFO記憶装置11を制御する。ライトコントローラ13は、単位データdの書き込みが完了すると、その都度、書込み位置Xを同期回路16に送信する。
リードコントローラA14は、上記のように転送対象のデータDを分割して転送する際のバースト長b、すなわち、分割して転送するデータのデータ長、を設定する。設定するバースト長bの決め方は種々考えられる。予め決められたバースト長を、設定するバースト長である設定バースト長b0に決めてもよいし、所定のアルゴリズムに従って算出されたバースト長bを、設定バースト長b0に決めてもよい。
所定のアルゴリズムに従って設定バースト長b0を決定する場合、例えば、特開2008-287490号公報に記載された方法を用いることができる。この方法は、転送時間が最短となるように、転送対象のデータDを分割して転送する際の分割数nを求め、求めた分割数nを基にバースト長bを算出する方法である。転送時間が最短となる分割数nは、送信側装置3のクロック周波数CLKAと、受信側装置4のクロック周波数CLKBと、転送対象のデータDのデータ長とに基づいて求めることができる。この方法の詳細は、後述する。
また、リードコントローラA14は、FIFO記憶装置11に単位データdが書き込まれたことを、同期回路16から出力される同期信号Yを通じて検知する。リードコントローラA14は、単位データdが書き込まれたことを検知する度に、書き込まれた単位データdと対応付けされたエンドフラグEFを読み出す。リードコントローラA14は、読み出したエンドフラグEFが最後の単位データdを表しているか否かを判定する。リードコントローラA14は、エンドフラグEFが最後の単位データdであることを表していないと判定した場合には、読み出したエンドフラグEFの数が設定バースト長b0と同じ数に達するまで、引き続きエンドフラグEFの読出しを行う。
また、リードコントローラA14は、エンドフラグEFを読み出す度に、読み出したエンドフラグEFの数、すなわち、受信側装置4にまだ送信されていないと認められる未送信の単位データの数uが、設定バースト長b0と同じ数に達したかを判定する。リードコントローラA14は、未送信の単位データの数uが、設定バースト長b0と同じ数に達したと判定した場合に、設定バースト長b0で未送信の単位データdを送信するように送信指令QをリードコントローラB15に送信する。また、リードコントローラA14は、この送信指令Qの送信とともに、設定バースト長b0での送信を知らせる転送要求TRを受信側装置4に送信する。
リードコントローラA14は、読み出したエンドフラグEFが最後の単位データdであることを表していると判定した場合には、未送信の単位データdの数uが、設定バースト長b0と等しいかをさらに判定する。リードコントローラA14は、この判定において、未送信の単位データdの数uがバースト長bと等しいと判定した場合には、未送信の単位データdを、設定バースト長b0で送信するよう指示する送信指令Qを、リードコントローラB15に送信する。また、リードコントローラA14は、この送信指令Qの送信とともに、設定バースト長b0での送信を知らせる転送要求TRを受信側装置4に送信する。
一方、リードコントローラA14は、読み出したエンドフラグEFが最後の単位データdであることを表していると判定した場合において、未送信の単位データdの数uが設定バースト長bと等しくないと判定した場合には、実際に用いるバースト長bを調整する。
すなわち、リードコントローラA14は、バースト長bの総和が未送信の単位データdの数uと等しくなるように、バースト長bを、設定バースト長b0より小さい複数のバースト長の組合せb1,b2,…に調整する。具体的には、設定バースト長b0に近い転送可能な単位データdの数(データ量)から選び、組み合わせるようにする。例えば、設定バースト長b0が4であり、未送信の単位データdの数uが3である場合には、実際に用いるバースト長bを、b1=2とb2=1の組合せに調整する。
そして、リードコントローラA14は、未送信のb1個の単位データdの送信指令QをリードコントローラB15に送信するとともに、未送信のb1個の単位データdの転送要求TRを受信側装置4に送信する。その後、リードコントローラA14は、未送信のb2個の単位データdの送信指令QをリードコントローラB15に送信するとともに、未送信のb2個の単位データdの転送要求TRを受信側装置4に送信する。
リードコントローラB15は、FIFO記憶装置11に制御信号Gを送信してFIFO記憶装置11を制御することにより、FIFO記憶装置11からの単位データの読出しおよび送信を制御する。リードコントローラB15は、リードコントローラA14から送信指令Qを受信すると、送信指令Qで定められたバースト長b分の未送信の単位データdが読み出され、受信側装置4に送信されるようにFIFO記憶装置11を制御する。
同期回路16は、送信側装置3のクロック周波数CLKAと受信側装置4のクロック周波数CLKBとが異なる状況下での非同期処理において、メタステーブルを収束させるための回路である。同期回路16は、ライトコントローラ13から単位データdが書き込まれたことを示す書込み位置Xを受信すると、その同期信号YをリードコントローラA14に送信する。この同期信号Yは、入力された単位データdがFIFO記憶装置11に書き込まれたことをリードコントローラA14に知らせる役目を果たす。同期回路16は、例えば、バイナリデータをグレイデータに変換する回路と、複数のフリップフロップ回路と、グレイデータからバイナリデータに変換する回路とが接続された回路により構成される。
〈実施形態1に係るデータ転送装置における処理フロー〉
実施形態1に係るデータ転送装置1における処理フローについて説明する。
ライトコントローラ13は、送信側装置3からデータイネーブル信号ENを受信すると、入力された単位データdとそのエンドフラグEFとが対応付けられて、FIFO記憶装置11に記憶されるように、FIFO記憶装置11を制御する。つまり、ライトコントローラ13は、他のコントローラと独立して、入力された単位データdが順次FIFO記憶装置11に書き込まれるように制御を行う。
リードコントローラB15は、リードコントローラA14からの送信指令Qを受信すると、送信指令Qで定められたバースト長bで未送信の単位データdが受信側装置4に送信されるようにFIFO記憶装置11を制御する。
したがって、実施形態1に係るデータ転送装置1における処理は、リードコントローラA14における処理により定まる。そこで、ここでは、リードコントローラA14における処理フローについて説明する。
図3は、実施形態1に係るリードコントローラAの処理を示すフローチャートである。なお、図3はあくまで一例であり、リードコントローラAの処理はこれに限定されない。
ステップS1では、転送対象のデータDを分割して転送する際のバースト長bを設定し、設定バース長b0を決定する処理が行われる。具体的には、リードコントローラA14が、送信側装置3のクロック周波数CLKAと、受信側装置4のクロック周波数CLKBと、転送対象のデータDのデータ長Nとに基づき、転送時間が最短となる分割数nを求める。リードコントローラA14は、転送対象のデータDのデータ長Nを、求めた分割数nで割ることにより、最適なバースト長bを求め、求めたバースト長bを標準的に用いる設定バースト長b0に決定する。
ステップS2では、単位データdの受信待ち処理が行われる。具体的には、ライトコントローラ13が、送信側装置3から単位データdが入力されると、入力された単位データdとそのときのエンドフラグEFとがFIFO記憶装置11に書き込まれるようにFIFO記憶装置11を制御する。ライトコントローラ13は、単位データdが受信されFIFO記憶装置11に書き込まれる度に、書込み位置Xを同期回路16に送信する。同期回路16は、書込み位置Xを受信すると、それに同期した同期信号YをリードコントローラA14に送信する。リードコントローラA14は、その同期信号Yを受信することにより、単位データdが書き込まれたことを検知する。すなわち、リードコントローラAは自身の読出し位置と受け取った書込み位置のずれによって単位データdが書き込まれたことを認識する。リードコントローラ14Aは、その同期信号Yを受信するまで待機状態を保持する。リードコントローラ14Aは、同期信号Yを受信すると、次のステップS3に進む。
ステップS3では、エンドフラグEFを読み出す処理が行われる。具体的には、リードコントローラA14が、FIFO記憶装置11から、受信側装置4に未送信の単位データdの中で最も古い単位データdのエンドフラグEFを読み出す。このとき、未送信の単位データdの数uがインクリメントされる(u←u+1;uの初期値=0)。
ステップS4では、読み出したエンドフラグEFが最後の単位データdを表しているか否かを判定する処理が行われる。具体的には、リードコントローラA14が、ステップS3で読み出したエンドフラグEFが、対応する単位データdが最後の単位データdであることを表しているか否かを判定する。この判定において、エンドフラグEFが最後の単位データdであることを表していると判定された場合(S4:Yes)には、ステップS7に進む。一方、この判定において、エンドフラグEFが最後の単位データdであることを表していないと判定された場合(S4:No)には、ステップS5に進む。
ステップS5では、未送信の単位データdの数uが、設定バースト長b0と等しいかを判定する処理が行われる。具体的には、リードコントローラA14が、ステップ3にてFIFO記憶装置11から読み出されたエンドフラグEFの個数、すなわち、未送信の単位データdの数uが、設定バースト長b0と等しいか否かを判定する。この判定において、未送信の単位データdの数uが設定バースト長b0と等しいと判定された場合(S5:Yes)には、ステップS6に進み、未送信の単位データdの数uが設定バースト長b0と等しくないと判定された場合(S5:No)には、ステップS2に戻る。
ステップS6では、設定バースト長b0での単位データdの転送要求TRおよび送信指令Qを送信する処理が行われる。具体的には、リードコントローラA14が、転送要求TRを受信側装置4に送信するとともに、設定バースト長b0での単位データdの送信を指示する送信指令QをリードコントローラB15に送信する。受信側装置4は、転送要求TRを受信すると、送信されてくる設定バースト長b0分の単位データdを受信する用意を行う。リードコントローラB15は、送信指令Qを受信すると、設定バースト長b0分の未送信の単位データd、すなわち、数uの単位データdが受信側装置4に送信されるようにFIFO記憶装置11を制御する。この制御により、数uすなわち設定バースト長b0分の単位データdが受信側装置4に送信される。設定バースト長b0分の単位データdの送信が完了したら、ステップS2に戻り、再び単位データdの受信待ちが行われる。このとき、未送信の単位データdの数uは、0にリセットされる。
ステップS7では、未送信の単位データdの数uが設定バースト長b0と等しいかを判定する処理が行われる。具体的には、リードコントローラA14が、ステップ3にてFIFO記憶装置11から読み出されたエンドフラグEFの個数、すなわち、未送信の単位データdの数uが、設定バースト長b0と等しいか否かを判定する。この判定において、単位データの数uが設定バースト長b0と等しいと判定された場合(S7:Yes)には、ステップS8に進む。一方、この判定において、未送信の単位データdの数uが設定バースト長b0と等しくないと判定された場合(S7:No)には、ステップS9に進む。
ステップS8では、設定バースト長b0での単位データdの転送要求Qを送信する処理が行われる。具体的には、リードコントローラA14が、転送要求TRを受信側装置4に送信するとともに、設定バースト長b0での単位データdの送信を指示する送信指令QをリードコントローラB15に送信する。受信側装置4は、転送要求TRを受信すると、送信されてくる設定バースト長b0分の単位データdを受信する用意を行う。リードコントローラB15は、送信指令Qを受信すると、設定バースト長b0分の未送信の単位データd、すなわち、数uの未送信の単位データdが受信側装置4に送信されるようにFIFO記憶装置11を制御する。この制御により、数uすなわち設定バースト長b0分の単位データdが受信側装置4に送信される。設定バースト長b0分の単位データdの送信が完了したら、転送対象の1つのデータDの転送処理が終了する。その後、ステップS11に進む。
ステップS9では、バースト長bを調整する処理が行われる。具体的には、リードコントローラA14が、バースト長bの総和が未送信の単位データdの数uと等しくなるように、バースト長bを、設定バースト長b0より小さい複数のバースト長の組合せb1,b2,…bnに調整する。すなわち、u=b1+b2+…+bnとなるように、b1+b2+…+bnを決定する。
本実施例では、バースト長bを調整する際には、設定バースト長b0より小さい値の中から値が大きいほど優先順位が高くなるように1つまたは複数の値を選択し、選択された値を調整されたバースト長b1,b2,…とする。例えば、データ転送装置1が一度に転送できる単位データdの数を、バースト長候補として複数用意する。そして、これらのバースト長候補の中から、設定バースト長b0に近いバースト長候補を優先的に選んでゆき、その総和が数uになるように組み合わせる。なお、設定バースト長b0と、調整するためのバースト長候補とは、例えば、2のべき乗で表される値(1,2,4,…)とすることができる。
バースト長bの具体的な調整例について説明する。例えば、設定バースト長b0が8である場合には、バースト長候補として、4,2,1を用意する。未送信の単位データdの数uが7である場合には、バースト長bを、b1=4と、b2=2と、b3=1と、の組合せに調整する。また例えば、設定バースト長b0が4である場合には、バースト長候補として、2,1を用意する。未送信の単位データdの数uが3である場合には、バースト長bを、b1=2と、b2=1と、の組合せに調整する。
ステップS9において、上記の如くバースト長bが調整されたら、ステップS10に進み、調整されたバースト長b1,b2,…でのデータ転送が行われる。
ステップS10では、調整されたバースト長の組合せb1,b2,…,bnの各々について転送要求TRおよび送信指令Qを送信する処理が行われる。具体的には、リードコントローラA14が、上記の組合せの数分の転送要求TRおよび送信指令Qを、受信側装置4およびリードコントローラB15に順次送信する。
すなわち、リードコントローラA14は、未送信のb1個の単位データdの転送要求TRを受信側装置4に送信するとともに、未送信のb1個の単位データdの送信を指示する送信指令QをリードコントローラB15に送信する。さらに、バースト長b2がある場合には、リードコントローラA14は、未送信のb2個の単位データdの転送要求TRを受信側装置4に送信するとともに、未送信のb2個の単位データdの送信を指示する送信指令QをリードコントローラB15に送信する。このようにして、上記組合せの最後のバースト長bnについてまで、転送要求TRおよび送信指令Qを送信する。
リードコントローラB15は、転送要求TRを受信すると、そのときの調整されたバースト長分の未送信の単位データdが、受信側装置4に送信されるように、FIFO記憶装置11を制御する。この制御は、送信指令Qを受信するごとに行われる。これらの制御により、数uの単位データdが受信側装置4に送信される。そして、ここでの単位データdの送信をもって、転送対象である1つのデータDの転送が完了する。ただし、このとき転送されるデータDは、一部の単位データdが欠落したデータとなる。
このように、バースト長bを調整する処理(S9)と、調整後のバースト長bでの転送要求TRおよび送信指令Qを送信する処理(S10)とにより、未送信の単位データdの数uと、送信しようとする単位データdの数との間にずれが生じない。つまり、単位データdが欠損した場合であっても、リードコントローラA14による単位データdの受信待ちが長時間に亘って行われることを防ぐことができ、転送動作は中断されずにすむ。
ステップ10の転送要求TRおよび送信指令Qを送信する処理が行われたら、ステップS11に進む。このとき、未送信であると認められる単位データdの数uは、0にリセットされ、バースト長bは、当初の設定バースト長b0にリセットされる。
ステップS11では、データ転送を継続するか否かを判定する処理が行われる。具体的には、リードコントローラA14が、データ転送を継続するか否かを判定する。例えば、データ転送を中断すべき事象が発生した場合、あるいは、転送するデータがなくなった場合には、データ転送を継続しないと判定される。それ以外の場合には、データ転送を継続すると判定される。この判定において、データ転送を継続すると判定された場合(S11:Yes)には、ステップS3に戻り、データ転送を継続しないと判定された場合(S11:No)には、データ転送処理を終了させる。
〈実施形態1に係るデータ転送装置における処理の具体例〉
ここで、実施形態1に係るデータ転送装置1におけるクロック信号に基づく各タイミングでの処理を、具体例を用いて説明する。
図4は、実施形態1に係るデータ転送装置の処理をより詳細に説明するための図である。図4では、データ転送装置1におけるクロック信号に基づく各タイミングでの処理の具体例が模式的に示されている。なお、本実施例では、便宜上、送信側装置3のクロック周波数CLKAと受信側装置4のクロック周波数CLKBとは同じであるものとする。転送対象である1つのデータDは、8個の単位データdにより構成されるものとする。また、設定バースト長b0は4、すなわち4バーストで転送するものとする。
図4において、横軸は時間tを表している。図4の上方には、データ転送装置1に入力される単位データD1を構成する8個の単位データ、d1(0),d1(1),…,d1(7)を表している。これらの単位データdは、入力された順番に左から並べられている。その下の波形は、データエンド信号DEの出力レベルの時間変化を表している。本実施例では、データエンド信号DEは、最後の単位データであるd1(7)の入力に同期して「H(ハイ)」レベルが出力される。また、本実施例では、データD1の6番目の単位データであるd1(5)が欠落する場合を想定している。
図4の中央付近の上側には、FIFO記憶装置11のアドレス、adr[0],adr[1],…,adr[7],…が表されている。各アドレスの右側には、そのアドレスに書き込まれる単位データdとその単位データdに対応したエンドフラグEFとの組合せが表されている。エンドフラグEFは、データエンド信号DEの出力レベルを表すフラグであり、出力レベルが「H」なら1,出力レベルが「L(ロー)」なら0が与えられる。例えば、アドレスadr[0]には、単位データd1(0)と、値0が与えられたエンドフラグEFとが対応づけられたデータ{d1(0),0}が書き込まれている。また、アドレスadr[6]には、単位データd1(7)と値1が与えられたエンドフラグEFとが対応づけられたデータ{d1(7),1}が書き込まれている。
図4の中央付近の下側には、「ライトコントローラの書込み位置」、「リードコントローラAの読出し位置」、「リードコントローラBの読出し位置」が表されている。「ライトコントローラの書込み位置」は、入力された単位データdを書き込むアドレス番号の時間変化を表している。「リードコントローラAの読出し位置」は、リードコントローラA14がFIFO記憶装置11からエンドフラグEFを読み出すときの読出し先となるアドレス番号の時間変化を表している。「リードコントローラBの読出し位置」は、リードコントローラB15がFIFO記憶装置11から単位データdを読み出して送信するときの読出し先となるアドレス番号の時間変化を表している。
図4の下方には、「受信側装置への送信信号・送信データ」が表されている。「受信側装置への送信信号・送信データ」は、各タイミングで送信される転送要求TR(送信指令Q)と単位データdとを表している。
図4に示すように、初めの第1のタイミングTm1では、ライトコントローラ13の書込み位置、リードコントローラA14の読出し位置、およびリードコントローラB15の読出し位置は、それぞれ0である。このとき、入力された単位データd1(0)とデータエンド信号DEの「L」とが、データ転送装置1において受信される(S2)。単位データd1(0)とエンドフラグEFの書込みは次のタイミングで行われる。FIFO記憶装置11から読み出す単位データdおよびエンドフラグEFはまだ存在しないため、引き続きデータ受信待ちとなる。
第2のタイミングTm2では、入力された単位データd1(1)とデータエンド信号DEの「L」とが受信される。ライトコントローラ13は、アドレスadr[0]に、前タイミングTm1で受信された単位データd1(0)およびデータエンド信号DEの「L」に基づき、データ{d1(0),0}が書き込まれるように制御を行う(S2)。データ{d1(0),0}は、単位データd1(0)にそのエンドフラグEFを付帯させたデータである。エンドフラグEFは、データエンド信号DEが「L」なら0、「H」なら1となる。ライトコントローラ13の書込み位置すなわちアドレスの番号は、インクリメントされ、1になる。リードコントローラA14は、前タイミングTm1でデータが書き込まれていないため、エンドフラグEFの読出し等は行わない。
第3のタイミングTm3では、入力された単位データd1(2)とデータエンド信号DEの「L」とが受信される。ライトコントローラ13は、アドレスadr[1]に、前タイミングTm2で受信された単位データd1(1)およびデータエンド信号DEの「L」に基づき、データ{d1(1),0}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、2になる。リードコントローラA14は、アドレスadr[0]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが1であり、設定バースト長b0である4に達していないことを確認する(S5:No)。リードコントローラA14の読出し位置は、インクリメントされ、1になる。
第4のタイミングTm4では、入力された単位データd1(3)とデータエンド信号DEの「L」とが受信される。ライトコントローラ13は、アドレスadr[2]に、前タイミングTm3で受信された単位データd1(3)およびデータエンド信号DEの「L」に基づき、データ{d1(2),0}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、3になる。リードコントローラA14は、アドレスadr[1]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが2であり、設定バースト長b0である4に達していないことを確認する(S5:No)。リードコントローラA14の読出し位置は、インクリメントされ、2になる。
第5のタイミングTm5では、入力された単位データd1(4)とデータエンド信号DEの「L」とが受信される。ライトコントローラ13は、アドレスadr[3]に、前タイミングTm4で受信された単位データd1(3)およびデータエンド信号DEの「L」に基づき、データ{d1(3),0}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、4になる。リードコントローラA14は、アドレスadr[2]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが3であり、設定バースト長b0である4に達していないことを確認する(S5:No)。リードコントローラA14の読出し位置は、インクリメントされ、3になる。
第6のタイミングTm6では、単位データd1(5)は入力されず、受信されないため、欠損となる。ライトコントローラ13は、アドレスadr[4]に、前タイミングTm5で受信された単位データd1(4)およびデータエンド信号DEの「L」に基づき、データ{d1(4),0}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、5になる。リードコントローラA14は、アドレスadr[3]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが4であり、設定バースト長b0である4に達したことを確認する(S5:Yes)。リードコントローラA14は、次のタイミングTm7で、受信側装置4に転送要求TRを送信するとともに、リードコントローラB15に送信指令Qを送信する、と決定する(S6)。リードコントローラA14の読出し位置は、インクリメントされ、4になる。確認された未送信の単位データdの数uは0にリセットされる。
第7のタイミングTm7では、入力された単位データd1(6)とデータエンド信号DEの「L」とが受信される。ライトコントローラ13は、前タイミングTm6でデータが受信されなかったため、アドレスadr[5]には何も書き込まない。ライトコントローラ13の書込み位置は、インクリメントされず、5のままになる。リードコントローラA14は、アドレスadr[4]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが1であり、設定バースト長b0である4に達していないことを確認する(S5:No)。リードコントローラA14は、前タイミングTm6で決定されていた通り、リードコントローラB15に送信指令Qを送信する。リードコントローラA14の読出し位置は、インクリメントされ、5になる。
第8のタイミングTm8では、入力された単位データd1(7)とデータエンド信号DEの「H」とが受信される。ライトコントローラ13は、アドレスadr[5]に、前タイミングTm7で受信された単位データd1(6)およびデータエンド信号DEの「L」に基づき、データ{d1(6),0}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、6になる。リードコントローラA14は、アドレスadr[5]にエンドフラグEFが書き込まれていないため、エンドフラグEFは読み出さない。リードコントローラB15は、前タイミングTm7で送信指令Qを受信しているので、adr[0]の単位データd1(0)を読み出して受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、1になる。
第9のタイミングTm9では、データは入力されず受信されない。ライトコントローラ13は、アドレスadr[6]に、前タイミングTm8で受信された単位データd1(7)およびデータエンド信号DEの「H」に基づき、データ{d1(7),1}が書き込まれるように制御を行う(S2)。ライトコントローラ13の書込み位置は、インクリメントされ、7になる。リードコントローラA14は、アドレスadr[5]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが0であることを確認する(S4:No)。そして、確認された未送信の単位データdの数uが2であり、設定バースト長b0である4に達していないことを確認する(S5:No)。リードコントローラA14の読出し位置は、インクリメントされ、6になる。リードコントローラB15は、adr[1]の単位データd1(1)を読み出して受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、2になる。
第10のタイミングTm10では、データは入力されず受信されない。ライトコントローラ13は、前タイミングTm9でデータが受信されなかったため、アドレスadr[7]には何も書き込まない。ライトコントローラ13の書込み位置は、インクリメントされず、7のままになる。リードコントローラA14は、アドレスadr[6]のエンドフラグEFを読み出す(S3)。リードコントローラA14は、エンドフラグEFが1であることを確認する(S4:Yes)。そして、確認された未送信の単位データdの数uが3であり、設定バースト長b0である4に達していないことを確認する(S7:No)。リードコントローラA14の読出し位置は、インクリメントされ、7になる。リードコントローラB15は、adr[2]の単位データd1(2)を読み出して受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、3になる。
第11のタイミングTm11では、リードコントローラA14は、エンドフラグEFが1であるにも拘らず、未送信の単位データdの数uが設定バースト長b0である4に達していないことから、バースト長bの調整を実行する(S9)。ここでは、未送信の単位データdの数uは3であるから、バースト長bは、その総和が3になるように、バースト長b1=2と、バースト長b2=1との組合せに決定される。すなわち、バースト長b1=2で転送要求TRおよび送信指令Qを送信した後、転送終了後に、バースト長b2=1で転送要求TRおよび送信指令Qを送信する。リードコントローラA14は、次のタイミングTm12でリードコントローラB15にバースト長b1=2での転送要求TRを送信すると決定する(S10)。リードコントローラA14の読出し位置は、7のままである。リードコントローラB15は、adr[2]の単位データd1(3)が受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、4になる。
第12のタイミングTm12では、データは入力されず受信されない。ライトコントローラ13は、前タイミングTm11でデータが受信されなかったため、アドレスadr[7]には何も書き込まない。ライトコントローラ13の書込み位置は、インクリメントされず、7のままになる。リードコントローラA14は、アドレスadr[7]にエンドフラグEFが書き込まれていないため、エンドフラグEFは読み出さない。よって、リードコントローラA14は、エンドフラグEFの値は確認しない。リードコントローラA14は、前タイミングTm11で決定されていた通り、リードコントローラB15にバースト長b1=2での転送要求TRおよび送信指令Qを送信する。リードコントローラA14の読出し位置は、7のままである。リードコントローラB15の読出し位置は、4のままである。
第13のタイミングTm13では、データは入力されず受信されない。ライトコントローラ13は、前タイミングTm12でデータが受信されなかったため、アドレスadr[7]には何も書き込まない。ライトコントローラ13の書込み位置は、7のままである。リードコントローラA14は、アドレスadr[7]にエンドフラグEFが書き込まれていないため、エンドフラグEFは読み出さない。リードコントローラB15は、前タイミングTm12でバースト長b1=2での送信指令Qを受信しているので、adr[4]の単位データd1(4)が受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、5になる。
第14のタイミングTm14では、リードコントローラB15は、adr[5]の単位データd1(6)を読み出して受信側装置4に送信されるように制御を行う。これでバースト長b1=2での転送が完了する。リードコントローラB15の読出し位置は、インクリメントされ、6になる。
第15のタイミングTm15では、リードコントローラA14は、第11のタイミングTm11で決定されていた通り、リードコントローラB15にバースト長b2=1での送信指令Qを送信する。リードコントローラA14の読出し位置は、7が維持される。リードコントローラB15の読出し位置は、6のままである。
第16のタイミングTm16では、リードコントローラB15は、前タイミングTm15でバースト長b2=1での送信指令Qを受信しているので、adr[6]の単位データd1(7)を読み出して受信側装置4に送信されるように制御を行う。リードコントローラB15の読出し位置は、インクリメントされ、7になる。
〈設定バースト長の算出方法〉
ここで、ステップS1において設定されるバースト長の算出方法について説明する。このバースト長の算出方法は、送信側装置3の動作速度と、受信側装置4の動作速度と、転送対象のデータDのデータ長とに基づいて算出する方法である。このバースト長の算出方法は、はじめに転送対象のデータDの転送に要する時間が、転送対象のデータDを未分割で転送する場合よりも短くなるようにデータの分割数nを求め、転送対象のデータDをその分割数nで分割したときの分割データのデータ長を、設定するバースト長b0として求める。なお、このバースト長の算出方法は、送信側装置3および受信側装置4のクロック速度の遅速によって異なる。
図5は、バースト長の第1の算出方法を表すフローチャートである。第1の算出方法は、送信側装置が受信側装置よりも高速なクロック周波数で動作している場合におけるバースト長の算出方法である。ここで、nは分割数を示し、t(n)はバースト長をn分割したときの総転送時間を示す。
ステップS20において、nを1に設定する。
ステップS21において、FIFO記憶装置11に蓄積することができる最大のデータ数Nと同数のバースト長を基準として、総転送時間t(1)を計算する。
ステップS22において、分割数nを増加させた時の総転送時間t(n+1)を計算する。
ステップS23において、差分M=t(n)-t(n+1)を求め、M≧0ならば(ステップS24a:No)、ステップS25においてnを1増加させてステップS22へ戻る。またM<0であれば、ステップS26に進む。
ステップS26において、nを求めたい分割数とし、分割数nのバースト長を最適なバースト長として一連の処理を終了する。ここで最大バースト長をN(Nは2以上の整数)としたときの分割数nと、分割したバースト長をbとしたとき、b=N/nで表される。
図6は、バースト長の第2の算出方法を表すフローチャートである。第2の算出方法は、受信側装置が送信側装置よりも高速なクロック周波数で動作している場合におけるバースト長の算出方法である。図6と図5の違いは、ステップS24aにおいて、差分Mの算出に加え、バースト長bに対して後述の式(24)に示される制約が加わることである。
次に、バースト転送時のタイミングチャートについて説明する。
図7は、バースト転送の第1のタイミングチャートである。第1のタイミングチャートは、送信側装置3が受信側装置4よりも高速なクロック周波数で動作している場合におけるタイミングチャートである。
図7において、送信側装置3から受信側装置4へNワードのバースト転送を行うに際し、図7(a)、(b)、(c)、(d)のように分割数を1、2、4、8と増加させていった場合におけるバースト長ごとの動作の例を表している。送信データを短いバースト長で複数回に分けて受信すると、1バースト長分の単位データが揃った時点でデータ転送が開始できるため、その分データ受信開始が早くなり、転送にかかる全体の時間は、短くなる傾向にある。
しかし、バースト長を短くし転送回数を増やすに従い、転送の起動、受信、終了を相互に通知するための転送の要求信号および受信信号をやりとりするための非同期処理を行う回数が増加する。したがって、図7(d)に示すように、転送回数を余り増やすと、かえって全体の転送時間を長くしてしまうこととなる。送信側装置3と受信側装置4のクロック周波数比が大きくなるに従い、非同期処理期間(クロック数)も長くなっていくため、さらに全体の転送時間を長くする要因となる。このことから、送信側装置3と受信側装置4のクロック周波数比に対して、全体の転送時間を最も短くする最適なバースト長は異なる。
非同期処理期間T2は、非同期処理の回路構成(動作仕様)に従って計算することで算出することができる。したがって、転送に係る全体のデータ量とバースト長、非同期処理にかかる時間を数式化することにより、期待される総転送時間を予測することができる。リードコントローラA14は、送信側装置3と受信側装置4とのクロック周波数比において最も総転送時間が短くなるようなバースト長を算出しておく。そして、リードコントローラA14は、動作モード変更などに伴って動作周波数設定の変更を検知するたびに、送信側装置3と受信側装置4のクロック周波数比に応じて適切なバースト長を設定する。このような設定を行うことで常に高速な転送が可能となる。
以下に、総転送時間の具体的な計算例を示す。なお、この計算を行う機構をデータ転送装置1に組み込んでおいてもよいし、取りうる動作クロックの組み合わせで計算を別途実行しておき、結果のみをテーブルとしてデータ転送装置1に組み込んでおいても同じ効果が得られる。
図7において、送信側装置3から送信される単位データがFIFO記憶装置11に設定バースト長と同じ数まで蓄積されるのにかかる時間をT1、リードコントローラA14から受信側装置4に転送要求TRを出し、それが受信側装置4に認識されるまでの時間をT2、受信側装置4が設定バースト長と同数の単位データを受信するまでの時間をT3とする。
図7(a)は、バースト長を、FIFO記憶装置11に蓄積することができるデータの最大のワード数(単位データの数)Nと同数とした場合の総転送時間を表したものである。取りうるバースト長bを、N、N÷2、N÷4、N÷8としたとき、図7(b)は、バースト長bをN÷2とし、2分割で受信する場合を表し、図7(c)、(d)は、同様にN÷4、N÷8とした場合を表している。
図7(a)、図7(b)、図7(c)、図7(d)における総転送時間をそれぞれt(1)、t(2)、t(3)、t(4)とする。t(1)、t(2)、t(3)、t(4)は、それぞれT1、T2、T3を用いて、下記の式(1)~(4)のように表される。
図7(a)の場合、
t(1)=T1+T2+T3 …式(1)
図7(b)の場合、
t(2)=T1÷2+2×T2+2×T3÷2 …式(2)
図7(c)の場合、
t(3)=T1÷4+4×T2+4×T3÷4 …式(3)
図7(d)の場合、
t(4)=T1÷8+8×T2+8×T3÷8 …式(4)
これらの計算を図5に示すフローチャートに沿って行う。T1、T2、T3は、送信側と受信側の周波数比から実数値が入る(詳細後述)。
図5のステップS20、S21から、最大バースト長Nでの転送時間は、t(1)となる。ステップS22において、2分割のバースト長での転送時間はt(2)となる。
また、ステップS23において、差分M(図7(b)のMに対応)を取ると、下記に示す式(5)のようになる。
M=t(1)-t(2)
=T1+T2+T3-(T1÷2+2×T2+2×T3÷2)
=T1÷2-T2 …式(5)
ステップS24において、M≧0であれば、転送時間が改善されたという意味であるので、以後同様ステップS25を経由し、2番目に大きいバースト長(この例ではN÷2)からt(2)-t(3)、t(3)-t(4)、・・・と繰り返し、M<0となった時点で前回(この例ではt(3))の時点のバースト長を最適なバースト長として決定する(ステップS26)。
T1、T2、T3を具体的に数値として求める例を以下に示す。本実施例では送信側装置3のほうが受信側装置4よりも高速に動作していることから、図7に示したようなクロック関係になる。送信側装置3のクロック信号のサイクル時間をC1、受信側装置4のクロック信号のサイクル時間をC2とする。送信側装置3のクロックを基準に考えると、サイクル時間の比fは、下記に示す式(6)で表される。
f=C2÷C1 …式(6)
式(6)は、送信側装置3から見て受信側装置4がf倍(f>1)の動作サイクル(周波数は逆数)で動作しているという意味になる。
送信側装置3からのデータがFIFO記憶装置11に蓄積されるまでの時間T1は、以下の式(7)で表すことができる。
T1=C1×N …式(7)
非同期処理にかかる時間T2は、リードコントローラA14から転送要求TRを発行するのにかかる時間C2と、転送要求を非同期処理するための最大時間(2×C2)と受信側装置4で受け取るのに必要な最大時間C2、これらを足し合わせ、式(8)が成り立つ。
T2=4×C2 …式(8)
なお、転送要求解除の非同期処理期間は、データ受信期間に隠蔽され、転送処理時間算出に対して無視することができる。
リードコントローラB15がFIFO記憶装置11からデータを読み出して受信側装置4に送信し、受信側装置4がそのデータを受信するのに必要な時間T3は、以下の式(9)で表すことができる。
T3=C2×N=C1×f×N …式(9)
C1、C2、fは、送信側装置3および受信側装置4のクロック周波数が決定されると一意に決まるため、図6に示したフローチャートに基づき、総転送時間はバースト長bをFIFO記憶装置11の容量と同数であるNを基準として計算することができる。
以上の説明において、総転送時間の最小値を、転送対象のデータの分割数を変化させて求める方法を示した。しかし、これに限定されること無く以下のように、転送対象のデータを複数のデータに分割して転送する際の総転送時間Ttotalを、クロック信号の速度比f、転送対象のデータ長N、および分割数kの関数で表し、総転送時間Ttotalが最小となる分割数を求めるようにしてもよい。
式(1)~(4)を一般化すれば、k分割の場合、
Ttotal=T1/k+k・T2+T3 …式(10)
となる。
式(7)~(9)から、T1=C1・N、T2=4×C2、T3=C1・f・Nであるので、式(10)は、式(11)のように表される。
Ttotal=C1・N/k+k×4×C2+C1・f・N …式(11)
Ttotalのkに対する最小値を求める。Ttotalをkで微分し、0とおくと、
-(C1・N)/k+4×C1・f=0 …式(12)
∴k=(N/4f)1/2 …式(13)
となる。
式(13)で求めたkは、非整数である可能性もあるので、この場合は求めたkの前後の整数のいずれかを分割数とすればよい。なお、N、fが予め限定された値であるような場合、算術演算の煩雑さを避けるために、N、fの組み合わせをテーブル化しておき、kを索引するようにして求めてもよい。
一方、図8は、バースト転送の第2のタイミングチャートである。第2のタイミングチャートは、送信側装置3が受信側装置4よりも低速なクロック周波数で動作している場合におけるバースト転送のタイミングチャートである。図7と同様、バースト長をFIFO記憶装置11に蓄積することができる最大のデータ数Nと同数のバースト長とした場合の総転送時間を表したものである。取りうるバースト長bを、N、N÷2、N÷4、N÷8としたとき、図8(b)は、バースト長をN÷2とし、2分割で受信する場合を表し、図8(b)、(c)は、同様にN÷4、N÷8とした場合を表している。
ところで、送信側の動作速度が低速なときは、図7のケースとは考え方が異なる。受信側が送信側のデータがFIFO記憶装置11に所定のバースト数だけ蓄積されるのを待つ状態になるため、最も高速に全データの転送を行うためには、送信側のデータが全てFIFO記憶装置11に蓄積されるのが終了すると同時に最後の1回の転送を開始しなければならない。この例を示したのが図8の各図である。図8(a)、(b)、(c)からも明らかなように、バースト長が短いほど総転送時間は短くなる。しかし、短くしすぎると、図8(d)に示すように非同期処理時間の総計のほうが長くなってしまい、最後の1回の転送が始まるまでタイムロスWが発生してしまう。したがって、非同期処理にかかる時間がデータ蓄積終了までの時間を超えないことという条件が加わる(詳細後述)。
ここで、送信側装置3からすべてのデータがFIFO記憶装置11に蓄積されるまでの時間をT4とする。また、リードコントローラA14が受信側装置4に最後の1転送の転送要求を出すとともに、リードコントローラB15に最後の1転送の送信指令を出し、それらが受信側装置4およびリードコントローラB15に認識されるまでの時間をT5とする。さらに、リードコントローラB15がFIFO記憶装置11から設定バースト長と同数の単位データを読み出して受信側装置4に送信し、受信側装置4がその単位データを受信するまでの時間をT6とする。
図8(a)、(b)、(c)、(d)のそれぞれにおける総転送時間を、t(11)、t(12)、t(13)、t(14)とする。t(11)、t(12)、t(13)、t(14)は、それぞれT4、T5、T6を用いて以下の式(14)~(17)のように表される。
図8(a)の場合、
t(11)=T4+T5+T6 …式(14)
図8(b)の場合、
t(12)=T4+T5+T6÷2 …式(15)
図8(c)の場合、
t(13)=T4+T5+T6÷4 …式(16)
図8(d)の場合、
t(14)=T4+T5+W+T6÷8 …式(17)
図7の場合と同様に、図6のフローチャートに沿って総転送時間を比較し、最も良いバースト長を求める。
次に、T4、T5、T6を実際に数値として求める例を以下に示す。本実施例では、送信側装置3よりも受信側装置4の方が高速に動作している。送信側装置3のクロック信号のサイクル時間をC3、受信側装置4のクロック信号のサイクル時間をC4とする。送信側装置3のクロックを基準に考えると、サイクル時間の比faは、以下の式(18)で表される。
fa=C4÷C3 …式(18)
式(18)は、送信側から見て受信側がfa倍(fa<1)の動作サイクル(周波数は逆数)で動作しているという意味になる。
T4、T5、T6は、図7の例と同じようにして、以下の式(19)~(21)で表すことができる。
T4=C3×N …式(19)
T5=C4+3×C4=4×C4 …式(20)
T6=C4×N=C3×fa×N …式(21)
また、前述した図8(d)に示すように非同期処理時間の総計の方が長くなってしまうケースを防ぐための制約として、受信側装置4の1回のバースト転送にかかる最短の時間T7よりも送信側装置3の1バースト分のデータ蓄積時間が長いことが必要となる。すなわち、T7は、t(n)のときのバースト長bを用いて、式(22)のように表すことができる。
T7<C3×b …式(22)
非同期処理にかかる時間T7は、1回の受信処理を最短で終える時間(転送要求発行に要する時間T5+1バースト分のデータ転送に要する時間C4×b+転送要求解除に要する時間C4×Z)であるから、式(23)が成り立つ。
T7=T5+C4×b+C4×Z …式(23)
式(22)、(23)から、式(24)が成り立つ。
C4×4+C4×b+C4×Z<C3×b
∴b>(4+Z)×C4/(C3―C4) …式(24)
よって、複数のデータに分割したバースト長bがクロック信号の速度比faから定まる所定値以上である条件、例えば式(24)を満たす条件を加えた、図6のフローチャートによって転送時間が最小となるバースト長bを決定すればよい。
以上の実施形態1に係るデータ転送装置1によれば、転送対象のデータを複数に分割して転送する場合において、データ一部が欠損したとしても、バースト長を調整することにより、送信しようとする単位データの数が足りなくなるという事態を避けることができる。その結果、データの受信待ち等によるデータ転送の中断を防ぐことができ、ひいては正しく転送されないデータを少なくすることができる。
このように、正しく転送されないデータを少なくすることは、重要であり、特に、転送対象のデータの一つ一つが安全上の観点から大きな意味を持つ場合には、極めて重要である。例えば、転送対象のデータが、自動車、ロボットなどの自動制御に用いられるデータ、または、防犯センサ、防犯カメラなどのデータである場合、正しく転送されないデータが少ないことは、これらの技術の信頼性向上につながるため、極めて重要である。
(実施形態2)
本願の一実施形態であるデータ転送方法について説明する。本実施形態に係るデータ転送方法は、送信側装置から受信側装置へ転送対象のデータを分割してバースト転送するデータ転送装置におけるデータ転送方法であって、入力された1つの転送対象のデータを記憶し、上記1つの転送対象のデータの一部が欠損していることを検知するまでは、上記1つの転送対象のデータを第1の分割数で分割した場合の分割データのデータ長である設定バースト長でデータ転送し、上記1つの転送対象のデータの一部が欠損していることを検知した場合に、当該一部が欠損した1つの転送対象のデータのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整する、データ転送方法である。
このような実施形態2に係るデータ転送方法によれば、実施形態1と同様、転送対象のデータを複数に分割して転送する場合において、データの一部が欠損したとしてもデータ転送の中断を防ぐことができる。
以上、本発明の各実施形態について説明したが、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。また、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。これらは全て本発明の範疇に属するものである。さらに文中や図中に含まれる数値やメッセージ等もあくまで一例であり、異なるものを用いても本発明の効果を損なうものではない。
1,2…データ転送装置
3…送信側装置
4…受信側装置
11,11a,11b…FIFO記憶装置
12…制御装置
13…ライトコントローラ
14…リードコントローラA
15…リードコントローラB
16…同期回路

Claims (6)

  1. 送信側装置から受信側装置へ転送対象のデータを分割してバースト転送するデータ転送装置であって、
    記憶装置と、
    制御装置と、を備え、
    前記制御装置は、
    入力された1つの転送対象のデータが前記記憶装置に記憶されるように前記記憶装置を制御する記憶処理と、
    前記1つの転送対象のデータの最後を検知するまでは、前記1つの転送対象のデータを第1の分割数で分割した場合の分割データのデータ長である設定バースト長でデータ転送が行われるように前記記憶装置を制御する第1の転送処理と、
    前記1つの転送対象のデータの最後を検知した場合に、前記1つの転送対象のデータのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整し、調整されたバースト長でデータ転送が行われるように前記記憶装置を制御する第2の転送処理と、
    を実行する、
    データ転送装置。
  2. 請求項1に記載のデータ転送装置において、
    前記送信側装置から、前記1つの転送対象のデータを構成する単位データと当該単位データが最後の単位データであるか否かを表すエンド信号とが、前記単位データごとに入力され、
    前記記憶処理は、
    前記1つの記転送対象のデータを構成する複数の単位データの各々について、前記単位データと当該単位データが最後の単位データであるか否かを示すフラグとが対応付けられて記憶されるように前記記憶装置を制御する処理であり、
    前記第1の転送処理は、
    前記記憶装置に記憶されており前記フラグを参照することにより特定される未送信の単位データの数が、前記設定バースト長以上である場合には、当該未送信の単位データが前記設定バースト長で前記受信側装置に送信されるように前記記憶装置を制御する処理であり、
    前記第2の転送処理は、
    前記未送信の単位データの数が前記設定バースト長未満である場合には、当該数の未送信の単位データが前記受信側装置に送信されるようにバースト長を調整し、当該未送信の単位データが調整されたバースト長で前記受信側装置に送信されるように前記記憶装置を制御する処理である、
    データ転送装置。
  3. 請求項2に記載のデータ転送装置において、
    前記記憶装置は、前記単位データに前記フラグが付帯されたデータを記憶する、
    データ転送装置。
  4. 請求項1に記載のデータ転送装置において、
    前記第2の転送処理において、前記バースト長を調整する際に、前記設定バースト長より小さい値の中から値が大きいほど優先順位が高くなるように1つまたは複数の値を選択し、選択された値を前記調整されたバースト長とする、
    データ転送装置。
  5. 請求項1に記載のデータ転送装置において、
    前記第1の分割数は、前記送信側装置の動作速度と、前記受信側装置の動作速度と、前記転送対象のデータのデータ長とに基づいて、前記転送対象のデータの転送に要する時間が、前記転送対象のデータを未分割で転送する場合よりも短くなるように求められる、
    データ転送装置。
  6. 送信側装置から受信側装置へ転送対象のデータを分割してバースト転送するデータ転送装置におけるデータ転送方法であって、
    入力された1つの転送対象のデータを記憶し、
    前記1つの転送対象のデータの最後を検知するまでは、前記1つの転送対象のデータを第1の分割数で分割した場合の分割データのデータ長である設定バースト長でデータ転送し、
    前記1つの転送対象のデータの最後を検知した場合に、前記1つの転送対象のデータのデータ長とデータ転送されるデータ長の総和とが一致するようにバースト長を調整する、
    データ転送方法。
JP2022020459A 2022-02-14 2022-02-14 データ転送装置およびデータ転送方法 Pending JP2023117735A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2022020459A JP2023117735A (ja) 2022-02-14 2022-02-14 データ転送装置およびデータ転送方法
TW112103581A TW202334837A (zh) 2022-02-14 2023-02-02 資料傳送裝置及資料傳送方法
US18/163,585 US20230297530A1 (en) 2022-02-14 2023-02-02 Data transfer device and data transfer method
DE102023200883.1A DE102023200883A1 (de) 2022-02-14 2023-02-03 Datenübertragungsvorrichtung und datenübertragungsverfahren
CN202310106090.1A CN116599625A (zh) 2022-02-14 2023-02-13 数据传送设备和数据传送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022020459A JP2023117735A (ja) 2022-02-14 2022-02-14 データ転送装置およびデータ転送方法

Publications (1)

Publication Number Publication Date
JP2023117735A true JP2023117735A (ja) 2023-08-24

Family

ID=87430693

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022020459A Pending JP2023117735A (ja) 2022-02-14 2022-02-14 データ転送装置およびデータ転送方法

Country Status (5)

Country Link
US (1) US20230297530A1 (ja)
JP (1) JP2023117735A (ja)
CN (1) CN116599625A (ja)
DE (1) DE102023200883A1 (ja)
TW (1) TW202334837A (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008287490A (ja) 2007-05-17 2008-11-27 Nec Electronics Corp データ転送システムおよびデータ転送方法

Also Published As

Publication number Publication date
US20230297530A1 (en) 2023-09-21
TW202334837A (zh) 2023-09-01
DE102023200883A1 (de) 2023-08-17
CN116599625A (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
US6389489B1 (en) Data processing system having a fifo buffer with variable threshold value based on input and output data rates and data block size
US11843529B2 (en) Slave-to-master data and out-of-sequence acknowledgements on a daisy-chained bus
JP3566304B2 (ja) バス制御装置及びバス制御システム
EP2494742B1 (en) Network control architecture and protocol for a distributed control, data acquisition and data distribution system and process
US20100161834A1 (en) User interface between a microcontroller and a flexray communications module; flexray user; and method for transmitting messages via such an interface
JP2012064021A (ja) 通信システム、マスター装置、及びスレーブ装置、並びに通信方法
US11971842B2 (en) Communication device, communication system, and communication method for transmitting a serial signal group conforming to a serial peripheral interface
JP2023117735A (ja) データ転送装置およびデータ転送方法
WO2011087076A1 (ja) 並列計算機システム、同期方法、及びプログラム
CN110830137B (zh) 一种基于srio的多节点时间同步控制系统及其同步控制方法
US11729030B2 (en) De-skew circuit, de-skew method, and receiver
JP4693576B2 (ja) データ転送制御装置、およびデータ転送制御方法
JP4372110B2 (ja) データ転送回路、それを利用したマルチプロセッサシステム、及びデータ転送方法
KR100296029B1 (ko) 에이티엠시스템에서 에이티엠스위치 보드와 에이티엠 입출력 카드간을 접속하는 장치 및 그 장치에서의 데이터 송수신 방법
JP5397614B2 (ja) I2cバス制御回路
JP2000099155A (ja) サーボドライバ制御方法
US11233514B2 (en) Semiconductor device including subsystem interfaces and communications method thereof
CN105556902B (zh) 经由通信装置的数据传输
EP3671720B1 (en) Real-time on-chip data transfer system
JP2008287490A (ja) データ転送システムおよびデータ転送方法
JP2007019974A (ja) ネットワーク装置
JP4481329B2 (ja) 音声データ送受信装置
JP2006345051A (ja) 非同期クロック利用の分散処理同期システム、マスターシステム及びクロック同期制御方法
JP2528947B2 (ja) 通信制御装置
JP2015122574A (ja) 送信回路および送受信回路