JP6058122B2 - バスマスタ、バスシステム及びバス制御方法 - Google Patents

バスマスタ、バスシステム及びバス制御方法 Download PDF

Info

Publication number
JP6058122B2
JP6058122B2 JP2015508129A JP2015508129A JP6058122B2 JP 6058122 B2 JP6058122 B2 JP 6058122B2 JP 2015508129 A JP2015508129 A JP 2015508129A JP 2015508129 A JP2015508129 A JP 2015508129A JP 6058122 B2 JP6058122 B2 JP 6058122B2
Authority
JP
Japan
Prior art keywords
transfer
command information
bus
slave
output
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.)
Expired - Fee Related
Application number
JP2015508129A
Other languages
English (en)
Other versions
JPWO2014156282A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6058122B2 publication Critical patent/JP6058122B2/ja
Publication of JPWO2014156282A1 publication Critical patent/JPWO2014156282A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、バスマスタ、バスシステム及びバス制御方法に関する。
近年プロセスの微細化が進み、LSIにCPU(Central Processing Unit)、グラフィックコントローラ及び数百キロバイト以上のキャッシュメモリを内蔵したシステムLSIが、通信機器又は画像処理装置等に搭載されている。このようなシステムLSIにおいては、システムバスにてモジュール間が接続され、データ転送が行われている。
システムLSI向けのオンチップ・バス規格としては、英国ARM社が策定したAXIプロトコルに従った構造が主流となっている。AXIプロトコルに従ったオンチップ・バスの構造では、CPU、グラフィックコントローラ、DMA(Dynamic Memory Accsess)コントローラ等に代表されるバスマスタと、キャッシュメモリ、DRAM(Dynamic Random Access Memory)等に代表される外部メモリ等のバススレーブとが、バスインターコネクトを介してポイントツーポイントに接続される。そして、バスマスタが、バススレーブへの書き込み動作又は読み出し動作を完了するには、バススレーブから書き込み応答チャネル信号又は読み出しデータチャネル信号が出力されるまで待たなければならない。このため、バスシステムとして、データ転送性能を向上するためには、バスマスタの待ち時間を少なくする必要がある。
ここで、特許文献1には、書き込みアクセスにおけるデータの書き込み結果を示す書き込み応答信号を受けた後に次のアクセスを行うバスマスタを備えるバスシステムが記載されている。そして、このバスシステムは、バスマスタから出力される書き込みデータ信号の終了を検出した場合に、ダミー書き込み応答チャネル信号をバスマスタに出力する信号生成部を備えている。
特許文献1に記載されたバスシステムにおけるバスマスタは、本来の書き込み応答チャネル信号を受け取る前に、ダミー書き込み応答チャネル信号を受け取るため、このダミー書き込み応答チャネル信号に応じて、次のアクセスの準備を開始することができる。このため、バススレーブにおける書き込みと、バスマスタにおける次のアクセスの準備とを並列に処理することができる。従って、同時に発行できる書き込みコマンド数が1つと規定されるバスマスタにおいては、書き込みアクセス後に連続して書き込み又は読み出しアクセスを行う場合における遅延時間を削減することができる。つまり、書き込みアクセスを行った場合において、データ転送性能を向上することができる。
特開2011−95978号公報(段落0032〜0052、第2図)
しかしながら、従来の技術では、ダミー書き込み応答チャネル信号の発行から本来の書き込み応答チャネル信号が得られるまでの期間、次の書き込みアドレスチャネル信号及び読み出しアドレスチャネル信号がマスクされるので、データ転送要求を連続して出力することができない。このため、AXIで規定されるアウトオブオーダ転送のような複数のデータ転送を並行して行うことで、データ転送性能を向上させる効果を得ることができない。
そこで、この発明は、上述のような課題を解決する為になされたものであり、転送要求のコマンド情報を送る順番を制御することで、データ転送性能を向上させることを目的とする。
本発明の一態様に係るバスマスタは、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、前記コマンドキューに記憶されている複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御部と、前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えることを特徴とする。
本発明の一態様に係るバスシステムは、少なくとも1つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、前記少なくとも1つのバスマスタは、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の1つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、前記コマンドキューに記憶されている複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御部と、前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えることを特徴とする。
本発明の一態様に係るバス制御方法は、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御過程と、前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有することを特徴とする。
本発明の一態様によれば、転送要求のコマンド情報を送る順番を制御することで、データ転送性能を向上させることができる。
実施の形態1〜3に係るバスシステムの構成を概略的に示すブロック図である。 実施の形態1におけるバスマスタ110の構成を概略的に示すブロック図である。 実施の形態1におけるコマンドキューに記憶される情報を示す概略図である。 実施の形態1におけるアドレスマップ情報の一例を示す概略図である。 実施の形態1における転送順序整合情報の一例を示す概略図である。 実施の形態1におけるコマンドキュー滞留時間比較部が転送順序整合情報を更新する処理を示すフローチャートである。 実施の形態1における転送要求出力順序制御部が転送順序整合情報を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。 実施の形態1における転送順序整合情報が更新される前の動作を示すタイムチャートである。 実施の形態1における転送順序整合情報が更新された後の動作を示すタイムチャートである。 実施の形態2におけるバスマスタの構成を概略的に示すブロック図である。 実施の形態2における転送応答入力時間記憶部に記憶されている転送応答入力時間情報の一例を示す概略図である。 実施の形態3におけるバスマスタの構成を概略的に示すブロック図である。 実施の形態3におけるバスマスタの動作を示すタイミングチャートである。 実施の形態4に係るバスシステムの構成を概略的に示すブロック図である。 実施の形態4におけるバスマスタの構成を概略的に示すブロック図である。 実施の形態4において、キュー数制御部がバスマスタから転送応答入力時間信号を得て、出力キュー数制御信号をバスマスタに与える際の処理を示すフローチャート(その1)である。 実施の形態4において、キュー数制御部がバスマスタから転送応答入力時間信号を得て、出力キュー数制御信号をバスマスタに与える際の処理を示すフローチャート(その2)である。 実施の形態4における転送要求出力順序制御部が、バススレーブへ出力する転送要求数の上限を抑制した場合のバスマスタの動作を示すタイミングチャートである。 実施の形態5に係るバスシステムの構成を概略的に示すブロック図である。 実施の形態5におけるバスマスタの構成を概略的に示すブロック図である。 実施の形態5における転送要求出力順序制御部が転送順序整合情報とバススレーブの最大転送要求数を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャート(その1)である。 実施の形態5における転送要求出力順序制御部が転送順序整合情報とバススレーブの最大転送要求数を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャート(その2)である。
実施の形態1.
図1は、実施の形態1に係るバスシステム100の構成を概略的に示すブロック図である。バスシステム100は、バスマスタ110A〜110C(特に各々を区別する必要がないときは、バスマスタ110という)と、バススレーブ130A〜130C(特に各々を区別する必要がないときは、バススレーブ130という)とが、バスインターコネクト150を介して接続されている。バスシステム100は、AXIプロトコルに従ったオンチップ・バスである。なお、図1の括弧内の符号は、実施の形態2及び3における構成を示している。
図1に示されているバスマスタ110において、「#」の後に記載された数字は、バスマスタ110を識別するためのバスマスタ識別情報としてのバスマスタ番号である。また、図1に示されているバススレーブ130において、「#」の後に記載された数字は、バススレーブ130を識別するためのバススレーブ識別情報としてのバススレーブ番号である。
バスマスタ110は、CPU、グラフィックコントローラ又はDMAコントローラ等である。また、バススレーブ130は、キャッシュメモリ又はDRAM等である。
まず、図1を用いて、AXIプロトコルについて説明する。
AXIプロトコルでは、バスマスタ110とバススレーブ130との間の転送は、経路毎に独立して行うことができる。例えば、図1において、バスマスタ110A及びバススレーブ130Aの間のデータ転送と、バスマスタ110B及びバススレーブ130Bとの間のデータ転送とは、独立して行うことができる。
また、AXIプロトコルでは、書き込みアドレスチャネル、書き込みデータチャネル、書き込み応答チャネル、読み出しアドレスチャネル、読み出しデータチャネルの5つチャネルが規定されている。そして、各チャネルは、同一経路内であっても独立して動作させることができる。例えば、書き込みアドレスチャネル信号が複数回連続して発行されてもよいし、書き込みチャネル信号の送受信と、読み出しチャネル信号の送受信とが同時に行われてもよい。即ち、AXIプロトコルでは、複数のデータ転送を並行して行うことができる。
さらに、各チャネルには転送毎に異なる転送IDが付与される。例えば、バスマスタ110Aが、異なる転送IDを使用して、読み出しアドレスチャネル信号をバススレーブ130A〜130Cの2つ以上に出力した場合、2つ以上のデータ転送が並行してバススレーブ130A〜130Cにて実行される。
ここで、バススレーブ130A〜130Cがバスマスタ110Aより入力された転送要求を処理するのに要する時間は、バススレーブ130A〜130C毎の動作周波数、及び、バススレーブ130A〜130Cを構成するメモリ等の読み出しサイクル数に依存する。従って、バススレーブ130A〜130Cがバスインターコネクト150を経由してバスマスタ110Aに転送応答を出力する順序は、バスマスタ110Aから転送要求を受け取った順序とは必ずしも一致しない。AXIプロトコルでは、このようなアウトオブオーダ転送に対応しており、複数のデータ転送を並行して効率よく行うことができる。
各チャネルでは、バスマスタ110とバススレーブ130との間で、Valid信号及びReady信号を用いて、ハンドシェイクが行われる。バスマスタ110は、書き込みアドレスチャネル、書き込みデータチャネル及び読み出しアドレスチャネルのValid信号を出力し、バススレーブ130は、それぞれに対応するReady信号を出力する。また、バススレーブ130は、書き込み応答チャネル及び読み出しデータチャネルのValid信号を出力し、バスマスタ110は、それぞれに応答するReady信号を出力する。なお、Valid信号及びReady信号には、それぞれを区別するために、チャネル毎に個別の名称が付けられる。
例えば、バスマスタ110Aからバススレーブ130Aへのデータ書き込みは、バスマスタ110Aが書き込みアドレスチャネル信号及び書き込みデータチャネル信号をそれぞれValid信号とともに出力する。バススレーブ130Aは、バスマスタ110Aから入力された書き込みアドレスチャネル信号及び書き込みデータチャネル信号を、Ready信号を出力して取り込み、書き込み処理を開始する。
バススレーブ130が書き込みに要する時間は、バススレーブ130を駆動する動作周波数及びデータの書き込みフロー等により、バススレーブ130毎に異なる。例えば、バススレーブ130AがSRAM(Static Random Access Memory)で構成される高速アクセス可能なキャッシュメモリの場合、動作周波数はバスインターコネクト150と同等又はそれ以上であり、バススレーブ130Aは、最速で1クロックサイクルで書き込み処理を完了する。
一方、バススレーブ130Aが外部とのシリアルインターフェース等である場合、インターフェースでの処理速度が比較的低速な上に、バス信号を複数回に分割する必要があるため、書き込み処理を完了するまでに多くのサイクル数を要する。
バススレーブ130Aは、書き込み処理を完了すると、バスマスタ110Aに書き込み応答チャネル信号をValid信号とともに出力する。バスマスタ110Aは書き込み応答チャネル信号をReady信号を出力して取り込み、一連の書き込み動作を完了する。
バスマスタ110Aからバススレーブ130Aへのデータ読み出しは、バスマスタ110Aが読み出しアドレスチャネル信号をValid信号とともに出力する。バススレーブ130Aは、バスマスタ110Aから入力された読み出しアドレスチャネル信号を、Ready信号を出力して取り込み、読み出し処理を開始する。
バススレーブ130Aが読み出しに要する時間は、前述と同様に、バススレーブ130A毎に異なる。バススレーブ130Aは、読み出し処理を完了すると、バスマスタ110Aに読み出しデータチャネル信号をValid信号とともに出力する。バスマスタ110Aは読み出しデータチャネル信号を、Ready信号を出力して取り込み、一連の読み出し動作を完了する。
図2は、実施の形態1におけるバスマスタ110の構成を概略的に示すブロック図である。バスマスタ110は、アクセス生成部111と、コマンドキュー112と、データキュー113と、転送要求出力順序制御部114と、転送要求出力部115と、転送応答入力部116と、アドレスマップ記憶部117と、コマンドキュー滞留時間比較部118と、転送順序整合情報記憶部119とを備える。
バスマスタ110は、例えば、CPU又はDMAコントローラのように、メモリ又は周辺機器へデータ転送を行うモジュールである。このため、アクセス生成部111は、データの転送要求を生成して、この転送要求をコマンドキュー112及びデータキュー113に与える。この転送要求は、書き込み又は読み出しの転送種別、転送対象アドレス及び転送データ長(バースト長ともいう)にて構成されるコマンド情報と、転送種別が書き込みの場合における書き込みデータとを含む。アクセス生成部111は、転送種別、転送対象アドレス及び転送データ長を含むコマンド情報をコマンドキュー112に記憶させ、書き込みデータをデータキュー113に記憶させる。言い換えると、アクセス生成部111は、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成して、このコマンド情報をコマンドキュー112に記憶させる。
コマンドキュー112は、アクセス生成部111で生成されたコマンド情報を記憶する。なお、コマンドキュー112は、コマンド情報の他、コマンド情報を管理するための管理情報も記憶する。図3は、コマンドキュー112に記憶される情報を示す概略図である。なお、図3では、コマンドキュー112のキュー構成数を「4」としており、キュー番号「0」〜「3」が割り当てられている領域へ情報を記憶する例を示しているが、バスマスタ110の動作速度又は転送データ量等によって、任意のキュー数にて構成してよい。
コマンド情報は、各々、アクセス生成部111より与えられた転送種別、転送対象アドレス及び転送データ長を含む。
転送種別は、データの転送を要求する転送要求の種別を示す情報である。ここでは、転送種別として、バススレーブ130にデータを書き込む「書き込み」と、バススレーブ130からデータを読み出す「読み出し」とがある。
転送対象アドレスは、転送要求の送り先のバススレーブ130のアドレスである。
転送データ長は、転送を行うデータのサイズを示す情報である。
管理情報は、コマンド情報毎に、キュー有効無効情報、転送要求出力情報及び転送IDを含む。
キュー有効無効情報は、対応するコマンド情報が有効か無効かを示す情報である。キュー有効無効情報が「無効」を示す場合には、対応するコマンド情報が削除されたことになる。
転送要求出力情報は、対応するコマンド情報が出力されたか否かを示す情報である。転送要求出力情報が「未」の場合には、対応するコマンド情報がバススレーブ130に送られていないことを示し、転送要求出力情報が「済」の場合には、対応するコマンド情報が送られたことを示す。
転送IDは、各々のコマンド情報を識別するための転送識別情報である。
コマンドキュー112では、コマンド情報がアクセス生成部111から与えられた順番に従って、各コマンド情報及びその管理情報がキュー番号「0」〜「3」の領域に記憶される。言い換えると、コマンドキュー112に最も早く与えられたコマンド情報及びその管理情報がキュー番号「0」の領域に格納され、次に与えられたコマンド情報及びその管理情報がキュー番号「1」の領域に格納される。即ち、キュー番号は、コマンド情報がアクセス生成部111から与えられた順番を示す。
転送要求出力順序制御部114は、コマンドキュー112に記憶されている複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する。例えば、転送要求出力順序制御部114は、転送順序整合情報記憶部119に記憶されている転送順序整合情報を参照して、出力対象のコマンド情報を選択することで、コマンドキュー112に記憶されたコマンド情報を出力する順序を制御する。より詳細には、転送要求出力順序制御部114は、コマンドキュー112に記憶されたコマンド情報を記憶された順にバスインターコネクト150に出力するか、後に記憶されたコマンド情報を前に記憶されたコマンド情報よりも先にバスインターコネクト150に出力するかを判定する。そして、転送要求出力順序制御部114は、その判定結果に応じて、出力するコマンド情報を選択する。選択されたコマンド情報は、転送要求出力部115よりバスインターコネクト150に出力される。なお、コマンド情報の転送種別が「書き込み」の場合は、データキュー113に記憶された書き込みデータも出力される。
転送要求出力部115は、転送要求出力順序制御部114で選択されたコマンド情報を、この選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブ130に出力する。転送要求出力部115での具体的な処理は、以下の通りである。
転送要求出力部115は、コマンドキュー112に記憶されたコマンド情報をバスインターコネクト150へ出力する際に転送IDを付与する。転送IDは、バスインターコネクト150にて書き込み、読み出し毎に独立して識別される。付与される転送IDは、コマンド情報が記憶されたコマンドキュー112のキュー番号がそのまま用いられてもよく、また、書き込み、読み出し毎に出力済みのコマンド情報の転送IDを除く最小の番号(「0」以上の整数)が用いられてもよい。なお、転送要求出力部115は、転送IDを付与した場合には、転送IDを付与したアドレス情報の管理情報として、付与した転送IDをコマンドキュー112に格納する。
転送要求出力部115は、コマンドキュー112に記憶されたコマンド情報の種別が「書き込み」である場合には、コマンドキュー112に記憶されたコマンド情報を示す書き込みアドレスチャネル信号WAC及びデータキュー113に記憶された書き込みデータを示す書き込みデータチャネル信号WDCを、Valid信号とともに、バスインターコネクト150に出力する。
また、転送要求出力部115は、コマンドキュー112に記憶されたコマンド情報の種別が「読み出し」である場合には、コマンドキュー112に記憶されたコマンド情報を示す読み出しアドレスチャネル信号RACを、Valid信号とともに、バスインターコネクト150に送る。
図1に示されているように、バスインターコネクト150には、バススレーブ130が接続されている。
バスインターコネクト150は、書き込みアドレスチャネル信号WAC、書き込みデータチャネル信号WDC及び読み出しアドレスチャネル信号RACを、転送対象アドレスに対応するバススレーブ130に転送する。バススレーブ130は、信号を受け取れることを示すReady信号を出力することで、これらの信号を受信する。なお、転送データ長が「1」よりも大きい場合には、書き込みデータチャネル信号WDCは、そのデータ長分出力される。最後の書き込みデータチャネル信号WDCを出力する際には、転送要求出力部115は、Valid信号とともにLast信号を出力する。
書き込みアドレスチャネル信号WAC及び書き込みデータチャネル信号WDCを受け取ったバススレーブ130は、書き込み応答チャネル信号WRCを、Valid信号とともにバスインターコネクト150に出力する。ここで、転送データ長が「1」よりも大きい場合には、最後の書き込みデータチャネル信号WDCの受信が完了した際に、バススレーブ130は、書き込み応答チャネル信号WRCを出力する。
また、読み出しアドレスチャネル信号RACを受け取ったバススレーブ130は、対応する読み出しデータを示す読み出しデータチャネル信号RDCを、Valid信号とともにバスインターコネクト150に出力する。ここで、転送データ長が「1」よりも大きい場合には、最後の読み出しデータチャネル信号RDCを出力する際に、バススレーブ130は、Valid信号とともにLast信号を出力する。
バススレーブ130が、転送要求を即時に受け付けられるかどうかは、個々のバススレーブ130毎にその動作周波数及び転送データの処理方法に依存して決定される。バススレーブ130にて即時に転送要求を受け付けられない場合は、そのバススレーブ130は、Ready信号を出力するタイミングを遅延させて、バスインターコネクト150への受け付けを延期する。バスインターコネクト150は、バススレーブ130から入力されたReady信号をバスマスタ110の転送要求出力部115に転送し、転送要求出力部115は、Ready信号が有効になるまで、信号の出力を維持する。
図2の説明に戻り、転送応答入力部116は、転送要求出力部115から出力されたコマンド情報に対する、バススレーブ130からの応答の入力を受ける。例えば、転送応答入力部116は、バスインターコネクト150にReady信号を出力することで、バスインターコネクト150より書き込み応答チャネル信号WRC又は読み出しデータチャネル信号RDCを受け取る。そして、転送応答入力部116は、受け取った信号の転送IDを、コマンドキュー滞留時間比較部118に通知する。
アドレスマップ記憶部117は、転送対象アドレスと、当該転送対象アドレスを有するバススレーブ130のバススレーブ番号とを含むアドレスマップ情報を記憶する。
図4は、アドレスマップ情報の一例を示す概略図である。
アドレスマップ情報117aは、ベースアドレス欄117bと、上限アドレス欄117cと、バススレーブ番号欄117dとを有するテーブル情報である。
ベースアドレス欄117bは、基準となる転送対象アドレスを格納する。
上限アドレス欄117cは、上限となる転送対象アドレスを格納する。
バススレーブ番号欄117dは、ベースアドレス欄117bに格納された基準となる転送対象アドレスと、上限アドレス欄117cに格納された上限となる転送対象アドレスとの間に含まれる転送対象アドレスが割り振られたバススレーブ130のバススレーブ番号を格納する。
即ち、ベースアドレス欄117bと、上限アドレス欄117cとで特定されるアドレスの範囲に含まれる転送対象アドレスは、そのレコードのバススレーブ番号欄117dで特定されるバススレーブ番号を有するバススレーブ130が保有するものとなる。従って、アドレスマップ情報117aで、転送対象アドレスが割り振られているバススレーブを特定することができる。
コマンドキュー滞留時間比較部118は、コマンドキュー112に記憶されたコマンド情報が出力されてから、このコマンド情報に基づく応答が取得されるまでの滞留時間を比較して、この滞留時間が長いコマンド情報の転送先であるバススレーブ130へのコマンド情報が、他のバススレーブ130へのコマンド情報よりも先に出力されるように、転送順序整合情報記憶部119に記憶されている転送順序整合情報を更新する。
例えば、コマンドキュー滞留時間比較部118は、コマンドキュー112に記憶されている管理情報及びコマンド情報を参照することで、転送応答入力部116から通知された転送IDに基づいて、応答のあったコマンド情報の転送対象アドレス及びキュー番号を特定する。そして、コマンドキュー滞留時間比較部118は、アドレスマップ記憶部117に記憶されているアドレスマップ情報117aを参照することで、特定された転送対象アドレスを有するバススレーブ130を特定する。次に、コマンドキュー滞留時間比較部118は、特定されたキュー番号よりも小さいキュー番号に割り当てられ、未だ有効なコマンド情報、言い換えると、応答のあったコマンド情報よりも先に出力され未だ応答のないコマンド情報があるか否かを確認する。このようなコマンド情報がある場合には、コマンドキュー滞留時間比較部118は、アドレスマップ記憶部117に記憶されているアドレスマップ情報117aを参照することで、このようなコマンド情報の転送先のバススレーブ130を特定する。そして、コマンドキュー滞留時間比較部118は、応答のあったコマンド情報から特定されたバススレーブ130へのコマンド情報よりも、応答のないコマンド情報から特定されたバススレーブ130へのコマンド情報が先に出力されるように、転送順序整合情報記憶部119に記憶されている転送順序整合情報を更新する。
転送順序整合情報記憶部119は、バススレーブ130の組み合わせ毎に、出力されたコマンド情報への応答が逆転したか否かを示す情報を含む転送順序整合情報を記憶する。
図5は、転送順序整合情報の一例を示す概略図である。
転送順序整合情報119aは、先行スレーブ列119bと、後続スレーブ行119cとを備えるテーブル情報である。
先行スレーブ列119bには、バスインターコネクト150に接続されているバススレーブ130のバススレーブ番号が、各々の欄に格納されている。
後続スレーブ行119cには、バスインターコネクト150に接続されているバススレーブ130のバススレーブ番号が、各々の欄に格納されている。
そして、先行スレーブ列119bに格納されたバススレーブ番号及び後続スレーブ行119cに格納されたそれぞれのバススレーブ番号に対応する欄119dには、先行スレーブ列119bに格納されたバススレーブ番号で特定されるバススレーブ130と、後続スレーブ行119cに格納されたバススレーブ番号で特定されるバススレーブ130との間の応答の取得順序を示す情報が格納される。
例えば、この欄119dが「正順」である場合には、対応する先行スレーブ列119bに格納されたバススレーブ番号で特定されるバススレーブ130へのコマンド情報が先に出力され、対応する後続スレーブ行119cに格納されたバススレーブ番号で特定されるバススレーブ130へのコマンド情報が後で出力されたときに、出力された順序で応答が取得されたことを示す。一方、この欄119dが「逆順」である場合には、対応する先行スレーブ列119bに格納されたバススレーブ番号で特定されるバススレーブ130へのコマンド情報が先に出力され、対応する後続スレーブ行119cに格納されたバススレーブ番号で特定されるバススレーブ130へのコマンド情報が後で出力されたときに、出力された順番とは逆の順番で応答が入力されたことを示す。
なお、バスシステム100の起動直後においては、転送順序整合情報119aの内容は、全ての組合せにおいて「正順」に初期化される。
図6は、コマンドキュー滞留時間比較部118が転送順序整合情報119aを更新する処理を示すフローチャートである。
ここで、コマンドキュー滞留時間比較部118は、コマンドキュー112に記憶されているコマンド情報及び管理情報を参照して、転送応答入力部116から通知された転送IDと一致する転送IDを有するキュー番号をQ(0≦Q≦(キュー数−1))として特定する。そして、コマンドキュー滞留時間比較部118は、管理情報において、特定されたキュー番号Qのキュー有効無効情報を「有効」から「無効」に更新し、また、転送要求出力情報を、出力済みを示す「済」から未出力を示す「未」に更新する。そして、コマンドキュー滞留時間比較部118は、図6に示すフローを開始する。
まず、コマンドキュー滞留時間比較部118は、アドレスマップ記憶部117に記憶されているアドレスマップ情報を参照して、キュー番号Qの転送対象アドレスをもとに、キュー番号Qの転送先のバススレーブ130を識別するためのバススレーブ番号を取得する。そして、コマンドキュー滞留時間比較部118は、取得されたバススレーブ番号を、後続スレーブ番号とする(S10)。
次に、コマンドキュー滞留時間比較部118は、コマンドキュー112から最も古いコマンド情報が格納されているキュー番号をL(0≦L≦(キュー数−1))として特定する(S11)。ここで最も古いコマンドとは、現在記憶されているコマンド情報の中で、一番早くコマンドキュー112に格納されたキュー番号を指す。
次に、コマンドキュー滞留時間比較部118は、キュー番号QとLを比較して、QとLとが等しいか否かを判断する(S12)。QとLが等しい場合(S12;Yes)には、それよりも前に記憶されたコマンド情報が存在しないので、コマンドキュー滞留時間比較部118は、転送順序整合情報を更新せず、フローを終了する。一方、QとLとが等しくない場合(S12;No)には、処理はステップS13に進む。
ステップS13では、コマンドキュー滞留時間比較部118は、アドレスマップ記憶部117に記憶されているアドレスマップ情報を参照して、キュー番号Lの転送対象アドレスをもとに、キュー番号Lの転送先のバススレーブ130を識別するためのバススレーブ番号を取得する。そして、コマンドキュー滞留時間比較部118は、取得されたバススレーブ番号を、先行スレーブ番号とする(S13)。
次に、コマンドキュー滞留時間比較部118は、先行スレーブ番号と、後続スレーブ番号とを比較して、これらが同一であるか否かを判断する(S14)。これらが同一である場合(S14;Yes)には、処理はステップS18に進み、これらが同一ではない場合(S14;No)には、処理はステップS15に進む。
ステップS15では、コマンドキュー滞留時間比較部118は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号Lのコマンド情報が「有効」か否かを判断する。そして、キュー番号Lのコマンド情報が「有効」である場合(S15;Yes)には、処理はステップS16に進み、キュー番号Lのコマンド情報が「無効」である場合(S15;No)には、処理はステップS17に進む。
ステップS16では、転送応答の入力順序が後続スレーブから先行スレーブとなっているため、転送要求(コマンド情報)の出力順序と、転送応答の入力順序とが一致しない。このため、コマンドキュー滞留時間比較部118は、転送順序整合情報記憶部119に記憶されている転送順序整合情報119aにおいて、対応する欄119dの値を「逆順」に更新する。そして、処理はステップS18に進む。
一方、ステップS17では、転送応答の入力順序が先行スレーブから後続スレーブとなっているため、コマンドキュー滞留時間比較部118は、転送順序整合情報記憶部119に記憶されている転送順序整合情報119aにおいて、対応する欄119dの値を「正順」に更新する。そして、処理はステップS18に進む。
ステップS18では、コマンドキュー滞留時間比較部118は、キュー番号Lに「1」をインクリメントして、ステップS12の処理に戻る。そして、コマンドキュー滞留時間比較部118は、キュー番号Lがキュー番号Qと一致するまでステップS12〜S18の処理を繰り返す。
例えば、コマンドキュー112に記憶されているコマンド情報及び管理情報が、図3に示されている情報であるものとする。そして、キュー番号「0」から「3」の順にコマンド情報が出力され、転送応答の入力順序がキュー番号「0」、「1」、「3」及び「2」の順番となった場合、先行スレーブ番号「3」のバススレーブ130Cよりも、後続スレーブ番号「1」のバススレーブ130Aからの転送応答がより早く入力されている。このような場合には、転送順序整合情報119aは、図6に示されているように、先行スレーブ番号「3」(バススレーブ#3)及び後続スレーブ番号「1」(バススレーブ#1)の組合せに対応する欄119dが「逆順」に更新され、それ以外の組み合わせに対応する欄119dは「正順」に更新される。
図7は、転送要求出力順序制御部114が転送順序整合情報119aを参照して、コマンドキュー112に記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。
まず、転送要求出力順序制御部114は、キュー番号「0」から順に、キュー状態が有効かつ転送要求出力済みでないキュー番号Xを探す(S20〜S22)。
具体的には、転送要求出力順序制御部114は、キュー番号の最小値である「0」をキュー番号Xとし、コマンドキュー112にコマンド情報を格納することのできる数をキュー数Nとする(S20)。ここで、図3に示された例では、キュー数Nは「4」である。
次に、転送要求出力順序制御部114は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号Xのコマンド情報が「有効」であるか否かを判断する(S21)。キュー番号Xのコマンド情報が「有効」である場合(S21;Yes)には、処理はステップS22に進み、キュー番号Xのコマンド情報が「無効」である場合(S21;No)には、処理はステップS29に進む。
ステップS22では、転送要求出力順序制御部114は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号Xのコマンド情報が出力済みであるか否かを判断する。キュー番号Xのコマンド情報が出力済みである場合(S22;Yes)には、処理はステップS29に進み、キュー番号Xのコマンド情報が出力済みではない場合(S22;No)には、処理はステップS23に進む。
ステップS23では、転送要求出力順序制御部114は、キュー番号(X+1)のコマンド情報が「有効」か否かを判断する。キュー番号(X+1)のコマンド情報が「有効」である場合(S23;Yes)には、処理はステップS24に進み、キュー番号(X+1)のコマンド情報が「無効」である場合(S23;No)には、処理はステップS28に進む。
なお、キュー番号(X+1)がキュー数N以上となった場合には、キュー番号(X+1)は、キュー番号「0」(=X+1−N)とする。以下のステップでも同様である。
ステップS24では、転送要求出力順序制御部114は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号(X+1)のコマンド情報が出力済みであるか否かを判断する。キュー番号(X+1)のコマンド情報が出力済みである場合(S24;Yes)には、処理はステップS28に進み、キュー番号(X+1)のコマンド情報が出力済みではない場合(S24;No)には、処理はステップS25に進む。
ステップS25では、転送要求出力順序制御部114は、コマンドキュー112に記憶された管理情報を参照して、キュー番号X及びキュー番号(X+1)の転送対象アドレスを特定する。そして、転送要求出力順序制御部114は、アドレスマップ記憶部117に記憶されているアドレスマップ情報117aを参照することで、キュー番号X及びキュー番号(X+1)の転送対象アドレスに対応するバススレーブ番号を取得する。そして、転送要求出力順序制御部114は、キュー番号(X+1)のバススレーブ番号を先行スレーブ番号、キュー番号Xのバススレーブ番号を後続スレーブ番号とする。
次に、転送要求出力順序制御部114は、転送順序整合情報119aを参照して、ステップS25特定した先行スレーブ番号及び後続スレーブ番号の組み合わせにおける転送要求出力順序と転送応答入力順序との関係が「逆順」であるか否かを確認する(S26)。その確認結果が「逆順」である場合(S26;Yes)には、処理はステップS27に進み、その確認結果が「正順」である場合(S26;No)には、処理はステップS28に進む。
ステップS27では、転送要求出力順序制御部114は、キュー番号(X+1)のコマンド情報を転送要求出力部115に与えて、このコマンド情報を出力させる。そして、処理はステップS28に進む。
ステップS28では、転送要求出力順序制御部114は、キュー番号Xのコマンド情報を転送要求出力部115に与えて、このコマンド情報を出力させる。そして、処理はステップS29に進む。
言い換えると、転送要求出力順序と転送応答入力順序との関係が「逆順」である場合には、キュー番号(X+1)のコマンド情報を出力した後に、キュー番号Xのコマンド情報が出力される。一方、転送要求出力順序と転送応答入力順序との関係が「正順」である場合には、キュー番号Xのコマンド情報が出力される。
次に、転送要求出力順序制御部114は、キュー番号Xに「1」をインクリメントする(S29)。そして、転送要求出力順序制御部114は、キュー番号Xがキュー数N以上となっていないかを確認する(S30)。キュー番号Xがキュー数N以上となっている場合(S30;Yes)には、転送要求出力順序制御部114は、フローを終了する。一方、キュー番号Xがキュー数N未満である場合(S30;No)には、処理はステップS21に戻る。なお、転送要求出力順序制御部114は、フローを終了した場合には、再び、図7のフローを開始する。
図7に示されているフローチャートにより、転送要求出力順序制御部114は、コマンドキュー112に記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを後続スレーブとして、応答が逆転したことを示す情報が転送順序整合情報119aに含まれている場合に、最初に記憶されたコマンド情報よりも先に、次に記憶されたコマンド情報を、出力対象のコマンド情報として選択することができる。
実施の形態1に係るバスシステム100におけるバスマスタ110の動作について、転送順序整合情報が更新される前と更新された後の違いを図8及び図9を用いて説明する。図8は、転送順序整合情報が更新される前、言い換えると、転送順序整合情報における全ての欄の値が「正順」になっている際の動作を示すタイムチャートである。図9は、転送順序整合情報が更新された後、言い換えると、転送順序整合情報が図5に示されている転送順序整合情報119aのようになっている際の動作を示すタイムチャートである。図8及び図9は、いずれもバスマスタ110がコマンドキュー112に記憶されている、図3に示されているコマンド情報及び管理情報に基づいて、複数のバススレーブ130へのデータ転送を順に処理する場合を示している。
図8及び図9において、時刻(T1)〜時刻(T13)は、同一の単位時間毎の時刻である。また、書き込みアドレスチャネル信号WACと書き込みデータチャネル信号WDCは、バスマスタから同じ時間間隔で出力されるものとする。さらに、図8及び図9では、バススレーブ130A及びバススレーブ130Bから転送応答を得るまでに要する時間は、2単位時間、バススレーブ130Cから転送応答を得るまでに要する時間は、7単位時間とする。
転送順序整合情報は、バスシステム100の起動直後又はリセット直後では、全ての欄が「正順」に初期化される。転送順序整合情報が初期化された状態では、転送要求出力順序制御部114は、コマンドキュー112に記憶された順序に従って、転送種別、転送対象アドレス及び転送データ長を取り出して、転送要求出力部115に与える。コマンドキュー112aに記憶されている情報が、図3に示されているようになっている場合、転送要求出力部115は、時刻(T1)、時刻(T3)、時刻(T5)及び時刻(T7)にて書き込みアドレスチャネル信号WACを、時刻(T2)、時刻(T4)、時刻(T6)及び時刻(T8)にて書き込みデータチャネル信号WDCをそれぞれ転送対象アドレスA21、転送対象アドレスA11、転送対象アドレスA31及び転送対象アドレスA12の順に発行する。
なお、転送対象アドレスA11及び転送対象アドレスA12は、図4に示されているアドレスマップ情報における、ベースアドレスA1S以上、上限アドレスA1E未満の値であるため、バススレーブ番号「1」のバススレーブ130Aが有する転送対象アドレスである。同様に、転送対象アドレスA21は、バススレーブ番号「2」のバススレーブ130Bが有する転送対象アドレスである。さらに、転送対象アドレスA31は、バススレーブ番号「3」のバススレーブ130Cが有する転送対象アドレスである。
コマンドキュー112のキュー番号2に記憶されたアドレスA31、即ち、バススレーブ130Cへの転送要求に対する応答は、転送要求を発行した時刻(T6)から7単位時間後の時刻(T13)に得られる。一方、キュー番号3に記憶されたアドレスA12、即ち、バススレーブ130Aへの転送要求に対しては、転送応答を得るまでに要する時間がバススレーブ130Cより小さく、時刻(T8)から2単位時間分経過した後、時刻(T10)にて転送応答が得られる。
コマンドキュー滞留時間比較部118は、時刻(T10)にてキュー番号3に対応するバススレーブ130Aからの転送応答を得ると、キュー番号0から順に転送先スレーブ番号を求める。この際、コマンドキュー滞留時間比較部118は、バススレーブ130Aのバススレーブ番号「1」を後続スレーブ番号とする。キュー番号0には、バススレーブ130B(バススレーブ番号「2」)へのコマンド情報が記憶されているので、バススレーブ番号「2」を先行スレーブ番号とする(図6のステップS13)。先行スレーブ番号「2」と後続スレーブ番号「1」とは異なるので、コマンドキュー滞留時間比較部118は、キュー番号0のコマンド情報が「有効」か「無効」かを確認する(図6のステップS15)。キュー番号0のコマンド情報に対する転送応答は、時刻(T4)に入力済みであり、時刻(T10)時点では、キュー番号0のコマンド情報は、無効化されている。従って、キュー番号0とキュー番号3の転送応答入力順序は、先行スレーブ番号のバススレーブ130Bが後続スレーブ番号のバススレーブ130Cよりも先となるため、転送要求出力順序と転送応答入力順序が一致する。このため、コマンドキュー滞留時間比較部118は、転送順序整合情報において、対応する欄の値を「正順」に更新する(図6のステップS17)。
次に、キュー番号1の転送先のバススレーブは、キュー番号3と同じくバススレーブ「1」のバススレーブ130Aであり(図6のステップS14でYes)、コマンドキュー滞留時間比較部118は、転送順序整合情報を更新しない。
次に、キュー番号2の転送先のバススレーブは、バススレーブ番号「3」のバススレーブ130Cであり、時刻(T10)時点では、まだキュー有効状態を維持している。従って、転送応答入力順序が後続スレーブ番号のバススレーブ130Aから先行スレーブ番号のバススレーブ130Cとなり、転送要求出力順序と転送応答入力順序が一致しないので、コマンドキュー滞留時間比較部118は、転送順序整合情報において、対応する欄の値を「逆順」に更新する(図6のステップS16)。時刻(T10)において更新された転送順序整合情報は、図5に示されている転送順序整合情報119aのように、先行スレーブ番号「3」と後続スレーブ番号「1」との組合せのみが「逆順」となっている。
次に、転送順序整合情報が、図5に示されている転送順序整合情報119aのように更新された後のバスマスタ110の動作を、図9を用いて説明する。
転送要求出力順序制御部114は、コマンドキュー112に記憶されたコマンド情報のうち最も古いキュー番号0のコマンド情報と、次に古いキュー番号1のコマンド情報が「有効」であり、かつ、転送要求出力済みではない状態であるので、それぞれの転送先バススレーブであるバススレーブ番号「2」及びバススレーブ番号「1」を取得する。そして、転送要求出力順序制御部114は、バススレーブ番号「2」を後続スレーブ番号、バススレーブ番号「1」を先行スレーブ番号とする(図7のステップS25)。そして、転送要求出力順序制御部114は、転送順序整合情報119aを参照して、先行スレーブ番号「1」と後続スレーブ番号「2」との組合せが「正順」であることを確認すると(ステップS26においてNo)、コマンドキュー112に記憶された順序通り、まずキュー番号0を選択する(図7のステップS28)。そして、転送要求出力順序制御部114は、転送対象アドレスA21に対して、時刻(T1)において、転送要求出力部115に書き込みアドレスチャネル信号WACを出力させる。
次に、転送要求出力順序制御部114は、コマンドキュー112に記憶されているコマンド情報及び管理情報を参照して、キュー番号1及びキュー番号2が「有効」、かつ、転送要求未出力であるので、キュー番号2の転送先バススレーブであるバススレーブ番号「3」を先行スレーブ番号、キュー番号1の転送先バススレーブであるバススレーブ番号「1」を後続スレーブ番号とする(図7のステップS25)。そして、転送要求出力順序制御部114は、転送順序整合情報119aを参照して、先行スレーブ番号「3」と後続スレーブ番号「1」との組合せが「逆順」であるので、バススレーブ130Cからの転送応答を得るまでに要する時間が、バススレーブ130Aからの転送応答を得るまでに要する時間よりも長いと判断する。このため、転送要求出力順序制御部114は、先にキュー番号2を選択して、転送要求出力部115に与える。そして、転送要求出力順序制御部114は、転送対象アドレスA31に対して、時刻(T3)において、転送要求出力部115に書き込みアドレスチャネル信号WACを出力させる。転送要求出力順序制御部114は、続いてキュー番号1を選択し、時刻(T5)において、転送要求出力部115に転送対象アドレスA11への書き込みアドレスチャネル信号WACを出力させる。
最後に、転送要求出力順序制御部114は、キュー番号3の次に転送要求が記憶されるキュー番号0のコマンド情報が無効であるので(図7のステップS23においてNo)、キュー番号3を選択する。そして、転送要求出力順序制御部114は、時刻(T7)において、転送要求出力部115にアドレスA12への書き込みアドレスチャネル信号WACを出力させる。
ここで、図9に示されているように、キュー番号2に記憶されたアドレスA31、即ち、バススレーブ130C(バススレーブ番号「3」)への転送要求に対する応答は、転送要求を出力した時刻(T4)から7単位時間後の時刻(T11)に得られる。このため、転送順序整合情報が初期化された状態での動作を示す図8と比較して、転送要求を処理し終えるまでに要する時間が2単位時間分短縮できる。
実施の形態1では、バススレーブ130A〜130Cに対する転送要求出力順序と転送応答入力順序を監視して、バススレーブ130間において転送応答を返すまでに要する期間が長いバススレーブ130を特定する。バスマスタ110は、連続する転送要求コマンドの対象バススレーブ130間の特定結果をもとに、転送応答を返すまでに要する期間が長いバススレーブ130への転送要求を他のバススレーブ130への転送要求よりも先に出力する。これにより、コマンドキューの順序通りに転送要求を発行した場合に比べて、当該バススレーブ130から転送応答を得る時間も前にシフトでき、転送要求がコマンドキューに滞留する時間を短くすることができる。バスマスタ110は、コマンドキューに蓄積された転送要求に対する処理を完了するまでにかかる時間を短くでき、データ転送を効率よく行うことができる。
また、あるバススレーブ130において、例えば、DRAMリフレッシュ、外部電源又はクロックの一端停止、又は、転送負荷の集中等で、一時的に転送処理時間が長くなると、このバススレーブ130への転送要求は、他のバススレーブ130への転送要求よりも先に出力されるようになる。その後、このバススレーブ130が通常状態に戻り、転送要求を先に出力する必要がなくなった場合にも、継続してコマンドキュー滞留時間の比較が行われ、転送順序整合情報が更新されるように実施の形態1は構成されている。このため、転送要求出力順序の不要な入れ換えが継続することなく、バススレーブ130の動作に適したバス転送を行うことができる。
実施の形態2.
図1に示されているように、実施の形態2に係るバスシステム200は、バスマスタ210A〜210C(特に各々を区別する必要がないときは、バスマスタ210という)と、バススレーブ130A〜130C(特に各々を区別する必要がないときは、バススレーブ130という)とが、バスインターコネクト150を介して接続されている。実施の形態2に係るバスシステム200は、バスマスタ210において、実施の形態1に係るバスシステム100と異なっている。
図10は、実施の形態2におけるバスマスタ210の構成を概略的に示すブロック図である。バスマスタ210は、アクセス生成部111と、コマンドキュー112と、データキュー113と、転送要求出力順序制御部214と、転送要求出力部115と、転送応答入力部116と、アドレスマップ記憶部117と、時間計測カウンタ220と、転送応答入力時間計測部221と、転送応答入力時間記憶部222とを備える。実施の形態2におけるバスマスタ210は、転送要求出力順序制御部214での処理の点、並びに、実施の形態1におけるコマンドキュー滞留時間比較部118及び転送順序整合情報記憶部119の代わりに、時間計測カウンタ220、転送応答入力時間計測部221及び転送応答入力時間記憶部222を備える点において、実施の形態1におけるバスマスタ110と異なっている。
時間計測カウンタ220は、予め定められた周期でカウントを行うことで、時間を計測するためのカウント値を生成する。そして、時間計測カウンタ220は、計測されたカウント値を転送応答入力時間計測部221に与える。
転送応答入力時間計測部221は、転送要求が出力されてから、その応答が入力されるまでの時間を転送応答入力時間として計測する。
例えば、転送応答入力時間計測部221は、転送要求出力部115が読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WACを出力すると、アドレスマップ記憶部117に記憶されているアドレスマップ情報117aを参照して、転送対象アドレスより転送先のバススレーブ130のバススレーブ番号を特定する。また、転送応答入力時間計測部221は、コマンドキュー112に記憶されているコマンド情報を参照して、転送要求出力部115が出力した読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WACの転送IDに対応する転送種別及び転送データ長を取得する。さらに、転送応答入力時間計測部221は、転送要求出力部115が読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WACを出力した際のカウント値を時間計測カウンタ220より取得する。そして、転送応答入力時間計測部221は、転送要求出力部115が出力した読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WACの転送IDとともに、特定されたバススレーブ番号、取得された転送種別、取得された転送データ長及び取得されたカウント値をメモリ221aに記憶しておく。その後、転送応答入力部116より読み出しデータチャネル信号RDC又は書き込み応答チャネル信号WRCの転送IDが通知されると、転送応答入力時間計測部221は、時間計測カウンタ220からカウント値を取得する。そして、転送応答入力時間計測部221は、転送IDが通知された際に取得されたカウント値から、メモリ221aに記憶されている、通知された転送IDの転送要求が出力された際のカウント値を減算することにより、転送先のバススレーブ130に対する転送応答入力時間を算出する。
転送応答入力時間計測部221は、算出された転送応答入力時間と、対応するバススレーブ番号、転送種別及び転送データ長とに基づいて、転送応答入力時間記憶部222に記憶されている転送応答入力時間情報を更新する。例えば、転送応答入力時間計測部221は、既に、対応するバススレーブ番号、転送種別及び転送データ長が転送応答入力時間情報に格納されている場合には、既に格納されている転送応答入力時間を削除して、今回算出された転送応答入力時間を格納する。一方、転送応答入力時間計測部221は、対応するバススレーブ番号、転送種別及び転送データ長が転送応答入力時間情報に格納されていない場合には、これらの情報と今回算出された転送応答入力時間とを格納する。
ここで、転送応答入力部116は、入力された信号が読み出しデータチャネル信号RDCである場合には、転送データ長分の読み出しデータチャネル信号RDCが入力されるのを待って、転送IDを転送応答入力時間計測部221に通知する。
転送応答入力時間記憶部222は、転送応答入力時間計測部221で計測された転送応答入力時間を、バススレーブ130毎に記憶する。ここで、転送応答入力時間は、バススレーブ130毎に、読み出しアドレスチャネル信号RADが出力されてから読み出しデータチャネル信号RDC(バースト読み出しの場合には最後の読み出しデータチャネル信号RDC)が入力されるまでの時間、又は、書き込みアドレスチャネル信号WACが出力されてから書き込み応答チャネル信号WRCが入力されるまでの時間を、時間計測カウンタ220の計測精度で表現した値である。
バススレーブ130毎に記憶される転送応答入力時間は、一般に、書き込みと読み出しとで異なり、書き込みにかかる時間と読み出しにかかる時間とが個別に記憶されてもよい。さらに、バースト転送が許容される場合には、転送データ数により転送応答入力時間が異なるため、転送データ数毎に個別に転送応答入力時間が記憶されてもよい。
図11は、転送応答入力時間記憶部222に記憶されている転送応答入力時間情報の一例を示す概略図である。図11に示されているように、転送応答入力時間情報222aは、バススレーブ番号を格納するバススレーブ番号欄222bと、転送種別を格納する転送種別欄222cと、転送データ長を格納する転送データ長欄222dと、転送応答入力時間を格納する転送応答入力時間欄222eとを有するテーブル情報である。図11では、転送先スレーブ毎に、書き込み、読み出し及びバースト長を区別して、転送応答入力時間を格納する転送応答入力時間情報222aが示されている。
転送要求出力順序制御部214は、転送応答入力時間情報222aに基づいて、出力対象のコマンド情報を選択することで、コマンドキュー112に記憶されたコマンド情報を送る順序を制御する。例えば、転送要求出力順序制御部214は、転送応答入力時間が長いバススレーブ130への転送を要求するコマンド情報が、他のバススレーブ130への転送を要求するコマンド情報よりも先に出力されるようにする。具体的には、転送要求出力順序制御部214は、転送応答入力時間情報222aを参照して、コマンドキュー112に記憶された最も古いコマンド情報に対応する、転送種別、転送データ長及び転送先のバススレーブ130のバススレーブ番号の転送応答入力時間を取得して、この転送応答入力時間を、先行バススレーブの応答時間とする。次に、転送要求出力順序制御部214は、転送応答入力時間情報222aを参照して、二番目に古いコマンド情報に対応する、転送種別、転送データ長及び転送先のバススレーブ130のバススレーブ番号の転送応答入力時間を取得して、この転送応答入力時間を、後続バススレーブの応答時間とする。
そして、転送要求出力順序制御部214は、先行バススレーブの応答時間が後続バススレーブの応答時間よりも短い場合には、最も古いコマンド情報が格納されているキュー番号を選択する。一方、転送要求出力順序制御部214は、先行バススレーブの応答時間が後続バススレーブの応答時間以上である場合には、二番目に古いコマンド情報が格納されているキュー番号を選択する。そして、転送要求出力順序制御部214は、選択されたキュー番号のコマンド情報を、転送要求出力部115に与える。転送要求出力部115は、与えられたコマンド情報の内容に従って読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WAC103を生成して、生成された信号を出力する。そして、転送要求出力順序制御部214は、生成された信号の出力後、選択されたキュー番号の転送要求出力情報を未出力から出力済みに更新する。
言い換えると、実施の形態2における転送要求出力順序制御部214は、転送応答入力時間記憶部222に記憶されている転送応答入力時間を参照して、コマンドキュー112に記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、最初に記憶されたコマンド情報よりも先に、次に記憶されたコマンド情報を、出力対象のコマンド情報として選択することができる。
実施の形態2においては、バスマスタ210は、転送応答が返されるまでに要する時間を記憶して、転送時間が長いバススレーブ130への転送要求を他のバススレーブ130よりも先に出力して、転送を完了する時刻を前にシフトできるので、バスマスタ210のデータ転送を効率よく行うことができる。
実施の形態3.
図1に示されているように、実施の形態3に係るバスシステム300は、バスマスタ310A〜310C(特に各々を区別する必要がないときは、バスマスタ310という)と、バススレーブ130A〜130C(特に各々を区別する必要がないときは、バススレーブ130という)とが、バスインターコネクト150を介して接続されている。実施の形態3に係るバスシステム300は、バスマスタ310において、実施の形態2に係るバスシステム200と異なっている。
図12は、実施の形態3におけるバスマスタ310の構成を概略的に示すブロック図である。バスマスタ310は、アクセス生成部111と、コマンドキュー112と、データキュー113と、転送要求出力順序制御部314と、転送要求出力部115と、転送応答入力部116と、アドレスマップ記憶部117と、時間計測カウンタ220と、転送応答入力時間計測部221と、転送応答入力時間記憶部222と、タイマカウンタ323とを備える。実施の形態3におけるバスマスタ310は、転送要求出力順序制御部314での処理の点、及び、タイマカウンタ323がさらに備えられている点において、実施の形態2におけるバスマスタ210と異なっている。
タイマカウンタ323は、転送要求出力順序制御部314からの指示に応じて、予め定められた周期でカウントを行うことで、時間を計測するためのカウント値を生成する。そして、タイマカウンタ323は、計測されたカウント値を転送要求出力順序制御部314に与える。
転送要求出力順序制御部314は、コマンドキュー112を参照する際にタイマカウンタ323にカウントを開始させる。そして、転送要求出力順序制御部314は、転送応答入力時間記憶部222に記憶されている転送応答入力時間情報222aを参照することで、コマンドキュー112に記憶された全てのコマンド情報の転送先のバススレーブ130、アクセス種別及びバースト長に対応する転送応答入力時間を取得する。そして、転送要求出力順序制御部314は、転送要求出力情報が未出力であるコマンド情報のうち、最も古いコマンド情報の転送先のバススレーブ130を先行スレーブ、最も古いコマンドキュー以降に記憶されたコマンド情報の転送先のバススレーブ130の各々を後続スレーブする。そして、転送要求出力順序制御部314は、以下の(1)式により、全ての後続スレーブの各々につき、値Trevを算出する。
Trev=FRT−(PRT+TT) (1)
ここで、FRTは、後続スレーブの転送応答入力時間であり、PRTは、先行スレーブの転送応答入力時間である。また、TTは、タイマカウンタ323のカウント値である。
そして、転送要求出力順序制御部314は、(1)式で求められたTrevの値が「0」よりも大きくなる後続スレーブがある場合には、その後続スレーブへのコマンド情報を格納したキュー番号を選択する。ここで、(1)式で求められたTrevの値が「0」よりも大きくなる後続スレーブが複数ある場合には、転送要求出力順序制御部314は、Trevの値が最大となるキュー番号を選択する。Trev>0となるキュー番号が1つも存在しない場合は、先行スレーブへの転送要求を選択する。
そして、転送要求出力順序制御部314は、選択されたキュー番号のコマンド情報を、転送要求出力部115に与える。転送要求出力部115は、与えられたコマンド情報の内容に従って読み出しアドレスチャネル信号RAC又は書き込みアドレスチャネル信号WACを生成して、生成された信号を出力する。そして、転送要求出力順序制御部314は、生成された信号の出力後、選択されたキュー番号の転送要求出力情報を未出力から出力済みに更新する。
なお、本実施の形態では、タイマカウンタ323と時間計測カウンタ220とは、同じ計測精度をもつものとする。タイマカウンタ323と時間計測カウンタ220との計測精度が異なる場合は、いずれかの計測精度に合わせた値にて、(1)式でTrevの値が算出される。
実施の形態3に係るバスシステム300におけるバスマスタ310の動作について、図13を用いて説明する。図13において、バススレーブ130から転送応答を得るまでに要する時間は、図8及び図9と同じく、バススレーブ130A(バススレーブ番号「1」)及びバススレーブ130B(バススレーブ番号「2」)では2単位時間、バススレーブ130C(バススレーブ番号「3」)では7単位時間とする。図13は、各バススレーブ130の転送応答入力時間が、図11に示されている転送応答入力時間情報222aに格納されている転送応答入力時間であった場合のバスマスタ310の動作を示すタイミングチャートである。なお、ここでは、タイマカウンタ323と、時間計測カウンタ220とにおける計測精度が、図13に示されている(T1)〜(T10)の1単位時間と等しいものとする。
時刻(T1)にて、転送要求出力順序制御部314は、転送応答入力時間情報222aを参照して、図3に示されているキュー番号0のコマンド情報における転送先のバススレーブ130B(バススレーブ番号「2」)、転送種別「書き込み」及び転送データ長「1」に対応する転送応答入力時間として、2単位時間を取得する。そして、この2単位時間を、先行スレーブの転送応答入力時間PRTとする。また、同様にして、転送要求出力順序制御部314は、キュー番号1のコマンド情報における転送先のバススレーブ130A(バススレーブ番号「1」)、転送種別「書き込み」及び転送データ長「1」に対応する転送応答入力時間として2単位時間を取得する。従って、キュー番号1に対応する後続スレーブの転送応答入力時間FRTは、「2」となる。さらに、同様にして、転送要求出力順序制御部314は、キュー番号2のコマンド情報における転送先のバススレーブ130C(バススレーブ番号「3」)、転送種別「書き込み」及び転送データ長「1」に対応する転送応答入力時間として7単位時間を取得する。従って、キュー番号2に対応する後続スレーブの転送応答入力時間FRTは、「7」となる。さらにまた、同様にして、転送要求出力順序制御部314は、キュー番号3のコマンド情報における転送先のバススレーブ130A(バススレーブ番号「1」)、転送種別「書き込み」及び転送データ長「1」に対応する転送応答入力時間として2単位時間を取得する。従って、キュー番号3に対応する後続スレーブの転送応答入力時間FRTは、「2」となる。
転送要求出力順序制御部314は、タイマカウンタ323に指示することにより、「0」からカウントを開始させる。そして、時刻(T1)では、先行スレーブの転送応答入力時間PRTが「2」、タイマカウンタ323のカウント値が「0」であるため、転送要求出力順序制御部314は、上記(1)式に基づいて、キュー番号1〜3のぞれぞれのFRTを用いて、下記の(2)式を満たすキュー番号があるか否かを確認する。
Trev=FRT−(2+0)>0 (2)
上述した例では、キュー番号2に対応する後続スレーブ転送応答入力時間が「7」で、(2)式を満たすため、転送要求出力順序制御部314は、時刻(T1)において、キュー番号2を選択する。転送要求出力部115は、転送要求出力順序制御部314の選択結果に基づいて、キュー番号2のコマンド情報に従って、書き込みアドレスチャネル信号WACを出力した後、キュー番号2の転送要求出力情報を未出力から出力済みに更新する。
次に、時刻(T3)では、時刻(T1)と同様に、最も古いコマンド情報は、キュー番号0のコマンド情報となる。このため、転送要求出力順序制御部314は、先行スレーブの転送応答入力時間PRTを「2」、タイマカウンタ323のカウント値を「3」として、上記(1)式に基づいて、キュー番号1及び3のぞれぞれのFRTを用いて、下記の(3)式を満たすキュー番号があるか否かを確認する。
Trev=FRT−(2+3)>0 (3)
図3に記載された例では、(3)式を満たし、かつ、転送要求出力情報が未出力であるキュー番号が存在しないので、転送要求出力順序制御部314は、時刻(3)において、キュー番号0を選択する。転送要求出力部115は、転送要求出力順序制御部314の選択結果に基づいて、キュー番号0のコマンド情報に従って、書き込みアドレスチャネル信号WACを出力した後、キュー番号0の転送要求出力情報を未出力から出力済みに更新する。
次に、時刻(T5)では、最も古いコマンド情報は、キュー番号1のコマンド情報となる。このため、転送要求出力順序制御部314は、先行スレーブの転送応答入力時間PRTを「2」、タイマカウンタ323のカウント値を「5」として、上記(1)式に基づいて、キュー番号3のFRTを用いて、下記の(4)式を満たすか否かを確認する。
Trev=FRT−(2+5)>0 (4)
図3に記載された例では、キュー番号3は、(4)式を満たさないため、転送要求出力順序制御部314は、時刻(T5)において、キュー番号1を選択する。転送要求出力部115は、転送要求出力順序制御部314の選択結果に基づいて、キュー番号1のコマンド情報に従って、書き込みアドレスチャネル信号WACを出力した後、キュー番号1の転送要求出力情報を未出力から出力済みに更新する。
次に、時刻(T7)では、転送要求出力順序制御部314は、キュー番号3を選択する。転送要求出力部115は、転送要求出力順序制御部314の選択結果に基づいて、キュー番号3のコマンド情報に従って、書き込みアドレスチャネル信号WACを出力した後、キュー番号3の転送要求出力情報を未出力から出力済みに更新する。
図13に示されているように、時刻(T1)、時刻(T3)、時刻(T5)及び時刻(T7)にて出力された転送要求に対する転送応答は、それぞれ時刻(T9)、時刻(T6)、時刻(T8)及び時刻(T10)に入力される。図13に示されている場合では、実施の形態1で説明した図8と比較して、転送要求を処理し終えるまでに要する時間が3単位時間分短縮できる。
以上のように、実施の形態3における転送要求出力順序制御部314は、転送応答入力時間記憶部222に記憶されている転送応答入力時間を参照して、コマンドキュー112に記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、最初に記憶されたコマンド情報よりも先に、その何れか一つのコマンド情報を、出力対象のコマンド情報として選択することができる。
実施の形態3に係るバスシステム300によれば、転送時間が長いバススレーブへの転送要求をほかのバススレーブよりも先に出力して、転送を完了する時刻を前にシフトできるので、バスマスタのデータ転送を効率よく行える。
また、実施の形態3に係るバスシステム300は、コマンドキューに格納された先行スレーブと後続スレーブの応答時間を比較する際に、比較を開始してからの経過時間を加味するため、先行スレーブへの転送完了が後続スレーブへの転送完了より遅くなることを回避することができる。
実施の形態4.
図14は、実施の形態4に係るバスシステム400の構成を概略的に示すブロック図である。バスシステム400は、バスマスタ410A〜410C(特に各々を区別する必要がないときは、バスマスタ410という)と、バススレーブ130A〜130C(特に各々を区別する必要がないときは、バススレーブ130という)とが、バスインターコネクト150を介して接続されている。また、バスマスタ410には、キュー数制御部470が接続されている。実施の形態4に係るバスシステム400は、バスマスタ410での処理の点、及び、キュー数制御部470がさらに備えられている点において、実施の形態3に係るバスシステム300と異なっている。
キュー数制御部470は、転送応答入力時間計測部221で計測された、バススレーブ130毎の転送応答入力時間に基づいて、転送応答入力時間が増加傾向にあるバススレーブ130へのコマンド情報の出力数を制限するように、転送要求出力順序制御部414に指示する。
例えば、キュー数制御部470は、バスマスタ410が出力する転送応答入力時間信号TRTを参照して、バスマスタ410に出力キュー数制御信号OQNを出力する。そして、キュー数制御部470は、バスマスタ410が出力する転送応答入力時間信号TRTに基づいて、各バススレーブ130の転送応答入力時間を監視して、転送応答入力時間が増加しているバススレーブ130への転送要求の出力数を減らすように、各バスマスタ410に出力キュー数制御信号OQNを与える。
図15は、実施の形態4におけるバスマスタ410の構成を概略的に示すブロック図である。バスマスタ410は、アクセス生成部111と、コマンドキュー112と、データキュー113と、転送要求出力順序制御部414と、転送要求出力部115と、転送応答入力部116と、アドレスマップ記憶部117と、時間計測カウンタ220と、転送応答入力時間計測部221と、転送応答入力時間記憶部222と、タイマカウンタ323とを備える。実施の形態4におけるバスマスタ410は、転送要求出力順序制御部414での処理の点において、実施の形態3におけるバスマスタ310と異なっている。なお、実施の形態4における転送応答入力時間記憶部222からの出力である転送応答入力時間信号TRTは、転送要求出力順序制御部414及びキュー数制御部470に与えられる。
転送要求出力順序制御部414は、実施の形態3に記載された転送要求出力順序制御部314と同様に、後続スレーブの転送応答入力時間FRTと、先行スレーブの転送応答入力時間PRTと、タイマカウンタ323のカウント値TTとに基づいて、出力するコマンド情報が格納されているキュー番号を選択するが、キュー数制御部470からの出力キュー数制御信号OQRに従って、各々のバススレーブ130へ出力するコマンド情報の出力数を制御する。
例えば、キュー数制御部470からの出力キュー数制御信号OQRにより、特定のバススレーブ130への転送要求の上限抑制が指示された場合には、転送要求出力順序制御部414は、その特定のバススレーブ130への転送要求を複数出力しないようにする。一方、キュー数制御部470からの出力キュー数制御信号OQRにより、特定のバススレーブ130への転送要求の上限抑制の解除が指示された場合には、転送要求出力順序制御部414は、通常動作に戻り、その特定のバススレーブ130への転送要求を複数出力することができる。
図16及び図17は、キュー数制御部470がバスマスタ410から転送応答入力時間信号TRTを得て、出力キュー数制御信号OQNをバスマスタ410に与える際の処理を示すフローチャートである。
キュー数制御部470は、予め定められた時間が経過する毎に転送応答入力時間信号TRTを参照する(S40)。次に、キュー数制御部470は、バススレーブ番号「S」に初期値として「1」を代入する(S41)。バススレーブ番号「1」は、バススレーブ130Aを示す。
次に、キュー数制御部470は、バススレーブ番号「S」で示されるバススレーブ130の転送応答入力時間の合計値であるTcurrent[S]の値を初期値「0」にする(S42)。
次に、キュー数制御部470は、バスマスタ番号「M」に初期値として「1」を代入する(S43)。バスマスタ番号「1」は、バスマスタ110Aを示す。
次に、キュー数制御部470は、バスマスタ番号「M」のバスマスタ410から送られてきた転送応答入力時間信号TRTに基づいて、バススレーブ番号「S」の転送応答入力時間を取得する(S44)。そして、キュー数制御部470は、取得された応答時間を値TRとする。ここで、転送応答入力時間が、転送種別及び転送データ長により区別されている場合には、キュー数制御部470は、区別された全ての転送応答入力時間の合計値を値TRとする。
次に、キュー数制御部470は、Tcurrent[S]の値に、値TRを加算する(S45)。
次に、キュー数制御部470は、バスマスタ番号「M」に「1」をインクリメントする(S46)。
そして、キュー数制御部470は、バスマスタ番号「M」がバスインターコネクト150に接続されているバスマスタ410の数以下であるか否かを判断する(S47)。バスマスタ番号「M」がバスマスタ410の数以下である場合(S47;Yes)には、処理は、ステップS44に戻る。一方、バスマスタ番号「M」がバスマスタ410の数よりも大きい場合(S47;No)には、処理は、図17のステップS48に進む。
ステップS42〜S47の処理により、キュー数制御部470は、バススレーブ番号「S」のバススレーブ130の転送応答入力時間の合計値を算出することができる。この合計値は、バスマスタ410が複数ある場合には、複数のバスマスタ410で算出された転送応答入力時間が合算されている。また、各々のバススレーブ130の転送応答入力時間が、転送種別及び転送データ長により区別されている場合には、転送種別及び転送データ長を区別せずに、各々のバススレーブ130の転送応答入力時間が合算される。
図17のステップS48では、キュー数制御部470は、メモリ470aから前回参照した、バススレーブ番号「S」の転送応答入力時間の合計値Tlast[S]を読み出す。そして、キュー数制御部470は、Tcurrent[S]の値がTlast[S]の値よりも大きいか否かを判断する。Tcurrent[S]の値がTlast[S]の値よりも大きい場合(S48;Yes)には、処理はステップS49に進み、Tcurrent[S]の値がTlast[S]の値以下の場合(S48;No)には、処理はステップS53に進む。
ステップS49では、キュー数制御部470は、バススレーブ番号「S」のバススレーブ130の転送応答時間が増加したと判断して、連続増加回数に「1」を加算して、連続減少回数の値を初期値「0」に戻す。
次に、キュー数制御部470は、連続増加回数が予め定められた第1閾値以上であるか否かを判断する(S50)。連続増加回数が第1閾値以上である場合(S50;Yes)には、処理はステップS51に進み、連続増加回数が第1閾値よりも小さい場合(S50;No)には、処理はステップS59に進む。
ステップS51では、キュー数制御部470は、バススレーブ番号「S」のバススレーブ130の転送負荷が高いと判断する。そして、キュー数制御部470は、出力する転送要求数の上限抑制を指示する出力キュー数制御信号OQNを全てのバスマスタ410に与える。
なお、このような指示を受けたバスマスタ410の転送要求出力順序制御部414は、バススレーブ番号「S」のバススレーブ130への転送要求が複数出力されないようにする。
次に、キュー数制御部470は、連続増加回数を初期値「0」に戻す(S52)。そして、処理はステップS59に進む。
一方、ステップS48において、Tcurrent[S]の値がTlast[S]の値以下と判断された場合(S48;No)には、処理はステップS53に進む。
ステップS53では、キュー数制御部470は、Tcurrent[S]の値がTlast[S]の値よりも小さい否かを判断する。Tcurrent[S]の値がTlast[S]の値よりも小さくない場合(S53;No)、即ち、Tcurrent[S]の値とTlast[S]の値とが同じ値である場合には、処理はステップS54に進む。また、Tcurrent[S]の値がTlast[S]の値よりも小さい場合(S53;Yes)には、処理はステップS55に進む。
ステップS54では、キュー数制御部470は、連続増加回数及び連続減少回数を初期値「0」に戻す。
一方、ステップS55では、キュー数制御部470は、バススレーブ番号「S」のバススレーブ130の転送応答時間が減少したと判断して、連続減少回数に「1」を加算して、連続増加回数の値を初期値「0」に戻す。
次に、キュー数制御部470は、連続減少回数が予め定められた第2閾値以上であるか否かを判断する(S56)。連続減少回数が第2閾値以上である場合(S56;Yes)には、処理はステップS57に進み、連続減少回数が第2閾値よりも小さい場合(S56;No)には、処理はステップS59に進む。
ステップS57では、キュー数制御部470は、バススレーブ番号「S」のバススレーブ130の転送負荷が下がったと判断する。そして、キュー数制御部470は、出力する転送要求数の上限抑制の抑制解除を指示する出力キュー数制御信号OQNを全てのバスマスタ410に与える。
なお、このような指示を受けたバスマスタ410の転送要求出力順序制御部414は、バススレーブ番号「S」のバススレーブ130から転送応答が得られるのを待つことなく、このバススレーブ130へ転送要求を出力させる。
次に、キュー数制御部470は、連続減少回数を初期値「0」に戻す(S58)。そして、処理はステップS59に進む。
ステップS59では、キュー数制御部470は、今回算出したTcurrent[S]の値により、メモリ470aに保存されているTlast[S]の値を更新する。
そして、キュー数制御部470は、バススレーブ番号「S」に「1」をインクリメントする(S60)。
次に、キュー数制御部470は、バススレーブ番号「S」がバススレーブ数以下であるか否かを判断する(S61)。そして、バススレーブ番号「S」がバススレーブ数以下である場合(S61;Yes)には、処理は図16のステップS42に進む。一方、バススレーブ番号「S」がバススレーブ数よりも大きい場合(S61;No)には、処理は図16のステップS40に進む。
図18は、転送要求出力順序制御部414が、バススレーブ130Aへ出力する転送要求数の上限を抑制した場合のバスマスタ410の動作を示すタイミングチャートである。
図18に示されているように、転送要求出力順序制御部414は、時刻(T5)において、バススレーブ130Aへの書き込みアドレスチャネル信号WACを出力した後、その転送応答が時刻(T8)において取得されるまで、このバススレーブ130Aへ転送要求を出力していない。このような動作を行うことにより、転送要求出力順序制御部414は、バススレーブ130Aへの転送要求が複数出力されている状態を回避して、バススレーブ130Aの転送負荷を下げる。
以上のように、実施の形態4に係るバスシステム400によれば、転送負荷が一時的に大きくなったバススレーブ130に対するバスマスタ410の転送要求数を制限して、そのバススレーブ130の転送負荷を下げるので、バスマスタ410が転送要求を出力してから転送応答を得るまでの時間を短くすることができる。
実施の形態5.
図19は、実施の形態5に係るバスシステム500の構成を概略的に示すブロック図である。バスシステム500は、バスマスタ510A〜510C(特に各々を区別する必要がないときは、バスマスタ510という)と、バススレーブ530A〜530C(特に各々を区別する必要がないときは、バススレーブ530という)とが、バスインターコネクト150を介して接続されている。また、バススレーブ530A〜530Cにおいて受け付けることのできる最大転送要求数が、それぞれ540A〜540C(特に各々を区別する必要がないときは、最大転送要求数540という)として、バスマスタ510に通知されている。実施の形態5に係るバスシステム500は、バスマスタ510での処理の点、及び、バススレーブ530から最大転送要求数540がバスマスタ510に通知されている点において、実施の形態1に係るバスシステム100と異なっている。ここで、最大転送要求数540は、各々のバススレーブ530が内部に蓄積し得る転送要求の最大数である。この最大転送要求数540は、システムで予め定められており、各々のバススレーブ530が備えるメモリ531A〜531C(特に各々を区別する必要がないときは、メモリ531という)に記憶されているものとする。
バススレーブ530は、バスマスタ510A〜510Cから発行される書き込みアドレスチャネル信号及び書き込みデータチャネル信号、又は、読み出しアドレスチャネル信号を、バスインターコネクト150を介して受け取る。バススレーブ530は、受け取ったチャネル信号に従って、制御信号を生成する。例えば、バススレーブ530がSRAMである場合は、SRAMの書き込み又は読み出し信号を生成し、書き込み又は読み出しが完了すると、書き込み応答チャネル信号又は読み出しデータチャネル信号を、バスインターコネクト150を経由してバスマスタ510に渡す。
また、バススレーブ530が外部とのシリアルインターフェース等である場合、書き込みアドレスチャネル信号及び書き込みデータチャネル信号、又は、読み出しアドレスチャネル信号をシリアル信号に変換して、外部デバイスへ出力し、外部デバイスから入力されるシリアル信号を書き込み応答チャネル信号又は読み出しデータチャネル信号に変換して、上記と同様にバスインターコネクト150に渡す。
バススレーブ530がバスマスタ510A〜510Cからの書き込みアドレスチャネル信号又は読み出しアドレスチャネル信号、即ち、転送要求を受け取ってから、書き込み応答チャネル信号又は読み出しデータチャネル信号を発行するまでの期間に、さらに別の書き込みアドレスチャネル信号又は読み出しアドレスチャネル信号がバススレーブ530に入力された場合、この信号をバススレーブ530が取り込むかどうかはバススレーブ530の構成によって異なる。例えば、バススレーブ530の内部に転送要求を蓄積するバッファを有しており、そのバッファへ転送要求を蓄積する空き容量が確保できる場合、バススレーブ530は、書き込みアドレスチャネル信号と書き込みデータチャネル信号、または読み出しアドレスチャネル信号を、Ready信号を出力して取り込み、バススレーブ530内部のバッファへ格納する。
一方、バススレーブ530が上述のようなバッファを備えていない、あるいはバッファに転送要求を蓄積するだけの空き容量が確保できない場合、バススレーブ530は、Ready信号を有効にせず、転送要求を取り込まないことをバスインターコネクト150に通知する。バスインターコネクト150は、バススレーブ530からこの取り込み保留の通知を受けると、保留が解除されるまでの期間、バススレーブ530への新たな転送要求を行わず、システム内のバススレーブ530への転送は滞留する。
バススレーブ530において実行中の転送が完了し、バススレーブ530が処理すべき転送要求がない、あるいは転送要求を蓄積するバッファの空き容量が確保できた時点で、バススレーブ530はReady信号を有効にして、取り込みを保留した転送要求をバスインターコネクト150から得る。
バスマスタ510は、バススレーブ530の最大転送要求数540を得て、コマンドキュー112に記憶されたコマンド情報を選択する。図20は、実施の形態5におけるバスマスタ510の構成を概略的に示すブロック図である。実施の形態5に係るバスマスタ510は、転送要求出力順序制御部514にバススレーブ530A〜530Cの最大転送要求数540A〜540Cが入力される点で、実施の形態1に係るバスマスタ110と異なっている。
図21及び22は、実施の形態5に係る転送要求出力順序制御部514が、コマンドキュー112に記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。図21及び22に示されているフローにおいて、図7に示されている処理と同様の処理については、図7と同じ符号が付されている。
図21におけるステップS20〜S22の処理については、図7におけるステップS20〜S22の処理と同様である。但し、図21のステップS22において、キュー番号Xのコマンド情報が出力済みではない場合(S22;No)には、処理はステップS62に進む。
ステップS62では、転送要求出力順序制御部514は、コマンドキュー112を参照して、キュー番号Xの転送対象アドレスをもつバススレーブ530と同じバススレーブ530への転送要求のうち、キューが有効かつ転送要求が出力済みのものの数を計数して、転送応答入力前アクセス数とする。そして、転送要求出力順序制御部514は、転送応答入力前アクセス数がバススレーブ530の最大転送要求数540に達していないかどうかを確認する。その数がバススレーブ530の最大転送要求数540に達していない場合(S26;Yes)には、処理はステップS23に進み、以降、実施の形態1における転送要求出力順序制御部114と同様に、次に記憶されたコマンドとの出力順序を決定する。一方、その数がバススレーブ530の最大転送要求数540に達している場合(S26;No)には、処理は図22のステップS63に進む。
図22のステップS63では、転送要求出力順序制御部514は、比較キューを特定するための変数Yに初期値(ここでは、「1」)を設定する。
次に、転送要求出力順序制御部514は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号(X+Y)のコマンド情報が「有効」であるか否かを判断する(S64)。キュー番号(X+Y)のコマンド情報が「有効」である場合(S64;Yes)には、処理はステップS65に進み、キュー番号(X+Y)のコマンド情報が「無効」である場合(S64;No)には、処理はステップS68に進む。
ステップS65では、転送要求出力順序制御部514は、コマンドキュー112に記憶されている管理情報を参照することで、キュー番号(X+Y)のコマンド情報が出力済みであるか否かを判断する。キュー番号Xのコマンド情報が出力済みである場合(S65;Yes)には、処理はステップS68に進み、キュー番号(X+Y)のコマンド情報が出力済みではない場合(S65;No)には、処理はステップS66に進む。
ステップS66では、転送要求出力順序制御部514は、コマンドキュー112に記憶されているコマンド情報を参照することで、キュー番号Xの転送対象バススレーブ530と、キュー番号(X+Y)の転送対象バススレーブ530とが同じであるか否かを判断する。これらが同じである場合(S66;Yes)には、処理はステップS68に進み、これらが異なる場合(S66;No)には、処理はステップS67に進む。
ステップS63〜S66までの処理により、転送要求出力順序制御部514は、キュー番号X以降に記憶された転送要求の内、キューが有効(S64;Yes)で、未出力(S65;No)で、キュー番号Xの転送対象バススレーブ530と異なるバススレーブ530への転送要求(S66;No)であるものを、キューに記憶された順に検出することができる。
そして、ステップS67では、キュー番号(X+Y)の転送対象アドレスをもつバススレーブ530と同じバススレーブ530への転送要求のうち、キューが有効かつ転送要求出力済みの数を計数する。そして、転送要求出力順序制御部514は、計数された数がそのバススレーブ530の最大転送要求数540に達していないかを確認する。計数された数がそのバススレーブ530の最大転送要求数540に達している場合(S67;No)には、処理はステップS68に進み、計数された数がそのバススレーブ530の最大転送要求数540に達していない場合(S67;Yes)には、処理はステップS70に進む。
ステップS68では、転送要求出力順序制御部514は、変数Yに「1」をインクリメントする。
そして、転送要求出力順序制御部514は、キュー番号(X+Y)がキュー数N以上となっていないかを確認する(S69)。キュー番号(X+Y)がキュー数N以上となっている場合(S69;Yes)には、処理は図21のステップS62に戻り、キュー番号(X+Y)がキュー数N以上となっていない場合(S69;No)には、処理はステップS64に戻る。
一方、ステップS70では、転送要求出力順序制御部514は、キュー番号(X+Y)のコマンド情報を転送要求出力部115に与えて、このコマンド情報を出力させる。言い換えると、キュー番号(X+Y)のコマンド情報をキュー番号Xのコマンド情報よりも先に出力させる。
以上のように、実施の形態5では、最大転送要求数に達したバススレーブ530へは、コマンド情報を出力せず、それよりも後に記憶されたコマンド情報の転送対象バススレーブ530が最大転送要求数に達していない場合は、そのバススレーブ530へのコマンド情報を先に出力する。これにより、バススレーブ530のデータ転送容量を超えないバス転送を行なうことができ、バススレーブ530が転送要求の取り込みを保留する状態を回避することができる。そして、バススレーブ530のデータ転送負荷状態に適したバス転送を行なうことができる。
以上、実施の形態5に係るバスマスタ510を実施の形態1に係るバスマスタ110をもとに説明したが、その他の実施の形態に係るバスマスタ210、310、410の転送要求出力順序制御部214、314、414に最大転送要求数540A〜540Cが入力される構成としてもよい。このように構成することで、バススレーブ530にて転送要求の取り込み保留が発生するコマンドを予めバスマスタ210、310、410が選択しないことで、バススレーブ530のデータ転送容量を超えないバス転送を行うことができる。
また、実施の形態5に係るバスシステム500では、バススレーブ530の最大転送要求数540をバスマスタ510に通知する構成としたが、このような例に限定されない。例えば、最大転送要求数540の代わりにバススレーブ530の転送要求受け付け状態を鑑みて、最大転送要求数から現在蓄積されている要求数を減算した値を、最大転送要求数としてバスマスタ510に逐次通知してもよい。逐次変化するバススレーブ530の最大転送要求数を参照することで、さらにバススレーブ530のデータ転送負荷状態に適したバス転送を行うことができる。
100,200,300,400,500 バスシステム、 110,210,310,410,510 バスマスタ、 111 アクセス生成部、 112 コマンドキュー、 113 データキュー、 114,214,314,414,514 転送要求出力順序制御部、 115 転送要求出力部、 116 転送応答入力部、 117 アドレスマップ記憶部、 118 コマンドキュー滞留時間比較部、 119 転送順序整合情報記憶部、 220 時間計測カウンタ、 221 転送応答入力時間計測部、 222 転送応答入力時間記憶部、 323 タイマカウンタ、 130,530 バススレーブ、 150 バスインターコネクト、 470 キュー数制御部。

Claims (17)

  1. データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
    前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
    前記コマンドキューに記憶されている複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御部と、
    前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
    を特徴とするバスマスタ。
  2. 前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
    前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
    前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
    前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
    を特徴とする請求項1に記載のバスマスタ。
  3. 前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項2に記載のバスマスタ。
  4. 前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
    を特徴とする請求項に記載のバスマスタ。
  5. 前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
    前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
    前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
    前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
    を特徴とする請求項1に記載のバスマスタ。
  6. 前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項5に記載のバスマスタ。
  7. 前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項5に記載のバスマスタ。
  8. 前記転送要求出力順序制御部は、キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限し、
    前記キュー数制御部は、前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示すること
    を特徴とする請求項5から7の何れか一項に記載のバスマスタ。
  9. 少なくとも1つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、
    前記少なくとも1つのバスマスタは、
    データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の1つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
    前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
    前記コマンドキューに記憶されている複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御部と、
    前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
    を特徴とするバスシステム。
  10. 前記バスマスタは、
    前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
    前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
    前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
    前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
    を特徴とする請求項9に記載のバスシステム。
  11. 前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報を前記先行スレーブとし、次に記憶されたコマンド情報を前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項10に記載のバスシステム。
  12. 前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
    を特徴とする請求項に記載のバスシステム。
  13. 前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
    前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
    前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
    前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
    を特徴とする請求項9に記載のバスシステム。
  14. 前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項13に記載のバスシステム。
  15. 前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
    を特徴とする請求項13に記載のバスシステム。
  16. 前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示するキュー数制御部をさらに備え、
    前記転送要求出力順序制御部は、前記キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限すること
    を特徴とする請求項13から15の何れか一項に記載のバスシステム。
  17. データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、
    前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、
    前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第1のコマンド情報に含まれている転送対象アドレスを有する第1のバススレーブよりも応答の遅い第2のバススレーブが有する転送対象アドレスを含む第2のコマンド情報を、出力対象のコマンド情報として、当該第1のコマンド情報よりも先に選択する転送要求出力順序制御過程と、
    前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有すること
    を特徴とするバス制御方法。
JP2015508129A 2013-03-25 2014-01-29 バスマスタ、バスシステム及びバス制御方法 Expired - Fee Related JP6058122B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013061994 2013-03-25
JP2013061994 2013-03-25
PCT/JP2014/051959 WO2014156282A1 (ja) 2013-03-25 2014-01-29 バスマスタ、バスシステム及びバス制御方法

Publications (2)

Publication Number Publication Date
JP6058122B2 true JP6058122B2 (ja) 2017-01-11
JPWO2014156282A1 JPWO2014156282A1 (ja) 2017-02-16

Family

ID=51623284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015508129A Expired - Fee Related JP6058122B2 (ja) 2013-03-25 2014-01-29 バスマスタ、バスシステム及びバス制御方法

Country Status (5)

Country Link
US (1) US20160062930A1 (ja)
JP (1) JP6058122B2 (ja)
CN (1) CN105190583A (ja)
DE (1) DE112014001621T5 (ja)
WO (1) WO2014156282A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6395647B2 (ja) * 2015-03-18 2018-09-26 ルネサスエレクトロニクス株式会社 半導体装置
DK3453143T3 (da) * 2016-05-02 2019-10-07 Sew Eurodrive Gmbh & Co Fremgangsmåde til initialisering af et bussystem og bussystem
US11385612B2 (en) * 2017-07-26 2022-07-12 Metropolitan Industries, Inc. System and method for digital motor identification and control
DE102017008186B4 (de) * 2017-08-31 2022-12-15 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Master eines Bussystems
JP6708677B2 (ja) * 2018-03-01 2020-06-10 ファナック株式会社 数値制御装置
KR20210012439A (ko) * 2019-07-25 2021-02-03 삼성전자주식회사 마스터 지능 소자 및 이의 제어 방법
KR20210097938A (ko) 2020-01-31 2021-08-10 에스케이하이닉스 주식회사 클록변조를 통해 리드 데이터의 신뢰성을 검증하는 메모리 장치 및 메모리 장치를 포함하는 메모리 시스템
KR20210026871A (ko) 2019-09-02 2021-03-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US12051470B2 (en) 2019-09-02 2024-07-30 SK Hynix Inc. Memory controller and operating method thereof
US11507310B2 (en) * 2019-09-02 2022-11-22 SK Hynix Inc. Memory controller and operating method thereof
KR20210061174A (ko) 2019-11-19 2021-05-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11501808B2 (en) 2019-09-02 2022-11-15 SK Hynix Inc. Memory controller and operating method thereof
TWI730465B (zh) * 2019-10-22 2021-06-11 新唐科技股份有限公司 串聯式雙向通訊電路及其方法
JP7476640B2 (ja) 2020-04-17 2024-05-01 株式会社リコー 情報処理装置、インタフェース制御回路および情報処理装置の制御方法
CN112395011B (zh) * 2020-11-24 2022-11-29 海宁奕斯伟集成电路设计有限公司 命令响应信息的返回方法、返回控制装置和电子设备
DE112021006204T5 (de) * 2021-02-03 2023-10-12 Mitsubishi Electric Corporation Daten-Transfereinrichtung, Daten-Transferverfahren und Daten-Transferprogramm

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04352272A (ja) * 1991-05-30 1992-12-07 Toshiba Corp 実行制御装置
JPH1145227A (ja) * 1997-07-29 1999-02-16 Nec Ic Microcomput Syst Ltd データ転送方式およびデータ転送装置
JP2006094331A (ja) * 2004-09-27 2006-04-06 Mitsubishi Electric Corp 光多分岐通信システム、親局装置及び子局装置
JP2008027247A (ja) * 2006-07-21 2008-02-07 Canon Inc メモリコントローラ
JP2009512011A (ja) * 2005-10-06 2009-03-19 ラテゼ・リモート・エム・ジー・エム・テイ・エル・エル・シー リソースコマンドメッセージおよび方法
JP2009093423A (ja) * 2007-10-09 2009-04-30 Delta Electronics Inc キュー機能を備えるプログラマブル論理制御装置とその方法
JP2009193260A (ja) * 2008-02-13 2009-08-27 Nec Corp ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
JP2012038325A (ja) * 2005-02-10 2012-02-23 Qualcomm Inc スイッチマトリックス経由のデータ転送を改善するフロー制御方法
JP2015506036A (ja) * 2011-12-15 2015-02-26 クゥアルコム・インコーポレイテッドQualcomm Incorporated コマンドプロセッサを備えるグラフィックス処理ユニット

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471590A (en) * 1994-01-28 1995-11-28 Compaq Computer Corp. Bus master arbitration circuitry having improved prioritization
JP4007642B2 (ja) * 1997-07-11 2007-11-14 富士通株式会社 携帯電話のデータ転送装置
US6396887B1 (en) * 1997-10-10 2002-05-28 Rambus Incorporated Apparatus and method for generating a distributed clock signal using gear ratio techniques
TWI282057B (en) * 2003-05-09 2007-06-01 Icp Electronics Inc System bus controller and the method thereof
US7805558B2 (en) * 2005-10-31 2010-09-28 Hewlett-Packard Development Company, L.P. Method and system of controlling transfer speed of bus transactions
JP2008293487A (ja) * 2007-04-27 2008-12-04 Panasonic Corp プロセッサシステム、バス制御方法および半導体装置
US8156273B2 (en) * 2007-05-10 2012-04-10 Freescale Semiconductor, Inc. Method and system for controlling transmission and execution of commands in an integrated circuit device
JP2011095978A (ja) * 2009-10-29 2011-05-12 Renesas Electronics Corp バスシステム及びバス制御方法
TWI547784B (zh) * 2011-04-22 2016-09-01 緯創資通股份有限公司 動態調整匯流排時脈的方法及其裝置
US20130191572A1 (en) * 2012-01-23 2013-07-25 Qualcomm Incorporated Transaction ordering to avoid bus deadlocks

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04352272A (ja) * 1991-05-30 1992-12-07 Toshiba Corp 実行制御装置
JPH1145227A (ja) * 1997-07-29 1999-02-16 Nec Ic Microcomput Syst Ltd データ転送方式およびデータ転送装置
JP2006094331A (ja) * 2004-09-27 2006-04-06 Mitsubishi Electric Corp 光多分岐通信システム、親局装置及び子局装置
JP2012038325A (ja) * 2005-02-10 2012-02-23 Qualcomm Inc スイッチマトリックス経由のデータ転送を改善するフロー制御方法
JP2009512011A (ja) * 2005-10-06 2009-03-19 ラテゼ・リモート・エム・ジー・エム・テイ・エル・エル・シー リソースコマンドメッセージおよび方法
JP2008027247A (ja) * 2006-07-21 2008-02-07 Canon Inc メモリコントローラ
JP2009093423A (ja) * 2007-10-09 2009-04-30 Delta Electronics Inc キュー機能を備えるプログラマブル論理制御装置とその方法
JP2009193260A (ja) * 2008-02-13 2009-08-27 Nec Corp ストレージシステム、ストレージ装置、優先度制御装置および優先度制御方法
JP2015506036A (ja) * 2011-12-15 2015-02-26 クゥアルコム・インコーポレイテッドQualcomm Incorporated コマンドプロセッサを備えるグラフィックス処理ユニット

Also Published As

Publication number Publication date
CN105190583A (zh) 2015-12-23
US20160062930A1 (en) 2016-03-03
DE112014001621T5 (de) 2015-12-24
WO2014156282A1 (ja) 2014-10-02
JPWO2014156282A1 (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
JP6058122B2 (ja) バスマスタ、バスシステム及びバス制御方法
JP4737438B2 (ja) 複数の処理ユニットでリソースを共有する情報処理装置
JP5666722B2 (ja) メモリ・インターフェース
WO2011089660A1 (ja) バス調停装置
CN105988968B (zh) 半导体装置
JP2008276391A (ja) メモリアクセス制御装置
JP2020109639A (ja) メモリ制御装置、メモリ制御方法及び画像形成装置
JP5911548B1 (ja) 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム
JP4902640B2 (ja) 集積回路、及び集積回路システム
JP5304815B2 (ja) マイクロコンピュータ
US11354263B2 (en) Bus system permitting parallel access by a master to a plurality of slaves and method of controlling the same
US9798492B2 (en) Semiconductor device including a plurality of function blocks
JP2007172112A (ja) メモリコントローラ
JP6142783B2 (ja) メモリコントローラ,情報処理装置及びメモリコントローラの制御方法
JP2009116702A (ja) 半導体集積回路
US7987437B2 (en) Structure for piggybacking multiple data tenures on a single data bus grant to achieve higher bus utilization
CN115964982A (zh) 加速器的拓扑结构
JP4843216B2 (ja) メモリ制御装置
JP7292044B2 (ja) 制御装置および制御方法
US20100131677A1 (en) Data transfer device and data transfer method
US20090106465A1 (en) Method of Piggybacking Multiple Data Tenures on a Single Data Bus Grant to Achieve Higher Bus Utilization
JP4593220B2 (ja) メモリアクセス制御方式と方法、及び共有メモリアクセス制御方式と方法
JP2004348745A (ja) 高速の帯域幅のシステムバスを仲裁するためのバスシステム及びその方法
JP6565729B2 (ja) 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
JP2006065453A (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: 20161108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161206

R150 Certificate of patent or registration of utility model

Ref document number: 6058122

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees