JP3734032B2 - 情報処理装置及びそのメモリ制御方法 - Google Patents

情報処理装置及びそのメモリ制御方法 Download PDF

Info

Publication number
JP3734032B2
JP3734032B2 JP2002216607A JP2002216607A JP3734032B2 JP 3734032 B2 JP3734032 B2 JP 3734032B2 JP 2002216607 A JP2002216607 A JP 2002216607A JP 2002216607 A JP2002216607 A JP 2002216607A JP 3734032 B2 JP3734032 B2 JP 3734032B2
Authority
JP
Japan
Prior art keywords
unit
vsc
main memory
asynchronous operation
retransmission
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
JP2002216607A
Other languages
English (en)
Other versions
JP2004062311A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2002216607A priority Critical patent/JP3734032B2/ja
Priority to US10/623,660 priority patent/US7155580B2/en
Publication of JP2004062311A publication Critical patent/JP2004062311A/ja
Application granted granted Critical
Publication of JP3734032B2 publication Critical patent/JP3734032B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、情報処理装置に関し、特にハードウェアで並列処理を実現するベクトル方式の情報処理装置に関する。
【0002】
【従来の技術】
近年の情報処理装置は、その動作周波数の高速化に伴って伝送線路による信号遅延が大きくなり、複数の半導体集積回路装置(CPU/LSI等)を位相の一致したクロックで動作させることが非常に困難になってきている。
【0003】
このような問題の一つの解決策として、非同期クロックで動作する複数のCPUの処理をソフトウェアで同期させる手法がある。例えば、バリア同期/通信レジスタと呼ばれるハードウェア機能を利用して、指定された複数のプロセスを異なるOS(Operating System)で動作するCPUへディスパッチ(dispatch)する方法がある。この方法は、複数のプロセスが全く異なるタイミングで動作することを前提としているため、各CPUのクロックが非同期であってもハードウェア機能に起因する動作不良が発生しない。このような方法は、スカラ型並列コンピュータと呼ばれる製品等で実現されている。
【0004】
上記のようなソフトウェアで複数のプロセスを同期させる手法では、CPUの動作速度やCPUとメモリ間のデータ転送速度の高速化等のように、ハードウェア性能を向上させる手法と比較して非常に安価に実現できるため、見かけ上の性能対価格比が向上する。
【0005】
しかしながら、ソフトウェアで複数のプロセスを同期させる手法ではプログラムの並列化が非常に困難であるという問題がある。これは、プログラムで用いる各命令の並列化限界が千差万別であることに起因する。仮に並列化できても、そのデバッグ作業は、並列化されていないプログラムよりも格段に困難になる。デバッグ作業は、情報処理装置の性能チューニング時に行うのが一般的であるが、並列処理技術に関する高度なスキルを必要とする。また、このような困難なデバッグ作業をハードウェアがバージョンアップする度に行う必要があり、プログラムの膨大な資産を活かし難いという問題もある。さらに、プログラムの並列化のための技術的な課題を克服しても、それを現場で運用する際に人的リソース不足等の問題も発生する。
【0006】
このような問題の解決策の1つとしてハードウェアによる並列処理があり、その具体例としてベクトル方式の情報処理装置がある。
【0007】
ベクトル方式とは、規則的に並んだ複数個の配列データを一度に処理する方式(Single Instruction Multiple Data stream :SIMD型)であり、その複数個のデ−タを格納するレジスタはベクトルレジスタと呼ばれ、ベクトルレジスタに格納された全ての要素に対して、同一の演算、メモリアクセス、転送等を指示する命令はベクトル命令と呼ばれる。
【0008】
ベクトル命令は、例えば、
LVL VL<−128
VADD V7 <− V5+V4
のように記載される。この例は、VL(ベクトル・レングス・レジスタ)に処理対象の要素(要素数128)をLVL(LoadVL)命令を用いて格納し、その後、VADD(ベクトル加算)命令を用いてベクトルレジスタV5、V4の各要素(128個)を加算し、加算結果をベクトルレジスタV7に格納する処理である。
【0009】
ベクトル方式では、ソフトウェアによるプロセス間の同期が不要であるため、単一のCPUと同様の考え方でソフトウェアを作成することができる。また、並列化手法として実績があり、ベクトル化のためのコンパイラも既に存在する。
【0010】
なお、このようなベクトル方式においても、性能を向上させるためには、それに見合ったCPUとメモリ間のバンド幅(データ転送速度)を確保する必要がある。また、CPUを、ベクトル命令を実行する複数のベクトルユニットで構成し、各ユニットを並列に動作させれば、演算処理等をより高速に実行することも可能である。
【0011】
【発明が解決しようとする課題】
上述のような複数のベクトルユニットで構成されたCPUを有するベクトル方式の情報処理装置では、VSC(ベクトル・スキャッタ)命令の実行時に以下に記載する問題が発生する。
【0012】
VSC命令は、ベクトル方式の情報処理装置において非常に重要な命令である。その命令仕様について図8を用いて説明する。
【0013】
図8に示すように、VSC命令は、Yフィールドで指定されたベクトルレジスタVyの要素をアドレスとして用い、それに対応するZフィールドで指定されたベクトルレジスタVzの要素をメモリに格納する命令である。なお、図8のOPCフィールドはVSC命令であることを示すオペコードであり、Xフィールドは使用されない無効領域である。
【0014】
VSC命令に対する処理では、メモリへの各要素の書き込み処理が要素番号順に実行されなければならない。特に、同じアドレスに対して複数の要素を格納する場合は要素番号が大きい要素の書き込み処理を優先させなければならない。例えば、要素nと要素n+1とを同じメモリアドレスに格納する場合、要素n+1の書き込みを優先させて要素nを無効化する必要がある。このような制限は、従来のように1つのユニットまたは同期して動作する複数のユニットで処理する場合は、1つのポートから要素番号順に書き込みリクエストが発行されるため、特に考慮する必要は無かった。
【0015】
しかしながら、CPUが複数の非同期動作ユニットで構成されるベクトル方式の情報処理装置では、各ユニットから発行される要素の書き込みリクエスト(以下、要素リクエストと称す)による処理の順番が保証されないため、メモリに対する要素の書き込み順序が逆転することがある。
【0016】
例えば、図9に示すように、CPUが、非同期動作ユニットであるマスターユニット(Master)とスレーブユニット(Slave)で構成され、隣り合った要素番号(要素nと要素n+1)の要素リクエストがそれらに分配されて発行される場合、要素nと要素n+1を同じメモリアドレスに格納する要素リクエストであると、メモリへの書き込み動作を制御するメモリ制御部で要素nの処理よりも要素n+1の処理を先に実行する可能性がある。そのため、要素n+1が要素nで上書きされてしまう。
【0017】
このような問題の解決策として、複数の非同期動作ユニットから発行される各要素リクエストを同期させる手法が考えられる。しかしながら、そのような方法では、同期処理のためのオーバーヘッドが大きくなり、要素リクエストの発行間隔が広がるため、マスターユニットとスレーブユニットとを並列動作させることによる処理の高速化の効果をうち消してしまう。
【0018】
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、CPUが複数の非同期動作ユニットで構成される場合に、各ユニット間の処理順序の逆転による影響を排除することが可能な情報処理装置及び方法を提供することを目的とする。
【0019】
【課題を解決するための手段】
上記目的を達成するため本発明の情報処理装置は、ベクトル方式の情報処理装置であって、
複数の非同期動作ユニットから構成されるCPUと、
データを格納するメインメモリ部と、
ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するVSCアドレスバッファを備え、ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止する、前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部と、
を有し、
前記メインメモリ制御部は、
前記VSCアドレスバッファで前記複数の非同期動作ユニットから送信される前記格納先アドレスをそれぞれ保持し、前記VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求するVSCアドレスバッファ制御部を備え、
前記非同期動作ユニットは、
自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、前記メインメモリ制御部から前記要素の再送が要求された場合に、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送する構成である。
【0022】
このとき、前記非同期動作ユニットは、
各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正してもよく、
前記メインメモリ制御部は、
前記VSCアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、
前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせてもよい。
【0023】
なお、前記VSCアドレスバッファで保持する前記格納先アドレスの数は、前記非同期動作ユニットが一度に処理する要素数+1以上であることが望ましい。
【0024】
一方、本発明のメモリ制御方法は、複数の非同期動作ユニットから構成されるCPUと、
データを格納するメインメモリ部と、
前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部とを有するベクトル方式の情報処理装置のメモリ制御方法であって、
予め、前記メインメモリ制御部に、ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するためのVSCアドレスバッファを備えておき、
前記ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止し、
前記複数の非同期動作ユニットから送信される前記格納先アドレスをVSCアドレスバッファでそれぞれ保持し、
前記VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求し、
前記非同期動作ユニットで、発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持しておき、前記要素の再送が要求された場合は、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送する方法である。
【0026】
このとき、各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正してもよい。
【0027】
さらに、前記VSCアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記メインメモリ制御部から前記非同期動作ユニットへ送出し、
前記非同期動作ユニットは、前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせてもよい。
【0028】
上記のような情報処理装置及びそのメモリ制御方法では、ベクトル・スキャッタ命令により非同期動作ユニットからそれぞれ発行される複数の要素の書き込みリクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される書き込み許可信号の出力を抑止することで、複数の非同期動作ユニット間で発生する処理順序の逆転による影響を排除することが可能になる。
【0029】
また、VSCアドレスバッファで複数の非同期動作ユニットから送信される格納先アドレスをそれぞれ保持し、VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ要素の再送を要求するVSCアドレスバッファ制御部を備え、非同期動作ユニットは、自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、メインメモリ制御部から要素の再送が要求された場合にリトライバッファに保持した要素をメインメモリ制御部へ再送することで、VSCアドレスバッファを効率よく使用することができる。
【0030】
【発明の実施の形態】
次に本発明について図面を参照して説明する。
【0031】
(第1の実施の形態)
図1は本発明の情報処理装置の第1の実施の形態の構成を示すブロック図であり、図2は図1に示したMMCの一構成例を示すブロック図である。
【0032】
図1に示すように、本実施形態の情報処理装置は、CPU100と主記憶装置であるMMU(Main Memory Unit)200とを有する構成である。
【0033】
CPU100は、Master-Unit1とSlave-Unit2の2つの非同期動作ユニットを備えている。Master-Unit1及びSlave-Unit2は、Master-Unit1でベクトル命令の発行/終了を管理することを除けば、基本的にベクトル命令にしたがって同じ処理を実行するユニットである。これら2つのベクトルユニットは、通常、異なる2つのLSIで構成されるが、非同期で動作するユニットであれば、同一のLSI内に形成されていてもよい。なお、図1では、CPU100が1つのMaster-Unit1と1つのSlave-Unit2とで構成される例を示しているが、CPU100は、1つのMaster-Unit1と複数のSlave-Unit2で構成されていてもよく、1つのMaster-Unit1と少なくとも1つのSlave-Unit2から成る組を複数備えた構成であってもよい。
【0034】
Master-Unit1は、命令制御部11、Master側RQ制御回路12、ベクトルレジスタ13、及びPNU14を有し、Slave-Unit2は、Slave側RQ制御回路22、ベクトルレジスタ23、及びPNU24を有する構成である。
【0035】
図1に示したMaster-Unit1及びSlave-Unit2は、VSC命令により256個の要素を一度に処理する構成例であり、Master-Unit1は偶数番号の要素を処理し、Slave-Unit2は奇数番号の要素を処理するものとする。
【0036】
命令制御部11は、ベクトル命令の発行時に、Master側RQ制御回路12及びSlave側RQ制御回路22にそれぞれ対応するオペコードを供給する。
【0037】
Master側RQ制御回路12は、VSC命令のオペコードを受け取ると、VSC命令の実行条件を全てチェックし、処理を開始するためのVSCstart信号を所定のタイミングでSlave側RQ制御回路22へ送出する。また、偶数番号の各要素の要素リクエストを発行し、ベクトルレジスタ13から読み出した、VSC命令で指定されたメモリへの格納先アドレス及びデータと共に、要素番号、ユニット番号CPU#、及び識別子VSCid等を含むリクエスト情報をPNU14へ送出する。なお、ユニット番号CPU#は、要素リクエストの発行元ユニットを区別するためのものであり、例えば、Master-Unit1から送出されるリクエスト情報のユニット番号CPU#には偶数番号が割り当てられ、Slave-Unit2から送出されるリクエスト情報のユニット番号CPU#には奇数番号が割り当てられる。但し、CPUが複数組のMaster-Unit1とSlave-Unit2で構成される場合は、一組のMaster-Unit1とSlave-Unit2に割り当てるユニット番号CPU#は連続する値に設定する。また、識別子VSCidは、VSC命令を区別するためのものであり、1つのVSC命令で発行される要素リクエストには全て同一の識別子が付与される。
【0038】
PNU14は、Master側リクエスト制御回路12から受け取った要素リクエスト、リクエスト情報、格納先アドレス及びデータをCPU出力RQレジスタ15で一旦保持した後、MMU200へ送出する。
【0039】
Slave側RQ制御回路22は、上記Master側RQ制御回路12と同様に奇数番号の各要素の処理を実行すると共に、一つのVSC命令で発行される複数の要素リクエストのうち、最終の要素リクエストの発行タイミングで処理の終了を示すVSCend信号をMaster側RQ制御回路12へ送信する。VSCend信号を受け取ったMaster側RQ制御回路12は、自身で発行する最終の要素リクエストの発行を待って命令制御部11から発行された次のVSC命令の処理を開始する。
【0040】
Slave-Unit2が有するベクトルレジスタ23は、Master-Unit1が有するベクトルレジスタ13と同様に動作し、Slave-Unit2が有するPNU24は、Master-Unit1が有するPNU14と同様に動作する。
【0041】
一方、MMU200は、データを格納するMM(Main Memory)4とMM4に対するデータの書き込み動作を制御するMMC(Main Memory Controller)3とを有する構成である。なお、図1では、MMU200を1つだけ備えた構成を示しているが、MMU200の数は1つに限定されるものではなく、複数のMMU200を有していてもよい。
【0042】
MM4は、並列にアクセス可能なバンクと呼ばれる複数(図1では8個)のメモリユニットから構成され、各バンクには指定されたアドレスにしたがってインターリーブでデータが格納される。
【0043】
MMC3は、MMU入力RQレジスタ311、312、VSCアドレスバッファ32、リクエスト分配回路33、順序監視回路34、WEレジスタ35、及びadr/dataレジスタ36を備えた構成である。
【0044】
MMU入力RQレジスタ311、312は、Master-Unit1及びSlave-Unit2から送出されたリクエスト情報、格納先アドレス及びデータを受信するレジスタであり、Master-Unit1及びSlave-Unit2に対応して2つ設けられている。
【0045】
VSCアドレスバッファ32は、MM4に対する各要素の格納先アドレスを一時的に保持するレジスタであり、図1に示したMaster-Unit1及びSlave-Unit2はそれぞれ256個の要素を一度に処理するため、それに対応して256W(ワード)のアドレスを保持するレジスタを2セット備えている。本実施形態のVSCアドレスバッファ32は、1つのVSC命令に対応する格納先アドレスのみ保持し、複数のVSC命令に対応する格納先アドレスをオーバーラップして格納することはない。
【0046】
リクエスト分配回路33は、要素の格納先アドレスに対応するMM4のバンクに対して、書き込みを許可するMem−Write信号、並びに指定された格納先アドレス及びデータをそれぞれ分配する。
【0047】
順序監視回路34は、1つのVSC命令で発行される要素リクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない要素リクエストがある場合に、要素番号が若い方の要素リクエストで生成されるMem−Write信号の出力を抑止する。
【0048】
WEレジスタ35は、リクエスト分配回路33から送出されたMem−Write信号をそれぞれ保持し、格納先アドレスに対応するMM4のバンクへ送出する。
【0049】
adr/dataレジスタ36は、リクエスト分配回路33から送出された格納先アドレス及びデータをそれぞれ保持し、格納先アドレスで指定されたMM4のバンクへ送出する。
【0050】
図2に示すように、順序監視回路34は、先行する要素リクエストと後続の要素リクエストの要素番号及び格納先アドレスをそれぞれ比較する比較回路37と、比較回路37の比較結果にしたがって、処理の順序が逆転し、かつ格納先アドレスが一致している場合に、要素番号が若い要素リクエストで生成されるMem−Write信号のリクエスト分配回路33への出力を抑止するWE抑止回路38と、VSCアドレスバッファ32に対する格納先アドレスの書き込み処理を制御するバッファ制御回路39とを有する構成である。
【0051】
比較回路37は、VSCアドレスバッファ32に格納された先行する要素リクエストと後続の要素リクエストの要素番号を比較し、処理順序の逆転を検出する要素番号比較器371と、VSCアドレスバッファ32に格納された先行する要素リクエストと後続の要素リクエストの格納先アドレスを比較し、同一のアドレスに対するアクセスを検出するアドレス比較器372と、要素番号比較器371及びアドレス比較器372の比較結果の論理積を出力する論理積ゲート373とを備えている。要素番号比較器371、アドレス比較器372、及び論理積ゲート373は、VSCアドレスバッファ32に格納可能なワード数(エントリ数)に対応して、それぞれ256×2個=512個づつ備えている。
【0052】
なお、アドレス比較器371は、後続の要素リクエストがMaster-Unit1から発行されている場合はSlave-Unit2から発行された先行する要素リクエストとアドレスどうしを比較する。また、後続の要素リクエストがSlave-Unit2から発行されている場合はMaster-Unit1から発行された先行する要素リクエストとアドレスどうしを比較する。これは、Master-Unit1またはSlave-Unit2から連続して発行される要素リクエストでは処理の順序が逆転しないことによる。
【0053】
論理積ゲート373の出力がアクティブになったとき、Master-Unit1及びSlave-Unit2から発行された要素リクエストの処理の順序が逆転し、MM4に対する不正な書き込み処理が発生することを示している。
【0054】
バッファ制御回路39は、書き込み制御部391、デコード回路392、及びVSCidレジスタ393、VSCid比較器394、及びインバータ395を備えている。
【0055】
デコード回路392は、Master-Unit1及びSlave-Unit2から送信されたオペコードをデコードし、VSC命令であることを示すVSC信号、及びMM4に対するデータの書き込み許可信号であるMem−Write信号を生成する。
【0056】
書き込み制御部(Write cont)391は、要素が有効であることを示すバリッド(V)信号、ユニット番号CPU#、及びVSC信号を入力とし、要素が有効であるとき、要素リクエストの発行元に対応するVSCアドレスバッファ32内をサーチし、書き込み可能な(空いている)アドレスとライトイネーブルWE信号とを該VSCアドレスバッファ32へ送出する論理回路である。
【0057】
VSCアドレスバッファ32は、書き込み制御部391から送出されたアドレス及びWE信号にしたがって、MMU入力RQレジスタ311、312から転送された格納先アドレス(Address)を要素番号(ELM)に関連付けてそれぞれ格納する。
【0058】
VSCidレジスタ393は、先行する要素リクエストに付与された識別子VSCidを保持し、VSCid比較器394は、VSCidレジスタ393で保持された識別子VSCidと後続の要素リクエストに付与された識別子VSCidとを比較する。そして、後続の識別子VSCidが変化したとき(次のVSC命令の処理に移行したとき)、VSCアドレスバッファ32に格納された内容をクリアするためのタイミング信号(Clear)をインバータ395を介して送出する。
【0059】
WE抑止回路38は、VSCアドレスバッファ32の数に対応して、論理和ゲート381、第1の論理積ゲート382、及び第2の論理積ゲート383をそれぞれ2個づつ備えている。
【0060】
論理和ゲート381は、比較回路37の各論理積ゲート373から出力される比較結果から、要素が有効であり、同一のVSC命令であり、かつ識別子VSCidが変化しない条件下で、対応する256個の論理積ゲート373のいずれかの出力がアクティブになった場合に、MM4に対するデータの書き込み許可信号であるMem−Write信号の出力を抑止する。
【0061】
リクエスト分配回路33は、Master-Unit1及びSlave-Unit2に対応して生成された2つのMem−Write信号をMM4の対応するバンクへそれぞれ送出するためのスイッチであるWE用2×8スイッチ331と、Master-Unit1及びSlave-Unit2から送信された格納先アドレス及びデータをMM4の対応するバンクへそれぞれ送出するためのスイッチであるadr/data用2×8スイッチ332とを備えている。
【0062】
次に、本実施形態の情報処理装置のVSC命令発行時の動作について図面を用いて説明する。
【0063】
図3は図1に示した情報処理装置のVSC命令による動作の様子を示す模式図である。なお、図3はCPU100が1つのMaster-Unit1と1つのSlave-Unit2とで構成される場合の動作を示している。
【0064】
図3に示すように、Master-Unit1の命令制御部11からVSC命令が発行されると、Master側RQ制御回路12はVSCstart信号を生成し、Slave側RQ制御回路22へ該VSCstart信号を送出する。
【0065】
続いて、Master側RQ制御回路12及びSlave側RQ制御回路22は、自ユニットが担当する要素番号の要素リクエストをそれぞれ発行し、ベクトルレジスタ13、23からVSC命令で指定された格納先アドレス及びデータを読み出し(REG read)、読み出した格納先アドレス及びデータと生成したリクエスト情報とをPNU14、24を介してMMU200へ送出する。
【0066】
ここでは、Master-Unit1が要素0から順に要素nまで偶数番号の要素リクエストを発行し、Slave-Unit2が要素1から順に要素n−1まで奇数番号の要素リクエストを発行するものとする。
【0067】
例えば、要素n−1と要素nの要素リクエストにおいて、同一のアドレスにデータを格納する指示があった場合、MMU200では要素nの要素リクエストを先行して受信する可能性がある。
【0068】
本実施形態では、後続の要素n−1の要素リクエストに対応する要素番号及び格納先アドレスと、先行する要素nの要素リクエストに対応する要素番号及び格納先アドレスとをMMC3の比較回路37でそれぞれ比較する。そして、要素nの格納先アドレスがVSCアドレスバッファ32に先に格納されたことを検出した場合は、要素n−1の要素リクエストで生成されるMem−Write信号の送出をWE抑止回路38により抑止する。したがって、要素n−1のデータがMM4へ書き込まれないため、要素nのデータが要素n−1のデータで上書きされることがない。
【0069】
一方、Slave-Unit2で最終の要素リクエストが発行されると、Slave側RQ制御回路22は、その発行タイミングでMaster側RQ制御回路12へ処理の終了を示すVSCend信号を送信する。VSCend信号を受信したMaster側RQ制御回路12は、自身の最終要素リクエストの発行終了を待って命令制御部11から発行された次のVSC命令の処理を開始する。
【0070】
MMC200は、次のVSC命令による要素リクエストを受信すると、先行するVSC命令で格納されたVSCアドレスバッファ32の内容を全てクリアする。このとき、先行するVSC命令と後続するVSC命令の区別は識別子であるVSCidが用いられる。
【0071】
なお、本実施形態では、説明を容易にするためにCPUが1組のMaster-Unit1とSlave-Unit2で構成される例を示したが、実際の情報処理装置ではCPUが複数組のMaster-Unit1とSlave-Unit2を備えている場合が多い。
【0072】
例えば、CPUを複数組のMaster-Unit1とSlave-Unit2で構成し、さらにVSCアドレスバッファ32で複数のVSC命令に対応する格納先アドレスを保持する構成を採用すると、VSC命令の発行間隔を短縮できるため情報処理装置の処理速度をさらに向上させることができる。
【0073】
しかしながら、そのような構成では、VSCアドレスバッファ32が(Master-UnitとSlave-Unitの組数)×2個だけ必要になり、そのエントリ数は、Master-Unit及びSlave-Unitがそれぞれ256個の要素を一度に処理すると仮定すると、以下の式で示す数だけ必要になる。
【0074】
エントリ数=(Master−Slaveの組数)×512×(VSC命令のオーバーラップ数)
また、Master-Unit1とSlave-Unit2の組数を増やすと、比較回路37の各構成要素もそれに伴って追加しなければならないため回路量が大幅に増加する。特にVSCアドレスバッファで複数のVSC命令に対応する格納先アドレスを保持する構成では、処理が複雑になることによる回路増加も加わるため、さらなる回路量の増加を招いてしまう。
【0075】
したがって、VSCアドレスバッファ32は、1つのVSC命令分の格納先アドレスを保持する構成が好ましい。また、Master-Unit及びSlave-Unitの組数は、VSC命令の発行間隔が広がることによる性能低下と回路量の増加とをトレードオフすることで、情報処理装置に要求される性能を満たす最適な組数に設定することが望ましい。
【0076】
同様に、CPUが1つのMaster-Unit1と複数のSlave-Unit2とを有する構成でも、VSCアドレスバッファ32は1つのVSC命令分の格納先アドレスを保持する構成が好ましく、Slave-Unit2の数は情報処理装置に要求される性能を満たす最適な値に設定することが望ましい。
【0077】
本実施形態の情報処理装置によれば、複数のユニットから発行される要素リクエストに対する処理順序の逆転による影響を排除できるため、CPUを複数の非同期動作ユニットで構成しても不正な書き込み処理が発生することが無い。したがって、CPUを複数のユニットで構成することで、各ユニットの回路規模を小さくすることが可能になり、ユニット(LSI)の歩留まりや外部端子数が低減されて、コストが低減される。
【0078】
(第2の実施の形態)
次に本発明の情報処理装置の第2の実施の形態について図面を用いて説明する。
【0079】
図4は本発明の情報処理装置の第2の実施の形態のCPU構成を示すブロック図であり、図5は本発明の情報処理装置の第2の実施の形態のMMC構成を示すブロック図である。また、図6は図5に示したデッドロック検出制御部の構成を示すブロック図であり、図7は図6に示したデッドロック検出制御部の動作の様子を示す模式図である。
【0080】
第1の実施の形態では、Master-Unit及びSlave-Unitに対応してVSCアドレスバッファを1つずつ設けているため、MMCはMaster-Unit及びSlave-Unitの数だけVSCアドレスバッファを備える必要がある。第2の実施の形態のMMCは、Master-Unit及びSlave-Unitの要素リクエストで指定される格納先アドレスを1つのVSCアドレスバッファで保持する構成である。また、それに対応してMaster-Unit及びSlave-Unitから送出されるリクエスト情報、格納先アドレス及びデータを、1つのMMU入力RQレジスタで共通に受信する。さらに、本実施形態のVSCアドレスバッファは、複数のVSC命令に対応する格納先アドレスをそれぞれ保持する構成である。
【0081】
このような構成では、格納先アドレスの保持に必要なVSCアドレスバッファの空きエントリが不足する(オーバーフロー)可能性があるため、オーバーフローさせたVSC命令に対応する要素を再送させるためのRQ再送要求信号をMMCからMaster-Unit及びSlave-Unitへそれぞれ送信する。
【0082】
一方、第2の実施の形態のMaster-Unit及びSlave-Unitは、既に発行した要素リクエストに対応するリクエスト情報、格納先アドレス及びデータを保持するためのリトライバッファを備え、MMCからRQ再送要求信号を受信すると、該リトライバッファで保持したリクエスト情報、格納先アドレス及びデータをMMCへ再送する。その際、再送を開始する要素番号がMaster-Unit及びSlave-Unitでずれている可能性があるため、Master-Unit及びSlave-Unitは、再送を開始する要素番号のうち、要素番号が若い方の要素から再送を開始する。例えば、Master-Unitの要素番号の方が若い場合、Slave-UnitはMaster-Unitの要素番号+1の要素番号から再送を開始する。また、Slave-Unitの要素番号の方が若い場合、Master-UnitはSlave-Unitの要素番号−1の要素番号から再送を開始する。
【0083】
さらに、本実施形態のMaster-Unit及びSlave-Unitは、MMCからRQ再送要求信号を受信すると、VSCアドレスバッファをオーバーフローさせたVSC命令の要素リクエストに対応するVSCアドレスバッファの内容をクリアするためのバッファクリア信号をMMCへ送出する。
【0084】
図4に示すように、本実施形態のMaster-Unit5は、発行した要素リクエストに対応するリクエスト情報を保持するための制御用リトライバッファ56と、該要素リクエストに対応する格納先アドレス及びデータを保持するためのアドレス・データ用リトライバッファ57と、MMCからRQ再送要求信号を受信した場合に、リクエスト情報、格納先アドレス及びデータをMMCへ再送するための第1のセレクタ58及び第2のセレクタ59とを有する構成である。
【0085】
Master側RQ制御回路52は、発行した要素リクエストに対応するリクエスト情報を制御用リトライバッファ56及び第1のセレクタ58へそれぞれ送出する。第1のセレクタ58は、RQ再送要求信号を受信していない場合はMaster側RQ制御回路52から受信したリクエスト情報をPNU54へ送出し、RQ再送要求信号を受信した場合は制御用リトライバッファ56で保持したリクエスト情報をPNU54へ送出する。同様に、ベクトルレジスタ53は、要素リクエストで指定された格納先アドレス及びデータをアドレス・データ用リトライバッファ57及び第2のセレクタ59へそれぞれ送出する。第2のセレクタ59は、RQ再送要求信号を受信していない場合はベクトルレジスタ53から受け取った格納先アドレス及びデータをPNU54へ送出し、RQ再送要求信号を受信した場合はアドレス・データ用リトライバッファ57で保持した格納先アドレス及びデータをPNU54へ送出する。
【0086】
また、Master側RQ制御回路52は、MMCからRQ再送要求信号を受信すると、Slave-Unit6のSlave側RQ制御回路62に対して、再送を開始する要素の要素番号であるstart要素番号を取得するためのstart要素番号指示を送信する。Slave側RQ制御回路62は、Master側RQ制御回路52からstart要素番号指示を受信すると、Slave-Unit6で再送を開始する要素のstart要素番号をMaster側RQ制御回路52へ返送する(start要素番号報告)。Master側RQ制御回路52は、Master-Unit5で再送を開始するstart要素番号とSlave側RQ制御回路62から受信したstart要素番号とを比較し、若い方の要素番号に基づいて再送を開始する要素番号を修正する。また、必要に応じてSlave側RQ制御回路62へ再送を開始する要素番号の修正結果を送信する。そして、自ユニットで発行した、VSCアドレスバッファをオーバーフローさせたVSC命令の要素リクエストに対応するVSCアドレスバッファの内容をクリアするためのバッファクリア信号をPNU54を介してMMCへ送出する。なお、PNU54は、リクエスト情報、格納先アドレス及びデータを再送する前にバッファクリア信号をMMCへ送出する。
【0087】
Slave-Unit6は、上記Master側RQ制御回路52及びSlave側RQ制御回路62の動作の違いを除けばMaster-Unit5と同様の構成である。
【0088】
図5に示すように、本実施形態のMMC7が有するMMU入力RQレジスタ71は、図2に示した第1の実施の形態のMMCが有するMMU入力RQレジスタに、CPUから送信されるバッファクリア信号を受信するためのV2フィールドを追加した構成である。
【0089】
また、本実施形態のVSCアドレスバッファ72は、ユニット番号CPU#、及びVSC命令を識別するための識別子VSCidを、要素番号(ELM)及び格納先アドレス(Address)に関連付けてそれぞれ保持する構成である。なお、本実施形態では、後述するデッドロック状態を回避するためにVSCアドレスバッファ72のエントリ数を(Master-Unit5で一度に処理するワード数)+1(本実施形態では257ワード)に設定する。
【0090】
さらに、本実施形態のMMC7は、図2に示した第1の実施の形態のMMCに、VSCアドレスバッファ制御部80、再送リクエストレジスタ81、及びデッドロック検出制御部82を追加した構成である。
【0091】
VSCアドレスバッファ制御部80は、VSCアドレスバッファ72のオーバーフローを検出したときに、対応するリクエスト情報、格納先アドレス及びデータをMaster-Unit5及びSlave-Unit6から再送させるための再送要求信号を再送リクエストレジスタ81及びデッドロック検出制御部82へそれぞれ送出する。
【0092】
デッドロック検出制御部82は、VSCアドレスバッファ72のオーバーフローとMaster-Unit5及びSlave-Unit6からの要素の再送を繰り返し実行するデッドロック状態を検出し、デッドロック状態が発生した場合に要素の再送タイミングをずらすための遅延値(BSYCNT)を再送リクエストレジスタ81へ送出する。
【0093】
再送リクエストレジスタ81は、MMU入力RQレジスタ71からユニット番号CPU#、識別子VSCid、及び要素番号ELMが要素リクエストの発行タイミングに同期して転送され、VSCアドレスバッファ制御部80から再送要求信号を受信すると、VSCアドレスバッファ72をオーバーフローさせた要素リクエストの発行元のMaster-Unit5及びSlave-Unit6にRQ再送要求信号を送出する。その際、デッドロック検出制御部82から受信した遅延値BSYCNTをRQ再送要求信号に添付して送出する。
【0094】
本実施形態の比較回路77は、第1の実施の形態で示した要素番号比較器、及びアドレス比較器に加えて、VSCアドレスバッファ72に格納された先行する要素リクエストと後続の要素リクエストに対応するユニット番号CPU#どうしを比較するユニット番号比較器771と、VSCアドレスバッファ72に格納された先行する要素リクエストと後続の要素リクエストに対応する識別子VSCidどうしを比較する識別子比較器772とを備えている。
【0095】
ユニット番号比較器771及び識別子比較器772の比較結果は第1の論理積ゲート773を介してバッファ制御回路79が有する第2の論理積ゲート791へ出力される。第2の論理積ゲート791は、MMU入力RQレジスタ71のV2フィールドから出力されるバッファクリア信号と第1の論理積ゲート773の出力信号との論理積を出力する。
【0096】
バッファクリア信号をMaster-Unit5またはSlave-Unit6から受信した場合、バッファ制御回路79は、先行する要素リクエストと後続の要素リクエストに対応するユニット番号CPU#及び識別子VSCidに一致するVSCアドレスバッファ72のエントリをクリアする。その他の構成及び動作は第1の実施の形態と同様であるため、その説明は省略する。なお、図5に示すMMC7は、リクエスト分配回路、WEレジスタ、及びadr/dataレジスタを省略した構成を示している。
【0097】
次に、上述したデッドロック状態について説明する。
【0098】
例えば、CPUが1つのMaster-Unit5と1つのSlave-Unit6とを備え、Master-Unit5及びSlave-Unit6がそれぞれ256個の要素を一度に処理する構成の場合、信号の伝搬遅延や要素リクエストの様々な発行制限により、Master-Unit5がSlave-Unit6よりも先行して256個の要素リクエストを発行する可能性がある。さらに、これらの要素リクエストが全て同じMMC7に対して発行された場合、VSCアドレスバッファ72のエントリ数を256とすると、Master-Unit5から発行された要素リクエストの処理だけでVSCアドレスバッファ72の全てのエントリが使用される。この状態では、Slave-Unit6から発行される最初の要素リクエストの処理でVSCアドレスバッファ72がオーバーフローするため、Master-Unit5及びSlave-Unit6にRQ再送要求信号が送信され、最初の要素から再送が開始される。このとき、再度、Master-Unit5がSlave-Unit6よりも先行して256個の要素リクエストを発行すると、VSCアドレスバッファ72のオーバーフローとMaster-Unit5及びSlave-Unit6の再送処理とが繰り返し実行されるため、VSC命令の処理が永久に進まない状態に陥る。この状態をデッドロックと言う。
【0099】
このようなデッドロック状態を回避するためには、VSCアドレスバッファ72のエントリ数を、(Master-Unit5で一度に処理する要素数)+1(本実施形態では257)だけ確保すればよい。
【0100】
一方、CPUが複数組のMaster-Unit5及びSlave-Unit6を備え、Master-Unit5及びSlave-Unit6でそれぞれ256個の要素を一度に処理する構成の場合も、上記と同様に各組毎にMaster-Unit5がSlave-Unit6よりも先行して256個の要素リクエストを発行する可能性がある。そのため、(Master-Unit5で一度に処理する要素数)×(Master-Unit5とSlave-Unit6の組数)よりもVSCアドレスバッファ72のエントリ数が少なければ、VSCアドレスバッファ72のオーバーフローと要素の再送処理とを繰り返す(以下、再送サイクルと称す)デッドロック状態に陥る可能性がある。
【0101】
この場合、デッドロック状態を回避するためには、VSCアドレスバッファ72のエントリ数を(Master-Unit5で一度に処理する要素数)×(Master-Unit5とSlave-Unit6の組数)+1だけ確保すればよい。
【0102】
しかしながら、実際には殆ど発生しないデッドロック状態を回避するためだけにVSCアドレスバッファ72のエントリ数を増加させることは、ハードウェアの増加を招くため、MMUのコストが増大する新たな問題が発生する。
【0103】
本実施形態では、ハードウェアの増加を抑制しつつデッドロック状態を回避するために、図5に示したデッドロック検出制御部82をMMC7に備えている。
【0104】
デッドロック検出制御部82は、所定の期間内に、同じMaster-Unit5及びSlave-Unit6から、同じVSC命令に対応する同じ要素番号が再送された場合に、2度目の再送時にMaster-Unit5及びSlave-Unit6による要素リクエストの発行タイミングを遅らせ、要素リクエストの再送サイクルを乱すことでデッドロックから脱出させるためのものである。
【0105】
図6に示すように、デッドロック検出制御部82は、デッドロック状態であるか否かを検出するためのデッドロック検出期間を計数するカウンタ回路821と、再送された格納先アドレス及びデータに対応するユニット番号CPU#、識別子VSCid、及び要素番号ELMについて、それぞれの直前の値と比較し、それらが全て一致する場合にデッドロック状態と判定するデッドロック判定回路822と、再送時にMaster-Unit5及びSlave-Unit6による要素リクエストの発行タイミングをずらすための遅延値BSYCNTを生成する乱数発生回路823と、カウンタ回路821及びデッドロック判定回路822の動作を制御する検出期間制御回路824とを有する構成である。
【0106】
カウンタ回路821は、セレクタ、レジスタ(検出期間cnt)、減算器(−1)、及び比較器(=0)を備え、カウント開始時に外部から供給されるデッドロック検出期間信号の値(定数)を検出期間cntに取り込み、その値からカウント(decrement)を開始し、カウント値=0を検出したときにその結果を検出期間制御回路824へ出力する。
【0107】
デッドロック判定回路822は、再送idレジスタ(REG)及び比較器(=)を備え、要素の再送時にMMU入力RQレジスタ71から転送されるCPU#/VSCid/ELMを再送idREGで保持し、次の再送時に転送されるCPU#/VSCid/ELMと再送idREGに保持した値とを比較し、それらが全て一致した場合にデッドロック検出信号をアクティブにする。
【0108】
検出期間制御回路824は、ラッチ回路、論理和ゲート、及び論理積ゲートを備え、デッドロック判定回路822によりCPU#/VSCid/ELMの一致が検出された場合にカウンタ回路821にカウントを開始させ、カウント終了時(デッドロック検出期間の終了時)、あるいはデッドロック検出信号のアクティブ時でカウンタ回路821の検出期間cnt、及びデッドロック判定回路の再送idREGをリセットする。
【0109】
このような構成では、図7に示すように、任意の組のMaster-Unit5及びSlave-Unit6から発行された要素リクエストによりVSCアドレスバッファ72がオーバーフローし、要素の再送が発生(RQ再送発生)すると、検出期間制御回路824がデッドロック検出中信号をアクティブに設定し、カウンタ回路821にカウントを開始させてデッドロックの検出処理を開始する。デッドロックの検出処理はカウンタ回路821の検出期間cntの出力値が0になったときに終了する。
【0110】
デッドロック検出期間長は、1組のMaster-Unit5及びSlave-Unit6で発生する再送サイクルの周期の最長値(定数)に設定され、その値を、例えば情報処理装置が備える不図示のROMに格納しておく。そして、情報処理装置の電源投入時にデッドロック検出期間信号として該ROMからカウンタ回路821へ供給する。
【0111】
デッドロック判定回路822は、デッドロック検出処理の開始時に再送された要素リクエストに対応するユニット番号CPU#、識別子VSCid、及び要素番号ELMを再送idREGに保存しておく。そして、2回目の再送時のユニット番号CPU#、識別子VSCid、及び要素番号ELMと再送idREGに保持した値とを比較し、それらの値が全て一致したときにデッドロック状態であると判定する(デッドロック検出)。
【0112】
このとき、デッドロック判定回路822の出力信号であるデッドロック検出信号がアクティブになり、乱数発生回路823で生成された遅延値BSYCNTが再送リクエストレジスタ81に格納される。再送リクエストレジスタ81は、RQ再送要求信号に該遅延値BSYCNTを添付し、Master-Unit5及びSlave-Unit6に送出する(RQ再送要求)。同時に、検出期間制御回路824はデッドロック検出中信号をリセットして処理を終了する。
【0113】
RQ再送要求信号を受信したMaster-Unit5のMaster側RQ制御回路52及びSlave-Unit6のSlave側RQ制御回路62は、遅延値BSYCNTだけ要素リクエストの発行タイミングをずらし、指定された要素を再送する。
【0114】
このような処理を行うことで、1回目の再送サイクルよりも2回目の再送サイクルが長くなり再送サイクルの繰り返し周期が乱れるため、デッドロック状態から抜け出ることができる。
【0115】
但し、上述したデッドロックの回避方法は、複数組のMaster-Unit5及びSlave-Unit6間で発生する再送サイクルの周期を乱す方法であるため、CPUが1つのMaster-Unitと1つのSlave-Unitで構成される場合に発生するデッドロック状態は回避することができない。したがって、VSCアドレスバッファ72のエントリ数は、少なくとも(Master-Unit5で一度に処理する要素数)+1だけ必要である。
【0116】
本実施形態の情報処理装置によれば、VSCアドレスバッファ72を効率よく使用することが可能になり、VSCアドレスバッファ72の数を低減できるため、MMU7のコストを低減することができる。
【0117】
【発明の効果】
本発明は以上説明したように構成されているので、以下に記載する効果を奏する。
【0118】
ベクトル・スキャッタ命令により非同期動作ユニットからそれぞれ発行される複数の要素の書き込みリクエストのうち、格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される書き込み許可信号の出力を抑止することで、複数の非同期動作ユニット間で発生する処理順序の逆転による影響を排除することが可能になる。したがって、CPUを複数の非同期動作ユニットで構成できるため、各ユニットの規模を小さくすることが可能になり、ユニット(LSI)の歩留まりや外部端子数が低減されて、コストが低減される。
【0119】
また、VSCアドレスバッファで複数の非同期動作ユニットから送信される格納先アドレスをそれぞれ保持し、VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ要素の再送を要求するVSCアドレスバッファ制御部を備え、非同期動作ユニットは、自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、メインメモリ制御部から要素の再送が要求された場合にリトライバッファに保持した要素をメインメモリ制御部へ再送することで、VSCアドレスバッファを効率よく使用することができるため、VSCアドレスバッファの低減が可能になり、MMUのコストを低減することができる。
【図面の簡単な説明】
【図1】本発明の情報処理装置の第1の実施の形態の構成を示すブロック図である。
【図2】図1に示したMMCの一構成例を示すブロック図である。
【図3】図1に示した情報処理装置のVSC命令による動作の様子を示す模式図である。
【図4】本発明の情報処理装置の第2の実施の形態のCPU構成を示すブロック図である。
【図5】本発明の情報処理装置の第2の実施の形態のMMC構成を示すブロック図である。
【図6】図5に示したデッドロック検出制御部の構成を示すブロック図である。
【図7】図6に示したデッドロック検出制御部の動作の様子を示す模式図である。
【図8】ベクトル方式の計算機で使用されるVSC命令の仕様を示す模式図である。
【図9】CPUがMaster−Unit及びSlave−Unitから構成される場合にVSC命令により要素が主記憶装置へ格納される様子を示す模式図である。
【符号の説明】
1、5 Master−Unit
2、6 Slave−Unit
3、7 MMC
4 MM
11 命令制御部
12、52 Master側RQ制御回路
13、23、53 ベクトルレジスタ
14、24、54 PNU
15、25 CPU出力RQレジスタ
22 Slave側リクエスト制御回路
311、312、71 MMU入力RQレジスタ
32、72 VSCアドレスバッファ
33 リクエスト分配回路
34 順序監視回路
35 WEレジスタ
36 adr/dataレジスタ
37、77 比較回路
38、78 WE抑止回路
39、79 バッファ制御回路
54 PNU
56 制御用リトライバッファ
57 アドレス・データ用リトライバッファ
58 第1のセレクタ
59 第2のセレクタ
80 VSCアドレスバッファ制御部
81 再送リクエストレジスタ
82 デッドロック検出制御部
100 CPU
200 MMU
371 要素番号比較器
372 アドレス比較器
373 論理積ゲート
381 論理和ゲート
382、773 第1の論理積ゲート
383、791 第2の論理積ゲート
391 書き込み制御部
392 デコード回路
393 VSCidレジスタ
394 VSCid比較器
395 インバータ
331 WE2×8スイッチ
332 adr/data2×8スイッチ
771 ユニット番号比較器
772 識別子比較器
821 カウンタ回路
822 デッドロック判定回路
823 乱数発生回路
824 検出期間制御回路

Claims (7)

  1. ベクトル方式の情報処理装置であって、
    複数の非同期動作ユニットから構成されるCPUと、
    データを格納するメインメモリ部と、
    ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するVSCアドレスバッファを備え、ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い要素の書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止する、前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部と、
    を有し、
    前記メインメモリ制御部は、
    前記VSCアドレスバッファで前記複数の非同期動作ユニットから送信される前記格納先アドレスをそれぞれ保持し、前記VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさせたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求するVSCアドレスバッファ制御部を備え、
    前記非同期動作ユニットは、
    自ユニットが発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持するリトライバッファを有し、前記メインメモリ制御部から前記要素の再送が要求された場合に、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送する情報処理装置。
  2. 前記非同期動作ユニットは、
    各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正する請求項記載の情報処理装置。
  3. 前記メインメモリ制御部は、
    前記VSCアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記非同期動作ユニットへ送出し、
    前記非同期動作ユニットは、
    前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせる請求項1または2記載の情報処理装置。
  4. 前記VSCアドレスバッファで保持する前記格納先アドレスの数は、前記非同期動作ユニットが一度に処理する要素数+1以上である請求項1乃至3のいずれか1項記載の情報処理装置。
  5. 複数の非同期動作ユニットから構成されるCPUと、
    データを格納するメインメモリ部と、
    前記メインメモリ部に対するデータの書き込み処理を制御するメインメモリ制御部とを有するベクトル方式の情報処理装置のメモリ制御方法であって、
    予め、前記メインメモリ制御部に、ベクトル・スキャッタ命令で指定された各要素の前記メインメモリ部への格納先アドレスを保持するためのVSCアドレスバッファを備えておき、
    前記メインメモリ制御部により、前記ベクトル・スキャッタ命令で前記非同期動作ユニットからそれぞれ発行される前記メインメモリ部に対する要素の書き込みリクエストのうち、前記格納先アドレスが一致し、かつ要素番号順に処理されていない場合に、要素番号が若い書き込みリクエストに対応して生成される前記メインメモリ部への書き込み許可信号の出力を抑止し、
    前記複数の非同期動作ユニットから送信される前記格納先アドレスをVSCアドレスバッファでそれぞれ保持し、
    前記VSCアドレスバッファがオーバーフローを起こした場合に、該オーバーフローさ せたベクトル・スキャッタ命令を発行した非同期動作ユニットへ前記要素の再送を要求し、
    前記非同期動作ユニットで、発行した前記ベクトル・スキャッタ命令で指定された各要素をそれぞれ保持しておき、前記要素の再送が要求された場合は、前記リトライバッファに保持した要素を前記メインメモリ制御部へ再送するメモリ制御方法。
  6. 各非同期動作ユニットで再送を開始する要素のうち、最も若い要素番号に基づいて再送を開始する要素の要素番号を修正する請求項記載のメモリ制御方法。
  7. 前記VSCアドレスバッファのオーバーフローと前記非同期動作ユニットからの要素の再送を繰り返し実行するデッドロック状態を検出した場合に、前記非同期動作ユニットからの要素の再送タイミングをずらすための遅延値を前記メインメモリ制御部から前記非同期動作ユニットへ送出し、
    前記非同期動作ユニットは、前記要素の再送タイミングを前記メインメモリ制御部から受信した該遅延値だけ遅らせる請求項5または6記載のメモリ制御方法。
