(57)【要約】共有バスを有するデバイス間のダイレクトデータ転送が、上記デバイスに関連付けられたコントローラからの関わりを低減して実施され得る。コントローラと、ソースメモリデバイスと、ターゲットメモリデバイスとが、共有バスに連結され得る。コントローラは、ターゲットデバイスへ転送されるデータに対する、ソースメモリデバイスにおけるソースアドレスを特定可能である。コントローラは、ターゲットメモリデバイスにおけるターゲットアドレスを特定することも可能であり、ソースメモリデバイスとターゲットメモリデバイスの両方で受信されるコマンドによって、ソースメモリデバイスからターゲットメモリデバイスへのダイレクトなデータ転送を開始し得る。上記コマンドに応答して、コントローラからの更なるコマンドなしに、ソースメモリデバイスがデータをバスへ読み出し、そして、ターゲットメモリがバスからデータを読み取り、該データを上記ターゲットアドレスから記憶し得る。【選択図】図１
2019500669.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムを動作させる方法であって、
メモリコントローラで、ターゲットメモリへ転送されるデータに対する、ソースメモリにおけるソースアドレスを特定することであって、前記メモリコントローラ、前記ソースメモリ、及び前記ターゲットメモリの各々が１つのバスに結合されている、ことと、
前記メモリコントローラによって、ターゲットアドレスを前記ターゲットメモリへ送信して、前記バスを介して前記ソースメモリから前記ターゲットメモリへダイレクトに前記データの転送を開始することと、
を含む方法。
【請求項２】
前記ソースメモリから前記バスへデータを読み出すための読み出しコマンドを前記ソースメモリへ送信すること、を更に含む請求項１に記載の方法。
【請求項３】
前記ソースメモリによって、前記ソースアドレスから始まるデータを前記バスへ転送すること、を更に含む請求項２に記載の方法。
【請求項４】
前記読み出しコマンドは前記バスを介して前記ソースメモリへ送信され、前記方法は、
前記バスを介し前記ターゲットメモリによって前記読み出しコマンドを受信することと、
前記ソースメモリから前記バスへ提供される後続のデータを、前記ターゲットメモリに前記ターゲットアドレスから記憶することと、
を更に含む、請求項３に記載の方法。
【請求項５】
前記読み出しコマンドは、データ出力命令と前記ソースアドレスとを含み、前記ターゲットメモリによって前記読み出しコマンドを受信することは、
前記読み出しコマンドを前記データの転送の開始と認識することと、
前記ソースアドレスを無視することと、
を含む、請求項４に記載の方法。
【請求項６】
前記読み出しコマンドを受信することは、
前記ソースメモリ及び前記ターゲットメモリの各々にチップイネーブル信号を提供することと、
タイムデュレーションの間中、前記ソースメモリ及び前記ターゲットメモリにクロックを提供することと、
を更に含む、請求項２に記載の方法。
【請求項７】
前記タイムデュレーションは、前記ソースメモリから前記ターゲットメモリへ転送されるデータの量に対応する、請求項６に記載の方法。
【請求項８】
前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含む、請求項１に記載の方法。
【請求項９】
前記ソースメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記ターゲットメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含む、請求項１に記載の方法。
【請求項１０】
メモリシステムを動作させる方法であって、
ターゲットメモリ及びソースメモリに結合されたバスを介して前記ターゲットメモリで受信されるデータを、前記ターゲットメモリに記憶させるためのターゲットアドレスを設定することと、
前記ソースメモリから前記バスへデータを読み出し且つ該データを前記バスから前記ターゲットメモリに記憶するためのコマンドを、前記ソースメモリ及び前記ターゲットメモリの各々へ送信することと、
を含む方法。
【請求項１１】
前記ターゲットアドレスを設定することは、前記ターゲットアドレスを前記ターゲットメモリのターゲットアドレスレジスタに提供することを含む、請求項１０に記載の方法。
【請求項１２】
前記ターゲットメモリの動作命令デコーダで、前記コマンドを受信することと、
前記ターゲットメモリで、前記コマンドに続いて、前記バスからの前記データの記憶を前記ターゲットアドレスから開始することと、
を更に含む、請求項１１に記載の方法。
【請求項１３】
前記ソースメモリによって、ソースアドレスで始まるデータを前記バスへ転送することと、
前記ターゲットメモリによって、前記バスからの前記データを記憶することと、
を更に含む、請求項１２に記載の方法。
【請求項１４】
前記コマンドは、前記ソースメモリ及び前記ターゲットメモリの各々で受信される１つのコマンドシーケンスを含む、請求項１０に記載の方法。
【請求項１５】
前記ソースメモリ及び前記ターゲットメモリの各々にチップイネーブル信号を提供することと、
タイムデュレーションの間中、前記ソースメモリ及び前記ターゲットメモリにクロックを提供することと、
を更に含む、請求項１０に記載の方法。
【請求項１６】
前記タイムデュレーションは、前記ソースメモリから前記ターゲットメモリへ転送されるデータの量に対応する、請求項１５に記載の方法。
【請求項１７】
前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含む、請求項１０に記載の方法。
【請求項１８】
前記ソースメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記ターゲットメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含む、請求項１０に記載の方法。
【請求項１９】
データ転送のための装置であって、
バスに結合された第１の電子デバイスであって、第１のデータ記憶領域を備える第１の電子デバイスと、
前記バスに結合された第２の電子デバイスであって、第２のデータ記憶領域を備える第２の電子デバイスと、
前記バスに結合され且つ前記第１の電子デバイス及び前記第２の電子デバイスと電子通信するコントローラと、
を備え、
前記コントローラは、
前記第１のデータ記憶領域から前記第２のデータ記憶領域へ転送されるデータに対する、前記第１のデータ領域におけるソースアドレスを特定し、
前記第２のデータ記憶領域におけるターゲットアドレスを特定し、
前記バスを介して前記第１の電子デバイスから前記第２の電子デバイスへダイレクトに前記データの転送を開始する、
ように動作可能である、装置。
【請求項２０】
前記第２の電子デバイスはターゲットアドレスレジスタを備え、前記コントローラは、転送される前記データの記憶のための前記ターゲットアドレスを前記ターゲットアドレスレジスタに設定するように更に動作可能である、請求項１９に記載の装置。
【請求項２１】
前記第２の電子デバイスは、前記データの前記転送を開始するための読み出しコマンドを前記コントローラから受信するように動作可能な動作命令デコーダを備える、請求項１９に記載の装置。
【請求項２２】
前記コントローラは、前記第１の電子デバイス及び前記第２の電子デバイスの各々にアクセスするための、前記バスとの単一のインタフェースを備える、請求項１９に記載の装置。
【請求項２３】
前記コントローラは、
前記第１の電子デバイス及び前記第２の電子デバイスの各々にチップイネーブル信号を提供し、
前記第１のデータ記憶領域から前記第２のデータ記憶領域へ転送されるデータの量に対応するタイムデュレーションの間中、前記第１の電子デバイス及び前記第２の電子デバイスの各々にクロックを提供する、
ように更に動作可能である、請求項１９に記載の装置。
【請求項２４】
前記第１の電子デバイスは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記第２の電子デバイスは不揮発性メモリ又は揮発性メモリのうちの一方を含む、請求項１９に記載の装置。
【請求項２５】
電子メモリ装置であって、
バスに結合されたソースメモリモジュールと、
前記バスに結合されたターゲットメモリモジュールと、
前記バスに結合され且つ前記ソースメモリモジュール及び前記ターゲットメモリモジュールと電子通信するコントローラと、
を備え、
前記コントローラは、
前記バスを介して前記ターゲットメモリモジュールで受信されるデータの記憶のための、前記ターゲットメモリモジュールにおけるターゲットアドレスを設定し、
前記ソースメモリモジュールから前記バスへデータを読み出すための読み出しコマンドを、前記ソースメモリモジュールへ送信する、
ように動作可能であり、
前記ターゲットメモリモジュールは、前記ソースメモリモジュールから読み出された前記データを前記バスを介してダイレクトに受信するように動作可能である、電子メモリ装置。
【請求項２６】
前記ターゲットメモリモジュールはターゲットアドレスレジスタを備え、前記コントローラは、転送される前記データの記憶のための前記ターゲットアドレスを前記ターゲットアドレスレジスタに設定するように更に動作可能である、請求項２５に記載の装置。
【請求項２７】
前記ターゲットメモリモジュールは、前記コントローラから前記読み出しコマンドを受信するように動作可能な動作命令デコーダを備える、請求項２６に記載の装置。
【請求項２８】
前記コントローラは、
前記ソースメモリモジュール及び前記ターゲットメモリモジュールの各々にチップイネーブル信号を提供し、
前記ソースメモリモジュールから前記ターゲットメモリモジュールへ転送されるデータの量に対応するタイムデュレーションの間中、前記ソースメモリモジュール及び前記ターゲットメモリモジュールの各々にクロックを提供する、
ように更に動作可能である、請求項２５に記載の装置。
【請求項２９】
前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含む、請求項２５に記載の装置。
【請求項３０】
電子メモリ装置であって、
ターゲットアドレスレジスタ及び動作命令デコーダを備える揮発性メモリと、
前記揮発性メモリに転送されるデータを備える不揮発性メモリと、
前記揮発性メモリ及び前記不揮発性メモリの各々に結合されたシリアル・ペリフェラル・インタフェース（ＳＰＩ）バスと、
前記ＳＰＩバスに結合されたコントローラであって、前記ターゲットアドレスレジスタにターゲットアドレスを設定し、且つ、前記ＳＰＩバスへの前記データの転送を開始するための読み出しコマンドを前記不揮発性メモリへ送信するように動作可能なコントローラと、
を備え、
前記動作命令デコーダは、前記読み出しコマンドをデコードし、前記不揮発性メモリモジュールからのデータを前記ＳＰＩバスからダイレクトに受信し、且つ、前記データを前記ターゲットアドレスから記憶する、電子メモリ装置。
【請求項３１】
前記揮発性メモリは第１のイネーブルラインを更に備え、前記コントローラは、前記第１のイネーブルラインをアクティブにし、且つ、前記ターゲットアドレスをターゲットアドレスレジスタに設定するために前記ターゲットアドレスを前記ＳＰＩバスに提供するように更に動作可能である、請求項３０に記載の装置。
【請求項３２】
前記不揮発性メモリは第２のイネーブルラインを更に備え、
前記コントローラは、
前記第１のイネーブルライン及び前記第２のイネーブルラインの両方をアクティブにし、
前記読み出しコマンドを、前記揮発性メモリ及び前記不揮発性メモリの各々で読み出されるよう、前記ＳＰＩバスへ提供する、
ように更に動作可能である、請求項３１に記載の装置。
【請求項３３】
前記コントローラは、前記揮発性メモリから前記不揮発性メモリへ転送されるデータの量に対応するタイムデュレーションの間中、前記揮発性メモリ及び前記不揮発性メモリの各々にクロックを提供するように更に動作可能である、請求項３２に記載の装置。
【請求項３４】
電子デバイスであって、
ターゲットアドレスレジスタと、
メモリアレイと、
受信された命令を、バス上で入手可能なデータを前記ターゲットアドレスレジス内のアドレスから記憶するためのコマンドとしてデコードする動作命令デコーダと、
を備え、
前記受信された命令は、第２のデバイスに対する読み出し命令である、電子デバイス。
【請求項３５】
前記電子デバイスは、前記命令と共に受信されたソースアドレスを無視するように構成されている、請求項３４に記載の電子デバイス。
【請求項３６】
前記動作命令デコーダは、ターゲットアドレスを受信し、且つ、該ターゲットアドレスを前記ターゲットアドレスレジスタに設定するように構成されている、請求項３４に記載の電子デバイス。
【請求項３７】
前記メモリアレイは、不揮発性メモリアレイ又は揮発性メモリアレイのうちの一方を含む、請求項３４に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
［クロスレファレンス］
本特許出願は、米国特許出願第１４／９２８，９８８号（Zhang et al., 発明の名称「共有バス上の複数のデバイスのためのデータ転送技術」、出願日２０１５年１０月３０日）についての優先権を主張する。当該米国特許出願は、本願の譲渡人に対して譲渡されたものであり、その参照をもって、本願に明確に組み込まれるものとする。
【０００２】
［技術分野］
以下に述べることは、概して、デバイス間のデータ転送に関するものであり、特には、共有バス上の複数のデバイスのためのデータ転送技術に関する。
【背景技術】
【０００３】
メモリデバイスは、コンピュータ、無線通信デバイス、カメラ、デジタルディスプレイ等の種々の電子デバイスにおいて、情報を記憶するために広く使用されている。情報は、メモリデバイスのそれぞれ異なる状態をプログラムすることによって記憶される。例えば、バイナリデバイスは、論理「１」又は論理「２」を表す２つの状態を有する。他のシステムでは、２つよりも多くの状態が記憶されることもある。その記憶された情報にアクセスするために、電子デバイスは、メモリデバイスの記憶された状態を読み出し、又は検出し得る。情報を記憶するために、電子デバイスは、メモリデバイスに状態を書き込み、又はプログラムし得る。
【０００４】
ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期式ダイナミックＲＡＭ（ＳＤＲＡＭ）、強誘電体ＲＡＭ（ＦｅＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、フラッシュメモリ、又はその他のものを含む、多くのタイプのメモリデバイスが存在する。メモリデバイスは、揮発性又は不揮発性であり得る。不揮発性メモリ、例えばフラッシュメモリは、外部電源なしでも、長期間に渡ってデータを記憶することができる。揮発性メモリデバイス、例えばＤＲＡＭは、外部電源によって定期的にリフレッシュされないと、時間超過により、その記憶された状態を消失してしまうことがある。揮発性メモリの或る態様は、より速い読み出し速度又は書き込み速度等、性能上の利点を提供し得るが、一方、不揮発性メモリの或る態様は、定期的なリフレッシュを行わずともデータを記憶できる等の利点を有し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
デバイス間でデータを転送する際、メモリコントローラが、ソースデバイスからメモリコントローラ内のデータ記憶部へデータを読み出し、続いて、そのデータをメモリコントローラ内の上記データ記憶部からターゲットデバイスへ書き込むことがある。更に、多くの場合、揮発性メモリや不揮発性メモリのようなそれぞれ異なる記憶デバイス毎に、異なるタイプのインタフェースを有することがある。そのような設計だと、データの転送を可能にするために、その全てにメモリコントローラが関わることにもなり得る。従って、メモリコントローラの効率向上と、異なる電子デバイス間でのデータ転送の効率向上とを可能にする技術を提供することは、有益であり得る。
【課題を解決するための手段】
【０００６】
（原文に記載なし）
【発明の効果】
【０００７】
（原文に記載なし）
【図面の簡単な説明】
【０００８】
本開示の実施形態について、以下の図を参照して説明する。
【図１】図１は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持する、メモリシステムを含むデバイスのブロック図を示す。
【図２】図２は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持するメモリシステムのブロック図を示す。
【図３】図３は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を提供する複数のデータ記憶デバイスについてのタイミング図を示す。
【図４】図４は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持する電子システムのブロック図を示す。
【図５】図５は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その１）である。
【図６】図６は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その２）である。
【図７】図７は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その３）である。
【発明を実施するための形態】
【０００９】
［詳細な説明］
本開示の種々の実施形態は、コントローラからの関わりを低減した、１つのバスを共有するデバイス間のダイレクトデータ転送を提供する。或る実施形態では、メモリコントローラ等のコントローラと、ソースメモリデバイスと、ターゲットメモリデバイスとが、共有バスに連結され得る。或る実施形態では、共有バスはシリアル・ペリフェラル・インタフェース（ＳＰＩ）バスであってもよいが、他のタイプのバスも同様に使用可能である。或る例では、コントローラはプロセッサ（例えばマイクロプロセッサ）を含んでもよく、又は、プロセッサの制御下で動作するものであってもよい。コントローラは、ターゲットメモリへ転送されるデータに対する、ソースメモリデバイスにおけるソースアドレスを特定することが可能である。コントローラは、ターゲットメモリデバイスにおけるターゲットアドレスを特定し、そして、上記バスを介してソースメモリデバイスからターゲットメモリデバイスへのダイレクトなデータ転送を開始し得てもよい。コントローラは、データを読み出すためのコマンドを第１のメモリデバイスへ送信してもよく、このコマンドは第２のメモリデバイスでも受信され得る。上記コマンドに応答して、ソースメモリデバイスがバスからデータを読み出してもよく、また、ターゲットメモリが上記バスからデータを読み出して、このデータを、コントローラからの更なるコマンド無しで、上記ターゲットアドレスから（ターゲットアドレスを先頭にして）記憶するようにしてもよい。或る実施形態では、第１のメモリデバイスからデータを読み出すためのコマンドが、プロトコル一式又はコマンド一式に従った、第１のメモリデバイスに対する読み出しコマンドであってもよく、また、第１のメモリデバイスによって提供されたデータを第２のメモリデバイスに記憶させるための、第２のメモリデバイスに対する特別なプログラムコマンドであってもよい。
【００１０】
或る実施形態では、コントローラは、ターゲットメモリデバイスへイネーブル信号を提供し、ターゲットアドレスをターゲットメモリデバイス内のターゲットアドレスレジスタに書き込んでもよい。コントローラは、次に、ソースメモリデバイスとターゲットメモリデバイスの両方へイネーブル信号を提供し、それと共に読み出しコマンドを送信してもよい。コントローラは、ソースメモリデバイスとターゲットメモリデバイスにクロックを提供してもよく、このクロックが提供され続ける限り、ソースメモリデバイスがバスへデータを読み出し、ターゲットメモリデバイスがバスからデータを読み込んでもよい。このように、コントローラ、又はコントローラを管理するプロセッサは、単にソース及びターゲットアドレス、読み出しコマンド、イネーブル及びクロック信号を提供することだけで、データ転送への関わりを低減できるようになった。これにより、その他の処理タスクのためのリソースをなくすことによってシステム動作を向上させることができ、また、メモリデバイス間で転送されるデータをコントローラが実際に受信する技術によればコントローラで必要とされるキャッシュメモリやバッファメモリ等の内部メモリの量を低減させることができる。更に、当該技術は、データ転送のための他の技術よりも、システム電力及び処理時間を低減することができる。
【００１１】
以上に述べた本開示の実施形態について、デバイス間で転送されるデータを有し得るそれぞれ異なるデバイスを伴った電子システムに関し、以下に更に述べる。メモリコントローラの関わりを低減したダイレクトデータ転送を採用するメモリシステムについての特別な例を述べる。本開示のこれらの又はその他の実施形態について、共有バスを用いたデバイス間のダイレクトデータ転送に関する、装置図、システム図、及びフローチャートによって更に説明し、また、それらの図を参照して更に述べる。
【００１２】
図１は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を支持するシステム１００の図を示す。システム１００はデバイス１０５を含んでおり、このデバイス１０５は、種々のコンポーネントを接続するか又はそれらを物理的に支持するためのプリント回路基板であるか又はそれを含み得る。デバイス１０５は、プロセッサ１１０、ＢＩＯＳコンポーネント１１５、周辺コンポーネント１２０、入力／出力制御コンポーネント１２５、及びメモリシステム１５０を含み得る。デバイス１０５の上記コンポーネントは、デバイスバス１３０を介して互いに電子通信し得る。図１の例示的なシステム１００において、メモリシステム１５０はメモリコントローラ１５５、揮発性メモリ１６０、及び不揮発性メモリ１６５を含んでおり、それらは共有バス１７０によってメモリコントローラ１５５に結合され得る。
【００１３】
プロセッサ１１０は、メモリコントローラ１５５を介してメモリシステム１５０とインタフェースするように構成可能である。或る場合にはプロセッサ１１０がメモリコントローラ１５５の機能を実行してもよく、他の場合にはメモリコントローラ１５５がプロセッサ１１０に統合されてもよい。プロセッサ１１０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネントであってもよく、又は、それらのタイプのコンポーネントの組み合わせであってもよく、また、プロセッサ１１０は、共有バスを用いたデバイス間のダイレクトデータ転送を含む、ここで述べる種々の機能を実行してもよい。プロセッサ１１０は、例えば、デバイス１０５に種々の機能又はタスクを行わせるための、メモリシステム１５０に記憶されたコンピュータ読取可能な命令を実行するように構成されてもよい。
【００１４】
ＢＩＯＳコンポーネント１１５は、ファームウェアとして動作される基本入力／出力システム（ＢＩＯＳ）を含むソフトウェアコンポーネントであり、システム１００の種々のハードウェアコンポーネントを起動及び作動させ得る。ＢＩＯＳコンポーネント１１５は、プロセッサ１１０と種々のコンポーネント（例えば、周辺コンポーネント１２０、入力／出力コントローラ１２５等）との間のデータフローをも管理し得る。ＢＩＯＳコンポーネント１１５は、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、又はその他の任意の不揮発性メモリに記憶されたプログラム又はソフトウェアを含んでもよい。
【００１５】
周辺コンポーネント１２０は、デバイス１０５に統合されている、何らかの入力又は出力デバイスか、又はそのようなデバイスのためのインタフェースであり得る。その一例は、ディスクコントローラ、サウンドコントローラ、グラフィックコントローラ、イーサネットコントローラ、モデム、ＵＳＢコントローラ、シリアル又はパラレルポート、或いは、周辺コンポーネントインタコネクト（ＰＣＩ）スロット又はアクセラレーテッドグラフィックポート（ＡＧＰ）スロット等の周辺カードスロットを含み得る。
【００１６】
入力／出力コントローラ１２５は、プロセッサ１１０と、周辺コンポーネント１２０、入力デバイス１３５、又は出力デバイス１４０との間のデータ通信を管理し得る。入力／出力コントローラ１２５は、デバイス１０５に統合されていない周辺装置を管理してもよい。或る場合には、入力／出力コントローラ１２５は、外部周辺装置に対する物理的な接続又はポートとなり得る。
【００１７】
入力１３５は、デバイス１０５又はそのコンポーネントへの入力を提供する、デバイス１０５に外付けされたデバイス又は信号となり得る。これは、ユーザインタフェースや、他のデバイスとの又は他のデバイス間のインタフェースを含んでもよい。或る場合には、入力１３５は、周辺コンポーネント１２０を介してデバイス１０５とインタフェースする周辺装置であってもよく、又は、入力／出力コントローラ１２５によって管理されてもよい。
【００１８】
出力デバイス１４０は、デバイス１０５又はそのコンポーネントのいずれかからの出力を受信するように構成された、デバイス１０５に外付けされたデバイス又は信号となり得る。出力デバイス１４０の一例は、ディスプレイ、オーディオスピーカ、印刷装置、他のプロセッサ又はプリント回路基板等を含み得る。或る場合には、出力１４０は、周辺コンポーネント１２０を介してデバイス１０５とインタフェースする周辺装置であってもよく、又は、入力／出力コントローラ１２５によって管理されてもよい。
【００１９】
上述したように、メモリシステム１５０は、メモリコントローラ１５５、揮発性メモリ１６０、及び不揮発性メモリ１６５を含んでもよく、これらのメモリは共有バス１７０によってメモリコントローラ１５５に連結され得る。或る例では、共有バス１７０はＳＰＩバスであってもよく、メモリコントローラ１５５は、揮発性メモリ１６０及び不揮発性メモリ１６５の両方にアクセスするための１つのＳＰＩインタフェースを用い得る。メモリコントローラのための種々の既存の設計は、揮発性メモリと不揮発性メモリとに対して別々のインタフェースを用い得るものであり、１つのインタフェースを伴った共有バス１７０を用いることは、より効果的で、より複雑でない設計を提供し得る。
【００２０】
種々の例のＳＰＩバスは、命令、アドレス、及びデータを、それらの全てを１つのコマンドシーケンスにして含むプロトコルを用いてもよい。そのようなコマンドシーケンスは、特定のコンポーネント（例えば、揮発性メモリ１６０及び／又は不揮発性メモリ１６５）にチップイネーブル信号又はチップセレクト信号を提供することによって開始され、また、上記のチップイネーブル信号又はチップセクレト信号を非選択にすることによって終了され得る。ＳＰＩプロトコルの上記命令は、実行される動作（例えばメモリ読み出し）を定義し得るものであり、上記アドレスは、上記命令に関連付けられた上記データが配置されるか又は書き込まれる場所を特定し得る。例えば、上記命令は読み出し命令であってもよく、上記アドレスは、揮発性メモリ１６０又は不揮発性メモリ１６５から読み出されるデータの先頭メモリ位置を示すソースアドレスであってもよい。種々の例では、ＳＰＩプロトコルの命令に続いて、アドレスの提供とデータの出力との間に、データを出力する前にメモリ又はその他のデバイスがデータを検出する（例えば、メモリアレイ内の特定の位置に記憶されたデータを検出する）ことを可能にするためのダミーサイクルを提供してもよい。ここで提供される技術は、幾つかの例について、ＳＰＩ共有バスを用いたシステムに関して記述される。しかし、当該技術は、コマンド、アドレス、及びデータの全てを１つの同一のチップセレクトイベントとして含み得る同様なコマンドシーケンスを有する他のタイプの共有バスを用いるシステムにおいても使用し得る。
【００２１】
今、図２を参照して、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を支持するシステム２００の一層具体的な例について述べる。システム２００は、図１のメモリシステム１５０の一例であるメモリシステム１５０−ａを含み得る。メモリシステム１５０−ａは、図１の共有バス１７０の一例である共有バス１７０−ａに結合された、図１のメモリコントローラ１５５の一例であるメモリコントローラ１５５−ａを含み得る。共有バス１７０−ａには、それぞれ図１の揮発性メモリ１６０及び不揮発性メモリ１６５の一例である揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａも結合されている。
【００２２】
揮発性メモリ１６０−ａは、第１の動作命令デコーダ２０５、第１のターゲットアドレスレジスタ２１０、揮発性メモリアレイ２１５、及び第１のチップイネーブル２２０を含み得る。揮発性メモリ１６０−ａは、例えば、メモリシステム１５０−ａに含まれる１つの集積回路又はチップであってもよい。或る例では、揮発性メモリ１６０−ａは、上述したようなコンポーネントを含む一層大きな集積回路からなるメモリモジュールであってもよい。他の例では、第１の動作命令デコーダ２０５、第１のターゲットアドレスレジスタ２１０、及び揮発性メモリアレイ２１５は、１つのメモリモジュールに含まれるディスクリートコンポーネント（例えば、プリント回路基板上に搭載されたコンポーネント）であってもよく、また、第１のチップイネーブル２２０は、メモリモジュールの上記（及びその他の）コンポーネントを有効にするために使用され得る。
【００２３】
第１の動作命令デコーダ２０５は、共有バス１７０−ａを介して受信された命令をデコードし、このデコードされた命令に従って動作し得る。第１のターゲットアドレスレジスタ２１０は、揮発性メモリ１６０−ａへ転送されるデータに対するターゲットアドレスをメモリコントローラ１５５−ａが提供するためのレジスタであり得る。揮発性メモリアレイ２１５は、メモリセルのアレイ（例えば、ＤＲＡＭアレイ又はＳＲＡＭアレイ）を含んでもよい。第１のターゲットアドレスレジスタ２１０は、揮発性メモリアレイ２１５とは別々に示されているが、或る例では、第１のターゲットアドレスレジスタ２１０は揮発性メモリアレイ２１５の一部であってもよい。第１のチップイネーブル２２０は、揮発性メモリ１６０−ａに命令を実行させ且つ共有バス１７０−ａを介して他のコンポーネントと通信させるイネーブルラインであってもよい。
【００２４】
同様に、不揮発性メモリ１６５−ａは、第２の動作命令デコーダ２２５、第２のターゲットアドレスレジスタ２３０、不揮発性メモリアレイ２３５、及び第２のチップイネーブル２４０を含み得る。不揮発性メモリ１６５−ａは、例えば、メモリシステム１５０−ａに含まれる１つの集積回路又はチップであってもよい。或る例では、不揮発性メモリ１６５−ａは、上述したようなコンポーネントを含む一層大きな集積回路からなるメモリモジュールであってもよい。他の例では、第２の動作命令デコーダ２２５、第２のターゲットアドレスレジスタ２３０、及び不揮発性メモリアレイ２３５は、１つのメモリモジュールに含まれるディスクリートコンポーネント（例えば、プリント回路基板上に搭載されたコンポーネント）であってもよく、また、第２のチップイネーブル２４０は、メモリモジュールの上記（及びその他の）コンポーネントを有効にするために使用され得る。
【００２５】
第２の動作命令デコーダ２２５は、共有バス１７０−ａを介して受信された命令をデコードし、このデコードされた命令に従って動作し得る。第２のターゲットアドレスレジスタ２３０は、不揮発性メモリ１６５−ａへ転送されるデータに対するターゲットアドレスをメモリコントローラ１５５−ａが提供するためのレジスタであり得る。不揮発性メモリアレイ２３５は、不揮発性メモリセルのアレイ（例えば、ＥＥＰＲＯＭアレイ又はフラッシュメモリアレイ）を含んでもよい。第２のターゲットアドレスレジスタ２３０は、不揮発性メモリアレイ２３５とは別々に示されているが、或る例では、第２のターゲットアドレスレジスタ２３０は不揮発性メモリアレイ２３５の一部であってもよい。第２のチップイネーブル２４０は、不揮発性メモリ１６５−ａに命令を実行させ且つ共有バス１７０−ａを介して他のコンポーネントと通信させるイネーブルラインであってもよい。なお、図２の例は例示及び説明のためのものであり、他の例は他の又は追加のコンポーネントを含んでもよい。例えば、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５が上記の例のものとは互いに交換することも可能であり、或いは、共有バス１７０−ａ上の異なるデバイス間の更なる通信を可能にする追加のメモリ又はインタフェースが共有バス１７０−ａに結合されることも可能である。
【００２６】
この例におけるメモリコントローラ１５５−ａは、メモリマネージャ２４５及びチップイネーブル（ＣＥ）マネージャ２５５を含み得る。メモリマネージャ２４５は、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａに、ＳＰＩプロトコルに従ったコマンドシーケンスのような命令を提供し得る。メモリコントローラ１５５−ａは、メモリシステム１５０−ａから他のコンポーネントへデータを提供するために、又は、メモリシステム１５０−ａに記憶されるデータを他のコンポーネントから受信するために、他の外部コンポーネントに結合されてもよい。ＣＥマネージャ２５５は、第１のチップイネーブルライン２４５を介して揮発性メモリ１６０−ａの第１のチップイネーブル２２０に結合されてもよく、また、第２のチップイネーブルライン２５０を介して不揮発性メモリ１６５−ａの第２のチップイネーブル２４０に結合されてもよい。メモリコントローラ１５５−ａは、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａにクロック２６０を提供してもよい。
【００２７】
上述したように、種々の例に係る共有バス１７０−ａは、ＳＰＩバスであり得る。本開示の種々の実施形態は、ＳＰＩバスのシリアルプロトコルを使用するものであり、メモリコントローラ１５５−ａと揮発性メモリ１６０−ａと不揮発性メモリ１６５−ａとの間でのデータ転送のための、向上した技術を提供する。揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方が、メモリコントローラ１５５−ａのサーバントであり、それらは、メモリコントローラ１５５−ａによって別々にアクセスされ得る個々のチップイネーブル２２０及び２４０を有している。或る例では、例えばメモリシステムの外部のプロセッサによって実行されるプログラム命令のようなデータが、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへロードされ得る。そのような転送のためのロードデータプロセスが、メモリコントローラ１５５−ａからの関わりを制限しつつ、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへダイクレトにデータを移動させ得る。同様に、揮発性メモリ１６０−ａからの或るデータは、メモリコントローラ１５５−ａからの関わりを制限しつつ、揮発性メモリ１６０−ａから不揮発性メモリ１６５−ａへダイレクトにデータを移動させ得る書き戻しデータプロセスによって、不揮発性メモリ１６５−ａに書き込まれる必要があり得る。説明を明確にするために、そのようなロードデータプロセス及び書き戻しデータプロセスを別々に記載したが、或る例では、これらの動作は組み合わされてもよい。
【００２８】
データロードプロセスのために、メモリコントローラ１５５−ａは、或る例では、揮発性メモリ１６０−ａへロードされるデータに対して、不揮発性メモリ１６５−ａにおけるソースアドレスを決定し得る。メモリコントローラは、揮発性メモリ１６０−ａにデータを記憶するためのターゲットアドレスも決定し得る。メモリコントローラ１５５−ａは、第１のターゲットアドレスレジスタ２１０にターゲットアドレスを設定することによって（例えば、第１のチップイネーブル２２０を有効にし、ターゲットアドレスを第１のターゲットアドレスレジスタ２１０に書き込み、そして、第１のチップイネーブル２２０を無効にすることによって）、データロードプロセスを開始し得る。メモリコントローラ１５５−ａは、次に、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方で受信されるコマンドシーケンスを、共有バス１７０−ａを介して送信し得る。そのようなコマンドは、或る例では、ＳＰＩプロトコルに従って確立された読み出しコマンドであってもよく、また、読み出しコマンド及びソースアドレスを含んでいてもよい。上述したように、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへデータを移動させるための既存の技術は、ソースアドレスで始まるデータをメモリコントローラ１５５−ａ内のデータキャッシュへ移動させる読み出しコマンドを含むことがある。しかし、ここに記載した技術によれば、不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの両方が読み出しコマンドを受信し、コマンドシーケンスに耳を傾け、そして、データをメモリコントローラ１５５−ａに記憶することなく、つまり、メモリコントローラ１５５−ａを実際のデータ移動に関わらせることなく、ダイレクトにデータを転送し得る。
【００２９】
或る例では、メモリマネージャ２４５が、ＣＥマネージャ２５５を介して、第１のチップイネーブル２２０及び第２のチップイネーブル２４０の両方にチップイネーブル信号を提供することで、不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの両方が読み出しコマンドに耳を傾けるのを可能にし得る。上述したように、読み出しコマンドの後に、揮発性メモリによって無視されてもよいソースアドレスが続き、そしてメモリコントローラ１５５−ａは不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの各々にクロックを提供し得る。不揮発性メモリ１６５−ａは、第２の動作命令デコーダ２２５でデコードされた読み出しコマンドに従って、不揮発性メモリアレイ２３５から、ソースアドレスで始まるデータを出力し、そして、クロック２６０がメモリコントローラ１５５−ａによって提供され続ける限り、ソースアドレスからの連続したメモリ位置にあるデータを出力し続け得る。揮発性メモリ１６０−ａの第１の動作命令デコーダ２０５は、読み出しコマンドを受信してデコードし、ソースアドレスを無視し、そして、不揮発性メモリ１６５−ａによって共有バス１７０−ａに提供されたデータを、揮発性メモリアレイ２１５にそのターゲットアドレスの位置から記憶し得る。データの読み出しと、それに対応するデータの記憶は、クロック２６０が揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａに提供される持続時間（タイムデュレーション）の間中、継続する。そのような方法では、メモリコントローラ１５５−ａは、メモリコントローラ１５５−ａの関わりを制限しながら、かつ、メモリコントローラ１５５−ａのキャッシュ又はバッファにデータを記憶することなしに、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへダイレクトにデータを移動させ得る。同様な動作が、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへの書き戻し動作に使用されてもよく、その場合、書き戻しデータに対するターゲットアドレスが第２のターゲットアドレスレジスタ２３０に記憶され、また、揮発性メモリ１６０−ａから共有バス１７０−ａにデータを読み出すための読み出しコマンドが発行される。
【００３０】
上述したように、本開示の種々の実施形態について記載された技術は、第１の動作命令デコーダ２０５及び第２の動作命令デコーダ２２５の両方がメモリコントローラ１５５−ａからのコマンドを受信することを含む。データロードプロセスにおいて、不揮発性メモリ１６５−ａは命令を読み出し動作として扱い、一方、揮発性メモリ１６０−ａは同命令を書き込み動作として扱い得る。同様に、書き戻しプロセスにおいては、揮発性メモリ１６０−ａは命令を読み出し動作として扱い、一方、不揮発性メモリ１６５−ａは同命令を書き込み動作として扱い得る。これらの命令は、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方に対するタイミング要求を一致させるように定義され得る。これらの命令はまた、そのような命令が各部分に対して一意である限り、ＳＰＩプロトコルで定義された既存の不揮発性及び揮発性メモリ読み出しコマンドを利用するものであってもよい。例えば、もし「０Ｂｈ」命令（ＳＰＩフラッシュ不揮発性メモリにおける既存のＦＡＳＴ読み出しコマンド）が、揮発性メモリ側においていずれのＳＰＩ動作にも使用されていなければ、このコマンドは揮発性メモリ側において書き込みコマンドとして定義されてもよい。第１の命令デコーダ２０５は、次に、ＦＡＳＴ読み出しコマンドを理解し、そのコマンドシーケンスを、不揮発性メモリ１６５−ａに期待されるデータ出力についての知識を用いて、書き込みシーケンスに変換し、そして、共有バス１７０−ａに提供されたデータを正しいクロック及びダイミングでラッチすることができる。
【００３１】
更に、上述したように、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの各々がターゲットアドレスレジスタを有し得る。ソースアドレスはコマンドシーケンスの中に提供されるがターゲットアドレスは提供されないので、そのようなアドレスレジスタが使用され得る。例えばロードデータプロセスにおいて、コマンドシーケンスは、不揮発性メモリ１６５−ａが送り出す必要のあるアドレスを含んでいるが、それは、メモリコントローラ１５５−ａが揮発性メモリ１６０−ａについて必要とするターゲットアドレスではない。よって、自動動作の前に、メモリコントローラ１５５−ａは、揮発性メモリ１６０−ａに、不揮発性メモリ１６５−ａからのデータがロードされる場所であるターゲットアドレスを提供する。同様に、書き戻しプロセスにおいては、揮発性メモリ１６０−ａからのデータが正しい位置に書き戻され得るように、不揮発性メモリ１６５−ａに第２のターゲットアドレスレジスタ２３０を設定する。或る例では、ソースアドレス及びターゲットアドレスの両方を含む新たなコマンドシーケンスが定義されてもよい。しかし、ターゲットアドレスレジスタを使用することで、既存のプロトコルへの変更を減らすことができ、向上したフレキシビリティを提供し得る。不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへのデータシャドウイング動作のための動作も、同様に説明し得る。
【００３２】
図３は、本開示の種々の実施形態に係る、共有バスを用いたダイレクトデータ転送を支持する、メモリコントローラからメモリデバイスへ提供される信号のタイミング図３００を示す。タイミング図３００の信号は、例えば、図１及び図２に関して先に述べたメモリコントローラ１５５によって提供され得る。図３の例では、不揮発性メモリチップイネーブル信号３０５（ＣＥ＃＿ＮＶＭ）が、図１又は図２の不揮発性メモリ１６５−ａのような不揮発性メモリに提供され得る。揮発性メモリチップイネーブル信号３１０（ＣＥ＃＿ＲＡＭ）が、図１又は図２の揮発性メモリ１６０−ａのような揮発性メモリに提供され得る。データ信号３１５（ＤＱ［ｘ：０］）が、図１又は図２の共有バス１７０のような共有バスに提供され得る。クロック３２０も提供され得る。図３の例には、揮発性メモリから不揮発性メモリへの書き戻し動作のための動作が示されている。
【００３３】
まず、時刻３２５で、コントローラがローレベルのチップイネーブル信号３０５を不揮発性メモリに提供し、これにより、データ信号３１５からのデータを不揮発性メモリにラッチさせ得る。この例では、データ信号３１５が、第１の期間３３５中に、ターゲットアドレスを設定するための命令をターゲットアドレスと共に提供し得る。更に、この第１の期間３３５中、チップイネーブル３１０はハイになっており、これにより、揮発性メモリを無効のままにし、よって上記命令を受信しないようにする。上記命令に続いて、チップイネーブル信号３０５がハイにされ、次に、時刻３３０でチップイネーブル信号３０５及び３１０の両方がローに設定されることで、不揮発性メモリ及び揮発性メモリの両方が有効にされる。持続時間（タイムデュレーション）３４５の間中、クロック３２０が同様に両方のメモリに提供され、その際、コントローラが共有バス上にデータ信号３１５の読み出し命令を提供し、この読み出し命令が不揮発性メモリ及び揮発性メモリの両方で受信される。不揮発性メモリは、上記命令をデコードし、上記命令を書き戻し命令として認識し、上記命令の中に提供されたソースアドレスを無視し、そして次に、共有バスにおける揮発性メモリから該バスに出力されたデータを検出する。不揮発性メモリは、ターゲットアドレスで特定された位置から、上記検出されたデータを記憶する。揮発性メモリも、共有バス上のデータ信号３１５の読み出し命令をデコードし、この命令からソースアドレスをデコードし、このソースアドレスの位置から記憶されたデータの検出を開始し、そしてこのデータを共有バスに出力する。上述したように、メモリコントローラからのコマンドシーケンスは、揮発性メモリがその記憶データを検出するのを可能にする幾つかのダミーサイクルを含んでもよく、揮発性メモリ及び不揮発性メモリの両方が、データ転送のための正しいタイミングを提供するために、ダミーサイクルの数を知るようにする。これらの動作は、持続時間３４５の間中、継続する。持続時間３４５が時刻３４０で終了すると、メモリコントローラがチップイネーブル信号３０５及び３１０の両方を非選択にして、クロック３２０の提供を中止してもよい。
【００３４】
上記の例は、共有バスに結合され得る異なるメモリコンポーネントについて記述したものだが、ここに記載された技術は、メモリデバイスに加えて設けられた他のデバイスによって、そのようなデバイス間のダイレクトデータ転送に使用されてもよい。例えば、そのような技術は、幾つかの例を挙げれば、センサ、セキュアデジタルカード、及び液晶ディスプレイを含み得る、埋め込み型システムに使用されてもよい。そのような電子デバイスは、コントローラからの関わりを制限した、ここで述べたようなデータ転送のための技術を使用し得る。
【００３５】
図４は、本開示の種々の実施形態に係る、共有バスを用いた異なるタイプのデバイス間のダイレクトデータ転送を支持するシステム４００を示す。システム４００はデバイス４０５を含んでもよく、このデバイス４０５は、種々のコンポーネントを接続するか又は物理的に支持するためのプリント回路基板であるか又はそれを含み得る。デバイス４０５は、コントローラ４２０、第１の電子デバイス４２５、第２の電子デバイス４３０、入力／出力制御コンポーネント４３５、及び、随意ではあるが１つ以上の他のコンポーネント４４０を含み得る。デバイス４０５のこれらのコンポーネントは、図１又は図２の共有バス１７０の一例であり得る共有バス４４５を介して、互いに電子通信し得る。図４の例示的システム４００では、第１の電子デバイス４２５が第１のデータ記憶領域４５０及びチップイネーブル／クロック入力４５５を含み得る。同様に、第２の電子デバイス４３０が第２のデータ記憶領域４６０及びそれに関連付けられたチップイネーブル／クロック入力４６５を含み得る。
【００３６】
コントローラ４２０は、共有バス４４５を介して、第１の電子デバイス４２５、第２の電子デバイス４３０、入力／出力制御コンポーネント４３５、及び／又は他のコンポーネント４４０とインタフェースするように構成され得る。コントローラは、或る例では、上述したような方法で、デバイス間のダイレクトデータ転送を開始し得る。或る場合には、コントローラ４２０は、図１〜３に関して先に述べたメモリコントローラ１５５の機能を実行し得る。コントローラ４２０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネントであってもよく、又は、それらのタイプのコンポーネントの組み合わせであってもよい。コントローラ４２０は、共有バス４４５を用いたデバイス間のダイレクトデータ転送を含む、ここに記載された種々の機能を実行し得る。コントローラ４２０は、例えば、デバイス４０５に種々の機能又はタスクを実行させるためのコンピュータ読み取り可能な命令を実行するように構成され得る。
【００３７】
入力／出力制御コンポーネント４３５は、コントローラ４２０と外部コンポーネントとの間のデータ通信を管理し、外部コンポーネントへの物理的な接続又はポートとなり得る。入力４１０は、デバイス４０５又はそのコンポーネントへの入力を提供する、デバイス４０５に外付けされたデバイス又は信号となり得る。これは、ユーザインタフェース、或いは他のデバイスとの又はそれらの間のインタフェースを含んでもよい。或る場合には、入力４３５は、デバイス４０５とインタフェースする周辺装置であってもよく、又は、入力／出力制御コンポーネント４３５によって管理されてもよい。出力デバイス４１５は、デバイス４０５又はそのコンポーネントのいずれかからの出力を受信するように構成された、デバイス４０５に外付けされたデバイス又は信号となり得る。出力デバイス４１５の一例は、ディスプレイ、オーディオスピーカ、印刷装置、他のプロセッサ又はプリント回路基板等を含み得る。或る場合には、出力４１５は、デバイス４０５とインタフェースする周辺装置であってもよい。
【００３８】
上述したように、コントローラ４２０は、デバイス４０５の１つ以上のコンポーネントに、デバイス４０５の１つ以上の他のコンポーネントへダイレクトにデータを転送させ得る。或る例では、コントローラ４２０は、ＣＥ／クロックコンポーネント４６０によって、データを転送するデバイスにチップイネーブル信号及びクロック信号を提供し得る。図４の例では、第１の電子デバイス４２５がソースデバイスであり、第２の電子デバイス４３０がターゲットデバイスであり得る。よって、第１のデータ記憶領域４５０に記憶されたデータが、共有バス４４５を介して、第２の電子デバイスの第２のデータ記憶領域４６０へ転送され得る。この例では、第１の電子デバイス４２５がチップイネーブル／クロック入力４５５を含み、第２の電子デバイス４３０もチップイネーブル／クロック入力４６５を含み得る。コントローラは、ＣＥ／クロック（Ｃｌｏｃｋ）コンポーネント４６０を用いて、第１の電子デバイス４２５及び第２の電子デバイス４３０を選択してクロックを送信し、また、図１〜３に関して先に論じたのと同様な方法で第１の電子デバイス４２５と第２の電子デバイス４３０との間でのダイレクトデータ転送を開始及び終了するための命令及びアドレスを、共有バス４４５に提供し得る。
【００３９】
図５は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャート５００の一例を示す。フローチャート５００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示し得るものであって、図１〜４に関して先に述べたデバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００４０】
或る例では、メモリコントローラ１５５又はコントローラ４２０のようなデバイスが、ブロック５０５に示されるように、ターゲットメモリへ転送されるデータに対して、ソースメモリにおけるソースアドレスを特定し得る。そのような特定は、例えば、メモリマネージャ２４５のようなメモリマネージャによってなされてもよく、また、図１〜４に関して先に述べたように、ソースデバイスに記憶されたデータに対する先頭アドレスを特定するようにしてもよい。例えば、ソースメモリデバイスは、ソースデバイスの不揮発性メモリに記憶された、プロセッサによる実行のためのプログラムコードを含み得る。プロセッサは、このプロセッサで実行されるプログラムコードを特定し、この情報をメモリマネージャに提供し得る。続いて、メモリマネージャが、上記特定されたデータを不揮発性メモリから揮発性メモリすなわちターゲットメモリへ移動させるためにソースアドレスを特定するようにしてもよく、このようにすることで、プロセッサは、プログラムコードの実行のために一層容易に上記ソースアドレスにアクセスし得る。或る例では、コントローラ、ソースメモリ、及びターゲットメモリは、共有バス上のデバイス間でコマンド及びデータを転送するために使用され得る上記共有バスに結合されてもよい。
【００４１】
ブロック５１０で、デバイスは、図１〜４に関して先に述べたように、ソースメモリからターゲットメモリへのダイレクトなデータ転送を開始するために、ターゲットアドレスをターゲットメモリへ送信し得る。デバイスは、例えば、ターゲットアドレスを、ソースメモリからのデータがターゲットメモリに記憶される場所のアドレスとして特定し得る。例えば、メモリコントローラが、プロセッサによって実行されるプログラムコードを記憶するための揮発性メモリの領域を指定し、この特定された領域の先頭アドレスをターゲットアドレスとして使用し得る。コントローラは、或る例では、ターゲットメモリにおけるチップイネーブルを選択し、ターゲットメモリにクロックを提供し、ターゲットメモリのターゲットアドレスレジスタにターゲットアドレスを設定するためのコマンドを共有バスへ出力し、そしてターゲットアドレスを出力することによって、ターゲットアドレスをターゲットメモリへ送信し得る。ターゲットメモリは、コマンドをデコードし、共有バスからのデータをラッチし、そしてこのデータをターゲットメモリのアドレスレジスタに記憶し得る。或る例では、ソースメモリが不揮発性メモリであり、ターゲットメモリが揮発性メモリであるが、多くの他の例は、他のタイプのメモリ又は他のタイプのデバイス（例えば、ディスプレイ、センサ、カード等）のデータ記憶コンポーネントであるソースメモリ及びターゲットメモリを提供してもよい。
【００４２】
ブロック５１５で、デバイスは、図１〜４に関して先に述べたように、ソースメモリからデータを読み出すための読み出しコマンドをソースメモリへ送信し得る。この読み出しコマンドは、データがソースメモリから読み出される旨の指示を含んでいてもよく、また、読み出されるデータに対する先頭アドレスを含んでいてもよい。コントローラは、或る例では、ソースメモリ及びターゲットメモリにおけるチップイネーブルを選択し、ソースメモリ及びターゲットメモリにクロックを提供し、データ出力命令を共有バスへ出力し、そしてソースアドレスを出力することによって、読み出しコマンドを送信し得る。ソースメモリは、（例えば動作命令デコーダで）上記コマンドをデコードし、共有バスからのデータをラッチし、そしてソースアドレスで始まるデータを共有バスへ転送開始し得る。更に、チップイネーブル及びクロックがソースメモリに提供されるのと同時に、チップイネーブル及びクロックがターゲットメモリに提供されと、ターゲットメモリは読み出しコマンドをデコードし、この読み出しコマンドをデータの転送の開始と認定し、読み出しコマンド中のソースアドレスを無視し、そしてソースメモリによって共有バスに提供されたデータの記憶を開始する。
【００４３】
ブロック５２０で、ソースメモリは、図１〜４に関して先に述べたように、ソースメモリからターゲットメモリへダイレクトにデータを転送し得る。ソースメモリは、共有バスへデータを提供することによって転送を実行し、このデータはターゲットメモリによって共有バスから読み出され得る。そのデータは、ターゲットメモリに予め提供されたターゲットアドレスから（ターゲットアドレスを先頭にして）ターゲットメモリに記憶され得る。そのような転送は、或る例に従えば、その後、クロックがソースメモリ及びターゲットメモリに提供される限り、継続され得る。よって、メモリコントローラ等のデバイスは、ソースメモリから読み出されるデータの量に基づく、クロックを提供する持続時間（タイムデュレーション）と、ソースメモリからデータが読み出される速度又はターゲットメモリにデータが書き込まれ得る速度とを決定し得る。
【００４４】
図６は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャートの一例を示す。フローチャート６００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示すものであり、図１〜４を参照して先に述べたように、デバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００４５】
或る例では、メモリコントローラ１５５又はコントローラ４２０等のデバイスは、ブロック６０５に示すように、ターゲットデバイスにチップイネーブル及びクロックを提供し得る。チップイネーブル、すなわちチップセレクトと、クロックとは、図１〜４に関して先に述べたのと同様に、ターゲットデバイスに、共有バスから１つ以上のコマンド及び／又はデータを読み出し始めるように促し得る。或る例では、共有バスは、前述したように、ＳＰＩバスであるか、又は、コマンドシーケンス内のコマンド及びそれに続くデータを提供する、関連付けられたプロトコルを有する他のタイプのバスであってもよい。
【００４６】
ブロック６１０で、デバイスは、図１〜４に関して先に述べたのと同様に、ターゲットデバイス内のアドレスレジスタを設定し得る。デバイスは、例えば、ターゲットアドレスを、ソースデバイス（例えばソースメモリデバイス）メモリからのデータがターゲットデバイス（例えばターゲットメモリデバイス）に記憶される際のアドレスとして特定し、このターゲットアドレスをアドレスレジスタに設定し得る。例えば、メモリコントローラが、プロセッサによって実行されるプログラムコードを記憶するための、揮発性メモリの領域を指定し、その特定された領域の先頭アドレスをターゲットアドレスとして使用し得る。
【００４７】
ブロック６１５で、デバイスは、図１〜４に関して先に述べたのと同様に、ターゲットデバイスへのチップイネーブル及びクロックを無効にし得る。デバイスは、例えば、ターゲットアドレスレジスタに記憶するためのターゲットアドレスを提供した後、ターゲットデバイス（例えばターゲットメモリデバイス）を非選択にすることで、アドレスレジスタを設定するためにターゲットデバイスに提供されているコマンドシーケンスを終了し得る。
【００４８】
ブロック６２０で、デバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイス及びターゲットデバイスにチップイネーブル及びクロックを提供し得る。上述したように、ソースデバイス及びターゲットデバイスの各々にチップイネーブル及びクロックを提供することで、ソースデバイス及びターゲットデバイスの両方が、共有バスに提供されたコマンドと、このコマンドに続くいずれかのデータとをデコードしようとし、これらのデバイス毎に新たなコマンドシーケンスを開始することになる。
【００４９】
ブロック６２５で、デバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイスへ読み出しコマンドを送信し、この読み出しコマンドはターゲットデバイスでも受信され得る。ソースデバイスとターゲットデバイスの両方が有効にされ、かつ両方にクロックが送信されるので、読み出しコマンドは各デバイスで受信され得る。或る例では、各デバイスの動作命令デコーダが読み出しコマンドをデコードしてもよく、これにより、ソースデバイスとターゲットデバイスとの間でデータが転送される旨をデバイスに示し得る。
【００５０】
ブロック６３０で、デバイスは、図１〜４に関して先に述べたのと同様に、転送されるデータの量に対応する持続時間（タイムデュレーション）の間中、ソースデバイスとターゲットデバイスにチップイネーブル及びクロックを提供し得る。ソースデバイスとターゲットデバイスは、このようにしてデータのダイレクト転送を実行し、そこでは、ソースデバイスがデータを共有バスへ提供し、このデータがターゲットデバイスによって共有バスから読み出され得る。そのデータは、ブロック６１０でアドレスレジスタに提供されたアドレスから、ターゲットデバイスに記憶され得る。デバイス（例えばメモリコントローラ１５５又はコントローラ４２０）によってクロック及びチップイネーブルを提供するための持続時間（タイムデュレーション）は、ソースデバイスから読み出されるデータの量と、ソースデバイスからデータが読み出される速度又はターゲットデバイスにデータが書き込まれ得る速度とに基づき得る。
【００５１】
ブロック６３５で、デバイスは、図１〜４に関して先に述べたのと同様に、持続時間の終了後、ソースデバイスとターゲットデバイスへのチップイネーブル及びクロックを無効にし得る。上記持続時間の後、デバイス（メモリコントローラ１５５又はコントローラ４２０）は、データが全て転送されたと判定し、第１のメモリデバイス及び第２のメモリデバイスを非選択にし得る。
【００５２】
図７は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャート７００の一例を示す。フローチャート７００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示すものであって、図１〜４を参照して先に述べたように、デバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００５３】
或る例では、ブロック７０５に示されるように、また、図１〜４に関して先に述べたのと同様に、ターゲットデバイス（例えば、不揮発性メモリ１６５、揮発性メモリ１６０、又は第２の電子デバイス４３０）は、コントローラ（例えば、メモリコントローラ１５５又はコントローラ４２０）からターゲットアドレスを受信し得る。コントローラは、或る例では、デバイスに関連付けられたチップイネーブルを選択し、デバイスにクロックを提供し、ターゲットデバイスのターゲットアドレスレジスタにターゲットアドレスを設定するためのコマンドを共有バスへ出力し、そしてターゲットアドレスを出力することによって、ターゲットアドレスを送信し得る。種々の例によれば、ターゲットデバイスは、上記コマンドをデコードし、共有バスからのデータをラッチし、そしてこのデータをターゲットアドレスレジスタに記憶し得る。
【００５４】
ブロック７１０で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、コントローラからソースデバイスへ送信された読み出しコマンドをデコードし得る。この読み出しコマンドは、データがソースデバイスから読み出される旨の指示を含み、また、読み出されるデータに対する先頭アドレスを含み得る。ターゲットデバイスは、（例えば動作命令デコーダで）このコマンドをデコードし、共有バスからデータをラッチし、そしてこのデータをターゲットアドレスから記憶し得る。
【００５５】
ブロック７１５で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、上記コマンドに含まれるソースアドレスを無視し得る。上述したように、ターゲットデバイスは、ターゲットアドレスレジスタに記憶されたターゲットアドレスを有しており、このターゲットアドレスは、ソースデバイスにおいてデータが記憶されていたソースアドレスとは異なり得る。よって、もしコマンドがソースアドレスを含んでいれば、ターゲットデバイスは、その情報はターゲットデバイスとは無関係であるとして、単にそれを無視してもよい。上述したように、他の例では、コマンドシーケンスはソースアドレスとターゲットアドレスの両方を含んでいてもよく、その場合、ブロック７１０及び７１５の動作は組み合わされてもよく、ソースデバイス及びターゲットデバイスの各々が、他のデバイスに関連したアドレスを無視してもよい。例えば、コマンドシーケンスは、Ａｄｄ１をソースアドレス、Ａｄｄ２をターゲットアドレスとして、＜ＣＭＤｃｏｄｅ｜Ａｄｄ１｜Ａｄｄ２＞の形式であり得る。そのような例では、ソースデバイス及びターゲットデバイスはチップイネーブルで有効にされ、そして、ＣＭＤコードをデコードすることで、どのデバイスがソースデバイスであってどのデバイスがターゲットデバイスなのかを指定し得るようにしてもよい（又は、そのような指定が、前もってなされてもよい）。
【００５６】
ブロック７２０で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、バス上で入手可能な、ソースデバイスからのデータを特定し得る。バス上で入手可能な当該データは、（コントローラによってソースデバイスへ読み出しコマンドが送信されることで）ソースデバイスから共有バスへ転送されたデータであり得る。或る例では、ターゲットデバイスは、ソースアドレスを共有バスへ提供することと関連付けられた所定数のクロックサイクルと、ソースデバイスがソースアドレスに記憶されたデータを検出するのに十分な時間を提供するための所定数のダミーサイクルとを待って、それに続く共有バス上の情報を、ソースデバイスから転送されてきたデータとして特定するようにしてもよい。
【００５７】
ブロック７２５で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイスからバスへ転送されたデータを、ターゲットアドレスから（ターゲットアドレスを先頭にして）記憶し得る。或る例によれば、そのような転送は、次に、ソースデバイス及びターゲットデバイスにクロックが提供される限り、継続され得る。よって、メモリコントローラ等のデバイスは、ソースデバイスから読み出されるデータの量と、ソースデバイスからデータが読み出される速度又はターゲットデバイスへデータが書き込まれる速度とに基づいて、上記クロックを提供する持続時間（タイムデュレーション）を決定してもよい。
【００５８】
従って、方法５００、６００、及び７００は、共有バスを用いたダイレクトデータ転送を提供し得る。なお、方法５００、６００、及び７００は、可能性のある実施について説明したものであり、上記の動作及びステップは並べ替えるようにしてもよく、或いは、その他の実施が可能なように変更されてもよい。或る例では、方法５００、６００、及び７００のうちの２つ以上からの態様を組み合わせてもよい。
【００５９】
ここで述べたことは一例を提供するものであって、特許請求の範囲に記載された範囲、応用可能性、又は例を限定するものではない。本開示の範囲から逸脱することなしに、上述した構成要素の機能や配置を変更してもよい。種々の例は、適宜、種々の手順又はコンポーネントを省略、置換、又は追加するものであってもよい。また、或る例に関して述べた特徴を、他の例で組み合わせるようにしてもよい。
【００６０】
ここで添付図面と関連付けて説明したことは例示的な構成を述べたものであって、実施可能な又は特許請求の範囲の主旨内にある全ての例を示したわけではない。ここで使用した「例」及び「典型的な」という用語は、「一例や一実施例としての役割をなす」という意味であって、「好ましい」や「他の例よりも有利な」という意味ではない。詳細な説明は、ここで述べる技術についての理解を提供するために、詳細な具体例を含んでいる。しかし、本開示の技術は、それらの詳細な具体例なしでも実施され得る。或る例では、記述した例の概念を不明瞭にするのを避けるために、周知の構造及びデバイスをブロック図の形で示してある。
【００６１】
添付図面において、同様なコンポーネント又はフィーチャは、同じ参照符号を有し得る。更に、同じタイプの種々のコンポーネントは、参照符号の後に、ダッシュと、同様なコンポーネント間を区別する第２の符号とを付すことによって、区別され得る。第１の参照符号が本明細書中で使用される場合、この記載は、第２の参照符号にかかわらず、同じ第１の参照符号を有する同様なコンポーネントのいずれにも適用され得る。
【００６２】
ここに記載した情報及び信号は、様々な異なる技術や技法のうちのいずれかを用いて表され得る。例えば、これまでの記載の全体に渡って参照された、データ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場又は磁気粒子、光場又は光粒子、或いはそれらの任意の組み合わせによって表され得る。或る図は、信号を１つの信号として示してもよいが、当業者であれば、信号は信号のバス（ここで、バスは種々のビット幅を有している）を表し得る、と理解するであろう。
【００６３】
「電子通信」という用語は、コンポーネント間の電子の流れを支持する、コンポーネント間の関係を表している。これは、コンポーネント間の直接的な接続を含み、或いは、それらの中間のコンポーネントを含んでもよい。電子通信しているコンポーネントは、（例えば、電圧の印加された回路内で）電子又は信号を動的に交換したり、或いは、（電圧の印加されていない回路内で）電子又は信号を動的に交換しないものであってよいが、回路に電圧が印加されている時には電子又は信号を交換するように構成されるか又はそのように動作可能であり得る。一例として、スイッチ（例えばトランジスタ）を介して物理的に接続された２つのコンポーネントは、当該スイッチの状態（すなわち、開状態又は閉状態）にかかわらず、電子通信している。
【００６４】
ここで論じられたデバイスは、シリコン、ゲルマニウム、シリコン−ゲルマニウム合金、砒化ガリウム、窒化ガリウム等のような半導体基板上に形成されてもよい。或る場合には、基板は半導体ウェハである。他の場合には、基板は、シリコン−オン−グラス（ＳＯＧ）又はシリコン−オン−サファイア（ＳＯＰ）等のシリコン−オン−インシュレータ（ＳＯＩ）基板であってもよく、或いは、他の基板上の半導体材料のエピキシャル層であってもよい。基板又はその部分領域の導電性は、リン、ホウ素、又は砒素を含むがこれらには限定されない種々の化学種を用いてドーピングすることによって、制御され得る。ドーピングは、基板の初期の形成又は成長中に、イオン注入又はその他の任意のドーピング手段によって行い得る。
【００６５】
ここでの開示に関連して記載された種々の例示的なブロック、コンポーネント、及びモジュールは、ここに記載された機能を実行するように設計された、汎用プロセッサ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、或いはそれらの任意の組み合わせを用いて、実施又は実行され得る。汎用プロセッサは、マイクロプロセッサであってもよいが、それに代えて、プロセッサは、いずれかの従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンであってもよい。プロセッサは、また、コンピューティングデバイスの組み合わせ（例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと共同動作する１つ以上のマイクロプロセッサ、又は任意の他の同様な構成）として実施されてもよい。
【００６６】
ここに記載された機能は、ハードウェア、プロセッサによって実行されるソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいて実施され得る。プロセッサによって実行されるソフトウェアにおいて実施される場合には、その機能は、コンピュータ読み取り可能媒体上の１つ以上の命令又はコードとして、記憶されるか又は送信され得る。その他の例及び実施は、本開示及び特許請求の範囲の範囲内である。例えば、ソフトウェアの性質上、上述した機能は、プロセッサによって実行されるソフトウェア、ハードウェア、ファームウェア、ハードワイヤリング、又はそれらのいずれかの組み合わせを用いて実施可能である。機能を実施するフィーチャも、種々の位置に物理的に配置されてよく、それは、機能の一部がそれぞれ異なる物理的位置で実施されるように分布されることを含む。また、特許請求の範囲を含む本明細書中で使用されているように、項目のリスト（例えば、「・・・のうちの少なくとも１つ」又は「・・・のうちの１つ以上」のようなフレーズによって始まる項目のリスト）中で使用される「又は」は、包括的なリストを示しており、例えば、Ａ、Ｂ、又はＣのうちの少なくとも１つというリストは、Ａ、又はＢ、又はＣ、又はＡとＢ、又はＡとＣ、又はＢとＣ、又はＡとＢとＣ（すなわち、Ａ及びＢ及びＣ）を意味する。
【００６７】
コンピュータ読み取り可能媒体は、非一時的コンピュータ記憶媒体と、コンピュータプログラムを或る場所から他の場所へ転送可能にする何らかの媒体を含む通信媒体との両方を含む。非一時的記憶媒体は、汎用の又は特定用途向けのコンピュータによってアクセス可能な、何らかの利用可能な媒体であってよい。一例として、非一時的コンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＰＭ）、コンパクトディスク（ＣＤ）ＲＯＭ又はその他の光ディスク記憶デバイス、磁気ディスク記憶デバイス又はその他の磁気記憶デバイス、或いは、所望のプログラムコード手段を命令又はデータ構造の形式で担持し又は記憶するように使用可能であって、かつ、汎用又は特定用途向けのコンピュータや汎用又は特定用途向けのプロセッサによってアクセス可能である他の非一時的媒体を含み得るが、これらに限定されない。
【００６８】
また、何らかの接続が、適切にコンピュータ読み取り可能媒体と呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、又は、赤外、高周波、マイクロ波等の無線技術を用いて、ウェブサイト、サーバ、又はその他のリモートソースから送信される場合には、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、又は、赤外、高周波、マイクロ波等の無線技術が、上記媒体の定義に含まれる。ここで使用されるディスク（disk及びdisc）は、ＣＤ、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピディスク、及びブルーレイディスクを含み、これらのディスクは、通常、データを磁気的に再生したり、データをレーザで光学的に再生したりする。それらの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれ得る。
【００６９】
ここに述べたことは、当業者が本開示を実施又は使用することを可能にするために提供される。本開示に対する種々の変更は、当業者にとって容易になし得るものであり、ここに定義された一般的な原理も、本開示の範囲から逸脱することなく、他の変形例に適用され得る。従って、本開示は、ここに述べた例や設計に限定されるべきものではなく、ここに述べた原理及び新規な特徴と矛盾しない最も広い範囲が本開示に認められるべきである。
【図１】
2019500669.tif 000003
【図２】
2019500669.tif 000004
【図３】
2019500669.tif 000005
【図４】
2019500669.tif 000006
【図５】
2019500669.tif 000007
【図６】
2019500669.tif 000008
【図７】
2019500669.tif 000009
【手続補正書】
【提出日】平成30年5月9日(2018.5.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
［クロスレファレンス］
本特許出願は、米国特許出願第１４／９２８，９８８号（Zhang et al., 発明の名称「共有バス上の複数のデバイスのためのデータ転送技術」、出願日２０１５年１０月３０日）についての優先権を主張する。当該米国特許出願は、本願の譲渡人に対して譲渡されたものであり、その参照をもって、本願に明確に組み込まれるものとする。
【０００２】
［技術分野］
以下に述べることは、概して、デバイス間のデータ転送に関するものであり、特には、共有バス上の複数のデバイスのためのデータ転送技術に関する。
【背景技術】
【０００３】
メモリデバイスは、コンピュータ、無線通信デバイス、カメラ、デジタルディスプレイ等の種々の電子デバイスにおいて、情報を記憶するために広く使用されている。情報は、メモリデバイスのそれぞれ異なる状態をプログラムすることによって記憶される。例えば、バイナリデバイスは、論理「１」又は論理「２」を表す２つの状態を有する。他のシステムでは、２つよりも多くの状態が記憶されることもある。その記憶された情報にアクセスするために、電子デバイスは、メモリデバイスの記憶された状態を読み出し、又は検出し得る。情報を記憶するために、電子デバイスは、メモリデバイスに状態を書き込み、又はプログラムし得る。
【０００４】
ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期式ダイナミックＲＡＭ（ＳＤＲＡＭ）、強誘電体ＲＡＭ（ＦｅＲＡＭ）、磁気ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、フラッシュメモリ、又はその他のものを含む、多くのタイプのメモリデバイスが存在する。メモリデバイスは、揮発性又は不揮発性であり得る。不揮発性メモリ、例えばフラッシュメモリは、外部電源なしでも、長期間に渡ってデータを記憶することができる。揮発性メモリデバイス、例えばＤＲＡＭは、外部電源によって定期的にリフレッシュされないと、時間超過により、その記憶された状態を消失してしまうことがある。揮発性メモリの或る態様は、より速い読み出し速度又は書き込み速度等、性能上の利点を提供し得るが、一方、不揮発性メモリの或る態様は、定期的なリフレッシュを行わずともデータを記憶できる等の利点を有し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
デバイス間でデータを転送する際、メモリコントローラが、ソースデバイスからメモリコントローラ内のデータ記憶部へデータを読み出し、続いて、そのデータをメモリコントローラ内の上記データ記憶部からターゲットデバイスへ書き込むことがある。更に、多くの場合、揮発性メモリや不揮発性メモリのようなそれぞれ異なる記憶デバイス毎に、異なるタイプのインタフェースを有することがある。そのような設計だと、データの転送を可能にするために、その全てにメモリコントローラが関わることにもなり得る。従って、メモリコントローラの効率向上と、異なる電子デバイス間でのデータ転送の効率向上とを可能にする技術を提供することは、有益であり得る。
【課題を解決するための手段】
【０００６】
（原文に記載なし）
【発明の効果】
【０００７】
（原文に記載なし）
【図面の簡単な説明】
【０００８】
本開示の実施形態について、以下の図を参照して説明する。
【図１】図１は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持する、メモリシステムを含むデバイスのブロック図を示す。
【図２】図２は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持するメモリシステムのブロック図を示す。
【図３】図３は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を提供する複数のデータ記憶デバイスについてのタイミング図を示す。
【図４】図４は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送を支持する電子システムのブロック図を示す。
【図５】図５は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その１）である。
【図６】図６は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その２）である。
【図７】図７は、本開示の種々の実施形態に係る、共有バスを用いたデータ記憶要素間のダイレクトデータ転送のための方法を示すフローチャート（その３）である。
【発明を実施するための形態】
【０００９】
［詳細な説明］
本開示の種々の実施形態は、コントローラからの関わりを低減した、１つのバスを共有するデバイス間のダイレクトデータ転送を提供する。或る実施形態では、メモリコントローラ等のコントローラと、ソースメモリデバイスと、ターゲットメモリデバイスとが、共有バスに連結され得る。或る実施形態では、共有バスはシリアル・ペリフェラル・インタフェース（ＳＰＩ）バスであってもよいが、他のタイプのバスも同様に使用可能である。或る例では、コントローラはプロセッサ（例えばマイクロプロセッサ）を含んでもよく、又は、プロセッサの制御下で動作するものであってもよい。コントローラは、ターゲットメモリへ転送されるデータに対する、ソースメモリデバイスにおけるソースアドレスを特定することが可能である。コントローラは、ターゲットメモリデバイスにおけるターゲットアドレスを特定し、そして、上記バスを介してソースメモリデバイスからターゲットメモリデバイスへのダイレクトなデータ転送を開始し得てもよい。コントローラは、データを読み出すためのコマンドを第１のメモリデバイスへ送信してもよく、このコマンドは第２のメモリデバイスでも受信され得る。上記コマンドに応答して、ソースメモリデバイスがバスからデータを読み出してもよく、また、ターゲットメモリが上記バスからデータを読み出して、このデータを、コントローラからの更なるコマンド無しで、上記ターゲットアドレスから（ターゲットアドレスを先頭にして）記憶するようにしてもよい。或る実施形態では、第１のメモリデバイスからデータを読み出すためのコマンドが、プロトコル一式又はコマンド一式に従った、第１のメモリデバイスに対する読み出しコマンドであってもよく、また、第１のメモリデバイスによって提供されたデータを第２のメモリデバイスに記憶させるための、第２のメモリデバイスに対する特別なプログラムコマンドであってもよい。
【００１０】
或る実施形態では、コントローラは、ターゲットメモリデバイスへイネーブル信号を提供し、ターゲットアドレスをターゲットメモリデバイス内のターゲットアドレスレジスタに書き込んでもよい。コントローラは、次に、ソースメモリデバイスとターゲットメモリデバイスの両方へイネーブル信号を提供し、それと共に読み出しコマンドを送信してもよい。コントローラは、ソースメモリデバイスとターゲットメモリデバイスにクロックを提供してもよく、このクロックが提供され続ける限り、ソースメモリデバイスがバスへデータを読み出し、ターゲットメモリデバイスがバスからデータを読み込んでもよい。このように、コントローラ、又はコントローラを管理するプロセッサは、単にソース及びターゲットアドレス、読み出しコマンド、イネーブル及びクロック信号を提供することだけで、データ転送への関わりを低減できるようになった。これにより、その他の処理タスクのためのリソースをなくすことによってシステム動作を向上させることができ、また、メモリデバイス間で転送されるデータをコントローラが実際に受信する技術によればコントローラで必要とされるキャッシュメモリやバッファメモリ等の内部メモリの量を低減させることができる。更に、当該技術は、データ転送のための他の技術よりも、システム電力及び処理時間を低減することができる。
【００１１】
以上に述べた本開示の実施形態について、デバイス間で転送されるデータを有し得るそれぞれ異なるデバイスを伴った電子システムに関し、以下に更に述べる。メモリコントローラの関わりを低減したダイレクトデータ転送を採用するメモリシステムについての特別な例を述べる。本開示のこれらの又はその他の実施形態について、共有バスを用いたデバイス間のダイレクトデータ転送に関する、装置図、システム図、及びフローチャートによって更に説明し、また、それらの図を参照して更に述べる。
【００１２】
図１は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を支持するシステム１００の図を示す。システム１００はデバイス１０５を含んでおり、このデバイス１０５は、種々のコンポーネントを接続するか又はそれらを物理的に支持するためのプリント回路基板であるか又はそれを含み得る。デバイス１０５は、プロセッサ１１０、ＢＩＯＳコンポーネント１１５、周辺コンポーネント１２０、入力／出力制御コンポーネント１２５、及びメモリシステム１５０を含み得る。デバイス１０５の上記コンポーネントは、デバイスバス１３０を介して互いに電子通信し得る。図１の例示的なシステム１００において、メモリシステム１５０はメモリコントローラ１５５、揮発性メモリ１６０、及び不揮発性メモリ１６５を含んでおり、それらは共有バス１７０によってメモリコントローラ１５５に結合され得る。
【００１３】
プロセッサ１１０は、メモリコントローラ１５５を介してメモリシステム１５０とインタフェースするように構成可能である。或る場合にはプロセッサ１１０がメモリコントローラ１５５の機能を実行してもよく、他の場合にはメモリコントローラ１５５がプロセッサ１１０に統合されてもよい。プロセッサ１１０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネントであってもよく、又は、それらのタイプのコンポーネントの組み合わせであってもよく、また、プロセッサ１１０は、共有バスを用いたデバイス間のダイレクトデータ転送を含む、ここで述べる種々の機能を実行してもよい。プロセッサ１１０は、例えば、デバイス１０５に種々の機能又はタスクを行わせるための、メモリシステム１５０に記憶されたコンピュータ読取可能な命令を実行するように構成されてもよい。
【００１４】
ＢＩＯＳコンポーネント１１５は、ファームウェアとして動作される基本入力／出力システム（ＢＩＯＳ）を含むソフトウェアコンポーネントであり、システム１００の種々のハードウェアコンポーネントを起動及び作動させ得る。ＢＩＯＳコンポーネント１１５は、プロセッサ１１０と種々のコンポーネント（例えば、周辺コンポーネント１２０、入力／出力コントローラ１２５等）との間のデータフローをも管理し得る。ＢＩＯＳコンポーネント１１５は、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、又はその他の任意の不揮発性メモリに記憶されたプログラム又はソフトウェアを含んでもよい。
【００１５】
周辺コンポーネント１２０は、デバイス１０５に統合されている、何らかの入力又は出力デバイスか、又はそのようなデバイスのためのインタフェースであり得る。その一例は、ディスクコントローラ、サウンドコントローラ、グラフィックコントローラ、イーサネットコントローラ、モデム、ＵＳＢコントローラ、シリアル又はパラレルポート、或いは、周辺コンポーネントインタコネクト（ＰＣＩ）スロット又はアクセラレーテッドグラフィックポート（ＡＧＰ）スロット等の周辺カードスロットを含み得る。
【００１６】
入力／出力コントローラ１２５は、プロセッサ１１０と、周辺コンポーネント１２０、入力デバイス１３５、又は出力デバイス１４０との間のデータ通信を管理し得る。入力／出力コントローラ１２５は、デバイス１０５に統合されていない周辺装置を管理してもよい。或る場合には、入力／出力コントローラ１２５は、外部周辺装置に対する物理的な接続又はポートとなり得る。
【００１７】
入力１３５は、デバイス１０５又はそのコンポーネントへの入力を提供する、デバイス１０５に外付けされたデバイス又は信号となり得る。これは、ユーザインタフェースや、他のデバイスとの又は他のデバイス間のインタフェースを含んでもよい。或る場合には、入力１３５は、周辺コンポーネント１２０を介してデバイス１０５とインタフェースする周辺装置であってもよく、又は、入力／出力コントローラ１２５によって管理されてもよい。
【００１８】
出力デバイス１４０は、デバイス１０５又はそのコンポーネントのいずれかからの出力を受信するように構成された、デバイス１０５に外付けされたデバイス又は信号となり得る。出力デバイス１４０の一例は、ディスプレイ、オーディオスピーカ、印刷装置、他のプロセッサ又はプリント回路基板等を含み得る。或る場合には、出力１４０は、周辺コンポーネント１２０を介してデバイス１０５とインタフェースする周辺装置であってもよく、又は、入力／出力コントローラ１２５によって管理されてもよい。
【００１９】
上述したように、メモリシステム１５０は、メモリコントローラ１５５、揮発性メモリ１６０、及び不揮発性メモリ１６５を含んでもよく、これらのメモリは共有バス１７０によってメモリコントローラ１５５に連結され得る。或る例では、共有バス１７０はＳＰＩバスであってもよく、メモリコントローラ１５５は、揮発性メモリ１６０及び不揮発性メモリ１６５の両方にアクセスするための１つのＳＰＩインタフェースを用い得る。メモリコントローラのための種々の既存の設計は、揮発性メモリと不揮発性メモリとに対して別々のインタフェースを用い得るものであり、１つのインタフェースを伴った共有バス１７０を用いることは、より効果的で、より複雑でない設計を提供し得る。
【００２０】
種々の例のＳＰＩバスは、命令、アドレス、及びデータを、それらの全てを１つのコマンドシーケンスにして含むプロトコルを用いてもよい。そのようなコマンドシーケンスは、特定のコンポーネント（例えば、揮発性メモリ１６０及び／又は不揮発性メモリ１６５）にチップイネーブル信号又はチップセレクト信号を提供することによって開始され、また、上記のチップイネーブル信号又はチップセクレト信号を非選択にすることによって終了され得る。ＳＰＩプロトコルの上記命令は、実行される動作（例えばメモリ読み出し）を定義し得るものであり、上記アドレスは、上記命令に関連付けられた上記データが配置されるか又は書き込まれる場所を特定し得る。例えば、上記命令は読み出し命令であってもよく、上記アドレスは、揮発性メモリ１６０又は不揮発性メモリ１６５から読み出されるデータの先頭メモリ位置を示すソースアドレスであってもよい。種々の例では、ＳＰＩプロトコルの命令に続いて、アドレスの提供とデータの出力との間に、データを出力する前にメモリ又はその他のデバイスがデータを検出する（例えば、メモリアレイ内の特定の位置に記憶されたデータを検出する）ことを可能にするためのダミーサイクルを提供してもよい。ここで提供される技術は、幾つかの例について、ＳＰＩ共有バスを用いたシステムに関して記述される。しかし、当該技術は、コマンド、アドレス、及びデータの全てを１つの同一のチップセレクトイベントとして含み得る同様なコマンドシーケンスを有する他のタイプの共有バスを用いるシステムにおいても使用し得る。
【００２１】
今、図２を参照して、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送を支持するシステム２００の一層具体的な例について述べる。システム２００は、図１のメモリシステム１５０の一例であるメモリシステム１５０−ａを含み得る。メモリシステム１５０−ａは、図１の共有バス１７０の一例である共有バス１７０−ａに結合された、図１のメモリコントローラ１５５の一例であるメモリコントローラ１５５−ａを含み得る。共有バス１７０−ａには、それぞれ図１の揮発性メモリ１６０及び不揮発性メモリ１６５の一例である揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａも結合されている。
【００２２】
揮発性メモリ１６０−ａは、第１の動作命令デコーダ２０５、第１のターゲットアドレスレジスタ２１０、揮発性メモリアレイ２１５、及び第１のチップイネーブル２２０を含み得る。揮発性メモリ１６０−ａは、例えば、メモリシステム１５０−ａに含まれる１つの集積回路又はチップであってもよい。或る例では、揮発性メモリ１６０−ａは、上述したようなコンポーネントを含む一層大きな集積回路からなるメモリモジュールであってもよい。他の例では、第１の動作命令デコーダ２０５、第１のターゲットアドレスレジスタ２１０、及び揮発性メモリアレイ２１５は、１つのメモリモジュールに含まれるディスクリートコンポーネント（例えば、プリント回路基板上に搭載されたコンポーネント）であってもよく、また、第１のチップイネーブル２２０は、メモリモジュールの上記（及びその他の）コンポーネントを有効にするために使用され得る。
【００２３】
第１の動作命令デコーダ２０５は、共有バス１７０−ａを介して受信された命令をデコードし、このデコードされた命令に従って動作し得る。第１のターゲットアドレスレジスタ２１０は、揮発性メモリ１６０−ａへ転送されるデータに対するターゲットアドレスをメモリコントローラ１５５−ａが提供するためのレジスタであり得る。揮発性メモリアレイ２１５は、メモリセルのアレイ（例えば、ＤＲＡＭアレイ又はＳＲＡＭアレイ）を含んでもよい。第１のターゲットアドレスレジスタ２１０は、揮発性メモリアレイ２１５とは別々に示されているが、或る例では、第１のターゲットアドレスレジスタ２１０は揮発性メモリアレイ２１５の一部であってもよい。第１のチップイネーブル２２０は、揮発性メモリ１６０−ａに命令を実行させ且つ共有バス１７０−ａを介して他のコンポーネントと通信させるイネーブルラインであってもよい。
【００２４】
同様に、不揮発性メモリ１６５−ａは、第２の動作命令デコーダ２２５、第２のターゲットアドレスレジスタ２３０、不揮発性メモリアレイ２３５、及び第２のチップイネーブル２４０を含み得る。不揮発性メモリ１６５−ａは、例えば、メモリシステム１５０−ａに含まれる１つの集積回路又はチップであってもよい。或る例では、不揮発性メモリ１６５−ａは、上述したようなコンポーネントを含む一層大きな集積回路からなるメモリモジュールであってもよい。他の例では、第２の動作命令デコーダ２２５、第２のターゲットアドレスレジスタ２３０、及び不揮発性メモリアレイ２３５は、１つのメモリモジュールに含まれるディスクリートコンポーネント（例えば、プリント回路基板上に搭載されたコンポーネント）であってもよく、また、第２のチップイネーブル２４０は、メモリモジュールの上記（及びその他の）コンポーネントを有効にするために使用され得る。
【００２５】
第２の動作命令デコーダ２２５は、共有バス１７０−ａを介して受信された命令をデコードし、このデコードされた命令に従って動作し得る。第２のターゲットアドレスレジスタ２３０は、不揮発性メモリ１６５−ａへ転送されるデータに対するターゲットアドレスをメモリコントローラ１５５−ａが提供するためのレジスタであり得る。不揮発性メモリアレイ２３５は、不揮発性メモリセルのアレイ（例えば、ＥＥＰＲＯＭアレイ又はフラッシュメモリアレイ）を含んでもよい。第２のターゲットアドレスレジスタ２３０は、不揮発性メモリアレイ２３５とは別々に示されているが、或る例では、第２のターゲットアドレスレジスタ２３０は不揮発性メモリアレイ２３５の一部であってもよい。第２のチップイネーブル２４０は、不揮発性メモリ１６５−ａに命令を実行させ且つ共有バス１７０−ａを介して他のコンポーネントと通信させるイネーブルラインであってもよい。なお、図２の例は例示及び説明のためのものであり、他の例は他の又は追加のコンポーネントを含んでもよい。例えば、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５が上記の例のものとは互いに交換することも可能であり、或いは、共有バス１７０−ａ上の異なるデバイス間の更なる通信を可能にする追加のメモリ又はインタフェースが共有バス１７０−ａに結合されることも可能である。
【００２６】
この例におけるメモリコントローラ１５５−ａは、メモリマネージャ２４５及びチップイネーブル（ＣＥ）マネージャ２５５を含み得る。メモリマネージャ２４５は、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａに、ＳＰＩプロトコルに従ったコマンドシーケンスのような命令を提供し得る。メモリコントローラ１５５−ａは、メモリシステム１５０−ａから他のコンポーネントへデータを提供するために、又は、メモリシステム１５０−ａに記憶されるデータを他のコンポーネントから受信するために、他の外部コンポーネントに結合されてもよい。ＣＥマネージャ２５５は、第１のチップイネーブルライン２４６を介して揮発性メモリ１６０−ａの第１のチップイネーブル２２０に結合されてもよく、また、第２のチップイネーブルライン２５０を介して不揮発性メモリ１６５−ａの第２のチップイネーブル２４０に結合されてもよい。メモリコントローラ１５５−ａは、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａにクロック２６０を提供してもよい。
【００２７】
上述したように、種々の例に係る共有バス１７０−ａは、ＳＰＩバスであり得る。本開示の種々の実施形態は、ＳＰＩバスのシリアルプロトコルを使用するものであり、メモリコントローラ１５５−ａと揮発性メモリ１６０−ａと不揮発性メモリ１６５−ａとの間でのデータ転送のための、向上した技術を提供する。揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方が、メモリコントローラ１５５−ａのサーバントであり、それらは、メモリコントローラ１５５−ａによって別々にアクセスされ得る個々のチップイネーブル２２０及び２４０を有している。或る例では、例えばメモリシステムの外部のプロセッサによって実行されるプログラム命令のようなデータが、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへロードされ得る。そのような転送のためのロードデータプロセスが、メモリコントローラ１５５−ａからの関わりを制限しつつ、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへダイクレトにデータを移動させ得る。同様に、揮発性メモリ１６０−ａからの或るデータは、メモリコントローラ１５５−ａからの関わりを制限しつつ、揮発性メモリ１６０−ａから不揮発性メモリ１６５−ａへダイレクトにデータを移動させ得る書き戻しデータプロセスによって、不揮発性メモリ１６５−ａに書き込まれる必要があり得る。説明を明確にするために、そのようなロードデータプロセス及び書き戻しデータプロセスを別々に記載したが、或る例では、これらの動作は組み合わされてもよい。
【００２８】
データロードプロセスのために、メモリコントローラ１５５−ａは、或る例では、揮発性メモリ１６０−ａへロードされるデータに対して、不揮発性メモリ１６５−ａにおけるソースアドレスを決定し得る。メモリコントローラは、揮発性メモリ１６０−ａにデータを記憶するためのターゲットアドレスも決定し得る。メモリコントローラ１５５−ａは、第１のターゲットアドレスレジスタ２１０にターゲットアドレスを設定することによって（例えば、第１のチップイネーブル２２０を有効にし、ターゲットアドレスを第１のターゲットアドレスレジスタ２１０に書き込み、そして、第１のチップイネーブル２２０を無効にすることによって）、データロードプロセスを開始し得る。メモリコントローラ１５５−ａは、次に、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方で受信されるコマンドシーケンスを、共有バス１７０−ａを介して送信し得る。そのようなコマンドは、或る例では、ＳＰＩプロトコルに従って確立された読み出しコマンドであってもよく、また、読み出しコマンド及びソースアドレスを含んでいてもよい。上述したように、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへデータを移動させるための既存の技術は、ソースアドレスで始まるデータをメモリコントローラ１５５−ａ内のデータキャッシュへ移動させる読み出しコマンドを含むことがある。しかし、ここに記載した技術によれば、不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの両方が読み出しコマンドを受信し、コマンドシーケンスに耳を傾け、そして、データをメモリコントローラ１５５−ａに記憶することなく、つまり、メモリコントローラ１５５−ａを実際のデータ移動に関わらせることなく、ダイレクトにデータを転送し得る。
【００２９】
或る例では、メモリマネージャ２４５が、ＣＥマネージャ２５５を介して、第１のチップイネーブル２２０及び第２のチップイネーブル２４０の両方にチップイネーブル信号を提供することで、不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの両方が読み出しコマンドに耳を傾けるのを可能にし得る。上述したように、読み出しコマンドの後に、揮発性メモリによって無視されてもよいソースアドレスが続き、そしてメモリコントローラ１５５−ａは不揮発性メモリ１６５−ａ及び揮発性メモリ１６０−ａの各々にクロックを提供し得る。不揮発性メモリ１６５−ａは、第２の動作命令デコーダ２２５でデコードされた読み出しコマンドに従って、不揮発性メモリアレイ２３５から、ソースアドレスで始まるデータを出力し、そして、クロック２６０がメモリコントローラ１５５−ａによって提供され続ける限り、ソースアドレスからの連続したメモリ位置にあるデータを出力し続け得る。揮発性メモリ１６０−ａの第１の動作命令デコーダ２０５は、読み出しコマンドを受信してデコードし、ソースアドレスを無視し、そして、不揮発性メモリ１６５−ａによって共有バス１７０−ａに提供されたデータを、揮発性メモリアレイ２１５にそのターゲットアドレスの位置から記憶し得る。データの読み出しと、それに対応するデータの記憶は、クロック２６０が揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａに提供される持続時間（タイムデュレーション）の間中、継続する。そのような方法では、メモリコントローラ１５５−ａは、メモリコントローラ１５５−ａの関わりを制限しながら、かつ、メモリコントローラ１５５−ａのキャッシュ又はバッファにデータを記憶することなしに、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへダイレクトにデータを移動させ得る。同様な動作が、不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへの書き戻し動作に使用されてもよく、その場合、書き戻しデータに対するターゲットアドレスが第２のターゲットアドレスレジスタ２３０に記憶され、また、揮発性メモリ１６０−ａから共有バス１７０−ａにデータを読み出すための読み出しコマンドが発行される。
【００３０】
上述したように、本開示の種々の実施形態について記載された技術は、第１の動作命令デコーダ２０５及び第２の動作命令デコーダ２２５の両方がメモリコントローラ１５５−ａからのコマンドを受信することを含む。データロードプロセスにおいて、不揮発性メモリ１６５−ａは命令を読み出し動作として扱い、一方、揮発性メモリ１６０−ａは同命令を書き込み動作として扱い得る。同様に、書き戻しプロセスにおいては、揮発性メモリ１６０−ａは命令を読み出し動作として扱い、一方、不揮発性メモリ１６５−ａは同命令を書き込み動作として扱い得る。これらの命令は、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの両方に対するタイミング要求を一致させるように定義され得る。これらの命令はまた、そのような命令が各部分に対して一意である限り、ＳＰＩプロトコルで定義された既存の不揮発性及び揮発性メモリ読み出しコマンドを利用するものであってもよい。例えば、もし「０Ｂｈ」命令（ＳＰＩフラッシュ不揮発性メモリにおける既存のＦＡＳＴ読み出しコマンド）が、揮発性メモリ側においていずれのＳＰＩ動作にも使用されていなければ、このコマンドは揮発性メモリ側において書き込みコマンドとして定義されてもよい。第１の命令デコーダ２０５は、次に、ＦＡＳＴ読み出しコマンドを理解し、そのコマンドシーケンスを、不揮発性メモリ１６５−ａに期待されるデータ出力についての知識を用いて、書き込みシーケンスに変換し、そして、共有バス１７０−ａに提供されたデータを正しいクロック及びダイミングでラッチすることができる。
【００３１】
更に、上述したように、揮発性メモリ１６０−ａ及び不揮発性メモリ１６５−ａの各々がターゲットアドレスレジスタを有し得る。ソースアドレスはコマンドシーケンスの中に提供されるがターゲットアドレスは提供されないので、そのようなアドレスレジスタが使用され得る。例えばロードデータプロセスにおいて、コマンドシーケンスは、不揮発性メモリ１６５−ａが送り出す必要のあるアドレスを含んでいるが、それは、メモリコントローラ１５５−ａが揮発性メモリ１６０−ａについて必要とするターゲットアドレスではない。よって、自動動作の前に、メモリコントローラ１５５−ａは、揮発性メモリ１６０−ａに、不揮発性メモリ１６５−ａからのデータがロードされる場所であるターゲットアドレスを提供する。同様に、書き戻しプロセスにおいては、揮発性メモリ１６０−ａからのデータが正しい位置に書き戻され得るように、不揮発性メモリ１６５−ａに第２のターゲットアドレスレジスタ２３０を設定する。或る例では、ソースアドレス及びターゲットアドレスの両方を含む新たなコマンドシーケンスが定義されてもよい。しかし、ターゲットアドレスレジスタを使用することで、既存のプロトコルへの変更を減らすことができ、向上したフレキシビリティを提供し得る。不揮発性メモリ１６５−ａから揮発性メモリ１６０−ａへのデータシャドウイング動作のための動作も、同様に説明し得る。
【００３２】
図３は、本開示の種々の実施形態に係る、共有バスを用いたダイレクトデータ転送を支持する、メモリコントローラからメモリデバイスへ提供される信号のタイミング図３００を示す。タイミング図３００の信号は、例えば、図１及び図２に関して先に述べたメモリコントローラ１５５によって提供され得る。図３の例では、不揮発性メモリチップイネーブル信号３０５（ＣＥ＃＿ＮＶＭ）が、図１又は図２の不揮発性メモリ１６５−ａのような不揮発性メモリに提供され得る。揮発性メモリチップイネーブル信号３１０（ＣＥ＃＿ＲＡＭ）が、図１又は図２の揮発性メモリ１６０−ａのような揮発性メモリに提供され得る。データ信号３１５（ＤＱ［ｘ：０］）が、図１又は図２の共有バス１７０のような共有バスに提供され得る。クロック３２０も提供され得る。図３の例には、揮発性メモリから不揮発性メモリへの書き戻し動作のための動作が示されている。
【００３３】
まず、時刻３２５で、コントローラがローレベルのチップイネーブル信号３０５を不揮発性メモリに提供し、これにより、データ信号３１５からのデータを不揮発性メモリにラッチさせ得る。この例では、データ信号３１５が、第１の期間３３５中に、ターゲットアドレスを設定するための命令をターゲットアドレスと共に提供し得る。更に、この第１の期間３３５中、チップイネーブル３１０はハイになっており、これにより、揮発性メモリを無効のままにし、よって上記命令を受信しないようにする。上記命令に続いて、チップイネーブル信号３０５がハイにされ、次に、時刻３３０でチップイネーブル信号３０５及び３１０の両方がローに設定されることで、不揮発性メモリ及び揮発性メモリの両方が有効にされる。持続時間（タイムデュレーション）３４５の間中、クロック３２０が同様に両方のメモリに提供され、その際、コントローラが共有バス上にデータ信号３１５の読み出し命令を提供し、この読み出し命令が不揮発性メモリ及び揮発性メモリの両方で受信される。不揮発性メモリは、上記命令をデコードし、上記命令を書き戻し命令として認識し、上記命令の中に提供されたソースアドレスを無視し、そして次に、共有バスにおける揮発性メモリから該バスに出力されたデータを検出する。不揮発性メモリは、ターゲットアドレスで特定された位置から、上記検出されたデータを記憶する。揮発性メモリも、共有バス上のデータ信号３１５の読み出し命令をデコードし、この命令からソースアドレスをデコードし、このソースアドレスの位置から記憶されたデータの検出を開始し、そしてこのデータを共有バスに出力する。上述したように、メモリコントローラからのコマンドシーケンスは、揮発性メモリがその記憶データを検出するのを可能にする幾つかのダミーサイクルを含んでもよく、揮発性メモリ及び不揮発性メモリの両方が、データ転送のための正しいタイミングを提供するために、ダミーサイクルの数を知るようにする。これらの動作は、持続時間３４５の間中、継続する。持続時間３４５が時刻３４０で終了すると、メモリコントローラがチップイネーブル信号３０５及び３１０の両方を非選択にして、クロック３２０の提供を中止してもよい。
【００３４】
上記の例は、共有バスに結合され得る異なるメモリコンポーネントについて記述したものだが、ここに記載された技術は、メモリデバイスに加えて設けられた他のデバイスによって、そのようなデバイス間のダイレクトデータ転送に使用されてもよい。例えば、そのような技術は、幾つかの例を挙げれば、センサ、セキュアデジタルカード、及び液晶ディスプレイを含み得る、埋め込み型システムに使用されてもよい。そのような電子デバイスは、コントローラからの関わりを制限した、ここで述べたようなデータ転送のための技術を使用し得る。
【００３５】
図４は、本開示の種々の実施形態に係る、共有バスを用いた異なるタイプのデバイス間のダイレクトデータ転送を支持するシステム４００を示す。システム４００はデバイス４０５を含んでもよく、このデバイス４０５は、種々のコンポーネントを接続するか又は物理的に支持するためのプリント回路基板であるか又はそれを含み得る。デバイス４０５は、コントローラ４２０、第１の電子デバイス４２５、第２の電子デバイス４３０、入力／出力制御コンポーネント４３５、及び、随意ではあるが１つ以上の他のコンポーネント４４０を含み得る。デバイス４０５のこれらのコンポーネントは、図１又は図２の共有バス１７０の一例であり得る共有バス４４５を介して、互いに電子通信し得る。図４の例示的システム４００では、第１の電子デバイス４２５が第１のデータ記憶領域４５０及びチップイネーブル／クロック入力４５５を含み得る。同様に、第２の電子デバイス４３０が第２のデータ記憶領域４６０及びそれに関連付けられたチップイネーブル／クロック入力４６５を含み得る。
【００３６】
コントローラ４２０は、共有バス４４５を介して、第１の電子デバイス４２５、第２の電子デバイス４３０、入力／出力制御コンポーネント４３５、及び／又は他のコンポーネント４４０とインタフェースするように構成され得る。コントローラは、或る例では、上述したような方法で、デバイス間のダイレクトデータ転送を開始し得る。或る場合には、コントローラ４２０は、図１〜３に関して先に述べたメモリコントローラ１５５の機能を実行し得る。コントローラ４２０は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネントであってもよく、又は、それらのタイプのコンポーネントの組み合わせであってもよい。コントローラ４２０は、共有バス４４５を用いたデバイス間のダイレクトデータ転送を含む、ここに記載された種々の機能を実行し得る。コントローラ４２０は、例えば、デバイス４０５に種々の機能又はタスクを実行させるためのコンピュータ読み取り可能な命令を実行するように構成され得る。
【００３７】
入力／出力制御コンポーネント４３５は、コントローラ４２０と外部コンポーネントとの間のデータ通信を管理し、外部コンポーネントへの物理的な接続又はポートとなり得る。入力４１０は、デバイス４０５又はそのコンポーネントへの入力を提供する、デバイス４０５に外付けされたデバイス又は信号となり得る。これは、ユーザインタフェース、或いは他のデバイスとの又はそれらの間のインタフェースを含んでもよい。或る場合には、入力４３５は、デバイス４０５とインタフェースする周辺装置であってもよく、又は、入力／出力制御コンポーネント４３５によって管理されてもよい。出力デバイス４１５は、デバイス４０５又はそのコンポーネントのいずれかからの出力を受信するように構成された、デバイス４０５に外付けされたデバイス又は信号となり得る。出力デバイス４１５の一例は、ディスプレイ、オーディオスピーカ、印刷装置、他のプロセッサ又はプリント回路基板等を含み得る。或る場合には、出力４１５は、デバイス４０５とインタフェースする周辺装置であってもよい。
【００３８】
上述したように、コントローラ４２０は、デバイス４０５の１つ以上のコンポーネントに、デバイス４０５の１つ以上の他のコンポーネントへダイレクトにデータを転送させ得る。或る例では、コントローラ４２０は、ＣＥ／クロックコンポーネント４６０によって、データを転送するデバイスにチップイネーブル信号及びクロック信号を提供し得る。図４の例では、第１の電子デバイス４２５がソースデバイスであり、第２の電子デバイス４３０がターゲットデバイスであり得る。よって、第１のデータ記憶領域４５０に記憶されたデータが、共有バス４４５を介して、第２の電子デバイスの第２のデータ記憶領域４６０へ転送され得る。この例では、第１の電子デバイス４２５がチップイネーブル／クロック入力４５５を含み、第２の電子デバイス４３０もチップイネーブル／クロック入力４６５を含み得る。コントローラは、ＣＥ／クロック（Ｃｌｏｃｋ）コンポーネント４６０を用いて、第１の電子デバイス４２５及び第２の電子デバイス４３０を選択してクロックを送信し、また、図１〜３に関して先に論じたのと同様な方法で第１の電子デバイス４２５と第２の電子デバイス４３０との間でのダイレクトデータ転送を開始及び終了するための命令及びアドレスを、共有バス４４５に提供し得る。
【００３９】
図５は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャート５００の一例を示す。フローチャート５００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示し得るものであって、図１〜４に関して先に述べたデバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００４０】
或る例では、メモリコントローラ１５５又はコントローラ４２０のようなデバイスが、ブロック５０５に示されるように、ターゲットメモリへ転送されるデータに対して、ソースメモリにおけるソースアドレスを特定し得る。そのような特定は、例えば、メモリマネージャ２４５のようなメモリマネージャによってなされてもよく、また、図１〜４に関して先に述べたように、ソースデバイスに記憶されたデータに対する先頭アドレスを特定するようにしてもよい。例えば、ソースメモリデバイスは、ソースデバイスの不揮発性メモリに記憶された、プロセッサによる実行のためのプログラムコードを含み得る。プロセッサは、このプロセッサで実行されるプログラムコードを特定し、この情報をメモリマネージャに提供し得る。続いて、メモリマネージャが、上記特定されたデータを不揮発性メモリから揮発性メモリすなわちターゲットメモリへ移動させるためにソースアドレスを特定するようにしてもよく、このようにすることで、プロセッサは、プログラムコードの実行のために一層容易に上記ソースアドレスにアクセスし得る。或る例では、コントローラ、ソースメモリ、及びターゲットメモリは、共有バス上のデバイス間でコマンド及びデータを転送するために使用され得る上記共有バスに結合されてもよい。
【００４１】
ブロック５１０で、デバイスは、図１〜４に関して先に述べたように、ソースメモリからターゲットメモリへのダイレクトなデータ転送を開始するために、ターゲットアドレスをターゲットメモリへ送信し得る。デバイスは、例えば、ターゲットアドレスを、ソースメモリからのデータがターゲットメモリに記憶される場所のアドレスとして特定し得る。例えば、メモリコントローラが、プロセッサによって実行されるプログラムコードを記憶するための揮発性メモリの領域を指定し、この特定された領域の先頭アドレスをターゲットアドレスとして使用し得る。コントローラは、或る例では、ターゲットメモリにおけるチップイネーブルを選択し、ターゲットメモリにクロックを提供し、ターゲットメモリのターゲットアドレスレジスタにターゲットアドレスを設定するためのコマンドを共有バスへ出力し、そしてターゲットアドレスを出力することによって、ターゲットアドレスをターゲットメモリへ送信し得る。ターゲットメモリは、コマンドをデコードし、共有バスからのデータをラッチし、そしてこのデータをターゲットメモリのアドレスレジスタに記憶し得る。或る例では、ソースメモリが不揮発性メモリであり、ターゲットメモリが揮発性メモリであるが、多くの他の例は、他のタイプのメモリ又は他のタイプのデバイス（例えば、ディスプレイ、センサ、カード等）のデータ記憶コンポーネントであるソースメモリ及びターゲットメモリを提供してもよい。
【００４２】
ブロック５１５で、デバイスは、図１〜４に関して先に述べたように、ソースメモリからデータを読み出すための読み出しコマンドをソースメモリへ送信し得る。この読み出しコマンドは、データがソースメモリから読み出される旨の指示を含んでいてもよく、また、読み出されるデータに対する先頭アドレスを含んでいてもよい。コントローラは、或る例では、ソースメモリ及びターゲットメモリにおけるチップイネーブルを選択し、ソースメモリ及びターゲットメモリにクロックを提供し、データ出力命令を共有バスへ出力し、そしてソースアドレスを出力することによって、読み出しコマンドを送信し得る。ソースメモリは、（例えば動作命令デコーダで）上記コマンドをデコードし、共有バスからのデータをラッチし、そしてソースアドレスで始まるデータを共有バスへ転送開始し得る。更に、チップイネーブル及びクロックがソースメモリに提供されるのと同時に、チップイネーブル及びクロックがターゲットメモリに提供されと、ターゲットメモリは読み出しコマンドをデコードし、この読み出しコマンドをデータの転送の開始と認定し、読み出しコマンド中のソースアドレスを無視し、そしてソースメモリによって共有バスに提供されたデータの記憶を開始する。
【００４３】
ブロック５２０で、ソースメモリは、図１〜４に関して先に述べたように、ソースメモリからターゲットメモリへダイレクトにデータを転送し得る。ソースメモリは、共有バスへデータを提供することによって転送を実行し、このデータはターゲットメモリによって共有バスから読み出され得る。そのデータは、ターゲットメモリに予め提供されたターゲットアドレスから（ターゲットアドレスを先頭にして）ターゲットメモリに記憶され得る。そのような転送は、或る例に従えば、その後、クロックがソースメモリ及びターゲットメモリに提供される限り、継続され得る。よって、メモリコントローラ等のデバイスは、ソースメモリから読み出されるデータの量に基づく、クロックを提供する持続時間（タイムデュレーション）と、ソースメモリからデータが読み出される速度又はターゲットメモリにデータが書き込まれ得る速度とを決定し得る。
【００４４】
図６は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャートの一例を示す。フローチャート６００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示すものであり、図１〜４を参照して先に述べたように、デバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００４５】
或る例では、メモリコントローラ１５５又はコントローラ４２０等のデバイスは、ブロック６０５に示すように、ターゲットデバイスにチップイネーブル及びクロックを提供し得る。チップイネーブル、すなわちチップセレクトと、クロックとは、図１〜４に関して先に述べたのと同様に、ターゲットデバイスに、共有バスから１つ以上のコマンド及び／又はデータを読み出し始めるように促し得る。或る例では、共有バスは、前述したように、ＳＰＩバスであるか、又は、コマンドシーケンス内のコマンド及びそれに続くデータを提供する、関連付けられたプロトコルを有する他のタイプのバスであってもよい。
【００４６】
ブロック６１０で、デバイスは、図１〜４に関して先に述べたのと同様に、ターゲットデバイス内のアドレスレジスタを設定し得る。デバイスは、例えば、ターゲットアドレスを、ソースデバイス（例えばソースメモリデバイス）メモリからのデータがターゲットデバイス（例えばターゲットメモリデバイス）に記憶される際のアドレスとして特定し、このターゲットアドレスをアドレスレジスタに設定し得る。例えば、メモリコントローラが、プロセッサによって実行されるプログラムコードを記憶するための、揮発性メモリの領域を指定し、その特定された領域の先頭アドレスをターゲットアドレスとして使用し得る。
【００４７】
ブロック６１５で、デバイスは、図１〜４に関して先に述べたのと同様に、ターゲットデバイスへのチップイネーブル及びクロックを無効にし得る。デバイスは、例えば、ターゲットアドレスレジスタに記憶するためのターゲットアドレスを提供した後、ターゲットデバイス（例えばターゲットメモリデバイス）を非選択にすることで、アドレスレジスタを設定するためにターゲットデバイスに提供されているコマンドシーケンスを終了し得る。
【００４８】
ブロック６２０で、デバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイス及びターゲットデバイスにチップイネーブル及びクロックを提供し得る。上述したように、ソースデバイス及びターゲットデバイスの各々にチップイネーブル及びクロックを提供することで、ソースデバイス及びターゲットデバイスの両方が、共有バスに提供されたコマンドと、このコマンドに続くいずれかのデータとをデコードしようとし、これらのデバイス毎に新たなコマンドシーケンスを開始することになる。
【００４９】
ブロック６２５で、デバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイスへ読み出しコマンドを送信し、この読み出しコマンドはターゲットデバイスでも受信され得る。ソースデバイスとターゲットデバイスの両方が有効にされ、かつ両方にクロックが送信されるので、読み出しコマンドは各デバイスで受信され得る。或る例では、各デバイスの動作命令デコーダが読み出しコマンドをデコードしてもよく、これにより、ソースデバイスとターゲットデバイスとの間でデータが転送される旨をデバイスに示し得る。
【００５０】
ブロック６３０で、デバイスは、図１〜４に関して先に述べたのと同様に、転送されるデータの量に対応する持続時間（タイムデュレーション）の間中、ソースデバイスとターゲットデバイスにチップイネーブル及びクロックを提供し得る。ソースデバイスとターゲットデバイスは、このようにしてデータのダイレクト転送を実行し、そこでは、ソースデバイスがデータを共有バスへ提供し、このデータがターゲットデバイスによって共有バスから読み出され得る。そのデータは、ブロック６１０でアドレスレジスタに提供されたアドレスから、ターゲットデバイスに記憶され得る。デバイス（例えばメモリコントローラ１５５又はコントローラ４２０）によってクロック及びチップイネーブルを提供するための持続時間（タイムデュレーション）は、ソースデバイスから読み出されるデータの量と、ソースデバイスからデータが読み出される速度又はターゲットデバイスにデータが書き込まれ得る速度とに基づき得る。
【００５１】
ブロック６３５で、デバイスは、図１〜４に関して先に述べたのと同様に、持続時間の終了後、ソースデバイスとターゲットデバイスへのチップイネーブル及びクロックを無効にし得る。上記持続時間の後、デバイス（メモリコントローラ１５５又はコントローラ４２０）は、データが全て転送されたと判定し、第１のメモリデバイス及び第２のメモリデバイスを非選択にし得る。
【００５２】
図７は、本開示の種々の実施形態に係る、共有バスを用いたデバイス間のダイレクトデータ転送のためのフローチャート７００の一例を示す。フローチャート７００は、共有バスを用いたデバイス間のダイレクトデータ転送の実施形態を示すものであって、図１〜４を参照して先に述べたように、デバイス１０５、メモリシステム１５０、又はデバイス４０５において実施され得る。
【００５３】
或る例では、ブロック７０５に示されるように、また、図１〜４に関して先に述べたのと同様に、ターゲットデバイス（例えば、不揮発性メモリ１６５、揮発性メモリ１６０、又は第２の電子デバイス４３０）は、コントローラ（例えば、メモリコントローラ１５５又はコントローラ４２０）からターゲットアドレスを受信し得る。コントローラは、或る例では、デバイスに関連付けられたチップイネーブルを選択し、デバイスにクロックを提供し、ターゲットデバイスのターゲットアドレスレジスタにターゲットアドレスを設定するためのコマンドを共有バスへ出力し、そしてターゲットアドレスを出力することによって、ターゲットアドレスを送信し得る。種々の例によれば、ターゲットデバイスは、上記コマンドをデコードし、共有バスからのデータをラッチし、そしてこのデータをターゲットアドレスレジスタに記憶し得る。
【００５４】
ブロック７１０で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、コントローラからソースデバイスへ送信された読み出しコマンドをデコードし得る。この読み出しコマンドは、データがソースデバイスから読み出される旨の指示を含み、また、読み出されるデータに対する先頭アドレスを含み得る。ターゲットデバイスは、（例えば動作命令デコーダで）このコマンドをデコードし、共有バスからデータをラッチし、そしてこのデータをターゲットアドレスから記憶し得る。
【００５５】
ブロック７１５で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、上記コマンドに含まれるソースアドレスを無視し得る。上述したように、ターゲットデバイスは、ターゲットアドレスレジスタに記憶されたターゲットアドレスを有しており、このターゲットアドレスは、ソースデバイスにおいてデータが記憶されていたソースアドレスとは異なり得る。よって、もしコマンドがソースアドレスを含んでいれば、ターゲットデバイスは、その情報はターゲットデバイスとは無関係であるとして、単にそれを無視してもよい。上述したように、他の例では、コマンドシーケンスはソースアドレスとターゲットアドレスの両方を含んでいてもよく、その場合、ブロック７１０及び７１５の動作は組み合わされてもよく、ソースデバイス及びターゲットデバイスの各々が、他のデバイスに関連したアドレスを無視してもよい。例えば、コマンドシーケンスは、Ａｄｄ１をソースアドレス、Ａｄｄ２をターゲットアドレスとして、＜ＣＭＤｃｏｄｅ｜Ａｄｄ１｜Ａｄｄ２＞の形式であり得る。そのような例では、ソースデバイス及びターゲットデバイスはチップイネーブルで有効にされ、そして、ＣＭＤコードをデコードすることで、どのデバイスがソースデバイスであってどのデバイスがターゲットデバイスなのかを指定し得るようにしてもよい（又は、そのような指定が、前もってなされてもよい）。
【００５６】
ブロック７２０で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、バス上で入手可能な、ソースデバイスからのデータを特定し得る。バス上で入手可能な当該データは、（コントローラによってソースデバイスへ読み出しコマンドが送信されることで）ソースデバイスから共有バスへ転送されたデータであり得る。或る例では、ターゲットデバイスは、ソースアドレスを共有バスへ提供することと関連付けられた所定数のクロックサイクルと、ソースデバイスがソースアドレスに記憶されたデータを検出するのに十分な時間を提供するための所定数のダミーサイクルとを待って、それに続く共有バス上の情報を、ソースデバイスから転送されてきたデータとして特定するようにしてもよい。
【００５７】
ブロック７２５で、ターゲットデバイスは、図１〜４に関して先に述べたのと同様に、ソースデバイスからバスへ転送されたデータを、ターゲットアドレスから（ターゲットアドレスを先頭にして）記憶し得る。或る例によれば、そのような転送は、次に、ソースデバイス及びターゲットデバイスにクロックが提供される限り、継続され得る。よって、メモリコントローラ等のデバイスは、ソースデバイスから読み出されるデータの量と、ソースデバイスからデータが読み出される速度又はターゲットデバイスへデータが書き込まれる速度とに基づいて、上記クロックを提供する持続時間（タイムデュレーション）を決定してもよい。
【００５８】
従って、方法５００、６００、及び７００は、共有バスを用いたダイレクトデータ転送を提供し得る。なお、方法５００、６００、及び７００は、可能性のある実施について説明したものであり、上記の動作及びステップは並べ替えるようにしてもよく、或いは、その他の実施が可能なように変更されてもよい。或る例では、方法５００、６００、及び７００のうちの２つ以上からの態様を組み合わせてもよい。
【００５９】
方法について記述する。或る例では、この方法は、メモリコントローラで、ターゲットメモリへ転送されるデータに対する、ソースメモリにおけるソースアドレスを特定することを含み得るものであり、ここで、前記メモリコントローラ、前記ソースメモリ、及び前記ターゲットメモリの各々が１つのバスに結合されている。或る例では、この方法は、前記バスを介して前記ソースメモリから前記ターゲットメモリへダイレクトに前記データの転送を開始するために、前記メモリコントローラによって、ターゲットアドレスを前記ターゲットメモリへ送信することを含み得る。或る例では、この方法は、前記ソースメモリから前記バスへデータを読み出すための読み出しコマンドを前記ソースメモリへ送信することを含み得る。
【００６０】
或る例では、この方法は、前記ソースメモリによって、前記ソースアドレスから始まるデータを前記バスへ転送すること、を含み得る。或る例では、前記読み出しコマンドは前記バスを介して前記ソースメモリへ送信され得る。或る例では、この方法は、前記バスを介し前記ターゲットメモリによって前記読み出しコマンドを受信すること、を含み得る。或る例では、この方法は、前記ソースメモリから前記バスへ提供される後続のデータを、前記ターゲットメモリに前記ターゲットアドレスから記憶すること、を含み得る。
【００６１】
或る例では、前記読み出しコマンドは、データ出力命令と前記ソースアドレスとを含み得る。或る例では、この方法は、前記読み出しコマンドを前記データの転送の開始と認識することを含み得る。或る例では、この方法は、前記ソースアドレスを無視することを含み得る。或る例では、この方法は、前記ソースメモリ及び前記ターゲットメモリの各々にチップイネーブル信号を提供することを含み得る。或る例では、この方法は、タイムデュレーション（持続時間）の間中、前記ソースメモリ及び前記ターゲットメモリにクロックを提供することを含み得る。
【００６２】
或る例では、前記タイムデュレーションは、前記ソースメモリから前記ターゲットメモリへ転送されるデータの量に対応する。或る例では、前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含み得る。或る例では、前記ソースメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記ターゲットメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み得る。
【００６３】
方法について記述する。或る例では、この方法は、ターゲットメモリ及びソースメモリに結合されたバスを介して前記ターゲットメモリで受信されるデータを、前記ターゲットメモリに記憶させるためのターゲットアドレスを設定すること、を含み得る。或る例では、この方法は、前記ソースメモリから前記バスへデータを読み出し且つ該データを前記バスから前記ターゲットメモリに記憶するためのコマンドを、前記ソースメモリ及び前記ターゲットメモリの各々へ送信すること、を含み得る。或る例では、前記ターゲットアドレスを設定することは、前記ターゲットアドレスを前記ターゲットメモリのターゲットアドレスレジスタに提供することを含み得る。或る例では、この方法は、前記ターゲットメモリの動作命令デコーダで、前記コマンドを受信すること、を含み得る。或る例では、この方法は、前記ターゲットメモリで、前記コマンドに続いて、前記バスからの前記データの記憶を前記ターゲットアドレスから開始すること、を含み得る。
【００６４】
或る例では、この方法は、前記ソースメモリによって、ソースアドレスで始まるデータを前記バスへ転送すること、を含み得る。或る例では、この方法は、前記ターゲットメモリによって、前記バスからの前記データを記憶すること、を含み得る。或る例では、前記コマンドは、前記ソースメモリ及び前記ターゲットメモリの各々で受信される１つのコマンドシーケンスを含み得る。或る例では、この方法は、前記ソースメモリ及び前記ターゲットメモリの各々にチップイネーブル信号を提供すること、を含み得る。或る例では、この方法は、タイムデュレーションの間中、前記ソースメモリ及び前記ターゲットメモリにクロックを提供すること、を含み得る。
【００６５】
或る例では、前記タイムデュレーションは、前記ソースメモリから前記ターゲットメモリへ転送されるデータの量に対応する。或る例では、前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含み得る。或る例では、前記ソースメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記ターゲットメモリは不揮発性メモリ又は揮発性メモリのうちの一方を含み得る。
【００６６】
装置について記述する。或る例では、この装置は、バスに結合された第１の電子デバイスであって、第１のデータ記憶領域を備える第１の電子デバイスを含み得る。或る例では、この装置は、前記バスに結合された第２の電子デバイスであって、第２のデータ記憶領域を備える第２の電子デバイスを含み得る。或る例では、この装置は、前記バスに結合され且つ前記第１の電子デバイス及び前記第２の電子デバイスと電子通信するコントローラを含み、前記コントローラは、前記第１のデータ記憶領域から前記第２のデータ記憶領域へ転送されるデータに対する、前記第１のデータ領域におけるソースアドレスを特定する手段を支持し得る。或る例では、前記コントローラは、前記第２のデータ記憶領域におけるターゲットアドレスを特定する手段を支持し得る。或る例では、前記コントローラは、前記バスを介して前記第１の電子デバイスから前記第２の電子デバイスへダイレクトに前記データの転送を開始する手段を支持し得る。
【００６７】
或る例では、前記第２の電子デバイスはターゲットアドレスレジスタを含み、前記コントローラは、転送される前記データの記憶のための前記ターゲットアドレスを前記ターゲットアドレスレジスタに設定する手段を更に支持し得る。或る例では、前記第２の電子デバイスは、前記データの前記転送を開始するための読み出しコマンドを前記コントローラから受信するように動作可能な動作命令デコーダを含み得る。或る例では、前記コントローラは、前記第１の電子デバイス及び前記第２の電子デバイスの各々にアクセスするための、前記バスとの単一のインタフェースを含み得る。
【００６８】
或る例では、前記コントローラは、前記第１の電子デバイス及び前記第２の電子デバイスの各々にチップイネーブル信号を提供する手段を支持し得る。或る例では、前記コントローラは、前記第１のデータ記憶領域から前記第２のデータ記憶領域へ転送されるデータの量に対応するタイムデュレーションの間中、前記第１の電子デバイス及び前記第２の電子デバイスの各々にクロックを提供する手段を支持し得る。或る例では、前記第１の電子デバイスは不揮発性メモリ又は揮発性メモリのうちの一方を含み、前記第２の電子デバイスは不揮発性メモリ又は揮発性メモリのうちの一方を含み得る。
【００６９】
装置について記述する。或る例では、この装置は、バスに結合されたソースメモリモジュールを含み得る。或る例では、この装置は、前記バスに結合されたターゲットメモリモジュールを含み得る。或る例では、この装置は、前記バスに結合され且つ前記ソースメモリモジュール及び前記ターゲットメモリモジュールと電子通信するコントローラを含み、前記コントローラは、前記バスを介して前記ターゲットメモリモジュールで受信されるデータの記憶のための、前記ターゲットメモリモジュールにおけるターゲットアドレスを設定する手段を支持し得る。或る例では、前記コントローラは、前記ソースメモリモジュールから前記バスへデータを読み出すための読み出しコマンドを、前記ソースメモリモジュールへ送信する手段を支持し得る。或る例では、前記ターゲットメモリモジュールは、前記ソースメモリモジュールから読み出された前記データを前記バスを介してダイレクトに受信するように動作可能である。
【００７０】
或る例では、前記ターゲットメモリモジュールはターゲットアドレスレジスタを含み、前記コントローラは、転送される前記データの記憶のための前記ターゲットアドレスを前記ターゲットアドレスレジスタに設定する手段を支持し得る。或る例では、前記ターゲットメモリモジュールは、前記コントローラから前記読み出しコマンドを受信するように動作可能な動作命令デコーダを含み得る。或る例では、前記コントローラは、前記ソースメモリモジュール及び前記ターゲットメモリモジュールの各々にチップイネーブル信号を提供する手段を支持し得る。或る例では、前記コントローラは、前記ソースメモリモジュールから前記ターゲットメモリモジュールへ転送されるデータの量に対応するタイムデュレーションの間中、前記ソースメモリモジュール及び前記ターゲットメモリモジュールの各々にクロックを提供する手段を支持し得る。或る例では、前記バスは、シリアル・ペリフェラル・インターコネクト（ＳＰＩ）バスを含み得る。
【００７１】
ここで述べたことは一例を提供するものであって、特許請求の範囲に記載された範囲、応用可能性、又は例を限定するものではない。本開示の範囲から逸脱することなしに、上述した構成要素の機能や配置を変更してもよい。種々の例は、適宜、種々の手順又はコンポーネントを省略、置換、又は追加するものであってもよい。また、或る例に関して述べた特徴を、他の例で組み合わせるようにしてもよい。
【００７２】
ここで添付図面と関連付けて説明したことは例示的な構成を述べたものであって、実施可能な又は特許請求の範囲の主旨内にある全ての例を示したわけではない。ここで使用した「例」及び「典型的な」という用語は、「一例や一実施例としての役割をなす」という意味であって、「好ましい」や「他の例よりも有利な」という意味ではない。詳細な説明は、ここで述べる技術についての理解を提供するために、詳細な具体例を含んでいる。しかし、本開示の技術は、それらの詳細な具体例なしでも実施され得る。或る例では、記述した例の概念を不明瞭にするのを避けるために、周知の構造及びデバイスをブロック図の形で示してある。
【００７３】
添付図面において、同様なコンポーネント又はフィーチャは、同じ参照符号を有し得る。更に、同じタイプの種々のコンポーネントは、参照符号の後に、ダッシュと、同様なコンポーネント間を区別する第２の符号とを付すことによって、区別され得る。第１の参照符号が本明細書中で使用される場合、この記載は、第２の参照符号にかかわらず、同じ第１の参照符号を有する同様なコンポーネントのいずれにも適用され得る。
【００７４】
ここに記載した情報及び信号は、様々な異なる技術や技法のうちのいずれかを用いて表され得る。例えば、これまでの記載の全体に渡って参照された、データ、命令、コマンド、情報、信号、ビット、シンボル、及びチップは、電圧、電流、電磁波、磁場又は磁気粒子、光場又は光粒子、或いはそれらの任意の組み合わせによって表され得る。或る図は、信号を１つの信号として示してもよいが、当業者であれば、信号は信号のバス（ここで、バスは種々のビット幅を有している）を表し得る、と理解するであろう。
【００７５】
「電子通信」という用語は、コンポーネント間の電子の流れを支持する、コンポーネント間の関係を表している。これは、コンポーネント間の直接的な接続を含み、或いは、それらの中間のコンポーネントを含んでもよい。電子通信しているコンポーネントは、（例えば、電圧の印加された回路内で）電子又は信号を動的に交換したり、或いは、（電圧の印加されていない回路内で）電子又は信号を動的に交換しないものであってよいが、回路に電圧が印加されている時には電子又は信号を交換するように構成されるか又はそのように動作可能であり得る。一例として、スイッチ（例えばトランジスタ）を介して物理的に接続された２つのコンポーネントは、当該スイッチの状態（すなわち、開状態又は閉状態）にかかわらず、電子通信している。
【００７６】
ここで論じられたデバイスは、シリコン、ゲルマニウム、シリコン−ゲルマニウム合金、砒化ガリウム、窒化ガリウム等のような半導体基板上に形成されてもよい。或る場合には、基板は半導体ウェハである。他の場合には、基板は、シリコン−オン−グラス（ＳＯＧ）又はシリコン−オン−サファイア（ＳＯＰ）等のシリコン−オン−インシュレータ（ＳＯＩ）基板であってもよく、或いは、他の基板上の半導体材料のエピキシャル層であってもよい。基板又はその部分領域の導電性は、リン、ホウ素、又は砒素を含むがこれらには限定されない種々の化学種を用いてドーピングすることによって、制御され得る。ドーピングは、基板の初期の形成又は成長中に、イオン注入又はその他の任意のドーピング手段によって行い得る。
【００７７】
ここでの開示に関連して記載された種々の例示的なブロック、コンポーネント、及びモジュールは、ここに記載された機能を実行するように設計された、汎用プロセッサ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡ又はその他のプログラマブルロジックデバイス、ディスクリートゲート又はトランジスタロジック、ディスクリートハードウェアコンポーネント、或いはそれらの任意の組み合わせを用いて、実施又は実行され得る。汎用プロセッサは、マイクロプロセッサであってもよいが、それに代えて、プロセッサは、いずれかの従来のプロセッサ、コントローラ、マイクロコントローラ、又はステートマシンであってもよい。プロセッサは、また、コンピューティングデバイスの組み合わせ（例えば、ＤＳＰとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、ＤＳＰコアと共同動作する１つ以上のマイクロプロセッサ、又は任意の他の同様な構成）として実施されてもよい。
【００７８】
ここに記載された機能は、ハードウェア、プロセッサによって実行されるソフトウェア、ファームウェア、又はそれらの任意の組み合わせにおいて実施され得る。プロセッサによって実行されるソフトウェアにおいて実施される場合には、その機能は、コンピュータ読み取り可能媒体上の１つ以上の命令又はコードとして、記憶されるか又は送信され得る。その他の例及び実施は、本開示及び特許請求の範囲の範囲内である。例えば、ソフトウェアの性質上、上述した機能は、プロセッサによって実行されるソフトウェア、ハードウェア、ファームウェア、ハードワイヤリング、又はそれらのいずれかの組み合わせを用いて実施可能である。機能を実施するフィーチャも、種々の位置に物理的に配置されてよく、それは、機能の一部がそれぞれ異なる物理的位置で実施されるように分布されることを含む。また、特許請求の範囲を含む本明細書中で使用されているように、項目のリスト（例えば、「・・・のうちの少なくとも１つ」又は「・・・のうちの１つ以上」のようなフレーズによって始まる項目のリスト）中で使用される「又は」は、包括的なリストを示しており、例えば、Ａ、Ｂ、又はＣのうちの少なくとも１つというリストは、Ａ、又はＢ、又はＣ、又はＡとＢ、又はＡとＣ、又はＢとＣ、又はＡとＢとＣ（すなわち、Ａ及びＢ及びＣ）を意味する。
【００７９】
コンピュータ読み取り可能媒体は、非一時的コンピュータ記憶媒体と、コンピュータプログラムを或る場所から他の場所へ転送可能にする何らかの媒体を含む通信媒体との両方を含む。非一時的記憶媒体は、汎用の又は特定用途向けのコンピュータによってアクセス可能な、何らかの利用可能な媒体であってよい。一例として、非一時的コンピュータ読み取り可能媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能なプログラマブルリードオンリメモリ（ＥＥＰＲＰＭ）、コンパクトディスク（ＣＤ）ＲＯＭ又はその他の光ディスク記憶デバイス、磁気ディスク記憶デバイス又はその他の磁気記憶デバイス、或いは、所望のプログラムコード手段を命令又はデータ構造の形式で担持し又は記憶するように使用可能であって、かつ、汎用又は特定用途向けのコンピュータや汎用又は特定用途向けのプロセッサによってアクセス可能である他の非一時的媒体を含み得るが、これらに限定されない。
【００８０】
また、何らかの接続が、適切にコンピュータ読み取り可能媒体と呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、又は、赤外、高周波、マイクロ波等の無線技術を用いて、ウェブサイト、サーバ、又はその他のリモートソースから送信される場合には、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、又は、赤外、高周波、マイクロ波等の無線技術が、上記媒体の定義に含まれる。ここで使用されるディスク（disk及びdisc）は、ＣＤ、レーザディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピディスク、及びブルーレイディスクを含み、これらのディスクは、通常、データを磁気的に再生したり、データをレーザで光学的に再生したりする。それらの組み合わせも、コンピュータ読み取り可能媒体の範囲内に含まれ得る。
【００８１】
ここに述べたことは、当業者が本開示を実施又は使用することを可能にするために提供される。本開示に対する種々の変更は、当業者にとって容易になし得るものであり、ここに定義された一般的な原理も、本開示の範囲から逸脱することなく、他の変形例に適用され得る。従って、本開示は、ここに述べた例や設計に限定されるべきものではなく、ここに述べた原理及び新規な特徴と矛盾しない最も広い範囲が本開示に認められるべきである。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2019500669.tif 000010
【国際調査報告】
2019500669.tif 000011
2019500669.tif 000012