JP2006107023A - モジュール間通信におけるコマンドシリアライズ方法および装置 - Google Patents

モジュール間通信におけるコマンドシリアライズ方法および装置 Download PDF

Info

Publication number
JP2006107023A
JP2006107023A JP2004291324A JP2004291324A JP2006107023A JP 2006107023 A JP2006107023 A JP 2006107023A JP 2004291324 A JP2004291324 A JP 2004291324A JP 2004291324 A JP2004291324 A JP 2004291324A JP 2006107023 A JP2006107023 A JP 2006107023A
Authority
JP
Japan
Prior art keywords
transaction
command
ring
master
module
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.)
Withdrawn
Application number
JP2004291324A
Other languages
English (en)
Inventor
Takashi Fujiwara
隆史 藤原
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2004291324A priority Critical patent/JP2006107023A/ja
Publication of JP2006107023A publication Critical patent/JP2006107023A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)
  • Small-Scale Networks (AREA)
  • Multi Processors (AREA)

Abstract

【課題】 本発明では、複数のモジュールをリング状に接続したシステムにおいて、転送レートの悪化を最小限に抑えつつ、コマンドの発行順と処理順が異なることを防ぐことを目的としている。
【解決手段】 本発明では、マスタとなるモジュールに、リング内に存在するコマンドトランザクションの数を示す手段と、リングに対するコマンドトランザクションの発行を制限する手段と、コマンドトランザクションの発行を制限するかどうかを判断する手段とを持ち、コマンドトランザクションの発行を制限すると判断した場合には、当該コマンドトランザクションがリング内での唯一のコマンドトランザクションとなるようにコマンドトランザクションの発行を制限する。
【選択図】 図3

Description

本発明は情報処理装置のLSI内部の各モジュール間の通信に関し、より詳細には、各モジュールをリング上に接続しての通信に関するものである。
従来、複数のモジュール間をリング状に接続して通信を行う技術があった。このような方法では、モジュールに対して送られてきた命令をそのモジュールが解析を行ない、自分に対する命令であると判断した場合はその命令を行ない、その命令を次のモジュールに転送する。また、自分に対する命令でないと判断した場合はその命令を行わずに次のモジュールに転送する。ここで、自分に対する命令である場合には、その命令を次のモジュールに対して転送しないものや、命令を加工して転送するといった技術もある。
しかし、このような方法では命令を受け取ってから命令の判断を行ない、次のモジュールに転送するまでにはある程度の処理時間が必要で、数サイクルから数十サイクル要する場合が多い。
このようにリング状に接続されたシステムでは、モジュールの数が増えるとその分だけ命令の転送時間がかかり、その時間は各モジュールで要する処理時間に大きく影響される。
特開平6−77973号公報
本出願に係る発明は、LSI内の複数のモジュールをリング状に接続し、そのリングのマスタとなるモジュールが1つ存在し、リングで接続されるすべてのモジュールは次に接続されるモジュールへトランザクションを発行するマスタインターフェースと前に接続されているモジュールからトランザクションを受け取るスレーブインターフェースを持ち、マスタモジュールはリングに接続された他のモジュールに対してアクセスを行なうためにマスタインターフェースからコマンドトランザクションを発行する手段を持ち、スレーブとなる他のモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションに従って処理を行なうシステムにおいて、前記マスタとなるモジュールに、リング内に存在するコマンドトランザクションの数を示す手段と、リングに対するコマンドトランザクションの発行を制限する手段と、コマンドトランザクションの発行を制限するかどうかを判断する手段とを持ち、コマンドトランザクションの発行を制限しないと判断した場合には、コマンドトランザクションの発行を制限せずに、リング内に複数のコマンドトランザクションが存在することを許し、コマンドトランザクションの発行を制限すると判断した場合には、当該コマンドトランザクションがリング内での唯一のコマンドトランザクションとなるようにコマンドトランザクションの発行を制限することを特徴としている。
本出願に係る発明は、LSI内の複数のモジュールをリング状に接続し、そのリングのマスタとなるモジュールが1つ存在し、リングで接続されるすべてのモジュールは次に接続されるモジュールへトランザクションを発行するマスタインターフェースと前に接続されているモジュールからトランザクションを受け取るスレーブインターフェースを持ち、マスタモジュールはリングに接続された他のモジュールに対してアクセスを行なうためにマスタインターフェースからコマンドトランザクションを発行する手段を持ち、スレーブとなる他のモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションに従って処理を行なうシステムにおいて、前記マスタとなるモジュールに、リング内に存在するコマンドトランザクションの数を示す手段と、リングに対するコマンドトランザクションの発行を制限する手段と、コマンドトランザクションの発行を制限するかどうかを判断する手段とを持ち、コマンドトランザクションの発行を制限しないと判断した場合には、コマンドトランザクションの発行を制限せずに、リング内に複数のコマンドトランザクションが存在することを許し、コマンドトランザクションの発行を制限すると判断した場合には、当該コマンドトランザクションがリング内での唯一のコマンドトランザクションとなるようにコマンドトランザクションの発行を制限することを特徴としている。
以上説明したように、本発明によれば、通常はコマンドの発行順と処理順が異なることを許し、そのかわりにコマンドの先行発行を行ない、転送レートを高める。ただし、コマンドの発行順と処理順が異なっては困る場合にのみ、リングへのコマンドの先行発行を行なわず、リング内のコマンドを1つ以下に保つ。これにより、シリアライズ対象のトランザクションをソフトウェアの介在なしにハードウェアで自動的にシリアライズすることができるため、転送レートの悪化を最小限に抑えつつ、コマンドの発行順と処理順が異なることを防ぐことが可能となる。
<実施形態1>
上記した本発明の実施の形態について更に詳細に説明すべく、本発明の第1の実施例について、図面を参照して詳細に説明する。
図2には図1のシステムからアクセスリング111の部分を抽出した図を示す。まず、以下にこの図を用いて、アクセスリングに注目して、その通信方法を詳細に説明する。
400は図1のシステムブリッジ101のリングアクセスのインターフェース部分と等価であり、本構成でのアクセスリング111のマスタとなるマスタモジュールである。401〜403は図1のモジュール0、2、メモリコントローラ105などのリングアクセスインターフェース部分と等価であり、アクセスリング111のスレーブとなるスレーブモジュールである。
各モジュールはモジュール間で通信するためのマスタインターフェースとスレーブインターフェースを持っている。
マスタモジュール400のマスタインターフェースとスレーブモジュール0 401のスレーブインターフェースは通信経路0で接続されている。また、スレーブモジュール0 401のマスタインターフェースとスレーブモジュール1 402のスレーブインターフェースは通信経路1で接続されており、スレーブモジュール1 402のマスタインターフェースとスレーブモジュール2 403のスレーブインターフェースは通信経路2、スレーブモジュール2 403のマスタインターフェースとマスタモジュール400のスレーブインターフェースは通信経路3でそれぞれ接続されている。
このように構成されるリングでは、コマンド/リターントランザクションが転送される方向は決まっており、マスタモジュール400→スレーブモジュール0 401→スレーブモジュール1 402→スレーブモジュール2 403→マスタモジュール400という方向にのみ転送が可能である。
各通信経路は以下に示す信号によって構成されている。

