JP2005182754A - プロセス間伝達機構 - Google Patents

プロセス間伝達機構 Download PDF

Info

Publication number
JP2005182754A
JP2005182754A JP2004255010A JP2004255010A JP2005182754A JP 2005182754 A JP2005182754 A JP 2005182754A JP 2004255010 A JP2004255010 A JP 2004255010A JP 2004255010 A JP2004255010 A JP 2004255010A JP 2005182754 A JP2005182754 A JP 2005182754A
Authority
JP
Japan
Prior art keywords
message
register
destination
processor core
core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2004255010A
Other languages
English (en)
Inventor
Mark James Galbraith
ジェームズ ガルブレイス マーク
Harry Samuel Thomas Fearnhamm
サムエル トマス ファーンハム ハリー
Nicholas Esca Smith
エスカ スミス ニコラス
Bruce James Mathewson
ジェームズ マシューソン ブルース
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2005182754A publication Critical patent/JP2005182754A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

【課題】1個の発信元コアから2個以上の宛先コアにメッセージを送って効率的に応答する方法を提供する。
【解決手段】データ処理装置は少なくとも1個の発信元プロセッサ・コア110と、少なくとも2個の宛先プロセッサ・コア120と、メッセージ・ハンドラ130と、発信元コアと宛先コアとメッセージ・ハンドラとの間のデータ伝達路を与えるバス構成150とを備える。メッセージ・ハンドラ130は複数のメッセージ処理モジュール132を有する。少なくとも1個のメッセージ処理モジュールは、各宛先プロセッサ・コアにより変更可能な、その宛先がメッセージを受信したことを示すメッセージ受信表示器を有する。メッセージ処理モジュールは、前記宛先プロセッサ・コアの全てが前記メッセージを受信したことを前記表示器値に従って検出して、前記発信元プロセッサ・コアへの応答信号の送信を開始する送信完了検出器も有する。
【選択図】図9

Description

本発明はデータ処理システムに関するものである。特に、本発明はデータ処理システム内のメッセージ・データの伝達に関するものである。
多くの最近のデータ処理システムはプログラム・アプリケーションを走らせるために1個以上のプロセッサ・コアを用いている。かかる多コア・システムは、プロセッサ・コアがデータを相互に伝達するための、また1個の発信元コアから1個以上の宛先プロセッサ・コアに送られたデータが正しい宛先に受信されたかどうか判定するための機構を必要とする。
発信元プロセッサ・コアからのメッセージ・データを受けると宛先プロセッサ・コアが応答信号を送信し、この応答信号は通信バスにより宛先コアから発信元コアに直接送信される二重コア・データ処理システムは公知である。
しかしこのメッセージ応答機構は、メッセージが1個の発信元コアから2個以上の宛先コアに送られる(すなわち、マルチキャスト・メッセージの)場合は問題がある。マルチキャスト・メッセージでは、送信中のメッセージ伝達が完了したと発信元プロセッサ・コアが判定する前に、2個以上の宛先コアはそれぞれメッセージをすでに受信済みのはずである。かかるシステムでは、或る宛先コアは自分が最後のコアであって、メッセージ通知信号をクリアして、応答信号を発信元プロセッサ・コアにロックされた転送に頼ることなく送り返してよいことを保証することができない、という問題がある。
本発明の第1の形態が提供するデータ処理装置は、
少なくとも1個の発信元プロセッサ・コアと少なくとも1個の宛先プロセッサ・コアと、
複数のメッセージ処理モジュールを有するメッセージ・ハンドラであって、前記複数のメッセージ処理モジュールはそれぞれ少なくとも2個の指定された宛先コアに送信するために発信元プロセッサ・コアが生成したメッセージを記憶するよう割り当てられたメモリを有するメッセージ・ハンドラと、
前記発信元コアと前記宛先コアと前記メッセージ・ハンドラとの間のデータ伝達路を提供するバス機構と、
を備え、
各指定された発信元プロセッサ・コアに関連する少なくとも1個のメッセージ記憶モジュールは、
前記少なくとも2個の指定された宛先プロセッサ・コアによりそれぞれ変更可能な、対応する指定された宛先プロセッサ・コアが前記メッセージを受信したことを表示器値により示すメッセージ受信表示器と、
前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを前記表示器値に従って検出する送信完了検出器と、
前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを前記送信完了検出器が検出すると、これに応じて前記発信元プロセッサ・コアへの応答信号の送信を開始するメッセージ応答生成論理と、
を有する。
本発明の認識では、メッセージ受信表示器とトランザクション完了検出器とをメッセージ・ハンドラのメッセージ記憶モジュール内に設けることにより、少なくとも2個の宛先コアがそれぞれマルチキャスト・メッセージを受信したことの追跡が容易になり、全ての宛先コアがメッセージを受信したとメッセージ・ハンドラが判定してから1つの応答を発信元プロセッサ・コアに送ることができる。これにより、宛先コア内に実現すべき制御機構が簡単になる。なぜなら所定の宛先コアは、自分がメッセージを受信した最後の宛先コアかどうか、そうであれば応答割込みを発信元コアに送り返すかどうかをチェックする機能を有する必要がないからである。また、送信完了検出器を個々の宛先プロセッサ・コアではなくメッセージ・ハンドラ内に設けることにより、規模の変更が容易なシステムが得られる。なぜなら、メッセージ受信情報の照合をメッセージ・ハンドラ内で集中的に行うことが可能になるからである。
認識されるように、発信元プロセッサ・コアが少なくとも2個の指定された宛先プロセッサ・コアに送るメッセージは関連するデータ・ペイロードを有しない割込み信号でよい。しかし或る好ましい実施の形態では、少なくとも1個のメッセージ処理モジュールは指定された発信元プロセッサ・コアが生成したメッセージを記憶するために割り当てられたメモリを有し、このメッセージは1個以上の宛先プロセッサ・コアがバス機構を通して読み取ることができる。メッセージにデータ・ペイロード容量を規定することにより発信元コアと宛先コアとの間の一層高度の伝達が可能になる。メッセージのためのメモリはメッセージ処理モジュール自体の中にあるので、記憶されたメッセージとそのメッセージ処理モジュールとの間に明確なマッピングが存在する。
別の異なる好ましい実施の形態では、前記少なくとも1個のメッセージ処理モジュールは、前記指定された発信元プロセッサ・コアが生成したメッセージを記憶するための関連するメモリ領域を有する。この関連するメモリ領域は、前記少なくとも1個の発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアとの間で共用されるメモリ内の領域である。これにより、メッセージ・ハンドラ自体の中にデータ・レジスタを設ける必要なしにメッセージ・ハンドラはデータ・ペイロードを有するメッセージを伝達することができる。
認識されるように、発信元コアは少なくとも2個の指定された宛先コアのどれとも異なってよい。しかし好ましい実施の形態では、少なくとも2個の指定された宛先コアの1個は発信元プロセッサ・コアでもある。この形態により、同じプロセッサ・コア上で同時に走る2つの異なるプロセス間でも、別の異なるプロセッサ・コアへでも、メッセージ・データの伝達が可能になる。
メッセージ・ハンドラ内にメッセージが存在することを宛先プロセッサ・コアに通知するのに多くの種々の方法を用いることができる。例えば、メッセージ・ハンドラにポーリング要求を定期的に送り、メッセージが最近書き込まれたかどうか判定する。しかしメッセージ・ハンドラは割込み発生回路を備え、宛先プロセッサ・コアに割込みを送ることによりリポジトリ内にメッセージが存在することを宛先プロセッサ・コアに通知するのがよい。割込みを発生してこの通知を行うことにより、宛先コアは関係するメッセージが存在するという通知を迅速に受けて、そのメッセージを適切に検索して処理することができる。また、これにより各プロセッサ・コアは頻繁にポーリングする必要がなくなるので、バスの伝達帯域幅を節約することができる。
かかる形態では、宛先プロセッサ・コアはメッセージ・ハンドラから宛先コアに送られる割込みを処理する割込みコントローラを備えるのもよい。これにより、宛先プロセッサ・コアは受けた割込み信号を効率的に扱って処理することができる。
理解されるように、メッセージ・ハンドラが割込みを生成することにより、少なくとも1個の宛先プロセッサ・コアはそれぞれメッセージ・ハンドラ内にメッセージが存在するという通知を受けることができる。しかし好ましい実施の形態では、各メッセージ処理モジュールは宛先プロセッサ・コアへの割込みの送信を可能にしまたは無効にするための、プログラム可能な値を有するマスク状態レジスタを有する。これにより、メッセージ・リポジトリの少なくとも1つの部分集合は種々のメッセージ通知システム(ポーリング機構など)を用いることができる。このように、或るプロセッサ・コアはプログラム・アプリケーションの実行中に随時に割込みを受けるのではなく、処理動作の適当な段階でメッセージが存在することを、ポーリング機構を用いてポーリングすることができる。
好ましくは、マスク状態レジスタはマスク・レジスタ内のビットをセットするのに用いられる関連するマスク・セット・レジスタと、マスク・レジスタ内のビットをクリアするのに用いられるマスク・クリア・レジスタとを有する。これにより、読取り・変更・書込み(read-modify-write)転送を用いずにマスク状態レジスタ内の個々のビットをセットすることができる。
各宛先プロセッサ・コアは、関係するメッセージがどのメッセージ処理モジュールに記憶されるかに関する情報と、メッセージが存在することを宛先コアに通知する割込み信号とを受けてよいが、マスク状態レジスタは現在表明されている割込みをどのメッセージ記憶モジュールがトリガしたかを示す値を記憶する関連するマスクされた割込み状態レジスタを有するのが好ましい。これによりメッセージ通知割込みの生成が容易になり、しかも関係するメッセージが存在するという通知を受けると、宛先コアはマスクされた割込み状態レジスタ内の情報にすぐアクセスして、どのメッセージ処理モジュールを読み取ってメッセージを取得すべきか判定することができる。
理解されるように、少なくとも1個のプログラム可能なメッセージ処理モジュールの所有権は多数の異なる方法で調整してよいが、メッセージ処理モジュールは前記指定された発信元プロセッサ・コアに対応するプログラム可能な値を記憶する発信元レジスタを備えることが望ましい。発信元レジスタは他のプロセッサ・コアが容易に読み取ることができるし、また再プログラムするのが簡単である。またコアがメッセージ・ハンドラの所有権を要求するためには、1つのプロセッサ・サイクルで発信元レジスタに書き込んで所有権を得て、次のプロセッサ・サイクルで発信元レジスタを再び読み取って所有権の取得に成功したかどうか判定する。したがって、発信元コアの読取り・書込み動作をいっしょにロック(lock)する必要はない。
全ての宛先プログラム・コアがメッセージを受けたことを発信元コアに通知するのに用いられる割込み線は動的に選択してよいが、発信元レジスタは指定されたプロセッサ・コアに応答割込みを表明する割込み線を定義するのが好ましい。したがって、最後の宛先コアがメッセージを受けたとメッセージ・ハンドラが判定すると、発信元レジスタを読み取ってどの割込み線で応答を送るべきかを決める。
好ましい実施の形態では、プログラム可能なメッセージ処理モジュールの発信元レジスタはクリア・モードとプログラム・モードとを有する。クリア・モードでは、レジスタ内に保持されているプログラム値はクリア値であって発信元レジスタは書込み可能である。しかしプログラム・モードでは、クリア値の場合を除いて全ての値において宛先レジスタは書込み無効である。これにより、任意の時点でメッセージ処理モードの制御を有するのは1個のコアだけであることを保証することができる。
理解されるように、メッセージの宛先である宛先プロセッサ・コアは多くの異なる方法で指定することができるが、少なくとも1個のプログラム可能なメッセージ処理モジュールは少なくとも1個の宛先プロセッサ・コアを表すプログラム可能な値を記憶する宛先レジスタを持つのが望ましい。
好ましくは、宛先レジスタは、宛先レジスタ内のビットをセットするのに用いられる関連する宛先セット・レジスタと、宛先レジスタ内のビットをクリアするのに用いられる宛先クリア・レジスタとを有する。これにより、宛先レジスタ内の個々のビットは読取り・変更・書込みの転送を用いることなくセットすることができる。
或る好ましい実施の形態では、メッセージ処理モジュールのメッセージ受信表示器は宛先レジスタである。宛先レジスタは各メッセージ宛先を記憶するので、宛先コアがその宛先コアへの割込みをクリアすると、その宛先レジスタ内の対応するエントリをすぐクリアして、メッセージを受信したことを示すことができる。このように、宛先レジスタ内の全てのビットがクリアされると、発信元レジスタはマルチキャスト・メッセージ伝達が完了したことを知ることができる。このように、宛先レジスタはどのメッセージを受信したかを追跡する便利な方法を提供する。
認識されるように、多数の異なるメッセージを異なる時刻に各宛先コアに送ることができるし、各メッセージに対して独立に応答することができる。しかし特に好ましい実施の形態では、少なくとも1個の発信元プロセッサ・コアの1個はメッセージのシーケンスを前記複数のメッセージ処理モジュールのリンクされた部分集合に送る。このシーケンスの各メッセージはそれぞれ指定された宛先プロセッサ・コアを有し、メッセージ処理モジュールの前記リンクされた部分集合内の各メッセージ処理モジュールは、メッセージ受信表示器と、送信完了検出器と、メッセージ応答生成論理とを有する。各指定された宛先コアが前記先行メッセージを受信したことを前記メッセージ・シーケンス内の先行メッセージに対応するメッセージ処理モジュールのメッセージ受信表示器が示すと、メッセージ処理モジュールの前記リンクされた部分集合の前記メッセージ・シーケンス内の2番目以降のメッセージの送信が開始される。
メッセージ処理モジュールをこのようにリンクすることにより、発信元コアはメッセージ・ハンドラ内の異なるメッセージ処理モジュール内に複数のメッセージを積み重ねることができる。かかるメッセージは先行メッセージに応答した後にはじめて送ることができる。かかるメッセージは任意の選択された宛先プロセッサ・コアに送ることができる。先行メッセージを処理し終わるまではコアは次のメッセージの処理を開始することができない場合(例えば、各メッセージの内容が処理シーケンスに特に関係する場合)は、これは特に有用である。
宛先プロセッサ・コアへのメッセージ通知割込みとメッセージ・ハンドラへのメッセージ応答割込みとは割込みの現在の状態を追跡せずに送ってよいが、少なくとも1個のプログラム可能なメッセージ処理モジュールは、前記少なくとも1個の宛先プロセッサ・コアへの割込みまたは前記発信元プロセッサ・コアへの割込みが現在トリガされているかどうか判定する少なくとも1個の割込み状態ビットを記憶する送信レジスタを有することが好ましい。これによりシステムはどのメッセージ伝達が進行中かを追跡し、またデータの損失なしにメッセージ処理モジュールの所有権を安全に転送することができる適当な時点を決定することができる。
理解されるように、宛先プロセッサ・コアは戻りメッセージを発信元プロセッサ・コアに直接送ることにより、または戻りメッセージをメッセージ・ハンドラを介して送ることにより、メッセージを受けたことを応答することができるが、宛先プロセッサ・コアは送信レジスタ値を変更して宛先コアへの割込みをクリアすることによりメッセージを受けたことを示すのが好ましい。これにより、宛先プロセッサ・コアが1個以上あるとき、メッセージ記憶モジュールは受けた応答を全て効率的に照合して、メッセージ伝達を全てのプロセッサ・コアが受けたかどうか判定することができる。
宛先コアによる送信レジスタの変更を発信元プロセッサ・コアがポーリングにより監視して宛先コアがメッセージを受けたかどうか判定することができるが、送信レジスタの変更が発信元プロセッサ・コアへの応答割込みの送信を開始させるのが好ましい。
別の好ましい実施の形態では、少なくとも1個のメッセージ処理モジュールのメッセージ受信表示器は送信レジスタである。宛先プロセッサ・コアは該当するメッセージ処理モジュールの送信レジスタ値を変更して、メッセージ・ハンドラ内に関係するメッセージが存在することを示す割込みをクリアするので、送信レジスタ値を変更することは、対応する宛先コアにメッセージを受信したときを直接示す。リンクされたメッセージ処理モジュールの場合は、1個のモジュールの送信レジスタからの情報を用いて、リンクされた部分集合内の次のメッセージ処理モジュール内でのメッセージ生成をトリガすることができる。
認識されるように、メッセージ処理モジュールの部分集合をリンクするには多くの異なる方法を用いることができる。しかし好ましくは、少なくとも1個のメッセージ処理モジュールは、関連するメッセージ処理モジュールがメッセージ処理モジュールのリンクされた部分集合内の連続するメッセージ処理モジュールにリンクされているかどうかを示す値を記憶するモード・レジスタを有する。これは、モード・レジスタ内の値を変えることによりメッセージ処理モジュールのリンクを容易に再定義できることを意味する。
優れている点は、送信完了検出器はモード・レジスタ値を用いて或るメッセージ処理モジュールがリンクされた部分集合内の最後のメッセージ処理モジュールであることを検出したとき、前記最後のメッセージ処理モジュール内のメッセージの宛先コアが前記メッセージを受信したことを示すと前記発信元コアへの応答割込みの生成を開始してよいことである。最後のメッセージ処理モジュールのモード・レジスタ値をセットすると、シーケンス内には他のモジュールが存在せず、したがって関連する宛先コアが最後のメッセージ受信コアであることを示す。したがって、応答を発信元プロセッサ・コアに送り返すべき時点を容易に決定することができる。
認識されるように、応答信号はメッセージ処理モジュールのリンクされた部分集合に関連する各宛先プロセッサ・コアから発信元プロセッサ・コアに送ることができる。しかし好ましくは、最後のメッセージ処理モジュールを除く前記リンクされた部分集合内の全てのメッセージ処理モジュールは前記発信元プロセッサ・コアへの応答割込みの生成を無効にするように構成変更可能である。したがって、メッセージの全てのシーケンスを各宛先コアが受信して、受信した応答の数を発信元コアが追跡する必要がなくなってはじめて発信元プロセッサ・コアに割込みをかける。
発信元プロセッサ・コアに割込みを送るべきことを前記最後のメッセージ処理モジュールの送信レジスタが示すと、前記最後のプロセッサ・コアに関連するメッセージ処理モジュールは送信レジスタを自動的にセットして前記発信元プロセッサ・コアへの応答割込みの生成を開始することが好ましい。これは、応答割込みを行うにはプロセッサ・コアが更に介入する必要がないことを意味する。
理解されるように、メッセージ・ハンドラは種々のデータ処理システムに適応して用いることができるように多くの異なる構成パラメータを有してよい。しかし提供するメッセージ・ハンドラは、メッセージ記憶モジュールの構成変更可能な数と、メッセージを記憶するための構成変更可能なメモリ容量と、メッセージ・ハンドラが利用可能な割込み信号路の構成変更可能な数とを有するのが望ましい。メッセージ記憶モジュールの数が変更可能であることは、メッセージ・ハンドラが異なる数のコアを有するデータ処理システムに合わせて規模を変更することが可能なことと、同じハードウエア上で走る異なるプログラム・アプリケーションの異なるメッセージ通過要求に適応できることを意味する。メッセージ記憶容量が変更可能なので、種々の最大サイズのメッセージをプロセッサ間で伝達することができる。割込み信号の数が変更可能なので、所定の発信元プロセッサ・コアは指定された数の宛先プロセッサ・コアに所定のメッセージを実質的に同時に伝達することができる。
優れている点は、構成パラメータの現在の値がメッセージ・ハンドラ内の構成レジスタ内に記憶されるので、メッセージ・ハンドラ・ドライバ・ソフトウエアは現在のメッセージ・ハンドラ構成を判定できることである。所定のデータ処理システム内にメッセージ・リポジトリの複数の実現値(instance)がある場合は、各実現値の構成レジスタを読み取って、特定の実現値を用いる方法を決定する。
第2の形態では、本発明は少なくとも1個の発信元プロセッサ・コアと少なくとも1個の宛先プロセッサ・コアとの間で、複数のメッセージ処理モジュールを有するメッセージ・ハンドラと、前記発信元コアと前記少なくとも1個の宛先プロセッサ・コアと前記メッセージ・ハンドラとの間のデータ伝達路を与えるバス構成とを用いて、データを伝達するための方法を提供する。前記方法は、
指定された発信元プロセッサ・コアから、少なくとも2個の指定された宛先プロセッサ・コアのそれぞれに関連するメッセージ処理モジュールにメッセージを送信し、
前記発信元プロセッサ・コアかまたは前記指定された宛先プロセッサ・コアの1個に関連するメッセージ処理モジュールに属するメッセージ受信表示器の表示器値を変更して、対応する指定された宛先プロセッサ・コアが前記メッセージを受信したことを示し、
送信完了検出器を用いまた前記表示器値に従って、前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを検出し、
前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを前記送信完了検出器が検出すると、これに応じて前記発信元プロセッサ・コアへの応答信号の送信を開始する、
ステップを含む。
特許請求の範囲に定義されている本発明の補足的形態は、データ処理システム内の発信元コアを制御するコンピュータ・プログラムと、データ処理システム内の宛先コアを制御するコンピュータ・プログラムとを含む。
本発明の前記およびその他の目的と特徴と利点は、添付の図面を参照して例示の実施の形態の以下の詳細な説明を読めば明らかである。
図1は、2個のプロセッサ・コアと1個のメッセージ・ハンドラ130とを備えるデータ処理装置の略図を示す。この装置は、第1のプロセッサ・コア110および関連する割込みコントローラ112と、第2のプロセッサ・コア120および関連する割込みコントローラ122と、3個のメッセージ処理モジュール132,134,136を有するメッセージ・ハンドラと、プロセッサ・コア110,120とメッセージ・ハンドラ130の間のデータ伝達路を与える共通バス150とを備える。メッセージ・ハンドラ130は第1の割込みコントローラ112と第2の割込みコントローラ122とに信号線162および164により割込みをそれぞれ出力する。このバス構成では共通バス150を用いているが、別のバス構成では別個のバスを設けて各プロセッサとメッセージ・ハンドラ130とを接続してよい。
各メッセージ処理モジュールは所定量のデータを記憶することができる。メッセージ・データは一般に発信元プロセッサ・コアによってメッセージ処理モジュールに書き込まれ、少なくとも1個の宛先プロセッサ・コアによって読み取られる。発信元コアは一般に宛先コアとは異なる。しかし同じプロセッサ・コア上の異なるプロセッサからのメッセージもメッセージ・ハンドラを介して伝達することができる。3個のメッセージ処理モジュール132,134,136はそれぞれ、現在メッセージ伝達中かどうかに関わらず指定されたプロセッサ・コアへのメッセージを専用に記憶する固定モードか、またはメッセージ伝達中でないときはプロセッサ・コア110,120のどちらかがメッセージ処理モジュールへの書込みアクセスを主張することができる浮動モードになるように、メッセージ・ハンドラ130をプログラムして構成することができる。2個のプロセッサ・コア110,120のマスタ・オペレーティング・システムはどのメッセージ処理モジュールが浮動モードでどれが固定モードかを指定する情報で形成される。
メッセージ・ハンドラ130はソフトウエア制御の下に割込みを生成する。かかる割込みは一般に関連するデータを有し、複数の異なる割込み出力に向けることができる。各割込み出力は各メッセージ処理モジュール内の発信元レジスタと宛先レジスタとマスク・レジスタ内の1ビットに直接対応し(図3参照)、これらのレジスタは、どの割込み線を表明する(assert)か、またメッセージをいつ送りまた応答するかを制御する。1つ以上の割込み出力162,164が各割込みコントローラ112,122に接続してよい。図1Aの実施の形態のように、一般にメッセージ・ハンドラ130からの割込み出力はプロセッサ・コアに関連する各割込みコントローラ112,122に接続するので、任意のコアはデータ処理システム内の任意の他のコアにメッセージを送ることができる。しかし別の実施の形態では、1つ以上の割込みを1個のプロセッサ・コアの割込みコントローラに与えてよい。これにより、所定のプロセッサ・コアに与えられる異なる割込み線上に異なる種類のメッセージを示すことができる。
メッセージ・ハンドラ130からの各割込み出力は関連するチャンネルIDを有する。チャンネルIDは1ホット符号化(one-hot encoded)(すなわち、1ビットだけが1で他の全てのビットは0)16進数であって、発信元レジスタと宛先レジスタとマスク・レジスタとをプログラムするのに用いられる。宛先コアが割込みコントローラ112,122を介してメッセージ・ハンドラ割込みを受けると、宛先コアはその割込み線に関係するマスクされた割込み状態レジスタを読み取って、どのメッセージ処理モジュールが割込みをトリガしたか判定する。例えば、コア0がチャンネルID1にマップされる場合は、宛先コアはマスクされた割込み状態レジスタIPCMMIS0を読み取って、どのメッセージ処理モジュールを読み取ってメッセージを検索すべきか判定する。このマスクされた割込み状態レジスタは、1ビットが各メッセージ処理モジュールにマップされる32ビットの読取り専用レジスタである。
図1Bは、マスクされた割込み情報レジスタと生の(すなわち、マスクされない)割込み状態レジスタとにそれぞれ対応するIPCMMIS0とIPCMRIS0で示す2個の状態レジスタを用いてメッセージ処理モジュール0の状態をコア0に与える方法を示す。マスク・レジスタの機能については図3を参照して後で詳細に説明する。図1Bで、マスクされた割込み状態レジスタはどのメールボックスが割込みをトリガしたか識別する。この値は、生割込み状態とマスク状態レジスタとの論理積182である。全てのマスクされた割込み状態レジスタ出力の論理和をとり、図3に示すIPCMINT[31:0]割込み出力バスを形成する。
図1Aの実施の形態において、第1のプロセッサ・コア110からメッセージ・ハンドラ130を介して第2のプロセッサ・コア120にメッセージを伝達する場合を考える。この例では、第1のプロセッサ・コアが第1のメッセージ処理モジュール132の排他的所有権を有するようメッセージ・ハンドラは形成されている。したがって、第1のプロセッサ・コア110だけがモジュール132への書込みアクセスを有する。第1のプロセッサ・コア110はメッセージを生成し、このメッセージをメッセージ処理モジュール132に書き込んで、メッセージの宛先が第2のプロセッサ・コア120であると指定する。メッセージ記憶リポジトリは信号線164に割込みを生成し、割込みコントローラ122はこれを受けて、第2のプロセッサ・コア120にそのコア宛てのメッセージがメッセージ・ハンドラ130内に記憶されていることを通知する。第2のプロセッサ・コア120はマスクされた割込み状態レジスタ入力から、関係するメッセージを第1のメッセージ処理モジュール132が含むと判定して、メッセージ・ハンドラ130内のこの位置からメッセージを読み取る。次に第2のプロセッサ・コア120はメッセージを受けたという応答をメッセージ・ハンドラ130に送り返す(応答を第1のプロセッサ・コア110に直接送らない)。第1のプロセッサ・コア110は第1のメッセージ処理モジュール132内のレジスタを読み取って、応答を受けたかどうか判定する。前のメッセージを受けたという応答があってはじめて、第1のプロセッサ・コア110は新しいメッセージを第1のメッセージ処理モジュール132に書き込むことができる。
メッセージ・ハンドラ130は、データ処理装置上で走る異なるプロセッサ・アプリケーションについて3個のメッセージ処理モジュール132,134,136の所有権モードが異なるように形成することができる。例えば、プログラム・アプリケーションAが走っているとき、第1および第2のメッセージ処理モジュール132,134は共に固定モードであって第1のプロセッサ・コア110専用であり、第3のメッセージ処理モジュールは第2のプロセッサ・コアが排他的に所有してよい。しかしプログラム・アプリケーションBが走っているときは、第1のメッセージ処理モジュール132は第1のプロセッサ・コアが排他的に所有し、第2のメッセージ処理モジュール134は第2のプロセッサ・コアが排他的に所有し、第3のメッセージ処理モジュール136は浮動モジュールであってその所有権はメッセージ伝達中でないとき第1のプロセッサ・コア110または第2のプロセッサ・コア120が得てよいようにメッセージ・ハンドラ130を形成してよい。このようにプロセッサ・コアとメッセージ記憶との間のマッピングを調整することが可能なので、データ処理システムは異なるアプリケーションの異なるメッセージ通過要求に効率的に適応することができる。
2つ以上のアプリケーション・プログラムが同じデータ処理システム上で同時に走っている場合は、アプリケーション間で文脈の切替えが起こるとマスタ・オペレーティング・システムはメッセージ・ハンドラの構成の変更を開始する。文脈の切替えが発生すると、全てのレジスタの内容をメモリに記憶する。本発明では、文脈が切り替わると、メッセージ記憶リポジトリの内容はメモリにコピーされ、メッセージ通過機構に関連する全ての割込みはクリアされる。
図2は図1Aのメッセージ・ハンドラ130の機能的構成要素の略図を示す。メッセージ・ハンドラ130は、バス・インターフェース・モジュール210と、複数のメッセージ処理モジュールおよび関連する制御論理132と、割込み発生論理220とを備える。
この例示の実施の形態では32個のメッセージ処理モジュールがある。これらの32個のモジュールはそれぞれ、制御情報を記憶するための制御レジスタと、メッセージを記憶するためのデータ・レジスタとを有する。メッセージが1つのメッセージ処理モジュールのデータ・レジスタに書き込まれると、割込み発生論理220はトリガされて指定された各宛先コアに割込みを送る。バス・インターフェース・モジュール210は、英国キャンブリッジのARM社が開発した高度マイクロプロセッサ・バス構造(Advanced Microprocessor Bus Architecture)(AMBA(登録商標))プロトコルを用いて共通バス150によるデータの伝達を可能にする。発信元プロセッサ・コアからの書込み要求と宛先プロセッサ・コアからの読取り要求はこのバス・プロトコルを用いて処理される。
図2はバス・インターフェース・モジュール210に出入りする一連のバス信号入力と出力とを示す。下の表1はバス・インターフェース・モジュール210が用いるAMBA高度高性能バス(Advanced High-Performance Bus)(AHB)スレーブ信号のリストである。表1は信号の種類毎に入力信号か出力信号か指定し、対応する信号により伝達される情報の説明を与える。Hを前置した全ての信号はAHB信号を示すことに注意していただきたい。表1では、メッセージ・ハンドラ130をIPCM(プロセッサ間伝達モジュール inter-processor communicaiton module)で示す。
入力信号HCLKとHRESETnとはAMBA AHBの共通信号である。信号HCLKはメッセージ・ハンドラ130内のクロック・コントローラに与えられるクロック入力信号であり、信号HRESETnはローのときが活動状態であるバス・リセット信号である。信号IPCMINT[31:0]は、メッセージ・ハンドラ130の割込み生成論理220が出力する32ビットの信号(ハイのときが活動状態)である。これは所定のメッセージにおける指定された宛先プロセッサ・コアの割込みコントローラ向けの割込み信号である。これらの割込み信号は、関係するメッセージがメッセージ・リポジトリ内に存在することを宛先プロセッサ・コアに通知するのに用いられる。
入力信号MBOXNUM[5:0]と、INTNUM[5:0]と、DATANUM[2:0]とは、メッセージ処理モジュールとその関連する制御論理とを含むユニット132に与えられる。これらの3入力はそれぞれタイオフ(tie-off)専用信号である。MBOXNUM[5:0]は活動状態のメールボックスの数を定義する入力構成ピンである。INTNUM[5:0]は活動状態の割込みの数を定義する入力構成ピンである。DATANUM[2:0]は各メールボックス内の活動状態のデータ・レジスタの数を定義する入力構成ピンである。

Figure 2005182754
図2の割込み発生論理220は最大32の割込み信号IPCMINT[0:31]を出力する。32のチャンネルIDはそれぞれ割込み信号にマップする。
図3は、メッセージ処理モジュール割込み信号をメッセージ・ハンドラ割込み出力にマップする方法の概要を示す。図3に示すように、各メッセージ処理モジュールは、発信元レジスタ310と、宛先レジスタ320と、マスク・レジスタ330と、送信レジスタ340と、メッセージ・データを記憶する複数のデータ・レジスタ350と、モード・レジスタ360とを備える。
この実施の形態では、メッセージ・ハンドラは、1から32の間のプログラム可能なメッセージ記憶リポジトリと、各メッセージを記憶するための最大7個の32ビットのデータ・レジスタとを備える。またこの形態は1から32の間の読取り専用割込み状態レジスタを備え、コア毎に1個の割込み状態レジスタがある。或る割込みはマスク・レジスタ330を介して禁止になる。
メッセージハンドラ130は3つの変更可能なパラメータを有する。
(1) 割込みの数(1から32)
(2) メッセージ処理モジュールの数(1から32)
(3) データ・レジスタの数(0から7)
上の3つのパラメータを適当に設定することにより、メッセージ・ハンドラはデータ処理システムの要求に合うように特定して形成することができるので、関係するシステムの回路のゲート数をできるだけ減らして性能と効率を高めることができる。上の3つの変更可能なパラメータ毎に選択される値はメッセージ・ハンドラ内の読取り専用構成状態レジスタ内で指定される。メッセージ・ハンドラ・ソフトウエア・ドライバは読取り専用構成状態レジスタを用いて、所定のシステムでメッセージ・ハンドラを用いる方法を決定する。
発信元レジスタ310は32ビットの読取り/書込みレジスタで、メッセージを生成した発信元プロセッサ・コアを識別するのに用いられる。発信元レジスタ310をチャンネルID値でプログラムして、応答割込み信号を乗せて送るべき割込み線を識別する。チャンネルIDは、現在のレジスタ値が0x00000000(クリア・モードであることを示し、頭の0xは16進数を示す)の場合だけこのレジスタ内にプログラムすることができる。クリア値以外の値でレジスタがプログラムされているときは、プログラムを変更する前にまずクリアして0x00000000にしなければならない。この機構は、任意の時点でメッセージ記憶リポジトリの制御を有するのは1個のコアだけであることを保証する。
メッセージを送るには、発信元プロセッサ・コアはメッセージ記憶リポジトリの所有権(すなわち、書込みアクセス)を得なければならない。これを行うには、発信元コアはそのチャンネルIDの1つを発信元レジスタ310に書き込み、次に発信元レジスタを再び読み取って、書込みが成功したか、また所有権を確保したか判定する。発信元レジスタ310は1つのプログラム値(すなわち1つのチャンネルID)だけしか含んではならない。メッセージ記憶リポジトリ・ソフトウエアは1つの符号化された数だけを確実に発信元レジスタ310に書き込むので、関連するメッセージ処理モジュールには1つの発信元プロセッサ・コアだけが書込みアクセスを有する。発信元レジスタ310がプログラムされた状態にあって或るチャンネルIDを含む場合は、クリアすることはできるが異なるチャンネルIDを上書きすることはできない。浮動モードにあるメッセージ処理モジュールがその後必要がなくなった場合は、コアは発信元レジスタ310をクリアすることにより放棄する。発信元レジスタ310をクリアするとメッセージ記憶リポジトリ内の他の全てのレジスタ320,330,340,350もクリアする。これにより、新しく割り当てられるときメッセージ記憶リポジトリは必ずクリアされている。
宛先レジスタ320は32ビットのレジスタで、データ処理装置内の1個以上のメッセージ宛先コアを指定するのに用いられる。宛先レジスタ320は別々の書込みセット位置とクリア位置とを有し、読取り・変更・書込み転送を用いずに宛先レジスタ内の個々のビットをセットすることができる。宛先レジスタ内の1ビットは、そのビットを宛先セット・レジスタに書き込むことによりセットすることができる。宛先セット・レジスタは32ビットの書込み専用レジスタで、その機能はメッセージ処理モジュールの宛先レジスタ内のビットをセットすることである。宛先セット・レジスタ内のビットをセットすると、ハードウエアはそのビットと宛先レジスタ320内の現在の値との論理和をとる。同様に、宛先レジスタ320内の1ビットは、そのビットを32ビットの書込み専用の宛先クリア・レジスタに書き込むことによりクリアすることができる。発信元コアは、全てのチャンネルIDの論理和を宛先レジスタ内にプログラムすることによりどのコアを宛先コアにするかを定義する。或るコアが1個以上のチャンネルIDを有する場合は、メッセージ当たり1個だけ用いる。宛先レジスタ320は、発信元レジスタを定義した(その中にチャンネルIDを書き込んだ)後にはじめて書き込むことができる。
マスク・レジスタ330は割込み出力当たり1ビットを有する32ビットのレジスタである。所定のプロセッサについてのビットをゼロにセットするとそのプロセッサ・コアの割込みは禁止になるが、そのビットを1にセットするとそのコアの割込みは可能になる。このように割込みが禁止になると、コアはメッセージ・ハンドラ130を頻繁にポーリングして、関係するメッセージがそこに入ったかどうか判定する。発信元レジスタ310がクリアされるとマスク・レジスタはクリアされる。宛先レジスタ320と同様に、マスク・レジスタ330は変更するのに別々の32ビットの書込み専用のセット・レジスタとクリア・レジスタとを用いる。マスク・レジスタ330は割込み出力を可能にする。或るメッセージ記憶リポジトリの割込みを可能にするには、コアは宛先コアのチャンネルIDをマスク・セット・レジスタに書き込む。そのメッセージ記憶リポジトリの割込みは、マスク・クリア・レジスタに同じチャンネルIDを書き込むことによりマスクすることができる。マスク・レジスタ330の位置には、発信元レジスタ310を定義した後ではじめて書き込むことができる。
送信レジスタ340は発信元コアまたは宛先コアにメッセージを送るのに用いられる2ビットの読取り/書込みレジスタである。送信ビットは、発信元レジスタを定義した後ではじめて書き込むことができる。送信レジスタの第0ビットをセットすると宛先コアへの割込みを生成し、第1ビットをセットすると発信元コアへの割込みを生成する。メッセージは、送信レジスタ340のビット0をセットすることにより送られる。これは宛先コアへの割込みをトリガする。このビットをクリアすると宛先コアへの割込みをクリアする。応答割込みは送信レジスタ340のビット1をセットすることにより送られる。このビットをクリアすると発信元コアへの割込みをクリアする。送信レジスタ340内のビット0をクリアしビット1をセットするのは1つの書込みで行うことができる。ただし、これは必須ではない。送信レジスタ340は発信元レジスタ310を定義した後ではじめて書き込むことができる。送信レジスタのビット割当ての詳細を下の表2に示す。
Figure 2005182754
データ・レジスタ350は一連の7個の32ビットの読取り/書込みレジスタで、メッセージ・データを記憶するのに用いられる。データ・レジスタは発信元レジスタを定義した後ではじめて書き込むことができるし、また発信元レジスタがクリアされるとクリアされる。データ・レジスタ350は一般にメッセージを送る前に書き込まれる。メッセージ処理モジュール当たりのデータ・レジスタの数は0から7の間である。メッセージ処理モジュール内にデータ・レジスタがない実施の形態では、メッセージは共用メモリの所定の領域内に記憶される。共用メモリはデータ処理システムの発信元コアと宛先コアとの間で共用される。
モード・レジスタ360は2ビットの読取り/書込みレジスタである。ビット0をセットすると対応するメッセージ処理モジュール内の自動応答モードが可能になり、ビット1をセットすると自動リンク・モードが可能になる。発信元レジスタ内の或るビットをセットして対応するメッセージ処理モジュールの所有権が表明されてはじめてモード・レジスタに書き込むことができる。発信元レジスタがクリアされるとモード・レジスタはクリアされる。
自動応答モードが可能のときは、各宛先プロセッサ・コア毎に1ビットがセットされている宛先レジスタが完全にクリアされると、応答割込みが発信元プロセッサ・コアに自動的に送り返される。対応するメッセージを受けると、各宛先コアは宛先レジスタの該当するビットをクリアしてメッセージ通知割込みをクリアする。宛先コアがこれを行うには、そのチャンネルID値を宛先クリア・レジスタ内の該当するビットに書き込む。このように、自動応答割込みは、全ての宛先コアがいつメッセージを受けてその割込みをクリアしたかを示す。宛先コアが2個以上ある場合は、必ず自動応答モードをセットしなければならない。自動応答に関連するデータは元のメッセージのデータと同じである。自動応答モードは、32個のコアを備えるデータ処理システム内の1から32個の間の受信コアについて用いることができる。モジュール0のモード・レジスタ内の自動リンク・ビットをセットすると、メッセージ処理モジュール0はメッセージ処理モジュール1とリンクされる。自動応答モードでは宛先レジスタはメッセージ受信表示器として働き、各宛先プロセッサ・コアはこれを変更してメッセージ通知割込みをクリアする。メッセージ処理モジュール内の送信完了検出器は宛先レジスタのビット設定を監視して、全てのメッセージをその宛先にいつ受けたか判定し、また発信元プロセッサ・コアへの応答割込みの送信をいつ開始すべきか決定する。
宛先コアが1個の場合は応答割込みは手動でよい。すなわち、自動応答モードは無効である。この場合、応答のメッセージを更新する可能性がある。手動割込みでは、宛先コアが送信レジスタのビット0をクリアしてメッセージ通知割込みをクリアしまた送信レジスタのビット1をセットして応答割込みを(手動で)開始すると、応答割込みが生成される。
自動リンク・モードが可能になると、メッセージ処理モジュールのリンクされた部分集合はこれらのメッセージ処理モジュール内に記憶されているメッセージをその宛先に順次送るように定義される。シーケンス内の次のメッセージは前のメッセージをその宛先コアが受けてはじめて送られる。シーケンス内の最後のメッセージをその宛先が受けてはじめて発信元プロセッサ・コアに応答が送られる。モード・レジスタ内のビット1をセットして自動リンク・モードが可能になった場合は、対応するメッセージ処理モジュール内に記憶されているメッセージに関する宛先コアがそのメッセージ通知割込みをクリアすると発信元コアへの応答割込みは抑制され、代わりに、この割込みのクリアにより次のメッセージ処理モジュールからのシーケンス内の次のメッセージの送信を開始する。自動リンクが可能になり且つ自動応答が無効になると(後で説明するように)、宛先コアは通常のように送信レジスタのビット0をクリアしビット1をセットするが、発信元コアへの応答割込みはマスクされて次のメッセージ処理モジュール内の送信ビット0がセットされることに注意していただきたい。したがって、リンクされた部分集合内の最後のメッセージ処理モジュールの自動リンク・モードは可能にならないので、最後のメッセージをその宛先が受けたときは応答割込みは抑制されない。システムの実現と試験とを容易にするために、メッセージ処理モジュールをリンクする順序を固定すると便利である。好ましい実施の形態では、モジュール0はモジュール1にリンクし、モジュール1はモジュール2にリンクするというようにして、メッセージ処理モジュール31までリンクする。メッセージは該当するモジュール内にプログラムされるので、望ましいシーケンスが得られる。
自動リンク・モードでは、送信するコアは多数のメッセージ処理モジュールを自分自身に割り当て、リンクされた部分集合内の最後を除く全てのモジュールの自動リンク・ビットをセットして各モジュールを全てリンクし、その部分集合の全てのモジュール内にメッセージをプレロードしてよい。第1のメッセージが送られても、全てのメッセージが送られるまでは応答は出されない。これらのメッセージの宛先に制約はない。1つのメッセージ送信シーケンスでは、自動リンク・モードと自動応答モードとを共に可能にすることができる。
自動リンク・モードが無効のときに応答割込みが送られると発信元コアに割込みがかかるが、これは任意の他のメッセージ処理モジュールに影響を与えない。
自動リンク・モードでは、メッセージ記憶モジュールの送信レジスタはメッセージ受信表示器として働く。なぜなら、メッセージ通知割込みをクリアすることにより、送信レジスタは宛先プロセッサ・コアにより変更されてメッセージを受けたことを示すからである。メッセージ処理モジュールがリンクされた場合は、メッセージ記憶モジュールのモード・レジスタの自動リンク・モード・ビットは送信レジスタと共にトランザクション完了検出器として働く。リンクされた部分集合内の最後メッセージ処理モジュールは自動リンク・モードにセットされないので、シーケンスの最後のメッセージを受けると、発信元プロセッサ・コアへの応答割込みの送信が開始される。
図3の32個のメッセージ記憶リポジトリは、それぞれ最大32の割込み(各チャンネルID毎に1つ)を生成することができる。割込みの数は、発信元レジスタと宛先レジスタとマスク・レジスタ内のビット数を定義する。例えば、図3のメッセージ処理モジュールを構成要素とするメッセージ・ハンドラは32個の割込み出力を有する。メッセージ記憶リポジトリ0はIPCMMIS0-31バスのビット0を生成し、メッセージ記憶リポジトリ31はIPCMMIS0-31バスのビット31を生成する。多重メッセージ記憶リポジトリを図3に示すOR論理ゲート362,364を介してグループ化して、32ビットのメッセージ・ハンドラ割込みバスIPCMINT[31:0]を形成する。1個のチャンネルIDに関係する各メッセージ記憶リポジトリからの全ての割込みビットをグループ化して、マスクされた割込み状態バス(IPCMMIS0[31:0]からIPCMMIS31[31:0])を形成する。次にOR論理ゲート362,364を介してこれらのバス内のビットの論理和をとり、メッセージ処理割込みバスを形成する。
図4は、メッセージ・ハンドラ130と、メッセージ処理モジュール132-1から132−nの制御レジスタとの基本的動作の概要を示す流れ図である。ステージ410で、発信元コア(コア0)は発信元レジスタ310内の第0ビットをセットすることによりメッセージを生成して浮動メッセージ記憶リポジトリの所有権を主張する。ステージ420で、発信元コアは宛先レジスタ内の第1ビットをセットしてコア1を宛先ビットと定義し、また割込みを可能にする。ステージ430で、発信元コアはメッセージをデータ・レジスタ350内にプログラムする。発信元コアは送信レジスタ340に01と書き込むことにより、メッセージを宛先コアに送る。これはコア1への割込みを表明して、関係するメッセージがリポジトリ内に書き込まれていることを宛先コアに通知する。
次にステージ440で、宛先コア1は割込みを受け、マスクされた割込み状態レジスタを読み取って、どのメッセージ処理モジュールがメッセージを含むか判定する。ステージ450で、宛先コアは識別されたメッセージ処理モジュールからメッセージを読み取り、割込みをクリアし、送信レジスタに10と書き込んで応答割込みを表明し、発信元コアへのメッセージの送信をトリガする。最後にステージ460で、発信元コアは応答メッセージの割込みを受けて、メッセージ通過動作を完了する。最終ステージ460でメッセージの交換が完了した後、発信元コアはメッセージ記憶の所有権(すなわち、書込み制御)を保持して他のメッセージの送信を可能にしてもよいし、またはメッセージ記憶リポジトリを解放してシステム内の他のコアに使わせてもよい。
図5は、2個のプロセッサ・コア0(発信元コア)とコア1(宛先コア)との間のメッセージ送信シーケンスの略図である。このメッセージ送信シーケンスが関係するデータ処理装置内には4個のメッセージ処理モジュールがある。発信元コア0はチャンネルID1を用い、宛先コア1はチャンネルID2を用いる。次の事象のシーケンスが発生する。
図5のメッセージ送信シーケンスでは、次の事象の時間シーケンスが発生する。
ステージ1で、コア0は「発信元0」レジスタ内のビット0をセットすることによりメッセージ処理モジュール0の制御を取得し、自分自身を発信元コアと識別する。ステージ2で、コア0はマスク・レジスタ330内のビット0と1とをセットすることによりコア0とコア1への割込みを可能にする。ステージ3で、コア0は宛先レジスタ320内のビット1をセットすることにより宛先コアを定義する。ステージ4で、コア0はデータ・ペイロードDA7A0000をプログラムする。ステージ5で、コア0は「送信0」ビット0をセットしてコア1へのメッセージ処理モジュール0の割込みをトリガする。ステージ6で、コア1は「状態1」の位置を読み取り、どのメッセージ処理モジュールが割込みを発生させたか判定する。この場合、メッセージ処理モジュール0だけが示される。ステージ7で、コア1はデータ・ペイロードを読み取る。ステージ8で、オプションであるがコア1はデータ・ペイロードを応答データDA7A1111で更新する。ステージ9で、コア1は送信レジスタ340内のビット0をクリアしビット1をセットしてその割込みをクリアし、コア0に手動の応答割込みを返す。ステージ10で、コア0は「状態0」を読み取り、どのメッセージ処理モジュールが割込みを発生させたか判定する。この場合も、メッセージ処理モジュール0だけが示される。ステージ11で、コア0は応答ペイロード・データを読み取る。ステージ12で、コア0は送信レジスタ内のビット1をクリアしてその割込みをクリアする。ステージ13で、コア0は「発信元0」をクリアすることによりメッセージ処理モジュールの所有権を解放し、更にレジスタ位置「宛先0」、「マスク0」、「データ0」をクリアする。ステージ13で「発信元0」レジスタをクリアせず、コア0はメッセージ処理モジュールを保持して別のデータ・メッセージを送ってよいことに注意していただきたい。
図6は、2つの連続するメッセージをコア0からコア1に送るメッセージ送信タイミング・シーケンスの略図である。図3のメッセージ・シーケンスと同様に、2個のコアと4個のメッセージ処理モジュールがある。コア0は発信元コアであり、コア1は宛先コアである。コア0はチャンネルID1を用い、コア1はチャンネルID2を用いる。コア0は或るメッセージをコア1に送って応答を得、また別のメッセージをコア1に送ってこれも応答を得る。
図6のメッセージ送信タイミング・シーケンスでは、次の事象のシーケンスが発生する。
ステージ0で、コア0は「発信元0」レジスタ内のビット0をセットすることによりメッセージ処理モジュール0の制御を取得し、自分自身を発信元コアと識別する。ステージ2で、コア0はマスク・レジスタ330内のビット0と1とをセットすることによりコア0とコア1への割込みを可能にする。ステージ3で、コア0は宛先レジスタ320内のビット1をセットすることにより宛先コアを定義する。ステージ4で、コア0はデータ・ペイロードDA7A0000をプログラムする。ステージ5で、コア0は送信レジスタ340のビット0をセットして割込みを宛先コアに送る。ステージ6で、コア1は「状態1」を読み取りまたデータ・ペイロードを読み取る。ステージ7で、オプションであるがコア1はデータ・ペイロードを応答DA7A1111で更新する。ステージ8で、コア1は送信レジスタ340内のビット0をクリアしビット1をセットしてコア0に手動応答を与える。ステージ9で、コア0は「状態0」を読み取りまたデータ・ペイロードを読み取る。ステージ10で、コア0はデータ・ペイロードを次のメッセージDA7A2222でプログラムする。ステージ11で、コア0は送信レジスタのビット1をクリアしビット0をセットして割込みを宛先コアに送る。ステージ12で、コア1は「状態1」を読み取りまたデータ・ペイロードを読み取る。ステージ13で、オプションであるがコア1はデータ・ペイロードを応答DA7A3333で更新する。ステージ14で、コア1は送信レジスタ340内のビット0をクリアしビット1をセットしてコア0に手動応答を返す。ステージ15で、コア0は「状態0」を読み取りまたデータ・ペイロードを読み取る。最後にステージ16で、コア0は「発信元0」をクリアすることにより割込みをクリアしまたメッセージ処理モジュールの所有権を解放し、更にレジスタ「宛先0」、「マスク0」、「送信0」、「データ0」をクリアする。
図7は、1個の発信元コアから3個の宛先コアにメッセージを伝達するメッセージ送信タイミング・シーケンスの略図である。この場合、全ての宛先コアがメッセージを受けると自動応答が生成される。
この例示のシステムでは、コア0は発信元プロセッサ・コアであり、コア1,2,3は宛先プロセッサ・コアである。4個のコアは関連するメッセージ処理モジュールをそれぞれ有する。
・ コア0はチャンネルID1を用いる。
・ コア1はチャンネルID2を用いる。
・ コア2はチャンネルID4を用いる。
・ コア3はチャンネルID8を用いる。
このメッセージ伝達では自動リンク・モードは無効である。
以下の伝達のタイミング・シーケンスが発生する。
ステージ1で、コア0は「発信元0」レジスタ内のビット0をセットすることによりメッセージ処理モジュール0の制御を取得し、自分自身を発信元プロセッサ・コアと識別する。ステージ2で、コア0は「モード」ビット0をセットしてメッセージ処理モジュールを自動応答モードにする。ステージ3で、コア0はマスク・レジスタ内のビット0,1,2,3をセットすることによりコア0,コア1,コア2,コア3への割込みを可能にする。ステージ4で、コア0は宛先レジスタ内のビット1,2,3をセットすることにより宛先コアを定義する。ステージ5で、コア0はデータ・ペイロードDA7A0000をプログラムする。
次にステージ6で、コア0はその送信レジスタのビット0をセットして宛先コアに割込みを送る。ステージ7で、コア1は「状態1」を読み取りまたデータ・ペイロードを読み取る。ステージ8で、コア1は宛先レジスタ内のビット1をクリアする。ステージ9で、コア3は「状態3」を読み取りまたデータ・ペイロードを読み取る。ステージ10で、コア3は宛先レジスタ内のビット3をクリアする。ステージ11で、コア2は「状態2」を読み取りまたデータ・ペイロードを読み取る。ステージ12で、3個のコアの中で最後にメッセージを受けるコア2は宛先レジスタ内のビット2をクリアする。このようにコア2が最終の宛先ビットをクリアすると、コア0に関連するメッセージ処理モジュールは自動的にこれを検出し、送信ビット0をクリアし送信ビット1をセットして、自動応答を発信元プロセッサ・コア(コア0)に送り返す。自動応答モードではデータ・レジスタは更新されないことに注意すべきである。
ステージ13で、発信元プロセッサ・コア(コア0)は「状態0」を読み取りまたデータ・ペイロードを読み取る。この例のシーケンスの最終ステージであるステージ14で、「発信元0」レジスタをクリアすることによりコア0は割込みをクリアしまたメッセージ処理モジュールの所有権を解放し、更にレジスタ「送信0」と「データ0」とをクリアする。しかし別のメッセージ送信シーケンスで、ステップ14でコア0が送るべき別のメッセージを有する場合は、発信元レジスタをセットしたままにしてメッセージ処理モジュールの所有権を保持し、宛先レジスタ、モード・レジスタ、「マスク0」レジスタを更新し、データ・レジスタに新しいメッセージをロードしてよい。
図8は、発信元コアから1個の宛先コアに、リンクされたメッセージのシーケンスを送るメッセージ送信タイミング・シーケンスの略図である。この例示のシステムでは4個のメッセージ処理モジュールがあるが、モジュール0と1だけが活動状態であり、メッセージ処理モジュール3と4は非活動状態である。自動リンクの機能を明確に説明するために、この例では自動リンク・メッセージ送信モードは可能であるが自動応答モードは無効である。したがって、オプションであるがシーケンス内の最後のメッセージを受ける宛先コアは応答割込みを発信元プロセッサ・コアに送ってよい。応答は手動である。その意味は、宛先コアは発信元コアに関連するメッセージ処理モジュールの送信レジスタの割込みをクリア(送信レジスタのビット0をクリア)した後でそのビット1を活動状態にセットして、その関連するメッセージ処理モジュールから発信元コアへの割込みの返送を開始するということである。対照的に自動応答モードが可能のときは、最終宛先ビットがクリアされたことを宛先レジスタを介して検出すると、メッセージ・ハンドラ(宛先コアではない)は送信レジスタのビット1を自動的にセットする。
この例示のシステムでは、コア0は発信元プロセッサ・コアでありコア1は宛先プロセッサ・コアである。コア0はチャンネルID1を用いコア1はチャンネルID2を用いる。コア0はまず自動リンク・モードのメールボックス0と1とを設定する。これは2個のメッセージ処理モジュールのそれぞれにメッセージを記憶することを含む。次にコア0は第1のメッセージを、続いて第2のメッセージをコア1に送る。コア1は各メッセージ通知割込みに別々に応じて、両方に応答する。コア0は、コア1が最終メッセージを終了したときにはじめて応答割込みを得る。
図8のタイミング・シーケンスを参照すると次のシーケンスが発生する。ステージ1で、コア0はメッセージ処理モジュール0の制御を取得して「発信元0」[0]をセットする。ステージ2で、コア0はメッセージ処理モジュール1の制御を取得して「発信元1」[0]をセットする。ステージ3で、コア0は「モード0」[1]をセットしてメッセージ処理モジュール0をメッセージ処理モジュール1にリンクする。メッセージ処理モジュールのモード・レジスタは自動リンク・モードにセットされない。なぜなら、これはリンクされた部分集合の最後のメッセージ処理モジュールなので、この最後のメッセージ処理モジュールがメッセージを受けると応答割込みを生成しなければならないからである。ステージ4で、コア0は「マスク0」レジスタ内のビット0と1とをセットすることによりコア0とコア1への割込みを可能にする。
ステージ5で、コア0は「宛先0」[1]をセットしてメッセージ処理モジュール0の宛先コアを定義する。ステージ6で、コア0は「データ0」をDA7A0000にセットしてメッセージ処理モジュール0のデータ・ペイロードをプログラムする。ステージ7で、コア0は「マスク1」レジスタ内のビット0と1とをセットしてコア0とコア1への割込みを可能にする。ステージ8で、コア0は「宛先1」[1]をセットしてメッセージ処理モジュール0の宛先コアを定義する。ステージ9で、コア0は「データ1」をDA7A1111にセットしてメッセージ処理モジュール1のデータ・ペイロードをプログラムする。
ステージ10で、コア0は「送信0」[0]をセットして、メッセージ処理モジュール0内のメッセージの宛先コア(コア1)への送信を開始する。ステージ11で、コア1はメッセージ通知割込みに応じて「状態1」を読み取り、またメッセージ処理モジュール0内のデータ・ペイロードを読み取る。ステージ12で、コア1は「送信0」レジスタ内のビット0をクリアしビット1をセットして、手動応答をコア0に送り返す。シーケンス内のこの第1のメッセージの手動応答の影響はメッセージ処理モジュール1内のメッセージの送信を開始することである。このステージでコア0に送られる応答割込みはないことに注意すべきである。
次にステージ13で、送信レジスタ内のビット0をクリアしビット1をセットしたことに応じて、コア1は「状態1」を読み取り、またメッセージ処理モジュール1内のデータ・ペイロードを読み取る。ステージ14で、コア1は「送信1」レジスタ内のビット0をクリアしビット1をセットして、手動応答をコア0に送り返す。これはシーケンス内の2つのメッセージの最後のものなので、送信レジスタ内のビット0をクリアしビット1をセットすると、発信元プロセッサ・コア(コア0)への応答割込みの送信をトリガする。ステージ15で、コア0は「状態0」を読み取る。ステージ16で、コア0は「送信0」レジスタのビット1をクリアして、メッセージ処理モジュール0からの割込みをクリアする。ステージ17で、コア0は「状態1」を読み取る。最後にステージ18で、コア0は「送信1」レジスタのビット1をクリアして、メッセージ処理モジュール1からの応答割込みをクリアする。
図9は、メッセージ処理モジュールの部分集合の自動リンクの概要を示す流れ図である。この流れ図に関係する例示のデータ処理システムは、発信元プロセッサ・コア(コア0)と2個の宛先プロセッサ・コア(コア1およびコア2)とを有する。コア0は、送るべき2つの異なるメッセージ(コア1宛てのメッセージ1とコア2宛てのメッセージ2)を有する。このシステムでは、コア1がメッセージ1を処理し終わるまでは、コア2はメッセージ2の処理を開始することができないという制約がある。この制約は共に発信元プロセッサ・コアに関連する2個のメッセージ処理モジュールを備える部分集合を自動リンクすることにより実現される。
ステージ910で、コア0はメッセージ処理モジュール0とメッセージ処理モジュール1のそれぞれの発信元レジスタ内のビット0をセットすることにより、この2個のモジュールの所有権を得る。ステージ920で、コア0はモジュール0に第1のメッセージをプレロードし、モジュール1に第2のメッセージをプレロードする。次にステージ930で、コア0はモジュール0とモジュール1の宛先レジスタを適当にセットして、コア1とコア2をそれぞれ指定する。ステージ940で、コア0はメッセージ処理モジュール0の送信レジスタのビット0をセットして第1のメッセージのコア1への送信を開始する。ステージ950で、コア1はメッセージ通知割込みを受け、その割込み線に関係するマスクされた割込み状態レジスタを読み取り、割込みをトリガしたモジュールはモジュール0であると識別し、次にモジュール0の送信レジスタのビット0をクリアして割込みをクリアする。次にステージ960で、メッセージ処理モジュール0はモジュール1をトリガして、コア2へのメッセージ2の送信を開始する。次のメッセージのトリガは、モジュール0の送信レジスタ内のビット0をクリアしビット1をセットすることにより行う。したがって、送信レジスタのビット1をセットするとリンクされた部分集合内の次のモジュール(モジュール1)内の送信ビット0がセットされるので、発信元コアには応答割込みが送り返されるのではなく、シーケンス内の次のメッセージが送られる。ステージ970で、コア2はメッセージ通知割込みを受け、その割込み線に関係するマスクされた割込み状態レジスタを読み取り、割込みをトリガしたモジュールはモジュール1であると識別し、次にモジュール1の送信レジスタのビット0をクリアして割込みをクリアする。モジュール1はメッセージ処理モジュールのリンクされた部分集合内の最後のモジュールなので、モード・レジスタのビット1はセットされず、したがってこのモジュールの自動リンクは可能でない。したがって、コア2がメッセージ処理モジュール1のビット0をクリアしビット1をセットすると、応答割込みが発信元コア(コア0)に送り返されて、メッセージ・シーケンスの伝達は完了する。
本発明の例示の実施の形態について添付の図面を参照して詳細に説明したが、理解されるように、本発明はかかる実施の形態そのものに限定されるものではなく、クレームにより定義された本発明の範囲と精神から逸れることなく当業者は種々の変更や修正を加えることができるものである。
Aは2個のプロセッサ・コアと1個のメッセージ・ハンドラとを備えるデータ処理装置を示す略図である。Bは2個の状態レジスタを用いてメッセージ処理モジュール状態をコアに与える方法を示す。 図1Aのメッセージ・ハンドラ内に含まれる機能的構成要素を示す略図である。 メッセージ処理モジュール割込み信号をメッセージ・ハンドラ割込み出力にマップする方法を示す略図である。 メッセージ・ハンドラとメッセージ処理モジュールの制御レジスタの基本的動作の概要を示す流れ図である。 発信元コアと宛先コアとの間のメッセージ送信シーケンスを示す略図である。 2つの連続的なメッセージを発信元コアから宛先コアに送るメッセージ送信タイミング・シーケンスを示す略図である。 発信元コアから3個の宛先コアにメッセージが伝達され、全ての宛先コアがメッセージを受けたときに自動応答が生成されるメッセージ送信タイミング・シーケンスを示す略図である。 リンクされたメッセージのシーケンスを発信元コアから1個の宛先コアに送るためのメッセージ送信タイミング・シーケンスを示す略図である。 メッセージ記憶モジュールの部分集合の自動リンクの概要を示す流れ図である。
符号の説明
110 発信元プロセッサ・コア
120 宛先プロセッサ・コア
130 メッセージ・ハンドラ
132 メッセージ処理モジュール
150 バス構成

