JP2018519587A - 構成可能メールボックスデータバッファ装置 - Google Patents

構成可能メールボックスデータバッファ装置 Download PDF

Info

Publication number
JP2018519587A
JP2018519587A JP2017562999A JP2017562999A JP2018519587A JP 2018519587 A JP2018519587 A JP 2018519587A JP 2017562999 A JP2017562999 A JP 2017562999A JP 2017562999 A JP2017562999 A JP 2017562999A JP 2018519587 A JP2018519587 A JP 2018519587A
Authority
JP
Japan
Prior art keywords
data
master
slave
configurable
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
JP2017562999A
Other languages
English (en)
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of JP2018519587A publication Critical patent/JP2018519587A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

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

Abstract

単一チップマイクロコントローラは、マスタコアと、少なくとも1つのスレーブコアとを有する。マスタコアは、マスタシステムクロックによってクロックされ、スレーブコアは、スレーブシステムクロックによってクロックされ、各コアは、複数の周辺デバイスに関連付けられ、それぞれ、マスタマイクロコントローラおよびスレーブマイクロコントローラを形成する。通信インターフェースが、マスタマイクロコントローラとスレーブマイクロコントローラとの間に提供され、通信インターフェースは、方向を複数の構成データレジスタの各々に割り当てるように構成可能なフロー制御論理と結合される複数の構成可能方向性データレジスタを有する。

Description