Tsp Transaction Start Master I/F > Slave I/F
Rsp Return Start Master I/F > Slave I/F
Tbsyp Transaction Busy Master I/F > Slave I/F
uaddr_midp[5:0] Upper Address / Master ID Master I/F > Slave I/F
laddr_datap[15:0] Lower Address / Data Master I/F > Slave I/F
rd_not_wr Read(H)/Write(L) Master I/F > Slave I/F
errorp Error Master I/F > Slave I/F
srdyp Slave Ready Slave I/F > Master I/F

以下に各信号について説明する。

Tsp トランザクション Start Master I/F > Slave I/F
マスタインターフェースは通信相手のスレーブインターフェースからのsrdypがアサートされているのを確認して1サイクル間アサートを行ない、コマンドトランザクションをスタートする。
マスタは次のトランザクションをtbsypがHighの状態を検出後、開始することができる。すなわち、トランザクション間は少なくとも必ず1サイクル存在することになる。
Rsp Return Start Master I/F > Slave I/F
スレーブモジュールからのリターントランザクションを開始する信号。スレーブモジュールはライトが終了するか、リードデータの準備ができたら本信号をアサートし、リターントランザクションを開始する。アサートの条件はtspと同じ。
Tbsyp Transaction Busy Master I/F > Slave I/F
コマンド/リターントランザクションが行われている間アサートされる。トランザクションは3サイクルを要するので、常に3サイクル間アサートされる。本信号がディアサートされている時は通信経路はアイドル状態にある。
uaddr_midp[5:0] Upper Address / Master ID Master I/F > Slave I/F
Upper AddressとMaster ID(MID)のマルチプレックス信号。
1beat目にUpper Address、2beat目にMaster IDが入る。3beat目はDon't Care。
1beat目のUpper Addressの際はAddress[23:18]が入る。
2beat目のMaster IDの際はuaddr_midp[3:0]にMID[3:0]が入る。上位2bitはDon't Care。
MIDはシーケンスにはまったく影響がない。各スレーブモジュールは単にマスタインターフェースから受け取ったMIDを次へフォワードするだけである。
laddr_datap[15:0] Lower Address / Data Master I/F > Slave I/F
Lower AddressとDataのマルチプレックス信号。
1beat目にLower Address、2beat目にDataのMSB側の16bit、3beat目にDataのLSB側の16bitが入る。
1beat目のLower Addressの際はAddress[17:2]が入る。
2beat目のDataの際はData[31:16]が入る。
3beat目のDataの際はData[15:0]が入る。
rd_not_wr Read(H)/Write(L) Master I/F > Slave I/F
転送のリード / ライトを示す。
tbsypがアサートされている間アサートされる。その期間は変更してはならない。
High:リード
Low:ライト
Errorp Error Master I/F > Slave I/F
エラーをマスタモジュールに通知する。エラーが発生した場合、スレーブモジュールはリターントランザクション時にtbsypがアサートされている間本信号をアサートする。
Srdyp Slave Ready Slave I/F > Master I/F
トランザクションを受け取る側のスレーブインターフェースがトランザクションを送る側のマスタインターフェースからのトランザクションを受け取る準備ができていることを示す。本信号がアサートされていれば、マスタインターフェースはいつでもトランザクションを始めることができ、スレーブインターフェースは必ずそのトランザクションを受け取らなければならない。
srdypはトランザクションを受け取ると、一旦ディアサートされる。スレーブモジュールはコマンド トランザクションをデコードし、自分の範囲のアドレスにヒットした場合には、srdypをそのままディアサートし続け、次のトランザクションの受信を防がなければならない。
ヒットしなかった場合で、受け取ったトランザクションを次のモジュールへフォワードできた場合にはsrdypをアサートし、次のトランザクションを受け取る準備をする。
デコードはコマンドトランザクション中に終えるのが望ましい。
ヒットした場合はリターントランザクションを発行後、srdypを再びアサートする。
以上の信号は通信経路0〜3で共通であり、それぞれの通信経路での信号名は、信号名の最後に0〜3の番号が追加され、以下のようになる。
通信経路0の信号
tsp0, rsp0, tbsyp0, uaddr_midp0[5:0], laddr_datap0[15:0], rd_not_wr0, errorp0, srdyp0
通信経路1の信号
tsp1, rsp1, tbsyp1, uaddr_midp1[5:0], laddr_datap1[15:0], rd_not_wr1, errorp1, srdyp1
通信経路2の信号
tsp2, rsp2, tbsyp2, uaddr_midp2[5:0], laddr_datap2[15:0], rd_not_wr2, errorp2, srdyp2
通信経路3の信号
tsp3, rsp3, tbsyp3, uaddr_midp3[5:0], laddr_datap3[15:0], rd_not_wr3, errorp3, srdyp3
ライト及びリードのコマンドトランザクションはマスタモジュールが発行し、各スレーブモジュールはそれを次のスレーブモジュールにフォワードしていく。スレーブモジュールは受け取ったコマンドトランザクションは自分に対するアクセスであるないに関わらず次のスレーブモジュールにフォワードするので、コマンドトランザクションは最終的にマスタモジュールに戻ってくる。
スレーブモジュールはコマンドトランザクションをフォワードするのと同時にアドレスをデコードし、自分のアドレスにヒットしていればそれ以降のコマンドトランザクションの受信を行わず、自分が管理するレジスタに対してライトあるいはリード作業を行う。
それが終了すると、スレーブモジュールはリターントランザクションを発行する。
このリターントランザクションもそれ以降の各スレーブモジュールによりフォワードされ、最終的にマスタモジュールに到達する。
リターントランザクションを発行したスレーブモジュールは一時ストップしていたコマンドトランザクションの受信を再開する。
マスタモジュールはコマンドトランザクションを発行すると、必ずそのコマンドトランザクションと、そのコマンドトランザクションに対するリターントランザクションを受け取ることを期待している。
複数のコマンドトランザクションを発行した時にも、マスタモジュールは必ずコマンドトランザクションとリターントランザクションを交互に受け取るはずである。
コマンドトランザクションのアドレスにエラーがあり、どのスレーブモジュールも反応しなかったときには、マスタモジュールにリターントランザクションが戻ってこない。これにより、マスタモジュールはコマンドトランザクションにエラーがあったことを知ることができる。
コマンドトランザクションは最初マスタモジュールが発行する。スレーブモジュールはそれを受け取り即座に後のスレーブモジュールにフォワードする。コマンドトランザクションの発行はtbsyp = 0、srdyp = 1の時にのみ可能である。
コマンドトランザクションは最終的にマスタモジュールに到達する。
スレーブモジュールはコマンドトランザクションをフォワードするのと同時にアドレスをデコードする。
ライト時にはライトデータがデータ信号に送られる。リード時には送られない。
ライト/リードに関わらず、トランザクションは3beatで行われる。1beat目はアドレスの転送、2beat目はマスタIDとデータの転送、3beat目はデータの転送である。リード時にはデータ部分はDon't Careである。
スレーブモジュールはコマンドトランザクションを受け取り、自分のアドレスにヒットしていればそれ以降のコマンドトランザクションの受信を一時ストップし、自分が管理するレジスタに対してライトあるいはリード作業を行なう。
それが終了すると、スレーブモジュールはリターントランザクションを発行する。これはライト時にもリード時にも必ず発行される。
リターントランザクションはそれ以降の各スレーブモジュールにより無条件にフォワードされ、最終的にマスタモジュールに到達する。リターントランザクションのアドレスでコードは行われない。
マスタモジュールはこのリターントランザクションを受信することによってコマンドが正常に終了したと判断する。
リード時のリターントランザクションにはリードデータが送られる。ライト時にはデータは送られない
マスタモジュールがエラーを検知しかつ直ちに処理できない場合、 errorpをtbsypと同じタイミングでアサートしたコマンドトランザクションを発行する。errorpがアサートされているコマンドトランザクションに対してはスレーブモジュールは反応してはならない。エラーはコマンドトランザクションが再びマスタモジュールに戻ってきたタイミングで処理される。
スレーブモジュールがエラーを検知した場合、リターントランザクション発行時にerrorpをtbsypと同じタイミングでアサートする。
アドレスエラーが発生した場合は、コマンドトランザクションに対してどのスレーブモジュールも反応しないことになる。よってリターントランザクションは発生しない。
これはマスタモジュールが検知をする必要がある。
マスタモジュールはトランザクションの受信において、コマンドトランザクションを続けて受信した場合にエラーと判断できる。
また、コマンドトランザクションを受信してからタイムアウトカウンタによりカウントを行ない、ある一定時間の間にリターントランザクションを受信しなかった場合にも同様にエラーと判断することができる。
次にトランザクションのシーケンスについて詳しく説明する。
図5にはコマンドトランザクションのシーケンスを示す。サイクル1で通信経路がアイドル状態(tbsyp=Low)でスレーブインターフェースがレディ状態(srdyp=High)なので、マスタインターフェースはサイクル2でtspをHighにアサートしてコマンドトランザクションを開始することができる。このコマンドはライトであるのでrd_not_wrをLowにアサートする。スレーブインターフェースはtspのアサートによりコマンドトランザクションの開始を検出し、サイクル3でsrdypをLowにディアサートする。srdypのディアサートのタイミングは、続けてコマンドトランザクションが発行されるのを防ぐためなので、トランザクションが終了するまでであればいつでもかまわない。
uaddr_midp[5:0]、laddr_datap[15:0]には1ビート目から3ビート目までそれぞれ決められたアドレス、マスタID、ライトデータが乗せられている。サイクル4でコマンドトランザクションは終了し、サイクル5でtbsypがLowにディアサートされ、通信経路はアイドル状態に戻っている。
サイクル9ではsrdypがHighにアサートされ、スレーブインターフェースが再度レディ状態に戻っている。これを検出してマスタインターフェースはサイクル10でtspをHighにアサートし、リードコマンドトランザクションを開始している。ここではリードなので、rd_not_wrはHighにアサートされている。また、laddr_datap[15:0]の2ビート目と3ビート目にはデータが乗せられていない。
図6はマスタモジュール400から発行されたライトコマンドトランザクションを、通信経路0から受けたスレーブモジュール0 401が、ライトコマンドトランザクションを通信経路1にフォワードし、リターントランザクションを通信経路1に発行する際のシーケンスを示している。
前述した通信経路0でのライトコマンドトランザクションのシーケンスは前述したとおりである。スレーブモジュール0は通信経路0から送られてくるトランザクションを通信経路1へフォワードする。通信経路1のsrdyp1がHighにアサートされている場合、トランザクションは1サイクルのディレイで通信経路1へフォワードされる。一般的には、コマンドトランザクションのフォワードはアドレスのデコードが終了して、自分に対するアクセスではないことが確定した段階で次の経路にコマンドトランザクションをフォワードするため、アドレスデコードが終了するのを待つ必要があるので、1サイクルのディレイでフォワードすることは困難であった。本発明では、アドレスのデコードの結果によらずに必ずコマンドトランザクションをフォワードするプロトコルにしているため、デコードの終了を待つ必要がなく、フォワードのディレイを1サイクルに抑えることができる。これにより、リング接続の最大の欠点であるレイテンシの悪化を最小限に抑えることができる。
スレーブモジュール0 401は、srdyp0をディアサートして次のトランザクションの受信を防いでいる間に、アドレスのデコードを行い、自分に対するアクセスでなければ、srdyp0をアサートして次のトランザクションを受け付ければよい。
スレーブモジュール1 402がトランザクションを受信することができない場合は通信経路1のsrdyp1がLowにディアサートされている。この場合はスレーブモジュール0 401は受信したトランザクションをフォワードすることができないため、内部のバッファにトランザクションを格納し、srdyp1がアサートされた時点であらためてフォワードすることになる。
図6の場合は1サイクルのディレイでコマンドトランザクションがフォワードされている。また、デコードの結果、自分に対するアクセスであったので、srdyp0をディアサートしたまま、リターントランザクションを通信経路1に発行している。
サイクル9で通信経路1がアイドル状態でスレーブモジュール1 402がレディ状態なので、スレーブモジュール0 401はサイクル10でrspをHighにアサートし、リターントランザクションを開始する。シーケンスはコマンドトランザクションと同じで、tspをアサートするところをrspをアサートするというところが異なる。また、ライトコマンドに対するリターントランザクションではデータを乗せる部分はDon't Careでよい。
このようにして発行されたリターントランザクションはコマンドトランザクションと同様に通信経路を次々にフォワードされてゆき、最終的にマスタモジュールへ戻る。各スレーブモジュールはリターントランザクションを受信した場合はアドレスのデコードを行なわず、ヒットしなかったコマンドトランザクションと同様に次の通信経路にフォワードされる。
以上のようにマスタモジュール400から発行されたコマンドトランザクションは、ターゲットとなるスレーブモジュールでリターントランザクションが発行され、マスタモジュール400に戻ってくる時には必ずコマンドトランザクションの後にリターントランザクションも続けて送られてくる。
マスタモジュール400はコマンドトランザクションを発行した後、そのコマンドトランザクションとリターントランザクションが戻ってくる前に、次のコマンドトランザクションを発行することが可能である。これにより、リング内にパイプライン的にトランザクションを発行することが可能になる。
図7はマスタモジュール400から発行されたリードコマンドトランザクションを、通信経路0から受けたスレーブモジュール1が、リードコマンドトランザクションを通信経路1にフォワードし、リターントランザクションを通信経路1に発行する際のシーケンスを示している。
シーケンス的にはライトコマンドトランザクションとほとんど同じである。rd_not_wrが反転することと、リードコマンドトランザクションのデータ部がDon't Careとなり、リターントランザクションのデータ部にはリードデータが乗せられるということが異なるだけである。
以上、アクセスリングに注目して、一般的な通信方法を詳細に説明した。
図3には図2においてマスタモジュール400を詳細に説明した図を示す。
以下にこの図を用いて、コマンドの発行順と処理順が異なることを防ぐ方法を詳細に説明する。
モジュール間の通信経路の通信プロトコルは以上に説明したものと同じである。
コマンドの発行順と処理順が異なる原因は、リングのマスタモジュール400がリングに対してコマンドを先行発行するためである。リングの中に同時に2つ以上のコマンドが存在することになり、コマンドの処理順が異なってしまう場合が発生する。コマンドの処理順を守るためには、リングに対してコマンドを先行発行しないようにし、リング内に複数のコマンドが存在しないようにすればよい。
本発明では、転送レートの悪化を最小限に抑えるため、通常はコマンドの発行順と処理順が異なることを許し、そのかわりにコマンドの先行発行を行ない、転送レートを高める。ただし、コマンドの発行順と処理順が異なっては困る場合にのみ、リングへのコマンドの先行発行を行なわず、リング内のコマンドを1つ以下に保つ。本発明では今後このリング内のコマンドを1つ以下に保つ処理をシリアライズと呼ぶ。切り分けはトランザクションのアドレスによって行なう。本実施例では、あらかじめ設定されたアドレスの範囲に入っているトランザクションに対しては、ハードウェアで判断し、自動的にリング内のコマンドをシリアライズすることで、転送レートの悪化を最小限に抑える。
図3において、410はCPUなどと通信を行なうバスインターフェース、411はバスインターフェース410からの要求を受けてリングに対してコマンドを発行するリングマスタインターフェース、412はリングからのコマンド/リターントランザクションを受け取り、バスインターフェース410に通知するリングスレーブインターフェースである。413はリング内に存在するコマンドの数をカウントするためのコマンドカウンタで、リングマスタインターフェース411がリングにコマンドを発行するたびにインクリメントされ、リングスレーブインターフェース412がリングからコマンドを受け取るたびにデクリメントされる。414はバスインターフェース410がCPUから受け取ったトランザクションがシリアライズの対象であるかどうかを判断するためのアドレス範囲指定レジスタであり、アドレス範囲のトップとボトムを指定する。これはソフトウェアにより変更可能となっている。415はリングへのコマンドの発行を制御するためのウェイトフラグであり、このフラグがセットされている間はリングマスタインターフェース411はリングに対してコマンドを発行できない。リングマスタインターフェース411はシリアライズ対象のコマンドを発行する際にこのフラグをセットし、リングスレーブインターフェース412はリターントランザクションを受け取った時にこのフラグがセットされていればリセットする。
以下にマスタモジュール400の動作について説明する。
バスインターフェース410はCPUからトランザクションを受け取り、リングマスタインターフェース411に通知する。リングマスタインターフェース411はトランザクションのアドレスをアドレス範囲指定レジスタ414と比較し、シリアライズの対象アドレスでなければ、リングへコマンドトランザクションを発行し、コマンドカウンタ413をひとつインクリメントする。リングマスタインターフェース411はシリアライズの対象とならないトランザクションは、ウェイトフラグ415がセットされていなければ、コマンドカウンタ413の値にかかわらず次々にリングに先行発行をすることができ、発行の度にコマンドカウンタ413をインクリメントする。リングスレーブインターフェース412はリングからリターントランザクションを受け取るとコマンドカウンタ413をひとつデクリメントし、バスインターフェース410にリターントランザクションを送る。マスタフェース410はCPUに対してバスプロトコルに合わせたリターントランザクションを発行する。
ここでリングマスタインターフェース411が受け取ったトランザクションのアドレスがアドレス範囲指定レジスタ414の範囲内に入っていた場合、リングマスタインターフェース411はコマンドカウンタ413が0になるまでコマンドの発行を待つ。コマンドカウンタ413が0になると、リング内にはコマンドが存在していないことになり、リングマスタインターフェース411はリングに対してコマンドを発行する。それと同時にウェイトフラグ415をセットする。これにより、後からシリアライズ対称でないトランザクションがきた場合でも、そのトランザクションを待たせることができ、リング内にはシリアライズ対象のコマンドがひとつだけ存在することができる。リングスレーブインターフェース412はリターントランザクションを受け取るとコマンドカウンタ413をデクリメントし、ウェイとフラグ415をリセットし、バスインターフェース410にリターントランザクションを送る。
以上のような処理を行なうことで、シリアライズ対象のトランザクションのみをハードウェアで自動的にシリアライズすることができ、転送レートの悪化を最低限に抑えることが可能となる。
<実施形態2>
次に本発明の第2の実施例について説明する。
図4に本発明の第2の実施例でのマスタモジュール420を詳細に説明した図を示す。ここで421はCPUからのトランザクションがメモリトランザクションかIOトランザクションかを示すバストランザクションタイプ信号である。422はバスインターフェース410からリングマスタインターフェース411へトランザクションがメモリメモリトランザクションかIOトランザクションかを示すトランザクションタイプ信号である。
第1の実施例との違いはアドレス範囲指定レジスタ414が存在せず、メモリトランザクションかIOトランザクションかを切り分ける信号が存在している点である。
一般的にメモリ領域へのメモリトランザクションはトランザクションの発行順と実際の処理順が逆転しても良く、IO領域へのIOトランザクションはトランザクションの発行順どおりに処理される必要があることが多い。本実施例ではこのことを前提にし、メモリトランザクションはシリアライズを行なわず、IOトランザクションではシリアライズを行なうようにしている。
バスインターフェース410はCPUからトランザクションを受け取り、バストランザクションタイプ信号421がメモリトランザクションを示していると、リングマスタインターフェース411にトランザクションタイプ信号422をメモリトランザクションにして通知する。リングマスタインターフェース411はメモリトランザクションであるので、リングへコマンドトランザクションを発行し、コマンドカウンタ413をひとつインクリメントする。リングマスタインターフェース411はシリアライズの対象とならないトランザクションは、ウェイトフラグ415がセットされていなければ、コマンドカウンタ413の値にかかわらず次々にリングに先行発行をすることができ、発行の度にコマンドカウンタ413をインクリメントする。リングスレーブインターフェース412はリングからリターントランザクションを受け取るとコマンドカウンタ413をひとつデクリメントし、バスインターフェース410にリターントランザクションを送る。マスタフェース410はCPUに対してバスプロトコルに合わせたリターントランザクションを発行する。
ここでリングマスタインターフェース411がトランザクションを受け取った際、トランザクションタイプ信号422がIOトランザクションを示していた場合、リングマスタインターフェース411はコマンドカウンタ413が0になるまでコマンドの発行を待つ。コマンドカウンタ413が0になると、リング内にはコマンドが存在していないことになり、リングマスタインターフェース411はリングに対してコマンドを発行する。それと同時にウェイトフラグ415をセットする。これにより、後からシリアライズ対称でないトランザクションがきた場合でも、そのトランザクションを待たせることができ、リング内にはシリアライズ対象のコマンドがひとつだけ存在することができる。リングスレーブインターフェース412はリターントランザクションを受け取るとコマンドカウンタ413をデクリメントし、ウェイとフラグ415をリセットし、バスインターフェース410にリターントランザクションを送る。
以上のような処理を行なうことで、シリアライズ対象のトランザクションのみをハードウェアで自動的にシリアライズすることができ、転送レートの悪化を最低限に抑えることが可能となる。
本発明が特定の実施例に関して図示されかつ説明されたが、さらに他の修正および改善が可能であろう。例えば、ここに述べた通信経路の信号は、他の名称を持つが同じ基本的な機能を果すものとすることができる。各信号のビット幅、および他の値は設計に応じて変えることができる。任意の数のスレーブモジュールをリングに接続することができる。
また、エラーの発生がない設計を行なえば、エラー信号を省くことができる。
各モジュールを接続するデータ転送用のシステムバスは1つのバスで各モジュールを接続している必要はなく、間にバスブリッジを介して階層化されていてもよく、また、個別のバスで分離されて接続されていてもよい。さらには、接続の形態として、マルチプレックスバス、スター接続、などどのような形状で接続されていてもかまわない。
また、システム内にマスタが1つしか存在しないような場合、本発明のリング接続をレジスタアクセス用に限らず、システムバスの代わりとしてすべての通信に利用することも可能である。
さらに、本実施例では信号線数の削減のためにアドレス、データがマルチプレックスされているが、マルチプレックスの段数は任意の段数にしてもよい。たとえば、信号線を1本にし、シリアル通信のようにアドレス、データを送ることもできる。逆に、すべての信号線を用意すればマルチプレックスを行なう必要はなくなる。この場合、トランザクションは1サイクルで終了することになり、高速化が実現できる。
したがって、本発明は示された特定の形式に限定されるものではなく、かつ添付の特許請求の範囲において本発明の精神および範囲から離れることのない全ての修正をカバーすることを考えていることが理解されるべきである。
本発明の実施の形態の構成を示すブロック図。 図1のシステムからアクセスリングの部分を抽出した図。 本発明の第1の実施例のマスタモジュールを詳細に説明した図。 本発明の第2の実施例のマスタモジュールを詳細に説明した図。 コマンドトランザクションのシーケンス。 マスタモジュールから発行されたライトコマンドトランザクションを、通信経路0から受けたスレーブモジュール1が、ライトコマンドトランザクションを通信経路1にフォワードし、リターントランザクションを通信経路1に発行する際のシーケンス。 マスタモジュールから発行されたリードコマンドトランザクションを、通信経路0から受けたスレーブモジュール1が、リードコマンドトランザクションを通信経路1にフォワードし、リターントランザクションを通信経路1に発行する際のシーケンス。
符号の説明
100 CPU
101 システムバスブリッジ
102 アクセスされる対象であるスレーブモジュール0
103 アクセスされる対象であるスレーブモジュール1
104 アクセスされる対象であるスレーブモジュール2
105 メモリコントローラ
106 システムメモリ
110 LSI内の各モジュールを接続するシステムバス
111 各モジュールをリング状に接続するアクセスリング
120 リングブリッジ
400 第2の実施例でのアクセスリングのマスタとなるマスタモジュール
401 アクセスリングのスレーブとなるスレーブモジュール0
402 アクセスリングのスレーブとなるスレーブモジュール1
403 アクセスリングのスレーブとなるスレーブモジュール2
410 CPUなどと通信を行なうバスインターフェース
411 リングマスタインターフェース
412 リングスレーブインターフェース
413 コマンドカウンタ
414 アドレス範囲指定レジスタ
415 ウェイトフラグ
420 第2の実施例でのアクセスリングのマスタとなるマスタモジュール
421 バストランザクションタイプ信号
422 トランザクションタイプ信号