JP2002216607A 2002-07-25 2002-07-25 情報処理装置及びそのメモリ制御方法 Expired - Fee Related JP3734032B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002216607A JP3734032B2 (ja) 2002-07-25 2002-07-25 情報処理装置及びそのメモリ制御方法
US10/623,660 US7155580B2 (en) 2002-07-25 2003-07-22 Information processing apparatus and method of controlling memory thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002216607A JP3734032B2 (ja) 2002-07-25 2002-07-25 情報処理装置及びそのメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2004062311A JP2004062311A (ja) 2004-02-26
JP3734032B2 true JP3734032B2 (ja) 2006-01-11

Family

ID=31938321

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002216607A Expired - Fee Related JP3734032B2 (ja) 2002-07-25 2002-07-25 情報処理装置及びそのメモリ制御方法

Country Status (2)

Country Link
US (1) US7155580B2 (ja)
JP (1) JP3734032B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394653B1 (en) * 2017-05-02 2019-08-27 Mellanox Technologies, Ltd. Computing in parallel processing environments

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6015771A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd ベクトルプロセッサ
DE68928113T2 (de) * 1988-04-01 1997-10-09 Nec Corp Reihenfolgesteuersystem zur Behandlung von Befehlen
JPH04112328A (ja) 1990-09-03 1992-04-14 Nec Corp ストア命令の縮退制御方式
JPH0520350A (ja) 1991-07-10 1993-01-29 Koufu Nippon Denki Kk ベクトル処理装置
JPH0773095A (ja) 1993-09-01 1995-03-17 Kofu Nippon Denki Kk リストベクトル処理装置
JPH10334081A (ja) 1997-05-29 1998-12-18 Kofu Nippon Denki Kk リストベクトル処理装置
JP3000961B2 (ja) * 1997-06-06 2000-01-17 日本電気株式会社 半導体集積回路
JP3425885B2 (ja) 1999-03-16 2003-07-14 エヌイーシーコンピュータテクノ株式会社 メモリアクセス処理装置
US6629271B1 (en) * 1999-12-28 2003-09-30 Intel Corporation Technique for synchronizing faults in a processor having a replay system
JP3295728B2 (ja) 2000-01-07 2002-06-24 北陸先端科学技術大学院大学長 パイプラインキャッシュメモリの更新回路
JP3733842B2 (ja) 2000-07-12 2006-01-11 日本電気株式会社 ベクトルスキャタ命令制御回路及びベクトル型情報処理装置
US6862676B1 (en) * 2001-01-16 2005-03-01 Sun Microsystems, Inc. Superscalar processor having content addressable memory structures for determining dependencies