(関連出願)
本願は、米国仮特許出願第62/181,379号(2015年6月18日出願)に対する優先権を主張し、上記出願は、あらゆる目的のために参照により本明細書に組み込まれる。
(技術分野)
本開示は、複数のコアを伴うマイクロコントローラ等のマルチプロセッサ内蔵システムに関し、特に、そのような内蔵システムのための構成可能メールボックスデータバッファ装置に関する。
(背景)
マルチプロセッサコアマイクロコントローラは、全く別個のコアを伴って設計され得、各コアは、異なるシステムクロックに基づいて動作し得る。したがって、2つのコア間で通信するための能力を提供するために、特定の通信インターフェースが必要である。特に、少量のデータを2つのプロセッサ間のクロック境界を横断して迅速かつ確実に移動させる手段が、必要とされる。解決策は、完全構成可能であるが、シリコン使用に関して効率的である必要があった。
(要約)
ある実施形態によると、単一チップマイクロコントローラは、マスタコアと、少なくとも1つのスレーブコアとを備え得、マスタコアは、マスタシステムクロックによってクロックされ、スレーブコアは、スレーブシステムクロックによってクロックされ、各コアは、複数の周辺デバイスに関連付けられ、それぞれ、マスタマイクロコントローラおよびスレーブマイクロコントローラを形成し、単一チップマイクロコントローラは、マスタマイクロコントローラとスレーブマイクロコントローラとの間に通信インターフェースをさらに備え、通信インターフェースは、方向を複数の構成可能データレジスタの各々に割り当てるように構成可能なフロー制御論理と結合されている複数の構成可能方向性データレジスタを備えている。2.各方向性データレジスタを構成するためのヒューズをさらに備えている、項目1に記載の単一チップマイクロコントローラ。
さらなる実施形態によると、単一チップマイクロコントローラはさらに、各方向性データレジスタを構成するための構成レジスタを備え得る。さらなる実施形態によると、単一チップマイクロコントローラはさらに、複数の構成可能方向性データレジスタに関するハンドシェイク信号をマスタおよびスレーブコア間に提供するように構成される、ハンドシェイク論理ブロックを備え得る。さらなる実施形態によると、通信インターフェースはさらに、複数のメールボックスを定義するように構成可能であり、該複数の構成可能データレジスタのうちの構成可能な数の連続したデータレジスタが、各メールボックスに割り当てられる。さらなる実施形態によると、単一チップマイクロコントローラはさらに、各方向性データレジスタを構成するためのヒューズを備え得る。さらなる実施形態によると、単一チップマイクロコントローラはさらに、各方向性データレジスタを構成するための構成レジスタを備え得る。さらなる実施形態によると、構成可能データレジスタのデータ方向は、単一チップマイクロコントローラのプログラミング中に割り当てられることができる。さらなる実施形態によると、メールボックスへのレジスタの割り当て、および複数の構成可能データレジスタの各々のデータ方向の割り当ては、単一チップマイクロコントローラのプログラミング中にプログラムされることができる。さらなる実施形態によると、各データレジスタは、方向信号およびハンドシェイク信号によって制御されることができる。さらなる実施形態によると、メールボックスの該構成可能レジスタのうちの1つは、制御レジスタとして使用されることができる。さらなる実施形態によると、該複数の構成可能データレジスタのうちの少なくとも1つは、ステータスレジスタとしてのものであることができる。さらなる実施形態によると、該複数の構成可能データレジスタのうちの少なくとも1つは、コマンドレジスタとしてのものであることができる。さらなる実施形態によると、単一チップマイクロコントローラはさらに、構成可能データレジスタのうちの1つへのマスタコアからのみの書き込み経路および構成可能データレジスタのうちの1つからスレーブコアへの読み取り経路、または、構成可能データレジスタのうちの1つへのスレーブコアからのみの書き込み経路および構成可能データレジスタのうちの1つからマスタコアへの読み取り経路のいずれかを定義するための複数のマルチプレクサを備え得る。さらなる実施形態によると、マスタまたはスレーブコアから構成可能データレジスタのうちの1つへの書き込み経路がそれぞれ設定されると、構成可能データレジスタのうちの1つからマスタまたはスレーブコアへの読み取り経路が利用可能である。さらなる実施形態によると、マスタコアから構成可能データレジスタのうちの1つへの書き込み経路が設定されると、マスタクロックは、構成可能データレジスタのうちの1つを書き込むためのクロックを提供し、スレーブクロックは、構成可能データレジスタのうちの1つを読み取るためのクロックを提供する。さらなる実施形態によると、スレーブコアから構成可能データレジスタのうちの1つへの書き込み経路が設定されると、スレーブクロックは、構成可能データレジスタのうちの1つを書き込むためのクロックを提供し、マスタクロックは、構成可能データレジスタのうちの1つを読み取るためのクロックを提供する。さらなる実施形態によると、単一チップマイクロコントローラはさらに、読み取りFIFOメモリおよび書き込みFIFOメモリを通信インターフェース内に備え得、読み取りFIFOメモリは、スレーブコアと結合されているデータ入力と、マスタコアと結合されているデータ出力とを備え、書き込みFIFOメモリは、マスタコアと結合されているデータ入力と、スレーブコアと結合されているデータ出力とを備えている。さらなる実施形態によると、読み取りFIFOメモリおよび書き込みFIFOメモリは、構成レジスタを通して随意にイネーブルにされ得る。さらなる実施形態によると、単一チップマイクロコントローラはさらに、複数のスレーブコアを備え得、通信インターフェースは、複数のデータレジスタ組を備え、各データレジスタ組は、方向を複数の構成可能データレジスタの各々に割り当てるように構成可能なフロー制御論理と結合されている複数の構成可能方向性データレジスタを備えている。
別の実施形態によると、単一チップマイクロコントローラ上のマスタコアとスレーブコアとの間の通信を提供する方法において、マスタコアは、マスタシステムクロックによってクロックされ、スレーブコアは、スレーブシステムクロックによってクロックされ、各コアは、複数の周辺デバイスに関連付けられ、それぞれ、マスタマイクロコントローラおよびスレーブマイクロコントローラを形成し、方法は、マイクロコントローラとスレーブマイクロコントローラとの間に通信インターフェースを提供することと、フロー制御論理と結合されている複数の構成可能方向性データレジスタをそれぞれのメールボックスを形成するように構成することと、複数の構成可能方向性データレジスタの各々ために、マスタコアからまたはそこへのデータ方向を構成することと、該複数の構成可能方向性データレジスタを通してのみ、データをマスタコアとスレーブコアとの間で交換することとを含む。
方法のさらなる実施形態によると、構成するステップは、単一チップマイクロコントローラのプログラミング中にヒューズを通して行われる。方法のさらなる実施形態によると、交換するステップは、マスタおよびスレーブコア間のハンドシェイク信号を用いて行われることができる。方法のさらなる実施形態によると、該複数の構成可能データレジスタのうちの構成可能な数の連続したデータレジスタが、各メールボックスに割り当てられることができる。方法のさらなる実施形態によると、メールボックスの該構成可能レジスタのうちの1つは、制御レジスタとして使用されることができる。方法のさらなる実施形態によると、該複数の構成可能データレジスタのうちの少なくとも1つは、ステータスレジスタまたはコマンドレジスタとして使用されることができる。
図1は、デュアルコアマイクロコントローラの第1の実施形態のブロック図を示す。 図2は、ディアルまたはマルチコアマイクロコントローラの第2の実施形態のブロック図を示す。 図3は、種々の実施形態による、通信インターフェースのより詳細なブロック図を示す。 図4は、種々の実施形態による、例示的メールボックス構成を示す。 図5は、データ書き込みチャネル(上)およびデータ読み取りチャネル(下)を示す。 図6は、メールボックスハンドシェイクプロトコルシーケンス図を示す。 図7は、ディアルまたはマルチコアマイクロコントローラのための随意の追加のFIFOメモリのブロック図を示す。 図8は、読み取りFIFO割り込み動作を示す。 図9は、種々の実施形態による、組み合わせられたメールボックスおよびFIFO通信インターフェースのブロック図を示す。
(詳細な説明)
図1および2に示されるように、ディアルまたはマルチコア処理デバイス100、200が、マスタ中央処理ユニット(CPU)112を伴うマスタマイクロコントローラ110と、各々がスレーブ中央処理ユニット122を有する1つ以上のスレーブユニット120とを有するように設計されることができ、各スレーブ中央処理ユニット122のコア設計は、マスタCPU112のコア設計と概ね同じであるか、または類似する。しかしながら、他の実施形態によると、スレーブCPU122は、マスタCPU112と異なり得る。マスタマイクロコントローラは、図1および2に示されるように、それ自身の周辺デバイスの組を有する。スレーブユニット120は、それ自身の周辺デバイスの組を有することも、有しないこともあり、したがって、それ自身でマイクロコントローラを形成することもある。したがって、各マスタおよびスレーブデバイスは、事実上、完全独立処理デバイスを形成し、専用バスまたは通信インターフェース130と通信し得る。図1および2は、マスタマイクロコントローラ110と、単一または複数のスレーブマイクロコントローラ120とを伴うそのような設計を示す。通信インターフェース130が、2つのコア110、120間の通信を可能にするように提供される。各プロセッサ112、122は、示されるように、ハーバードアーキテクチャにおいて設計され得る。しかしながら、種々の実施形態による原理は、フォン・ノイマンアーキテクチャに容易に変換され得る。マスタユニットは、例えば、プログラムメモリとして使用されるフラッシュメモリ116と、データメモリとして使用されるランダムアクセスメモリ114とを備え、各々は、マスタコア112と結合される。
図1および2に示されるように、スレーブユニット120は、フラッシュメモリを伴わずに設計されることができる。代わりに、専用プログラムランダムアクセスメモリ126が提供される。このメモリが揮発性であるという事実に起因して、それは、種々の実施形態によると、マスタ110を通してロードされるであろう。この設計選択肢は、フラッシュ技術によって提供されるボトルネックが回避されるという利点を有する。フラッシュメモリは、概して、RAMより遅い。故に、読み取り遅延が存在せず、スレーブは、より高い実行速度で動作させられることができ、より高い実行速度は、例えば、SMPS用途等のある高速用途のために非常に有益であり得る。前述のように、2つ以上のスレーブユニット120が、種々の実施形態によると、実装され得る。両コアが同じである場合、マスタコア112は、追加の命令を含むように設計され得、追加の命令は、スレーブユニット122内に実装されないか、またはスレーブユニット内で機能しないかのいずれかであり得る。これらの追加の命令は、フラッシュメモリ116または外部ソースからスレーブデバイス120のPRAM126の中へのデータの転送を可能にする。例えば、ある実施形態によると、複数のコアが、単一チップデバイス内に実装され得、各コアは、割り当てられた構成レジスタを有し得、そのようなレジスタのビットのうちの1つは、それぞれのユニットがマスタであるか、またはスレーブであるかを定義し得る。コアのうちの1つのみがマスタとして設定されることを可能にする論理が、存在し得る。このビットが設定されると、追加の命令は、実行されることが可能にされ得る。他のユニット(スレーブ)では、これらの命令は、実行されず、例えば、それらは、不正オペコードとして解釈され得る。
マスタユニット110によってPRAM126にアクセスするための制御論理は、バッファ/コンパレータユニット118とともに、図1に示されるように、マスタユニット内に位置することができる。代替として、類似ユニットが、PRAMラッパユニット128とともに、図2に示されるように、スレーブユニット120内に配置され得る。いずれのユニットも、PRAMのアクセスをマスタユニット110またはスレーブユニット120のいずれかのみに与えるように設計される。他の実施形態は、論理のいくつかの部分をマスタコア内に、他の部分をスレーブコア内に設置するか、または論理を両ユニットの外側に配置し得る。同様に、通信インターフェース130は、いずれかのユニットの内側に、または両ユニットの完全に外側にあり得る。PRAMアクセスユニット118または128のための追加の制御が、破線を用いて図2に示されるように、通信インターフェース130によって提供され得る。図2は、破線を用いて、追加のスレーブユニット140および150も示す。全てのユニットは、バスと各スレーブユニット内の関連付けられたラッパユニット128とを通して接続し得る。実施形態は、したがって、デュアルコア実装に限定されない。当業者は、他の実装も可能であることを認識するであろう。
種々の実施形態によると、マスタおよびスレーブプロセッサ間でデータを転送するために提案される2つのアプローチが存在する。メールボックスベースのデータパイプは、デフォルトアプローチであり、常時、存在する。FIFOベースのデータパイプは、パラメータ化オプションである。各アプローチは、利点および不利点を有する。
種々の実施形態によると、ヒューズ構成可能双方向n−ビット「メールボックス」レジスタの組が、通信インターフェース130内に提供され、通信インターフェース130は、任意のメールボックスに割り当てられたヒューズであり得るデータフロー制御論理の数ブロックと結合される。「双方向」とは、本明細書全体を通して、レジスタに関して、レジスタが構成されると、2つの方向のうちの1つが選定可能であることを意味する。動作時、各レジスタは、単方向性である。しかしながら、メールボックスは、いずれの方向にも動作するように構成されるレジスタを含み得るので、双方向と見なされ得る。16ビットデュアルコアマイクロコントローラでは、これらのレジスタは、n=16ビット幅であろう。いくつかの追加のバッファリングは、クロック多重化問題を排除し、メールボックスを各方向に複製する必要を回避する。1ワード〜16ワードの範囲のアドレスされるデータのブロックは、したがって、メールボックスとなり得、いくつかの実施形態によると、書き込まれる/読み取られるべき最後のレジスタは、ハードウェアデータフロー制御プロトコルに関するであろう。各データレジスタの方向は、プログラム可能であるので、マスタまたはスレーブの参照は、データ転送プロトコルを議論する場合、意味がない。用語「送信機」および「受信機」は、したがって、この後、データ書き込みプロセッサおよびデータ読み取りプロセッサを表すためにそれぞれ使用される。データレジスタ方向に応じて、データ書き込みおよび読み取りプロセッサは、それぞれ、マスタおよびスレーブ、またはスレーブおよびマスタのいずれかであり得る。
いくつかの実施形態によると、メールボックスレジスタ動作データ方向は、例えば、デバイスヒューズ(メールボックスあたり1つ)によって決定されることができる。これは、以下により詳細に説明されるように、新規メールボックスレジスタ設計構造の使用によって実践され得る。
メールボックス内の(共有リソース)データレジスタへのアクセスは、データフロー制御プロトコルを使用して制御される。その結果、メールボックスベースのデータパイプへのアクセスは、互いに排他的である(すなわち、両プロセッサによって同時にアクセスされることができない)。各プロセッサは、アクセス制御を他に譲渡することに先立って、そのアクセスを完了しなければならない。
しかしながら、メールボックスの全コンテキストは、メモリにマップされ、任意の特定の順序でアクセスされる必要はないであろう(両プロセッサによって最後にアクセスされなければならないハードウェアデータフロー制御プロトコルをハンドリングするために割り当てられるメールボックスレジスタを除く)。
さらに、ソフトウェア管理バッファを構成するメールボックスは、メモリ内で連続してアドレスされることを要求されない。これは、転送されているデータが、制御、ステータス、およびシステムデータの混合物から成る用途において有益であり得る。さらに、2つ以上のデータレジスタから成るメールボックスに対して、メールボックス内の全データレジスタの方向は、同一である必要はない。データフロー制御プロトコルは、マスタとスレーブとの間でアクセス制御を移転するために使用されるが、プロトコルハードウェアに割り当てられるデータレジスタのみ、要求されるデータ方向ルールに準拠しなければならない。メールボックスの種々のサイズ、方向、および能力のバッファへのいくつかの可能な編成が、図4に関して以下により詳細に説明されるであろう。これらは、メールボックススキーム柔軟性を実証するためのものにすぎず、特定の使用モデルとして意図されない。他の構成も可能である。
各データフロー制御論理ブロックは、ヒューズビットフィールド設定に基づいて任意のメールボックスに割り当てられ得る(データフロー制御ブロックあたり1ビットフィールド)。前述の帰結は、ユーザが、サポートされるメールボックスの数(限定され得る)まで、任意のサイズのデータバッファを定義し得ることである。データフロー制御論理ブロックは、バッファの書き込まれるべき最後の要素に割り当てられるであろう。バッファ内の要素(すなわち、個々のメールボックスレジスタ)は、両方向における動作のために構成され得る(すなわち、バッファ内のデータは、書き込まれ、かつ読み取られ得る)。
ソースおよび宛先プロセッサクロックを読み取りおよび書き込みデータレジスタに対して単に多重化することは、設計タイミング問題を導入し、実践不能にする(かつ方向あたり1つの2つのメールボックスのインスタンス化を強いる)。しかしながら、両側の書き込みバッファと、書き込みデータをパイプラインする共通読み取りバッファ(書き込みクロックから遅延された多重化されたクロックを伴う)とをサポートすることによって、タイミング問題を解決し、種々の実施形態による効率的設計につながる。
クロック境界を横断するデータ路は、典型的には、上で概略された理由から、単方向性である。データフロー制御は、典型的には、クロック境界または他のインターフェースを横断するデータ路の各要素に関連付けられる。種々の実施形態によると、ヒューズが、ハンドシェイク論理を割り当て、設計複雑性を低減させる(主に、特殊機能レジスタ要件を低減させる)ために使用されることができる。
ヒューズは、通常、マイクロコントローラの構成中にのみ、すなわち、マスタフラッシュプログラムが、例えば、外部プログラマデバイスを通してプログラムされるときに設定される。通常、初期構成は、特定の用途のために設計され、ランタイム中には変更される必要はない。故に、ヒューズの使用は、好ましくあり得る。しかしながら、メールボックスをプログラムするための他の手段が、代わりに使用され得る。例えば、任意のタイプの不揮発性メモリが、ヒューズの代わりに使用され得る。
マルチコアマイクロコントローラまたは内蔵システムが、図1または2に示されるように、マスタコアとスレーブプロセッサとを備えているように設計され得る。前述のように、コプロセッサと異なり、スレーブプロセッサは、完全機能独立型プロセッサコアであり、複数の割り当てられたまたは割り当て可能な周辺デバイスを有し得る。同様に、マスタプロセッサは、複数の割り当てられたまたは割り当て可能な周辺デバイスを有し、それ自身のクロック上で起動し得る。異なるコアは、したがって、異なる速度を伴ってクロックされ得、例えば、スレーブコアは、いくつかの実施形態によると、処理集約タスクを制御可能であるために、より高いクロックを使用し得る。これも、概してフラッシュメモリより高速のプログラムメモリとしてのRAMの使用によって可能される。
種々の実施形態によると、単純な16ビットデータチャネルが、マスタおよびスレーブプロセッサ間に作成され、異なるクロックレートで非同期で起動する。そのような16ビットチャネルは、最初に双方向であるように設計され得、方向は、ヒューズまたは構成レジスタを通してプログラム時に固定され、それは、ロバストかつ柔軟であり、特に、構成のためにヒューズを使用するとき、最小限のシリコン占有面積のみを要求し得る。
図3は、複数のメールボックスレジスタMBXD0・・・MBXD15と、関連付けられた論理340、350と、ヒューズ310、320と、メールボックスレジスタMBXD0・・・MBXD15によってリンクされるであろうマスタバスおよびスレーブバスとを含むブロック図を示す。ヒューズまたは構成メモリ310、320は、各メールボックスレジスタの方向およびハンドシェイク選択を制御する。共有ハンドシェイク論理ブロック330も、提供される。一実施形態によると、16のメールボックスレジスタが、16ビットデュアルコアマイクロコントローラ内に配置され得る。これらのレジスタは、異なるメールボックスに割り当てられることができ、各レジスタは、1つのメールボックスにのみ割り当てられることができる。
図4は、データ、ステータス、およびコマンドワードを含むであろう、マスタ/スレーブデータインターフェース130内のメールボックスの異なる可能な構成を示す。H/Wデータフロー制御が割り当てられないことに留意されたい。アクセスは、ソフトウェアプロトコルを介して制御される。図4に示されるように、メールボックスは、異なるレジスタ410の組に分割されることができる。この目的を達成するために、例えば、図4の右側に示されるように、構成ヒューズ420が、使用され得る。ヒューズ420のブロックは、最初の9つのレジスタを第1のメールボックスに割り当て、次のレジスタを未使用のまま残し、次の4レジスタを第2のメールボックスに割り当てる。最後の2つのレジスタは、ヒューズを、例えば、Fhまたは任意の他の所定の値に設定することによって、ステータスおよびコマンドワードとして使用される。
例1は、2つの一方向バッファ、コマンドワード、およびステータスワードをサポートする配置を示す。データフロー制御論理ブロックは、バッファの各々のアクセスされる最後のワードに割り当てられる(バッファ長は、サポートされるメールボックスの限界数内で恣意的であることに留意されたい)。データフロー制御論理ブロックも、コマンドワードに割り当てられる。しかしながら、ステータスワードへのアクセスは、ソフトウェアを通して制御され、したがって、データフロー制御論理ブロックが要求されない。メールボックスレジスタMSIxMBXD9は、使用されない。
例2は、2つの双方向バッファおよびコマンドワードをサポートする配置を示す。データフロー制御論理ブロックは、バッファのその他ではなく、そのうちの1つのアクセスされる最後のワードに割り当てられる。これは、1つのみのプロセッサが、常に、他のバッファアクセスが完了した後、バッファにアクセスするであろうことをこの用途が保証し得るからである。データフロー制御論理ブロックも、コマンドワードに割り当てられる。
図5は、図5の上半分にデータ書き込みチャネルを、下半分にデータ読み取りチャネルを示す。左側は、マスタ側を、右側は、スレーブ側を表す。実際のメールボックス540は、書き込み動作に対して、バッファレジスタ510または520を介してマルチプレクサ530を通して、読み取り動作に対して、直接、アクセスされる。メールボックス540は、概して、マスタコアによって制御される。しかしながら、クロックは、マルチプレクサ550を通して、マスタまたはスレーブのいずれかによって提供される。図5に示されるように、フラグcfg_mbox_master_data_rd[n]は、メールボックスレジスタがマスタに関して書き込みチャネル(図5の上)または読み取りチャネル(図5の下)として構成されるかどうかを決定する。書き込みは、マスタまたはスレーブのいずれかによってのみ可能される一方、読み取りは、マスタまたはスレーブの両方によって行われ得る。マルチプレクサ560および570は、ある実施形態によると、例えば、実際のメールボックス更新が半サイクルだけ遅延されるので、送信機の書き込みの直後の読み取りをサポートし、実際のメールボックスレジスタを受信機のための読み取りソースとして選択するために実装され得る。
ある実施形態によると、送信機に対して、メールボックスが書き込まれ、次いで、読み取りの1サイクル以内に読み取られる場合、ハードウェアは、pipelined_wrenをアサートし、読み取りが、書き込まれたばかりのバッファレジスタ510または520から生じる。メールボックスが、書き込まれてから1サイクル後の任意の時点で読み取られる場合、pipeline_wren=0であり、読み取りが、実際のメールボックスレジスタから供給される。しかし、実際のメールボックスは、常時、メールボックスバッファ510または520で更新される。伝送バッファが読み取られる、他の実装も可能である。受信機に対して、明らかなこととして、書き込まれることのないMBOXバッファ510/520は、読み取られず、したがって、信号pipelined_wren=0であり、実際のメールボックスが、選択される。
一実施形態による、16個のMSIメールボックスデータレジスタMSIxMBXDn(0<=n<=15)の各々は、そのデータ方向以外は同じである。配置は、いくつかの実施形態によると、8つのデータフロー制御プロトコルハードウェアブロックを含み得、それらの各々は、任意のデータレジスタに割り当てられ、メールボックスを形成し得る。
以下は、通信インターフェースの例示的実施形態をより詳細に説明する。全メールボックスMSIxMBXDnデータレジスタは、レジスタコンテンツがマスタおよびスレーブポートの両方から読み取られる/書き込まれることがないように、一方向である。各MSIxMBXDnレジスタは、選択されたチャネルデータ方向に応じて、マスタ(送信機として)から読み取られ、かつ書き込まれるが、スレーブ(受信機として)からは読み取りのみされるか、またはスレーブ(送信機として)から読み取られ、かつ書き込まれるが、マスタ(受信機として)からは読み取りのみされるかのいずれかである。このアプローチは、データ書き込み競合を回避し、設計を単純化することを意図する。
各メールボックスデータレジスタは、読み取りまたは書き込みチャネルのいずれかであるように構成されるヒューズであり得る(マスタの観点から)。メールボックス[n]に対して:
・cfg_mbox_master_data_rd[n]=0:データレジスタは、マスタデータ書き込みチャネルとして構成される。
・cfg_mbox_master_data_rd[n]=1:データレジスタは、マスタデータ読み取りチャネルとして構成される。
この概念は、全レジスタを双方向(設計を複雑にする)にする代わりに、適正な柔軟性を提供するためのものである。そのようなアプローチの主な短所は、各レジスタのデータ方向がランタイム時に固定されることである。
自動化されたデータフロー制御機構が、種々の実施形態によると、メールボックスを通したデータのフローを制御するためにサポートされる。
8つのデータフローハンドシェイクプロトコルハードウェアブロックの各々は、MSIxMBXSレジスタ内に位置する2つのData Readyステータスフラグ(DTRDY_α、αは、A、B、C、D、E、F、G、またはHである)を制御する。一方のフラグは、データ送信機のためのものであり、インターフェースの伝送側のMSIxMBXSレジスタ内に位置する。他方は、データ受信機のためのものであり、インターフェースの受信側のMSIxMBXSレジスタ内に位置する。
データ送信機は、常時、転送イニシエータとなると仮定され、したがって、データ受信機からのハードウェアデータ要求は、要求されない。その用途が転送を開始するためにデータ要求を要求する場合、それは、ソフトウェアを通してハンドリングされなければならない。受信側プロセッサソフトウェアは、伝送側プロセッサに、データが要求されることを示す必要があろう。これは、割り込みまたはメールボックスベースのソフトウェアコマンドプロトコルのいずれかを通して達成され得る。
ハンドシェイクプロトコルハードウェアブロックの各々は、それに関連付けられたヒューズイネーブルを有する(cfg_mbox_handshake_enable_n[7:0])。ヒューズは、対応するハンドシェイクプロトコルハードウェアブロックをイネーブルにするためにプログラムされなければならない。ヒューズcfg_mbox_handshake_enable_n[0]は、ハンドシェイクプロトコルハードウェアブロックAに対応し、cfg_mbox_handshake_enable_n[1]は、ハンドシェイクプロトコルハードウェアブロックBに対応する等。
8つのプロトコルブロックの各々は、cfg_mbox_handshake_register_select[31:0]内の8つの4ビットフィールドによって特定のMSIメールボックスデータレジスタに割り当てられる。選択されたMSIメールボックスレジスタは、メールボックスプロトコルデータレジスタと称される。割り当てられないメールボックスレジスタは、メールボックスデータレジスタと称される。プロトコルデータレジスタは、単一メールボックス、または、ソフトウェアを通してバッファとして定義されたメールボックスレジスタの組内の1つのメールボックスレジスタであり得る。メールボックスがバッファとして定義されると、最後のバッファアクセスは、いくつかの実施形態によると、プロトコルデータレジスタに対してでなければならない。同様に、受信側プロセッサが、データの準備ができていることを確認し、メールボックスにアクセスするとき、最後のバッファアクセスも、プロトコルデータレジスタに対してでなければならない。
プロセッサのいずれもメールボックスにアクセスしていないとき、データフロー制御ハードウェアは、アイドル状態(MSIxMBXS.DTRDY_α=0)にある。伝送側プロセッサは、ここでメールボックスにアクセスし、データ転送データフロー制御を開始し得る。データフロー制御は、以下に説明されるように動作し、MSIxMBXDnは、プロトコルハードウェアブロックαに割り当てられると仮定される(すなわち、MSIxMBXDnは、プロトコルデータレジスタである)。
1.伝送側プロセッサ:
a)最後のデータワードを除き、全てを書き込む(バッファの場合)
b)Din→MSIxMBXDn(最後のデータ書き込み);1→DTRDY_α(自動);aReady To Read割り込みを受信機に送信する(自動)
2.受信側プロセッサ:
Ready To Read割り込み1を受信する
a)最後のデータワードを除き、全てを読み取る(バッファの場合)
b)MSIxMBXDn_αDout(最後のデータ読み取り);0→DTRDY_α(自動);Ready To Write割り込みを送信機に送信する(自動)
3.伝送側プロセッサ:
Ready To Write割り込みを受信する
a)0→DTRDY_α(自動2)
b)[1]にループバックし、必要に応じて繰り返す。
ステップ3a後、データフロー制御が完了し、伝送側プロセッサは、終了する、またはさらなるデータの送信に進み得る(すなわち、ステップ1にループバックする)。プロトコルシーケンス略図が、図6に示される。前述のように、MSIxMBXDnレジスタへの送信機書き込みによるDTRDY_αフラグの設定は、対応するメールボックスからの受信機データフロー制御プロトコル割り込み(Ready To Read)をもたらすであろう。
同様に、MSIxMBXDnレジスタの受信機読み取りによるDTRDY_αフラグのクリアは、対応するメールボックスからのデータ送信機データフロー制御プロトコル割り込み(Ready To Write)をもたらすであろう。データフロー制御が正しく動作するために、伝送側プロセッサは、DTRDY_α=0を観察するまで、新しいデータをメールボックスチャネルの中に送信してはならない。同様に、受信側プロセッサは、データをメールボックスから読み取る前、DTRDY_α=1まで待機しなければならない(そうでなければ、それは古いデータを読み取り得る)。
割り込みの使用は、メールボックスデータフロー制御プロトコルを管理する主要方法であることを意図されるが、ソフトウェアを用いてステータスビットをポーリングすることも可能である。メールボックスを通して送信されるデータが周期的制御プロセス内で使用されることになる用途では、ソフトウェアがメールボックスデータフロー制御ステータスフラグをポーリングすることは、好ましいアプローチであり得る。伝送および受信側プロセッサポーリングソフトウェアは、データフロー制御の状態を決定するために、それらのそれぞれのDTRDY_αフラグを試験すべきである。伝送および受信側プロセッサの観点からのデータフロー制御ステータスビットの意味は、以下の通りである:
・伝送側プロセッサ:
−DTRDY_α=0:データの送信の準備ができている(メールボックスが空またはデータが古い)
−DTRDY_α=1:データの送信の準備ができていない(メールボックスがまだ読み取られていない)
・受信側プロセッサ:
−DTRDY_α=0:データの受信の準備ができている(メールボックスが空またはデータが古い)
−DTRDY_α=1:データが読み取りのために利用可能(しかし、まだ読み取られていない)
MSIxMBXDnレジスタは、POR/BOR以外、どんなデバイスリセットも受けず、したがって、データは、受信機ソフトウェアがそれを使用可能であるように保存される。受信機読み取りがすでに進行中(すなわち、割り込みがトリガされるか、またはDTRDY_αがポーリングされ、設定されていることが見出される)である場合、リセット値の代わりに、有効(古い場合)データを返すことが好ましいと仮定される。しかしながら、全てのDTRDY_αフロー制御ビット(マスタおよびスレーブの両方)は、マスタ(upbm_reset_n)リセットを受ける。これは、リセット終了時、データフロープロトコルブロックを初期化するために必要である。マスタがリセットを被る場合、プロトコルデータフロー制御MSIxMBXS.DTRDY_αフラグのマスタおよびスレーブの両方のビューは、リセットされるであろう。スレーブがマスタリセットの場合に起動し続けるであろうように、スレーブリセットがマスタ(ヒューズMSRE=0)から分断されると仮定すると、MSIxMBXDnレジスタへのマスタ(送信機)書き込みの直後にマスタリセットが続く場合、スレーブ(受信機)側割り込み要求は、生じないであろう。
スレーブがリセットを被る場合、DTRDY_αフロー制御ビットのマスタまたはスレーブビューのいずれも、リセットされないであろう。MSIxMBXDnレジスタへのスレーブ(送信機)書き込みの直後にスレーブリセットが続く場合、マスタ(受信機)側割り込み要求は、依然として、正常に生じるであろう。マスタリセットに伴う両マスタおよびスレーブDTRDY_αフロー制御ビットのリセットも、可能なデータ競合条件を回避するために要求される。スレーブMSIxMBXS.DTRDY_αフラグの場合、マスタおよびスレーブリセットが分断されず(ヒューズMSRE=0)、スレーブリセットがスレーブをディスエーブルにしない(ヒューズSSRE=0)とき、可能なデータ競合条件が、スレーブDTRDY_αフラグがスレーブリセットによってリセットされるべき場合に生じ得る。
スレーブDTRDY_αフラグがスレーブリセットに基づいてセットされるべき場合、マスタがリセットし、スレーブのそれではなく、DTRDY_αフラグのマスタビューをリセットすることが可能であり得る。これは、(依然として、起動中の)スレーブがスレーブDTRDY_αフラグをサービスし、可能性として、マスタが対応するメールボックス(マスタDTRDY_α=0であるので空であると仮定する)に書き込んでいる間、それを読み取る機会を残すであろう。
受信機によるMSIxMBXDnレジスタからの読み取りは、受信機DTRDY_α=1である場合、データフロー制御プロトコル割り込み(Ready To Write)のみを発生させるであろう。受信機DTRDY_α=0(メールボックスからの新しいデータの初期読み取り後の場合であろう)である場合、受信機によるメールボックスの後続読み取りは、何ら影響を及ぼさないであろう(標的メールボックスのデータコンテンツを返す以外)。
これは、メールボックスが、それを通して移動させられる最後のデータ値の一時的記憶のために受信機によって使用されることを可能にする。しかしながら、データがメールボックスから読み取られた後、そのコンテンツは、古いと見なされ、送信機による変更を受けなければならない(随時)。その結果、メールボックスの一時記憶を正常に管理するために、ソフトウェアデータ転送プロトコルは、データ送信機がメールボックスのコンテンツを新しいデータで恣意的に上書きすることをデータ受信機が防止し得るような場所に存在すると仮定される。例えば、受信機が送信機からデータを要求する必要がある場合(別のメールボックスまたは割り込みを介して)、送信機は、メールボックスを上書きしないであろう。
任意のSFRの場合のように、MSIxMBXDnレジスタは、バイトまたはワード査定可能である。データバッファを使用するとき、バイトサイズおよびワードサイズの両方のデータトランザクションをサポートするために、送信機プロトコルレジスタのMSバイトまたはワード書き込みのいずれかがは、対応するDTRDY_αフラグを設定するであろう。同様に、受信機プロトコルデータレジスタ(MSIの他側)のMSバイトまたはワード読み取りのいずれかが、対応するDTRDY_αフラグを設定するであろう。
メールボックスデータレジスタは、デバイス上で利用可能である場合、DMAを使用して、MSIのマスタまたはスレーブ側でアクセスされ得る。メールボックスデータフロー制御プロトコルは、DMA動作と適合性がある割り込みを発生させ、個々のメールボックスレジスタ内のデータがCPU介入を伴わずに転送されることを可能にするであろう。メールボックスのDMAアクセスも、マスタおよび/またはスレーブサブシステムが、アイドルモードで動作中であるときにサポートされる。
第1のDMAデータ値(またはブロック)が転送されるために、割り当てられた送信機DMAチャネルは、ソフトウェアによって、または第1のデータ値(またはデータのブロック)をソフトウェア内に手動で書き込むことによって、トリガされ得る。DMAがメールボックスプロトコルデータレジスタに書き込むとき(ブロック転送の場合の最後の書き込み)、対応するDTRDY_αフラグが、設定されるであろう。送信機DTRDY_αフラグの設定は、Ready To Read割り込みをインターフェースの受信機側に発生させるであろう。受信機Ready To Read割り込み(メールボックスプロトコルデータレジスタが送信機によって書き込まれ、DTRDY_α=1を設定した後に開始される)は、対応する受信機DMAチャネルをトリガし、それに標的メールボックス(またはブロック転送の場合、複数のメールボックス)を読み取らせるであろう。そうすることによって、対応するDTRDY_αフラグをクリアするであろう。受信機DTRDY_αフラグのクリアは、送信機Ready To Write割り込みをインターフェースの送信機側に発生させるであろう。これは、割り当てられた送信機DMAチャネルをトリガし、次のデータ値(またはデータのブロック)を書き込み、DTRDY_αフラグを自動設定し、シーケンスを再び開始させるであろう。
メールボックスは、非関連クロック速度で動作するプロセッサ間のデータ路として動作するので、全てのデータおよび制御信号は、クロック境界を横断して移動する場合、同期させられなければならない。これは、データが書き込まれるときと、受信されるために利用可能になるときとの間の遅延を生じさせるであろう。これは、メールボックスチャネル待ち時間と称される。
同期遅延は、MSIxMBXDnの送信機書き込みから対応する受信機割り込み要求の立ち上がりまでの1送信機クロック+2受信機クロックである。データは、受信機割り込み要求のアサートに先立って、受信機によって読み取られるために利用可能であろう。受信機DTRDY_αフラグをポーリングする用途に対して、遅延は、MSIxMBXDnの送信機書き込みから受信機DTRDY_αフラグ更新までの1送信機クロック+3受信機クロックである。
同様に、MSIxMBXDnの受信機読み取りから対応する送信機割り込み要求の立ち上がりまでの遅延は、1受信機クロック(受信機DTRDY_αフラグを更新するため)+2送信機クロックとなるであろう。送信機DTRDY_αフラグをポーリングする用途に対して、遅延は、MSIxMBXDnの受信機読み取りから対応する送信機割り込み要求の立ち上がりまでの1送信機クロック+3受信機クロックである。
プロトコルハンドシェイクは、完全に自動であり、したがって、過剰データ転送待ち時間に影響する全ての他の遅延は、ソフトウェアポーリング、割り込み、またはDMA転送待ち時間の関数となるであろう。
例えば、図6を参照すると、割り込み(コンテキスト切替がイネーブルにされた状態で)が、メールボックスからデータが読み取られ/そこに書き込まれるために使用され、メールボックスの中にデータを書き込むためにかかる時間を除外すると仮定する場合、メールボックスチャネル待ち時間は、送信機書き込みサイクルの終了から第1の受信機ISR命令までの1(同期)送信機クロック+2(同期)+5(例外処理)受信機クロックとなるであろう。
システムが、DMAチャネルを使用して、データを移動させる場合、メールボックスチャネル待ち時間は、上で説明されたDMA転送待ち時間(3サイクル)および同期待ち時間から成る。すなわち、DMAチャネルが送信機および受信機の両方内のメールボックスに配分されると仮定して、送信機および受信機DMAバッファ間でデータのワードを移動させるためのメールボックスチャネル待ち時間(バス仲裁遅延を被らないと仮定して)は、受信機DMAチャネル要求までの3(DMA転送)+1(同期)送信機クロック+2(同期)受信機クロックとなるであろう。データは、後に受信機バッファ3受信機クロック以内に到着するであろう。しかしながら、DMAは、転送の第1のサイクル中にMSIxMBXDnを読み取り、それは、帰還信号をトリガし、送信機DTRDY_αフラグをクリアし、別の転送を開始させるであろう。したがって、帰還待ち時間は、次の送信機DMAチャネル要求までの1(DMA読み取り)+1(同期)受信機クロック+2(同期)送信機クロックとなるであろう。転送されるワードあたりの総往復経路遅延は、したがって、6送信機クロック+4受信機クロックである。
提案される実施形態は、ヒューズを介してデータチャネルのデータフロー方向を選択およびロックする能力、いくつかのデータチャネルフロー制御(ハンドシェイク)論理ブロックのうちの1つを任意のメールボックスに割り当てる能力、および論理重複を回避しながら、実装が容易な双方向データチャネルを非同期クロックドメイン間に生成する能力を提供する。
図7は、追加の随意のFIFOデータパイプを示す。デュアルまたはマルチコアマイクロコントローラの実施形態はまた、図7に示されるように、2つのFIFO710、720の組を含み得、一方は、スレーブからのデータ読み取りのためのものであり、他方は、スレーブへのデータ書き込みのためのものである。各FIFOの存在および深度は、パラメータを通して決定される。FIFOは、マスタおよびスレーブプロセッサ間のデータキューを協調させるために使用される。各FIFOチャネルデータフローは、一方向であり、設計および動作を簡略化する。すなわち、一方のFIFOは、専用読み取りデータチャネルであり、他方は、専用書き込みデータチャネルである。固有の同期遅延にかかわらず、FIFO設計は、データ保留が要求されないようなものである(データ保留は、典型的には、同期遅延または動作速度差の結果としての低速占有率計算に起因する書き込みオーバーランに適応するために追加される)。
FIFOは、空とならない(またはエラー条件に遭遇しない)ことを前提として、マスタおよびスレーブは、並行して、それにアクセスし得る。FIFOは、したがって、他方によって読み取られる前に一方のプロセッサによってロードされなければならないメールボックスベースのデータパイプより優れたスループットをもたらし得る。
しかしながら、FIFOコンテンツは、順番にロードおよびアンロードされ、メールボックスデータパイプ内のデータのようにランダムにアクセス可能ではない。FIFOも、(定義上)一方向である。これは、FIFOをプロセッサ間でデータのブロックを転送するための最速手段を必要とする用途により好適にする。
デュアルまたはマルチコアマイクロコントローラの実施形態はまた、例えば、パラメータMSI_FIFO_PRESENT=1の場合、2チャネルFIFOを含み得る。FIFOは、マスタおよびスレーブプロセッサ間のデータキューを協調させるために使用される。FIFOは、空にならない(またはエラー条件に遭遇しない)ことを前提として、マスタおよびスレーブは、並行して、それにアクセスし得る。FIFOは、したがって、他方によって読み取られる前に一方のプロセッサによってロードされなければならないメールボックスベースのデータパイプより優れたスループットをもたらし得る。各FIFOチャネルデータフローは、一方向であり、設計および動作を簡略化する。すなわち、図7に示されるように、一方のチャネルは、専用読み取りデータチャネルであり、他方は、専用書き込みデータチャネルである。一貫性のために、FIFOは、常時、マスタプロセッサのそれらの見方に関して言及される。
さらに、FIFOデータレジスタは、レジスタ名内に関連付けられた方向を有していない。しかしながら、マスタのこれらのレジスタの見方に基づいて、マスタWFDATAレジスタは、書き込みFIFO(Write FIFO)データ書き込み(入力)レジスタとなり、スレーブWFDATAレジスタは、書き込みFIFOデータ読み取りレジスタとなるであろう。同様に、マスタRFDATAレジスタは、読み取りFIFO(Read FIFO)データ読み取り(出力)レジスタとなり、スレーブRFDATAレジスタは、読み取りFIFOデータ書き込みレジスタとなるであろう。以下の節では、データ送信機は、データをFIFOの中に書き込むプロセッサである。逆に言えば、データ受信機は、データをFIFOから読み取るプロセッサである。
FIFOは、対応するイネーブル制御ビットがクリアにされる度にディスエーブルにされるであろう(書き込みFIFOのためのMSIxFIFOCS.WFENおよび読み取りFIFOのためのMSIxFIFOCS.RFEN)。FIFOイネーブル制御ビットは、デバイスリセット中にクリアされる。通常動作条件下、FIFOは、イネーブルにされたままであろう。しかしながら、FIFOエラーの場合、またはスレーブプロセッサがリセットした(または応答を停止し、リセットされる必要がある)場合、MSIxFIFOCS.WFENおよびMSIxFIFOCS.RFEN制御ビットが、必要に応じて、FIFOをフラッシュおよび再初期化するために使用されることができる。ディスエーブルにされると、FIFOコンテンツは、ワイプ(論理「0」にリセット)され、アドレスポインタが、FIFO空状態に初期化され、両ポインタは、各々に等しく(この場合、全て0に)設定される。FIFO空ステータスビットも、設定される(書き込みFIFOのためのMSIxFIFOCS.WFEMPTYおよび読み取りFIFOのためのMSIxFIFOCS.RFEMPTY)。FIFOがイネーブルにされた後、空ステータスビットは、第1のデータ値がFIFOの中に書き込まれるような時間まで設定されたままであろう。
マスタからスレーブプロセッサにパスされるべきデータは、マスタプロセッサによって書き込みFIFOデータ書き込みレジスタ(マスタMSIxWFDATA[15:0])の中に書き込まれる。スレーブは、次いで、データを書き込みFIFOデータ読み取りレジスタ(スレーブMSIxWFDATA)から読み取ることができる。スレーブからマスタプロセッサにパスされるべきデータは、スレーブプロセッサによって読み取りFIFOデータ書き込みレジスタ(MSIxRFDATA[15:0])の中に書き込まれる。マスタは、次いで、データを読み取りFIFOデータ読み取りレジスタ(MSIxRFDATA)から読み取ることができる。
各データレジスタアクセスは、データチャネルFIFOアドレスポインタを修正するので、データは、単一エンティティ(すなわち、ワードまたはバイト)として書き込まれ、読み取られることになる。FIFOデータ書き込みレジスタ(マスタMSIxWFDATA[15:0]およびスレーブMSIxRFDATA[15:0])は、書き込み専用レジスタである。これらのレジスタの読み取りは、全て0を返し、FIFOアドレスポインタに影響を及ぼさないであろう。FIFOデータ読み取りレジスタ(マスタMSIxRFDATA[15:0]およびスレーブMSIxWFDATA[15:0])は、読み取り専用である。これらのレジスタへの書き込みは、影響を及ぼさないであろう。データは、データ送信機がFIFOデータ書き込みレジスタに書き込むとき、FIFO内の次の空いている場所に書き込まれる(書き込みFIFOのためのMSIxWFDATAおよび読み取りFIFOのためのMSIx−RFDATA)。FIFOに書き込まれる最後のデータは、レジスタ内に保持され、次のシステムクロックエッジにおいてFIFO FSMによってFIFOメモリの中にロードされる。このレジスタの読み取りは、全て0を返すであろう。このレジスタは、データ受信機プロセッサ(FIFOの読み取り側)に不可視である。
アドレスされたFIFO場所がロードされると、書き込みアドレスポインタは、循環バッファ内の次の空いている場所を指すように調節される。空いている場所が残っていない場合、FIFOフルステータスビットが設定される(書き込みFIFOのためのMSIxFIFOCS.WFFULLおよび読み取りFIFOのためのMSIx−FIFOCS.RFFULL)。
データは、データ受信機プロセッサがFIFOデータ読み取りレジスタを読み取るとき、FIFOから読み取られる(書き込みFIFOのためのMSIxWFDATAおよび読み取りFIFOのためのMSIxRFDATA)。読み取りサイクルは、読み取りポインタによってアドレスされたFIFOメモリ場所からデータにアクセスするであろう。
このレジスタは、書き込み可能ではなく、データ送信機プロセッサ(FIFOの書き込み側)に可視でもない。アドレスされたFIFO場所が読み取られた後、読み取りアドレスポインタは、循環バッファ内の次の有効データ場所を指すように調節される。読み取られるための場所が残っていない場合、FIFO空ステータスビットが設定される(書き込みFIFOのためのMSIxFIFOCS.WFEMPTYおよび読み取りFIFOのためのMSIxFIFOCS.RFEMPTY)。
FIFOは、種々の方法で使用され得る。データは、要求されるか、またはプロセッサにプッシュされ得る。データ肯定応答は、直接(空ステータスビット状態または関連付けられた割り込みを使用して)または間接的に(プロセッサまたはプロセッサ割り込みを使用して)伝えられ得る。
例えば、ある実施形態によると、FIFO空ステータスビットが、割り込みをデータ送信機プロセッサに発生させるために使用される。FIFO割り込みトリガ選択ビット(RFITSEL[1:0]およびWFITSEL[1:0])が、FIFOアドレスポインタと併せて使用され、受信側プロセッサのためのデータ有効割り込みを発生させるべきときを決定する。これらの割り込みは、データ転送プロトコルの一部として使用されることが意図される。しかしながら、用途によって要求されない場合、それらは、割り込みコントローラマクロ内でディスエーブルにされ得る。
ある実施形態によると、FIFOが空であると見なされるとき、FIFO空ステータスフラグが、設定され、FIFO空割り込みが、データ送信機プロセッサのために発生させられる。割り込みは、空ステータスフラグの論理0から論理1遷移に基づいて発生させられることができる(書き込みFIFOのためのMSIxFIFOCS.WFEMPTYおよび読み取りFIFOのためのMSIxFIFOCS.RFEMPTY)。FIFOへのデータの書き込みは、空ステータスフラグをクリアし、データ有効割り込みを受信機に送信するであろう。
送信機プロセッサがFIFOに書き込むと、データ有効割り込みパルスが、図8に一般化されるように、FIFOポインタのコンテンツと併せて、FIFO割り込みトリガ選択ビットの状態に基づいて発生させられ得る(それぞれ、読み取りおよび書き込みFIFOのためのRFITSEL[1:0]およびWFITSEL[1:0])。
データが以前に空のFIFOの中に書き込まれるとき、空ステータスフラグ(書き込みFIFOのためのMSIxFIFOCS.WFEMPTYおよび読み取りFIFOのためのMSIxFIFOCS.RFEMPTY)は、クリアされ、FIFOが再び空になるような時間までクリアなままである。割り込みは、空ステータスフラグの論理1から論理0遷移に基づいて発生させられる。
データ書き込みが、FIFO割り込みトリガ選択ビットによって定義された閾値を満たすFIFOをもたらすとき、データ有効割り込みが、閾値が満たされることを引き起こす(すなわち、次のFIFOアドレスへの書き込みはない)FIFO書き込みに基づいて発生させられる。データ書き込みがFIFOがフルになる結果をもたらす場合、フルステータスフラグ(書き込みFIFOのためのMSIxFIFOCS.WFFULLおよび読み取りFIFOのためのMSIx−FIFOCS.RFFULL)も、設定され、FIFOがもはやフルではなくなるような時間まで設定されたままであろう。
FIFOフルステータスビットが設定された後(書き込みFIFOのためのMSIxFIFOCS.WFFULLおよび読み取りFIFOのためのMSIxFIFOCS.RFFULL)、FIFO占有率論理は、オーバーフロー条件を検出し、オーバーフローステータスフラグを設定するであろう(書き込みFIFOのためのMSIxFIFOCS.WFOFおよび読み取りFIFOのためのMSIxFIFOCS.RFOF)。データ書き込みは、無視され、FIFO書き込みポインタは、修正されず、FIFOのコンテンツを保存するであろうことに留意されたい。
同様に、データ受信機が、FIFO空ステータスビットが設定された後、FIFOからデータの読み取りを試みる場合(書き込みFIFOのためのMSIxFIFOCS.WFEMPTYおよび読み取りFIFOのためのMSIxFIFOCS.RFEMPTY)、FIFO占有率論理は、アンダーフロー条件を検出し、アンダーフローステータスフラグを設定するであろう(書き込みFIFOのためのMSIxFIFOCS.WFUFおよび読み取りFIFOのためのMSIxFIFOCS.RFUF)。FIFO読み取りポインタは、読み取りに先立って調節されず(典型的であろうように)、最近の読み取りFIFOアドレスの再読み取りをもたらすであろうことに留意されたい。
マスタおよびスレーブプロセッサは、互いに直接割り込み得る。マスタは、MSIx−CON.MTSIRQ制御ビットをアサートすることによって、割り込み要求をスレーブに発行し得る。同様に、スレーブは、MSIxCON.STMIRQ制御ビットをアサートすることによって、割り込み要求をマスタに発行し得る。
割り込みは、割り込み肯定応答制御ビットの使用を通して肯定応答されている(マスタからスレーブ割り込み要求のためのMSIxCON.MTSIACKおよびスレーブからマスタ割り込み要求のためのMSIxCON.STMIACK)。
全てのマスタ/スレーブ割り込み制御/ステータスビットは、いずれのプロセッサによっても読み取り可能である。割り込み要求ビットは、要求側プロセッサによって読み取られ/書き込まれ、および割り込み肯定応答ビットは、MSIxCON制御レジスタを通して割り込まれたプロセッサによって読み取られる/書き込まれる。割り込み要求ビットは、割り込まれたプロセッサによってのみ読み取られ、割り込み肯定応答ビットは、MSIxSTATステータスレジスタを通して要求側プロセッサによってのみ読み取られる。
ある実施形態によると、マスタがMSIxCON.MTSIRQビットをアサートするとき、それは、スレーブクロックと同期させられ、スレーブ割り込みとなる。スレーブの観点から、MTSIRQビットは、MSIx−STAT.MTSIRQにおける読み取り専用ステータスビットである。スレーブは、割り込みをサービスするとき、MSIxCON.MTSIACKビットをハンドラ内のあるポイントに設定することによって割り込みを肯定応答しなければならない。マスタクロックドメインへの同期後、マスタは、MSIxSTAT.MTSIACK=1を観察し、次いで、(その観点から)MSIxCON.MTSIRQビットをクリアし、要求を無効にするであろう。ハンドシェイクは、MSIxSTAT.MTSIRQ=0を観察すると、スレーブによって完了される。その時点で、スレーブは、MSIxCON.MTSIACKをクリアし、肯定応答を無効にし、割り込みハンドラは、次いで、終了し得る。
スレーブがMSIxCON.STMIRQビットをアサートすると、それは、マスタクロックと同期させられ、マスタ割り込みとなる。マスタの観点から、STMIRQビットは、MSIxSTAT.MTSIRQにおける読み取り専用ビットである。マスタは、割り込みのサービスが完了すると、MSIxCON.STMIACKビットをハンドラの終了時に設定することによって割り込みを肯定応答しなければならない。スレーブクロックドメインへの同期後、スレーブは、MSIxSTAT.STMIACK=1を観察し、次いで、(その観点から)MSIxCON.STMIRQビットをクリアし、要求を無効にするであろう。ハンドシェイクは、MSIxSTAT.STMIRQ=0を観察するとマスタによって完了される。その時点で、マスタは、MSIxCON.STMIACKをクリアし、肯定応答を無効にし、割り込みハンドラは、次いで、終了し得る。
図9は、上記に説明されるようなメールボックスシステムと図1および2の通信インターフェース130内のFIFOシステムの組み合わせを示す。前述のように、ある実施形態によると、FIFOは、デフォルトによってディスエーブルにされ得、メールボックスのみ、アクティブであり得、ユーザは、例えば、ビットを関連付けられた制御レジスタ内に設定することによって、FIFOをイネーブルにするようにデバイスをプログラムし得る。