Claims (54)

  1. データ処理装置であって、
    少なくとも1個の宛先プロセッサ・コアと、
    少なくとも2個の指定された宛先コアへのメッセージを生成する少なくとも1個の発信元プロセッサ・コアと、
    複数のメッセージ処理モジュールを有するメッセージ・ハンドラと、
    前記発信元プロセッサ・コアと前記宛先プロセッサ・コアと前記メッセージ・ハンドラとの間のデータ伝達路を与えるバス構成と、
    を備え、
    各指定された発信元プロセッサ・コアに関連する少なくとも1個のメッセージ処理モジュールは、
    前記少なくとも2個の指定された宛先プロセッサ・コアによりそれぞれ変更可能な、対応する指定された宛先プロセッサ・コアが前記メッセージを受信したことを表示器値により示すメッセージ受信表示器と、
    前記少なくとも2個の指定された宛先プロセッサ・コアの全てが前記メッセージを受信したことを前記表示器値に従って検出する送信完了検出器と、
    前記少なくとも2個の指定された宛先プロセッサ・コアの全てが前記メッセージを受信したことを前記送信完了検出器が検出すると、これに応じて前記発信元プロセッサ・コアへの応答信号の送信を開始するメッセージ応答生成論理と、
    を有する、
    データ処理装置。
  2. 前記少なくとも1個のメッセージ処理モジュールは前記指定された発信元プロセッサ・コアが生成したメッセージを記憶するために割り当てられたメモリを有し、前記メッセージは1個以上の宛先プロセッサ・コアが前記バス構成を通して読み取ることができる、請求項1記載のデータ処理装置。
  3. 前記少なくとも1個のメッセージ処理モジュールは前記指定された発信元プロセッサ・コアが生成したメッセージを記憶するための関連するメモリ領域を有し、前記関連するメモリ領域は前記少なくとも1個の発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアとの間で共用されるメモリ内の領域である、請求項1記載のデータ処理装置。
  4. 前記少なくとも2個の指定された宛先コアの1個は前記発信元プロセッサ・コアである、請求項1記載のデータ処理装置。
  5. 前記メッセージ・ハンドラは、前記宛先プロセッサ・コアに割込みを送って前記メッセージが存在することを前記宛先プロセッサ・コアに通知する割込み生成回路を備える、請求項1記載のデータ処理装置。
  6. 前記少なくとも2個の指定された宛先プロセッサ・コアの少なくとも1個は前記メッセージ・ハンドラによって前記宛先プロセッサ・コアに送られた割込みを処理する割込みコントローラを備える、請求項5記載のデータ処理装置。
  7. 前記少なくとも1個のメッセージ処理モジュールは、前記宛先プロセッサ・コアへの割込みの送信を可能にしまたは無効にするための、プログラム可能な値を有するマスク状態レジスタを有する、請求項5記載のデータ処理装置。
  8. 前記マスク状態レジスタは、前記マスク状態レジスタ内のビットをセットするのに用いられる関連するマスク・セット・レジスタと、前記マスク状態レジスタ内のビットをクリアするのに用いられる関連するマスク・クリア・レジスタとを有する、請求項7記載のデータ処理装置。
  9. 前記マスク状態レジスタは、現在表明されている割込みをどのメッセージ処理モジュールがトリガしたかを示す値を記憶する関連するマスクされた割込み状態レジスタを有する、請求項7記載のデータ処理装置。
  10. 前記少なくとも1個のプログラム可能なメッセージ処理モジュールは、前記指定された発信元プロセッサ・コアに対応するプログラム可能な値を記憶する発信元レジスタを有する、請求項1記載のデータ処理装置。
  11. 前記発信元レジスタは、前記指定された発信元プロセッサ・コアに応答割込みの送信を表明する割込み線を定義する、請求項10記載のデータ処理装置。
  12. 前記発信元レジスタは、発信元プロセッサ・コアが前記発信元レジスタへの書込みアクセスを有する、クリア値により指定されるクリア・モードと、前記発信元レジスタは発信元プロセッサ・コアに対応する値を記憶しまた前記発信元レジスタをリセットして前記クリア・モードにするかまたは書込み無効にするプログラム・モードとを有する、請求項10記載のデータ処理装置。
  13. 前記少なくとも1個のプログラム可能なメッセージ処理モジュールは前記少なくとも2個の指定された宛先プロセッサ・コアを示すプログラム可能な値を記憶する宛先レジスタを有する、請求項1記載のデータ処理装置。
  14. 前記宛先レジスタは、前記宛先レジスタ内のビットをセットするのに用いられる宛先セット・レジスタと、前記宛先レジスタ内のビットをクリアするのに用いられる宛先クリア・レジスタとを有する、請求項13記載のデータ処理装置。
  15. 前記メッセージ受信表示器は前記メッセージ宛先レジスタである、請求項13記載のデータ処理装置。
  16. 前記少なくとも1個の発信元プロセッサ・コアの1個はメッセージのシーケンスを前記複数のメッセージ処理モジュールのリンクされた部分集合に送り、各メッセージはそれぞれの指定された宛先プロセッサ・コアを有し、またメッセージ処理モジュールの前記リンクされた部分集合内の各メッセージ処理モジュールはメッセージ受信表示器と、送信完了検出器と、メッセージ応答生成論理とを有し、また各指定された宛先コアが前記先行メッセージを受信したことを前記メッセージ・シーケンス内の先行メッセージに対応するメッセージ処理モジュールの前記メッセージ受信表示器が示すと、メッセージ処理モジュールの前記リンクされた部分集合の前記メッセージ・シーケンス内の2番目以降のメッセージの送信が開始される、請求項1記載のデータ処理装置。
  17. 前記少なくとも1個のメッセージ処理モジュールは、前記少なくとも2個の指定された宛先プロセッサ・コアの1個への割込みまたは前記指定された発信元プロセッサ・コアへの割込みが現在トリガされているかどうか判定する少なくとも1個の割込み状態ビットを記憶する送信レジスタを有する、請求項1記載のデータ処理装置。
  18. 前記少なくとも2個の前記指定された宛先プロセッサ・コアの少なくとも1個は、前記送信レジスタ値を変更して前記宛先プロセッサ・コアへの前記割込みをクリアすることにより前記メッセージを受けたことを示す、請求項17記載のデータ処理装置。
  19. 前記送信レジスタ値の前記変更により前記発信元プロセッサ・コアへの応答割込みの送信を開始する、請求項18記載のデータ処理装置。
  20. 前記メッセージ受信表示器は前記送信レジスタである、請求項16記載のデータ処理装置。
  21. 前記少なくとも1個のメッセージ処理モジュールは、前記関連するメッセージ処理モジュールがメッセージ処理モジュールの前記リンクされた部分集合内の連続するメッセージ処理モジュールにリンクされているかどうかを示す値を記憶するモード・レジスタを有する、請求項16記載のデータ処理装置。
  22. 前記送信完了検出器は前記モード・レジスタ値を用いて前記リンクされた部分集合内の最後のメッセージ処理モジュールを検出し、前記最後のメッセージ処理モジュール内のメッセージの宛先コアが前記メッセージを受信したことを示すと前記発信元コアへの応答割込みの生成を開始する、請求項21記載のデータ処理装置。
  23. 前記最後のメッセージ処理モジュールを除く前記リンクされた部分集合内の全てのメッセージ処理モジュールは前記発信元プロセッサ・コアへの応答割込みの生成を無効にするように構成変更可能である、請求項22記載のデータ処理装置。
  24. 前記発信元プロセッサ・コアに割込みを送るべきことを前記最後のメッセージ処理モジュールの送信レジスタが示すと、前記最後のプロセッサ・コアに関連する前記メッセージ処理モジュールは前記送信レジスタを自動的にセットして前記発信元プロセッサ・コアへの応答割込みの送信を開始する、請求項23記載のデータ処理装置。
  25. 前記メッセージ・ハンドラは、
    メッセージ処理モジュールの数と、
    各メッセージ処理モジュール内に前記メッセージを記憶するためのメモリ容量と、
    前記メッセージ・ハンドラが利用可能な割込み信号路の数、
    の少なくとも1つを備える構成パラメータを指定することによって構成変更可能である、請求項1記載のデータ処理装置。
  26. 前記メッセージ・ハンドラは前記構成パラメータを記憶する構成レジスタを備える、請求項23記載のデータ処理装置。
  27. 少なくとも1個の発信元プロセッサ・コアと少なくとも1個の宛先プロセッサ・コアとの間で、複数のメッセージ処理モジュールを有するメッセージ・ハンドラと、前記発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアと前記メッセージ・ハンドラとの間のデータ伝達路を与えるバス構成とを用いてデータを伝達するための方法であって、
    指定された発信元プロセッサ・コアから、少なくとも2個の指定された宛先プロセッサ・コアのそれぞれに関連するメッセージ処理モジュールにメッセージを送信し、
    前記発信元プロセッサ・コアかまたは前記指定された宛先プロセッサ・コアの1個に関連するメッセージ処理モジュールに属するメッセージ受信表示器の表示値を変更して対応する指定された宛先プロセッサ・コアが前記メッセージを受信したことを示し、
    送信完了検出器を用いまた前記表示器値に従って、前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを検出し、
    前記少なくとも2個の指定された宛先コアの全てが前記メッセージを受信したことを前記送信完了検出器が検出すると、これに応じて前記発信元プロセッサ・コアへの応答信号の送信を開始する、
    ステップを含むデータ伝達方法。
  28. 前記メッセージを前記少なくとも1個のメッセージ処理モジュール内にあるメモリ内に記憶して、前記メッセージは1個以上の宛先プロセッサ・コアが前記バス構成を通して読み取ることができるようにするステップを含む、請求項27記載のデータ伝達方法。
  29. 前記メッセージを前記少なくとも1個のメッセージ処理モジュールに関連するメモリ内に記憶するステップを含み、前記関連するメモリは前記少なくとも1個の発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアとの間で共用される、請求項27記載のデータ伝達方法。
  30. 前記少なくとも2個の指定された前記宛先プロセッサ・コアの1個は前記発信元プロセッサ・コアである、請求項27記載のデータ伝達方法。
  31. 前記メッセージ・ハンドラは、前記宛先プロセッサ・コアに割込みを送って前記メッセージが存在することを前記宛先プロセッサ・コアに通知する割込み生成回路を備える、請求項27記載のデータ伝達方法。
  32. 前記少なくとも2個の指定された宛先プロセッサ・コアの少なくとも1個は前記メッセージ・ハンドラから前記宛先プロセッサ・コアに送られた割込みを処理する割込みコントローラを備える、請求項31記載のデータ伝達方法。
  33. 前記少なくとも1個のメッセージ処理モジュールは、前記宛先プロセッサ・コアへの割込みの送信を可能にしまたは無効にするための、プログラム可能な値を有するマスク状態レジスタを有する、請求項27記載のデータ伝達方法。
  34. 前記マスク状態レジスタは、前記マスク状態レジスタ内のビットをセットするのに用いられる関連するマスク・セット・レジスタと、前記マスク状態レジスタ内のビットをクリアするのに用いられる関連するマスク・クリア・レジスタとを有する、請求項33記載のデータ伝達方法。
  35. 前記マスク状態レジスタは、現在表明されている割込みをどのメッセージ処理モジュールがトリガしたかを示す値を記憶する関連するマスクされた割込み状態レジスタを有する、請求項33記載のデータ処理方法。
  36. 前記少なくとも1個のプログラム可能なメッセージ処理モジュールは、前記指定された発信元プロセッサ・コアに対応するプログラム可能な値を記憶する発信元レジスタを有する、請求項27記載のデータ伝達方法。
  37. 前記発信元レジスタは、前記指定された発信元プロセッサ・コアに応答割込みの送信を表明する割込み線を定義する、請求項36記載のデータ伝達方法。
  38. 前記発信元レジスタは、発信元プロセッサ・コアが前記発信元レジスタへの書込みアクセスを有する、クリア値により指定されるクリア・モードと、前記発信元レジスタは発信元プロセッサ・コアに対応する値を記憶しまた前記発信元レジスタをリセットして前記クリア・モードにするかまたは書込み無効にするプログラム・モードとを有する、請求項36記載のデータ伝達方法。
  39. 前記少なくとも1個のプログラム可能なメッセージ処理モジュールは前記少なくとも2個の指定された宛先プロセッサ・コアを示すプログラム可能な値を記憶する宛先レジスタを有する、請求項27記載のデータ伝達方法。
  40. 前記宛先レジスタは、前記宛先レジスタ内のビットをセットするのに用いられる宛先セット・レジスタと、前記宛先レジスタ内のビットをクリアするのに用いられる宛先クリア・レジスタとを有する、請求項39記載のデータ伝達方法。
  41. 前記メッセージ受信表示器は前記メッセージ宛先レジスタである、請求項39記載のデータ伝達方法。
  42. 前記少なくとも1個の発信元プロセッサ・コアの1個はメッセージのシーケンスを前記複数のメッセージ処理モジュールのリンクされた部分集合に送り、各メッセージはそれぞれの指定された宛先プロセッサ・コアを有し、またメッセージ処理モジュールの前記リンクされた部分集合内の各メッセージ処理モジュールはメッセージ受信表示器と、送信完了検出器と、メッセージ応答生成論理とを有し、また各指定された宛先コアが前記先行メッセージを受信したことを前記メッセージ・シーケンス内の先行メッセージに対応するメッセージ処理モジュールの前記メッセージ受信表示器が示すと、メッセージ処理モジュールの前記リンクされた部分集合の前記メッセージ・シーケンス内の2番目以降のメッセージの送信が開始される、請求項27記載のデータ伝達方法。
  43. 前記少なくとも1個のメッセージ処理モジュールは、前記少なくとも2個の指定された宛先プロセッサ・コアの1個への割込みまたは前記指定された発信元プロセッサ・コアへの割込みが現在トリガされているかどうか判定する少なくとも1個の割込み状態ビットを記憶する送信レジスタを有する、請求項27記載のデータ伝達方法。
  44. 前記少なくとも2個の前記指定された宛先プロセッサ・コアの少なくとも1個は、前記送信レジスタ値を変更して前記宛先プロセッサ・コアへの前記割込みをクリアすることにより前記メッセージを受けたことを示す、請求項43記載のデータ伝達方法。
  45. 前記送信レジスタ値の前記変更により前記発信元プロセッサ・コアへの応答割込みの送信を開始する、請求項44記載のデータ伝達方法。
  46. 前記メッセージ受信表示器は前記送信レジスタである、請求項43記載のデータ伝達方法。
  47. 前記少なくとも1個のメッセージ処理モジュールは、前記関連するメッセージ処理モジュールがメッセージ処理モジュールの前記リンクされた部分集合内の連続するメッセージ処理モジュールにリンクされているかどうかを示す値を記憶するモード・レジスタを有する、請求項42記載のデータ伝達方法。
  48. 前記送信完了検出器は前記モード・レジスタ値を用いて前記リンクされた部分集合内の最後のメッセージ処理モジュールを検出し、前記最後のメッセージ処理モジュール内のメッセージの宛先コアが前記メッセージを受信したことを示すと前記発信元コアへの応答割込みの生成を開始する、請求項47記載のデータ伝達方法。
  49. 前記最後のメッセージ処理モジュールを除く前記リンクされた部分集合内の全てのメッセージ処理モジュールは前記発信元プロセッサ・コアへの応答割込みの生成を無効にするように構成変更可能である、請求項48記載のデータ伝達方法。
  50. 前記発信元プロセッサ・コアに割込みを送るべきことを前記最後のメッセージ処理モジュールの送信レジスタが示すと、前記最後のプロセッサ・コアに関連する前記メッセージ処理モジュールは前記送信レジスタを自動的にセットして前記発信元プロセッサ・コアへの応答割込みの生成を開始する、請求項49記載のデータ伝達方法。
  51. 前記メッセージ・ハンドラは、
    メッセージ処理モジュールの数と、
    各メッセージ処理モジュール内に前記メッセージを記憶するためのメモリ容量と、
    前記メッセージ・ハンドラが利用可能な割込み信号路の数、
    の少なくとも1つを備える構成パラメータを指定することにより構成変更可能である、請求項27記載のデータ処理方法。
  52. 前記メッセージ・ハンドラは前記構成パラメータを記憶する構成レジスタを備える、請求項51記載のデータ伝達方法。
  53. データ処理装置内の発信元プロセッサ・コアを制御して、少なくとも1個の発信元プロセッサ・コアと少なくとも1個の宛先プロセッサ・コアとの間でメッセージ・ハンドラを用いてデータを伝達するためのコンピュータ・プログラムを含むコンピュータ・プログラム製品であって、前記複数のメッセージ処理モジュールはそれぞれ発信元プロセッサ・コアが生成したメッセージを記憶するために割り当てられたメモリを有し、また前記発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアと前記メッセージ・ハンドラとの間のデータ伝達路を与えるバス構成を有し、前記発信元プロセッサ・コアを制御するコンピュータ・プログラム製品は、
    少なくとも2つのメッセージをそれぞれ記憶するために少なくとも2個の前記メッセージ処理モジュールの前記発信元プロセッサ・コアが排他的制御を有することを表明する構成コードと、
    前記少なくとも2個の各メッセージ処理モジュール内で関連するメッセージのそれぞれの宛先コアを指定する宛先コア指定コードと、
    前記少なくとも2個のメッセージ処理モジュールの少なくとも1個内で自動応答モードを設定して、そのそれぞれの宛先が前記少なくとも2つのメッセージの全てを受信するまで前記発信元プログラム・コアへのメッセージ応答信号を押さえるようにするモード設定コードと、
    を含むコンピュータ・プログラム製品。
  54. データ処理装置内の発信元プロセッサ・コアを制御して、少なくとも1個の発信元プロセッサ・コアと少なくとも1個の宛先プロセッサ・コアとの間でメッセージ・ハンドラを用いてデータを伝達するためのコンピュータ・プログラムを含むコンピュータ・プログラム製品であって、前記複数のメッセージ処理モジュールはそれぞれ発信元プロセッサ・コアが生成したメッセージを記憶するために割り当てられたメモリを有し、また前記発信元プロセッサ・コアと前記少なくとも1個の宛先プロセッサ・コアと前記メッセージ・ハンドラとの間のデータ伝達路を与えるバス構成を有し、前記発信元プロセッサ・コアを制御するコンピュータ・プログラム製品は、
    前記メッセージ・ハンドラにアクセスして、前記メッセージ処理モジュールのどれがメッセージ通知信号を生成したかを識別するメッセージ発信元識別コードと、
    前記識別されたメッセージ処理モジュール内の記憶されたメッセージ受信表示器値を変更して前記メッセージ通知信号をクリアするメッセージ通知信号クリア・コードと、
    を含み、
    前記メッセージ通知信号クリア・コードによりメッセージ処理モジュールは送信完了検出器を用いて、前記少なくとも2個の宛先プロセッサ・コアの全てが前記メッセージを受信したことを前記表示器値に従って検出して、前記発信元プロセッサ・コアへの応答信号の送信を開始する、
    コンピュータ・プログラム製品。