Claims (3)

  1. LSI内の複数のモジュールをリング状に接続し、そのリングのマスタとなるモジュールが1つ存在し、リングで接続されるすべてのモジュールは次に接続されるモジュールへトランザクションを発行するマスタインターフェースと前に接続されているモジュールからトランザクションを受け取るスレーブインターフェースを持ち、マスタモジュールはリングに接続された他のモジュールに対してアクセスを行なうためにマスタインターフェースからコマンドトランザクションを発行する手段を持ち、スレーブとなる他のモジュールは、スレーブインターフェースから受け取ったコマンドトランザクションに従って処理を行なうシステムにおいて、前記マスタとなるモジュールに、リング内に存在するコマンドトランザクションの数を示す手段と、リングに対するコマンドトランザクションの発行を制限する手段と、コマンドトランザクションの発行を制限するかどうかを判断する手段とを持ち、コマンドトランザクションの発行を制限しないと判断した場合には、コマンドトランザクションの発行を制限せずに、リング内に複数のコマンドトランザクションが存在することを許し、コマンドトランザクションの発行を制限すると判断した場合には、当該コマンドトランザクションがリング内での唯一のコマンドトランザクションとなるようにコマンドトランザクションの発行を制限することを特徴とする通信方法および装置。
  2. 請求項1に記載のコマンドトランザクションの発行を制限するかどうかを判断する手段が、コマンドトランザクションのアドレス情報により判断する手段であることを特徴とする請求項1に記載の通信方法および通信装置。
  3. 請求項1に記載のコマンドトランザクションの発行を制限するかどうかを判断する手段が、コマンドトランザクションがメモリアクセスかIOアクセスかにより判断する手段であることを特徴とする請求項1に記載の通信方法および通信装置。