Claims (26)

  1. マスタコアおよびスレーブコアを備えている単一チップマイクロコントローラであって、前記マスタコアは、マスタシステムクロックによってクロックされ、前記スレーブコアは、スレーブシステムクロックによってクロックされ、各コアは、複数の周辺デバイスに関連付けられ、それぞれ、マスタマイクロコントローラおよびスレーブマイクロコントローラを形成し、
    前記単一チップマイクロコントローラは、前記マスタマイクロコントローラと前記スレーブマイクロコントローラとの間に通信インターフェースをさらに備え、前記通信インターフェースは、フロー制御論理と結合されている複数の構成可能方向性データレジスタを備え、前記フロー制御論理は、前記複数の構成可能データレジスタの各々に方向を割り当てるように構成可能である、単一チップマイクロコントローラ。
  2. 各方向性データレジスタを構成するためのヒューズをさらに備えている、請求項1に記載の単一チップマイクロコントローラ。
  3. 各方向性データレジスタを構成するための構成レジスタをさらに備えている、請求項1または請求項2に記載の単一チップマイクロコントローラ。
  4. ハンドシェイク論理ブロックをさらに備え、前記ハンドシェイク論理ブロックは、前記複数の構成可能方向性データレジスタに関する前記マスタおよびスレーブコア間のハンドシェイク信号を提供するように構成されている、請求項1〜3のいずれか1項に記載の単一チップマイクロコントローラ。
  5. 前記通信インターフェースは、複数のメールボックスを定義するようにさらに構成可能であり、前記複数の構成可能データレジスタのうちの構成可能な数の連続したデータレジスタが、各メールボックスに割り当てられる、請求項1〜4のいずれか1項に記載の単一チップマイクロコントローラ。
  6. 各方向性データレジスタを構成するためのヒューズをさらに備えている、請求項1〜5のいずれか1項に記載の単一チップマイクロコントローラ。
  7. 各方向性データレジスタを構成するための構成レジスタをさらに備えている、請求項1〜6のいずれか1項に記載の単一チップマイクロコントローラ。
  8. 構成可能データレジスタのデータ方向は、前記単一チップマイクロコントローラのプログラミング中に割り当てられる、請求項1〜7のいずれか1項に記載の単一チップマイクロコントローラ。
  9. メールボックスへのレジスタの割り当て、および前記複数の構成可能データレジスタの各々のデータ方向の割り当ては、前記単一チップマイクロコントローラのプログラミング中にプログラムされる、請求項1〜8のいずれか1項に記載の単一チップマイクロコントローラ。
  10. 各データレジスタは、方向信号およびハンドシェイク信号によって制御される、請求項1〜9のいずれか1項に記載の単一チップマイクロコントローラ。
  11. メールボックスの前記構成可能レジスタのうちの1つは、制御レジスタとして使用される、請求項1〜10のいずれか1項に記載の単一チップマイクロコントローラ。
  12. 前記複数の構成可能データレジスタのうちの少なくとも1つは、ステータスレジスタとしてのものである、請求項1〜11のいずれか1項に記載の単一チップマイクロコントローラ。
  13. 前記複数の構成可能データレジスタのうちの少なくとも1つは、コマンドレジスタとしてのものである、請求項1〜12のいずれか1項に記載の単一チップマイクロコントローラ。
  14. 前記構成可能データレジスタのうちの1つへの前記マスタコアからのみの書き込み経路および前記構成可能データレジスタのうちの1つから前記スレーブコアへの読み取り経路、または、前記構成可能データレジスタのうちの1つへの前記スレーブコアからのみの書き込み経路および前記構成可能データレジスタのうちの1つから前記マスタコアへの読み取り経路のいずれかを定義するための複数のマルチプレクサを備えている、請求項1〜13のいずれか1項に記載の単一チップマイクロコントローラ。
  15. 前記マスタまたはスレーブコアから前記構成可能データレジスタのうちの1つへの書き込み経路がそれぞれ設定されると、前記構成可能データレジスタのうちの1つから前記マスタまたはスレーブコアへの読み取り経路が利用可能である、請求項14に記載の単一チップマイクロコントローラ。
  16. 前記マスタコアから前記構成可能データレジスタのうちの1つへの書き込み経路が設定されると、前記マスタクロックは、前記構成可能データレジスタのうちの1つを書き込むためのクロックを提供し、前記スレーブクロックは、前記構成可能データレジスタのうちの1つを読み取るためのクロックを提供する、請求項14に記載の単一チップマイクロコントローラ。
  17. 前記スレーブコアから前記構成可能データレジスタのうちの1つへの書き込み経路が設定されると、前記スレーブクロックは、前記構成可能データレジスタのうちの1つを書き込むためのクロックを提供し、前記マスタクロックは、前記構成可能データレジスタのうちの1つを読み取るためのクロックを提供する、請求項14に記載の単一チップマイクロコントローラ。
  18. 読み取りFIFOメモリおよび書き込みFIFOメモリを前記通信インターフェース内にさらに備え、前記読み取りFIFOメモリは、前記スレーブコアと結合されているデータ入力と、前記マスタコアと結合されているデータ出力とを備え、前記書き込みFIFOメモリは、前記マスタコアと結合されているデータ入力と、前記スレーブコアと結合されているデータ出力とを備えている、請求項1〜17のいずれか1項に記載の単一チップマイクロコントローラ。
  19. 前記読み取りFIFOメモリおよび書き込みFIFOメモリは、構成レジスタを通して随意にイネーブルにされる、請求項18に記載の単一チップマイクロコントローラ。
  20. 複数のスレーブコアをさらに備え、前記通信インターフェースは、複数のデータレジスタ組を備え、各データレジスタ組は、フロー制御論理と結合されている複数の構成可能方向性データレジスタを備え、前記フロー制御論理は、前記複数の構成可能データレジスタの各々に方向を割り当てるように構成可能である、請求項1〜19のいずれか1項に記載の単一チップマイクロコントローラ。
  21. 単一チップマイクロコントローラ上のマスタコアとスレーブコアとの間の通信を提供する方法であって、前記マスタコアは、マスタシステムクロックによってクロックされ、前記スレーブコアは、スレーブシステムクロックによってクロックされ、各コアは、複数の周辺デバイスに関連付けられ、それぞれ、マスタマイクロコントローラおよびスレーブマイクロコントローラを形成し、前記方法は、
    前記マスタマイクロコントローラと前記スレーブマイクロコントローラとの間に通信インターフェースを提供することと、
    フロー制御論理と結合されている複数の構成可能方向性データレジスタをそれぞれのメールボックスを形成するように構成することと、
    前記複数の構成可能方向性データレジスタの各々のために、前記マスタコアからのデータ方向、または前記マスタコアへのデータ方向を構成することと、
    前記複数の構成可能方向性データレジスタを通してのみ、データを前記マスタコアと前記スレーブコアとの間で交換することと
    を含む、方法。
  22. 前記構成するステップは、前記単一チップマイクロコントローラのプログラミング中にヒューズを通して行われる、請求項21に記載の方法。
  23. 前記交換するステップは、前記マスタコアと前記スレーブコアとの間のハンドシェイク信号を用いて行われる、請求項21または請求項22に記載の方法。
  24. 前記複数の構成可能データレジスタのうちの構成可能な数の連続したデータレジスタが、各メールボックスに割り当てられる、請求項21〜23のいずれか1項に記載の方法。
  25. メールボックスの前記構成可能レジスタのうちの1つは、制御レジスタとして使用される、請求項24に記載の方法。
  26. 前記複数の構成可能データレジスタのうちの少なくとも1つは、ステータスレジスタまたはコマンドレジスタとしてのものである、請求項24に記載の方法。
JP2017562999A 2015-06-18 2016-06-17 構成可能メールボックスデータバッファ装置 Pending JP2018519587A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562181379P 2015-06-18 2015-06-18
US62/181,379 2015-06-18
US15/184,789 US10120815B2 (en) 2015-06-18 2016-06-16 Configurable mailbox data buffer apparatus
US15/184,789 2016-06-16
PCT/US2016/038115 WO2016205675A1 (en) 2015-06-18 2016-06-17 A configurable mailbox data buffer apparatus

Publications (1)

Publication Number Publication Date
JP2018519587A true JP2018519587A (ja) 2018-07-19

Family

ID=56550308

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017562999A Pending JP2018519587A (ja) 2015-06-18 2016-06-17 構成可能メールボックスデータバッファ装置

Country Status (7)

Country Link
US (1) US10120815B2 (ja)
EP (1) EP3311298A1 (ja)
JP (1) JP2018519587A (ja)
KR (1) KR20180019603A (ja)
CN (1) CN107810492B (ja)
TW (1) TW201710922A (ja)
WO (1) WO2016205675A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10002102B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
US10002103B2 (en) * 2015-03-13 2018-06-19 Microchip Technology Incorporated Low-pin microcontroller device with multiple independent microcontrollers
CN106791152B (zh) * 2016-12-30 2019-08-27 Oppo广东移动通信有限公司 一种通信方法及移动终端
KR20210045009A (ko) * 2019-10-16 2021-04-26 삼성전자주식회사 인터페이싱 장치, 인터페이싱 장치를 포함하는 반도체 장치 및 반도체 장치의 통신 방법
CN112732628A (zh) * 2019-10-29 2021-04-30 Oppo广东移动通信有限公司 核间数据处理方法、系统、片上系统以及电子设备
CN111427821B (zh) * 2020-03-19 2021-10-01 深圳震有科技股份有限公司 双核amp系统共用spi接口的方法、系统及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004318628A (ja) * 2003-04-18 2004-11-11 Hitachi Industries Co Ltd 演算処理装置
JP2005527022A (ja) * 2002-03-15 2005-09-08 インテル コーポレイション プロセッサの温度制御インタフェース
JP2008059282A (ja) * 2006-08-31 2008-03-13 Olympus Corp 分散処理システム、分散処理方法及びプログラム
WO2014040047A1 (en) * 2012-09-10 2014-03-13 Texas Instruments Incorporated Control of dedicated non-volatile arrays for specific function availability

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496880B1 (en) 1999-08-26 2002-12-17 Agere Systems Inc. Shared I/O ports for multi-core designs
US6912716B1 (en) * 1999-11-05 2005-06-28 Agere Systems Inc. Maximized data space in shared memory between processors
US20070113229A1 (en) * 2005-11-16 2007-05-17 Alcatel Thread aware distributed software system for a multi-processor
KR101430687B1 (ko) * 2007-09-28 2014-08-18 삼성전자주식회사 다이렉트 억세스 부팅동작을 갖는 멀티 프로세서 시스템 및그에 따른 다이렉트 억세스 부팅방법
US20130160028A1 (en) 2011-12-14 2013-06-20 John E. Black Method and apparatus for low latency communication and synchronization for multi-thread applications
JP2014143284A (ja) * 2013-01-23 2014-08-07 Sony Corp 記憶素子、半導体装置、および書込方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005527022A (ja) * 2002-03-15 2005-09-08 インテル コーポレイション プロセッサの温度制御インタフェース
JP2004318628A (ja) * 2003-04-18 2004-11-11 Hitachi Industries Co Ltd 演算処理装置
JP2008059282A (ja) * 2006-08-31 2008-03-13 Olympus Corp 分散処理システム、分散処理方法及びプログラム
WO2014040047A1 (en) * 2012-09-10 2014-03-13 Texas Instruments Incorporated Control of dedicated non-volatile arrays for specific function availability

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宇野 重雄: "「たった五つのプロトコルと複数のエラー・マネージメント 車載LANに使われるCAN通信プロトコル」", INTERFACE, vol. 第31巻,第4号, JPN6020013919, 1 April 2005 (2005-04-01), pages 57 - 67, ISSN: 0004390422 *