JP2004255010A 2003-12-18 2004-09-02 プロセス間伝達機構 Pending JP2005182754A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0329352A GB2409303B (en) 2003-12-18 2003-12-18 Inter-processor communication mechanism

Publications (1)

Publication Number Publication Date
JP2005182754A true JP2005182754A (ja) 2005-07-07

Family

ID=30471315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004255010A Pending JP2005182754A (ja) 2003-12-18 2004-09-02 プロセス間伝達機構

Country Status (3)

Country Link
US (1) US7599998B2 (ja)
JP (1) JP2005182754A (ja)
GB (1) GB2409303B (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4247228B2 (ja) * 2005-11-28 2009-04-02 株式会社日立製作所 ヘテロマルチプロセッサシステムおよびそのos構成方法
US7953916B2 (en) * 2009-04-08 2011-05-31 Intel Corporation Dynamic, local retriggered interrupt routing discovery method
US10698859B2 (en) * 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
US8937622B2 (en) 2010-09-20 2015-01-20 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9460038B2 (en) * 2010-12-22 2016-10-04 Via Technologies, Inc. Multi-core microprocessor internal bypass bus
US8930676B2 (en) 2010-12-22 2015-01-06 Via Technologies, Inc. Master core discovering enabled cores in microprocessor comprising plural multi-core dies
US8631256B2 (en) 2010-12-22 2014-01-14 Via Technologies, Inc. Distributed management of a shared power source to a multi-core microprocessor
US8972707B2 (en) 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US8637212B2 (en) 2010-12-22 2014-01-28 Via Technologies, Inc. Reticle set modification to produce multi-core dies
US8782451B2 (en) 2010-12-22 2014-07-15 Via Technologies, Inc. Power state synchronization in a multi-core processor
US9389657B2 (en) 2011-12-29 2016-07-12 Intel Corporation Reset of multi-core processing system
WO2013101082A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Reset of processing core in multi-core processing system
US9841804B2 (en) * 2012-02-22 2017-12-12 Silicon Laboratories Inc. Clocking a processor
JP5821723B2 (ja) * 2012-03-15 2015-11-24 富士通株式会社 情報処理装置及び制御プログラム
CN103729329B (zh) * 2012-10-12 2018-01-19 深圳市中兴微电子技术有限公司 核间通信装置及方法
US20140281276A1 (en) * 2013-03-14 2014-09-18 Pratik M. Marolia Method, apparatus, and system for low latency communication
CN104238997B (zh) * 2013-08-28 2019-02-15 威盛电子股份有限公司 微处理器及其执行方法
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US9898303B2 (en) 2013-08-28 2018-02-20 Via Technologies, Inc. Multi-core hardware semaphore in non-architectural address space
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9697151B2 (en) 2014-11-19 2017-07-04 Nxp Usa, Inc. Message filtering in a data processing system
US9727500B2 (en) * 2014-11-19 2017-08-08 Nxp Usa, Inc. Message filtering in a data processing system
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10437748B1 (en) * 2015-12-29 2019-10-08 Amazon Technologies, Inc. Core-to-core communication
JP6615726B2 (ja) * 2016-09-16 2019-12-04 株式会社東芝 情報処理装置、情報処理方法及びプログラム
US10585755B2 (en) * 2016-11-29 2020-03-10 Ricoh Company, Ltd. Electronic apparatus and method for restarting a central processing unit (CPU) in response to detecting an abnormality
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
CN113238802A (zh) * 2021-05-28 2021-08-10 上海阵量智能科技有限公司 中断分发器、数据处理芯片、中断分发及数据处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4818984A (en) * 1986-11-26 1989-04-04 American Telephone And Telegraph Company, At&T Bell Laboratories Broadcasting messages in a distributed processing system
JP2539436B2 (ja) 1987-06-08 1996-10-02 株式会社日立製作所 プロセツサ間通信方式
JP2561759B2 (ja) * 1991-03-29 1996-12-11 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサシステムおよびそのメッセージ送受信制御装置
US6105071A (en) * 1997-04-08 2000-08-15 International Business Machines Corporation Source and destination initiated interrupt system for message arrival notification
JP2000105753A (ja) 1998-09-29 2000-04-11 Hitachi Commun Syst Inc データ双方向転送方法
US6425002B1 (en) * 1998-11-23 2002-07-23 Motorola, Inc. Apparatus and method for handling dispatching messages for various applications of a communication device
TW435027B (en) * 1999-08-27 2001-05-16 Via Tech Inc Output queue method and device of network packet
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
US7181482B2 (en) * 2002-08-01 2007-02-20 Oracle International Corporation Buffered message queue architecture for database management systems
US6754744B2 (en) * 2002-09-10 2004-06-22 Broadcom Corporation Balanced linked lists for high performance data buffers in a network device
US7346064B2 (en) * 2002-09-26 2008-03-18 Intel Corporation Routing packets in packet-based input/output communications

Also Published As

Publication number Publication date
US7599998B2 (en) 2009-10-06
GB2409303A (en) 2005-06-22
GB0329352D0 (en) 2004-01-21
GB2409303B (en) 2006-10-18
US20050138249A1 (en) 2005-06-23

Similar Documents

Publication Publication Date Title
JP2005182754A (ja) プロセス間伝達機構
US6606676B1 (en) Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6247091B1 (en) Method and system for communicating interrupts between nodes of a multinode computer system
US7617363B2 (en) Low latency message passing mechanism
US20030110336A1 (en) Method and apparatus for interrupt redirection for arm processors
US20080109569A1 (en) Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations
EP0166272A2 (en) Processor bus access
US20080109573A1 (en) RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
EP0194462A2 (en) System bus means for inter-processor communication
US7934029B2 (en) Data transfer between devices within an integrated circuit
US6910062B2 (en) Method and apparatus for transmitting packets within a symmetric multiprocessor system
CN107636630B (zh) 中断控制器
JP2004178570A (ja) マルチコア通信モジュールを組み入れたデータ通信システム及び方法
US7610451B2 (en) Data transfer mechanism using unidirectional pull bus and push bus
JP2005182751A (ja) データ伝達機構
US8943238B2 (en) Operations using direct memory access
JP4644253B2 (ja) モバイルスケーラブルリンク(msl)アーキテクチャのための転送肯定応答
EP1069734B1 (en) Distributed service request bus using tokens to resolve collisions
US6611882B1 (en) Inbound and outbound message passing between a host processor and I/O processor local memory
JP2004334840A (ja) システムバスの制御方法及び関連装置
US6631428B1 (en) Apparatus and method for completing transactions in all flow control classes
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法
CN118227353A (zh) 基于多核异构系统的核间通讯方法、装置、设备及介质
JPH0644190A (ja) マルチプロセッサ方式
JPH04148262A (ja) 同報転送装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081107

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090403