JP2004291324A 2004-10-04 2004-10-04 モジュール間通信におけるコマンドシリアライズ方法および装置 Withdrawn JP2006107023A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004291324A JP2006107023A (ja) 2004-10-04 2004-10-04 モジュール間通信におけるコマンドシリアライズ方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004291324A JP2006107023A (ja) 2004-10-04 2004-10-04 モジュール間通信におけるコマンドシリアライズ方法および装置

Publications (1)

Publication Number Publication Date
JP2006107023A true JP2006107023A (ja) 2006-04-20

Family

ID=36376705

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004291324A Withdrawn JP2006107023A (ja) 2004-10-04 2004-10-04 モジュール間通信におけるコマンドシリアライズ方法および装置

Country Status (1)

Country Link
JP (1) JP2006107023A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009105540A (ja) * 2007-10-22 2009-05-14 Alaxala Networks Corp リングプロトコル高速切替方法およびその装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009105540A (ja) * 2007-10-22 2009-05-14 Alaxala Networks Corp リングプロトコル高速切替方法およびその装置

Similar Documents

Publication Publication Date Title
EP1133733B1 (en) Host controller interface descriptor fetching unit
US8913616B2 (en) System-on-chip-based network protocol in consideration of network efficiency
US7526592B2 (en) Interrupt control system and storage control system using the same
JP2001142842A (ja) Dmaハンドシェークプロトコル
US6282598B1 (en) PCI bus system wherein target latency information are transmitted along with a retry request
US20020152343A1 (en) Arbitration method for a source strobed bus
JPH05197647A (ja) 入力/出力装置及びデータ転送方法
JP2003296267A (ja) バスシステム及びバスシステムを含む情報処理システム
JP2008009817A (ja) 半導体装置及びデータ転送方法
KR20020009823A (ko) 버스 시스템 및 그 버스 중재방법
US6804736B2 (en) Bus access arbitration based on workload
US7779188B2 (en) System and method to reduce memory latency in microprocessor systems connected with a bus
JP2005293596A (ja) データ要求のアービトレーション
JPH11232214A (ja) 情報処理装置用プロセッサおよびその制御方法
JP2006107023A (ja) モジュール間通信におけるコマンドシリアライズ方法および装置
US20070127484A1 (en) Data transfer operations and buffer memories
US6701398B1 (en) Global bus synchronous transaction acknowledge with nonresponse detection
JP2006107022A (ja) 階層化されたリングによるモジュール間通信方法および装置
US7073047B2 (en) Control chip and method for accelerating memory access
JP4412852B2 (ja) 無応答検出を備えたグローバルバス同期トランザクション肯定応答
JP2003316724A (ja) 制御チップセット間の信号送信デバイス
JP2004127305A (ja) メモリ制御装置
JP2006109055A (ja) リング内の任意のモジュール間における通信方法および装置
JPH10283302A (ja) 複数のプロセッサに接続されたバスにデータを供給する方法およびシステム
JP2000082019A (ja) データ転送制御装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20071204