Also Published As

Publication number Publication date
US20160371200A1 (en) 2016-12-22
US10120815B2 (en) 2018-11-06
CN107810492B (zh) 2021-08-24
EP3311298A1 (en) 2018-04-25
CN107810492A (zh) 2018-03-16
TW201710922A (zh) 2017-03-16
WO2016205675A9 (en) 2017-01-12
KR20180019603A (ko) 2018-02-26
WO2016205675A1 (en) 2016-12-22

Similar Documents

Publication Publication Date Title
US10120815B2 (en) Configurable mailbox data buffer apparatus
US8521934B1 (en) Multi-port context-based host controller
US7433977B2 (en) DMAC to handle transfers of unknown lengths
US8086766B2 (en) Support for non-locking parallel reception of packets belonging to a single memory reception FIFO
JP2004318901A (ja) データ処理モジュール相互間の高速制御およびデータバスシステム
JP2007052790A (ja) プロセッサとメモリ・フロー・コントローラとの間でコマンド・パラメータを通信するためのシステム、方法、コンピュータ・プログラム、および装置
US11341087B2 (en) Single-chip multi-processor communication
JP2004171209A (ja) 共有メモリデータ転送装置
JP4891405B2 (ja) バリア操作の条件付き伝搬のための方法および装置
JP2007220046A (ja) バス装置、バスシステムおよび情報転送方法
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
CN106354674B (zh) 半导体装置和系统
JP2008535075A (ja) データフロート遅延時間および外部メモリ書き込みの間のシステムの非アクティブを減少させるための方法および装置
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
JP2007219816A (ja) マルチプロセッサシステム
US20070156937A1 (en) Data transfer in multiprocessor system
US7006521B2 (en) External bus arbitration technique for multicore DSP device
CN111290983A (zh) Usb传输设备及传输方法
CN114746853A (zh) 存储器与分布式计算阵列之间的数据传输
US9128924B2 (en) Method and apparatus for wireless broadband systems direct data transfer
JP2011090485A (ja) パイプ調停回路、パイプ調停方法
US7673091B2 (en) Method to hide or reduce access latency of a slow peripheral in a pipelined direct memory access system
KR102206313B1 (ko) 시스템 인터커넥트 및 시스템 인터커넥트의 동작 방법
JP2007048019A (ja) エミュレーション方法、エミュレータ、コンピュータ組込型デバイスおよびエミュレータ用プログラム
WO2006042108A1 (en) Multi-threaded direct memory access

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201119