Also Published As

Publication number Publication date
US7155580B2 (en) 2006-12-26
US20040128472A1 (en) 2004-07-01
JP2004062311A (ja) 2004-02-26

Similar Documents

Publication Publication Date Title
US5968160A (en) Method and apparatus for processing data in multiple modes in accordance with parallelism of program by using cache memory
JP3661235B2 (ja) 共有メモリシステム、並列型処理装置並びにメモリlsi
US5282272A (en) Interrupt distribution scheme for a computer bus
US5261109A (en) Distributed arbitration method and apparatus for a computer bus using arbitration groups
US5586286A (en) Memory controller having flip-flops for synchronously generating DRAM address and control signals from a single chip
KR0145321B1 (ko) 2방향 데이타 전송장치
US5191649A (en) Multiprocessor computer system with data bus and ordered and out-of-order split data transactions
US5271020A (en) Bus stretching protocol for handling invalid data
CS287491A3 (en) Dynamic bus bus decision making with permission of joint use of each cycle
US6026451A (en) System for controlling a dispatch of requested data packets by generating size signals for buffer space availability and preventing a dispatch prior to a data request granted signal asserted
EP0892352B1 (en) Computer system with a bus having a segmented structure
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
US7274709B2 (en) Asynchronous crossbar with deterministic or arbitrated control
US7996592B2 (en) Cross bar multipath resource controller system and method
EP0242879A2 (en) Data processor with wait control allowing high speed access
US7877551B2 (en) Programmable partitioning for high-performance coherence domains in a multiprocessor system
CA2000376C (en) Vector processor using buffer for preparing vector data
EP1132818B1 (en) Method and data processing system for access arbitration of a plurality of processors to a time multiplex shared memory in a real time system
JP3734032B2 (ja) 情報処理装置及びそのメモリ制御方法
JP2006085428A (ja) 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム
JP2594600B2 (ja) シングルチップマイクロコンピュータ
JP3876771B2 (ja) 情報処理装置及びそれに用いるキャッシュフラッシュ制御方法
JP3628265B2 (ja) マルチプロセッサシステム装置
JP2004334863A (ja) 順番のある(in−order)キューをドレインする(drain)システムおよび方法
JP2002024007A (ja) プロセッサシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040427

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20041215

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20041215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050502

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: 20050928

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051011

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091028

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091028

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101028

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111028

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121028

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees