(57)【特許請求の範囲】
【請求項１】
ネットワークに接続された複数の処理装置間でパケット転送を行うマルチプロセッシングシステムにおける前記処理装置に設けられるパケット転送装置であって、メモリからデータを読み出してネットワークに送信する送信手段、及び、前記ネットワークからデータを受信し、前記メモリへ書き込む受信手段を具備し、前記送信手段及び受信手段は、前記データのパケットヘッダ内に示されたメモリアクセス属性、データ要素数、データタイプ、一次の距離、一次の要素数、及び、二次の距離を保持するレジスタを具備し、前記メモリアクセス属性がサブアレイ転送であり且つ前記一次の距離が連続の場合に、前記送信手段及び前記受信手段のメモリアクセスを、前記一次の要素数を参照して、前記一次の要素数が所定値よりも大きい場合にはブロックアクセスを選択し、前記一次の要素数が前記所定値よりも小さい場合にはランダムアクセスを選択する手段を設けたことを特徴とするパケット転送装置。
【請求項２】
サブアレイの一次の要素数を記憶するレジスタと、サブアレイの一次の要素数から任意の数を減算するカウンタと、サブアレイの一次の距離を保持するレジスタと、サブアレイの二次の距離を保持するレジスタと、サブアレイのベースアドレスを保持するレジスタと、データ要素数を記憶するレジスタと、サブアレイの一次の要素数から１を減算した値とサブアレイの一次の距離の掛け算を行う掛算器と、ブロックアクセスのブロック数又は、前記サブアレイの一次の距離又は、前記サブアレイの二次の距離又は、前記掛算器の値のいずれか一つの値を変化値として保持するレジスタと、リクエストアドレスを保持するレジスタであって最初に前記ベースアドレスが入力されるレジスタと、前記変化値を保持するレジスタの値と前記リクエストアドレスを保持するレジスタの値とを加算し、その値を前記リクエストアドレスを保持するレジスタに出力する加算器と、を具備することを特徴とするアドレス発生部を備えたことを特徴とする、請求項１記載のパケット転送装置。
【請求項３】
ボディデータのファイナルリクエストであることを検出するために、一次の要素数とボディ要素数との大小を比較する回路を有することを特徴とする、請求項２記載のパケット転送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列計算機システムなどのマルチプロセッシングシステムにおける処理装置間の通信技術に関するもので、特に、パケット転送の技術に関するものである。
【０００２】
【従来の技術】
図２に、マルチプロセッシングシステムの全体構成を示す。
図に示すマルチプロセッシングシステムは、ネットワーク１に接続された複数の処理装置２，３，４から構成されている。これら処理装置２，３，４間の通信において、ある処理装置２の記憶域の内容を他の処理装置３に転送する場合、送信側の処理装置２の送信部及び受信側の処理装置３の受信部でのメモリアクセス属性がサブアレイの場合、従来は各処理装置内のメモリに対しランダムアクセスを行っていた。
【０００３】
ここで、サブアレイについて図１０を用いて説明する。図は、Ｌ2 行×Ｌ1 列の配列データＡ1,1 〜ＡL2,L1 が、メモリ上の連続するアドレスに記憶される場合を示している。まず、第１行目の第１列目のデータのアドレスＡ1,1 から第Ｌ1 列目のデータのアドレスＡ1,L1までが連続し、そのアドレスに続いて、第２行目の第１列目のデータＡのアドレスＡ2,1 から第Ｌ1 列目のデータのアドレスＡ2,L1までが連続し、以下同様にして第Ｌ2 行目の第１列目のデータのアドレスＡL2,1から第Ｌ1 列目のデータのアドレスＡL2,L1 までが連続する。
【０００４】
図１０の破線で囲まれたａ2 行×ａ1 列のデータがサブアレイデータＳ1,1 〜Ｓa2,a1 を構成する。ここで、配列データの連続する各データ要素間のアドレス距離ＳＤ１を送信距離１又は受信距離１とする。また、サブアレイデータにおける各行の終端のデータのアドレスＳi,a1とその次の行の先頭のデータのアドレスＳi+1,1 までの行間距離ＳＤ２を送信距離２又は受信距離２とする。
【０００５】
図１１に従来の処理装置のアドレス発生部の送信部を示す。
アドレス発生部は、主記憶のパケットヘッダ部から各情報を取り出すと、データ要素数をレジスタＳＤＥＮに、送信ベースアドレスをレジスタＳＡＢに、送信距離１をレジスタＳＤ１に、送信距離２をレジスタＳＤ２に、送信距離１要素数をカウンタＳＳＣとレジスタＳＳＬに格納する。
【０００６】
ＳＩＡＲは変化値を保持するレジスタであり、ブロックアクセス時は６４（１ブロック＝６４Ｂ（Ｂ＝バイト））が選択され、ランダムアクセス時はＳＤ１（送信距離１）又はＳＤ２（送信距離２）が選択されてセットされる。ＳＬＡＨＲはリクエストアドレスを保持するレジスタであり、最初にベースアドレスが設定され、その後は、各サイクルごとに、変化値を保持するレジスタＳＩＡＲの値が加算された値がセットされる。
【０００７】
ここで、ランダムアクセスとは、一つのメモリリクエストに対して、データを単精度（４Ｂ）又は倍精度（８Ｂ）でリード／ライトするアクセスであり、メモリスループットは１τ当たり４Ｂか８Ｂしかない。また、メモリリクエストが増加し、他のメモリアクセスが増加すると他のメモリアクセス装置とのアクセス競合も増加する。
【０００８】
ブロックアクセスとは、一つのメモリリクエストに対してデータをブロック（ブロック長＝６４Ｂ又は３２Ｂ）でリード／ライトするアクセスであり、メモリスループットは１τ当たりブロック長である。また、ブロックアクセスはランダムアクセスに比べてメモリリクエストを減少させることもできる。
【０００９】
【発明が解決しようとする課題】
従来、メモリアドレス属性がサブアレイであるときはランダムアクセスが行われる。しかるに、ランダムアクセスは、スループットが低く、また、メモリリクエストが多いことにより、他メモリアクセス装置（ＣＰＵ，Ｉ／Ｏ，ベクトル装置）とのアクセス競合を起こし易い。
【００１０】
また、倍精度データを扱うために、ランダムアクセスが１メモリリクエスト当たり８Ｂデータをアクセスする構造にし、単精度データを扱う場合は不要なデータを捨てるような構造になっている場合に、連続した単精度データをアクセスすると、アドレスの上位ビットは８Ｂのバウンダリで２回に１回ぶつかってしまい、アクセスが待たされることがある。
【００１１】
本発明は、パケット転送において、メモリアクセス属性がサブアレイで転送を行う場合、サブアレイの１次の距離の要素数に応じて、最も読み出し又は書き込み速度の早いアクセスを行うことができるパケット転送方法又は装置を提供することを目的とするものである。
【００１２】
【課題を解決するための手段】
本発明は、上記問題を解決するため、ネットワークに接続された複数の処理装置間でパケット転送を行うマルチプロセッシングシステムにおいて、メモリアクセス属性がサブアレイ転送であり、かつサブアレイの一次の距離が連続である場合に、処理装置のアクセス方法としてブロックアクセス又はランダムアクセスの一方を選択してデータ転送を行う。
【００１３】
この時、サブアレイの一次の距離の要素数が多い場合は、ブロックアクセスを選択し、サブアレイの一次の要素数が少ない場合は、ランダムアクセスを選択する。また、サブアレイの一次の距離の要素数が少なくかつデータ要素が単精度の場合は、ランダムアクセスを行い、隣り合う二つの単精度データを一回のメモリリクエストでアクセスすることを選択する。
【００１４】
これにより、サブアレイの一次の距離の要素数が多い場合は、ブロックアクセスによりメモリをアクセスすることが可能となり、書き込み又は読出速度の早いアクセスを行うことができる。
また、上記方法を実施する装置は、処理装置に、メモリアクセス属性を認識する手段、データタイプを認識する手段、一次の距離を認識する手段、一次の距離の要素数を認識する手段、及び、メモリアクセス属性がサブアレイ転送であり、一次の距離が連続の場合に、データタイプ及び一次の距離の要素数を参照してブロックアクセスかランダムアクセスかを選択する手段を設けることにより実現できる。
【００１５】
さらに、アドレス発生を実行するアドレス発生部は、サブアレイの一次の要素数を記憶するレジスタ（ＳＳＬ）と、サブアレイの一次の距離の要素数から任意の数を減算するカウンタ（ＳＳＣ）と、サブアレイの一次の距離を保持するレジスタ（ＳＤ１）と、サブアレイの二次の距離を保持するレジスタと、サブアレイのベースアドレスを保持するレジスタと、データ要素数を記憶するレジスタと、サブアレイの一次の距離の要素数−１とサブアレイの一次の距離の掛け算を行う掛算器と、ブロックアクセスのブロック数又は、前記サブアレイの一次の距離又は、前記サブアレイの二次の距離又は、前記掛算器の値のいずれか一つの値を保持する変化値を保持するレジスタと、リクエストアドレスを保持するレジスタであって最初に前記ベースアドレスが入力されるレジスタと、前記変化値を保持するレジスタの値と前記リクエストアドレスを保持するレジスタの値とを加算し、その値を前記リクエストアドレスを保持するレジスタに出力する加算器とにより構成される。
【００１６】
前記アドレス発生部は、ランダムアクセスを行う場合、最初にベースアドレスをリクエストアドレスとして出力する。次いで、アドレスは一次の距離（ＳＤ１）ずつ加算されていく。一次の距離（ＳＤ１）のファイナルが検出されると、そのときは二次の距離（ＳＤ２）が加算される。
ブロックアクセスを行う場合は、最初にベースアドレスをリクエストアドレスとして出力する。次いで、アドレスはブロック長が加算されていく。一次の距離のファイナルが検出されると、掛算器により端数が算出され、それに二次の距離（ＳＤ２）が加算されて、次の行の先頭アドレスが算出される。
【００１７】
【発明の実施の形態】
次に本発明の実施の形態について、図を用いて説明する。
図２に、マルチプロセッシングシステムの全体構成を示す。図に示すマルチプロセッシングシステムは、ネットワーク１に接続された複数の処理装置２，３，４から構成されている。これら処理装置２，３，４間の通信において、ある処理装置２の記憶域の内容を他の処理装置３に転送する場合、送信処理装置２は、各種情報を含むヘッダ部と、ヘッダ部で指定される量のボディデータとを含むパケットをネットワーク１に対して発信する。ネットワーク１は、パケットに含まれる受信処理装置指示に従ってネットワークの接続を行う。受信処理装置３は、ヘッダ部に含まれるデータの受信処理におけるメモリアクセス属性の情報を参照して、ボディデータを、受信処理装置のメモリに格納する。
【００１８】
リクエスト元からメモリまでのブロック図は図３のようになる。受信処理装置３のリクエスト元１１は、送信処理装置２のリクエスト調停１４にリクエスト２４（アドレス、ブロックアクセス・ランダムアクセスの情報、ストア時の有効バイト情報）を送る。リクエスト調停１４は、リクエスト元１１からのリクエスト２４と他リクエスト元１２（他の処理装置４）からのリクエスト２５との優先順位を決定し、メモリ１５にメモリリクエスト２８を送る。
【００１９】
メモリ１５においては、リクエストがストアの時は、対応するアドレスの位置に、リクエスト元１１からリクエスト元ストアデータ２１がバッファ１３に送られ、有効バイトのストアデータ２６をデータ１６に書き込む。フェッチ時には、６４Ｂバウンダリのフェッチデータ２７をバッファ１３に取り込んでしまい、そこから有効なリクエスト元フェッチデータ２２だけをリクエスト元１１に取り込む。
【００２０】
図４にパケットヘッダの内容を示す。パケットヘッダには、データ要素数、転送モード、データタイプ、送信ベースアドレス、送信距離１、送信距離２、送信距離１要素数、受信ベースアドレス、受信距離１、受信距離２、受信距離１要素数が含まれる。
図５に主記憶アクセス制御部の構成を示す。図５において、主記憶アクセス制御部３１のアドレス発生部３２は、送信時には、主記憶からその送信部へパケットヘッダ３３を読み出し、ボディ要素数、転送モード、データタイプ、送信ベースアドレス、送信距離１、送信距離２、送信距離１要素数をレジスタにセットする。また、アドレス発生部３２の受信部はネットワークから送られてきてたパケット３４を読み出し、ボディ要素数、転送モード、データタイプ、受信ベースアドレス、受信距離１、受信距離２、受信距離１要素数をレジスタにセットする。
【００２１】
上記各情報により、アドレス発生部３２の送信部及び受信部は各々転送モードがサブアレイであることを認識すると、ブロックアクセス、ランダムアクセス、ランダムアクセスのマージの内、どのアクセスを行うかを決定する。その後、アドレス発生部３２は主記憶に読み書き要求を発行する。
本実施例においては、アクセス方法の決定に際して、１ブロックを６４Ｂとし、データタイプ＝距離１（連続）であり、データタイプが単精度であり、かつ距離１要素数が１６以上である場合、又はデータタイプ＝距離１（連続）であり、データタイプが倍精度であり、距離１要素数が８以上ある場合は、ブロックアクセスを行う。
【００２２】
データタイプ＝距離１（連続）であり、データタイプが単精度であり、かつ距離１要素数が１６未満である場合、又はデータタイプ＝距離１（連続）であり、データタイプが倍精度であり、かつ距離１要素数が８未満である場合はランダムアクセスを行う。さらに、データタイプが単精度であり、かつ送信距離１要素数が１６未満である場合は、ランダムアクセス２回を１回にマージする。
【００２３】
アクセス決定の具体的手順を図１のフローチャートを用いて説明する。
アドレス発生部３２の送信部は、ステップＳ１１で、ヘッダ部の転送モードから、サブアレイ転送命令が出されているか否かをチェックする。出されていなければ、ステップＳ２０へ進み、通常のアクセス選択処理がされる。サブアレイ転送命令であると判定すると、ステップＳ１２へ進む。
【００２４】
ステップＳ１２では、データタイプが単精度か倍精度かをチェックする。単精度である場合ステップＳ１３へ進み、倍精度である場合ステップＳ１４へ進む。
ステップＳ１３では、サブアレイの送信距離１（ＳＤ１）が４であるか否かがチェックされる。ここで４以外であると判定されると、ステップＳ１５へ進み、ランダムアクセスが決定される。
【００２５】
また、ステップＳ１３で４であると判定されると、ステップＳ１６へ進み、送信距離１要素数（ＳＳＬ）が１６以上であるか否かがチェックされる。ここで、１６未満であると判定されると、ステップＳ１７で２つのアクセスがマージされ、ステップＳ１５へ進み、ランダムアクセスが選択される。ステップＳ１６で、送信距離１要素数が１６以上であると判定されると、ステップＳ１８へ進み、ブロックアクセスが選択される。
【００２６】
ステップＳ１４では、送信距離１要素数（ＳＤ１）が８であるか否かがチェックされる。ここで８以外であると判定されると、ステップＳ１５へ進み、ランダムアクセスが決定される。
また、ステップＳ１４で８であると判定されると、ステップＳ１９へ進み、送信距離１要素数（ＳＳＬ）が８以上であるか否かがチェックされる。ここで、８未満であると判定されるとステップＳ１５へ進み、ランダムアクセスが選択される。ここで、８以上であると判定されると、ステップＳ１８へ進み、ブロックアクセスが選択される。
【００２７】
図６にアドレス発生部３２の送信部のブロック図を示す。なお、アドレス発生部３２の受信部についてのここでの説明は省略するが、前に図５を用いて説明したように、受信部のパケットヘッダは主記憶からではなくネットワークから来るという違いがあるが、回路構成は同様の構成となる。
送信部において、主記憶のパケットヘッダ部から各情報が取り出される。データ要素数をカウンタＳＤＥＮに、送信ベースアドレスをレジスタＳＡＢに、送信距離１をレジスタＳＤ１に、送信距離２をレジスタＳＤ２に、送信距離１要素数をカウンタＳＳＣとレジスタＳＳＬに格納する。カウンタＳＳＣは送信距離１をアクセス毎に減算するカウンタであり、減算する値を−１から−１６までベースアドレスや距離１要素数の端数に依存して変化させる。
【００２８】
ＳＩＡＲは変化値を保持するレジスタであり、ブロックアクセス時は６４（１ブロック＝６４Ｂ）が選択されてセットされ、ランダムアクセス時はレジスタＳＤ１又はレジスタＳＤ２の値が選択されてセットされる。ブロックアクセス時で行の終わりに端数がある場合は、掛算器４１の値が選択されてセットされる。
掛算器４１は、レジスタＳＤ１の値と、レジスタＳＳＬの値から減算器４２で１を減算した値を用いて、（ＳＳＬ−１）×ＳＤ１の計算を行いアドレスの端数を計算する。
【００２９】
ＳＬＡＨＲはリクエストアドレスを保持するレジスタであり、最初は、レジスタＳＡＢに保持されたベースアドレスが格納され、以後は、リクエストアドレスとレジスタＳＩＡＲに保持された値を加算器ＳＡＤＤで加算した値がセットされる。さらに、レジスタＳＬＡＨＲの保持するアドレス情報がレジスタＳＡＢに戻すためのパスが設けられる。
【００３０】
以上説明した図６のアドレス発生部の回路が前述の図１１の従来のアドレス発生部と相違する点は以下のとおりである。
カウンタＳＳＣは、ランダムアクセスの場合は１減算し、ブロックアクセスの場合は、データタイプが４Ｂで端数があれば１から１５の端数が減算され、端数がなければ１６を減算し、データタイプが８Ｂで端数があれば、１から７までの値を減算し、端数がなければ８を減算する。
【００３１】
掛算器４１はファイナルのアクセスを検出した後の距離の端数分を計算するためのものである。レジスタＳＬＡＨＲからレジスタＳＡＢに情報を戻すパスは、ステートによる制御を簡単にするために追加されている。
図７から図９に、図６の回路のタイムチャートを示す。なお、以下の説明においては、理解を容易にするため、図６に示された回路要素については、「レジスタ」「カウンタ」等の用語は省略し、参照符号のみを用いる。本例では、データタイプが４Ｂ、距離１が４Ｂ、距離１要素数が４８の場合を示す。
【００３２】
図７はランダムアクセスが選択された時のタイムチャートである。
まず、最初のタイミングで、ＳＡＢにはサブアレイのベースアドレスａ（先頭のアドレス）がセットされる。ＳＩＡＲとＳＬＡＨＲは最初は不定である。ＳＳＣには、送信距離１要素数ＳＳＬがセットされる。ＳＤＥＮには送信データ要素数ＤＥＮがセットされる。
【００３３】
次のタイミングで、ＳＡＢの値ａをＳＬＡＨＲに移し、ａをリクエストアドレスＲＥＱ−ＡＤＲＳとして出力する。ＳＤ１がＳＩＡＲにセットされる。ＳＳＣの値は−１され、ＳＳＬ−１となる。ＳＤＥＮの値も−１され、ＤＥＮ−１となる。
次のタイミングで、ＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋ＳＤ１が再びＳＬＡＨＲにセットされ、ＲＥＱ−ＡＤＲＳとして出力される。ＳＳＣの値は−１され、ＳＳＬ−２となる。ＳＤＥＮの値も−１され、ＤＥＮ−２となる。
【００３４】
次のタイミングで、ＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋ＳＤ１×２がＳＬＡＨＲにセットされ、ＲＥＱ−ＡＤＲＳとして出力される。ＳＳＣの値は−１され、ＳＳＬ−３となる。ＳＤＥＮの値も−１され、ＤＥＮ−３となる。
以上の動作が繰り返されて、ＳＳＣの値が０となると、サブアレイの１行目の処理が終わったことが検出され、ＦＩＮＡＬ−ＤＥＴＥＣＴ信号が発生する。このＦＩＮＡＬ−ＤＥＴＥＣＴ信号は、内部の処理のみに使用し、リクエスト調停には出力しない。ＦＩＮＡＬ−ＤＥＴＥＣＴ信号の発生により、ＳＩＡＲにはＳＤ２がセットされる。
【００３５】
次のアドレスはサブアレイの第２行目のデータの先頭のアドレスを指す。これはＳＩＡＲ＋ＳＬＡＨＲで求められ、ＲＥＱ−ＡＤＲＳとして出力される。同時に、ＳＩＡＲには、再度、ＳＤ１がセットされ、ＳＳＣには、再度、送信距離１要素数ＳＳＬがセットされる。なお、ＳＤＥＮは、さらに−１がされ、ＤＥＮ−４９となる。
【００３６】
以上の動作が繰り返され、ＳＤＥＮ（ボディ要素カウンタ）の値が０になると、動作を終了する。なお、以上の動作の間、ステートはボディ送信ステートのままである。
図８はランダムアクセスのマージをする場合のタイムチャートである。ここでは、図７と異なる点のみを説明する。
【００３７】
図８の動作が図７と異なるのは、リクエストをインヒビットするＲＥＱ−ＩＮＨ信号を出力するところである。このインヒビット処理を行う条件は後続に８Ｂバウンダリで同一のアドレスがあることである。これがＲＥＱ−ＩＮＨ検出カウンタにより検出されるとインヒビットされる。インヒビットされたリクエストの情報はデータを読み出す時又は書き込む時に参照する。これにより、後続のリクエストが待たされることがなくなる。
【００３８】
図９はブロックアクセスを行う場合のタイムチャートである。
まず、最初のタイミングで、ＳＡＢにはサブアレイのベースアドレスａがセットされる。ＳＳＣには、送信距離１要素数ＳＳＬがセットされる。ＳＤＥＮには送信データ要素数ＤＥＮがセットされる。
次のタイミングで、ＳＡＢの値ａをＳＬＡＨＲに移し、ａをＲＥＱ−ＡＤＲＳとして出力する。図示は省略するが、同時にブロックアクセスであるという情報をリクエスト調停に出力する。また、ＳＩＡＲにブロック長の６４がセットされる。ＳＳＣの値は−１６され、ＳＳＬ−１６となる。ＳＤＥＮの値も−１６され、ＤＥＮ−１６となる。
【００３９】
次のタイミングで、ＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋６４がＳＬＡＨＲにセットされ、ＲＥＱ−ＡＤＲＳとして出力される。ＳＳＣの値は−１６され、ＳＳＬ−３２となる。ＳＤＥＮの値も−１６され、ＤＥＮ−３２となる。
次のタイミングで、ＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋１２８がＳＬＡＨＲにセットされ、ＲＥＱ−ＡＤＲＳとして出力される。ＳＳＣの値は−１６され、ＳＳＬ−４８となる。ＳＤＥＮの値も−１６され、ＤＥＮ−４８となる。
【００４０】
以上の動作が繰り返されて、ＳＳＣで距離１要素のファイナルを検出（サブアレイの１行目の処理が終わったことの検出）するとＦＩＮＡＬ−ＤＥＴＥＣＴ信号が出力され、リクエストの発信を止めデータを読み出す又は書き込むまで待つ。データの読み込みが終わると、ステートはボディ送信ステートからサブアレイ待ちステートに入る。
【００４１】
サブアレイ待ちステートに入ると、ＳＩＡＲには送信距離１の端数ｂがセットされる。このｂは、掛算器４１によりＳＤ１×（ＳＳＣ−１）で計算される。
次のタイミングでＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋１２８＋ｂがＳＬＡＨＲにセットされる。また、ＳＩＡＲには、送信距離２ＳＤ２がセットされる。
【００４２】
次のタイミングで、ＳＩＡＲとＳＬＡＨＲの値がＳＡＤＤで加算されてａ＋１２８＋ｂ＋ＳＤ２がＳＬＡＨＲにセットされる。
次のタイミングでＳＬＡＨＲからパスを通して、ＳＡＢにａ＋１２８＋ｂ＋ＳＤ２を書き込む。この値は、ａ＋６４×２＋ＳＤ１×（ＳＳＬ−１）と同一の値であり、サブアレイの２行目の先頭のアドレスを示す。ＳＳＣにＳＳＬをセットすると同時に、ステートを元のボディ送信ステートに戻す。
【００４３】
続いて、サブアレイの次の行に対して、アドレスが発生される。最初に、ＳＡＢの値ａ＋１２８＋ｂ＋ＳＤ２がＳＬＡＨＲに移される。図示は省略するが、以後は前述の説明と同様の動作が繰り返される。このように、ＳＬＡＨＲからＳＡＢに戻るパスを設けることにより、サブアレイの行の先頭のアドレス指定の制御は常に同じものとなり、制御が簡略化される。以上の動作をＳＤＥＮ（ボディ要素数カウンタ）の値が０になるまで繰り返す。
【００４４】
ボディ要素数カウンタによりファイナルを検出する場合、ボディ要素数の端数よりＳＳＣの端数が小さい場合がある。この場合はボディ要素数カウンタも１６より小さく、ＳＳＣも１６より小さいためファイナルであると検出してしまうが、実際にはＳＳＣが小さいためファイナルとはならない。したがって、ファイナル検出の論理にＳＳＣとボディ要素数カウンタの大小を比較する回路が必要である。
【００４５】
【発明の効果】
本発明によれば、サブアレイで転送を行う場合、一次の距離の要素数によりランダムアクセスを行うかブロックアクセスを行うかを選択することで、一次の距離の要素数に応じて最も読み出し又は書き込み速度の早いアクセスを行うことができる。ブロックアクセスが選択された場合、リクエストはランダムアクセスを行った場合より最大で１／１６に減らすことができるので他処理装置（ベクトル装置、Ｉ／Ｏ装置）とのメモリアクセス競合を軽減できる。またランダムアクセスをマージすることでリクエストを１／２に減らすことができる。また、これはリクエスト当たり８Ｂでデータを読み書きする構成で、単精度データを連続に読み書きする場合に、メモリのビジーによりアクセスが待たされることを回避できる。
【図面の簡単な説明】
【図１】本発明の実施例におけるアクセス決定の手順を示すフローチャート。
【図２】マルチプロセッシングシステムの全体構成を示すブロック図。
【図３】図２の回路におけるリクエスト元からメモリまでの経路を示すブロック図。
【図４】パケットヘッダの内容を説明するための図。
【図５】パケット転送における主記憶アクセス制御部の構成を示す図。
【図６】本発明の実施例のアドレス発生部の送信部のブロック図。
【図７】図６の回路のタイミングチャート（その１）。
【図８】図６の回路のタイミングチャート（その２）。
【図９】図６の回路のタイミングチャート（その３）。
【図１０】サブアレイを説明するためのメモリ配置図。
【図１１】従来のアドレス発生部の送信部を示すブロック図。
【符号の説明】
１…ネットワーク
２，３，４…処理装置
１１…リクエスト元
１２…他リクエスト元
１３…バッファ
１４…リクエスト調停
１５…メモリ
１６…データ
１７…アドレス
２１〜２８…データ
３１…主記憶アクセス制御部
３２…アドレス発生部
４１…掛算器
４２…減算器
ＳＤＥＮ…データ要素数を保持するレジスタ
ＳＡＢ…送信ベースアドレスを保持するレジスタ
ＳＤ１…送信距離１を保持するレジスタ
ＳＤ２…送信距離２を保持するレジスタ
ＳＳＬ…送信距離１要素数を保持するレジスタ
ＳＳＣ…送信距離１要素数をアクセス毎に減算するカウンタ、−１減算するデクリメンタ
ＳＩＡＲ…変化値を保持するレジスタ
ＳＬＡＨＲ…リクエストアドレスを保持するレジスタ
【図１】
0004079460.tif 000002
【図２】
0004079460.tif 000003
【図３】
0004079460.tif 000004
【図４】
0004079460.tif 000005
【図５】
0004079460.tif 000006
【図６】
0004079460.tif 000007
【図７】
0004079460.tif 000008
【図８】
0004079460.tif 000009
【図９】
0004079460.tif 000010
【図１０】
0004079460.tif 000011
【図１１】
0004079460.tif 000012